@event4u/agent-config 16.5.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 +463 -498
- package/CONTRIBUTING.md +47 -0
- package/README.md +25 -25
- package/dist/agent-src/commands/{design.md → agent-design.md} +10 -6
- 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 +5 -0
- 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 +1 -1
- 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/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 +12 -2
- 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 +14 -14
- 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 +16 -2
- 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/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/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 +9 -3
- 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 +7 -1
- 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/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 +72 -17
- package/dist/cli/commands/uiRenderAsset.js +10 -2
- package/dist/cli/commands/uiRenderAssetFonts.js +158 -0
- package/dist/cli/commands/uiRenderAssetTypes.js +8 -20
- package/dist/cli/initRouting.js +1 -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 +4 -1
- 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-TMWYUOK4.js → chunk-2CX7NWRB.js} +224 -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 +483 -817
- 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 +373 -190
- package/dist/discovery/discovery-manifest.json.sha256 +1 -1
- package/dist/discovery/discovery-manifest.summary.md +5 -5
- package/dist/discovery/dormancy-report.md +1 -1
- package/dist/discovery/orphan-report.md +1 -1
- package/dist/discovery/packs.json +21 -16
- package/dist/discovery/trust-report.md +3 -3
- package/dist/discovery/workspaces.json +16 -11
- package/dist/hooks/chat_history.chunk.cjs +6852 -0
- package/dist/hooks/chat_history.chunk.cjs.sha256 +1 -0
- package/dist/hooks/dispatch.js +17506 -18692
- 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 +281 -49
- package/dist/hooks/svg_rules.chunk.cjs.sha256 +1 -1
- 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 +9831 -5546
- 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/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_filled_counter.js +285 -0
- package/dist/scripts/_lib/svg_rules.js +2 -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/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 +5 -0
- 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 +13 -4
- 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 +26 -22
- 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 +93 -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_filled_counter.ts +287 -0
- package/src/scripts/_lib/svg_rules.ts +2 -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/verify_clause.ts +4 -2
- 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 +38 -7
- 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 +42 -10
- 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 +75 -19
- package/src/scripts/hooks/tool_result_bytes_hook.ts +14 -5
- package/src/scripts/hooks/turn_end_gate_hook.ts +1 -1
- 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 +144 -16
- 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_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_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_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-4DBG5K7M.js +0 -1123
- 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-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
|
@@ -44,6 +44,15 @@
|
|
|
44
44
|
* parent set does not name.
|
|
45
45
|
* - `missing-parent` a declared parent with no matching file — the lineage
|
|
46
46
|
* names something nobody can open.
|
|
47
|
+
* - `unresolvable-parent` a declared parent named only in prose: no slug, so
|
|
48
|
+
* no file could ever match it. Distinct from
|
|
49
|
+
* `missing-parent`, which sends the reader looking for a
|
|
50
|
+
* file.
|
|
51
|
+
*
|
|
52
|
+
* A sibling that declares itself DOWNSTREAM of the consolidating file
|
|
53
|
+
* (`supersedes:`, `supersedes_proposals:`, or a `relates:` entry with
|
|
54
|
+
* `relation: extends`) is a successor, not an omission, and is not reported
|
|
55
|
+
* as `omitted-sibling`.
|
|
47
56
|
* - `overlapping-sets` two artifacts in one folder declaring overlapping parent
|
|
48
57
|
* sets while neither names the other: an artifact that
|
|
49
58
|
* reads as the settled answer while a peer of equal
|
|
@@ -121,7 +130,7 @@ export interface Declaration {
|
|
|
121
130
|
}
|
|
122
131
|
|
|
123
132
|
export interface Finding {
|
|
124
|
-
code: 'omitted-sibling' | 'missing-parent' | 'overlapping-sets' | 'claims-without-field';
|
|
133
|
+
code: 'omitted-sibling' | 'missing-parent' | 'unresolvable-parent' | 'overlapping-sets' | 'claims-without-field';
|
|
125
134
|
folder: string;
|
|
126
135
|
file: string;
|
|
127
136
|
detail: string;
|
|
@@ -134,16 +143,23 @@ export interface Finding {
|
|
|
134
143
|
* with or without `.md`, with a download-collision `(1)` suffix, and followed by
|
|
135
144
|
* arbitrary prose (`road-to-gated-self-evolution` v3 (Claude-Session) — P0–P7).
|
|
136
145
|
* Everything after the first token is commentary.
|
|
146
|
+
*
|
|
147
|
+
* A YAML scalar may also arrive quoted. One matching pair of wrapping quotes is
|
|
148
|
+
* removed — around the whole input and around the selected token — and nothing
|
|
149
|
+
* else, so an apostrophe inside a slug survives (D6 of
|
|
150
|
+
* road-to-gates-that-read-what-was-written). Callers pass the raw value.
|
|
137
151
|
*/
|
|
138
152
|
export function normalizeParent(raw: string): string {
|
|
139
153
|
let s = raw.trim();
|
|
140
154
|
s = s.replace(/^[-*]\s+/, '');
|
|
155
|
+
s = unwrapQuotes(s, true);
|
|
141
156
|
const tick = /`([^`]+)`/.exec(s);
|
|
142
157
|
if (tick) {
|
|
143
158
|
s = tick[1] as string;
|
|
144
159
|
} else {
|
|
145
160
|
s = (s.split(/[\s—–,;|]/)[0] ?? '').trim();
|
|
146
161
|
}
|
|
162
|
+
s = unwrapQuotes(s, false);
|
|
147
163
|
s = s.replace(/^.*\//, '');
|
|
148
164
|
s = s.replace(/\.md$/i, '');
|
|
149
165
|
s = s.replace(/\(\d+\)$/, '');
|
|
@@ -154,6 +170,19 @@ export function normalizeParent(raw: string): string {
|
|
|
154
170
|
return s;
|
|
155
171
|
}
|
|
156
172
|
|
|
173
|
+
/**
|
|
174
|
+
* Remove one matching pair of wrapping quotes. With `whole`, the pair must be
|
|
175
|
+
* the only occurrence of that quote character: `"a" — "b"` is two quoted
|
|
176
|
+
* strings, not one, and unwrapping it would glue a quote onto the first token.
|
|
177
|
+
*/
|
|
178
|
+
function unwrapQuotes(s: string, whole: boolean): string {
|
|
179
|
+
const q = s[0];
|
|
180
|
+
if (s.length < 2 || (q !== '"' && q !== "'") || s[s.length - 1] !== q) return s;
|
|
181
|
+
const inner = s.slice(1, -1);
|
|
182
|
+
if (whole && inner.includes(q)) return s;
|
|
183
|
+
return inner.trim();
|
|
184
|
+
}
|
|
185
|
+
|
|
157
186
|
function frontmatterList(fm: string, key: string): string[] | null {
|
|
158
187
|
const lines = fm.split(/\r?\n/);
|
|
159
188
|
const head = new RegExp(`^${key}:\\s*(.*)$`);
|
|
@@ -165,7 +194,7 @@ function frontmatterList(fm: string, key: string): string[] | null {
|
|
|
165
194
|
return inline
|
|
166
195
|
.slice(1, inline.lastIndexOf(']') === -1 ? undefined : inline.lastIndexOf(']'))
|
|
167
196
|
.split(',')
|
|
168
|
-
.map((x) => normalizeParent(x
|
|
197
|
+
.map((x) => normalizeParent(x))
|
|
169
198
|
.filter(Boolean);
|
|
170
199
|
}
|
|
171
200
|
const out: string[] = [];
|
|
@@ -185,6 +214,82 @@ function frontmatterList(fm: string, key: string): string[] | null {
|
|
|
185
214
|
return null;
|
|
186
215
|
}
|
|
187
216
|
|
|
217
|
+
/**
|
|
218
|
+
* The `relates:` entries of a frontmatter block that carry a DOWNSTREAM
|
|
219
|
+
* relation, as `{slug}` stems.
|
|
220
|
+
*
|
|
221
|
+
* Only `extends` is directional by declaration in the measured corpus; a
|
|
222
|
+
* generic `relates` names a neighbour without saying which came first, and
|
|
223
|
+
* reading it as succession would suppress real omissions. AI council
|
|
224
|
+
* 2026-10-16 (anthropic + openai, convergent): an allowlist of one, widened
|
|
225
|
+
* only on evidence that another relation value states a direction.
|
|
226
|
+
*/
|
|
227
|
+
const DOWNSTREAM_RELATIONS: ReadonlySet<string> = new Set(['extends']);
|
|
228
|
+
|
|
229
|
+
function downstreamRelates(fm: string): string[] {
|
|
230
|
+
const lines = fm.split(/\r?\n/);
|
|
231
|
+
const start = lines.findIndex((l) => /^relates:\s*$/.test(l));
|
|
232
|
+
if (start === -1) return [];
|
|
233
|
+
const out: string[] = [];
|
|
234
|
+
let slug: string | null = null;
|
|
235
|
+
const flush = (relation: string | null): void => {
|
|
236
|
+
if (slug && relation && DOWNSTREAM_RELATIONS.has(relation)) out.push(normalizeParent(slug));
|
|
237
|
+
};
|
|
238
|
+
let relation: string | null = null;
|
|
239
|
+
for (let j = start + 1; j < lines.length; j += 1) {
|
|
240
|
+
const line = lines[j] as string;
|
|
241
|
+
if (line.trim() === '' || /^\s*#/.test(line)) continue;
|
|
242
|
+
if (!/^\s/.test(line)) break;
|
|
243
|
+
const head = /^\s+-\s+(.*)$/.exec(line);
|
|
244
|
+
const body = head ? (head[1] as string) : line.trim();
|
|
245
|
+
if (head) {
|
|
246
|
+
flush(relation);
|
|
247
|
+
slug = null;
|
|
248
|
+
relation = null;
|
|
249
|
+
}
|
|
250
|
+
const kv = /^(slug|relation):\s*(.*)$/.exec(body);
|
|
251
|
+
if (!kv) continue;
|
|
252
|
+
const value = unwrapQuotes((kv[2] as string).replace(/#.*$/, '').trim(), false);
|
|
253
|
+
if (kv[1] === 'slug') slug = value;
|
|
254
|
+
else relation = value;
|
|
255
|
+
}
|
|
256
|
+
flush(relation);
|
|
257
|
+
return out.filter(Boolean);
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
/**
|
|
261
|
+
* The stems this artifact declares itself DOWNSTREAM of: a supersession key
|
|
262
|
+
* (`supersedes:`, `supersedes_proposals:`) or a `relates:` entry with a
|
|
263
|
+
* directional relation. A sibling that names the consolidating file here was
|
|
264
|
+
* written knowing it, so it is a successor, never an undiscussed parent.
|
|
265
|
+
* Keyed on explicit declaration only — never on dates or file order.
|
|
266
|
+
*/
|
|
267
|
+
export function downstreamOf(text: string): string[] {
|
|
268
|
+
const fmMatch = FM_RE.exec(text);
|
|
269
|
+
if (!fmMatch) return [];
|
|
270
|
+
const fm = fmMatch[1] as string;
|
|
271
|
+
return [
|
|
272
|
+
...(frontmatterList(fm, 'supersedes') ?? []),
|
|
273
|
+
...(frontmatterList(fm, 'supersedes_proposals') ?? []),
|
|
274
|
+
...downstreamRelates(fm),
|
|
275
|
+
];
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
/**
|
|
279
|
+
* Whether a declared parent that resolves to no file is at least slug-shaped.
|
|
280
|
+
*
|
|
281
|
+
* A separator-joined name (`road-to-x`, `deep-plan-2026-09-30`) is a file
|
|
282
|
+
* somebody can be sent to look for: `missing-parent`. A single word — the
|
|
283
|
+
* first word of a prose title, `AC` — names no file at all, and reporting it as
|
|
284
|
+
* missing sends the reader hunting for one: `unresolvable-parent`.
|
|
285
|
+
*
|
|
286
|
+
* The council suggested a lowercase `road-to-*` grammar. It is widened on two
|
|
287
|
+
* measured facts: a non-roadmap parent is a supported shape (see
|
|
288
|
+
* analyseFolder's `present`), and the archived estate carries roadmap names
|
|
289
|
+
* with dots and capitals (`road-to-6.0.0-…`, `…-HUMAN-MEASUREMENT`).
|
|
290
|
+
*/
|
|
291
|
+
const SLUG_RE = /^[A-Za-z0-9._]+(?:[-_][A-Za-z0-9._]+)+$/;
|
|
292
|
+
|
|
188
293
|
/** A prose `**Label:**` heading followed by a `- ` bullet list. */
|
|
189
294
|
function proseList(body: string, label: RegExp): string[] | null {
|
|
190
295
|
const lines = body.split(/\r?\n/);
|
|
@@ -276,6 +381,8 @@ interface Artifact {
|
|
|
276
381
|
stem: string;
|
|
277
382
|
file: string;
|
|
278
383
|
decl: Declaration;
|
|
384
|
+
/** Stems this artifact declares itself a successor of — see downstreamOf. */
|
|
385
|
+
downstream: string[];
|
|
279
386
|
}
|
|
280
387
|
|
|
281
388
|
/**
|
|
@@ -320,11 +427,15 @@ export function analyseFolder(
|
|
|
320
427
|
return findings;
|
|
321
428
|
}
|
|
322
429
|
const names = entries.filter((n) => ROADMAP_RE.test(n)).sort();
|
|
323
|
-
const artifacts: Artifact[] = names.map((n) =>
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
430
|
+
const artifacts: Artifact[] = names.map((n) => {
|
|
431
|
+
const text = fs.readFileSync(path.join(dir, n), 'utf-8');
|
|
432
|
+
return {
|
|
433
|
+
stem: n.replace(/\.md$/i, ''),
|
|
434
|
+
file: n,
|
|
435
|
+
decl: parseDeclaration(text, surface),
|
|
436
|
+
downstream: downstreamOf(text),
|
|
437
|
+
};
|
|
438
|
+
});
|
|
328
439
|
// A parent need not be named road-to-*: a dated deep-dive plan is a parent
|
|
329
440
|
// too, and only its absence makes it missing.
|
|
330
441
|
const present = new Set(entries.filter((n) => /\.md$/i.test(n)).map((n) => n.replace(/\.md$/i, '')));
|
|
@@ -342,18 +453,35 @@ export function analyseFolder(
|
|
|
342
453
|
if (a.decl.parents.length === 0) continue;
|
|
343
454
|
|
|
344
455
|
for (const p of a.decl.parents) {
|
|
345
|
-
if (
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
456
|
+
if (present.has(p)) continue;
|
|
457
|
+
findings.push(
|
|
458
|
+
SLUG_RE.test(p)
|
|
459
|
+
? {
|
|
460
|
+
code: 'missing-parent',
|
|
461
|
+
folder: folderLabel,
|
|
462
|
+
file: a.file,
|
|
463
|
+
detail: `declares parent \`${p}\` but no such file is present`,
|
|
464
|
+
}
|
|
465
|
+
: {
|
|
466
|
+
code: 'unresolvable-parent',
|
|
467
|
+
folder: folderLabel,
|
|
468
|
+
file: a.file,
|
|
469
|
+
detail: `declares a parent named only in prose (normalised to \`${p}\`) — no slug, so no file can match; name it by slug`,
|
|
470
|
+
},
|
|
471
|
+
);
|
|
353
472
|
}
|
|
354
473
|
const omitted =
|
|
355
474
|
surface === 'inbox'
|
|
356
|
-
? artifacts
|
|
475
|
+
? artifacts
|
|
476
|
+
.filter(
|
|
477
|
+
(b) =>
|
|
478
|
+
b.stem !== a.stem
|
|
479
|
+
&& !a.decl.parents.includes(b.stem)
|
|
480
|
+
// A sibling declaring itself downstream of `a` is
|
|
481
|
+
// a successor: `a` could not have discussed it.
|
|
482
|
+
&& !b.downstream.includes(a.stem),
|
|
483
|
+
)
|
|
484
|
+
.map((b) => b.stem)
|
|
357
485
|
: [];
|
|
358
486
|
if (omitted.length > 0) {
|
|
359
487
|
findings.push({
|
|
@@ -31,18 +31,18 @@
|
|
|
31
31
|
*
|
|
32
32
|
* Scope: every `dist/agent-src/skills/<name>/SKILL.md` — the consumer projection
|
|
33
33
|
* actually shipped in the npm package (mirrors the reviewer's own vantage
|
|
34
|
-
* point: `npm i` + read the installed skills)
|
|
34
|
+
* point: `npm i` + read the installed skills) — plus, for the skill-script
|
|
35
|
+
* form alone, `references/*.md` beside it.
|
|
35
36
|
*
|
|
36
|
-
*
|
|
37
|
+
* The twenty-skill `SCRIPTS_RUN_ALLOWLIST` this gate used to carry is GONE.
|
|
38
|
+
* It exempted the one form that most needed the finding: a line telling a
|
|
39
|
+
* consumer to type a wrapper the package does not ship. The skills now teach
|
|
40
|
+
* `node <skills-root>/<name>/scripts/<tool>.mjs`, which an install can start,
|
|
41
|
+
* so the exemption has nothing left to exempt.
|
|
42
|
+
*
|
|
43
|
+
* Carve-out:
|
|
37
44
|
* - Skill frontmatter `workspaces: [agent-config-maintainer]` (exclusive)
|
|
38
45
|
* — entirely exempt, per the mechanism above.
|
|
39
|
-
* - `SCRIPTS_RUN_ALLOWLIST` below — the `corpus-grounding` engine's own
|
|
40
|
-
* documented consumer-runtime CLI convention (`./scripts-run
|
|
41
|
-
* <skills-root>/<name>/scripts/<tool> …`, skill-bundled assets per
|
|
42
|
-
* `docs/contracts/skill-bundled-assets.md`) — the invoked PATH is real
|
|
43
|
-
* and reachable in every install; only the wrapper name is inherited
|
|
44
|
-
* from the maintainer dispatcher. Tracked as a separate, larger-scope
|
|
45
|
-
* naming-consistency item; out of scope for this lint's 17-skill sweep.
|
|
46
46
|
*
|
|
47
47
|
* Exit codes: 0 clean · 1 findings · 2 internal error.
|
|
48
48
|
*/
|
|
@@ -57,38 +57,6 @@ import { assertScanned, DeadScopeError } from './_lib/scan_scope.js';
|
|
|
57
57
|
const REPO_ROOT = path.resolve(fileURLToPath(import.meta.url), '..', '..', '..');
|
|
58
58
|
const SKILLS_DIR = path.join(REPO_ROOT, 'dist', 'agent-src', 'skills');
|
|
59
59
|
|
|
60
|
-
/**
|
|
61
|
-
* Skills using `corpus-grounding`'s documented `./scripts-run
|
|
62
|
-
* <skills-root>/<name>/scripts/<tool>` consumer-runtime CLI convention
|
|
63
|
-
* (skill-bundled assets, `docs/contracts/skill-bundled-assets.md`) — the
|
|
64
|
-
* path is real and reachable once installed; only the wrapper name drifted
|
|
65
|
-
* from the contract's prescribed `node_modules/.bin/tsx` form. A single,
|
|
66
|
-
* uniform, cross-skill convention — renaming it is a separate, larger-scope
|
|
67
|
-
* follow-up, not one of this sweep's 17 leaky skills.
|
|
68
|
-
*/
|
|
69
|
-
const SCRIPTS_RUN_ALLOWLIST = new Set([
|
|
70
|
-
'accessibility-auditor',
|
|
71
|
-
'api-design',
|
|
72
|
-
'api-endpoint',
|
|
73
|
-
'authz-review',
|
|
74
|
-
'blade-ui',
|
|
75
|
-
'brand',
|
|
76
|
-
'brand-identity',
|
|
77
|
-
'brand-strategy',
|
|
78
|
-
'brand-to-tokens',
|
|
79
|
-
'corpus-grounding',
|
|
80
|
-
'dashboard-design',
|
|
81
|
-
'database',
|
|
82
|
-
'design-intelligence',
|
|
83
|
-
'design-tokens',
|
|
84
|
-
'flux',
|
|
85
|
-
'livewire',
|
|
86
|
-
'react-shadcn-ui',
|
|
87
|
-
'sql-writing',
|
|
88
|
-
'threat-modeling',
|
|
89
|
-
'typography-system',
|
|
90
|
-
]);
|
|
91
|
-
|
|
92
60
|
interface PatternDef {
|
|
93
61
|
readonly re: RegExp;
|
|
94
62
|
readonly label: string;
|
|
@@ -120,10 +88,73 @@ const PATTERNS: readonly PatternDef[] = [
|
|
|
120
88
|
{
|
|
121
89
|
re: /\.\/scripts-run\b/,
|
|
122
90
|
label: 'invocation of the maintainer-only `./scripts-run` dispatcher (not in `package.json` `files`, never reaches a consumer install)',
|
|
123
|
-
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
re: /node_modules\/\.bin\/tsx\b/,
|
|
94
|
+
label: 'invocation through `node_modules/.bin/tsx` (a devDependency binary; an install carries `node`, not a TypeScript loader)',
|
|
124
95
|
},
|
|
125
96
|
];
|
|
126
97
|
|
|
98
|
+
/**
|
|
99
|
+
* The skill-script form: `<runner> <skills-root>/<skill>/scripts/<tool>`.
|
|
100
|
+
*
|
|
101
|
+
* Checked apart from PATTERNS because the runner is not always on the line
|
|
102
|
+
* that carries the path — a wrapped command leaves it at the end of the line
|
|
103
|
+
* above, and a per-line regex reading only its own line reports every wrapped
|
|
104
|
+
* invocation in the tree.
|
|
105
|
+
*
|
|
106
|
+
* It is also the one form checked inside `references/`. A blanket widening
|
|
107
|
+
* would red on the reference files that name `./scripts-run src/scripts/…`,
|
|
108
|
+
* which is a different class — a maintainer script, invoked while working on
|
|
109
|
+
* this package — and this gate is not the place that decides those.
|
|
110
|
+
*/
|
|
111
|
+
const SKILL_SCRIPT_RE = /<skills-root>\/([A-Za-z0-9._-]+)\/scripts\/([A-Za-z0-9._-]+)/;
|
|
112
|
+
const SKILL_SCRIPT_RUNNER = 'node';
|
|
113
|
+
|
|
114
|
+
/** The last shell-ish token of a markdown fragment, decoration stripped. */
|
|
115
|
+
function lastToken(fragment: string): string {
|
|
116
|
+
const cleaned = fragment.replace(/\\\s*$/, '').replace(/[`\s]+$/, '').trim();
|
|
117
|
+
if (cleaned === '') return '';
|
|
118
|
+
return (cleaned.split(/\s+/).pop() ?? '').replace(/^[`>*_(]+/, '').replace(/[`*_)]+$/, '');
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/** The runner a taught line names: its own, or the one the line above ends with. */
|
|
122
|
+
function runnerFor(lines: readonly string[], idx: number, col: number): string {
|
|
123
|
+
const before = (lines[idx] as string).slice(0, col);
|
|
124
|
+
const own = lastToken(before.replace(/^[\s>]*(?:[-*+]\s+|\d+\.\s+)?/, ''));
|
|
125
|
+
if (own !== '') return own;
|
|
126
|
+
if (idx === 0) return '';
|
|
127
|
+
const above = lines[idx - 1] as string;
|
|
128
|
+
if (/^\s*(?:```|~~~)/.test(above)) return '';
|
|
129
|
+
return lastToken(above);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
/** Findings for taught skill-script lines that a node-only install cannot start. */
|
|
133
|
+
export function scanSkillScriptForm(relPath: string, text: string): string[] {
|
|
134
|
+
const findings: string[] = [];
|
|
135
|
+
const lines = text.split('\n');
|
|
136
|
+
for (let i = 0; i < lines.length; i += 1) {
|
|
137
|
+
const m = SKILL_SCRIPT_RE.exec(lines[i] as string);
|
|
138
|
+
if (!m) continue;
|
|
139
|
+
const tool = m[2] as string;
|
|
140
|
+
const runner = runnerFor(lines, i, m.index);
|
|
141
|
+
if (runner !== SKILL_SCRIPT_RUNNER) {
|
|
142
|
+
findings.push(
|
|
143
|
+
`${relPath}:${i + 1}: skill-script line whose runner is ` +
|
|
144
|
+
`${runner === '' ? 'absent' : `\`${runner}\``}, not \`node\` — ` +
|
|
145
|
+
'an install carries the runtime and the bundle, nothing else',
|
|
146
|
+
);
|
|
147
|
+
}
|
|
148
|
+
if (!tool.endsWith('.mjs')) {
|
|
149
|
+
findings.push(
|
|
150
|
+
`${relPath}:${i + 1}: skill-script line naming \`${tool}\` — ` +
|
|
151
|
+
'the shipped entry point is the `.mjs` beside the source',
|
|
152
|
+
);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
return findings;
|
|
156
|
+
}
|
|
157
|
+
|
|
127
158
|
/** `workspaces:` frontmatter list of a skill file ([] when untagged). */
|
|
128
159
|
function skillWorkspaces(skillPath: string): string[] {
|
|
129
160
|
const src = fs.readFileSync(skillPath, 'utf-8');
|
|
@@ -191,6 +222,23 @@ export function main(): number {
|
|
|
191
222
|
}
|
|
192
223
|
const relPath = path.relative(REPO_ROOT, abs);
|
|
193
224
|
findings.push(...scanText(name, relPath, text));
|
|
225
|
+
findings.push(...scanSkillScriptForm(relPath, text));
|
|
226
|
+
|
|
227
|
+
// `references/` is read for the skill-script form only — see the note
|
|
228
|
+
// above `SKILL_SCRIPT_RE` for why the other patterns stop at SKILL.md.
|
|
229
|
+
const refsDir = path.join(SKILLS_DIR, name, 'references');
|
|
230
|
+
if (!fs.existsSync(refsDir) || !fs.statSync(refsDir).isDirectory()) continue;
|
|
231
|
+
for (const ref of fs.readdirSync(refsDir).sort()) {
|
|
232
|
+
if (!ref.endsWith('.md')) continue;
|
|
233
|
+
const refAbs = path.join(refsDir, ref);
|
|
234
|
+
let refText: string;
|
|
235
|
+
try {
|
|
236
|
+
refText = fs.readFileSync(refAbs, 'utf-8');
|
|
237
|
+
} catch {
|
|
238
|
+
continue;
|
|
239
|
+
}
|
|
240
|
+
findings.push(...scanSkillScriptForm(path.relative(REPO_ROOT, refAbs), refText));
|
|
241
|
+
}
|
|
194
242
|
}
|
|
195
243
|
|
|
196
244
|
// Counted BEFORE the maintainer-exclusive skip, so an all-maintainer
|
|
@@ -18,6 +18,7 @@ import * as fs from 'node:fs';
|
|
|
18
18
|
import * as path from 'node:path';
|
|
19
19
|
import { fileURLToPath, pathToFileURL } from 'node:url';
|
|
20
20
|
|
|
21
|
+
import { validateBrandVoiceSlotFile } from './_lib/brand_voice_slot.js';
|
|
21
22
|
import { DeadScopeError, assertScanned } from './_lib/scan_scope.js';
|
|
22
23
|
|
|
23
24
|
const _HERE = fileURLToPath(import.meta.url);
|
|
@@ -43,6 +44,7 @@ const VALID_SLOTS = [
|
|
|
43
44
|
'channel-stage',
|
|
44
45
|
'funnel-stage',
|
|
45
46
|
'customer-segment',
|
|
47
|
+
'brand-voice',
|
|
46
48
|
'fiscal-period',
|
|
47
49
|
'org-stage',
|
|
48
50
|
'regulatory-regime',
|
|
@@ -116,6 +118,13 @@ function lint_skill(p: string): string[] {
|
|
|
116
118
|
return problems;
|
|
117
119
|
}
|
|
118
120
|
|
|
121
|
+
/** The brand-voice slot is the one slot validated as data (adr-gtm-context-spine-brand-voice). */
|
|
122
|
+
const BRAND_VOICE_SLOT = path.join('agents', 'context-spine', 'brand-voice.md');
|
|
123
|
+
|
|
124
|
+
function lint_brand_voice_slot(p: string): string[] {
|
|
125
|
+
return validateBrandVoiceSlotFile(p).map((i) => `brand_voice_slot: ${i.field}: ${i.message}`);
|
|
126
|
+
}
|
|
127
|
+
|
|
119
128
|
/** Recursively list `SKILL.md` files under `dir`, sorted (mirrors sorted(rglob)). */
|
|
120
129
|
function _rglobSkillSorted(dir: string): string[] {
|
|
121
130
|
const out: string[] = [];
|
|
@@ -187,6 +196,17 @@ function main(): number {
|
|
|
187
196
|
}
|
|
188
197
|
}
|
|
189
198
|
}
|
|
199
|
+
const slotPath = path.join(REPO_ROOT, BRAND_VOICE_SLOT);
|
|
200
|
+
if (fs.existsSync(slotPath)) {
|
|
201
|
+
const problems = lint_brand_voice_slot(slotPath);
|
|
202
|
+
if (problems.length) {
|
|
203
|
+
failed += 1;
|
|
204
|
+
process.stderr.write(`❌ ${_relPosix(slotPath, REPO_ROOT)}\n`);
|
|
205
|
+
for (const pb of problems) {
|
|
206
|
+
process.stderr.write(` - ${pb}\n`);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
}
|
|
190
210
|
if (failed) {
|
|
191
211
|
process.stderr.write(
|
|
192
212
|
`\n❌ ${failed} skill(s) failed context-spine usage lint ` +
|
|
@@ -239,5 +259,6 @@ export {
|
|
|
239
259
|
_read_spine,
|
|
240
260
|
_slot_cited,
|
|
241
261
|
lint_skill,
|
|
262
|
+
lint_brand_voice_slot,
|
|
242
263
|
main,
|
|
243
264
|
};
|
|
@@ -14,8 +14,9 @@
|
|
|
14
14
|
* A. every non-`Q*` catalog entry appears exactly once in § Detector status
|
|
15
15
|
* B. every § Detector status row names a catalog entry that exists
|
|
16
16
|
* C. the set of `backed` rows equals the registry's `catalogId` set
|
|
17
|
-
* D. every status is one of the
|
|
17
|
+
* D. every status is one of the six allowed values
|
|
18
18
|
* E. every non-`backed` row carries a reason
|
|
19
|
+
* H. every `witness` row names a rule the rendered witness emits
|
|
19
20
|
*
|
|
20
21
|
* `Q*` entries are out of scope by construction: they are objective floors owned
|
|
21
22
|
* by `lint_design_quality`, not aesthetic tells, and the status table says so.
|
|
@@ -38,8 +39,21 @@ const REPO = path.resolve(path.dirname(_HERE), '..', '..');
|
|
|
38
39
|
const CATALOG = path.join(REPO, 'docs', 'guidelines', 'design-antipatterns.md');
|
|
39
40
|
const REGISTRY = path.join(REPO, 'src', 'scripts', 'design_slop_rules.ts');
|
|
40
41
|
|
|
41
|
-
/** The
|
|
42
|
-
export const STATUSES = ['backed', 'floor', 'judgment-only', 'deferred', 'candidate'] as const;
|
|
42
|
+
/** The six statuses § Detector status may use. */
|
|
43
|
+
export const STATUSES = ['backed', 'floor', 'judgment-only', 'deferred', 'candidate', 'witness'] as const;
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Where a `witness` row's rule must exist: the asset witness's sources
|
|
47
|
+
* (road-to-type-with-a-witness 2.1). A `witness` entry is read from the
|
|
48
|
+
* rendered asset rather than from text, so its detector lives here and not in
|
|
49
|
+
* the slop registry.
|
|
50
|
+
*/
|
|
51
|
+
export const WITNESS_SOURCES = [
|
|
52
|
+
'src/cli/commands/uiRenderAsset.ts',
|
|
53
|
+
'src/cli/commands/uiRenderAssetFonts.ts',
|
|
54
|
+
] as const;
|
|
55
|
+
|
|
56
|
+
const WITNESS_RULE = /`((?:geometry|structure|accessibility|motion)\/[a-z0-9-]+)`/;
|
|
43
57
|
export type Status = (typeof STATUSES)[number];
|
|
44
58
|
|
|
45
59
|
export interface ParityFinding {
|
|
@@ -119,8 +133,12 @@ export function registryCatalogIds(registryTs: string): string[] {
|
|
|
119
133
|
return [...registryTs.matchAll(CATALOG_ID)].map((m) => m[1] as string);
|
|
120
134
|
}
|
|
121
135
|
|
|
122
|
-
/**
|
|
123
|
-
|
|
136
|
+
/**
|
|
137
|
+
* Pure invariant check over both documents, plus the witness source text a
|
|
138
|
+
* `witness` row is checked against. Omitting it fails every `witness` row
|
|
139
|
+
* rather than passing it unread.
|
|
140
|
+
*/
|
|
141
|
+
export function parityFindings(catalogMd: string, registryTs: string, witnessTs = ''): ParityFinding[] {
|
|
124
142
|
const out: ParityFinding[] = [];
|
|
125
143
|
|
|
126
144
|
if (STATUS_SECTION.exec(catalogMd) === null) {
|
|
@@ -166,6 +184,19 @@ export function parityFindings(catalogMd: string, registryTs: string): ParityFin
|
|
|
166
184
|
if (row.status !== 'backed' && row.note === '') {
|
|
167
185
|
out.push({ kind: 'missing-reason', id, msg: `${id}: status '${row.status}' carries no reason` });
|
|
168
186
|
}
|
|
187
|
+
// H — a witness row names its rendered rule, and the witness emits it.
|
|
188
|
+
if (row.status === 'witness') {
|
|
189
|
+
const rule = WITNESS_RULE.exec(row.note)?.[1];
|
|
190
|
+
if (rule === undefined || !witnessTs.includes(`'${rule}'`)) {
|
|
191
|
+
out.push({
|
|
192
|
+
kind: 'witness-without-rule',
|
|
193
|
+
id,
|
|
194
|
+
msg: rule
|
|
195
|
+
? `${id}: marked witness on \`${rule}\`, which the witness source does not emit`
|
|
196
|
+
: `${id}: marked witness but its note names no witness rule (\`geometry/...\`)`,
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
}
|
|
169
200
|
}
|
|
170
201
|
|
|
171
202
|
// F — the census columns: present, non-empty, and from the closed vocabularies.
|
|
@@ -243,7 +274,7 @@ export function main(): number {
|
|
|
243
274
|
try {
|
|
244
275
|
assertWatchlistResolves({
|
|
245
276
|
gate: 'lint_design_antipattern_parity',
|
|
246
|
-
candidates: [path.relative(REPO, CATALOG), path.relative(REPO, REGISTRY)],
|
|
277
|
+
candidates: [path.relative(REPO, CATALOG), path.relative(REPO, REGISTRY), ...WITNESS_SOURCES],
|
|
247
278
|
repoRoot: REPO,
|
|
248
279
|
});
|
|
249
280
|
} catch (exc) {
|
|
@@ -256,7 +287,8 @@ export function main(): number {
|
|
|
256
287
|
|
|
257
288
|
const catalogMd = fs.readFileSync(CATALOG, 'utf-8');
|
|
258
289
|
const registryTs = fs.readFileSync(REGISTRY, 'utf-8');
|
|
259
|
-
const
|
|
290
|
+
const witnessTs = WITNESS_SOURCES.map((rel) => fs.readFileSync(path.join(REPO, rel), 'utf-8')).join('\n');
|
|
291
|
+
const findings = parityFindings(catalogMd, registryTs, witnessTs);
|
|
260
292
|
|
|
261
293
|
const rows = statusRows(catalogMd);
|
|
262
294
|
const entries = catalogEntries(catalogMd).length;
|
|
@@ -49,6 +49,8 @@ import path from 'node:path';
|
|
|
49
49
|
import { fileURLToPath, pathToFileURL } from 'node:url';
|
|
50
50
|
|
|
51
51
|
import { GateLedger } from './_lib/gate_ledger.js';
|
|
52
|
+
import { parseClearance } from './_lib/merge_clearance_record.js';
|
|
53
|
+
import { readRequiredProviders } from './_lib/ratification_artifact.js';
|
|
52
54
|
import { resolveBaseRef } from './_lib/ratchet_base_ref.js';
|
|
53
55
|
import { parseExecutionMode } from './_lib/repeated_run.js';
|
|
54
56
|
import { reportScanned } from './_lib/scan_scope.js';
|
|
@@ -65,6 +67,8 @@ export const EVIDENCE_TYPES = [
|
|
|
65
67
|
'analysis',
|
|
66
68
|
'feel',
|
|
67
69
|
'ratification',
|
|
70
|
+
'merge-clearance',
|
|
71
|
+
'bypass-record',
|
|
68
72
|
] as const;
|
|
69
73
|
|
|
70
74
|
/**
|
|
@@ -202,6 +206,22 @@ export interface Finding {
|
|
|
202
206
|
readonly reason: string;
|
|
203
207
|
}
|
|
204
208
|
|
|
209
|
+
const RATIFICATION_POLICY = path.join('src', 'config', 'ratification-policy.json');
|
|
210
|
+
|
|
211
|
+
function clearanceProblems(root: string, contents: string): string[] {
|
|
212
|
+
let required: number | null = null;
|
|
213
|
+
try {
|
|
214
|
+
required = readRequiredProviders(fs.readFileSync(path.join(root, RATIFICATION_POLICY), 'utf8'));
|
|
215
|
+
} catch {
|
|
216
|
+
required = null;
|
|
217
|
+
}
|
|
218
|
+
if (required === null) {
|
|
219
|
+
return [`${RATIFICATION_POLICY} is missing or unreadable, so the outcome cannot be derived`];
|
|
220
|
+
}
|
|
221
|
+
const parsed = parseClearance(contents, required);
|
|
222
|
+
return Array.isArray(parsed) ? parsed : [];
|
|
223
|
+
}
|
|
224
|
+
|
|
205
225
|
export function checkFiles(root: string, files: readonly string[], ledger?: GateLedger): Finding[] {
|
|
206
226
|
const findings: Finding[] = [];
|
|
207
227
|
ledger?.plan([...files]);
|
|
@@ -248,6 +268,17 @@ export function checkFiles(root: string, files: readonly string[], ledger?: Gate
|
|
|
248
268
|
continue;
|
|
249
269
|
}
|
|
250
270
|
}
|
|
271
|
+
// A clearance decides whether a `needs-council` PR merges, so one that
|
|
272
|
+
// does not parse — or whose outcome its own seats do not support under
|
|
273
|
+
// the committed quorum policy — is a finding rather than a typed record.
|
|
274
|
+
if (res.type === 'merge-clearance') {
|
|
275
|
+
const problems = clearanceProblems(root, contents);
|
|
276
|
+
if (problems.length > 0) {
|
|
277
|
+
ledger?.fail(rel, 'merge clearance does not parse');
|
|
278
|
+
findings.push({ file: rel, reason: `merge-clearance does not parse: ${problems.join('; ')}` });
|
|
279
|
+
continue;
|
|
280
|
+
}
|
|
281
|
+
}
|
|
251
282
|
if (res.type === null) {
|
|
252
283
|
ledger?.fail(rel, 'no evidence type declared');
|
|
253
284
|
findings.push({
|
|
@@ -71,6 +71,7 @@ import * as os from 'node:os';
|
|
|
71
71
|
import * as path from 'node:path';
|
|
72
72
|
import { fileURLToPath, pathToFileURL } from 'node:url';
|
|
73
73
|
|
|
74
|
+
import { assignmentPattern } from './_lib/egress_rules.js';
|
|
74
75
|
import { GateLedger } from './_lib/gate_ledger.js';
|
|
75
76
|
import { runGateCli, runSelfTest } from './_lib/gate_self_test.js';
|
|
76
77
|
import { reportScanned } from './_lib/scan_scope.js';
|
|
@@ -159,8 +160,16 @@ export const PATTERNS: readonly FencePattern[] = [
|
|
|
159
160
|
source: 'tool-safety',
|
|
160
161
|
langs: 'any',
|
|
161
162
|
label: 'Credential assigned a literal value in an example',
|
|
162
|
-
pattern:
|
|
163
|
-
|
|
163
|
+
pattern: assignmentPattern(
|
|
164
|
+
{
|
|
165
|
+
keywords: ['apiKey', 'apikey', 'password', 'passwd', 'secret', 'accessToken', 'clientSecret'],
|
|
166
|
+
before: '\\b',
|
|
167
|
+
after: '\\b',
|
|
168
|
+
capture: true,
|
|
169
|
+
value: `["'][^"']{8,}["']`,
|
|
170
|
+
},
|
|
171
|
+
'i',
|
|
172
|
+
),
|
|
164
173
|
// Placeholders are the correct way to show the shape and must not fire.
|
|
165
174
|
// `secret-vcs-guard` owns real credentials; this pattern owns the
|
|
166
175
|
// *teaching* of an inline literal, so anything self-evidently fake is out.
|