@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
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The registry of DELETED settings keys, and the once-per-run notice a leftover
|
|
3
|
+
* value gets. Extracted from `agent_settings.ts`, which sits at the 1500-line
|
|
4
|
+
* source ceiling — every retirement batch adds entries here, and here they cost
|
|
5
|
+
* no ratchet. `agent_settings.ts` re-exports `REMOVED_KEYS` so existing
|
|
6
|
+
* importers (the loader, `lint_settings_classes`) are unchanged.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Settings keys this package has DELETED. A leftover value from an older
|
|
10
|
+
* install is ignored — never applied by any reader — and surfaced with ONE
|
|
11
|
+
* deprecation line per key per process run (stderr; the exit code never
|
|
12
|
+
* changes).
|
|
13
|
+
*
|
|
14
|
+
* The map carries a per-key REASON rather than one shared sentence, because
|
|
15
|
+
* the list now spans more than one deletion doctrine and a single blanket
|
|
16
|
+
* phrase would mis-attribute every future entry. A reader who hits the line
|
|
17
|
+
* should learn why the key went, not just that it did.
|
|
18
|
+
*
|
|
19
|
+
* `subagents.*` — the always-on-orchestration doctrine
|
|
20
|
+
* (road-to-always-on-orchestration Phase 1): the layer has no per-layer
|
|
21
|
+
* on/off setting any more. `ai_team.enabled` joined in Step 1.3 — the
|
|
22
|
+
* `/team` family's availability is a codex-CLI/auth FACT
|
|
23
|
+
* (`src/scripts/ai_team/availability.ts`), not a flag; the `ai_team` config
|
|
24
|
+
* loader (`src/scripts/ai_team/config.ts`) separately accepts a leftover
|
|
25
|
+
* `enabled` key without failing closed, so this warning is the only surfaced
|
|
26
|
+
* signal of that deletion.
|
|
27
|
+
*
|
|
28
|
+
* `hooks.turn_end_gate.*` — the turn-end gate is always armed (2026-08-12).
|
|
29
|
+
* A default-off safety gate cannot soak, so the switch protecting the soak
|
|
30
|
+
* made the soak impossible; whether the gate fires is now decided by each
|
|
31
|
+
* detector's own trigger conditions. See `turn_end_gate_hook.ts` § "Always
|
|
32
|
+
* armed".
|
|
33
|
+
*
|
|
34
|
+
* The five `derivable` leaves below (2026-08-12, road-to-zero-settings Phase
|
|
35
|
+
* 2.1) are a different case from every entry above them, and the difference is
|
|
36
|
+
* the whole safety argument: no code path ever *consulted* them. Each appeared
|
|
37
|
+
* in the template, the schema and the reference page, and several in the setup
|
|
38
|
+
* wizard, while the decision they looked like they governed was taken
|
|
39
|
+
* elsewhere. A key nothing reads cannot change a default by leaving — so this
|
|
40
|
+
* is the one deletion batch that needs no replacement mechanism, only the
|
|
41
|
+
* per-key statement of what already decides.
|
|
42
|
+
*
|
|
43
|
+
* A sixth unread key, `screenshots.data_bearing_gate`, was found in the same
|
|
44
|
+
* pass and deliberately NOT deleted — it is `consent`, and the open question is
|
|
45
|
+
* whether the repair is to build its missing reader or to delete a promise a
|
|
46
|
+
* Hard Floor can never honour. See `settings-classes.md` § The six unread keys.
|
|
47
|
+
*
|
|
48
|
+
* `worktrees.mode` (2026-08-13, ADR-229) is a third doctrine again: not
|
|
49
|
+
* always-on, not unread. It WAS read, and the reader honoured all three values —
|
|
50
|
+
* the deletion says the decision was never the agent's to make. `ask` bought a
|
|
51
|
+
* round trip per spawn, `on` let the agent start parallel work unprompted, and
|
|
52
|
+
* `off` described the wanted behavior, so `off` became the hardcoded rule and
|
|
53
|
+
* the switch went. What decides instead is the user's own sentence in the chat.
|
|
54
|
+
*
|
|
55
|
+
* The 2026-10-09 batch (road-to-settings-classes-derivable-surface-stagnation
|
|
56
|
+
* Phase 2) is a fourth doctrine: `derivable` keys whose shipped default is the
|
|
57
|
+
* only behavior the package supports. Each WAS read — by code or by rule and
|
|
58
|
+
* command prose — and every reader was rewritten to state the old default as
|
|
59
|
+
* fixed behavior in the same change, so retiring the key changes no effective
|
|
60
|
+
* default; what a consumer who had set a non-default value loses is named by
|
|
61
|
+
* the reason.
|
|
62
|
+
*
|
|
63
|
+
* Every reason string must name what decides INSTEAD, never just "removed".
|
|
64
|
+
* Exported so `lint_settings_classes` can check the deletion side of the
|
|
65
|
+
* surface: a reason that names no replacement, or an entry whose key is live in
|
|
66
|
+
* the template again, is a contradiction the loader itself cannot notice.
|
|
67
|
+
*/
|
|
68
|
+
export const REMOVED_KEYS = new Map([
|
|
69
|
+
['subagents.enabled', 'always-on orchestration'],
|
|
70
|
+
['subagents.auto', 'always-on orchestration'],
|
|
71
|
+
['subagents.host_capabilities', 'always-on orchestration'],
|
|
72
|
+
['subagents.budget_routing', 'always-on orchestration'],
|
|
73
|
+
['ai_team.enabled', 'always-on orchestration'],
|
|
74
|
+
['hooks.turn_end_gate.enabled', 'the turn-end gate is always armed'],
|
|
75
|
+
['hooks.turn_end_gate.promissory', 'the turn-end gate is always armed'],
|
|
76
|
+
['hooks.turn_end_gate.language', 'the turn-end gate is always armed'],
|
|
77
|
+
['hooks.turn_end_gate.verification', 'the turn-end gate is always armed'],
|
|
78
|
+
['telegraph.speak_scope', 'the rule body states its own scope; compile_time_toggles decides whether the rule ships'],
|
|
79
|
+
['chat_history.max_size_kb', 'the rotate command takes --max-kb from argv; session-count pruning bounds the file'],
|
|
80
|
+
['chat_history.on_overflow', 'the overflow mode comes from the rotate command --mode argv'],
|
|
81
|
+
['quality.wait_for_remote_ci', 'whether to poll follows from the push plus a detectable remote pipeline'],
|
|
82
|
+
['legal_review_prep.consented_at', 'the provenance sidecar settings:set writes and consentVerdict reads'],
|
|
83
|
+
['worktrees.mode', 'the user asking for a worktree in the chat; creation is instruction-only and hardcoded'],
|
|
84
|
+
// 2026-10-09 — output and tone
|
|
85
|
+
['personal.minimal_output', 'direct-answers Iron Law 3 mandates terse replies; there is no verbose mode'],
|
|
86
|
+
['personal.play_by_play', 'direct-answers: no narration unless the user asks for it in the turn'],
|
|
87
|
+
['personal.pr_comment_bot_icon', 'no-decorative-emojis-in-git-surfaces forbids the 🤖 prefix'],
|
|
88
|
+
['verbosity.intent_announcements', 'direct-answers: act and emit the result, no "Let me…" openers'],
|
|
89
|
+
['verbosity.preview_artifacts', 'generated content is used directly; preview-on-error and the Iron-Law gates decide when a preview shows'],
|
|
90
|
+
['verbosity.routine_confirmations', 'the no-cheap-questions Pre-Send Self-Check; Iron-Law gates always ask'],
|
|
91
|
+
['verbosity.post_action_reports', 'direct-answers Iron Law 3: a one-line confirmation and one end-summary'],
|
|
92
|
+
['telegraph.speak', 'the telegraph-speak predicate in compile_time_toggles.ts; the bench verdict is package-level (ADR telegraph/0002)'],
|
|
93
|
+
['tokens.rich_skills', "the skill's own token_budget_class: rich plus the lint_token_budget_discipline ceiling"],
|
|
94
|
+
// 2026-10-09 — reasoning protocol switches
|
|
95
|
+
['reasoning.auto_gate', 'the RDP gate task signal plus the host self-assessment in rdp-gate.md'],
|
|
96
|
+
['reasoning.components.orchestrator', 'the RDP gate task and host signals decide per component; reasoning.enabled stays the hard off'],
|
|
97
|
+
['reasoning.components.notes_first', 'the RDP gate task and host signals decide per component; reasoning.enabled stays the hard off'],
|
|
98
|
+
['reasoning.components.grounding', 'the RDP gate task and host signals decide per component; reasoning.enabled stays the hard off'],
|
|
99
|
+
['reasoning.components.intent', 'the RDP gate task and host signals decide per component; reasoning.enabled stays the hard off'],
|
|
100
|
+
['reasoning.components.complexity_first', 'the RDP gate task and host signals decide per component; reasoning.enabled stays the hard off'],
|
|
101
|
+
['reasoning.components.verifier_default', 'the RDP gate task and host signals decide per component; reasoning.enabled stays the hard off'],
|
|
102
|
+
['reasoning.components.prediction_tracking', 'the RDP gate task and host signals decide per component; reasoning.enabled stays the hard off'],
|
|
103
|
+
['reasoning.components.decision_ledger', 'the RDP gate task and host signals decide per component; reasoning.enabled stays the hard off'],
|
|
104
|
+
['reasoning.components.uncertainty_budget', 'the RDP gate task and host signals decide per component; reasoning.enabled stays the hard off'],
|
|
105
|
+
// 2026-10-09 — roadmap cadence
|
|
106
|
+
['roadmap.skip_pre_run_gate', 'the command name names the scope; only an ambiguous roadmap or an unresolvable conflict shows the gate'],
|
|
107
|
+
['roadmap.dashboard_regen_cadence', 'a fixed cadence: every 5th closed step, every phase boundary, reply end and any file-shape touch'],
|
|
108
|
+
// 2026-10-09 — command suggestion and PR creation
|
|
109
|
+
['commands.auto_detect', "an orchestrator's own auto_detect front-matter and the --no-auto-detect flag"],
|
|
110
|
+
['commands.suggestion.enabled', 'the suggester match-score floor and cooldown; /command-suggestion-off silences one conversation'],
|
|
111
|
+
['commands.suggestion.confidence_floor', "the suggester's fixed 0.6 floor; a command's own suggestion frontmatter can tighten it"],
|
|
112
|
+
['commands.suggestion.cooldown_seconds', "the suggester's fixed 600-second cooldown; a command's own suggestion frontmatter can lengthen it"],
|
|
113
|
+
['commands.suggestion.max_options', 'the fixed cap of 4 suggestions plus the always-present as-is option'],
|
|
114
|
+
['commands.create_pr.api_examples', "/create-pr's grounding rule: an example only from a real source, otherwise a one-line pointer"],
|
|
115
|
+
['commands.create_pr.ui_paths', "/create-pr's light frontend heuristic, which fails open"],
|
|
116
|
+
['commands.create_pr.api_paths', "/create-pr's light API-endpoint heuristic, which fails open"],
|
|
117
|
+
// 2026-10-09 — memory and knowledge sharing
|
|
118
|
+
['memory.cadence', 'a fixed cadence: the memory line renders whenever a memory type was asked; memory.visibility: off still silences it'],
|
|
119
|
+
['memory.review_threshold', "/memory load's fixed preview threshold of 10 unreviewed intake signals"],
|
|
120
|
+
['knowledge.global_sharing.redaction.enabled', 'the write-time redaction scan, which always runs before a card goes global'],
|
|
121
|
+
['knowledge.global_sharing.redaction.halt_on_trigger', 'the redaction gate, which always halts on a confidential-pattern hit'],
|
|
122
|
+
['knowledge.global_sharing.auto_promote_threshold', 'the fixed two-repo sighting count that triggers a promotion suggestion'],
|
|
123
|
+
['knowledge.global_sharing.freshness.hypothesis_after_days', "the card's age over last_verified against the fixed 90-day lead-only window"],
|
|
124
|
+
['knowledge.global_sharing.freshness.stale_after_days', "the card's age over last_verified against the fixed 180-day skip window"],
|
|
125
|
+
// 2026-10-09 — hooks and engine
|
|
126
|
+
['hooks.concern_budget.max_per_event', "the concern-budget gate's own constant of 8 per (platform, event) cell"],
|
|
127
|
+
['hooks.concern_budget.hard_fail', "the concern-budget gate's --strict argv; without it the gate warns"],
|
|
128
|
+
['decision_engine.surface_traces', 'nothing: the per-phase decision trace stays off, the old default'],
|
|
129
|
+
['decision_engine.on_block_fallback', 'the fail-safe: an on_block ask that times out always stops'],
|
|
130
|
+
['explain.enable_last', 'the presence of a work-state trace; explain last always renders it'],
|
|
131
|
+
// 2026-10-09 — remaining
|
|
132
|
+
['project.pr_template', '/create-pr, which reads .github/pull_request_template.md'],
|
|
133
|
+
['pipelines.skill_improvement', 'the skill-improvement-trigger rule; the capture is a proposal the user confirms'],
|
|
134
|
+
['consistency.cross_source', 'the cross-source-consistency rule, always on; batching and the no-cheap-questions floor bound the noise'],
|
|
135
|
+
['subagents.downshift', 'the model_tier each sub-task declares; downshift is always on'],
|
|
136
|
+
['ai_team.suppress_setup_hint', 'nothing: the one-line team-mode setup hint is always shown'],
|
|
137
|
+
]);
|
|
138
|
+
/** Keys already warned about in THIS process — the "once per run" dedupe. */
|
|
139
|
+
const _warnedRemovedKeys = new Set();
|
|
140
|
+
/** Read one dotted path out of a merged settings tree; `undefined` when absent. */
|
|
141
|
+
function _readDotted(root, dotted) {
|
|
142
|
+
let node = root;
|
|
143
|
+
for (const part of dotted.split('.')) {
|
|
144
|
+
if (typeof node !== 'object' || node === null || Array.isArray(node)) {
|
|
145
|
+
return undefined;
|
|
146
|
+
}
|
|
147
|
+
node = node[part];
|
|
148
|
+
}
|
|
149
|
+
return node;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Warn once per process, on stderr, for every {@link REMOVED_KEYS} entry still
|
|
153
|
+
* present in a resolved settings tree. Never throws, never changes what the
|
|
154
|
+
* caller does with `merged` — a pure notification side effect.
|
|
155
|
+
*/
|
|
156
|
+
export function warnRemovedKeys(merged) {
|
|
157
|
+
for (const [key, reason] of REMOVED_KEYS) {
|
|
158
|
+
if (_warnedRemovedKeys.has(key)) {
|
|
159
|
+
continue;
|
|
160
|
+
}
|
|
161
|
+
if (_readDotted(merged, key) === undefined) {
|
|
162
|
+
continue;
|
|
163
|
+
}
|
|
164
|
+
_warnedRemovedKeys.add(key);
|
|
165
|
+
process.stderr.write(`${key} was removed (${reason}); ignored.\n`);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
//# sourceMappingURL=settings_removed_keys.js.map
|
|
@@ -0,0 +1,284 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* svg_dom — a dependency-free XML well-formedness parser, and the tree it
|
|
3
|
+
* builds.
|
|
4
|
+
*
|
|
5
|
+
* Step 3.1 of `road-to-svg-review-followups`, amending step 1.1 of
|
|
6
|
+
* `road-to-svg-with-a-witness`. Review claim C11: a regex cannot prove nesting
|
|
7
|
+
* or resolve a reference, and the alternatives were all refused for reasons
|
|
8
|
+
* that still hold — `package.json`'s runtime dependencies carry no XML parser,
|
|
9
|
+
* `happy-dom` is dev-only, the three vendored tree-sitter grammars are php,
|
|
10
|
+
* typescript and javascript, and Playwright is absent in a consumer, so the
|
|
11
|
+
* browser cannot carry a static layer. The remaining option is to write one,
|
|
12
|
+
* which is what `lint_design_quality` already does for its own surface.
|
|
13
|
+
*
|
|
14
|
+
* WHAT IT IS. One scanner over the bytes, producing every node kind an SVG
|
|
15
|
+
* carries — elements with their attributes, comments, CDATA sections,
|
|
16
|
+
* processing instructions, DOCTYPEs and text — each with a line and a column,
|
|
17
|
+
* assembled into a tree with parent links, plus a list of well-formedness
|
|
18
|
+
* errors.
|
|
19
|
+
*
|
|
20
|
+
* TWO SCANNERS, NOT ONE, and this header used to claim otherwise.
|
|
21
|
+
* `parseElements` in `svg_rules.ts` is an independent scanner over the same
|
|
22
|
+
* bytes, so the two CAN disagree about what a file contains — finding 3 of the
|
|
23
|
+
* third completion review of this change found a case where they did, and the
|
|
24
|
+
* disagreement produced an error-severity false positive. That one is fixed
|
|
25
|
+
* where it was (the prolog), but the general claim was false and is not
|
|
26
|
+
* restored: a reader deciding whether a fix here also lands there must check,
|
|
27
|
+
* not assume. Merging them is a larger change than the finding asked for and
|
|
28
|
+
* is not attempted under a remediation.
|
|
29
|
+
*
|
|
30
|
+
* WHAT IT IS NOT. Not a validating parser, not namespace-aware beyond keeping
|
|
31
|
+
* the prefix in the name, and it does not expand entities. It reports that a
|
|
32
|
+
* file is not well-formed; it does not report which schema it violates.
|
|
33
|
+
*
|
|
34
|
+
* WHY A FILE THAT IS NOT WELL-FORMED IS A FINDING RATHER THAN A SKIPPED FILE.
|
|
35
|
+
* A skipped file reads as a clean one in every count that matters, and the
|
|
36
|
+
* shape this exists to catch — `<g><path></g></path>` — is exactly the shape a
|
|
37
|
+
* flat element list cannot see: both tags are present, both are spelled
|
|
38
|
+
* correctly, and the document is nonetheless not a tree.
|
|
39
|
+
*/
|
|
40
|
+
/** 1-based line and column of an offset. Built once per parse. */
|
|
41
|
+
function positions(content) {
|
|
42
|
+
const starts = [0];
|
|
43
|
+
for (let i = 0; i < content.length; i += 1) {
|
|
44
|
+
if (content[i] === '\n')
|
|
45
|
+
starts.push(i + 1);
|
|
46
|
+
}
|
|
47
|
+
return (offset) => {
|
|
48
|
+
// Binary search for the last line start at or before `offset`.
|
|
49
|
+
let lo = 0;
|
|
50
|
+
let hi = starts.length - 1;
|
|
51
|
+
while (lo < hi) {
|
|
52
|
+
const mid = (lo + hi + 1) >> 1;
|
|
53
|
+
if (starts[mid] <= offset)
|
|
54
|
+
lo = mid;
|
|
55
|
+
else
|
|
56
|
+
hi = mid - 1;
|
|
57
|
+
}
|
|
58
|
+
return { line: lo + 1, column: offset - starts[lo] + 1 };
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* End of the tag, honouring quoted attribute values that may contain `>`.
|
|
63
|
+
*
|
|
64
|
+
* Exported because `svg_rules.parseElements` scans the same bytes and had its
|
|
65
|
+
* own byte-identical copy — finding 9 of the third completion review, which
|
|
66
|
+
* also noted that BOTH copies ship in the per-`.svg`-write hook chunk. Two
|
|
67
|
+
* scanners is a fact this file's header now states plainly; two copies of
|
|
68
|
+
* their shared primitives is not a consequence of it.
|
|
69
|
+
*/
|
|
70
|
+
export function tagEnd(content, from) {
|
|
71
|
+
let quote = null;
|
|
72
|
+
for (let i = from + 1; i < content.length; i += 1) {
|
|
73
|
+
const ch = content[i];
|
|
74
|
+
if (quote !== null) {
|
|
75
|
+
if (ch === quote)
|
|
76
|
+
quote = null;
|
|
77
|
+
continue;
|
|
78
|
+
}
|
|
79
|
+
if (ch === '"' || ch === "'") {
|
|
80
|
+
quote = ch;
|
|
81
|
+
continue;
|
|
82
|
+
}
|
|
83
|
+
if (ch === '>')
|
|
84
|
+
return i;
|
|
85
|
+
}
|
|
86
|
+
return -1;
|
|
87
|
+
}
|
|
88
|
+
/** Attributes of one tag, lowercased keys. Shared with `svg_rules` — see `tagEnd`. */
|
|
89
|
+
export function attrsOf(raw) {
|
|
90
|
+
const attrs = {};
|
|
91
|
+
const re = /([A-Za-z_:][\w.:-]*)\s*=\s*("([^"]*)"|'([^']*)')/g;
|
|
92
|
+
let m;
|
|
93
|
+
while ((m = re.exec(raw)) !== null) {
|
|
94
|
+
const key = (m[1] ?? '').toLowerCase();
|
|
95
|
+
const value = m[3] ?? m[4] ?? '';
|
|
96
|
+
attrs[key] = value.replace(/&/g, '&');
|
|
97
|
+
}
|
|
98
|
+
return attrs;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Parse one document.
|
|
102
|
+
*
|
|
103
|
+
* Never throws: a malformed file produces whatever tree could be built plus
|
|
104
|
+
* the errors that explain it. A parser that threw would make an unparseable
|
|
105
|
+
* file indistinguishable from a crash, and the caller's job is to REPORT the
|
|
106
|
+
* file, not to fall over on it.
|
|
107
|
+
*/
|
|
108
|
+
export function parseDocument(content) {
|
|
109
|
+
const at = positions(content);
|
|
110
|
+
const roots = [];
|
|
111
|
+
const elements = [];
|
|
112
|
+
const errors = [];
|
|
113
|
+
const stack = [];
|
|
114
|
+
const make = (kind, start, name = '', value = '', attrs = {}) => {
|
|
115
|
+
const { line, column } = at(start);
|
|
116
|
+
return { kind, name, attrs, line, column, start, value, children: [], parent: null };
|
|
117
|
+
};
|
|
118
|
+
const append = (node) => {
|
|
119
|
+
const parent = stack[stack.length - 1];
|
|
120
|
+
if (parent === undefined) {
|
|
121
|
+
roots.push(node);
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
node.parent = parent;
|
|
125
|
+
parent.children.push(node);
|
|
126
|
+
}
|
|
127
|
+
};
|
|
128
|
+
let i = 0;
|
|
129
|
+
while (i < content.length) {
|
|
130
|
+
const lt = content.indexOf('<', i);
|
|
131
|
+
if (lt === -1) {
|
|
132
|
+
const rest = content.slice(i);
|
|
133
|
+
if (rest.trim() !== '')
|
|
134
|
+
append(make('text', i, '', rest));
|
|
135
|
+
break;
|
|
136
|
+
}
|
|
137
|
+
if (lt > i) {
|
|
138
|
+
const text = content.slice(i, lt);
|
|
139
|
+
if (text.trim() !== '')
|
|
140
|
+
append(make('text', i, '', text));
|
|
141
|
+
}
|
|
142
|
+
if (content.startsWith('<!--', lt)) {
|
|
143
|
+
const end = content.indexOf('-->', lt + 4);
|
|
144
|
+
if (end === -1) {
|
|
145
|
+
const p = at(lt);
|
|
146
|
+
errors.push({ message: 'unterminated comment', line: p.line, column: p.column });
|
|
147
|
+
append(make('comment', lt, '', content.slice(lt + 4)));
|
|
148
|
+
break;
|
|
149
|
+
}
|
|
150
|
+
append(make('comment', lt, '', content.slice(lt + 4, end)));
|
|
151
|
+
i = end + 3;
|
|
152
|
+
continue;
|
|
153
|
+
}
|
|
154
|
+
if (content.startsWith('<![CDATA[', lt)) {
|
|
155
|
+
const end = content.indexOf(']]>', lt + 9);
|
|
156
|
+
if (end === -1) {
|
|
157
|
+
const p = at(lt);
|
|
158
|
+
errors.push({ message: 'unterminated CDATA section', line: p.line, column: p.column });
|
|
159
|
+
append(make('cdata', lt, '', content.slice(lt + 9)));
|
|
160
|
+
break;
|
|
161
|
+
}
|
|
162
|
+
append(make('cdata', lt, '', content.slice(lt + 9, end)));
|
|
163
|
+
i = end + 3;
|
|
164
|
+
continue;
|
|
165
|
+
}
|
|
166
|
+
if (content.startsWith('<?', lt)) {
|
|
167
|
+
const end = content.indexOf('?>', lt + 2);
|
|
168
|
+
if (end === -1) {
|
|
169
|
+
// Finding 11 of this change's completion review: this and the
|
|
170
|
+
// declaration below swallowed the rest of the document into one
|
|
171
|
+
// node and returned cleanly, so a file ending in
|
|
172
|
+
// `<?xml version="1.0"` read as WELL-FORMED — a skip, under a
|
|
173
|
+
// contract whose whole point is that a file which does not
|
|
174
|
+
// parse is a finding rather than a skipped file.
|
|
175
|
+
const p = at(lt);
|
|
176
|
+
errors.push({ message: 'unterminated processing instruction', line: p.line, column: p.column });
|
|
177
|
+
}
|
|
178
|
+
const stop = end === -1 ? content.length : end + 2;
|
|
179
|
+
append(make('pi', lt, '', content.slice(lt + 2, end === -1 ? content.length : end)));
|
|
180
|
+
i = stop;
|
|
181
|
+
continue;
|
|
182
|
+
}
|
|
183
|
+
if (content.startsWith('<!', lt)) {
|
|
184
|
+
// A DOCTYPE may carry a bracketed internal subset; it ends after it.
|
|
185
|
+
const bracket = content.indexOf('[', lt);
|
|
186
|
+
const close = content.indexOf('>', lt);
|
|
187
|
+
let stop;
|
|
188
|
+
if (bracket !== -1 && close !== -1 && bracket < close) {
|
|
189
|
+
const endBracket = content.indexOf(']', bracket);
|
|
190
|
+
const after = endBracket === -1 ? close : content.indexOf('>', endBracket);
|
|
191
|
+
stop = after === -1 ? content.length : after + 1;
|
|
192
|
+
}
|
|
193
|
+
else {
|
|
194
|
+
stop = close === -1 ? content.length : close + 1;
|
|
195
|
+
}
|
|
196
|
+
if (close === -1) {
|
|
197
|
+
const p = at(lt);
|
|
198
|
+
errors.push({ message: 'unterminated declaration', line: p.line, column: p.column });
|
|
199
|
+
}
|
|
200
|
+
append(make('doctype', lt, '', content.slice(lt + 2, Math.max(lt + 2, stop - 1))));
|
|
201
|
+
i = stop;
|
|
202
|
+
continue;
|
|
203
|
+
}
|
|
204
|
+
const gt = tagEnd(content, lt);
|
|
205
|
+
if (gt === -1) {
|
|
206
|
+
const p = at(lt);
|
|
207
|
+
errors.push({ message: 'unterminated tag', line: p.line, column: p.column });
|
|
208
|
+
break;
|
|
209
|
+
}
|
|
210
|
+
const raw = content.slice(lt, gt + 1);
|
|
211
|
+
const nameMatch = /^<\/?\s*([A-Za-z_][\w.:-]*)/.exec(raw);
|
|
212
|
+
if (!nameMatch) {
|
|
213
|
+
// Finding 11, third case: a `<` that opens something with no legal
|
|
214
|
+
// element name is malformed markup, not whitespace. Skipping it
|
|
215
|
+
// silently is the same skip the other two were.
|
|
216
|
+
const p = at(lt);
|
|
217
|
+
errors.push({ message: `"${raw.slice(0, 24)}" is not a tag`, line: p.line, column: p.column });
|
|
218
|
+
i = gt + 1;
|
|
219
|
+
continue;
|
|
220
|
+
}
|
|
221
|
+
const name = (nameMatch[1] ?? '').toLowerCase();
|
|
222
|
+
const closing = raw.startsWith('</');
|
|
223
|
+
const selfClosing = raw.endsWith('/>');
|
|
224
|
+
if (closing) {
|
|
225
|
+
const open = stack[stack.length - 1];
|
|
226
|
+
const p = at(lt);
|
|
227
|
+
if (open === undefined) {
|
|
228
|
+
errors.push({ message: `closing tag </${name}> with no open element`, line: p.line, column: p.column });
|
|
229
|
+
}
|
|
230
|
+
else if (open.name !== name) {
|
|
231
|
+
// The shape a flat element list cannot see. Reported against
|
|
232
|
+
// the CLOSING tag, which is where a reader looking at the file
|
|
233
|
+
// sees the problem.
|
|
234
|
+
errors.push({
|
|
235
|
+
message: `closing tag </${name}> does not match the open <${open.name}> (line ${String(open.line)})`,
|
|
236
|
+
line: p.line,
|
|
237
|
+
column: p.column,
|
|
238
|
+
});
|
|
239
|
+
// Recover by popping to the matching open element WHEN THERE
|
|
240
|
+
// IS ONE, so a single mistake does not cascade into an error
|
|
241
|
+
// per remaining tag.
|
|
242
|
+
//
|
|
243
|
+
// When there is none, pop NOTHING. Finding 2 of the fourth
|
|
244
|
+
// completion review: the `else stack.pop()` detached a
|
|
245
|
+
// perfectly good ancestor to pay for a stray tag that never
|
|
246
|
+
// opened anything — a file whose `</g>` has no `<g>` lost its
|
|
247
|
+
// `<svg>` from the stack, so the real `</svg>` at the end then
|
|
248
|
+
// had no open element and the file collected a SECOND error it
|
|
249
|
+
// had not earned. Cascading is exactly what this branch exists
|
|
250
|
+
// to prevent, and the unmatched case was the one where it did
|
|
251
|
+
// the cascading itself. A closing tag with no match is a stray
|
|
252
|
+
// tag: report it and carry on.
|
|
253
|
+
const idx = stack.map((n) => n.name).lastIndexOf(name);
|
|
254
|
+
if (idx !== -1)
|
|
255
|
+
stack.length = idx;
|
|
256
|
+
}
|
|
257
|
+
else {
|
|
258
|
+
stack.pop();
|
|
259
|
+
}
|
|
260
|
+
i = gt + 1;
|
|
261
|
+
continue;
|
|
262
|
+
}
|
|
263
|
+
const node = make('element', lt, name, '', attrsOf(raw));
|
|
264
|
+
append(node);
|
|
265
|
+
elements.push(node);
|
|
266
|
+
if (!selfClosing)
|
|
267
|
+
stack.push(node);
|
|
268
|
+
i = gt + 1;
|
|
269
|
+
}
|
|
270
|
+
for (const unclosed of stack) {
|
|
271
|
+
errors.push({
|
|
272
|
+
message: `<${unclosed.name}> is never closed`,
|
|
273
|
+
line: unclosed.line,
|
|
274
|
+
column: unclosed.column,
|
|
275
|
+
});
|
|
276
|
+
}
|
|
277
|
+
return { roots, elements, errors };
|
|
278
|
+
}
|
|
279
|
+
// `ancestors` and `documentElement` used to live here. Finding 11 of the third
|
|
280
|
+
// completion review: both were exported, called by nothing, and bundled into
|
|
281
|
+
// the per-`.svg`-write dispatch chunk — own-orphans of this same diff, which
|
|
282
|
+
// `minimal-safe-diff` says the diff that made them removes. `XmlNode.parent`
|
|
283
|
+
// is the primitive either would have been built on and it is still here.
|
|
284
|
+
//# sourceMappingURL=svg_dom.js.map
|