@event4u/agent-config 16.3.0 → 16.5.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 +178 -78
- package/README.md +2 -2
- package/agents/templates/.ai-council.yml.example +26 -8
- package/dist/agent-src/commands/analyze/inbox.md +10 -7
- 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/design.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 +1 -1
- package/dist/agent-src/commands/fix/ci.md +17 -3
- 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 +3 -3
- 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/next.md +10 -1
- package/dist/agent-src/commands/roadmap/process-full.md +52 -38
- package/dist/agent-src/commands/roadmap/resolve-blockers.md +64 -14
- 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/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 +1 -1
- 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 +67 -52
- 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 +4 -10
- 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/design-antipatterns.md +1 -1
- package/dist/agent-src/guidelines/php/git.md +15 -2
- package/dist/agent-src/rules/active-remediation.md +0 -1
- 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 +0 -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 +0 -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 +0 -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 +5 -5
- 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 +2 -3
- package/dist/agent-src/rules/delegation-policy.md +2 -3
- package/dist/agent-src/rules/design-fidelity.md +0 -1
- 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 +0 -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 +0 -1
- package/dist/agent-src/rules/domain-safety-pii.md +0 -1
- package/dist/agent-src/rules/domain-safety-retention.md +0 -1
- package/dist/agent-src/rules/downstream-changes.md +0 -1
- package/dist/agent-src/rules/engineering-safety-floor.md +0 -1
- 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 +1 -2
- package/dist/agent-src/rules/finance-safety-floor.md +0 -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 +1 -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 +0 -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 +0 -1
- package/dist/agent-src/rules/lethal-trifecta-guard.md +0 -1
- package/dist/agent-src/rules/linked-projects-onboarding-gate.md +0 -1
- package/dist/agent-src/rules/low-impact-corpus-privacy-floor.md +0 -1
- package/dist/agent-src/rules/markdown-safe-codeblocks.md +0 -1
- package/dist/agent-src/rules/media-governance-routing.md +1 -2
- 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 +2 -3
- 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 +2 -3
- package/dist/agent-src/rules/question-not-instruction.md +0 -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 +3 -6
- 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 +0 -1
- package/dist/agent-src/rules/scale-discipline.md +0 -1
- package/dist/agent-src/rules/secret-vcs-guard.md +0 -1
- package/dist/agent-src/rules/security-sensitive-stop.md +0 -1
- 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 +0 -1
- package/dist/agent-src/rules/settings-ask-protocol.md +5 -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 +0 -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 +0 -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 +14 -48
- 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 +0 -1
- package/dist/agent-src/rules/ui-audit-gate.md +1 -2
- package/dist/agent-src/rules/untrusted-input-defense.md +0 -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 +0 -1
- package/dist/agent-src/scripts/gate_budget.ts +47 -23
- package/dist/agent-src/scripts/gate_execute.ts +12 -4
- package/dist/agent-src/skills/accessibility-auditor/data/aria-patterns.csv +2 -0
- package/dist/agent-src/skills/accessibility-auditor/data/manifest.json +3 -3
- 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/bug-analyzer/SKILL.md +1 -1
- package/dist/agent-src/skills/canvas-design/SKILL.md +4 -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-intelligence/references/integration-mapping.md +13 -10
- package/dist/agent-src/skills/design-system-capture/SKILL.md +0 -3
- package/dist/agent-src/skills/estimate-ticket/SKILL.md +1 -1
- package/dist/agent-src/skills/fe-design/references/design-patterns.md +49 -2
- package/dist/agent-src/skills/feature-planning/SKILL.md +1 -1
- package/dist/agent-src/skills/frontend-render-security/SKILL.md +9 -0
- 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 +4 -2
- package/dist/agent-src/skills/image-provider-routing/SKILL.md +16 -5
- package/dist/agent-src/skills/jira-integration/SKILL.md +3 -3
- package/dist/agent-src/skills/logo-generation/SKILL.md +12 -8
- package/dist/agent-src/skills/merge-conflicts/SKILL.md +10 -4
- package/dist/agent-src/skills/po-discovery/SKILL.md +1 -1
- package/dist/agent-src/skills/refine-ticket/SKILL.md +4 -4
- package/dist/agent-src/skills/roadmap-writing/SKILL.md +2 -2
- package/dist/agent-src/skills/skill-improvement-pipeline/SKILL.md +4 -2
- package/dist/agent-src/skills/source-discovery/SKILL.md +1 -1
- package/dist/agent-src/skills/svg-authoring/SKILL.md +318 -0
- package/dist/agent-src/skills/tailwind-engineer/SKILL.md +3 -1
- package/dist/agent-src/skills/testing-anti-patterns/SKILL.md +1 -1
- 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/skills/wireframe/SKILL.md +5 -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/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/skill.md +1 -1
- package/dist/cli/commands/uiRender.js +201 -4
- package/dist/cli/commands/uiRenderAsset.js +1308 -0
- package/dist/cli/commands/uiRenderAssetCompare.js +752 -0
- package/dist/cli/commands/uiRenderAssetGrid.js +265 -0
- package/dist/cli/commands/uiRenderAssetGrounds.js +323 -0
- package/dist/cli/commands/uiRenderAssetIsolation.js +85 -0
- package/dist/cli/commands/uiRenderAssetTypes.js +145 -0
- package/dist/cli/main.js +47 -1
- package/dist/cli/registry.js +2 -1
- package/dist/cli-delegate/check_update_banner.js +195 -119
- package/dist/cli-delegate/{chunk-S4UMZNES.js → chunk-4DBG5K7M.js} +5 -5
- package/dist/cli-delegate/{chunk-TRI6DQZ6.js → chunk-5GPULQBE.js} +60 -42
- package/dist/cli-delegate/{chunk-JQVYKIZA.js → chunk-6SRJTYJS.js} +33 -177
- package/dist/cli-delegate/chunk-6V5FMA3P.js +186 -0
- 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-7HQ52DHU.js → chunk-AL3RZ22D.js} +1 -1
- package/dist/cli-delegate/{chunk-DBH4AHDK.js → chunk-ED7KCMLB.js} +9 -11
- package/dist/cli-delegate/{chunk-NXEILF2K.js → chunk-F3QDG2GT.js} +481 -72
- package/dist/cli-delegate/{chunk-CQWX336L.js → chunk-G5VVIZRC.js} +3 -3
- package/dist/cli-delegate/{chunk-JY2I2DXV.js → chunk-H76PHZBI.js} +137 -60
- package/dist/cli-delegate/chunk-IAYTIIQW.js +67 -0
- package/dist/cli-delegate/{chunk-LIYTLH6O.js → chunk-KXXWJTDO.js} +5 -10
- package/dist/cli-delegate/{chunk-T7L2QK3K.js → chunk-LQOCRFWT.js} +1 -1
- package/dist/cli-delegate/{chunk-S4YWNRKO.js → chunk-MDPPKQCQ.js} +34 -1
- package/dist/cli-delegate/chunk-OAFSJBHH.js +272 -0
- package/dist/cli-delegate/{chunk-GKE7ZVFA.js → chunk-PWX7CKMD.js} +1 -1
- package/dist/cli-delegate/{chunk-NDJLNC6Q.js → chunk-T6BP34WI.js} +1 -0
- package/dist/cli-delegate/{chunk-RQNNW7IF.js → chunk-T7XSJSUQ.js} +433 -632
- package/dist/cli-delegate/{chunk-NQ7WT43P.js → chunk-TMWYUOK4.js} +75 -12
- package/dist/cli-delegate/{chunk-EEHDXSYD.js → chunk-WQWXGIWB.js} +12 -273
- package/dist/cli-delegate/{chunk-QLDHIPWR.js → chunk-XQTPXKFA.js} +1 -1
- 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 +489 -238
- package/dist/cli-delegate/cmd_converge.js +3 -3
- package/dist/cli-delegate/cmd_doctor.js +15 -12
- package/dist/cli-delegate/cmd_doctor_neighbours.js +11 -4
- package/dist/cli-delegate/cmd_explain.js +43 -19
- package/dist/cli-delegate/cmd_export.js +10 -10
- package/dist/cli-delegate/cmd_git_convention.js +1851 -0
- package/dist/cli-delegate/cmd_handoff.js +40 -21
- package/dist/cli-delegate/cmd_mcp_available.js +3 -2
- package/dist/cli-delegate/cmd_migrate.js +3 -3
- package/dist/cli-delegate/cmd_packs_active.js +4 -3
- package/dist/cli-delegate/cmd_prune.js +10 -10
- package/dist/cli-delegate/cmd_route_audit.js +7 -7
- package/dist/cli-delegate/cmd_route_explain.js +5 -5
- package/dist/cli-delegate/cmd_session_recycle.js +9 -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 +10 -10
- package/dist/cli-delegate/cmd_settings_set.js +1 -1
- package/dist/cli-delegate/cmd_sync.js +10 -10
- package/dist/cli-delegate/cmd_uninstall.js +10 -10
- package/dist/cli-delegate/cmd_update.js +7 -7
- package/dist/cli-delegate/cmd_upgrade.js +7 -7
- package/dist/cli-delegate/cmd_validate.js +10 -10
- package/dist/cli-delegate/cmd_versions.js +5 -5
- package/dist/cli-delegate/gate_budget.js +1 -1
- package/dist/cli-delegate/gate_execute.js +2 -2
- package/dist/cli-delegate/roadmap_gates.js +2 -2
- package/dist/discovery/deprecation-report.md +1 -1
- package/dist/discovery/discovery-manifest.json +171 -107
- package/dist/discovery/discovery-manifest.json.sha256 +1 -1
- package/dist/discovery/discovery-manifest.summary.md +7 -7
- package/dist/discovery/dormancy-report.md +1 -1
- package/dist/discovery/orphan-report.md +1 -1
- package/dist/discovery/packs.json +41 -22
- package/dist/discovery/trust-report.md +3 -3
- package/dist/discovery/workspaces.json +16 -11
- package/dist/hooks/dispatch.js +2520 -1924
- package/dist/hooks/dispatch.sha256 +1 -1
- package/dist/hooks/svg_rules.chunk.cjs +1626 -0
- package/dist/hooks/svg_rules.chunk.cjs.sha256 +1 -0
- package/dist/install/install.mjs +462 -431
- package/dist/install/installThinLayer.js +40 -12
- package/dist/install/installedRuleLinks.js +105 -19
- 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 +3063 -2160
- package/dist/router.json +1 -1
- package/dist/scripts/_lib/agent_settings.js +15 -120
- 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 +344 -18
- package/dist/scripts/_lib/package_root.js +68 -0
- package/dist/scripts/_lib/rule_law_section.js +1 -1
- package/dist/scripts/_lib/scan_scope.js +105 -0
- package/dist/scripts/_lib/settings_removed_keys.js +168 -0
- package/dist/scripts/_lib/svg_dom.js +284 -0
- package/dist/scripts/_lib/svg_geometry.js +477 -0
- package/dist/scripts/_lib/svg_motion.js +179 -0
- package/dist/scripts/_lib/svg_rules.js +1337 -0
- package/dist/scripts/_lib/svg_urls.js +67 -0
- package/dist/scripts/_lib/thin_rules.js +80 -3
- package/dist/scripts/lint_svg_asset.js +324 -0
- 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 +23 -81
- package/dist/shared/skillRanking.js +30 -4
- 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 +35 -65
- 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/design-antipatterns.md +1 -1
- package/docs/guidelines/php/git.md +15 -2
- package/package.json +4 -3
- package/src/agent-src/scripts/gate_budget.ts +47 -23
- package/src/agent-src/scripts/gate_execute.ts +12 -4
- 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/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/config/agent-settings.template.yml +79 -312
- 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 +3 -3
- package/src/config/discovery/packs.yml +17 -1
- package/src/config/evaluator-budgets.json +19 -6
- package/src/config/gate-coverage.yml +65 -23
- package/src/config/gate-violation-baselines.json +56 -16
- package/src/config/gitignore-block.txt +19 -0
- package/src/config/hook-bundle-budget.json +1 -1
- package/src/config/release-gate-locality.yml +2 -1
- package/src/config/routing-coverage-seed.json +55 -6
- package/src/config/rule-law-ceilings.json +12 -6
- package/src/config/rule-obligations.json +833 -0
- package/src/install/installThinLayer.ts +76 -10
- package/src/install/installedRuleLinks.ts +105 -17
- 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 +10 -10
- package/src/scripts/_cli/cmd_doctor_neighbours.ts +133 -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 +37 -2
- package/src/scripts/_lib/agent_settings.ts +15 -124
- package/src/scripts/_lib/blocked_by_marker.ts +1 -1
- package/src/scripts/_lib/compile_time_toggles.ts +12 -21
- package/src/scripts/_lib/dispatch_import_closure.ts +163 -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/global_deploy_inventory.ts +74 -0
- package/src/scripts/_lib/graph_feeder_record.ts +236 -13
- package/src/scripts/_lib/installed_layer.ts +448 -23
- package/src/scripts/_lib/knowledge_global.ts +14 -1
- package/src/scripts/_lib/module_reach.ts +456 -0
- package/src/scripts/_lib/neighbour_contradictions.ts +236 -0
- package/src/scripts/_lib/neighbour_tool_use.ts +8 -10
- 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/rule_law_section.ts +1 -1
- 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/svg_dom.ts +318 -0
- package/src/scripts/_lib/svg_geometry.ts +480 -0
- package/src/scripts/_lib/svg_motion.ts +208 -0
- package/src/scripts/_lib/svg_rules.ts +1453 -0
- package/src/scripts/_lib/svg_urls.ts +72 -0
- package/src/scripts/_lib/test_red_state.ts +5 -0
- package/src/scripts/_lib/thin_rules.ts +83 -3
- package/src/scripts/_lib/touched_file_quality.ts +142 -6
- package/src/scripts/_lib/verification_command.ts +59 -0
- package/src/scripts/_lib/verify_clause.ts +27 -17
- package/src/scripts/_lib/worker_budget.ts +1 -1
- package/src/scripts/adr/regenerate_index.ts +16 -1
- package/src/scripts/ai_council/config.ts +7 -7
- 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_team/config.ts +11 -16
- package/src/scripts/audit_user_type_axis.ts +20 -8
- 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/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_evaluator_budgets.ts +4 -0
- package/src/scripts/check_finding_dispositions.ts +88 -25
- 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 +107 -0
- package/src/scripts/check_kernel_edit_ratified.ts +86 -6
- package/src/scripts/check_pack_size.ts +1 -1
- package/src/scripts/check_release_manifest_content.ts +189 -0
- package/src/scripts/check_standing_rule_delivery.ts +96 -0
- package/src/scripts/check_suppression_hygiene.ts +2 -5
- 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/command_suggester/settings.ts +8 -108
- package/src/scripts/command_suggester/types.ts +4 -5
- 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/explain_run.ts +8 -13
- package/src/scripts/generate_git_convention_grammar.ts +127 -0
- package/src/scripts/generate_host_cost_table.ts +20 -3
- package/src/scripts/handoff_context_hook.ts +86 -37
- package/src/scripts/hook_manifest.json +1 -1
- package/src/scripts/hook_manifest.yaml +25 -6
- package/src/scripts/hooks/block_config_weakening.ts +48 -5
- package/src/scripts/hooks/block_plumbing_writes.ts +8 -4
- package/src/scripts/hooks/block_speaking_inbox_dir.ts +16 -1
- package/src/scripts/hooks/concern_registry.ts +2 -0
- package/src/scripts/hooks/delegation_nudge_hook.ts +2 -3
- package/src/scripts/hooks/design_pass_hook.ts +157 -3
- package/src/scripts/hooks/evidence_independence.ts +12 -4
- package/src/scripts/hooks/mcp_usage_observation_hook.ts +121 -0
- package/src/scripts/hooks/push_settle_hook.ts +4 -3
- package/src/scripts/hooks/rule_inject_hook.ts +44 -3
- package/src/scripts/hooks/state_io.ts +8 -4
- package/src/scripts/hooks/svg_obligation.ts +497 -0
- package/src/scripts/hooks/svg_rules_loader.ts +133 -0
- package/src/scripts/hooks/telemetry_usage_hook.ts +7 -46
- package/src/scripts/hooks/turn_end_gate_hook.ts +6 -3
- package/src/scripts/install-hooks.sh +42 -14
- package/src/scripts/install.ts +7 -31
- package/src/scripts/lint_blocker_citations.ts +198 -0
- package/src/scripts/lint_consolidation_lineage.ts +6 -3
- package/src/scripts/lint_design_quality.ts +60 -12
- package/src/scripts/lint_evidence_artifacts.ts +9 -0
- package/src/scripts/lint_hook_concern_budget.ts +10 -21
- package/src/scripts/lint_motion_authority_drift.ts +27 -0
- package/src/scripts/lint_pack_boundaries.ts +406 -28
- 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 +151 -21
- package/src/scripts/lint_rule_skill_pack_reach.ts +17 -0
- package/src/scripts/lint_settings_classes.ts +1 -1
- package/src/scripts/lint_svg_asset.ts +365 -0
- package/src/scripts/lint_ticked_unmet_criteria.ts +165 -0
- package/src/scripts/lint_workflow_security.ts +12 -1
- package/src/scripts/measure_skill_ranker_baseline.ts +5 -0
- package/src/scripts/model_rule_injection.ts +3 -3
- 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/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_installed_rule_links.ts +118 -1
- package/src/scripts/report_module_reach.ts +212 -0
- package/src/scripts/report_obligation_mechanism.ts +16 -18
- package/src/scripts/report_parked_blockers.ts +222 -0
- package/src/scripts/report_required_checks_drift.ts +196 -0
- package/src/scripts/report_skill_ranker_confusion.ts +103 -2
- package/src/scripts/report_standing_payload_by_host.ts +1 -1
- package/src/scripts/routing_doctor.ts +2 -2
- package/src/scripts/schemas/agent-settings.schema.json +17 -31
- package/src/scripts/schemas/command.schema.json +1 -1
- package/src/scripts/schemas/skill.schema.json +1 -1
- package/src/scripts/self_review_gate.ts +39 -2
- package/src/scripts/skill_tools/score_skill_relevance.ts +28 -19
- package/src/scripts/sync_pr_branch.ts +403 -132
- package/src/scripts/trigger_eval_grandfather.json +0 -16
- package/src/server/schemas/settings.ts +33 -177
- package/src/shared/skillRanking.ts +53 -4
- package/dist/cli-delegate/chunk-NYX3L2PZ.js +0 -99
- 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
|
@@ -55,10 +55,10 @@ verbatim, and this class must not become the precedent that erodes it.
|
|
|
55
55
|
**It governs writes, not reads.** Every class is readable by everything. A C
|
|
56
56
|
class does not hide a value; it refuses to let a non-human change it.
|
|
57
57
|
|
|
58
|
-
**It governs writes, not asks.**
|
|
59
|
-
enum (`
|
|
60
|
-
`
|
|
61
|
-
|
|
58
|
+
**It governs writes, not asks.** Two settings ship an `ask` value in their own
|
|
59
|
+
enum (`subagents.adversarial_council`, `decision_engine.on_block`). It was four
|
|
60
|
+
until ADR-229 deleted `worktrees.mode`, and three until `tokens.rich_skills` was
|
|
61
|
+
retired on 2026-10-09.
|
|
62
62
|
Those are C-class here, and that is not a contradiction: the class says who may
|
|
63
63
|
*persist* a new value; the `ask` value says what happens *at runtime* when the
|
|
64
64
|
setting is already set to `ask`. A C-class key set to `ask` still produces a
|
|
@@ -95,9 +95,11 @@ backwards. Tests 1–7 ask *what can the attacker do*; test 8 asks *what can the
|
|
|
95
95
|
attacker hide*. A settings write that erases the trail is not less severe than
|
|
96
96
|
one that raises a budget — it is the one that makes the other invisible.
|
|
97
97
|
|
|
98
|
-
`commands.suggestion.enabled` is the worked counter-example: it
|
|
99
|
-
switch, and it
|
|
100
|
-
authority, and no audit trail — it
|
|
98
|
+
`commands.suggestion.enabled` is the worked counter-example: it was a master
|
|
99
|
+
switch, and it was **A**, because switching it off removed no gate, no spend, no
|
|
100
|
+
authority, and no audit trail — it removed a convenience. (The key itself was
|
|
101
|
+
retired on 2026-10-09 with its default as the fixed behavior; the reasoning
|
|
102
|
+
about its class is what this paragraph keeps.)
|
|
101
103
|
|
|
102
104
|
## B eligibility — the invariant
|
|
103
105
|
|
|
@@ -212,7 +214,7 @@ could **soak** before it bound, and a concern that is off does not run, so the
|
|
|
212
214
|
switch made the soak it was protecting impossible. What decides whether that
|
|
213
215
|
gate fires is now what should have decided it from the start — each detector's
|
|
214
216
|
own trigger conditions. A leftover block warns once and is ignored
|
|
215
|
-
(`REMOVED_KEYS`, `src/scripts/_lib/
|
|
217
|
+
(`REMOVED_KEYS`, `src/scripts/_lib/settings_removed_keys.ts`).
|
|
216
218
|
|
|
217
219
|
One switch survives these deletions on purpose, and it is not the same shape
|
|
218
220
|
wearing a different name.
|
|
@@ -245,10 +247,21 @@ dispatch runs, not WHETHER the layer exists, so they keep their own C rows.
|
|
|
245
247
|
|
|
246
248
|
| Class | Keys |
|
|
247
249
|
|---|---|
|
|
248
|
-
| A — preference |
|
|
250
|
+
| A — preference | 9 |
|
|
249
251
|
| B — consent | 3 |
|
|
250
|
-
| C — guarded |
|
|
251
|
-
| **Total** | **
|
|
252
|
+
| C — guarded | 100 |
|
|
253
|
+
| **Total** | **112** |
|
|
254
|
+
|
|
255
|
+
<!-- derivable-retirement-2026-10-09 -->
|
|
256
|
+
It fell to 112 on 2026-10-09 when `road-to-settings-classes-derivable-surface-stagnation` Phase 2 retired 46 `derivable` keys (17 A, 29 C) whose absence changes no effective default: every reader was removed with the key and left the old default as the only behavior, and each key carries a `REMOVED_KEYS` reason, so an older install that still sets one warns once and boots unchanged. By group: 2.1 output and tone — `telegraph.speak`, `tokens.rich_skills`, `personal.minimal_output`, `personal.play_by_play`, `personal.pr_comment_bot_icon`, `verbosity.intent_announcements`, `verbosity.preview_artifacts`, `verbosity.routine_confirmations`, `verbosity.post_action_reports`; 2.2 reasoning protocol switches — `reasoning.auto_gate`, `reasoning.components.orchestrator`, `reasoning.components.notes_first`, `reasoning.components.grounding`, `reasoning.components.intent`, `reasoning.components.complexity_first`, `reasoning.components.verifier_default`, `reasoning.components.prediction_tracking`, `reasoning.components.decision_ledger`, `reasoning.components.uncertainty_budget`; 2.3 roadmap cadence — `roadmap.skip_pre_run_gate`, `roadmap.dashboard_regen_cadence`; 2.4 command suggestion and PR creation — `commands.auto_detect`, `commands.suggestion.enabled`, `commands.suggestion.confidence_floor`, `commands.suggestion.cooldown_seconds`, `commands.suggestion.max_options`, `commands.create_pr.api_examples`, `commands.create_pr.ui_paths`, `commands.create_pr.api_paths`; 2.5 memory and knowledge sharing — `memory.cadence`, `memory.review_threshold`, `knowledge.global_sharing.redaction.enabled`, `knowledge.global_sharing.redaction.halt_on_trigger`, `knowledge.global_sharing.auto_promote_threshold`, `knowledge.global_sharing.freshness.hypothesis_after_days`, `knowledge.global_sharing.freshness.stale_after_days`; 2.6 hooks and engine — `hooks.concern_budget.max_per_event`, `hooks.concern_budget.hard_fail`, `decision_engine.surface_traces`, `decision_engine.on_block_fallback`, `explain.enable_last`; 2.7 remaining — `project.pr_template`, `pipelines.skill_improvement`, `consistency.cross_source`, `subagents.downshift`, `ai_team.suppress_setup_hint`. Selection and per-key evidence: `agents/evidence/analysis/settings-derivable-retirement-audit-2026-10-09.md`.
|
|
257
|
+
<!-- /derivable-retirement-2026-10-09 -->
|
|
258
|
+
|
|
259
|
+
It rose to 158 on 2026-10-06 when the `git:` section added three C keys —
|
|
260
|
+
`commit_format`, `branch_pattern`, `update_strategy` — so a team's commit
|
|
261
|
+
grammar, branch naming and base-sync operation can be declared once instead of
|
|
262
|
+
measured per repository. All three are `policy`: each is a fact the repository or
|
|
263
|
+
the forge could carry, and each row names why that carrier does not reach every
|
|
264
|
+
install. None is `derivable`, so the anti-regrowth ratchet is untouched.
|
|
252
265
|
|
|
253
266
|
It rose again on 2026-09-13 when `road-to-adversarial-verification-and-long-runs`
|
|
254
267
|
Phase 0 added three C keys: `quality.local_auto_run_in_mission` (`consent` — it
|
|
@@ -380,11 +393,11 @@ the template, which is the drift this contract exists to prevent.
|
|
|
380
393
|
|
|
381
394
|
| Disposition | Keys |
|
|
382
395
|
|---|---|
|
|
383
|
-
| derivable |
|
|
396
|
+
| derivable | 37 |
|
|
384
397
|
| un-inferrable | 10 |
|
|
385
398
|
| consent | 48 |
|
|
386
|
-
| policy |
|
|
387
|
-
| **Total** | **
|
|
399
|
+
| policy | 17 |
|
|
400
|
+
| **Total** | **112** |
|
|
388
401
|
|
|
389
402
|
First measured 2026-08-12 at 140 leaves (derivable 88 · consent 38 ·
|
|
390
403
|
un-inferrable 9 · policy 5), from the table below rather than predicted — the
|
|
@@ -395,8 +408,8 @@ keys were deleted the same day, which is where the −5 `derivable` comes from;
|
|
|
395
408
|
held open rather than deleted.
|
|
396
409
|
|
|
397
410
|
`derivable` is the **deletion queue, not a deletion**: a row stays until the
|
|
398
|
-
mechanism it names actually exists, so
|
|
399
|
-
about to disappear. The count is expected to fall while `un-inferrable` does not
|
|
411
|
+
mechanism it names actually exists, so its count measures work outstanding, not
|
|
412
|
+
keys about to disappear. The count is expected to fall while `un-inferrable` does not
|
|
400
413
|
— those 9 plus whatever survives re-examination in `consent` are the floor this
|
|
401
414
|
surface has, and stating it is the point. `policy` is the smallest class and the
|
|
402
415
|
only one whose action is a *move* rather than a keep or a delete: seven keys carry
|
|
@@ -489,8 +502,6 @@ Rows follow template order, so a diff against the template reads straight down.
|
|
|
489
502
|
| `rule_loading_tier` | C | `__RULE_LOADING_TIER__` | legacy master switch for rule loading | derivable — `discipline_profile` supersedes it with a documented mapping (minimal→off, balanced→essential, full→full) |
|
|
490
503
|
| `lean_projection.mode` | C | `delivery` | `thin` and `delivery` remove rule bodies from the agent's standing context. Two defaults, and this column carries the template one: the shipped template has said `delivery` since ADR-267, while the parser fallback for a value that resolves from no layer stays `eager-all` (ADR-267 decision 4) | derivable — `probe_host_compliance.ts` already computes the per-host thin/eager recommendation |
|
|
491
504
|
| `lean_projection.hosts` | C | `[claude-code]` | decides WHICH hosts a thinning mode may thin, so an added id removes rule bodies from that host's context | policy — the value is a package-level decision the tree already holds: ADR-267 scopes the shipped `delivery` flip to `claude-code` alone. NOT `derivable`, and the distinction is the whole reason for this row: the mechanism that would compute an admissible host set, `admissibleUnderE3` in `src/scripts/_lib/injection_effect.ts`, admits **nothing** today — `src/config/host-injection-effect.json` carries 1 `observed-false` and 8 `unobserved` rows and no `observed-true` — so a derivation would yield `[]` rather than the shipped `[claude-code]`. Naming a mechanism that returns empty as the replacement would put a key in the deletion queue whose deletion would silently change the default. Move target: the ADR plus that census, once a host earns an `observed-true` row |
|
|
492
|
-
| `telegraph.speak` | C | `false` | ships a rule body; a token-cost lever in both directions | derivable — the telegraph kill-criterion bench verdict is a package-level decision, not a per-install one |
|
|
493
|
-
| `tokens.rich_skills` | C | `"on"` | token-spend lever | derivable — the skill's own `token_budget_class: rich` declaration plus the CI ceiling in `lint_token_budget_discipline.ts` |
|
|
494
505
|
| `cost.budgets.daily` | C | `0` | rolling spend ceiling | consent |
|
|
495
506
|
| `cost.budgets.weekly` | C | `0` | rolling spend ceiling | consent |
|
|
496
507
|
| `cost.budgets.monthly` | C | `0` | rolling spend ceiling | consent |
|
|
@@ -502,22 +513,17 @@ Rows follow template order, so a diff against the template reads straight down.
|
|
|
502
513
|
| `personal.ide` | C | `""` | names a binary the agent would execute | un-inferrable |
|
|
503
514
|
| `personal.open_edited_files` | B | `false` | starts invoking that binary on every edit | consent |
|
|
504
515
|
| `personal.rtk_installed` | A | `false` | auto-detected machine fact | derivable — the wizard's own two-stage PATH probe (`which rtk` plus an identity check), which already overwrites the key |
|
|
505
|
-
| `personal.minimal_output` | A | `true` | reply-shape preference | derivable — `direct-answers` Iron Law 3 already fixes reply length per reply |
|
|
506
|
-
| `personal.play_by_play` | A | `false` | narration preference | derivable — `direct-answers`' narration ban is the standing default; an in-turn request is the only thing that lifts it |
|
|
507
516
|
| `personal.canary_name` | B | `""` | arms the session-degradation canary | un-inferrable |
|
|
508
|
-
| `personal.pr_comment_bot_icon` | A | `false` | comment cosmetics | derivable — `no-decorative-emojis-in-git-surfaces` already forbids the icon in PR comments |
|
|
509
517
|
| `personal.pr_progress_comments` | C | `false` | authorises unsolicited outbound comments on a PR | consent |
|
|
510
518
|
| `personal.autonomy` | C | `auto` | suppresses confirmation questions | derivable — `no-cheap-questions`' mode-independent Pre-Send Self-Check decides per question |
|
|
511
519
|
| `personal.user_type` | C | `"__USER_TYPE__"` | master axis filtering the projected surface | derivable — `profile.id` already carries the persona axis over a near-identical value set |
|
|
512
|
-
| `verbosity.intent_announcements` | A | `false` | narration preference | derivable — `personal.play_by_play` already gates the narration carve-out this key sits under |
|
|
513
|
-
| `verbosity.preview_artifacts` | C | `false` | removes pre-action review of commits, PRs, and branches | derivable — the Iron-Law gates already decide which artefacts need a pre-action look |
|
|
514
|
-
| `verbosity.routine_confirmations` | C | `false` | removes confirmation prompts | derivable — `no-cheap-questions`' Pre-Send Self-Check already decides whether a confirmation carries a real trade-off |
|
|
515
520
|
| `verbosity.offer_council_in_delivery` | A | `false` | offers a paid step; never takes it | derivable — `agent-config council:status`, which answers whether there is anything to offer |
|
|
516
|
-
| `verbosity.post_action_reports` | A | `minimal` | size of a status block | derivable — `direct-answers` Iron Law 3 and the reply-close contract already fix the status block to ONE end-summary |
|
|
517
|
-
| `project.pr_template` | C | `.github/pull_request_template.md` | filesystem path whose contents reach an outbound PR | derivable — GitHub's own PR-template resolution order; the key only caches a filesystem lookup |
|
|
518
521
|
| `project.upstream_repo` | C | `""` | destination of outbound improvement PRs | derivable — the installed package's own `package.json` repository field |
|
|
519
522
|
| `project.improvement_pr_branch_prefix` | A | `improve/agent-` | branch-name cosmetics | derivable — the repo's own branch-naming convention, observable from `git branch -r` |
|
|
520
523
|
| `project.audience` | C | `public` | C-test 4 — it governs the agent's own reasoning discipline: `self` makes the § 8-pre demand gate inert. Who a project is built for is a fact only its maintainer knows, so the agent never infers it and never asks; hand-edit or the GUI write route. The default is today's behaviour, so an install that never sets it is unchanged | policy |
|
|
524
|
+
| `git.commit_format` | C | `ticket-scope` | C-test 4 — it selects the grammar every commit the agent writes is held to. The conventional-commits-writing skill forbids adopting a measured convention without the user's answer, and an agent-writable key would be that adoption with the ask removed. The default is today's behaviour | policy — a repository fact the tree can carry instead (commitlint config, a `commit-msg` hook, `CONTRIBUTING.md` § Commits); the skill already ranks those above this key. Kept because a team convention spans repositories that do not yet carry one. A team declares it in `.git-convention.yml` at the repository root (ADR-283), read at `HEAD` over every developer layer, where either value is a declaration. The one agent write is creation: `git:convention init --yes` creates the file once after the user's yes this turn, never over an existing one; the class-C fence still refuses every direct write and edit (ADR-283 § Creation) |
|
|
525
|
+
| `git.branch_pattern` | C | `{type}/{slug}` | C-test 4 — same reasoning as `git.commit_format`, for branch names | policy — NOT `derivable` from `git branch -r` as `project.improvement_pr_branch_prefix` is: a team that merges with `--delete-branch` leaves no merged branch on the remote to sample, so the observation is empty exactly where the convention is strictest. A team declares it in `.git-convention.yml` at the repository root (ADR-283), read at `HEAD` over every developer layer, where either value is a declaration. The one agent write is creation: `git:convention init --yes` creates the file once after the user's yes this turn, never over an existing one; the class-C fence still refuses every direct write and edit (ADR-283 § Creation) |
|
|
526
|
+
| `git.update_strategy` | C | `merge` | C-test 4 — `rebase` makes the proposed base sync a history rewrite plus a `--force-with-lease` push. It authorises nothing (git-history-discipline still asks per rewrite), but an agent that could set it could choose which destructive operation it proposes next. The default is today's behaviour | policy — the forge's own branch rules (a required linear history) carry the same fact; kept because the rule set is not readable from every host. A team declares it in `.git-convention.yml` at the repository root (ADR-283), read at the commit a pull request is judged against, where either value is a declaration. `git:convention init` never writes this key (ADR-283 § Creation) |
|
|
521
527
|
| `github.pr_reply_method` | A | `create_review_comment` | picks between two endpoints of one operation | derivable — the `auto` value already in the enum: the routing detects the working endpoint on first use and writes it back |
|
|
522
528
|
| `delivery.merge` | C | `off` | C-test 1 — it is the configuration half of merge authority, resolved by ADR-268 section 3. An agent that could write it could grant itself the capability the key gates, which is the exact shape the C fence exists to refuse. `off` is today's behavior, so an install that never sets it is unchanged | consent |
|
|
523
529
|
| `delivery.wait_for_ci` | C | `true` | C-test 1 — it authorises the run to keep spending time and tokens driving CI to a verdict rather than ending at push. A standing authorisation over the agent's own consumption is not a preference | consent |
|
|
@@ -532,24 +538,11 @@ Rows follow template order, so a diff against the template reads straight down.
|
|
|
532
538
|
| `chat_history.text_limits.agent` | C | `5000` | cap on how much agent text is written to disk | consent |
|
|
533
539
|
| `chat_history.text_limits.tool` | C | `200` | cap on how much tool payload is written to disk | consent |
|
|
534
540
|
| `chat_history.text_limits.phase` | C | `200` | cap on how much phase text is written to disk | consent |
|
|
535
|
-
| `pipelines.skill_improvement` | A | `true` | proposes a capture; the user still decides | derivable — the pipeline's own trigger condition; the capture is already a user-confirmed proposal |
|
|
536
541
|
| `reasoning.enabled` | C | `true` | master switch for the agent's own reasoning discipline | derivable — the RDP gate's own task-triviality and host self-assessment signals already decide per turn |
|
|
537
|
-
| `
|
|
538
|
-
| `reasoning.components.orchestrator` | C | `true` | a component of the agent's own discipline | derivable — the RDP gate's task signal (complex / multi-component vs trivial) |
|
|
539
|
-
| `reasoning.components.notes_first` | C | `true` | a component of the agent's own discipline | derivable — the RDP gate's task signal; the notes file only exists once the gate engaged |
|
|
540
|
-
| `reasoning.components.grounding` | C | `true` | a component of the agent's own discipline | derivable — `think-before-action`'s own info-gap condition, which `source-discovery-gate` already tests |
|
|
541
|
-
| `reasoning.components.intent` | C | `true` | a component of the agent's own discipline | derivable — the RDP gate's host self-assessment signal |
|
|
542
|
-
| `reasoning.components.complexity_first` | C | `true` | a component of the agent's own discipline | derivable — the RDP gate's task signal (a load-bearing unknown exists or it does not) |
|
|
543
|
-
| `reasoning.components.verifier_default` | C | `true` | disabling it removes a verification step | derivable — the verifier's own structural-complexity gate |
|
|
544
|
-
| `reasoning.components.prediction_tracking` | C | `true` | a component of the agent's own discipline | derivable — the RDP gate's task signal; a turn with no prediction to log produces no entry |
|
|
545
|
-
| `reasoning.components.decision_ledger` | C | `true` | a component of the agent's own discipline | derivable — the escalation litmus in `notes-first-reasoning` (tactical to notes, durable to ADR) |
|
|
546
|
-
| `reasoning.components.uncertainty_budget` | C | `true` | a component of the agent's own discipline | derivable — the RDP gate's task signal; the score feeds adaptive effort only where the gate already engaged |
|
|
547
|
-
| `roadmap.skip_pre_run_gate` | C | `true` | disables a pre-run confirmation gate | derivable — the pre-run gate's own ambiguity condition; a genuine ambiguity prompts regardless |
|
|
548
|
-
| `roadmap.quality_cadence` | C | `end_of_roadmap` | governs when verification runs | derivable — `quality.local_auto_run` decides whether local verification runs, and the `verify-before-complete` evidence gate decides the moment |
|
|
549
|
-
| `roadmap.dashboard_regen_cadence` | A | `every_5_steps` | beat of a derived view | derivable — the dashboard is derived: `roadmap:progress` regenerates deterministically from the roadmap files |
|
|
542
|
+
| `roadmap.quality_cadence` | C | `per_phase` | governs when verification runs. Two defaults: the template and the schema ship `per_phase` (since 2026-09-13), while the reader's prose fallback (`roadmap-process-loop` § 4) and the reference page still say `end_of_roadmap` — which is why the 2026-10-09 retirement left it in the queue. **Aligning them would not be enough to retire it** (council 2026-10-09, degraded 1/2): the reader honours `end_of_roadmap`, `per_phase` and `per_step` with distinct behaviour, so retirement also abolishes an explicit three-way control and a consumer who set `per_step` loses validation frequency they chose. Removing configurability is a separate product decision | derivable — `quality.local_auto_run` decides whether local verification runs, and the `verify-before-complete` evidence gate decides the moment |
|
|
550
543
|
| `roadmap.horizon_weeks` | C | `0` | a non-zero value relaxes a lint's plate-token ban | policy |
|
|
551
|
-
| `roadmap.gate_budget.max_cost_per_run_usd` | C | `
|
|
552
|
-
| `roadmap.gate_budget.max_cost_per_rolling_7d_usd` | C | `
|
|
544
|
+
| `roadmap.gate_budget.max_cost_per_run_usd` | C | `null` | per-run spend ceiling on class-1 gate execution; `null` = none (ADR-279) | consent |
|
|
545
|
+
| `roadmap.gate_budget.max_cost_per_rolling_7d_usd` | C | `null` | rolling spend ceiling on class-1 gate execution; `null` = none (ADR-279) | consent |
|
|
553
546
|
| `planning.closure_pass` | C | `true` | disables the plan-closure pass | derivable — the gate's own confidence conditions; a confident plan passes straight through |
|
|
554
547
|
| `planning.risk_review` | C | `true` | disables the risk-register validator | derivable — `lint_plan_risk_register`'s own scope predicate (ready, non-draft plans only) |
|
|
555
548
|
| `planning.completion_review` | C | `true` | disables the completion-review validator | derivable — `check_completion_review`'s own scope predicate, bound to the current diff hash |
|
|
@@ -561,13 +554,11 @@ Rows follow template order, so a diff against the template reads straight down.
|
|
|
561
554
|
| `design.approximation.enabled` | C | `false` | lets a value change without a per-value confirmation; enabling it is a consumer-facing default flip | consent |
|
|
562
555
|
| `design.approximation.tolerance.color` | C | `null` | decides which colour deviations may be taken silently | policy |
|
|
563
556
|
| `design.approximation.tolerance.length` | C | `null` | decides which length deviations may be taken silently | policy |
|
|
564
|
-
| `consistency.cross_source` | C | `"on"` | disables the cross-source discrepancy gate | derivable — the rule's own trigger condition; a discrepancy exists only when two present sources contradict |
|
|
565
557
|
| `code_graph.consumer_index_paths` | C | `[]` | names where this project's OTHER tool writes a code-graph index, so it widens what the graph reader will load and trust | un-inferrable — the path belongs to a tool this package does not ship and cannot probe for; the built-in list is deliberately vendor-neutral, so only the operator knows where their index lands |
|
|
566
558
|
| `screenshots.identity_allowlist` | C | `[]` | allowlist of identities that ship unredacted | consent |
|
|
567
559
|
| `screenshots.forbid_terminal_capture` | C | `true` | kill-switch over the highest-leak capture path | consent |
|
|
568
560
|
| `screenshots.data_bearing_gate` | C | `"on"` | the human-confirmation gate over a published egress | consent |
|
|
569
561
|
| `code_style.docblocks` | A | `minimal` | code convention | derivable — the project's own linter/style config and the docblock density of the touched file, which `standards-from-config` reads off the tree |
|
|
570
|
-
| `subagents.downshift` | C | `true` | routes to another model tier, which is spend and quality | derivable — the per-slice tier assignment in `auto-dispatch-classification`, which the orchestrator already computes per dispatch |
|
|
571
562
|
| `subagents.quota_arbitrage` | C | `true` | spends from a separate quota pool | consent |
|
|
572
563
|
| `subagents.model_map.lite` | C | `""` | names an external model endpoint | un-inferrable |
|
|
573
564
|
| `subagents.model_map.medium` | C | `""` | names an external model endpoint | un-inferrable |
|
|
@@ -580,41 +571,23 @@ Rows follow template order, so a diff against the template reads straight down.
|
|
|
580
571
|
| `ai_team.model` | C | `auto` | names an external model | un-inferrable |
|
|
581
572
|
| `ai_team.allow_delegate` | C | `false` | grants an external tool write access to the repository | consent |
|
|
582
573
|
| `ai_team.max_calls_per_day` | C | `50` | quota cap on a shared budget | consent |
|
|
583
|
-
| `ai_team.suppress_setup_hint` | A | `false` | hint cosmetics | derivable — the hint's own precondition; `agent-config doctor --check team` already knows whether team mode is configured |
|
|
584
574
|
| `ai_team.review_gate.managed` | C | `false` | governs an upstream review gate | consent |
|
|
585
575
|
| `ai_team.review_gate.max_consecutive_blocks` | C | `3` | circuit-breaker threshold | derivable — the existing N=3 validation-loop budget in `autonomous-execution`, which already bounds consecutive failed attempts on one target |
|
|
586
576
|
| `emergency.orchestration_halt` | C | `false` | the one audited incident switch over the always-on orchestration stack — see § The one exception above | consent |
|
|
587
577
|
| `emergency.orchestration_halt_justification` | C | `""` | required non-empty before the halt may be lifted; an audit-trail field | consent |
|
|
588
578
|
| `onboarding.onboarded` | C | `false` | flipping it bypasses the onboarding gate | derivable — the wizard's own completion artefacts; the onboarding hook can read whether setup actually ran instead of trusting a self-reported flag |
|
|
589
|
-
| `commands.auto_detect` | C | `enabled` | kill-switch for orchestrator auto-detection | derivable — the orchestrator's own confidence-tiered detection table plus the non-interactive TTY/CI probe |
|
|
590
|
-
| `commands.suggestion.enabled` | A | `true` | a convenience layer; governs no gate and no spend | derivable — the suggester's own match-score threshold and cooldown; a prompt that matches nothing already produces silence |
|
|
591
|
-
| `commands.suggestion.confidence_floor` | A | `0.6` | tuning of that convenience layer | derivable — the suggester's calibrated constant, with the existing per-command frontmatter override where one command needs a different bar |
|
|
592
|
-
| `commands.suggestion.cooldown_seconds` | A | `600` | tuning of that convenience layer | derivable — the per-command cooldown tracker, which already reads session behaviour |
|
|
593
|
-
| `commands.suggestion.max_options` | A | `4` | tuning of that convenience layer | derivable — the number of matches that clear the confidence floor, bounded by the numbered-options shape `user-interaction` fixes |
|
|
594
579
|
| `commands.suggestion.blocklist` | C | `[]` | a deny-list | derivable — the same cooldown tracker that reads whether the user picks a suggestion; repeated non-selection is the signal a hand-maintained deny-list stands in for |
|
|
595
580
|
| `commands.create_pr.preview_description` | C | `false` | removes pre-publish review of an outbound artefact | consent |
|
|
596
581
|
| `commands.create_pr.detail_level` | A | `min` | verbosity of a generated body | derivable — the diff the command already reads (changed-file count and risk surface) |
|
|
597
|
-
| `commands.create_pr.api_examples` | A | `true` | verbosity of a generated body | derivable — the command's own API-surface detection plus its grounded-source requirement |
|
|
598
582
|
| `commands.create_pr.screenshots` | C | `false` | puts captured screenshots into a published PR body | consent |
|
|
599
|
-
| `commands.create_pr.ui_paths` | C | `[]` | glob allowlist | derivable — the frontend-surface heuristic the PR-description flow already applies when the glob list is empty |
|
|
600
|
-
| `commands.create_pr.api_paths` | C | `[]` | glob allowlist | derivable — the API-endpoint heuristic the same flow already applies as its documented empty-list fallback |
|
|
601
583
|
| `continuity.auto_record` | C | `"on"` | arms an automatic producer on the normal session-end path | consent |
|
|
602
584
|
| `continuity.run_checkpoints` | C | `"on"` | disabling it removes a recovery artifact a killed run resumes from | consent |
|
|
603
|
-
| `memory.cadence` | C | `always` | suppressing the visibility line hides what the agent learned from the user | derivable — the hits/asks count the memory-visibility summary already computes; the line only exists when memory was consulted |
|
|
604
|
-
| `memory.review_threshold` | A | `10` | when a review preview surfaces; governs no gate | derivable — the unreviewed-intake count `/memory load` already computes before rendering its preview |
|
|
605
585
|
| `memory.redact_patterns` | C | `[]` | deny-list of secret and PII regexes | policy |
|
|
606
586
|
| `memory.session_index` | A | `"off"` | injects a compact index at session start | derivable — the row cap and index cost the mechanism already computes; the flag only holds an unproven ship-criterion open |
|
|
607
587
|
| `memory.learn_on_session_end` | B | `false` | turns on automatic memory writes at session end | consent |
|
|
608
588
|
| `knowledge.global_sharing.enabled` | C | `true` | kill-switch over cross-project egress | consent |
|
|
609
589
|
| `knowledge.global_sharing.allowed_tiers` | C | `[public]` | allowlist for that egress | consent |
|
|
610
|
-
| `knowledge.global_sharing.redaction.enabled` | C | `true` | disabling it removes the redaction floor | derivable — the redaction scan's own match result; no violation means no-op, so the flag can only remove a floor on an already-authorised path |
|
|
611
|
-
| `knowledge.global_sharing.redaction.halt_on_trigger` | C | `true` | disabling it removes halt-and-prompt | derivable — the violations list the redaction scan already returns; a non-empty list IS the halt condition |
|
|
612
|
-
| `knowledge.global_sharing.auto_promote_threshold` | C | `2` | threshold governing that egress | derivable — the distinct-repo count the promotion candidates already compute; promotion stays suggest-only and human-confirmed |
|
|
613
|
-
| `knowledge.global_sharing.freshness.hypothesis_after_days` | A | `90` | freshness heuristic on a card already shared | derivable — the age computation over the card's own `last_verified` provenance footer |
|
|
614
|
-
| `knowledge.global_sharing.freshness.stale_after_days` | A | `180` | freshness heuristic on a card already shared | derivable — the same age computation; the cut-point is advisory because the card is a cache, never a source of truth |
|
|
615
|
-
| `hooks.concern_budget.max_per_event` | C | `8` | budget cap on hook concerns | derivable — the gate's own constant over `hook_manifest.yaml`, with no consumer-situational input to read |
|
|
616
590
|
| `hooks.concern_budget.tier1_concerns` | C | `[]` | allowlist of concerns permitted to fail closed | policy |
|
|
617
|
-
| `hooks.concern_budget.hard_fail` | C | `false` | weakens the budget gate to warn-only | derivable — the gate's own `--strict` argv, which CI already passes to sibling gates |
|
|
618
591
|
| `hooks.injection_scan.enabled` | C | `false` | the prompt-injection scanner | derivable — the scanner's own signature match on the tool envelope; warn-only and silent on no hit |
|
|
619
592
|
| `hooks.rtk_wrap.enabled` | C | `false` | configures code that runs on every tool call | derivable — the live PATH and identity probe the hook already runs; silent when rtk is absent |
|
|
620
593
|
| `hooks.design_slop.enabled` | C | `false` | configures code that runs on every tool call | derivable — the rule-registry match plus the hook's own per-signature silence cap |
|
|
@@ -624,15 +597,12 @@ Rows follow template order, so a diff against the template reads straight down.
|
|
|
624
597
|
| `hooks.code_graph.enabled` | C | `false` | INERT since 2026-09-07 — the nudge it gated was replaced by `code-graph-context`, which reads no flag. The KEY stays registered because `docs/MIGRATION.md` commits to exactly that ("the surfaces stay registered and disabled"): removing it is a breaking change for any consumer who set it, and the row was briefly marked REMOVED, which left the template's own leaf unclassified. Classified, not deleted. | derivable — the index-detection probe the replacement hook already runs; no index means silence |
|
|
625
598
|
| `hooks.suggestion_capture.enabled` | C | `false` | configures code that runs at every turn end and every prompt | consent |
|
|
626
599
|
| `hooks.verify_before_complete.touched_file_quality` | C | `"off"` | C-test 1 — it decides whether the stop hook SPAWNS the project's own quality commands over the turn's edited files, so the cost it authorises is other people's processes on the operator's machine | consent — running a consumer's toolchain against their working tree is a thing to be permitted, not a fact the tree can derive. The three values are not a severity ladder the agent may climb: `shadow` records, `warn` adds one advisory line, and the flip from one to the other is the owner decision `road-to-touched-files-that-pass-their-own-tools` 2.3 defers |
|
|
627
|
-
| `decision_engine.surface_traces` | C | `false` | the decision engine’s own black box; the agent must not be able to close it | derivable — the engine's own active-gate state; there is nothing to surface when no gate fired |
|
|
628
600
|
| `decision_engine.min_confidence` | C | `"off"` | the confidence gate | derivable — the confidence band the scoring engine already computes at the plan phase |
|
|
629
601
|
| `decision_engine.block_on_risk` | C | `"off"` | the risk-class gate | derivable — the risk class the engine already computes at the implement phase; the Hard Floor covers the irreversible end unconditionally |
|
|
630
602
|
| `decision_engine.require_memory_hits` | C | `false` | a phase gate | derivable — the memory-hit count at the refine phase; its own template comment says the flag delays that soak |
|
|
631
603
|
| `decision_engine.on_block` | C | `stop` | `warn` advances past a gate that fired | derivable — the non-interactive probe decides ask-versus-stop, and the fired gate's own action decides the rest |
|
|
632
604
|
| `decision_engine.ask_timeout_seconds` | C | `30` | how long a fired gate waits before falling back | derivable — the same non-interactive probe: where nobody can answer there is nothing to wait for |
|
|
633
|
-
| `decision_engine.on_block_fallback` | C | `stop` | fail-safe versus fail-open after that timeout | derivable — the same non-interactive detection; a gate that fires with no one to answer resolves fail-safe by construction |
|
|
634
605
|
| `update_check.enabled` | C | `true` | a background safety check; disabling it pins the user to known-vulnerable code | consent |
|
|
635
|
-
| `explain.enable_last` | A | `true` | a read-only diagnostics surface | derivable — the presence of a work-state trace to render; with no trace the command is already a no-op |
|
|
636
606
|
| `legal_review_prep.acknowledged` | C | `false` | the consent gate; the safety floor requires the wizard checkbox | consent |
|
|
637
607
|
| `legal_review_prep.require_council` | C | `true` | a fail-closed defence-in-depth gate | consent |
|
|
638
608
|
|
|
@@ -150,6 +150,45 @@ artifact exists because the issue is still owed, and "it failed one of six" is n
|
|
|
150
150
|
something a later triage can act on. A deferral with no reason is the
|
|
151
151
|
note-and-forget this rule already forbids, wearing an artifact's clothes.
|
|
152
152
|
|
|
153
|
+
## fix-what-you-see — why a separate rule, and its activation gap
|
|
154
|
+
|
|
155
|
+
Moved verbatim from [`fix-what-you-see`](../../../src/rules/fix-what-you-see.md)
|
|
156
|
+
on 2026-10-06 to pay for the standing-payload cost of `neighbour-precedence`;
|
|
157
|
+
the rule keeps a pointer here.
|
|
158
|
+
|
|
159
|
+
### Why separate from `active-remediation`
|
|
160
|
+
|
|
161
|
+
That rule forbids ignoring a spotted issue and its ladder permits **note + ask**.
|
|
162
|
+
Two properties made it insufficient, both measured 2026-08-20: it is `type: auto`
|
|
163
|
+
on `refactor`/`legacy`/`cleanup` triggers — **none of which a failing CI job
|
|
164
|
+
matches**, so it does not load when the obligation matters most — and its
|
|
165
|
+
note-and-ask tier is what let a session name a red check's cause, name the
|
|
166
|
+
file's author, and hand it back still red.
|
|
167
|
+
|
|
168
|
+
Mechanics (fix-now size criteria, follow-up shape) stay there; this rule only
|
|
169
|
+
deletes the two escapes.
|
|
170
|
+
|
|
171
|
+
### Honest activation gap — this rule is `auto`, and it wanted to be `always`
|
|
172
|
+
|
|
173
|
+
It shipped `auto` for a budget reason, not a design one, and the gap that leaves
|
|
174
|
+
is exactly the one it was written to close: **a red check the agent sees in tool
|
|
175
|
+
output triggers nothing.** Keyword triggers match the PROMPT. So the rule loads
|
|
176
|
+
when a human says "CI is red" or "not my test", and does NOT load when a test
|
|
177
|
+
run comes back red and nobody has said a word.
|
|
178
|
+
|
|
179
|
+
`check_always_budget` is the reason: the extended always-budget sat at
|
|
180
|
+
60,252 / 60,254 chars — **two characters of headroom** — and the cap is a
|
|
181
|
+
ratchet that may only move down. The other nine always-rules are the kernel,
|
|
182
|
+
which `block_kernel_rule_writes` denies agent writes to, so no room can be made
|
|
183
|
+
from this side. A 2,332-char rule puts the total at 103.9 %.
|
|
184
|
+
|
|
185
|
+
Closing the gap needs one of: the ext-cap ratchet opened deliberately (a
|
|
186
|
+
maintainer decision, recorded), a kernel rule shortened to make room, or a
|
|
187
|
+
`post_tool_use` carrier that notices a non-zero verification exit — the only
|
|
188
|
+
option that would fire on tool output rather than on wording. Until then, `auto`
|
|
189
|
+
plus this paragraph is the honest state: the obligation is real, its delivery is
|
|
190
|
+
partial, and the partiality is named rather than implied away.
|
|
191
|
+
|
|
153
192
|
## See also
|
|
154
193
|
|
|
155
194
|
- [`active-remediation`](../../../src/rules/active-remediation.md) — the rule this file details (Iron Law + ladder + live-security carve-out).
|
|
@@ -69,7 +69,7 @@ If you need an ignored skill: read its SKILL.md directly, apply guidance, then a
|
|
|
69
69
|
GitHub Copilot has no `PostToolUse` hook surface, so
|
|
70
70
|
`scripts/context_hygiene_hook.ts` cannot run structurally and
|
|
71
71
|
`agents/state/context-hygiene.json` is not maintained automatically
|
|
72
|
-
(tool-call count,
|
|
72
|
+
(tool-call count, freshness milestones at 20/40/60).
|
|
73
73
|
|
|
74
74
|
The cooperative path: track turns and tool-loop signals from memory
|
|
75
75
|
during the conversation and apply the suggest-a-new-chat / 3-failure
|
|
@@ -37,19 +37,17 @@ from a ticket/spec that carries a second source:
|
|
|
37
37
|
4. **Classify confidence.** High = the sources plainly disagree, or the missing
|
|
38
38
|
behavior is clearly load-bearing. Low = the "conflict" is a plausible
|
|
39
39
|
re-reading, or the missing behavior may be intentionally out of scope.
|
|
40
|
-
5. **
|
|
41
|
-
|
|
40
|
+
5. **Batch** every surviving discrepancy into ONE question folded into this
|
|
41
|
+
turn's single `ask-when-uncertain` prompt.
|
|
42
42
|
|
|
43
|
-
##
|
|
43
|
+
## Noise control
|
|
44
44
|
|
|
45
45
|
The rule fires only under a real trade-off (it must pass the
|
|
46
|
-
`no-cheap-questions` Pre-Send Self-Check).
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
| `auto` | Surface + ask. | State as an explicit assumption and proceed (no question). |
|
|
52
|
-
| `off` | No cross-source checking — legacy behavior. | No cross-source checking. |
|
|
46
|
+
`no-cheap-questions` Pre-Send Self-Check). Every real discrepancy, high- or
|
|
47
|
+
low-confidence, is surfaced and asked — batched into the same question. That
|
|
48
|
+
is the fixed behavior since the `consistency.cross_source` key (which offered
|
|
49
|
+
`auto` and `off`) was retired on 2026-10-09 with this, its default, as the only
|
|
50
|
+
mode.
|
|
53
51
|
|
|
54
52
|
Batching is the anti-noise mechanism: N discrepancies for one artefact become
|
|
55
53
|
one numbered-options block, never N prompts. Plain vagueness (a single unclear
|
|
@@ -141,8 +141,9 @@ is therefore **agent self-assessed**, never looked up (roadmap L10/L17):
|
|
|
141
141
|
**One** constraint-light scaffold ships — no heavy/light content variants, since
|
|
142
142
|
two variants would be a hidden model→band table. A standard host **expands it on
|
|
143
143
|
request**. Two gates, both default-on: automatic (task signal + agent
|
|
144
|
-
self-assessment) + the user `reasoning
|
|
145
|
-
|
|
144
|
+
self-assessment) + the user's `reasoning.enabled` hard off. The per-component
|
|
145
|
+
toggles and `reasoning.auto_gate` were retired on 2026-10-09; the automatic gate
|
|
146
|
+
decides per component.
|
|
146
147
|
|
|
147
148
|
## Notes template grounding
|
|
148
149
|
|
|
@@ -18,7 +18,7 @@ on user request.
|
|
|
18
18
|
| File | Git | Scope | Owner | Example values |
|
|
19
19
|
|---|---|---|---|---|
|
|
20
20
|
| `.agent-project-settings.yml` | **committed** | team / repo | lead maintainer | `project.stack`, `quality.php.tools`, `memory.dogfood` |
|
|
21
|
-
| `~/.event4u/agent-config/agent-settings.yml` | **n/a** (outside repo) | individual developer · cross-project | individual | `name`, `ide`, `rule_loading_tier`, `personal.
|
|
21
|
+
| `~/.event4u/agent-config/agent-settings.yml` | **n/a** (outside repo) | individual developer · cross-project | individual | `name`, `ide`, `rule_loading_tier`, `personal.autonomy` — the full whitelist is `MERGEABLE_KEYS` in `scripts/_lib/agent_settings.ts` (legacy `~/.config/agent-config/agent-settings.yml` read as fallback) |
|
|
22
22
|
| `agents/settings/.agent-settings.yml` | **gitignored** | individual developer · this project | individual | `personal.ide`, `personal.user_name`, `subagents.max_parallel`, `onboarding.onboarded` | <!-- ref-ignore -->
|
|
23
23
|
|
|
24
24
|
> **Canonical location (ADR-038):** the developer file lives in the settings
|
|
@@ -27,6 +27,12 @@ on user request.
|
|
|
27
27
|
> `.agent-settings.yml` is read as a **back-compat fallback** and is migrated
|
|
28
28
|
> into the canonical location by `install` on the next run.
|
|
29
29
|
|
|
30
|
+
The `git.*` keys (`commit_format`, `branch_pattern`, `update_strategy`) have a
|
|
31
|
+
fourth home a team uses instead: `.git-convention.yml` at the repository root,
|
|
32
|
+
committed, read over every file above (ADR-283). `update_strategy` is read from
|
|
33
|
+
it at the commit a pull request is judged against, the other two at `HEAD`.
|
|
34
|
+
The team file carries no `git.*` key.
|
|
35
|
+
|
|
30
36
|
All three are YAML. Schemas:
|
|
31
37
|
|
|
32
38
|
- Developer (project-local): [`agent-settings.md`](../../../src/agent-src/templates/agent-settings.md).
|
|
@@ -45,6 +51,12 @@ Lowest priority → highest priority:
|
|
|
45
51
|
4. agents/settings/.agent-settings.yml (developer file, gitignored; legacy repo-root .agent-settings.yml read as fallback — ADR-038) <!-- ref-ignore -->
|
|
46
52
|
```
|
|
47
53
|
|
|
54
|
+
For the `git.*` keys, `.git-convention.yml` sits above all four layers when it
|
|
55
|
+
sets a key, and either value there is a declaration; a key it does not set
|
|
56
|
+
falls through to this order, read at the repository root rather than per
|
|
57
|
+
directory. `agent-config git:convention show` prints the value in force and a
|
|
58
|
+
differing checkout value as a candidate.
|
|
59
|
+
|
|
48
60
|
Keys from higher layers win unless a lower layer marks them
|
|
49
61
|
`locked` (team file only). The user-global file does **not** support
|
|
50
62
|
`locked` — its purpose is cross-project comfort, never policy.
|
|
@@ -224,7 +224,7 @@ Keep aligned with the dashboard counter in `scripts/update_roadmap_progress.ts`
|
|
|
224
224
|
|
|
225
225
|
See [`guarded-baseline`](guarded-baseline.md).
|
|
226
226
|
|
|
227
|
-
**Dashboard regen cadence —
|
|
227
|
+
**Dashboard regen cadence — fixed batching.** The checkbox flip is non-batchable. The **subprocess regen** (`./agent-config roadmap:progress`) batches to every 5th closed step — a fixed cadence since the `roadmap.dashboard_regen_cadence` key was retired on 2026-10-09 with that default as the behavior. Run end, phase boundary, and any file-shape touch (rename / phase add / archive — Iron Law 1) always force an immediate regen.
|
|
228
228
|
|
|
229
229
|
**Blockers follow the same cadence as checkboxes.** Clearing a `## Blockers` entry (per `templates/roadmaps.md` rule 20) flips its `Status: resolved` and regenerates the dashboard in the same reply — Iron Law 1's "same response" obligation applies to blocker resolution exactly as it applies to a checkbox flip.
|
|
230
230
|
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
# Self-Improvement Pipeline
|
|
2
2
|
|
|
3
3
|
Five-stage flow that turns real project experience into reviewed
|
|
4
|
-
rule / skill / command / guideline changes.
|
|
5
|
-
|
|
4
|
+
rule / skill / command / guideline changes. Self-modification is a goal
|
|
5
|
+
(ADR-281): for a proposal scoped to the package the approval is the AI
|
|
6
|
+
council's ratification record, and the user is its last rung; a change a
|
|
7
|
+
user asked for keeps that user's approval as now. A passing record makes a
|
|
8
|
+
change ready, not landed — every upstream change still ships via a PR.
|
|
6
9
|
|
|
7
10
|
Referenced by `road-to-curated-self-improvement.md`. Consumed by the live
|
|
8
11
|
artifacts — the `skill-improvement-trigger` rule and the existing skills
|
|
@@ -84,7 +87,11 @@ blocks — it does not hand a half-filled doc to the next stage.
|
|
|
84
87
|
|
|
85
88
|
### Stage 5 — Upstream
|
|
86
89
|
|
|
87
|
-
- **Trigger:** gate passed AND a
|
|
90
|
+
- **Trigger:** gate passed AND, for a proposal scoped to the package, a
|
|
91
|
+
council ratification record whose `subject` matches the proposal's change
|
|
92
|
+
passed it (ADR-281); where the council cannot conclude, the user decides by
|
|
93
|
+
the route ADR-281 § 5 names. A proposal scoped to a consumer's own project
|
|
94
|
+
needs that user's approval, as before.
|
|
88
95
|
- **Executor:** `upstream-contribute` skill. Refuses invocation if
|
|
89
96
|
the proposal frontmatter is not `stage: gated`.
|
|
90
97
|
- **Input:** gated proposal doc.
|
|
@@ -221,6 +221,42 @@ Before creating or modifying:
|
|
|
221
221
|
5. Is this entrypoint → AGENTS.md
|
|
222
222
|
6. Is this behavior hint → copilot-instructions.md
|
|
223
223
|
|
|
224
|
+
## Rich-class size band — moved from `token-budget-discipline`
|
|
225
|
+
|
|
226
|
+
Moved verbatim from the rule on 2026-10-06 to pay for the standing-payload cost
|
|
227
|
+
of `neighbour-precedence`; the rule keeps the band and a pointer here.
|
|
228
|
+
|
|
229
|
+
### Candidate rich skills (justified, not exhaustive)
|
|
230
|
+
|
|
231
|
+
These skills are approved `rich` by this roadmap's council:
|
|
232
|
+
|
|
233
|
+
| Skill | Justification summary |
|
|
234
|
+
|---|---|
|
|
235
|
+
| `design-intelligence` | 11 corpus CSVs + 16 design-language prose specs + a 10-category checklist; grounded selection needs the full reference to avoid random corpus subsets |
|
|
236
|
+
| `typography-system` | Modular-scale math + 6 worked example type systems; condensing to "use 1.25 ratio" produces agents that invent arbitrary px values |
|
|
237
|
+
| `accessibility-auditor` | WCAG criteria are non-negotiable detail; every criterion has a testable condition + failure mode; compression loses the test procedures |
|
|
238
|
+
| `design-system-capture` (Phase 6) | Writes + maintains DESIGN.md + PRODUCT.md; needs full templates + worked examples to generate useful artifacts |
|
|
239
|
+
|
|
240
|
+
### The size band is measured, and only its ceiling is gated
|
|
241
|
+
|
|
242
|
+
The `rich` band is **2,000–3,500 tokens** (ADR-217, `docs/decisions/ADR-217-rich-class-band-measured-and-enforced.md`).
|
|
243
|
+
It was 2,000–5,000 and enforced by nothing until that record: measured with the
|
|
244
|
+
exact BPE tokenizer, the largest rich artifact in the tree is 3,331 tokens, so
|
|
245
|
+
the old ceiling described no artifact that existed. An unused permission costs
|
|
246
|
+
nothing until someone uses it.
|
|
247
|
+
|
|
248
|
+
`lint_token_budget_discipline.ts` gates the **ceiling** and publishes every rich
|
|
249
|
+
artifact's size on the green path. It does **not** gate the floor, and that is a
|
|
250
|
+
finding rather than an omission: running the check once surfaced a 1,931-token
|
|
251
|
+
skill legitimately holding the class, because `rich` buys exemption from
|
|
252
|
+
condensation — a claim about what compression would *lose*, not about file size.
|
|
253
|
+
The published study supplies a degradation threshold, which is a ceiling.
|
|
254
|
+
Nothing measures a minimum.
|
|
255
|
+
|
|
256
|
+
Measurement is exact where `js-tiktoken` resolves and the character proxy where
|
|
257
|
+
it does not; the gate says which, and a proxy reading within its own error
|
|
258
|
+
margin of the ceiling is reported **unresolved** rather than classified.
|
|
259
|
+
|
|
224
260
|
---
|
|
225
261
|
|
|
226
262
|
# Final principle
|
|
@@ -114,7 +114,7 @@ Within-project invariants + repetition caps. Override = declare the value in
|
|
|
114
114
|
| V2 | Glassmorphism as decoration (`backdrop-blur` + `bg-white/10`) with no functional depth hierarchy | Model defaults to it for "premium feel"; result looks like 2021 Material You clip-art | Element genuinely sits above a complex, blurred background layer; use sparingly and only for top-level floating surfaces | craft-presumption | delete → reduce | static |
|
|
115
115
|
| V3 | Ghost card: `border: 1px solid` + box-shadow ≥ 16px spread together | The combination creates visual noise — the ghost card signals no confident decision about depth | Choose either border OR shadow to indicate depth; never both on the same surface | invariant | delete → reduce | static |
|
|
116
116
|
| V4 | Over-rounded small cards or badges: `border-radius` > 16px on elements < 200px wide | Excessive rounding on small surfaces looks toy-ish; standard cap is 12–16px | Pill shape (`border-radius: 9999px`) is intentional on single-line tags/chips only | craft-presumption | retune | static |
|
|
117
|
-
| V5 | Hand-drawn or illustrated SVG icons mixed with crisp icon-system icons | Visual register collision; instantly reads as "generated asset" | Intentional illustrative section (hero illustration, empty-state art); isolate from the icon system | invariant | replace | render |
|
|
117
|
+
| V5 | Hand-drawn or illustrated SVG icons mixed with crisp icon-system icons | Visual register collision; instantly reads as "generated asset" | Intentional illustrative section (hero illustration, empty-state art); isolate from the icon system. A genuinely missing glyph is authored under [`svg-authoring`](../../src/skills/svg-authoring/SKILL.md) against the incumbent set's own grid | invariant | replace | render |
|
|
118
118
|
| V6 | Repeating diagonal stripes as a background texture | A cliché background default; reads as generated CSS art | Brand explicitly uses pattern backgrounds (e.g., a textile brand); document the stripe definition | style-preference | delete | static |
|
|
119
119
|
| V7 | Nested cards: a card inside a card inside a card | Depth hierarchy collapses; user cannot parse elevation intent | A truly three-level hierarchy (e.g., project → board → card); ensure each level has distinct visual weight | invariant | delete → reduce | render |
|
|
120
120
|
| V9 | Noise or grain texture laid over a gradient as a "premium" surface default | The visual sibling of V6's diagonal stripes — a generated-CSS-art texture reached for to make a flat gradient look considered, applied because it is available rather than because the surface needed a texture | The texture is part of a documented brand surface treatment (a print-inspired or analog-photographic identity) with the grain opacity defined as a token, not chosen per surface | style-preference | delete | render |
|
|
@@ -34,6 +34,11 @@ hotfix/DEV-999/critical-payment-bug
|
|
|
34
34
|
- Always include the Jira ticket ID when one exists
|
|
35
35
|
- Use kebab-case for the description part
|
|
36
36
|
- Keep branch names short but descriptive
|
|
37
|
+
- The shape above is this guideline's convention; the agent renders branches from `git.branch_pattern` per [`commit-subject`](../../../src/skills/git-workflow/references/commit-subject.md).
|
|
38
|
+
- A team declares `git.branch_pattern`, `git.commit_format` and
|
|
39
|
+
`git.update_strategy` in `.git-convention.yml` at the repository root, committed
|
|
40
|
+
so every checkout, worktree and CI run reads the same value; there either value
|
|
41
|
+
is a declaration. `agent-config git:convention show` prints what is in force.
|
|
37
42
|
|
|
38
43
|
## Commit Messages
|
|
39
44
|
|
|
@@ -68,9 +73,14 @@ that is not better classified as `build`, `ci`, or `docs`.
|
|
|
68
73
|
|
|
69
74
|
Use a scope when it adds clarity. Good scopes:
|
|
70
75
|
|
|
71
|
-
- Jira ticket ID: `
|
|
76
|
+
- Jira ticket ID: placed per [`commit-subject`](../../../src/skills/git-workflow/references/commit-subject.md) § Placing the ticket
|
|
72
77
|
- Module/area: `api`, `auth`, `skills`, `rules`, `ci`, `frontend`, `linter`
|
|
73
78
|
|
|
79
|
+
Under `git.commit_format: ticket-conventional` the ticket leads the subject and is
|
|
80
|
+
**never** in the scope (`DEV-1234 feat(exporter-models): …`); tooling that parses
|
|
81
|
+
subjects (commitlint, release automation, changelog generators) must be
|
|
82
|
+
configured for that prefixed form.
|
|
83
|
+
|
|
74
84
|
Do not add a scope if it adds no value. `fix(core): fix typo` → just `fix: fix typo`.
|
|
75
85
|
|
|
76
86
|
### Description rules
|
|
@@ -157,7 +167,10 @@ Before writing the commit message:
|
|
|
157
167
|
|
|
158
168
|
## Pull Requests
|
|
159
169
|
|
|
160
|
-
- PR title
|
|
170
|
+
- PR title per [`commit-subject`](../../../src/skills/git-workflow/references/commit-subject.md) § A title that becomes a commit
|
|
171
|
+
- Bring the branch up to date per `git.update_strategy` — merge the base in
|
|
172
|
+
(default) or rebase onto `origin/main` and push with `--force-with-lease`;
|
|
173
|
+
see `git-workflow` › `references/branch-update.md`
|
|
161
174
|
- Fill in the PR template (checklist, description, testing notes)
|
|
162
175
|
- Link the Jira ticket in the PR description
|
|
163
176
|
- Ensure all quality gates pass before requesting review
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@event4u/agent-config",
|
|
3
3
|
"mcpName": "io.github.event4u-app/agent-config",
|
|
4
|
-
"version": "16.
|
|
4
|
+
"version": "16.5.0",
|
|
5
5
|
"description": "Governed skills, rules and commands for AI coding tools (Claude Code, Cursor, Windsurf, Copilot) — every claim machine-checked, including the counts in these badges.",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"private": false,
|
|
@@ -80,7 +80,7 @@
|
|
|
80
80
|
"scripts": {
|
|
81
81
|
"build:cli": "tsc -p tsconfig.json && chmod +x dist/cli/agent-config.js",
|
|
82
82
|
"build:install-bundle": "esbuild src/scripts/install.ts --bundle --platform=node --format=esm --target=node20 --define:__AGENT_CONFIG_BUNDLE__=true --outfile=dist/install/install.mjs --banner:js=\"import { createRequire as __acCreateRequire } from 'node:module'; const require = globalThis.require ?? __acCreateRequire(import.meta.url);\"",
|
|
83
|
-
"build:hooks": "esbuild src/scripts/hooks/dispatch_entry.ts --bundle --platform=node --format=esm --target=node20 --define:__AGENT_CONFIG_BUNDLE__=true --outfile=dist/hooks/dispatch.js --banner:js=\"import { createRequire as __acCreateRequire } from 'node:module'; const require = globalThis.require ?? __acCreateRequire(import.meta.url); const __acPath = require('node:path'); const __acFs = require('node:fs'); const __acUrl = require('node:url'); const __acReal = (p) => { try { return __acFs.realpathSync(p); } catch { return p; } }; const __acSelf = __acReal(__acUrl.fileURLToPath(import.meta.url)); if (process.argv[1] !== undefined && __acReal(__acPath.resolve(process.argv[1])) === __acSelf) { globalThis.__AC_HOOKS_BUNDLE_DIRECT = true; process.argv = [process.argv[0], __acSelf + '.__direct__', ...process.argv.slice(2)]; }\" && node src/scripts/write_bundle_digest.mjs",
|
|
83
|
+
"build:hooks": "esbuild src/scripts/hooks/dispatch_entry.ts --bundle --platform=node --format=esm --target=node20 --define:__AGENT_CONFIG_BUNDLE__=true --outfile=dist/hooks/dispatch.js --banner:js=\"import { createRequire as __acCreateRequire } from 'node:module'; const require = globalThis.require ?? __acCreateRequire(import.meta.url); const __acPath = require('node:path'); const __acFs = require('node:fs'); const __acUrl = require('node:url'); const __acReal = (p) => { try { return __acFs.realpathSync(p); } catch { return p; } }; const __acSelf = __acReal(__acUrl.fileURLToPath(import.meta.url)); if (process.argv[1] !== undefined && __acReal(__acPath.resolve(process.argv[1])) === __acSelf) { globalThis.__AC_HOOKS_BUNDLE_DIRECT = true; process.argv = [process.argv[0], __acSelf + '.__direct__', ...process.argv.slice(2)]; }\" && node src/scripts/write_bundle_digest.mjs && npm run build:hook-chunks",
|
|
84
84
|
"build:mcp-bundle": "esbuild src/scripts/mcp_server/__main__.ts --bundle --platform=node --format=esm --target=node20 --define:__AGENT_CONFIG_BUNDLE__=true --outfile=dist/mcp/server.mjs --banner:js=\"import { createRequire as __acCreateRequire } from 'node:module'; const require = globalThis.require ?? __acCreateRequire(import.meta.url); const __acPath = require('node:path'); const __acFs = require('node:fs'); const __acUrl = require('node:url'); const __acReal = (p) => { try { return __acFs.realpathSync(p); } catch { return p; } }; const __acSelf = __acReal(__acUrl.fileURLToPath(import.meta.url)); if (process.argv[1] !== undefined && __acReal(__acPath.resolve(process.argv[1])) === __acSelf) { globalThis.__AC_MCP_BUNDLE_DIRECT = true; process.argv = [process.argv[0], __acSelf + '.__direct__', ...process.argv.slice(2)]; }\"",
|
|
85
85
|
"clean:cli-delegate": "rm -rf dist/cli-delegate",
|
|
86
86
|
"build:delegates": "npm run clean:cli-delegate && npm run build:cli-delegate && npm run build:agent-src-delegate && npm run build:delegate-aux",
|
|
@@ -100,7 +100,8 @@
|
|
|
100
100
|
"lint:publint": "publint",
|
|
101
101
|
"prepack": "npm run build && npm run build:discovery && npm run build:mcp-manifest && node src/scripts/prepack-check.mjs",
|
|
102
102
|
"prepublishOnly": "./scripts-run src/scripts/check_release_includes_discovery",
|
|
103
|
-
"prepare": "[ -d .git ] && bash src/scripts/install-hooks.sh || true"
|
|
103
|
+
"prepare": "[ -d .git ] && bash src/scripts/install-hooks.sh || true",
|
|
104
|
+
"build:hook-chunks": "esbuild src/scripts/_lib/svg_rules.ts --bundle --platform=node --format=cjs --target=node20 --outfile=dist/hooks/svg_rules.chunk.cjs && node src/scripts/write_bundle_digest.mjs dist/hooks/svg_rules.chunk.cjs"
|
|
104
105
|
},
|
|
105
106
|
"publishConfig": {
|
|
106
107
|
"access": "public",
|