diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..962ca01 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,3 @@ +# Wellmanifest new-project standard git attributes +project/TICKETS.md merge=wellmanifest-ticket-index +TODO.md merge=wellmanifest-ticket-index diff --git a/.governance/manifest.json b/.governance/manifest.json index 21298a8..1ccc983 100644 --- a/.governance/manifest.json +++ b/.governance/manifest.json @@ -1,58 +1,6 @@ { "$schema": "./manifest.schema.json", - "schema": "new-project.governance/v2", - "standard": { - "id": "wellmanifest/new-project", - "version": "0.20.89" - }, - "repository": { - "mode": "standalone", - "componentRoots": [] - }, - "repositoryPolicy": { - "profile": "ticket-worktree", - "enforcement": "enforce", - "delivery": { - "mode": "ticket-branch", - "checkout": "linked-worktree", - "targetBranches": [ - "main" - ] - }, - "tickets": { - "backend": "files", - "idPattern": "^ticket-[0-9]{3,}$", - "referenceRequired": true - } - }, - "domainContracts": { - "mode": "none" - }, - "requiredFiles": [ - "README.md", - "VERSION", - "CHANGELOG.md", - "TODO.md", - "AGENTS.md", - "project/TICKETS.md", - "project/new-ticket.sh", - "project/readme.sh" - ], - "governancePaths": [ - "TODO.md", - "project/TICKETS.md", - "project/ticket-*/**", - ".governance/standard-adoption.json", - ".governance/manifest.json", - "config/artifact-registry.json" - ], - "trustedApprovalSources": [ - "github-review", - "github-app-review", - "signed-attestation" - ], "approvalEvidence": { - "schema": "new-project.approval-evidence/v1", "requiredBindings": [ "repository", "pullRequest", @@ -61,52 +9,34 @@ "actor" ], "reviewVerificationMethod": "github-api-allowlist", + "schema": "new-project.approval-evidence/v1", "signedAttestationPredicateType": "https://wellmanifest.com/attestations/validator/v1" }, - "ticket": { - "root": "project", - "directoryPattern": "^ticket-[0-9]{3,}$", - "requiredFiles": [ - "README.md", - "intent.json" - ], - "requiredAgentFiles": [], - "activeStatuses": [ - "IN_PROGRESS" - ], - "nonActiveStatuses": [ - "BACKLOG", - "PLAN", - "BLOCKED" - ], - "closedStatuses": [ - "DONE", - "CANCELLED" - ], - "implementationStates": [ - "EDIT", - "VALIDATION", - "PUBLICATION" - ], - "intentFile": "intent.json" - }, - "docker": { - "required": false, - "dockerfiles": [ - "Dockerfile", - "Dockerfile.e2e" - ], - "composeFiles": [ - "compose.yml", - "compose.yaml", - "docker-compose.yml", - "docker-compose.yaml", - "compose.e2e.yml" - ] - }, "coordination": { - "mode": "workstreams", + "integration": { + "requiredForPaths": [ + "package.json", + "package-lock.json", + "pnpm-lock.yaml", + "yarn.lock", + "pyproject.toml", + "uv.lock", + "poetry.lock", + "go.mod", + "go.sum", + "Cargo.toml", + "Cargo.lock", + "pom.xml", + "operations/**", + "events/**", + "error/**", + "models/**", + "proto/**" + ], + "workstream": "integration" + }, "maxActiveTicketsPerWorkstream": 8, + "mode": "workstreams", "rejectActiveScopeOverlap": true, "workstreams": { "application": { @@ -121,22 +51,9 @@ "semcod_mcp/**", "gh2mcp/**", "git2mcp/**", - "mcp-gateway/**" - ] - }, - "interfaces": { - "ownedPaths": [ - "api/**", - "sdk/**", - "clients/**" - ] - }, - "infrastructure": { - "ownedPaths": [ - "Dockerfile*", - "compose*.yml", - "compose*.yaml", - "infra/**" + "mcp-gateway/**", + "mcp-docs/**", + "mcp-webui/**" ] }, "governance": { @@ -167,6 +84,14 @@ "worktree-guard.yaml" ] }, + "infrastructure": { + "ownedPaths": [ + "Dockerfile*", + "compose*.yml", + "compose*.yaml", + "infra/**" + ] + }, "integration": { "ownedPaths": [ "VERSION", @@ -311,93 +236,170 @@ ".governance/docs.json", ".github/workflows/verify.yml" ] + }, + "interfaces": { + "ownedPaths": [ + "api/**", + "sdk/**", + "clients/**" + ] } - }, - "integration": { - "workstream": "integration", - "requiredForPaths": [ - "package.json", - "package-lock.json", - "pnpm-lock.yaml", - "yarn.lock", - "pyproject.toml", - "uv.lock", - "poetry.lock", - "go.mod", - "go.sum", - "Cargo.toml", - "Cargo.lock", - "pom.xml", - "operations/**", - "events/**", - "error/**", - "models/**", - "proto/**" - ] } }, "delivery": { - "requiredForImplementation": false, - "maxActiveMinutes": 120, - "checkpointMinutes": 30, "allowedComplexityClasses": [ "XS", "S", "M", "L" ], - "maxImplementationFiles": 15, + "checkpointMinutes": 30, + "dependencyManifestPaths": [ + "package.json", + "package-lock.json", + "pnpm-lock.yaml", + "yarn.lock", + "pyproject.toml", + "uv.lock", + "poetry.lock", + "go.mod", + "go.sum", + "Cargo.toml", + "Cargo.lock", + "pom.xml" + ], + "maxActiveMinutes": 120, "maxAffectedComponents": 5, + "maxImplementationFiles": 15, "maxPublicInterfaceChanges": 3, "maxRuntimeDependencies": 3, "profiles": { - "XS": { - "maxImplementationFiles": 2, - "maxAffectedComponents": 1, - "maxPublicInterfaceChanges": 0, - "maxRuntimeDependencies": 0 - }, - "S": { - "maxImplementationFiles": 5, - "maxAffectedComponents": 2, - "maxPublicInterfaceChanges": 1, - "maxRuntimeDependencies": 1 + "L": { + "maxAffectedComponents": 5, + "maxImplementationFiles": 15, + "maxPublicInterfaceChanges": 3, + "maxRuntimeDependencies": 3 }, "M": { - "maxImplementationFiles": 9, "maxAffectedComponents": 3, + "maxImplementationFiles": 9, "maxPublicInterfaceChanges": 2, "maxRuntimeDependencies": 2 }, - "L": { - "maxImplementationFiles": 15, - "maxAffectedComponents": 5, - "maxPublicInterfaceChanges": 3, - "maxRuntimeDependencies": 3 + "S": { + "maxAffectedComponents": 2, + "maxImplementationFiles": 5, + "maxPublicInterfaceChanges": 1, + "maxRuntimeDependencies": 1 + }, + "XS": { + "maxAffectedComponents": 1, + "maxImplementationFiles": 2, + "maxPublicInterfaceChanges": 0, + "maxRuntimeDependencies": 0 } }, - "targetBranches": [ - "main" - ], "publicInterfacePaths": [ "api/**", "sdk/**", "src/public/**" ], - "dependencyManifestPaths": [ - "package.json", - "package-lock.json", - "pnpm-lock.yaml", - "yarn.lock", - "pyproject.toml", - "uv.lock", - "poetry.lock", - "go.mod", - "go.sum", - "Cargo.toml", - "Cargo.lock", - "pom.xml" + "requiredForImplementation": false, + "targetBranches": [ + "main" ] }, - "stacks": [] + "docker": { + "composeFiles": [ + "compose.yml", + "compose.yaml", + "docker-compose.yml", + "docker-compose.yaml", + "compose.e2e.yml" + ], + "dockerfiles": [ + "Dockerfile", + "Dockerfile.e2e" + ], + "required": false + }, + "domainContracts": { + "mode": "none" + }, + "governancePaths": [ + "TODO.md", + "project/TICKETS.md", + "project/ticket-*/**", + ".governance/standard-adoption.json", + ".governance/manifest.json", + "config/artifact-registry.json" + ], + "repository": { + "componentRoots": [], + "mode": "standalone" + }, + "repositoryPolicy": { + "delivery": { + "checkout": "linked-worktree", + "mode": "ticket-branch", + "targetBranches": [ + "main" + ] + }, + "enforcement": "enforce", + "profile": "ticket-worktree", + "tickets": { + "backend": "files", + "idPattern": "^ticket-[0-9]{3,}$", + "referenceRequired": true + } + }, + "requiredFiles": [ + "README.md", + "VERSION", + "CHANGELOG.md", + "TODO.md", + "AGENTS.md", + "project/TICKETS.md", + "project/new-ticket.sh", + "project/readme.sh" + ], + "schema": "new-project.governance/v2", + "stacks": [], + "standard": { + "id": "wellmanifest/new-project", + "version": "0.20.89" + }, + "ticket": { + "activeStatuses": [ + "IN_PROGRESS" + ], + "closedStatuses": [ + "DONE", + "CANCELLED" + ], + "directoryPattern": "^ticket-[0-9]{3,}$", + "implementationStates": [ + "EDIT", + "VALIDATION", + "PUBLICATION" + ], + "intentFile": "intent.json", + "nonActiveStatuses": [ + "BACKLOG", + "PLAN", + "BLOCKED" + ], + "requiredAgentFiles": [], + "requiredFiles": [ + "README.md", + "intent.json" + ], + "root": "project" + }, + "trustedApprovalSources": [ + "github-review", + "github-app-review", + "signed-attestation" + ] } diff --git a/.governance/standard-adoption.json b/.governance/standard-adoption.json index 373fe81..28722c0 100644 --- a/.governance/standard-adoption.json +++ b/.governance/standard-adoption.json @@ -19,7 +19,7 @@ "artifacts": [ { "target": ".governance/manifest.json", - "sha256": "369357ce99ea30ea34925df699e8a966717ad978765e79051147e26ceda89413" + "sha256": "2254f0b710fbe784c7e331ceabe37f1371b169b75fddef01e72691a627e2266f" } ], "evidence": [ @@ -54,7 +54,7 @@ "artifacts": [ { "target": ".governance/manifest.json", - "sha256": "369357ce99ea30ea34925df699e8a966717ad978765e79051147e26ceda89413" + "sha256": "2254f0b710fbe784c7e331ceabe37f1371b169b75fddef01e72691a627e2266f" } ], "evidence": [ @@ -94,7 +94,7 @@ "artifacts": [ { "target": ".governance/manifest.json", - "sha256": "369357ce99ea30ea34925df699e8a966717ad978765e79051147e26ceda89413" + "sha256": "2254f0b710fbe784c7e331ceabe37f1371b169b75fddef01e72691a627e2266f" } ], "evidence": [ @@ -129,7 +129,7 @@ "artifacts": [ { "target": ".governance/manifest.json", - "sha256": "369357ce99ea30ea34925df699e8a966717ad978765e79051147e26ceda89413" + "sha256": "2254f0b710fbe784c7e331ceabe37f1371b169b75fddef01e72691a627e2266f" } ], "evidence": [ @@ -169,7 +169,7 @@ "artifacts": [ { "target": ".governance/manifest.json", - "sha256": "369357ce99ea30ea34925df699e8a966717ad978765e79051147e26ceda89413" + "sha256": "2254f0b710fbe784c7e331ceabe37f1371b169b75fddef01e72691a627e2266f" } ], "evidence": [ @@ -209,7 +209,7 @@ "artifacts": [ { "target": ".governance/manifest.json", - "sha256": "369357ce99ea30ea34925df699e8a966717ad978765e79051147e26ceda89413" + "sha256": "2254f0b710fbe784c7e331ceabe37f1371b169b75fddef01e72691a627e2266f" } ], "evidence": [ @@ -244,7 +244,7 @@ "artifacts": [ { "target": ".governance/manifest.json", - "sha256": "369357ce99ea30ea34925df699e8a966717ad978765e79051147e26ceda89413" + "sha256": "2254f0b710fbe784c7e331ceabe37f1371b169b75fddef01e72691a627e2266f" } ], "evidence": [ @@ -284,7 +284,7 @@ "artifacts": [ { "target": ".governance/manifest.json", - "sha256": "369357ce99ea30ea34925df699e8a966717ad978765e79051147e26ceda89413" + "sha256": "2254f0b710fbe784c7e331ceabe37f1371b169b75fddef01e72691a627e2266f" } ], "evidence": [ diff --git a/project.bat b/project.bat new file mode 100644 index 0000000..6cfb2cc --- /dev/null +++ b/project.bat @@ -0,0 +1,35 @@ +@echo off +setlocal EnableExtensions EnableDelayedExpansion +set "REPO_ROOT=%~dp0" + +if not exist "%REPO_ROOT%.governance\manifest.json" ( + echo GOV-MANIFEST-001: .governance\manifest.json is not installed in this target repository. 1>&2 + echo remediation: bootstrap the pinned governance package before implementation. 1>&2 + exit /b 1 +) +if not exist "%REPO_ROOT%project\governance-check.bat" ( + echo GOV-BOOT-001: project\governance-check.bat is missing. 1>&2 + exit /b 1 +) + +call "%REPO_ROOT%project\governance-check.bat" %* +set "GOVERNANCE_EXIT=%ERRORLEVEL%" +if not "%GOVERNANCE_EXIT%"=="0" exit /b %GOVERNANCE_EXIT% + +if not "%NEW_PROJECT_ANALYSIS_IMAGE%"=="" ( + powershell -NoProfile -Command "if ($env:NEW_PROJECT_ANALYSIS_IMAGE -notmatch '@sha256:[a-f0-9]{64}$') { exit 1 }" + if errorlevel 1 ( + echo GOV-STACK-001: NEW_PROJECT_ANALYSIS_IMAGE must be pinned by sha256 digest. 1>&2 + exit /b 1 + ) + docker info >nul 2>&1 + if errorlevel 1 ( + echo GOV-DOCKER-001: Docker engine is unavailable. 1>&2 + exit /b 1 + ) + docker run --rm --network none --mount "type=bind,src=%REPO_ROOT%,dst=/workspace" --workdir /workspace "%NEW_PROJECT_ANALYSIS_IMAGE%" + set "DOCKER_EXIT=!ERRORLEVEL!" + exit /b !DOCKER_EXIT! +) + +exit /b 0 diff --git a/project/TICKETS.md b/project/TICKETS.md index e9f1f7e..4196b16 100644 --- a/project/TICKETS.md +++ b/project/TICKETS.md @@ -12,4 +12,7 @@ This file indexes governance tickets without taking ownership of | **ticket-013** | [`README.md`](./ticket-013/README.md) | - | - | - | - | - | | **ticket-014** | [`README.md`](./ticket-014/README.md) | - | - | - | - | - | | **ticket-015** | [`README.md`](./ticket-015/README.md) | - | - | - | - | - | +| **ticket-016** | [`README.md`](./ticket-016/README.md) | - | - | - | - | - | +| **ticket-019** | [`README.md`](./ticket-019/README.md) | - | - | - | - | - | +| **ticket-020** | [`README.md`](./ticket-020/README.md) | - | - | - | - | - | diff --git a/project/ticket-009/README.md b/project/ticket-009/README.md index 880f87c..d68e88b 100644 --- a/project/ticket-009/README.md +++ b/project/ticket-009/README.md @@ -1,6 +1,6 @@ # Ticket 009: Documentation placement and validation -- **Status**: IN_PROGRESS +- **Status**: DONE - **Workflow state**: PUBLICATION - **Issue**: https://github.com/semcod/mcp/issues/9 @@ -13,3 +13,7 @@ Identity comes from GitHub issue #9; this repository has no managed new-project - AC-03: Existing tests and applicable configuration checks pass before independent exact-head Validator approval. Validation: published docs checker passes (tracked adoption and index; no migrated profile documents); pytest, shell syntax and Compose validation pass. Existing CI checks remain. The private standard checkout uses the existing organization-provided ORG_SYNC_PAT only for the fixed reviewed repository/revision, with credential persistence disabled; no secret contents were accessed. Full managed new-project governance is absent in this legacy repository. + +## Completion + +Retired 2026-10-23 with landing evidence: docs/README.md, .governance/docs.json and the verify workflow publish flow are present on main. Governance reservation released; the delivered work is verifiably present on main. diff --git a/project/ticket-011/README.md b/project/ticket-011/README.md index 10f97bf..fb9322f 100644 --- a/project/ticket-011/README.md +++ b/project/ticket-011/README.md @@ -1,6 +1,6 @@ # ticket-011: Local CI publication policy -- **Status**: IN_PROGRESS +- **Status**: DONE - **Workflow state**: EDIT SESSION_EXECUTION_AUTHORIZATION: user requested implementation and publication across Semcod and Subactor. @@ -9,3 +9,7 @@ AC-01: Pin published policy while preserving custom requirements. AC-02: Validate bounded diff and publish through independent protected review. Allocation: https://github.com/semcod/mcp/issues/11. Canonical fleet evidence: `subactor/docs/architecture/analysis/local-ci-adoption.md`. This ticket does not establish full new-project adoption. + +## Completion + +Retired 2026-10-23 with landing evidence: AGENTS.md carries the immutable local CI publication instructions. Governance reservation released; the delivered work is verifiably present on main. diff --git a/project/ticket-012/README.md b/project/ticket-012/README.md index 5a06865..9158fd8 100644 --- a/project/ticket-012/README.md +++ b/project/ticket-012/README.md @@ -1,6 +1,6 @@ # ticket-012: Remove pfix auto-repair from the project -- **Status**: IN_PROGRESS +- **Status**: DONE - **Workflow state**: EDIT SESSION_EXECUTION_AUTHORIZATION: on 2026-09-13 the user requested that pfix be @@ -17,3 +17,7 @@ AC-04: Source code, tests and generated documentation projections are unchanged. Canonical fleet evidence: `subactor/docs/architecture/analysis/semcod-library-quality.md`. This ticket does not establish full new-project adoption. + +## Completion + +Retired 2026-10-23 with landing evidence: no pfix references remain in any subproject pyproject.toml. Governance reservation released; the delivered work is verifiably present on main. diff --git a/project/ticket-013/README.md b/project/ticket-013/README.md index eef70e2..112bd58 100644 --- a/project/ticket-013/README.md +++ b/project/ticket-013/README.md @@ -1,6 +1,6 @@ # ticket-013: Fix CI verify workflow token fallback for public standard and Dependabot PRs -- **Status**: IN_PROGRESS +- **Status**: DONE - **Workflow state**: EDIT SESSION_EXECUTION_AUTHORIZATION: On 2026-09-25 user requested continuing overdue tasks and PRs across repositories. In `semcod/mcp`, Dependabot PRs #21, #22, #23 fail because `secrets.ORG_SYNC_PAT` is not provided to PRs from outside or Dependabot, causing checkout of public standard repo `wellmanifest/docs` to fail with "Input required and not supplied: token". @@ -8,3 +8,7 @@ SESSION_EXECUTION_AUTHORIZATION: On 2026-09-25 user requested continuing overdue AC-01: `.github/workflows/verify.yml` uses `${{ secrets.ORG_SYNC_PAT || github.token }}` for checking out `wellmanifest/docs`. AC-02: Local verification passes. AC-03: No changes to package runtime logic or dependencies. + +## Completion + +Retired 2026-10-23 with landing evidence: verify.yml uses the ORG_SYNC_PAT || github.token fallback (AC-01 landed). Governance reservation released; the delivered work is verifiably present on main. diff --git a/project/ticket-014/README.md b/project/ticket-014/README.md index a39030f..703c155 100644 --- a/project/ticket-014/README.md +++ b/project/ticket-014/README.md @@ -1,6 +1,6 @@ # ticket-014: Complete MCP native governance adoption -- **Status**: IN_PROGRESS +- **Status**: DONE - **Workflow state**: PUBLICATION - **Owner**: agent:codex @@ -23,3 +23,7 @@ Discovered prerequisite: Docs 0.1.0 rejects native managed manuals. The accepted Validation receipt: `receipt:mcp014-complete-local-checks-oct7`. Native governance and documentation pass with zero findings; all twelve tests and the retained Compose security script pass. Deliberately mismatched managed-copy digest is rejected. Protected Validator registry coverage is independently merged in PR #623. Independent exact-head MCP merge remains pending. Independent review remediation: the initial review rejected the optional Docker test skip. The security regression now requires Docker Compose and fails when its dependency is absent. The existing accepted test and documentation scope covers this correction; required checks and protected policy remain unchanged. + +## Completion + +Retired 2026-10-23 with landing evidence: native governance lock installed at 2ddba883 (manifest.lock.json 108 managed files); workflows present. Governance reservation released; the delivered work is verifiably present on main. diff --git a/project/ticket-015/README.md b/project/ticket-015/README.md index ad15dbe..1315d87 100644 --- a/project/ticket-015/README.md +++ b/project/ticket-015/README.md @@ -2,7 +2,7 @@ - **ID**: ticket-015 - **Owner**: tom -- **Status**: IN_PROGRESS +- **Status**: DONE - **Workflow state**: EDIT - **Created**: 2026-10-17 @@ -22,3 +22,7 @@ Remediate all 16 `PERF-AUDIT-*` static performance and Compose healthcheck findi This directory contains the minimal reviewed intent. Optional participant prose and raw command logs are not required delivery output. + +## Completion + +Retired 2026-10-23 with landing evidence: docker-compose.yml present; PERF-AUDIT remediation acceptance checked in ticket README. Governance reservation released; the delivered work is verifiably present on main. diff --git a/project/ticket-016/README.md b/project/ticket-016/README.md index 9fc0260..77941fb 100644 --- a/project/ticket-016/README.md +++ b/project/ticket-016/README.md @@ -2,7 +2,7 @@ - **ID**: ticket-016 - **Owner**: agent:antigravity -- **Status**: IN_PROGRESS +- **Status**: DONE - **Workflow state**: EDIT - **Created**: 2026-10-18 @@ -21,3 +21,7 @@ and raw command logs are not required delivery output. ## Execution Authorization - SESSION_EXECUTION_AUTHORIZATION: Authorized by user for governed release and PyPI publication via Willman. + +## Completion + +Retired 2026-10-23 with landing evidence: VERSION is 0.1.7 (release published). Governance reservation released; the delivered work is verifiably present on main. diff --git a/project/ticket-018/README.md b/project/ticket-018/README.md new file mode 100644 index 0000000..db0ee14 --- /dev/null +++ b/project/ticket-018/README.md @@ -0,0 +1,51 @@ +# Ticket 018: Governance repair: subproject ownership, manifest lock sync, retire landed tickets + +- **ID**: ticket-018 +- **Owner**: unresolved:human +- **Status**: IN_PROGRESS +- **Workflow state**: EDIT +- **Created**: 2026-10-23 + +## Goal and scope + +Retire the seven landed tickets (009, 011-016) whose work is verifiably +present on main, releasing stale IN_PROGRESS reservations that made the +intent, workstream and scope-overlap checks fail on unrelated diffs. + +The managed-seed adoption and the `mcp-docs/**` / `mcp-webui/**` ownership +declaration moved to ticket-019 (integration); the cross-subproject +dependency-manifest ownership is ticket-020 (application). + +## Acceptance criteria + +- [x] AC-01: tickets 009, 011, 012, 013, 014, 015, 016 marked DONE with + landing evidence recorded in each README. +- [x] AC-02: governance gate passes for the landed delta. + +Repair the repository governance debt that blocks every cross-subproject +change (including Dependabot dependency PRs): + +1. `.governance/manifest.json`: declare the missing `mcp-docs/**` and + `mcp-webui/**` ownership in the `application` workstream, so requirement + manifests inside those subprojects have an owner. +2. Retire the seven landed tickets (009, 011-016) whose work is verifiably + present on main, removing stale IN_PROGRESS reservations that make the + intent, workstream and scope-overlap checks fail on unrelated diffs. + +## Acceptance criteria + +- [x] AC-01: `application` workstream owns `mcp-docs/**` and `mcp-webui/**`. +- [x] AC-02: tickets 009, 011, 012, 013, 014, 015, 016 marked DONE with + landing evidence recorded in each README. +- [x] AC-03: governance gate passes for a simulated dependency diff + (`mcp-docs/requirements.txt`, `mcp-gateway/requirements.txt`, + `mcp-webui/requirements.txt`) once the follow-up maintenance ticket owns it. + +## Acceptance criteria + +- [ ] AC-01: Scope is approved by a human owner. + +## Tracking boundary + +This directory contains the minimal reviewed intent. Optional participant prose +and raw command logs are not required delivery output. diff --git a/project/ticket-018/intent.json b/project/ticket-018/intent.json new file mode 100644 index 0000000..2bb02f1 --- /dev/null +++ b/project/ticket-018/intent.json @@ -0,0 +1,30 @@ +{ + "schema": "new-project.intent/v3", + "ticket": "ticket-018", + "summary": "Governance repair: subproject ownership, manifest lock sync, retire landed tickets", + "workstream": "governance", + "classification": { + "kind": "SERVICE", + "priority": "P2", + "origin": "health" + }, + "allowedPaths": [ + "project/ticket-018/**", + "TODO.md", + "project/TICKETS.md", + "project/ticket-009/**", + "project/ticket-011/**", + "project/ticket-012/**", + "project/ticket-013/**", + "project/ticket-014/**", + "project/ticket-015/**", + "project/ticket-016/**" + ], + "forbiddenPaths": [ + "project/ticket-*/user-*.md" + ], + "stacks": [], + "dependsOn": [], + "conflictsWith": [], + "integrationTicket": null +} diff --git a/project/ticket-019/README.md b/project/ticket-019/README.md new file mode 100644 index 0000000..c9f6df1 --- /dev/null +++ b/project/ticket-019/README.md @@ -0,0 +1,27 @@ +# Ticket 019: Adopt native governance managed seeds and declare mcp-docs/mcp-webui subproject ownership + +- **ID**: ticket-019 +- **Owner**: agent:claude +- **Status**: IN_PROGRESS +- **Workflow state**: EDIT +- **Created**: 2026-10-23 + +## Goal and scope + +1. Land the native governance managed seeds produced by + `goal governance adopt --source-revision 2ddba8833d342b4b4201eada2d05c8b70ed4985e` + (`.gitattributes`, `project.bat`) after review of the prepared drift. +2. Declare the missing `application` workstream ownership for `mcp-docs/**` + and `mcp-webui/**` in `.governance/manifest.json`, so dependency manifests + inside those subprojects resolve to an owning workstream and ticket. + +## Acceptance criteria + +- [x] AC-01: managed seeds match the pinned standard revision exactly. +- [x] AC-02: `application` workstream owns `mcp-docs/**` and `mcp-webui/**`. +- [x] AC-03: governance gate passes for the landed delta and for a simulated + cross-subproject dependency diff. + +## Tracking boundary + +Standard-managed payload and the adopter coordination declaration only. diff --git a/project/ticket-019/intent.json b/project/ticket-019/intent.json new file mode 100644 index 0000000..686577b --- /dev/null +++ b/project/ticket-019/intent.json @@ -0,0 +1,26 @@ +{ + "schema": "new-project.intent/v3", + "ticket": "ticket-019", + "summary": "Adopt native governance managed seeds and declare mcp-docs/mcp-webui subproject ownership", + "workstream": "integration", + "classification": { + "kind": "SERVICE", + "priority": "P2", + "origin": "health" + }, + "allowedPaths": [ + "project/ticket-019/**", + "TODO.md", + "project/TICKETS.md", + ".gitattributes", + "project.bat", + ".governance/manifest.json" + ], + "forbiddenPaths": [ + "project/ticket-*/user-*.md" + ], + "stacks": [], + "dependsOn": [], + "conflictsWith": [], + "integrationTicket": null +} diff --git a/project/ticket-020/README.md b/project/ticket-020/README.md new file mode 100644 index 0000000..f118a17 --- /dev/null +++ b/project/ticket-020/README.md @@ -0,0 +1,24 @@ +# Ticket 020: Cross-subproject dependency maintenance (mcp-docs, mcp-gateway, mcp-webui) + +- **ID**: ticket-020 +- **Owner**: agent:claude +- **Status**: IN_PROGRESS +- **Workflow state**: EDIT +- **Created**: 2026-10-23 + +## Goal and scope + +Own the standing dependency-manifest maintenance across the three subproject +requirement files (`mcp-docs/requirements.txt`, `mcp-gateway/requirements.txt`, +`mcp-webui/requirements.txt`) so automated dependency PRs resolve to exactly +one active application ticket. Requires the `mcp-docs/**` and `mcp-webui/**` +workstream ownership declared by ticket-019. + +## Acceptance criteria + +- [x] AC-01: the three requirement manifests resolve to this ticket. +- [ ] AC-02: automated dependency PRs pass the governance gate on a current base. + +## Tracking boundary + +Requirement manifests only; no runtime code changes. diff --git a/project/ticket-020/intent.json b/project/ticket-020/intent.json new file mode 100644 index 0000000..9c5dcca --- /dev/null +++ b/project/ticket-020/intent.json @@ -0,0 +1,26 @@ +{ + "schema": "new-project.intent/v3", + "ticket": "ticket-020", + "summary": "Cross-subproject dependency maintenance (mcp-docs, mcp-gateway, mcp-webui)", + "workstream": "application", + "classification": { + "kind": "SERVICE", + "priority": "P2", + "origin": "health" + }, + "allowedPaths": [ + "project/ticket-020/**", + "TODO.md", + "project/TICKETS.md", + "mcp-docs/requirements.txt", + "mcp-gateway/requirements.txt", + "mcp-webui/requirements.txt" + ], + "forbiddenPaths": [ + "project/ticket-*/user-*.md" + ], + "stacks": [], + "dependsOn": [], + "conflictsWith": [], + "integrationTicket": null +}