mandrel 2.59.0 → 2.61.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/.agents/README.md +21 -19
- package/.agents/agents/acceptance-critic.md +24 -43
- package/.agents/agents/story-worker.md +20 -21
- package/.agents/docs/agentrc-reference.json +5 -84
- package/.agents/docs/configuration.md +48 -132
- package/.agents/docs/workflows.md +2 -2
- package/.agents/instructions.md +5 -8
- package/.agents/rules/ci-remediation.md +41 -8
- package/.agents/rules/gherkin-standards.md +4 -0
- package/.agents/schemas/acceptance-eval-verdict.schema.json +1 -1
- package/.agents/schemas/agentrc.schema.json +16 -496
- package/.agents/schemas/story-deliver-terminal.schema.json +13 -3
- package/.agents/schemas/validation-evidence.schema.json +2 -1
- package/.agents/scripts/README.md +23 -13
- package/.agents/scripts/acceptance-eval.js +35 -169
- package/.agents/scripts/agents-bootstrap-github.js +27 -129
- package/.agents/scripts/apply-quality-bootstrap.js +4 -40
- package/.agents/scripts/audit-baselines.js +6 -27
- package/.agents/scripts/audit-labels-bootstrap.js +5 -29
- package/.agents/scripts/audit-to-stories.js +91 -361
- package/.agents/scripts/boot-sweep.js +19 -72
- package/.agents/scripts/bootstrap.js +74 -395
- package/.agents/scripts/ceremony-derive.js +10 -41
- package/.agents/scripts/check-arch-cycles.js +14 -64
- package/.agents/scripts/check-baselines.js +8 -48
- package/.agents/scripts/check-context-budget.js +105 -311
- package/.agents/scripts/check-cyclomatic.js +12 -44
- package/.agents/scripts/check-dead-exports.js +13 -64
- package/.agents/scripts/check-doc-links.js +38 -186
- package/.agents/scripts/check-gherkin-corpus.js +24 -127
- package/.agents/scripts/check-test-temp-hygiene.js +28 -169
- package/.agents/scripts/coverage-capture.js +34 -98
- package/.agents/scripts/deliver-light.js +25 -171
- package/.agents/scripts/deliver-recover.js +6 -42
- package/.agents/scripts/deliver-run.js +534 -0
- package/.agents/scripts/diagnose-friction.js +24 -116
- package/.agents/scripts/drain-pending-cleanup.js +1 -1
- package/.agents/scripts/evidence-gate.js +23 -85
- package/.agents/scripts/file-ci-gap.js +57 -49
- package/.agents/scripts/generate-config-docs.js +30 -170
- package/.agents/scripts/generate-lens-checklists.js +8 -52
- package/.agents/scripts/generate-skills-index.js +14 -112
- package/.agents/scripts/generate-workflows-doc.js +10 -70
- package/.agents/scripts/git-cleanup.js +2 -34
- package/.agents/scripts/lib/Graph.js +24 -81
- package/.agents/scripts/lib/ITicketingProvider.js +47 -143
- package/.agents/scripts/lib/Logger.js +14 -76
- package/.agents/scripts/lib/audit-baselines/engine.js +11 -31
- package/.agents/scripts/lib/audit-baselines/gate-surface.js +3 -17
- package/.agents/scripts/lib/audit-baselines/headroom.js +4 -20
- package/.agents/scripts/lib/audit-baselines/hotspots.js +3 -15
- package/.agents/scripts/lib/audit-baselines/kinds.js +23 -89
- package/.agents/scripts/lib/audit-baselines/outliers.js +6 -23
- package/.agents/scripts/lib/audit-baselines/read.js +3 -16
- package/.agents/scripts/lib/audit-baselines/staleness.js +7 -26
- package/.agents/scripts/lib/audit-baselines/surface-entry.js +7 -28
- package/.agents/scripts/lib/audit-baselines/trend.js +7 -20
- package/.agents/scripts/lib/audit-baselines/weights.js +9 -37
- package/.agents/scripts/lib/audit-suite/audit-rules-reader.js +3 -18
- package/.agents/scripts/lib/audit-suite/checklist-threading.js +26 -124
- package/.agents/scripts/lib/audit-suite/dispatch-checklist.js +14 -45
- package/.agents/scripts/lib/audit-suite/findings.js +12 -52
- package/.agents/scripts/lib/audit-suite/frontmatter.js +5 -29
- package/.agents/scripts/lib/audit-suite/index.js +1 -15
- package/.agents/scripts/lib/audit-suite/lens-checklist.js +10 -45
- package/.agents/scripts/lib/audit-suite/lens-diff-floor.js +11 -76
- package/.agents/scripts/lib/audit-suite/runner.js +13 -43
- package/.agents/scripts/lib/audit-suite/selector.js +49 -349
- package/.agents/scripts/lib/audit-suite/substitutions.js +12 -40
- package/.agents/scripts/lib/audit-suite/workflow-loader.js +3 -15
- package/.agents/scripts/lib/audit-to-stories/audit-label-taxonomy.js +11 -73
- package/.agents/scripts/lib/audit-to-stories/audit-lenses.js +8 -37
- package/.agents/scripts/lib/audit-to-stories/build-story-body.js +25 -143
- package/.agents/scripts/lib/audit-to-stories/dedupe-against-github.js +14 -80
- package/.agents/scripts/lib/audit-to-stories/epic-grouping-directive.js +4 -18
- package/.agents/scripts/lib/audit-to-stories/finding-adapter.js +7 -40
- package/.agents/scripts/lib/audit-to-stories/group-findings.js +9 -39
- package/.agents/scripts/lib/audit-to-stories/issue-corpus.js +10 -66
- package/.agents/scripts/lib/audit-to-stories/issue-index.js +6 -30
- package/.agents/scripts/lib/audit-to-stories/issues-file.js +6 -36
- package/.agents/scripts/lib/audit-to-stories/ledger-commit.js +17 -69
- package/.agents/scripts/lib/audit-to-stories/ledger-pr.js +17 -85
- package/.agents/scripts/lib/audit-to-stories/ledger-record.js +10 -48
- package/.agents/scripts/lib/audit-to-stories/parse-audit-md.js +38 -146
- package/.agents/scripts/lib/audit-to-stories/seed-from-findings.js +7 -42
- package/.agents/scripts/lib/audit-to-stories/wire-dependencies.js +10 -57
- package/.agents/scripts/lib/baseline-loader.js +12 -51
- package/.agents/scripts/lib/baseline-schema-registry.js +5 -22
- package/.agents/scripts/lib/baselines/component-matcher.js +3 -12
- package/.agents/scripts/lib/baselines/components.js +10 -61
- package/.agents/scripts/lib/baselines/coverage-updater-cli.js +7 -36
- package/.agents/scripts/lib/baselines/crap-preview-incremental.js +7 -19
- package/.agents/scripts/lib/baselines/crap-preview-scan.js +19 -45
- package/.agents/scripts/lib/baselines/crap-updater-cli.js +16 -65
- package/.agents/scripts/lib/baselines/diff-scope-cli.js +5 -33
- package/.agents/scripts/lib/baselines/duplication-scanner.js +11 -60
- package/.agents/scripts/lib/baselines/env-overrides.js +12 -67
- package/.agents/scripts/lib/baselines/envelope.js +13 -129
- package/.agents/scripts/lib/baselines/exit-codes.js +6 -49
- package/.agents/scripts/lib/baselines/git-base.js +23 -142
- package/.agents/scripts/lib/baselines/kernel.js +11 -111
- package/.agents/scripts/lib/baselines/kinds/_crap-new-method-gate.js +9 -47
- package/.agents/scripts/lib/baselines/kinds/_crap-read.js +8 -51
- package/.agents/scripts/lib/baselines/kinds/_shared-metric.js +7 -62
- package/.agents/scripts/lib/baselines/kinds/bundle-size.js +8 -29
- package/.agents/scripts/lib/baselines/kinds/coverage.js +3 -15
- package/.agents/scripts/lib/baselines/kinds/crap.js +94 -415
- package/.agents/scripts/lib/baselines/kinds/duplication.js +4 -30
- package/.agents/scripts/lib/baselines/kinds/kind-factory.js +7 -53
- package/.agents/scripts/lib/baselines/kinds/maintainability.js +15 -80
- package/.agents/scripts/lib/baselines/kinds/mutation.js +12 -72
- package/.agents/scripts/lib/baselines/maintainability-baseline-io.js +4 -11
- package/.agents/scripts/lib/baselines/merge-envelopes.js +30 -146
- package/.agents/scripts/lib/baselines/path-canon.js +19 -128
- package/.agents/scripts/lib/baselines/preview-gates.js +8 -37
- package/.agents/scripts/lib/baselines/reader.js +14 -107
- package/.agents/scripts/lib/baselines/refresh-service.js +35 -252
- package/.agents/scripts/lib/baselines/scope.js +11 -135
- package/.agents/scripts/lib/baselines/writer.js +16 -149
- package/.agents/scripts/lib/bdd-runner-detect.js +18 -113
- package/.agents/scripts/lib/bdd-scenario-budget.js +9 -36
- package/.agents/scripts/lib/bdd-scenario-scanner.js +11 -73
- package/.agents/scripts/lib/bdd-step-index.js +26 -100
- package/.agents/scripts/lib/bootstrap/baseline-merge-driver.js +23 -103
- package/.agents/scripts/lib/bootstrap/branch-protection.js +2 -5
- package/.agents/scripts/lib/bootstrap/commit-push.js +12 -50
- package/.agents/scripts/lib/bootstrap/gh-preflight.js +14 -101
- package/.agents/scripts/lib/bootstrap/hitl-confirm.js +5 -30
- package/.agents/scripts/lib/bootstrap/install-ledger.js +17 -73
- package/.agents/scripts/lib/bootstrap/issue-forms-template.js +17 -121
- package/.agents/scripts/lib/bootstrap/manifest.js +15 -86
- package/.agents/scripts/lib/bootstrap/merge-methods.js +4 -33
- package/.agents/scripts/lib/bootstrap/preflight.js +12 -61
- package/.agents/scripts/lib/bootstrap/project-bootstrap.js +34 -235
- package/.agents/scripts/lib/bootstrap/prompt.js +21 -129
- package/.agents/scripts/lib/bootstrap/quality-bootstrap.js +27 -141
- package/.agents/scripts/lib/bootstrap/summary.js +1 -8
- package/.agents/scripts/lib/bootstrap/workflow-audit.js +11 -84
- package/.agents/scripts/lib/branch-name-guard.js +4 -23
- package/.agents/scripts/lib/changed-files.js +39 -121
- package/.agents/scripts/lib/checks/core-bare-clean.js +4 -24
- package/.agents/scripts/lib/checks/index.js +18 -101
- package/.agents/scripts/lib/checks/loop-health.js +11 -53
- package/.agents/scripts/lib/checks/state.js +16 -91
- package/.agents/scripts/lib/checks/story-init-not-backgrounded.js +10 -61
- package/.agents/scripts/lib/checks/subagent-agent-tool-required.js +14 -83
- package/.agents/scripts/lib/child-exec.js +39 -108
- package/.agents/scripts/lib/cli/standard-args.js +9 -116
- package/.agents/scripts/lib/cli-args.js +31 -146
- package/.agents/scripts/lib/cli-usage.js +5 -27
- package/.agents/scripts/lib/cli-utils.js +2 -12
- package/.agents/scripts/lib/close-validation/commands.js +13 -76
- package/.agents/scripts/lib/close-validation/gates.js +92 -331
- package/.agents/scripts/lib/close-validation/process.js +121 -151
- package/.agents/scripts/lib/close-validation/projections/advisories.js +5 -31
- package/.agents/scripts/lib/close-validation/projections/crap.js +19 -67
- package/.agents/scripts/lib/close-validation/projections/head-sha.js +1 -17
- package/.agents/scripts/lib/close-validation/projections/inputs.js +4 -34
- package/.agents/scripts/lib/close-validation/projections/maintainability.js +11 -58
- package/.agents/scripts/lib/close-validation/runner.js +53 -110
- package/.agents/scripts/lib/command-header.js +6 -28
- package/.agents/scripts/lib/config/acceptance-eval.js +4 -30
- package/.agents/scripts/lib/config/baselines.js +3 -14
- package/.agents/scripts/lib/config/ci.js +8 -38
- package/.agents/scripts/lib/config/commands.js +1 -15
- package/.agents/scripts/lib/config/defaults.js +4 -33
- package/.agents/scripts/lib/config/delivery-routing.js +6 -34
- package/.agents/scripts/lib/config/explain.js +10 -83
- package/.agents/scripts/lib/config/gates/coverage.schema.js +0 -12
- package/.agents/scripts/lib/config/gates/crap-incremental-coverage.schema.js +3 -31
- package/.agents/scripts/lib/config/gates/crap.schema.js +1 -34
- package/.agents/scripts/lib/config/gates/duplication.schema.js +1 -8
- package/.agents/scripts/lib/config/gates/index.js +2 -17
- package/.agents/scripts/lib/config/gates/maintainability.schema.js +1 -20
- package/.agents/scripts/lib/config/gates/mutation.schema.js +1 -7
- package/.agents/scripts/lib/config/gates/shared.js +4 -64
- package/.agents/scripts/lib/config/github.js +4 -22
- package/.agents/scripts/lib/config/limits.js +4 -57
- package/.agents/scripts/lib/config/paths.js +2 -21
- package/.agents/scripts/lib/config/qa.js +4 -38
- package/.agents/scripts/lib/config/quality.js +76 -432
- package/.agents/scripts/lib/config/runners.js +12 -56
- package/.agents/scripts/lib/config/runtime.js +13 -57
- package/.agents/scripts/lib/config/shared.js +2 -16
- package/.agents/scripts/lib/config/sync-agentrc.js +9 -50
- package/.agents/scripts/lib/config/temp-paths.js +40 -280
- package/.agents/scripts/lib/config/validate-orchestration.js +5 -17
- package/.agents/scripts/lib/config/worktree-isolation.js +9 -28
- package/.agents/scripts/lib/config-resolver.js +11 -52
- package/.agents/scripts/lib/config-schema-shared.js +1 -4
- package/.agents/scripts/lib/config-settings-schema-delivery.js +16 -291
- package/.agents/scripts/lib/config-settings-schema-quality.js +7 -219
- package/.agents/scripts/lib/config-settings-schema.js +37 -274
- package/.agents/scripts/lib/coverage-baseline.js +20 -110
- package/.agents/scripts/lib/coverage-capture-fullscope.js +18 -35
- package/.agents/scripts/lib/coverage-capture-incremental.js +15 -45
- package/.agents/scripts/lib/coverage-capture-usage.js +8 -25
- package/.agents/scripts/lib/coverage-capture.js +99 -224
- package/.agents/scripts/lib/coverage-utils.js +14 -79
- package/.agents/scripts/lib/cpu-pool.js +17 -123
- package/.agents/scripts/lib/crap-baseline-join.js +16 -88
- package/.agents/scripts/lib/crap-coordinates.js +6 -25
- package/.agents/scripts/lib/crap-engine.js +40 -153
- package/.agents/scripts/lib/crap-method-identity.js +16 -78
- package/.agents/scripts/lib/crap-utils.js +31 -155
- package/.agents/scripts/lib/cyclomatic-ceiling.js +14 -87
- package/.agents/scripts/lib/cyclomatic-scope.js +10 -50
- package/.agents/scripts/lib/dead-exports-knip.js +18 -56
- package/.agents/scripts/lib/dead-exports-mode.js +5 -24
- package/.agents/scripts/lib/degraded-mode.js +3 -26
- package/.agents/scripts/lib/dependency-parser.js +8 -40
- package/.agents/scripts/lib/dependency-version.js +13 -35
- package/.agents/scripts/lib/detect-package-manager.js +6 -36
- package/.agents/scripts/lib/doc-tiers.js +22 -124
- package/.agents/scripts/lib/duplicate-search.js +8 -72
- package/.agents/scripts/lib/env-loader.js +5 -27
- package/.agents/scripts/lib/error-redactor.js +6 -31
- package/.agents/scripts/lib/errors/index.js +2 -22
- package/.agents/scripts/lib/escomplex-ast-compat.js +22 -163
- package/.agents/scripts/lib/escomplex-kernel.js +21 -123
- package/.agents/scripts/lib/feedback-loop/graduator-core.js +94 -419
- package/.agents/scripts/lib/feedback-loop/prior-feedback-fetcher.js +20 -98
- package/.agents/scripts/lib/feedback-loop/retro-proposals-graduator.js +27 -149
- package/.agents/scripts/lib/findings/audit-ledger.js +23 -97
- package/.agents/scripts/lib/findings/classify-finding.js +14 -69
- package/.agents/scripts/lib/findings/promote-finding.js +14 -112
- package/.agents/scripts/lib/findings/provenance-field.js +11 -52
- package/.agents/scripts/lib/findings/route-finding.js +37 -255
- package/.agents/scripts/lib/findings/semantic-issue-search.js +14 -59
- package/.agents/scripts/lib/findings/severity.js +18 -104
- package/.agents/scripts/lib/format-generated-json.js +12 -44
- package/.agents/scripts/lib/full-suite-lock.js +160 -429
- package/.agents/scripts/lib/full-suite-queue.js +213 -0
- package/.agents/scripts/lib/gates/baseline-store.js +5 -9
- package/.agents/scripts/lib/gates/friction.js +1 -3
- package/.agents/scripts/lib/generated/agentrc-validator.js +2 -2
- package/.agents/scripts/lib/gh-exec.js +123 -191
- package/.agents/scripts/lib/git/cached-fetch.js +9 -52
- package/.agents/scripts/lib/git/sync-from-base.js +15 -107
- package/.agents/scripts/lib/git-branch-cleanup.js +14 -61
- package/.agents/scripts/lib/git-branch-lifecycle.js +16 -87
- package/.agents/scripts/lib/git-utils.js +37 -161
- package/.agents/scripts/lib/github/framework-repo.js +8 -71
- package/.agents/scripts/lib/github-url.js +2 -17
- package/.agents/scripts/lib/import-graph.js +11 -38
- package/.agents/scripts/lib/install-cmd-parser.js +4 -13
- package/.agents/scripts/lib/json-utils.js +3 -18
- package/.agents/scripts/lib/label-constants.js +16 -111
- package/.agents/scripts/lib/label-taxonomy.js +4 -30
- package/.agents/scripts/lib/maintainability-engine.js +12 -80
- package/.agents/scripts/lib/maintainability-unscorable.js +5 -25
- package/.agents/scripts/lib/maintainability-utils.js +16 -92
- package/.agents/scripts/lib/mandrel-catalog.js +12 -70
- package/.agents/scripts/lib/notifications/notifier.js +13 -38
- package/.agents/scripts/lib/npm-scripts.js +4 -23
- package/.agents/scripts/lib/observability/metrics-ledger.js +16 -76
- package/.agents/scripts/lib/observability/runtime-friction.js +44 -286
- package/.agents/scripts/lib/observability/signal-validator.js +5 -37
- package/.agents/scripts/lib/observability/signals-writer.js +11 -121
- package/.agents/scripts/lib/observability/source-classifier.js +22 -203
- package/.agents/scripts/lib/observability/terse-result.js +14 -47
- package/.agents/scripts/lib/onboard/init-tail.js +13 -74
- package/.agents/scripts/lib/onboard/scaffold-docs.js +11 -34
- package/.agents/scripts/lib/orchestration/acceptance-eval-decision.js +25 -139
- package/.agents/scripts/lib/orchestration/auto-merge-cwd.js +11 -66
- package/.agents/scripts/lib/orchestration/behind-recovery.js +10 -55
- package/.agents/scripts/lib/orchestration/ceremony-routing.js +28 -156
- package/.agents/scripts/lib/orchestration/change-set.js +7 -36
- package/.agents/scripts/lib/orchestration/check-baselines/phases/compare.js +9 -46
- package/.agents/scripts/lib/orchestration/check-baselines/phases/evaluate.js +11 -44
- package/.agents/scripts/lib/orchestration/check-baselines/phases/floors.js +5 -24
- package/.agents/scripts/lib/orchestration/check-baselines/phases/friction.js +3 -12
- package/.agents/scripts/lib/orchestration/check-baselines/phases/parse-args.js +5 -38
- package/.agents/scripts/lib/orchestration/check-baselines/phases/pipeline.js +3 -8
- package/.agents/scripts/lib/orchestration/check-baselines/phases/refresh-ack.js +28 -136
- package/.agents/scripts/lib/orchestration/check-baselines/phases/report.js +3 -13
- package/.agents/scripts/lib/orchestration/check-state.js +92 -0
- package/.agents/scripts/lib/orchestration/ci-gap-intake.js +37 -144
- package/.agents/scripts/lib/orchestration/ci-rerun-guard.js +121 -157
- package/.agents/scripts/lib/orchestration/code-review.js +24 -128
- package/.agents/scripts/lib/orchestration/column-sync.js +23 -111
- package/.agents/scripts/lib/orchestration/complexity-gate.js +118 -462
- package/.agents/scripts/lib/orchestration/deliver-recover.js +36 -168
- package/.agents/scripts/lib/orchestration/dependency-analyzer.js +4 -35
- package/.agents/scripts/lib/orchestration/dependency-candidates.js +9 -41
- package/.agents/scripts/lib/orchestration/diff-magnitude.js +25 -115
- package/.agents/scripts/lib/orchestration/doc-reader.js +2 -6
- package/.agents/scripts/lib/orchestration/docs-digest.js +13 -51
- package/.agents/scripts/lib/orchestration/epic-candidates.js +13 -53
- package/.agents/scripts/lib/orchestration/epic-checklist.js +9 -33
- package/.agents/scripts/lib/orchestration/epic-container.js +41 -167
- package/.agents/scripts/lib/orchestration/epic-expansion.js +10 -40
- package/.agents/scripts/lib/orchestration/epic-rollup.js +55 -207
- package/.agents/scripts/lib/orchestration/file-assumption-enum.js +2 -22
- package/.agents/scripts/lib/orchestration/file-assumptions.js +45 -253
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/branches-detect.js +9 -46
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/branches-reap.js +7 -57
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/branches.js +21 -126
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/cli.js +2 -6
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/fast-forward.js +1 -4
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/filters.js +1 -5
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/git-probes-ff.js +9 -34
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/git-probes.js +41 -190
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/merged-tip.js +9 -45
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/parse-args.js +1 -4
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/phase-drivers.js +19 -85
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/prompts.js +3 -17
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/prune.js +1 -5
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/render.js +16 -100
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/stashes.js +1 -4
- package/.agents/scripts/lib/orchestration/lease-guard-shared.js +16 -67
- package/.agents/scripts/lib/orchestration/lifecycle/emit-ledger-event.js +9 -33
- package/.agents/scripts/lib/orchestration/lifecycle/emit-merge-flip-failed.js +8 -29
- package/.agents/scripts/lib/orchestration/lifecycle/emit-merge-unlanded.js +15 -68
- package/.agents/scripts/lib/orchestration/light-backstop.js +11 -49
- package/.agents/scripts/lib/orchestration/light-escalation.js +21 -89
- package/.agents/scripts/lib/orchestration/light-suitability.js +37 -307
- package/.agents/scripts/lib/orchestration/merge-block-class.js +39 -216
- package/.agents/scripts/lib/orchestration/merge-poll.js +104 -377
- package/.agents/scripts/lib/orchestration/pinned-identifier-lint.js +17 -57
- package/.agents/scripts/lib/orchestration/plan-context.js +55 -318
- package/.agents/scripts/lib/orchestration/plan-critic-conditions.js +22 -79
- package/.agents/scripts/lib/orchestration/plan-critics-evaluate.js +5 -31
- package/.agents/scripts/lib/orchestration/plan-metrics.js +29 -108
- package/.agents/scripts/lib/orchestration/plan-navigation.js +8 -27
- package/.agents/scripts/lib/orchestration/plan-persist/acceptance-handle-repair.js +12 -49
- package/.agents/scripts/lib/orchestration/plan-persist/audit-provenance.js +18 -73
- package/.agents/scripts/lib/orchestration/plan-persist/changes-repair.js +16 -78
- package/.agents/scripts/lib/orchestration/plan-persist/cross-plan-links.js +6 -30
- package/.agents/scripts/lib/orchestration/plan-persist/epic-adoption.js +14 -65
- package/.agents/scripts/lib/orchestration/plan-persist/epic-ops.js +21 -76
- package/.agents/scripts/lib/orchestration/plan-persist/external-deps.js +6 -43
- package/.agents/scripts/lib/orchestration/plan-persist/persist-helpers.js +14 -68
- package/.agents/scripts/lib/orchestration/plan-persist/plan-context-source.js +9 -41
- package/.agents/scripts/lib/orchestration/plan-persist/run-plan-persist.js +71 -289
- package/.agents/scripts/lib/orchestration/plan-persist/soft-findings.js +2 -12
- package/.agents/scripts/lib/orchestration/plan-persist/story-ops.js +96 -362
- package/.agents/scripts/lib/orchestration/plan-persist/summary.js +9 -39
- package/.agents/scripts/lib/orchestration/plan-persist/supersede-ops.js +60 -186
- package/.agents/scripts/lib/orchestration/plan-persist/wave-collision-gate.js +9 -49
- package/.agents/scripts/lib/orchestration/plan-persist/wave-serialisation.js +7 -28
- package/.agents/scripts/lib/orchestration/plan-reachability.js +13 -42
- package/.agents/scripts/lib/orchestration/plan-run-labels/reap.js +16 -91
- package/.agents/scripts/lib/orchestration/plan-runner/worktree-sweep.js +16 -54
- package/.agents/scripts/lib/orchestration/plan-text-hygiene.js +10 -52
- package/.agents/scripts/lib/orchestration/planning/authoring-context.js +14 -109
- package/.agents/scripts/lib/orchestration/planning/memory-pool-advisory.js +11 -83
- package/.agents/scripts/lib/orchestration/pr-watch.js +48 -306
- package/.agents/scripts/lib/orchestration/project-meta-cache.js +15 -80
- package/.agents/scripts/lib/orchestration/project-meta-resolver.js +10 -51
- package/.agents/scripts/lib/orchestration/reassert-status-column.js +12 -76
- package/.agents/scripts/lib/orchestration/remote-verifier.js +12 -36
- package/.agents/scripts/lib/orchestration/resolve-stories.js +33 -164
- package/.agents/scripts/lib/orchestration/retro-proposals.js +66 -361
- package/.agents/scripts/lib/orchestration/review-base-ref.js +9 -43
- package/.agents/scripts/lib/orchestration/review-depth.js +12 -91
- package/.agents/scripts/lib/orchestration/review-providers/codex.js +10 -111
- package/.agents/scripts/lib/orchestration/review-providers/degraded-gates.js +13 -71
- package/.agents/scripts/lib/orchestration/review-providers/findings-renderer.js +7 -51
- package/.agents/scripts/lib/orchestration/review-providers/mi-exemptions.js +8 -53
- package/.agents/scripts/lib/orchestration/review-providers/native.js +30 -214
- package/.agents/scripts/lib/orchestration/review-providers/parse-findings.js +7 -52
- package/.agents/scripts/lib/orchestration/review-providers/review-depth.js +4 -33
- package/.agents/scripts/lib/orchestration/review-providers/review-provider-factory.js +11 -71
- package/.agents/scripts/lib/orchestration/review-providers/scoped-lint.js +19 -131
- package/.agents/scripts/lib/orchestration/review-providers/security-review.js +6 -89
- package/.agents/scripts/lib/orchestration/review-providers/types.js +26 -56
- package/.agents/scripts/lib/orchestration/review-providers/ultrareview.js +3 -46
- package/.agents/scripts/lib/orchestration/run-epilogue.js +245 -326
- package/.agents/scripts/lib/orchestration/run-scoped-config.js +55 -159
- package/.agents/scripts/lib/orchestration/single-story-close/close-note.js +7 -34
- package/.agents/scripts/lib/orchestration/single-story-close/failed-terminal.js +16 -89
- package/.agents/scripts/lib/orchestration/single-story-close/gate-log.js +18 -109
- package/.agents/scripts/lib/orchestration/single-story-close/phases/auto-merge.js +83 -239
- package/.agents/scripts/lib/orchestration/single-story-close/phases/base-sync.js +20 -82
- package/.agents/scripts/lib/orchestration/single-story-close/phases/close-validation.js +103 -97
- package/.agents/scripts/lib/orchestration/single-story-close/phases/code-review.js +8 -64
- package/.agents/scripts/lib/orchestration/single-story-close/phases/confirm-merge.js +136 -486
- package/.agents/scripts/lib/orchestration/single-story-close/phases/conventional-subject.js +30 -134
- package/.agents/scripts/lib/orchestration/single-story-close/phases/graphql-preflight.js +96 -0
- package/.agents/scripts/lib/orchestration/single-story-close/phases/lock-wait-pending.js +49 -0
- package/.agents/scripts/lib/orchestration/single-story-close/phases/normalize-pr-title.js +13 -86
- package/.agents/scripts/lib/orchestration/single-story-close/phases/options.js +20 -95
- package/.agents/scripts/lib/orchestration/single-story-close/phases/post-land.js +46 -203
- package/.agents/scripts/lib/orchestration/single-story-close/phases/pre-gate-steps.js +8 -50
- package/.agents/scripts/lib/orchestration/single-story-close/phases/pull-request.js +12 -83
- package/.agents/scripts/lib/orchestration/single-story-close/phases/push.js +6 -39
- package/.agents/scripts/lib/orchestration/single-story-close/phases/review-block.js +1 -6
- package/.agents/scripts/lib/orchestration/single-story-close/phases/review-outcome.js +4 -28
- package/.agents/scripts/lib/orchestration/single-story-close/phases/review-override.js +6 -51
- package/.agents/scripts/lib/orchestration/single-story-close/phases/worktree-reap.js +6 -34
- package/.agents/scripts/lib/orchestration/single-story-close/phases/wrong-tree-guard.js +23 -121
- package/.agents/scripts/lib/orchestration/single-story-close/runner.js +180 -273
- package/.agents/scripts/lib/orchestration/single-story-lease-guard.js +15 -69
- package/.agents/scripts/lib/orchestration/story-body-gate.js +4 -23
- package/.agents/scripts/lib/orchestration/story-close/baseline-upward-writeback.js +50 -179
- package/.agents/scripts/lib/orchestration/story-close/context-budget-writeback.js +11 -41
- package/.agents/scripts/lib/orchestration/story-close/format-autofix.js +23 -311
- package/.agents/scripts/lib/orchestration/story-close/phases/local-lens-review.js +22 -147
- package/.agents/scripts/lib/orchestration/story-close/phases/review-core.js +16 -67
- package/.agents/scripts/lib/orchestration/story-deliver-terminal-schema.js +12 -68
- package/.agents/scripts/lib/orchestration/story-deliver-terminal.js +42 -200
- package/.agents/scripts/lib/orchestration/story-follow-ups.js +167 -252
- package/.agents/scripts/lib/orchestration/story-init-envelope.js +52 -0
- package/.agents/scripts/lib/orchestration/story-init-remote.js +2 -6
- package/.agents/scripts/lib/orchestration/story-reachability.js +3 -23
- package/.agents/scripts/lib/orchestration/task-body-validator.js +12 -135
- package/.agents/scripts/lib/orchestration/ticket-lease.js +28 -131
- package/.agents/scripts/lib/orchestration/ticket-validator-conflicts.js +15 -149
- package/.agents/scripts/lib/orchestration/ticket-validator-sizing.js +5 -33
- package/.agents/scripts/lib/orchestration/ticket-validator.js +63 -344
- package/.agents/scripts/lib/orchestration/ticketing/bulk.js +51 -244
- package/.agents/scripts/lib/orchestration/ticketing/reads.js +39 -261
- package/.agents/scripts/lib/orchestration/ticketing/state.js +14 -68
- package/.agents/scripts/lib/orchestration/ticketing/transition.js +46 -263
- package/.agents/scripts/lib/orchestration/ticketing.js +2 -26
- package/.agents/scripts/lib/orchestration/verify-credit.js +18 -79
- package/.agents/scripts/lib/orchestration/worktree-dirty.js +5 -30
- package/.agents/scripts/lib/path-security.js +3 -6
- package/.agents/scripts/lib/plan-phase-cleanup.js +9 -49
- package/.agents/scripts/lib/preflight-runner.js +13 -69
- package/.agents/scripts/lib/process-group.js +143 -0
- package/.agents/scripts/lib/project-root.js +2 -8
- package/.agents/scripts/lib/provider-factory.js +2 -25
- package/.agents/scripts/lib/qa/console-allowlist.js +10 -59
- package/.agents/scripts/lib/qa/qa-session.js +15 -69
- package/.agents/scripts/lib/qa/redact-evidence.js +18 -129
- package/.agents/scripts/lib/qa/resolve-qa-contract.js +26 -135
- package/.agents/scripts/lib/qa/resolve-selection.js +16 -84
- package/.agents/scripts/lib/reserved-test-ids.js +9 -47
- package/.agents/scripts/lib/runtime-deps/dep-resolution.js +13 -53
- package/.agents/scripts/lib/runtime-deps/ensure-installed.js +10 -44
- package/.agents/scripts/lib/runtime-deps/manifest.js +10 -30
- package/.agents/scripts/lib/runtime-deps/parser-major.js +15 -51
- package/.agents/scripts/lib/runtime-deps/preflight.js +4 -22
- package/.agents/scripts/lib/runtime-deps/scan-imports.js +11 -55
- package/.agents/scripts/lib/signals/detectors/common.js +12 -38
- package/.agents/scripts/lib/signals/index.js +2 -19
- package/.agents/scripts/lib/signals/schema.js +14 -109
- package/.agents/scripts/lib/signals/write.js +2 -11
- package/.agents/scripts/lib/single-story/confirm-merge.js +31 -72
- package/.agents/scripts/lib/single-story/story-merged-notify.js +8 -49
- package/.agents/scripts/lib/single-story-sweep/protection-ctx.js +4 -26
- package/.agents/scripts/lib/single-story-sweep/protection.js +13 -100
- package/.agents/scripts/lib/single-story-sweep/sweep-lock.js +60 -258
- package/.agents/scripts/lib/single-story-sweep.js +14 -97
- package/.agents/scripts/lib/skills/parse-skill.js +13 -59
- package/.agents/scripts/lib/skills/skills-index.js +8 -29
- package/.agents/scripts/lib/skills/walk-skill-files.js +17 -78
- package/.agents/scripts/lib/source-extensions.js +11 -42
- package/.agents/scripts/lib/source-text/strip-js-comments.js +8 -41
- package/.agents/scripts/lib/stdio-flush.js +9 -36
- package/.agents/scripts/lib/story-adjacency.js +8 -40
- package/.agents/scripts/lib/story-body/body-format-lints.js +51 -66
- package/.agents/scripts/lib/story-body/footer-block.js +11 -44
- package/.agents/scripts/lib/story-body/story-body.js +123 -344
- package/.agents/scripts/lib/temp-retention.js +42 -143
- package/.agents/scripts/lib/templates/decomposer-prompts.js +18 -80
- package/.agents/scripts/lib/test-env.js +12 -65
- package/.agents/scripts/lib/test-run-credit.js +10 -65
- package/.agents/scripts/lib/test-runner-contract.js +19 -74
- package/.agents/scripts/lib/test-temp.js +38 -184
- package/.agents/scripts/lib/test-tiers.js +12 -96
- package/.agents/scripts/lib/ticket-body-sections.js +21 -96
- package/.agents/scripts/lib/transpile.js +15 -74
- package/.agents/scripts/lib/util/concurrent-map.js +6 -25
- package/.agents/scripts/lib/util/parse-id-list.js +8 -34
- package/.agents/scripts/lib/util/poll-loop.js +8 -28
- package/.agents/scripts/lib/util/with-timeout.js +2 -11
- package/.agents/scripts/lib/validation-evidence.js +21 -96
- package/.agents/scripts/lib/wave-runner/footprint.js +17 -70
- package/.agents/scripts/lib/wave-runner/live-probe.js +67 -209
- package/.agents/scripts/lib/wave-runner/ready-set.js +72 -301
- package/.agents/scripts/lib/workers/crap-worker.js +11 -64
- package/.agents/scripts/lib/workers/maintainability-report-worker.js +8 -45
- package/.agents/scripts/lib/workers/maintainability-worker.js +5 -21
- package/.agents/scripts/lib/workers/serve-worker-messages.js +2 -18
- package/.agents/scripts/lib/workflow-closure.js +22 -105
- package/.agents/scripts/lib/workspace-provisioner.js +16 -54
- package/.agents/scripts/lib/worktree/git-hooks.js +15 -60
- package/.agents/scripts/lib/worktree/lifecycle/force-drain.js +20 -60
- package/.agents/scripts/lib/worktree/lifecycle/merge-reachability.js +10 -62
- package/.agents/scripts/lib/worktree/lifecycle/pending-cleanup.js +22 -86
- package/.agents/scripts/lib/worktree/lifecycle/reap.js +24 -126
- package/.agents/scripts/lib/worktree/lifecycle-manager.js +2 -20
- package/.agents/scripts/lib/worktree/node-modules-strategy.js +46 -180
- package/.agents/scripts/lib/worktree-manager.js +15 -40
- package/.agents/scripts/lint-issue-body.js +12 -68
- package/.agents/scripts/mandrel-update-preflight.js +10 -70
- package/.agents/scripts/merge-baseline.js +30 -105
- package/.agents/scripts/nav-registry-diff.js +22 -108
- package/.agents/scripts/notify.js +12 -69
- package/.agents/scripts/plan-context.js +97 -92
- package/.agents/scripts/plan-critics.js +12 -66
- package/.agents/scripts/plan-persist.js +71 -137
- package/.agents/scripts/plan-run-epilogue.js +20 -43
- package/.agents/scripts/pr-watch-with-update.js +79 -263
- package/.agents/scripts/providers/github/auth.js +3 -8
- package/.agents/scripts/providers/github/blocked-by-add.js +14 -61
- package/.agents/scripts/providers/github/board-add.js +5 -21
- package/.agents/scripts/providers/github/branch-protection.js +11 -43
- package/.agents/scripts/providers/github/cache.js +2 -14
- package/.agents/scripts/providers/github/comments.js +7 -40
- package/.agents/scripts/providers/github/compose.js +3 -19
- package/.agents/scripts/providers/github/errors.js +22 -125
- package/.agents/scripts/providers/github/issues.js +31 -123
- package/.agents/scripts/providers/github/labels.js +24 -124
- package/.agents/scripts/providers/github/mappers.js +5 -27
- package/.agents/scripts/providers/github/merge-methods.js +3 -22
- package/.agents/scripts/providers/github/project-board.js +2 -17
- package/.agents/scripts/providers/github/projects-v2-graphql.js +3 -6
- package/.agents/scripts/providers/github/request-helpers.js +5 -32
- package/.agents/scripts/providers/github/search-budget.js +9 -39
- package/.agents/scripts/providers/github/search-query.js +5 -26
- package/.agents/scripts/providers/github/sub-issue-add.js +15 -65
- package/.agents/scripts/providers/github/sub-issues.js +7 -36
- package/.agents/scripts/providers/github/tickets.js +32 -134
- package/.agents/scripts/providers/github.js +18 -59
- package/.agents/scripts/prune-plan-run-labels.js +12 -46
- package/.agents/scripts/quality-preview.js +35 -220
- package/.agents/scripts/resolve-doc-tiers.js +3 -26
- package/.agents/scripts/resolve-stories.js +16 -67
- package/.agents/scripts/resync-status-column.js +6 -25
- package/.agents/scripts/run-tests.js +29 -104
- package/.agents/scripts/single-story-close.js +23 -135
- package/.agents/scripts/single-story-confirm-merge.js +32 -139
- package/.agents/scripts/single-story-init.js +47 -259
- package/.agents/scripts/stories-wave-tick.js +179 -415
- package/.agents/scripts/sync-agentrc.js +3 -21
- package/.agents/scripts/sync-claude-agents.js +9 -55
- package/.agents/scripts/sync-claude-commands.js +20 -110
- package/.agents/scripts/test-wrapper.js +6 -43
- package/.agents/scripts/update-coverage-baseline.js +5 -22
- package/.agents/scripts/update-crap-baseline.js +7 -30
- package/.agents/scripts/update-duplication-baseline.js +16 -92
- package/.agents/scripts/update-maintainability-baseline.js +8 -62
- package/.agents/scripts/update-ticket-state.js +1 -7
- package/.agents/scripts/validate-skills.js +6 -26
- package/.agents/skills/core/gates-and-baselines/reference.md +0 -1
- package/.agents/skills/skills.index.json +2 -2
- package/.agents/skills/stack/qa/playwright/SKILL.md +26 -0
- package/.agents/templates/agent-protocol.md +2 -2
- package/.agents/templates/docs/audit-sweep-runbook.md +3 -4
- package/.agents/workflows/audit-accessibility.md +4 -7
- package/.agents/workflows/audit-adrs.md +3 -6
- package/.agents/workflows/audit-architecture.md +3 -11
- package/.agents/workflows/audit-baselines.md +6 -9
- package/.agents/workflows/audit-clean-code.md +8 -12
- package/.agents/workflows/audit-data-model.md +3 -7
- package/.agents/workflows/audit-dependencies.md +4 -7
- package/.agents/workflows/audit-devops.md +4 -8
- package/.agents/workflows/audit-documentation.md +1 -4
- package/.agents/workflows/audit-mobile.md +4 -7
- package/.agents/workflows/audit-navigability.md +3 -6
- package/.agents/workflows/audit-performance.md +2 -4
- package/.agents/workflows/audit-privacy.md +4 -7
- package/.agents/workflows/audit-quality.md +4 -7
- package/.agents/workflows/audit-security.md +4 -7
- package/.agents/workflows/audit-seo.md +4 -7
- package/.agents/workflows/audit-sre.md +4 -7
- package/.agents/workflows/audit-to-stories.md +17 -30
- package/.agents/workflows/audit-ux-ui.md +4 -7
- package/.agents/workflows/helpers/acceptance-self-eval.md +84 -157
- package/.agents/workflows/helpers/audit-lens-core.md +1 -1
- package/.agents/workflows/helpers/code-quality-guardrails.md +12 -15
- package/.agents/workflows/helpers/code-review.md +4 -2
- package/.agents/workflows/helpers/deliver-digest.md +37 -28
- package/.agents/workflows/helpers/deliver-light.md +92 -101
- package/.agents/workflows/helpers/deliver-reference.md +162 -220
- package/.agents/workflows/helpers/deliver-story-reference.md +197 -607
- package/.agents/workflows/helpers/deliver-story.md +17 -18
- package/.agents/workflows/helpers/plan-reference.md +125 -167
- package/.agents/workflows/helpers/qa-core.md +12 -0
- package/.agents/workflows/mandrel-deliver.md +47 -31
- package/.agents/workflows/mandrel-plan.md +22 -21
- package/.agents/workflows/mandrel-update.md +36 -21
- package/.agents/workflows/memory-consolidate.md +1 -1
- package/.agents/workflows/qa-assist.md +27 -71
- package/.agents/workflows/qa-explore.md +19 -59
- package/.agents/workflows/qa-run.md +11 -33
- package/README.md +1 -1
- package/bin/mandrel.js +5 -46
- package/bin/postinstall.js +18 -107
- package/docs/CHANGELOG.md +60 -0
- package/lib/cli/doctor.js +11 -71
- package/lib/cli/init.js +26 -165
- package/lib/cli/migrate.js +5 -64
- package/lib/cli/registry.js +84 -467
- package/lib/cli/sync-agents.js +4 -64
- package/lib/cli/sync-commands.js +11 -64
- package/lib/cli/sync.js +34 -213
- package/lib/cli/uninstall.js +40 -219
- package/lib/cli/update.js +326 -523
- package/lib/cli/version-check.js +8 -72
- package/lib/cli/version-helpers.js +14 -87
- package/lib/migrations/helpers/retire-agentrc-key.js +11 -52
- package/lib/migrations/index.js +17 -92
- package/lib/migrations/steps/2.1.0-retire-mi-drop-knobs.js +2 -15
- package/lib/migrations/steps/2.1.0-retire-verify-concurrency-cap.js +1 -13
- package/lib/migrations/steps/2.11.0-retire-max-seed-words.js +2 -15
- package/lib/migrations/steps/2.2.0-retire-epic-ac-tags.js +9 -38
- package/lib/migrations/steps/2.20.0-retire-codebase-snapshot.js +1 -13
- package/lib/migrations/steps/2.32.0-retire-lint-baseline-command.js +2 -27
- package/lib/migrations/steps/2.57.0-retire-delivery-limit-knobs.js +2 -23
- package/lib/migrations/steps/2.57.0-retire-planning-limit-knobs.js +2 -27
- package/lib/migrations/steps/2.60.0-retire-audit-results-autofile.js +21 -0
- package/lib/migrations/steps/strip-removed-agentrc-keys.js +333 -0
- package/package.json +17 -14
- package/.agents/docs/SDLC.md +0 -590
- package/.agents/docs/quality-gates.md +0 -1179
- package/.agents/rules/known-tooling-behavior.md +0 -150
- package/.agents/rules/orchestration-error-handling.md +0 -61
- package/.agents/rules/test-seams.md +0 -59
- package/.agents/schemas/baselines/lighthouse.schema.json +0 -59
- package/.agents/schemas/baselines/lint.schema.json +0 -47
- package/.agents/schemas/model-attribution.schema.json +0 -53
- package/.agents/scripts/check-action-pinning.js +0 -260
- package/.agents/scripts/check-audit-attribution.js +0 -302
- package/.agents/scripts/check-baseline-drift.js +0 -211
- package/.agents/scripts/check-baseline-scope.js +0 -362
- package/.agents/scripts/check-generated-validator.js +0 -202
- package/.agents/scripts/check-knip-entries.js +0 -159
- package/.agents/scripts/check-lifecycle-lint.js +0 -294
- package/.agents/scripts/check-pinned-override-notes.js +0 -102
- package/.agents/scripts/check-schema-references.js +0 -366
- package/.agents/scripts/check-test-portability.js +0 -512
- package/.agents/scripts/check-workflow-citations.js +0 -332
- package/.agents/scripts/check-workflow-cli-lint.js +0 -299
- package/.agents/scripts/check-workflow-timeouts.js +0 -291
- package/.agents/scripts/install-matrix-assert.js +0 -326
- package/.agents/scripts/lib/audit-advisories.js +0 -195
- package/.agents/scripts/lib/audit-attribution.js +0 -134
- package/.agents/scripts/lib/baselines/drift-detector.js +0 -351
- package/.agents/scripts/lib/baselines/kinds/lighthouse.js +0 -87
- package/.agents/scripts/lib/baselines/kinds/lint.js +0 -184
- package/.agents/scripts/lib/baselines/orphan-pruner.js +0 -233
- package/.agents/scripts/lib/baselines/scope-assert.js +0 -223
- package/.agents/scripts/lib/baselines/scope-inventory.js +0 -314
- package/.agents/scripts/lib/c8-cli-path.js +0 -21
- package/.agents/scripts/lib/config/gates/lighthouse.schema.js +0 -51
- package/.agents/scripts/lib/config/gates/lint.schema.js +0 -18
- package/.agents/scripts/lib/dynamic-workflow/architecture-report-contract.js +0 -70
- package/.agents/scripts/lib/dynamic-workflow/audit-orchestrator.js +0 -284
- package/.agents/scripts/lib/dynamic-workflow/clean-code-report-contract.js +0 -80
- package/.agents/scripts/lib/dynamic-workflow/degraded-coverage.js +0 -81
- package/.agents/scripts/lib/dynamic-workflow/documentation-report-contract.js +0 -87
- package/.agents/scripts/lib/dynamic-workflow/performance-report-contract.js +0 -74
- package/.agents/scripts/lib/dynamic-workflow/quality-report-contract.js +0 -90
- package/.agents/scripts/lib/dynamic-workflow/report-contract-core.js +0 -43
- package/.agents/scripts/lib/dynamic-workflow/security-report-contract.js +0 -83
- package/.agents/scripts/lib/fs-walk.js +0 -52
- package/.agents/scripts/lib/knip-config-resolver.js +0 -181
- package/.agents/scripts/lib/knip-entry-sync.js +0 -452
- package/.agents/scripts/lib/orchestration/model-attribution.js +0 -418
- package/.agents/scripts/lib/orchestration/story-plan-state.js +0 -33
- package/.agents/scripts/lib/orchestration/structured-comment-parser.js +0 -67
- package/.agents/scripts/lib/pinned-override-notes.js +0 -88
- package/.agents/scripts/lib/pinned-override-resolve.js +0 -212
- package/.agents/scripts/lib/test-isolate/cli-options.js +0 -93
- package/.agents/scripts/lib/test-isolate/env-snapshot-loader.js +0 -52
- package/.agents/scripts/lib/test-isolate/list-files.js +0 -90
- package/.agents/scripts/lib/test-isolate/parse-tap.js +0 -75
- package/.agents/scripts/lib/test-isolate/progress-log.js +0 -45
- package/.agents/scripts/lib/test-isolate/render-report.js +0 -97
- package/.agents/scripts/lib/test-isolate/run-isolate.js +0 -87
- package/.agents/scripts/lib/test-isolate/runner.js +0 -483
- package/.agents/scripts/lib/test-profile/parse-tap.js +0 -136
- package/.agents/scripts/lib/test-profile/render-report.js +0 -45
- package/.agents/scripts/lint-label-vocabulary.js +0 -214
- package/.agents/scripts/post-structured-comment.js +0 -127
- package/.agents/scripts/provision-git-hooks.js +0 -85
- package/.agents/scripts/prune-baseline-orphans.js +0 -181
- package/.agents/scripts/run-coverage.js +0 -197
- package/.agents/scripts/run-lint.js +0 -133
- package/.agents/scripts/run-test-profile.js +0 -129
- package/.agents/scripts/run-verify.js +0 -118
- package/.agents/scripts/test-isolate.js +0 -55
- package/.agents/scripts/update-dead-exports-baseline.js +0 -321
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: >-
|
|
3
3
|
Shared include for the bounded acceptance self-eval loop run during Story
|
|
4
|
-
delivery (`helpers/deliver-story`). Defines the per-round
|
|
4
|
+
delivery (`helpers/deliver-story`). Defines the per-round verdict mechanic;
|
|
5
5
|
the caller supplies its gate-decision wrapper (label transitions).
|
|
6
6
|
---
|
|
7
7
|
|
|
@@ -9,181 +9,103 @@ description: >-
|
|
|
9
9
|
|
|
10
10
|
> **Include module.** Not a slash command. Referenced from
|
|
11
11
|
> [`deliver-story.md`](deliver-story.md) at Step 1a. This file is the
|
|
12
|
-
> **single prose home** for the per-round
|
|
12
|
+
> **single prose home** for the per-round verdict mechanic; the caller layers
|
|
13
13
|
> only its wrapper (Story label transitions).
|
|
14
14
|
|
|
15
15
|
After the implementation commits land and **before** the Story proceeds to
|
|
16
|
-
close, run an explicit
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
the close-validation chain does not provide: that chain (lint / test / format /
|
|
16
|
+
close, run an explicit eval pass that scores the change set computed once for
|
|
17
|
+
this Story — never one the evaluator re-derives — against **each**
|
|
18
|
+
`acceptance[]` item individually. This is the acceptance gate the
|
|
19
|
+
close-validation chain does not provide: that chain (lint / test / format /
|
|
21
20
|
maintainability / coverage / crap) proves the code is *healthy*, not that it
|
|
22
21
|
satisfies *this Story's* acceptance criteria.
|
|
23
22
|
|
|
24
23
|
The loop is **always on** (a hard cutover — there is no flag to disable it) and
|
|
25
24
|
**bounded** by `delivery.acceptanceEval.maxRounds` (default 2; `0` means the
|
|
26
25
|
verdict is scored once with no redraft round). It is **distinct from** the
|
|
27
|
-
per-run `
|
|
28
|
-
|
|
29
|
-
mid-delivery, and evaluates the actual work product.
|
|
26
|
+
per-run epilogue (`planRunEpilogue` for N>1): this loop is per-Story,
|
|
27
|
+
per-criterion, mid-delivery, and evaluates the actual work product.
|
|
30
28
|
|
|
31
29
|
## Per round
|
|
32
30
|
|
|
33
|
-
1. **Eval pass — one verdict
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
`
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
explicitly (`verdictOwner: 'fresh-critic' | 'inline-self-eval'` from
|
|
40
|
-
`resolveCeremonyForRisk`). **Never run both**, and never run a
|
|
41
|
-
preliminary self-assessment pass before dispatching the fresh critic —
|
|
42
|
-
the redundant pre-pass buys no measurable quality and roughly triples
|
|
43
|
-
the acceptance-block cost. Step 3's gate is the deterministic **scorer**
|
|
44
|
-
of the one merged verdict, not a second (or third) pass over the
|
|
45
|
-
criteria.
|
|
31
|
+
1. **Eval pass — one verdict owner, one verdict file.** Exactly **one** pass
|
|
32
|
+
authors the Story's verdict, and it covers **every** `acceptance[]` item in
|
|
33
|
+
one file. Which pass is named by the ceremony decision
|
|
34
|
+
(`verdictOwner: 'fresh-critic' | 'inline-self-eval'` from
|
|
35
|
+
`resolveCeremonyForRisk`), and since Story #5343 that follows the
|
|
36
|
+
**ceremony profile alone**:
|
|
46
37
|
|
|
47
|
-
> **Sub-agent type + derived-level ceremony.** When
|
|
48
|
-
> `delivery.routing.roleScopedAgents` is enabled (the **default**), dispatch
|
|
49
|
-
> the critic with `subagent_type: acceptance-critic` — it boots on the
|
|
50
|
-
> role-scoped [`acceptance-critic`](../../agents/acceptance-critic.md) context
|
|
51
|
-
> (its own system prompt, no `CLAUDE.md` @-closure) that carries the
|
|
52
|
-
> maker-blind invariant and the verdict schema standalone. When the
|
|
53
|
-
> kill-switch is **off** (`roleScopedAgents: false`), fall back to
|
|
54
|
-
> `subagent_type: general-purpose`.
|
|
55
|
-
>
|
|
56
|
-
> **Whether to spawn fresh at all is routed off the derived change level**
|
|
57
|
-
> — the same signal `review-depth.js` resolves depth from, so the two
|
|
58
|
-
> decisions cannot disagree. Derive it with one script over the Story
|
|
59
|
-
> branch (Story #5313) — never a hand-carried import block:
|
|
60
|
-
>
|
|
61
38
|
> ```bash
|
|
62
39
|
> node <main-repo>/.agents/scripts/ceremony-derive.js --story <storyId> --cwd <workCwd>
|
|
63
40
|
> ```
|
|
64
41
|
>
|
|
65
|
-
>
|
|
66
|
-
> classes
|
|
67
|
-
> `verdictOwner`): **`
|
|
68
|
-
>
|
|
69
|
-
>
|
|
70
|
-
>
|
|
71
|
-
>
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
>
|
|
79
|
-
> **Inline-critic path (low-level-routed OR nesting-absent harness).** The
|
|
80
|
-
> verdict is authored **inline** whenever the risk router above resolves to
|
|
81
|
-
> `inline` (a low-risk cluster), and also as
|
|
82
|
-
> a **fallback** on any harness that cannot spawn the fresh critic.
|
|
83
|
-
> Dispatching the critic as a nested `Agent` is the fresh-context shape and
|
|
84
|
-
> works on any harness that carries `Agent` into sub-agents (Claude Code ≥
|
|
85
|
-
> 2.1.202). This eval loop itself runs inside a Story delivery
|
|
86
|
-
> sub-agent, so the nested
|
|
87
|
-
> critic sits at nesting depth 2. If the host does **not** support nested
|
|
88
|
-
> `Agent` dispatch at that depth — the tool is absent, or a spawn attempt
|
|
89
|
-
> returns an unsupported-capability error — do **not** stall the Story
|
|
90
|
-
> regardless of the risk verdict. Author the verdict **inline**: in a
|
|
91
|
-
> deliberately scoped,
|
|
92
|
-
> self-critical pass (re-read only the diff, the `acceptance[]` /
|
|
93
|
-
> `verify[]` arrays, and the `verify[]` command output — treat the
|
|
94
|
-
> implementation reasoning as untrusted and score against the criteria
|
|
95
|
-
> afresh), write the same verdict file described below and hand it to the
|
|
96
|
-
> same `acceptance-eval.js` gate. The fresh-context isolation is weaker in
|
|
97
|
-
> the inline path, but the gate, the schema, the round cap, and the
|
|
98
|
-
> proceed / redraft / block decision are identical — a Story is **never**
|
|
99
|
-
> stranded on a nesting-absent harness. Note in the blocked/friction
|
|
100
|
-
> comment (if you block) that the inline fallback was used.
|
|
42
|
+
> One call computes the change set once (`files`), derives the level and
|
|
43
|
+
> classes **for review depth**, and resolves the owner (`mode`, `reason`,
|
|
44
|
+
> `verdictOwner`): **`minimal` / `standard` → `inline`** (the default — you
|
|
45
|
+
> author the verdict yourself), **`strict` → `fresh`** (dispatch the
|
|
46
|
+
> maker-blind critic). The derived level no longer routes this decision;
|
|
47
|
+
> it escalates `review-depth.js` instead, which still resolves `deep` for
|
|
48
|
+
> any sensitive path.
|
|
49
|
+
|
|
50
|
+
**Never run both**, and never run a preliminary self-assessment before
|
|
51
|
+
dispatching a fresh critic — the redundant pre-pass buys no measurable
|
|
52
|
+
quality and roughly triples the acceptance-block cost. Step 3's gate is the
|
|
53
|
+
deterministic **scorer** of that one verdict, not a second pass over the
|
|
54
|
+
criteria.
|
|
101
55
|
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
56
|
+
> **Inline owner (the default).** Author the verdict in a deliberately
|
|
57
|
+
> scoped, self-critical pass: re-read only the diff, the `acceptance[]` /
|
|
58
|
+
> `verify[]` arrays, and the `verify[]` command output — treat your own
|
|
59
|
+
> implementation reasoning as untrusted and score each criterion afresh
|
|
60
|
+
> from the evidence. Write one verdict file covering every item and hand it
|
|
61
|
+
> to the gate. This is also the **fallback** on any harness that cannot
|
|
62
|
+
> spawn the fresh critic, so a Story is never stranded: the gate, the
|
|
63
|
+
> schema, the round cap and the proceed / redraft / block decision are
|
|
64
|
+
> identical either way. Note in the friction comment (if you block) when
|
|
65
|
+
> the fallback was used in place of a `strict` critic.
|
|
66
|
+
>
|
|
67
|
+
> **Fresh critic (`strict` only).** Dispatch a sub-agent via the `Agent`
|
|
68
|
+
> tool — *not* a continuation of your implementing turn. When
|
|
69
|
+
> `delivery.routing.roleScopedAgents` is enabled (the **default**), use
|
|
70
|
+
> `subagent_type: acceptance-critic`: it boots on the role-scoped
|
|
71
|
+
> [`acceptance-critic`](../../agents/acceptance-critic.md) context (its own
|
|
72
|
+
> system prompt, no `CLAUDE.md` @-closure) carrying the maker-blind
|
|
73
|
+
> invariant and the verdict schema standalone. With the kill-switch off
|
|
74
|
+
> (`roleScopedAgents: false`), fall back to
|
|
75
|
+
> `subagent_type: general-purpose`. This loop already runs inside a Story
|
|
76
|
+
> delivery sub-agent, so the critic sits at nesting depth 2 — supported by
|
|
77
|
+
> any harness that carries `Agent` into sub-agents (Claude Code ≥ 2.1.202).
|
|
78
|
+
|
|
79
|
+
Whichever pass owns it, the verdict:
|
|
80
|
+
+ Inspects the **change set it was handed** — the one `files` list above —
|
|
81
|
+
and the Story's inline `acceptance[]` / `verify[]` arrays. Pass the file
|
|
82
|
+
list explicitly when dispatching a fresh critic; it does not re-enumerate
|
|
83
|
+
the diff for itself, so a commit landing mid-ceremony cannot leave it
|
|
84
|
+
scoring a different change than the one that routed it.
|
|
109
85
|
+ **Runs the `verify[]` commands** and consumes their output as **required
|
|
110
|
-
evidence
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
to it.
|
|
86
|
+
evidence**. `verify[]` is not optional advisory pre-flight — a criterion
|
|
87
|
+
cannot be scored `met` without the supporting `verify[]` evidence where a
|
|
88
|
+
`verify[]` command is relevant to it.
|
|
114
89
|
+ **Reuses the credited full-suite run instead of re-paying for it.**
|
|
115
90
|
Before spawning a `verify[]` entry, classify it with `resolveVerifyCredit`
|
|
116
91
|
from
|
|
117
92
|
[`verify-credit.js`](../../scripts/lib/orchestration/verify-credit.js): an
|
|
118
|
-
entry that is itself a full-suite command
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
the
|
|
122
|
-
`
|
|
123
|
-
|
|
124
|
-
is scoped `verify[]` entries **plus** the one credited run
|
|
125
|
-
([`deliver-digest.md`](deliver-digest.md) § 5).
|
|
126
|
-
+ **Shares `lint` / `typecheck` evidence with close.** When a
|
|
127
|
-
`verify[]` command is **byte-identical** to a close-validation gate — in
|
|
128
|
-
practice only the cheap, command-identical `lint` and `typecheck` gates
|
|
129
|
-
(`npm run lint` and the resolved `project.commands.typecheck`) — the
|
|
130
|
-
critic MUST run it through `evidence-gate.js` so a passing run records an
|
|
131
|
-
evidence entry in the **same keyspace** `close-validation/runner.js`
|
|
132
|
-
consults. Run it in the **same Story worktree** the close validates (the
|
|
133
|
-
HEAD-sha key enforces "unchanged HEAD") and pass the exact gate name:
|
|
134
|
-
|
|
135
|
-
```bash
|
|
136
|
-
node <main-repo>/.agents/scripts/evidence-gate.js \
|
|
137
|
-
--standalone --scope-id <storyId> --gate lint \
|
|
138
|
-
--worktree <worktree> -- npm run lint
|
|
139
|
-
```
|
|
140
|
-
|
|
141
|
-
Close's `shouldSkip` then short-circuits that gate when HEAD is
|
|
142
|
-
unchanged; a redraft round (HEAD moves) correctly busts it. **Never**
|
|
143
|
-
run the coverage / CRAP suite through `evidence-gate.js` to stamp it
|
|
144
|
-
fresh — a false-fresh coverage record without `coverage-final.json`
|
|
145
|
-
silently weakens the floor. Limit the evidence-share to `lint` and
|
|
146
|
-
`typecheck`.
|
|
147
|
-
+ Emits a **cluster** verdict file under `temp/` conforming to
|
|
93
|
+
entry that is itself a full-suite command is consulted against the same
|
|
94
|
+
stamp close reads and, when that stamp is fresh, recorded as `pass`
|
|
95
|
+
without being respawned; a stale or absent stamp reports `spawn: true` and
|
|
96
|
+
the command runs for real. The credited run itself is stated once, in
|
|
97
|
+
[`deliver-digest.md`](deliver-digest.md) § 5.
|
|
98
|
+
+ Emits **one** verdict file under `temp/` conforming to
|
|
148
99
|
[`acceptance-eval-verdict.schema.json`](../../schemas/acceptance-eval-verdict.schema.json):
|
|
149
100
|
one `{ index, criterion, verdict: met|partial|unmet, evidence,
|
|
150
|
-
verifyEvidence[] }` record per acceptance item
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
gate itself.
|
|
154
|
-
2. **
|
|
155
|
-
(
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
For fresh critics, the clusters of a round are independent, so dispatch
|
|
159
|
-
**all** of the round's critics as N `Agent` calls **in a single assistant
|
|
160
|
-
turn** — [`parallel-tooling.md`](parallel-tooling.md) **Rule 3** — never
|
|
161
|
-
serially, and never one round per cluster.
|
|
162
|
-
|
|
163
|
-
Then **merge** the cluster verdicts into **one** verdict file under `temp/`:
|
|
164
|
-
concatenate every cluster's `criteria[]` records and order the merged array
|
|
165
|
-
by `index`, so it holds exactly one record per `acceptance[]` item in
|
|
166
|
-
**acceptance-array order**, under a single top-level `storyId`,
|
|
167
|
-
`schemaVersion`, `round` and `commitSha`. The verdict schema deliberately
|
|
168
|
-
carries **no `clusterId`** — the round's artifact is the merged verdict, and
|
|
169
|
-
which critic scored which record is not part of the contract.
|
|
170
|
-
|
|
171
|
-
> **Why one gate call and not N.** The round counter is **Story-scoped** —
|
|
172
|
-
> derived by counting `acceptance-eval` signals in the Story's
|
|
173
|
-
> `signals.ndjson` — and each cluster verdict has a distinct fingerprint, so
|
|
174
|
-
> the replay guard never collapses them. A gate call per cluster would spend
|
|
175
|
-
> one of the (default 2) rounds *per cluster*, so a Story with more than 8
|
|
176
|
-
> acceptance criteria would exhaust its redraft budget on cluster arithmetic
|
|
177
|
-
> alone; N concurrent calls would also race that same ledger. Cluster-scoped
|
|
178
|
-
> round counting exists in
|
|
179
|
-
> [`acceptance-eval-decision.js`](../../scripts/lib/orchestration/acceptance-eval-decision.js)
|
|
180
|
-
> but requires an integer `epicId`, which v2 pins `null` — it is not a way
|
|
181
|
-
> around the merge.
|
|
182
|
-
3. **Decide — exactly one gate call per round.** Run the gate against the
|
|
183
|
-
**merged** verdict (the caller's Step 1a names the exact invocation — omit
|
|
184
|
-
`--epic`). The gate **scores the single verdict the round produced** —
|
|
185
|
-
schema validation, round cap, decision — and never re-scores the criteria
|
|
186
|
-
itself:
|
|
101
|
+
verifyEvidence[] }` record per `acceptance[]` item, in acceptance-array
|
|
102
|
+
order, under a single top-level `storyId`, `schemaVersion`, `round` and
|
|
103
|
+
`commitSha`. A fresh critic **returns that path to you** rather than
|
|
104
|
+
calling the gate itself.
|
|
105
|
+
2. **Decide — exactly one gate call per round.** Run the gate against that one
|
|
106
|
+
verdict file (the caller's Step 1a names the exact invocation — omit
|
|
107
|
+
`--epic`). The gate **scores the verdict the round produced** — schema
|
|
108
|
+
validation, round cap, decision — and never re-scores the criteria itself:
|
|
187
109
|
|
|
188
110
|
```bash
|
|
189
111
|
node <main-repo>/.agents/scripts/acceptance-eval.js \
|
|
@@ -191,10 +113,16 @@ mid-delivery, and evaluates the actual work product.
|
|
|
191
113
|
```
|
|
192
114
|
|
|
193
115
|
The gate reads the Story's `acceptance[]` count itself (Story #5313): a
|
|
194
|
-
verdict whose `criteria[]` length differs —
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
116
|
+
verdict whose `criteria[]` length differs — one covering only part of the
|
|
117
|
+
Story — is rejected **before scoring**, with an error naming the count and
|
|
118
|
+
consuming **no round**. `--expected-criteria` is still accepted but
|
|
119
|
+
redundant; when passed it must agree with that count.
|
|
120
|
+
|
|
121
|
+
> **Why one call per round and not several.** The round counter is
|
|
122
|
+
> **Story-scoped** — derived by counting `acceptance-eval` signals in the
|
|
123
|
+
> Story's `signals.ndjson` — so a second call in the same round spends one
|
|
124
|
+
> of the (default 2) rounds for nothing, and concurrent calls race that
|
|
125
|
+
> ledger.
|
|
198
126
|
|
|
199
127
|
The gate validates the verdict against the schema, applies the round cap,
|
|
200
128
|
emits the per-criterion `acceptance-eval` signal into the retro / feedback
|
|
@@ -209,5 +137,4 @@ mid-delivery, and evaluates the actual work product.
|
|
|
209
137
|
(transition to `agent::blocked`) and post a `friction` comment naming the
|
|
210
138
|
unmet criteria and their evidence. Never silently proceed to close.
|
|
211
139
|
|
|
212
|
-
Write
|
|
213
|
-
they are scratch artifacts.
|
|
140
|
+
Write the verdict under `temp/` only — it is a scratch artifact.
|
|
@@ -152,7 +152,7 @@ Treat the following as **out of scope by construction** and drop any finding
|
|
|
152
152
|
that rests on one of them:
|
|
153
153
|
|
|
154
154
|
- **Sanctioned test seams** — exports consumed only by tests, and other
|
|
155
|
-
|
|
155
|
+
deliberate test-only patterns. Never a production defect.
|
|
156
156
|
- **Entry points & public API surface** — CLI mains, `bin/` scripts, declared
|
|
157
157
|
`exports` / `bin` / `main`, and barrel contracts consumed out-of-tree. A
|
|
158
158
|
zero in-repo consumer count is not death.
|
|
@@ -5,11 +5,11 @@ this framework cites. Reviewers, prescriptive auditors, and writing agents all
|
|
|
5
5
|
read the same numbers from here so a "high cyclomatic complexity" finding in
|
|
6
6
|
`/audit-clean-code` and a pre-commit refusal cite the same threshold.
|
|
7
7
|
|
|
8
|
-
>
|
|
9
|
-
>
|
|
10
|
-
>
|
|
11
|
-
>
|
|
12
|
-
> change a number.
|
|
8
|
+
> The cyclomatic thresholds are fixed framework constants (Story #5382 folded
|
|
9
|
+
> the never-set `delivery.quality.codingGuardrails` block); the MI tolerance
|
|
10
|
+
> is `delivery.quality.gates.maintainability.tolerance` — see
|
|
11
|
+
> [`agentrc-reference.json`](../../docs/agentrc-reference.json). Never fork
|
|
12
|
+
> this helper to change a number.
|
|
13
13
|
|
|
14
14
|
## At-keyboard verification
|
|
15
15
|
|
|
@@ -28,14 +28,14 @@ hook calls the same script.
|
|
|
28
28
|
|
|
29
29
|
Cyclomatic complexity (CC) is measured per function by `escomplex` (the same
|
|
30
30
|
engine the maintainability axis of `check-baselines.js` runs). Two
|
|
31
|
-
thresholds — the advisory
|
|
32
|
-
|
|
33
|
-
|
|
31
|
+
thresholds — the advisory flag of 8 and the fixed ceiling of 12, both
|
|
32
|
+
constants (`cyclomaticMustFix` was retired as a config key in Story #5313,
|
|
33
|
+
`cyclomaticFlag` in Story #5382):
|
|
34
34
|
|
|
35
35
|
| CC range | Action |
|
|
36
36
|
| --- | --- |
|
|
37
37
|
| ≤ 8 | Pass — no annotation required. |
|
|
38
|
-
| > 8 (
|
|
38
|
+
| > 8 (the advisory flag) | **Flag** — `quality:preview` counts the function in its `new-method count over c=<flag>` column. The function is allowed to land but the report names it. |
|
|
39
39
|
| ≥ 12 | **Advisory in `quality:preview`** — listed by file, method and reading; the preview exits 0 on it. **Ratchet in `check-cyclomatic.js`**: fails when a file gains a function above 12, or when its worst function gets worse than the recorded baseline. |
|
|
40
40
|
|
|
41
41
|
`check-cyclomatic.js` is a **ratchet**, not a cliff: `baselines/cyclomatic.json`
|
|
@@ -57,11 +57,8 @@ source under `tests/<mirrored-path>/<basename>.test.js`. Same-commit pairing
|
|
|
57
57
|
keeps the bisect honest — a regression and the test that would have caught
|
|
58
58
|
it land or revert together.
|
|
59
59
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
lacks a sibling test. Default is `false` so legacy repos opt in
|
|
63
|
-
deliberately; once enabled, the structural check replaces the
|
|
64
|
-
review-time prose rule.
|
|
60
|
+
No structural check enforces the pairing — it is a review-time rule
|
|
61
|
+
(Story #5382 removed the never-read `requireSiblingTest` switch).
|
|
65
62
|
|
|
66
63
|
## Maintainability-Index drop refactor rule
|
|
67
64
|
|
|
@@ -84,7 +81,7 @@ the commit lands (scoped to `HEAD` by default — the alias passes no
|
|
|
84
81
|
Renaming a file (or moving it across `src/` directories) detaches its MI and
|
|
85
82
|
CRAP history from the baseline keys. The correct response is a **baseline
|
|
86
83
|
refresh**, not a regression entry: include `baseline-refresh:` (the
|
|
87
|
-
|
|
84
|
+
fixed refresh tag) in the commit subject so the
|
|
88
85
|
ratchet treats the new key as a clean entry instead of comparing it to
|
|
89
86
|
nothing.
|
|
90
87
|
|
|
@@ -87,8 +87,10 @@ review yourself, honor the `depth` semantics above directly.
|
|
|
87
87
|
1. Resolve `[TICKET_ID]` from `ticketId` (the Story for live `scope: story`).
|
|
88
88
|
2. Resolve `[BASE_REF]` from `baseRef` and `[HEAD_REF]` from `headRef`.
|
|
89
89
|
3. Fetch the Story ticket and resolve the planning context from its own
|
|
90
|
-
body: folded `## Spec` / `## Slicing`, acceptance criteria
|
|
91
|
-
`story-plan-state`
|
|
90
|
+
body: folded `## Spec` / `## Slicing`, and acceptance criteria. The
|
|
91
|
+
`story-plan-state` comment beside it carries the operator's plan summary
|
|
92
|
+
(story set, delivery order, deliver command), not planning context — it
|
|
93
|
+
holds no machine payload to read.
|
|
92
94
|
4. Read that Spec fully to understand the intended scope, architectural
|
|
93
95
|
decisions, and acceptance criteria. Do **not** look for a parent Epic.
|
|
94
96
|
|
|
@@ -25,18 +25,19 @@ rule produces it:
|
|
|
25
25
|
shape — sub-agent isolation only matters against a *concurrent* sibling
|
|
26
26
|
racing the same checkout, and a one-Story run has none.
|
|
27
27
|
2. **Every other run is `subagent`.** A multi-Story run dispatches every Story
|
|
28
|
-
as a sub-agent however trivial its shape
|
|
29
|
-
|
|
28
|
+
as a sub-agent however trivial its shape — the run's size is the whole
|
|
29
|
+
premise, and nothing about a Story's own shape enters it.
|
|
30
30
|
|
|
31
|
-
`inline` removes
|
|
32
|
-
acceptance
|
|
33
|
-
|
|
31
|
+
`inline` removes the `story-worker` boot and nothing else. It does **not**
|
|
32
|
+
change the acceptance verdict owner — that is § 3's decision, and the profile
|
|
33
|
+
alone makes it. **`subagent` and `inline` run the same engine**: same gates,
|
|
34
|
+
same PR to `main`, same terminal envelope, byte for byte.
|
|
34
35
|
|
|
35
36
|
## 2. Engine invariants
|
|
36
37
|
|
|
37
38
|
| Trait | Contract |
|
|
38
39
|
| --- | --- |
|
|
39
|
-
| Ticket type | `type::story` only
|
|
40
|
+
| Ticket type | `type::story` only — `resolve-stories.js` validates it |
|
|
40
41
|
| Branch | `story-<id>`, seeded from `project.baseBranch` (`main`) |
|
|
41
42
|
| Merge target | `main` via PR (squash + required checks) — never a direct push |
|
|
42
43
|
| Gates | Every close gate runs regardless of route; no route bypasses one |
|
|
@@ -57,38 +58,44 @@ import block:
|
|
|
57
58
|
node <main-repo>/.agents/scripts/ceremony-derive.js --story <storyId> --cwd <workCwd>
|
|
58
59
|
```
|
|
59
60
|
|
|
60
|
-
It prints one JSON object: `files` — the one change set
|
|
61
|
+
It prints one JSON object: `files` — the one change set the verdict owner is
|
|
61
62
|
handed (`null` when the diff could not be enumerated) — plus `level` and
|
|
62
63
|
`classes` from `review-depth.js`, and `mode`, `reason` and `verdictOwner`
|
|
63
64
|
from `ceremony-routing.js`. Level rules: a sensitive path registered in
|
|
64
65
|
`audit-rules.json` → `high`, none → `low`, an unenumerable diff → `null`.
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
66
|
+
The level drives **review depth** only; close's `review-depth.js` reads the
|
|
67
|
+
same derived level, so the two cannot disagree. A sensitive footprint
|
|
68
|
+
therefore buys a **deep review**, not a fresh acceptance critic.
|
|
69
|
+
|
|
70
|
+
> **The ceremony rule, stated once.** The **profile alone** names the verdict
|
|
71
|
+
> owner (Story #5343, narrowed to that one input by #5366): `minimal` /
|
|
72
|
+
> `standard` → `inline`, `strict` → `fresh`. Nothing else moves it — not the
|
|
73
|
+
> derived change level, not the footprint's sensitivity, and **not the
|
|
74
|
+
> dispatch mode**: an `inline` Story under `strict` still spawns the fresh
|
|
75
|
+
> maker-blind critic, one nesting level shallower than a dispatched one. The
|
|
76
|
+
> only sanctioned inline authoring under `strict` is the harness fallback in
|
|
77
|
+
> [`acceptance-self-eval.md`](acceptance-self-eval.md) — a host that cannot
|
|
78
|
+
> spawn the critic at all, noted in the friction comment if you block.
|
|
79
|
+
|
|
80
|
+
`--base <ref>` overrides `project.baseBranch`.
|
|
70
81
|
|
|
71
82
|
## 4. Acceptance self-eval (Step 1a, required)
|
|
72
83
|
|
|
73
|
-
**One verdict
|
|
74
|
-
self-eval
|
|
75
|
-
|
|
76
|
-
|
|
84
|
+
**One verdict owner per Story** — named by `verdictOwner`: the inline
|
|
85
|
+
self-eval under `minimal` / `standard` (the default), a fresh maker-blind
|
|
86
|
+
critic under `strict`. Never both, and never a warm-up pass. The owner
|
|
87
|
+
authors **one** verdict file covering every `acceptance[]` item, scored
|
|
88
|
+
against the change set above with `verify[]` output as evidence, and it is
|
|
89
|
+
scored in **one** gate call. Bounded by `delivery.acceptanceEval.maxRounds`
|
|
77
90
|
(default 2; `0` scores once with no redraft).
|
|
78
91
|
|
|
79
|
-
**Inline owner:** author **one** verdict file covering every `acceptance[]`
|
|
80
|
-
item and score it in **one** gate call — there is no cluster merge.
|
|
81
|
-
**Fresh critics:** one round = N cluster critics → ONE merged verdict → ONE
|
|
82
|
-
gate call. Merge every cluster's records into a single `criteria[]` in
|
|
83
|
-
`acceptance[]` order and score that once; a gate call per cluster spends a
|
|
84
|
-
round *per cluster* and races the round ledger.
|
|
85
|
-
|
|
86
92
|
`node <main-repo>/.agents/scripts/acceptance-eval.js --story <storyId>
|
|
87
93
|
--verdict <verdict-path>`
|
|
88
94
|
|
|
89
95
|
The gate reads the Story's `acceptance[]` count itself and rejects a verdict
|
|
90
96
|
whose `criteria[]` length differs **before** scoring, consuming no round;
|
|
91
|
-
`--expected-criteria` is accepted but redundant.
|
|
97
|
+
`--expected-criteria` is accepted but redundant. A second gate call in the
|
|
98
|
+
same round spends a round for nothing and races the Story-scoped ledger.
|
|
92
99
|
|
|
93
100
|
`proceed` → close. `redraft` → one more round inside the cap. `block` → **do
|
|
94
101
|
not close**: post a `friction` comment and flip `agent::blocked`.
|
|
@@ -96,10 +103,12 @@ Per-round mechanics: [`acceptance-self-eval.md`](acceptance-self-eval.md).
|
|
|
96
103
|
|
|
97
104
|
## 5. The one credited suite run
|
|
98
105
|
|
|
99
|
-
After the self-eval loop's last fix commit,
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
106
|
+
After the self-eval loop's last fix commit, fetch and merge
|
|
107
|
+
`origin/<baseBranch>` into the Story branch **first**, ahead of this run and
|
|
108
|
+
the push: close's base-sync then no-ops, so neither stamp goes stale. Then
|
|
109
|
+
run the suite **once** in the worktree through the depositor — it spawns the
|
|
110
|
+
project's own `npm test`, whatever that resolves to, and stamps the result,
|
|
111
|
+
so any runner earns the credit:
|
|
103
112
|
|
|
104
113
|
```bash
|
|
105
114
|
node <main-repo>/.agents/scripts/evidence-gate.js --standalone \
|