@event4u/agent-config 16.5.0 → 17.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/.augment-plugin/marketplace.json +3 -3
- package/.augment-plugin/plugin.json +1 -1
- package/.claude-plugin/marketplace.json +2 -2
- package/.claude-plugin/skills/install-agent-config/SKILL.md +4 -4
- package/CHANGELOG.md +463 -498
- package/CONTRIBUTING.md +47 -0
- package/README.md +25 -25
- package/dist/agent-src/commands/{design.md → agent-design.md} +10 -6
- package/dist/agent-src/commands/agents/init.md +66 -3
- package/dist/agent-src/commands/agents/user/init.md +3 -0
- package/dist/agent-src/commands/{optimize/deep.md → analyze/and-optimize.md} +72 -33
- package/dist/agent-src/commands/analyze/inbox.md +168 -37
- package/dist/agent-src/commands/analyze/pr.md +144 -0
- package/dist/agent-src/commands/analyze/{repo.md → reference.md} +85 -14
- package/dist/agent-src/commands/analyze/roadmap-repos.md +19 -10
- package/dist/agent-src/commands/analyze.md +28 -12
- package/dist/agent-src/commands/audit.md +115 -0
- package/dist/agent-src/commands/brand/review.md +13 -2
- package/dist/agent-src/commands/brand/tokens.md +3 -3
- package/dist/agent-src/commands/brand/voice.md +8 -5
- package/dist/agent-src/commands/brand.md +2 -2
- package/dist/agent-src/commands/challenge-me/closure.md +25 -0
- package/dist/agent-src/commands/design-system/import.md +8 -3
- package/dist/agent-src/commands/design-system/sync.md +98 -0
- package/dist/agent-src/commands/design-system.md +6 -1
- package/dist/agent-src/commands/evals/analyze.json +44 -0
- package/dist/agent-src/commands/evals/audit.json +12 -0
- package/dist/agent-src/commands/evals/retro.json +12 -0
- package/dist/agent-src/commands/fix/ci.md +10 -8
- package/dist/agent-src/commands/ghostwriter/write.md +22 -0
- package/dist/agent-src/commands/memory/learn-low-impact.md +70 -83
- package/dist/agent-src/commands/memory/propose.md +12 -0
- package/dist/agent-src/commands/memory.md +1 -1
- package/dist/agent-src/commands/optimize.md +4 -3
- package/dist/agent-src/commands/post-as/me.md +18 -0
- package/dist/agent-src/commands/pr/create.md +17 -342
- package/dist/agent-src/commands/pr/merge.md +129 -368
- package/dist/agent-src/commands/retro.md +121 -0
- package/dist/agent-src/commands/review/routing.md +1 -1
- package/dist/agent-src/commands/roadmap/next.md +4 -1
- package/dist/agent-src/commands/roadmap/process-full.md +46 -333
- package/dist/agent-src/commands/roadmap/triage-parked.md +6 -2
- package/dist/agent-src/commands/team-knowledge/consolidate.md +2 -2
- package/dist/agent-src/commands/team-knowledge.md +1 -1
- package/dist/agent-src/commands/threat-model.md +1 -1
- package/dist/agent-src/commands/upstream-contribute.md +91 -101
- package/dist/agent-src/commands/worktree/cleanup.md +18 -11
- package/dist/agent-src/contexts/contracts/consumer-agents-md-guide.md +54 -0
- package/dist/agent-src/contexts/execution/analysis-loop.md +137 -0
- package/dist/agent-src/contexts/execution/auto-dispatch-classification.md +3 -3
- package/dist/agent-src/contexts/execution/decision-closure-execution.md +1 -1
- package/dist/agent-src/contexts/execution/host-capability-manifest.md +6 -0
- package/dist/agent-src/contexts/execution/orchestration-telemetry.md +11 -4
- package/dist/agent-src/contexts/execution/pr-create-branches-content.md +250 -0
- package/dist/agent-src/contexts/execution/pr-create-branches-freshness.md +150 -0
- package/dist/agent-src/contexts/execution/pr-merge-queue.md +287 -0
- package/dist/agent-src/contexts/execution/pr-merge-sync.md +276 -0
- package/dist/agent-src/contexts/execution/pr-merge-trust-boundary.md +69 -0
- package/dist/agent-src/contexts/execution/process-full-all.md +233 -0
- package/dist/agent-src/contexts/execution/process-full-delivery.md +231 -0
- package/dist/agent-src/contexts/execution/roadmap-execution-contract-branches.md +42 -0
- package/dist/agent-src/contexts/execution/roadmap-execution-contract.md +1 -35
- package/dist/agent-src/contexts/execution/roadmap-process-loop-close.md +235 -0
- package/dist/agent-src/contexts/execution/roadmap-process-loop-prescan.md +216 -0
- package/dist/agent-src/contexts/execution/roadmap-process-loop-run.md +253 -0
- package/dist/agent-src/contexts/execution/roadmap-process-loop-set.md +212 -0
- package/dist/agent-src/contexts/execution/roadmap-process-loop.md +25 -864
- package/dist/agent-src/contexts/execution/subagent-spawn-contract.md +14 -2
- package/dist/agent-src/contexts/execution/subagent-steering.md +65 -8
- package/dist/agent-src/contexts/model-recommendations.md +5 -5
- package/dist/agent-src/contexts/subagent-configuration.md +1 -1
- package/dist/agent-src/guidelines/agent-infra/api-cost-levers.md +4 -3
- package/dist/agent-src/guidelines/agent-infra/model-recommendation.md +11 -5
- package/dist/agent-src/guidelines/agent-infra/rule-body-migration-inventory.md +1 -1
- package/dist/agent-src/guidelines/agent-infra/self-improvement-pipeline.md +47 -24
- package/dist/agent-src/guidelines/design-antipatterns.md +5 -0
- package/dist/agent-src/guidelines/design-asset-discipline.md +17 -0
- package/dist/agent-src/guidelines/design-fidelity-routing.md +1 -0
- package/dist/agent-src/guidelines/php/api-design.md +10 -1
- package/dist/agent-src/rules/brand-source-of-truth.md +7 -6
- package/dist/agent-src/rules/code-provenance.md +1 -1
- package/dist/agent-src/rules/context-hygiene.md +0 -1
- package/dist/agent-src/rules/design-fidelity.md +12 -13
- package/dist/agent-src/rules/external-reference-deep-dive.md +2 -2
- package/dist/agent-src/rules/fix-what-you-see.md +1 -1
- package/dist/agent-src/rules/low-impact-corpus-privacy-floor.md +14 -15
- package/dist/agent-src/rules/missing-skill-recovery.md +12 -11
- package/dist/agent-src/rules/neighbour-precedence.md +1 -1
- package/dist/agent-src/rules/recurring-criticism.md +1 -1
- package/dist/agent-src/rules/roadmap-ci-steps-policy.md +0 -2
- package/dist/agent-src/rules/self-repair-loop.md +2 -2
- package/dist/agent-src/rules/token-budget-discipline.md +1 -1
- package/dist/agent-src/scripts/dashboard_mode.ts +4 -1
- package/dist/agent-src/scripts/roadmap_age.ts +175 -0
- package/dist/agent-src/scripts/update_roadmap_progress.ts +10 -2
- package/dist/agent-src/skills/accessibility-auditor/SKILL.md +3 -3
- package/dist/agent-src/skills/agent-security-review/SKILL.md +2 -2
- package/dist/agent-src/skills/agents-md-thin-root/SKILL.md +12 -4
- package/dist/agent-src/skills/ai-code-blindspots/SKILL.md +7 -0
- package/dist/agent-src/skills/ai-council/references/advanced-modes.md +11 -1
- package/dist/agent-src/skills/ai-council/references/cost-and-redaction.md +7 -0
- package/dist/agent-src/skills/ai-council/references/execution-modes.md +7 -0
- package/dist/agent-src/skills/ai-council/references/output-and-synthesis.md +19 -0
- package/dist/agent-src/skills/ai-council/references/procedure.md +7 -0
- package/dist/agent-src/skills/api-design/SKILL.md +2 -2
- package/dist/agent-src/skills/api-endpoint/SKILL.md +2 -2
- package/dist/agent-src/skills/authz-review/SKILL.md +5 -3
- package/dist/agent-src/skills/blade-ui/SKILL.md +2 -2
- package/dist/agent-src/skills/brand/SKILL.md +7 -3
- package/dist/agent-src/skills/brand-asset-generation/SKILL.md +13 -6
- package/dist/agent-src/skills/brand-audit/SKILL.md +2 -1
- package/dist/agent-src/skills/brand-identity/SKILL.md +5 -4
- package/dist/agent-src/skills/brand-strategy/SKILL.md +5 -4
- package/dist/agent-src/skills/brand-to-tokens/SKILL.md +18 -39
- package/dist/agent-src/skills/brand-to-tokens/templates/marp-brand-deck.md.example +2 -2
- package/dist/agent-src/skills/brand-to-tokens/templates/reveal-brand-deck.yaml +2 -2
- package/dist/agent-src/skills/canvas-design/SKILL.md +12 -2
- package/dist/agent-src/skills/competitive-positioning/SKILL.md +2 -2
- package/dist/agent-src/skills/composer-packages/SKILL.md +18 -0
- package/dist/agent-src/skills/condense-memory/SKILL.md +1 -1
- package/dist/agent-src/skills/content-funnel-design/SKILL.md +8 -1
- package/dist/agent-src/skills/context-authoring/SKILL.md +1 -1
- package/dist/agent-src/skills/context-document/SKILL.md +2 -2
- package/dist/agent-src/skills/corpus-grounding/SKILL.md +6 -6
- package/dist/agent-src/skills/corpus-grounding/scripts/decision_engine.ts +13 -11
- package/dist/agent-src/skills/corpus-grounding/scripts/ground.mjs +1706 -0
- package/dist/agent-src/skills/corpus-grounding/scripts/schema_validator.ts +7 -1
- package/dist/agent-src/skills/dashboard-design/SKILL.md +1 -1
- package/dist/agent-src/skills/data-flow-mapper/SKILL.md +5 -2
- package/dist/agent-src/skills/database/SKILL.md +5 -4
- package/dist/agent-src/skills/decision-record/references/weighted-matrix.md +12 -0
- package/dist/agent-src/skills/deep-reading-analyst/SKILL.md +1 -1
- package/dist/agent-src/skills/dependency-upgrade/SKILL.md +61 -11
- package/dist/agent-src/skills/description-assist/SKILL.md +1 -1
- package/dist/agent-src/skills/design-intelligence/SKILL.md +1 -1
- package/dist/agent-src/skills/design-intelligence/data/landing.csv +1 -1
- package/dist/agent-src/skills/design-intelligence/references/context-and-registers.md +10 -2
- package/dist/agent-src/skills/design-intelligence/references/design-languages.md +1 -1
- package/dist/agent-src/skills/design-intelligence/references/design-rules-checklist.md +4 -3
- package/dist/agent-src/skills/design-intelligence/references/integration-mapping.md +14 -14
- package/dist/agent-src/skills/{wireframe → design-review}/references/story-beat-ledger.schema.json +1 -1
- package/dist/agent-src/skills/design-review/references/verification-automation.md +11 -3
- package/dist/agent-src/skills/design-system-capture/SKILL.md +15 -10
- package/dist/agent-src/skills/design-system-capture/references/design-system-json.md +20 -5
- package/dist/agent-src/skills/design-system-capture/references/import-procedure.md +2 -2
- package/dist/agent-src/skills/design-tokens/SKILL.md +23 -23
- package/dist/agent-src/skills/design-tokens/scripts/tokens.mjs +1037 -0
- package/dist/agent-src/skills/design-tokens/scripts/tokens.ts +336 -13
- package/dist/agent-src/skills/design-tokens/templates/design-tokens-starter.json +52 -53
- package/dist/agent-src/skills/docker/SKILL.md +1 -1
- package/dist/agent-src/skills/estimate-ticket/SKILL.md +1 -1
- package/dist/agent-src/skills/existing-ui-audit/SKILL.md +14 -276
- package/dist/agent-src/skills/existing-ui-audit/procedure.yaml +44 -0
- package/dist/agent-src/skills/existing-ui-audit/references/anti-slop-cross-reference.md +1 -1
- package/dist/agent-src/skills/existing-ui-audit/references/steps/00-inspect-stack-and-input.md +4 -0
- package/dist/agent-src/skills/existing-ui-audit/references/steps/01-enumerate-components.md +26 -0
- package/dist/agent-src/skills/existing-ui-audit/references/steps/01b-detect-component-taxonomy.md +7 -0
- package/dist/agent-src/skills/existing-ui-audit/references/steps/02-identify-design-system.md +12 -0
- package/dist/agent-src/skills/existing-ui-audit/references/steps/03-detect-design-tokens.md +35 -0
- package/dist/agent-src/skills/existing-ui-audit/references/steps/04-detect-shadcn-inventory.md +13 -0
- package/dist/agent-src/skills/existing-ui-audit/references/steps/04b-live-storybook-read.md +26 -0
- package/dist/agent-src/skills/existing-ui-audit/references/steps/05-list-reusable-patterns.md +14 -0
- package/dist/agent-src/skills/existing-ui-audit/references/steps/06-match-candidates.md +52 -0
- package/dist/agent-src/skills/existing-ui-audit/references/steps/07-greenfield-branch.md +29 -0
- package/dist/agent-src/skills/existing-ui-audit/references/steps/08-a11y-baseline.md +40 -0
- package/dist/agent-src/skills/existing-ui-audit/references/steps/09-validate-and-write.md +5 -0
- package/dist/agent-src/skills/experiment-loop/SKILL.md +1 -1
- package/dist/agent-src/skills/fe-design/references/design-patterns.md +16 -2
- package/dist/agent-src/skills/fe-design/references/design-read-and-memory.md +1 -1
- package/dist/agent-src/skills/fe-design/references/source-led-port.md +1 -1
- package/dist/agent-src/skills/finishing-a-development-branch/SKILL.md +6 -6
- package/dist/agent-src/skills/flux/SKILL.md +1 -1
- package/dist/agent-src/skills/form-handler/SKILL.md +15 -2
- package/dist/agent-src/skills/git-workflow/SKILL.md +2 -2
- package/dist/agent-src/skills/git-workflow/references/branch-update.md +7 -0
- package/dist/agent-src/skills/git-workflow/references/commit-subject.md +12 -0
- package/dist/agent-src/skills/git-workflow/references/push-closes-its-loop.md +10 -0
- package/dist/agent-src/skills/gtm-launch/SKILL.md +8 -1
- package/dist/agent-src/skills/html-deck/SKILL.md +7 -2
- package/dist/agent-src/skills/humanizer/SKILL.md +16 -3
- package/dist/agent-src/skills/humanizer/references/anti-aiisms.md +13 -1
- package/dist/agent-src/skills/humanizer/references/fixtures.md +8 -0
- package/dist/agent-src/skills/js-library-packaging/SKILL.md +5 -4
- package/dist/agent-src/skills/js-library-packaging/scripts/check_package_surface.mjs +197 -0
- package/dist/agent-src/skills/judge-artifact-completeness/SKILL.md +1 -1
- package/dist/agent-src/skills/judge-security-auditor/SKILL.md +2 -2
- package/dist/agent-src/skills/launch-readiness/SKILL.md +18 -22
- package/dist/agent-src/skills/learning-to-rule-or-skill/SKILL.md +5 -5
- package/dist/agent-src/skills/livewire/SKILL.md +1 -1
- package/dist/agent-src/skills/llm-provider-knowledge/SKILL.md +18 -0
- package/dist/agent-src/skills/logo-generation/SKILL.md +9 -3
- package/dist/agent-src/skills/market-entry-analysis/SKILL.md +6 -1
- package/dist/agent-src/skills/markitdown/SKILL.md +1 -1
- package/dist/agent-src/skills/memory-consolidation/SKILL.md +2 -2
- package/dist/agent-src/skills/messaging-architecture/SKILL.md +8 -1
- package/dist/agent-src/skills/motion-choreographer/SKILL.md +2 -2
- package/dist/agent-src/skills/playwright-testing/SKILL.md +2 -0
- package/dist/agent-src/skills/positioning-strategy/SKILL.md +10 -2
- package/dist/agent-src/skills/prediction-pool-optimizer/references/ev-fixtures.md +13 -0
- package/dist/agent-src/skills/prediction-pool-optimizer/references/odds-and-bonus.md +7 -0
- package/dist/agent-src/skills/project-analysis-core/SKILL.md +1 -1
- package/dist/agent-src/skills/project-analysis-hypothesis-driven/SKILL.md +1 -1
- package/dist/agent-src/skills/project-analyzer/SKILL.md +14 -75
- package/dist/agent-src/skills/project-analyzer/procedure.yaml +39 -0
- package/dist/agent-src/skills/project-analyzer/references/steps/01-project-overview.md +9 -0
- package/dist/agent-src/skills/project-analyzer/references/steps/02-architecture.md +7 -0
- package/dist/agent-src/skills/project-analyzer/references/steps/03-data-layer.md +6 -0
- package/dist/agent-src/skills/project-analyzer/references/steps/04-business-domains.md +7 -0
- package/dist/agent-src/skills/project-analyzer/references/steps/05-api-surface.md +6 -0
- package/dist/agent-src/skills/project-analyzer/references/steps/06-service-map.md +6 -0
- package/dist/agent-src/skills/project-analyzer/references/steps/07-module-inventory.md +6 -0
- package/dist/agent-src/skills/project-analyzer/references/steps/08-infrastructure-and-testing.md +5 -0
- package/dist/agent-src/skills/project-analyzer/references/steps/09-agent-docs-audit.md +6 -0
- package/dist/agent-src/skills/project-analyzer/references/steps/10-gap-analysis.md +6 -0
- package/dist/agent-src/skills/quality-tools/references/js-ts-tools.md +10 -0
- package/dist/agent-src/skills/quality-tools/references/php-tools.md +13 -0
- package/dist/agent-src/skills/quality-tools/references/python-tools.md +11 -0
- package/dist/agent-src/skills/react-native-setup/SKILL.md +7 -2
- package/dist/agent-src/skills/react-shadcn-ui/SKILL.md +5 -1
- package/dist/agent-src/skills/react-shadcn-ui/references/registry.md +13 -0
- package/dist/agent-src/skills/react-shadcn-ui/scripts/shadcn_add.mjs +315 -0
- package/dist/agent-src/skills/react-shadcn-ui/scripts/shadcn_add.ts +6 -6
- package/dist/agent-src/skills/receiving-code-review/SKILL.md +1 -1
- package/dist/agent-src/skills/refine-ticket/SKILL.md +2 -2
- package/dist/agent-src/skills/release-comms/SKILL.md +2 -1
- package/dist/agent-src/skills/repomix-packer/SKILL.md +2 -2
- package/dist/agent-src/skills/requesting-code-review/SKILL.md +3 -3
- package/dist/agent-src/skills/roadmap-management/references/archival.md +3 -3
- package/dist/agent-src/skills/roadmap-management/references/authoring.md +9 -2
- package/dist/agent-src/skills/roadmap-management/references/dashboard.md +3 -3
- package/dist/agent-src/skills/roadmap-management/references/lifecycle.md +3 -3
- package/dist/agent-src/skills/roadmap-writing/SKILL.md +4 -4
- package/dist/agent-src/skills/rtk-output-filtering/SKILL.md +1 -1
- package/dist/agent-src/skills/rule-writing/SKILL.md +1 -2
- package/dist/agent-src/skills/security/SKILL.md +41 -5
- package/dist/agent-src/skills/skill-improvement-pipeline/SKILL.md +5 -3
- package/dist/agent-src/skills/skill-reviewer/SKILL.md +1 -1
- package/dist/agent-src/skills/skill-writing/SKILL.md +23 -8
- package/dist/agent-src/skills/skill-writing/references/section-patterns.md +19 -1
- package/dist/agent-src/skills/source-discovery/SKILL.md +3 -3
- package/dist/agent-src/skills/sql-writing/SKILL.md +2 -2
- package/dist/agent-src/skills/standards-from-config/SKILL.md +2 -2
- package/dist/agent-src/skills/storybook-workshop/SKILL.md +5 -0
- package/dist/agent-src/skills/storybook-workshop/scripts/story_contrast_floor.mjs +99 -0
- package/dist/agent-src/skills/subagent-orchestration/SKILL.md +13 -13
- package/dist/agent-src/skills/subagent-orchestration/prompts/README.md +4 -3
- package/dist/agent-src/skills/svg-authoring/SKILL.md +7 -1
- package/dist/agent-src/skills/systematic-debugging/SKILL.md +2 -2
- package/dist/agent-src/skills/tailwind-engineer/SKILL.md +8 -3
- package/dist/agent-src/skills/tailwind-engineer/scripts/tailwind_config_gen.mjs +482 -0
- package/dist/agent-src/skills/test-case-discovery/SKILL.md +1 -1
- package/dist/agent-src/skills/threat-modeling/SKILL.md +8 -1
- package/dist/agent-src/skills/threat-modeling/data/manifest.json +5 -2
- package/dist/agent-src/skills/threat-modeling/data/reasoning.csv +10 -10
- package/dist/agent-src/skills/threat-modeling/data/surfaces.csv +11 -10
- package/dist/agent-src/skills/threat-modeling/data/threats.csv +34 -20
- package/dist/agent-src/skills/type-design/SKILL.md +196 -0
- package/dist/agent-src/skills/type-design/references/font-spec.md +90 -0
- package/dist/agent-src/skills/type-design/references/gates.md +113 -0
- package/dist/agent-src/skills/type-design/references/toolchain.md +66 -0
- package/dist/agent-src/skills/typography-system/SKILL.md +21 -11
- package/dist/agent-src/skills/typography-system/references/worked-scales.md +85 -0
- package/dist/agent-src/skills/ui-apply-generic/SKILL.md +1 -1
- package/dist/agent-src/skills/universal-project-analysis/SKILL.md +1 -1
- package/dist/agent-src/skills/upstream-contribute/SKILL.md +120 -125
- package/dist/agent-src/skills/using-git-worktrees/SKILL.md +1 -0
- package/dist/agent-src/skills/verify-repair-loop/SKILL.md +1 -1
- package/dist/agent-src/skills/voice-and-tone-design/SKILL.md +71 -2
- package/dist/agent-src/skills/worktree-lifecycle/SKILL.md +16 -14
- package/dist/agent-src/templates/AGENTS.md +1 -1
- package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
- package/dist/agent-src/templates/agents/proposal.example.md +1 -1
- package/dist/agent-src/templates/github-workflows/advisories-daily.yml +85 -0
- package/dist/agent-src/templates/roadmaps.md +39 -1
- package/dist/agent-src/templates/scripts/check_memory.ts +2 -2
- package/dist/agent-src/templates/scripts/historical-bug-patterns.example.yml +13 -1
- package/dist/agent-src/templates/scripts/work_engine/cli.ts +17 -0
- package/dist/agent-src/templates/scripts/work_engine/cli_args.ts +10 -0
- package/dist/agent-src/templates/scripts/work_engine/directives/ui/scaffold.ts +22 -13
- package/dist/agent-src/templates/scripts/work_engine/dispatcher.ts +18 -4
- package/dist/agent-src/templates/scripts/work_engine/procedure/checks.ts +283 -0
- package/dist/agent-src/templates/scripts/work_engine/procedure/run.ts +432 -0
- package/dist/agent-src/templates/scripts/work_engine/procedure/sidecar.ts +185 -0
- package/dist/agent-src/templates/scripts/work_engine/state.ts +3 -0
- package/dist/cli/commands/uiRender.js +72 -17
- package/dist/cli/commands/uiRenderAsset.js +10 -2
- package/dist/cli/commands/uiRenderAssetFonts.js +158 -0
- package/dist/cli/commands/uiRenderAssetTypes.js +8 -20
- package/dist/cli/initRouting.js +1 -1
- package/dist/cli/mcp/dispatch.js +31 -9
- package/dist/cli/python/knowledge_ingest.js +7 -39
- package/dist/cli/python/workspace_secrets.js +4 -177
- package/dist/cli/registry.js +4 -1
- package/dist/cli-delegate/archive_completed_roadmaps.js +3 -2
- package/dist/cli-delegate/check_update_banner.js +635 -266
- package/dist/cli-delegate/{chunk-TMWYUOK4.js → chunk-2CX7NWRB.js} +224 -437
- package/dist/cli-delegate/{chunk-F3QDG2GT.js → chunk-2SFOOFJJ.js} +259 -159
- package/dist/cli-delegate/chunk-2Y5AMLMY.js +136 -0
- package/dist/cli-delegate/{chunk-OKJUIAPS.js → chunk-4E2W63DA.js} +1 -62
- package/dist/cli-delegate/{chunk-6SRJTYJS.js → chunk-4SHNERBL.js} +37 -16
- package/dist/cli-delegate/chunk-5VO3RTMV.js +208 -0
- package/dist/cli-delegate/chunk-6E2LDY4F.js +27 -0
- package/dist/cli-delegate/{chunk-XQTPXKFA.js → chunk-6ZD2QZMN.js} +8 -17
- package/dist/cli-delegate/{chunk-6V5FMA3P.js → chunk-7CEI2YPS.js} +1 -1
- package/dist/cli-delegate/{chunk-DMSZHXZS.js → chunk-7DRWULEQ.js} +80 -7
- package/dist/cli-delegate/chunk-7NXCZSDL.js +54 -0
- package/dist/cli-delegate/chunk-AX3U3UWJ.js +328 -0
- package/dist/cli-delegate/{chunk-WOKWX5PL.js → chunk-BKALSTBZ.js} +18 -3
- package/dist/cli-delegate/chunk-BMGUGSY6.js +103 -0
- package/dist/cli-delegate/chunk-BYV46VRM.js +3309 -0
- package/dist/cli-delegate/{chunk-5GPULQBE.js → chunk-CAL76ADI.js} +4215 -682
- package/dist/cli-delegate/chunk-DSY6LLCQ.js +127 -0
- package/dist/cli-delegate/chunk-E6XNBVE4.js +581 -0
- package/dist/cli-delegate/{chunk-ZUZKZYCN.js → chunk-ESUNQ5XR.js} +46 -10
- package/dist/cli-delegate/{chunk-G5VVIZRC.js → chunk-F7HLSW6P.js} +1 -1
- package/dist/cli-delegate/chunk-FIEEOH5C.js +133 -0
- package/dist/cli-delegate/chunk-FKYZOWVD.js +719 -0
- package/dist/cli-delegate/chunk-GOMILC3O.js +918 -0
- package/dist/cli-delegate/chunk-I4KJYVPB.js +69 -0
- package/dist/cli-delegate/{chunk-JQOM7TTM.js → chunk-IDAOTDPE.js} +1 -100
- package/dist/cli-delegate/chunk-IROAQ77A.js +137 -0
- package/dist/cli-delegate/chunk-J2SJZICO.js +698 -0
- package/dist/cli-delegate/{chunk-6YQC2HLF.js → chunk-JHMMWNJ2.js} +54 -40
- package/dist/cli-delegate/{chunk-WQWXGIWB.js → chunk-M6CRG5O6.js} +165 -15
- package/dist/cli-delegate/{chunk-PHD7OOLE.js → chunk-MQ2UDEGV.js} +14 -3
- package/dist/cli-delegate/chunk-NTM7G2V4.js +220 -0
- package/dist/cli-delegate/chunk-PV7S5DPJ.js +175 -0
- package/dist/cli-delegate/{chunk-F7DQWYR5.js → chunk-RAXQOETZ.js} +6 -2
- package/dist/cli-delegate/{chunk-T7XSJSUQ.js → chunk-SIOMDAKL.js} +980 -784
- package/dist/cli-delegate/{chunk-KR6EM23A.js → chunk-TULVDQ4L.js} +3 -48
- package/dist/cli-delegate/chunk-UUYEKXKR.js +20 -0
- package/dist/cli-delegate/{chunk-7XGD2OEU.js → chunk-UXWHY6CQ.js} +2 -1
- package/dist/cli-delegate/{chunk-PWX7CKMD.js → chunk-VC3ECUEK.js} +1 -1
- package/dist/cli-delegate/{chunk-KXXWJTDO.js → chunk-WMNYVIYX.js} +1 -1
- package/dist/cli-delegate/chunk-XCY5KKUC.js +181 -0
- package/dist/cli-delegate/{chunk-H76PHZBI.js → chunk-XLY5G3CM.js} +14 -19
- package/dist/cli-delegate/cmd_adr_effective.js +41 -2
- package/dist/cli-delegate/cmd_analyze_session.js +7 -7
- package/dist/cli-delegate/cmd_brand_status.js +1287 -10
- package/dist/cli-delegate/cmd_ci_settle.js +330 -0
- package/dist/cli-delegate/cmd_conformance.js +483 -817
- package/dist/cli-delegate/cmd_doctor.js +26 -16
- package/dist/cli-delegate/cmd_doctor_neighbours.js +10 -7
- package/dist/cli-delegate/cmd_explain.js +9 -24
- package/dist/cli-delegate/cmd_export.js +14 -11
- package/dist/cli-delegate/cmd_fleet.js +5 -3
- package/dist/cli-delegate/cmd_git_convention.js +8 -4
- package/dist/cli-delegate/cmd_handoff.js +79 -242
- package/dist/cli-delegate/cmd_mcp_available.js +1 -1
- package/dist/cli-delegate/cmd_memory_get.js +4 -2
- package/dist/cli-delegate/cmd_migrate.js +2 -2
- package/dist/cli-delegate/cmd_packs_active.js +2 -2
- package/dist/cli-delegate/cmd_preflight.js +7 -5
- package/dist/cli-delegate/cmd_prune.js +16 -13
- package/dist/cli-delegate/cmd_route_audit.js +11 -8
- package/dist/cli-delegate/cmd_route_explain.js +649 -16
- package/dist/cli-delegate/cmd_session_recycle.js +15 -6
- package/dist/cli-delegate/cmd_settings_check.js +2 -2
- package/dist/cli-delegate/cmd_settings_get.js +1 -1
- package/dist/cli-delegate/cmd_settings_migrate.js +14 -11
- package/dist/cli-delegate/cmd_settings_set.js +1 -1
- package/dist/cli-delegate/cmd_sync.js +16 -13
- package/dist/cli-delegate/cmd_uninstall.js +185 -31
- package/dist/cli-delegate/cmd_update.js +67 -3
- package/dist/cli-delegate/cmd_upgrade.js +38 -7
- package/dist/cli-delegate/cmd_validate.js +16 -13
- package/dist/cli-delegate/cmd_versions.js +1 -1
- package/dist/cli-delegate/dashboard_mode.js +1 -1
- package/dist/cli-delegate/gate_execute.js +4 -3
- package/dist/cli-delegate/roadmap_age.js +22 -0
- package/dist/cli-delegate/roadmap_gates.js +4 -3
- package/dist/cli-delegate/update_roadmap_progress.js +3 -2
- package/dist/cli-delegate/upgrade_unattended-VVL6JLSX.js +541 -0
- package/dist/discovery/deprecation-report.md +1 -1
- package/dist/discovery/discovery-manifest.json +373 -190
- package/dist/discovery/discovery-manifest.json.sha256 +1 -1
- package/dist/discovery/discovery-manifest.summary.md +5 -5
- package/dist/discovery/dormancy-report.md +1 -1
- package/dist/discovery/orphan-report.md +1 -1
- package/dist/discovery/packs.json +21 -16
- package/dist/discovery/trust-report.md +3 -3
- package/dist/discovery/workspaces.json +16 -11
- package/dist/hooks/chat_history.chunk.cjs +6852 -0
- package/dist/hooks/chat_history.chunk.cjs.sha256 +1 -0
- package/dist/hooks/dispatch.js +17506 -18692
- package/dist/hooks/dispatch.sha256 +1 -1
- package/dist/hooks/egress_engine.chunk.cjs +915 -0
- package/dist/hooks/egress_engine.chunk.cjs.sha256 +1 -0
- package/dist/hooks/svg_rules.chunk.cjs +281 -49
- package/dist/hooks/svg_rules.chunk.cjs.sha256 +1 -1
- package/dist/install/conflict.js +36 -6
- package/dist/install/conflictTracker.js +81 -7
- package/dist/install/detect.js +3 -3
- package/dist/install/hostPermissionsAdapter.js +106 -0
- package/dist/install/install.mjs +3117 -1949
- package/dist/install/installThinLayer.js +1 -1
- package/dist/install/manifestFiles.js +21 -0
- package/dist/install/noGoDenyRows.js +300 -0
- package/dist/install/noGoRules.js +368 -0
- package/dist/install/ownershipLedger.js +133 -0
- package/dist/install/plan.js +1 -1
- package/dist/install/preflight.js +39 -8
- package/dist/install/preserve.js +74 -12
- package/dist/install/recordedOwnership.js +88 -5
- package/dist/install/rule_scope.js +20 -3
- package/dist/install/stagedRuntime.js +455 -0
- package/dist/install/toolsArg.js +19 -0
- package/dist/install/userPin.js +47 -0
- package/dist/install/wizard-plan.js +26 -4
- package/dist/mcp/awesome-mcp-servers.row.md +1 -1
- package/dist/mcp/mcp-cloudflare-catalogue.json +3 -2
- package/dist/mcp/registry-manifest.json +6 -5
- package/dist/mcp/server.json +3 -3
- package/dist/mcp/server.mjs +9831 -5546
- package/dist/router.json +1 -1
- package/dist/scripts/_lib/agent_settings.js +7 -12
- package/dist/scripts/_lib/asset_render_record.js +219 -0
- package/dist/scripts/_lib/claude_builtin_names.js +9 -4
- package/dist/scripts/_lib/claude_settings_hooks.js +102 -34
- package/dist/scripts/_lib/egress_rules.js +766 -0
- package/dist/scripts/_lib/environment_detector.js +24 -33
- package/dist/scripts/_lib/global_deploy_inventory.js +146 -9
- package/dist/scripts/_lib/guidelines_lane.js +10 -1
- package/dist/scripts/_lib/identifier_redaction.js +24 -0
- package/dist/scripts/_lib/installed_layer.js +17 -0
- package/dist/scripts/_lib/installed_layer_normalise.js +72 -0
- package/dist/scripts/_lib/lean_projection_mode.js +34 -152
- package/dist/scripts/_lib/project_tree_form.js +118 -0
- package/dist/scripts/_lib/scoped_projection.js +133 -3
- package/dist/scripts/_lib/settings_removed_keys.js +29 -0
- package/dist/scripts/_lib/settings_renamed_keys.js +17 -5
- package/dist/scripts/_lib/subagent_native_fields.js +35 -0
- package/dist/scripts/_lib/svg_filled_counter.js +285 -0
- package/dist/scripts/_lib/svg_rules.js +2 -0
- package/dist/scripts/_lib/ui_surface.js +19 -0
- package/dist/scripts/_lib/verification_command.js +364 -0
- package/dist/scripts/_lib/workspace_secrets.js +229 -0
- package/dist/scripts/ai_council/seat_policy.js +27 -0
- package/dist/scripts/ai_council/transport_resolver.js +9 -10
- package/dist/scripts/condense.js +25 -29
- package/dist/server/io/substituteTemplate.js +2 -2
- package/dist/server/io/yamlIO.js +2 -2
- package/dist/server/routes/install.js +5 -1
- package/dist/server/routes/settings.js +2 -2
- package/dist/server/routes/wizard.js +1 -1
- package/dist/server/schemas/settings.js +22 -16
- package/dist/server/serverInfo.js +1 -1
- package/dist/shared/brandTokenDocument.js +47 -0
- package/dist/shared/brandTokenPaths.js +43 -0
- package/dist/shared/settingsCarveOut.js +0 -7
- package/dist/shared/skillRanking.js +103 -5
- package/dist/shared/userMd/formAdapter.js +16 -0
- package/dist/shared/userMd/schema.js +17 -0
- package/dist/ui/assets/index-w70Ado09.js +23 -0
- package/dist/ui/index.html +1 -1
- package/docs/MIGRATION.md +89 -2
- package/docs/THIRD-PARTY-NOTICES.md +27 -0
- package/docs/contracts/settings-classes.md +27 -9
- package/docs/guidelines/agent-infra/api-cost-levers.md +4 -3
- package/docs/guidelines/agent-infra/model-recommendation.md +11 -5
- package/docs/guidelines/agent-infra/rule-body-migration-inventory.md +1 -1
- package/docs/guidelines/agent-infra/self-improvement-pipeline.md +47 -24
- package/docs/guidelines/design-antipatterns.md +5 -0
- package/docs/guidelines/design-asset-discipline.md +17 -0
- package/docs/guidelines/design-fidelity-routing.md +1 -0
- package/docs/guidelines/php/api-design.md +10 -1
- package/llms.txt +12 -10
- package/package.json +13 -4
- package/src/agent-src/scripts/dashboard_mode.ts +4 -1
- package/src/agent-src/scripts/roadmap_age.ts +175 -0
- package/src/agent-src/scripts/update_roadmap_progress.ts +10 -2
- package/src/agent-src/templates/AGENTS.md +1 -1
- package/src/agent-src/templates/scripts/check_memory.ts +2 -2
- package/src/agent-src/templates/scripts/historical-bug-patterns.example.yml +13 -1
- package/src/agent-src/templates/scripts/work_engine/cli.ts +17 -0
- package/src/agent-src/templates/scripts/work_engine/cli_args.ts +10 -0
- package/src/agent-src/templates/scripts/work_engine/directives/ui/scaffold.ts +22 -13
- package/src/agent-src/templates/scripts/work_engine/dispatcher.ts +18 -4
- package/src/agent-src/templates/scripts/work_engine/procedure/checks.ts +283 -0
- package/src/agent-src/templates/scripts/work_engine/procedure/run.ts +432 -0
- package/src/agent-src/templates/scripts/work_engine/procedure/sidecar.ts +185 -0
- package/src/agent-src/templates/scripts/work_engine/state.ts +3 -0
- package/src/config/agent-settings.template.yml +120 -57
- package/src/config/agents-paths.yml +13 -7
- package/src/config/ci-local-parity.yml +44 -0
- package/src/config/continuity-surface.json +51 -2
- package/src/config/depth-audit-samples.json +5 -0
- package/src/config/discovery/command-verbs.yml +1 -0
- package/src/config/dispatch-economy-metrics.json +1 -0
- package/src/config/egress-mutations/class-precedence-swapped.json +7 -0
- package/src/config/egress-mutations/credential-token-restores.json +7 -0
- package/src/config/egress-mutations/iban-checksum-disabled.json +7 -0
- package/src/config/egress-mutations/raw-value-in-the-count-record.json +7 -0
- package/src/config/evaluator-budgets.json +4 -4
- package/src/config/gate-coverage.yml +149 -3
- package/src/config/gate-reachability-exemptions.json +3 -5
- package/src/config/gate-violation-baselines.json +26 -22
- package/src/config/gitignore-block.txt +6 -3
- package/src/config/hook-bundle-budget.json +34 -3
- package/src/config/hook-carrier-probes.json +30 -0
- package/src/config/hook-latency-budget.json +4 -2
- package/src/config/host-injection-effect.json +8 -1
- package/src/config/host-skill-frontmatter-keys.json +56 -0
- package/src/config/layer-form-brakes.json +4 -0
- package/src/config/layer-form-comparison-corpus.json +42 -0
- package/src/config/loop-surfaces.yaml +28 -47
- package/src/config/memory-twin-verdicts.yml +9 -1
- package/src/config/metric-registry.yml +40 -3
- package/src/config/pack-size-budget.json +15 -0
- package/src/config/procedure-core-budget.json +21 -0
- package/src/config/profiles/minimal.ini +1 -1
- package/src/config/project-tree-form.json +24 -0
- package/src/config/reach-channels.yml +3 -3
- package/src/config/reach-prescriptions-intake.yml +1 -1
- package/src/config/roadmap-step-size-baseline.json +118 -0
- package/src/config/routing-coverage-seed.json +93 -2
- package/src/config/skill-body-budget.json +686 -0
- package/src/config/skill-fork-pilot.json +17 -0
- package/src/config/skill-lifecycle-probes-codex.json +57 -0
- package/src/config/skill-lifecycle-probes.json +57 -0
- package/src/config/skill-output-shape.json +316 -0
- package/src/config/step-depth-table.json +58 -0
- package/src/config/turnaround-budget.json +90 -0
- package/src/install/conflict.ts +38 -6
- package/src/install/conflictTracker.ts +126 -8
- package/src/install/detect.ts +3 -3
- package/src/install/hostPermissionsAdapter.ts +136 -0
- package/src/install/installThinLayer.ts +6 -1
- package/src/install/manifestFiles.ts +24 -0
- package/src/install/noGoDenyRows.ts +368 -0
- package/src/install/noGoRules.ts +438 -0
- package/src/install/ownershipLedger.ts +180 -0
- package/src/install/plan.ts +1 -1
- package/src/install/preflight.ts +42 -10
- package/src/install/preserve.ts +94 -12
- package/src/install/recordedOwnership.ts +121 -3
- package/src/install/rule_scope.ts +20 -3
- package/src/install/stagedRuntime.ts +528 -0
- package/src/install/toolsArg.ts +16 -0
- package/src/install/types.ts +23 -2
- package/src/install/userPin.ts +54 -0
- package/src/install/wizard-plan.ts +25 -4
- package/src/scripts/_cli/_doctor_emit.ts +24 -0
- package/src/scripts/_cli/cmd_brand_status.ts +223 -12
- package/src/scripts/_cli/cmd_ci_settle.ts +32 -0
- package/src/scripts/_cli/cmd_doctor.ts +23 -44
- package/src/scripts/_cli/cmd_route_explain.ts +176 -2
- package/src/scripts/_cli/cmd_uninstall.ts +270 -26
- package/src/scripts/_cli/cmd_update.ts +34 -1
- package/src/scripts/_cli/cmd_upgrade.ts +38 -2
- package/src/scripts/_cli/detection_report.ts +7 -0
- package/src/scripts/_cli/doctor_execution.ts +1 -2
- package/src/scripts/_cli/doctor_install_mode.ts +39 -0
- package/src/scripts/_cli/doctor_network_posture.ts +3 -3
- package/src/scripts/_cli/doctor_ownership_ledger.ts +126 -0
- package/src/scripts/_cli/doctor_update_verdict.ts +104 -0
- package/src/scripts/_cli/explain_last/scrubber.ts +9 -21
- package/src/scripts/_cli/upgrade_unattended.ts +548 -0
- package/src/scripts/_dispatch.bash +42 -9
- package/src/scripts/_lib/activation_ladder.ts +1 -1
- package/src/scripts/_lib/advisory_inventory.ts +405 -0
- package/src/scripts/_lib/advisory_notice.ts +270 -0
- package/src/scripts/_lib/advisory_sources.ts +752 -0
- package/src/scripts/_lib/advisory_verdicts.ts +363 -0
- package/src/scripts/_lib/agent_artifact_location.ts +177 -0
- package/src/scripts/_lib/agent_settings.ts +7 -12
- package/src/scripts/_lib/arrival_record.ts +217 -0
- package/src/scripts/_lib/asset_render_record.ts +247 -0
- package/src/scripts/_lib/billing_grant.ts +4 -2
- package/src/scripts/_lib/brand_voice_slot.ts +258 -0
- package/src/scripts/_lib/canary_status.ts +24 -0
- package/src/scripts/_lib/cc_transcript.ts +276 -0
- package/src/scripts/_lib/changelog_eras.ts +83 -0
- package/src/scripts/_lib/claim_phrases.ts +71 -0
- package/src/scripts/_lib/classify_update.ts +171 -0
- package/src/scripts/_lib/claude_builtin_names.ts +9 -4
- package/src/scripts/_lib/claude_hook_scope.ts +195 -0
- package/src/scripts/_lib/claude_settings_hooks.ts +118 -34
- package/src/scripts/_lib/codex_resident_set.ts +460 -0
- package/src/scripts/_lib/codex_skill_finder.ts +225 -0
- package/src/scripts/_lib/confusables.ts +19 -0
- package/src/scripts/_lib/consumer_impact.ts +199 -0
- package/src/scripts/_lib/content_class.ts +127 -0
- package/src/scripts/_lib/counted_probe.ts +68 -1
- package/src/scripts/_lib/credential_deny_rows.ts +151 -0
- package/src/scripts/_lib/credential_files.ts +367 -0
- package/src/scripts/_lib/delivery_arm_experiment.ts +2 -2
- package/src/scripts/_lib/depth_flip.ts +141 -0
- package/src/scripts/_lib/design_lock.ts +117 -0
- package/src/scripts/_lib/design_sync_ledger.ts +142 -0
- package/src/scripts/_lib/design_sync_plan.ts +177 -0
- package/src/scripts/_lib/design_sync_reconcile.ts +159 -0
- package/src/scripts/_lib/design_sync_verify.ts +99 -0
- package/src/scripts/_lib/design_system_claude_design.ts +323 -0
- package/src/scripts/_lib/design_system_import.ts +84 -6
- package/src/scripts/_lib/dispatch_import_closure.ts +42 -11
- package/src/scripts/_lib/egress_credential_env.ts +35 -0
- package/src/scripts/_lib/egress_engine.ts +22 -0
- package/src/scripts/_lib/egress_known_values.ts +223 -0
- package/src/scripts/_lib/egress_normalize.ts +67 -0
- package/src/scripts/_lib/egress_prefixes.ts +42 -0
- package/src/scripts/_lib/egress_rules.ts +896 -0
- package/src/scripts/_lib/egress_rules_linearity.ts +56 -0
- package/src/scripts/_lib/egress_sender_scan.ts +290 -0
- package/src/scripts/_lib/egress_session_table.ts +510 -0
- package/src/scripts/_lib/egress_text.ts +63 -0
- package/src/scripts/_lib/egress_token.ts +252 -0
- package/src/scripts/_lib/empty_cycles.ts +1 -1
- package/src/scripts/_lib/environment_detector.ts +45 -30
- package/src/scripts/_lib/exemption_shape.ts +75 -1
- package/src/scripts/_lib/floor_posture.ts +185 -0
- package/src/scripts/_lib/forge_protection.ts +140 -2
- package/src/scripts/_lib/global_deploy_inventory.ts +159 -6
- package/src/scripts/_lib/guidelines_lane.ts +12 -1
- package/src/scripts/_lib/hand_kinds.ts +65 -0
- package/src/scripts/_lib/headless_invocation.ts +3 -3
- package/src/scripts/_lib/host_capability.ts +34 -2
- package/src/scripts/_lib/host_env_write.ts +39 -18
- package/src/scripts/_lib/host_listing_model.ts +14 -7
- package/src/scripts/_lib/identifier_redaction.ts +26 -0
- package/src/scripts/_lib/impact_bump.ts +70 -0
- package/src/scripts/_lib/install_reach_checks.ts +53 -1
- package/src/scripts/_lib/installed_layer.ts +31 -0
- package/src/scripts/_lib/installed_layer_normalise.ts +75 -0
- package/src/scripts/_lib/instructions_loaded_classify.ts +75 -0
- package/src/scripts/_lib/instructions_loaded_event.ts +53 -0
- package/src/scripts/_lib/knowledge_global_redaction.ts +2 -2
- package/src/scripts/_lib/layer_form_corpus.ts +165 -0
- package/src/scripts/_lib/layer_form_decision.ts +248 -0
- package/src/scripts/_lib/layer_form_evidence.ts +112 -0
- package/src/scripts/_lib/lean_projection_mode.ts +32 -161
- package/src/scripts/_lib/llm_proposer_transport.ts +1 -0
- package/src/scripts/_lib/loop_guards.ts +8 -120
- package/src/scripts/_lib/major_surface.ts +207 -0
- package/src/scripts/_lib/mcp_bridge.ts +30 -69
- package/src/scripts/_lib/merge_clearance_record.ts +384 -0
- package/src/scripts/_lib/neighbour_census.ts +18 -1
- package/src/scripts/_lib/orchestration_record.ts +61 -0
- package/src/scripts/_lib/outcome_vocabularies.ts +15 -23
- package/src/scripts/_lib/pin_advice.ts +49 -0
- package/src/scripts/_lib/platform_anchor.ts +222 -0
- package/src/scripts/_lib/procedure_checks.ts +5 -0
- package/src/scripts/_lib/project_tree_form.ts +134 -0
- package/src/scripts/_lib/projection_key_migration.ts +122 -0
- package/src/scripts/_lib/prompt_shape.ts +13 -2
- package/src/scripts/_lib/provenance_verify.ts +272 -0
- package/src/scripts/_lib/quota_parked.ts +27 -1
- package/src/scripts/_lib/ratification_artifact.ts +64 -1
- package/src/scripts/_lib/ratification_subject.ts +508 -46
- package/src/scripts/_lib/release_findings_ingest.ts +52 -5
- package/src/scripts/_lib/release_highlights.ts +72 -2
- package/src/scripts/_lib/release_settings_surface.ts +392 -0
- package/src/scripts/_lib/review_round.ts +134 -0
- package/src/scripts/_lib/roadmap_checkboxes.ts +1 -1
- package/src/scripts/_lib/roadmap_slug_lock.ts +254 -0
- package/src/scripts/_lib/roadmap_step_size.ts +75 -0
- package/src/scripts/_lib/run_checkpoint.ts +60 -3
- package/src/scripts/_lib/runtime_wiring_checks.ts +15 -1
- package/src/scripts/_lib/scope_guard.sh +64 -5
- package/src/scripts/_lib/scoped_projection.ts +136 -3
- package/src/scripts/_lib/secret_detector.ts +24 -103
- package/src/scripts/_lib/security_fix.ts +429 -0
- package/src/scripts/_lib/security_fix_context.ts +133 -0
- package/src/scripts/_lib/self_repair.ts +69 -39
- package/src/scripts/_lib/self_repair_outgoing.ts +209 -0
- package/src/scripts/_lib/self_repair_payload.ts +86 -0
- package/src/scripts/_lib/session_eol.ts +3 -0
- package/src/scripts/_lib/session_pr_watch.ts +207 -0
- package/src/scripts/_lib/session_register.ts +51 -1
- package/src/scripts/_lib/session_tag.ts +51 -0
- package/src/scripts/_lib/settings_removed_keys.ts +30 -0
- package/src/scripts/_lib/settings_renamed_keys.ts +19 -5
- package/src/scripts/_lib/skill_catalogue.ts +66 -25
- package/src/scripts/_lib/skill_fork_pilot.ts +121 -0
- package/src/scripts/_lib/skill_leases.ts +203 -0
- package/src/scripts/_lib/skill_listing_overrides.ts +294 -0
- package/src/scripts/_lib/skill_materialisation.ts +388 -0
- package/src/scripts/_lib/skill_materialisation_gate.ts +210 -0
- package/src/scripts/_lib/skill_materialisation_lock.ts +149 -0
- package/src/scripts/_lib/skill_materialisation_triggers.ts +96 -0
- package/src/scripts/_lib/skill_origin.ts +21 -1
- package/src/scripts/_lib/skill_reach.ts +342 -0
- package/src/scripts/_lib/source_shape.ts +7 -2
- package/src/scripts/_lib/sqlite_guard.ts +1 -1
- package/src/scripts/_lib/step_anatomy.ts +330 -0
- package/src/scripts/_lib/subagent_capsule.ts +8 -2
- package/src/scripts/_lib/subagent_native_fields.ts +30 -0
- package/src/scripts/_lib/subagent_spawn.ts +36 -0
- package/src/scripts/_lib/subagent_steering.ts +367 -0
- package/src/scripts/_lib/svg_filled_counter.ts +287 -0
- package/src/scripts/_lib/svg_rules.ts +2 -0
- package/src/scripts/_lib/test_delta.ts +89 -6
- package/src/scripts/_lib/tier_downshift_verdict.ts +222 -0
- package/src/scripts/_lib/tool_result_census.ts +62 -0
- package/src/scripts/_lib/trigger_routers.ts +1 -0
- package/src/scripts/_lib/turnaround_throughput.ts +378 -0
- package/src/scripts/_lib/ui_surface.ts +22 -0
- package/src/scripts/_lib/unattended_gates.ts +100 -0
- package/src/scripts/_lib/undeployed_fixes.ts +34 -0
- package/src/scripts/_lib/update_check.ts +143 -12
- package/src/scripts/_lib/update_invite.ts +116 -0
- package/src/scripts/_lib/update_notice.ts +259 -0
- package/src/scripts/_lib/verify_clause.ts +4 -2
- package/src/scripts/_lib/version_order.ts +146 -0
- package/src/scripts/_lib/worker_reuse.ts +191 -0
- package/src/scripts/_lib/workspace_secrets.ts +273 -0
- package/src/scripts/_lib/worktree_git.ts +67 -0
- package/src/scripts/_lib/worktree_ignored.ts +116 -0
- package/src/scripts/adoption_status.ts +330 -3
- package/src/scripts/adr_cite_check.ts +93 -0
- package/src/scripts/advisories.ts +803 -0
- package/src/scripts/ai-image/adapters/flux.sh +1 -0
- package/src/scripts/ai-image/adapters/gemini-image.sh +1 -0
- package/src/scripts/ai-image/adapters/ideogram.sh +1 -0
- package/src/scripts/ai-image/adapters/recraft.sh +1 -0
- package/src/scripts/ai-video/adapters/comfyui.sh +1 -0
- package/src/scripts/ai-video/adapters/fal.sh +1 -0
- package/src/scripts/ai-video/adapters/gemini-veo.sh +1 -0
- package/src/scripts/ai-video/adapters/higgsfield.sh +1 -0
- package/src/scripts/ai-video/adapters/kling.sh +1 -0
- package/src/scripts/ai-video/adapters/musetalk.sh +1 -0
- package/src/scripts/ai-video/adapters/openai-images.sh +1 -0
- package/src/scripts/ai-video/adapters/replicate.sh +1 -0
- package/src/scripts/ai-video/adapters/sora.sh +1 -0
- package/src/scripts/ai-video/adapters/syncso.sh +1 -0
- package/src/scripts/ai-video/stitch.sh +115 -2
- package/src/scripts/ai_council/airgap.ts +1 -0
- package/src/scripts/ai_council/api_transport.ts +27 -4
- package/src/scripts/ai_council/budget_guard.ts +300 -11
- package/src/scripts/ai_council/bundler.ts +20 -29
- package/src/scripts/ai_council/chairman.ts +17 -2
- package/src/scripts/ai_council/cli_agency_bounds.ts +158 -0
- package/src/scripts/ai_council/cli_launch_env.ts +54 -0
- package/src/scripts/ai_council/cli_least_agency_canary.ts +18 -2
- package/src/scripts/ai_council/clients.ts +55 -73
- package/src/scripts/ai_council/config.ts +16 -22
- package/src/scripts/ai_council/council_egress.ts +167 -0
- package/src/scripts/ai_council/exposure_ledger.ts +117 -0
- package/src/scripts/ai_council/free_hand_shadow.ts +276 -0
- package/src/scripts/ai_council/free_route.ts +216 -0
- package/src/scripts/ai_council/free_route_catalog.ts +173 -0
- package/src/scripts/ai_council/free_route_client.ts +95 -0
- package/src/scripts/ai_council/free_rung.ts +61 -0
- package/src/scripts/ai_council/hand_payload.ts +230 -0
- package/src/scripts/ai_council/hand_schemas.ts +123 -0
- package/src/scripts/ai_council/jury_aggregate.ts +155 -1
- package/src/scripts/ai_council/kind_flip.ts +221 -0
- package/src/scripts/ai_council/kind_flip_state.ts +19 -0
- package/src/scripts/ai_council/learn_low_impact_preview.ts +50 -22
- package/src/scripts/ai_council/modification_review.ts +98 -5
- package/src/scripts/ai_council/necessity.ts +7 -0
- package/src/scripts/ai_council/orchestrator.ts +16 -16
- package/src/scripts/ai_council/pricing.ts +10 -0
- package/src/scripts/ai_council/redact_low_impact_entry.ts +5 -2
- package/src/scripts/ai_council/response_render.ts +27 -4
- package/src/scripts/ai_council/round_reservations.ts +119 -0
- package/src/scripts/ai_council/route_chooser.ts +161 -0
- package/src/scripts/ai_council/route_liveness.ts +152 -0
- package/src/scripts/ai_council/route_member.ts +52 -0
- package/src/scripts/ai_council/seat_policy.ts +40 -0
- package/src/scripts/ai_council/seat_resume.ts +40 -0
- package/src/scripts/ai_council/shadow_dispatch.ts +13 -3
- package/src/scripts/ai_council/spend_gate.ts +18 -2
- package/src/scripts/ai_council/status_surface.ts +37 -0
- package/src/scripts/ai_council/transport_resolver.ts +15 -18
- package/src/scripts/analysis_analysts.ts +226 -0
- package/src/scripts/analysis_anchors.ts +140 -0
- package/src/scripts/analysis_and_optimize.ts +44 -0
- package/src/scripts/analysis_emit.ts +150 -0
- package/src/scripts/analysis_exchange.ts +186 -0
- package/src/scripts/analysis_gate.ts +158 -0
- package/src/scripts/analysis_inbox_final.ts +173 -0
- package/src/scripts/analysis_ledger.ts +119 -0
- package/src/scripts/analysis_pr_optimize.ts +219 -0
- package/src/scripts/analysis_pr_review.ts +240 -0
- package/src/scripts/analysis_pr_target.ts +121 -0
- package/src/scripts/analysis_prompts.ts +130 -0
- package/src/scripts/analysis_publish.ts +358 -0
- package/src/scripts/analysis_questions.ts +78 -0
- package/src/scripts/analysis_run.ts +248 -0
- package/src/scripts/analysis_run_record.ts +210 -0
- package/src/scripts/analysis_target.ts +343 -0
- package/src/scripts/analysis_validate.ts +161 -0
- package/src/scripts/anchor_eval_falsify.ts +1 -1
- package/src/scripts/arrival_report.ts +115 -0
- package/src/scripts/ask_transport.ts +284 -35
- package/src/scripts/backfill_model_tier.ts +4 -5
- package/src/scripts/before_complete_hook.ts +48 -2
- package/src/scripts/bench_hook_latency.ts +3 -3
- package/src/scripts/bench_procedure_cursor.ts +440 -0
- package/src/scripts/bootstrap.sh +3 -3
- package/src/scripts/build_exit_code_register.ts +440 -0
- package/src/scripts/build_proof.ts +23 -1
- package/src/scripts/cache_realization_report.ts +155 -14
- package/src/scripts/canary_liveness.ts +117 -0
- package/src/scripts/chat_history.ts +12 -15
- package/src/scripts/check_account_surface.ts +318 -0
- package/src/scripts/check_agent_artifact_location.ts +17 -160
- package/src/scripts/check_bundle_path_leakage.ts +6 -0
- package/src/scripts/check_ci_local_parity.ts +21 -13
- package/src/scripts/check_claims.ts +77 -2
- package/src/scripts/check_completion_review.ts +34 -1
- package/src/scripts/check_concern_admissions.ts +41 -5
- package/src/scripts/check_consumer_scope_flip.ts +1 -1
- package/src/scripts/check_context_paths.ts +2 -0
- package/src/scripts/check_council_layout.ts +9 -0
- package/src/scripts/check_credential_spelling.ts +267 -0
- package/src/scripts/check_egress_mutations.ts +239 -0
- package/src/scripts/check_enforcement_coverage.ts +16 -3
- package/src/scripts/check_estate_count.ts +16 -1
- package/src/scripts/check_finding_dispositions.ts +147 -0
- package/src/scripts/check_gate_coverage.ts +123 -21
- package/src/scripts/check_gate_reachability.ts +16 -2
- package/src/scripts/check_generator_sync.ts +46 -0
- package/src/scripts/check_hook_bundle_composition.ts +139 -1
- package/src/scripts/check_host_docs_digest.ts +142 -5
- package/src/scripts/check_kernel_edit_ratified.ts +301 -76
- package/src/scripts/check_kernel_rule_bundle.ts +14 -10
- package/src/scripts/check_knowledge_cards.ts +83 -3
- package/src/scripts/check_memory.ts +13 -3
- package/src/scripts/check_pack_size.ts +1 -1
- package/src/scripts/check_permission_deny_syntax.ts +247 -0
- package/src/scripts/check_platform_anchor.ts +243 -0
- package/src/scripts/check_proposal.ts +183 -1
- package/src/scripts/check_reach_channels.ts +5 -3
- package/src/scripts/check_references.ts +5 -2
- package/src/scripts/check_release_manifest_content.ts +33 -0
- package/src/scripts/check_release_pr_shape.ts +5 -0
- package/src/scripts/check_rule_invariants.ts +9 -1
- package/src/scripts/check_skill_body_budget.ts +343 -0
- package/src/scripts/check_skill_requires.ts +137 -1
- package/src/scripts/check_step_receipts.ts +246 -0
- package/src/scripts/check_structural_breaking.ts +7 -1
- package/src/scripts/check_suppression_hygiene.ts +8 -0
- package/src/scripts/check_test_weakening.ts +14 -0
- package/src/scripts/check_token_quality_golden.ts +5 -1
- package/src/scripts/check_update_banner.ts +50 -3
- package/src/scripts/check_verify_expectation_delta.ts +2 -1
- package/src/scripts/check_voice_lexicon.ts +531 -0
- package/src/scripts/ci_os_attribution.ts +327 -0
- package/src/scripts/ci_platform_scope.ts +69 -0
- package/src/scripts/ci_settle.ts +4 -1
- package/src/scripts/ci_status.ts +0 -1
- package/src/scripts/ci_time_to_green.ts +748 -0
- package/src/scripts/classify_merge_risk.ts +407 -19
- package/src/scripts/code_graph/sqlite_store.ts +1 -1
- package/src/scripts/compile_trigger_evals.ts +353 -0
- package/src/scripts/condense.ts +25 -31
- package/src/scripts/consumer_matrix.ts +61 -3
- package/src/scripts/council_availability_hook.ts +12 -4
- package/src/scripts/council_cli.ts +48 -38
- package/src/scripts/cross_repo_retrieve.ts +9 -72
- package/src/scripts/design_lock.ts +106 -0
- package/src/scripts/design_slop_rules.ts +30 -0
- package/src/scripts/design_sync.ts +264 -0
- package/src/scripts/design_system_import.ts +30 -13
- package/src/scripts/dispatch_economy_report.ts +46 -1
- package/src/scripts/dispatch_r2_reviewer.ts +41 -5
- package/src/scripts/egress_canary.ts +166 -0
- package/src/scripts/egress_sender_census.ts +101 -0
- package/src/scripts/external_sources_denylist.json +94 -12
- package/src/scripts/generate_catalog.ts +6 -2
- package/src/scripts/generate_owned_digest.ts +163 -0
- package/src/scripts/generate_reference_toc.ts +143 -0
- package/src/scripts/generate_subagent_floor.ts +11 -1
- package/src/scripts/handoff_context_hook.ts +34 -0
- package/src/scripts/hook_carrier_census.ts +263 -0
- package/src/scripts/hook_chunks.d.mts +12 -0
- package/src/scripts/hook_chunks.mjs +114 -0
- package/src/scripts/hook_manifest.json +1 -1
- package/src/scripts/hook_manifest.yaml +65 -42
- package/src/scripts/hooks/block_config_weakening.ts +127 -3
- package/src/scripts/hooks/block_credential_reads.ts +165 -0
- package/src/scripts/hooks/block_no_verify.ts +47 -23
- package/src/scripts/hooks/block_speaking_inbox_dir.ts +38 -7
- package/src/scripts/hooks/category_a.ts +202 -25
- package/src/scripts/hooks/concern_failure_policy.ts +6 -6
- package/src/scripts/hooks/concern_registry.ts +31 -6
- package/src/scripts/hooks/concern_registry_types.ts +11 -0
- package/src/scripts/hooks/delegation_nudge_hook.ts +105 -15
- package/src/scripts/hooks/design_pass_hook.ts +42 -10
- package/src/scripts/hooks/dispatch_hook.ts +13 -12
- package/src/scripts/hooks/egress_engine_loader.ts +125 -0
- package/src/scripts/hooks/egress_stage.ts +440 -0
- package/src/scripts/hooks/hook_stdin.ts +29 -4
- package/src/scripts/hooks/host_docs_pages.ts +194 -0
- package/src/scripts/hooks/host_docs_pages.yaml +75 -0
- package/src/scripts/hooks/host_lowering.json +1 -1
- package/src/scripts/hooks/host_lowering.yaml +22 -21
- package/src/scripts/hooks/host_rate_marker_hook.ts +73 -0
- package/src/scripts/hooks/instructions_observer_hook.ts +170 -0
- package/src/scripts/hooks/interruption_ledger_hook.ts +1 -1
- package/src/scripts/hooks/lazy_concern.ts +148 -0
- package/src/scripts/hooks/orchestration_record_hook.ts +80 -2
- package/src/scripts/hooks/payload_stub.ts +16 -6
- package/src/scripts/hooks/permission_gate.ts +7 -7
- package/src/scripts/hooks/push_settle_hook.ts +32 -3
- package/src/scripts/hooks/replay_hook.ts +43 -0
- package/src/scripts/hooks/reread_guard_hook.ts +87 -10
- package/src/scripts/hooks/rtk_wrap_hook.ts +4 -3
- package/src/scripts/hooks/rule_inject_hook.ts +8 -1
- package/src/scripts/hooks/session_eol_hook.ts +48 -1
- package/src/scripts/hooks/source_first_gate_hook.ts +6 -8
- package/src/scripts/hooks/spawn_guard_shadow_hook.ts +203 -10
- package/src/scripts/hooks/state_io.ts +2 -2
- package/src/scripts/hooks/svg_obligation.ts +75 -19
- package/src/scripts/hooks/tool_result_bytes_hook.ts +14 -5
- package/src/scripts/hooks/turn_end_gate_hook.ts +1 -1
- package/src/scripts/hooks/ui_route_nudge_hook.ts +2 -12
- package/src/scripts/hooks_doctor.ts +31 -0
- package/src/scripts/hooks_status.ts +58 -3
- package/src/scripts/inbox_source_census.ts +74 -13
- package/src/scripts/install +25 -3
- package/src/scripts/install.ts +60 -91
- package/src/scripts/interruption_report.ts +11 -1
- package/src/scripts/layer_baseline_report.ts +267 -0
- package/src/scripts/learning_sidecar.ts +1 -1
- package/src/scripts/lint_agents_layout.ts +3 -0
- package/src/scripts/lint_blocker_citations.ts +104 -0
- package/src/scripts/lint_breaking_changes_index.ts +40 -7
- package/src/scripts/lint_consolidation_lineage.ts +144 -16
- package/src/scripts/lint_consumer_internal_refs.ts +90 -42
- package/src/scripts/lint_context_spine_usage.ts +21 -0
- package/src/scripts/lint_design_antipattern_parity.ts +39 -7
- package/src/scripts/lint_evidence_artifacts.ts +31 -0
- package/src/scripts/lint_example_fences.ts +11 -2
- package/src/scripts/lint_ghostwriter_source.ts +42 -10
- package/src/scripts/lint_hook_manifest.ts +94 -0
- package/src/scripts/lint_marketplace_install_completeness.ts +4 -0
- package/src/scripts/lint_mcp_config_security.ts +9 -11
- package/src/scripts/lint_plan_risk_register.ts +28 -1
- package/src/scripts/lint_positioning.ts +4 -4
- package/src/scripts/lint_provenance.ts +1 -0
- package/src/scripts/lint_roadmap_blockers.ts +65 -4
- package/src/scripts/lint_roadmap_complexity.ts +98 -0
- package/src/scripts/lint_skill_link_reach.ts +251 -9
- package/src/scripts/lint_skill_procedures.ts +252 -0
- package/src/scripts/lint_skill_scripts_readonly.ts +12 -1
- package/src/scripts/lint_subagent_determinism.ts +14 -1
- package/src/scripts/lint_ticked_unmet_criteria.ts +300 -21
- package/src/scripts/mcp_registry_submit.sh +2 -2
- package/src/scripts/mcp_server/consumer_tool_catalog.json +4 -4
- package/src/scripts/mcp_server/suggest_skill.ts +89 -4
- package/src/scripts/mcp_server/tools.ts +2 -33
- package/src/scripts/measure_skill_ranker_baseline.ts +203 -5
- package/src/scripts/measure_turn_end_gate.ts +61 -1
- package/src/scripts/merge_clearance.ts +225 -0
- package/src/scripts/migrate_command_suggestions.ts +1 -1
- package/src/scripts/network_sources.ts +236 -0
- package/src/scripts/no_go_deny_rows.ts +225 -0
- package/src/scripts/orchestration_record.ts +15 -2
- package/src/scripts/plan_test_shards.ts +103 -0
- package/src/scripts/pr_url_reminder_hook.ts +10 -0
- package/src/scripts/print_required_checks.ts +5 -5
- package/src/scripts/probe_depth_shadow.ts +406 -0
- package/src/scripts/probe_turnaround.ts +342 -10
- package/src/scripts/ratification_subject.ts +176 -0
- package/src/scripts/rdp_gate_classify.ts +1 -0
- package/src/scripts/rdp_quality_eval.ts +1 -0
- package/src/scripts/release.ts +26 -55
- package/src/scripts/release_drill.ts +52 -23
- package/src/scripts/release_env.ts +37 -0
- package/src/scripts/release_publication.ts +11 -1
- package/src/scripts/report_consumer_gate_reach.ts +233 -0
- package/src/scripts/report_merge_gate_load.ts +295 -0
- package/src/scripts/report_project_contract.ts +123 -0
- package/src/scripts/report_reducible_classes.ts +342 -0
- package/src/scripts/report_required_checks_drift.ts +5 -3
- package/src/scripts/report_skill_host_census.ts +199 -0
- package/src/scripts/report_standing_payload_by_host.ts +7 -7
- package/src/scripts/retro.ts +758 -0
- package/src/scripts/retro_facts.ts +575 -0
- package/src/scripts/retro_queue.ts +739 -0
- package/src/scripts/retro_session_facts.ts +218 -0
- package/src/scripts/retro_sweep.ts +493 -0
- package/src/scripts/retro_triage.ts +126 -0
- package/src/scripts/roadmap_context.ts +2 -2
- package/src/scripts/roadmap_drain_queue.ts +601 -0
- package/src/scripts/run_supervise.ts +24 -2
- package/src/scripts/schemas/agent-settings.schema.json +0 -16
- package/src/scripts/schemas/command.schema.json +3 -3
- package/src/scripts/schemas/review-findings.schema.json +8 -0
- package/src/scripts/schemas/skill.schema.json +7 -6
- package/src/scripts/schemas/subagent.schema.json +33 -2
- package/src/scripts/score_skill_selection.ts +5 -2
- package/src/scripts/second_brain_retrieval.ts +1 -0
- package/src/scripts/second_brain_run.ts +1 -0
- package/src/scripts/self_repair_cli.ts +563 -87
- package/src/scripts/self_review_gate.ts +59 -4
- package/src/scripts/session_register_hook.ts +91 -4
- package/src/scripts/sessions_cli.ts +100 -5
- package/src/scripts/skill_collision_clusters.ts +1 -1
- package/src/scripts/skill_tools/score_skill_relevance.ts +31 -2
- package/src/scripts/skill_trigger_eval.ts +4 -2
- package/src/scripts/source_adapters.ts +183 -0
- package/src/scripts/step_receipt.ts +100 -0
- package/src/scripts/sync_pr_branch.ts +4 -0
- package/src/scripts/test_council_qualification.ts +1 -1
- package/src/scripts/trigger_eval_grandfather.json +3 -49
- package/src/scripts/trigger_eval_rotation.ts +31 -3
- package/src/scripts/ui_conformance_probe.ts +405 -1
- package/src/scripts/update_counts.ts +230 -11
- package/src/scripts/update_invite_hook.ts +245 -0
- package/src/scripts/update_notice_hook.ts +298 -0
- package/src/scripts/validate_frontmatter.ts +85 -0
- package/src/scripts/worker_reuse_shadow_report.ts +121 -0
- package/src/scripts/worktree_cleanup_check.ts +915 -121
- package/src/server/io/yamlIO.ts +2 -2
- package/src/server/schemas/settings.ts +37 -23
- package/src/shared/brandTokenDocument.ts +46 -0
- package/src/shared/brandTokenPaths.ts +43 -0
- package/src/shared/settingsCarveOut.ts +0 -8
- package/src/shared/skillRanking.ts +106 -5
- package/src/shared/userMd/formAdapter.ts +15 -1
- package/src/shared/userMd/schema.ts +22 -0
- package/src/templates/agent-user.md +4 -0
- package/src/templates/agent-user.yml +4 -0
- package/dist/cli-delegate/chunk-4DBG5K7M.js +0 -1123
- package/dist/cli-delegate/chunk-523HCFYO.js +0 -90
- package/dist/cli-delegate/chunk-AL3RZ22D.js +0 -74
- package/dist/cli-delegate/chunk-KB5FZ655.js +0 -208
- package/dist/cli-delegate/chunk-MDPPKQCQ.js +0 -875
- package/dist/cli-delegate/chunk-OAFSJBHH.js +0 -272
- package/dist/ui/assets/index-C3djEJah.js +0 -23
- package/src/scripts/_lib/continuation_ladder.ts +0 -335
- package/src/scripts/hooks/run_continuation_hook.ts +0 -1524
|
@@ -38,34 +38,17 @@ HARD-FLOOR ACTION. `--no-merge` STILL STOPS BEFORE § 9.
|
|
|
38
38
|
ADR-282: AN OWNER AUTO-MERGE INSTRUCTION (`--merge`, OR THE OWNER'S OWN WORDS IN
|
|
39
39
|
THE SESSION) IS THE SAME CONFIRMATION FOR A `routine` PR. A `needs-council` PR
|
|
40
40
|
MERGES ONLY ON TWO CONVERGENT CLEARING SEATS (§ 9a) — OTHERWISE THE OWNER DECIDES.
|
|
41
|
+
A `needs-owner` PR IS NEVER SENT FOR CLEARANCE AND NEVER MERGES ON THIS COMMAND.
|
|
41
42
|
```
|
|
42
43
|
|
|
43
|
-
**
|
|
44
|
-
irreversible, and since 2026-09-04 (ADR-254) NOTHING MECHANICAL CHECKS IT —
|
|
45
|
-
the gate that did was removed after it refused authorizations the owner had in
|
|
46
|
-
fact given. The per-session ledger still records what the user's own prompt
|
|
47
|
-
authorized, and this command still reads it as an audit trail; it introduces no
|
|
48
|
-
second authorization store, and it never writes one. When the work left is
|
|
49
|
-
outside what the owner authorized, the run stops and reports (§ 7).
|
|
50
|
-
|
|
51
|
-
Why the preparation half is still the bulk of this command: everything before
|
|
52
|
-
§ 9 — the target manifest, the four conflict classes, the superseded check, the
|
|
53
|
-
bounded CI repair, the cutoff — is the expensive, error-prone part, and it is
|
|
54
|
-
what the live runs actually proved. `--no-merge` delivers exactly that half to
|
|
55
|
-
callers that want it, [`/roadmap:process-full`](../../../product-basic/roadmap/process-full/command.md)
|
|
56
|
-
among them.
|
|
44
|
+
**Why the invocation authorizes** — read [`pr-merge-sync`](../../contexts/execution/pr-merge-sync.md#why-the-invocation-authorizes).
|
|
57
45
|
|
|
58
46
|
## Sub-commands
|
|
59
47
|
|
|
60
48
|
| Sub-command | Routes to | Purpose |
|
|
61
49
|
|---|---|---|
|
|
62
50
|
|
|
63
|
-
|
|
64
|
-
an argument rather than a second command — the locked registry's rule that
|
|
65
|
-
"sibling variants become a flag, never a second command"
|
|
66
|
-
([`command-clusters`](../../docs/contracts/command-clusters.md)) applied
|
|
67
|
-
to this cluster. A future sub belongs here only if it has a materially
|
|
68
|
-
different lifecycle, not a different count.
|
|
51
|
+
**Sub-commands rationale** — read [`pr-merge-sync`](../../contexts/execution/pr-merge-sync.md#sub-commands-rationale).
|
|
69
52
|
|
|
70
53
|
## Dispatch
|
|
71
54
|
|
|
@@ -82,13 +65,7 @@ merged (§ 5).
|
|
|
82
65
|
| `… --merge` | as above | yes | yes, through § 9a's danger gate — the form [`/roadmap:process-full`](../../../product-basic/roadmap/process-full/command.md) calls when the owner gave an auto-merge instruction (ADR-282) |
|
|
83
66
|
| `… --no-merge` | as above | yes | **never**, explicitly. This is the form [`/roadmap:process-full`](../../../product-basic/roadmap/process-full/command.md) calls for its delivery loop without an auto-merge instruction. |
|
|
84
67
|
|
|
85
|
-
**Bare invocation** (
|
|
86
|
-
flow**, not a menu: it runs the auto-selection in row 2 and says which PR it
|
|
87
|
-
picked and why, before touching it. A menu would be the wrong shape here —
|
|
88
|
-
selection is deterministic from the queue-order rule in § 1, so asking the user
|
|
89
|
-
to pick would hand back a decision the command can compute. When the open-PR
|
|
90
|
-
list is empty there is nothing to select and the command reports that and
|
|
91
|
-
stops.
|
|
68
|
+
**Bare invocation** — read [`pr-merge-sync`](../../contexts/execution/pr-merge-sync.md#bare-invocation).
|
|
92
69
|
|
|
93
70
|
## 1. Snapshot the target — a manifest re-checked before every merge
|
|
94
71
|
|
|
@@ -96,153 +73,20 @@ Compute the queue ONCE at invocation and record it as a manifest of
|
|
|
96
73
|
`(PR number, head SHA)` pairs:
|
|
97
74
|
|
|
98
75
|
```bash
|
|
99
|
-
gh pr list --
|
|
100
|
-
--json number,title,headRefName,headRefOid,baseRefName,additions,deletions,changedFiles,mergeable,updatedAt
|
|
101
|
-
gh api repos/:owner/:repo/git/ref/heads/<baseRefName> --jq .object.sha # per distinct base
|
|
76
|
+
gh pr list --limit 100 \
|
|
77
|
+
--json number,title,headRefName,headRefOid,baseRefName,isCrossRepository,additions,deletions,changedFiles,mergeable,updatedAt
|
|
78
|
+
gh api 'repos/:owner/:repo/git/ref/heads/<baseRefName>' --jq .object.sha # per distinct base
|
|
102
79
|
```
|
|
103
80
|
|
|
104
|
-
|
|
105
|
-
§ 4 both consume `<base>`, and § 8's kill switch "the base advanced by an actor
|
|
106
|
-
other than this run" is undetectable without a base SHA to compare against.
|
|
107
|
-
|
|
108
|
-
`--limit 100` caps the manifest. A queue above 100 open PRs is drained
|
|
109
|
-
**partially**, and the run must say so rather than reporting completion — the
|
|
110
|
-
§ 6 bound reads "initial manifest + one batch", and the manifest is what the
|
|
111
|
-
cap truncated.
|
|
112
|
-
|
|
113
|
-
The manifest is the authorization's target set and is **never silently
|
|
114
|
-
refreshed by a third party's push**. It lives in this run's own context and in
|
|
115
|
-
no file, so nothing verifies it and no gate would notice if it drifted — what
|
|
116
|
-
actually binds the target is the pre-merge re-read below, a check that fires,
|
|
117
|
-
not a property that holds. Say "re-checked", never "immutable" (ADR-266
|
|
118
|
-
§ What this record does not claim, finding 3). It is, by design, advanced by *this run's
|
|
119
|
-
own* commits — § 2 merges the base in and § 5 pushes, so a prepared PR's head
|
|
120
|
-
is never the snapshot head, and a naive "refuse when the SHA moved" check would
|
|
121
|
-
fire on every PR the run touches.
|
|
122
|
-
|
|
123
|
-
So the record carries **two** SHAs per PR and they mean different things:
|
|
124
|
-
|
|
125
|
-
| Field | Set at | Meaning |
|
|
126
|
-
|---|---|---|
|
|
127
|
-
| `pr_number` | snapshot | Immutable. A change is branch substitution — refuse. |
|
|
128
|
-
| `observed_head` | snapshot, then **updated by this run after each of its own pushes** | The head this run last produced. |
|
|
129
|
-
| `base_ref` + `base_sha` | snapshot | The base the PR was prepared against; § 8's "base advanced by another actor" compares against it. |
|
|
130
|
-
|
|
131
|
-
Before every merge, re-read the PR and refuse when the live head is **neither**
|
|
132
|
-
the snapshot head **nor** the head this run last pushed. That is the
|
|
133
|
-
force-push-after-authorization case, and it is the only one the check exists
|
|
134
|
-
for. A PR that appeared after the snapshot is never merged by this run — § 6
|
|
135
|
-
says what happens to it instead.
|
|
81
|
+
**Manifest fields** — read [`pr-merge-sync`](../../contexts/execution/pr-merge-sync.md#manifest-fields).
|
|
136
82
|
|
|
137
83
|
## 2. Sync with the base
|
|
138
84
|
|
|
139
|
-
|
|
140
|
-
the update, so the branch-convergence policy (the base SET a non-default target
|
|
141
|
-
carries) is read on every path. `show` takes the same `--base` as `sync` and
|
|
142
|
-
runs after the checkout: without `--base` both read the default branch, and a PR
|
|
143
|
-
into any other base would be judged against the wrong commit. `--key
|
|
144
|
-
update_strategy` limits `show`'s exit to the strategy, so a `commit_format` or
|
|
145
|
-
`branch_pattern` the PR head breaks does not stop the update.
|
|
146
|
-
|
|
147
|
-
```bash
|
|
148
|
-
git fetch origin
|
|
149
|
-
gh pr checkout <N>
|
|
150
|
-
agent-config git:convention show --key update_strategy --base origin/<base> # value, source, state
|
|
151
|
-
agent-config git:convention sync --base origin/<base>
|
|
152
|
-
```
|
|
153
|
-
|
|
154
|
-
A `git.update_strategy` whose state is `malformed`, `invalid`, `discarded` or
|
|
155
|
-
`unresolvable` is not a strategy — `show` exits `1` on it and the script
|
|
156
|
-
refuses it with exit 4, or with exit 1 when the target itself cannot be
|
|
157
|
-
resolved — so stop on this PR and report the line `show` printed. A
|
|
158
|
-
candidate in such a state (this checkout's uncommitted value) is a warning
|
|
159
|
-
`show` prints with exit `0`; the script never reads it, so it does not stop
|
|
160
|
-
the PR.
|
|
161
|
-
The one narrowing: a base the server names whose commit could not be fetched is
|
|
162
|
-
the `unverified` warning below (exit `0`, nothing merged); origin unreachable at
|
|
163
|
-
the ref lookup is exit `1`. Otherwise
|
|
164
|
-
the strategy decides what the script does — under `merge` it merges the base
|
|
165
|
-
set in, under `rebase` it only checks, because a
|
|
166
|
-
`Merge branch '<base>' into …` commit is what that setting excludes and the
|
|
167
|
-
`/pr:merge` sentence authorises merging the named PRs, not rewriting their
|
|
168
|
-
branches ([`git-history-discipline`](../../../../rules/git-history-discipline.md)).
|
|
169
|
-
Read its exit and its line together:
|
|
170
|
-
|
|
171
|
-
- exit `0` with a `✅` line → the PR is current with its base, or under `merge`
|
|
172
|
-
the base was merged in cleanly; go on to § 3.
|
|
173
|
-
- exit `0` with a `⚠️` line reading `unverified` (the base commit or origin could not be fetched)
|
|
174
|
-
or `BYPASSED` (the convergence policy is disabled at the target) → **not
|
|
175
|
-
checked**: nothing is known about freshness. Stop on this PR and report the
|
|
176
|
-
line; it is never read as current.
|
|
177
|
-
- exit `1` → a conflict report goes to § 3; a base that could not be resolved
|
|
178
|
-
(a `--base` the server does not know, no origin, origin unreachable) stops
|
|
179
|
-
this PR.
|
|
180
|
-
- exit `3` → behind under a strategy other than `merge`. This run never
|
|
181
|
-
rebases a PR it did not author — the rebase is the author's, or a separate
|
|
182
|
-
request under
|
|
183
|
-
[`branch-update`](../../../../skills/git-workflow/references/branch-update.md).
|
|
184
|
-
What happens to the PR is an owner decision (recorded
|
|
185
|
-
2026-10-07), and it turns on one forge setting — whether the base requires an
|
|
186
|
-
up-to-date branch before merging:
|
|
187
|
-
|
|
188
|
-
```bash
|
|
189
|
-
gh api repos/{owner}/{repo}/branches/<base>/protection \
|
|
190
|
-
--jq .required_status_checks.strict 2>&1; echo "exit=$?"
|
|
191
|
-
gh api repos/{owner}/{repo}/rules/branches/<base> \
|
|
192
|
-
--jq '.[] | select(.type == "required_status_checks") | .parameters.strict_required_status_checks_policy'; echo "exit=$?"
|
|
193
|
-
```
|
|
194
|
-
|
|
195
|
-
Each read has three outcomes, told apart by the exit code and the message:
|
|
196
|
-
|
|
197
|
-
| Read | Absent | Value | Failed |
|
|
198
|
-
|---|---|---|---|
|
|
199
|
-
| classic protection | non-zero exit **and** the output contains `(HTTP 404)` (`Branch not protected`); or exit `0` with `null` — the branch is protected but requires no status checks | exit `0`: `true` or `false` | any other non-zero exit, or output that is not `true` / `false` / `null` |
|
|
200
|
-
| rulesets | exit `0` with empty output (no rule requiring status checks) | exit `0`: one or more lines, each `true` or `false` | non-zero exit, or a line that is not `true` / `false` |
|
|
201
|
-
|
|
202
|
-
A `404` from the classic endpoint is not a failed read: it is what a branch
|
|
203
|
-
protected only by rulesets, or not protected at all, returns; nor is `null`
|
|
204
|
-
from a `200`, which is a protected branch with no required status checks.
|
|
205
|
-
The rulesets read prints one line per ruleset on the base that requires
|
|
206
|
-
status checks, so a base covered by several prints several lines: **any**
|
|
207
|
-
`true` line reads as `true`; all lines `false` reads as `false`. Either reading
|
|
208
|
-
`true` means the forge requires an up-to-date branch; both absent or `false`
|
|
209
|
-
means it does not; a **failed** read is treated as required. A base
|
|
210
|
-
protected by rulesets alone is decided by the rulesets read.
|
|
211
|
-
- **The forge does not require an up-to-date branch**, and the PR is green
|
|
212
|
-
and conflict-free → it goes on to § 3–§ 9 and is merged behind its base;
|
|
213
|
-
the summary row says so (`merged behind <base>; the forge does not require
|
|
214
|
-
an up-to-date branch`). Its checks never ran against the current base, and
|
|
215
|
-
the summary is where that stays visible.
|
|
216
|
-
- **The forge requires an up-to-date branch** → disposition
|
|
217
|
-
`blocked-external`, the row naming that setting as the reason.
|
|
218
|
-
- **The line reads `TARGET_POLICY_STALE`** → the PR is current with its
|
|
219
|
-
non-default target and that target is itself behind its default branch:
|
|
220
|
-
`blocked-external`, reason "the target's update", whatever the forge
|
|
221
|
-
setting. A PR also behind its target gets the ordinary behind line instead,
|
|
222
|
-
with the target's lag as a note.
|
|
223
|
-
- exit `4` → the strategy could not be read (the line names the reason code
|
|
224
|
-
and the file); nothing was checked or merged. Stop on this PR and report it.
|
|
225
|
-
- any other exit → the check could not run (internal error); stop on this PR
|
|
226
|
-
and report the script's message.
|
|
85
|
+
**Sync procedure, exits** — read [`pr-merge-sync`](../../contexts/execution/pr-merge-sync.md#sync-procedure-and-exits).
|
|
227
86
|
|
|
228
87
|
## 3. Resolve conflicts by class, never by taste
|
|
229
88
|
|
|
230
|
-
|
|
231
|
-
roadmap PRs touch the same handful of shared paths, so each merge can
|
|
232
|
-
re-conflict every remaining PR. Resolve semantically, by these enumerated
|
|
233
|
-
classes.
|
|
234
|
-
|
|
235
|
-
`src/config/estate-count-budget.json` used to be the second-worst offender here
|
|
236
|
-
and no longer belongs in any class below: ADR-243 removed its stored baseline, so
|
|
237
|
-
it changes on a policy decision rather than once per roadmap touch. A conflict in
|
|
238
|
-
it now means two humans edited the same policy sentence — read both sides.
|
|
239
|
-
|
|
240
|
-
| Class | Files | Resolution |
|
|
241
|
-
|---|---|---|
|
|
242
|
-
| Roadmap files | `agents/roadmaps/**` | Union of completions. Never un-check a box either side checked; never resurrect a roadmap either side archived or parked. |
|
|
243
|
-
| Generated artefacts | `agents/roadmaps-progress.md` · `docs/catalog.md` · `docs/command-flows.md` · `agents/index.md` · any file whose first three lines say generated / do-not-edit | Never hand-merge. Take either side, then **regenerate** with the repo's own task and commit the regenerated output. |
|
|
244
|
-
| Archive move vs. edit | `agents/roadmaps/{archive,later,skipped}/**` — one side renamed or deleted, the other edited | The archived end-state wins. Re-apply the edit at the new path if it still matters; otherwise drop it and record the drop in the summary. |
|
|
245
|
-
| Evidence files | `agents/evidence/**` | Append-only. Keep both sides. |
|
|
89
|
+
**Conflict classes** — read [`pr-merge-sync`](../../contexts/execution/pr-merge-sync.md#conflict-classes).
|
|
246
90
|
|
|
247
91
|
```
|
|
248
92
|
THE FOUR CLASSES ARE AIDS, NOT EXHAUSTIVE AUTHORITY.
|
|
@@ -252,24 +96,6 @@ PRESERVE BOTH WHERE COMPATIBLE → INDEPENDENT REVIEW FOR A RISKY MERGE →
|
|
|
252
96
|
COUNCIL OR TEAM → THE OWNER ONLY FOR A PRODUCT-SEMANTIC INCOMPATIBILITY.
|
|
253
97
|
```
|
|
254
98
|
|
|
255
|
-
The classes exist so a merge resolution is reproducible by a second reader, and
|
|
256
|
-
that is still their job. What changed is what happens when a conflict falls
|
|
257
|
-
outside them: **`road-to-adversarial-verification-and-long-runs` 5.2** replaced
|
|
258
|
-
the halt with the ladder above, because "nobody has decided this yet" describes
|
|
259
|
-
a class of conflict, not a class of thing only an owner may touch. Most
|
|
260
|
-
unenumerated conflicts are two branches editing adjacent prose, and halting a run
|
|
261
|
-
on one converts a two-minute read into an owner interrupt.
|
|
262
|
-
|
|
263
|
-
Read the ladder as ordered, and note where the owner sits. The first three rungs
|
|
264
|
-
are the agent's own work — **understand what each side was trying to do**,
|
|
265
|
-
**inspect recency, authorship and the open PRs** that produced them, and
|
|
266
|
-
**preserve both where they are compatible**, which most textual conflicts are.
|
|
267
|
-
The fourth and fifth escalate *laterally* — an independent reviewer for a merge
|
|
268
|
-
whose risk the run cannot bound alone, then the council or the team. The owner is
|
|
269
|
-
the **last** rung and is reached on one condition: the two sides encode
|
|
270
|
-
incompatible PRODUCT semantics, where choosing is a decision about what the thing
|
|
271
|
-
should do rather than about how to combine two edits.
|
|
272
|
-
|
|
273
99
|
```
|
|
274
100
|
A CONFLICT THE RUN CANNOT UNDERSTAND IS NOT AUTOMATICALLY OWNER-OWNED.
|
|
275
101
|
"I DO NOT KNOW WHICH SIDE IS RIGHT" IS A REASON TO ESCALATE INDEPENDENTLY,
|
|
@@ -277,30 +103,9 @@ NOT A REASON TO ASK. THE OWNER RUNG IS REACHED BY THE SEMANTIC TEST,
|
|
|
277
103
|
NEVER BY THE RUN'S OWN UNCERTAINTY.
|
|
278
104
|
```
|
|
279
105
|
|
|
280
|
-
Deciding it **silently** inside a drain loop is still how work disappears, and
|
|
281
|
-
that prohibition is unchanged: an unenumerated resolution is recorded — which
|
|
282
|
-
rung settled it, what both intents were, and why the chosen resolution preserves
|
|
283
|
-
them — so the second reader the classes exist for can still follow it.
|
|
284
|
-
|
|
285
|
-
**`process-full`'s halt 6 retires with this**, per that command's own halt table.
|
|
286
|
-
|
|
287
106
|
## 4. Superseded check — before any CI is spent
|
|
288
107
|
|
|
289
|
-
|
|
290
|
-
already landed elsewhere. Distinguish genuinely empty from generated-artefact
|
|
291
|
-
churn that regeneration on the base would produce anyway — the latter is not
|
|
292
|
-
emptiness.
|
|
293
|
-
|
|
294
|
-
The probe is **not** a bare diff: taken literally, a bare diff closes every
|
|
295
|
-
roadmap PR in this repository, because after a base sync and a regenerate the
|
|
296
|
-
only remaining hunks are exactly the generated-artefact churn § 3 tells you to
|
|
297
|
-
regenerate. Exclude those paths before deciding:
|
|
298
|
-
|
|
299
|
-
```bash
|
|
300
|
-
git diff origin/<base>...HEAD --stat -- . \
|
|
301
|
-
':(exclude)agents/roadmaps-progress.md' \
|
|
302
|
-
':(exclude)docs/catalog.md' ':(exclude)agents/index.md'
|
|
303
|
-
```
|
|
108
|
+
**Superseded probe** — read [`pr-merge-sync`](../../contexts/execution/pr-merge-sync.md#superseded-probe).
|
|
304
109
|
|
|
305
110
|
Empty **after that exclusion** ⇒ superseded. **Never merge an empty PR to make
|
|
306
111
|
the queue count fall — and never close one on a bare diff.**
|
|
@@ -318,34 +123,12 @@ IT CANNOT NAME WHERE THE CONTENT LANDED → DO NOT EVEN ASK; LEAVE THE PR OPEN
|
|
|
318
123
|
AND RECORD IT AS `blocked-external`.
|
|
319
124
|
```
|
|
320
125
|
|
|
321
|
-
The asymmetry is deliberate and worth stating, because it looks inconsistent:
|
|
322
|
-
merging is authorised once by the invocation, while closing needs a *per-object*
|
|
323
|
-
confirmation every time. Merging a PR this queue prepared is the action the
|
|
324
|
-
run's whole design is about, and § 1's manifest already binds it to a named
|
|
325
|
-
number and a recorded head; closing a PR someone else opened is neither, it
|
|
326
|
-
destroys their work in progress, and no guard in this tree sees it happen. The
|
|
327
|
-
stricter gate goes on the action nothing else watches.
|
|
328
|
-
|
|
329
126
|
## 5. Drive CI green — bounded
|
|
330
127
|
|
|
331
128
|
Push, then wait for the verdict on the pushed head. Green means **the required
|
|
332
129
|
checks succeeded for the exact head SHA that will be merged** — never a local
|
|
333
130
|
run, never an earlier commit ([`/git-pr-create` § 4d](../create/command.md)).
|
|
334
131
|
|
|
335
|
-
- **Root-cause fixes only**, inside the PR's own scope.
|
|
336
|
-
- **One rerun for a known flake class** (`gh run rerun <id> --failed`) before
|
|
337
|
-
red counts as real.
|
|
338
|
-
- **N=3 per validation target, six touches per PR per pass — two different
|
|
339
|
-
units, and the smaller one binds first.** The always-loaded
|
|
340
|
-
[`autonomous-execution`](../../../../rules/autonomous-execution.md) cap is
|
|
341
|
-
three consecutive failed attempts on ONE target (a named failing test, a lint
|
|
342
|
-
rule id, one CI job) and it is not lifted here. The six is a per-PR ceiling
|
|
343
|
-
across *distinct* targets: a PR whose CI peels one failure to reveal a
|
|
344
|
-
different one may be worked six times, never one target four times. Hitting
|
|
345
|
-
N=3 on a single target ends the PR's pass immediately, whatever the six says.
|
|
346
|
-
Exhaustion of either posts a diagnosis comment and moves the PR to the end of
|
|
347
|
-
the queue once; a second exhaustion is terminal.
|
|
348
|
-
|
|
349
132
|
```
|
|
350
133
|
THESE ARE HALTS, NOT OPTIONS OF LAST RESORT:
|
|
351
134
|
DEPENDENCY CHANGES · WORKFLOW CHANGES · DELETING OR SKIPPING A TEST ·
|
|
@@ -355,45 +138,9 @@ A BRANCH-PROTECTION CHANGE.
|
|
|
355
138
|
THAT WOULD HAVE CAUGHT THE PROBLEM.
|
|
356
139
|
```
|
|
357
140
|
|
|
358
|
-
|
|
141
|
+
**Red CI repair bounds** — read [`pr-merge-sync`](../../contexts/execution/pr-merge-sync.md#red-ci-repair-bounds).
|
|
359
142
|
|
|
360
|
-
|
|
361
|
-
Dispatch table's second row is the traversal for `all` too, not only for
|
|
362
|
-
single-PR selection, so two runs over the same queue agree.
|
|
363
|
-
|
|
364
|
-
After each merge the base has moved, so the next PR is re-synced against the
|
|
365
|
-
NEW base — that is the loop, and it is why pre-greening several PRs ahead of
|
|
366
|
-
their merges is wasted work.
|
|
367
|
-
|
|
368
|
-
**Under a strategy other than `merge`**, every PR after the first is behind the
|
|
369
|
-
base the previous merge moved, and this run rebases none of them. Where the
|
|
370
|
-
forge does not require an up-to-date branch, a green, conflict-free PR that is
|
|
371
|
-
behind still merges (§ 2, exit `3`) — three green branches merge without three
|
|
372
|
-
sequential rebases — and each such row says it merged behind its base. Where
|
|
373
|
-
the forge requires an up-to-date branch, the first merge leaves every remaining
|
|
374
|
-
PR `blocked-external`, and the summary names that setting rather than leaving
|
|
375
|
-
the reader to find it.
|
|
376
|
-
|
|
377
|
-
**Under `--no-merge` that loop does not turn**, and the paragraph above is
|
|
378
|
-
written for the form that does. Nothing merges, so the base does not advance,
|
|
379
|
-
no PR leaves the open list, and the run is a **preparation sweep**: it syncs,
|
|
380
|
-
classifies, greens and reports each PR once, then stops. It does not re-prepare
|
|
381
|
-
a PR its own predecessor invalidated, because it has no predecessor that
|
|
382
|
-
landed. The cutoff below bounds both forms.
|
|
383
|
-
|
|
384
|
-
**Cutoff.** When the manifest is exhausted, recompute the open-PR list
|
|
385
|
-
**exactly once**. PRs that appeared during the run are **prepared** as ONE final
|
|
386
|
-
straggler batch. After that batch the run ends unconditionally; anything
|
|
387
|
-
arriving during or after it is recorded as `arrived-after-cutoff` and is not
|
|
388
|
-
processed.
|
|
389
|
-
|
|
390
|
-
**The straggler batch is prepared and never merged — in both forms.** It is not
|
|
391
|
-
in § 1's manifest, so the invocation does not reach it (the Iron Law above § 1,
|
|
392
|
-
and § 7's first rule). "Drained" is therefore preparation here: each straggler
|
|
393
|
-
is synced, classified, greened and reported, ends at mergeable-and-open exactly
|
|
394
|
-
as under `--no-merge`, and is recorded `unauthorized` with the go-ahead it needs.
|
|
395
|
-
Reading "drained" as "merged" is the one way `all` could merge a PR the owner
|
|
396
|
-
never named, which is why the word is pinned rather than left to context.
|
|
143
|
+
## 6. `all` — the queue, and the cutoff that ends it
|
|
397
144
|
|
|
398
145
|
```
|
|
399
146
|
THE CUTOFF IS THE TERMINATION PROOF.
|
|
@@ -402,27 +149,7 @@ SESSION THAT KEEPS OPENING PRs — THE RECOMPUTE JUST REFILLS IT.
|
|
|
402
149
|
BOUND: INITIAL MANIFEST + ONE BATCH, WHATEVER ELSE IS HAPPENING IN THE REPO.
|
|
403
150
|
```
|
|
404
151
|
|
|
405
|
-
**
|
|
406
|
-
because the next merge re-conflicts it. When the projected remaining work
|
|
407
|
-
exceeds the remaining window, stop entering CI-fix loops and merge everything
|
|
408
|
-
already green first. Pre-greening several PRs ahead of their merge is forbidden
|
|
409
|
-
under window pressure.
|
|
410
|
-
|
|
411
|
-
**No mechanical window remains, and that is the change.** Until 2026-09-04 the
|
|
412
|
-
run read a freshness bound off the authorization ledger and paused when it
|
|
413
|
-
closed. The owner removed the enforcing gate (ADR-254) after it was measured
|
|
414
|
-
refusing authorizations that had in fact been given, so there is no constant to
|
|
415
|
-
read and no expiry to schedule against. Authorization is carried by the
|
|
416
|
-
conversation and by `non-destructive-by-default`, not by a clock.
|
|
417
|
-
|
|
418
|
-
The per-session ledger is still written, and is still read-only to this run:
|
|
419
|
-
|
|
420
|
-
```bash
|
|
421
|
-
cat "agents/state/git-authorization/$(<session-slug>).json" # detected_at
|
|
422
|
-
```
|
|
423
|
-
|
|
424
|
-
It records what a turn authorized. It no longer gates anything, so treat it as
|
|
425
|
-
an audit trail, never as permission. The run never edits that file.
|
|
152
|
+
**The `all` queue** — read [`pr-merge-queue`](../../contexts/execution/pr-merge-queue.md#the-all-queue).
|
|
426
153
|
|
|
427
154
|
## 7. Authorization is the owner's sentence, not a timer
|
|
428
155
|
|
|
@@ -432,39 +159,10 @@ IS OUTSIDE WHAT WAS AUTHORIZED, THE RUN PAUSES, REPORTS, AND ASKS. IT NEVER
|
|
|
432
159
|
INFERS A WIDER MANDATE FROM A LONG RUN OR FROM MOMENTUM.
|
|
433
160
|
```
|
|
434
161
|
|
|
435
|
-
|
|
436
|
-
section the whole control rather than a second layer behind one. Two rules
|
|
437
|
-
follow, and they are stricter than the ones they replace:
|
|
438
|
-
|
|
439
|
-
- **A cardinality word does not authorize a PR the owner never named.** "All the
|
|
440
|
-
open PRs" is an instruction to work the queue as it stood when the owner said
|
|
441
|
-
it. A PR opened after that sentence is new work and needs its own go-ahead.
|
|
442
|
-
- **A one-shot authorization is spent on the operation it named.** Per
|
|
443
|
-
`commit-policy`, "merge #1499" does not authorize the next merge, and a
|
|
444
|
-
conflict cycle or a CI fix in between does not renew it.
|
|
445
|
-
|
|
446
|
-
Write the summary as-is with an `unauthorized` disposition per unprocessed PR
|
|
447
|
-
and name the exact authorization needed. Then STOP and wait — do not end the
|
|
448
|
-
run, and do not proceed to the next PR.
|
|
449
|
-
|
|
450
|
-
That is the same `unauthorized` row § 6's straggler batch carries, and
|
|
451
|
-
deliberately one token rather than two: both mean *prepared by this run, not
|
|
452
|
-
authorized for it to merge*, and a reader of the summary needs the distinction
|
|
453
|
-
between merged and not-merged, not between two reasons for the same outcome.
|
|
162
|
+
**Authorization rules** — read [`pr-merge-sync`](../../contexts/execution/pr-merge-sync.md#authorization-rules).
|
|
454
163
|
|
|
455
164
|
## 8. Kill switches, and what happens after a merge
|
|
456
165
|
|
|
457
|
-
**Armed during preparation, not only before a merge** — otherwise a
|
|
458
|
-
`--no-merge` sweep would have no way to stop at all. Each one aborts the current
|
|
459
|
-
PR and ends the run on any of:
|
|
460
|
-
|
|
461
|
-
- target number or head SHA differs from the manifest;
|
|
462
|
-
- the base advanced by an actor other than this run;
|
|
463
|
-
- a review was dismissed, or the required-check set changed;
|
|
464
|
-
- a conflict outside the four enumerated classes;
|
|
465
|
-
- guard or hook-bundle verification failed;
|
|
466
|
-
- the first unexplained CI-repair failure.
|
|
467
|
-
|
|
468
166
|
```
|
|
469
167
|
A COMPLETED MERGE IS THE COMMIT POINT.
|
|
470
168
|
NEVER AUTO-REVERT AN EARLIER MERGE AS "ROLLBACK" — AFTER FIVE MERGES THERE IS
|
|
@@ -472,35 +170,110 @@ NO ROLLBACK, ONLY COMPENSATION, AND COMPENSATION IS A SEPARATELY AUTHORIZED
|
|
|
472
170
|
HUMAN DECISION. STOP, EMIT THE MERGE SHAs AND THE REASON, HAND OVER.
|
|
473
171
|
```
|
|
474
172
|
|
|
173
|
+
**Kill switches** — read [`pr-merge-queue`](../../contexts/execution/pr-merge-queue.md#kill-switches).
|
|
174
|
+
|
|
475
175
|
## 9a. Danger gate — before every merge (ADR-282)
|
|
476
176
|
|
|
477
|
-
Once required checks are green on the manifest head and the PR is mergeable
|
|
177
|
+
Once required checks are green on the manifest head and the PR is mergeable,
|
|
178
|
+
classify it with the **base revision's** classifier, never the head's:
|
|
478
179
|
|
|
479
180
|
```bash
|
|
480
|
-
|
|
181
|
+
BASE="<manifest-base_sha>"
|
|
182
|
+
HEAD_SHA="<manifest-head-sha>"
|
|
183
|
+
run_base() {
|
|
184
|
+
OUT="$("$@" "$BASE_DIR/src/scripts/classify_merge_risk.ts" --range "$BASE...$HEAD_SHA" --root "$PWD")"
|
|
185
|
+
CODE=$?
|
|
186
|
+
case "$CODE:$(printf '%s\n' "$OUT" | tail -n 1)" in
|
|
187
|
+
"0:verdict: routine" | "1:verdict: needs-council ("* | "2:verdict: needs-owner ("*) printf '%s\n' "$OUT" ;;
|
|
188
|
+
*) return 1 ;;
|
|
189
|
+
esac
|
|
190
|
+
}
|
|
191
|
+
VERDICT="verdict: needs-owner (temp-dir-unavailable: no private temporary directory)"
|
|
192
|
+
if GATE_TMP="$(mktemp -d)" && [ -n "$GATE_TMP" ] && [ -d "$GATE_TMP" ]; then
|
|
193
|
+
BASE_DIR="$GATE_TMP/classifier-base"
|
|
194
|
+
trap 'git worktree remove --force "$BASE_DIR" 2>/dev/null; rm -rf "$GATE_TMP"' EXIT
|
|
195
|
+
if REAL_TMP="$(cd "$GATE_TMP" && pwd -P)" && [ -n "$REAL_TMP" ]; then
|
|
196
|
+
BASE_DIR="$REAL_TMP/classifier-base"
|
|
197
|
+
VERDICT="verdict: needs-owner (base-unavailable: no classifier or no worktree at $BASE)"
|
|
198
|
+
DEPS=2
|
|
199
|
+
if git diff --name-only -z "$BASE...$HEAD_SHA" > "$REAL_TMP/changed" \
|
|
200
|
+
&& printf '\0' >> "$REAL_TMP/changed"; then
|
|
201
|
+
FOUND=0
|
|
202
|
+
END_SEEN=0
|
|
203
|
+
while IFS= read -r -d '' CHANGED_PATH; do
|
|
204
|
+
if [ -z "$CHANGED_PATH" ]; then
|
|
205
|
+
END_SEEN=1
|
|
206
|
+
break
|
|
207
|
+
fi
|
|
208
|
+
case "${CHANGED_PATH##*/}" in
|
|
209
|
+
package.json | package-lock.json | npm-shrinkwrap.json | .npmrc | yarn.lock | .yarnrc.yml | \
|
|
210
|
+
pnpm-lock.yaml | bun.lock | bun.lockb) FOUND=1 ;;
|
|
211
|
+
esac
|
|
212
|
+
done < "$REAL_TMP/changed"
|
|
213
|
+
if [ "$END_SEEN" -eq 1 ]; then
|
|
214
|
+
DEPS="$FOUND"
|
|
215
|
+
fi
|
|
216
|
+
fi
|
|
217
|
+
if ! TRACKED="$(git ls-files -- node_modules)" || [ -n "$TRACKED" ]; then
|
|
218
|
+
VERDICT="verdict: needs-owner (runtime-unverified: node_modules unreadable or tracked)"
|
|
219
|
+
elif [ "$DEPS" -gt 1 ]; then
|
|
220
|
+
VERDICT="verdict: needs-owner (manifest-unreadable: the changed-file list could not be read)"
|
|
221
|
+
elif git cat-file -e "$BASE:src/scripts/classify_merge_risk.ts" \
|
|
222
|
+
&& git worktree add -q --detach "$BASE_DIR" "$BASE"; then
|
|
223
|
+
cat > "$REAL_TMP/loader.mjs" <<'LOADER'
|
|
224
|
+
export async function resolve(specifier, context, next) {
|
|
225
|
+
try { return await next(specifier, context); } catch (error) {
|
|
226
|
+
if (/^\.{1,2}\//.test(specifier) && specifier.endsWith('.js')) return next(`${specifier.slice(0, -3)}.ts`, context);
|
|
227
|
+
throw error;
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
LOADER
|
|
231
|
+
printf '%s\n' "import { register } from 'node:module';" "register('./loader.mjs', import.meta.url);" > "$REAL_TMP/register.mjs"
|
|
232
|
+
if RUN="$(run_base node --experimental-strip-types --no-warnings --import "$REAL_TMP/register.mjs")"; then
|
|
233
|
+
:
|
|
234
|
+
elif [ "$DEPS" -eq 0 ] && RUN="$(run_base node_modules/.bin/tsx)"; then
|
|
235
|
+
:
|
|
236
|
+
elif [ "$DEPS" -eq 1 ] && RUN="$(run_base node_modules/.bin/tsx)"; then
|
|
237
|
+
case "$(printf '%s\n' "$RUN" | tail -n 1)" in
|
|
238
|
+
"verdict: needs-owner ("*) ;;
|
|
239
|
+
*) RUN="verdict: needs-council (runtime-uncertain: no package-free runtime, and the head changes the manifest the checkout's runtime came from)" ;;
|
|
240
|
+
esac
|
|
241
|
+
else
|
|
242
|
+
RUN="verdict: needs-owner (classifier-unusable: no valid verdict under either runtime)"
|
|
243
|
+
fi
|
|
244
|
+
printf '%s\n' "$RUN" | sed '$d'
|
|
245
|
+
VERDICT="$(printf '%s\n' "$RUN" | tail -n 1)"
|
|
246
|
+
if [ "$DEPS" -eq 1 ] && [ "$VERDICT" = "verdict: routine" ]; then
|
|
247
|
+
VERDICT="verdict: needs-council (dependency-manifest: the head changes a dependency manifest)"
|
|
248
|
+
fi
|
|
249
|
+
fi
|
|
250
|
+
fi
|
|
251
|
+
fi
|
|
252
|
+
echo "$VERDICT"
|
|
253
|
+
[ "$VERDICT" = "verdict: routine" ]
|
|
481
254
|
```
|
|
482
255
|
|
|
483
|
-
|
|
484
|
-
unreadable diff is `needs-council` — the gate fails closed.
|
|
485
|
-
|
|
486
|
-
- **`routine`** → merge in § 9. No review step.
|
|
487
|
-
- **`needs-council`** → the AI council reviews the diff with a **neutral**
|
|
488
|
-
prompt (scope, diff, the triggers, two questions: *does any of the six
|
|
489
|
-
dangerous-action predicates of the authority-routing council record
|
|
490
|
-
(`agents/evidence/council/authority-routing-20261007.md` § 4) apply?* and *is
|
|
491
|
-
an owner review unnecessary?* — never an expected answer, per
|
|
492
|
-
`evaluator-independence`). A council may resolve doubt but cannot waive
|
|
493
|
-
danger: a seat finding that a predicate applies is a "dangerous" seat. Record the prompt and both
|
|
494
|
-
verdicts under `agents/evidence/`. **Both seats: not dangerous, owner review
|
|
495
|
-
unnecessary → merge.** Dangerous, split, degraded quorum, or council
|
|
496
|
-
unavailable → do not merge; record the PR `unauthorized` and hand it to the
|
|
497
|
-
owner with the seats' reasons.
|
|
498
|
-
|
|
499
|
-
A `needs-council` clearance only clears the merge. Deploy, release and every
|
|
500
|
-
other Hard-Floor action keep their own confirmation.
|
|
256
|
+
**Verdicts, gate mechanics** — read [`pr-merge-queue`](../../contexts/execution/pr-merge-queue.md#danger-gate-verdicts).
|
|
501
257
|
|
|
502
258
|
## 9. Merge, and the summary
|
|
503
259
|
|
|
260
|
+
A `needs-council` PR merges only after the check passes for the manifest head:
|
|
261
|
+
|
|
262
|
+
```bash
|
|
263
|
+
node_modules/.bin/tsx src/scripts/merge_clearance.ts --check <N> --head <manifest-head-sha>
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
It runs without `./scripts-run`, whose dispatcher is the head's code; the
|
|
267
|
+
script and its record module are on the classifier's trust chain, so a head
|
|
268
|
+
that changes either is `needs-owner` and never reaches this check. It exits 0 only when the record for the PR's **live** head exists, parses,
|
|
269
|
+
re-derives to `cleared`, and that live head is the manifest head. A push after
|
|
270
|
+
the clearance — this run's own included — moves the head and voids it: § 9a
|
|
271
|
+
runs again on the new head. A non-zero exit is never overridden by the run's
|
|
272
|
+
reading of the replies; the PR is held (below). A `routine` PR needs no check,
|
|
273
|
+
and a `needs-owner` PR never reaches one.
|
|
274
|
+
|
|
275
|
+
**Method choice, drain summary** — read [`pr-merge-queue`](../../contexts/execution/pr-merge-queue.md#merge-method-choice).
|
|
276
|
+
|
|
504
277
|
```bash
|
|
505
278
|
gh pr merge <N> --<detected-method> --delete-branch --match-head-commit <manifest-head-sha>
|
|
506
279
|
```
|
|
@@ -513,39 +286,27 @@ Detect the method once, at invocation, and reuse it for the whole queue:
|
|
|
513
286
|
gh repo view --json mergeCommitAllowed,squashMergeAllowed,rebaseMergeAllowed
|
|
514
287
|
```
|
|
515
288
|
|
|
516
|
-
|
|
517
|
-
the text: `mergeCommitAllowed` → `--merge`, `squashMergeAllowed` → `--squash`,
|
|
518
|
-
`rebaseMergeAllowed` → `--rebase`.
|
|
519
|
-
|
|
520
|
-
Exactly one allowed → that is the method. More than one → read the last twenty
|
|
521
|
-
merges on the base (`git log --first-parent origin/<base> -20 --format=%s`) and
|
|
522
|
-
take the shape they overwhelmingly share. **A mixed history with no clear
|
|
523
|
-
majority is not a tie to break — it is a stop:** report it and let the operator
|
|
524
|
-
name the method. Inventing one is what the next sentence forbids, and a wrong
|
|
525
|
-
merge shape is not revertible by this command (§ 8). Never force-merge past a
|
|
289
|
+
Never force-merge past a
|
|
526
290
|
failing required check, never admin-bypass.
|
|
527
291
|
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
is a set nobody can check a run against. `unauthorized` names what actually
|
|
547
|
-
happens in its place — § 7's pause and § 6's straggler batch, the two ways a PR
|
|
548
|
-
ends this run prepared and unmerged.
|
|
292
|
+
### The retro — once, after the last merge
|
|
293
|
+
|
|
294
|
+
After `/pr:merge <N>` merged, and after `/pr:merge all` reached queue empty or
|
|
295
|
+
terminal-only — **never between two merges of one queue** — enqueue every PR this
|
|
296
|
+
invocation merged as a retro unit, in one call:
|
|
297
|
+
|
|
298
|
+
```bash
|
|
299
|
+
./scripts-run src/scripts/retro enqueue-merged --pr <N> [--pr <M> …]
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
Depth row: `retro` in `src/config/step-depth-table.json`. The table is in
|
|
303
|
+
`shadow` mode, so the retro runs per merge as above; the row records that an
|
|
304
|
+
R0/R1 merge would batch it per drain. The § 9a danger gate has no row — it is
|
|
305
|
+
not ceremony and no class lowers it.
|
|
306
|
+
|
|
307
|
+
### Held for you — one block, at the end of the run
|
|
308
|
+
|
|
309
|
+
**Retro scope, Held for you** — read [`pr-merge-queue`](../../contexts/execution/pr-merge-queue.md#retro-scope).
|
|
549
310
|
|
|
550
311
|
## Rules
|
|
551
312
|
|