agentic-flow-kit 1.8.2 → 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/README.md +113 -148
- package/bin/flow-kit.mjs +5 -2
- package/locales/en/installer.json +25 -0
- package/locales/en/overrides/.agents/commands/deploy.md +52 -0
- package/locales/en/overrides/.agents/commands/maintain.md +76 -0
- package/locales/en/overrides/.agents/commands/new-task.md +89 -0
- package/locales/en/overrides/.agents/commands/pipeline-run.md +56 -0
- package/locales/en/overrides/.agents/commands/pr-review.md +30 -0
- package/locales/en/overrides/.agents/commands/review.md +93 -0
- package/locales/en/overrides/.agents/commands/stages.md +256 -0
- package/locales/en/overrides/.agents/notes/pr-review-cost-discipline.md +48 -0
- package/locales/en/overrides/.agents/notes/process-order-rule.md +21 -0
- package/locales/en/overrides/.agents/notes/runtime-env.local.example.md +21 -0
- package/locales/en/overrides/.agents/pipelines/_TEMPLATE.md +75 -0
- package/locales/en/overrides/.agents/pipelines/pipeline-closing.md +28 -0
- package/locales/en/overrides/.agents/roles/implementer.md +28 -0
- package/locales/en/overrides/.agents/roles/independent-reviewer.md +39 -0
- package/locales/en/overrides/.agents/roles/pr-adjudicator.md +27 -0
- package/locales/en/overrides/.agents/roles/pr-finder.md +51 -0
- package/locales/en/overrides/.agents/roles/pr-verifier.md +44 -0
- package/locales/en/overrides/.agents/roles/ui-verifier.md +22 -0
- package/locales/en/overrides/.agents/roles/wiki-compiler.md +47 -0
- package/locales/en/overrides/.agents/skills/arena/SKILL.md +50 -0
- package/locales/en/overrides/.agents/skills/autonomous-run/SKILL.md +45 -0
- package/locales/en/overrides/.agents/skills/blast-radius/SKILL.md +53 -0
- package/locales/en/overrides/.agents/skills/csharp-quality-gates/SKILL.md +109 -0
- package/locales/en/overrides/.agents/skills/dev-tour/SKILL.md +98 -0
- package/locales/en/overrides/.agents/skills/dream/SKILL.md +63 -0
- package/locales/en/overrides/.agents/skills/eval/SKILL.md +42 -0
- package/locales/en/overrides/.agents/skills/interrogate/SKILL.md +49 -0
- package/locales/en/overrides/.agents/skills/number-vetting/SKILL.md +35 -0
- package/locales/en/overrides/.agents/skills/page-refactor/SKILL.md +192 -0
- package/locales/en/overrides/.agents/skills/papercut-fix/SKILL.md +92 -0
- package/locales/en/overrides/.agents/skills/pause-safely/SKILL.md +31 -0
- package/locales/en/overrides/.agents/skills/perf/SKILL.md +42 -0
- package/locales/en/overrides/.agents/skills/review-method/SKILL.md +92 -0
- package/locales/en/overrides/.agents/skills/session-resume/SKILL.md +69 -0
- package/locales/en/overrides/.agents/skills/shipyard-workflow-closeout/SKILL.md +109 -0
- package/locales/en/overrides/.agents/skills/show-me-your-work/SKILL.md +57 -0
- package/locales/en/overrides/.agents/skills/tfs-pr/SKILL.md +95 -0
- package/locales/en/overrides/.agents/skills/verify-ui/SKILL.md +116 -0
- package/locales/en/overrides/.agents/skills/visual-parity/SKILL.md +35 -0
- package/locales/en/overrides/.agents/skills/why/SKILL.md +56 -0
- package/locales/en/overrides/.agents/skills/wiki/SKILL.md +53 -0
- package/locales/en/overrides/.claude/agents/implementer.md +9 -0
- package/locales/en/overrides/.claude/agents/independent-reviewer.md +10 -0
- package/locales/en/overrides/.claude/agents/pr-adjudicator.md +10 -0
- package/locales/en/overrides/.claude/agents/pr-finder.md +10 -0
- package/locales/en/overrides/.claude/agents/pr-verifier.md +10 -0
- package/locales/en/overrides/.claude/agents/ui-verifier.md +10 -0
- package/locales/en/overrides/.claude/agents/wiki-compiler.md +10 -0
- package/locales/en/overrides/.claude/commands/wf-deploy.md +8 -0
- package/locales/en/overrides/.claude/commands/wf-maintain.md +8 -0
- package/locales/en/overrides/.claude/commands/wf-new-task.md +8 -0
- package/locales/en/overrides/.claude/commands/wf-pipeline-run.md +8 -0
- package/locales/en/overrides/.claude/commands/wf-pr-review.md +8 -0
- package/locales/en/overrides/.claude/commands/wf-review.md +8 -0
- package/locales/en/overrides/.claude/commands/wf-stages.md +8 -0
- package/locales/en/overrides/.cline/agents/implementer.yml +13 -0
- package/locales/en/overrides/.cline/agents/independent-reviewer.yml +11 -0
- package/locales/en/overrides/.cline/agents/pr-adjudicator.yml +11 -0
- package/locales/en/overrides/.cline/agents/pr-finder.yml +11 -0
- package/locales/en/overrides/.cline/agents/pr-verifier.yml +11 -0
- package/locales/en/overrides/.cline/agents/ui-verifier.yml +8 -0
- package/locales/en/overrides/.cline/agents/wiki-compiler.yml +14 -0
- package/locales/en/overrides/.cline/workflows/wf-deploy.md +8 -0
- package/locales/en/overrides/.cline/workflows/wf-maintain.md +8 -0
- package/locales/en/overrides/.cline/workflows/wf-new-task.md +8 -0
- package/locales/en/overrides/.cline/workflows/wf-pipeline-run.md +8 -0
- package/locales/en/overrides/.cline/workflows/wf-pr-review.md +8 -0
- package/locales/en/overrides/.cline/workflows/wf-review.md +8 -0
- package/locales/en/overrides/.cline/workflows/wf-stages.md +8 -0
- package/locales/en/overrides/.codebuddy/CODEBUDDY.md +7 -0
- package/locales/en/overrides/.codebuddy/agents/implementer.md +9 -0
- package/locales/en/overrides/.codebuddy/agents/independent-reviewer.md +10 -0
- package/locales/en/overrides/.codebuddy/agents/pr-adjudicator.md +10 -0
- package/locales/en/overrides/.codebuddy/agents/pr-finder.md +10 -0
- package/locales/en/overrides/.codebuddy/agents/pr-verifier.md +10 -0
- package/locales/en/overrides/.codebuddy/agents/ui-verifier.md +11 -0
- package/locales/en/overrides/.codebuddy/agents/wiki-compiler.md +10 -0
- package/locales/en/overrides/.codebuddy/commands/wf-deploy.md +8 -0
- package/locales/en/overrides/.codebuddy/commands/wf-maintain.md +8 -0
- package/locales/en/overrides/.codebuddy/commands/wf-new-task.md +8 -0
- package/locales/en/overrides/.codebuddy/commands/wf-pipeline-run.md +8 -0
- package/locales/en/overrides/.codebuddy/commands/wf-pr-review.md +8 -0
- package/locales/en/overrides/.codebuddy/commands/wf-review.md +8 -0
- package/locales/en/overrides/.codebuddy/commands/wf-stages.md +8 -0
- package/locales/en/overrides/.codebuddy/rules/backend-scope.md +5 -0
- package/locales/en/overrides/.codebuddy/rules/frontend-scope.md +5 -0
- package/locales/en/overrides/.codebuddy/skills/tfs-pr/SKILL.md +6 -0
- package/locales/en/overrides/.commandcode/agents/implementer.md +10 -0
- package/locales/en/overrides/.commandcode/agents/independent-reviewer.md +9 -0
- package/locales/en/overrides/.commandcode/agents/pr-adjudicator.md +9 -0
- package/locales/en/overrides/.commandcode/agents/pr-finder.md +9 -0
- package/locales/en/overrides/.commandcode/agents/pr-verifier.md +9 -0
- package/locales/en/overrides/.commandcode/agents/ui-verifier.md +10 -0
- package/locales/en/overrides/.commandcode/agents/wiki-compiler.md +10 -0
- package/locales/en/overrides/.commandcode/commands/wf-deploy.md +7 -0
- package/locales/en/overrides/.commandcode/commands/wf-maintain.md +7 -0
- package/locales/en/overrides/.commandcode/commands/wf-new-task.md +7 -0
- package/locales/en/overrides/.commandcode/commands/wf-pipeline-run.md +7 -0
- package/locales/en/overrides/.commandcode/commands/wf-pr-review.md +7 -0
- package/locales/en/overrides/.commandcode/commands/wf-review.md +7 -0
- package/locales/en/overrides/.commandcode/commands/wf-stages.md +7 -0
- package/locales/en/overrides/.opencode/agents/implementer.md +51 -0
- package/locales/en/overrides/.opencode/agents/independent-reviewer.md +18 -0
- package/locales/en/overrides/.opencode/agents/pr-adjudicator.md +18 -0
- package/locales/en/overrides/.opencode/agents/pr-finder.md +18 -0
- package/locales/en/overrides/.opencode/agents/pr-verifier.md +18 -0
- package/locales/en/overrides/.opencode/agents/ui-verifier.md +45 -0
- package/locales/en/overrides/.opencode/agents/wiki-compiler.md +51 -0
- package/locales/en/overrides/.opencode/commands/wf-deploy.md +7 -0
- package/locales/en/overrides/.opencode/commands/wf-maintain.md +7 -0
- package/locales/en/overrides/.opencode/commands/wf-new-task.md +7 -0
- package/locales/en/overrides/.opencode/commands/wf-pipeline-run.md +7 -0
- package/locales/en/overrides/.opencode/commands/wf-pr-review.md +7 -0
- package/locales/en/overrides/.opencode/commands/wf-review.md +7 -0
- package/locales/en/overrides/.opencode/commands/wf-stages.md +7 -0
- package/locales/en/overrides/.pi/agents/implementer.md +11 -0
- package/locales/en/overrides/.pi/agents/independent-reviewer.md +12 -0
- package/locales/en/overrides/.pi/agents/pr-adjudicator.md +12 -0
- package/locales/en/overrides/.pi/agents/pr-finder.md +11 -0
- package/locales/en/overrides/.pi/agents/pr-verifier.md +11 -0
- package/locales/en/overrides/.pi/agents/ui-verifier.md +11 -0
- package/locales/en/overrides/.pi/agents/wiki-compiler.md +11 -0
- package/locales/en/overrides/.qoder/agents/implementer.md +9 -0
- package/locales/en/overrides/.qoder/agents/independent-reviewer.md +10 -0
- package/locales/en/overrides/.qoder/agents/pr-adjudicator.md +10 -0
- package/locales/en/overrides/.qoder/agents/pr-finder.md +10 -0
- package/locales/en/overrides/.qoder/agents/pr-verifier.md +10 -0
- package/locales/en/overrides/.qoder/agents/ui-verifier.md +10 -0
- package/locales/en/overrides/.qoder/agents/wiki-compiler.md +10 -0
- package/locales/en/overrides/.qoder/commands/wf-deploy.md +8 -0
- package/locales/en/overrides/.qoder/commands/wf-maintain.md +8 -0
- package/locales/en/overrides/.qoder/commands/wf-new-task.md +8 -0
- package/locales/en/overrides/.qoder/commands/wf-pipeline-run.md +8 -0
- package/locales/en/overrides/.qoder/commands/wf-pr-review.md +8 -0
- package/locales/en/overrides/.qoder/commands/wf-review.md +8 -0
- package/locales/en/overrides/.qoder/commands/wf-stages.md +8 -0
- package/locales/en/overrides/.qwen/agents/implementer.md +10 -0
- package/locales/en/overrides/.qwen/agents/independent-reviewer.md +10 -0
- package/locales/en/overrides/.qwen/agents/pr-adjudicator.md +10 -0
- package/locales/en/overrides/.qwen/agents/pr-finder.md +10 -0
- package/locales/en/overrides/.qwen/agents/pr-verifier.md +10 -0
- package/locales/en/overrides/.qwen/agents/ui-verifier.md +10 -0
- package/locales/en/overrides/.qwen/agents/wiki-compiler.md +13 -0
- package/locales/en/overrides/.qwen/commands/wf-deploy.md +7 -0
- package/locales/en/overrides/.qwen/commands/wf-maintain.md +7 -0
- package/locales/en/overrides/.qwen/commands/wf-new-task.md +7 -0
- package/locales/en/overrides/.qwen/commands/wf-pipeline-run.md +7 -0
- package/locales/en/overrides/.qwen/commands/wf-pr-review.md +7 -0
- package/locales/en/overrides/.qwen/commands/wf-review.md +7 -0
- package/locales/en/overrides/.qwen/commands/wf-stages.md +7 -0
- package/locales/en/overrides/.trae/agents/implementer.md +9 -0
- package/locales/en/overrides/.trae/agents/independent-reviewer.md +10 -0
- package/locales/en/overrides/.trae/agents/pr-adjudicator.md +10 -0
- package/locales/en/overrides/.trae/agents/pr-finder.md +10 -0
- package/locales/en/overrides/.trae/agents/pr-verifier.md +10 -0
- package/locales/en/overrides/.trae/agents/ui-verifier.md +10 -0
- package/locales/en/overrides/.trae/agents/wiki-compiler.md +10 -0
- package/locales/en/overrides/.trae/commands/wf-deploy.md +8 -0
- package/locales/en/overrides/.trae/commands/wf-maintain.md +8 -0
- package/locales/en/overrides/.trae/commands/wf-new-task.md +8 -0
- package/locales/en/overrides/.trae/commands/wf-pipeline-run.md +8 -0
- package/locales/en/overrides/.trae/commands/wf-pr-review.md +8 -0
- package/locales/en/overrides/.trae/commands/wf-review.md +8 -0
- package/locales/en/overrides/.trae/commands/wf-stages.md +8 -0
- package/locales/en/overrides/.trae/rules/backend-scope.md +5 -0
- package/locales/en/overrides/.trae/rules/frontend-scope.md +5 -0
- package/locales/en/overrides/.zcode/agents/implementer.md +8 -0
- package/locales/en/overrides/.zcode/agents/independent-reviewer.md +8 -0
- package/locales/en/overrides/.zcode/agents/ui-verifier.md +8 -0
- package/locales/en/overrides/.zcode/agents/wiki-compiler.md +8 -0
- package/locales/en/overrides/AGENTS.md +52 -0
- package/locales/en/overrides/CLAUDE.md +20 -0
- package/locales/en/overrides/wiki/INDEX.md +33 -0
- package/locales/en/overrides/wiki/drafts-archive/README.md +6 -0
- package/locales/en/overrides/wiki//346/225/260/346/215/256/347/273/264/346/212/244/README.md +22 -0
- package/locales/en/overrides/wiki//347/237/245/350/257/206/346/262/211/346/267/200/346/200/273/350/247/210.html +230 -0
- package/locales/en/overrides/workflow/INDEX.md +13 -0
- package/locales/en/overrides/workflow/README.md +67 -0
- package/locales/en/overrides/workflow/archive/README.md +3 -0
- package/locales/en/overrides/workflow/delegations.md +4 -0
- package/locales/en/overrides/workflow/effective-policy.md +4 -0
- package/locales/en/overrides/workflow/gate-cost.md +4 -0
- package/locales/en/overrides/workflow/incidents/_TEMPLATE.md +49 -0
- package/locales/en/overrides/workflow/intents/_TEMPLATE.md +43 -0
- package/locales/en/overrides/workflow/metrics.md +4 -0
- package/locales/en/overrides/workflow/papercuts.md +3 -0
- package/locales/en/overrides/workflow/plans/_TEMPLATE.md +47 -0
- package/locales/en/overrides/workflow/regression-checklist.md +3 -0
- package/locales/en/overrides/workflow/specs/_TEMPLATE.md +86 -0
- package/locales/en/overrides/workflow/verify-evidence.md +4 -0
- package/locales/zh-CN/installer.json +25 -0
- package/package.json +23 -36
- package/schemas/install-manifest.schema.json +24 -0
- package/schemas/project-profile.schema.json +28 -0
- package/src/cli/args.mjs +41 -0
- package/src/cli/main.mjs +72 -0
- package/src/commands/add-host.mjs +29 -0
- package/src/commands/doctor.mjs +80 -0
- package/src/commands/install.mjs +149 -0
- package/src/commands/upgrade.mjs +30 -0
- package/src/git/config.mjs +61 -0
- package/src/hosts/registry.mjs +26 -0
- package/src/i18n.mjs +32 -0
- package/src/install/apply.mjs +124 -0
- package/src/install/manifest.mjs +40 -0
- package/src/install/plan.mjs +83 -0
- package/src/render/tokens.mjs +58 -0
- package/templates/engine/.agents/board/dev-tour.html +1940 -0
- package/templates/engine/.agents/board/index.html +835 -0
- package/templates/engine/.agents/commands/deploy.md +52 -0
- package/templates/engine/.agents/commands/maintain.md +76 -0
- package/templates/engine/.agents/commands/new-task.md +89 -0
- package/templates/engine/.agents/commands/pipeline-run.md +56 -0
- package/templates/engine/.agents/commands/pr-review.md +30 -0
- package/templates/engine/.agents/commands/review.md +93 -0
- package/templates/engine/.agents/commands/stages.md +256 -0
- package/templates/engine/.agents/config/commit-msg-rules.json +7 -0
- package/templates/engine/.agents/config/engine.json +11 -0
- package/templates/engine/.agents/config/gate-budgets.json +5 -0
- package/templates/engine/.agents/config/mechanism-registry.md +62 -0
- package/templates/engine/.agents/config/model-roles.json +26 -0
- package/templates/engine/.agents/config/model-roles.local.example.json +7 -0
- package/templates/engine/.agents/config/pr-review.json +67 -0
- package/templates/engine/.agents/config/principles.md +32 -0
- package/templates/engine/.agents/config/workflow-enums.txt +25 -0
- package/templates/engine/.agents/hooks/check-architecture.mjs +168 -0
- package/templates/engine/.agents/hooks/check-audit-fields.mjs +56 -0
- package/templates/engine/.agents/hooks/check-commit-plan-ref.mjs +84 -0
- package/templates/engine/.agents/hooks/check-confirm-order.mjs +281 -0
- package/templates/engine/.agents/hooks/check-delete-guard.mjs +63 -0
- package/templates/engine/.agents/hooks/check-notify-guard.mjs +55 -0
- package/templates/engine/.agents/hooks/commit-check.cjs +208 -0
- package/templates/engine/.agents/hooks/gates.json +33 -0
- package/templates/engine/.agents/hooks/local-pre-commit.mjs +27 -0
- package/templates/engine/.agents/hooks/pre-shell-check.cjs +361 -0
- package/templates/engine/.agents/hooks/pre-write-check.cjs +220 -0
- package/templates/engine/.agents/notes/gate-diet.md +75 -0
- package/templates/engine/.agents/notes/pr-review-cost-discipline.md +48 -0
- package/templates/engine/.agents/notes/process-order-rule.md +21 -0
- package/templates/engine/.agents/notes/runtime-env.local.example.md +21 -0
- package/templates/engine/.agents/pipelines/_TEMPLATE.md +75 -0
- package/templates/engine/.agents/pipelines/pipeline-closing.md +28 -0
- package/templates/engine/.agents/pipelines//347/244/272/344/276/213-/345/271/266/350/241/214/345/256/236/347/216/260/350/257/204/345/256/241.md +16 -0
- package/templates/engine/.agents/roles/implementer.md +28 -0
- package/templates/engine/.agents/roles/independent-reviewer.md +39 -0
- package/templates/engine/.agents/roles/pr-adjudicator.md +27 -0
- package/templates/engine/.agents/roles/pr-finder.md +51 -0
- package/templates/engine/.agents/roles/pr-verifier.md +44 -0
- package/templates/engine/.agents/roles/ui-verifier.md +22 -0
- package/templates/engine/.agents/roles/wiki-compiler.md +47 -0
- package/templates/engine/.agents/scripts/agg-delegations.mjs +439 -0
- package/templates/engine/.agents/scripts/agg-judgments.mjs +301 -0
- package/templates/engine/.agents/scripts/agg-kb-usage.mjs +196 -0
- package/templates/engine/.agents/scripts/append-compensation.mjs +109 -0
- package/templates/engine/.agents/scripts/archive-sweep.mjs +229 -0
- package/templates/engine/.agents/scripts/auto-tour.mjs +77 -0
- package/templates/engine/.agents/scripts/board-port.mjs +17 -0
- package/templates/engine/.agents/scripts/check-doc-body-drift.mjs +102 -0
- package/templates/engine/.agents/scripts/check-engine-artifacts.mjs +54 -0
- package/templates/engine/.agents/scripts/check-hook-wiring.mjs +75 -0
- package/templates/engine/.agents/scripts/check-lane-surface.mjs +393 -0
- package/templates/engine/.agents/scripts/check-ledger-doc-presence.mjs +71 -0
- package/templates/engine/.agents/scripts/check-ledger-invariant.mjs +873 -0
- package/templates/engine/.agents/scripts/check-local-gate-config.mjs +95 -0
- package/templates/engine/.agents/scripts/check-local-gates.mjs +248 -0
- package/templates/engine/.agents/scripts/check-loop-kit.mjs +550 -0
- package/templates/engine/.agents/scripts/check-loop-rev-semantics.mjs +59 -0
- package/templates/engine/.agents/scripts/check-loop-sections/s01-pairing.mjs +116 -0
- package/templates/engine/.agents/scripts/check-loop-sections/s03x-regr-evidence.mjs +38 -0
- package/templates/engine/.agents/scripts/check-loop-sections/s08-acceptance.mjs +130 -0
- package/templates/engine/.agents/scripts/check-loop-sections/s15-fingerprint.mjs +152 -0
- package/templates/engine/.agents/scripts/check-loop-sections/s23-convergence-audit.mjs +182 -0
- package/templates/engine/.agents/scripts/check-loop-sections/s29-regr-enforcer.mjs +69 -0
- package/templates/engine/.agents/scripts/check-loop.mjs +131 -0
- package/templates/engine/.agents/scripts/check-regression-consistency.mjs +252 -0
- package/templates/engine/.agents/scripts/check-schema-residue.mjs +144 -0
- package/templates/engine/.agents/scripts/check-scope-range.mjs +156 -0
- package/templates/engine/.agents/scripts/check-scope.mjs +121 -0
- package/templates/engine/.agents/scripts/check-scripts-syntax.mjs +138 -0
- package/templates/engine/.agents/scripts/check-secrets-lite.mjs +239 -0
- package/templates/engine/.agents/scripts/check-secrets.mjs +104 -0
- package/templates/engine/.agents/scripts/check-test-impact-map.mjs +107 -0
- package/templates/engine/.agents/scripts/ci-assert-frontend-deps.mjs +42 -0
- package/templates/engine/.agents/scripts/ci-commit-hygiene.mjs +86 -0
- package/templates/engine/.agents/scripts/ci-install-gitleaks.mjs +75 -0
- package/templates/engine/.agents/scripts/ci-push-before.mjs +49 -0
- package/templates/engine/.agents/scripts/closeout.mjs +127 -0
- package/templates/engine/.agents/scripts/compact-ledgers.mjs +70 -0
- package/templates/engine/.agents/scripts/confirm-doc.mjs +737 -0
- package/templates/engine/.agents/scripts/delegation-presence.mjs +38 -0
- package/templates/engine/.agents/scripts/dev-tour-model.mjs +1398 -0
- package/templates/engine/.agents/scripts/dream-run.mjs +283 -0
- package/templates/engine/.agents/scripts/ensure-board.mjs +187 -0
- package/templates/engine/.agents/scripts/failure-attribution.mjs +11 -0
- package/templates/engine/.agents/scripts/fill-intent.mjs +60 -0
- package/templates/engine/.agents/scripts/fill-plan.mjs +105 -0
- package/templates/engine/.agents/scripts/fill-spec.mjs +72 -0
- package/templates/engine/.agents/scripts/gen-dev-tour.mjs +191 -0
- package/templates/engine/.agents/scripts/gen-effective-policy.mjs +113 -0
- package/templates/engine/.agents/scripts/gen-engine-map.mjs +292 -0
- package/templates/engine/.agents/scripts/gen-narrative-claims.mjs +275 -0
- package/templates/engine/.agents/scripts/gen-verify-evidence.mjs +115 -0
- package/templates/engine/.agents/scripts/gen-wiki-board.mjs +221 -0
- package/templates/engine/.agents/scripts/gen-workflow-index.mjs +201 -0
- package/templates/engine/.agents/scripts/gen-workflow-metrics.mjs +692 -0
- package/templates/engine/.agents/scripts/git-merge-jsonl.mjs +62 -0
- package/templates/engine/.agents/scripts/judgment-ledger.mjs +68 -0
- package/templates/engine/.agents/scripts/kb-cache-evict.mjs +50 -0
- package/templates/engine/.agents/scripts/kb-search.mjs +423 -0
- package/templates/engine/.agents/scripts/lane-surface-audit.mjs +145 -0
- package/templates/engine/.agents/scripts/ledger-loader.mjs +77 -0
- package/templates/engine/.agents/scripts/ledger-shards.mjs +346 -0
- package/templates/engine/.agents/scripts/metrics-core.mjs +131 -0
- package/templates/engine/.agents/scripts/pipeline-run.mjs +964 -0
- package/templates/engine/.agents/scripts/policy.mjs +250 -0
- package/templates/engine/.agents/scripts/pr-create.mjs +54 -0
- package/templates/engine/.agents/scripts/pr-review.mjs +1551 -0
- package/templates/engine/.agents/scripts/quote-grounding.mjs +233 -0
- package/templates/engine/.agents/scripts/regen-ledgers.mjs +59 -0
- package/templates/engine/.agents/scripts/rewrite-file.mjs +135 -0
- package/templates/engine/.agents/scripts/rule-budget.mjs +246 -0
- package/templates/engine/.agents/scripts/stage-gates.mjs +812 -0
- package/templates/engine/.agents/scripts/test-impact-lib.mjs +451 -0
- package/templates/engine/.agents/scripts/test-impact.mjs +105 -0
- package/templates/engine/.agents/scripts/trust-mode.mjs +130 -0
- package/templates/engine/.agents/scripts/verify-scope.mjs +163 -0
- package/templates/engine/.agents/scripts/verify-wiki-consistency.mjs +264 -0
- package/templates/engine/.agents/scripts/verify.mjs +847 -0
- package/templates/engine/.agents/scripts/warn-format.mjs +57 -0
- package/templates/engine/.agents/scripts/wf-journal.mjs +230 -0
- package/templates/engine/.agents/scripts/workflow-board-server.mjs +696 -0
- package/templates/engine/.agents/scripts/workflow-enums.mjs +70 -0
- package/templates/engine/.agents/scripts/workflows-check.mjs +260 -0
- package/templates/engine/.agents/settings.json +33 -0
- package/templates/engine/.agents/skills/arena/SKILL.md +50 -0
- package/templates/engine/.agents/skills/autonomous-run/SKILL.md +45 -0
- package/templates/engine/.agents/skills/blast-radius/SKILL.md +53 -0
- package/templates/engine/.agents/skills/csharp-quality-gates/SKILL.md +109 -0
- package/templates/engine/.agents/skills/csharp-quality-gates/scripts/quality-gates.mjs +430 -0
- package/templates/engine/.agents/skills/dev-tour/SKILL.md +98 -0
- package/templates/engine/.agents/skills/dream/SKILL.md +63 -0
- package/templates/engine/.agents/skills/eval/SKILL.md +42 -0
- package/templates/engine/.agents/skills/eval/scripts/eval-score.mjs +59 -0
- package/templates/engine/.agents/skills/interrogate/SKILL.md +49 -0
- package/templates/engine/.agents/skills/interrogate/scripts/interrogate-plan.mjs +72 -0
- package/templates/engine/.agents/skills/number-vetting/SKILL.md +35 -0
- package/templates/engine/.agents/skills/page-refactor/SKILL.md +192 -0
- package/templates/engine/.agents/skills/page-refactor/references/templates.md +989 -0
- package/templates/engine/.agents/skills/papercut-fix/SKILL.md +92 -0
- package/templates/engine/.agents/skills/papercut-fix/references/response-template.md +81 -0
- package/templates/engine/.agents/skills/pause-safely/SKILL.md +31 -0
- package/templates/engine/.agents/skills/perf/SKILL.md +42 -0
- package/templates/engine/.agents/skills/review-method/SKILL.md +92 -0
- package/templates/engine/.agents/skills/review-method/golden-set.md +61 -0
- package/templates/engine/.agents/skills/session-resume/SKILL.md +69 -0
- package/templates/engine/.agents/skills/session-resume/scripts/worktree-audit.mjs +110 -0
- package/templates/engine/.agents/skills/shipyard-workflow-closeout/SKILL.md +109 -0
- package/templates/engine/.agents/skills/show-me-your-work/SKILL.md +57 -0
- package/templates/engine/.agents/skills/show-me-your-work/references/decision-log-template.tsv +1 -0
- package/templates/engine/.agents/skills/show-me-your-work/scripts/decision-log.mjs +24 -0
- package/templates/engine/.agents/skills/tfs-pr/SKILL.md +95 -0
- package/templates/engine/.agents/skills/tfs-pr/scripts/tfs-pr.mjs +947 -0
- package/templates/engine/.agents/skills/verify-ui/SKILL.md +116 -0
- package/templates/engine/.agents/skills/verify-ui/features/.gitkeep +0 -0
- package/templates/engine/.agents/skills/verify-ui/scripts/gen-verify-feature.mjs +114 -0
- package/templates/engine/.agents/skills/visual-parity/SKILL.md +35 -0
- package/templates/engine/.agents/skills/why/SKILL.md +56 -0
- package/templates/engine/.agents/skills/why/scripts/why-evidence.mjs +74 -0
- package/templates/engine/.agents/skills/wiki/SKILL.md +53 -0
- package/templates/engine/.agents/tests/auto-tour.test.mjs +82 -0
- package/templates/engine/.agents/tests/dev-tour-model.test.mjs +452 -0
- package/templates/engine/.agents/tests/fill-plan-lite.test.mjs +46 -0
- package/templates/engine/.agents/tests/fixtures/dev-tour/plan-bare-mid-path.md +14 -0
- package/templates/engine/.agents/tests/fixtures/dev-tour/plan-bare-mid-path.model.json +179 -0
- package/templates/engine/.agents/tests/fixtures/dev-tour/plan-fake-path-guard.md +21 -0
- package/templates/engine/.agents/tests/fixtures/dev-tour/plan-fake-path-guard.model.json +194 -0
- package/templates/engine/.agents/tests/fixtures/dev-tour/plan-h3-batches.md +20 -0
- package/templates/engine/.agents/tests/fixtures/dev-tour/plan-h3-batches.model.json +207 -0
- package/templates/engine/.agents/tests/fixtures/dev-tour/plan-issues.md +24 -0
- package/templates/engine/.agents/tests/fixtures/dev-tour/plan-issues.model.json +225 -0
- package/templates/engine/.agents/tests/fixtures/dev-tour/plan-l1-single-file.md +15 -0
- package/templates/engine/.agents/tests/fixtures/dev-tour/plan-l1-single-file.model.json +160 -0
- package/templates/engine/.agents/tests/fixtures/dev-tour/plan-layer-word-unique.md +29 -0
- package/templates/engine/.agents/tests/fixtures/dev-tour/plan-layer-word-unique.model.json +266 -0
- package/templates/engine/.agents/tests/fixtures/dev-tour/plan-layers-fallback.md +17 -0
- package/templates/engine/.agents/tests/fixtures/dev-tour/plan-layers-fallback.model.json +207 -0
- package/templates/engine/.agents/tests/fixtures/dev-tour/plan-numbered-steps.md +39 -0
- package/templates/engine/.agents/tests/fixtures/dev-tour/plan-numbered-steps.model.json +359 -0
- package/templates/engine/.agents/tests/fixtures/dev-tour/plan-path-guess.md +16 -0
- package/templates/engine/.agents/tests/fixtures/dev-tour/plan-path-guess.model.json +131 -0
- package/templates/engine/.agents/tests/fixtures/dev-tour/plan-table-rows.md +29 -0
- package/templates/engine/.agents/tests/fixtures/dev-tour/plan-table-rows.model.json +190 -0
- package/templates/engine/.agents/tests/fixtures/dev-tour/plan-task-checkboxes.md +39 -0
- package/templates/engine/.agents/tests/fixtures/dev-tour/plan-task-checkboxes.model.json +362 -0
- package/templates/engine/.agents/tests/fixtures/dev-tour/plan-union-label.md +24 -0
- package/templates/engine/.agents/tests/fixtures/dev-tour/plan-union-label.model.json +224 -0
- package/templates/engine/.agents/tests/tools/gen-synthetic-plan.mjs +108 -0
- package/templates/git/.gitattributes +22 -0
- package/templates/git/.githooks/commit-msg +72 -0
- package/templates/git/.githooks/post-commit +62 -0
- package/templates/git/.githooks/pre-commit +197 -0
- package/templates/git/.githooks/pre-merge-commit +28 -0
- package/templates/git/.githooks/pre-push +201 -0
- package/templates/git/.gitignore.engine +11 -0
- package/templates/hosts/claude/CLAUDE.md +55 -0
- package/templates/hosts/claude/agents/implementer.md +7 -0
- package/templates/hosts/claude/agents/independent-reviewer.md +8 -0
- package/templates/hosts/claude/agents/pr-adjudicator.md +8 -0
- package/templates/hosts/claude/agents/pr-finder.md +8 -0
- package/templates/hosts/claude/agents/pr-verifier.md +8 -0
- package/templates/hosts/claude/agents/ui-verifier.md +8 -0
- package/templates/hosts/claude/agents/wiki-compiler.md +8 -0
- package/templates/hosts/claude/commands/wf-deploy.md +10 -0
- package/templates/hosts/claude/commands/wf-maintain.md +10 -0
- package/templates/hosts/claude/commands/wf-new-task.md +10 -0
- package/templates/hosts/claude/commands/wf-pipeline-run.md +10 -0
- package/templates/hosts/claude/commands/wf-pr-review.md +10 -0
- package/templates/hosts/claude/commands/wf-review.md +10 -0
- package/templates/hosts/claude/commands/wf-stages.md +10 -0
- package/templates/hosts/claude/settings.json +57 -0
- package/templates/hosts/cline/agents/implementer.yml +15 -0
- package/templates/hosts/cline/agents/independent-reviewer.yml +20 -0
- package/templates/hosts/cline/agents/pr-adjudicator.yml +18 -0
- package/templates/hosts/cline/agents/pr-finder.yml +19 -0
- package/templates/hosts/cline/agents/pr-verifier.yml +18 -0
- package/templates/hosts/cline/agents/ui-verifier.yml +17 -0
- package/templates/hosts/cline/agents/wiki-compiler.yml +20 -0
- package/templates/hosts/cline/hooks/PreToolUse.cjs +260 -0
- package/templates/hosts/cline/workflows/wf-deploy.md +8 -0
- package/templates/hosts/cline/workflows/wf-maintain.md +8 -0
- package/templates/hosts/cline/workflows/wf-new-task.md +8 -0
- package/templates/hosts/cline/workflows/wf-pipeline-run.md +8 -0
- package/templates/hosts/cline/workflows/wf-pr-review.md +8 -0
- package/templates/hosts/cline/workflows/wf-review.md +8 -0
- package/templates/hosts/cline/workflows/wf-stages.md +8 -0
- package/templates/hosts/codebuddy/CODEBUDDY.md +7 -0
- package/templates/hosts/codebuddy/agents/implementer.md +9 -0
- package/templates/hosts/codebuddy/agents/independent-reviewer.md +10 -0
- package/templates/hosts/codebuddy/agents/pr-adjudicator.md +10 -0
- package/templates/hosts/codebuddy/agents/pr-finder.md +10 -0
- package/templates/hosts/codebuddy/agents/pr-verifier.md +10 -0
- package/templates/hosts/codebuddy/agents/ui-verifier.md +11 -0
- package/templates/hosts/codebuddy/agents/wiki-compiler.md +10 -0
- package/templates/hosts/codebuddy/commands/wf-deploy.md +10 -0
- package/templates/hosts/codebuddy/commands/wf-maintain.md +10 -0
- package/templates/hosts/codebuddy/commands/wf-new-task.md +10 -0
- package/templates/hosts/codebuddy/commands/wf-pipeline-run.md +10 -0
- package/templates/hosts/codebuddy/commands/wf-pr-review.md +10 -0
- package/templates/hosts/codebuddy/commands/wf-review.md +10 -0
- package/templates/hosts/codebuddy/commands/wf-stages.md +10 -0
- package/templates/hosts/codebuddy/rules/backend-scope.md +5 -0
- package/templates/hosts/codebuddy/rules/frontend-scope.md +5 -0
- package/templates/hosts/codebuddy/settings.json +31 -0
- package/templates/hosts/codebuddy/skills/tfs-pr/SKILL.md +6 -0
- package/templates/hosts/commandcode/agents/implementer.md +10 -0
- package/templates/hosts/commandcode/agents/independent-reviewer.md +9 -0
- package/templates/hosts/commandcode/agents/pr-adjudicator.md +9 -0
- package/templates/hosts/commandcode/agents/pr-finder.md +9 -0
- package/templates/hosts/commandcode/agents/pr-verifier.md +9 -0
- package/templates/hosts/commandcode/agents/ui-verifier.md +11 -0
- package/templates/hosts/commandcode/agents/wiki-compiler.md +10 -0
- package/templates/hosts/commandcode/commands/wf-deploy.md +9 -0
- package/templates/hosts/commandcode/commands/wf-maintain.md +9 -0
- package/templates/hosts/commandcode/commands/wf-new-task.md +9 -0
- package/templates/hosts/commandcode/commands/wf-pipeline-run.md +9 -0
- package/templates/hosts/commandcode/commands/wf-pr-review.md +9 -0
- package/templates/hosts/commandcode/commands/wf-review.md +9 -0
- package/templates/hosts/commandcode/commands/wf-stages.md +9 -0
- package/templates/hosts/commandcode/settings.json +59 -0
- package/templates/hosts/opencode/agents/implementer.md +51 -0
- package/templates/hosts/opencode/agents/independent-reviewer.md +18 -0
- package/templates/hosts/opencode/agents/pr-adjudicator.md +18 -0
- package/templates/hosts/opencode/agents/pr-finder.md +18 -0
- package/templates/hosts/opencode/agents/pr-verifier.md +18 -0
- package/templates/hosts/opencode/agents/ui-verifier.md +45 -0
- package/templates/hosts/opencode/agents/wiki-compiler.md +51 -0
- package/templates/hosts/opencode/commands/wf-deploy.md +7 -0
- package/templates/hosts/opencode/commands/wf-maintain.md +7 -0
- package/templates/hosts/opencode/commands/wf-new-task.md +7 -0
- package/templates/hosts/opencode/commands/wf-pipeline-run.md +7 -0
- package/templates/hosts/opencode/commands/wf-pr-review.md +7 -0
- package/templates/hosts/opencode/commands/wf-review.md +7 -0
- package/templates/hosts/opencode/commands/wf-stages.md +7 -0
- package/templates/hosts/pi/agents/implementer.md +10 -0
- package/templates/hosts/pi/agents/independent-reviewer.md +11 -0
- package/templates/hosts/pi/agents/pr-adjudicator.md +11 -0
- package/templates/hosts/pi/agents/pr-finder.md +10 -0
- package/templates/hosts/pi/agents/pr-verifier.md +10 -0
- package/templates/hosts/pi/agents/ui-verifier.md +10 -0
- package/templates/hosts/pi/agents/wiki-compiler.md +10 -0
- package/templates/hosts/pi/extensions/lib/gates-core.cjs +196 -0
- package/templates/hosts/pi/extensions/shipyard-gates.ts +95 -0
- package/templates/hosts/pi/settings.json +5 -0
- package/templates/hosts/qoder/agents/implementer.md +9 -0
- package/templates/hosts/qoder/agents/independent-reviewer.md +10 -0
- package/templates/hosts/qoder/agents/pr-adjudicator.md +10 -0
- package/templates/hosts/qoder/agents/pr-finder.md +10 -0
- package/templates/hosts/qoder/agents/pr-verifier.md +10 -0
- package/templates/hosts/qoder/agents/ui-verifier.md +10 -0
- package/templates/hosts/qoder/agents/wiki-compiler.md +10 -0
- package/templates/hosts/qoder/commands/wf-deploy.md +8 -0
- package/templates/hosts/qoder/commands/wf-maintain.md +8 -0
- package/templates/hosts/qoder/commands/wf-new-task.md +8 -0
- package/templates/hosts/qoder/commands/wf-pipeline-run.md +8 -0
- package/templates/hosts/qoder/commands/wf-pr-review.md +8 -0
- package/templates/hosts/qoder/commands/wf-review.md +8 -0
- package/templates/hosts/qoder/commands/wf-stages.md +8 -0
- package/templates/hosts/qoder/settings.json +63 -0
- package/templates/hosts/qwen/agents/implementer.md +8 -0
- package/templates/hosts/qwen/agents/independent-reviewer.md +8 -0
- package/templates/hosts/qwen/agents/pr-adjudicator.md +8 -0
- package/templates/hosts/qwen/agents/pr-finder.md +8 -0
- package/templates/hosts/qwen/agents/pr-verifier.md +8 -0
- package/templates/hosts/qwen/agents/ui-verifier.md +8 -0
- package/templates/hosts/qwen/agents/wiki-compiler.md +11 -0
- package/templates/hosts/qwen/commands/wf-deploy.md +9 -0
- package/templates/hosts/qwen/commands/wf-maintain.md +9 -0
- package/templates/hosts/qwen/commands/wf-new-task.md +9 -0
- package/templates/hosts/qwen/commands/wf-pipeline-run.md +9 -0
- package/templates/hosts/qwen/commands/wf-pr-review.md +9 -0
- package/templates/hosts/qwen/commands/wf-review.md +9 -0
- package/templates/hosts/qwen/commands/wf-stages.md +9 -0
- package/templates/hosts/qwen/settings.json +59 -0
- package/templates/hosts/trae/agents/implementer.md +9 -0
- package/templates/hosts/trae/agents/independent-reviewer.md +10 -0
- package/templates/hosts/trae/agents/pr-adjudicator.md +10 -0
- package/templates/hosts/trae/agents/pr-finder.md +10 -0
- package/templates/hosts/trae/agents/pr-verifier.md +10 -0
- package/templates/hosts/trae/agents/ui-verifier.md +10 -0
- package/templates/hosts/trae/agents/wiki-compiler.md +10 -0
- package/templates/hosts/trae/commands/wf-deploy.md +8 -0
- package/templates/hosts/trae/commands/wf-maintain.md +8 -0
- package/templates/hosts/trae/commands/wf-new-task.md +8 -0
- package/templates/hosts/trae/commands/wf-pipeline-run.md +8 -0
- package/templates/hosts/trae/commands/wf-pr-review.md +8 -0
- package/templates/hosts/trae/commands/wf-review.md +8 -0
- package/templates/hosts/trae/commands/wf-stages.md +8 -0
- package/templates/hosts/trae/hooks.json +17 -0
- package/templates/hosts/trae/rules/backend-scope.md +5 -0
- package/templates/hosts/trae/rules/frontend-scope.md +5 -0
- package/templates/hosts/zcode/agents/implementer.md +8 -0
- package/templates/hosts/zcode/agents/independent-reviewer.md +8 -0
- package/templates/hosts/zcode/agents/ui-verifier.md +8 -0
- package/templates/hosts/zcode/agents/wiki-compiler.md +8 -0
- package/templates/hosts/zcode/config.json +31 -0
- package/templates/hosts/zcode/workflows/code-review.dwf.ts +428 -0
- package/templates/hosts/zcode/workflows/fullchain-flow-test.dwf.ts +898 -0
- package/templates/profiles/dotnet/.agents/config/lane-surfaces.txt +33 -0
- package/templates/profiles/dotnet/.agents/config/rule-budgets.txt +84 -0
- package/templates/profiles/dotnet/.agents/config/test-impact-map.json +590 -0
- package/templates/profiles/dotnet/.agents/config/workflow-modules.txt +18 -0
- package/templates/profiles/dotnet/.agents/hooks/commit-check.config.json +18 -0
- package/templates/profiles/dotnet/.agents/hooks/delete-guard-allowlist.txt +28 -0
- package/templates/profiles/dotnet/.agents/notes/runtime-env.md +178 -0
- package/templates/profiles/dotnet/AGENTS.md +52 -0
- package/templates/profiles/empty/.agents/config/lane-surfaces.txt +12 -0
- package/templates/profiles/empty/.agents/config/rule-budgets.txt +3 -0
- package/templates/profiles/empty/.agents/config/test-impact-map.json +8 -0
- package/templates/profiles/empty/.agents/config/workflow-modules.txt +2 -0
- package/templates/profiles/empty/.agents/hooks/commit-check.config.json +5 -0
- package/templates/profiles/empty/.agents/hooks/delete-guard-allowlist.txt +2 -0
- package/templates/profiles/empty/.agents/notes/runtime-env.md +44 -0
- package/templates/profiles/empty/AGENTS.md +52 -0
- package/templates/profiles/node/.agents/config/lane-surfaces.txt +12 -0
- package/templates/profiles/node/.agents/config/rule-budgets.txt +3 -0
- package/templates/profiles/node/.agents/config/test-impact-map.json +8 -0
- package/templates/profiles/node/.agents/config/workflow-modules.txt +2 -0
- package/templates/profiles/node/.agents/hooks/commit-check.config.json +5 -0
- package/templates/profiles/node/.agents/hooks/delete-guard-allowlist.txt +2 -0
- package/templates/profiles/node/.agents/notes/runtime-env.md +44 -0
- package/templates/profiles/node/AGENTS.md +52 -0
- package/templates/scaffold/wiki/INDEX.md +33 -0
- package/templates/scaffold/wiki/drafts-archive/README.md +7 -0
- package/templates/scaffold/wiki//344/272/247/345/223/201/351/234/200/346/261/202/.gitkeep +0 -0
- package/templates/scaffold/wiki//345/274/200/345/217/221/346/226/271/346/241/210/.gitkeep +0 -0
- package/templates/scaffold/wiki//346/225/260/346/215/256/347/273/264/346/212/244/README.md +22 -0
- package/templates/scaffold/wiki//346/265/213/350/257/225/346/212/245/345/221/212/.gitkeep +0 -0
- package/templates/scaffold/wiki//347/224/250/346/210/267/345/212/237/350/203/275/.gitkeep +0 -0
- package/templates/scaffold/wiki//347/237/245/350/257/206/346/262/211/346/267/200/346/200/273/350/247/210.html +230 -0
- package/templates/scaffold/wiki//351/241/271/347/233/256/350/247/204/350/214/203/.gitkeep +0 -0
- package/templates/scaffold/workflow/INDEX.md +13 -0
- package/templates/scaffold/workflow/README.md +67 -0
- package/templates/scaffold/workflow/archive/README.md +3 -0
- package/templates/scaffold/workflow/delegations.d/.gitkeep +0 -0
- package/templates/scaffold/workflow/delegations.md +4 -0
- package/templates/scaffold/workflow/effective-policy.md +4 -0
- package/templates/scaffold/workflow/evidence/.gitkeep +0 -0
- package/templates/scaffold/workflow/gate-cost.md +4 -0
- package/templates/scaffold/workflow/gate-metrics.d/.gitkeep +0 -0
- package/templates/scaffold/workflow/incidents/_TEMPLATE.md +49 -0
- package/templates/scaffold/workflow/intents/_TEMPLATE.md +43 -0
- package/templates/scaffold/workflow/metrics.md +4 -0
- package/templates/scaffold/workflow/papercuts.d/.gitkeep +0 -0
- package/templates/scaffold/workflow/papercuts.md +3 -0
- package/templates/scaffold/workflow/plans/_TEMPLATE.md +47 -0
- package/templates/scaffold/workflow/regression-checklist.d/.gitkeep +0 -0
- package/templates/scaffold/workflow/regression-checklist.md +3 -0
- package/templates/scaffold/workflow/research/.gitkeep +0 -0
- package/templates/scaffold/workflow/reviews.d/.gitkeep +0 -0
- package/templates/scaffold/workflow/specs/_TEMPLATE.md +87 -0
- package/templates/scaffold/workflow/verify-evidence/.gitkeep +0 -0
- package/templates/scaffold/workflow/verify-evidence.md +4 -0
- package/LICENSE +0 -21
- package/modules/gates/README.md +0 -25
- package/modules/gates/dotnet-ca/README.md +0 -24
- package/modules/gates/dotnet-ca/check-architecture.sh +0 -150
- package/modules/gates/dotnet-ca/local-pre-commit.line +0 -1
- package/modules/gates/generated-readonly/README.md +0 -13
- package/modules/gates/generated-readonly/check-generated.mjs +0 -61
- package/modules/gates/generated-readonly/local-pre-commit.line +0 -1
- package/modules/gates/node-layer/README.md +0 -9
- package/modules/gates/node-layer/check-node-layer.mjs +0 -29
- package/modules/gates/node-layer/local-pre-commit.line +0 -1
- package/modules/gates/py-import/README.md +0 -9
- package/modules/gates/py-import/check-py-import.mjs +0 -30
- package/modules/gates/py-import/local-pre-commit.line +0 -1
- package/modules/gates/test-protect/README.md +0 -23
- package/modules/gates/test-protect/check-test-protect.mjs +0 -64
- package/modules/gates/test-protect/local-pre-commit.line +0 -1
- package/modules/hosts/README.md +0 -57
- package/modules/hosts/claude/agents/implementer.md +0 -51
- package/modules/hosts/claude/agents/independent-reviewer.md +0 -49
- package/modules/hosts/claude/agents/ui-verifier.md +0 -48
- package/modules/hosts/claude/commands/wf-build.md +0 -69
- package/modules/hosts/claude/commands/wf-deploy.md +0 -58
- package/modules/hosts/claude/commands/wf-design.md +0 -49
- package/modules/hosts/claude/commands/wf-gate-checklist.md +0 -77
- package/modules/hosts/claude/commands/wf-maintain.md +0 -76
- package/modules/hosts/claude/commands/wf-new-task.md +0 -102
- package/modules/hosts/claude/commands/wf-pipeline-run.md +0 -35
- package/modules/hosts/claude/commands/wf-plan.md +0 -40
- package/modules/hosts/claude/commands/wf-review.md +0 -49
- package/modules/hosts/claude/commands/wf-sync-hosts.md +0 -64
- package/modules/hosts/claude/commands/wf-test.md +0 -68
- package/modules/hosts/codex/agents/implementer.md +0 -51
- package/modules/hosts/codex/agents/independent-reviewer.md +0 -49
- package/modules/hosts/codex/agents/ui-verifier.md +0 -48
- package/modules/hosts/codex/commands/wf-build.md +0 -69
- package/modules/hosts/codex/commands/wf-deploy.md +0 -58
- package/modules/hosts/codex/commands/wf-design.md +0 -49
- package/modules/hosts/codex/commands/wf-gate-checklist.md +0 -77
- package/modules/hosts/codex/commands/wf-maintain.md +0 -76
- package/modules/hosts/codex/commands/wf-new-task.md +0 -102
- package/modules/hosts/codex/commands/wf-pipeline-run.md +0 -35
- package/modules/hosts/codex/commands/wf-plan.md +0 -40
- package/modules/hosts/codex/commands/wf-review.md +0 -49
- package/modules/hosts/codex/commands/wf-sync-hosts.md +0 -64
- package/modules/hosts/codex/commands/wf-test.md +0 -68
- package/modules/hosts/codex/skills/flow-kit/SKILL.md +0 -14
- package/modules/hosts/cursor/agents/implementer.md +0 -51
- package/modules/hosts/cursor/agents/independent-reviewer.md +0 -49
- package/modules/hosts/cursor/agents/ui-verifier.md +0 -48
- package/modules/hosts/cursor/commands/wf-build.md +0 -69
- package/modules/hosts/cursor/commands/wf-deploy.md +0 -58
- package/modules/hosts/cursor/commands/wf-design.md +0 -49
- package/modules/hosts/cursor/commands/wf-gate-checklist.md +0 -77
- package/modules/hosts/cursor/commands/wf-maintain.md +0 -76
- package/modules/hosts/cursor/commands/wf-new-task.md +0 -102
- package/modules/hosts/cursor/commands/wf-pipeline-run.md +0 -35
- package/modules/hosts/cursor/commands/wf-plan.md +0 -40
- package/modules/hosts/cursor/commands/wf-review.md +0 -49
- package/modules/hosts/cursor/commands/wf-sync-hosts.md +0 -64
- package/modules/hosts/cursor/commands/wf-test.md +0 -68
- package/modules/hosts/omp/agents/implementer.md +0 -52
- package/modules/hosts/omp/agents/independent-reviewer.md +0 -50
- package/modules/hosts/omp/agents/ui-verifier.md +0 -49
- package/modules/hosts/opencode/agents/implementer.md +0 -59
- package/modules/hosts/opencode/agents/independent-reviewer.md +0 -53
- package/modules/hosts/opencode/agents/ui-verifier.md +0 -52
- package/modules/hosts/opencode/commands/wf-build.md +0 -69
- package/modules/hosts/opencode/commands/wf-deploy.md +0 -58
- package/modules/hosts/opencode/commands/wf-design.md +0 -49
- package/modules/hosts/opencode/commands/wf-gate-checklist.md +0 -77
- package/modules/hosts/opencode/commands/wf-maintain.md +0 -76
- package/modules/hosts/opencode/commands/wf-new-task.md +0 -102
- package/modules/hosts/opencode/commands/wf-pipeline-run.md +0 -35
- package/modules/hosts/opencode/commands/wf-plan.md +0 -40
- package/modules/hosts/opencode/commands/wf-review.md +0 -49
- package/modules/hosts/opencode/commands/wf-sync-hosts.md +0 -64
- package/modules/hosts/opencode/commands/wf-test.md +0 -68
- package/modules/hosts/trae/agents/implementer.md +0 -52
- package/modules/hosts/trae/agents/independent-reviewer.md +0 -51
- package/modules/hosts/trae/agents/ui-verifier.md +0 -50
- package/modules/hosts/trae/commands/wf-build.md +0 -70
- package/modules/hosts/trae/commands/wf-deploy.md +0 -59
- package/modules/hosts/trae/commands/wf-design.md +0 -50
- package/modules/hosts/trae/commands/wf-gate-checklist.md +0 -78
- package/modules/hosts/trae/commands/wf-maintain.md +0 -77
- package/modules/hosts/trae/commands/wf-new-task.md +0 -103
- package/modules/hosts/trae/commands/wf-pipeline-run.md +0 -36
- package/modules/hosts/trae/commands/wf-plan.md +0 -41
- package/modules/hosts/trae/commands/wf-review.md +0 -50
- package/modules/hosts/trae/commands/wf-sync-hosts.md +0 -65
- package/modules/hosts/trae/commands/wf-test.md +0 -69
- package/modules/hosts/trae/hooks/post-edit-check.cjs +0 -98
- package/modules/hosts/trae/hooks/pre-shell-check.cjs +0 -192
- package/modules/hosts/trae/hooks/resolve-shell.cjs +0 -30
- package/modules/hosts/trae/hooks.json +0 -29
- package/modules/hosts/trae/rules/beautify-input-chinese.md +0 -6
- package/modules/hosts/trae/rules/git-commit-message.md +0 -10
- package/modules/hosts/trae/rules/project-workflow.md +0 -14
- package/modules/hosts/zcode/agents/implementer.md +0 -51
- package/modules/hosts/zcode/agents/independent-reviewer.md +0 -49
- package/modules/hosts/zcode/agents/ui-verifier.md +0 -48
- package/src/add-gate.mjs +0 -116
- package/src/add-gate.test.mjs +0 -103
- package/src/add-host.mjs +0 -68
- package/src/cli.mjs +0 -169
- package/src/doctor.mjs +0 -629
- package/src/executor.mjs +0 -262
- package/src/executor.test.mjs +0 -295
- package/src/fresh-init.test.mjs +0 -64
- package/src/gate-dotnet-ca.test.mjs +0 -124
- package/src/gates.test.mjs +0 -143
- package/src/init.mjs +0 -382
- package/src/init.test.mjs +0 -163
- package/src/instance-ref.test.mjs +0 -62
- package/src/jscpd-drift.test.mjs +0 -144
- package/src/pack.test.mjs +0 -24
- package/src/profiles.mjs +0 -183
- package/src/render.mjs +0 -132
- package/src/rule-budget.test.mjs +0 -103
- package/src/run-tests.mjs +0 -56
- package/src/stack-profile.test.mjs +0 -95
- package/src/sync-hosts.mjs +0 -257
- package/src/sync-hosts.test.mjs +0 -291
- package/src/sync.mjs +0 -228
- package/src/sync.test.mjs +0 -452
- package/src/trae-hooks.test.mjs +0 -127
- package/src/validate.mjs +0 -77
- package/src/validate.test.mjs +0 -95
- package/templates/.gitattributes +0 -17
- package/templates/AGENTS.md +0 -57
- package/templates/_agents/board/index.html +0 -676
- package/templates/_agents/commands/build.md +0 -84
- package/templates/_agents/commands/deploy.md +0 -66
- package/templates/_agents/commands/design.md +0 -63
- package/templates/_agents/commands/gate-checklist.md +0 -91
- package/templates/_agents/commands/maintain.md +0 -90
- package/templates/_agents/commands/new-task.md +0 -110
- package/templates/_agents/commands/pipeline-run.md +0 -43
- package/templates/_agents/commands/plan.md +0 -48
- package/templates/_agents/commands/review.md +0 -62
- package/templates/_agents/commands/sync-hosts.md +0 -77
- package/templates/_agents/commands/test.md +0 -87
- package/templates/_agents/control-surfaces.txt +0 -53
- package/templates/_agents/engine-lock.json +0 -342
- package/templates/_agents/hooks/check-index-incremental.mjs +0 -48
- package/templates/_agents/hooks/check-pairing-incremental.mjs +0 -66
- package/templates/_agents/hooks/check-wiki-ledger.mjs +0 -30
- package/templates/_agents/hooks/commit-check.cjs +0 -193
- package/templates/_agents/hooks/local-pre-commit +0 -6
- package/templates/_agents/lane-surfaces.txt +0 -17
- package/templates/_agents/level-hints.txt +0 -30
- package/templates/_agents/loop/papercut-debt/DESIGN.md +0 -112
- package/templates/_agents/mechanism-registry.md +0 -27
- package/templates/_agents/metric-claims.txt +0 -81
- package/templates/_agents/notes/engine-internals.md +0 -17
- package/templates/_agents/notes/runtime-env.md +0 -18
- package/templates/_agents/roles/implementer.md +0 -47
- package/templates/_agents/roles/independent-reviewer.md +0 -45
- package/templates/_agents/roles/ui-verifier.md +0 -44
- package/templates/_agents/rule-budgets.txt +0 -18
- package/templates/_agents/scripts/agg-delegations.cjs +0 -302
- package/templates/_agents/scripts/agg-delegations.test.mjs +0 -282
- package/templates/_agents/scripts/agg-gate-stats.mjs +0 -113
- package/templates/_agents/scripts/agg-gate-stats.test.mjs +0 -95
- package/templates/_agents/scripts/agg-judgments.mjs +0 -156
- package/templates/_agents/scripts/agg-judgments.test.mjs +0 -93
- package/templates/_agents/scripts/archive-sweep.mjs +0 -235
- package/templates/_agents/scripts/archive-sweep.test.mjs +0 -129
- package/templates/_agents/scripts/check-attribution.mjs +0 -37
- package/templates/_agents/scripts/check-convergence.mjs +0 -124
- package/templates/_agents/scripts/check-engine-integrity.mjs +0 -220
- package/templates/_agents/scripts/check-engine-integrity.test.mjs +0 -215
- package/templates/_agents/scripts/check-funnel.mjs +0 -56
- package/templates/_agents/scripts/check-hygiene.mjs +0 -167
- package/templates/_agents/scripts/check-hygiene.test.mjs +0 -182
- package/templates/_agents/scripts/check-index-incremental.test.mjs +0 -73
- package/templates/_agents/scripts/check-lane-surface.mjs +0 -238
- package/templates/_agents/scripts/check-lane-surface.test.mjs +0 -302
- package/templates/_agents/scripts/check-ledger-invariant.mjs +0 -527
- package/templates/_agents/scripts/check-ledger-invariant.test.mjs +0 -639
- package/templates/_agents/scripts/check-loop-rev.test.mjs +0 -336
- package/templates/_agents/scripts/check-loop-unit.test.mjs +0 -103
- package/templates/_agents/scripts/check-loop.mjs +0 -1958
- package/templates/_agents/scripts/check-loop.sh +0 -6
- package/templates/_agents/scripts/check-loop.test.mjs +0 -3875
- package/templates/_agents/scripts/check-metric-claims.mjs +0 -277
- package/templates/_agents/scripts/check-prejudgment.mjs +0 -64
- package/templates/_agents/scripts/check-registry.mjs +0 -45
- package/templates/_agents/scripts/check-scope.mjs +0 -96
- package/templates/_agents/scripts/check-scope.test.mjs +0 -96
- package/templates/_agents/scripts/check-scripts-syntax.mjs +0 -61
- package/templates/_agents/scripts/check-scripts-syntax.test.mjs +0 -72
- package/templates/_agents/scripts/check-spec-verif.mjs +0 -47
- package/templates/_agents/scripts/check-stage-index.mjs +0 -40
- package/templates/_agents/scripts/check-stage-index.test.mjs +0 -77
- package/templates/_agents/scripts/closeout-l1.mjs +0 -217
- package/templates/_agents/scripts/closeout-l1.test.mjs +0 -105
- package/templates/_agents/scripts/commit-check-trigger.test.mjs +0 -205
- package/templates/_agents/scripts/compact-ledgers.mjs +0 -97
- package/templates/_agents/scripts/compact-ledgers.test.mjs +0 -162
- package/templates/_agents/scripts/confirm-doc.mjs +0 -603
- package/templates/_agents/scripts/confirm-doc.test.mjs +0 -1103
- package/templates/_agents/scripts/doctor.test.mjs +0 -770
- package/templates/_agents/scripts/draft-sediment.mjs +0 -178
- package/templates/_agents/scripts/draft-sediment.test.mjs +0 -272
- package/templates/_agents/scripts/edit-face-check.mjs +0 -109
- package/templates/_agents/scripts/edit-face-check.test.mjs +0 -99
- package/templates/_agents/scripts/ensure-board.mjs +0 -185
- package/templates/_agents/scripts/fill-intent.mjs +0 -91
- package/templates/_agents/scripts/fill-intent.test.mjs +0 -113
- package/templates/_agents/scripts/fill-plan.mjs +0 -79
- package/templates/_agents/scripts/fill-plan.test.mjs +0 -224
- package/templates/_agents/scripts/fill-spec.mjs +0 -70
- package/templates/_agents/scripts/fill-spec.test.mjs +0 -266
- package/templates/_agents/scripts/fixture-scripts.mjs +0 -153
- package/templates/_agents/scripts/fixture-scripts.test.mjs +0 -112
- package/templates/_agents/scripts/gate-checklist.mjs +0 -209
- package/templates/_agents/scripts/gate-checklist.test.mjs +0 -201
- package/templates/_agents/scripts/gate-seg.mjs +0 -54
- package/templates/_agents/scripts/gate-seg.test.mjs +0 -112
- package/templates/_agents/scripts/gen-effective-policy.mjs +0 -107
- package/templates/_agents/scripts/gen-effective-policy.test.mjs +0 -100
- package/templates/_agents/scripts/gen-verify-evidence.mjs +0 -107
- package/templates/_agents/scripts/gen-verify-evidence.test.mjs +0 -84
- package/templates/_agents/scripts/gen-wiki-board.mjs +0 -276
- package/templates/_agents/scripts/gen-wiki-board.test.mjs +0 -249
- package/templates/_agents/scripts/gen-workflow-dashboard.mjs +0 -251
- package/templates/_agents/scripts/gen-workflow-dashboard.test.mjs +0 -188
- package/templates/_agents/scripts/gen-workflow-index.mjs +0 -201
- package/templates/_agents/scripts/gen-workflow-index.test.mjs +0 -152
- package/templates/_agents/scripts/gen-workflow-metrics.mjs +0 -334
- package/templates/_agents/scripts/gen-workflow-metrics.test.mjs +0 -224
- package/templates/_agents/scripts/git-merge-jsonl.mjs +0 -63
- package/templates/_agents/scripts/git-merge-jsonl.test.mjs +0 -125
- package/templates/_agents/scripts/judgment-ledger.mjs +0 -65
- package/templates/_agents/scripts/judgment-ledger.test.mjs +0 -129
- package/templates/_agents/scripts/kb-cache-evict.mjs +0 -50
- package/templates/_agents/scripts/kb-cache-evict.test.mjs +0 -104
- package/templates/_agents/scripts/kb-search.mjs +0 -413
- package/templates/_agents/scripts/kb-search.test.mjs +0 -299
- package/templates/_agents/scripts/lane-surface-audit.mjs +0 -143
- package/templates/_agents/scripts/lane-surface-audit.test.mjs +0 -93
- package/templates/_agents/scripts/ledger-doc-chain.test.mjs +0 -166
- package/templates/_agents/scripts/ledger-loader.mjs +0 -108
- package/templates/_agents/scripts/ledger-loader.test.mjs +0 -131
- package/templates/_agents/scripts/ledger-prune.mjs +0 -96
- package/templates/_agents/scripts/ledger-prune.test.mjs +0 -120
- package/templates/_agents/scripts/ledger-shards.mjs +0 -344
- package/templates/_agents/scripts/ledger-shards.test.mjs +0 -356
- package/templates/_agents/scripts/ledger-ts-monotonic.test.mjs +0 -135
- package/templates/_agents/scripts/level-criteria.mjs +0 -231
- package/templates/_agents/scripts/level-criteria.test.mjs +0 -281
- package/templates/_agents/scripts/mechanism-retire-watch.mjs +0 -183
- package/templates/_agents/scripts/mechanism-retire-watch.test.mjs +0 -114
- package/templates/_agents/scripts/papercut-debt-controller.mjs +0 -141
- package/templates/_agents/scripts/papercut-debt-controller.test.mjs +0 -127
- package/templates/_agents/scripts/papercut-debt-sensor.mjs +0 -170
- package/templates/_agents/scripts/papercut-debt-sensor.test.mjs +0 -146
- package/templates/_agents/scripts/pipeline-run-docs.mjs +0 -76
- package/templates/_agents/scripts/pipeline-run-run.mjs +0 -63
- package/templates/_agents/scripts/pipeline-run.mjs +0 -867
- package/templates/_agents/scripts/pipeline-run.test.mjs +0 -517
- package/templates/_agents/scripts/policy.mjs +0 -281
- package/templates/_agents/scripts/pre-push.test.mjs +0 -105
- package/templates/_agents/scripts/resolve-merge-conflicts.mjs +0 -110
- package/templates/_agents/scripts/resolve-merge-conflicts.test.mjs +0 -87
- package/templates/_agents/scripts/rewrite-file.mjs +0 -133
- package/templates/_agents/scripts/rewrite-file.test.mjs +0 -148
- package/templates/_agents/scripts/rule-budget.mjs +0 -96
- package/templates/_agents/scripts/rule-budget.test.mjs +0 -118
- package/templates/_agents/scripts/run-tests.mjs +0 -99
- package/templates/_agents/scripts/run-tests.test.mjs +0 -105
- package/templates/_agents/scripts/solidify-task.mjs +0 -107
- package/templates/_agents/scripts/solidify-task.test.mjs +0 -129
- package/templates/_agents/scripts/stage-gates.mjs +0 -343
- package/templates/_agents/scripts/stage-gates.test.mjs +0 -105
- package/templates/_agents/scripts/trust-mode.mjs +0 -67
- package/templates/_agents/scripts/trust-mode.test.mjs +0 -110
- package/templates/_agents/scripts/verify-wiki-consistency.mjs +0 -253
- package/templates/_agents/scripts/verify-wiki-consistency.test.mjs +0 -123
- package/templates/_agents/scripts/verify.mjs +0 -210
- package/templates/_agents/scripts/verify.test.mjs +0 -358
- package/templates/_agents/scripts/wf-journal.mjs +0 -231
- package/templates/_agents/scripts/wf-journal.test.mjs +0 -216
- package/templates/_agents/scripts/wiki-search.mjs +0 -19
- package/templates/_agents/scripts/wiki-search.test.mjs +0 -57
- package/templates/_agents/scripts/workflow-board-server.mjs +0 -393
- package/templates/_agents/scripts/workflow-board-server.test.mjs +0 -201
- package/templates/_agents/scripts/workflow-enums.mjs +0 -70
- package/templates/_agents/scripts/workflow-enums.test.mjs +0 -118
- package/templates/_agents/scripts/workflows-check.mjs +0 -260
- package/templates/_agents/scripts/workflows-check.test.mjs +0 -278
- package/templates/_agents/scripts-test-exempt.txt +0 -16
- package/templates/_agents/skills/papercut-fix/SKILL.md +0 -60
- package/templates/_agents/skills/papercut-fix/references/response-template.md +0 -81
- package/templates/_agents/skills/review-method/SKILL.md +0 -55
- package/templates/_agents/skills/verify-ui/SKILL.md +0 -61
- package/templates/_agents/skills/wiki/SKILL.md +0 -106
- package/templates/_agents/workflow-enums.txt +0 -26
- package/templates/_agents/workflow-modules.txt +0 -11
- package/templates/_agents/workflows/_TEMPLATE.md +0 -75
- package/templates/_agents/workflows/pipeline-closing.md +0 -28
- package/templates/_agents/workflows//347/244/272/344/276/213-/345/271/266/350/241/214/345/256/236/347/216/260/350/257/204/345/256/241.md +0 -16
- package/templates/_githooks/commit-msg +0 -17
- package/templates/_githooks/post-commit +0 -10
- package/templates/_githooks/pre-commit +0 -126
- package/templates/_githooks/pre-merge-commit +0 -29
- package/templates/_githooks/pre-push +0 -136
- package/templates/_github/workflows/kit-ci.yml +0 -49
- package/templates/wiki/INDEX.md +0 -73
- package/templates/wiki/drafts-archive/README.md +0 -3
- package/templates/wiki//344/272/247/345/223/201/351/234/200/346/261/202/README.md +0 -3
- package/templates/wiki//345/274/200/345/217/221/346/226/271/346/241/210/README.md +0 -3
- package/templates/wiki//346/225/260/346/215/256/347/273/264/346/212/244/README.md +0 -3
- package/templates/wiki//346/265/213/350/257/225/346/212/245/345/221/212/README.md +0 -3
- package/templates/wiki//347/224/250/346/210/267/345/212/237/350/203/275/README.md +0 -3
- package/templates/wiki//347/237/245/350/257/206/346/262/211/346/267/200/346/200/273/350/247/210.html +0 -77
- package/templates/wiki//351/241/271/347/233/256/350/247/204/350/214/203/README.md +0 -3
- package/templates/wiki//351/241/271/347/233/256/350/256/241/345/210/222/README.md +0 -3
- package/templates/workflow/README.md +0 -90
- package/templates/workflow/delegations.md +0 -29
- package/templates/workflow/incidents/_TEMPLATE.md +0 -51
- package/templates/workflow/intents/_TEMPLATE.md +0 -46
- package/templates/workflow/papercuts.md +0 -9
- package/templates/workflow/plans/_TEMPLATE.md +0 -47
- package/templates/workflow/regression-checklist.md +0 -23
- package/templates/workflow/specs/_TEMPLATE.md +0 -80
- /package/templates/{_agents → engine/.agents}/board/marked.min.js +0 -0
- /package/templates/{_agents/workflows → engine/.agents/pipelines}/steps//347/244/272/344/276/213-/351/203/250/347/275/262/351/252/214/350/257/201.md" +0 -0
- /package/templates/{_agents → engine/.agents}/scripts/git-core.mjs +0 -0
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: papercut-fix
|
|
3
|
+
description: 修 workflow/papercuts.md 里指定的未升级 papercut 条目(把存量债降到 0 的回路执行器)。按指令/台账给的行号定位症状、照「拟修」列改权威文件、回写台账并跑验证门;也用于同一错误反复出现时的错类挖掘与执法层级选择。
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# papercut-fix — 单条 papercut 升级执行器
|
|
7
|
+
|
|
8
|
+
## 目标
|
|
9
|
+
将 `workflow/papercuts.md` 中指定的一条 papercut 条目状态更新为「已消债」。
|
|
10
|
+
|
|
11
|
+
## 触发条件
|
|
12
|
+
- 用户指令:`跑一轮 papercut 回路` / `清 papercut 存量` / `修第 N 条 papercut`。
|
|
13
|
+
- 用户指令:`跑一轮错题回路` / `同一类错又犯了` / `把这类错固化` → 先走 §0,再逐条走 §1–§4。
|
|
14
|
+
|
|
15
|
+
## 0. 错题回路(批量模式,与单条模式互斥)
|
|
16
|
+
|
|
17
|
+
只治**引擎面**反复犯的错(业务代码债按 incident 走,不进本回路)。四源取数,默认窗口近 3 个自然月:
|
|
18
|
+
|
|
19
|
+
| 源 | 读法 |
|
|
20
|
+
|---|---|
|
|
21
|
+
| `.agents/judgments.jsonl` | `node .agents/scripts/agg-judgments.mjs --retire-candidates`(per-rule 计数与候选) |
|
|
22
|
+
| `workflow/delegations.md` | 返工原因枚举分布 + 月度聚合快照 |
|
|
23
|
+
| `workflow/reviews.d/<YYYY-MM>.md` | 意见级采纳/拒绝/误报,按根因方向归并 |
|
|
24
|
+
| `workflow/incidents/` | 根因枚举(仅引擎面条目) |
|
|
25
|
+
|
|
26
|
+
**聚类阈值**:同一错类 ≥3 次才立规则;单次只记 papercut(若可操作),不立规则——避免对单例过拟合。
|
|
27
|
+
|
|
28
|
+
> 数据面注意:`judgments.jsonl` / `verifications.jsonl` 是 gitignore 的本地运行态,新 clone / 新 worktree 可能只有零星行。缺源时以 `delegations.md`、`reviews.d/`、`incidents/` 为准,**不因缺源造错类**;窗口内不足 3 次就写「数据不足」,不立规则。
|
|
29
|
+
|
|
30
|
+
**落点阶梯**(选最高可行层;降层必须写明不可行理由):
|
|
31
|
+
|
|
32
|
+
| 层 | 手段 | 不可行信号 |
|
|
33
|
+
|---|---|---|
|
|
34
|
+
| 1 | 类型 / 编译期(类型、schema、枚举、契约) | 约束表达不出来 |
|
|
35
|
+
| 2 | 门禁脚本或钩子(check-loop 段、commit-check、verify 门) | 误报压不住,或触发频率撑不起 |
|
|
36
|
+
| 3 | 自动化用例(dotnet test / vitest / 引擎 `*.test.mjs`) | 环境不可达、非确定性 |
|
|
37
|
+
| 4 | 冒烟脚本(`regression-smoke.mjs` 脚本组) | 断言不了(纯视觉/交互) |
|
|
38
|
+
| 5 | 命令 / 技能 / 角色文本(prompt-only) | 无(最后手段) |
|
|
39
|
+
|
|
40
|
+
- 落到第 5 层:在 `workflow/papercuts.d/` 新增行的**症状列**前缀 `[prompt-only]`,挂债待后续升层。
|
|
41
|
+
- 落到第 2 层新增门禁:必须同时登记 `mechanism-registry.md`(含退役阈值),并遵守 `rule-budgets.txt` 一进一出。
|
|
42
|
+
- 与既有口径的关系:`workflow/regression-checklist.md` 规则 5/7 是本阶梯在回归条目上的特化(第 3–5 层顺序 + 执法者列),不另立第二套。
|
|
43
|
+
|
|
44
|
+
**输出**(先给表,再动手):`错类 | 次数 | 证据位置 | 现执法者 | 缺口 | 选定层 | 拟改文件`。确认后逐条进入 §1–§4,每轮仍只处理一条。
|
|
45
|
+
|
|
46
|
+
## 约束与红线
|
|
47
|
+
- **单一目标**:每轮执行仅处理一条目标,禁止顺手修复相邻条目或夹带其他改动。
|
|
48
|
+
- **范围限制**:改动仅限文档面(`.agents/commands/`, `.agents/roles/`, `.agents/skills/`, `.githooks/`, `.agents/scripts/`, `workflow/`)。
|
|
49
|
+
- **绝对禁区**:禁止修改 `backend/`, `frontend/`, `tests/`, `wiki/`,禁止连接数据库。超出范围时必须停止并报告用户。
|
|
50
|
+
- **验证优先**:禁止凭台账描述臆测现状。必须先读权威文件验证症状是否成立。
|
|
51
|
+
- **编辑规范**:改 `workflow/` 文档用 `node .agents/scripts/rewrite-file.mjs <文件> --find <字面串> --replace <字面串>`(与 `stages.md` Build §4 相同)。
|
|
52
|
+
- **消债判定**:分支 A(修复)与分支 B(暂缓/失效)**均**满足 `debt -1` 不变量(debt = 台账待修
|
|
53
|
+
行数,人工清点:触碰行带终态标记且不新增待修行;原定时报债传感器已退役 2026-11-08)。
|
|
54
|
+
|
|
55
|
+
## 工作流
|
|
56
|
+
|
|
57
|
+
### 1. 定位与预检
|
|
58
|
+
- 从指令给定提取:`行号` (Lxx), `位置` (路径), `症状`, `拟修`。
|
|
59
|
+
- 使用 Read 工具读取该行及其上下文。
|
|
60
|
+
|
|
61
|
+
### 2. 现状验证
|
|
62
|
+
- 读取「位置」列指定的权威文件。
|
|
63
|
+
- **判定结论**:
|
|
64
|
+
- **缺陷仍在** $\rightarrow$ 进入分支 A。
|
|
65
|
+
- **已失效** (已被其他改动修复/文件已删除) $\rightarrow$ 进入分支 B。
|
|
66
|
+
- **方向相反/描述有误** $\rightarrow$ 重新定性后再执行。
|
|
67
|
+
|
|
68
|
+
### 3. 执行修复
|
|
69
|
+
- **分支 A (缺陷仍在)**:
|
|
70
|
+
1. 对权威文件执行最小化修复。
|
|
71
|
+
2. 在 `workflow/papercuts.md` 该行末尾追加:`✅ 已升级修复(YYYY-MM-DD): <改动描述> <commit>`。
|
|
72
|
+
3. 若原「拟修」描述已不适用,在追加记录中写明实际修法。
|
|
73
|
+
- **分支 B (已失效)**:
|
|
74
|
+
1. 在 `workflow/papercuts.md` 该行末尾追加:`⏸ 暂缓(YYYY-MM-DD): <失效理由>`。理由必须明确。
|
|
75
|
+
2. **核实纪律**:
|
|
76
|
+
- 检查用户级路径 (`~/.workbuddy/skills/` 等) 确认文件是否仅是迁移而非删除。
|
|
77
|
+
- 区分「环境约束」与「代码缺陷」。
|
|
78
|
+
- 针对「跨环境」症状,使用 `git worktree` 构建真实检出态实验证伪。
|
|
79
|
+
- 针对「已落地」症状,使用 `git log -S` 追溯引入提交日期。
|
|
80
|
+
- **分支 C (越界)**:停止执行,报告理由并请求授权。
|
|
81
|
+
|
|
82
|
+
### 4. 验证与收尾
|
|
83
|
+
- **备份**:修改台账前强制 `cp workflow/papercuts.md tmp/papercuts.wip-backup.md`。
|
|
84
|
+
- **运行检查**:
|
|
85
|
+
- 触碰行已带终态标记(`✅ 已升级修复` / `⏸ 暂缓`),且本轮未新增待修行(`debt -1`,人工清点)。
|
|
86
|
+
- 检查 `workflow/papercuts.md` 的总行数、列数分布及是否存在超长行(压行信号)。
|
|
87
|
+
- **体积检查**:若修改了 `.agents/commands/` 或根 `AGENTS.md`,跑 `node .agents/scripts/rule-budget.mjs --all`,以其退出码为准。
|
|
88
|
+
|
|
89
|
+
## 回报要求
|
|
90
|
+
- 参照 `references/response-template.md` 输出。
|
|
91
|
+
- 包含:行号、位置、分支结论(A/B/C)、改动文件、验证结果(触碰行终态标记 / debt 前后值人工清点)、待决策事项。
|
|
92
|
+
- **禁令**:禁止自动 commit 或 push。
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
# papercut-fix 回应模板
|
|
2
|
+
|
|
3
|
+
单轮回路执行器的最终输出格式。给用户看,决定他是否放行这次改动。
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 模板
|
|
8
|
+
|
|
9
|
+
```markdown
|
|
10
|
+
papercut 回路 · 第 N 轮
|
|
11
|
+
|
|
12
|
+
**目标**:L{line} `{location}`({date},第 {hits} 次命中)
|
|
13
|
+
**结论**:{A 缺陷仍在 / B 已失效 / B2 账未销(拟修已由别的改动落地)/ B3 台账方向记反(检出态实验证伪)/ C 越界待授权}
|
|
14
|
+
|
|
15
|
+
### 改动
|
|
16
|
+
|
|
17
|
+
| 文件 | 改了什么 |
|
|
18
|
+
|---|---|
|
|
19
|
+
| `{权威文件路径}` | {一句话} |
|
|
20
|
+
| `workflow/papercuts.md` | 回写行标记:{`✅ 已升级修复(日期)` / `⏸ 暂缓(日期):理由`} |
|
|
21
|
+
|
|
22
|
+
### 验证
|
|
23
|
+
|
|
24
|
+
- debt 前后值(人工清点待修行数):{before} → {after}(预期 -1);触碰行已带终态标记
|
|
25
|
+
- {其他检查,如体积预算核对:通过 / 不适用}
|
|
26
|
+
|
|
27
|
+
### 台账依据
|
|
28
|
+
|
|
29
|
+
{若实际修法与「拟修」列描述不一致,在此说明「拟修」列写的什么、实际怎么做的、为什么。
|
|
30
|
+
B2 结论必须写出落地提交:`由 <sha>(<日期>,<标题>)落地`。}
|
|
31
|
+
|
|
32
|
+
### 需你决定
|
|
33
|
+
|
|
34
|
+
{列出需要用户拍板的事项;没有则写「无」。典型场景:
|
|
35
|
+
- 结论为 C(越界)——是否单独授权改源码/连库
|
|
36
|
+
- 「拟修」列描述已过期——是否更新该列文本
|
|
37
|
+
- 台账中标注「待人工定性」的条目——是否本轮顺带定性
|
|
38
|
+
- 改动触及常驻面体积预算——是否接受,或改为下沉/删除被取代条目}
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## 格式要求
|
|
44
|
+
|
|
45
|
+
1. **先给结论,再给细节**。用户扫第一行就要知道"修了哪条、结论是什么"。
|
|
46
|
+
2. **「需你决定」不许空着**。即使本轮无事,也显式写「无」——让"没有待决事项"和"忘了写"可区分。
|
|
47
|
+
3. **验证值给具体数字**,不要只说"验证通过"。debt(待修行数)的前后值与触碰行终态标记必须可核。
|
|
48
|
+
4. **不粉饰失败**。验证门红了就写红,附命令与原始报错摘要。回路的价值在于给出可信的账,不是好看的账。
|
|
49
|
+
5. **不写"建议接下来…"式的空话**。要写就写具体动作 + 具体条目编号。
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## 示例(结论 A,真实一轮)
|
|
54
|
+
|
|
55
|
+
```markdown
|
|
56
|
+
papercut 回路 · 第 3 轮
|
|
57
|
+
|
|
58
|
+
**目标**:L34 `.agents/skills/verify-ui/SKILL.md`(步骤 2 `npm run dev` + §关键坑)(2026-09-18)
|
|
59
|
+
**结论**:A 缺陷仍在
|
|
60
|
+
|
|
61
|
+
### 改动
|
|
62
|
+
|
|
63
|
+
| 文件 | 改了什么 |
|
|
64
|
+
|---|---|
|
|
65
|
+
| `.agents/skills/verify-ui/SKILL.md` | §1「起服务」补一条:dev server 存活判据以 HTTP 探活为准,不以进程存在为准;§关键坑 补对应条目 |
|
|
66
|
+
| `workflow/papercuts.md` | 回写 L34 标记:`✅ 已升级修复(2026-10-07)` |
|
|
67
|
+
|
|
68
|
+
### 验证
|
|
69
|
+
|
|
70
|
+
- debt 前后值(人工清点):16 → 15(预期 -1);L34 已带 `✅ 已升级修复(2026-10-07)` 标记
|
|
71
|
+
- 体积预算:`.agents/skills/` 不在 `.agents/config/rule-budgets.txt` 管控范围,不适用
|
|
72
|
+
|
|
73
|
+
### 台账依据
|
|
74
|
+
|
|
75
|
+
「拟修」列写的是「补一条 dev server 缓存失效的判定说明」。实际执行时发现症状描述的是 transform 缓存,而 §1 真正缺的是**存活判据**(缓存失效只在源码改动后需要,判据本身该按 HTTP 探活而非进程存在)。两者相邻但不同,已按存活判据写,缓存条目并入同节。
|
|
76
|
+
|
|
77
|
+
### 需你决定
|
|
78
|
+
|
|
79
|
+
- 「拟修」列文本与实际修法有偏差(见上),是否更新该列描述以免下次复发时对不上?
|
|
80
|
+
- 台账「待人工定性」3 条(`.trae/skills/jdp-dataview-analyze` 下,L50/L51/L52 路径已不存在)——注意 L32 指向的 `check-loop.sh` 性能问题已在 2026-09-26 全量迁 node 时解决,本轮修完 L32 后建议一并定性。要不要现在处理?
|
|
81
|
+
```
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pause-safely
|
|
3
|
+
description: 长跑中断/离开前留可续现场——写 resume brief(状态/下一步/未决/证据指针),停掉自己起的进程,不提交不删除;供暂停、离线、上下文压缩、会话重启前使用。
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# pause-safely — 暂停留痕
|
|
7
|
+
|
|
8
|
+
## 触发
|
|
9
|
+
|
|
10
|
+
- 用户说「先停 / 我走了 / 明天继续」。
|
|
11
|
+
- 上下文即将压缩、会话即将重启。
|
|
12
|
+
- 长跑(`autonomous-run` / `pipeline-run`)需要挂起。
|
|
13
|
+
|
|
14
|
+
## 步骤
|
|
15
|
+
|
|
16
|
+
1. **写 resume brief** 到 `tmp/pause-<slug>.md`(不提交):
|
|
17
|
+
- **现场**:分支、HEAD 短 SHA、worktree 路径、`git status --porcelain -uall` 摘要。
|
|
18
|
+
- **做到哪**:已完成单元 + 对应绿凭证 `headShort` / 决策轨迹行。
|
|
19
|
+
- **下一步**:第一个未完成动作,具体到文件/命令。
|
|
20
|
+
- **未决**:等用户拍板的分叉、已知风险、被阻塞项。
|
|
21
|
+
- **证据指针**:`workflow/plans/...` 勾选态、`decisions.tsv`、`tmp/verify-*.log`、截图路径。
|
|
22
|
+
- **进程**:自己起的服务/端口/PID(只记自己起的)。
|
|
23
|
+
2. **不提交、不推送、不删除**:未提交改动原样保留;需要提交时先问用户。
|
|
24
|
+
3. **停进程**:只停本会话启动的进程;不按进程名杀,按 PID/端口。
|
|
25
|
+
4. **恢复**:新会话先按 `.agents/skills/session-resume/SKILL.md` 重建,再读 resume brief;不靠记忆。
|
|
26
|
+
|
|
27
|
+
## 边界
|
|
28
|
+
|
|
29
|
+
- 不清理 worktree、不删临时文件、不 `git reset`——暂停不是收尾。
|
|
30
|
+
- 不把 resume brief 写成流水账;只留「下一个人能接着做」的事实。
|
|
31
|
+
- 不提交半成品;不 `--no-verify`。
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: perf
|
|
3
|
+
description: 性能问题排查 playbook——先基线后单变量,复测过噪声带才接受;供「慢 / 卡 / 加载久 / 接口耗时」类任务使用。
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# perf — 性能排查
|
|
7
|
+
|
|
8
|
+
## 触发
|
|
9
|
+
|
|
10
|
+
- 用户报「慢 / 卡 / 加载久 / 接口 N 秒」。
|
|
11
|
+
- 方案含性能取舍,需要用实测定夺。
|
|
12
|
+
|
|
13
|
+
## 0. 先定义可测目标
|
|
14
|
+
|
|
15
|
+
指标(LCP / 接口 p95 / 列表首屏 / 构建耗时)+ 场景(页面 / 接口 / 数据量)+ 达标线。说不清指标 → 先测量再谈优化,禁凭感觉改。
|
|
16
|
+
|
|
17
|
+
## 1. 基线(同机 / 同数据 / 同并发)
|
|
18
|
+
|
|
19
|
+
- 复跑 $\ge 3$ 次,取中位与最慢;记录机器负载与数据量。
|
|
20
|
+
- 证据落 `tmp/perf/<topic>-baseline.json`(或 stdout 存档)。
|
|
21
|
+
|
|
22
|
+
## 2. 定位
|
|
23
|
+
|
|
24
|
+
- 前端:Performance trace / LCP / 长任务;后端:慢查询、N+1、无界取数(性能三项见 `.agents/skills/review-method/SKILL.md`)。
|
|
25
|
+
- 一次只验证一个假设;假设被证伪就写下结论再换。
|
|
26
|
+
|
|
27
|
+
## 3. 单变量改动
|
|
28
|
+
|
|
29
|
+
一次只改一处;不改口径、不换数据、不调机器。门禁耗时类改动区分「门变快」与「质量提升」。
|
|
30
|
+
|
|
31
|
+
## 4. 复测与接受
|
|
32
|
+
|
|
33
|
+
- 同场景复跑 $\ge 3$ 次;改善必须超过噪声带(数字可信性单源 `.agents/skills/number-vetting/SKILL.md`)。
|
|
34
|
+
- 未过噪声带 → 回滚或记「未证实」,不写进结论。
|
|
35
|
+
|
|
36
|
+
## 5. 落账
|
|
37
|
+
|
|
38
|
+
表格:基线 / 改动 / 复测 / 结论 + 证据路径。环境抖动(共享库锁、机器负载)先隔离复跑,按 `review-method/golden-set.md` #21 口径归属,不误报回归。
|
|
39
|
+
|
|
40
|
+
## 红线
|
|
41
|
+
|
|
42
|
+
- 不同时改两个变量;不用单次运行;不优化没有测量的部分。
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: review-method
|
|
3
|
+
description: 代码复核走查方法(Standards×Spec 双轴 + 坏味道清单 + 合入标尺)。供 independent-reviewer 或主智能体复核 diff 时使用;是 .agents/commands/review.md 执行流程的方法层单源,不依赖宿主全局技能。
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# review-method — 复核走查方法
|
|
7
|
+
|
|
8
|
+
## 定位与分工
|
|
9
|
+
复核三层各自单源,本文件只管「怎么走查」:
|
|
10
|
+
|
|
11
|
+
| 层 | 单源 |
|
|
12
|
+
|---|---|
|
|
13
|
+
| 拦什么(不变量) | `.agents/commands/review.md` P0/P1 表 |
|
|
14
|
+
| 以什么身份查(证据纪律) | `.agents/roles/independent-reviewer.md` Constraints |
|
|
15
|
+
| 怎么走查(本文件) | 双轴框架 + 坏味道清单 + 合入标尺 |
|
|
16
|
+
|
|
17
|
+
宿主有全局 `code-review` / `review-verification-protocol` 技能时可叠加;无则本文件兜底。
|
|
18
|
+
|
|
19
|
+
## 校准集(golden-set.md)
|
|
20
|
+
同目录 `golden-set.md` 是独立复核质量的已知答案样本库(正例=应报缺陷、负例=应放行,每条带本仓上下文要点)。复核员/新会话上岗前可对样本盲评后对答案自检校准差;月度对账抽样(mechanism-registry 登记)用它做比对基线,须**双臂**跑(A=载本技能 / B=干净会话只给样本内联上下文,Δ 才是上下文注入的效果)并对可疑判定做**方差复跑**(翻转者计题面歧义、不计校准差)。命中差连续两月 >20% 时在 papercuts 登记校准债;样本答案锚定闭环时定性,代码后续演进不改答案。
|
|
21
|
+
|
|
22
|
+
## 双轴框架(分轴报告,禁合并排序)
|
|
23
|
+
| 轴 | 问的问题 | 依据 |
|
|
24
|
+
|---|---|---|
|
|
25
|
+
| **Standards** | 是否符合本仓成文标准 | 根/目录级 `AGENTS.md` + review.md P0/P1 表 |
|
|
26
|
+
| **Spec** | 是否忠实实现入口文档承诺 | intent/plan「验收标准」+ spec §测试用例 |
|
|
27
|
+
|
|
28
|
+
两轴独立成立:合规范但做错事(Standards 过、Spec 挂)与做对事但破规范(Spec 过、Standards 挂)都存在——分开报告防一轴掩盖另一轴。Spec 轴报三类发现:承诺缺失/部分落地、超范围(scope creep)、实现走样。
|
|
29
|
+
|
|
30
|
+
### 派发前自检与轴隔离
|
|
31
|
+
- **基准自检先行**:派复核(或自查)前 `git rev-parse <基准>` 可解析 + `git diff <基准>...HEAD` 非空——坏引用/空 diff 在派发前失败,不在两个轴的走查中途爆。
|
|
32
|
+
- **Spec 源发现序**:commit 消息里的 workflow 引用 → 用户给的路径 → 入口文档同名家族(intent/spec/plan)→ 都没有则问用户;找不到时 Spec 轴显式报「无 spec 可依」,禁静默跳过整轴。
|
|
33
|
+
- **双轴可分派隔离**:宿主支持子代理时两轴分派两个只读子代理并行走查(上下文隔离防互染),聚合时逐轴原样呈现——跨轴重排的禁令不因此放松。
|
|
34
|
+
|
|
35
|
+
## 坏味道走查清单(Standards 轴补充)
|
|
36
|
+
P0/P1 表之外的判断项。约束:仓库成文标准优先(成文认可即压制本清单);始终是判断项非硬违规;门禁/tooling 已拦的跳过。每条 = 是什么 $\rightarrow$ 怎么修:
|
|
37
|
+
|
|
38
|
+
| 坏味道 | 是什么 $\rightarrow$ 怎么修 |
|
|
39
|
+
|---|---|
|
|
40
|
+
| Mysterious Name 神秘命名 | 名字不揭示用途 $\rightarrow$ 重命名;起不出诚实名字 = 设计混浊 |
|
|
41
|
+
| Duplicated Code 重复代码 | 同形逻辑在多处出现 $\rightarrow$ 提取共享实现,两处调用 |
|
|
42
|
+
| Feature Envy 依恋情结 | 方法够别家数据多过自己 $\rightarrow$ 把方法移到所依恋的数据上 |
|
|
43
|
+
| Data Clumps 数据泥团 | 几个字段/参数总是结伴出行 $\rightarrow$ 捆成一个类型传递 |
|
|
44
|
+
| Primitive Obsession 基本类型偏执 | 原始值顶替领域概念 $\rightarrow$ 为概念建专属小类型 |
|
|
45
|
+
| Repeated Switches 重复开关 | 对同一类型的 switch/级联 if 反复出现 $\rightarrow$ 多态或共享映射 |
|
|
46
|
+
| Shotgun Surgery 霰弹式修改 | 一个逻辑变更迫使多文件分散编辑 $\rightarrow$ 聚拢到同一模块 |
|
|
47
|
+
| Divergent Change 发散式变化 | 一个模块因多个不相关原因被改 $\rightarrow$ 按单一变化理由拆分 |
|
|
48
|
+
| Speculative Generality 投机泛化 | 为 spec 没有的需求加抽象/参数/钩子 $\rightarrow$ 删掉内联,等真实需求出现 |
|
|
49
|
+
| Message Chains 消息链 | 长 `a.b().c().d()` 导航 $\rightarrow$ 在首对象上藏一个方法 |
|
|
50
|
+
| Middle Man 中间人 | 类/函数几乎只做转发 $\rightarrow$ 删掉,直调真目标 |
|
|
51
|
+
| Refused Bequest 拒绝继承 | 子类忽略/覆盖大部分继承物 $\rightarrow$ 弃继承改组合 |
|
|
52
|
+
|
|
53
|
+
性能三项(P1 分页条款之外):N+1 查询、无界取数/循环、热路径大对象。
|
|
54
|
+
|
|
55
|
+
### 存储宿主选型(2026-10-23 追加,来源 incident 2026-10-23-pml-pbs-relation-host)
|
|
56
|
+
|
|
57
|
+
新旧系统共存期,**业务关系表(A↔B 多对多)的宿主表选型必须回答「旧系统是否已有同义表」**:
|
|
58
|
+
|
|
59
|
+
- 旧系统已有 → **沿用**,并在 spec 固化该表的列语义(外键指向哪张表、类型码口径、哪些列不落库需读时反查)。
|
|
60
|
+
- 确实要新建 → spec 写明**为什么不沿用**。
|
|
61
|
+
- 沿用共享表时**结构一律不动**(不加列/不加索引/不加约束),去重与约束由服务端承担。
|
|
62
|
+
|
|
63
|
+
复核动作:对 spec/diff 里每一张新表或新映射,回旧系统源码或库元数据核一次是否已有同义表。
|
|
64
|
+
|
|
65
|
+
**为什么必须靠人/复核代理主动核**:`SchemaLedgerDriftTests` 只校验「已声明的表结构是否与实库一致」——表结构正确即绿,无法发现「这张表本不该新建」;静态门对「同一业务关系存在两套表」也无感。2026-09-28「关联PBS 单值改多值」即因此默认新建了私有表 `MM_PML_ProductionPMLPBS`,与旧系统既有表 `BOM_PalletPBS_Relation` 长期并存两套存储,直到 2026-10-23 用户指令才改回沿用。
|
|
66
|
+
|
|
67
|
+
### 持久化列的语义是否被展示诉求改写(2026-10-23 追加,来源 incident 2026-10-23-pml-quota-substitute-identity-overwrite)
|
|
68
|
+
|
|
69
|
+
需求说「这个字段要显示成 X」时,先分清是**展示投影**还是**存储身份改写**:
|
|
70
|
+
|
|
71
|
+
- **展示投影**:只改读侧/前端映射,底层列语义不变 → 优先。
|
|
72
|
+
- **存储身份改写**:把「应该显示什么」写成对既有列的覆盖 → 只有当该列语义本就该变时才可,且必须回答三问:覆盖后**原值去哪**(有无留痕列 / 能否还原)、**能否回滚**、**下游按该列取值的地方是否全部同口径**。
|
|
73
|
+
|
|
74
|
+
复核动作:对 spec 里每一句「改写 X 列」「X 列更新为 Y」,先问「X 列原本代表什么?这个语义**该不该**变?」——不要只核「改完之后自洽」。
|
|
75
|
+
|
|
76
|
+
**为什么必须靠人/复核代理主动核**:静态门只看结构与可编译性,读不出列语义;测试若与实现同源,会把错误口径**固化成期望**(本件 20 个用例全部按旧口径断言、改前全绿),无从发现口径本身错;spec 一旦写成「事实源」还会持续自我强化。本件 spec `2026-10-13-pml-quota-substitute-rewrite` 项二即把「代用后定额行显示成谁」实现成了「改写定额行物资身份(编码/名称/规格/常备/单位/TAG)」,并**经独立复核逐条核证通过**,直到 2026-10-23 用户指令才反转。
|
|
77
|
+
|
|
78
|
+
### spec 半落地核验(2026-11-02 追加,来源批次三)
|
|
79
|
+
|
|
80
|
+
复核 spec/plan 的 `done` 声明前,逐条对照「可观察判据」:每条判据能否指认到代码、测试或可执行脚本?不能指认即半落地;半落地不得标 `done`,须补测试或降级为登记项,并在 incident/notes 留指针。
|
|
81
|
+
|
|
82
|
+
**为什么必须靠人/复核代理主动核**:静态门只能证明编译/结构,无法证明「承诺的行为真的落地」;实现与测试同源时,半落地仍可全绿。
|
|
83
|
+
|
|
84
|
+
## 结构化修复动作
|
|
85
|
+
报结构问题时给命名动作,禁只说「这里复杂」让作者猜:消条件链建类型/分发器、折叠重复分支、编排与业务分离、特性逻辑移回所属层、复用权威 helper 禁近亲复制、显式类型边界消下游分支、删无澄清价值的透传包装、抽 helper 或拆大文件。
|
|
86
|
+
|
|
87
|
+
## 合入标尺(防 P2 纠缠)
|
|
88
|
+
确定改善整体代码健康即建议合入,不因「不是我会这么写」而拦——完美不存在,持续改进是目标。样式偏好与假设性风险禁报(证据纪律见角色契约 Constraints)。
|
|
89
|
+
|
|
90
|
+
## 出处
|
|
91
|
+
- 双轴框架与坏味道清单:提炼自宿主全局 `code-review` 技能(Fowler《Refactoring》ch.3 基线)。
|
|
92
|
+
- 结构化修复动作与合入标尺:借自 [addyosmani/agent-skills](https://github.com/addyosmani/agent-skills)(MIT)。
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# 独立复核黄金集(golden-set)
|
|
2
|
+
|
|
3
|
+
> 校准资产(2026-10-16 建集,调研建议4):从已闭环 incident/papercut 提炼的带已知答案评审样本。
|
|
4
|
+
> 用途:①月度对账抽样比对独立复核结论与事后结果(mechanism-registry 登记);②复核员/新会话自检——
|
|
5
|
+
> 对样本盲评后对答案,命中差 = 校准差。**每条样本带本仓上下文要点**(泛化样本无校准力,外部实证:
|
|
6
|
+
> 注入仓库上下文 96% vs 野外 56.3% 拒绝)。
|
|
7
|
+
> 纪律:样本引用的是闭环时事实;对应代码后续演进不改已知答案(答案锚定当时的 incident 定性)。
|
|
8
|
+
|
|
9
|
+
## 使用方法
|
|
10
|
+
|
|
11
|
+
1. **盲评(双臂)**:遮住「已知答案 / 上下文要点」两列,按本技能双轴框架独立给结论——报/不报 + 级别(P0/P1/P2)+ 根因方向一句话。
|
|
12
|
+
- **A 臂(默认)**:复核员装载本技能(含本仓回归清单与红线口径)。
|
|
13
|
+
- **B 臂(对照,月度抽 5–8 条即可)**:把同样的题面交给**干净会话**,只给样本内联的仓库上下文,不载本技能。
|
|
14
|
+
- **Δ = A 命中差 − B 命中差**是唯一能证明「上下文注入起作用」的数;两臂同样准说明校准力来自样本内联而非技能文档,两臂同样差说明该样本的已知答案不可判——两种情形都记进留痕表的「臂」列,不互相冒充。
|
|
15
|
+
2. **对答案**:三档记——**命中**(动作与定性同向:应报且档位/根因同向,或应放行且未报);**误报**(应放行却报);**漏报**(应报未报,或报了但根因方向错)。
|
|
16
|
+
3. **方差复跑**:同会话对**可疑判定**(与已知答案不符,或与常识相悖的轻松命中)原样再评一次;判定翻转 → 归**评分方差**(题面或 rubric 有歧义),本轮不计入命中差,另开 papercut 修题面;判定不翻转才计**校准差**。目的:别让基础设施噪声冒充模型/复核方差。
|
|
17
|
+
4. **记录**:**首月留痕起于本表下方「月度盲评留痕」**(2026-10-17 前该资产已建成但零次跑数——登记册状态列「现役」指集已存在,不指已有数据)。按月汇总:月份 | 参评样本数 | 臂(A/B)| 命中/误报/漏报 | Δ | 方差复跑翻转次数 | 与 `workflow/reviews.d/` 当月片互参的备注。该片是复核事件级的「采纳/拒绝/误报」计数,本表是样本级命中差——两种粒度不混算,只在备注列关联。
|
|
18
|
+
5. **校准债**:命中差(误报+漏报 ÷ 参评样本数)连续两月 >20% → 在 `workflow/papercuts.d/` 当月片登记校准债,拟修指向角色契约 / 复核提示词条目。**前提**:先按第 3 步剔掉方差翻转的判定,否则评的是题面、不是复核员。
|
|
19
|
+
|
|
20
|
+
## 月度盲评留痕
|
|
21
|
+
|
|
22
|
+
| 月份 | 参评样本数 | 臂 | 命中 | 误报 | 漏报 | 命中差 | Δ(A−B) | 方差翻转次数 | 备注 |
|
|
23
|
+
|---|---|---|---|---|---|---|---|---|---|
|
|
24
|
+
| 2026-10 | 25 | A | 24 | 0 | 1 | 4% | —(B 臂未跑,下月抽 5–8 条) | 0 | 首跑(2026-10-21,门禁极小化第 2 批):主会话 A 臂按「先判后对」实现单会话盲评。唯一漏报 #13(T-SQL 关键字方括号根因——题面未内联该线索,方差复跑不翻转照计校准差,题面线索完备性待复核不改答案);#1 档位偏一档(P1 vs P0,定性同向计命中)。与 reviews.d/2026-10 事件级面互参:66 意见采纳率 70% / 误报 0%,与样本级 4% 命中差同向 |
|
|
25
|
+
| 2026-11 | 8 | B | 6 | 0 | 1 | 0%(剔除翻转后 0/7) | +4pp(A 4% vs B 0%,参评数 25:8 仅方向参考) | 1(#13 跨会话复现翻转) | 2026-11-08 跑(finder 6→3 减配后首跑,兑现 registry「B 臂定 2026-11」):干净会话(不载技能,只给题面+内联上下文)。7/7 稳定命中、0 误报;#13 三评两错一对(A 臂 10 月漏、B1 判「非保留字」、复现会话完整命中)→ 判评分方差/知识边界样本,按口径不计入本轮命中差,题面已补保留字线索(答案不变)。Δ≈0:两臂几乎同样准——校准力主要来自样本内联上下文而非技能文档 |
|
|
26
|
+
|
|
27
|
+
## 样本
|
|
28
|
+
|
|
29
|
+
| # | 类型 | 来源 | 评审对象 | 题面 | 已知答案 | 上下文要点 |
|
|
30
|
+
|---|------|------|----------|------|----------|------------|
|
|
31
|
+
| 1 | 正例·口径单源 | workflow/incidents/2026-08-29-code-template-l3-readd-duplicate.md「独立复核」节 | 「L3 小类可归属 L1」修复 diff(`CodeTemplateService.GetSpecConfigAsync` 谓词改写 + 前端 filteredSC/selectCategory),预览公式路径 BuildVariablesAsync 不在改动清单内 | 编码生成侧 L3 解析已改兼容 L3-under-L1,预览侧未动;静态门全绿。复核是否应报? | 应报 P0——BuildVariablesAsync 的 L3 谓词未与 GetSpecConfigAsync 同步,预览对 L3-under-L1 退化为「匹配任意同 AttrCode 节点」,存量全局 L3 与 L3-under-L1 撞码时取错节点 → 预览≠生成(独立复核实战抓出;修复后补回归用例 BuildVariablesAsync_L3UnderL1_ResolvesL3Variable) | 需知本仓「同一解析语义多消费点须同口径」的单源纪律(随后 2026-08-31 即踩导出侧漏改同族);需知 L3-under-L1 是合法拓扑(ParentType='L1') |
|
|
32
|
+
| 2 | 正例·数据完整性 | workflow/archive/2026-10/incidents/2026-09-29-inbound-duplicate-receipt-guard.md(复盘三件套 2) | 入库重复收货守卫首版实现 diff(草稿明细占用计算 + 可用列表过滤) | 守卫按「草稿明细占用」拦同一到货明细二次入库;下推草稿被编辑改小数量后占用是否仍足额? | 应报 P1——首版只计草稿明细占用、漏「已下推整单占用」,下推草稿改小后留下同明细两张入库单窗口;修为 max(草稿占用, 已下推且非本单 ? 送货量 : 0) 并加第 4 例钉住,可用列表同步排除已下推到货单 | 需知下推路径以 ArrivalOrder.InboundOrderID back-link 表达占用、手工路径以明细 ReceivedQty 表达占用——两种占用表达并存是判「足额」的前提;需知「数量守恒的服务端复校」红线 |
|
|
33
|
+
| 3 | 正例·数据完整性(预防性) | workflow/archive/2026-10/incidents/2026-09-29-outbound-inventory-row-key-align.md | 出库确认扣减的库存行定位(确认侧 FirstOrDefaultAsync 按物料+仓库+库位+批次,无 ProjectID、无 ORDER BY) | 当时 dev 库同键冲突组为 0(库存仅 3 行且 ProjectID 全 NULL),定位查不错行。复核是否应放行? | 不应放行——写入/冲销/转储/申请可用量四处键均含 ProjectID,确认侧独缺项目维且无定序取任意行;同键多行是写入键决定的正常形态,属结构性缺口,环境数据未触雷不构成放行理由。修复=抽 FindInventoryRowForDetailAsync 单一实现 + ThenBy(ID) 确定性定序 | 需知库存写入键含 ProjectID(不同项目入库同物料/库位/批次即分行);需知「同语义查询共用单一实现+确定性定序」既有规范与货权批次回退时整批删掉定序的沿革 |
|
|
34
|
+
| 4 | 正例·跨端同源 | workflow/incidents/2026-10-08-pml-export-column-parity.md | 页签列变更 diff(「常备物资」列前移、「代用物资」加列,仅前端 index.vue 列定义数组) | 两次页签列变更只改前端;导出端(PMLService.Export*Async 硬编码表头数组)未动,构建与既有测试全绿。复核是否应报? | 应报——同一「列清单」前后端各一份、无同源约束,导出列序/列集已漂移(常备物资错位、缺代用两列);加列 intent 的「非目标」排除导出但未登记 follow-up。修复 1d28ddaf,并落「页签列变更须同批改导出三数组、测试断言完整列序禁抽样」条目 | 需知「导出列序=页签列序去掉操作列」口径;需知当时 PMLQuotaExportTests 只抽样断言 3 个表头格(抽样正是位移漏检原因)、ExportMatchMTOAsync 零覆盖 |
|
|
35
|
+
| 5 | 正例·DTO 契约/测试钉子 | workflow/incidents/2026-10-09-basecode-apply-operator-name-redundant.md | 列表 DTO 的 OperatorName 字段与其测试断言(Assert.Equal(姓名, item.OperatorName))及回归清单旧条目 | Service 无条件 dto.OperatorName = dto.Operator,两字段永远同值;测试断言与回归清单条目均钉住该赋值,全门绿。复核是否应报? | 应报——spec 2026-09-22 Operator 语义归正后 Operator 已是显示名,OperatorName 无独立语义,双字段永远同值属契约冗余;且测试把冗余当正确性固化、回归清单旧条目同病(注释级信号未触发评审警觉)。修复=删字段+改断言(前端渲染值等价) | 需知 Operator/OperatorJobNo/OperateTime 由 EFRepository 统一回填且 Operator 已归正为显示名;需知「DTO 字段须有独立语义」无机器门(check-audit-fields 只管写端) |
|
|
36
|
+
| 6 | 正例·派生字段对账 | workflow/incidents/2026-10-09-pr-buyer-group-unmatched-and-list-state.md(根因·缺陷①) | 「应用此编码」创建物资链路(CodeGeneratorService 签发占号 token → MaterialCodeService 保存回填 → 采购组匹配) | 物资分配已配采购员,采购申请仍报「未匹配到采购组」;匹配以 MaterialCode.TemplateCode 为键。复核定位应指向哪里? | 指向占号缓存字段集缺口——TempCodeHold 无 TemplateCode 字段、签发不写、保存只取 dto(前端默认空串)→ codegen 路径 TemplateCode 落 NULL → 匹配键 NULL 恒 continue。深层=占号缓存字段集与创建 DTO 分类字段集未对账(共享表单第二宿主同族先例)。修复=增字段+签发写入+保存回填(显式值优先),变异验证:注释回填行用例转红 | 需知「应用此编码」是 MaterialCodeForm 共享表单的第二宿主路径、派生字段以 TempCodeHold 为载体;需知采购组匹配键为 NULL 时静默跳过不断链报错 |
|
|
37
|
+
| 7 | 正例·测试确定性 | workflow/incidents/2026-10-10-integration-legacy-row-page-assert.md | 四处「存量行 NULL 读取不炸」集成用例(直插 OperateTime 为默认值的行 + 无过滤默认分页列表断言) | 写用例时共享库行数少恒绿;断言种子行出现在默认列表第 1 页(Page=1/PageSize=20,按 OperateTime 倒序)。复核是否应放行? | 不应放行——断言把「读取路径不炸」与「该行在第 1 页」绑定;直插行不经 EFRepository 故 OperateTime 排序垫底,共享 dev 库行数 ≥20 后被挤出首页,门禁红随环境数据量而非代码(真红实录 434/435),同族 4 处成族。修法=按种子唯一业务键过滤查询(同族第三形态:无过滤键用例须 PageSize 取 PagedQueryDto.MaxPageSize 显式取消分页,见 incidents/2026-10-10-outbound-request-keyword-empty-page-size.md) | 需知 verify.mjs 的 dotnet test 直连共享 dev 库(DEVE_CSS_YZGY)且多会话并行为本仓常态;需知 RollbackTestBase 事务回滚使「用例自身行数」不代表查询面全量 |
|
|
38
|
+
| 8 | 正例·守卫缺位 | workflow/incidents/2026-10-12-po-businesstype-match-mto-direct-guard.md(根因①④) | PO 引入/建单守卫(业务类型联动校验与列表预过滤 + 关闭守卫) | 业务类型联动对「代管(2)」维度全绿;关闭守卫按 pr.MTOOrderID 覆盖申请来源行。普通⇄固定资产互串与明细直连 MTO(PurchaseRequestID 空)两形态,复核是否应报? | 应报双缺口——① 联动仅守代管维度,普通(1)⇄固定资产(3)互串静默落库(修为全值域匹配、null 申请放行);④ 关闭判定链锚在申请上,直连 MTO 行整行跳过守卫(前端不可达、仅 API 直连可触,仍属守卫缺位——修为 ValidateMtoDirectLinesClosedAsync,集成测试 DirectMtoDetailLine_ClosedMto_BlockedOnCreate 钉住) | 需知「下游守卫与上游状态机对账」无机器门;需知「前端不可达≠不可达」——API 直连可触的路径自动化天然漏配,须显式造用例 |
|
|
39
|
+
| 9 | 正例·谓词限定/spec 固化 | workflow/incidents/2026-10-16-category-level-guard-scope.md(根因·缺陷1 + spec 独立复核节) | 分类层级「下级对象」判定谓词(HasChildCategoryAsync:ParentCode == 本行 AttrCode)与同名 spec 草稿 | 子级判定只按编码相等;同模板内跨层级同码(L2 码 01 与其唯一小类 L3 码 01)即互认父子,prod 60 个 code=01 的小类全部被误拦。复核 spec 与实现应报什么? | 应报 P1 级谓词缺限定+spec 固化——分类码只在「层级×父级」命名空间内唯一,子级判定须加 ParentType == LevelType(空值 fail-closed);同文件 HasSpecAttributeParentReferenceAsync 已有正确写法可对照;2026-10-09 intent 把错误谓词逐字固化进 spec,复核 spec 时即应拦(SpecReviewGuard 实战 P1×5 全部采纳返修)。实证面:POC_MM 169 行/73 键假子级、dev 90 行/62 键 | 需知本仓分类码命名空间按「层级×父级」分片(2026-09-18-l3-global-owned-code-collision 先例);需知「复用既有口径时命名空间前提不得遗落」与 ParentType 空 fail-closed 约定 |
|
|
40
|
+
| 10 | 正例·多实现漂移 | workflow/archive/2026-10/incidents/2026-10-13-materialcode-l3-name-cross-l1.md(根因 + 时间线·独立复核) | L3 名称解析修复 diff(CategoryNameResolver 加 RootCode 消歧)及同页面其他消费点 | 修复聚焦列表/导出/申请列表共用的解析器;同页面「物资分类」级联的分类树端点内联了另一份 L3 名解析、wiki 导出 SQL 工具还有一份。复核是否放行? | 不应放行——独立复核 Reject:P1-1 分类树端点第四份实现漏修(投影未取 RootCode)、P1-2 复算口径无脚本留痕、P2-2 导出 SQL 第五份实现漂移;用户裁定扩面后读侧全仓单源 + 口径对账测试 10 例。核心根因=L3 分支缺 RootCode 判据(L2 编码跨 L1 复用时同码 L3 命中多节点按查询顺序取首条) | 需知 L2 编码可跨 L1 复用、RootCode 列为消歧而设;需知「同一解析语义须全仓单源」——本仓已三度记录该族漂移(2026-08-29、2026-09-18 审查、本件) |
|
|
41
|
+
| 11 | 正例·SQL 数据保真 | workflow/archive/2026-10/incidents/2026-10-14-outbound-lock-rawsql-decimal-scale.md | 原生 SQL 增量回写(ExecuteSqlRawAsync 对象数组参数更新 LockedQty/LockedUsageQty) | SQL 已参数化(未拼字符串),静态门全过;但申请数量三位小数(7.125)占用后 LockedQty 落库 7.130000。复核应报什么? | 应报——EF Core 6 对对象数组 decimal 参数不带 Precision/Scale,provider 按 2 位小数下发(7.125→7.13),与列精度 (18,6)/(18,4) 失配;占用/释放同式收敛往返净零,但汇总值与占用行之和可差 ≤0.005。修法=命名占位符 + CreateParameter 显式 precision/scale;先红后绿实证(修复前 7.13 / 4.065)。同机制 MTOChangeService 一处未收口另行立项 | 需知 IUnitOfWork.CreateParameter 的精度显式约定(既有注释只禁拼接字符串);需知既有占用用例数量全为整数或 ≤2 位小数,对 2 位收敛判别力为零 |
|
|
42
|
+
| 12 | 正例·测试同步 | workflow/archive/2026-10/incidents/2026-10-15-inbound-location-required-test-fixture-gap.md 与同目录 -stale-tests.md(同族两件) | 「入库明细库位必填」校验提交(b6cfd0db 与 b8ce1247 两次引入,均只落产品代码) | 全量单测 6 例红(报「第 N 行请选择库位」),改动只含产品代码。红的归属与修法? | 归属=存量债非当批引入(其中一件以 git diff develop..HEAD tests 为空实证逐字节相同);根因=新增必填校验未同步既有测试 DTO 夹具(LocationID 是 Guid? 编译门不拦,只在运行期转红),且 pre-commit 只 build 不 test、develop 直推不跑后端测试门 → 红长期潜伏。修法=补两处夹具(纯测试面,产品零改动),非回退校验;同族两件同日前后独立发现,形态成族 | 需知 commit-check 后端项为 dotnet build 不含 test、verify.mjs fail-fast 使门 17 红遮蔽后序门;「服务层新增必填校验须全仓检索既有测试 DTO 构造并同步」已落回归清单 |
|
|
43
|
+
| 13 | 正例·schema 台账/门禁假绿 | workflow/archive/2026-10/incidents/2026-10-12-outband-column-readd-recurring.md(根因② + 全库残留清扫) | schema 批次脚本 2026-09-26-pml-quota-fields/01-alter.sql(DROP COLUMN LineNo 未加方括号)与其 02-verify.sql | 批次已入库、02-verify 一直在跑;应用侧写入报错后有人临时给 LineNo 加了默认约束。复核这组脚本应报什么? | 双缺陷——① LineNo 是 T-SQL 关键字,删列语句未加方括号恒语法错误、静默不生效,02-verify 自 2026-09-26 起一直红而无人跟进(台账与实库长期不一致);② 02-verify 以「SELECT 行=失败项」形式上报时,断言失败不产行即整体假绿(部分批次同病)。修复=加方括号+先删依赖约束(af7c193)+ 漂移门补该表断言 + 新机具 check-schema-residue.mjs | 需知 schema 漂移门(SchemaLedgerDriftTests)当时未覆盖该表(漏检点);需知「dev 结构性变更须入库批次」纪律与「失败必须 RAISERROR/置失败计数」的核验脚本规范;**题面线索(2026-11-08 补)**:LineNo/LINENO 是 T-SQL 保留字(niladic 函数),裸标识符必语法错——三次盲评两错一对证实缺此线索时该样本处知识边界(答案不变) |
|
|
44
|
+
| 14 | 正例·前端样式 | workflow/archive/2026-10/incidents/2026-10-13-outbound-material-check-dialog-overflow.md | 「材料检查」弹窗宽表(a-modal width 1100,11 列宽合计 1350px,无 :scroll.x) | 功能口径(满足/不满足判定、空态)UI 实测全过;表格横向溢出弹窗边界。复核该改动应报什么? | 应报样式缺陷——列宽合计 1350px 超弹窗内容区约 1052px 且无横向滚动容器,溢出顶出弹窗;深层=后续加列按各列可读性独立定宽、未以容器宽度做总量预算。修法=压缩列宽 1350→1048 + :scroll 补 x 兜底(b118b9b2);防复发条目「宽表列宽合计超容器必须配 scroll.x」 | 需知 vue-tsc/构建门对布局无感、该弹窗上线时 UI 实测只验功能口径未验容器收纳;需知 scroll.x 在本仓是散落惯例未成文(复核可引既有页面先例) |
|
|
45
|
+
| 15 | 正例·文档协议 frontmatter | workflow/papercuts.d/2026-09.md(2026-09-12 行) | 一批已闭环 intent/incident 的状态留痕方式(正文「状态:done(附注)」类中文格式变体行) | 对账脚本按正文正则匹配中文状态格式,实报 18 份未勾 done、实际更多——格式变体致漏统计。复核这批文档的状态协议应报什么? | 应报(根因级)——状态等机器字段散在正文、格式变体使对账漏统计;修法=frontmatter 受限子集(状态/级别/日期/发现/流程/确认结果/确认时间严格枚举迁 YAML 头,215 份存量脚本化迁移),check-loop 改 fm_get 读 frontmatter 断言并补 12 场景 fixture(含本变体回归)。此后复核闭环文档:状态口径只认 frontmatter,正文不再承载 | 需知本仓 workflow 文档 frontmatter 受限子集协议(2026-09-13 起)与 check-loop 读 frontmatter 的机器口径;legacy 回填件加「流程: legacy」豁免行 |
|
|
46
|
+
| 16 | 负例·误报更正(死代码误判) | workflow/archive/2026-10/incidents/2026-09-29-inbound-update-field-loss.md(复盘三件套 P2 更正) | 入库单 CreateAsync 修复 diff 中 detail.DeliveryQty = detailDto.DeliveryQty ?? arrDetail.DeliveryQty | 修复同批发现「?? 右侧恒不生效(DTO 同名字段总在前)」拟作死代码顺带清理。作为复核员是否同意清理? | 不同意——独立复核 P2 更正:InboundOrderDetailSaveDto.DeliveryQty 实为 decimal?,下推编辑载荷不含该字段时取 null,?? 生效且必要(取到货明细送货量),本件有意保留不清理。清理即引入「下推编辑丢送货量」回归 | 需知下推生成的入库单编辑载荷七字段不提交(本 incident 根因正是字段抹值);需知「顺带清理死代码」须先证伪取值路径——类型可空即存在生效场景 |
|
|
47
|
+
| 17 | 负例·遗留项归属 | workflow/incidents/2026-10-08-drawer-form-validate-residue.md(验证记录 + 遗留项) | 四页抽屉校验残留修复后的 UI 实测证据(47 PASS / 0 FAIL,console 出现 arrival-orders 2 条 exception: Object) | 修复后实测控制台仍有未处理 Promise 拒绝(handleSave 无 catch)。复核是否报「本修复引入异常」? | 不报——该 2 条为既有实现非本批引入(校验失败路径本就缺 try/catch 与汇总 toast),本批只登记遗留项不动代码;pml 1 条 antd Tabs 弃用告警同属既存基线。修法(对齐另三页)留待后续单独立项 | 需知「异常归属既有遗留/非本单引入」的裁定口径与控制台既有基线登记;需知本单修复面是 clearValidate 复位而非保存异常路径(范围归属判断) |
|
|
48
|
+
| 18 | 负例·判据非空转 | workflow/delegations.md 委派结果表(2026-10-08 ui-verifier 行) | 抽屉表单校验残留修复的浏览器实测证据(47 PASS / 0 FAIL / 22 NOTE,四页独立复跑与原证据逐行一致) | 实测全绿且与原证据一致,怀疑「判据空转」(断言恒真、测了个寂寞)。复核是否应判证据无效或要求重测? | 放行——判据非空转有三重论证:① 关闭后表单实例存活而错误态断言为 0(若判据恒真,销毁表单也会绿);② no-op 探针(改回硬编码变异)当场重现残留使断言转红;③ 控制台异常逐条归属(2 条既有遗留非判据对象);另有全程 0 写请求佐证 | 需知本仓 UI 实测证据口径(PASS/FAIL/NOTE + 修复前对照红 + 变异自证);校准点:判「实测绿是否可信」看判据对缺陷的判别力实证,不看通过数 |
|
|
49
|
+
| 19 | 负例·证据时点 | workflow/incidents/2026-10-12-po-businesstype-match-mto-direct-guard.md(时间线·②③ 截图产物) | 用户提供的缺陷截图——取消弹窗旧文案「关联采购申请将退回已审核」、超量提醒旧文案「采购申请 {单号} 本次下单…」 | 截图显示现行文案违反「取消不改申请状态」与「行号+物料编码定位」口径。复核是否报两项文案缺陷? | 不报——②③ 为修复前截图产物:旧文案亡于 11f6848(2026-09-28)、超量旧文案亡于 df98fb7(2026-10-10),截图内单据日期均早于修复,HEAD 代码已符合口径。处置=零代码改动 + 环境同源复验留痕现行文案 | 需知文案消亡的提交时点可 git log -S 追溯,证据时点须与 HEAD 对账;需知运行服务可能落后于 HEAD(发布目录 DLL 时间戳比对) |
|
|
50
|
+
| 20 | 负例·红的归属(修测试不修产品) | workflow/archive/2026-10/incidents/2026-10-08-inbound-group-conservation-assert-drift.md | CI 首跑红的单测 Create_PartialInbound_WithinRemainingQty_SucceedsAndOverIsRejected(期望文案「可入库数量不足」vs 实际「本次实收数量合计…超过可收数量…」) | 单测红、断言与实现文案不符。复核应报产品缺陷还是测试缺陷?修哪边? | 修测试——38bbad8(09-28 储位拆分批次)新增同组守恒前置守卫(同一到货明细多行合计 ≤ 可收数量)先拦(场景 3+8=11>10),轮不到旧行级余量校验文案;生产实现无缺陷且文案信息量更足,纯断言滞后。修法=断言对齐现行守卫文案 + 补两道守卫执行序注释。本条即 CI 管线首跑首个战果 | 需知守卫执行序(同组守恒前置守卫在行级校验之前);需知「断言锁定文案」型测试随实现演进的同步纪律(新增公共行为须同步测试) |
|
|
51
|
+
| 21 | 负例·环境抖动归属 | workflow/incidents/2026-10-12-integration-tests-shared-db-flake.md | 全量门 14 红 6 例(PerfGuardLatency + PO/PR 域集成用例),同一提交此前两轮全绿 | 全量 verify 红 6 例、fail-fast 连带后序门未跑、绿凭证落不了账。复核是否报 6 个产品回归并阻断关单? | 不报回归——隔离复跑 18/18 全绿;同时段只读 sqlcmd 报 Msg 1205 死锁牺牲品,佐证共享 dev 库并发锁竞争真实存在 → 判环境抖动非代码回归。处置=降抖(跨会话 sp_getapplock 互斥 + 性能预算可配,e74a6bd)而非放宽断言/瞬时重试(后者因「可能掩盖真回归」被明确不采纳) | 需知多 worktree 并行共用同一 dev 库为本仓常态、TEST_DB_CONN 已支持但用户裁定暂不建;需知「偶发红先隔离复跑定因,禁以重试/放宽断言掩盖真回归」纪律 |
|
|
52
|
+
| 22 | 负例·行为变化正确收敛 | workflow/archive/2026-10/incidents/2026-10-13-materialcode-l3-name-cross-l1.md(影响面·复算数据面) | L3 名称解析修复后三库复算——POC_MM 28 条中 1 条(FOOML1F4100002)小类列由「焊烟净化器」转为空 | 修复使一条记录的显示从有值变空。复核是否报「修复引入显示回归」? | 不报——该记录属既有「跨父级存储」形态(导入 L3 按名兜底把别的父级下节点存进来),修复后「链上无节点→空」与生成侧权威口径一致(三库受影响记录逐条比对 0 偏差),属正确收敛但用户可见变化需披露(已披露)。另发现的「记录名↔分类链不一致」30/9/17 条为独立既有问题(与变化集交集 0)另行立项 | 需知名称解析正确性的基线=生成侧 CategoryLevelResolver 口径而非「修复前显示值」;需知导入按名兜底造成的跨父级存储既有形态 |
|
|
53
|
+
| 23 | 负例·环境同源 | workflow/incidents/2026-10-10-po-import-sort-mto-closed-qty-warning.md(遗留项) | PO 引入排序/守卫修复后的 UI 实测——实测复现旧行为(排序未生效/守卫未拦),改动已提交 | 修复已提交,实测却复现旧行为。复核应报「修复未生效/实现错误」吗? | 先验环境同源再定性——当时 API 从 %TEMP% 发布目录运行且 dotnet publish 增量跳过重编(DLL 时间戳早于修复提交)、前端 5203 由另一份 checkout 的 vite 提供:自证的是旧代码。处置=--no-incremental 重发布重启 + 本 worktree 起 vite 后重测全绿。教训已成文:UI 实测前必须确认运行服务与本 worktree 同源(2026-10-12 复核同样先核发布 DLL 时间戳晚于产品提交) | 需知 runtime-env §2/§3(编译输出锁、端口与进程归属);需知 api-local.ps1 的本地约定(调用勿接管道) |
|
|
54
|
+
| 24 | 负例·UI 证据误判(antd 覆盖层) | workflow/papercuts.d/2026-10.md(2026-10-07 行「antd 覆盖层选择器」) | PML 取消提交守卫的 UI 实测记录——popconfirm 点「确定」后 toast 为上一行的守卫文案 | 实测记录「点了取消确认,却被守卫文案拦截」。复核是否报「取消守卫误拦合法操作」? | 不报(假红)——antd v5 关闭后的 popconfirm 节点仍留 DOM 仅 display:none(不带 ant-popover-hidden 类),按类名排除隐藏态会命中上一次打开的气泡,点的「确定」实为上一行操作,toast 自然是旧行守卫文案;连带清理失败留 1 条测试托盘亦由此误判。正解=按 getBoundingClientRect().width > 0 过滤取末位(verify-ui 技能已落该条) | 需知 antd 覆盖层关闭后的 DOM 存续行为与本仓 verify-ui 技能「关键坑」口径;需知判定 UI 证据前先验测试脚本选择器形态 |
|
|
55
|
+
| 25 | 负例·网络假红 | workflow/papercuts.d/2026-10.md(2026-10-15 nuget-audit 超时行与 frontend-audit TLS 断连行) | 全量 verify 安全段门红——nuget-audit 60s 超时「解析不出档位」、npm audit「TLS socket disconnected」 | 漏洞审计门红。复核是否报「依赖漏洞暴增需紧急升版」? | 不报——网络类假红:隔离重跑 15s / 18.6s 通过(Critical 0);同会话三个网络依赖门各命中一次瞬时抖动,全量需重跑 3 次才落绿凭证。反方向同门另有假绿缝:内网镜像不代理漏洞数据面(npm 镜像 404、Nexus 无 VulnerabilityInfo 时同一 sln 报 0 条 advisory 且 exit 0)——三门已于 2026-10-16 退役出关单门表。判据:输出含 timed out / socket disconnected 即归网络类 | 需知漏洞数据只来自公网源(npm/NuGet 官方端点)、内网镜像不代理该面(runtime-env §6.4);校准点:同一门既可能假红也可能假绿,双向都要防 |
|
|
56
|
+
|
|
57
|
+
## 建集统计与维护
|
|
58
|
+
|
|
59
|
+
- 2026-10-16 建集:25 条(正例 15 / 负例 10)。类别分布——后端数据完整性/守卫/谓词 6、跨端同源与 DTO 契约 3、SQL/schema 数据保真 2、测试基建与确定性 3、前端样式 1、workflow 文档协议 1、证据/环境/归属类负例 9(部分跨类)。
|
|
60
|
+
- 补样门槛:只收**已闭环、定性明确、可从文档追溯**的案例;同族第二例须带来新失败形态才入集(宁缺毋滥)。
|
|
61
|
+
- 退役条件:样本引用的口径若被后续规范显式废止(如三门退役之于 #25),保留样本并在该行尾注记「口径已变更,答案仍锚定闭环时定性」。
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: session-resume
|
|
3
|
+
description: 会话重入与中断落盘——接手、切换 worktree、压缩/新会话续作时,先用机器事实重建当前态再动手;供主智能体在任何级别开工前使用。
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# session-resume — 会话重入与中断落盘
|
|
7
|
+
|
|
8
|
+
## 触发
|
|
9
|
+
|
|
10
|
+
- 新会话 / 上下文压缩后继续既有任务;接手他人分支或 worktree。
|
|
11
|
+
- 用户问「做到哪了 / 还有什么没提交」。
|
|
12
|
+
- 动手前发现工作树不干净,但说不清改动归属。
|
|
13
|
+
|
|
14
|
+
## 1. 重建(机器事实优先,不靠记忆)
|
|
15
|
+
|
|
16
|
+
按序跑,全部只读:
|
|
17
|
+
|
|
18
|
+
| 问 | 命令 | 读什么 |
|
|
19
|
+
|---|---|---|
|
|
20
|
+
| 在哪 | `node .agents/skills/session-resume/scripts/worktree-audit.mjs`(分类 + 清理建议,只读) | 主区 / 活跃 / 可清理 / 失效,一次看全 |
|
|
21
|
+
| 什么没落盘 | `git status --porcelain -uall` + `git stash list` | 未跟踪文件与 stash(最易漏) |
|
|
22
|
+
| 在飞什么 | `workflow/{plans,specs,intents,incidents}` 活跃态 + `.agents/cache/pipeline-runs/*.json` 末次 | 任务清单勾选态、编排 run 的 stage 进度 |
|
|
23
|
+
| 上次绿在哪 | `.agents/verifications.jsonl` 末行(钉 headShort + 24h 窗) | 当前 HEAD 是否已有绿凭证 |
|
|
24
|
+
|
|
25
|
+
> L2/L3 的 plan 勾选态对齐口径单源 = `.agents/commands/stages.md` Build 章「会话重入」;本技能不复制,只补 L1 与跨 worktree 场景。
|
|
26
|
+
|
|
27
|
+
### 1.5 梦境报告装载(若存在)
|
|
28
|
+
|
|
29
|
+
若 `tmp/dream-report-*.md` 或 `tmp/dream-judge-brief-*.md` 存在(gitignore 运行态,删除可从 git + 台账重建),按 `.agents/skills/dream/SKILL.md` 装载:
|
|
30
|
+
|
|
31
|
+
1. 读最新报告与 AI Judge 简报;
|
|
32
|
+
2. 委托 independent-reviewer 核验 AI Judge 抽样;
|
|
33
|
+
3. 核验结论回写 papercuts / 修正笔记(不自动 commit / push)。
|
|
34
|
+
|
|
35
|
+
## 2. 对齐(不符先停手)
|
|
36
|
+
|
|
37
|
+
- 勾了未提交 / 提交了未勾 / 工作树有来源不明的改动 → 先确认归属再继续,不覆盖。
|
|
38
|
+
- 跨 worktree:未提交改动**不会**自动跟过来。用 `git diff | sha1sum` 比对两树,确认是否同一批改动,避免双份提交。
|
|
39
|
+
- 两分支指向同一提交但各有一份改动 = 两套独立工作树,不是共享。
|
|
40
|
+
|
|
41
|
+
## 3. 输出(4 行简报,先给结论)
|
|
42
|
+
|
|
43
|
+
```
|
|
44
|
+
位置:<worktree> @ <branch> (<headShort>),ahead/behind
|
|
45
|
+
未落盘:<N 改 / M 删 / K 未跟踪 / stash 数>
|
|
46
|
+
下一步:<活跃 plan 的下一未勾项 或 run 的下一 stage>
|
|
47
|
+
阻塞:<需用户决定的唯一事项;没有写「无」>
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## 4. 中断落盘(pause)
|
|
51
|
+
|
|
52
|
+
写 `.agents/cache/handoff.md`(gitignore,本地运行态,可丢弃;git 才是真相):
|
|
53
|
+
|
|
54
|
+
```
|
|
55
|
+
日期 / 分支 / worktree / HEAD
|
|
56
|
+
在飞任务:<workflow 文件>
|
|
57
|
+
已完成:<勾选项>
|
|
58
|
+
下一步:<第一条>
|
|
59
|
+
未提交:<文件清单 + 归属>
|
|
60
|
+
阻塞:<无 / 事项>
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
恢复时先读它,再按 §1 核验;两者不符以 git 为准,并回写 handoff。
|
|
64
|
+
|
|
65
|
+
## 红线
|
|
66
|
+
|
|
67
|
+
- 不凭记忆续作;不覆盖来源不明的未提交改动。
|
|
68
|
+
- 不自动 commit / push WIP;落盘不等于入库,需用户明确要求。
|
|
69
|
+
- 不把 `.agents/cache/` 当权威:删除后必须能从 git + 台账重建。
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// worktree-audit — 盘点 git worktree,分类 主区 / 活跃 / 可清理 / 失效。
|
|
3
|
+
// 默认只读(不删除、不清理、不 prune);`--execute` 只删「可清理」(干净且已合入主分支),
|
|
4
|
+
// 失效走 `git worktree prune`;活跃/主区永不删。删除动作仍须显式 `--execute`。
|
|
5
|
+
// 用法:node .agents/skills/session-resume/scripts/worktree-audit.mjs [--root <dir>] [--json] [--execute]
|
|
6
|
+
// 判据:脏(含未跟踪)或未合入主分支 = 活跃;干净且已合入 = 可清理;目录缺失 / prunable = 失效。
|
|
7
|
+
import fs from 'node:fs';
|
|
8
|
+
import path from 'node:path';
|
|
9
|
+
import { spawnSync } from 'node:child_process';
|
|
10
|
+
|
|
11
|
+
const argv = process.argv.slice(2);
|
|
12
|
+
const asJson = argv.includes('--json');
|
|
13
|
+
const execute = argv.includes('--execute');
|
|
14
|
+
const root = path.resolve(argv.includes('--root') ? argv[argv.indexOf('--root') + 1] : process.cwd());
|
|
15
|
+
|
|
16
|
+
const git = (args, cwd) => spawnSync('git', args, { cwd, encoding: 'utf8' });
|
|
17
|
+
const out = (args, cwd) => {
|
|
18
|
+
const r = git(args, cwd);
|
|
19
|
+
return r.status === 0 ? r.stdout.trim() : null;
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
const porcelain = out(['worktree', 'list', '--porcelain'], root);
|
|
23
|
+
if (porcelain === null) {
|
|
24
|
+
console.error('worktree-audit: 不是 git 仓库(或 git 不可用)');
|
|
25
|
+
process.exit(2);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
// 主分支锚:origin/main > main > master;都没有则不判「已合入」
|
|
29
|
+
const mainRef = ['origin/main', 'main', 'master'].find((ref) => git(['rev-parse', '--verify', '--quiet', ref], root).status === 0) || null;
|
|
30
|
+
|
|
31
|
+
const blocks = porcelain.split(/\r?\n\r?\n/).map((b) => b.split(/\r?\n/)).filter((ls) => ls.some((l) => l.startsWith('worktree ')));
|
|
32
|
+
const primary = (blocks[0] || []).find((l) => l.startsWith('worktree '))?.slice('worktree '.length) || '';
|
|
33
|
+
|
|
34
|
+
const rows = blocks.map((lines) => {
|
|
35
|
+
const field = (name) => lines.find((l) => l.startsWith(`${name} `))?.slice(name.length + 1) || '';
|
|
36
|
+
const wt = field('worktree');
|
|
37
|
+
const head = field('HEAD');
|
|
38
|
+
const branchRef = field('branch');
|
|
39
|
+
const prunable = field('prunable');
|
|
40
|
+
const branch = branchRef ? branchRef.replace(/^refs\/heads\//, '') : '(detached)';
|
|
41
|
+
const exists = fs.existsSync(wt);
|
|
42
|
+
|
|
43
|
+
let dirty = null;
|
|
44
|
+
let upstream = null;
|
|
45
|
+
let ahead = null;
|
|
46
|
+
let behind = null;
|
|
47
|
+
let merged = null;
|
|
48
|
+
let lastDate = null;
|
|
49
|
+
|
|
50
|
+
if (exists) {
|
|
51
|
+
dirty = (out(['status', '--porcelain', '-uall'], wt) || '') !== '';
|
|
52
|
+
upstream = out(['rev-parse', '--abbrev-ref', '--symbolic-full-name', '@{u}'], wt);
|
|
53
|
+
if (upstream) {
|
|
54
|
+
const lr = out(['rev-list', '--left-right', '--count', '@{u}...HEAD'], wt);
|
|
55
|
+
if (lr) { const [b, a] = lr.split(/\s+/).map(Number); behind = b; ahead = a; }
|
|
56
|
+
}
|
|
57
|
+
if (mainRef) merged = git(['merge-base', '--is-ancestor', 'HEAD', mainRef], wt).status === 0;
|
|
58
|
+
lastDate = out(['log', '-1', '--format=%cs'], wt);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
let kind;
|
|
62
|
+
if (!exists || prunable) kind = '失效';
|
|
63
|
+
else if (path.resolve(wt) === path.resolve(primary)) kind = '主区';
|
|
64
|
+
else if (dirty) kind = '活跃(未提交)';
|
|
65
|
+
else if (merged === false || (ahead !== null && ahead > 0)) kind = '活跃(未合并)';
|
|
66
|
+
else if (merged === true) kind = '可清理';
|
|
67
|
+
else kind = '未知';
|
|
68
|
+
|
|
69
|
+
return { path: wt, branch, head, dirty, upstream, ahead, behind, merged, lastDate, kind, prunable };
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
if (asJson) {
|
|
73
|
+
console.log(JSON.stringify({ mainRef, worktrees: rows }, null, 2));
|
|
74
|
+
process.exit(0);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
const pad = (s, n) => {
|
|
78
|
+
const clip = (v) => ([...String(v)].length > n ? [...String(v)].slice(0, n - 1).join('') + '…' : String(v));
|
|
79
|
+
const t = clip(s);
|
|
80
|
+
const w = [...t].reduce((acc, ch) => acc + (ch.charCodeAt(0) > 255 ? 2 : 1), 0);
|
|
81
|
+
return t + ' '.repeat(Math.max(0, n - w));
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
console.log(`主分支锚: ${mainRef || '(无)'}|worktree ${rows.length} 个`);
|
|
85
|
+
console.log(`${pad('分类', 14)}${pad('分支', 34)}${pad('HEAD', 10)}${pad('领先/落后', 12)}${pad('最后提交', 12)}路径`);
|
|
86
|
+
for (const r of rows) {
|
|
87
|
+
const ab = r.ahead === null ? '—' : `${r.ahead}/${r.behind}`;
|
|
88
|
+
console.log(`${pad(r.kind, 14)}${pad(r.branch, 34)}${pad(r.head.slice(0, 8), 10)}${pad(ab, 12)}${pad(r.lastDate || '—', 12)}${r.path}`);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
const stale = rows.filter((r) => r.kind === '可清理' || r.kind === '失效');
|
|
92
|
+
if (execute) {
|
|
93
|
+
const removable = rows.filter((r) => r.kind === '可清理');
|
|
94
|
+
const invalid = rows.filter((r) => r.kind === '失效');
|
|
95
|
+
let removed = 0;
|
|
96
|
+
for (const r of removable) {
|
|
97
|
+
const res = git(['worktree', 'remove', r.path], root);
|
|
98
|
+
if (res.status === 0) { console.log(`✅ 已删除 ${r.path}`); removed++; }
|
|
99
|
+
else console.error(`❌ 删除失败 ${r.path}:${(res.stderr || '').trim()}`);
|
|
100
|
+
}
|
|
101
|
+
if (invalid.length) {
|
|
102
|
+
const res = git(['worktree', 'prune'], root);
|
|
103
|
+
if (res.status === 0) console.log(`✅ 已 prune ${invalid.length} 个失效 worktree`);
|
|
104
|
+
else console.error(`❌ prune 失败:${(res.stderr || '').trim()}`);
|
|
105
|
+
}
|
|
106
|
+
console.log(`\n--execute:删除 ${removed} 个可清理 worktree;活跃/主区未动。`);
|
|
107
|
+
process.exit(0);
|
|
108
|
+
}
|
|
109
|
+
console.log(`\n可清理/失效 ${stale.length} 个。默认只读;确认后加 --execute 删除(只删可清理,失效走 prune):`);
|
|
110
|
+
for (const r of stale) console.log(` git worktree remove ${r.kind === '失效' ? '--force ' : ''}"${r.path}"`);
|