@event4u/agent-config 16.2.0 → 16.4.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 +1 -1
- package/CHANGELOG.md +337 -234
- package/README.md +15 -13
- package/agents/templates/.ai-council.yml.example +26 -8
- package/dist/agent-src/commands/analyze/inbox.md +11 -8
- package/dist/agent-src/commands/analyze/roadmap-repos.md +1 -1
- package/dist/agent-src/commands/bug/fix.md +17 -2
- package/dist/agent-src/commands/bug/investigate.md +1 -1
- package/dist/agent-src/commands/commit/in-chunks.md +40 -31
- package/dist/agent-src/commands/commit.md +72 -33
- package/dist/agent-src/commands/condense.md +2 -8
- package/dist/agent-src/commands/council/debate.md +11 -7
- package/dist/agent-src/commands/council/default.md +10 -9
- package/dist/agent-src/commands/council.md +1 -1
- package/dist/agent-src/commands/estimate-ticket.md +1 -1
- package/dist/agent-src/commands/feature/explore.md +3 -3
- package/dist/agent-src/commands/feature/plan.md +2 -2
- package/dist/agent-src/commands/feature/roadmap.md +1 -1
- package/dist/agent-src/commands/fix/ci.md +18 -4
- package/dist/agent-src/commands/fix/commit-messages.md +48 -23
- package/dist/agent-src/commands/fix/pr-comments.md +3 -6
- package/dist/agent-src/commands/implement-ticket.md +4 -4
- package/dist/agent-src/commands/jira-ticket.md +1 -1
- package/dist/agent-src/commands/memory/add.md +4 -16
- package/dist/agent-src/commands/memory/load.md +5 -6
- package/dist/agent-src/commands/memory/promote.md +3 -16
- package/dist/agent-src/commands/mission/upgrade.md +3 -2
- package/dist/agent-src/commands/optimize/agents-dir.md +2 -2
- package/dist/agent-src/commands/optimize/deep.md +4 -2
- package/dist/agent-src/commands/optimize/rtk.md +4 -26
- package/dist/agent-src/commands/pr/create/description-only.md +18 -15
- package/dist/agent-src/commands/pr/create.md +42 -34
- package/dist/agent-src/commands/pr/merge.md +136 -9
- package/dist/agent-src/commands/prepare-for-review.md +13 -11
- package/dist/agent-src/commands/project/analyze.md +7 -35
- package/dist/agent-src/commands/refine-ticket.md +1 -1
- package/dist/agent-src/commands/review/changes.md +14 -19
- package/dist/agent-src/commands/roadmap/create.md +1 -1
- package/dist/agent-src/commands/roadmap/materialize.md +1 -1
- package/dist/agent-src/commands/roadmap/next.md +10 -1
- package/dist/agent-src/commands/roadmap/process-full.md +56 -42
- package/dist/agent-src/commands/roadmap/resolve-blockers.md +411 -0
- package/dist/agent-src/commands/roadmap/triage-parked.md +325 -0
- package/dist/agent-src/commands/roadmap.md +18 -4
- package/dist/agent-src/commands/tests/create.md +17 -3
- package/dist/agent-src/commands/tests/execute.md +22 -5
- package/dist/agent-src/commands/worktree/create.md +7 -3
- package/dist/agent-src/commands/worktree/verify.md +2 -1
- package/dist/agent-src/contexts/authority/decision-revisit-gate-enforcement.md +43 -0
- package/dist/agent-src/contexts/communication/rules-auto/design-fidelity-enforcement.md +24 -0
- package/dist/agent-src/contexts/communication/rules-auto/think-before-action-mechanics.md +5 -3
- package/dist/agent-src/contexts/communication/rules-auto/token-efficiency-mechanics.md +7 -9
- package/dist/agent-src/contexts/contracts/command-suggestion-flow.md +8 -6
- package/dist/agent-src/contexts/contracts/frugality-charter.md +8 -5
- package/dist/agent-src/contexts/execution/auto-dispatch-classification.md +7 -7
- package/dist/agent-src/contexts/execution/auto-orchestration-activation.md +0 -1
- package/dist/agent-src/contexts/execution/evidence-discipline.md +2 -2
- package/dist/agent-src/contexts/execution/non-interactive-contract.md +5 -8
- package/dist/agent-src/contexts/execution/rdp-gate.md +4 -4
- package/dist/agent-src/contexts/execution/roadmap-execution-contract.md +9 -8
- package/dist/agent-src/contexts/execution/roadmap-process-loop.md +99 -54
- package/dist/agent-src/contexts/execution/session-canary-enforcement-history.md +67 -0
- package/dist/agent-src/contexts/execution/subagent-routing.md +8 -8
- package/dist/agent-src/contexts/execution/subagent-steering.md +6 -4
- package/dist/agent-src/contexts/execution/terminal-states.md +2 -2
- package/dist/agent-src/contexts/execution/toolchain-resolver.md +95 -7
- package/dist/agent-src/contexts/subagent-configuration.md +1 -1
- package/dist/agent-src/guidelines/agent-infra/active-remediation-mechanics.md +39 -0
- package/dist/agent-src/guidelines/agent-infra/context-hygiene-mechanics.md +1 -1
- package/dist/agent-src/guidelines/agent-infra/cross-source-consistency-mechanics.md +8 -10
- package/dist/agent-src/guidelines/agent-infra/frontier-reasoning-operating-profile.md +3 -2
- package/dist/agent-src/guidelines/agent-infra/layered-settings.md +13 -1
- package/dist/agent-src/guidelines/agent-infra/roadmap-progress-mechanics.md +1 -1
- package/dist/agent-src/guidelines/agent-infra/self-improvement-pipeline.md +10 -3
- package/dist/agent-src/guidelines/agent-infra/size-and-scope.md +36 -0
- package/dist/agent-src/guidelines/php/git.md +15 -2
- package/dist/agent-src/rules/active-remediation.md +1 -2
- package/dist/agent-src/rules/analysis-skill-routing.md +0 -1
- package/dist/agent-src/rules/architecture.md +0 -1
- package/dist/agent-src/rules/artifact-drafting-protocol.md +0 -1
- package/dist/agent-src/rules/artifact-engagement-recording.md +0 -1
- package/dist/agent-src/rules/augment-edit-discipline.md +0 -1
- package/dist/agent-src/rules/autonomous-execution.md +1 -1
- package/dist/agent-src/rules/brand-consistency.md +0 -1
- package/dist/agent-src/rules/brand-source-of-truth.md +0 -1
- package/dist/agent-src/rules/broken-access-control.md +1 -1
- package/dist/agent-src/rules/cli-output-handling.md +0 -1
- package/dist/agent-src/rules/code-comment-discipline.md +0 -1
- package/dist/agent-src/rules/code-provenance.md +0 -1
- package/dist/agent-src/rules/command-suggestion-policy.md +1 -1
- package/dist/agent-src/rules/commit-conventions.md +1 -2
- package/dist/agent-src/rules/communication-through-line.md +1 -2
- package/dist/agent-src/rules/content-quoting-floor.md +1 -2
- package/dist/agent-src/rules/context-hygiene.md +6 -6
- package/dist/agent-src/rules/copilot-routing.md +1 -2
- package/dist/agent-src/rules/council-availability.md +4 -4
- package/dist/agent-src/rules/cross-source-consistency.md +4 -6
- package/dist/agent-src/rules/decision-revisit-gate.md +17 -35
- package/dist/agent-src/rules/delegation-policy.md +2 -3
- package/dist/agent-src/rules/design-fidelity.md +12 -16
- package/dist/agent-src/rules/design-review-after-ui-write.md +3 -3
- package/dist/agent-src/rules/devcontainer-routing.md +1 -2
- package/dist/agent-src/rules/doc-screenshot-hygiene.md +1 -1
- package/dist/agent-src/rules/docker-commands.md +0 -1
- package/dist/agent-src/rules/domain-adoption-policy.md +0 -1
- package/dist/agent-src/rules/domain-safety-disclaimer.md +1 -1
- package/dist/agent-src/rules/domain-safety-pii.md +1 -1
- package/dist/agent-src/rules/domain-safety-retention.md +1 -1
- package/dist/agent-src/rules/downstream-changes.md +0 -1
- package/dist/agent-src/rules/engineering-safety-floor.md +1 -1
- package/dist/agent-src/rules/evaluator-independence.md +3 -2
- package/dist/agent-src/rules/external-code-graph-interop.md +0 -1
- package/dist/agent-src/rules/external-reference-deep-dive.md +0 -1
- package/dist/agent-src/rules/fast-path-marker-visibility.md +2 -2
- package/dist/agent-src/rules/finance-safety-floor.md +1 -1
- package/dist/agent-src/rules/fix-what-you-see.md +6 -32
- package/dist/agent-src/rules/framework-neutrality-in-generic-skills.md +0 -1
- package/dist/agent-src/rules/git-history-discipline.md +2 -2
- package/dist/agent-src/rules/guidelines.md +0 -1
- package/dist/agent-src/rules/history-discipline.md +0 -1
- package/dist/agent-src/rules/icon-consistency.md +0 -1
- package/dist/agent-src/rules/image-likeness-and-rights.md +1 -1
- package/dist/agent-src/rules/improve-before-implement.md +0 -1
- package/dist/agent-src/rules/invite-challenge.md +0 -1
- package/dist/agent-src/rules/laravel-routing.md +1 -2
- package/dist/agent-src/rules/laravel-translations.md +0 -1
- package/dist/agent-src/rules/legal-safety-floor.md +3 -3
- package/dist/agent-src/rules/lethal-trifecta-guard.md +1 -1
- package/dist/agent-src/rules/linked-projects-onboarding-gate.md +0 -1
- package/dist/agent-src/rules/low-impact-corpus-privacy-floor.md +1 -1
- package/dist/agent-src/rules/markdown-safe-codeblocks.md +0 -1
- package/dist/agent-src/rules/media-governance-routing.md +13 -17
- package/dist/agent-src/rules/media-sync-ground-truth.md +0 -1
- package/dist/agent-src/rules/minimal-safe-diff.md +0 -1
- package/dist/agent-src/rules/missing-skill-recovery.md +0 -1
- package/dist/agent-src/rules/missing-tool-handling.md +0 -1
- package/dist/agent-src/rules/model-recommendation.md +0 -1
- package/dist/agent-src/rules/neighbour-precedence.md +64 -0
- package/dist/agent-src/rules/no-attribution-footers.md +0 -1
- package/dist/agent-src/rules/no-decorative-emojis-in-git-surfaces.md +0 -1
- package/dist/agent-src/rules/no-pr-progress-comments.md +0 -1
- package/dist/agent-src/rules/no-roadmap-references.md +0 -1
- package/dist/agent-src/rules/notes-first-reasoning.md +0 -1
- package/dist/agent-src/rules/onboarding-gate.md +0 -1
- package/dist/agent-src/rules/output-discipline.md +0 -1
- package/dist/agent-src/rules/package-ci-checks.md +0 -1
- package/dist/agent-src/rules/persona-governance.md +4 -5
- package/dist/agent-src/rules/php-coding.md +0 -1
- package/dist/agent-src/rules/prefer-enums-over-literals.md +0 -1
- package/dist/agent-src/rules/preservation-guard.md +0 -1
- package/dist/agent-src/rules/provider-lifecycle-discipline.md +3 -4
- package/dist/agent-src/rules/question-not-instruction.md +1 -1
- package/dist/agent-src/rules/reviewer-awareness.md +0 -1
- package/dist/agent-src/rules/roadmap-ci-steps-policy.md +0 -1
- package/dist/agent-src/rules/roadmap-progress-sync.md +4 -7
- package/dist/agent-src/rules/role-mode-adherence.md +0 -1
- package/dist/agent-src/rules/rule-type-governance.md +0 -1
- package/dist/agent-src/rules/runtime-safety.md +1 -1
- package/dist/agent-src/rules/scale-discipline.md +0 -1
- package/dist/agent-src/rules/secret-vcs-guard.md +1 -1
- package/dist/agent-src/rules/security-sensitive-stop.md +3 -3
- package/dist/agent-src/rules/self-repair-loop.md +0 -1
- package/dist/agent-src/rules/senior-engineering-discipline.md +0 -1
- package/dist/agent-src/rules/session-canary.md +7 -62
- package/dist/agent-src/rules/settings-ask-protocol.md +6 -6
- package/dist/agent-src/rules/size-enforcement.md +0 -1
- package/dist/agent-src/rules/skill-improvement-trigger.md +2 -3
- package/dist/agent-src/rules/skill-quality.md +0 -1
- package/dist/agent-src/rules/slash-command-routing-policy.md +0 -1
- package/dist/agent-src/rules/source-confidentiality.md +1 -1
- package/dist/agent-src/rules/source-discovery-gate.md +0 -1
- package/dist/agent-src/rules/source-of-truth.md +0 -1
- package/dist/agent-src/rules/spreadsheet-source-quality.md +1 -2
- package/dist/agent-src/rules/strategy-safety-floor.md +1 -1
- package/dist/agent-src/rules/symfony-routing.md +1 -2
- package/dist/agent-src/rules/think-before-action.md +0 -1
- package/dist/agent-src/rules/token-budget-discipline.md +12 -46
- package/dist/agent-src/rules/token-efficiency.md +0 -1
- package/dist/agent-src/rules/token-optimizer-maintenance.md +0 -1
- package/dist/agent-src/rules/tool-safety.md +1 -1
- package/dist/agent-src/rules/ui-audit-gate.md +1 -2
- package/dist/agent-src/rules/untrusted-input-defense.md +1 -1
- package/dist/agent-src/rules/upstream-proposal.md +0 -1
- package/dist/agent-src/rules/user-interaction.md +0 -1
- package/dist/agent-src/rules/user-interrupt-priority.md +1 -1
- package/dist/agent-src/scripts/archive_completed_roadmaps.ts +115 -20
- package/dist/agent-src/scripts/deferral_carry.ts +339 -0
- package/dist/agent-src/scripts/gate_budget.ts +47 -23
- package/dist/agent-src/scripts/gate_execute.ts +12 -4
- package/dist/agent-src/scripts/update_roadmap_progress.ts +4 -1
- package/dist/agent-src/skills/ai-council/SKILL.md +7 -4
- package/dist/agent-src/skills/ai-council/references/cost-and-redaction.md +21 -11
- package/dist/agent-src/skills/ai-council/references/procedure.md +12 -6
- package/dist/agent-src/skills/analysis-autonomous-mode/SKILL.md +1 -1
- package/dist/agent-src/skills/api-design/data/manifest.json +2 -2
- package/dist/agent-src/skills/api-testing/SKILL.md +17 -0
- package/dist/agent-src/skills/bug-analyzer/SKILL.md +1 -1
- package/dist/agent-src/skills/code-intelligence/SKILL.md +14 -2
- package/dist/agent-src/skills/command-routing/SKILL.md +3 -4
- package/dist/agent-src/skills/conventional-commits-writing/SKILL.md +127 -139
- package/dist/agent-src/skills/corpus-grounding/ATTRIBUTION.md +39 -0
- package/dist/agent-src/skills/corpus-grounding/SKILL.md +8 -2
- package/dist/agent-src/skills/database/data/manifest.json +2 -2
- package/dist/agent-src/skills/database/data/query-tuning.csv +13 -13
- package/dist/agent-src/skills/design-system-capture/SKILL.md +0 -3
- package/dist/agent-src/skills/design-system-capture/references/import-procedure.md +1 -1
- package/dist/agent-src/skills/estimate-ticket/SKILL.md +1 -1
- package/dist/agent-src/skills/existing-ui-audit/SKILL.md +2 -2
- package/dist/agent-src/skills/fe-design/SKILL.md +1 -1
- package/dist/agent-src/skills/feature-planning/SKILL.md +1 -1
- package/dist/agent-src/skills/git-workflow/SKILL.md +44 -44
- package/dist/agent-src/skills/git-workflow/references/branch-update.md +312 -0
- package/dist/agent-src/skills/git-workflow/references/commit-subject.md +205 -0
- package/dist/agent-src/skills/iconography/SKILL.md +1 -1
- package/dist/agent-src/skills/jira-integration/SKILL.md +3 -3
- package/dist/agent-src/skills/js-library-packaging/SKILL.md +2 -2
- package/dist/agent-src/skills/merge-conflicts/SKILL.md +10 -4
- package/dist/agent-src/skills/monorepo-workspace/SKILL.md +1 -1
- package/dist/agent-src/skills/po-discovery/SKILL.md +1 -1
- package/dist/agent-src/skills/quality-tools/SKILL.md +11 -1
- package/dist/agent-src/skills/quality-tools/references/go-tools.md +76 -0
- package/dist/agent-src/skills/quality-tools/references/python-tools.md +104 -0
- package/dist/agent-src/skills/refine-ticket/SKILL.md +4 -4
- package/dist/agent-src/skills/review-routing/SKILL.md +2 -2
- package/dist/agent-src/skills/roadmap-writing/SKILL.md +2 -2
- package/dist/agent-src/skills/skill-improvement-pipeline/SKILL.md +5 -3
- package/dist/agent-src/skills/source-discovery/SKILL.md +1 -1
- package/dist/agent-src/skills/storybook-workshop/SKILL.md +3 -3
- package/dist/agent-src/skills/tailwind-engineer/SKILL.md +4 -2
- package/dist/agent-src/skills/test-case-discovery/SKILL.md +7 -0
- package/dist/agent-src/skills/test-driven-development/SKILL.md +17 -0
- package/dist/agent-src/skills/test-performance/SKILL.md +19 -1
- package/dist/agent-src/skills/testing-anti-patterns/SKILL.md +1 -1
- package/dist/agent-src/skills/ui-component-architect/SKILL.md +2 -2
- package/dist/agent-src/skills/using-git-worktrees/SKILL.md +1 -1
- package/dist/agent-src/skills/verify-repair-loop/SKILL.md +2 -2
- package/dist/agent-src/templates/AGENTS.md +1 -1
- package/dist/agent-src/templates/agent-settings.md +46 -129
- package/dist/agent-src/templates/agents/agent-project-settings.example.yml +3 -3
- package/dist/agent-src/templates/command.md +2 -2
- package/dist/agent-src/templates/roadmaps.md +6 -1
- package/dist/agent-src/templates/scripts/work_engine/_lib/agent_settings.ts +0 -6
- package/dist/agent-src/templates/scripts/work_engine/directives/backend/_self_fix.ts +11 -7
- package/dist/agent-src/templates/scripts/work_engine/directives/ui/apply.ts +48 -6
- package/dist/agent-src/templates/scripts/work_engine/hooks/builtin/decision_trace.ts +3 -2
- package/dist/agent-src/templates/scripts/work_engine/hooks/builtin/memory_visibility.ts +2 -1
- package/dist/agent-src/templates/scripts/work_engine/hooks/settings.ts +0 -6
- package/dist/agent-src/templates/scripts/work_engine/scoring/decision_engine.ts +9 -12
- package/dist/agent-src/templates/scripts/work_engine/scoring/memory_visibility.ts +2 -1
- package/dist/agent-src/templates/scripts/work_engine/stack/runner.ts +774 -109
- package/dist/agent-src/templates/skill.md +1 -1
- package/dist/cli/registry.js +2 -1
- package/dist/cli-delegate/archive_completed_roadmaps.js +92 -12
- package/dist/cli-delegate/check_update_banner.js +207 -120
- package/dist/cli-delegate/chunk-523HCFYO.js +90 -0
- package/dist/cli-delegate/{chunk-FP36SWJD.js → chunk-5GPULQBE.js} +2797 -338
- package/dist/cli-delegate/{chunk-IGD6ERX6.js → chunk-6SRJTYJS.js} +42 -176
- package/dist/cli-delegate/chunk-6V5FMA3P.js +186 -0
- package/dist/cli-delegate/{chunk-M2DPGFZ4.js → chunk-6V6TA25H.js} +22 -152
- package/dist/cli-delegate/chunk-6YQC2HLF.js +415 -0
- package/dist/cli-delegate/{chunk-E4XIZDIB.js → chunk-7HKRE54K.js} +1 -64
- package/dist/cli-delegate/chunk-7IQE3D5S.js +191 -0
- package/dist/cli-delegate/{chunk-YJ72UIAK.js → chunk-AED2VQGM.js} +1245 -249
- package/dist/cli-delegate/{chunk-7HQ52DHU.js → chunk-AL3RZ22D.js} +1 -1
- package/dist/cli-delegate/chunk-DEIV7XP7.js +108 -0
- package/dist/cli-delegate/{chunk-DBH4AHDK.js → chunk-ED7KCMLB.js} +9 -11
- package/dist/cli-delegate/chunk-F3QDG2GT.js +2569 -0
- package/dist/cli-delegate/{chunk-6KFEC3G7.js → chunk-G5VVIZRC.js} +3 -3
- package/dist/cli-delegate/{chunk-FC75PGJE.js → chunk-H76PHZBI.js} +149 -61
- package/dist/cli-delegate/chunk-IAYTIIQW.js +67 -0
- package/dist/cli-delegate/chunk-JQOM7TTM.js +1201 -0
- package/dist/cli-delegate/chunk-KB5FZ655.js +208 -0
- package/dist/cli-delegate/{chunk-7RQP4UDH.js → chunk-KR6EM23A.js} +235 -1455
- package/dist/cli-delegate/{chunk-LTYVIY76.js → chunk-KXXWJTDO.js} +6 -11
- package/dist/cli-delegate/{chunk-T7L2QK3K.js → chunk-LQOCRFWT.js} +1 -1
- package/dist/cli-delegate/{chunk-6KM6ORRY.js → chunk-MDPPKQCQ.js} +58 -9
- package/dist/cli-delegate/{chunk-4XFP2Y3E.js → chunk-MSUL5NYP.js} +5 -5
- package/dist/cli-delegate/chunk-OAFSJBHH.js +272 -0
- package/dist/cli-delegate/{chunk-4E2W63DA.js → chunk-OKJUIAPS.js} +62 -1
- package/dist/cli-delegate/{chunk-QAJS5YWY.js → chunk-PHD7OOLE.js} +2 -1
- package/dist/cli-delegate/{chunk-P6ZHP5W2.js → chunk-PWX7CKMD.js} +4 -4
- package/dist/cli-delegate/{chunk-NDJLNC6Q.js → chunk-T6BP34WI.js} +1 -0
- package/dist/cli-delegate/{chunk-7XGBX6ZH.js → chunk-T7XSJSUQ.js} +1144 -589
- package/dist/cli-delegate/chunk-ULQRUR23.js +208 -0
- package/dist/cli-delegate/chunk-WQWXGIWB.js +1779 -0
- package/dist/cli-delegate/{chunk-RGNIWTEA.js → chunk-XQTPXKFA.js} +1 -1
- package/dist/cli-delegate/{chunk-NUHLI2RX.js → chunk-YCU3TIXH.js} +2 -0
- package/dist/cli-delegate/chunk-ZBZV2G5R.js +210 -0
- package/dist/cli-delegate/{chunk-WGXTVKCQ.js → chunk-ZUZKZYCN.js} +5 -3
- package/dist/cli-delegate/cmd_analyze_session.js +223 -43
- package/dist/cli-delegate/cmd_brand_status.js +3 -2
- package/dist/cli-delegate/cmd_conformance.js +1252 -249
- package/dist/cli-delegate/cmd_converge.js +3 -3
- package/dist/cli-delegate/cmd_doctor.js +19 -9
- package/dist/cli-delegate/cmd_doctor_neighbours.js +30 -0
- package/dist/cli-delegate/cmd_explain.js +45 -21
- package/dist/cli-delegate/cmd_export.js +13 -10
- package/dist/cli-delegate/cmd_fleet.js +3 -3
- package/dist/cli-delegate/cmd_git_convention.js +1851 -0
- package/dist/cli-delegate/cmd_handoff.js +44 -22
- package/dist/cli-delegate/cmd_mcp_available.js +3 -2
- package/dist/cli-delegate/cmd_memory_get.js +3 -1
- package/dist/cli-delegate/cmd_migrate.js +3 -3
- package/dist/cli-delegate/cmd_packs_active.js +5 -4
- package/dist/cli-delegate/cmd_preflight.js +6 -6
- package/dist/cli-delegate/cmd_prune.js +14 -11
- package/dist/cli-delegate/cmd_refresh.js +2 -1
- package/dist/cli-delegate/cmd_route_audit.js +10 -8
- package/dist/cli-delegate/cmd_route_explain.js +4 -4
- package/dist/cli-delegate/cmd_session_recycle.js +10 -7
- package/dist/cli-delegate/cmd_settings_check.js +54 -7
- package/dist/cli-delegate/cmd_settings_get.js +18 -8
- package/dist/cli-delegate/cmd_settings_migrate.js +13 -10
- package/dist/cli-delegate/cmd_settings_set.js +4 -4
- package/dist/cli-delegate/cmd_sync.js +14 -11
- package/dist/cli-delegate/cmd_uninstall.js +15 -12
- package/dist/cli-delegate/cmd_update.js +7 -7
- package/dist/cli-delegate/cmd_upgrade.js +9 -8
- package/dist/cli-delegate/cmd_validate.js +15 -12
- package/dist/cli-delegate/cmd_versions.js +5 -5
- package/dist/cli-delegate/deferral_carry.js +16 -0
- package/dist/cli-delegate/gate_budget.js +1 -1
- package/dist/cli-delegate/gate_execute.js +3 -3
- package/dist/cli-delegate/roadmap_gates.js +6 -6
- package/dist/cli-delegate/update_roadmap_progress.js +1 -1
- package/dist/discovery/deprecation-report.md +1 -1
- package/dist/discovery/discovery-manifest.json +232 -141
- package/dist/discovery/discovery-manifest.json.sha256 +1 -1
- package/dist/discovery/discovery-manifest.summary.md +3 -3
- package/dist/discovery/dormancy-report.md +1 -1
- package/dist/discovery/orphan-report.md +1 -1
- package/dist/discovery/packs.json +26 -9
- package/dist/discovery/trust-report.md +3 -3
- package/dist/discovery/workspaces.json +7 -4
- package/dist/hooks/dispatch.js +5655 -6623
- package/dist/hooks/dispatch.sha256 +1 -1
- package/dist/install/claudePathsPlan.js +47 -6
- package/dist/install/claudeRuleRewrite.js +7 -0
- package/dist/install/emit_host_rules_cli.js +39 -36
- package/dist/install/globalRuleScope.js +87 -0
- package/dist/install/host_rule_ownership.js +160 -0
- package/dist/install/install.mjs +2336 -1249
- package/dist/install/installThinLayer.js +289 -0
- package/dist/install/installedRuleLinks.js +262 -0
- package/dist/install/wizard-plan.js +24 -0
- package/dist/mcp/awesome-mcp-servers.row.md +1 -1
- package/dist/mcp/mcp-cloudflare-catalogue.json +2 -2
- package/dist/mcp/registry-manifest.json +5 -5
- package/dist/mcp/server.json +2 -2
- package/dist/mcp/server.mjs +36504 -30986
- package/dist/router.json +1 -1
- package/dist/scripts/_lib/agent_settings.js +26 -120
- package/dist/scripts/_lib/claude_settings_hooks.js +10 -8
- package/dist/scripts/_lib/compile_time_toggles.js +12 -21
- package/dist/scripts/_lib/git_convention.js +232 -0
- package/dist/scripts/_lib/global_deploy_inventory.js +730 -0
- package/dist/scripts/_lib/installed_layer.js +704 -0
- package/dist/scripts/_lib/lean_projection_mode.js +218 -15
- package/dist/scripts/_lib/package_root.js +68 -0
- package/dist/scripts/_lib/rule_consequence_class.js +45 -0
- package/dist/scripts/_lib/rule_injection.js +67 -10
- package/dist/scripts/_lib/rule_law_section.js +122 -0
- package/dist/scripts/_lib/settings_removed_keys.js +168 -0
- package/dist/scripts/_lib/thin_rules.js +535 -0
- package/dist/scripts/_lib/windsurf_render.js +60 -0
- package/dist/scripts/condense.js +14 -26
- package/dist/scripts/project_thin_rules.js +14 -294
- package/dist/server/app.js +2 -1
- package/dist/server/gitKeysGate.js +105 -0
- package/dist/server/routes/settings.js +67 -8
- package/dist/server/routes/wizard.js +4 -0
- package/dist/server/schemas/settings.js +29 -81
- package/dist/shared/skillRanking.js +103 -16
- package/dist/ui/assets/{index-Cwq4d0hX.js → index-C3djEJah.js} +2 -2
- package/dist/ui/index.html +1 -1
- package/docs/MIGRATION.md +72 -1
- package/docs/contracts/settings-classes.md +39 -67
- package/docs/guidelines/agent-infra/active-remediation-mechanics.md +39 -0
- package/docs/guidelines/agent-infra/context-hygiene-mechanics.md +1 -1
- package/docs/guidelines/agent-infra/cross-source-consistency-mechanics.md +8 -10
- package/docs/guidelines/agent-infra/frontier-reasoning-operating-profile.md +3 -2
- package/docs/guidelines/agent-infra/layered-settings.md +13 -1
- package/docs/guidelines/agent-infra/roadmap-progress-mechanics.md +1 -1
- package/docs/guidelines/agent-infra/self-improvement-pipeline.md +10 -3
- package/docs/guidelines/agent-infra/size-and-scope.md +36 -0
- package/docs/guidelines/php/git.md +15 -2
- package/package.json +1 -1
- package/src/agent-src/scripts/archive_completed_roadmaps.ts +115 -20
- package/src/agent-src/scripts/deferral_carry.ts +339 -0
- package/src/agent-src/scripts/gate_budget.ts +47 -23
- package/src/agent-src/scripts/gate_execute.ts +12 -4
- package/src/agent-src/scripts/update_roadmap_progress.ts +4 -1
- package/src/agent-src/templates/AGENTS.md +1 -1
- package/src/agent-src/templates/scripts/work_engine/_lib/agent_settings.ts +0 -6
- package/src/agent-src/templates/scripts/work_engine/directives/backend/_self_fix.ts +11 -7
- package/src/agent-src/templates/scripts/work_engine/directives/ui/apply.ts +48 -6
- package/src/agent-src/templates/scripts/work_engine/hooks/builtin/decision_trace.ts +3 -2
- package/src/agent-src/templates/scripts/work_engine/hooks/builtin/memory_visibility.ts +2 -1
- package/src/agent-src/templates/scripts/work_engine/hooks/settings.ts +0 -6
- package/src/agent-src/templates/scripts/work_engine/scoring/decision_engine.ts +9 -12
- package/src/agent-src/templates/scripts/work_engine/scoring/memory_visibility.ts +2 -1
- package/src/agent-src/templates/scripts/work_engine/stack/runner.ts +774 -109
- package/src/config/agent-settings.template.yml +141 -334
- package/src/config/agents-paths.yml +16 -0
- package/src/config/assurance-capability-registry.json +7 -3
- package/src/config/ci-local-parity.yml +3 -0
- package/src/config/continuity-surface.json +10 -3
- package/src/config/discovery/packs.yml +17 -1
- package/src/config/evaluator-budgets.json +23 -10
- package/src/config/gate-coverage.yml +138 -3
- package/src/config/gate-violation-baselines.json +64 -16
- package/src/config/gitignore-block.txt +19 -0
- package/src/config/hook-bundle-budget.json +25 -0
- package/src/config/hook-token-budget.json +6 -1
- package/src/config/host-instruction-limits.json +33 -0
- package/src/config/release-gate-locality.yml +2 -1
- package/src/config/routing-coverage-seed.json +67 -4
- package/src/config/rule-activation-census.json +7 -3
- package/src/config/rule-consequence-class.json +161 -0
- package/src/config/rule-law-ceilings.json +105 -0
- package/src/config/rule-obligations.json +833 -0
- package/src/install/claudePathsPlan.ts +46 -4
- package/src/install/claudeRuleRewrite.ts +10 -1
- package/src/install/emit_host_rules_cli.ts +43 -34
- package/src/install/globalRuleScope.ts +109 -0
- package/src/install/host_rule_ownership.ts +170 -0
- package/src/install/installThinLayer.ts +378 -0
- package/src/install/installedRuleLinks.ts +308 -0
- package/src/install/wizard-plan.ts +24 -0
- package/src/scripts/_cli/cmd_analyze_session.ts +9 -15
- package/src/scripts/_cli/cmd_conformance.ts +13 -2
- package/src/scripts/_cli/cmd_doctor.ts +33 -81
- package/src/scripts/_cli/cmd_doctor_neighbours.ts +426 -0
- package/src/scripts/_cli/cmd_explain.ts +72 -14
- package/src/scripts/_cli/cmd_git_convention.ts +637 -0
- package/src/scripts/_cli/cmd_settings_check.ts +66 -8
- package/src/scripts/_cli/cmd_settings_get.ts +18 -3
- package/src/scripts/_cli/doctor_execution.ts +72 -1
- package/src/scripts/_dispatch.bash +53 -4
- package/src/scripts/_lib/agent_settings.ts +26 -124
- package/src/scripts/_lib/blocked_by_marker.ts +1 -1
- package/src/scripts/_lib/claude_settings_hooks.ts +10 -8
- package/src/scripts/_lib/compile_time_toggles.ts +12 -21
- package/src/scripts/_lib/dispatch_import_closure.ts +163 -0
- package/src/scripts/_lib/estate_offsets.ts +241 -0
- package/src/scripts/_lib/exemption_shape.ts +143 -0
- package/src/scripts/_lib/fnv.ts +23 -0
- package/src/scripts/_lib/foreign_scan.ts +106 -0
- package/src/scripts/_lib/git_base_ref.ts +92 -0
- package/src/scripts/_lib/git_convention.ts +291 -0
- package/src/scripts/_lib/git_convention_carrier.ts +389 -0
- package/src/scripts/_lib/git_convention_grammar.ts +246 -0
- package/src/scripts/_lib/git_convention_measure.ts +344 -0
- package/src/scripts/_lib/gitignore_block.ts +314 -0
- package/src/scripts/_lib/global_deploy_inventory.ts +106 -0
- package/src/scripts/_lib/graph_feeder_record.ts +437 -0
- package/src/scripts/_lib/hook_settings.ts +73 -0
- package/src/scripts/_lib/host_capability.ts +40 -19
- package/src/scripts/_lib/host_hook_merge.ts +165 -0
- package/src/scripts/_lib/installed_layer.ts +963 -0
- package/src/scripts/_lib/json_merge.ts +82 -0
- package/src/scripts/_lib/json_pointers.ts +93 -11
- package/src/scripts/_lib/knowledge_global.ts +14 -1
- package/src/scripts/_lib/lean_projection_mode.ts +275 -15
- package/src/scripts/_lib/machine_wake.ts +16 -3
- package/src/scripts/_lib/module_reach.ts +456 -0
- package/src/scripts/_lib/neighbour_census.ts +760 -0
- package/src/scripts/_lib/neighbour_contradictions.ts +236 -0
- package/src/scripts/_lib/neighbour_scan.ts +122 -0
- package/src/scripts/_lib/neighbour_tool_use.ts +187 -0
- package/src/scripts/_lib/prompt_shape.ts +46 -0
- package/src/scripts/_lib/ratification_artifact.ts +220 -1
- package/src/scripts/_lib/ratification_subject.ts +92 -0
- package/src/scripts/_lib/release_findings_ingest.ts +15 -7
- package/src/scripts/_lib/release_highlights.ts +5 -0
- package/src/scripts/_lib/release_migration_gate.ts +19 -3
- package/src/scripts/_lib/reserved_name_sweep.ts +73 -0
- package/src/scripts/_lib/review_coverage.ts +134 -0
- package/src/scripts/_lib/rule_consequence_class.ts +71 -0
- package/src/scripts/_lib/rule_injection.ts +130 -10
- package/src/scripts/_lib/rule_law_section.ts +147 -0
- package/src/scripts/_lib/rule_layer_overlap.ts +58 -0
- package/src/scripts/_lib/rule_obligations.ts +205 -0
- package/src/scripts/_lib/self_repair.ts +1 -1
- package/src/scripts/_lib/settings_removed_keys.ts +173 -0
- package/src/scripts/_lib/skill_origin.ts +254 -0
- package/src/scripts/_lib/structured_ask.ts +64 -21
- package/src/scripts/_lib/test_red_state.ts +5 -0
- package/src/scripts/_lib/thin_rules.ts +620 -0
- package/src/scripts/_lib/touched_file_quality.ts +570 -0
- package/src/scripts/_lib/turn_end_refusals.ts +77 -2
- package/src/scripts/_lib/windsurf_render.ts +63 -0
- package/src/scripts/_lib/worker_budget.ts +1 -1
- package/src/scripts/adr/regenerate_index.ts +16 -1
- package/src/scripts/ai_council/cli_call_budget.ts +13 -5
- package/src/scripts/ai_council/clients.ts +26 -57
- package/src/scripts/ai_council/config.ts +8 -8
- package/src/scripts/ai_council/modification_review.ts +100 -0
- package/src/scripts/ai_council/modification_review_questions.ts +90 -0
- package/src/scripts/ai_council/orchestrator.ts +5 -5
- package/src/scripts/ai_council/spend_gate.ts +18 -7
- package/src/scripts/ai_council/vendor_defaults.ts +45 -0
- package/src/scripts/ai_team/config.ts +11 -16
- package/src/scripts/audit_skill_overlap.ts +261 -0
- package/src/scripts/audit_user_type_axis.ts +20 -8
- package/src/scripts/before_complete_hook.ts +243 -12
- package/src/scripts/bench_ab_clone.ts +1 -2
- package/src/scripts/bench_concern_spawn_path.ts +129 -0
- package/src/scripts/bench_graph_feeder_latency.ts +584 -0
- package/src/scripts/bench_touched_file_quality.ts +238 -0
- package/src/scripts/check_agent_artifact_location.ts +36 -0
- package/src/scripts/check_branch_freshness.ts +147 -24
- package/src/scripts/check_enforcement_coverage.ts +130 -0
- package/src/scripts/check_enforcement_matrix.ts +377 -20
- package/src/scripts/check_estate_count.ts +130 -153
- package/src/scripts/check_evaluator_budgets.ts +4 -0
- package/src/scripts/check_finding_dispositions.ts +196 -21
- package/src/scripts/check_gate_coverage.ts +4 -3
- package/src/scripts/check_gate_reachability.ts +48 -1
- package/src/scripts/check_generator_sync.ts +48 -0
- package/src/scripts/check_hook_bundle_composition.ts +477 -0
- package/src/scripts/check_kernel_edit_ratified.ts +132 -14
- package/src/scripts/check_memory.ts +7 -1
- package/src/scripts/check_pack_size.ts +1 -1
- package/src/scripts/check_release_highlights.ts +10 -0
- package/src/scripts/check_release_manifest_content.ts +189 -0
- package/src/scripts/check_release_pr_shape.ts +38 -15
- package/src/scripts/check_standing_rule_delivery.ts +129 -13
- package/src/scripts/check_suppression_hygiene.ts +2 -5
- package/src/scripts/check_verify_expectation_delta.ts +521 -0
- package/src/scripts/ci_settle.ts +42 -5
- package/src/scripts/classify_merge_risk.ts +320 -0
- package/src/scripts/closure_scan.ts +91 -1
- package/src/scripts/code_graph/detect.ts +127 -7
- package/src/scripts/code_graph/foreign.ts +194 -0
- package/src/scripts/code_graph/query.ts +217 -4
- package/src/scripts/code_graph/types.ts +26 -2
- package/src/scripts/code_graph/validate.ts +3 -1
- package/src/scripts/code_graph/verbs.ts +103 -0
- package/src/scripts/command_suggester/settings.ts +8 -108
- package/src/scripts/command_suggester/types.ts +4 -5
- package/src/scripts/compile_hook_manifest.ts +33 -1
- package/src/scripts/condense.ts +14 -27
- package/src/scripts/consumer_matrix.ts +102 -0
- package/src/scripts/context_hygiene_hook.ts +13 -23
- package/src/scripts/cost/preflight.mjs +12 -1
- package/src/scripts/council_cli.ts +7 -7
- package/src/scripts/dispatch_r2_reviewer.ts +24 -11
- package/src/scripts/estate_exemption_shape.ts +202 -0
- package/src/scripts/explain_run.ts +8 -13
- package/src/scripts/generate_git_convention_grammar.ts +127 -0
- package/src/scripts/generate_host_cost_table.ts +21 -4
- package/src/scripts/handoff_context_hook.ts +86 -37
- package/src/scripts/hook_manifest.json +1 -1
- package/src/scripts/hook_manifest.yaml +175 -15
- package/src/scripts/hooks/block_config_weakening.ts +115 -7
- package/src/scripts/hooks/block_plumbing_writes.ts +37 -5
- package/src/scripts/hooks/code_graph_context_hook.ts +252 -23
- package/src/scripts/hooks/concern_failure_policy.ts +280 -0
- package/src/scripts/hooks/concern_registry.ts +2 -0
- package/src/scripts/hooks/delegation_nudge_hook.ts +2 -3
- package/src/scripts/hooks/dispatch_hook.ts +52 -52
- package/src/scripts/hooks/evidence_independence.ts +12 -4
- package/src/scripts/hooks/exit_codes.ts +2 -1
- package/src/scripts/hooks/host_lowering.json +1 -1
- package/src/scripts/hooks/host_lowering.ts +19 -1
- package/src/scripts/hooks/mcp_usage_observation_hook.ts +121 -0
- package/src/scripts/hooks/one_question_per_ask_hook.ts +41 -25
- package/src/scripts/hooks/payload_stub.ts +10 -1
- package/src/scripts/hooks/push_settle_hook.ts +4 -3
- package/src/scripts/hooks/rule_inject_hook.ts +795 -60
- package/src/scripts/hooks/state_io.ts +8 -4
- package/src/scripts/hooks/table_fingerprint.ts +21 -0
- package/src/scripts/hooks/telemetry_usage_hook.ts +24 -7
- package/src/scripts/hooks/turn_end_gate_hook.ts +85 -0
- package/src/scripts/hooks_status.ts +112 -0
- package/src/scripts/injection_scan_hook.ts +7 -0
- package/src/scripts/install-hooks.sh +42 -14
- package/src/scripts/install.ts +78 -215
- package/src/scripts/installed_layer_report.ts +103 -0
- package/src/scripts/language_mirror_hook.ts +15 -6
- package/src/scripts/learning_sidecar.ts +119 -8
- package/src/scripts/lint_blocker_citations.ts +198 -0
- package/src/scripts/lint_evidence_artifacts.ts +9 -0
- package/src/scripts/lint_hook_concern_budget.ts +10 -21
- package/src/scripts/lint_hook_manifest.ts +53 -0
- package/src/scripts/lint_major_migration_sections.ts +156 -26
- package/src/scripts/lint_pack_boundaries.ts +465 -29
- package/src/scripts/lint_roadmap_blockers.ts +282 -29
- package/src/scripts/lint_roadmap_complexity.ts +4 -2
- package/src/scripts/lint_rule_law_section.ts +647 -0
- package/src/scripts/lint_rule_skill_pack_reach.ts +17 -0
- package/src/scripts/lint_settings_classes.ts +1 -1
- package/src/scripts/lint_ticked_unmet_criteria.ts +165 -0
- package/src/scripts/lint_workflow_security.ts +173 -6
- package/src/scripts/mcp_server/consumer_tool_catalog.json +53 -0
- package/src/scripts/mcp_server/graph_tools.ts +72 -3
- package/src/scripts/measure_routing_signal.ts +54 -16
- package/src/scripts/measure_skill_ranker_baseline.ts +221 -8
- package/src/scripts/memory_learn_hook.ts +91 -6
- package/src/scripts/model_rule_injection.ts +55 -8
- package/src/scripts/onboarding_gate_hook.ts +7 -6
- package/src/scripts/print_required_checks.ts +15 -3
- package/src/scripts/probe_host_compliance.ts +33 -5
- package/src/scripts/probe_turnaround.ts +183 -3
- package/src/scripts/project_thin_rules.ts +34 -327
- package/src/scripts/ratification_header.ts +77 -0
- package/src/scripts/refusal_envelope.ts +138 -0
- package/src/scripts/release_publication.ts +29 -3
- package/src/scripts/report_dispatch_import_closure.ts +76 -0
- package/src/scripts/report_evidence_temperature.ts +657 -0
- package/src/scripts/report_installed_rule_links.ts +274 -0
- package/src/scripts/report_label_agreement.ts +233 -0
- package/src/scripts/report_module_reach.ts +212 -0
- package/src/scripts/report_obligation_mechanism.ts +228 -0
- package/src/scripts/report_parked_blockers.ts +222 -0
- package/src/scripts/report_required_checks_drift.ts +196 -0
- package/src/scripts/report_single_token_triggers.ts +277 -0
- package/src/scripts/report_skill_ranker_confusion.ts +543 -0
- package/src/scripts/report_standing_payload_by_host.ts +188 -15
- package/src/scripts/report_verification_record_coverage.ts +306 -0
- package/src/scripts/routing_doctor.ts +2 -2
- package/src/scripts/rule_activation_census.ts +5 -2
- package/src/scripts/rule_trigger_eval.ts +9 -9
- package/src/scripts/schemas/agent-settings.schema.json +17 -31
- package/src/scripts/schemas/command.schema.json +1 -1
- package/src/scripts/schemas/review-findings.schema.json +3 -2
- package/src/scripts/schemas/rule.schema.json +5 -0
- package/src/scripts/schemas/skill.schema.json +1 -1
- package/src/scripts/self_review_gate.ts +101 -9
- package/src/scripts/skill_tools/score_skill_relevance.ts +314 -40
- package/src/scripts/sweep_skill_ranker_signals.ts +129 -0
- package/src/scripts/sync_gitignore.ts +29 -235
- package/src/scripts/sync_pr_branch.ts +403 -132
- package/src/scripts/trigger_eval_grandfather.json +0 -21
- package/src/server/schemas/settings.ts +42 -176
- package/src/shared/skillRanking.ts +169 -14
- package/dist/cli-delegate/chunk-5R7HOLAF.js +0 -99
- package/dist/cli-delegate/chunk-JNMVLWLR.js +0 -4457
- package/dist/cli-delegate/chunk-YDPILCOL.js +0 -152
- package/src/scripts/_lib/config_chain.ts +0 -477
- package/src/scripts/_lib/conformance_report.ts +0 -403
- package/src/scripts/_lib/eval_discrimination.ts +0 -95
- package/src/scripts/_lib/evaluator_promotion.ts +0 -225
- package/src/scripts/_lib/file_slicer.ts +0 -117
- package/src/scripts/_lib/legacy_boundary_map.ts +0 -228
- package/src/scripts/_lib/minimality_tiebreak.ts +0 -168
- package/src/scripts/_lib/overbuild_lens_contract.ts +0 -196
- package/src/scripts/_lib/role_split.ts +0 -338
|
@@ -7,7 +7,7 @@ cluster: roadmap
|
|
|
7
7
|
sub: process-full
|
|
8
8
|
skills: [agent-docs-writing, ai-council, roadmap-management]
|
|
9
9
|
description: Autonomously process every open step across every phase of a roadmap until the file is fully closed. Largest execution scope of the /roadmap cluster — runs continuously across phase boundaries.
|
|
10
|
-
argument-hint: "[roadmap] [--all] [--worktree]"
|
|
10
|
+
argument-hint: "[roadmap] [--all] [--merge] [--worktree]"
|
|
11
11
|
suggestion:
|
|
12
12
|
eligible: false
|
|
13
13
|
rationale: "Cluster sub-command — reached via its cluster head's routing or its explicit /cluster:sub name; not independently suggested (surface-consolidation)."
|
|
@@ -145,13 +145,13 @@ the loop continues to the next one.
|
|
|
145
145
|
### Delivery — every run, flag or not
|
|
146
146
|
|
|
147
147
|
On outcome `complete`, open the PR as today, then run
|
|
148
|
-
|
|
148
|
+
`/pr:merge <N> --no-merge` on it: sync the
|
|
149
149
|
base in, resolve conflicts by that command's four enumerated classes, drive the
|
|
150
150
|
required checks green on the pushed head. **This is unconditional** — a bare
|
|
151
151
|
`/roadmap:process-full` delivers a mergeable PR, not merely an open one, and
|
|
152
|
-
waiting on that remote CI is part of the run per the Iron Law below.
|
|
153
|
-
|
|
154
|
-
|
|
152
|
+
waiting on that remote CI is part of the run per the Iron Law below. With an
|
|
153
|
+
owner auto-merge instruction the call is `/pr:merge <N> --merge` instead, which
|
|
154
|
+
merges through that command's danger gate — § Merging below.
|
|
155
155
|
|
|
156
156
|
### The six required layers, in order, each with the command that runs it
|
|
157
157
|
|
|
@@ -193,39 +193,31 @@ condition to test rather than assert: a PR whose required context is skipped has
|
|
|
193
193
|
a green rollup and an unenforced gate, so a delivery-ready test that reads only
|
|
194
194
|
the rollup passes exactly when it should fail.
|
|
195
195
|
|
|
196
|
-
###
|
|
196
|
+
### `--merge` — merging, on the owner's word only (ADR-282)
|
|
197
197
|
|
|
198
198
|
```
|
|
199
|
-
THIS COMMAND
|
|
200
|
-
THE
|
|
201
|
-
|
|
202
|
-
|
|
199
|
+
THIS COMMAND MERGES ONLY ON AN EXPLICIT OWNER AUTO-MERGE INSTRUCTION:
|
|
200
|
+
`--merge`, OR THE OWNER'S OWN WORDS IN THE SESSION THAT RUNS THE WORK.
|
|
201
|
+
WITHOUT ONE, THE RUN ENDS AT MERGEABLE-AND-OPEN, AND SAYS SO.
|
|
202
|
+
A `needs-council` PR MERGES ONLY ON TWO CONVERGENT CLEARING SEATS;
|
|
203
|
+
DANGEROUS, SPLIT, DEGRADED OR UNAVAILABLE → THE OWNER DECIDES.
|
|
203
204
|
```
|
|
204
205
|
|
|
205
|
-
|
|
206
|
-
`merge-authority` blocker of `road-to-drain-commands` closed as *not authorized
|
|
207
|
-
in this roadmap*: activating the flag would have lowered
|
|
208
|
-
[`non-destructive-by-default`](../../../../rules/non-destructive-by-default.md)'s
|
|
209
|
-
per-turn confirmation floor for a production-branch merge, which
|
|
210
|
-
[`decision-revisit-gate`](../../../../rules/decision-revisit-gate.md)'s
|
|
211
|
-
owner-reserved table reserves to the owner. No owner ruling was available to the
|
|
212
|
-
run that closed the roadmap, and an AI-council pass (2/2 convergent, 2026-08-22)
|
|
213
|
-
ruled that a council may cancel an unauthorized implementation but may not
|
|
214
|
-
manufacture the owner decision. The policy question is therefore **undecided,
|
|
215
|
-
not rejected** — see
|
|
206
|
+
The owner settled the half of
|
|
216
207
|
[ADR-239](../../../../../docs/decisions/ADR-239-drain-command-surface-and-merge-authority.md)
|
|
217
|
-
§ Disposition
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
208
|
+
§ Disposition that ADR-266 left open:
|
|
209
|
+
[ADR-282](../../../../../docs/decisions/ADR-282-auto-merge-authority-with-a-council-danger-gate.md).
|
|
210
|
+
An explicit auto-merge instruction is the this-turn confirmation
|
|
211
|
+
[`non-destructive-by-default`](../../../../rules/non-destructive-by-default.md)
|
|
212
|
+
requires for the production-branch merge of a **routine** PR. Delivery runs
|
|
213
|
+
`/pr:merge <N> --merge`, whose § 9a danger gate (`classify_merge_risk`) decides:
|
|
214
|
+
`routine` → squash-merge bound to the observed head; `needs-council` → a neutral
|
|
215
|
+
council review, merge only when both seats say *not dangerous, owner review
|
|
216
|
+
unnecessary*, otherwise hand the PR back with the seats' reasons.
|
|
217
|
+
|
|
218
|
+
ADR-268 § 3's object-bound `prod_merge` grant stays a separate, unchanged path.
|
|
219
|
+
A standing autonomy directive or momentum is **neither**. Deploy, release and
|
|
220
|
+
every other Hard-Floor action keep their own confirmation.
|
|
229
221
|
|
|
230
222
|
**Mergeability is per-PR against a recorded base, never a queue property.**
|
|
231
223
|
When every PR in the estate touches the same generated files — in this
|
|
@@ -269,7 +261,7 @@ stops the run):
|
|
|
269
261
|
5. **Test / quality red** that cannot be cleared within the N=3 budget.
|
|
270
262
|
6. **RETIRED 2026-09-13** by `road-to-adversarial-verification-and-long-runs`
|
|
271
263
|
5.2. This read *a merge conflict outside the four enumerated classes of
|
|
272
|
-
|
|
264
|
+
`/pr:merge` § 3*. That section now ROUTES
|
|
273
265
|
an unenumerated conflict — understand both intents, inspect recency and
|
|
274
266
|
authorship, preserve both where compatible, independent review, council or
|
|
275
267
|
team, and the owner **only** for a product-semantic incompatibility — so
|
|
@@ -298,7 +290,7 @@ roadmap:
|
|
|
298
290
|
|
|
299
291
|
**And the conditions that end the loop without ending a roadmap:**
|
|
300
292
|
estate-queue exhaustion (always), a
|
|
301
|
-
|
|
293
|
+
`/pr:merge` § 8 kill switch (always — that
|
|
302
294
|
section arms its checks during **preparation**, not only before a merge, which
|
|
303
295
|
is what keeps them reachable while the merge step is gated), and
|
|
304
296
|
authorization-window expiry — which is **unreachable in this command**,
|
|
@@ -322,7 +314,7 @@ FORBIDDEN NON-HALT REASONS — NEVER STOP THE RUN FOR ANY OF THESE:
|
|
|
322
314
|
· "a PR must be opened" / "a GitHub setting must change"
|
|
323
315
|
· "CI must be re-run" / "the merge base needs updating" / "there are
|
|
324
316
|
conflicts" — resolving these IS the work, and since 2026-09-13 that holds
|
|
325
|
-
for an UNENUMERATED conflict too:
|
|
317
|
+
for an UNENUMERATED conflict too: `/pr:merge` § 3
|
|
326
318
|
routes it (understand both intents → recency and authorship → preserve both
|
|
327
319
|
where compatible → independent review → council or team → the owner only for
|
|
328
320
|
a product-semantic incompatibility) instead of stopping. The prohibition that
|
|
@@ -481,7 +473,12 @@ A missing setting, a CI re-run, a protection flag, a rebase, a council call: do
|
|
|
481
473
|
them, and say so in the PR body if it matters. The only mid-run interruptions
|
|
482
474
|
that remain legitimate are a spend-ceiling crossing and an EXCLUDED-list action
|
|
483
475
|
(production trunk, deploy, prod data/infra, an irreversible external action
|
|
484
|
-
beyond the PR).
|
|
476
|
+
beyond the PR). One carve-out from "do them": a rebase of a branch that is
|
|
477
|
+
already pushed rewrites published history, and still needs the user's answer
|
|
478
|
+
this turn per `git-history-discipline` § When rewrite is allowed — the
|
|
479
|
+
invocation does not give it, and neither does `git.update_strategy: rebase`,
|
|
480
|
+
which picks the operation and never authorises it. Without that answer the
|
|
481
|
+
branch is left behind and the PR body says so.
|
|
485
482
|
|
|
486
483
|
Report shape:
|
|
487
484
|
|
|
@@ -500,18 +497,35 @@ Hard external blocker: <specific reason>
|
|
|
500
497
|
Attempted: <what was tried>
|
|
501
498
|
```
|
|
502
499
|
|
|
503
|
-
## Spend —
|
|
500
|
+
## Spend — whatever ceiling was configured, and none when none was
|
|
504
501
|
|
|
505
502
|
```
|
|
506
|
-
|
|
507
|
-
|
|
503
|
+
READ THE CONFIGURED cost.budgets WINDOWS (daily · weekly · monthly).
|
|
504
|
+
spend_so_far + reasonably_expected_remaining WITHIN EVERY CONFIGURED WINDOW
|
|
505
|
+
→ RUN IT, ASK NOTHING
|
|
506
|
+
WOULD CROSS A CONFIGURED WINDOW → PAUSE AND REPORT BEFORE CROSSING.
|
|
507
|
+
NO WINDOW CONFIGURED → NONE APPLIES. RUN IT, ASK NOTHING.
|
|
508
508
|
COST UNKNOWN → CONSERVATIVE ESTIMATE. UNCERTAINTY IS NOT A REASON TO ASK.
|
|
509
|
-
SERVICE-ENFORCED LIMITS MAKE
|
|
509
|
+
SERVICE-ENFORCED LIMITS MAKE A CROSSING IMPOSSIBLE → AUTHORISED.
|
|
510
510
|
EXISTING SUBSCRIPTION → MARGINAL COST $0, NOT COUNTED.
|
|
511
511
|
NEVER SPLIT SPEND ACROSS SERVICES, SUBAGENTS, COUNCIL ROUNDS OR CALLS
|
|
512
|
-
TO KEEP EACH ITEM UNDER
|
|
512
|
+
TO KEEP EACH ITEM UNDER A CEILING. A CEILING IS CUMULATIVE, PER RUN.
|
|
513
513
|
```
|
|
514
514
|
|
|
515
|
+
**Who carries this, stated plainly: the model, not a gate.** Nothing on a
|
|
516
|
+
roadmap run reads a cumulative spend figure and compares it with anything —
|
|
517
|
+
ADR-237 said so of its own ceiling ("Nothing mechanical checks any of this")
|
|
518
|
+
and that has not changed. The optional `cost.enforcement: hard-stop` preflight
|
|
519
|
+
is a separate, deliberately-invoked control and is not called from a run. So
|
|
520
|
+
this block is an obligation the model carries, and a reader should not take it
|
|
521
|
+
for an enforced limit.
|
|
522
|
+
|
|
523
|
+
What used to sit here was a flat per-run USD constant that nobody configured.
|
|
524
|
+
ADR-279 replaced it with the windows a person actually set, which is the only
|
|
525
|
+
kind of ceiling this package now applies; that record names the old figure, and
|
|
526
|
+
this file deliberately does not, so no reader mistakes a historical number for
|
|
527
|
+
a live threshold. Set `cost.budgets.daily` / `weekly` / `monthly` to get one.
|
|
528
|
+
|
|
515
529
|
The transport is not a governance boundary: a council invocation is the same
|
|
516
530
|
authorised action whether it runs through the `council` CLI or a direct API call.
|
|
517
531
|
There is deliberately **no allowlist** of blessed services — the general rule
|
|
@@ -0,0 +1,411 @@
|
|
|
1
|
+
---
|
|
2
|
+
model_tier: high
|
|
3
|
+
name: roadmap-resolve-blockers
|
|
4
|
+
pack: product-basic
|
|
5
|
+
visibility: internal
|
|
6
|
+
cluster: roadmap
|
|
7
|
+
sub: resolve-blockers
|
|
8
|
+
skills: [roadmap-management, ai-council, decision-review, roadmap-writing]
|
|
9
|
+
description: Check every open roadmap blocker, close what the tree already settled, decide the rest in the AI council, and ask the owner only for real residue — one question at a time.
|
|
10
|
+
argument-hint: "[<roadmap> | <blocker-id> | all] [--no-council] [--check-only]"
|
|
11
|
+
suggestion:
|
|
12
|
+
eligible: false
|
|
13
|
+
rationale: "Cluster sub-command — reached via its cluster head's routing or its explicit /roadmap:resolve-blockers name; not independently suggested (surface-consolidation)."
|
|
14
|
+
workspaces:
|
|
15
|
+
- agent-config-maintainer
|
|
16
|
+
packs:
|
|
17
|
+
- meta
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
# /roadmap:resolve-blockers
|
|
21
|
+
|
|
22
|
+
Blocker sub of the [`/roadmap`](../roadmap.md) cluster. A `### blocker:` entry
|
|
23
|
+
records the world at the moment it was written, and nothing re-reads it: its
|
|
24
|
+
`Status:` word goes stale while the condition it waits on comes true, and a
|
|
25
|
+
decision an agent or the council could take sits in a file waiting for the one
|
|
26
|
+
reader whose attention does not scale. This command walks every open blocker,
|
|
27
|
+
closes the ones the tree already settled, decides the ones the council owns, and
|
|
28
|
+
reaches the owner only for what genuinely needs them — one question per turn,
|
|
29
|
+
with a recommendation, so answering costs one keystroke.
|
|
30
|
+
|
|
31
|
+
## The Iron Law
|
|
32
|
+
|
|
33
|
+
```
|
|
34
|
+
A BLOCKER'S STATUS IS A CLAIM ABOUT THE PAST. EXECUTE ITS `Resolved when`
|
|
35
|
+
AS A CHECK BEFORE TREATING IT AS OPEN.
|
|
36
|
+
RESOLVE AT THE LOWEST RUNG THAT OWNS THE DECISION: EVIDENCE → RECORDED RULE →
|
|
37
|
+
EXECUTION → AGENT → INDEPENDENT SESSION → COUNCIL → OWNER.
|
|
38
|
+
THE OWNER IS THE LAST RUNG, NEVER THE FIRST, AND NEVER FOR A TECHNICAL DECISION.
|
|
39
|
+
NO OWNER QUESTION IS PUT BEFORE ONE BATCHED COUNCIL PASS HAS RUN OVER EVERY
|
|
40
|
+
UNDECIDED BLOCKER OF THE RUN — OWNER-LABELLED ONES INCLUDED. A BLOCKER'S
|
|
41
|
+
`Owner:`, `Ownership:` OR "YOURS TO SET" IS ITS AUTHOR'S GUESS; THE COUNCIL'S
|
|
42
|
+
OWNER-RESERVED TEST DECIDES WHO MUST ANSWER.
|
|
43
|
+
NEVER PASS `--confirm` OR BUY METERED COUNCIL SPEND WITHOUT THE OWNER'S YES.
|
|
44
|
+
THE OWNER IS ASKED ONE QUESTION PER TURN, WITH OPTIONS AND ONE RECOMMENDATION,
|
|
45
|
+
AND THE ANSWER IS WRITTEN DOWN BEFORE THE NEXT QUESTION IS PUT.
|
|
46
|
+
NEVER HAND BACK A FILED QUESTION OR A COUNT OF OPEN QUESTIONS.
|
|
47
|
+
A BLOCKER IS CLOSED ONLY BY `- **Status:** resolved` — AND ONLY WITH EVIDENCE.
|
|
48
|
+
NO RUNG LIFTS A HARD FLOOR OR AN OWNER-RESERVED INVARIANT.
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## Argument
|
|
52
|
+
|
|
53
|
+
| Given | Scope |
|
|
54
|
+
|---|---|
|
|
55
|
+
| a roadmap path | that roadmap's open blockers |
|
|
56
|
+
| a blocker id | that one blocker |
|
|
57
|
+
| `all` or nothing | every open blocker in the active roadmaps |
|
|
58
|
+
| `stubs` | the open blockers in `agents/roadmaps/stubs/` |
|
|
59
|
+
|
|
60
|
+
`--check-only` stops after Phase 2 — conditions executed and reported, nothing
|
|
61
|
+
written. `--no-council` stops each decision at the agent rung and presents the
|
|
62
|
+
council-owned ones as proposals instead of running the council.
|
|
63
|
+
|
|
64
|
+
The dashboard parser skips `stubs/`, so `stubs` is read by grep instead
|
|
65
|
+
(`grep -n '^### blocker:' agents/roadmaps/stubs/*.md`, then each entry's five
|
|
66
|
+
fields) — and only on request, because a stub records a decision still to take,
|
|
67
|
+
not a plan in flight. `later/`, `archive/` and `skipped/` are out of scope — their blockers are history
|
|
68
|
+
or are re-checked by [`/roadmap:triage-parked`](triage-parked.md).
|
|
69
|
+
|
|
70
|
+
## Where the work happens
|
|
71
|
+
|
|
72
|
+
The checked-out branch, like every `/roadmap` sub. A worktree, a branch, a commit
|
|
73
|
+
or a PR only on an explicit ask ([`scope-control`](../../rules/scope-control.md)
|
|
74
|
+
§ Git operations, [`commit-policy`](../../rules/commit-policy.md)).
|
|
75
|
+
|
|
76
|
+
## Instructions
|
|
77
|
+
|
|
78
|
+
### 1. Inventory — from the parser, never by reading files
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
agent-config gates --all --json
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
It is the dashboard's own parser (`collect()`), so the set is exactly what the
|
|
85
|
+
dashboard counts. Per blocker it gives `id`, `roadmap`, `owner`, `class`,
|
|
86
|
+
`blocks`, `unblocksSteps`, `todo` and `resolvedWhen`. The class says who may act:
|
|
87
|
+
`0` deterministic and free (a `Run:` command) · `1` billable but reversible (a
|
|
88
|
+
`Run:` command inside the gate budget) · `2` council-decidable · `3` human-only —
|
|
89
|
+
and `3` is also the **absent-field default**, so most `3`s were never classified
|
|
90
|
+
at all. Re-classifying a technical `3` to `2` is a legitimate outcome of this
|
|
91
|
+
run, recorded on the entry (`Class: 2 — council-decidable. Corrected from 3 on
|
|
92
|
+
YYYY-MM-DD`), written as the bold field `- **Class:** 2 — …` the lint reads.
|
|
93
|
+
Read each entry's `- **Ownership:**` too: `product-owned`, `business-owned` and
|
|
94
|
+
`destructive-owned` are the author's routing claim, written when nobody had run
|
|
95
|
+
the test. They mark a candidate for the owner, never a destination: the
|
|
96
|
+
blocker still goes into the council batch, whose owner-reserved test (§ Running
|
|
97
|
+
the council) decides whether it reaches the owner.
|
|
98
|
+
|
|
99
|
+
`unblocksSteps` is the open-step count of the whole roadmap the blocker sits in,
|
|
100
|
+
the same number for every blocker of that roadmap. Order by the steps a blocker
|
|
101
|
+
actually holds — `grep -c '<!-- blocked-by: <id>' <roadmap>` — and break ties by
|
|
102
|
+
`unblocksSteps`.
|
|
103
|
+
|
|
104
|
+
Show the inventory as one table before any write:
|
|
105
|
+
|
|
106
|
+
| # | blocker | roadmap | owner | class | unblocks | rung expected |
|
|
107
|
+
|
|
108
|
+
### 2. Check — execute every `Resolved when`, cheapest limb first
|
|
109
|
+
|
|
110
|
+
A status word records the past; the condition records what would end the wait.
|
|
111
|
+
Run it as a command:
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
gh pr view <n> --json state,mergedAt # "PR X merged"
|
|
115
|
+
git log --oneline origin/main -- <path> # "<file> landed on main"
|
|
116
|
+
ls docs/decisions/ADR-NNN-*.md # "the ADR exists / names (a) or (b)"
|
|
117
|
+
grep -n '<key>' <file> # "<key> is present"
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
Verdict per blocker: `met` · `unmet` · `undecidable` (the condition names no
|
|
121
|
+
check — itself a finding, fixed in Phase 4 by rewriting `Resolved when` into one).
|
|
122
|
+
|
|
123
|
+
**A spend or quota blocker is checked against the live meter**, never the text:
|
|
124
|
+
`agent-config council:status` and `council_cli quota` show what is actually left.
|
|
125
|
+
A blocker that cites an exhausted budget the meter does not show is `met`.
|
|
126
|
+
|
|
127
|
+
**Read what the condition measures, not only whether it returns.** A condition
|
|
128
|
+
that keys on a value that never occurs is `met` never, whatever the world does;
|
|
129
|
+
that is a defect in the blocker and becomes a decision (Phase 3), not a wait.
|
|
130
|
+
|
|
131
|
+
`--check-only` ends here: the table with a verdict column.
|
|
132
|
+
|
|
133
|
+
### 3. Resolve — one rung at a time, stopping at the first that can
|
|
134
|
+
|
|
135
|
+
The ladder is the one [`/challenge-me:closure`](../challenge-me/closure.md)
|
|
136
|
+
uses, with one blocker-specific rung added (execution):
|
|
137
|
+
|
|
138
|
+
1. **Evidence** — the condition is `met`. Close it (Phase 4). No question exists.
|
|
139
|
+
2. **A recorded rule** — an ADR, contract, `## Decisions` row or earlier council
|
|
140
|
+
verdict already answers the question the blocker asks. An ADR is evaluated
|
|
141
|
+
before it is cited — `./scripts-run src/scripts/adr_cite_check <ADR-NNN>`
|
|
142
|
+
(status, supersession, review trigger) — and a superseded or triggered one
|
|
143
|
+
closes nothing ([`decision-revisit-gate`](../../rules/decision-revisit-gate.md)).
|
|
144
|
+
3. **Execution** — a class-0 blocker is a command whose output is the unblock.
|
|
145
|
+
`agent-config gates --execute <id>` echoes the exact string; the run needs
|
|
146
|
+
`--confirm`, and **`--confirm` is the owner's consent, not the agent's** — the
|
|
147
|
+
`Run:` field is shell read out of a file. Collect every class-0 and in-budget
|
|
148
|
+
class-1 command of the run and put them to the owner as **one** question
|
|
149
|
+
(§ Asking the owner): the literal commands, *run all* · *run selected* ·
|
|
150
|
+
*leave them*. Only on that answer does the agent pass `--confirm`. Class 1
|
|
151
|
+
outside the gate budget is a spend question for the owner.
|
|
152
|
+
4. **The agent** — `deterministic` and `reversible-technical` choices inside
|
|
153
|
+
stated conventions. Pick it, write why.
|
|
154
|
+
5. **An independent session** — the first rung for `contested-technical`: a
|
|
155
|
+
second instance with no stake in the first answer.
|
|
156
|
+
6. **The council** — `critical-technical` decisions, process decisions the agent
|
|
157
|
+
should not take alone, and every reopening of a recorded decision
|
|
158
|
+
(`decision-revisit-gate` sends those council-first). See § Running the
|
|
159
|
+
council. Where no council is available, the **team** rung (`ai_team`) takes
|
|
160
|
+
its place.
|
|
161
|
+
7. **The owner** — **only** what the council's batch pass marked
|
|
162
|
+
owner-reserved (either seat), or split on with the split surviving a
|
|
163
|
+
measurement: `product-owned`, `business-owned` and `destructive-owned`
|
|
164
|
+
decisions, and the transitions `decision-revisit-gate` reserves (lowering a
|
|
165
|
+
safety floor, an irreversible or external commitment, spend above a
|
|
166
|
+
delegated threshold, governance self-amendment). A technical decision never
|
|
167
|
+
reaches here by being hard, and an owner-labelled one never reaches here
|
|
168
|
+
without the council's pass. One exception, from the ownership contract: a
|
|
169
|
+
`critical-technical` question with a single provider present degrades to
|
|
170
|
+
**owner-confirm of the agent's proposal**, never to one model reviewing
|
|
171
|
+
itself. See § Asking the owner.
|
|
172
|
+
|
|
173
|
+
`spend-exhaustion` leaves the ladder: it **pauses and reports** (§ Running the
|
|
174
|
+
council), it is not a question.
|
|
175
|
+
|
|
176
|
+
`Owner: user` on a blocker is **not** a reason to skip rungs 1–5. It records who
|
|
177
|
+
was expected to answer when the blocker was written; the ladder decides who
|
|
178
|
+
actually must. A blocker whose question the council can settle is settled there,
|
|
179
|
+
and its owner is told the outcome, not asked.
|
|
180
|
+
|
|
181
|
+
Things a blocker can wait on that **no rung can buy** — a real external party, a
|
|
182
|
+
calendar soak, a measurement campaign that needs sessions that have not happened,
|
|
183
|
+
a published release — stay open. For those the work is to make the wait
|
|
184
|
+
checkable: rewrite `Resolved when` into a command and, where it helps, add a
|
|
185
|
+
date. Never invent a decision to make one go away.
|
|
186
|
+
|
|
187
|
+
### Running the council
|
|
188
|
+
|
|
189
|
+
Council availability is the resolver's answer, never the project tree's:
|
|
190
|
+
|
|
191
|
+
```bash
|
|
192
|
+
agent-config council:status
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
1. **Batch the questions — all of them, before any owner question.** Every
|
|
196
|
+
blocker rungs 1–4 did not close goes into **one** question file under
|
|
197
|
+
`agents/runtime/council/questions/`, including those labelled `Owner: user`,
|
|
198
|
+
`product-owned`, `business-owned` or `destructive-owned` — one numbered
|
|
199
|
+
section per blocker, each carrying the blocker's five fields, the Phase-2
|
|
200
|
+
evidence and the candidate options. One run, not one per blocker. The file
|
|
201
|
+
opens with the owner-reserved test, quoted from `decision-revisit-gate`'s
|
|
202
|
+
owner-reserved table: the chosen option would change the project's purpose
|
|
203
|
+
or a declared non-negotiable outcome; **lower** or remove a recorded
|
|
204
|
+
security / privacy / safety / data-handling floor; be irreversible or
|
|
205
|
+
materially destructive; spend or carry liability above a delegated
|
|
206
|
+
threshold; create, remove or weaken a legal, contractual, licensing,
|
|
207
|
+
compatibility or public commitment; or amend governance itself (reopening
|
|
208
|
+
authority, quorum, escalation, the owner-reserved set). Strengthening a
|
|
209
|
+
floor, or anything reversible inside these bounds, is council-decidable.
|
|
210
|
+
Each section then asks for three answers, in this order:
|
|
211
|
+
1. **Owner-reserved?** — yes / no, naming the clause, per option where the
|
|
212
|
+
options differ (one option can be reserved while another is not);
|
|
213
|
+
2. **Choice** — the option the seat takes if it is council-decidable, and
|
|
214
|
+
the option it would recommend to the owner if it is not;
|
|
215
|
+
3. **The fact that would change the answer.**
|
|
216
|
+
A recorded decision that reserved the question to the owner (a `## Decisions`
|
|
217
|
+
row, an ADR) is put to the same test, as a reopening per
|
|
218
|
+
`decision-revisit-gate` — the council says whether the reservation still
|
|
219
|
+
holds; it never lifts one on its own authority.
|
|
220
|
+
2. **Write the question neutrally** — scope, evidence, options. No
|
|
221
|
+
recommendation and no expected verdict, in either direction: the council is
|
|
222
|
+
judging a decision the agent would otherwise take, so the agent's lean stays
|
|
223
|
+
out of the prompt ([`evaluator-independence`](../../rules/evaluator-independence.md)),
|
|
224
|
+
and the prompt is kept with the verdict.
|
|
225
|
+
3. **Estimate, then run.** The positional is a **file path**, never the question
|
|
226
|
+
text:
|
|
227
|
+
|
|
228
|
+
```bash
|
|
229
|
+
./scripts-run src/scripts/council_cli estimate <q.md>
|
|
230
|
+
./scripts-run src/scripts/council_cli run <q.md> \
|
|
231
|
+
--output agents/runtime/council/responses/<name> \
|
|
232
|
+
--confirm --invocation agent
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
In a fresh worktree, copy `agents/runtime/state/council-probes.json` from a
|
|
236
|
+
checkout that has run a council first — without it every seat reads as
|
|
237
|
+
unavailable. `--output` must sit under `agents/runtime/council/responses/`;
|
|
238
|
+
any other directory is refused. A failed run still spends quota, so never
|
|
239
|
+
re-run an unchanged question — with one exception: a seat that is absent
|
|
240
|
+
for a **transport** reason (the response's `absent_members[].detail` names
|
|
241
|
+
an OS, network or process error, not a refusal or a verdict) allows **one**
|
|
242
|
+
transport retry of the unchanged file under a new `--output` name. The
|
|
243
|
+
retry is recorded as such, and if a seat that answered both times changed
|
|
244
|
+
its answer, both readings are reported. A second retry, or a retry after an
|
|
245
|
+
unwelcome verdict, is verdict shopping.
|
|
246
|
+
|
|
247
|
+
**Exhausted quota is `spend-exhaustion`: pause and report** — which questions
|
|
248
|
+
needed the council, the quota reading, `estimate --mode-override api`'s cost,
|
|
249
|
+
and what proceeds without it. Turning plan quota into metered spend is the
|
|
250
|
+
operator's decision, never one this command infers
|
|
251
|
+
(`docs/contracts/ai-council-config.md` § `fallback.api_on_quota`). Where the
|
|
252
|
+
owner has said yes to the metered rung, `agent-config council:grant-billing
|
|
253
|
+
<run_id>` records that yes for one run, and only then does
|
|
254
|
+
`--mode-override api` run.
|
|
255
|
+
4. **Read the verdict honestly.** Route first: a blocker both seats call **not**
|
|
256
|
+
owner-reserved is decided by the council's choice and never reaches the
|
|
257
|
+
owner; one that either seat calls owner-reserved goes to the owner, carrying
|
|
258
|
+
the seats' recommended option. Then the choice: 2/2 agreeing → decided. 1/2 present is a
|
|
259
|
+
single-seat reading (`DEGRADED`), never a convergence: accept it for a
|
|
260
|
+
`reversible-technical` or `contested-technical` question and say so; for a
|
|
261
|
+
`critical-technical` one it degrades to owner-confirm of the proposal.
|
|
262
|
+
A split usually names a disputed **fact** — measure it. A second council
|
|
263
|
+
round is legitimate only when its input changed (the measurement, or a
|
|
264
|
+
proposal narrowed to what a refusal named); it is recorded as a new round,
|
|
265
|
+
and both verdicts are reported. Re-asking an unchanged question with a
|
|
266
|
+
different wording, or dropping scope until the answer turns, is verdict
|
|
267
|
+
shopping (`evaluator-independence` items 2 and 4). A split that survives the
|
|
268
|
+
measurement goes to the owner, with both positions as the options.
|
|
269
|
+
5. **Record it inline.** `agents/runtime/council/` is gitignored and pruned, so a
|
|
270
|
+
roadmap never cites that path (`check_council_references`). The record is a
|
|
271
|
+
`## Decisions` row plus the blocker's status line carrying date, members,
|
|
272
|
+
verdict and cost.
|
|
273
|
+
|
|
274
|
+
### Asking the owner — one question, one keystroke
|
|
275
|
+
|
|
276
|
+
```
|
|
277
|
+
ONE QUESTION PER TURN. THE MOST UNBLOCKING ONE FIRST.
|
|
278
|
+
EVERY QUESTION IS ANSWERABLE WITH ONE NUMBER.
|
|
279
|
+
THE ANSWER IS RECORDED AND APPLIED BEFORE THE NEXT QUESTION IS PUT.
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
The queue holds only what the council's batch pass routed here (§ Running the
|
|
283
|
+
council, step 4) — never a blocker the pass did not see, and never one both
|
|
284
|
+
seats called council-decidable. With `--no-council`, or when no seat is
|
|
285
|
+
available, say so in the queue line: the routing is then the agent's, unchecked.
|
|
286
|
+
|
|
287
|
+
Before the first question, one short line says how many owner questions the run
|
|
288
|
+
has left after the council (`3 decisions need you — here is the first`), so the
|
|
289
|
+
owner knows the length of the queue. Then, per question:
|
|
290
|
+
|
|
291
|
+
- **Context in two sentences** — what is blocked and what it unblocks.
|
|
292
|
+
- **What the council said** — why it is owner-reserved (the clause each seat
|
|
293
|
+
named), and the option each seat would recommend, or the split.
|
|
294
|
+
- **What exactly you do**, if the answer needs an act only the owner can
|
|
295
|
+
perform — a repository setting, a ruleset toggle, a credential, a tag: the
|
|
296
|
+
literal step (the page, the field, the command), so nothing has to be looked
|
|
297
|
+
up or asked back.
|
|
298
|
+
- **Numbered options**, each naming what changes if picked — the blocker's own
|
|
299
|
+
options where it has them, the council's otherwise; the last option is always
|
|
300
|
+
*leave it open*.
|
|
301
|
+
- **One recommendation line** directly under the options
|
|
302
|
+
([`user-interaction`](../../rules/user-interaction.md)).
|
|
303
|
+
|
|
304
|
+
The answer is written into the roadmap (Phase 4) and the dependent step
|
|
305
|
+
unblocked **before** the next question appears. A *later* or *skip* answer moves
|
|
306
|
+
to the next question; the blocker stays open and is not re-asked in this run
|
|
307
|
+
([`scope-control`](../../rules/scope-control.md) § Decline = silence).
|
|
308
|
+
|
|
309
|
+
`agent-config gates --reply` gives the `Blocked:` / `Do:` / `Done when:` lines
|
|
310
|
+
of the top user-owned blocker across the whole tree — raw material for a
|
|
311
|
+
question, not the question: it carries no options, no recommendation and no
|
|
312
|
+
council verdict, and it may name a blocker this run already classified
|
|
313
|
+
differently.
|
|
314
|
+
|
|
315
|
+
### 4. Write — close, record, unblock
|
|
316
|
+
|
|
317
|
+
Per resolved blocker:
|
|
318
|
+
|
|
319
|
+
1. **Status line** — already written by `gates --execute --confirm` for an
|
|
320
|
+
executed blocker (leave it, add only the Decisions row); otherwise
|
|
321
|
+
`- **Status:** resolved YYYY-MM-DD — <decision, one line>
|
|
322
|
+
(<rung>: <evidence | ADR-NNN | council YYYY-MM-DD, <members>, <verdict>, $<cost> | owner>)`.
|
|
323
|
+
`resolved` must be the first word: it is the only closing token
|
|
324
|
+
`lint_roadmap_blockers`, the dashboard and the estate count accept.
|
|
325
|
+
2. **`## Decisions` row** in the same roadmap —
|
|
326
|
+
`| ID | ownership | resolved by | decision | evidence | revisit if |` —
|
|
327
|
+
`ownership` one of the eight classes (`deterministic`,
|
|
328
|
+
`reversible-technical`, `contested-technical`, `critical-technical`,
|
|
329
|
+
`product-owned`, `business-owned`, `destructive-owned`, `spend-exhaustion`),
|
|
330
|
+
`resolved by` one of `evidence` (also the recorded-rule and execution rungs),
|
|
331
|
+
`agent`, `independent:<session or model>`, `council:<date-slug>`,
|
|
332
|
+
`team:<record>`, `owner`;
|
|
333
|
+
then `./scripts-run src/scripts/lint_decision_classes`.
|
|
334
|
+
3. **Unblock the steps** — remove each `<!-- blocked-by: <id> -->` annotation the
|
|
335
|
+
blocker held. The work itself is not started here.
|
|
336
|
+
4. **A blocker that stays open** gets its `Resolved when` rewritten into a check
|
|
337
|
+
when Phase 2 found it `undecidable`, its `What to do` updated with what this
|
|
338
|
+
run learned, and a `- **Recommendation:**` and an `- **If you do nothing:**`
|
|
339
|
+
line where it lacks them. An owner question that was asked this run flips its
|
|
340
|
+
`blocked-by:` annotations from `asked: no — …` to `asked: yes`.
|
|
341
|
+
|
|
342
|
+
Then regenerate and lint what changed:
|
|
343
|
+
|
|
344
|
+
```bash
|
|
345
|
+
./agent-config roadmap:progress --no-archive
|
|
346
|
+
./scripts-run src/scripts/lint_roadmap_blockers
|
|
347
|
+
./scripts-run src/scripts/check_estate_count
|
|
348
|
+
```
|
|
349
|
+
|
|
350
|
+
A run that closes blockers lowers `open_blockers`; that is the drawdown the
|
|
351
|
+
estate gate wants and needs no claim; when `lint_roadmap_blockers` then reports
|
|
352
|
+
its decidability baseline as loose, lower it in the same change. A roadmap whose last blocker closed while
|
|
353
|
+
it has no open step is now archivable — name it in the output;
|
|
354
|
+
`./agent-config roadmap:progress` without the flag sweeps it. A decision whose
|
|
355
|
+
**implementation** touches governance surfaces (`src/config/gate-coverage.yml`,
|
|
356
|
+
workflows, kernel rules) needs its ratification artifact in that later change;
|
|
357
|
+
deciding it here does not. A run that **adds** a blocker (splitting
|
|
358
|
+
one, or recording a newly found external wait) grows it and needs an
|
|
359
|
+
`estate_growth_exempt: <reason>` line added to that roadmap's frontmatter in the
|
|
360
|
+
same change.
|
|
361
|
+
|
|
362
|
+
## Output
|
|
363
|
+
|
|
364
|
+
1. The inventory table with the Phase-2 verdict and the rung that closed each.
|
|
365
|
+
2. Per closed blocker: one line — what decided it and where it is recorded.
|
|
366
|
+
3. The council run(s): question count, members present, verdict per question,
|
|
367
|
+
cost.
|
|
368
|
+
4. **The ledger** — the run's completeness check:
|
|
369
|
+
|
|
370
|
+
```
|
|
371
|
+
blockers N in scope
|
|
372
|
+
closed by evidence n · by recorded rule n · by execution n · by agent n · by council n · by owner n
|
|
373
|
+
open waiting on external n · owner said later n · undecidable → rewritten n
|
|
374
|
+
steps N unblocked across M roadmaps
|
|
375
|
+
```
|
|
376
|
+
|
|
377
|
+
Every blocker in scope appears in exactly one bucket.
|
|
378
|
+
5. Roadmaps that became archivable because their last blocker closed.
|
|
379
|
+
6. If owner questions remain: the queue length and the **first question** — never
|
|
380
|
+
the list.
|
|
381
|
+
|
|
382
|
+
## Honest enforcement — `instruction-only`
|
|
383
|
+
|
|
384
|
+
`lint_roadmap_blockers` checks a blocker's shape and the closing token; nothing
|
|
385
|
+
checks that a `Resolved when` was executed rather than read, that a council
|
|
386
|
+
verdict was reported at its real quorum, or that an owner question was the
|
|
387
|
+
council's to answer. The ledger and the inline council record are the control.
|
|
388
|
+
|
|
389
|
+
## Do NOT
|
|
390
|
+
|
|
391
|
+
- Mark a blocker resolved because its status is old, or because a sibling PR
|
|
392
|
+
looks related. The condition, executed, is the only evidence.
|
|
393
|
+
- Ask the owner what the tree, a recorded decision or the council can answer —
|
|
394
|
+
*"Owner: user"*, `Ownership: product-owned` or *"yours to set"* in the file
|
|
395
|
+
is not a reason.
|
|
396
|
+
- Put the first owner question before the council's batch pass has run over
|
|
397
|
+
every undecided blocker, or classify a blocker as owner-reserved yourself
|
|
398
|
+
when a council seat is available to run the test.
|
|
399
|
+
- Ask more than one question per turn, or hand back *"four decisions are open in
|
|
400
|
+
file X"*.
|
|
401
|
+
- Run the council once per blocker, or re-run an unchanged question after a
|
|
402
|
+
failure — beyond the single transport retry § Running the council allows.
|
|
403
|
+
- Pass `--confirm` or switch to metered council spend without the owner's yes.
|
|
404
|
+
- Cite `agents/runtime/council/` from a roadmap.
|
|
405
|
+
- Execute the work a resolved blocker unblocks — this command authorizes
|
|
406
|
+
deciding and recording, not doing ([`scope-control`](../../rules/scope-control.md)
|
|
407
|
+
§ Authoring vs. implementation). `/roadmap:next` or `/roadmap:process-full`
|
|
408
|
+
picks the work up.
|
|
409
|
+
- Lift a Hard Floor ([`non-destructive-by-default`](../../rules/non-destructive-by-default.md))
|
|
410
|
+
through any rung — a council verdict authorizes no deploy, push, deletion or
|
|
411
|
+
spend beyond the standing budget.
|