@mmerterden/multi-agent-pipeline 17.6.0 → 19.0.0
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 +310 -0
- package/README.md +76 -18
- package/README.tr.md +55 -16
- package/docs/adr/0002-instruction-driven-flag.md +1 -0
- package/docs/adr/0005-lazy-phase-docs.md +11 -1
- package/docs/adr/0008-installer-modularization-and-secret-leak-defense.md +1 -0
- package/docs/adr/0010-own-code-graph.md +1 -0
- package/docs/adr/0011-dormant-ci.md +25 -1
- package/docs/adr/0014-six-phase-consolidation.md +134 -0
- package/docs/adr/README.md +2 -1
- package/docs/architecture.md +37 -38
- package/docs/best-practices.md +1 -1
- package/docs/ecosystem.md +37 -26
- package/docs/engineering.md +1 -1
- package/docs/facts.json +45 -0
- package/docs/features.md +54 -53
- package/docs/performance.md +5 -5
- package/docs/recovery-guide.md +9 -9
- package/docs/server-readiness.md +188 -0
- package/docs/token-budget-history.md +3 -1
- package/index.js +18 -3
- package/install/_codex-agents.mjs +1 -1
- package/install/_common.mjs +42 -17
- package/install/_dev-only-files.mjs +8 -0
- package/install/_unattended-profile.mjs +113 -0
- package/install/index.mjs +48 -0
- package/install/templates/claude-hooks.json +1 -1
- package/install/templates/codex-instructions.md +1 -1
- package/install/templates/copilot-instructions.md +28 -28
- package/manifest.json +1065 -0
- package/package.json +6 -3
- package/pipeline/agents/dev-critic.md +3 -3
- package/pipeline/commands/figma-to-swiftui.md +1 -1
- package/pipeline/commands/multi-agent/SKILL.md +8 -8
- package/pipeline/commands/multi-agent/analysis/SKILL.md +9 -9
- package/pipeline/commands/multi-agent/autopilot/SKILL.md +7 -7
- package/pipeline/commands/multi-agent/channels/SKILL.md +15 -15
- package/pipeline/commands/multi-agent/diff-explain/SKILL.md +6 -6
- package/pipeline/commands/multi-agent/garbage-collect/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/graph/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/help/SKILL.md +62 -62
- package/pipeline/commands/multi-agent/language/SKILL.md +2 -2
- package/pipeline/commands/multi-agent/local/SKILL.md +11 -11
- package/pipeline/commands/multi-agent/local-autopilot/SKILL.md +13 -13
- package/pipeline/commands/multi-agent/log/SKILL.md +2 -2
- package/pipeline/commands/multi-agent/manual-test/SKILL.md +9 -9
- package/pipeline/commands/multi-agent/model/SKILL.md +69 -0
- package/pipeline/commands/multi-agent/refactor/SKILL.md +3 -3
- package/pipeline/commands/multi-agent/resume/SKILL.md +4 -4
- package/pipeline/commands/multi-agent/resume-local/SKILL.md +19 -17
- package/pipeline/commands/multi-agent/review/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/route-off/SKILL.md +36 -0
- package/pipeline/commands/multi-agent/route-on/SKILL.md +74 -0
- package/pipeline/commands/multi-agent/route-status/SKILL.md +56 -0
- package/pipeline/commands/multi-agent/setup/SKILL.md +2 -2
- package/pipeline/commands/multi-agent/status/SKILL.md +54 -23
- package/pipeline/commands/multi-agent/steer/SKILL.md +2 -2
- package/pipeline/commands/multi-agent/sync/SKILL.md +12 -13
- package/pipeline/commands/multi-agent/test/SKILL.md +1 -1
- package/pipeline/lib/_jira-auth.sh +8 -0
- package/pipeline/lib/analysis-jira-write.sh +32 -0
- package/pipeline/lib/ask-choice.sh +13 -2
- package/pipeline/lib/autopilot-state.sh +8 -0
- package/pipeline/lib/credential-inventory.sh +1 -1
- package/pipeline/lib/fatal.mjs +129 -0
- package/pipeline/lib/fetch-fortify.sh +1 -1
- package/pipeline/lib/figma-mcp-refresh.sh +18 -0
- package/pipeline/lib/figma-screenshot.sh +18 -0
- package/pipeline/lib/invoked-directly.mjs +43 -0
- package/pipeline/lib/jira-publish.sh +42 -0
- package/pipeline/lib/md2confluence-v3.py +47 -0
- package/pipeline/lib/model-rung.sh +142 -0
- package/pipeline/lib/outbound-gate.mjs +175 -0
- package/pipeline/lib/phase-schema.mjs +88 -0
- package/pipeline/lib/plan-todos.sh +32 -11
- package/pipeline/lib/post-pr-review.sh +77 -8
- package/pipeline/lib/repo-hygiene.sh +8 -3
- package/pipeline/lib/require-jq.sh +40 -0
- package/pipeline/lib/route-state.sh +161 -0
- package/pipeline/lib/run-paths.sh +335 -0
- package/pipeline/multi-agent-refs/_account-picker.md +1 -1
- package/pipeline/multi-agent-refs/_dev-context.md +1 -1
- package/pipeline/multi-agent-refs/_input-parser.md +1 -1
- package/pipeline/multi-agent-refs/analysis/evidence.md +0 -9
- package/pipeline/multi-agent-refs/analysis/intake.md +1 -1
- package/pipeline/multi-agent-refs/analysis/locked.md +21 -22
- package/pipeline/multi-agent-refs/analysis/render.md +1 -1
- package/pipeline/multi-agent-refs/analysis/synthesis.md +12 -6
- package/pipeline/multi-agent-refs/android-guide.md +1 -1
- package/pipeline/multi-agent-refs/audit-guide.md +13 -13
- package/pipeline/multi-agent-refs/channels/issue-comment.md +2 -2
- package/pipeline/multi-agent-refs/channels/jira.md +3 -3
- package/pipeline/multi-agent-refs/channels/pr.md +4 -4
- package/pipeline/multi-agent-refs/channels/wiki.md +1 -1
- package/pipeline/multi-agent-refs/component-dispatch.md +3 -3
- package/pipeline/multi-agent-refs/cross-cli-contract.md +31 -6
- package/pipeline/multi-agent-refs/features/autopilot-circuit-breaker.md +74 -4
- package/pipeline/multi-agent-refs/features/code-graph.md +5 -5
- package/pipeline/multi-agent-refs/features/cost-analysis.md +93 -0
- package/pipeline/multi-agent-refs/features/design-conformance.md +1 -1
- package/pipeline/multi-agent-refs/features/dev-critic.md +3 -3
- package/pipeline/multi-agent-refs/features/doctor.md +47 -2
- package/pipeline/multi-agent-refs/features/external-context-injection.md +3 -3
- package/pipeline/multi-agent-refs/features/maturity-followup.md +3 -3
- package/pipeline/multi-agent-refs/features/model-fallback.md +5 -5
- package/pipeline/multi-agent-refs/features/plan-todos.md +1 -1
- package/pipeline/multi-agent-refs/features/repo-map.md +1 -1
- package/pipeline/multi-agent-refs/features/review-delta.md +3 -3
- package/pipeline/multi-agent-refs/features/review-multi-repo.md +1 -1
- package/pipeline/multi-agent-refs/features/scope-check.md +4 -4
- package/pipeline/multi-agent-refs/features/skill-conformance.md +2 -2
- package/pipeline/multi-agent-refs/features/stack-skill-routing.md +1 -1
- package/pipeline/multi-agent-refs/features/verify-by-test.md +4 -4
- package/pipeline/multi-agent-refs/features/verify.md +83 -0
- package/pipeline/multi-agent-refs/features/visual-evidence.md +19 -19
- package/pipeline/multi-agent-refs/features/worktree-finalize.md +6 -6
- package/pipeline/multi-agent-refs/issue-jira-triad.md +10 -10
- package/pipeline/multi-agent-refs/knowledge.md +11 -11
- package/pipeline/multi-agent-refs/multi-repo-integration-build.md +13 -13
- package/pipeline/multi-agent-refs/payload-contracts.md +8 -8
- package/pipeline/multi-agent-refs/phases/log-format.md +10 -10
- package/pipeline/multi-agent-refs/phases/modes.md +30 -30
- package/pipeline/multi-agent-refs/phases/operations.md +21 -10
- package/pipeline/multi-agent-refs/phases/phase-0-init.md +25 -25
- package/pipeline/multi-agent-refs/phases/phase-1-plan.md +599 -0
- package/pipeline/multi-agent-refs/phases/{phase-3-dev.md → phase-2-dev.md} +129 -49
- package/pipeline/multi-agent-refs/phases/{phase-4-review.md → phase-3-review.md} +225 -107
- package/pipeline/multi-agent-refs/phases/{phase-6-commit.md → phase-4-commit.md} +23 -23
- package/pipeline/multi-agent-refs/phases/{phase-7-report.md → phase-5-report.md} +29 -29
- package/pipeline/multi-agent-refs/phases.md +44 -48
- package/pipeline/multi-agent-refs/picker-contract.md +1 -1
- package/pipeline/multi-agent-refs/progress-contract.md +6 -6
- package/pipeline/multi-agent-refs/readiness-review.md +1 -1
- package/pipeline/multi-agent-refs/rules.md +7 -7
- package/pipeline/multi-agent-refs/swiftui-guide.md +2 -2
- package/pipeline/multi-agent-refs/tracker-contract.md +31 -32
- package/pipeline/multi-agent-refs/unattended-contract.md +129 -0
- package/pipeline/multi-agent-refs/wiki-capture.md +14 -14
- package/pipeline/preferences-template.json +9 -1
- package/pipeline/rules/outside-the-pipeline.md +1 -1
- package/pipeline/schemas/agent-state.schema.json +50 -50
- package/pipeline/schemas/analysis-output.schema.json +2 -2
- package/pipeline/schemas/autopilot-config.schema.json +1 -1
- package/pipeline/schemas/code-graph.schema.json +1 -1
- package/pipeline/schemas/criteria-manifest.schema.json +1 -1
- package/pipeline/schemas/dev-critic-output.schema.json +1 -1
- package/pipeline/schemas/diff-risk.schema.json +1 -1
- package/pipeline/schemas/migrations/prefs-2.4.0-to-2.5.0.mjs +2 -2
- package/pipeline/schemas/migrations/prefs-2.6.0-to-2.7.0.mjs +31 -0
- package/pipeline/schemas/migrations/state-2.1.0-to-2.2.0.mjs +129 -0
- package/pipeline/schemas/phases.json +105 -0
- package/pipeline/schemas/plan-todos.schema.json +5 -5
- package/pipeline/schemas/planning-output.schema.json +1 -1
- package/pipeline/schemas/prefs.schema.json +100 -56
- package/pipeline/schemas/reviewer-output.schema.json +3 -3
- package/pipeline/schemas/route-config.schema.json +74 -0
- package/pipeline/schemas/scope-check.schema.json +1 -1
- package/pipeline/schemas/test-gap.schema.json +1 -1
- package/pipeline/schemas/token-budget.json +12 -18
- package/pipeline/schemas/triage-output.schema.json +6 -6
- package/pipeline/scripts/README.md +3 -3
- package/pipeline/scripts/_code-graph.mjs +2 -2
- package/pipeline/scripts/_run-paths.mjs +372 -0
- package/pipeline/scripts/_smoke-root.sh +1 -1
- package/pipeline/scripts/aggregate-metrics.mjs +65 -65
- package/pipeline/scripts/autopilot-arming.mjs +2 -1
- package/pipeline/scripts/autopilot-intake.mjs +2 -1
- package/pipeline/scripts/autopilot-runner.mjs +206 -2
- package/pipeline/scripts/build-references.mjs +2 -1
- package/pipeline/scripts/build-stack-plugins.mjs +10 -2
- package/pipeline/scripts/capture-evidence.sh +7 -2
- package/pipeline/scripts/capture-flush.sh +8 -8
- package/pipeline/scripts/capture-resume.sh +3 -3
- package/pipeline/scripts/classify-plan-safety.mjs +3 -2
- package/pipeline/scripts/cost-analyze.mjs +600 -0
- package/pipeline/scripts/cost-budget-check.mjs +4 -12
- package/pipeline/scripts/council-view.mjs +2 -1
- package/pipeline/scripts/crush-json.mjs +2 -1
- package/pipeline/scripts/diff-explain.mjs +7 -10
- package/pipeline/scripts/diff-risk-score.mjs +2 -1
- package/pipeline/scripts/doctor.mjs +140 -6
- package/pipeline/scripts/evidence-gate.mjs +9 -3
- package/pipeline/scripts/feedback-send.mjs +12 -2
- package/pipeline/scripts/gc-abandoned.sh +32 -16
- package/pipeline/scripts/gc-tmp.sh +1 -1
- package/pipeline/scripts/gc-worktrees.sh +12 -5
- package/pipeline/scripts/gen-facts.mjs +175 -0
- package/pipeline/scripts/gen-mode-dispatch.mjs +32 -37
- package/pipeline/scripts/gen-ref-toc.mjs +1 -1
- package/pipeline/scripts/github-ssh-setup.sh +64 -7
- package/pipeline/scripts/graph-mermaid.mjs +4 -2
- package/pipeline/scripts/graph-report.mjs +1 -1
- package/pipeline/scripts/jira-attach.sh +1 -1
- package/pipeline/scripts/keychain-save.sh +101 -30
- package/pipeline/scripts/learn-from-transcripts.mjs +3 -2
- package/pipeline/scripts/learning-curve.mjs +36 -31
- package/pipeline/scripts/log-metric.sh +17 -4
- package/pipeline/scripts/make-manifest.mjs +199 -0
- package/pipeline/scripts/memory-save.sh +1 -1
- package/pipeline/scripts/migrate-prefs.mjs +24 -6
- package/pipeline/scripts/migrate-state.mjs +94 -4
- package/pipeline/scripts/phase-banner.sh +26 -22
- package/pipeline/scripts/phase-tracker.sh +48 -10
- package/pipeline/scripts/plan-coverage-gate.mjs +8 -4
- package/pipeline/scripts/pre-commit-check.sh +7 -0
- package/pipeline/scripts/pre-push-check.sh +7 -0
- package/pipeline/scripts/purge.sh +23 -6
- package/pipeline/scripts/render-agent-log-cost.sh +10 -3
- package/pipeline/scripts/render-cost-summary.sh +9 -2
- package/pipeline/scripts/render-work-summary.sh +14 -7
- package/pipeline/scripts/review-file-filter.mjs +5 -3
- package/pipeline/scripts/review-scope.mjs +2 -1
- package/pipeline/scripts/routine-registry.mjs +2 -1
- package/pipeline/scripts/run-aggregator.mjs +26 -20
- package/pipeline/scripts/run-metrics.mjs +4 -2
- package/pipeline/scripts/runs-index.mjs +353 -0
- package/pipeline/scripts/scorecard-snapshot.mjs +178 -0
- package/pipeline/scripts/search-logs.sh +18 -0
- package/pipeline/scripts/smoke-cross-cli-behavior.sh +6 -6
- package/pipeline/scripts/smoke-schema-validation.sh +26 -7
- package/pipeline/scripts/test-gap-scan.mjs +2 -1
- package/pipeline/scripts/test-integrity-gate.mjs +2 -1
- package/pipeline/scripts/token-budget-report.mjs +13 -2
- package/pipeline/scripts/triage-memory.mjs +2 -2
- package/pipeline/scripts/update-issue-progress.sh +56 -7
- package/pipeline/scripts/usage-report.mjs +12 -1
- package/pipeline/scripts/validate-analysis-doc.mjs +75 -18
- package/pipeline/scripts/validate-code-graph.mjs +6 -3
- package/pipeline/scripts/validate-complaint-doc.mjs +2 -1
- package/pipeline/scripts/validate-diff-risk.mjs +6 -3
- package/pipeline/scripts/validate-planning.mjs +1 -1
- package/pipeline/scripts/validate-reviewer.mjs +1 -1
- package/pipeline/scripts/validate-state.mjs +45 -5
- package/pipeline/scripts/validate-test-gap.mjs +6 -3
- package/pipeline/scripts/validate-triage.mjs +6 -4
- package/pipeline/scripts/verify-citations.mjs +4 -2
- package/pipeline/scripts/verify.mjs +327 -0
- package/pipeline/scripts/worktree-finalize.sh +18 -9
- package/pipeline/scripts/write-state.mjs +154 -15
- package/pipeline/skills/.skill-manifest.json +37 -21
- package/pipeline/skills/.skills-index.json +104 -5
- package/pipeline/skills/shared/README.md +15 -6
- package/pipeline/skills/shared/core/apple-archive-compliance/SKILL.md +2 -2
- package/pipeline/skills/shared/core/google-play-compliance/SKILL.md +2 -2
- package/pipeline/skills/shared/core/multi-agent/SKILL.md +69 -71
- package/pipeline/skills/shared/core/multi-agent-autopilot/SKILL.md +3 -3
- package/pipeline/skills/shared/core/multi-agent-channels/SKILL.md +14 -14
- package/pipeline/skills/shared/core/multi-agent-diff-explain/SKILL.md +5 -5
- package/pipeline/skills/shared/core/multi-agent-graph/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-help/SKILL.md +25 -23
- package/pipeline/skills/shared/core/multi-agent-language/SKILL.md +2 -2
- package/pipeline/skills/shared/core/multi-agent-local/SKILL.md +2 -2
- package/pipeline/skills/shared/core/multi-agent-local-autopilot/SKILL.md +8 -8
- package/pipeline/skills/shared/core/multi-agent-manual-test/SKILL.md +6 -6
- package/pipeline/skills/shared/core/multi-agent-model/SKILL.md +71 -0
- package/pipeline/skills/shared/core/multi-agent-refactor/SKILL.md +3 -3
- package/pipeline/skills/shared/core/multi-agent-resume/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-resume-local/SKILL.md +7 -7
- package/pipeline/skills/shared/core/multi-agent-route-off/SKILL.md +39 -0
- package/pipeline/skills/shared/core/multi-agent-route-on/SKILL.md +76 -0
- package/pipeline/skills/shared/core/multi-agent-route-status/SKILL.md +59 -0
- package/pipeline/skills/shared/core/multi-agent-setup/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-status/SKILL.md +35 -11
- package/pipeline/skills/shared/core/multi-agent-steer/SKILL.md +2 -2
- package/pipeline/skills/shared/core/multi-agent-sync/SKILL.md +6 -5
- package/pipeline/skills/shared/external/macos-spm-app-packaging/assets/templates/package_app.sh +4 -1
- package/pipeline/skills/shared/external/macos-spm-app-packaging/assets/templates/setup_dev_signing.sh +4 -1
- package/pipeline/skills/shared/external/macos-spm-app-packaging/assets/templates/sign-and-notarize.sh +2 -1
- package/pipeline/skills/skills-index.md +13 -4
- package/pipeline/multi-agent-refs/phases/phase-1-analysis.md +0 -263
- package/pipeline/multi-agent-refs/phases/phase-2-planning.md +0 -344
- package/pipeline/multi-agent-refs/phases/phase-5-test.md +0 -182
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"properties": {
|
|
22
22
|
"schemaVersion": {
|
|
23
23
|
"type": "string",
|
|
24
|
-
"enum": ["2.0.0", "2.1.0"],
|
|
24
|
+
"enum": ["2.0.0", "2.1.0", "2.2.0"],
|
|
25
25
|
"description": "v2.0.0: single-repo only (scalar project/projectRoot/worktreePath). v2.1.0: adds optional projects[] array for multi-repo tasks - single-repo fields remain for backward compat; when projects[] has >1 entries, multi-repo mode is active."
|
|
26
26
|
},
|
|
27
27
|
"taskId": {
|
|
@@ -193,7 +193,7 @@
|
|
|
193
193
|
"maturity": {
|
|
194
194
|
"type": "object",
|
|
195
195
|
"additionalProperties": false,
|
|
196
|
-
"description": "How ready the fetched item was to be developed. Produced by lib/issue-fetcher.sh, which owns the gap codes and their localized wording. Declared as of v17.6.0 - it had been written by every issue-shaped run since long before and read by Phase 0, Phase
|
|
196
|
+
"description": "How ready the fetched item was to be developed. Produced by lib/issue-fetcher.sh, which owns the gap codes and their localized wording. Declared as of v17.6.0 - it had been written by every issue-shaped run since long before and read by Phase 0, Phase 3 and the clarifier, while this schema forbade it under additionalProperties: false.",
|
|
197
197
|
"properties": {
|
|
198
198
|
"score": {
|
|
199
199
|
"type": ["integer", "null"],
|
|
@@ -269,7 +269,7 @@
|
|
|
269
269
|
"waitingFor": {
|
|
270
270
|
"type": "string",
|
|
271
271
|
"enum": ["maturity", "user-channels-choice"],
|
|
272
|
-
"description": "The step a paused run must RE-ENTER, as opposed to the phase it should continue past. Declared as of v17.6.0: Phase
|
|
272
|
+
"description": "The step a paused run must RE-ENTER, as opposed to the phase it should continue past. Declared as of v17.6.0: Phase 5's channels pause has written it since long before, and resume/SKILL.md never read it, so that pause was resumable only in prose. resume reads this first and falls back to currentPhase + 1 when it is absent. maturity: Phase 0's maturity step, with the item re-fetched (refs/features/maturity-followup.md). user-channels-choice: Phase 5's channels menu, with the stored channelsInput."
|
|
273
273
|
},
|
|
274
274
|
"workspaceSource": {
|
|
275
275
|
"type": "string",
|
|
@@ -284,13 +284,13 @@
|
|
|
284
284
|
"currentPhase": {
|
|
285
285
|
"type": "integer",
|
|
286
286
|
"minimum": 0,
|
|
287
|
-
"maximum":
|
|
288
|
-
"description": "Last phase the orchestrator entered. Resume re-enters at currentPhase + 1."
|
|
287
|
+
"maximum": 5,
|
|
288
|
+
"description": "Last phase the orchestrator entered. Resume re-enters at currentPhase + 1. Six phases (0..5) since v19.0.0; a state written by an older version is migrated by schemas/migrations/state-2.1.0-to-2.2.0.mjs."
|
|
289
289
|
},
|
|
290
290
|
"status": {
|
|
291
291
|
"type": "string",
|
|
292
292
|
"enum": ["in_progress", "awaiting_input", "paused", "complete", "failed"],
|
|
293
|
-
"description": "Overall task status. `awaiting_input` is deliberately distinct from both `in_progress` and `paused`: the run is not broken and not resumable by a retry - it is finished with what it can do alone and is holding for a human answer, which is what Phase
|
|
293
|
+
"description": "Overall task status. `awaiting_input` is deliberately distinct from both `in_progress` and `paused`: the run is not broken and not resumable by a retry - it is finished with what it can do alone and is holding for a human answer, which is what Phase 5 does by design after the PR is open. Without a word for it, a run whose work had landed read exactly like one that crashed mid-development, and a state file in the wild had already invented `awaiting-user-test-main-checkout` to say it. `paused` stays what it was: stopped deliberately, resumable, nothing expected from anyone."
|
|
294
294
|
},
|
|
295
295
|
"startedAt": {
|
|
296
296
|
"type": "string",
|
|
@@ -307,7 +307,7 @@
|
|
|
307
307
|
"relatedIssues": {
|
|
308
308
|
"type": "array",
|
|
309
309
|
"maxItems": 20,
|
|
310
|
-
"description": "Jira issues fetched alongside the task at intake: the other sub-tasks under this issue's parent, where a board keeps the analysis and the test scope. NOT the same field as siblings[] below, which is read-only sibling REPOS. Written by the picker bridge from descriptor.relatedIssues; read by Phase 1 as ground truth and by
|
|
310
|
+
"description": "Jira issues fetched alongside the task at intake: the other sub-tasks under this issue's parent, where a board keeps the analysis and the test scope. NOT the same field as siblings[] below, which is read-only sibling REPOS. Written by the picker bridge from descriptor.relatedIssues; read by Phase 1 as ground truth and by its own parent-story scope-drift check. Durable on purpose: /multi-agent:resume rebuilds context from artefacts, never from the conversation, so intake-only enrichment would vanish on the first resume. The task's own description and maturity are still NOT persisted here, which is a known asymmetry, not an oversight.",
|
|
311
311
|
"items": {
|
|
312
312
|
"type": "object",
|
|
313
313
|
"additionalProperties": false,
|
|
@@ -342,7 +342,7 @@
|
|
|
342
342
|
"siblings": {
|
|
343
343
|
"type": "array",
|
|
344
344
|
"maxItems": 10,
|
|
345
|
-
"description": "Repos the dev-context picker offered that this run does not modify: read-only siblings, plus any extra the user selected. Persisted at Phase 0 because the phases that consume them run much later - Phase
|
|
345
|
+
"description": "Repos the dev-context picker offered that this run does not modify: read-only siblings, plus any extra the user selected. Persisted at Phase 0 because the phases that consume them run much later - Phase 3's platform-parity cross-check reads this as the fourth of its four counterpart sources (after --with, prefs.projects[<slug>].counterpartRoots[] and the primary checkout's sibling directories; see multi-agent-refs/platform-parity.md), so a picker result that is not written here is a candidate the check can never see.",
|
|
346
346
|
"items": {
|
|
347
347
|
"type": "object",
|
|
348
348
|
"additionalProperties": false,
|
|
@@ -364,7 +364,7 @@
|
|
|
364
364
|
"canPush": {
|
|
365
365
|
"type": "boolean",
|
|
366
366
|
"default": false,
|
|
367
|
-
"description": "Carried from the picker. Informational here: a sibling is read-only to Phase
|
|
367
|
+
"description": "Carried from the picker. Informational here: a sibling is read-only to Phase 3 regardless."
|
|
368
368
|
}
|
|
369
369
|
}
|
|
370
370
|
}
|
|
@@ -399,7 +399,7 @@
|
|
|
399
399
|
"appliedPhase": {
|
|
400
400
|
"type": ["integer", "null"],
|
|
401
401
|
"minimum": 0,
|
|
402
|
-
"maximum":
|
|
402
|
+
"maximum": 5,
|
|
403
403
|
"description": "The phase that consumed it."
|
|
404
404
|
}
|
|
405
405
|
}
|
|
@@ -407,7 +407,7 @@
|
|
|
407
407
|
"telemetry": {
|
|
408
408
|
"type": "object",
|
|
409
409
|
"additionalProperties": true,
|
|
410
|
-
"description": "Run telemetry. mcpCalls[] is consumed by smoke-no-mcp-in-dev-phases.sh to enforce the 'no MCP outside analysis' contract - every mcp__* invocation MUST append an entry tagged with the phase it ran in. skillCalls[] is Phase 3's self-report of which skills, plugin skills and guides it consulted; Phase
|
|
410
|
+
"description": "Run telemetry. mcpCalls[] is consumed by smoke-no-mcp-in-dev-phases.sh to enforce the 'no MCP outside analysis' contract - every mcp__* invocation MUST append an entry tagged with the phase it ran in. skillCalls[] is Phase 3's self-report of which skills, plugin skills and guides it consulted; Phase 3 Step 1.78 reads it as CORROBORATING evidence only and never computes coverage from it.",
|
|
411
411
|
"properties": {
|
|
412
412
|
"mcpCalls": {
|
|
413
413
|
"type": "array",
|
|
@@ -423,7 +423,7 @@
|
|
|
423
423
|
"phase": {
|
|
424
424
|
"type": "integer",
|
|
425
425
|
"minimum": 0,
|
|
426
|
-
"maximum":
|
|
426
|
+
"maximum": 5,
|
|
427
427
|
"description": "Pipeline phase the call ran in. Only 0 (init) and 1 (analysis) are permitted."
|
|
428
428
|
},
|
|
429
429
|
"timestamp": {
|
|
@@ -449,7 +449,7 @@
|
|
|
449
449
|
"phase": {
|
|
450
450
|
"type": "integer",
|
|
451
451
|
"minimum": 0,
|
|
452
|
-
"maximum":
|
|
452
|
+
"maximum": 5,
|
|
453
453
|
"description": "Phase the consultation happened in. Normally 3."
|
|
454
454
|
},
|
|
455
455
|
"targetFiles": {
|
|
@@ -465,7 +465,7 @@
|
|
|
465
465
|
},
|
|
466
466
|
"routedBy": {
|
|
467
467
|
"type": "string",
|
|
468
|
-
"description": "Set when a stack toolkit's own index skill chose this skill, as '<toolkit>:index@<version>'. Recorded so a finding can be traced to the index version that selected it - the skill set differs between plugin versions. Phase
|
|
468
|
+
"description": "Set when a stack toolkit's own index skill chose this skill, as '<toolkit>:index@<version>'. Recorded so a finding can be traced to the index version that selected it - the skill set differs between plugin versions. Phase 3 Step 1.78 surfaces these separately in the manifest ledger; it does NOT grant them extra trust, because the resolver stays primary either way."
|
|
469
469
|
}
|
|
470
470
|
}
|
|
471
471
|
}
|
|
@@ -479,7 +479,7 @@
|
|
|
479
479
|
"onlyDevelop": {
|
|
480
480
|
"type": "boolean",
|
|
481
481
|
"default": false,
|
|
482
|
-
"description": "Short pipeline - phases 1 and 2 are skipped. Set by the Phase 0 Step 7.5 depth picker as of v16.0.0; the key and every reader of it are unchanged. Phase
|
|
482
|
+
"description": "Short pipeline - phases 1 and 2 are skipped. Set by the Phase 0 Step 7.5 depth picker as of v16.0.0; the key and every reader of it are unchanged. Phase 3 Review still runs (v14.0.0+). Always false in an autopilot run, which never asks the depth question."
|
|
483
483
|
},
|
|
484
484
|
"localMode": {
|
|
485
485
|
"type": "boolean",
|
|
@@ -526,11 +526,11 @@
|
|
|
526
526
|
"properties": {
|
|
527
527
|
"lastAnalysisDigest": {
|
|
528
528
|
"type": ["string", "null"],
|
|
529
|
-
"description": "The evidence_digest the analysis documents were written from, persisted by Phase 1. Phase
|
|
529
|
+
"description": "The evidence_digest the analysis documents were written from, persisted by Phase 1. Phase 2 compares it against the document front-matter; absent means the freshness check is not-verifiable, never fresh."
|
|
530
530
|
},
|
|
531
531
|
"analysisBaseCommit": {
|
|
532
532
|
"type": ["string", "null"],
|
|
533
|
-
"description": "git rev-parse HEAD at analysis emit time. Phase
|
|
533
|
+
"description": "git rev-parse HEAD at analysis emit time. Phase 2 diffs it against HEAD to detect repo drift under a reused spec, which the digest alone cannot see."
|
|
534
534
|
}
|
|
535
535
|
}
|
|
536
536
|
},
|
|
@@ -553,14 +553,14 @@
|
|
|
553
553
|
"reviewBlocking": {
|
|
554
554
|
"type": "boolean",
|
|
555
555
|
"default": false,
|
|
556
|
-
"description": "Set with tier 3. Phase
|
|
556
|
+
"description": "Set with tier 3. Phase 3 holds the run at review_blocking until a human signs off on the component choice."
|
|
557
557
|
}
|
|
558
558
|
}
|
|
559
559
|
},
|
|
560
560
|
"designCheck": {
|
|
561
561
|
"type": ["object", "null"],
|
|
562
562
|
"additionalProperties": true,
|
|
563
|
-
"description": "State for a /multi-agent:design-check run. Populated in Phase 0 (mock feasibility, scenario inventory, scope), Phase
|
|
563
|
+
"description": "State for a /multi-agent:design-check run. Populated in Phase 0 (mock feasibility, scenario inventory, scope), Phase 1 (Figma variants) and Phase 2 (captures, skips, findings).",
|
|
564
564
|
"properties": {
|
|
565
565
|
"module": {
|
|
566
566
|
"type": "string",
|
|
@@ -595,7 +595,7 @@
|
|
|
595
595
|
"inventory": {
|
|
596
596
|
"type": ["object", "null"],
|
|
597
597
|
"additionalProperties": true,
|
|
598
|
-
"description": "design_scenario_inventory result, persisted verbatim. THIS is the audit's target set - Phase
|
|
598
|
+
"description": "design_scenario_inventory result, persisted verbatim. THIS is the audit's target set - Phase 2 iterates it and Phase 3 gates on it. Never re-derive it by reading the repo.",
|
|
599
599
|
"properties": {
|
|
600
600
|
"targetCount": {
|
|
601
601
|
"type": "integer"
|
|
@@ -666,7 +666,7 @@
|
|
|
666
666
|
},
|
|
667
667
|
"skipped": {
|
|
668
668
|
"type": "array",
|
|
669
|
-
"description": "Targets that could not be audited, each with a CONCRETE reason. 'Requires a scenario / prefix / launch-arg' is not a reason - that is the work Phase
|
|
669
|
+
"description": "Targets that could not be audited, each with a CONCRETE reason. 'Requires a scenario / prefix / launch-arg' is not a reason - that is the work Phase 2 exists to do. A skip without a reason fails the coverage gate.",
|
|
670
670
|
"items": {
|
|
671
671
|
"type": "object",
|
|
672
672
|
"additionalProperties": true,
|
|
@@ -743,9 +743,9 @@
|
|
|
743
743
|
},
|
|
744
744
|
"phases": {
|
|
745
745
|
"type": "object",
|
|
746
|
-
"description": "Per-phase status + outputs. Keys are phase numbers as strings (\"0\"..\"
|
|
746
|
+
"description": "Per-phase status + outputs. Keys are phase numbers as strings (\"0\"..\"5\").",
|
|
747
747
|
"patternProperties": {
|
|
748
|
-
"^[0-
|
|
748
|
+
"^[0-5]$": {
|
|
749
749
|
"type": "object",
|
|
750
750
|
"additionalProperties": false,
|
|
751
751
|
"properties": {
|
|
@@ -778,7 +778,7 @@
|
|
|
778
778
|
},
|
|
779
779
|
"subStep": {
|
|
780
780
|
"type": "string",
|
|
781
|
-
"description": "Sub-step checkpoint for long phases (
|
|
781
|
+
"description": "Sub-step checkpoint for long phases (2, 5) so resume re-does only the unfinished tail instead of the whole phase. Short token, e.g. 'red'|'green'|'build'|'pr-opened'|'confluence-synced'. See operations.md 'Sub-step checkpoints'."
|
|
782
782
|
},
|
|
783
783
|
"notes": {
|
|
784
784
|
"type": "string"
|
|
@@ -787,38 +787,38 @@
|
|
|
787
787
|
"type": "integer",
|
|
788
788
|
"minimum": 0,
|
|
789
789
|
"maximum": 2,
|
|
790
|
-
"description": "v5.3.0 Phase
|
|
790
|
+
"description": "v5.3.0 Phase 1 Plan Approval Gate - number of clarification question/answer rounds the orchestrator ran before producing the first plan. Cap 2; hitting the cap produces a 'best-effort' plan instead of asking more questions. Only emitted on a Full interactive run (a Short run has no plan, autopilot may not ask)."
|
|
791
791
|
},
|
|
792
792
|
"clarificationQuestions": {
|
|
793
793
|
"type": "array",
|
|
794
794
|
"items": {
|
|
795
795
|
"type": "string"
|
|
796
796
|
},
|
|
797
|
-
"description": "v5.3.0 Phase
|
|
797
|
+
"description": "v5.3.0 Phase 1 - ordered log of questions the orchestrator asked the user when the issue description was ambiguous (missing acceptance criteria, vague language, missing Figma/endpoint links, unclear scope vs. parent story)."
|
|
798
798
|
},
|
|
799
799
|
"clarificationAnswers": {
|
|
800
800
|
"type": "array",
|
|
801
801
|
"items": {
|
|
802
802
|
"type": "string"
|
|
803
803
|
},
|
|
804
|
-
"description": "v5.3.0 Phase
|
|
804
|
+
"description": "v5.3.0 Phase 1 - ordered log of user answers aligned with clarificationQuestions (same length)."
|
|
805
805
|
},
|
|
806
806
|
"planIterations": {
|
|
807
807
|
"type": "integer",
|
|
808
808
|
"minimum": 1,
|
|
809
|
-
"description": "v5.3.0 Phase
|
|
809
|
+
"description": "v5.3.0 Phase 1 Plan Approval Gate - how many plan revisions the user requested before approving. 1 = approved on first show; N = user sent N-1 free-text edit requests and the plan was re-rendered each time."
|
|
810
810
|
},
|
|
811
811
|
"planApprovedAt": {
|
|
812
812
|
"type": ["string", "null"],
|
|
813
813
|
"format": "date-time",
|
|
814
|
-
"description": "v5.3.0 Phase
|
|
814
|
+
"description": "v5.3.0 Phase 1 Plan Approval Gate - timestamp when the user approved the plan. Null when the gate is not applicable (Short run, or autopilot) or the task was aborted at the gate."
|
|
815
815
|
},
|
|
816
816
|
"planEditRequests": {
|
|
817
817
|
"type": "array",
|
|
818
818
|
"items": {
|
|
819
819
|
"type": "string"
|
|
820
820
|
},
|
|
821
|
-
"description": "v5.3.0 Phase
|
|
821
|
+
"description": "v5.3.0 Phase 1 - free-text edit instructions the user typed between plan renders. Preserved verbatim for audit; the planning model (Fable top tier) parses them conversationally to revise the plan."
|
|
822
822
|
}
|
|
823
823
|
}
|
|
824
824
|
}
|
|
@@ -827,7 +827,7 @@
|
|
|
827
827
|
"baseline": {
|
|
828
828
|
"type": "object",
|
|
829
829
|
"additionalProperties": true,
|
|
830
|
-
"description": "Pre-work state of the repo, captured in Phase 0. Exists so Phase
|
|
830
|
+
"description": "Pre-work state of the repo, captured in Phase 0. Exists so Phase 3 can tell an inherited failure from one this run caused.",
|
|
831
831
|
"properties": {
|
|
832
832
|
"tests": {
|
|
833
833
|
"type": "object",
|
|
@@ -844,7 +844,7 @@
|
|
|
844
844
|
"items": {
|
|
845
845
|
"type": "string"
|
|
846
846
|
},
|
|
847
|
-
"description": "Identifiers of tests already failing before this run. Empty on a red status means the output could not be parsed into names: the evidence is then the logPath alone, and Phase
|
|
847
|
+
"description": "Identifiers of tests already failing before this run. Empty on a red status means the output could not be parsed into names: the evidence is then the logPath alone, and Phase 3 reports 'inherited red, not attributable' rather than inventing a set."
|
|
848
848
|
},
|
|
849
849
|
"logPath": {
|
|
850
850
|
"type": "string",
|
|
@@ -856,7 +856,7 @@
|
|
|
856
856
|
},
|
|
857
857
|
"command": {
|
|
858
858
|
"type": "string",
|
|
859
|
-
"description": "The exact test command that produced this baseline. Phase
|
|
859
|
+
"description": "The exact test command that produced this baseline. Phase 3 compares against its own Gate 3 command and treats a mismatch as unknown."
|
|
860
860
|
}
|
|
861
861
|
}
|
|
862
862
|
}
|
|
@@ -866,7 +866,7 @@
|
|
|
866
866
|
"type": "array",
|
|
867
867
|
"items": {
|
|
868
868
|
"type": "object",
|
|
869
|
-
"description": "Per-iteration review record. It accretes fields across phases - summary counts in Phase 4, plus the merged reviewers[] and triage{} detail and validatorResult that run-metrics.mjs and Phase
|
|
869
|
+
"description": "Per-iteration review record. It accretes fields across phases - summary counts in Phase 4, plus the merged reviewers[] and triage{} detail and validatorResult that run-metrics.mjs and Phase 5 read - so extra keys are allowed.",
|
|
870
870
|
"additionalProperties": true,
|
|
871
871
|
"properties": {
|
|
872
872
|
"iteration": {
|
|
@@ -892,7 +892,7 @@
|
|
|
892
892
|
"delta": {
|
|
893
893
|
"type": "object",
|
|
894
894
|
"additionalProperties": true,
|
|
895
|
-
"description": "Written by Phase
|
|
895
|
+
"description": "Written by Phase 3 Step 3.8 from review-delta.mjs: how this round's accepted findings relate to the previous round's rework mandate. Absent on iteration 1 and on runs from before the delta existed.",
|
|
896
896
|
"properties": {
|
|
897
897
|
"previousIteration": {
|
|
898
898
|
"type": "integer",
|
|
@@ -1050,7 +1050,7 @@
|
|
|
1050
1050
|
"anonymizationMap": {
|
|
1051
1051
|
"type": "object",
|
|
1052
1052
|
"additionalProperties": true,
|
|
1053
|
-
"description": "Written by Phase
|
|
1053
|
+
"description": "Written by Phase 3 Step 3.0 from anonymize-findings.mjs --map, read by run-metrics.mjs to attribute accepted findings back to a reviewer. Declared because the phase doc names it and a consumer reads it; absent on runs from before anonymization existed, which run-metrics reports as perReviewerAttribution \"unavailable\" rather than as a zero. Never goes into a prompt: it is the mapping the anonymization exists to withhold.",
|
|
1054
1054
|
"properties": {
|
|
1055
1055
|
"seed": {
|
|
1056
1056
|
"type": "string",
|
|
@@ -1078,7 +1078,7 @@
|
|
|
1078
1078
|
"circuitBreaker": {
|
|
1079
1079
|
"type": "object",
|
|
1080
1080
|
"additionalProperties": false,
|
|
1081
|
-
"description": "Autopilot circuit-breaker record (refs/features/autopilot-circuit-breaker.md). Written only when a trigger trips: trigger 2 by Phase
|
|
1081
|
+
"description": "Autopilot circuit-breaker record (refs/features/autopilot-circuit-breaker.md). Written only when a trigger trips: trigger 2 by Phase 3 Step 3.8 (a mandate finding survived identicalFindingCycles rework cycles), trigger 3 by the Phase 3 re-entry hard-kill, trigger 6 by Phase 0 Step 3 when autopilot posted the base-branch question on the issue and must not answer it itself. /multi-agent:resume clears tripped and keeps counters.",
|
|
1082
1082
|
"required": ["tripped"],
|
|
1083
1083
|
"properties": {
|
|
1084
1084
|
"tripped": {
|
|
@@ -1099,7 +1099,7 @@
|
|
|
1099
1099
|
"phase": {
|
|
1100
1100
|
"type": "integer",
|
|
1101
1101
|
"minimum": 0,
|
|
1102
|
-
"maximum":
|
|
1102
|
+
"maximum": 5
|
|
1103
1103
|
},
|
|
1104
1104
|
"step": {
|
|
1105
1105
|
"type": "string"
|
|
@@ -1133,7 +1133,7 @@
|
|
|
1133
1133
|
"diffRisk": {
|
|
1134
1134
|
"type": "object",
|
|
1135
1135
|
"additionalProperties": true,
|
|
1136
|
-
"description": "Totals from diff-risk-score.mjs, persisted by Phase
|
|
1136
|
+
"description": "Totals from diff-risk-score.mjs, persisted by Phase 3 Step 1.75 so Phase 4 (PR risk section), Phase 5 and run-metrics.mjs read the same numbers the review scope decision used.",
|
|
1137
1137
|
"properties": {
|
|
1138
1138
|
"files": {
|
|
1139
1139
|
"type": "integer",
|
|
@@ -1295,7 +1295,7 @@
|
|
|
1295
1295
|
"description": "v2.1.0+ push-must-succeed retry counter. Increments per rebase-retry."
|
|
1296
1296
|
},
|
|
1297
1297
|
"buildStatus": {
|
|
1298
|
-
"description": "Latest Phase 3 build outcome for this repo. A string in early phases ('pending'/'green'/'passed'/'failed') or null before any attempt; once Phase 3 runs a build it becomes a {ok, attempts, lastError} object (see phase-
|
|
1298
|
+
"description": "Latest Phase 3 build outcome for this repo. A string in early phases ('pending'/'green'/'passed'/'failed') or null before any attempt; once Phase 3 runs a build it becomes a {ok, attempts, lastError} object (see phase-2-dev.md). run-metrics.mjs reads both the string and object forms.",
|
|
1299
1299
|
"anyOf": [
|
|
1300
1300
|
{
|
|
1301
1301
|
"type": "string",
|
|
@@ -1327,16 +1327,16 @@
|
|
|
1327
1327
|
"worktreeRemovedAt": {
|
|
1328
1328
|
"type": ["string", "null"],
|
|
1329
1329
|
"format": "date-time",
|
|
1330
|
-
"description": "Set when Phase
|
|
1330
|
+
"description": "Set when Phase 4 removed the worktree after opening the PR. Its presence is what tells :resume, :status and :log that a worktree-less task is finished-and-tidied rather than broken - without it a missing worktree is indistinguishable from a killed run."
|
|
1331
1331
|
},
|
|
1332
1332
|
"artifactsPath": {
|
|
1333
1333
|
"type": ["string", "null"],
|
|
1334
|
-
"description": "Directory the worktree's artefacts were salvaged into before removal (agent-state, phase-tracker, triage-output, .pipeline/, build+test logs, review diff). Phase
|
|
1334
|
+
"description": "Directory the worktree's artefacts were salvaged into before removal (agent-state, phase-tracker, triage-output, .pipeline/, build+test logs, review diff). Phase 5 and :resume read from here when worktreePath is gone."
|
|
1335
1335
|
},
|
|
1336
1336
|
"testDepth": {
|
|
1337
1337
|
"type": ["string", "null"],
|
|
1338
1338
|
"enum": ["unit", "unit+ui", "unit+mcp", null],
|
|
1339
|
-
"description": "How far the run tests, answered at intake because
|
|
1339
|
+
"description": "How far the run tests, answered at intake because the user test is absent from four of the six modes and a question asked where it cannot be reached is a question nobody answers. `unit+ui` runs the repo's own UI test and records the screen around it; `unit+mcp` drives the flow through the toolkit MCP instead. The options offered are built from evidenceCapability, never from the model's reading of the repo."
|
|
1340
1340
|
},
|
|
1341
1341
|
"testDepthSource": {
|
|
1342
1342
|
"type": ["string", "null"],
|
|
@@ -1361,7 +1361,7 @@
|
|
|
1361
1361
|
"items": {
|
|
1362
1362
|
"type": "string"
|
|
1363
1363
|
},
|
|
1364
|
-
"description": "The LANGUAGE census (ios, python, node, go, docker, monorepo), written by Phase 1 Step 2 and read by graph-build.mjs --stack, the dev-critic checklist selector and the Phase
|
|
1364
|
+
"description": "The LANGUAGE census (ios, python, node, go, docker, monorepo), written by Phase 1 Step 2 and read by graph-build.mjs --stack, the dev-critic checklist selector and the Phase 3 reviewer skill tables. Deliberately not narrowed to the stacks[] vocabulary: graph-build accepts ios|android|node|python|go and has no notion of web or backend. Phase docs have instructed this write since before the schema existed, and additionalProperties is false, so it is declared here rather than silently invalid."
|
|
1365
1365
|
},
|
|
1366
1366
|
"evidenceCapability": {
|
|
1367
1367
|
"type": ["object", "null"],
|
|
@@ -1459,7 +1459,7 @@
|
|
|
1459
1459
|
"visualEvidence": {
|
|
1460
1460
|
"type": ["object", "null"],
|
|
1461
1461
|
"additionalProperties": false,
|
|
1462
|
-
"description": "Before/after screenshots and the UI flow video for a UI change, attached to the Jira issue and rendered in the Phase
|
|
1462
|
+
"description": "Before/after screenshots and the UI flow video for a UI change, attached to the Jira issue and rendered in the Phase 5 comment and the PR body. Required decided mechanically from taskType plus the changed-file list. Contract: multi-agent-refs/features/visual-evidence.md.",
|
|
1463
1463
|
"properties": {
|
|
1464
1464
|
"required": {
|
|
1465
1465
|
"type": "boolean"
|
|
@@ -1530,21 +1530,21 @@
|
|
|
1530
1530
|
}
|
|
1531
1531
|
}
|
|
1532
1532
|
},
|
|
1533
|
-
"description": "Captured in Phase
|
|
1533
|
+
"description": "Captured in Phase 2 after the build+test gate, because the user test is dropped by every autopilot and --local entry."
|
|
1534
1534
|
},
|
|
1535
1535
|
"host": {
|
|
1536
1536
|
"type": ["string", "null"],
|
|
1537
1537
|
"enum": ["jira", "github-public", "github-private", "none", null],
|
|
1538
|
-
"description": "Where the artefacts are published, resolved in Phase
|
|
1538
|
+
"description": "Where the artefacts are published, resolved in Phase 4. `jira` attaches both stills and video. `github-public` pushes the stills to the evidence branch and embeds them in the PR body. `github-private` pushes the same stills but the PR carries a blob permalink instead of an inline image, because GitHub's image proxy cannot fetch a private repo's raw URL and an embedded one renders broken for every reader. `none` publishes nothing and records the gap. Video is Jira-only by decision: without an attachment host there is nothing a recording can be attached to."
|
|
1539
1539
|
},
|
|
1540
1540
|
"hostReason": {
|
|
1541
1541
|
"type": ["string", "null"],
|
|
1542
|
-
"description": "Why this host and not the one above it in the order. A host of `none` with no reason is the silence the Phase
|
|
1542
|
+
"description": "Why this host and not the one above it in the order. A host of `none` with no reason is the silence the Phase 4 blocker exists to catch."
|
|
1543
1543
|
},
|
|
1544
1544
|
"videoTier": {
|
|
1545
1545
|
"type": ["integer", "null"],
|
|
1546
1546
|
"enum": [1, 2, 3, null],
|
|
1547
|
-
"description": "1 = the repo's own UI test target drove the flow, 2 = MCP-driven flow, 3 = no recording. Resolved from the capability probe, then RE-CHECKED at capture time: a device booted at intake can be gone by Phase
|
|
1547
|
+
"description": "1 = the repo's own UI test target drove the flow, 2 = MCP-driven flow, 3 = no recording. Resolved from the capability probe, then RE-CHECKED at capture time: a device booted at intake can be gone by Phase 2, and a tier recorded from a stale measurement is a promise the run cannot keep."
|
|
1548
1548
|
},
|
|
1549
1549
|
"videoTierReason": {
|
|
1550
1550
|
"type": ["string", "null"],
|
|
@@ -1582,7 +1582,7 @@
|
|
|
1582
1582
|
},
|
|
1583
1583
|
"gaps": {
|
|
1584
1584
|
"type": "array",
|
|
1585
|
-
"description": "Every artefact that is required and absent, with its reason. A recorded reason satisfies the Phase
|
|
1585
|
+
"description": "Every artefact that is required and absent, with its reason. A recorded reason satisfies the Phase 4 blocker; silence does not.",
|
|
1586
1586
|
"items": {
|
|
1587
1587
|
"type": "object",
|
|
1588
1588
|
"additionalProperties": false,
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"$id": "https://github.com/mmerterden/multi-agent-pipeline/pipeline/schemas/analysis-output.schema.json",
|
|
4
4
|
"version": "1.0.0",
|
|
5
5
|
"title": "Multi-Agent Pipeline - Phase 1 analysis output",
|
|
6
|
-
"description": "Contract for the Explorer subagent's summary in Phase 1. Drives Phase 2 task decomposition and Phase
|
|
6
|
+
"description": "Contract for the Explorer subagent's summary in Phase 1. Drives Phase 2 task decomposition and Phase 3 review focus. Explorer must not mutate the codebase; output is read-only research.",
|
|
7
7
|
"type": "object",
|
|
8
8
|
"additionalProperties": false,
|
|
9
9
|
"required": ["stack", "touchedAreas", "risks", "summary"],
|
|
@@ -67,7 +67,7 @@
|
|
|
67
67
|
"summary": {
|
|
68
68
|
"type": "string",
|
|
69
69
|
"minLength": 20,
|
|
70
|
-
"description": "≤200 word plain-language summary for Phase
|
|
70
|
+
"description": "≤200 word plain-language summary for Phase 1 planning + user approval."
|
|
71
71
|
},
|
|
72
72
|
"docStatus": {
|
|
73
73
|
"type": "string",
|
|
@@ -114,7 +114,7 @@
|
|
|
114
114
|
"channels": {
|
|
115
115
|
"type": "object",
|
|
116
116
|
"additionalProperties": false,
|
|
117
|
-
"description": "Phase
|
|
117
|
+
"description": "Phase 5 pauses for channel selection in every attended mode, by design. Unattended there is nobody to ask, so the answer comes from here instead and Phase 5 completes without prompting. Without this the queue would generate its own backlog: every finished item parked waiting for a menu.",
|
|
118
118
|
"properties": {
|
|
119
119
|
"mode": {
|
|
120
120
|
"enum": ["none", "pr-body", "configured"],
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
3
|
"$id": "https://github.com/mmerterden/multi-agent-pipeline/schemas/code-graph.schema.json",
|
|
4
4
|
"title": "Code graph",
|
|
5
|
-
"description": "Deterministic, LLM-free code graph produced by graph-build.mjs and consumed by Phase 1 (Explore scope narrowing) and Phase
|
|
5
|
+
"description": "Deterministic, LLM-free code graph produced by graph-build.mjs and consumed by Phase 1 (Explore scope narrowing) and Phase 5 (knowledge capture). One file per project under ~/.claude/knowledge/<project>/code-graph.json.",
|
|
6
6
|
"type": "object",
|
|
7
7
|
"required": ["schemaVersion", "stack", "root", "generatedAt", "stats", "nodes", "edges"],
|
|
8
8
|
"additionalProperties": false,
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
3
|
"$id": "https://github.com/mmerterden/multi-agent-pipeline/pipeline/schemas/criteria-manifest.schema.json",
|
|
4
4
|
"title": "Criteria manifest",
|
|
5
|
-
"description": "What the changed code was supposed to honour, resolved deterministically by skill-conformance.mjs BEFORE any reviewer runs. Produced in Phase
|
|
5
|
+
"description": "What the changed code was supposed to honour, resolved deterministically by skill-conformance.mjs BEFORE any reviewer runs. Produced in Phase 3 Step 1.78, consumed by the reviewer prompt assembly (the ${CRITERIA} block) and by the triage merge. Written to disk so the denominator of 'was this done completely' is fixed in advance and cannot be renegotiated by a reviewer after the fact.",
|
|
6
6
|
"type": "object",
|
|
7
7
|
"additionalProperties": false,
|
|
8
8
|
"required": [
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
3
|
"$id": "https://example.com/pipeline/dev-critic-output.schema.json",
|
|
4
4
|
"title": "Dev Critic Output",
|
|
5
|
-
"description": "Schema for Phase
|
|
5
|
+
"description": "Schema for Phase 2.5 evaluator-optimizer (dev-critic) sub-agent output. Source: pipeline/agents/dev-critic.md. Pattern reference: Anthropic 'Building Effective Agents' (Dec 2024) - evaluator-optimizer.",
|
|
6
6
|
"type": "object",
|
|
7
7
|
"additionalProperties": false,
|
|
8
8
|
"required": ["pass", "iteration", "gates", "findings"],
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"$id": "https://github.com/mmerterden/multi-agent-pipeline/pipeline/schemas/diff-risk.schema.json",
|
|
4
4
|
"version": "1.1.0",
|
|
5
5
|
"title": "Multi-Agent Pipeline - Phase 4 diff risk score",
|
|
6
|
-
"description": "Output contract for diff-risk-score.mjs. Heuristic, deterministic, no LLM. Produced before Phase
|
|
6
|
+
"description": "Output contract for diff-risk-score.mjs. Heuristic, deterministic, no LLM. Produced before Phase 3 Step 2 to give reviewer prompts a priority ordering - never used as a gate. v1.1.0 adds the test_lines_removed signal (immutable-test backstop: a test file whose diff removes more lines than it adds).",
|
|
7
7
|
"type": "object",
|
|
8
8
|
"additionalProperties": false,
|
|
9
9
|
"required": ["schemaVersion", "task", "totals", "files"],
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* prefs-2.4.0-to-2.5.0.mjs - preference schema upgrade 2.4.0 -> 2.5.0
|
|
3
3
|
*
|
|
4
4
|
* v14.0.0 put Phase 4 Review into the four `--dev` mode phase sets and added the
|
|
5
|
-
* criteria-resolution stage (Phase
|
|
5
|
+
* criteria-resolution stage (Phase 3 Step 1.78). Two preference keys follow:
|
|
6
6
|
*
|
|
7
7
|
* - global.skillConformance.blockOnCoverageGap (default FALSE)
|
|
8
8
|
* Whether a declared coverage gap - a language in the diff that no rule
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* either way; this only controls whether it stops the pipeline.
|
|
14
14
|
*
|
|
15
15
|
* There is deliberately no key for the stage itself, and none for the
|
|
16
|
-
* exception-expiry check, on the same grounds as Phase
|
|
16
|
+
* exception-expiry check, on the same grounds as Phase 3 Step 1.76: a run
|
|
17
17
|
* that can switch off its own anti-reward-hacking control cannot be
|
|
18
18
|
* trusted to report a pass.
|
|
19
19
|
*
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* prefs-2.6.0-to-2.7.0.mjs - preferences migration
|
|
3
|
+
*
|
|
4
|
+
* v19.0.0 removed Lite mode from the analysis phase, so
|
|
5
|
+
* `global.analysisPhase.mode` no longer accepts `auto` or `lite`.
|
|
6
|
+
*
|
|
7
|
+
* Lite chose sections from a fixed list (1, 2, 4, 9, 13, 14, 21 plus optional
|
|
8
|
+
* 23) selected by a three-signal score, while Locked 2 chooses them from
|
|
9
|
+
* evidence. The two disagreed in both directions: a small feature with rich
|
|
10
|
+
* business rules lost Section 15 because it was not on the list, and a feature
|
|
11
|
+
* with no API contract kept Section 9 because it was. Evidence decides now.
|
|
12
|
+
*
|
|
13
|
+
* The key is kept rather than deleted. A user who never set it sees nothing;
|
|
14
|
+
* a user who did keeps a valid file instead of one the schema rejects on the
|
|
15
|
+
* next run.
|
|
16
|
+
*
|
|
17
|
+
* @param {object} data - parsed multi-agent-preferences.json
|
|
18
|
+
* @returns {object} - migrated data with schemaVersion "2.7.0"
|
|
19
|
+
*/
|
|
20
|
+
export default function migrate(data) {
|
|
21
|
+
const out = JSON.parse(JSON.stringify(data));
|
|
22
|
+
|
|
23
|
+
out.schemaVersion = "2.7.0";
|
|
24
|
+
|
|
25
|
+
const ap = out?.global?.analysisPhase;
|
|
26
|
+
if (ap && typeof ap === "object" && typeof ap.mode === "string" && ap.mode !== "full") {
|
|
27
|
+
ap.mode = "full";
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
return out;
|
|
31
|
+
}
|