coding-agent-harness 1.0.4 → 1.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +7 -0
- package/CONTRIBUTING.md +2 -2
- package/LICENSE +661 -21
- package/LICENSE-EXCEPTION.md +37 -0
- package/README.md +96 -4
- package/README.zh-CN.md +75 -4
- package/SKILL.md +52 -51
- package/dist/build-dist.mjs +189 -0
- package/dist/check-dist-observation.mjs +428 -0
- package/dist/check-harness.mjs +489 -0
- package/dist/check-import-graph.mjs +511 -0
- package/dist/check-runtime-emit.mjs +304 -0
- package/dist/check-type-boundaries.mjs +139 -0
- package/dist/commands/dashboard-command.mjs +80 -0
- package/dist/commands/migration-command.mjs +152 -0
- package/dist/commands/preset-command.mjs +91 -0
- package/dist/commands/task-command.mjs +324 -0
- package/dist/harness.mjs +304 -0
- package/dist/lib/capability-registry.mjs +643 -0
- package/dist/lib/check-module-parallel.mjs +227 -0
- package/dist/lib/check-profiles.mjs +414 -0
- package/dist/lib/check-task-contracts.mjs +54 -0
- package/dist/lib/core-shared.mjs +254 -0
- package/dist/lib/dashboard-data.mjs +608 -0
- package/dist/lib/dashboard-workbench.mjs +334 -0
- package/dist/lib/dashboard-writer.mjs +200 -0
- package/dist/lib/git-status-summary.mjs +45 -0
- package/dist/lib/governance-index-generator.mjs +236 -0
- package/dist/lib/governance-sync.mjs +617 -0
- package/dist/lib/governance-table-boundary.mjs +161 -0
- package/{scripts → dist}/lib/harness-core.mjs +3 -0
- package/dist/lib/harness-paths.mjs +338 -0
- package/dist/lib/lesson-maintenance.mjs +139 -0
- package/dist/lib/markdown-utils.mjs +193 -0
- package/dist/lib/migration-planner.mjs +439 -0
- package/dist/lib/migration-support.mjs +317 -0
- package/dist/lib/phase-kind.mjs +46 -0
- package/dist/lib/preset-audit-contracts.mjs +40 -0
- package/dist/lib/preset-engine.mjs +516 -0
- package/dist/lib/preset-registry.mjs +831 -0
- package/dist/lib/preset-resource-contracts.mjs +83 -0
- package/dist/lib/review-confirm-git-gate.mjs +244 -0
- package/dist/lib/status-builder.mjs +87 -0
- package/{scripts → dist}/lib/status-dashboard-renderer.mjs +48 -47
- package/dist/lib/structure-migration.mjs +404 -0
- package/dist/lib/subagent-authorization-audit.mjs +198 -0
- package/dist/lib/task-audit-metadata.mjs +376 -0
- package/dist/lib/task-audit-migration.mjs +355 -0
- package/dist/lib/task-completion-consistency.mjs +29 -0
- package/dist/lib/task-index.mjs +133 -0
- package/dist/lib/task-lesson-candidates.mjs +239 -0
- package/dist/lib/task-lesson-sedimentation.mjs +300 -0
- package/dist/lib/task-lifecycle/create-task-helpers.mjs +84 -0
- package/dist/lib/task-lifecycle/phase-sync.mjs +82 -0
- package/dist/lib/task-lifecycle/review-confirm.mjs +93 -0
- package/dist/lib/task-lifecycle/review-gates.mjs +62 -0
- package/dist/lib/task-lifecycle/review-submission.mjs +52 -0
- package/dist/lib/task-lifecycle/scaffold-provenance.mjs +54 -0
- package/dist/lib/task-lifecycle/template-files.mjs +52 -0
- package/dist/lib/task-lifecycle/text-utils.mjs +26 -0
- package/dist/lib/task-lifecycle.mjs +611 -0
- package/dist/lib/task-metadata.mjs +116 -0
- package/dist/lib/task-review-model.mjs +474 -0
- package/dist/lib/task-scanner.mjs +439 -0
- package/dist/lib/task-tombstone-commands.mjs +125 -0
- package/dist/postinstall.mjs +14 -0
- package/dist/run-built-tests.mjs +84 -0
- package/docs-release/README.md +1 -0
- package/docs-release/architecture/overview.md +13 -13
- package/docs-release/architecture/overview.zh-CN.md +13 -13
- package/docs-release/architecture/system-explainer/01-system-overview.md +218 -0
- package/docs-release/architecture/system-explainer/02-module-dependency.md +257 -0
- package/docs-release/architecture/system-explainer/03-task-lifecycle.md +304 -0
- package/docs-release/architecture/system-explainer/04-check-and-governance.md +241 -0
- package/docs-release/architecture/system-explainer/05-data-flow.md +276 -0
- package/docs-release/architecture/system-explainer/06-preset-and-migration.md +300 -0
- package/docs-release/architecture/system-explainer/README.md +67 -0
- package/docs-release/architecture/system-explainer/en-US/01-system-overview.md +227 -0
- package/docs-release/architecture/system-explainer/en-US/02-module-dependency.md +263 -0
- package/docs-release/architecture/system-explainer/en-US/03-task-lifecycle.md +319 -0
- package/docs-release/architecture/system-explainer/en-US/04-check-and-governance.md +252 -0
- package/docs-release/architecture/system-explainer/en-US/05-data-flow.md +290 -0
- package/docs-release/architecture/system-explainer/en-US/06-preset-and-migration.md +320 -0
- package/docs-release/architecture/system-explainer/en-US/README.md +70 -0
- package/docs-release/guides/agent-installation.en-US.md +22 -15
- package/docs-release/guides/agent-installation.md +23 -15
- package/docs-release/guides/contributing.md +3 -3
- package/docs-release/guides/contributing.zh-CN.md +3 -3
- package/docs-release/guides/document-audience-and-surfaces.en-US.md +10 -10
- package/docs-release/guides/document-audience-and-surfaces.md +10 -10
- package/docs-release/guides/legacy-migration-agent-prompt.md +25 -2
- package/docs-release/guides/legacy-migration-agent-prompt.zh-CN.md +25 -2
- package/docs-release/guides/migration-playbook.en-US.md +63 -1
- package/docs-release/guides/migration-playbook.md +59 -1
- package/docs-release/guides/parent-control-repository-pattern.en-US.md +25 -25
- package/docs-release/guides/parent-control-repository-pattern.md +25 -25
- package/docs-release/guides/preset-development.md +28 -4
- package/docs-release/guides/repository-operating-models.en-US.md +21 -21
- package/docs-release/guides/repository-operating-models.md +21 -21
- package/docs-release/guides/task-state-machine.en-US.md +35 -18
- package/docs-release/guides/task-state-machine.md +35 -18
- package/docs-release/guides/typescript-runtime-migration-closeout.md +96 -0
- package/examples/minimal-project/AGENTS.md +2 -2
- package/examples/minimal-project/coding-agent-harness/harness.yaml +14 -0
- package/examples/minimal-project/coding-agent-harness/planning/tasks/demo-task/INDEX.md +60 -0
- package/examples/minimal-project/coding-agent-harness/planning/tasks/demo-task/progress.md +11 -0
- package/examples/minimal-project/{docs/09-PLANNING/TASKS → coding-agent-harness/planning/tasks}/demo-task/review.md +1 -1
- package/package.json +22 -13
- package/presets/legacy-migration/preset.yaml +5 -5
- package/presets/legacy-migration/templates/execution_strategy.append.md +1 -1
- package/presets/lesson-sedimentation/preset.yaml +3 -3
- package/presets/module/preset.yaml +2 -2
- package/presets/module/templates/execution_strategy.append.md +1 -1
- package/presets/module/templates/task_plan.append.md +3 -3
- package/presets/standard-task/preset.yaml +2 -2
- package/references/adversarial-review-standard.md +2 -2
- package/references/agents-md-pattern.md +14 -14
- package/references/cadence-ledger.md +1 -1
- package/references/ci-cd-standard.md +1 -1
- package/references/delivery-operating-model-standard.md +4 -4
- package/references/docs-directory-standard.md +65 -159
- package/references/external-source-intake-standard.md +10 -10
- package/references/harness-ledger.md +6 -6
- package/references/legacy-12-phase-bootstrap.md +2 -2
- package/references/lessons-governance.md +15 -15
- package/references/long-running-task-standard.md +6 -6
- package/references/module-parallel-standard.md +34 -34
- package/references/planning-loop.md +6 -6
- package/references/project-onboarding-audit.md +4 -4
- package/references/regression-system.md +2 -2
- package/references/repo-governance-standard.md +4 -4
- package/references/review-routing-standard.md +1 -1
- package/references/ssot-governance.md +19 -19
- package/references/taskr-gap-analysis.md +5 -5
- package/references/walkthrough-closeout.md +14 -14
- package/references/worktree-parallel.md +3 -3
- package/skills/preset-creator/references/complex-task-skeleton/brief.md +11 -0
- package/skills/preset-creator/references/complex-task-skeleton/task_plan.md +1 -1
- package/skills/preset-creator/references/preset-package-skeleton.md +5 -5
- package/templates/AGENTS.md.template +31 -29
- package/templates/architecture/README.md +4 -4
- package/templates/architecture/service-catalog.md +2 -2
- package/templates/architecture/services/service-template.md +1 -1
- package/templates/dashboard/assets/app-src/00-state.js +12 -0
- package/templates/dashboard/assets/app-src/10-router.js +3 -0
- package/templates/dashboard/assets/app-src/20-overview.js +13 -3
- package/templates/dashboard/assets/app-src/35-task-detail.js +46 -6
- package/templates/dashboard/assets/app-src/40-modules.js +1 -1
- package/templates/dashboard/assets/app-src/55-presets.js +375 -0
- package/templates/dashboard/assets/app-src/60-shared.js +3 -1
- package/templates/dashboard/assets/app-src/90-bindings.js +131 -0
- package/templates/dashboard/assets/app.css +583 -0
- package/templates/dashboard/assets/app.css.manifest.json +1 -0
- package/templates/dashboard/assets/app.js +585 -11
- package/templates/dashboard/assets/app.manifest.json +1 -0
- package/templates/dashboard/assets/css-src/00-foundation.css +4 -0
- package/templates/dashboard/assets/css-src/40-detail-modules-migration.css +62 -0
- package/templates/dashboard/assets/css-src/45-presets.css +516 -0
- package/templates/dashboard/assets/i18n.js +144 -4
- package/templates/development/README.md +10 -10
- package/templates/development/cross-repo-debugging.md +3 -3
- package/templates/development/external-context/service-template.md +2 -2
- package/templates/development/external-source-packs/README.md +4 -4
- package/templates/integrations/README.md +4 -4
- package/templates/integrations/api-contract.md +2 -2
- package/templates/integrations/event-contract.md +2 -2
- package/templates/integrations/third-party/vendor-template.md +2 -2
- package/templates/integrations/webhook-contract.md +2 -2
- package/templates/ledger/Harness-Ledger.md +1 -1
- package/templates/planning/INDEX.md +88 -0
- package/templates/planning/brief.md +1 -1
- package/templates/planning/module_session_prompt.md +2 -1
- package/templates/planning/review.md +0 -18
- package/templates/planning/task_plan.md +5 -44
- package/templates/planning/visual_map.md +13 -9
- package/templates/planning/visual_map.simple.md +52 -0
- package/templates/planning/walkthrough.md +47 -0
- package/templates/reference/docs-library-standard.md +8 -8
- package/templates/reference/execution-workflow-standard.md +29 -2
- package/templates/reference/external-source-intake-standard.md +15 -15
- package/templates/reference/repo-governance-standard.md +1 -1
- package/templates/ssot/Module-Registry.md +1 -1
- package/templates/walkthrough/walkthrough-template.md +2 -2
- package/templates-zh-CN/AGENTS.md.template +31 -29
- package/templates-zh-CN/CLAUDE.md.template +1 -1
- package/templates-zh-CN/architecture/README.md +4 -4
- package/templates-zh-CN/architecture/service-catalog.md +2 -2
- package/templates-zh-CN/architecture/services/service-template.md +1 -1
- package/templates-zh-CN/development/README.md +10 -10
- package/templates-zh-CN/development/cross-repo-debugging.md +3 -3
- package/templates-zh-CN/development/external-context/service-template.md +2 -2
- package/templates-zh-CN/development/external-source-packs/README.md +4 -4
- package/templates-zh-CN/integrations/README.md +4 -4
- package/templates-zh-CN/integrations/api-contract.md +2 -2
- package/templates-zh-CN/integrations/event-contract.md +2 -2
- package/templates-zh-CN/integrations/third-party/vendor-template.md +2 -2
- package/templates-zh-CN/integrations/webhook-contract.md +2 -2
- package/templates-zh-CN/ledger/Harness-Ledger.md +1 -1
- package/templates-zh-CN/lessons/lesson-arch-process-change.md +1 -1
- package/templates-zh-CN/lessons/lesson-new-doc.md +3 -3
- package/templates-zh-CN/lessons/lesson-ref-change.md +4 -4
- package/templates-zh-CN/planning/INDEX.md +87 -0
- package/templates-zh-CN/planning/brief.md +1 -1
- package/templates-zh-CN/planning/module_session_prompt.md +12 -11
- package/templates-zh-CN/planning/review.md +0 -18
- package/templates-zh-CN/planning/task_plan.md +3 -63
- package/templates-zh-CN/planning/visual_map.md +14 -7
- package/templates-zh-CN/planning/visual_map.simple.md +48 -0
- package/templates-zh-CN/planning/walkthrough.md +47 -0
- package/templates-zh-CN/reference/adversarial-review-standard.md +2 -2
- package/templates-zh-CN/reference/delivery-operating-model-standard.md +3 -3
- package/templates-zh-CN/reference/docs-library-standard.md +28 -28
- package/templates-zh-CN/reference/execution-workflow-standard.md +32 -7
- package/templates-zh-CN/reference/external-source-intake-standard.md +16 -16
- package/templates-zh-CN/reference/harness-ledger-standard.md +6 -6
- package/templates-zh-CN/reference/regression-ssot-governance.md +2 -2
- package/templates-zh-CN/reference/repo-governance-standard.md +1 -1
- package/templates-zh-CN/reference/review-routing-standard.md +1 -1
- package/templates-zh-CN/reference/walkthrough-standard.md +7 -7
- package/templates-zh-CN/reference/worktree-standard.md +1 -1
- package/templates-zh-CN/regression/Cadence-Ledger.md +2 -2
- package/templates-zh-CN/ssot/Delivery-SSoT.md +3 -3
- package/templates-zh-CN/ssot/Module-Registry.md +3 -3
- package/templates-zh-CN/ssot/Regression-SSoT.md +2 -2
- package/templates-zh-CN/walkthrough/walkthrough-template.md +5 -5
- package/tsconfig.dist.json +16 -0
- package/tsconfig.json +25 -0
- package/tsconfig.runtime.json +24 -0
- package/examples/minimal-project/.harness-capabilities.json +0 -8
- package/examples/minimal-project/docs/09-PLANNING/TASKS/demo-task/progress.md +0 -11
- package/scripts/check-harness.mjs +0 -508
- package/scripts/commands/dashboard-command.mjs +0 -67
- package/scripts/commands/migration-command.mjs +0 -96
- package/scripts/commands/preset-command.mjs +0 -73
- package/scripts/commands/task-command.mjs +0 -327
- package/scripts/harness.mjs +0 -287
- package/scripts/lib/capability-registry.mjs +0 -591
- package/scripts/lib/check-module-parallel.mjs +0 -237
- package/scripts/lib/check-profiles.mjs +0 -418
- package/scripts/lib/check-task-contracts.mjs +0 -47
- package/scripts/lib/core-shared.mjs +0 -196
- package/scripts/lib/dashboard-data.mjs +0 -412
- package/scripts/lib/dashboard-workbench.mjs +0 -257
- package/scripts/lib/dashboard-writer.mjs +0 -198
- package/scripts/lib/git-status-summary.mjs +0 -46
- package/scripts/lib/governance-index-generator.mjs +0 -174
- package/scripts/lib/governance-sync.mjs +0 -514
- package/scripts/lib/governance-table-boundary.mjs +0 -175
- package/scripts/lib/lesson-maintenance.mjs +0 -152
- package/scripts/lib/markdown-utils.mjs +0 -158
- package/scripts/lib/migration-planner.mjs +0 -478
- package/scripts/lib/migration-support.mjs +0 -312
- package/scripts/lib/preset-audit-contracts.mjs +0 -37
- package/scripts/lib/preset-engine.mjs +0 -497
- package/scripts/lib/preset-registry.mjs +0 -627
- package/scripts/lib/preset-resource-contracts.mjs +0 -83
- package/scripts/lib/review-confirm-git-gate.mjs +0 -248
- package/scripts/lib/subagent-authorization-audit.mjs +0 -196
- package/scripts/lib/task-completion-consistency.mjs +0 -16
- package/scripts/lib/task-index.mjs +0 -93
- package/scripts/lib/task-lesson-candidates.mjs +0 -242
- package/scripts/lib/task-lesson-sedimentation.mjs +0 -326
- package/scripts/lib/task-lifecycle/review-confirm.mjs +0 -101
- package/scripts/lib/task-lifecycle/review-gates.mjs +0 -70
- package/scripts/lib/task-lifecycle/text-utils.mjs +0 -24
- package/scripts/lib/task-lifecycle.mjs +0 -649
- package/scripts/lib/task-review-model.mjs +0 -469
- package/scripts/lib/task-scanner.mjs +0 -576
- package/scripts/lib/task-tombstone-commands.mjs +0 -140
- package/scripts/postinstall.mjs +0 -14
- package/templates/walkthrough/Closeout-SSoT.md +0 -43
- package/templates-zh-CN/walkthrough/Closeout-SSoT.md +0 -42
- /package/examples/minimal-project/{docs → coding-agent-harness/governance/generated}/Harness-Ledger.md +0 -0
- /package/examples/minimal-project/{docs/09-PLANNING/TASKS → coding-agent-harness/planning/tasks}/demo-task/brief.md +0 -0
- /package/examples/minimal-project/{docs/09-PLANNING/TASKS → coding-agent-harness/planning/tasks}/demo-task/execution_strategy.md +0 -0
- /package/examples/minimal-project/{docs/09-PLANNING/TASKS → coding-agent-harness/planning/tasks}/demo-task/findings.md +0 -0
- /package/examples/minimal-project/{docs/09-PLANNING/TASKS → coding-agent-harness/planning/tasks}/demo-task/lesson_candidates.md +0 -0
- /package/examples/minimal-project/{docs/09-PLANNING/TASKS → coding-agent-harness/planning/tasks}/demo-task/task_plan.md +0 -0
- /package/examples/minimal-project/{docs/09-PLANNING/TASKS → coding-agent-harness/planning/tasks}/demo-task/visual_map.md +0 -0
|
@@ -33,7 +33,7 @@ task:
|
|
|
33
33
|
entrypoints:
|
|
34
34
|
newTask:
|
|
35
35
|
type: template
|
|
36
|
-
writes: [docs/
|
|
36
|
+
writes: [docs/coding-agent-harness/planning/tasks/**]
|
|
37
37
|
audit: true
|
|
38
38
|
templates:
|
|
39
39
|
taskPlanAppend: templates/task_plan.append.md
|
|
@@ -90,7 +90,7 @@ audit:
|
|
|
90
90
|
evidenceFiles: [preset-audit.json, preset-manifest.json, write-scope.json]
|
|
91
91
|
writeScopes:
|
|
92
92
|
taskDocs:
|
|
93
|
-
path: docs/
|
|
93
|
+
path: docs/coding-agent-harness/planning/tasks/**
|
|
94
94
|
access: write
|
|
95
95
|
```
|
|
96
96
|
|
|
@@ -173,7 +173,7 @@ task:
|
|
|
173
173
|
entrypoints:
|
|
174
174
|
newTask:
|
|
175
175
|
type: template
|
|
176
|
-
writes: [docs/
|
|
176
|
+
writes: [docs/coding-agent-harness/planning/tasks/**]
|
|
177
177
|
audit: true
|
|
178
178
|
templates:
|
|
179
179
|
taskPlanAppend: templates/task_plan.append.md
|
|
@@ -196,7 +196,7 @@ audit:
|
|
|
196
196
|
evidenceFiles: [preset-audit.json, preset-manifest.json, write-scope.json]
|
|
197
197
|
writeScopes:
|
|
198
198
|
taskDocs:
|
|
199
|
-
path: docs/
|
|
199
|
+
path: docs/coding-agent-harness/planning/tasks/**
|
|
200
200
|
access: write
|
|
201
201
|
```
|
|
202
202
|
|
|
@@ -267,7 +267,7 @@ Open `references/INDEX.md`, then read these preset-provided references before im
|
|
|
267
267
|
|
|
268
268
|
| Reference | Path | Why |
|
|
269
269
|
| --- | --- | --- |
|
|
270
|
-
| REF-001 | TARGET:docs/
|
|
270
|
+
| REF-001 | TARGET:docs/coding-agent-harness/planning/tasks/<task-folder>/references/upstream-contract.md | [rendered summary] |
|
|
271
271
|
```
|
|
272
272
|
|
|
273
273
|
The same `REF-001` and exact `TARGET:` path must also appear in `references/INDEX.md`.
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
This file is the operating entry point for agents working in this repository.
|
|
4
4
|
Keep it as a charter and routing index. Detailed rules belong in
|
|
5
|
-
`
|
|
5
|
+
`coding-agent-harness/governance/standards/`, not in this file.
|
|
6
6
|
|
|
7
7
|
## Project Profile
|
|
8
8
|
|
|
@@ -14,12 +14,13 @@ Keep it as a charter and routing index. Detailed rules belong in
|
|
|
14
14
|
|
|
15
15
|
## Non-Negotiable Rules
|
|
16
16
|
|
|
17
|
-
1. Preserve architecture boundaries documented in `
|
|
17
|
+
1. Preserve architecture boundaries documented in `coding-agent-harness/governance/standards/engineering-standard.md`.
|
|
18
18
|
2. Do not commit secrets, credentials, private endpoints, or user data.
|
|
19
|
-
3. Start non-trivial work with a task directory under `
|
|
19
|
+
3. Start non-trivial work with a Harness CLI-created task directory under `coding-agent-harness/planning/tasks/`.
|
|
20
20
|
4. Record evidence before claiming completion.
|
|
21
21
|
5. Protect unrelated working-tree changes; never revert files outside the assigned scope.
|
|
22
22
|
6. Commit verified, meaningful work slices proactively. Do not leave completed work only as dirty files unless the user explicitly pauses commits, checks fail, dirty ownership is unclear, or a security boundary prevents a clean commit; in those cases record the no-commit reason, owner, and next step in progress, handoff, or closeout notes. Never mix unrelated dirty changes into a task commit.
|
|
23
|
+
7. Before the final response, inspect the current task `visual_map.md` gate phase. If the current `Exit Command` has `Actor: agent`, run it or record the blocker. Never run a `human` gate such as `review-confirm` unless the user has explicitly performed or delegated that human confirmation.
|
|
23
24
|
|
|
24
25
|
## Reading Matrix
|
|
25
26
|
|
|
@@ -27,28 +28,28 @@ Read the smallest context that can answer the task.
|
|
|
27
28
|
|
|
28
29
|
| Work Type | Read First |
|
|
29
30
|
| --- | --- |
|
|
30
|
-
| Architecture or core module change | `
|
|
31
|
-
| System map, service responsibility, or external system relationship | `
|
|
32
|
-
| Local development, mocks, stubs, or cross-repo debugging | `
|
|
33
|
-
| API, event, webhook, SDK, or third-party contract | `
|
|
34
|
-
| Tests, smoke, or regression | `
|
|
35
|
-
| Execution, commit, PR, or release work | `
|
|
36
|
-
| Creating or advancing a task | Current task directory under `
|
|
31
|
+
| Architecture or core module change | `coding-agent-harness/governance/standards/engineering-standard.md` |
|
|
32
|
+
| System map, service responsibility, or external system relationship | `coding-agent-harness/context/architecture/README.md`, `coding-agent-harness/context/architecture/service-catalog.md` |
|
|
33
|
+
| Local development, mocks, stubs, or cross-repo debugging | `coding-agent-harness/context/development/README.md`, `coding-agent-harness/context/development/codebase-map.md` |
|
|
34
|
+
| API, event, webhook, SDK, or third-party contract | `coding-agent-harness/context/integrations/README.md` and the related contract file |
|
|
35
|
+
| Tests, smoke, or regression | `coding-agent-harness/governance/standards/testing-standard.md`, `coding-agent-harness/governance/regression/Regression-SSoT.md` |
|
|
36
|
+
| Execution, commit, PR, or release work | `coding-agent-harness/governance/standards/execution-workflow-standard.md`, `coding-agent-harness/governance/standards/repo-governance-standard.md`, `coding-agent-harness/governance/standards/pull-request-standard.md`, `coding-agent-harness/governance/standards/ci-cd-standard.md` |
|
|
37
|
+
| Creating or advancing a task | Current task directory under `coding-agent-harness/planning/tasks/`; use `harness new-task` / lifecycle commands when this project has the Harness CLI configured |
|
|
37
38
|
| Brief, Execution Strategy, or Visual Map | Current task `brief.md`, `execution_strategy.md`, and `visual_map.md` |
|
|
38
|
-
| Long-running task | `
|
|
39
|
-
| Reviewer, subagent, or adversarial review | `
|
|
40
|
-
| Team, multi-repo, or staged delivery | `
|
|
41
|
-
| Module-parallel work | `
|
|
42
|
-
| Documentation governance or Harness update | `
|
|
43
|
-
| External source material intake | `
|
|
44
|
-
| Regression SSoT maintenance | `
|
|
45
|
-
| Walkthrough, closeout, or lessons | `
|
|
46
|
-
| Worktree operations | `
|
|
39
|
+
| Long-running task | Current task `long-running-task-contract.md` when present |
|
|
40
|
+
| Reviewer, subagent, or adversarial review | Current task `review.md`, `coding-agent-harness/governance/standards/review-routing-standard.md` |
|
|
41
|
+
| Team, multi-repo, or staged delivery | `coding-agent-harness/governance/standards/delivery-operating-model-standard.md`, `coding-agent-harness/planning/Delivery-SSoT.md` |
|
|
42
|
+
| Module-parallel work | `coding-agent-harness/planning/modules/Module-Registry.md` and the related module plan |
|
|
43
|
+
| Documentation governance or Harness update | `coding-agent-harness/governance/standards/docs-library-standard.md`, `coding-agent-harness/harness.yaml` |
|
|
44
|
+
| External source material intake | `coding-agent-harness/governance/standards/external-source-intake-standard.md` |
|
|
45
|
+
| Regression SSoT maintenance | `coding-agent-harness/governance/standards/regression-ssot-governance.md` |
|
|
46
|
+
| Walkthrough, closeout, or lessons | `coding-agent-harness/governance/standards/walkthrough-standard.md`, current task `walkthrough.md`, current task `lesson_candidates.md`, `coding-agent-harness/governance/lessons/` |
|
|
47
|
+
| Worktree operations | `coding-agent-harness/governance/standards/worktree-standard.md` |
|
|
47
48
|
|
|
48
49
|
## Standard Execution Flow
|
|
49
50
|
|
|
50
51
|
1. Confirm the request, scope, and affected files.
|
|
51
|
-
2. For non-trivial work, create or update the task plan before editing code.
|
|
52
|
+
2. For non-trivial work, create or update the task plan before editing code. Use `harness new-task`; if the CLI is unavailable, keep Task Audit Metadata in the task `INDEX.md` and set `Created By` to `manual-exception` with a concrete reason.
|
|
52
53
|
3. Assess delegation from the user's goal; users do not need to know or ask for subagents.
|
|
53
54
|
4. Load only the reference documents required by the Reading Matrix.
|
|
54
55
|
5. Preserve existing project facts; merge new context instead of overwriting history.
|
|
@@ -56,8 +57,9 @@ Read the smallest context that can answer the task.
|
|
|
56
57
|
7. Implement only within the approved scope.
|
|
57
58
|
8. Run the relevant checks and capture evidence in the task records.
|
|
58
59
|
9. Route required review and close blocking findings.
|
|
59
|
-
10.
|
|
60
|
-
11.
|
|
60
|
+
10. Follow the current `visual_map.md` lifecycle gate and its `Exit Command` / `Actor`.
|
|
61
|
+
11. Write or update the walkthrough and closeout records.
|
|
62
|
+
12. Update SSoT / ledger files that the task actually touched.
|
|
61
63
|
|
|
62
64
|
## Coordination Rules
|
|
63
65
|
|
|
@@ -71,14 +73,14 @@ Read the smallest context that can answer the task.
|
|
|
71
73
|
|
|
72
74
|
## Single Sources Of Truth
|
|
73
75
|
|
|
74
|
-
- Delivery SSoT: `
|
|
75
|
-
- Module Registry: `
|
|
76
|
-
- Regression SSoT: `
|
|
77
|
-
- Cadence Ledger: `
|
|
76
|
+
- Delivery SSoT: `coding-agent-harness/planning/Delivery-SSoT.md`
|
|
77
|
+
- Module Registry: `coding-agent-harness/planning/modules/Module-Registry.md`
|
|
78
|
+
- Regression SSoT: `coding-agent-harness/governance/regression/Regression-SSoT.md`
|
|
79
|
+
- Cadence Ledger: `coding-agent-harness/governance/regression/Cadence-Ledger.md`
|
|
78
80
|
- Lesson Candidates: current task `lesson_candidates.md`
|
|
79
|
-
- Lesson Detail Docs: `
|
|
80
|
-
- Closeout
|
|
81
|
-
- Harness Ledger: `
|
|
81
|
+
- Lesson Detail Docs: `coding-agent-harness/governance/lessons/`
|
|
82
|
+
- Generated Closeout Index: `coding-agent-harness/governance/generated/Closeout-Index.md`
|
|
83
|
+
- Harness Ledger: `coding-agent-harness/governance/generated/Harness-Ledger.md`
|
|
82
84
|
|
|
83
85
|
## Local Commands
|
|
84
86
|
|
|
@@ -22,8 +22,8 @@ This folder is the system-structure source of truth. It explains what the curren
|
|
|
22
22
|
## Boundary
|
|
23
23
|
|
|
24
24
|
- Put system structure, service responsibility, ownership, and critical flows here.
|
|
25
|
-
- Put payload bodies, endpoint parameters, event schemas, and SDK details in `
|
|
26
|
-
- Put local setup, mocks, stubs, and cross-repo debugging notes in `
|
|
25
|
+
- Put payload bodies, endpoint parameters, event schemas, and SDK details in `coding-agent-harness/context/integrations/`.
|
|
26
|
+
- Put local setup, mocks, stubs, and cross-repo debugging notes in `coding-agent-harness/context/development/`.
|
|
27
27
|
|
|
28
28
|
## Structure Contract
|
|
29
29
|
|
|
@@ -44,6 +44,6 @@ Each `services/<service-key>.md` answers only three questions:
|
|
|
44
44
|
|
|
45
45
|
1. What does this service own, including data ownership.
|
|
46
46
|
2. How does it relate to this repository.
|
|
47
|
-
3. Which `
|
|
47
|
+
3. Which `context/development` and `context/integrations` docs must an agent read before changing this repository.
|
|
48
48
|
|
|
49
|
-
Do not put interface fields, mock instructions, or temporary debugging notes in `
|
|
49
|
+
Do not put interface fields, mock instructions, or temporary debugging notes in `context/architecture`. Those belong in `context/integrations` and `context/development`.
|
|
@@ -12,6 +12,6 @@ Confidence: low
|
|
|
12
12
|
|
|
13
13
|
## Boundary Rule
|
|
14
14
|
|
|
15
|
-
This catalog gives interface summaries and links only. Put payload bodies, auth rules, error codes, and event schemas in `
|
|
15
|
+
This catalog gives interface summaries and links only. Put payload bodies, auth rules, error codes, and event schemas in `coding-agent-harness/context/integrations/`.
|
|
16
16
|
|
|
17
|
-
Each service or microservice gets one row. If the service affects development or task decisions in this repository, add links to `services/<service-key>.md`, `
|
|
17
|
+
Each service or microservice gets one row. If the service affects development or task decisions in this repository, add links to `services/<service-key>.md`, `coding-agent-harness/context/development/external-context/<service-key>.md`, and the relevant `coding-agent-harness/context/integrations/<contract>.md`.
|
|
@@ -9,7 +9,7 @@ Confidence: low
|
|
|
9
9
|
|
|
10
10
|
| Catalog Row | Development Context | Source Pack | Integration Contracts | Last Verified | Confidence |
|
|
11
11
|
| --- | --- | --- | --- | --- | --- |
|
|
12
|
-
| `
|
|
12
|
+
| `coding-agent-harness/context/architecture/service-catalog.md` | `coding-agent-harness/context/development/external-context/<service-key>.md` | `coding-agent-harness/context/development/external-source-packs/<source-key>/README.md` or N/A | `coding-agent-harness/context/integrations/<contract>.md` | unknown | low |
|
|
13
13
|
|
|
14
14
|
## Responsibility
|
|
15
15
|
|
|
@@ -12,6 +12,18 @@ const state = {
|
|
|
12
12
|
taskGroupPage: 1,
|
|
13
13
|
warningFilter: "all",
|
|
14
14
|
warningPage: 1,
|
|
15
|
+
presetQuery: "",
|
|
16
|
+
presetSourceFilter: "all",
|
|
17
|
+
selectedPresetKey: "",
|
|
18
|
+
selectedPresetId: "",
|
|
19
|
+
presetActionResult: null,
|
|
20
|
+
presetInstallSource: "",
|
|
21
|
+
presetInstallScope: "project",
|
|
22
|
+
presetInstallForce: false,
|
|
23
|
+
presetSeedScope: "project",
|
|
24
|
+
presetSeedForce: false,
|
|
25
|
+
presetUninstallScope: "project",
|
|
26
|
+
presetUninstallConfirm: "",
|
|
15
27
|
renderMode: "rendered",
|
|
16
28
|
theme: localStorage.getItem("harness.theme") || "system",
|
|
17
29
|
taskLayout: localStorage.getItem("harness.taskLayout") || "list",
|
|
@@ -29,6 +29,7 @@ function shell() {
|
|
|
29
29
|
${routeLink("#/tasks", t("taskIndex"), "tasks")}
|
|
30
30
|
${routeLink("#/review", t("reviewQueue"), "review")}
|
|
31
31
|
${routeLink("#/modules", t("moduleView"), "modules")}
|
|
32
|
+
${routeLink("#/presets", t("presetCatalog"), "presets")}
|
|
32
33
|
<button data-language-toggle>${locale === "zh" ? "EN" : "中文"}</button>
|
|
33
34
|
<button data-theme-toggle>${themeLabel()}</button>
|
|
34
35
|
</div>
|
|
@@ -55,6 +56,7 @@ function renderRoute() {
|
|
|
55
56
|
if (route.name === "reviewTask") return reviewWorkspace(route);
|
|
56
57
|
if (route.name === "review") return reviewQueue();
|
|
57
58
|
if (route.name === "modules") return modulesView(route.id);
|
|
59
|
+
if (route.name === "presets") return presetsView();
|
|
58
60
|
if (route.name === "tasks") return taskIndex();
|
|
59
61
|
return overview();
|
|
60
62
|
}
|
|
@@ -66,6 +68,7 @@ function currentRoute() {
|
|
|
66
68
|
if (parts[0] === "review" && parts[1]) return { name: "reviewTask", id: parts[1] };
|
|
67
69
|
if (parts[0] === "review") return { name: "review" };
|
|
68
70
|
if (parts[0] === "modules") return { name: "modules", id: parts[1] || "" };
|
|
71
|
+
if (parts[0] === "presets") return { name: "presets" };
|
|
69
72
|
if (parts[0] === "tasks") return { name: "tasks" };
|
|
70
73
|
return { name: "overview" };
|
|
71
74
|
}
|
|
@@ -16,6 +16,9 @@ function overview() {
|
|
|
16
16
|
|
|
17
17
|
function statusStrip() {
|
|
18
18
|
const status = bundle.status?.checkState?.status || "unknown";
|
|
19
|
+
const validationMode = bundle.status?.checkState?.validationMode || "validated";
|
|
20
|
+
const snapshotOnly = validationMode === "data-only" && !isWorkbenchRuntime();
|
|
21
|
+
const displayState = snapshotOnly ? "snapshot" : status;
|
|
19
22
|
const failures = bundle.status?.checkState?.failures || 0;
|
|
20
23
|
const warnings = bundle.status?.checkState?.warnings || 0;
|
|
21
24
|
const tasks = bundle.status?.tasks || [];
|
|
@@ -23,9 +26,9 @@ function statusStrip() {
|
|
|
23
26
|
const visual = summary.visualMapCoverage || {};
|
|
24
27
|
const withBrief = tasks.filter((task) => task.briefSource === "standalone").length;
|
|
25
28
|
return `<section class="status-card-group">
|
|
26
|
-
<div class="status-primary ${
|
|
27
|
-
<span>${t("readiness")}</span>
|
|
28
|
-
<strong>${label(status)}</strong>
|
|
29
|
+
<div class="status-primary ${displayState}">
|
|
30
|
+
<span>${snapshotOnly ? t("snapshotStatus") : t("readiness")}</span>
|
|
31
|
+
<strong>${snapshotOnly ? t("snapshot") : label(status)}</strong>
|
|
29
32
|
<p>${nextActionText()}</p>
|
|
30
33
|
</div>
|
|
31
34
|
<div class="metrics-grid">
|
|
@@ -46,15 +49,22 @@ function metric(labelText, value) {
|
|
|
46
49
|
}
|
|
47
50
|
|
|
48
51
|
function nextActionText() {
|
|
52
|
+
const dataOnly = (bundle.status?.checkState?.validationMode || "validated") === "data-only";
|
|
53
|
+
if (dataOnly && !isWorkbenchRuntime()) return t("snapshotNotValidated");
|
|
49
54
|
const failures = bundle.status?.checkState?.failures || 0;
|
|
50
55
|
if (failures > 0) return t("resolveBlockers");
|
|
51
56
|
const missingBriefs = (bundle.status?.tasks || []).filter((task) => task.briefSource !== "standalone").length;
|
|
52
57
|
if (missingBriefs > 0) return `${missingBriefs} ${t("missingBriefs")}`;
|
|
53
58
|
const warnings = bundle.status?.checkState?.warnings || 0;
|
|
54
59
|
if (warnings > 0) return t("reviewAdvice");
|
|
60
|
+
if (dataOnly) return t("workbenchDataOnly");
|
|
55
61
|
return t("noBlockers");
|
|
56
62
|
}
|
|
57
63
|
|
|
64
|
+
function isWorkbenchRuntime() {
|
|
65
|
+
return window.__HARNESS_WORKBENCH__ === true || state.runtime?.mode === "workbench";
|
|
66
|
+
}
|
|
67
|
+
|
|
58
68
|
function flowPanel() {
|
|
59
69
|
const tasks = bundle.status?.tasks || [];
|
|
60
70
|
const total = tasks.length;
|
|
@@ -72,17 +72,57 @@ function taskQueueReasonSummary(task) {
|
|
|
72
72
|
}
|
|
73
73
|
|
|
74
74
|
function phaseTimeline(task) {
|
|
75
|
+
const knownKinds = new Set(["init", "execution", "gate"]);
|
|
76
|
+
const groups = [
|
|
77
|
+
["init", "Init"],
|
|
78
|
+
["execution", "Execution"],
|
|
79
|
+
["gate", "Gate"],
|
|
80
|
+
["other", "Other / Invalid"],
|
|
81
|
+
];
|
|
82
|
+
const phases = task.phases || [];
|
|
83
|
+
const grouped = groups
|
|
84
|
+
.map(([kind, label]) => {
|
|
85
|
+
const items = kind === "other"
|
|
86
|
+
? phases.filter((phase) => !knownKinds.has(phase.kind || "execution"))
|
|
87
|
+
: phases.filter((phase) => (phase.kind || "execution") === kind);
|
|
88
|
+
if (!items.length) return "";
|
|
89
|
+
return `<div class="phase-kind-group ${escapeAttr(kind)}">
|
|
90
|
+
<h3>${escapeHtml(label)}</h3>
|
|
91
|
+
${items.map(phaseStep).join("")}
|
|
92
|
+
</div>`;
|
|
93
|
+
})
|
|
94
|
+
.join("");
|
|
75
95
|
return `<section class="phase-timeline">
|
|
76
96
|
<h2>${t("phaseTimeline")}</h2>
|
|
77
|
-
${
|
|
78
|
-
<strong>${escapeHtml(phase.id)}</strong>
|
|
79
|
-
<span>${phase.completion}%</span>
|
|
80
|
-
<p>${escapeHtml(phase.output || phase.blockingRisk || phase.state)}</p>
|
|
81
|
-
${progressBar(phase.completion)}
|
|
82
|
-
</div>`).join("") || emptyState(t("noPhaseData"))}
|
|
97
|
+
${grouped || emptyState(t("noPhaseData"))}
|
|
83
98
|
</section>`;
|
|
84
99
|
}
|
|
85
100
|
|
|
101
|
+
function phaseStep(phase) {
|
|
102
|
+
const kind = phase.kind || "execution";
|
|
103
|
+
const actor = phase.actor || "agent";
|
|
104
|
+
const knownKind = ["init", "execution", "gate"].includes(kind);
|
|
105
|
+
const kindLabel = knownKind ? escapeHtml(kind) : `<span class="tag warn">${escapeHtml(kind)}</span>`;
|
|
106
|
+
const phaseKindClass = knownKind ? kind : "other";
|
|
107
|
+
return `<div class="phase-step ${escapeAttr(phase.state)} ${escapeAttr(phaseKindClass)}">
|
|
108
|
+
<div class="phase-step-head">
|
|
109
|
+
<strong>${escapeHtml(phase.id)}</strong>
|
|
110
|
+
<span>${kindLabel} · ${phase.completion}%</span>
|
|
111
|
+
</div>
|
|
112
|
+
<p>${escapeHtml(phase.output || phase.blockingRisk || phase.state)}</p>
|
|
113
|
+
${progressBar(phase.completion)}
|
|
114
|
+
<div class="phase-meta">
|
|
115
|
+
${phaseMetaTag(actor)}
|
|
116
|
+
${tag(phase.evidenceStatus || "missing")}
|
|
117
|
+
</div>
|
|
118
|
+
${phase.exitCommand ? `<code class="phase-exit-command">${escapeHtml(phase.exitCommand)}</code>` : ""}
|
|
119
|
+
</div>`;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
function phaseMetaTag(value) {
|
|
123
|
+
return `<span class="tag">${escapeHtml(String(value || "unknown").replaceAll("_", " "))}</span>`;
|
|
124
|
+
}
|
|
125
|
+
|
|
86
126
|
function taskDocSection(task, fileName, title, required) {
|
|
87
127
|
const doc = taskDocument(task, fileName);
|
|
88
128
|
if (!doc && !required) return "";
|
|
@@ -35,7 +35,7 @@ function moduleCard(module) {
|
|
|
35
35
|
const pageCount = Math.ceil(tasks.length / 8) || 1;
|
|
36
36
|
const visibleTasks = tasks.slice((currentPage - 1) * 8, currentPage * 8);
|
|
37
37
|
|
|
38
|
-
const brief = findDocument(`TARGET:
|
|
38
|
+
const brief = findDocument(module.briefPath || `TARGET:coding-agent-harness/planning/modules/${moduleKey}/brief.md`);
|
|
39
39
|
|
|
40
40
|
let pagerHtml = "";
|
|
41
41
|
if (tasks.length > 8) {
|