@event4u/agent-config 16.4.0 → 17.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.augment-plugin/marketplace.json +3 -3
- package/.augment-plugin/plugin.json +1 -1
- package/.claude-plugin/marketplace.json +2 -2
- package/.claude-plugin/skills/install-agent-config/SKILL.md +4 -4
- package/CHANGELOG.md +483 -669
- package/CONTRIBUTING.md +47 -0
- package/README.md +25 -25
- package/dist/agent-src/commands/{design.md → agent-design.md} +11 -7
- package/dist/agent-src/commands/agents/init.md +66 -3
- package/dist/agent-src/commands/agents/user/init.md +3 -0
- package/dist/agent-src/commands/{optimize/deep.md → analyze/and-optimize.md} +72 -33
- package/dist/agent-src/commands/analyze/inbox.md +168 -37
- package/dist/agent-src/commands/analyze/pr.md +144 -0
- package/dist/agent-src/commands/analyze/{repo.md → reference.md} +85 -14
- package/dist/agent-src/commands/analyze/roadmap-repos.md +19 -10
- package/dist/agent-src/commands/analyze.md +28 -12
- package/dist/agent-src/commands/audit.md +115 -0
- package/dist/agent-src/commands/brand/review.md +13 -2
- package/dist/agent-src/commands/brand/tokens.md +3 -3
- package/dist/agent-src/commands/brand/voice.md +8 -5
- package/dist/agent-src/commands/brand.md +2 -2
- package/dist/agent-src/commands/challenge-me/closure.md +25 -0
- package/dist/agent-src/commands/design-system/import.md +8 -3
- package/dist/agent-src/commands/design-system/sync.md +98 -0
- package/dist/agent-src/commands/design-system.md +6 -1
- package/dist/agent-src/commands/evals/analyze.json +44 -0
- package/dist/agent-src/commands/evals/audit.json +12 -0
- package/dist/agent-src/commands/evals/retro.json +12 -0
- package/dist/agent-src/commands/fix/ci.md +10 -8
- package/dist/agent-src/commands/ghostwriter/write.md +22 -0
- package/dist/agent-src/commands/memory/learn-low-impact.md +70 -83
- package/dist/agent-src/commands/memory/propose.md +12 -0
- package/dist/agent-src/commands/memory.md +1 -1
- package/dist/agent-src/commands/optimize.md +4 -3
- package/dist/agent-src/commands/post-as/me.md +18 -0
- package/dist/agent-src/commands/pr/create.md +17 -342
- package/dist/agent-src/commands/pr/merge.md +129 -368
- package/dist/agent-src/commands/retro.md +121 -0
- package/dist/agent-src/commands/review/routing.md +1 -1
- package/dist/agent-src/commands/roadmap/next.md +4 -1
- package/dist/agent-src/commands/roadmap/process-full.md +46 -333
- package/dist/agent-src/commands/roadmap/triage-parked.md +6 -2
- package/dist/agent-src/commands/team-knowledge/consolidate.md +2 -2
- package/dist/agent-src/commands/team-knowledge.md +1 -1
- package/dist/agent-src/commands/threat-model.md +1 -1
- package/dist/agent-src/commands/upstream-contribute.md +91 -101
- package/dist/agent-src/commands/worktree/cleanup.md +18 -11
- package/dist/agent-src/contexts/contracts/consumer-agents-md-guide.md +54 -0
- package/dist/agent-src/contexts/execution/analysis-loop.md +137 -0
- package/dist/agent-src/contexts/execution/auto-dispatch-classification.md +3 -3
- package/dist/agent-src/contexts/execution/decision-closure-execution.md +1 -1
- package/dist/agent-src/contexts/execution/host-capability-manifest.md +6 -0
- package/dist/agent-src/contexts/execution/orchestration-telemetry.md +11 -4
- package/dist/agent-src/contexts/execution/pr-create-branches-content.md +250 -0
- package/dist/agent-src/contexts/execution/pr-create-branches-freshness.md +150 -0
- package/dist/agent-src/contexts/execution/pr-merge-queue.md +287 -0
- package/dist/agent-src/contexts/execution/pr-merge-sync.md +276 -0
- package/dist/agent-src/contexts/execution/pr-merge-trust-boundary.md +69 -0
- package/dist/agent-src/contexts/execution/process-full-all.md +233 -0
- package/dist/agent-src/contexts/execution/process-full-delivery.md +231 -0
- package/dist/agent-src/contexts/execution/roadmap-execution-contract-branches.md +42 -0
- package/dist/agent-src/contexts/execution/roadmap-execution-contract.md +1 -35
- package/dist/agent-src/contexts/execution/roadmap-process-loop-close.md +235 -0
- package/dist/agent-src/contexts/execution/roadmap-process-loop-prescan.md +216 -0
- package/dist/agent-src/contexts/execution/roadmap-process-loop-run.md +253 -0
- package/dist/agent-src/contexts/execution/roadmap-process-loop-set.md +212 -0
- package/dist/agent-src/contexts/execution/roadmap-process-loop.md +25 -864
- package/dist/agent-src/contexts/execution/subagent-spawn-contract.md +14 -2
- package/dist/agent-src/contexts/execution/subagent-steering.md +65 -8
- package/dist/agent-src/contexts/model-recommendations.md +5 -5
- package/dist/agent-src/contexts/subagent-configuration.md +1 -1
- package/dist/agent-src/guidelines/agent-infra/api-cost-levers.md +4 -3
- package/dist/agent-src/guidelines/agent-infra/model-recommendation.md +11 -5
- package/dist/agent-src/guidelines/agent-infra/rule-body-migration-inventory.md +1 -1
- package/dist/agent-src/guidelines/agent-infra/self-improvement-pipeline.md +47 -24
- package/dist/agent-src/guidelines/design-antipatterns.md +6 -1
- package/dist/agent-src/guidelines/design-asset-discipline.md +17 -0
- package/dist/agent-src/guidelines/design-fidelity-routing.md +1 -0
- package/dist/agent-src/guidelines/php/api-design.md +10 -1
- package/dist/agent-src/rules/brand-source-of-truth.md +7 -6
- package/dist/agent-src/rules/code-provenance.md +1 -1
- package/dist/agent-src/rules/context-hygiene.md +0 -1
- package/dist/agent-src/rules/design-fidelity.md +12 -13
- package/dist/agent-src/rules/external-reference-deep-dive.md +2 -2
- package/dist/agent-src/rules/fix-what-you-see.md +1 -1
- package/dist/agent-src/rules/low-impact-corpus-privacy-floor.md +14 -15
- package/dist/agent-src/rules/missing-skill-recovery.md +12 -11
- package/dist/agent-src/rules/neighbour-precedence.md +1 -1
- package/dist/agent-src/rules/recurring-criticism.md +1 -1
- package/dist/agent-src/rules/roadmap-ci-steps-policy.md +0 -2
- package/dist/agent-src/rules/self-repair-loop.md +2 -2
- package/dist/agent-src/rules/token-budget-discipline.md +2 -2
- package/dist/agent-src/scripts/dashboard_mode.ts +4 -1
- package/dist/agent-src/scripts/roadmap_age.ts +175 -0
- package/dist/agent-src/scripts/update_roadmap_progress.ts +10 -2
- package/dist/agent-src/skills/accessibility-auditor/SKILL.md +3 -3
- package/dist/agent-src/skills/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/agent-security-review/SKILL.md +2 -2
- package/dist/agent-src/skills/agents-md-thin-root/SKILL.md +12 -4
- package/dist/agent-src/skills/ai-code-blindspots/SKILL.md +7 -0
- package/dist/agent-src/skills/ai-council/references/advanced-modes.md +11 -1
- package/dist/agent-src/skills/ai-council/references/cost-and-redaction.md +7 -0
- package/dist/agent-src/skills/ai-council/references/execution-modes.md +7 -0
- package/dist/agent-src/skills/ai-council/references/output-and-synthesis.md +19 -0
- package/dist/agent-src/skills/ai-council/references/procedure.md +7 -0
- package/dist/agent-src/skills/api-design/SKILL.md +2 -2
- package/dist/agent-src/skills/api-endpoint/SKILL.md +2 -2
- package/dist/agent-src/skills/authz-review/SKILL.md +5 -3
- package/dist/agent-src/skills/blade-ui/SKILL.md +2 -2
- package/dist/agent-src/skills/brand/SKILL.md +7 -3
- package/dist/agent-src/skills/brand-asset-generation/SKILL.md +13 -6
- package/dist/agent-src/skills/brand-audit/SKILL.md +2 -1
- package/dist/agent-src/skills/brand-identity/SKILL.md +5 -4
- package/dist/agent-src/skills/brand-strategy/SKILL.md +5 -4
- package/dist/agent-src/skills/brand-to-tokens/SKILL.md +18 -39
- package/dist/agent-src/skills/brand-to-tokens/templates/marp-brand-deck.md.example +2 -2
- package/dist/agent-src/skills/brand-to-tokens/templates/reveal-brand-deck.yaml +2 -2
- package/dist/agent-src/skills/canvas-design/SKILL.md +16 -4
- package/dist/agent-src/skills/competitive-positioning/SKILL.md +2 -2
- package/dist/agent-src/skills/composer-packages/SKILL.md +18 -0
- package/dist/agent-src/skills/condense-memory/SKILL.md +1 -1
- package/dist/agent-src/skills/content-funnel-design/SKILL.md +8 -1
- package/dist/agent-src/skills/context-authoring/SKILL.md +1 -1
- package/dist/agent-src/skills/context-document/SKILL.md +2 -2
- package/dist/agent-src/skills/corpus-grounding/SKILL.md +6 -6
- package/dist/agent-src/skills/corpus-grounding/scripts/decision_engine.ts +13 -11
- package/dist/agent-src/skills/corpus-grounding/scripts/ground.mjs +1706 -0
- package/dist/agent-src/skills/corpus-grounding/scripts/schema_validator.ts +7 -1
- package/dist/agent-src/skills/dashboard-design/SKILL.md +1 -1
- package/dist/agent-src/skills/data-flow-mapper/SKILL.md +5 -2
- package/dist/agent-src/skills/database/SKILL.md +5 -4
- package/dist/agent-src/skills/decision-record/references/weighted-matrix.md +12 -0
- package/dist/agent-src/skills/deep-reading-analyst/SKILL.md +1 -1
- package/dist/agent-src/skills/dependency-upgrade/SKILL.md +61 -11
- package/dist/agent-src/skills/description-assist/SKILL.md +1 -1
- package/dist/agent-src/skills/design-intelligence/SKILL.md +1 -1
- package/dist/agent-src/skills/design-intelligence/data/landing.csv +1 -1
- package/dist/agent-src/skills/design-intelligence/references/context-and-registers.md +10 -2
- package/dist/agent-src/skills/design-intelligence/references/design-languages.md +1 -1
- package/dist/agent-src/skills/design-intelligence/references/design-rules-checklist.md +4 -3
- package/dist/agent-src/skills/design-intelligence/references/integration-mapping.md +25 -22
- package/dist/agent-src/skills/{wireframe → design-review}/references/story-beat-ledger.schema.json +1 -1
- package/dist/agent-src/skills/design-review/references/verification-automation.md +11 -3
- package/dist/agent-src/skills/design-system-capture/SKILL.md +15 -10
- package/dist/agent-src/skills/design-system-capture/references/design-system-json.md +20 -5
- package/dist/agent-src/skills/design-system-capture/references/import-procedure.md +2 -2
- package/dist/agent-src/skills/design-tokens/SKILL.md +23 -23
- package/dist/agent-src/skills/design-tokens/scripts/tokens.mjs +1037 -0
- package/dist/agent-src/skills/design-tokens/scripts/tokens.ts +336 -13
- package/dist/agent-src/skills/design-tokens/templates/design-tokens-starter.json +52 -53
- package/dist/agent-src/skills/docker/SKILL.md +1 -1
- package/dist/agent-src/skills/estimate-ticket/SKILL.md +1 -1
- package/dist/agent-src/skills/existing-ui-audit/SKILL.md +14 -276
- package/dist/agent-src/skills/existing-ui-audit/procedure.yaml +44 -0
- package/dist/agent-src/skills/existing-ui-audit/references/anti-slop-cross-reference.md +1 -1
- package/dist/agent-src/skills/existing-ui-audit/references/steps/00-inspect-stack-and-input.md +4 -0
- package/dist/agent-src/skills/existing-ui-audit/references/steps/01-enumerate-components.md +26 -0
- package/dist/agent-src/skills/existing-ui-audit/references/steps/01b-detect-component-taxonomy.md +7 -0
- package/dist/agent-src/skills/existing-ui-audit/references/steps/02-identify-design-system.md +12 -0
- package/dist/agent-src/skills/existing-ui-audit/references/steps/03-detect-design-tokens.md +35 -0
- package/dist/agent-src/skills/existing-ui-audit/references/steps/04-detect-shadcn-inventory.md +13 -0
- package/dist/agent-src/skills/existing-ui-audit/references/steps/04b-live-storybook-read.md +26 -0
- package/dist/agent-src/skills/existing-ui-audit/references/steps/05-list-reusable-patterns.md +14 -0
- package/dist/agent-src/skills/existing-ui-audit/references/steps/06-match-candidates.md +52 -0
- package/dist/agent-src/skills/existing-ui-audit/references/steps/07-greenfield-branch.md +29 -0
- package/dist/agent-src/skills/existing-ui-audit/references/steps/08-a11y-baseline.md +40 -0
- package/dist/agent-src/skills/existing-ui-audit/references/steps/09-validate-and-write.md +5 -0
- package/dist/agent-src/skills/experiment-loop/SKILL.md +1 -1
- package/dist/agent-src/skills/fe-design/references/design-patterns.md +65 -4
- package/dist/agent-src/skills/fe-design/references/design-read-and-memory.md +1 -1
- package/dist/agent-src/skills/fe-design/references/source-led-port.md +1 -1
- package/dist/agent-src/skills/finishing-a-development-branch/SKILL.md +6 -6
- package/dist/agent-src/skills/flux/SKILL.md +1 -1
- package/dist/agent-src/skills/form-handler/SKILL.md +15 -2
- package/dist/agent-src/skills/frontend-render-security/SKILL.md +9 -0
- package/dist/agent-src/skills/git-workflow/SKILL.md +2 -2
- package/dist/agent-src/skills/git-workflow/references/branch-update.md +7 -0
- package/dist/agent-src/skills/git-workflow/references/commit-subject.md +12 -0
- package/dist/agent-src/skills/git-workflow/references/push-closes-its-loop.md +10 -0
- package/dist/agent-src/skills/gtm-launch/SKILL.md +8 -1
- package/dist/agent-src/skills/html-deck/SKILL.md +7 -2
- package/dist/agent-src/skills/humanizer/SKILL.md +16 -3
- package/dist/agent-src/skills/humanizer/references/anti-aiisms.md +13 -1
- package/dist/agent-src/skills/humanizer/references/fixtures.md +8 -0
- package/dist/agent-src/skills/iconography/SKILL.md +4 -2
- package/dist/agent-src/skills/image-provider-routing/SKILL.md +16 -5
- package/dist/agent-src/skills/js-library-packaging/SKILL.md +5 -4
- package/dist/agent-src/skills/js-library-packaging/scripts/check_package_surface.mjs +197 -0
- package/dist/agent-src/skills/judge-artifact-completeness/SKILL.md +1 -1
- package/dist/agent-src/skills/judge-security-auditor/SKILL.md +2 -2
- package/dist/agent-src/skills/launch-readiness/SKILL.md +18 -22
- package/dist/agent-src/skills/learning-to-rule-or-skill/SKILL.md +5 -5
- package/dist/agent-src/skills/livewire/SKILL.md +1 -1
- package/dist/agent-src/skills/llm-provider-knowledge/SKILL.md +18 -0
- package/dist/agent-src/skills/logo-generation/SKILL.md +21 -11
- package/dist/agent-src/skills/market-entry-analysis/SKILL.md +6 -1
- package/dist/agent-src/skills/markitdown/SKILL.md +1 -1
- package/dist/agent-src/skills/memory-consolidation/SKILL.md +2 -2
- package/dist/agent-src/skills/messaging-architecture/SKILL.md +8 -1
- package/dist/agent-src/skills/motion-choreographer/SKILL.md +2 -2
- package/dist/agent-src/skills/playwright-testing/SKILL.md +2 -0
- package/dist/agent-src/skills/positioning-strategy/SKILL.md +10 -2
- package/dist/agent-src/skills/prediction-pool-optimizer/references/ev-fixtures.md +13 -0
- package/dist/agent-src/skills/prediction-pool-optimizer/references/odds-and-bonus.md +7 -0
- package/dist/agent-src/skills/project-analysis-core/SKILL.md +1 -1
- package/dist/agent-src/skills/project-analysis-hypothesis-driven/SKILL.md +1 -1
- package/dist/agent-src/skills/project-analyzer/SKILL.md +14 -75
- package/dist/agent-src/skills/project-analyzer/procedure.yaml +39 -0
- package/dist/agent-src/skills/project-analyzer/references/steps/01-project-overview.md +9 -0
- package/dist/agent-src/skills/project-analyzer/references/steps/02-architecture.md +7 -0
- package/dist/agent-src/skills/project-analyzer/references/steps/03-data-layer.md +6 -0
- package/dist/agent-src/skills/project-analyzer/references/steps/04-business-domains.md +7 -0
- package/dist/agent-src/skills/project-analyzer/references/steps/05-api-surface.md +6 -0
- package/dist/agent-src/skills/project-analyzer/references/steps/06-service-map.md +6 -0
- package/dist/agent-src/skills/project-analyzer/references/steps/07-module-inventory.md +6 -0
- package/dist/agent-src/skills/project-analyzer/references/steps/08-infrastructure-and-testing.md +5 -0
- package/dist/agent-src/skills/project-analyzer/references/steps/09-agent-docs-audit.md +6 -0
- package/dist/agent-src/skills/project-analyzer/references/steps/10-gap-analysis.md +6 -0
- package/dist/agent-src/skills/quality-tools/references/js-ts-tools.md +10 -0
- package/dist/agent-src/skills/quality-tools/references/php-tools.md +13 -0
- package/dist/agent-src/skills/quality-tools/references/python-tools.md +11 -0
- package/dist/agent-src/skills/react-native-setup/SKILL.md +7 -2
- package/dist/agent-src/skills/react-shadcn-ui/SKILL.md +5 -1
- package/dist/agent-src/skills/react-shadcn-ui/references/registry.md +13 -0
- package/dist/agent-src/skills/react-shadcn-ui/scripts/shadcn_add.mjs +315 -0
- package/dist/agent-src/skills/react-shadcn-ui/scripts/shadcn_add.ts +6 -6
- package/dist/agent-src/skills/receiving-code-review/SKILL.md +1 -1
- package/dist/agent-src/skills/refine-ticket/SKILL.md +2 -2
- package/dist/agent-src/skills/release-comms/SKILL.md +2 -1
- package/dist/agent-src/skills/repomix-packer/SKILL.md +2 -2
- package/dist/agent-src/skills/requesting-code-review/SKILL.md +3 -3
- package/dist/agent-src/skills/roadmap-management/references/archival.md +3 -3
- package/dist/agent-src/skills/roadmap-management/references/authoring.md +9 -2
- package/dist/agent-src/skills/roadmap-management/references/dashboard.md +3 -3
- package/dist/agent-src/skills/roadmap-management/references/lifecycle.md +3 -3
- package/dist/agent-src/skills/roadmap-writing/SKILL.md +4 -4
- package/dist/agent-src/skills/rtk-output-filtering/SKILL.md +1 -1
- package/dist/agent-src/skills/rule-writing/SKILL.md +1 -2
- package/dist/agent-src/skills/security/SKILL.md +41 -5
- package/dist/agent-src/skills/skill-improvement-pipeline/SKILL.md +5 -3
- package/dist/agent-src/skills/skill-reviewer/SKILL.md +1 -1
- package/dist/agent-src/skills/skill-writing/SKILL.md +23 -8
- package/dist/agent-src/skills/skill-writing/references/section-patterns.md +19 -1
- package/dist/agent-src/skills/source-discovery/SKILL.md +3 -3
- package/dist/agent-src/skills/sql-writing/SKILL.md +2 -2
- package/dist/agent-src/skills/standards-from-config/SKILL.md +2 -2
- package/dist/agent-src/skills/storybook-workshop/SKILL.md +5 -0
- package/dist/agent-src/skills/storybook-workshop/scripts/story_contrast_floor.mjs +99 -0
- package/dist/agent-src/skills/subagent-orchestration/SKILL.md +13 -13
- package/dist/agent-src/skills/subagent-orchestration/prompts/README.md +4 -3
- package/dist/agent-src/skills/svg-authoring/SKILL.md +324 -0
- package/dist/agent-src/skills/systematic-debugging/SKILL.md +2 -2
- package/dist/agent-src/skills/tailwind-engineer/SKILL.md +8 -3
- package/dist/agent-src/skills/tailwind-engineer/scripts/tailwind_config_gen.mjs +482 -0
- package/dist/agent-src/skills/test-case-discovery/SKILL.md +1 -1
- package/dist/agent-src/skills/threat-modeling/SKILL.md +8 -1
- package/dist/agent-src/skills/threat-modeling/data/manifest.json +5 -2
- package/dist/agent-src/skills/threat-modeling/data/reasoning.csv +10 -10
- package/dist/agent-src/skills/threat-modeling/data/surfaces.csv +11 -10
- package/dist/agent-src/skills/threat-modeling/data/threats.csv +34 -20
- package/dist/agent-src/skills/type-design/SKILL.md +196 -0
- package/dist/agent-src/skills/type-design/references/font-spec.md +90 -0
- package/dist/agent-src/skills/type-design/references/gates.md +113 -0
- package/dist/agent-src/skills/type-design/references/toolchain.md +66 -0
- package/dist/agent-src/skills/typography-system/SKILL.md +21 -11
- package/dist/agent-src/skills/typography-system/references/worked-scales.md +85 -0
- package/dist/agent-src/skills/ui-apply-generic/SKILL.md +1 -1
- package/dist/agent-src/skills/universal-project-analysis/SKILL.md +1 -1
- package/dist/agent-src/skills/upstream-contribute/SKILL.md +120 -125
- package/dist/agent-src/skills/using-git-worktrees/SKILL.md +1 -0
- package/dist/agent-src/skills/verify-repair-loop/SKILL.md +1 -1
- package/dist/agent-src/skills/voice-and-tone-design/SKILL.md +71 -2
- package/dist/agent-src/skills/wireframe/SKILL.md +5 -2
- package/dist/agent-src/skills/worktree-lifecycle/SKILL.md +16 -14
- package/dist/agent-src/templates/AGENTS.md +1 -1
- package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
- package/dist/agent-src/templates/agents/proposal.example.md +1 -1
- package/dist/agent-src/templates/github-workflows/advisories-daily.yml +85 -0
- package/dist/agent-src/templates/roadmaps.md +39 -1
- package/dist/agent-src/templates/scripts/check_memory.ts +2 -2
- package/dist/agent-src/templates/scripts/historical-bug-patterns.example.yml +13 -1
- package/dist/agent-src/templates/scripts/work_engine/cli.ts +17 -0
- package/dist/agent-src/templates/scripts/work_engine/cli_args.ts +10 -0
- package/dist/agent-src/templates/scripts/work_engine/directives/ui/scaffold.ts +22 -13
- package/dist/agent-src/templates/scripts/work_engine/dispatcher.ts +18 -4
- package/dist/agent-src/templates/scripts/work_engine/procedure/checks.ts +283 -0
- package/dist/agent-src/templates/scripts/work_engine/procedure/run.ts +432 -0
- package/dist/agent-src/templates/scripts/work_engine/procedure/sidecar.ts +185 -0
- package/dist/agent-src/templates/scripts/work_engine/state.ts +3 -0
- package/dist/cli/commands/uiRender.js +265 -13
- package/dist/cli/commands/uiRenderAsset.js +1316 -0
- package/dist/cli/commands/uiRenderAssetCompare.js +752 -0
- package/dist/cli/commands/uiRenderAssetFonts.js +158 -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 +133 -0
- package/dist/cli/initRouting.js +1 -1
- package/dist/cli/main.js +47 -1
- package/dist/cli/mcp/dispatch.js +31 -9
- package/dist/cli/python/knowledge_ingest.js +7 -39
- package/dist/cli/python/workspace_secrets.js +4 -177
- package/dist/cli/registry.js +5 -2
- package/dist/cli-delegate/archive_completed_roadmaps.js +3 -2
- package/dist/cli-delegate/check_update_banner.js +635 -266
- package/dist/cli-delegate/{chunk-AED2VQGM.js → chunk-2CX7NWRB.js} +233 -437
- package/dist/cli-delegate/{chunk-F3QDG2GT.js → chunk-2SFOOFJJ.js} +259 -159
- package/dist/cli-delegate/chunk-2Y5AMLMY.js +136 -0
- package/dist/cli-delegate/{chunk-OKJUIAPS.js → chunk-4E2W63DA.js} +1 -62
- package/dist/cli-delegate/{chunk-6SRJTYJS.js → chunk-4SHNERBL.js} +37 -16
- package/dist/cli-delegate/chunk-5VO3RTMV.js +208 -0
- package/dist/cli-delegate/chunk-6E2LDY4F.js +27 -0
- package/dist/cli-delegate/{chunk-XQTPXKFA.js → chunk-6ZD2QZMN.js} +8 -17
- package/dist/cli-delegate/{chunk-6V5FMA3P.js → chunk-7CEI2YPS.js} +1 -1
- package/dist/cli-delegate/{chunk-DMSZHXZS.js → chunk-7DRWULEQ.js} +80 -7
- package/dist/cli-delegate/chunk-7NXCZSDL.js +54 -0
- package/dist/cli-delegate/chunk-AX3U3UWJ.js +328 -0
- package/dist/cli-delegate/{chunk-WOKWX5PL.js → chunk-BKALSTBZ.js} +18 -3
- package/dist/cli-delegate/chunk-BMGUGSY6.js +103 -0
- package/dist/cli-delegate/chunk-BYV46VRM.js +3309 -0
- package/dist/cli-delegate/{chunk-5GPULQBE.js → chunk-CAL76ADI.js} +4215 -682
- package/dist/cli-delegate/chunk-DSY6LLCQ.js +127 -0
- package/dist/cli-delegate/chunk-E6XNBVE4.js +581 -0
- package/dist/cli-delegate/{chunk-ZUZKZYCN.js → chunk-ESUNQ5XR.js} +46 -10
- package/dist/cli-delegate/{chunk-G5VVIZRC.js → chunk-F7HLSW6P.js} +1 -1
- package/dist/cli-delegate/chunk-FIEEOH5C.js +133 -0
- package/dist/cli-delegate/chunk-FKYZOWVD.js +719 -0
- package/dist/cli-delegate/chunk-GOMILC3O.js +918 -0
- package/dist/cli-delegate/chunk-I4KJYVPB.js +69 -0
- package/dist/cli-delegate/{chunk-JQOM7TTM.js → chunk-IDAOTDPE.js} +1 -100
- package/dist/cli-delegate/chunk-IROAQ77A.js +137 -0
- package/dist/cli-delegate/chunk-J2SJZICO.js +698 -0
- package/dist/cli-delegate/{chunk-6YQC2HLF.js → chunk-JHMMWNJ2.js} +54 -40
- package/dist/cli-delegate/{chunk-WQWXGIWB.js → chunk-M6CRG5O6.js} +165 -15
- package/dist/cli-delegate/{chunk-PHD7OOLE.js → chunk-MQ2UDEGV.js} +14 -3
- package/dist/cli-delegate/chunk-NTM7G2V4.js +220 -0
- package/dist/cli-delegate/chunk-PV7S5DPJ.js +175 -0
- package/dist/cli-delegate/{chunk-F7DQWYR5.js → chunk-RAXQOETZ.js} +6 -2
- package/dist/cli-delegate/{chunk-T7XSJSUQ.js → chunk-SIOMDAKL.js} +980 -784
- package/dist/cli-delegate/{chunk-KR6EM23A.js → chunk-TULVDQ4L.js} +3 -48
- package/dist/cli-delegate/chunk-UUYEKXKR.js +20 -0
- package/dist/cli-delegate/{chunk-7XGD2OEU.js → chunk-UXWHY6CQ.js} +2 -1
- package/dist/cli-delegate/{chunk-PWX7CKMD.js → chunk-VC3ECUEK.js} +1 -1
- package/dist/cli-delegate/{chunk-KXXWJTDO.js → chunk-WMNYVIYX.js} +1 -1
- package/dist/cli-delegate/chunk-XCY5KKUC.js +181 -0
- package/dist/cli-delegate/{chunk-H76PHZBI.js → chunk-XLY5G3CM.js} +14 -19
- package/dist/cli-delegate/cmd_adr_effective.js +41 -2
- package/dist/cli-delegate/cmd_analyze_session.js +7 -7
- package/dist/cli-delegate/cmd_brand_status.js +1287 -10
- package/dist/cli-delegate/cmd_ci_settle.js +330 -0
- package/dist/cli-delegate/cmd_conformance.js +669 -822
- package/dist/cli-delegate/cmd_doctor.js +26 -16
- package/dist/cli-delegate/cmd_doctor_neighbours.js +10 -7
- package/dist/cli-delegate/cmd_explain.js +9 -24
- package/dist/cli-delegate/cmd_export.js +14 -11
- package/dist/cli-delegate/cmd_fleet.js +5 -3
- package/dist/cli-delegate/cmd_git_convention.js +8 -4
- package/dist/cli-delegate/cmd_handoff.js +79 -242
- package/dist/cli-delegate/cmd_mcp_available.js +1 -1
- package/dist/cli-delegate/cmd_memory_get.js +4 -2
- package/dist/cli-delegate/cmd_migrate.js +2 -2
- package/dist/cli-delegate/cmd_packs_active.js +2 -2
- package/dist/cli-delegate/cmd_preflight.js +7 -5
- package/dist/cli-delegate/cmd_prune.js +16 -13
- package/dist/cli-delegate/cmd_route_audit.js +11 -8
- package/dist/cli-delegate/cmd_route_explain.js +649 -16
- package/dist/cli-delegate/cmd_session_recycle.js +15 -6
- package/dist/cli-delegate/cmd_settings_check.js +2 -2
- package/dist/cli-delegate/cmd_settings_get.js +1 -1
- package/dist/cli-delegate/cmd_settings_migrate.js +14 -11
- package/dist/cli-delegate/cmd_settings_set.js +1 -1
- package/dist/cli-delegate/cmd_sync.js +16 -13
- package/dist/cli-delegate/cmd_uninstall.js +185 -31
- package/dist/cli-delegate/cmd_update.js +67 -3
- package/dist/cli-delegate/cmd_upgrade.js +38 -7
- package/dist/cli-delegate/cmd_validate.js +16 -13
- package/dist/cli-delegate/cmd_versions.js +1 -1
- package/dist/cli-delegate/dashboard_mode.js +1 -1
- package/dist/cli-delegate/gate_execute.js +4 -3
- package/dist/cli-delegate/roadmap_age.js +22 -0
- package/dist/cli-delegate/roadmap_gates.js +4 -3
- package/dist/cli-delegate/update_roadmap_progress.js +3 -2
- package/dist/cli-delegate/upgrade_unattended-VVL6JLSX.js +541 -0
- package/dist/discovery/deprecation-report.md +1 -1
- package/dist/discovery/discovery-manifest.json +409 -201
- package/dist/discovery/discovery-manifest.json.sha256 +1 -1
- package/dist/discovery/discovery-manifest.summary.md +8 -8
- package/dist/discovery/dormancy-report.md +1 -1
- package/dist/discovery/orphan-report.md +1 -1
- package/dist/discovery/packs.json +36 -27
- package/dist/discovery/trust-report.md +3 -3
- package/dist/discovery/workspaces.json +25 -16
- package/dist/hooks/chat_history.chunk.cjs +6852 -0
- package/dist/hooks/chat_history.chunk.cjs.sha256 +1 -0
- package/dist/hooks/dispatch.js +17706 -18627
- package/dist/hooks/dispatch.sha256 +1 -1
- package/dist/hooks/egress_engine.chunk.cjs +915 -0
- package/dist/hooks/egress_engine.chunk.cjs.sha256 +1 -0
- package/dist/hooks/svg_rules.chunk.cjs +1858 -0
- package/dist/hooks/svg_rules.chunk.cjs.sha256 +1 -0
- package/dist/install/conflict.js +36 -6
- package/dist/install/conflictTracker.js +81 -7
- package/dist/install/detect.js +3 -3
- package/dist/install/hostPermissionsAdapter.js +106 -0
- package/dist/install/install.mjs +3117 -1949
- package/dist/install/installThinLayer.js +1 -1
- package/dist/install/manifestFiles.js +21 -0
- package/dist/install/noGoDenyRows.js +300 -0
- package/dist/install/noGoRules.js +368 -0
- package/dist/install/ownershipLedger.js +133 -0
- package/dist/install/plan.js +1 -1
- package/dist/install/preflight.js +39 -8
- package/dist/install/preserve.js +74 -12
- package/dist/install/recordedOwnership.js +88 -5
- package/dist/install/rule_scope.js +20 -3
- package/dist/install/stagedRuntime.js +455 -0
- package/dist/install/toolsArg.js +19 -0
- package/dist/install/userPin.js +47 -0
- package/dist/install/wizard-plan.js +26 -4
- package/dist/mcp/awesome-mcp-servers.row.md +1 -1
- package/dist/mcp/mcp-cloudflare-catalogue.json +3 -2
- package/dist/mcp/registry-manifest.json +6 -5
- package/dist/mcp/server.json +3 -3
- package/dist/mcp/server.mjs +9814 -5333
- package/dist/router.json +1 -1
- package/dist/scripts/_lib/agent_settings.js +7 -12
- package/dist/scripts/_lib/asset_render_record.js +219 -0
- package/dist/scripts/_lib/claude_builtin_names.js +9 -4
- package/dist/scripts/_lib/claude_settings_hooks.js +102 -34
- package/dist/scripts/_lib/egress_rules.js +766 -0
- package/dist/scripts/_lib/environment_detector.js +24 -33
- package/dist/scripts/_lib/global_deploy_inventory.js +146 -9
- package/dist/scripts/_lib/guidelines_lane.js +10 -1
- package/dist/scripts/_lib/identifier_redaction.js +24 -0
- package/dist/scripts/_lib/installed_layer.js +17 -0
- package/dist/scripts/_lib/installed_layer_normalise.js +72 -0
- package/dist/scripts/_lib/lean_projection_mode.js +34 -152
- package/dist/scripts/_lib/project_tree_form.js +118 -0
- package/dist/scripts/_lib/scan_scope.js +105 -0
- package/dist/scripts/_lib/scoped_projection.js +133 -3
- package/dist/scripts/_lib/settings_removed_keys.js +29 -0
- package/dist/scripts/_lib/settings_renamed_keys.js +17 -5
- package/dist/scripts/_lib/subagent_native_fields.js +35 -0
- package/dist/scripts/_lib/svg_dom.js +284 -0
- package/dist/scripts/_lib/svg_filled_counter.js +285 -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 +1339 -0
- package/dist/scripts/_lib/svg_urls.js +67 -0
- package/dist/scripts/_lib/ui_surface.js +19 -0
- package/dist/scripts/_lib/verification_command.js +364 -0
- package/dist/scripts/_lib/workspace_secrets.js +229 -0
- package/dist/scripts/ai_council/seat_policy.js +27 -0
- package/dist/scripts/ai_council/transport_resolver.js +9 -10
- package/dist/scripts/condense.js +25 -29
- package/dist/scripts/lint_svg_asset.js +324 -0
- package/dist/server/io/substituteTemplate.js +2 -2
- package/dist/server/io/yamlIO.js +2 -2
- package/dist/server/routes/install.js +5 -1
- package/dist/server/routes/settings.js +2 -2
- package/dist/server/routes/wizard.js +1 -1
- package/dist/server/schemas/settings.js +22 -16
- package/dist/server/serverInfo.js +1 -1
- package/dist/shared/brandTokenDocument.js +47 -0
- package/dist/shared/brandTokenPaths.js +43 -0
- package/dist/shared/settingsCarveOut.js +0 -7
- package/dist/shared/skillRanking.js +103 -5
- package/dist/shared/userMd/formAdapter.js +16 -0
- package/dist/shared/userMd/schema.js +17 -0
- package/dist/ui/assets/index-w70Ado09.js +23 -0
- package/dist/ui/index.html +1 -1
- package/docs/MIGRATION.md +89 -2
- package/docs/THIRD-PARTY-NOTICES.md +27 -0
- package/docs/contracts/settings-classes.md +27 -9
- package/docs/guidelines/agent-infra/api-cost-levers.md +4 -3
- package/docs/guidelines/agent-infra/model-recommendation.md +11 -5
- package/docs/guidelines/agent-infra/rule-body-migration-inventory.md +1 -1
- package/docs/guidelines/agent-infra/self-improvement-pipeline.md +47 -24
- package/docs/guidelines/design-antipatterns.md +6 -1
- package/docs/guidelines/design-asset-discipline.md +17 -0
- package/docs/guidelines/design-fidelity-routing.md +1 -0
- package/docs/guidelines/php/api-design.md +10 -1
- package/llms.txt +12 -10
- package/package.json +15 -5
- package/src/agent-src/scripts/dashboard_mode.ts +4 -1
- package/src/agent-src/scripts/roadmap_age.ts +175 -0
- package/src/agent-src/scripts/update_roadmap_progress.ts +10 -2
- package/src/agent-src/templates/AGENTS.md +1 -1
- package/src/agent-src/templates/scripts/check_memory.ts +2 -2
- package/src/agent-src/templates/scripts/historical-bug-patterns.example.yml +13 -1
- package/src/agent-src/templates/scripts/work_engine/cli.ts +17 -0
- package/src/agent-src/templates/scripts/work_engine/cli_args.ts +10 -0
- package/src/agent-src/templates/scripts/work_engine/directives/ui/scaffold.ts +22 -13
- package/src/agent-src/templates/scripts/work_engine/dispatcher.ts +18 -4
- package/src/agent-src/templates/scripts/work_engine/procedure/checks.ts +283 -0
- package/src/agent-src/templates/scripts/work_engine/procedure/run.ts +432 -0
- package/src/agent-src/templates/scripts/work_engine/procedure/sidecar.ts +185 -0
- package/src/agent-src/templates/scripts/work_engine/state.ts +3 -0
- package/src/config/agent-settings.template.yml +120 -57
- package/src/config/agents-paths.yml +13 -7
- package/src/config/ci-local-parity.yml +44 -0
- package/src/config/continuity-surface.json +51 -2
- package/src/config/depth-audit-samples.json +5 -0
- package/src/config/discovery/command-verbs.yml +1 -0
- package/src/config/dispatch-economy-metrics.json +1 -0
- package/src/config/egress-mutations/class-precedence-swapped.json +7 -0
- package/src/config/egress-mutations/credential-token-restores.json +7 -0
- package/src/config/egress-mutations/iban-checksum-disabled.json +7 -0
- package/src/config/egress-mutations/raw-value-in-the-count-record.json +7 -0
- package/src/config/evaluator-budgets.json +4 -4
- package/src/config/gate-coverage.yml +149 -3
- package/src/config/gate-reachability-exemptions.json +3 -5
- package/src/config/gate-violation-baselines.json +29 -25
- package/src/config/gitignore-block.txt +6 -3
- package/src/config/hook-bundle-budget.json +34 -3
- package/src/config/hook-carrier-probes.json +30 -0
- package/src/config/hook-latency-budget.json +4 -2
- package/src/config/host-injection-effect.json +8 -1
- package/src/config/host-skill-frontmatter-keys.json +56 -0
- package/src/config/layer-form-brakes.json +4 -0
- package/src/config/layer-form-comparison-corpus.json +42 -0
- package/src/config/loop-surfaces.yaml +28 -47
- package/src/config/memory-twin-verdicts.yml +9 -1
- package/src/config/metric-registry.yml +40 -3
- package/src/config/pack-size-budget.json +15 -0
- package/src/config/procedure-core-budget.json +21 -0
- package/src/config/profiles/minimal.ini +1 -1
- package/src/config/project-tree-form.json +24 -0
- package/src/config/reach-channels.yml +3 -3
- package/src/config/reach-prescriptions-intake.yml +1 -1
- package/src/config/roadmap-step-size-baseline.json +118 -0
- package/src/config/routing-coverage-seed.json +100 -2
- package/src/config/skill-body-budget.json +686 -0
- package/src/config/skill-fork-pilot.json +17 -0
- package/src/config/skill-lifecycle-probes-codex.json +57 -0
- package/src/config/skill-lifecycle-probes.json +57 -0
- package/src/config/skill-output-shape.json +316 -0
- package/src/config/step-depth-table.json +58 -0
- package/src/config/turnaround-budget.json +90 -0
- package/src/install/conflict.ts +38 -6
- package/src/install/conflictTracker.ts +126 -8
- package/src/install/detect.ts +3 -3
- package/src/install/hostPermissionsAdapter.ts +136 -0
- package/src/install/installThinLayer.ts +6 -1
- package/src/install/manifestFiles.ts +24 -0
- package/src/install/noGoDenyRows.ts +368 -0
- package/src/install/noGoRules.ts +438 -0
- package/src/install/ownershipLedger.ts +180 -0
- package/src/install/plan.ts +1 -1
- package/src/install/preflight.ts +42 -10
- package/src/install/preserve.ts +94 -12
- package/src/install/recordedOwnership.ts +121 -3
- package/src/install/rule_scope.ts +20 -3
- package/src/install/stagedRuntime.ts +528 -0
- package/src/install/toolsArg.ts +16 -0
- package/src/install/types.ts +23 -2
- package/src/install/userPin.ts +54 -0
- package/src/install/wizard-plan.ts +25 -4
- package/src/scripts/_cli/_doctor_emit.ts +24 -0
- package/src/scripts/_cli/cmd_brand_status.ts +223 -12
- package/src/scripts/_cli/cmd_ci_settle.ts +32 -0
- package/src/scripts/_cli/cmd_doctor.ts +23 -44
- package/src/scripts/_cli/cmd_route_explain.ts +176 -2
- package/src/scripts/_cli/cmd_uninstall.ts +270 -26
- package/src/scripts/_cli/cmd_update.ts +34 -1
- package/src/scripts/_cli/cmd_upgrade.ts +38 -2
- package/src/scripts/_cli/detection_report.ts +7 -0
- package/src/scripts/_cli/doctor_execution.ts +1 -2
- package/src/scripts/_cli/doctor_install_mode.ts +39 -0
- package/src/scripts/_cli/doctor_network_posture.ts +3 -3
- package/src/scripts/_cli/doctor_ownership_ledger.ts +126 -0
- package/src/scripts/_cli/doctor_update_verdict.ts +104 -0
- package/src/scripts/_cli/explain_last/scrubber.ts +9 -21
- package/src/scripts/_cli/upgrade_unattended.ts +548 -0
- package/src/scripts/_dispatch.bash +42 -9
- package/src/scripts/_lib/activation_ladder.ts +1 -1
- package/src/scripts/_lib/advisory_inventory.ts +405 -0
- package/src/scripts/_lib/advisory_notice.ts +270 -0
- package/src/scripts/_lib/advisory_sources.ts +752 -0
- package/src/scripts/_lib/advisory_verdicts.ts +363 -0
- package/src/scripts/_lib/agent_artifact_location.ts +177 -0
- package/src/scripts/_lib/agent_settings.ts +7 -12
- package/src/scripts/_lib/arrival_record.ts +217 -0
- package/src/scripts/_lib/asset_render_record.ts +247 -0
- package/src/scripts/_lib/billing_grant.ts +4 -2
- package/src/scripts/_lib/brand_voice_slot.ts +258 -0
- package/src/scripts/_lib/canary_status.ts +24 -0
- package/src/scripts/_lib/cc_transcript.ts +276 -0
- package/src/scripts/_lib/changelog_eras.ts +83 -0
- package/src/scripts/_lib/claim_phrases.ts +71 -0
- package/src/scripts/_lib/classify_update.ts +171 -0
- package/src/scripts/_lib/claude_builtin_names.ts +9 -4
- package/src/scripts/_lib/claude_hook_scope.ts +195 -0
- package/src/scripts/_lib/claude_settings_hooks.ts +118 -34
- package/src/scripts/_lib/codex_resident_set.ts +460 -0
- package/src/scripts/_lib/codex_skill_finder.ts +225 -0
- package/src/scripts/_lib/confusables.ts +19 -0
- package/src/scripts/_lib/consumer_impact.ts +199 -0
- package/src/scripts/_lib/content_class.ts +127 -0
- package/src/scripts/_lib/counted_probe.ts +68 -1
- package/src/scripts/_lib/credential_deny_rows.ts +151 -0
- package/src/scripts/_lib/credential_files.ts +367 -0
- package/src/scripts/_lib/delivery_arm_experiment.ts +2 -2
- package/src/scripts/_lib/depth_flip.ts +141 -0
- package/src/scripts/_lib/design_lock.ts +117 -0
- package/src/scripts/_lib/design_sync_ledger.ts +142 -0
- package/src/scripts/_lib/design_sync_plan.ts +177 -0
- package/src/scripts/_lib/design_sync_reconcile.ts +159 -0
- package/src/scripts/_lib/design_sync_verify.ts +99 -0
- package/src/scripts/_lib/design_system_claude_design.ts +323 -0
- package/src/scripts/_lib/design_system_import.ts +84 -6
- package/src/scripts/_lib/dispatch_import_closure.ts +42 -11
- package/src/scripts/_lib/egress_credential_env.ts +35 -0
- package/src/scripts/_lib/egress_engine.ts +22 -0
- package/src/scripts/_lib/egress_known_values.ts +223 -0
- package/src/scripts/_lib/egress_normalize.ts +67 -0
- package/src/scripts/_lib/egress_prefixes.ts +42 -0
- package/src/scripts/_lib/egress_rules.ts +896 -0
- package/src/scripts/_lib/egress_rules_linearity.ts +56 -0
- package/src/scripts/_lib/egress_sender_scan.ts +290 -0
- package/src/scripts/_lib/egress_session_table.ts +510 -0
- package/src/scripts/_lib/egress_text.ts +63 -0
- package/src/scripts/_lib/egress_token.ts +252 -0
- package/src/scripts/_lib/empty_cycles.ts +1 -1
- package/src/scripts/_lib/environment_detector.ts +45 -30
- package/src/scripts/_lib/exemption_shape.ts +75 -1
- package/src/scripts/_lib/floor_posture.ts +185 -0
- package/src/scripts/_lib/forge_protection.ts +140 -2
- package/src/scripts/_lib/global_deploy_inventory.ts +159 -6
- package/src/scripts/_lib/guidelines_lane.ts +12 -1
- package/src/scripts/_lib/hand_kinds.ts +65 -0
- package/src/scripts/_lib/headless_invocation.ts +3 -3
- package/src/scripts/_lib/host_capability.ts +34 -2
- package/src/scripts/_lib/host_env_write.ts +39 -18
- package/src/scripts/_lib/host_listing_model.ts +14 -7
- package/src/scripts/_lib/identifier_redaction.ts +26 -0
- package/src/scripts/_lib/impact_bump.ts +70 -0
- package/src/scripts/_lib/install_reach_checks.ts +53 -1
- package/src/scripts/_lib/installed_layer.ts +31 -0
- package/src/scripts/_lib/installed_layer_normalise.ts +75 -0
- package/src/scripts/_lib/instructions_loaded_classify.ts +75 -0
- package/src/scripts/_lib/instructions_loaded_event.ts +53 -0
- package/src/scripts/_lib/knowledge_global_redaction.ts +2 -2
- package/src/scripts/_lib/layer_form_corpus.ts +165 -0
- package/src/scripts/_lib/layer_form_decision.ts +248 -0
- package/src/scripts/_lib/layer_form_evidence.ts +112 -0
- package/src/scripts/_lib/lean_projection_mode.ts +32 -161
- package/src/scripts/_lib/llm_proposer_transport.ts +1 -0
- package/src/scripts/_lib/loop_guards.ts +8 -120
- package/src/scripts/_lib/major_surface.ts +207 -0
- package/src/scripts/_lib/mcp_bridge.ts +30 -69
- package/src/scripts/_lib/merge_clearance_record.ts +384 -0
- package/src/scripts/_lib/neighbour_census.ts +18 -1
- package/src/scripts/_lib/orchestration_record.ts +61 -0
- package/src/scripts/_lib/outcome_vocabularies.ts +15 -23
- package/src/scripts/_lib/pin_advice.ts +49 -0
- package/src/scripts/_lib/platform_anchor.ts +222 -0
- package/src/scripts/_lib/procedure_checks.ts +5 -0
- package/src/scripts/_lib/project_tree_form.ts +134 -0
- package/src/scripts/_lib/projection_key_migration.ts +122 -0
- package/src/scripts/_lib/prompt_shape.ts +13 -2
- package/src/scripts/_lib/provenance_verify.ts +272 -0
- package/src/scripts/_lib/quota_parked.ts +27 -1
- package/src/scripts/_lib/ratification_artifact.ts +64 -1
- package/src/scripts/_lib/ratification_subject.ts +508 -46
- package/src/scripts/_lib/release_findings_ingest.ts +52 -5
- package/src/scripts/_lib/release_highlights.ts +72 -2
- package/src/scripts/_lib/release_settings_surface.ts +392 -0
- package/src/scripts/_lib/review_round.ts +134 -0
- package/src/scripts/_lib/roadmap_checkboxes.ts +1 -1
- package/src/scripts/_lib/roadmap_slug_lock.ts +254 -0
- package/src/scripts/_lib/roadmap_step_size.ts +75 -0
- package/src/scripts/_lib/run_checkpoint.ts +60 -3
- package/src/scripts/_lib/runtime_wiring_checks.ts +15 -1
- package/src/scripts/_lib/scope_guard.sh +64 -5
- package/src/scripts/_lib/scoped_projection.ts +136 -3
- package/src/scripts/_lib/secret_detector.ts +24 -103
- package/src/scripts/_lib/security_fix.ts +429 -0
- package/src/scripts/_lib/security_fix_context.ts +133 -0
- package/src/scripts/_lib/self_repair.ts +69 -39
- package/src/scripts/_lib/self_repair_outgoing.ts +209 -0
- package/src/scripts/_lib/self_repair_payload.ts +86 -0
- package/src/scripts/_lib/session_eol.ts +3 -0
- package/src/scripts/_lib/session_pr_watch.ts +207 -0
- package/src/scripts/_lib/session_register.ts +51 -1
- package/src/scripts/_lib/session_tag.ts +51 -0
- package/src/scripts/_lib/settings_removed_keys.ts +30 -0
- package/src/scripts/_lib/settings_renamed_keys.ts +19 -5
- package/src/scripts/_lib/skill_catalogue.ts +66 -25
- package/src/scripts/_lib/skill_fork_pilot.ts +121 -0
- package/src/scripts/_lib/skill_leases.ts +203 -0
- package/src/scripts/_lib/skill_listing_overrides.ts +294 -0
- package/src/scripts/_lib/skill_materialisation.ts +388 -0
- package/src/scripts/_lib/skill_materialisation_gate.ts +210 -0
- package/src/scripts/_lib/skill_materialisation_lock.ts +149 -0
- package/src/scripts/_lib/skill_materialisation_triggers.ts +96 -0
- package/src/scripts/_lib/skill_origin.ts +21 -1
- package/src/scripts/_lib/skill_reach.ts +342 -0
- package/src/scripts/_lib/source_shape.ts +7 -2
- package/src/scripts/_lib/sqlite_guard.ts +1 -1
- package/src/scripts/_lib/step_anatomy.ts +330 -0
- package/src/scripts/_lib/subagent_capsule.ts +8 -2
- package/src/scripts/_lib/subagent_native_fields.ts +30 -0
- package/src/scripts/_lib/subagent_spawn.ts +36 -0
- package/src/scripts/_lib/subagent_steering.ts +367 -0
- package/src/scripts/_lib/svg_dom.ts +318 -0
- package/src/scripts/_lib/svg_filled_counter.ts +287 -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 +1455 -0
- package/src/scripts/_lib/svg_urls.ts +72 -0
- package/src/scripts/_lib/test_delta.ts +89 -6
- package/src/scripts/_lib/tier_downshift_verdict.ts +222 -0
- package/src/scripts/_lib/tool_result_census.ts +62 -0
- package/src/scripts/_lib/trigger_routers.ts +1 -0
- package/src/scripts/_lib/turnaround_throughput.ts +378 -0
- package/src/scripts/_lib/ui_surface.ts +22 -0
- package/src/scripts/_lib/unattended_gates.ts +100 -0
- package/src/scripts/_lib/undeployed_fixes.ts +34 -0
- package/src/scripts/_lib/update_check.ts +143 -12
- package/src/scripts/_lib/update_invite.ts +116 -0
- package/src/scripts/_lib/update_notice.ts +259 -0
- package/src/scripts/_lib/verification_command.ts +59 -0
- package/src/scripts/_lib/verify_clause.ts +31 -19
- package/src/scripts/_lib/version_order.ts +146 -0
- package/src/scripts/_lib/worker_reuse.ts +191 -0
- package/src/scripts/_lib/workspace_secrets.ts +273 -0
- package/src/scripts/_lib/worktree_git.ts +67 -0
- package/src/scripts/_lib/worktree_ignored.ts +116 -0
- package/src/scripts/adoption_status.ts +330 -3
- package/src/scripts/adr_cite_check.ts +93 -0
- package/src/scripts/advisories.ts +803 -0
- package/src/scripts/ai-image/adapters/flux.sh +1 -0
- package/src/scripts/ai-image/adapters/gemini-image.sh +1 -0
- package/src/scripts/ai-image/adapters/ideogram.sh +1 -0
- package/src/scripts/ai-image/adapters/recraft.sh +1 -0
- package/src/scripts/ai-video/adapters/comfyui.sh +1 -0
- package/src/scripts/ai-video/adapters/fal.sh +1 -0
- package/src/scripts/ai-video/adapters/gemini-veo.sh +1 -0
- package/src/scripts/ai-video/adapters/higgsfield.sh +1 -0
- package/src/scripts/ai-video/adapters/kling.sh +1 -0
- package/src/scripts/ai-video/adapters/musetalk.sh +1 -0
- package/src/scripts/ai-video/adapters/openai-images.sh +1 -0
- package/src/scripts/ai-video/adapters/replicate.sh +1 -0
- package/src/scripts/ai-video/adapters/sora.sh +1 -0
- package/src/scripts/ai-video/adapters/syncso.sh +1 -0
- package/src/scripts/ai-video/stitch.sh +115 -2
- package/src/scripts/ai_council/airgap.ts +1 -0
- package/src/scripts/ai_council/api_transport.ts +27 -4
- package/src/scripts/ai_council/budget_guard.ts +300 -11
- package/src/scripts/ai_council/bundler.ts +20 -29
- package/src/scripts/ai_council/chairman.ts +17 -2
- package/src/scripts/ai_council/cli_agency_bounds.ts +158 -0
- package/src/scripts/ai_council/cli_launch_env.ts +54 -0
- package/src/scripts/ai_council/cli_least_agency_canary.ts +18 -2
- package/src/scripts/ai_council/clients.ts +55 -73
- package/src/scripts/ai_council/config.ts +16 -22
- package/src/scripts/ai_council/council_egress.ts +167 -0
- package/src/scripts/ai_council/exposure_ledger.ts +117 -0
- package/src/scripts/ai_council/free_hand_shadow.ts +276 -0
- package/src/scripts/ai_council/free_route.ts +216 -0
- package/src/scripts/ai_council/free_route_catalog.ts +173 -0
- package/src/scripts/ai_council/free_route_client.ts +95 -0
- package/src/scripts/ai_council/free_rung.ts +61 -0
- package/src/scripts/ai_council/hand_payload.ts +230 -0
- package/src/scripts/ai_council/hand_schemas.ts +123 -0
- package/src/scripts/ai_council/jury_aggregate.ts +155 -1
- package/src/scripts/ai_council/kind_flip.ts +221 -0
- package/src/scripts/ai_council/kind_flip_state.ts +19 -0
- package/src/scripts/ai_council/learn_low_impact_preview.ts +50 -22
- package/src/scripts/ai_council/modification_review.ts +98 -5
- package/src/scripts/ai_council/necessity.ts +7 -0
- package/src/scripts/ai_council/orchestrator.ts +16 -16
- package/src/scripts/ai_council/pricing.ts +10 -0
- package/src/scripts/ai_council/redact_low_impact_entry.ts +5 -2
- package/src/scripts/ai_council/response_render.ts +27 -4
- package/src/scripts/ai_council/round_reservations.ts +119 -0
- package/src/scripts/ai_council/route_chooser.ts +161 -0
- package/src/scripts/ai_council/route_liveness.ts +152 -0
- package/src/scripts/ai_council/route_member.ts +52 -0
- package/src/scripts/ai_council/seat_policy.ts +40 -0
- package/src/scripts/ai_council/seat_resume.ts +40 -0
- package/src/scripts/ai_council/shadow_dispatch.ts +13 -3
- package/src/scripts/ai_council/spend_gate.ts +18 -2
- package/src/scripts/ai_council/status_surface.ts +37 -0
- package/src/scripts/ai_council/transport_resolver.ts +15 -18
- package/src/scripts/analysis_analysts.ts +226 -0
- package/src/scripts/analysis_anchors.ts +140 -0
- package/src/scripts/analysis_and_optimize.ts +44 -0
- package/src/scripts/analysis_emit.ts +150 -0
- package/src/scripts/analysis_exchange.ts +186 -0
- package/src/scripts/analysis_gate.ts +158 -0
- package/src/scripts/analysis_inbox_final.ts +173 -0
- package/src/scripts/analysis_ledger.ts +119 -0
- package/src/scripts/analysis_pr_optimize.ts +219 -0
- package/src/scripts/analysis_pr_review.ts +240 -0
- package/src/scripts/analysis_pr_target.ts +121 -0
- package/src/scripts/analysis_prompts.ts +130 -0
- package/src/scripts/analysis_publish.ts +358 -0
- package/src/scripts/analysis_questions.ts +78 -0
- package/src/scripts/analysis_run.ts +248 -0
- package/src/scripts/analysis_run_record.ts +210 -0
- package/src/scripts/analysis_target.ts +343 -0
- package/src/scripts/analysis_validate.ts +161 -0
- package/src/scripts/anchor_eval_falsify.ts +1 -1
- package/src/scripts/arrival_report.ts +115 -0
- package/src/scripts/ask_transport.ts +284 -35
- package/src/scripts/backfill_model_tier.ts +4 -5
- package/src/scripts/before_complete_hook.ts +48 -2
- package/src/scripts/bench_hook_latency.ts +3 -3
- package/src/scripts/bench_procedure_cursor.ts +440 -0
- package/src/scripts/bootstrap.sh +3 -3
- package/src/scripts/build_exit_code_register.ts +440 -0
- package/src/scripts/build_proof.ts +23 -1
- package/src/scripts/cache_realization_report.ts +155 -14
- package/src/scripts/canary_liveness.ts +117 -0
- package/src/scripts/chat_history.ts +12 -15
- package/src/scripts/check_account_surface.ts +318 -0
- package/src/scripts/check_agent_artifact_location.ts +17 -160
- package/src/scripts/check_bundle_path_leakage.ts +6 -0
- package/src/scripts/check_ci_local_parity.ts +21 -13
- package/src/scripts/check_claims.ts +77 -2
- package/src/scripts/check_completion_review.ts +34 -1
- package/src/scripts/check_concern_admissions.ts +41 -5
- package/src/scripts/check_consumer_scope_flip.ts +1 -1
- package/src/scripts/check_context_paths.ts +2 -0
- package/src/scripts/check_council_layout.ts +9 -0
- package/src/scripts/check_credential_spelling.ts +267 -0
- package/src/scripts/check_egress_mutations.ts +239 -0
- package/src/scripts/check_enforcement_coverage.ts +16 -3
- package/src/scripts/check_estate_count.ts +16 -1
- package/src/scripts/check_finding_dispositions.ts +147 -0
- package/src/scripts/check_gate_coverage.ts +123 -21
- package/src/scripts/check_gate_reachability.ts +16 -2
- package/src/scripts/check_generator_sync.ts +46 -0
- package/src/scripts/check_hook_bundle_composition.ts +139 -1
- package/src/scripts/check_host_docs_digest.ts +142 -5
- package/src/scripts/check_kernel_edit_ratified.ts +301 -76
- package/src/scripts/check_kernel_rule_bundle.ts +14 -10
- package/src/scripts/check_knowledge_cards.ts +83 -3
- package/src/scripts/check_memory.ts +13 -3
- package/src/scripts/check_pack_size.ts +1 -1
- package/src/scripts/check_permission_deny_syntax.ts +247 -0
- package/src/scripts/check_platform_anchor.ts +243 -0
- package/src/scripts/check_proposal.ts +183 -1
- package/src/scripts/check_reach_channels.ts +5 -3
- package/src/scripts/check_references.ts +5 -2
- package/src/scripts/check_release_manifest_content.ts +33 -0
- package/src/scripts/check_release_pr_shape.ts +5 -0
- package/src/scripts/check_rule_invariants.ts +9 -1
- package/src/scripts/check_skill_body_budget.ts +343 -0
- package/src/scripts/check_skill_requires.ts +137 -1
- package/src/scripts/check_step_receipts.ts +246 -0
- package/src/scripts/check_structural_breaking.ts +7 -1
- package/src/scripts/check_suppression_hygiene.ts +8 -0
- package/src/scripts/check_test_weakening.ts +14 -0
- package/src/scripts/check_token_quality_golden.ts +5 -1
- package/src/scripts/check_update_banner.ts +50 -3
- package/src/scripts/check_verify_expectation_delta.ts +2 -1
- package/src/scripts/check_voice_lexicon.ts +531 -0
- package/src/scripts/ci_os_attribution.ts +327 -0
- package/src/scripts/ci_platform_scope.ts +69 -0
- package/src/scripts/ci_settle.ts +4 -1
- package/src/scripts/ci_status.ts +0 -1
- package/src/scripts/ci_time_to_green.ts +748 -0
- package/src/scripts/classify_merge_risk.ts +407 -19
- package/src/scripts/code_graph/sqlite_store.ts +1 -1
- package/src/scripts/compile_trigger_evals.ts +353 -0
- package/src/scripts/condense.ts +25 -31
- package/src/scripts/consumer_matrix.ts +61 -3
- package/src/scripts/council_availability_hook.ts +12 -4
- package/src/scripts/council_cli.ts +48 -38
- package/src/scripts/cross_repo_retrieve.ts +9 -72
- package/src/scripts/design_lock.ts +106 -0
- package/src/scripts/design_slop_rules.ts +30 -0
- package/src/scripts/design_sync.ts +264 -0
- package/src/scripts/design_system_import.ts +30 -13
- package/src/scripts/dispatch_economy_report.ts +46 -1
- package/src/scripts/dispatch_r2_reviewer.ts +41 -5
- package/src/scripts/egress_canary.ts +166 -0
- package/src/scripts/egress_sender_census.ts +101 -0
- package/src/scripts/external_sources_denylist.json +94 -12
- package/src/scripts/generate_catalog.ts +6 -2
- package/src/scripts/generate_owned_digest.ts +163 -0
- package/src/scripts/generate_reference_toc.ts +143 -0
- package/src/scripts/generate_subagent_floor.ts +11 -1
- package/src/scripts/handoff_context_hook.ts +34 -0
- package/src/scripts/hook_carrier_census.ts +263 -0
- package/src/scripts/hook_chunks.d.mts +12 -0
- package/src/scripts/hook_chunks.mjs +114 -0
- package/src/scripts/hook_manifest.json +1 -1
- package/src/scripts/hook_manifest.yaml +65 -42
- package/src/scripts/hooks/block_config_weakening.ts +127 -3
- package/src/scripts/hooks/block_credential_reads.ts +165 -0
- package/src/scripts/hooks/block_no_verify.ts +47 -23
- package/src/scripts/hooks/block_speaking_inbox_dir.ts +54 -8
- package/src/scripts/hooks/category_a.ts +202 -25
- package/src/scripts/hooks/concern_failure_policy.ts +6 -6
- package/src/scripts/hooks/concern_registry.ts +31 -6
- package/src/scripts/hooks/concern_registry_types.ts +11 -0
- package/src/scripts/hooks/delegation_nudge_hook.ts +105 -15
- package/src/scripts/hooks/design_pass_hook.ts +199 -13
- package/src/scripts/hooks/dispatch_hook.ts +13 -12
- package/src/scripts/hooks/egress_engine_loader.ts +125 -0
- package/src/scripts/hooks/egress_stage.ts +440 -0
- package/src/scripts/hooks/hook_stdin.ts +29 -4
- package/src/scripts/hooks/host_docs_pages.ts +194 -0
- package/src/scripts/hooks/host_docs_pages.yaml +75 -0
- package/src/scripts/hooks/host_lowering.json +1 -1
- package/src/scripts/hooks/host_lowering.yaml +22 -21
- package/src/scripts/hooks/host_rate_marker_hook.ts +73 -0
- package/src/scripts/hooks/instructions_observer_hook.ts +170 -0
- package/src/scripts/hooks/interruption_ledger_hook.ts +1 -1
- package/src/scripts/hooks/lazy_concern.ts +148 -0
- package/src/scripts/hooks/orchestration_record_hook.ts +80 -2
- package/src/scripts/hooks/payload_stub.ts +16 -6
- package/src/scripts/hooks/permission_gate.ts +7 -7
- package/src/scripts/hooks/push_settle_hook.ts +32 -3
- package/src/scripts/hooks/replay_hook.ts +43 -0
- package/src/scripts/hooks/reread_guard_hook.ts +87 -10
- package/src/scripts/hooks/rtk_wrap_hook.ts +4 -3
- package/src/scripts/hooks/rule_inject_hook.ts +8 -1
- package/src/scripts/hooks/session_eol_hook.ts +48 -1
- package/src/scripts/hooks/source_first_gate_hook.ts +6 -8
- package/src/scripts/hooks/spawn_guard_shadow_hook.ts +203 -10
- package/src/scripts/hooks/state_io.ts +2 -2
- package/src/scripts/hooks/svg_obligation.ts +553 -0
- package/src/scripts/hooks/svg_rules_loader.ts +133 -0
- package/src/scripts/hooks/tool_result_bytes_hook.ts +14 -5
- package/src/scripts/hooks/turn_end_gate_hook.ts +5 -3
- package/src/scripts/hooks/ui_route_nudge_hook.ts +2 -12
- package/src/scripts/hooks_doctor.ts +31 -0
- package/src/scripts/hooks_status.ts +58 -3
- package/src/scripts/inbox_source_census.ts +74 -13
- package/src/scripts/install +25 -3
- package/src/scripts/install.ts +60 -91
- package/src/scripts/interruption_report.ts +11 -1
- package/src/scripts/layer_baseline_report.ts +267 -0
- package/src/scripts/learning_sidecar.ts +1 -1
- package/src/scripts/lint_agents_layout.ts +3 -0
- package/src/scripts/lint_blocker_citations.ts +104 -0
- package/src/scripts/lint_breaking_changes_index.ts +40 -7
- package/src/scripts/lint_consolidation_lineage.ts +150 -19
- package/src/scripts/lint_consumer_internal_refs.ts +90 -42
- package/src/scripts/lint_context_spine_usage.ts +21 -0
- package/src/scripts/lint_design_antipattern_parity.ts +39 -7
- package/src/scripts/lint_design_quality.ts +60 -12
- package/src/scripts/lint_evidence_artifacts.ts +31 -0
- package/src/scripts/lint_example_fences.ts +11 -2
- package/src/scripts/lint_ghostwriter_source.ts +42 -10
- package/src/scripts/lint_hook_manifest.ts +94 -0
- package/src/scripts/lint_marketplace_install_completeness.ts +4 -0
- package/src/scripts/lint_mcp_config_security.ts +9 -11
- package/src/scripts/lint_motion_authority_drift.ts +27 -0
- package/src/scripts/lint_plan_risk_register.ts +28 -1
- package/src/scripts/lint_positioning.ts +4 -4
- package/src/scripts/lint_provenance.ts +1 -0
- package/src/scripts/lint_roadmap_blockers.ts +65 -4
- package/src/scripts/lint_roadmap_complexity.ts +98 -0
- package/src/scripts/lint_skill_link_reach.ts +251 -9
- package/src/scripts/lint_skill_procedures.ts +252 -0
- package/src/scripts/lint_skill_scripts_readonly.ts +12 -1
- package/src/scripts/lint_subagent_determinism.ts +14 -1
- package/src/scripts/lint_svg_asset.ts +365 -0
- package/src/scripts/lint_ticked_unmet_criteria.ts +300 -21
- package/src/scripts/mcp_registry_submit.sh +2 -2
- package/src/scripts/mcp_server/consumer_tool_catalog.json +4 -4
- package/src/scripts/mcp_server/suggest_skill.ts +89 -4
- package/src/scripts/mcp_server/tools.ts +2 -33
- package/src/scripts/measure_skill_ranker_baseline.ts +203 -5
- package/src/scripts/measure_turn_end_gate.ts +61 -1
- package/src/scripts/merge_clearance.ts +225 -0
- package/src/scripts/migrate_command_suggestions.ts +1 -1
- package/src/scripts/network_sources.ts +236 -0
- package/src/scripts/no_go_deny_rows.ts +225 -0
- package/src/scripts/orchestration_record.ts +15 -2
- package/src/scripts/plan_test_shards.ts +103 -0
- package/src/scripts/pr_url_reminder_hook.ts +10 -0
- package/src/scripts/print_required_checks.ts +5 -5
- package/src/scripts/probe_depth_shadow.ts +406 -0
- package/src/scripts/probe_turnaround.ts +342 -10
- package/src/scripts/ratification_subject.ts +176 -0
- package/src/scripts/rdp_gate_classify.ts +1 -0
- package/src/scripts/rdp_quality_eval.ts +1 -0
- package/src/scripts/release.ts +26 -55
- package/src/scripts/release_drill.ts +52 -23
- package/src/scripts/release_env.ts +37 -0
- package/src/scripts/release_publication.ts +11 -1
- package/src/scripts/report_consumer_gate_reach.ts +233 -0
- package/src/scripts/report_merge_gate_load.ts +295 -0
- package/src/scripts/report_project_contract.ts +123 -0
- package/src/scripts/report_reducible_classes.ts +342 -0
- package/src/scripts/report_required_checks_drift.ts +5 -3
- package/src/scripts/report_skill_host_census.ts +199 -0
- package/src/scripts/report_standing_payload_by_host.ts +7 -7
- package/src/scripts/retro.ts +758 -0
- package/src/scripts/retro_facts.ts +575 -0
- package/src/scripts/retro_queue.ts +739 -0
- package/src/scripts/retro_session_facts.ts +218 -0
- package/src/scripts/retro_sweep.ts +493 -0
- package/src/scripts/retro_triage.ts +126 -0
- package/src/scripts/roadmap_context.ts +2 -2
- package/src/scripts/roadmap_drain_queue.ts +601 -0
- package/src/scripts/run_supervise.ts +24 -2
- package/src/scripts/schemas/agent-settings.schema.json +0 -16
- package/src/scripts/schemas/command.schema.json +3 -3
- package/src/scripts/schemas/review-findings.schema.json +8 -0
- package/src/scripts/schemas/skill.schema.json +7 -6
- package/src/scripts/schemas/subagent.schema.json +33 -2
- package/src/scripts/score_skill_selection.ts +5 -2
- package/src/scripts/second_brain_retrieval.ts +1 -0
- package/src/scripts/second_brain_run.ts +1 -0
- package/src/scripts/self_repair_cli.ts +563 -87
- package/src/scripts/self_review_gate.ts +59 -4
- package/src/scripts/session_register_hook.ts +91 -4
- package/src/scripts/sessions_cli.ts +100 -5
- package/src/scripts/skill_collision_clusters.ts +1 -1
- package/src/scripts/skill_tools/score_skill_relevance.ts +31 -2
- package/src/scripts/skill_trigger_eval.ts +4 -2
- package/src/scripts/source_adapters.ts +183 -0
- package/src/scripts/step_receipt.ts +100 -0
- package/src/scripts/sync_pr_branch.ts +4 -0
- package/src/scripts/test_council_qualification.ts +1 -1
- package/src/scripts/trigger_eval_grandfather.json +3 -49
- package/src/scripts/trigger_eval_rotation.ts +31 -3
- package/src/scripts/ui_conformance_probe.ts +405 -1
- package/src/scripts/update_counts.ts +230 -11
- package/src/scripts/update_invite_hook.ts +245 -0
- package/src/scripts/update_notice_hook.ts +298 -0
- package/src/scripts/validate_frontmatter.ts +85 -0
- package/src/scripts/worker_reuse_shadow_report.ts +121 -0
- package/src/scripts/worktree_cleanup_check.ts +915 -121
- package/src/server/io/yamlIO.ts +2 -2
- package/src/server/schemas/settings.ts +37 -23
- package/src/shared/brandTokenDocument.ts +46 -0
- package/src/shared/brandTokenPaths.ts +43 -0
- package/src/shared/settingsCarveOut.ts +0 -8
- package/src/shared/skillRanking.ts +106 -5
- package/src/shared/userMd/formAdapter.ts +15 -1
- package/src/shared/userMd/schema.ts +22 -0
- package/src/templates/agent-user.md +4 -0
- package/src/templates/agent-user.yml +4 -0
- package/dist/cli-delegate/chunk-523HCFYO.js +0 -90
- package/dist/cli-delegate/chunk-AL3RZ22D.js +0 -74
- package/dist/cli-delegate/chunk-KB5FZ655.js +0 -208
- package/dist/cli-delegate/chunk-MDPPKQCQ.js +0 -875
- package/dist/cli-delegate/chunk-MSUL5NYP.js +0 -1123
- package/dist/cli-delegate/chunk-OAFSJBHH.js +0 -272
- package/dist/ui/assets/index-C3djEJah.js +0 -23
- package/src/scripts/_lib/continuation_ladder.ts +0 -335
- package/src/scripts/hooks/run_continuation_hook.ts +0 -1524
|
@@ -57,9 +57,8 @@
|
|
|
57
57
|
* thin the standing corpus. That fallback now fires only when no layer carried
|
|
58
58
|
* a value at all, rather than whenever the concern looked in the wrong place.
|
|
59
59
|
*/
|
|
60
|
-
import * as path from 'node:path';
|
|
61
60
|
|
|
62
|
-
import {
|
|
61
|
+
import { shippedProjection } from './project_tree_form.js';
|
|
63
62
|
|
|
64
63
|
/**
|
|
65
64
|
* The three projection shapes, and the two different defaults they answer to.
|
|
@@ -76,6 +75,7 @@ export type LeanProjectionMode = 'eager-all' | 'thin' | 'delivery';
|
|
|
76
75
|
|
|
77
76
|
export const DEFAULT_LEAN_PROJECTION_MODE: LeanProjectionMode = 'eager-all';
|
|
78
77
|
|
|
78
|
+
|
|
79
79
|
/** Map a raw settings value onto a mode. Unrecognised → `eager-all`. */
|
|
80
80
|
export function normalizeLeanProjectionMode(raw: unknown): LeanProjectionMode {
|
|
81
81
|
const v = typeof raw === 'string' ? raw.trim().toLowerCase() : '';
|
|
@@ -265,178 +265,49 @@ export interface ResolveOptions {
|
|
|
265
265
|
}
|
|
266
266
|
|
|
267
267
|
/**
|
|
268
|
-
*
|
|
268
|
+
* The form the PROJECT tree is built with, and the hosts it applies to.
|
|
269
269
|
*
|
|
270
|
-
*
|
|
271
|
-
*
|
|
272
|
-
*
|
|
273
|
-
*
|
|
274
|
-
*
|
|
275
|
-
*
|
|
270
|
+
* NO SETTINGS READ SINCE ADR-293. The key this resolved is removed from every
|
|
271
|
+
* shipped surface, and a hand-written leftover is not read either — which is
|
|
272
|
+
* what makes its tombstone line ("ignored") true for this reader as well as for
|
|
273
|
+
* the docs. The form comes from the package-owned record in
|
|
274
|
+
* `project_tree_form.ts`, which carries what the template carried plus the
|
|
275
|
+
* evidence ADR-267 measured for it, and which an observed layer-form verdict
|
|
276
|
+
* supersedes. `opts` is kept so no caller changes; only `packageRoot` is read,
|
|
277
|
+
* because that is where the record lives.
|
|
276
278
|
*/
|
|
277
279
|
export function resolveLeanProjection(opts: ResolveOptions = {}): ResolvedLeanProjection {
|
|
278
|
-
|
|
279
|
-
// either-or pick. `load_agent_settings` expands whatever it is given into
|
|
280
|
-
// `[the file, <its dir>/agents/settings/.agent-settings.yml, <its dir>/
|
|
281
|
-
// agents/settings/.agent-settings.local.yml]` and merges them deepest-wins,
|
|
282
|
-
// so handing it the root path reads BOTH the legacy and the canonical file
|
|
283
|
-
// — which is strictly more than picking one, and is what a tree carrying
|
|
284
|
-
// both should resolve to. It also keeps one export out of this module's
|
|
285
|
-
// import list, which is runtime bytes in the composed hook bundle.
|
|
286
|
-
const file =
|
|
287
|
-
opts.settingsPath ?? path.join(opts.projectRoot ?? process.cwd(), '.agent-settings.yml');
|
|
288
|
-
const tpl =
|
|
289
|
-
opts.packageRoot == null
|
|
290
|
-
? null
|
|
291
|
-
: path.join(opts.packageRoot, 'src', 'config', 'agent-settings.template.yml');
|
|
292
|
-
let lean: unknown;
|
|
293
|
-
try {
|
|
294
|
-
lean = load_agent_settings(
|
|
295
|
-
tpl === null ? { project_path: file } : { project_path: file, template_path: tpl },
|
|
296
|
-
)['lean_projection'];
|
|
297
|
-
} catch {
|
|
298
|
-
/* a settings layer nothing can read must never fail a turn */
|
|
299
|
-
}
|
|
300
|
-
const obj = typeof lean === 'object' && lean !== null && !Array.isArray(lean) ? lean : {};
|
|
301
|
-
const o = obj as Record<string, unknown>;
|
|
280
|
+
const shipped = opts.packageRoot == null ? null : shippedProjection(opts.packageRoot);
|
|
302
281
|
return {
|
|
303
|
-
mode:
|
|
304
|
-
hosts: resolveLeanProjectionHosts(
|
|
305
|
-
//
|
|
306
|
-
// template
|
|
307
|
-
//
|
|
308
|
-
|
|
309
|
-
// settings read for an answer nobody asked for. A getter keeps the
|
|
310
|
-
// field's shape (`readonly modeExplicit: boolean`) and charges only the
|
|
311
|
-
// caller that touches it.
|
|
312
|
-
get modeExplicit(): boolean {
|
|
313
|
-
return rawExplicitLeanProjectionMode(opts) !== '';
|
|
314
|
-
},
|
|
282
|
+
mode: shipped?.mode ?? DEFAULT_LEAN_PROJECTION_MODE,
|
|
283
|
+
hosts: resolveLeanProjectionHosts(shipped === null || shipped.hosts.length === 0 ? undefined : shipped.hosts),
|
|
284
|
+
// A package-owned record is never a consumer's choice, exactly as the
|
|
285
|
+
// shipped template never was. Constant since there is no layer left
|
|
286
|
+
// that could carry one.
|
|
287
|
+
modeExplicit: false,
|
|
315
288
|
};
|
|
316
289
|
}
|
|
317
290
|
|
|
318
|
-
/**
|
|
319
|
-
* A path no tree contains, so `template_defaults` contributes nothing.
|
|
320
|
-
*
|
|
321
|
-
* This is the mechanism `load_agent_settings` documents for the purpose —
|
|
322
|
-
* "a test or tool that pins every other input can pin the defaults base too,
|
|
323
|
-
* and point it at a nonexistent file to isolate the cascade" — used here for a
|
|
324
|
-
* tool rather than a test. It is a reserved device filename on every platform
|
|
325
|
-
* this package runs on and is never created, so the read fails and the loader's
|
|
326
|
-
* own tolerance turns it into `{}`.
|
|
327
|
-
*
|
|
328
|
-
* The alternative — re-reading the YAML layers by hand — was rejected because
|
|
329
|
-
* it would be a SECOND reader of the same key, which is the precise defect step
|
|
330
|
-
* 1.2 of the carrier roadmap existed to remove. Isolating the base keeps one
|
|
331
|
-
* reader and changes only which layers it is given.
|
|
332
|
-
*/
|
|
333
|
-
const NO_TEMPLATE_LAYER = path.join(path.sep, 'dev', 'null', 'agent-config-absent-template.yml');
|
|
334
291
|
|
|
335
|
-
/**
|
|
336
|
-
* The RAW `lean_projection.mode` string from the user-controlled layers only,
|
|
337
|
-
* or `''` when no such layer carries it.
|
|
338
|
-
*
|
|
339
|
-
* Raw and un-normalised on purpose: {@link normalizeLeanProjectionMode} maps
|
|
340
|
-
* everything unrecognised — `''` included — onto `eager-all`, so a normalised
|
|
341
|
-
* answer cannot tell "the user chose eager-all" from "the user chose nothing".
|
|
342
|
-
* Provenance needs exactly that distinction, so it has to be read before the
|
|
343
|
-
* normaliser runs.
|
|
344
|
-
*/
|
|
345
|
-
export function rawExplicitLeanProjectionMode(opts: ResolveOptions = {}): string {
|
|
346
|
-
const file =
|
|
347
|
-
opts.settingsPath ?? path.join(opts.projectRoot ?? process.cwd(), '.agent-settings.yml');
|
|
348
|
-
let lean: unknown;
|
|
349
|
-
try {
|
|
350
|
-
lean = load_agent_settings({ project_path: file, template_path: NO_TEMPLATE_LAYER })[
|
|
351
|
-
'lean_projection'
|
|
352
|
-
];
|
|
353
|
-
} catch {
|
|
354
|
-
return ''; // a layer nothing can read states no preference
|
|
355
|
-
}
|
|
356
|
-
if (typeof lean !== 'object' || lean === null || Array.isArray(lean)) return '';
|
|
357
|
-
const m = (lean as Record<string, unknown>)['mode'];
|
|
358
|
-
return typeof m === 'string' ? m.trim() : '';
|
|
359
|
-
}
|
|
360
292
|
|
|
361
|
-
/**
|
|
362
|
-
* Did a human ask for this mode, and is it the one the caller is gated on?
|
|
363
|
-
*
|
|
364
|
-
* The question an installer actually has. `modeExplicit` alone is not enough —
|
|
365
|
-
* a consumer who explicitly set `eager-all` has set the key explicitly and must
|
|
366
|
-
* NOT be thinned — so the two conditions are folded here rather than left to
|
|
367
|
-
* every caller to remember to combine.
|
|
368
|
-
*/
|
|
369
|
-
export function leanProjectionModeChosen(
|
|
370
|
-
mode: LeanProjectionMode,
|
|
371
|
-
opts: ResolveOptions = {},
|
|
372
|
-
): boolean {
|
|
373
|
-
const raw = rawExplicitLeanProjectionMode(opts);
|
|
374
|
-
return raw !== '' && normalizeLeanProjectionMode(raw) === mode;
|
|
375
|
-
}
|
|
376
293
|
|
|
377
294
|
/**
|
|
378
|
-
* May the INSTALLER thin this host's rule tree?
|
|
379
|
-
*
|
|
380
|
-
* The host-aware sibling of {@link leanProjectionModeChosen}, and the predicate
|
|
381
|
-
* `road-to-an-installed-layer-that-is-thinned` step 1.1 keys on. It folds the
|
|
382
|
-
* three conditions that must hold together, once, so no caller has to remember
|
|
383
|
-
* to combine them:
|
|
295
|
+
* May the INSTALLER thin this host's rule tree? Never, since ADR-293.
|
|
384
296
|
*
|
|
385
|
-
*
|
|
386
|
-
*
|
|
387
|
-
*
|
|
388
|
-
*
|
|
389
|
-
* roadmap's blocker, decision D4).
|
|
390
|
-
* 2. **The chosen mode actually writes stubs.** A consumer who explicitly chose
|
|
391
|
-
* `eager-all` has set the key and must NOT be thinned on the strength of
|
|
392
|
-
* having an opinion.
|
|
393
|
-
* 3. **This host is in scope.** The same `hosts:` list the projector honours, so
|
|
394
|
-
* installer and projector cannot disagree about which trees are thinned.
|
|
297
|
+
* It used to fold three conditions — a human asked, the chosen mode writes
|
|
298
|
+
* stubs, this host is in scope — over a settings key. The key is gone, so the
|
|
299
|
+
* first condition can no longer be met by anything, and the honest shape is a
|
|
300
|
+
* constant rather than a cascade read that can only return one answer.
|
|
395
301
|
*
|
|
396
|
-
*
|
|
397
|
-
*
|
|
398
|
-
*
|
|
399
|
-
*
|
|
400
|
-
*
|
|
401
|
-
*
|
|
402
|
-
*
|
|
403
|
-
* runs once per deploy and does not care; the cost is named rather than rounded
|
|
404
|
-
* down because the same resolver serves the per-prompt delivery concern, which
|
|
405
|
-
* does NOT read provenance and therefore does not pay it.
|
|
302
|
+
* THIS IS NOT "thinning is impossible". A fresh install writes the full layer
|
|
303
|
+
* exactly as today, which is what step 3.3 of
|
|
304
|
+
* `road-to-a-setup-that-decides-itself` specifies; promotion happens later, in
|
|
305
|
+
* a session whose arrival record satisfies the decision function, and never at
|
|
306
|
+
* install time. The function is kept rather than deleted so that the one place
|
|
307
|
+
* that answer is decided stays named, and so `rule_inject_hook`'s
|
|
308
|
+
* served-once check keeps reading it when 3.3 gives it a real answer again.
|
|
406
309
|
*/
|
|
407
|
-
export function installerThinsHost(
|
|
408
|
-
|
|
409
|
-
...opts,
|
|
410
|
-
settingsPath: opts.settingsPath ?? NO_PROJECT_LAYER,
|
|
411
|
-
});
|
|
412
|
-
return modeExplicit && thinsHost(mode, hosts.hosts, hostId);
|
|
310
|
+
export function installerThinsHost(_hostId: string, _opts: ResolveOptions = {}): boolean {
|
|
311
|
+
return false;
|
|
413
312
|
}
|
|
414
313
|
|
|
415
|
-
/**
|
|
416
|
-
* A path no tree contains, so the PROJECT cascade contributes nothing.
|
|
417
|
-
*
|
|
418
|
-
* The same device {@link NO_TEMPLATE_LAYER} uses, pointed at the other end of
|
|
419
|
-
* the cascade, and the reason is scope rather than isolation: the thing
|
|
420
|
-
* {@link installerThinsHost} gates is a mutation of `~/.claude/rules`, which
|
|
421
|
-
* belongs to the MACHINE. A per-checkout value must not decide it, in either
|
|
422
|
-
* direction — a project saying `delivery` would thin the layer every other
|
|
423
|
-
* project on that machine reads, and a project saying `eager-all` would
|
|
424
|
-
* suppress an opt-in the user wrote user-globally, because the project cascade
|
|
425
|
-
* merges last and wins.
|
|
426
|
-
*
|
|
427
|
-
* `load_agent_settings` reads `user_global_settings_paths()` regardless of what
|
|
428
|
-
* `project_path` it is given, so pointing the project layer at nothing leaves
|
|
429
|
-
* exactly the machine-global layers — which is the scope the installer's
|
|
430
|
-
* sibling `_resolve_global_rule_scope` already resolves for the same deploy.
|
|
431
|
-
* A caller may still pass an explicit `settingsPath` (tests pin one). A
|
|
432
|
-
* `projectRoot` handed to {@link installerThinsHost} is DISCARDED — the `??`
|
|
433
|
-
* chain terminates at `settingsPath` before `projectRoot` is consulted — which
|
|
434
|
-
* is the intended behaviour and is stated here because a caller passing it and
|
|
435
|
-
* expecting it honoured would otherwise get no signal.
|
|
436
|
-
*/
|
|
437
|
-
const NO_PROJECT_LAYER = path.join(
|
|
438
|
-
path.sep,
|
|
439
|
-
'dev',
|
|
440
|
-
'null',
|
|
441
|
-
'agent-config-absent-project-settings.yml',
|
|
442
|
-
);
|
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Guards for a harness-enforced bounded loop.
|
|
3
3
|
*
|
|
4
|
-
* `road-to-skill-ecosystem-runtime-enforcement` Phase 5, Steps 2-4
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* same code there would cost a budget it does not cost here. The seam also makes
|
|
11
|
-
* all three testable without a host payload.
|
|
4
|
+
* `road-to-skill-ecosystem-runtime-enforcement` Phase 5, Steps 2-4, written for
|
|
5
|
+
* the stop-event loop of `run_continuation_hook.ts`. That concern was withdrawn
|
|
6
|
+
* on its pre-registered kill date, and on 2026-10-14 the owner decided to remove
|
|
7
|
+
* its termination ladder and the guards only it called — the whole-line marker
|
|
8
|
+
* match and the unavailable-dependency scan. What remains here has callers or a
|
|
9
|
+
* dated exemption of its own in `src/config/loop-surfaces.yaml`.
|
|
12
10
|
*/
|
|
13
11
|
import * as fs from 'node:fs';
|
|
14
12
|
import * as path from 'node:path';
|
|
@@ -29,7 +27,7 @@ import * as path from 'node:path';
|
|
|
29
27
|
* Never throws — a budget writer that throws turns an observability concern into
|
|
30
28
|
* a turn-end failure. Returns whether the write landed, and that return is
|
|
31
29
|
* load-bearing: a loop that could not persist its counter must not BLOCK,
|
|
32
|
-
* because there
|
|
30
|
+
* because there nothing can bound it.
|
|
33
31
|
*/
|
|
34
32
|
export function atomicWriteJson(file: string, value: unknown): boolean {
|
|
35
33
|
const tmp = `${file}.${String(process.pid)}.tmp`;
|
|
@@ -48,92 +46,6 @@ export function atomicWriteJson(file: string, value: unknown): boolean {
|
|
|
48
46
|
}
|
|
49
47
|
}
|
|
50
48
|
|
|
51
|
-
/**
|
|
52
|
-
* Whole-LINE match against a marker — never a substring.
|
|
53
|
-
*
|
|
54
|
-
* The hazard is specific and cheap to hit: a transcript contains everything the
|
|
55
|
-
* agent said, INCLUDING quoted examples of the marker. A substring match lets a
|
|
56
|
-
* sentence like *"exit when you print RUN-COMPLETE"* terminate the run, and — the
|
|
57
|
-
* worse direction — lets a quoted marker inside a code fence extend one.
|
|
58
|
-
*
|
|
59
|
-
* Trailing whitespace is trimmed because a terminal or a JSON round-trip adds it;
|
|
60
|
-
* leading whitespace is trimmed for the same reason. Nothing ELSE on the line is
|
|
61
|
-
* tolerated: `RUN-COMPLETE (probably)` is not the marker.
|
|
62
|
-
*/
|
|
63
|
-
export function matchesWholeLine(text: string, marker: string): boolean {
|
|
64
|
-
if (marker === '') return false;
|
|
65
|
-
for (const line of text.split('\n')) {
|
|
66
|
-
if (line.trim() === marker) return true;
|
|
67
|
-
}
|
|
68
|
-
return false;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
/** A dependency the loop cannot obtain, and therefore cannot iterate toward. */
|
|
72
|
-
export interface UnavailableDependency {
|
|
73
|
-
kind: 'credential' | 'binary' | 'permission' | 'quota' | 'service';
|
|
74
|
-
evidence: string;
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
/**
|
|
78
|
-
* Patterns that name a dependency the loop CANNOT close by trying again.
|
|
79
|
-
*
|
|
80
|
-
* Every entry corresponds to a hard-blocker class the rules already name
|
|
81
|
-
* (`context-hygiene` § hard-blocker classes). The list is deliberately short and
|
|
82
|
-
* literal: a general "looks like an error" heuristic would end runs on ordinary
|
|
83
|
-
* test failures, which is the opposite of the intent — those are exactly what a
|
|
84
|
-
* loop SHOULD iterate on.
|
|
85
|
-
*/
|
|
86
|
-
const DEPENDENCY_PATTERNS: readonly { kind: UnavailableDependency['kind']; re: RegExp }[] = [
|
|
87
|
-
{ kind: 'binary', re: /\b(?:command not found|is not recognized as an internal or external command)\b/i },
|
|
88
|
-
{ kind: 'credential', re: /\b(?:not (?:authenticated|logged in)|authentication (?:failed|required)|no credentials found)\b/i },
|
|
89
|
-
{ kind: 'credential', re: /\b(?:missing|unset|not set)\b[^\n]{0,40}\b(?:credential|token|api[_ -]?key|secret)\b/i },
|
|
90
|
-
{ kind: 'permission', re: /\b(?:permission denied|forbidden|403 forbidden)\b/i },
|
|
91
|
-
{ kind: 'quota', re: /\b(?:rate limit(?:ed| exceeded| reached)?|quota exceeded|429 too many requests|spend (?:cap|limit) reached)\b/i },
|
|
92
|
-
{ kind: 'service', re: /\b(?:5\d\d (?:internal )?server error|service unavailable|connection refused)\b/i },
|
|
93
|
-
];
|
|
94
|
-
|
|
95
|
-
/**
|
|
96
|
-
* How much of the transcript tail a caller should read before scanning it.
|
|
97
|
-
*
|
|
98
|
-
* The detector takes text, not a file, so the BYTE bound belongs to the read
|
|
99
|
-
* and the LINE bound (`tailLines`) belongs to the scan. Both exist and they
|
|
100
|
-
* bound different things: 64 KiB keeps an arbitrarily long transcript from
|
|
101
|
-
* being loaded whole, and the line count then keeps a stale failure from
|
|
102
|
-
* halting a run that already recovered.
|
|
103
|
-
*
|
|
104
|
-
* Exported rather than inlined at the one call site so the bound is visible
|
|
105
|
-
* beside the detector it feeds. A caller that reads the whole file and then
|
|
106
|
-
* passes it here is not wrong, only wasteful — the line bound still applies.
|
|
107
|
-
*/
|
|
108
|
-
export const DEPENDENCY_SCAN_BYTES = 64 * 1024;
|
|
109
|
-
|
|
110
|
-
/**
|
|
111
|
-
* Find a dependency the run cannot obtain, from recent transcript text.
|
|
112
|
-
*
|
|
113
|
-
* Returns the FIRST match with the line that produced it, so a halt event can
|
|
114
|
-
* name what is missing instead of saying "blocked". A halt with no named
|
|
115
|
-
* dependency is a report the reader has to reconstruct.
|
|
116
|
-
*
|
|
117
|
-
* Scans the LAST `tailLines` lines only: an authentication failure from an hour
|
|
118
|
-
* ago that was then fixed must not halt the run now, and a transcript is
|
|
119
|
-
* append-only so recency is the whole signal.
|
|
120
|
-
*/
|
|
121
|
-
export function detectUnavailableDependency(
|
|
122
|
-
transcriptTail: string,
|
|
123
|
-
tailLines = 200,
|
|
124
|
-
): UnavailableDependency | null {
|
|
125
|
-
const lines = transcriptTail.split('\n');
|
|
126
|
-
const window = lines.slice(Math.max(0, lines.length - tailLines));
|
|
127
|
-
for (const line of window) {
|
|
128
|
-
for (const { kind, re } of DEPENDENCY_PATTERNS) {
|
|
129
|
-
if (re.test(line)) {
|
|
130
|
-
return { kind, evidence: line.trim().slice(0, 200) };
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
return null;
|
|
135
|
-
}
|
|
136
|
-
|
|
137
49
|
/**
|
|
138
50
|
* The machine-readable stall signal, derived from a run's open-step history.
|
|
139
51
|
*
|
|
@@ -155,7 +67,7 @@ export function detectUnavailableDependency(
|
|
|
155
67
|
* what separates `stagnated` from `exhausted` in the terminal-state
|
|
156
68
|
* vocabulary.
|
|
157
69
|
*
|
|
158
|
-
* Pure over the history array, so
|
|
70
|
+
* Pure over the history array, so two readers cannot disagree.
|
|
159
71
|
*/
|
|
160
72
|
export type StallLevel = 'progressing' | 'flat' | 'stalled';
|
|
161
73
|
|
|
@@ -192,30 +104,6 @@ export function stallSignal(history: readonly number[], window = 3): StallSignal
|
|
|
192
104
|
return { level: 'flat', flatRun, minimum, newMinimum };
|
|
193
105
|
}
|
|
194
106
|
|
|
195
|
-
/**
|
|
196
|
-
* Read the transcript tail and name a dependency the run cannot obtain.
|
|
197
|
-
*
|
|
198
|
-
* Lives here rather than at the call site, beside the detector and the byte
|
|
199
|
-
* bound it uses. EXPORTED so the wiring is testable,
|
|
200
|
-
* which is the half that was actually broken: the inline version referenced a
|
|
201
|
-
* constant that did not exist, and because the read sits inside a `catch`
|
|
202
|
-
* that fail-opens to `null`, the ReferenceError was swallowed on every fire.
|
|
203
|
-
* The rung was dead and every pure `ladder()` test stayed green — a test over
|
|
204
|
-
* the decision function cannot see a caller that never computes the input.
|
|
205
|
-
*
|
|
206
|
-
* Fail-open is deliberate and unchanged: a detector that cannot read must not
|
|
207
|
-
* manufacture a halt. What changed is that "cannot read" is now the only way
|
|
208
|
-
* to reach `null` by accident.
|
|
209
|
-
*/
|
|
210
|
-
export function readUnavailableDependency(transcriptPath: string): UnavailableDependency | null {
|
|
211
|
-
try {
|
|
212
|
-
const raw = fs.readFileSync(transcriptPath, 'utf8');
|
|
213
|
-
return detectUnavailableDependency(raw.slice(-DEPENDENCY_SCAN_BYTES));
|
|
214
|
-
} catch {
|
|
215
|
-
return null;
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
|
|
219
107
|
// ---------------------------------------------------------------------------
|
|
220
108
|
// Rejected-tactic repetition
|
|
221
109
|
// ---------------------------------------------------------------------------
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Which of the surfaces `CONTRIBUTING.md` § Versioning policy lists as major a
|
|
3
|
+
* release span touched, read mechanically from that span's diff.
|
|
4
|
+
*
|
|
5
|
+
* `impact_bump` takes `touches_major_surface` and nothing in the tree supplied
|
|
6
|
+
* it: step 2.2 scored the impact half alone and recorded the surface half as
|
|
7
|
+
* unscored, because "the record has no surface column, and inferring one would
|
|
8
|
+
* re-judge history". A diff is not the record — it is the change itself — so
|
|
9
|
+
* this module reads the axis from the change rather than from prose about it.
|
|
10
|
+
*
|
|
11
|
+
* Nothing in `release.ts` calls this, for the same reason nothing calls
|
|
12
|
+
* `impact_bump`: how releases are numbered is the owner decision the
|
|
13
|
+
* `impact-numbering-model` blocker holds open. This is measurement apparatus.
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
/** The three triggers at `CONTRIBUTING.md:331` that a diff can decide. */
|
|
17
|
+
export const MAJOR_SURFACES = ['installer-layout', 'settings-keys', 'rule-or-skill-removal'] as const;
|
|
18
|
+
export type MajorSurface = (typeof MAJOR_SURFACES)[number];
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* The fourth trigger, "breaking changes to the condensed content format", is
|
|
22
|
+
* deliberately absent and is reported as a gap rather than scored as a
|
|
23
|
+
* non-firing surface. A format break is a property of the emitted content; no
|
|
24
|
+
* reading of statuses and paths decides it, and the obvious proxy — the
|
|
25
|
+
* condenser's own filename — fires on every wording fix to that script. A
|
|
26
|
+
* surface that cannot be decided is not the same as a surface that did not
|
|
27
|
+
* fire, and scoring it as the latter would overstate the rule's coverage.
|
|
28
|
+
*/
|
|
29
|
+
export const UNDERIVABLE_SURFACES = ['condensed-format'] as const;
|
|
30
|
+
|
|
31
|
+
/** One `git diff --name-status` record. `status` is the raw letter: A, D, M, R, T, C. */
|
|
32
|
+
export interface DiffEntry {
|
|
33
|
+
readonly status: string;
|
|
34
|
+
readonly path: string;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Paths whose creation or removal is an installer-layout change. The list is
|
|
39
|
+
* historical on purpose: the installer has lived at three roots over the
|
|
40
|
+
* window this is measured on, and a table naming only today's would score
|
|
41
|
+
* every release before the last relocation as having touched nothing. The
|
|
42
|
+
* entry-point row carries an optional `src/` prefix for the same reason — the
|
|
43
|
+
* entry point moved from a Python script at the repository root to
|
|
44
|
+
* `src/scripts/install.ts` (ADR-200), and the first version of this table
|
|
45
|
+
* pinned only the old root. The retired path is described rather than quoted:
|
|
46
|
+
* `lint_pre_migration_refs` reds on a backtick-quoted citation of it, and it
|
|
47
|
+
* is right to — a shipped file naming it looks like an instruction to run it.
|
|
48
|
+
*
|
|
49
|
+
* `dist/install/` is deliberately absent. It is build output of
|
|
50
|
+
* `src/scripts/install.*`, which is already covered, so including it would add
|
|
51
|
+
* no signal and would fire the surface on a regenerated artifact.
|
|
52
|
+
*/
|
|
53
|
+
const INSTALLER_LAYOUT_PATHS: readonly RegExp[] = [
|
|
54
|
+
/^src\/install\//,
|
|
55
|
+
/^packages\/core\/installer\//,
|
|
56
|
+
/^(src\/)?templates\//,
|
|
57
|
+
/^bin\//,
|
|
58
|
+
/^(src\/)?scripts\/install\.(py|sh|ts|mjs)$/,
|
|
59
|
+
];
|
|
60
|
+
|
|
61
|
+
/** Paths whose deletion removes a rule or a skill, in source or in either projection. */
|
|
62
|
+
const RULE_OR_SKILL_PATHS: readonly RegExp[] = [
|
|
63
|
+
/^src\/(rules|skills)\//,
|
|
64
|
+
/^\.agent-src\/(rules|skills)\//,
|
|
65
|
+
/^dist\/agent-src\/(rules|skills)\//,
|
|
66
|
+
];
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Files whose removed `key:` lines are settings keys.
|
|
70
|
+
*
|
|
71
|
+
* Every row tolerates a leading directory because this table was wrong in its
|
|
72
|
+
* first form and the measurement reported the resulting blindness as a
|
|
73
|
+
* finding: the template was renamed `config/agent-settings.template.yml` ->
|
|
74
|
+
* `src/config/agent-settings.template.yml` in the 6.0.0 span, and a row
|
|
75
|
+
* anchored at `^config/` matched nothing from 6.0.0 onward — the whole window
|
|
76
|
+
* the rule is scored on. An anchor that silently stops matching is the shape
|
|
77
|
+
* this list now refuses.
|
|
78
|
+
*/
|
|
79
|
+
export const SETTINGS_KEY_FILES: readonly RegExp[] = [
|
|
80
|
+
/(^|\/)config\/agent-settings\.template\.yml$/,
|
|
81
|
+
/(^|\/)\.agent-settings\.yml/,
|
|
82
|
+
/(^|\/)schemas\/.*settings/,
|
|
83
|
+
/(^|\/)install\/.*settings/,
|
|
84
|
+
];
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* The diff's paths that are settings-key files, for the caller's `git diff -- <paths>`.
|
|
88
|
+
*
|
|
89
|
+
* KNOWN OVER-MATCH, recorded 2026-10-21 rather than silently narrowed. The last
|
|
90
|
+
* two rows above match on a directory plus the word `settings` and take no
|
|
91
|
+
* extension, so they also select non-YAML files whose contents
|
|
92
|
+
* `removed_setting_keys` then reads with a YAML key regex: in the scored window
|
|
93
|
+
* that is `src/server/schemas/settings.ts` (seven spans) and
|
|
94
|
+
* `tests/install/settings_surface_snapshot.test.ts` (one). A deleted property in
|
|
95
|
+
* either would be counted as a dropped settings key.
|
|
96
|
+
*
|
|
97
|
+
* Measured impact in that window: NONE. All 14 spans were re-run with the paths
|
|
98
|
+
* filtered to `.yml`/`.yaml`; every span's fire/no-fire outcome and every
|
|
99
|
+
* removed-key set is byte-identical either way, so no row of the out-of-sample
|
|
100
|
+
* measurement depends on the over-match.
|
|
101
|
+
*
|
|
102
|
+
* Not narrowed here on purpose. The obvious guard — require a YAML extension —
|
|
103
|
+
* is a change to this exported function's contract, and a committed test
|
|
104
|
+
* deliberately asserts that a `…schemas/agent-settings.schema.json` path IS
|
|
105
|
+
* selected. Rewriting that contract on a latent finding, in the change that
|
|
106
|
+
* merely measured it, is wider than the finding warrants. Whoever wires the
|
|
107
|
+
* surface clause under blocker option (a) should apply the guard and move that
|
|
108
|
+
* test with it.
|
|
109
|
+
*/
|
|
110
|
+
export function settings_key_paths(entries: readonly DiffEntry[]): string[] {
|
|
111
|
+
const seen = new Set<string>();
|
|
112
|
+
for (const entry of entries) {
|
|
113
|
+
if (matches(entry.path, SETTINGS_KEY_FILES)) seen.add(entry.path);
|
|
114
|
+
}
|
|
115
|
+
return [...seen];
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
const YAML_KEY = /^([-+])([ \t]*)([A-Za-z_][A-Za-z0-9_]*):/;
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* Keys a unified patch removes and does not put back.
|
|
122
|
+
*
|
|
123
|
+
* A `-` line alone is not a removal: a reindent, a reorder or a move between
|
|
124
|
+
* files deletes the line and adds it again, and counting that as a dropped
|
|
125
|
+
* settings key would fire the surface on every reformat. A key is removed only
|
|
126
|
+
* when no `+` line in the same patch declares it. Indentation is ignored on
|
|
127
|
+
* purpose — a key that moved under a different parent still exists, and this
|
|
128
|
+
* function is asked whether the key is gone, not where it lives.
|
|
129
|
+
*
|
|
130
|
+
* WHAT IT CANNOT SEE, corrected 2026-10-21 after the R2 round-2 review read
|
|
131
|
+
* the paragraph above as a promise the code does not keep. This reads the
|
|
132
|
+
* PATCH, so "no `+` line declares it" is a statement about the diff, not about
|
|
133
|
+
* the file: a key name that survives unchanged elsewhere in the same file
|
|
134
|
+
* produces no `+` line at all and is therefore reported as removed. Measured
|
|
135
|
+
* in the scored window — the 10.0.0 span reports `enabled` removed while that
|
|
136
|
+
* template still carries 11 `enabled:` keys, and 11.0.0 reports `mode` while
|
|
137
|
+
* two remain. Deciding it properly needs the file at both ends, not the patch,
|
|
138
|
+
* which is a different function with a different cost; the name list is
|
|
139
|
+
* therefore an UPPER BOUND on what was removed.
|
|
140
|
+
*
|
|
141
|
+
* It does not bias the surface: `classify_surfaces` asks only whether the list
|
|
142
|
+
* is non-empty, and in both spans above the list is non-empty for a removal
|
|
143
|
+
* that is real anyway. A caller that reports the names themselves — as the
|
|
144
|
+
* out-of-sample measurement does — must say they are an upper bound.
|
|
145
|
+
*/
|
|
146
|
+
export function removed_setting_keys(patch: string): string[] {
|
|
147
|
+
const removed = new Set<string>();
|
|
148
|
+
const added = new Set<string>();
|
|
149
|
+
for (const line of patch.split('\n')) {
|
|
150
|
+
if (line.startsWith('---') || line.startsWith('+++')) continue;
|
|
151
|
+
const m = YAML_KEY.exec(line);
|
|
152
|
+
if (m === null) continue;
|
|
153
|
+
(m[1] === '-' ? removed : added).add(m[3] as string);
|
|
154
|
+
}
|
|
155
|
+
return [...removed].filter((k) => !added.has(k)).sort();
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
function matches(path: string, patterns: readonly RegExp[]): boolean {
|
|
159
|
+
return patterns.some((p) => p.test(path));
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
/** True for a status letter that creates or destroys a path, which is what the two file surfaces turn on. */
|
|
163
|
+
function is_create_or_delete(status: string): boolean {
|
|
164
|
+
return status === 'A' || status === 'D';
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
/**
|
|
168
|
+
* The surfaces a span touched.
|
|
169
|
+
*
|
|
170
|
+
* A rename (`R`) counts as neither a creation nor a removal. That is the
|
|
171
|
+
* conservative reading and it can only under-report: a renamed rule still
|
|
172
|
+
* exists, and treating every move as a removal would fire this surface on
|
|
173
|
+
* every span in a tree that reorganises as often as this one. Under-reporting
|
|
174
|
+
* the surface axis cannot produce a false negative on a consumer-visible
|
|
175
|
+
* break, because the impact axis decides those on its own — the surface clause
|
|
176
|
+
* only ever adds a major.
|
|
177
|
+
*
|
|
178
|
+
* `removed_setting_keys` is supplied by the caller because deciding it needs
|
|
179
|
+
* the patch text, not the name-status list; passing it in keeps this pure.
|
|
180
|
+
*/
|
|
181
|
+
export function classify_surfaces(
|
|
182
|
+
entries: readonly DiffEntry[],
|
|
183
|
+
removed_keys: readonly string[] = [],
|
|
184
|
+
): Set<MajorSurface> {
|
|
185
|
+
const out = new Set<MajorSurface>();
|
|
186
|
+
for (const entry of entries) {
|
|
187
|
+
if (!is_create_or_delete(entry.status)) continue;
|
|
188
|
+
if (matches(entry.path, INSTALLER_LAYOUT_PATHS)) out.add('installer-layout');
|
|
189
|
+
if (entry.status === 'D' && matches(entry.path, RULE_OR_SKILL_PATHS)) out.add('rule-or-skill-removal');
|
|
190
|
+
}
|
|
191
|
+
if (removed_keys.length > 0) out.add('settings-keys');
|
|
192
|
+
return out;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
/** `git diff --name-status` output into entries; a rename record keeps its new path. */
|
|
196
|
+
export function parse_name_status(raw: string): DiffEntry[] {
|
|
197
|
+
const out: DiffEntry[] = [];
|
|
198
|
+
for (const line of raw.split('\n')) {
|
|
199
|
+
if (line.trim() === '') continue;
|
|
200
|
+
const parts = line.split('\t');
|
|
201
|
+
if (parts.length < 2) continue;
|
|
202
|
+
const status = (parts[0] as string).charAt(0);
|
|
203
|
+
const path = parts[parts.length - 1] as string;
|
|
204
|
+
out.push({ status, path });
|
|
205
|
+
}
|
|
206
|
+
return out;
|
|
207
|
+
}
|