@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
|
@@ -56,9 +56,16 @@ export function gateBudgetLedgerPath(workspaceRoot: string): string {
|
|
|
56
56
|
}
|
|
57
57
|
|
|
58
58
|
/** The two caps decided by option (a). Both are USD. */
|
|
59
|
+
/**
|
|
60
|
+
* The two standing caps, each independently settable.
|
|
61
|
+
*
|
|
62
|
+
* Both figures are **US dollars**. Either may be `null`, meaning that cap was
|
|
63
|
+
* not set and therefore bounds nothing; `readGateBudgetCaps` returns `null`
|
|
64
|
+
* for the whole object only when NEITHER was set.
|
|
65
|
+
*/
|
|
59
66
|
export interface GateBudgetCaps {
|
|
60
|
-
maxCostPerRunUsd: number;
|
|
61
|
-
maxCostPerRolling7dUsd: number;
|
|
67
|
+
maxCostPerRunUsd: number | null;
|
|
68
|
+
maxCostPerRolling7dUsd: number | null;
|
|
62
69
|
}
|
|
63
70
|
|
|
64
71
|
/**
|
|
@@ -105,18 +112,26 @@ function _dig(settings: unknown, keys: readonly string[]): unknown {
|
|
|
105
112
|
/**
|
|
106
113
|
* Read the caps out of an already-merged settings dict.
|
|
107
114
|
*
|
|
108
|
-
*
|
|
109
|
-
*
|
|
110
|
-
*
|
|
111
|
-
* template default would
|
|
112
|
-
*
|
|
115
|
+
* Each cap is returned on its own. Returns `null` only when NEITHER is set,
|
|
116
|
+
* which means no ceiling on money was configured — not that the run is
|
|
117
|
+
* unauthorised. Still deliberately NOT a fallback to the template numbers:
|
|
118
|
+
* inventing a cap from a template default would bound a run by a figure
|
|
119
|
+
* nobody chose.
|
|
120
|
+
*
|
|
121
|
+
* Until 2026-10-06 this returned `null` unless BOTH caps were numeric, with
|
|
122
|
+
* two consequences. A person who set one cap and left the other alone was
|
|
123
|
+
* bounded by NEITHER — the stricter-looking rule produced the laxer result.
|
|
124
|
+
* And absent caps were read by the caller as a refusal, so the gate would not
|
|
125
|
+
* run at all without them. ADR-279 supersedes that second reading: absence of
|
|
126
|
+
* a bound is not a bound, and `--confirm` remains the authorisation the caps
|
|
127
|
+
* only ever sized.
|
|
113
128
|
*/
|
|
114
129
|
export function readGateBudgetCaps(settings: unknown): GateBudgetCaps | null {
|
|
115
130
|
const perRun = _num(_dig(settings, ['roadmap', 'gate_budget', 'max_cost_per_run_usd']));
|
|
116
131
|
const rolling = _num(
|
|
117
132
|
_dig(settings, ['roadmap', 'gate_budget', 'max_cost_per_rolling_7d_usd']),
|
|
118
133
|
);
|
|
119
|
-
if (perRun === null
|
|
134
|
+
if (perRun === null && rolling === null) {
|
|
120
135
|
return null;
|
|
121
136
|
}
|
|
122
137
|
return { maxCostPerRunUsd: perRun, maxCostPerRolling7dUsd: rolling };
|
|
@@ -216,13 +231,15 @@ export function rollingSpendUsd(records: readonly GateBudgetReceipt[], now: Date
|
|
|
216
231
|
}
|
|
217
232
|
|
|
218
233
|
export type GateBudgetRefusal =
|
|
219
|
-
|
|
234
|
+
// 'no_caps' was removed on 2026-10-06 with ADR-279: the absence of a cap
|
|
235
|
+
// is no longer a refusal, so no path can produce it and leaving it in the
|
|
236
|
+
// union would advertise a verdict nothing returns.
|
|
220
237
|
| 'no_estimate'
|
|
221
238
|
| 'over_per_run'
|
|
222
239
|
| 'over_rolling_7d';
|
|
223
240
|
|
|
224
241
|
export type GateBudgetVerdict =
|
|
225
|
-
| { ok: true; estimateUsd: number; rollingUsd: number }
|
|
242
|
+
| { ok: true; estimateUsd: number | null; rollingUsd: number }
|
|
226
243
|
| { ok: false; reason: GateBudgetRefusal; detail: string };
|
|
227
244
|
|
|
228
245
|
/**
|
|
@@ -230,6 +247,12 @@ export type GateBudgetVerdict =
|
|
|
230
247
|
*
|
|
231
248
|
* Every refusal path renders rather than runs — the blocker's own prescription
|
|
232
249
|
* for a missing ledger, generalised to every way the budget can say no.
|
|
250
|
+
*
|
|
251
|
+
* What is NOT a refusal, per ADR-279: the absence of a cap. With no cap
|
|
252
|
+
* configured there is no ceiling on money to compare anything against, so the
|
|
253
|
+
* verdict is `ok` and the run proceeds on the authorisation `--confirm`
|
|
254
|
+
* already carries. A cap that WAS set still bounds exactly as its contract
|
|
255
|
+
* describes, and each bounds alone.
|
|
233
256
|
*/
|
|
234
257
|
export function evaluateGateBudget(opts: {
|
|
235
258
|
caps: GateBudgetCaps | null;
|
|
@@ -238,16 +261,17 @@ export function evaluateGateBudget(opts: {
|
|
|
238
261
|
now: Date;
|
|
239
262
|
}): GateBudgetVerdict {
|
|
240
263
|
const { caps, records, estimateUsd, now } = opts;
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
'`roadmap.gate_budget.max_cost_per_rolling_7d_usd`)',
|
|
249
|
-
};
|
|
264
|
+
const perRunCap = caps === null ? null : caps.maxCostPerRunUsd;
|
|
265
|
+
const rollingCap = caps === null ? null : caps.maxCostPerRolling7dUsd;
|
|
266
|
+
// No ceiling on money was set anywhere, so nothing here can say no.
|
|
267
|
+
// `rollingUsd` is still computed and reported — recording spend never
|
|
268
|
+
// depended on bounding it.
|
|
269
|
+
if (perRunCap === null && rollingCap === null) {
|
|
270
|
+
return { ok: true, estimateUsd, rollingUsd: rollingSpendUsd(records, now) };
|
|
250
271
|
}
|
|
272
|
+
// A missing estimate refuses only because a cap exists that nothing can be
|
|
273
|
+
// compared against. With no cap there is no comparison to fail, which is
|
|
274
|
+
// why this sits BELOW the no-cap branch rather than above it.
|
|
251
275
|
if (estimateUsd === null) {
|
|
252
276
|
return {
|
|
253
277
|
ok: false,
|
|
@@ -257,17 +281,17 @@ export function evaluateGateBudget(opts: {
|
|
|
257
281
|
'can be compared against it',
|
|
258
282
|
};
|
|
259
283
|
}
|
|
260
|
-
if (estimateUsd >
|
|
284
|
+
if (perRunCap !== null && estimateUsd > perRunCap) {
|
|
261
285
|
return {
|
|
262
286
|
ok: false,
|
|
263
287
|
reason: 'over_per_run',
|
|
264
288
|
detail:
|
|
265
289
|
`the estimate ($${estimateUsd.toFixed(2)}) exceeds the per-run cap ` +
|
|
266
|
-
`($${
|
|
290
|
+
`($${perRunCap.toFixed(2)})`,
|
|
267
291
|
};
|
|
268
292
|
}
|
|
269
293
|
const spent = rollingSpendUsd(records, now);
|
|
270
|
-
if (spent + estimateUsd >
|
|
294
|
+
if (rollingCap !== null && spent + estimateUsd > rollingCap) {
|
|
271
295
|
return {
|
|
272
296
|
ok: false,
|
|
273
297
|
reason: 'over_rolling_7d',
|
|
@@ -275,7 +299,7 @@ export function evaluateGateBudget(opts: {
|
|
|
275
299
|
`$${spent.toFixed(2)} is already receipted in the last ` +
|
|
276
300
|
`${String(ROLLING_WINDOW_DAYS)} days and this run would add ` +
|
|
277
301
|
`$${estimateUsd.toFixed(2)}, over the rolling cap ` +
|
|
278
|
-
`($${
|
|
302
|
+
`($${rollingCap.toFixed(2)})`,
|
|
279
303
|
};
|
|
280
304
|
}
|
|
281
305
|
return { ok: true, estimateUsd, rollingUsd: spent };
|
|
@@ -297,7 +297,12 @@ function execute(
|
|
|
297
297
|
// generalised to every way the budget can say no. The `--confirm`
|
|
298
298
|
// requirement below is untouched: the caps bound the size of an authorised
|
|
299
299
|
// spend, they never supply the authorisation.
|
|
300
|
-
|
|
300
|
+
// `estimateUsd` is null only on the one path that reaches here without a
|
|
301
|
+
// USD figure: a class-1 entry that states no estimate AND an install with
|
|
302
|
+
// no cap set, so there was no cap for the missing estimate to fail
|
|
303
|
+
// against. A receipt needs a number, and inventing 0 would understate the
|
|
304
|
+
// ledger, so that path runs and reports that nothing was receipted.
|
|
305
|
+
let budgeted: { estimateUsd: number | null } | null = null;
|
|
301
306
|
if (cls === '1') {
|
|
302
307
|
const verdict = evaluateGateBudget({
|
|
303
308
|
caps: readGateBudgetCaps(load_agent_settings({ cwd: repoRoot })),
|
|
@@ -388,7 +393,7 @@ function execute(
|
|
|
388
393
|
code: 1,
|
|
389
394
|
};
|
|
390
395
|
}
|
|
391
|
-
if (budgeted !== null) {
|
|
396
|
+
if (budgeted !== null && budgeted.estimateUsd !== null) {
|
|
392
397
|
// Written BEFORE the file rewrite: an unreceipted spend is invisible to
|
|
393
398
|
// the rolling cap, and the cap failing open is the one way this
|
|
394
399
|
// mechanism could become a blank cheque. `actual_usd` is null because
|
|
@@ -421,8 +426,11 @@ function execute(
|
|
|
421
426
|
`and the status flipped to resolved ${when}.\n` +
|
|
422
427
|
(budgeted === null
|
|
423
428
|
? ''
|
|
424
|
-
:
|
|
425
|
-
`
|
|
429
|
+
: budgeted.estimateUsd === null
|
|
430
|
+
? `No receipt appended to ${LEDGER_REL}: the entry states no USD ` +
|
|
431
|
+
'estimate and no cap is configured, so there is no figure to record.\n'
|
|
432
|
+
: `Receipt appended to ${LEDGER_REL} ` +
|
|
433
|
+
`($${budgeted.estimateUsd.toFixed(2)} estimated).\n`) +
|
|
426
434
|
// The dashboard is derived from the file this just rewrote, so it
|
|
427
435
|
// is now stale. Saying so is the same follow-up `renderResumed`
|
|
428
436
|
// already prints for its own file-move suggestion.
|
|
@@ -1351,7 +1351,10 @@ function main(argv?: readonly string[]): number {
|
|
|
1351
1351
|
// leaves behind rather than the one it found. `--check` never archives: a
|
|
1352
1352
|
// gate that mutates the tree it is checking cannot be trusted by CI.
|
|
1353
1353
|
let sweep_out = '';
|
|
1354
|
-
|
|
1354
|
+
// `pending_iron_law_3` too: a 100 % roadmap with bare `[~]` steps is what the
|
|
1355
|
+
// sweep's carry exists for, and gating on `deferred === 0` never spawned it.
|
|
1356
|
+
const before = collect(roadmap_root);
|
|
1357
|
+
if (!args.check && args.archive && unarchived_complete(before).length + pending_iron_law_3(before).length > 0) {
|
|
1355
1358
|
const swept = run_archival_sweep(repo_root);
|
|
1356
1359
|
sweep_out = swept.stdout;
|
|
1357
1360
|
if (swept.stderr) {
|
|
@@ -67,7 +67,10 @@ things follow, and the first is the one under pressure:
|
|
|
67
67
|
2. **Do not bounce to the user just because the council failed.** An
|
|
68
68
|
unreachable council does not upgrade a decidable question into a
|
|
69
69
|
user-required one. Decide it, label it own analysis, state the reason the
|
|
70
|
-
council was unavailable, and name what would change the answer.
|
|
70
|
+
council was unavailable, and name what would change the answer. Not for a
|
|
71
|
+
modification review (a change to the gated surface or one the learning
|
|
72
|
+
lanes originate, ADR-281): there an unavailable council stops the run for
|
|
73
|
+
the user per `docs/contracts/ratification-artifact.md`.
|
|
71
74
|
3. **Escalate only if it is genuinely undecidable without them** — the two
|
|
72
75
|
options are close AND the cost of being wrong is high AND nothing in the tree
|
|
73
76
|
separates them. Then say the council was attempted and why it failed, so the
|
|
@@ -311,9 +314,9 @@ attributed to the host.
|
|
|
311
314
|
identity — that primes the reviewer and collapses diversity.
|
|
312
315
|
- Do NOT silently truncate a too-large bundle — surface the size and
|
|
313
316
|
ask for narrower scope.
|
|
314
|
-
- Do NOT
|
|
315
|
-
|
|
316
|
-
|
|
317
|
+
- Do NOT ask for permission because no cap is set. ADR-279: a spend bound
|
|
318
|
+
applies only where one was set, and the absence of one is not a reason
|
|
319
|
+
to ask. Show the estimate as information and run.
|
|
317
320
|
- Do NOT reuse SDK clients across invocations — re-load keys via
|
|
318
321
|
`load_*_key()` each call.
|
|
319
322
|
|
|
@@ -47,6 +47,10 @@ table)` and render a per-member table. Heuristic: `len(text) / 4` for
|
|
|
47
47
|
input, member's `max_tokens` ceiling for output (actual spend is
|
|
48
48
|
usually lower).
|
|
49
49
|
|
|
50
|
+
This block is **information shown before the run**, not a prompt. Per
|
|
51
|
+
ADR-279 the absence of a cap is not a reason to ask, so there are no
|
|
52
|
+
numbered options here and nothing waits for an answer.
|
|
53
|
+
|
|
50
54
|
> External council call — billable
|
|
51
55
|
>
|
|
52
56
|
> Mode: roadmap · Target: `agents/roadmaps/<name>.md` (~3 KB after redaction)
|
|
@@ -57,21 +61,27 @@ usually lower).
|
|
|
57
61
|
> | openai / gpt-4o | ~750 / 1024 | $0.0121 |
|
|
58
62
|
> | **total** | | **$0.0297** |
|
|
59
63
|
>
|
|
60
|
-
> Budget:
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
+
> Budget: no cap set — token and USD ceilings are `0`.
|
|
65
|
+
|
|
66
|
+
The `Budget:` line states whatever the user configured. With nothing
|
|
67
|
+
configured it says so plainly, as above; with a cap set it names the
|
|
68
|
+
figure and its unit (`50k in / 20k out tokens · USD ceiling: $0.50`).
|
|
69
|
+
A cap that exists is what `on_overrun` fires against, below.
|
|
64
70
|
|
|
65
|
-
### Stale price
|
|
71
|
+
### Stale price table — stated, not asked
|
|
66
72
|
|
|
67
|
-
If `pricing.is_stale(table)` returns true,
|
|
73
|
+
If `pricing.is_stale(table)` returns true, say so in the same block and
|
|
74
|
+
proceed. ADR-237 § 3 already requires that a cost which cannot be
|
|
75
|
+
determined exactly is estimated conservatively and asked nothing about,
|
|
76
|
+
and a stale table is exactly that case:
|
|
68
77
|
|
|
69
|
-
>
|
|
70
|
-
>
|
|
71
|
-
>
|
|
72
|
-
> 3. Cancel
|
|
78
|
+
> Note: price table last updated YYYY-MM-DD and may be stale, so the
|
|
79
|
+
> figures above are an estimate. Refresh with
|
|
80
|
+
> `./scripts-run src/scripts/update_prices`.
|
|
73
81
|
|
|
74
|
-
Do not silently auto-refresh — the user keeps control
|
|
82
|
+
Do not silently auto-refresh — the user keeps control of when prices
|
|
83
|
+
change. Stating the staleness is what keeps that control without
|
|
84
|
+
turning it into a question.
|
|
75
85
|
|
|
76
86
|
### Mid-flow overrun callback (`on_overrun`)
|
|
77
87
|
|
|
@@ -45,14 +45,20 @@ have not migrated yet).
|
|
|
45
45
|
authorization the user already gave. Render the estimate and fan out.
|
|
46
46
|
`on_overrun` still fires per member on breach (below) — that is where
|
|
47
47
|
the user regains the decision.
|
|
48
|
-
- **Billable members with no
|
|
49
|
-
`daily_limit_usd: 0
|
|
50
|
-
|
|
48
|
+
- **Billable members with no cap set** (`max_total_usd: 0` AND
|
|
49
|
+
`daily_limit_usd: 0`, which is the shipped default) → render the
|
|
50
|
+
estimate as information and fan out. **No ask.** Per ADR-279 a spend
|
|
51
|
+
bound applies only where one was set, and the absence of one is not
|
|
52
|
+
a reason to ask.
|
|
51
53
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
+
All three cases now behave the same way: the estimate is information,
|
|
55
|
+
never a prompt. What differs is only whether a cap exists for
|
|
56
|
+
`on_overrun` to fire against.
|
|
57
|
+
|
|
58
|
+
Consumers who want a per-run gate set a small
|
|
54
59
|
`cost_budget.max_total_usd`: every call then breaches and `on_overrun`
|
|
55
|
-
asks, per member.
|
|
60
|
+
asks, per member. That is a bound they chose, which is the only kind
|
|
61
|
+
this procedure recognises.
|
|
56
62
|
4. **Fan out.** Dispatch the bundle to each enabled council member via
|
|
57
63
|
`scripts/ai_council/orchestrator.ts`. Each member receives the
|
|
58
64
|
neutrality preamble from `prompts.ts` plus the artefact — nothing
|
|
@@ -109,7 +109,7 @@ Constraint: **attack the biggest unknown first** (not breadth-first). Repeat unt
|
|
|
109
109
|
| New evidence appears | Re-evaluate all conclusions |
|
|
110
110
|
| Stuck in one skill | Broaden — switch to `universal-project-analysis` |
|
|
111
111
|
| Clear pattern recognized | Narrow — go deep with the right specialist |
|
|
112
|
-
| 3 failed attempts |
|
|
112
|
+
| 3 failed attempts | Change approach — `autonomous-execution`'s mandatory strategy shift, never a stop |
|
|
113
113
|
|
|
114
114
|
## Learning from past analyses
|
|
115
115
|
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"refresh_cadence": "quarterly",
|
|
29
29
|
"upstream": {
|
|
30
30
|
"repo": "derived: RFC 9110/9457/7396/8288 + httpapi WG drafts",
|
|
31
|
-
"sha": "RFC 9110 (STD 97) / 9457 / 7396 / 8288 \u2014
|
|
32
|
-
"last_checked": "2026-
|
|
31
|
+
"sha": "RFC 9110 (STD 97, 2022-06) / 9457 (2023-07, obsoletes 7807) / 7396 (2014-10) / 8288 (2017-10) \u2014 all Standards Track",
|
|
32
|
+
"last_checked": "2026-10-04"
|
|
33
33
|
}
|
|
34
34
|
}
|
|
@@ -234,3 +234,20 @@ When a test fails, do not retry blindly with tweaked assertions until something
|
|
|
234
234
|
## Clarification guard — ambiguous contract → ask
|
|
235
235
|
|
|
236
236
|
If the endpoint contract is ambiguous (unclear status code, optional fields, error envelope shape), do not assume. Ask the user or check the OpenAPI spec / route definition before writing assertions — never guess the response shape from the route name.
|
|
237
|
+
|
|
238
|
+
## The HTTP-assertion idiom, per ecosystem
|
|
239
|
+
|
|
240
|
+
The examples above are Laravel's. The *shape* they teach — assert the status,
|
|
241
|
+
then the body contract, then the side effect, and keep one behavior per test —
|
|
242
|
+
transfers unchanged; the API does not. Resolve the runner with
|
|
243
|
+
`resolve_toolchain` and read its `ecosystems`:
|
|
244
|
+
|
|
245
|
+
| `ecosystems` | Request + assertion surface |
|
|
246
|
+
|---|---|
|
|
247
|
+
| `php` | `$this->getJson(...)` / `assertStatus` / `assertJsonPath` |
|
|
248
|
+
| `js` | `supertest` or the framework's own test client, with `expect(res.status)` |
|
|
249
|
+
| `python` | `httpx.AsyncClient` / framework `TestClient`; `assert res.status_code` |
|
|
250
|
+
| `go` | `httptest.NewServer` + `net/http`, or the router's own `ServeHTTP` |
|
|
251
|
+
|
|
252
|
+
Whatever the surface, the negative tests are not optional: unauthenticated,
|
|
253
|
+
not-owner and cross-tenant each get their own case, per `broken-access-control`.
|
|
@@ -53,7 +53,7 @@ Pattern matching:
|
|
|
53
53
|
- `fix/DEV-1234/description` → extract `DEV-1234`
|
|
54
54
|
- `fix/PROJ-567-some-bug` → extract `PROJ-567`
|
|
55
55
|
- `hotfix/DEV-999` → extract `DEV-999`
|
|
56
|
-
-
|
|
56
|
+
- Read it with `agent-config git:convention ticket` — [`commit-subject`](../git-workflow/references/commit-subject.md) § Reading the ticket
|
|
57
57
|
|
|
58
58
|
If found, auto-fetch the ticket and confirm with the user.
|
|
59
59
|
|
|
@@ -245,14 +245,26 @@ paragraph claiming "the same five answers" directly after a list of four:
|
|
|
245
245
|
| `graph_dead` | `dead` |
|
|
246
246
|
| `graph_query` | `query` |
|
|
247
247
|
| `graph_path` | `path` |
|
|
248
|
+
| `graph_node` | no CLI verb — one symbol's location, in-edges, out-edges and degree |
|
|
248
249
|
|
|
249
250
|
`untested` has no tool of its own; it is a flag on `graph_impact`, because the
|
|
250
|
-
two answer the same question over the same diff and a
|
|
251
|
-
standing context for a boolean. `graph_impact` is the only one that is not
|
|
251
|
+
two answer the same question over the same diff and a separate tool would have
|
|
252
|
+
cost standing context for a boolean. `graph_impact` is the only one that is not
|
|
252
253
|
read-only — it runs `git diff --name-only` to resolve its rev — and
|
|
253
254
|
`graph_dead`'s refusal arrives as `status: "refused"`, never as `status: "ok"`
|
|
254
255
|
with an empty list.
|
|
255
256
|
|
|
257
|
+
`graph_node` is the one entry with no CLI verb behind it, and the one that
|
|
258
|
+
REFUSES a seed it cannot resolve exactly. Every other reader answers about a
|
|
259
|
+
neighbourhood or a set, where a best-guess seed costs the caller one wrong line
|
|
260
|
+
among several; a node view's every field — the location, the degree, both edge
|
|
261
|
+
lists — is a statement about ONE node, so a guess is wrong in all of them at
|
|
262
|
+
once. It resolves on the exact tiers of the same seed ladder (node id, then
|
|
263
|
+
label) and returns `status: "refused"` naming the candidates when a label is
|
|
264
|
+
ambiguous, rather than scoring free text — which is the retrieval class the
|
|
265
|
+
measured null covers (`docs/CLAIMS.md`, `code-graph-retrieval-null`). Use
|
|
266
|
+
`graph_query` when a best-guess match is what you want.
|
|
267
|
+
|
|
256
268
|
**No ordering claim is added here, and no measurement claim either.** These
|
|
257
269
|
verbs are cheaper than reconstructing the same relationship by hand — that is a
|
|
258
270
|
claim about the ALTERNATIVE being a manual reconstruction, not about grep.
|
|
@@ -99,11 +99,10 @@ Read `github.pr_reply_method` from `.agent-settings.yml`:
|
|
|
99
99
|
| `create_review_comment` | `POST /repos/{owner}/{repo}/pulls/{number}/comments` with `{"body": "...", "in_reply_to": comment_id}` |
|
|
100
100
|
| `auto` | Try `replies_endpoint` first. If it works → update setting. If 404/error → try `create_review_comment`. |
|
|
101
101
|
|
|
102
|
-
### 2.
|
|
102
|
+
### 2. No bot icon prefix
|
|
103
103
|
|
|
104
|
-
|
|
105
|
-
-
|
|
106
|
-
- `false` or not set → no prefix.
|
|
104
|
+
Never prefix the reply body with `🤖 ` — `🤖` is on the universal blacklist of
|
|
105
|
+
[`no-decorative-emojis-in-git-surfaces`](../../rules/no-decorative-emojis-in-git-surfaces.md).
|
|
107
106
|
|
|
108
107
|
### 3. API call rules
|
|
109
108
|
|