mandrel 1.93.0 → 2.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/.agents/README.md +59 -73
- package/.agents/agents/acceptance-critic.md +129 -0
- package/.agents/agents/story-worker.md +161 -0
- package/.agents/docs/SDLC.md +489 -1285
- package/.agents/docs/agentrc-reference.json +177 -67
- package/.agents/docs/configuration.md +108 -136
- package/.agents/docs/execution-reference.md +44 -22
- package/.agents/docs/quality-gates.md +13 -19
- package/.agents/docs/workflows.md +3 -3
- package/.agents/instructions.md +107 -108
- package/.agents/rules/ci-remediation.md +8 -12
- package/.agents/rules/git-conventions-reference.md +224 -0
- package/.agents/rules/git-conventions.md +42 -223
- package/.agents/rules/security-baseline.md +5 -0
- package/.agents/rules/testing-standards.md +106 -13
- package/.agents/schemas/acceptance-eval-verdict.schema.json +1 -1
- package/.agents/schemas/agentrc.schema.json +71 -201
- package/.agents/schemas/lifecycle/ledger-record.schema.json +1 -1
- package/.agents/schemas/lifecycle/retro.end.schema.json +1 -1
- package/.agents/schemas/risk-verdict.schema.json +0 -13
- package/.agents/scripts/acceptance-eval.js +62 -18
- package/.agents/scripts/agents-bootstrap-github.js +1 -1
- package/.agents/scripts/analyze-execution.js +1 -1
- package/.agents/scripts/audit-to-stories.js +7 -7
- package/.agents/scripts/boot-sweep.js +1 -1
- package/.agents/scripts/check-context-budget.js +62 -5
- package/.agents/scripts/check-lifecycle-lint.js +6 -9
- package/.agents/scripts/check-prepush-recovery.js +1 -1
- package/.agents/scripts/cleanup-repo-test-temp.js +6 -1
- package/.agents/scripts/diagnose-friction.js +0 -6
- package/.agents/scripts/lib/Logger.js +6 -10
- package/.agents/scripts/lib/audit-suite/runner.js +2 -2
- package/.agents/scripts/lib/audit-suite/selector.js +5 -5
- package/.agents/scripts/lib/audit-to-stories/{seed-epic-from-findings.js → seed-from-findings.js} +9 -9
- package/.agents/scripts/lib/baselines/kernel.js +206 -18
- package/.agents/scripts/lib/baselines/kinds/maintainability.js +0 -4
- package/.agents/scripts/lib/baselines/reader.js +1 -6
- package/.agents/scripts/lib/bdd-runner-detect.js +5 -9
- package/.agents/scripts/lib/bootstrap/issue-forms-template.js +32 -33
- package/.agents/scripts/lib/bootstrap/project-bootstrap.js +56 -18
- package/.agents/scripts/lib/checks/core-bare-clean.js +2 -2
- package/.agents/scripts/lib/checks/index.js +2 -1
- package/.agents/scripts/lib/checks/story-init-not-backgrounded.js +23 -21
- package/.agents/scripts/lib/cli/standard-args.js +13 -22
- package/.agents/scripts/lib/cli-args.js +16 -7
- package/.agents/scripts/lib/close-validation/gates.js +160 -22
- package/.agents/scripts/lib/config/acceptance-eval.js +52 -5
- package/.agents/scripts/lib/config/ci.js +6 -31
- package/.agents/scripts/lib/config/delivery-routing.js +103 -0
- package/.agents/scripts/lib/config/explain.js +57 -36
- package/.agents/scripts/lib/config/limits.js +17 -58
- package/.agents/scripts/lib/config/paths.js +0 -2
- package/.agents/scripts/lib/config/quality.js +1 -1
- package/.agents/scripts/lib/config/runners.js +17 -50
- package/.agents/scripts/lib/config/temp-paths.js +19 -14
- package/.agents/scripts/lib/config/worktree-isolation.js +0 -5
- package/.agents/scripts/lib/config-resolver.js +3 -8
- package/.agents/scripts/lib/config-settings-schema-delivery.js +46 -136
- package/.agents/scripts/lib/config-settings-schema-quality.js +17 -14
- package/.agents/scripts/lib/config-settings-schema.js +52 -38
- package/.agents/scripts/lib/dependency-parser.js +3 -2
- package/.agents/scripts/lib/doc-tiers.js +39 -4
- package/.agents/scripts/lib/duplicate-search.js +211 -41
- package/.agents/scripts/lib/feedback-loop/retro-proposals-graduator.js +1 -1
- package/.agents/scripts/lib/findings/promote-finding.js +5 -5
- package/.agents/scripts/lib/framework-version.js +2 -3
- package/.agents/scripts/lib/git-branch-cleanup.js +1 -10
- package/.agents/scripts/lib/git-branch-lifecycle.js +17 -22
- package/.agents/scripts/lib/git-utils.js +32 -6
- package/.agents/scripts/lib/github/framework-repo.js +6 -0
- package/.agents/scripts/lib/label-constants.js +10 -23
- package/.agents/scripts/lib/label-taxonomy.js +9 -43
- package/.agents/scripts/lib/observability/active-story-env.js +112 -3
- package/.agents/scripts/lib/observability/hook-heartbeat.js +187 -0
- package/.agents/scripts/lib/observability/source-classifier.js +3 -3
- package/.agents/scripts/lib/observability/tool-trace-hook.js +15 -4
- package/.agents/scripts/lib/onboard/init-tail.js +1 -3
- package/.agents/scripts/lib/orchestration/acceptance-clusters.js +111 -0
- package/.agents/scripts/lib/orchestration/acceptance-eval-decision.js +32 -4
- package/.agents/scripts/lib/orchestration/audit-lens-routing.js +128 -0
- package/.agents/scripts/lib/orchestration/bookkeeping-outbox.js +273 -0
- package/.agents/scripts/lib/orchestration/ceremony-routing.js +204 -0
- package/.agents/scripts/lib/orchestration/code-review.js +20 -268
- package/.agents/scripts/lib/orchestration/column-sync.js +1 -1
- package/.agents/scripts/lib/orchestration/consolidation-precondition.js +1 -1
- package/.agents/scripts/lib/orchestration/context-envelope.js +2 -5
- package/.agents/scripts/lib/orchestration/docs-digest.js +8 -8
- package/.agents/scripts/lib/orchestration/file-assumptions.js +7 -13
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/cli.js +1 -1
- package/.agents/scripts/lib/orchestration/lifecycle/emit-loop-tick.js +8 -8
- package/.agents/scripts/lib/orchestration/lifecycle/emit-story-heartbeat.js +2 -2
- package/.agents/scripts/lib/orchestration/lifecycle/ledger-writer.js +6 -3
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/README.md +17 -43
- package/.agents/scripts/lib/orchestration/lint-baseline-service.js +4 -4
- package/.agents/scripts/lib/orchestration/merge-block-class.js +1 -1
- package/.agents/scripts/lib/orchestration/phase-runner.js +3 -2
- package/.agents/scripts/lib/orchestration/plan-context.js +248 -266
- package/.agents/scripts/lib/orchestration/plan-critic-conditions.js +3 -2
- package/.agents/scripts/lib/orchestration/plan-critics-evaluate.js +1 -1
- package/.agents/scripts/lib/orchestration/plan-navigation.js +92 -0
- package/.agents/scripts/lib/orchestration/plan-persist/fan-out-gate.js +61 -0
- package/.agents/scripts/lib/orchestration/plan-persist/persist-helpers.js +97 -0
- package/.agents/scripts/lib/orchestration/plan-persist/run-plan-persist.js +223 -854
- package/.agents/scripts/lib/orchestration/plan-persist/story-ops.js +361 -0
- package/.agents/scripts/lib/orchestration/plan-persist/summary.js +35 -108
- package/.agents/scripts/lib/orchestration/plan-reachability.js +9 -14
- package/.agents/scripts/lib/orchestration/plan-runner/worktree-sweep.js +1 -1
- package/.agents/scripts/lib/orchestration/{epic-plan-spec/phases → planning}/authoring-context.js +14 -14
- package/.agents/scripts/lib/orchestration/planning/decomposer-context.js +27 -0
- package/.agents/scripts/lib/orchestration/{epic-plan-spec/phases → planning}/risk-verdict.js +3 -4
- package/.agents/scripts/lib/orchestration/post-merge/phases/branch-cleanup.js +2 -2
- package/.agents/scripts/lib/orchestration/post-merge/phases/dashboard-refresh.js +8 -20
- package/.agents/scripts/lib/orchestration/post-merge/phases/worktree-reap.js +3 -2
- package/.agents/scripts/lib/orchestration/pr-base-guard.js +18 -28
- package/.agents/scripts/lib/orchestration/preflight-cache.js +5 -5
- package/.agents/scripts/lib/orchestration/remote-verifier.js +1 -1
- package/.agents/scripts/lib/orchestration/resolve-plan-run.js +155 -0
- package/.agents/scripts/lib/orchestration/resolves-token.js +1 -1
- package/.agents/scripts/lib/orchestration/retro-perf-heuristics.js +8 -8
- package/.agents/scripts/lib/orchestration/retro-proposals.js +140 -79
- package/.agents/scripts/lib/orchestration/review-depth.js +26 -12
- package/.agents/scripts/lib/orchestration/review-providers/codex.js +2 -2
- package/.agents/scripts/lib/orchestration/review-providers/review-provider-factory.js +21 -56
- package/.agents/scripts/lib/orchestration/run-epilogue.js +426 -0
- package/.agents/scripts/lib/orchestration/single-story-close/phases/auto-merge.js +1 -1
- package/.agents/scripts/lib/orchestration/single-story-close/phases/close-validation.js +1 -0
- package/.agents/scripts/lib/orchestration/single-story-close/phases/code-review.js +95 -41
- package/.agents/scripts/lib/orchestration/single-story-close/phases/options.js +16 -13
- package/.agents/scripts/lib/orchestration/single-story-close/phases/review-block.js +40 -0
- package/.agents/scripts/lib/orchestration/single-story-close/runner.js +11 -3
- package/.agents/scripts/lib/orchestration/spec-freshness.js +14 -205
- package/.agents/scripts/lib/orchestration/spec-section-validator.js +4 -5
- package/.agents/scripts/lib/orchestration/spec-spill.js +60 -0
- package/.agents/scripts/lib/orchestration/split-policy-validator.js +188 -0
- package/.agents/scripts/lib/orchestration/story-close/emit-blocked.js +49 -0
- package/.agents/scripts/lib/orchestration/story-close/phases/code-review.js +15 -12
- package/.agents/scripts/lib/orchestration/story-follow-ups.js +237 -0
- package/.agents/scripts/lib/orchestration/story-init-remote.js +47 -0
- package/.agents/scripts/lib/orchestration/story-plan-state.js +48 -0
- package/.agents/scripts/lib/orchestration/{epic-runner → story-progress}/story-run-progress-writer.js +3 -3
- package/.agents/scripts/lib/orchestration/structured-comment-parser.js +1 -1
- package/.agents/scripts/lib/orchestration/task-body-validator.js +8 -18
- package/.agents/scripts/lib/orchestration/ticket-validator-conflicts.js +11 -61
- package/.agents/scripts/lib/orchestration/ticket-validator-sizing.js +189 -373
- package/.agents/scripts/lib/orchestration/ticket-validator.js +3 -8
- package/.agents/scripts/lib/orchestration/ticketing/bulk.js +0 -25
- package/.agents/scripts/lib/orchestration/ticketing/reads.js +29 -26
- package/.agents/scripts/lib/orchestration/ticketing/transition.js +5 -5
- package/.agents/scripts/lib/planning-corpus.js +16 -11
- package/.agents/scripts/lib/preflight-runner.js +2 -2
- package/.agents/scripts/lib/provider-factory.js +1 -1
- package/.agents/scripts/lib/qa/coverage-verdict.js +5 -5
- package/.agents/scripts/lib/single-story/confirm-merge-follow-ups.js +36 -0
- package/.agents/scripts/lib/single-story-sweep/protection-ctx.js +1 -1
- package/.agents/scripts/lib/story-adjacency.js +11 -14
- package/.agents/scripts/lib/story-body/story-body.js +124 -70
- package/.agents/scripts/lib/story-plan.js +2 -4
- package/.agents/scripts/lib/templates/decomposer-prompts.js +46 -45
- package/.agents/scripts/lib/templates/spec-author-prompts.js +47 -45
- package/.agents/scripts/lib/{epic-body-sections.js → ticket-body-sections.js} +26 -26
- package/.agents/scripts/lib/validation-evidence.js +1 -1
- package/.agents/scripts/lib/wave-runner/ready-set.js +6 -6
- package/.agents/scripts/lib/workspace-provisioner.js +1 -1
- package/.agents/scripts/lib/worktree/lifecycle/reap.js +5 -7
- package/.agents/scripts/lint-issue-body.js +71 -40
- package/.agents/scripts/mandrel-update-preflight.js +1 -1
- package/.agents/scripts/notify.js +4 -3
- package/.agents/scripts/plan-context.js +64 -74
- package/.agents/scripts/plan-persist.js +121 -280
- package/.agents/scripts/plan-run-epilogue.js +97 -0
- package/.agents/scripts/post-structured-comment.js +38 -0
- package/.agents/scripts/providers/github/issues.js +17 -33
- package/.agents/scripts/providers/github/mappers.js +0 -12
- package/.agents/scripts/providers/github/tickets.js +2 -5
- package/.agents/scripts/resolve-plan-run.js +117 -0
- package/.agents/scripts/signals-view.js +24 -19
- package/.agents/scripts/single-story-close.js +11 -14
- package/.agents/scripts/single-story-confirm-merge.js +39 -23
- package/.agents/scripts/single-story-init.js +29 -20
- package/.agents/scripts/stories-wave-tick.js +6 -6
- package/.agents/scripts/story-plan.js +26 -47
- package/.agents/scripts/sync-claude-agents.js +165 -0
- package/.agents/scripts/update-ticket-state.js +37 -15
- package/.agents/skills/core/analyze-execution/SKILL.md +21 -18
- package/.agents/skills/core/api-and-interface-design/SKILL.md +5 -3
- package/.agents/skills/core/code-review-and-quality/SKILL.md +63 -7
- package/.agents/skills/core/debugging-and-error-recovery/SKILL.md +1 -1
- package/.agents/skills/core/gates-and-baselines/SKILL.md +149 -0
- package/.agents/skills/core/idea-refinement/SKILL.md +8 -14
- package/.agents/skills/core/qa-coverage-mapping/SKILL.md +7 -7
- package/.agents/skills/core/scope-triage/SKILL.md +28 -172
- package/.agents/skills/skills.index.json +8 -418
- package/.agents/starter-agentrc.json +0 -5
- package/.agents/templates/agent-protocol.md +9 -10
- package/.agents/workflows/audit-architecture.md +3 -3
- package/.agents/workflows/audit-clean-code.md +3 -3
- package/.agents/workflows/audit-dependencies.md +3 -3
- package/.agents/workflows/audit-devops.md +3 -3
- package/.agents/workflows/audit-documentation.md +5 -5
- package/.agents/workflows/audit-lighthouse.md +3 -3
- package/.agents/workflows/audit-navigability.md +3 -2
- package/.agents/workflows/audit-performance.md +3 -3
- package/.agents/workflows/audit-privacy.md +3 -3
- package/.agents/workflows/audit-quality.md +3 -3
- package/.agents/workflows/audit-security.md +3 -3
- package/.agents/workflows/audit-seo.md +3 -3
- package/.agents/workflows/audit-sre.md +3 -3
- package/.agents/workflows/audit-to-stories.md +20 -20
- package/.agents/workflows/audit-ux-ui.md +3 -3
- package/.agents/workflows/deliver.md +122 -131
- package/.agents/workflows/git-cleanup.md +3 -4
- package/.agents/workflows/helpers/_merge-conflict-template.md +1 -1
- package/.agents/workflows/helpers/acceptance-self-eval.md +52 -40
- package/.agents/workflows/helpers/code-review.md +70 -193
- package/.agents/workflows/helpers/{single-story-deliver-reference.md → deliver-story-reference.md} +12 -14
- package/.agents/workflows/helpers/{single-story-deliver.md → deliver-story.md} +113 -139
- package/.agents/workflows/helpers/diagnose.md +10 -10
- package/.agents/workflows/helpers/mandrel-sync-config.md +1 -1
- package/.agents/workflows/helpers/parallel-tooling.md +1 -1
- package/.agents/workflows/helpers/signals.md +16 -16
- package/.agents/workflows/helpers/worktree-lifecycle.md +48 -64
- package/.agents/workflows/mandrel-update.md +3 -2
- package/.agents/workflows/plan.md +112 -145
- package/.agents/workflows/qa-assist.md +24 -30
- package/.agents/workflows/qa-explore.md +29 -38
- package/.agents/workflows/qa-run.md +2 -2
- package/README.md +9 -8
- package/docs/CHANGELOG.md +46 -0
- package/lib/cli/registry.js +95 -0
- package/lib/migrations/index.js +6 -5
- package/package.json +5 -3
- package/.agents/personas/architect.md +0 -113
- package/.agents/personas/devops-engineer.md +0 -38
- package/.agents/personas/engineer-mobile.md +0 -120
- package/.agents/personas/engineer-web.md +0 -111
- package/.agents/personas/engineer.md +0 -119
- package/.agents/personas/product.md +0 -94
- package/.agents/personas/project-manager.md +0 -114
- package/.agents/personas/qa-engineer.md +0 -95
- package/.agents/personas/refactorer.md +0 -113
- package/.agents/personas/security-engineer.md +0 -112
- package/.agents/personas/sre.md +0 -86
- package/.agents/personas/technical-writer.md +0 -101
- package/.agents/personas/ux-designer.md +0 -95
- package/.agents/schemas/dispatch-manifest.json +0 -232
- package/.agents/schemas/epic-spec.schema.json +0 -153
- package/.agents/scripts/acceptance-spec-reconciler.js +0 -642
- package/.agents/scripts/dispatcher.js +0 -295
- package/.agents/scripts/epic-audit-prepare.js +0 -497
- package/.agents/scripts/epic-audit-recheck.js +0 -274
- package/.agents/scripts/epic-deliver-note-intervention.js +0 -192
- package/.agents/scripts/epic-deliver-preflight.js +0 -462
- package/.agents/scripts/epic-deliver-prepare.js +0 -590
- package/.agents/scripts/epic-execute-record-wave.js +0 -449
- package/.agents/scripts/epic-plan-clarity.js +0 -211
- package/.agents/scripts/epic-plan-decompose.js +0 -54
- package/.agents/scripts/epic-plan-healthcheck.js +0 -581
- package/.agents/scripts/epic-plan-spec.js +0 -64
- package/.agents/scripts/epic-reconcile.js +0 -625
- package/.agents/scripts/lib/baseline-snapshot.js +0 -979
- package/.agents/scripts/lib/checks/epic-merge-lock-stale.js +0 -54
- package/.agents/scripts/lib/checks/stale-origin-epic.js +0 -49
- package/.agents/scripts/lib/config/lifecycle.js +0 -40
- package/.agents/scripts/lib/config/preflight.js +0 -58
- package/.agents/scripts/lib/config/retro.js +0 -77
- package/.agents/scripts/lib/epic-merge-lock.js +0 -322
- package/.agents/scripts/lib/epic-plan-clarity.js +0 -181
- package/.agents/scripts/lib/epic-plan-ideation.js +0 -261
- package/.agents/scripts/lib/orchestration/context-hydration-engine.js +0 -660
- package/.agents/scripts/lib/orchestration/dispatch-engine.js +0 -134
- package/.agents/scripts/lib/orchestration/dispatch-pipeline.js +0 -183
- package/.agents/scripts/lib/orchestration/epic-cleanup.js +0 -801
- package/.agents/scripts/lib/orchestration/epic-deliver-lease-guard.js +0 -310
- package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/context.js +0 -163
- package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/creation.js +0 -140
- package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/dag.js +0 -64
- package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/diagnostics.js +0 -72
- package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/persist-helpers.js +0 -156
- package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/persist.js +0 -345
- package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/planning-artifacts.js +0 -41
- package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/reconcile-spawn.js +0 -86
- package/.agents/scripts/lib/orchestration/epic-plan-lease-guard.js +0 -391
- package/.agents/scripts/lib/orchestration/epic-plan-spec/phases/drain.js +0 -94
- package/.agents/scripts/lib/orchestration/epic-plan-spec/phases/plan-epic.js +0 -236
- package/.agents/scripts/lib/orchestration/epic-plan-spec/phases/run-spec-phase.js +0 -307
- package/.agents/scripts/lib/orchestration/epic-plan-spec/phases/spec-freshness.js +0 -117
- package/.agents/scripts/lib/orchestration/epic-plan-state-store.js +0 -117
- package/.agents/scripts/lib/orchestration/epic-run-state-store.js +0 -388
- package/.agents/scripts/lib/orchestration/epic-runner/concurrency-gate.js +0 -186
- package/.agents/scripts/lib/orchestration/epic-runner/deliver-phases.js +0 -50
- package/.agents/scripts/lib/orchestration/epic-runner/phases/build-wave-dag.js +0 -129
- package/.agents/scripts/lib/orchestration/epic-runner/phases/snapshot.js +0 -103
- package/.agents/scripts/lib/orchestration/epic-runner/progress-reporter/composition.js +0 -267
- package/.agents/scripts/lib/orchestration/epic-runner/progress-reporter/signals.js +0 -210
- package/.agents/scripts/lib/orchestration/epic-runner/progress-reporter/transport.js +0 -238
- package/.agents/scripts/lib/orchestration/epic-runner/progress-signals/_bullet-format.js +0 -32
- package/.agents/scripts/lib/orchestration/epic-runner/progress-signals/component-drift.js +0 -203
- package/.agents/scripts/lib/orchestration/epic-runner/progress-signals/crap-drift.js +0 -227
- package/.agents/scripts/lib/orchestration/epic-runner/progress-signals/maintainability-drift.js +0 -117
- package/.agents/scripts/lib/orchestration/epic-runner/progress-signals/stalled-worktree.js +0 -37
- package/.agents/scripts/lib/orchestration/epic-runner/story-launcher.js +0 -127
- package/.agents/scripts/lib/orchestration/epic-runner/sub-agent-return.js +0 -276
- package/.agents/scripts/lib/orchestration/epic-runner/wave-scheduler.js +0 -66
- package/.agents/scripts/lib/orchestration/epic-spec-reconciler-apply.js +0 -789
- package/.agents/scripts/lib/orchestration/epic-spec-reconciler-diff.js +0 -676
- package/.agents/scripts/lib/orchestration/epic-spec-reconciler-discriminator.js +0 -389
- package/.agents/scripts/lib/orchestration/epic-spec-reconciler-format.js +0 -230
- package/.agents/scripts/lib/orchestration/epic-spec-reconciler-ops.js +0 -361
- package/.agents/scripts/lib/orchestration/finalize/open-or-locate-pr.js +0 -306
- package/.agents/scripts/lib/orchestration/finalize/post-handoff-comment.js +0 -489
- package/.agents/scripts/lib/orchestration/finalize/sanitize-skip-ci.js +0 -88
- package/.agents/scripts/lib/orchestration/lifecycle/emit-story-dispatch-end.js +0 -147
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/acceptance-reconciler.js +0 -384
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/automerge-armer.js +0 -501
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/automerge-predicate.js +0 -984
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/branch-cleaner.js +0 -264
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/checkpoint-pointer-writer.js +0 -278
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/cleaner.js +0 -355
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/finalizer.js +0 -673
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/index.js +0 -378
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/intervention-recorder.js +0 -140
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/label-transitioner.js +0 -144
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/notify-dispatcher.js +0 -174
- package/.agents/scripts/lib/orchestration/manifest-builder.js +0 -222
- package/.agents/scripts/lib/orchestration/plan-persist/amend.js +0 -359
- package/.agents/scripts/lib/orchestration/plan-persist/delivery-mode.js +0 -127
- package/.agents/scripts/lib/orchestration/post-merge-pipeline.js +0 -205
- package/.agents/scripts/lib/orchestration/recurring-failure-detector.js +0 -152
- package/.agents/scripts/lib/orchestration/retro/phases/checks.js +0 -94
- package/.agents/scripts/lib/orchestration/retro/phases/compose-body.js +0 -571
- package/.agents/scripts/lib/orchestration/retro/phases/gather-signals.js +0 -450
- package/.agents/scripts/lib/orchestration/retro/phases/post-and-mirror.js +0 -191
- package/.agents/scripts/lib/orchestration/retro-heuristics.js +0 -57
- package/.agents/scripts/lib/orchestration/retro-runner.js +0 -197
- package/.agents/scripts/lib/orchestration/skill-capsule-loader.js +0 -109
- package/.agents/scripts/lib/orchestration/spec-renderer.js +0 -447
- package/.agents/scripts/lib/orchestration/story-close/auto-refresh-runner.js +0 -747
- package/.agents/scripts/lib/orchestration/story-close/baseline-attribution/phases/gate-failure.js +0 -211
- package/.agents/scripts/lib/orchestration/story-close/baseline-attribution/phases/pre-merge-attribution.js +0 -158
- package/.agents/scripts/lib/orchestration/story-close/baseline-attribution/phases/refresh-commit.js +0 -446
- package/.agents/scripts/lib/orchestration/story-close/baseline-attribution/phases/regression-projection.js +0 -297
- package/.agents/scripts/lib/orchestration/story-close/baseline-attribution/phases/scope-discovery.js +0 -48
- package/.agents/scripts/lib/orchestration/story-close/baseline-attribution-wiring.js +0 -67
- package/.agents/scripts/lib/orchestration/story-close/baseline-attribution.js +0 -161
- package/.agents/scripts/lib/orchestration/story-close/baseline-friction-body.js +0 -117
- package/.agents/scripts/lib/orchestration/story-close/cd-out-guard.js +0 -86
- package/.agents/scripts/lib/orchestration/story-close/cleanup-reconciler.js +0 -147
- package/.agents/scripts/lib/orchestration/story-close/close-inputs.js +0 -142
- package/.agents/scripts/lib/orchestration/story-close/comment-bodies.js +0 -62
- package/.agents/scripts/lib/orchestration/story-close/merge-runner.js +0 -658
- package/.agents/scripts/lib/orchestration/story-close/merge-subject.js +0 -198
- package/.agents/scripts/lib/orchestration/story-close/phases/branch-restore.js +0 -105
- package/.agents/scripts/lib/orchestration/story-close/phases/close.js +0 -222
- package/.agents/scripts/lib/orchestration/story-close/phases/gates.js +0 -292
- package/.agents/scripts/lib/orchestration/story-close/phases/locked-pipeline.js +0 -270
- package/.agents/scripts/lib/orchestration/story-close/phases/preflight.js +0 -110
- package/.agents/scripts/lib/orchestration/story-close/phases/refresh.js +0 -86
- package/.agents/scripts/lib/orchestration/story-close/phases/timeout-blocked-emitter.js +0 -112
- package/.agents/scripts/lib/orchestration/story-close/phases/timeout-blocked.js +0 -157
- package/.agents/scripts/lib/orchestration/story-close/post-merge-close.js +0 -421
- package/.agents/scripts/lib/orchestration/story-close/pre-merge-validation.js +0 -301
- package/.agents/scripts/lib/orchestration/story-close/shared-checkout-guard.js +0 -163
- package/.agents/scripts/lib/orchestration/story-close-recovery.js +0 -690
- package/.agents/scripts/lib/orchestration/wave-marker.js +0 -28
- package/.agents/scripts/lib/orchestration/wave-record-io.js +0 -218
- package/.agents/scripts/lib/orchestration/wave-record-notifications.js +0 -145
- package/.agents/scripts/lib/orchestration/wave-record-projection.js +0 -212
- package/.agents/scripts/lib/presentation/dispatch-manifest-render.js +0 -111
- package/.agents/scripts/lib/presentation/manifest-builder.js +0 -239
- package/.agents/scripts/lib/presentation/manifest-formatter.js +0 -242
- package/.agents/scripts/lib/presentation/manifest-helpers.js +0 -213
- package/.agents/scripts/lib/presentation/manifest-persistence.js +0 -261
- package/.agents/scripts/lib/presentation/manifest-procedures.js +0 -55
- package/.agents/scripts/lib/presentation/manifest-render-waves.js +0 -306
- package/.agents/scripts/lib/presentation/manifest-renderer.js +0 -188
- package/.agents/scripts/lib/presentation/manifest-story-views.js +0 -110
- package/.agents/scripts/lib/push-epic-retry.js +0 -209
- package/.agents/scripts/lib/spec/index.js +0 -36
- package/.agents/scripts/lib/spec/loader.js +0 -425
- package/.agents/scripts/lib/spec/state.js +0 -208
- package/.agents/scripts/lib/story-init/blocker-validator.js +0 -68
- package/.agents/scripts/lib/story-init/branch-initializer.js +0 -408
- package/.agents/scripts/lib/story-init/context-resolver.js +0 -92
- package/.agents/scripts/lib/story-init/donor-precheck.js +0 -207
- package/.agents/scripts/lib/story-init/state-transitioner.js +0 -80
- package/.agents/scripts/lib/story-init/task-graph-builder.js +0 -124
- package/.agents/scripts/lib/story-init/transition-summary.js +0 -34
- package/.agents/scripts/lib/test-reserved-epic-temp-ids.js +0 -35
- package/.agents/scripts/lib/wave-runner/tick.js +0 -754
- package/.agents/scripts/lib/wave-runner/wave-runner-error.js +0 -20
- package/.agents/scripts/lifecycle-emit-story-dispatch.js +0 -194
- package/.agents/scripts/lifecycle-emit.js +0 -510
- package/.agents/scripts/plan-critics.js +0 -199
- package/.agents/scripts/retro-run.js +0 -218
- package/.agents/scripts/standalone-feedback-rollup.js +0 -188
- package/.agents/scripts/story-close.js +0 -294
- package/.agents/scripts/story-init.js +0 -599
- package/.agents/scripts/story-phase.js +0 -369
- package/.agents/scripts/wave-tick.js +0 -335
- package/.agents/skills/core/baseline-refresh/SKILL.md +0 -181
- package/.agents/skills/core/ci-cd-and-automation/SKILL.md +0 -274
- package/.agents/skills/core/ci-cd-and-automation/examples.md +0 -211
- package/.agents/skills/core/code-simplification/SKILL.md +0 -389
- package/.agents/skills/core/context-engineering/SKILL.md +0 -309
- package/.agents/skills/core/context-engineering/examples.md +0 -58
- package/.agents/skills/core/deprecation-and-migration/SKILL.md +0 -250
- package/.agents/skills/core/epic-plan-consolidate/SKILL.md +0 -172
- package/.agents/skills/core/epic-plan-consolidate/examples.md +0 -51
- package/.agents/skills/core/epic-plan-decompose-author/SKILL.md +0 -441
- package/.agents/skills/core/epic-plan-decompose-author/examples.md +0 -47
- package/.agents/skills/core/epic-plan-premortem/SKILL.md +0 -146
- package/.agents/skills/core/epic-plan-premortem/examples.md +0 -53
- package/.agents/skills/core/epic-plan-spec-author/SKILL.md +0 -413
- package/.agents/skills/core/epic-plan-spec-author/examples.md +0 -91
- package/.agents/skills/core/frontend-ui-engineering/SKILL.md +0 -357
- package/.agents/skills/core/hydrate-context/SKILL.md +0 -123
- package/.agents/skills/core/idea-refinement/examples.md +0 -437
- package/.agents/skills/core/idea-refinement/frameworks.md +0 -135
- package/.agents/skills/core/incremental-implementation/SKILL.md +0 -271
- package/.agents/skills/core/introducing-a-baseline-gate/SKILL.md +0 -213
- package/.agents/skills/core/knowledge-transfer/SKILL.md +0 -180
- package/.agents/skills/core/mutation-survivor-remediation/SKILL.md +0 -117
- package/.agents/skills/core/performance-optimization/SKILL.md +0 -314
- package/.agents/skills/core/planning-and-task-breakdown/SKILL.md +0 -277
- package/.agents/skills/core/property-based-testing/SKILL.md +0 -148
- package/.agents/skills/core/refactoring-discipline/SKILL.md +0 -111
- package/.agents/skills/core/shipping-and-launch/SKILL.md +0 -328
- package/.agents/skills/core/spec-driven-development/SKILL.md +0 -252
- package/.agents/skills/core/test-driven-development/SKILL.md +0 -475
- package/.agents/skills/core/using-agent-skills/SKILL.md +0 -232
- package/.agents/skills/stack/architecture/monorepo-path-strategist/SKILL.md +0 -31
- package/.agents/skills/stack/architecture/structured-output-zod/SKILL.md +0 -51
- package/.agents/skills/stack/architecture/subagent-orchestration/SKILL.md +0 -76
- package/.agents/skills/stack/backend/cloudflare-hono-architect/SKILL.md +0 -31
- package/.agents/skills/stack/backend/cloudflare-hono-architect/examples/route-template.ts +0 -33
- package/.agents/skills/stack/backend/cloudflare-queue-manager/SKILL.md +0 -31
- package/.agents/skills/stack/backend/cloudflare-workers/SKILL.md +0 -51
- package/.agents/skills/stack/backend/highlevel-crm/SKILL.md +0 -54
- package/.agents/skills/stack/backend/sqlite-drizzle-expert/SKILL.md +0 -29
- package/.agents/skills/stack/backend/sqlite-drizzle-expert/examples/schema-template.ts +0 -30
- package/.agents/skills/stack/backend/stripe-integration/SKILL.md +0 -57
- package/.agents/skills/stack/backend/stripe-integration/scripts/listen-stripe.sh +0 -9
- package/.agents/skills/stack/backend/turso-sqlite/SKILL.md +0 -48
- package/.agents/skills/stack/frontend/astro/SKILL.md +0 -62
- package/.agents/skills/stack/frontend/astro-react-island-strategist/SKILL.md +0 -30
- package/.agents/skills/stack/frontend/expo-react-native-developer/SKILL.md +0 -29
- package/.agents/skills/stack/frontend/google-analytics-v4/SKILL.md +0 -50
- package/.agents/skills/stack/frontend/tailwind-v4/SKILL.md +0 -58
- package/.agents/skills/stack/frontend/ui-accessibility-engineer/SKILL.md +0 -34
- package/.agents/skills/stack/qa/audit-accessibility/SKILL.md +0 -51
- package/.agents/skills/stack/qa/lighthouse-baseline/SKILL.md +0 -199
- package/.agents/skills/stack/security/backend-security-patterns/SKILL.md +0 -68
- package/.agents/workflows/helpers/deliver-epic-reference.md +0 -534
- package/.agents/workflows/helpers/deliver-epic.md +0 -955
- package/.agents/workflows/helpers/deliver-stories.md +0 -440
- package/.agents/workflows/helpers/epic-audit.md +0 -189
- package/.agents/workflows/helpers/epic-deliver-story.md +0 -427
- package/.agents/workflows/helpers/epic-testing.md +0 -125
- package/.agents/workflows/helpers/plan-epic-reference.md +0 -160
- package/.agents/workflows/helpers/plan-epic.md +0 -351
- package/.agents/workflows/helpers/plan-story.md +0 -251
- package/.agents/workflows/helpers/scope-triage-gate.md +0 -108
- /package/.agents/scripts/lib/orchestration/{epic-plan-spec/phases → planning}/spec-authoring-grounding.js +0 -0
|
@@ -4,8 +4,8 @@ This is the consumer-facing reference for the quality gates the framework
|
|
|
4
4
|
runs against your repo: the lint baseline ratchet, the maintainability
|
|
5
5
|
ratchet, the CRAP per-method gate, the **absolute quality floors**
|
|
6
6
|
(90/85/90 coverage, MI ≥ 70, CRAP ≤ 20), the anti-thrashing protocol,
|
|
7
|
-
and the concurrent close-safety retry that protects
|
|
8
|
-
multiple Stories close in quick succession.
|
|
7
|
+
and the concurrent close-safety retry that protects Story-branch pushes
|
|
8
|
+
when multiple Stories close in quick succession.
|
|
9
9
|
|
|
10
10
|
The floor + ratchet duo is intentional: the ratchet protects against
|
|
11
11
|
regressions on touched files; the floor enforces an absolute threshold
|
|
@@ -36,10 +36,9 @@ it once and reuse the context as you read through any individual gate.
|
|
|
36
36
|
|
|
37
37
|
## Concurrent close safety
|
|
38
38
|
|
|
39
|
-
`/deliver`
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
the new remote tip, push again — bounded by
|
|
39
|
+
`/deliver` may close multiple Stories from separate Story branches in quick
|
|
40
|
+
succession. The push step inside `single-story-close.js` refreshes against the
|
|
41
|
+
latest `main` and retries a rejected Story-branch push — bounded by
|
|
43
42
|
`DEFAULT_STORY_MERGE_RETRY.maxAttempts` (3) and
|
|
44
43
|
`DEFAULT_STORY_MERGE_RETRY.backoffMs` (`[250, 500, 1000]`) from
|
|
45
44
|
`.agents/scripts/lib/config/runners.js`.
|
|
@@ -117,18 +116,14 @@ The same files-out-of-scope list as before, declared in `.c8rc.cjs`:
|
|
|
117
116
|
whose meaningful logic (label taxonomy + project field defs) lives
|
|
118
117
|
in `lib/label-taxonomy.js` and is unit-tested there. The CLI shell
|
|
119
118
|
itself is integration-only against a live GitHub repo.
|
|
120
|
-
-
|
|
121
|
-
unit-tested hydration engine; end-to-end coverage requires a real
|
|
122
|
-
provider tree and Story prompt context, which lives in integration
|
|
123
|
-
tests.
|
|
124
|
-
- `plan-context.js`, `plan-persist.js`, `epic-plan-healthcheck.js` —
|
|
119
|
+
- `plan-context.js`, `plan-persist.js` —
|
|
125
120
|
`/plan` CLI shells with no unit-test seam; the meaningful
|
|
126
121
|
orchestration logic lives in `lib/orchestration/plan-context.js`,
|
|
127
122
|
`lib/orchestration/plan-persist/*`, and the plan phase modules, and is
|
|
128
123
|
unit-tested there.
|
|
129
124
|
- A larger Story #1702 carve-out of top-level CLI gates, orchestration
|
|
130
125
|
CLIs, git-manipulation CLIs, and `lib/*` glue (e.g. `lint-baseline.js`,
|
|
131
|
-
`story-
|
|
126
|
+
`single-story-init.js`, `run-tests.js`,
|
|
132
127
|
`lib/config-schema.js`) — see the `.c8rc.cjs` header comment for the
|
|
133
128
|
per-category rationale and the authoritative entry list.
|
|
134
129
|
|
|
@@ -251,7 +246,7 @@ file. When any threshold under
|
|
|
251
246
|
the qualitative anti-thrashing cues in
|
|
252
247
|
[`.agents/instructions.md`](../instructions.md) are tripped, the
|
|
253
248
|
friction logger flips the Story to `agent::blocked` and
|
|
254
|
-
posts a structured `friction` comment on the
|
|
249
|
+
posts a structured `friction` comment on the Story so the operator has
|
|
255
250
|
the trace.
|
|
256
251
|
|
|
257
252
|
---
|
|
@@ -261,9 +256,8 @@ the trace.
|
|
|
261
256
|
After a Story's implementation commits land and **before** the Story
|
|
262
257
|
proceeds to close, delivery runs a bounded acceptance self-eval loop
|
|
263
258
|
(Step 1a of
|
|
264
|
-
[`helpers/
|
|
265
|
-
|
|
266
|
-
in
|
|
259
|
+
[`helpers/deliver-story`](../workflows/helpers/deliver-story.md); the shared
|
|
260
|
+
per-round mechanic lives in
|
|
267
261
|
[`helpers/acceptance-self-eval`](../workflows/helpers/acceptance-self-eval.md),
|
|
268
262
|
with the gate CLI at
|
|
269
263
|
[`.agents/scripts/acceptance-eval.js`](../scripts/acceptance-eval.js)).
|
|
@@ -293,8 +287,8 @@ the `delivery.acceptanceEval` field reference.
|
|
|
293
287
|
> Baseline envelope, axes, and component model: see the
|
|
294
288
|
> [Baseline reference](#baseline-reference) section below.
|
|
295
289
|
|
|
296
|
-
The lint baseline engine enforces zero-deterioration during
|
|
297
|
-
|
|
290
|
+
The lint baseline engine enforces zero-deterioration during Story
|
|
291
|
+
delivery. Integrations fail if new lint warnings are introduced, and the
|
|
298
292
|
baseline automatically tightens when the codebase improves.
|
|
299
293
|
|
|
300
294
|
The canonical baseline file lives at `baselines/lint.json` (override via
|
|
@@ -319,7 +313,7 @@ this was removed in a pre-npm-era release; the operator is now the gate.
|
|
|
319
313
|
A per-file maintainability scoring engine computes composite scores based
|
|
320
314
|
on cyclomatic complexity, file length, and dependency counts. The
|
|
321
315
|
`baselines/maintainability.json` baseline prevents score degradation
|
|
322
|
-
between
|
|
316
|
+
between Stories.
|
|
323
317
|
|
|
324
318
|
Refresh with `npm run maintainability:update`.
|
|
325
319
|
|
|
@@ -49,13 +49,13 @@ description, edit the workflow file’s front-matter and regenerate.
|
|
|
49
49
|
| `/audit-security` | Audit dependency CVEs, input-validation gaps, secrets handling, and auth boundaries; emit a structured High/Medium/Low findings report. |
|
|
50
50
|
| `/audit-seo` | Audit SEO fundamentals and Generative Engine Optimization signals (meta, structured data, crawlability); only relevant for web targets. |
|
|
51
51
|
| `/audit-sre` | "Audit production-readiness for a release candidate: SLOs, observability, runbooks, error budgets, and rollback paths." |
|
|
52
|
-
| `/audit-to-stories` | Convert findings produced by the audit-\* workflows into actionable GitHub Stories. Reads temp/audits/audit-\*-results.md, groups findings cross-audit, deduplicates against existing Issues by fingerprint, and either chains into /plan --
|
|
52
|
+
| `/audit-to-stories` | Convert findings produced by the audit-\* workflows into actionable GitHub Stories. Reads temp/audits/audit-\*-results.md, groups findings cross-audit, deduplicates against existing Issues by fingerprint, and either chains into /plan --seed-file or opens standalone Stories. |
|
|
53
53
|
| `/audit-ux-ui` | Audit UX/UI consistency and design system adherence |
|
|
54
|
-
| `/deliver` | Unified delivery entry point.
|
|
54
|
+
| `/deliver` | Unified delivery entry point. Delivers one or more Stories via the single deliver-story engine — story-<id> → PR → main. Sequences N>1 by depends\_on and runs the per-run epilogue once at the end. |
|
|
55
55
|
| `/git-cleanup` | Tidy the local checkout in four phases: fast-forward `main`, prune stale remote-tracking refs, sweep merged branches (squash-aware), and triage `git stash` entries — each step gated by operator confirmation. |
|
|
56
56
|
| `/git-deliver` | Single ad-hoc delivery command for working-tree changes. Detects the git setup and escalates to the right terminal step — commit only, commit + push, or commit + push + open a PR with native auto-merge — picking the default from observable state and letting flags pin any level explicitly. Replaces the retired git-commit-all, git-push, and git-pr-all trio. |
|
|
57
57
|
| `/mandrel-update` | npm-era upgrade wraparound for a Mandrel consumer. Runs `npx mandrel update` (resolve newest published version → install → re-materialize `.agents/` → migrate → doctor → surface changelog) as the single mechanical step, then walks the operator through the judgment wraparound the CLI deliberately leaves unowned: reconcile `.agentrc.json`, install the Epic #1386 quality-gate surface, refresh the harness permission allowlist, reconcile the consumer's `AGENTS.md` / runbooks against the surfaced changelog, and stage + commit the staged lockfile bump. |
|
|
58
|
-
| `/plan` | Unified planning entry point.
|
|
58
|
+
| `/plan` | Unified planning entry point. Interrogate → author → persist. Emits one Story by default (folded Tech Spec in the Story body); splits into N>1 only under the default-single split policy. |
|
|
59
59
|
| `/qa-assist` | Human-led QA assist loop — set up, then ride a rolling multi-observation intake session. The operator reports observations in any order; the agent enriches each (repro + root-cause file:line + coverage verdict for bugs; analysis + options + recommendation for enhancements), asks clarifying questions only when ambiguous, and appends a redacted ledger item — recording, never planning — to a persistent, resumable session under temp/qa/. Only when the operator says they are done does it review the full ledger and hand off to /plan. |
|
|
60
60
|
| `/qa-explore` | Agent-led exploratory-QA loop — the agent Plans a surface with an explicit static-vs-drive method choice, drives it (browser MCP or static), and captures ledger items read-only, then Triages — a bounded per-surface session, HITL-gated at every phase transition, routed through the shared dedup/coverage/classification/missing-test/redaction/session core under temp/qa/ |
|
|
61
61
|
| `/qa-run` | Drive Gherkin scenarios through a real browser as an agent-driven QA sweep |
|
package/.agents/instructions.md
CHANGED
|
@@ -8,34 +8,46 @@ set. You MUST strictly adhere to the following rules:
|
|
|
8
8
|
|
|
9
9
|
## 1. System Guardrails & Initialization
|
|
10
10
|
|
|
11
|
-
### A.
|
|
11
|
+
### A. Role Framing (no persona packs)
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
13
|
+
v2 has **no** `.agents/personas/` packs and **no** `persona::*` GitHub labels.
|
|
14
|
+
Behavioral constraints come from this file, always-on / on-demand rules, and
|
|
15
|
+
skills. Role-scoped spawn contexts (when used) live under `.agents/agents/`
|
|
16
|
+
via `delivery.routing.roleScopedAgents`. QA auth identities (`qa.personas`)
|
|
17
|
+
are a separate fixture concept — not agent behavior packs.
|
|
17
18
|
|
|
18
|
-
|
|
19
|
-
|
|
19
|
+
If a user says "act as [role]" in chat, apply the matching skill / workflow
|
|
20
|
+
guidance (e.g. QA skills for verification work, security skill for threat
|
|
21
|
+
modeling) rather than looking for a persona file.
|
|
20
22
|
|
|
21
23
|
### B. Skill Activation
|
|
22
24
|
|
|
23
25
|
The skill library uses a **two-tier architecture**:
|
|
24
26
|
|
|
25
27
|
- **`core/`** — Universal, process-driven skills that apply across any project
|
|
26
|
-
(e.g., `core/debugging-and-error-recovery`, `core/
|
|
28
|
+
(e.g., `core/debugging-and-error-recovery`, `core/code-review-and-quality`,
|
|
27
29
|
`core/security-and-hardening`). Always check for a relevant core skill first.
|
|
28
|
-
-
|
|
29
|
-
|
|
30
|
-
`
|
|
31
|
-
|
|
30
|
+
The **test-first** discipline (TDD cycle, Prove-It Pattern, good-test style,
|
|
31
|
+
property-based technique) lives in
|
|
32
|
+
[`rules/testing-standards.md`](rules/testing-standards.md), not a skill.
|
|
33
|
+
- **`stack/`** — Tech-stack-specific skills for concrete tools (e.g.,
|
|
34
|
+
`stack/qa/playwright`, `stack/qa/vitest`, `stack/qa/gherkin-authoring`).
|
|
35
|
+
Apply these when the project uses that specific technology. For third-party
|
|
36
|
+
library and framework knowledge not covered here, use the live-docs lookup
|
|
37
|
+
mandated in § 1.C rather than a frozen in-repo cache.
|
|
32
38
|
|
|
33
39
|
When a task involves a specific domain or technology, you MUST read the
|
|
34
40
|
corresponding `.agents/skills/[tier]/[category]/[skill-name]/SKILL.md` file and
|
|
35
41
|
apply its constraints. Review the skill's `examples/` directory or
|
|
36
42
|
`examples.md` sibling **when present and relevant** to the task — most skills
|
|
37
|
-
do not ship one, so do not probe blindly. When uncertain which skill
|
|
38
|
-
|
|
43
|
+
do not ship one, so do not probe blindly. When uncertain which skill applies,
|
|
44
|
+
match the task against the one-line `description` in each skill's frontmatter
|
|
45
|
+
(catalogued in `.agents/skills/skills.index.json`). Skills compose: a complete
|
|
46
|
+
feature typically flows `idea-refinement` → the `/plan` workflow →
|
|
47
|
+
implementation test-first (`rules/testing-standards.md`) →
|
|
48
|
+
`code-review-and-quality` — not every task needs every skill. The always-on
|
|
49
|
+
operating posture (surface assumptions, manage confusion, push back on flawed
|
|
50
|
+
approaches, verify don't assume) is governed by § 3–4 and § 1.I of this file.
|
|
39
51
|
|
|
40
52
|
### C. Proactive Documentation
|
|
41
53
|
|
|
@@ -96,12 +108,17 @@ does not re-pay their bytes on every turn.
|
|
|
96
108
|
- **Always-on core** (loaded alongside this file):
|
|
97
109
|
- [`rules/security-baseline.md`](rules/security-baseline.md) — inviolable
|
|
98
110
|
security MUSTs; applies to every piece of code generated.
|
|
99
|
-
- [`rules/git-conventions.md`](rules/git-conventions.md) —
|
|
100
|
-
branch,
|
|
111
|
+
- [`rules/git-conventions.md`](rules/git-conventions.md) — the always-on git
|
|
112
|
+
core (branch shapes, commit-subject format, `refs #`, push/hygiene MUSTs);
|
|
113
|
+
every commit, branch, and PR touches it.
|
|
101
114
|
|
|
102
115
|
- **On-demand** — read the file **before** doing the matching work; each opens
|
|
103
116
|
with a one-line "this rule applies when…" scope header, so skimming its first
|
|
104
117
|
paragraph confirms whether it governs the task at hand:
|
|
118
|
+
- [`rules/git-conventions-reference.md`](rules/git-conventions-reference.md)
|
|
119
|
+
— the git-history mechanics the core summarizes: hard-cutover policy, the
|
|
120
|
+
push-hook false-negative signature, shared-checkout contention, the
|
|
121
|
+
docs-freshness gate, and `meta::*` routing labels.
|
|
105
122
|
- [`rules/shell-conventions.md`](rules/shell-conventions.md) — before
|
|
106
123
|
chaining shell commands or writing cross-platform command strings.
|
|
107
124
|
- [`rules/testing-standards.md`](rules/testing-standards.md) — before
|
|
@@ -138,27 +155,22 @@ technology context is intentionally kept out of `.agentrc.json`.
|
|
|
138
155
|
|
|
139
156
|
### H. Observability & Friction Telemetry
|
|
140
157
|
|
|
141
|
-
You MUST log telemetry about
|
|
142
|
-
|
|
143
|
-
`diagnose-friction.js` appends one
|
|
144
|
-
per-
|
|
145
|
-
|
|
146
|
-
back). It is not posted to the GitHub ticket at capture time — the retro
|
|
147
|
-
phase is what surfaces the aggregated friction as routed proposals.
|
|
158
|
+
You MUST log telemetry about operational difficulty or automation
|
|
159
|
+
opportunities you hit. Friction is a **local NDJSON signal**:
|
|
160
|
+
`diagnose-friction.js` appends one `kind: friction` record to the per-Epic/
|
|
161
|
+
per-Story `signals.ndjson` stream on local disk — not posted to the ticket at
|
|
162
|
+
capture time; the retro phase surfaces the aggregate as routed proposals.
|
|
148
163
|
|
|
149
164
|
- **Command**:
|
|
150
165
|
`node .agents/scripts/diagnose-friction.js --story [STORY_ID] --cmd [FAILED_COMMAND]`
|
|
151
|
-
(add `--epic [EPIC_ID]`
|
|
152
|
-
- **When to fire**:
|
|
153
|
-
command
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
same canonical schema. The signal is never silently dropped — a
|
|
160
|
-
best-effort write failure is logged, not swallowed into a promise of a
|
|
161
|
-
side-file that no reader consumes.
|
|
166
|
+
(add `--epic [EPIC_ID]` under an Epic).
|
|
167
|
+
- **When to fire**: after repeated tool-validation errors, an unrecoverable
|
|
168
|
+
command failure, ambiguity needing self-correction, or repetitive
|
|
169
|
+
boilerplate steps a workflow/skill could simplify.
|
|
170
|
+
|
|
171
|
+
The schema validation, the standalone (no-Epic) stream path, and the
|
|
172
|
+
never-silently-dropped guarantee are reference detail — see
|
|
173
|
+
[`docs/execution-reference.md` § Friction telemetry](docs/execution-reference.md#friction-telemetry).
|
|
162
174
|
|
|
163
175
|
#### Log Level Control
|
|
164
176
|
|
|
@@ -192,18 +204,14 @@ hand back to the operator. Do not paper over the loop with another
|
|
|
192
204
|
just-in-case retry.
|
|
193
205
|
|
|
194
206
|
This protocol is not soft-prompt-only — it has a runtime substrate. While
|
|
195
|
-
executing as a Story delivery sub-agent (via `helpers/
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
recent `story.heartbeat`, no commit on its `story-<id>` branch, and no
|
|
204
|
-
`agent::blocked` label is exactly the failure mode the idle watchdog is
|
|
205
|
-
built to catch, and the watchdog will re-dispatch (or escalate) the Story
|
|
206
|
-
without your participation.
|
|
207
|
+
executing as a Story delivery sub-agent (via `helpers/deliver-story`), you
|
|
208
|
+
MUST emit a `story.heartbeat` lifecycle event on every Task transition (or
|
|
209
|
+
whenever you stall on a long-running step) so the parent `/deliver`
|
|
210
|
+
sequencer can distinguish a child still making progress from a dead one. If
|
|
211
|
+
you genuinely cannot proceed, transition to `agent::blocked` and exit
|
|
212
|
+
non-zero — never fall silent. A child with no recent `story.heartbeat`, no
|
|
213
|
+
commit on its `story-<id>` branch, and no `agent::blocked` label is exactly
|
|
214
|
+
the stall shape the parent run must detect and escalate.
|
|
207
215
|
|
|
208
216
|
### J. HITL Blocker Escalation (Safe Execution)
|
|
209
217
|
|
|
@@ -233,8 +241,7 @@ resolve by this **total ordering** (higher wins):
|
|
|
233
241
|
(§ 1.E).
|
|
234
242
|
2. **This file** — `.agents/instructions.md`.
|
|
235
243
|
3. **Global rules** — `.agents/rules/*.md` (§ 1.F).
|
|
236
|
-
4. **
|
|
237
|
-
5. **Skills** — `.agents/skills/**/SKILL.md` (§ 1.B).
|
|
244
|
+
4. **Skills** — `.agents/skills/**/SKILL.md` (§ 1.B).
|
|
238
245
|
|
|
239
246
|
Two carve-outs refine the ordering:
|
|
240
247
|
|
|
@@ -242,18 +249,18 @@ Two carve-outs refine the ordering:
|
|
|
242
249
|
tier overlap, the narrower, more-specific statement governs the broader one
|
|
243
250
|
(e.g. a stack-specific skill refines a general core skill; a per-rule
|
|
244
251
|
statement refines a cross-rule one).
|
|
245
|
-
- **`rules/security-baseline.md` is inviolable.** No
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
252
|
+
- **`rules/security-baseline.md` is inviolable.** No skill or local override
|
|
253
|
+
may relax a security MUST. A security constraint that conflicts with any
|
|
254
|
+
lower-tier guidance — or with a local override — always wins, regardless of
|
|
255
|
+
its tier position above.
|
|
249
256
|
|
|
250
257
|
---
|
|
251
258
|
|
|
252
259
|
## 2. FinOps & Token Budgeting (Economic Guardrails)
|
|
253
260
|
|
|
254
261
|
Mandrel does **not** enforce live LLM spend from response metadata. It caps
|
|
255
|
-
**
|
|
256
|
-
|
|
262
|
+
**planning context budget** (`planning.context.maxBytes`) and related
|
|
263
|
+
envelopes; your host
|
|
257
264
|
runtime owns session quota and hard stops. The config keys, the ≈4-char/token
|
|
258
265
|
estimate, and the elision behaviour are reference detail — see
|
|
259
266
|
[`docs/execution-reference.md` § FinOps & token budgeting](docs/execution-reference.md#finops--token-budgeting-economic-guardrails).
|
|
@@ -273,7 +280,7 @@ budget grounds.
|
|
|
273
280
|
ensures (generates or reuses) a per-Epic docs digest — a single compact
|
|
274
281
|
outline (path, byte size, heading outline with line numbers, and the
|
|
275
282
|
first paragraph under each `##`) built from `project.docsContextFiles`
|
|
276
|
-
— at `temp/
|
|
283
|
+
— at `temp/run-<id>/docs-digest.md` (`plan-context.js`, via the
|
|
277
284
|
shared generator in
|
|
278
285
|
`.agents/scripts/lib/orchestration/docs-digest.js`; the same file the
|
|
279
286
|
`/deliver` story sub-agents below already consume). Use the digest to
|
|
@@ -293,19 +300,13 @@ budget grounds.
|
|
|
293
300
|
hard cutover: there is no read-every-`docsContextFiles`-file branch
|
|
294
301
|
retained.
|
|
295
302
|
- **Digest-first Reading (`/deliver` story sub-agents)**: A `/deliver`
|
|
296
|
-
Story delivery sub-agent (dispatched via `helpers/
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
docs
|
|
300
|
-
`
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
relevant to the Story at hand, then **pull the full file on demand**
|
|
304
|
-
(reading the section at the line number the digest names) when a section
|
|
305
|
-
bears on the change. When `docsDigestPath` is null (the project has no
|
|
306
|
-
`project.docsContextFiles` configured) there is no digest to read and no
|
|
307
|
-
per-Story docs mandate — read a full doc only if the Story's own context
|
|
308
|
-
points you at one. This is the hard cutover from the former
|
|
303
|
+
Story delivery sub-agent (dispatched via `helpers/deliver-story`) does
|
|
304
|
+
**not** re-read the full `project.docsContextFiles` set per Story. When
|
|
305
|
+
the caller threads a `docsDigestPath`, use that compact outline to decide
|
|
306
|
+
which docs are relevant, then **pull the full file on demand**. When
|
|
307
|
+
`docsDigestPath` is null there is no digest to read and no per-Story docs
|
|
308
|
+
mandate — read a full doc only if the Story's own context points you at
|
|
309
|
+
one. This is the hard cutover from the former
|
|
309
310
|
read-every-file-per-Story rule: delivery children no longer ingest the
|
|
310
311
|
whole docs set up front.
|
|
311
312
|
- **Standalone-Story planning path (`story-plan.js --emit-context`)**:
|
|
@@ -386,24 +387,23 @@ budget grounds.
|
|
|
386
387
|
|
|
387
388
|
---
|
|
388
389
|
|
|
389
|
-
## 5. Git &
|
|
390
|
+
## 5. Git & Story Protocol (Strict Standards)
|
|
390
391
|
|
|
391
392
|
To maintain a clean and readable repository history, you MUST follow these
|
|
392
|
-
strict conventions for all
|
|
393
|
+
strict conventions for all Story-related Git operations. See
|
|
393
394
|
[`.agents/rules/git-conventions.md`](rules/git-conventions.md) for the full
|
|
394
395
|
canonical reference.
|
|
395
396
|
|
|
396
397
|
### A. Branch Naming (Canonical)
|
|
397
398
|
|
|
398
|
-
|
|
399
|
-
|
|
399
|
+
v2 delivery uses one branch shape. The runtime creates and maintains it
|
|
400
|
+
via `single-story-init.js`; agents commit on that branch only.
|
|
400
401
|
|
|
401
|
-
| Purpose
|
|
402
|
-
|
|
|
403
|
-
| Story execution
|
|
404
|
-
| Epic integration | `epic/<epicId>` | `/deliver` slash command | Story branches merge into this branch with `--no-ff`. Pushed per wave. |
|
|
402
|
+
| Purpose | Format | Owner | Notes |
|
|
403
|
+
| --------------- | ----------------- | ----------------------- | --------------------------------------------------------------------- |
|
|
404
|
+
| Story execution | `story-<storyId>` | `single-story-init.js` | Per-Story worktree at `.worktrees/story-<storyId>/`. PR target is `main` (squash + required checks). There is no `epic/<id>` integration branch and no `--no-ff` wave merge. |
|
|
405
405
|
|
|
406
|
-
- **Verification**: After `story-init.js` returns, confirm
|
|
406
|
+
- **Verification**: After `single-story-init.js` returns, confirm
|
|
407
407
|
`git branch --show-current` reports `story-<storyId>` before making any
|
|
408
408
|
commits. If it does not, **STOP** and re-init.
|
|
409
409
|
|
|
@@ -419,31 +419,30 @@ prompted.
|
|
|
419
419
|
|
|
420
420
|
### C. History Hygiene
|
|
421
421
|
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
`
|
|
440
|
-
`
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
as Section 5.A.
|
|
422
|
+
Every Story reaches `main` via its own PR (`story-<id>` → squash + required
|
|
423
|
+
checks). `helpers/deliver-story` / `single-story-close.js` open that PR;
|
|
424
|
+
there is no Epic integration branch and no in-script push to `main`.
|
|
425
|
+
|
|
426
|
+
### D. Ticket hierarchy (Story-only)
|
|
427
|
+
|
|
428
|
+
v2 collapses the ticket model to **Story**. Acceptance criteria and
|
|
429
|
+
verification steps live inline on the Story body (`acceptance[]` /
|
|
430
|
+
`verify[]`); the folded Tech Spec lives inline in `## Spec` (over-budget
|
|
431
|
+
Specs fail closed — split or tighten; never write under `docs/`). Optional
|
|
432
|
+
`depends_on` edges order rare multi-Story plan-runs.
|
|
433
|
+
|
|
434
|
+
- `/plan` emits one or more `type::story` issues (default N=1); N>1 shares a
|
|
435
|
+
`plan-run::<id>` label.
|
|
436
|
+
- Each Story is executed by `helpers/deliver-story` (invoked from
|
|
437
|
+
[`/deliver`](workflows/deliver.md)). There is no per-Task sub-loop; the
|
|
438
|
+
agent authors commit subjects directly per
|
|
439
|
+
[`rules/git-conventions.md`](rules/git-conventions.md) and references the
|
|
440
|
+
Story via `(refs #<storyId>)`.
|
|
441
|
+
- Branch model matches Section 5.A (`story-<id>` → PR → `main`).
|
|
442
|
+
- There is no `type::epic` / `type::task` label and no Epic issue form. An
|
|
443
|
+
Epic is at most an optional untyped human umbrella issue outside
|
|
444
|
+
orchestration; `/deliver` refuses tickets that still carry an
|
|
445
|
+
`Epic: #N` footer.
|
|
447
446
|
|
|
448
447
|
---
|
|
449
448
|
|
|
@@ -461,12 +460,12 @@ To keep the repository clean and avoid polluting the Git history:
|
|
|
461
460
|
|
|
462
461
|
## 7. Complexity-Aware Execution
|
|
463
462
|
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
`.agents/scripts/lib/orchestration/ticket-validator-sizing.js` (
|
|
469
|
-
|
|
463
|
+
`/plan` sizes each Story as a **capability slice a frontier model delivers
|
|
464
|
+
and self-verifies in one pass** — a broad footprint is normal when the
|
|
465
|
+
change is cohesive. The session-capacity backstop lives in one place:
|
|
466
|
+
`DEFAULT_MODEL_CAPACITY` in
|
|
467
|
+
`.agents/scripts/lib/orchestration/ticket-validator-sizing.js` (framework
|
|
468
|
+
constant — not operator-tunable). Do not re-slice a capability-sized
|
|
470
469
|
Story into per-module fragments just because it touches many files.
|
|
471
470
|
|
|
472
471
|
### A. When You See `⚠️ COMPLEXITY WARNING`
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
# CI Failure Triage & Remediation
|
|
2
2
|
|
|
3
3
|
This rule applies when a delivery path is watching a pull request's CI checks
|
|
4
|
-
and a required check is red (or repeatedly slow) — the
|
|
5
|
-
|
|
6
|
-
([`deliver-epic.md`](../workflows/helpers/deliver-epic.md)) and the standalone
|
|
4
|
+
and a required check is red (or repeatedly slow) — the `/deliver` router
|
|
5
|
+
([`deliver.md`](../workflows/deliver.md)) runs each Story through the
|
|
7
6
|
single-Story Step 4 CI watch + fix loop
|
|
8
|
-
([`
|
|
9
|
-
|
|
7
|
+
([`deliver-story.md`](../workflows/helpers/deliver-story.md)), which hands off
|
|
8
|
+
to it. It is the single triage brain that mechanism defers to:
|
|
10
9
|
the watcher (`pr-watch-with-update.js`) surfaces the failing check, the run
|
|
11
10
|
link, and the failure signature; this rule decides what to do next.
|
|
12
11
|
|
|
@@ -50,18 +49,15 @@ path) or surfaces it inline (standalone path) — start from that digest.
|
|
|
50
49
|
A deterministic failure caused by the diff is remediated at source. Use the
|
|
51
50
|
existing per-check fix table — do **not** duplicate it here:
|
|
52
51
|
|
|
53
|
-
- **
|
|
54
|
-
[`deliver-
|
|
55
|
-
(§ 8.1 Remediation).
|
|
56
|
-
- **Standalone Step 4**:
|
|
57
|
-
[`single-story-deliver-reference.md` § Step 4 — CI watch + fix recovery](../workflows/helpers/single-story-deliver-reference.md#step-4--ci-watch--fix-recovery).
|
|
52
|
+
- **Story Step 4**:
|
|
53
|
+
[`deliver-story-reference.md` § Step 4 — CI watch + fix recovery](../workflows/helpers/deliver-story-reference.md#step-4--ci-watch--fix-recovery).
|
|
58
54
|
|
|
59
55
|
In short: lint/format → `npm run lint` + biome apply; maintainability/crap
|
|
60
56
|
baseline drift → re-run the ratcheted script and fix at source (refresh a
|
|
61
57
|
baseline only when the diff demonstrably can't be covered); test failure →
|
|
62
58
|
reproduce with `npm test`, fix source or test; coverage threshold → add tests.
|
|
63
|
-
Commit the fix on the delivery branch (`
|
|
64
|
-
|
|
59
|
+
Commit the fix on the delivery branch (`story-<storyId>`), push, and re-run the
|
|
60
|
+
watcher. Auto-merge stays armed across retries.
|
|
65
61
|
|
|
66
62
|
## Infra, transient, and flaky failures ARE root-cause defects
|
|
67
63
|
|