@event4u/agent-config 16.5.0 → 17.1.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 +114 -530
- package/CONTRIBUTING.md +47 -0
- package/README.md +25 -24
- 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 +10 -2
- 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 +44 -2
- 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-2Y5AMLMY.js +136 -0
- package/dist/cli-delegate/chunk-3PK3VZHB.js +235 -0
- package/dist/cli-delegate/{chunk-OKJUIAPS.js → chunk-4E2W63DA.js} +1 -62
- 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-F3QDG2GT.js → chunk-BZJ4Y3CI.js} +259 -159
- package/dist/cli-delegate/{chunk-5GPULQBE.js → chunk-CMZEKSNN.js} +4280 -705
- package/dist/cli-delegate/chunk-DSY6LLCQ.js +127 -0
- package/dist/cli-delegate/{chunk-ZUZKZYCN.js → chunk-E3CFULNX.js} +67 -13
- 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-I4KJYVPB.js +69 -0
- package/dist/cli-delegate/{chunk-JQOM7TTM.js → chunk-IDAOTDPE.js} +1 -100
- package/dist/cli-delegate/chunk-J2SJZICO.js +698 -0
- package/dist/cli-delegate/chunk-KR5ZIFPO.js +581 -0
- 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-QBHEI5N4.js +919 -0
- package/dist/cli-delegate/{chunk-F7DQWYR5.js → chunk-RAXQOETZ.js} +6 -2
- 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-T7XSJSUQ.js → chunk-VYZGJLCA.js} +1000 -814
- package/dist/cli-delegate/chunk-W5JXMF2T.js +77 -0
- 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-6SRJTYJS.js → chunk-XIAPY44N.js} +37 -16
- package/dist/cli-delegate/{chunk-H76PHZBI.js → chunk-XLY5G3CM.js} +14 -19
- package/dist/cli-delegate/{chunk-6YQC2HLF.js → chunk-YHAPONWV.js} +54 -40
- 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 +487 -820
- 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 +15 -12
- package/dist/cli-delegate/cmd_fleet.js +6 -4
- 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 +8 -6
- package/dist/cli-delegate/cmd_prune.js +17 -14
- 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 +15 -12
- package/dist/cli-delegate/cmd_settings_set.js +1 -1
- package/dist/cli-delegate/cmd_sync.js +17 -14
- package/dist/cli-delegate/cmd_uninstall.js +186 -32
- package/dist/cli-delegate/cmd_update.js +76 -16
- package/dist/cli-delegate/cmd_upgrade.js +38 -7
- package/dist/cli-delegate/cmd_validate.js +17 -14
- 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 +17450 -18612
- 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/claudeRuleRewrite.js +10 -3
- package/dist/install/conflict.js +59 -7
- package/dist/install/conflictTracker.js +93 -8
- package/dist/install/detect.js +3 -3
- package/dist/install/hostPermissionsAdapter.js +106 -0
- package/dist/install/install.mjs +3234 -1961
- package/dist/install/installThinLayer.js +2 -1
- package/dist/install/loggedWrites.js +142 -0
- 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/paths.js +12 -2
- package/dist/install/plan.js +1 -1
- package/dist/install/preflight.js +39 -8
- package/dist/install/preserve.js +96 -13
- 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/txlog.js +10 -6
- 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 +10716 -5880
- 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 +769 -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 +57 -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 +33 -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 +45 -1
- 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 +176 -10
- package/src/config/gate-reachability-exemptions.json +3 -5
- package/src/config/gate-violation-baselines.json +32 -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/production-entries.json +18 -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/release-gate-locality.yml +0 -7
- 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/claudeRuleRewrite.ts +10 -1
- package/src/install/conflict.ts +61 -6
- package/src/install/conflictTracker.ts +143 -9
- package/src/install/detect.ts +3 -3
- package/src/install/hostPermissionsAdapter.ts +136 -0
- package/src/install/installThinLayer.ts +12 -1
- package/src/install/loggedWrites.ts +148 -0
- 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/paths.ts +11 -2
- package/src/install/plan.ts +1 -1
- package/src/install/preflight.ts +42 -10
- package/src/install/preserve.ts +131 -13
- 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/txlog.ts +10 -6
- 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_conformance.ts +3 -2
- 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 +49 -18
- 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/council_settings_block.ts +9 -2
- 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 +899 -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 +44 -7
- 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 +62 -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/price_freshness.ts +112 -0
- package/src/scripts/_lib/procedure_checks.ts +5 -0
- package/src/scripts/_lib/production_reach.ts +194 -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 +29 -14
- 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 +36 -311
- 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 +268 -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 +20 -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 +56 -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 +288 -0
- package/src/scripts/ai_council/free_route.ts +216 -0
- package/src/scripts/ai_council/free_route_catalog.ts +310 -0
- package/src/scripts/ai_council/free_route_client.ts +99 -0
- package/src/scripts/ai_council/free_rung.ts +61 -0
- package/src/scripts/ai_council/hand_payload.ts +338 -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 +23 -26
- 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 +114 -0
- package/src/scripts/ai_council/seat_policy.ts +47 -0
- package/src/scripts/ai_council/seat_resume.ts +40 -0
- package/src/scripts/ai_council/self_hosted_probe.ts +327 -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 +39 -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 +406 -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 +174 -73
- 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 +8 -3
- 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_production_reach.ts +257 -0
- 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 +56 -44
- 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 +68 -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 +14 -13
- 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 +43 -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 +162 -10
- package/src/scripts/hooks/state_io.ts +2 -2
- package/src/scripts/hooks/subagent_ledger_hook.ts +80 -0
- 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 +61 -92
- 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_decision_classes.ts +34 -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 +118 -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 +114 -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 +31 -64
- package/src/scripts/release_drill.ts +63 -188
- package/src/scripts/release_env.ts +37 -0
- package/src/scripts/release_publication.ts +11 -10
- package/src/scripts/report_consumer_gate_reach.ts +233 -0
- package/src/scripts/report_merge_gate_load.ts +295 -0
- package/src/scripts/report_production_reach.ts +35 -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 +519 -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-A4QJ6ENT.js +0 -50
- 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
|
@@ -27,6 +27,7 @@
|
|
|
27
27
|
* inferring it from a method name.
|
|
28
28
|
*/
|
|
29
29
|
|
|
30
|
+
import { cohensKappa } from '../check_quality_regression.js';
|
|
30
31
|
import {
|
|
31
32
|
judgeBothOrders,
|
|
32
33
|
positionConsistency,
|
|
@@ -45,7 +46,20 @@ export interface JuryScore {
|
|
|
45
46
|
}
|
|
46
47
|
|
|
47
48
|
/** Why a panel produced no aggregate. Each value is a REFUSAL, not an error. */
|
|
48
|
-
export type JuryAbsentReason = 'no_scores' | 'single_family' | 'non_finite_score';
|
|
49
|
+
export type JuryAbsentReason = 'no_scores' | 'single_family' | 'non_finite_score' | 'panel_over_cap';
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* K10: past five judges the effective number of independent votes stops
|
|
53
|
+
* growing, so a sixth seat adds cost and correlated agreement, not evidence.
|
|
54
|
+
* Different architectures beat more seats.
|
|
55
|
+
*/
|
|
56
|
+
export const MAX_JURY_JUDGES = 5;
|
|
57
|
+
|
|
58
|
+
function _overCap(n: number): string | null {
|
|
59
|
+
return n > MAX_JURY_JUDGES
|
|
60
|
+
? `${String(n)} judges exceed the cap of ${String(MAX_JURY_JUDGES)}; past five, more judges add correlated agreement, not independence`
|
|
61
|
+
: null;
|
|
62
|
+
}
|
|
49
63
|
|
|
50
64
|
export type JuryResult =
|
|
51
65
|
| {
|
|
@@ -75,6 +89,10 @@ export function juryAggregate(scores: readonly JuryScore[]): JuryResult {
|
|
|
75
89
|
if (scores.length === 0) {
|
|
76
90
|
return { present: false, absentReason: 'no_scores', reason: 'no jury scores supplied' };
|
|
77
91
|
}
|
|
92
|
+
const overCap = _overCap(scores.length);
|
|
93
|
+
if (overCap !== null) {
|
|
94
|
+
return { present: false, absentReason: 'panel_over_cap', reason: overCap };
|
|
95
|
+
}
|
|
78
96
|
for (const s of scores) {
|
|
79
97
|
if (!Number.isFinite(s.score)) {
|
|
80
98
|
return {
|
|
@@ -146,6 +164,17 @@ export function juryPairwise(
|
|
|
146
164
|
judges: readonly JuryPairwiseJudge[],
|
|
147
165
|
): JuryPairwiseResult {
|
|
148
166
|
const families = [...new Set(judges.map((j) => j.family))].sort();
|
|
167
|
+
const overCap = _overCap(judges.length);
|
|
168
|
+
if (overCap !== null) {
|
|
169
|
+
return {
|
|
170
|
+
present: false,
|
|
171
|
+
absentReason: 'panel_over_cap',
|
|
172
|
+
reason: overCap,
|
|
173
|
+
resolution: null,
|
|
174
|
+
observations: [],
|
|
175
|
+
consistency: [],
|
|
176
|
+
};
|
|
177
|
+
}
|
|
149
178
|
if (judges.length === 0 || families.length < 2) {
|
|
150
179
|
return {
|
|
151
180
|
present: false,
|
|
@@ -176,3 +205,128 @@ export function juryPairwise(
|
|
|
176
205
|
}
|
|
177
206
|
return { present: true, absentReason: null, reason: null, resolution, observations, consistency };
|
|
178
207
|
}
|
|
208
|
+
|
|
209
|
+
/** One seat on a jury. `billing` is carried, never consulted: a free seat may judge. */
|
|
210
|
+
export interface JurorSeat {
|
|
211
|
+
readonly judge: string;
|
|
212
|
+
readonly family: string;
|
|
213
|
+
readonly billing?: string | null;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
/** A panel description, validated: every judge named once, at most five. */
|
|
217
|
+
export function validateJuryPanel(raw: unknown): { panel: JurorSeat[] } | { error: string } {
|
|
218
|
+
const judges = (raw as { judges?: unknown } | null)?.judges;
|
|
219
|
+
if (!Array.isArray(judges) || judges.length === 0) return { error: 'a jury panel needs a non-empty `judges` list' };
|
|
220
|
+
const overCap = _overCap(judges.length);
|
|
221
|
+
if (overCap !== null) return { error: overCap };
|
|
222
|
+
const panel: JurorSeat[] = [];
|
|
223
|
+
for (const j of judges as unknown[]) {
|
|
224
|
+
const o = j as Partial<JurorSeat> | null;
|
|
225
|
+
if (typeof o?.judge !== 'string' || typeof o.family !== 'string') {
|
|
226
|
+
return { error: `every judge needs a string \`judge\` and \`family\` (got ${JSON.stringify(j)})` };
|
|
227
|
+
}
|
|
228
|
+
if (panel.some((p) => p.judge === o.judge)) return { error: `judge ${o.judge} is listed twice` };
|
|
229
|
+
panel.push({ judge: o.judge, family: o.family, billing: o.billing ?? null });
|
|
230
|
+
}
|
|
231
|
+
return { panel };
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
/**
|
|
235
|
+
* The prompt every juror receives. It takes the task and the item and nothing
|
|
236
|
+
* else, so no juror can be shown another juror's answer by construction.
|
|
237
|
+
*/
|
|
238
|
+
export function jurorPrompt(task: string, item: string): string {
|
|
239
|
+
return `${task}\n\n---\n\n${item}`;
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
export interface BlindJuryResult {
|
|
243
|
+
/** Why nothing was dispatched, or null. */
|
|
244
|
+
readonly refused: string | null;
|
|
245
|
+
readonly answers: ReadonlyArray<{ readonly judge: string; readonly family: string; readonly answer: string }>;
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
/**
|
|
249
|
+
* Ask every juror at once with the same prompt. All calls start before any
|
|
250
|
+
* answer is awaited, so no answer can reach another juror before synthesis.
|
|
251
|
+
*/
|
|
252
|
+
export async function dispatchJuryBlind(
|
|
253
|
+
task: string,
|
|
254
|
+
item: string,
|
|
255
|
+
jurors: readonly JurorSeat[],
|
|
256
|
+
ask: (juror: JurorSeat, prompt: string) => Promise<string>,
|
|
257
|
+
): Promise<BlindJuryResult> {
|
|
258
|
+
const overCap = _overCap(jurors.length);
|
|
259
|
+
if (overCap !== null) return { refused: overCap, answers: [] };
|
|
260
|
+
const prompt = jurorPrompt(task, item);
|
|
261
|
+
const pending = jurors.map((j) => ask(j, prompt));
|
|
262
|
+
const answers = await Promise.all(pending);
|
|
263
|
+
return { refused: null, answers: jurors.map((j, i) => ({ judge: j.judge, family: j.family, answer: answers[i] as string })) };
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
export interface JuryIndependence {
|
|
267
|
+
readonly k: number;
|
|
268
|
+
readonly items: number;
|
|
269
|
+
/** Each judge's Cohen's κ against the ground truth — the claim's own statistic, unchanged. */
|
|
270
|
+
readonly kappa: ReadonlyArray<{ readonly judge: string; readonly kappa: number }>;
|
|
271
|
+
/** Pairwise φ over error indicators; null where a judge's errors do not vary. */
|
|
272
|
+
readonly phi: ReadonlyArray<{ readonly a: string; readonly b: string; readonly phi: number | null }>;
|
|
273
|
+
readonly undefinedPairs: number;
|
|
274
|
+
/** Mean of the defined φ values, or null when none is defined. */
|
|
275
|
+
readonly phiBar: number | null;
|
|
276
|
+
/** Kish effective n = k / (1 + (k−1)·φ̄), with φ̄ floored at 0 so n_eff never exceeds k. */
|
|
277
|
+
readonly nEff: number | null;
|
|
278
|
+
readonly nEffRatio: number | null;
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
function _phi(x: readonly boolean[], y: readonly boolean[]): number | null {
|
|
282
|
+
let n11 = 0;
|
|
283
|
+
let n10 = 0;
|
|
284
|
+
let n01 = 0;
|
|
285
|
+
let n00 = 0;
|
|
286
|
+
x.forEach((xi, i) => {
|
|
287
|
+
const yi = y[i] === true;
|
|
288
|
+
if (xi && yi) n11 += 1;
|
|
289
|
+
else if (xi) n10 += 1;
|
|
290
|
+
else if (yi) n01 += 1;
|
|
291
|
+
else n00 += 1;
|
|
292
|
+
});
|
|
293
|
+
const den = (n11 + n10) * (n01 + n00) * (n11 + n01) * (n10 + n00);
|
|
294
|
+
return den === 0 ? null : (n11 * n00 - n10 * n01) / Math.sqrt(den);
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
/**
|
|
298
|
+
* Family count is a proxy for independence; correlated errors are the thing
|
|
299
|
+
* itself. A judge's error on item i is `labels[i] !== gold[i]`; φ is the
|
|
300
|
+
* Pearson correlation of two judges' error vectors, and n_eff is reported
|
|
301
|
+
* beside κ rather than in place of it.
|
|
302
|
+
*/
|
|
303
|
+
export function juryIndependence(
|
|
304
|
+
gold: readonly string[],
|
|
305
|
+
judges: ReadonlyArray<{ readonly judge: string; readonly labels: readonly string[] }>,
|
|
306
|
+
): JuryIndependence {
|
|
307
|
+
const errors = judges.map((j) => gold.map((g, i) => j.labels[i] !== g));
|
|
308
|
+
const phi: Array<{ a: string; b: string; phi: number | null }> = [];
|
|
309
|
+
for (let i = 0; i < judges.length; i += 1) {
|
|
310
|
+
for (let k = i + 1; k < judges.length; k += 1) {
|
|
311
|
+
phi.push({
|
|
312
|
+
a: (judges[i] as { judge: string }).judge,
|
|
313
|
+
b: (judges[k] as { judge: string }).judge,
|
|
314
|
+
phi: _phi(errors[i] as boolean[], errors[k] as boolean[]),
|
|
315
|
+
});
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
const defined = phi.map((p) => p.phi).filter((v): v is number => v !== null);
|
|
319
|
+
const phiBar = defined.length === 0 ? null : defined.reduce((a, v) => a + v, 0) / defined.length;
|
|
320
|
+
const k = judges.length;
|
|
321
|
+
const nEff = phiBar === null ? null : k / (1 + (k - 1) * Math.max(0, phiBar));
|
|
322
|
+
return {
|
|
323
|
+
k,
|
|
324
|
+
items: gold.length,
|
|
325
|
+
kappa: judges.map((j) => ({ judge: j.judge, kappa: cohensKappa(gold, j.labels) })),
|
|
326
|
+
phi,
|
|
327
|
+
undefinedPairs: phi.length - defined.length,
|
|
328
|
+
phiBar,
|
|
329
|
+
nEff,
|
|
330
|
+
nEffRatio: nEff === null || k === 0 ? null : nEff / k,
|
|
331
|
+
};
|
|
332
|
+
}
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Per-kind flip of typed hands to the free route (free-hands 6.3).
|
|
4
|
+
*
|
|
5
|
+
* A kind is served by a free route only after the shadow ledger clears both
|
|
6
|
+
* pre-registered bars for it: `free-hands-quality-held` (free failure rate at
|
|
7
|
+
* most the paid rate + 5 pp, and below the 0.3 escalation kill) and
|
|
8
|
+
* `free-hands-limit-relief` (paid tokens avoided minus the head's verify tokens
|
|
9
|
+
* above zero in every shadow week). Missing or underpowered data is "not
|
|
10
|
+
* ready" — never a flip.
|
|
11
|
+
*
|
|
12
|
+
* A flipped kind whose free-routed asks reach the kill reverts on its own and
|
|
13
|
+
* stays reverted: the same shadow data that was outvoted by live data does not
|
|
14
|
+
* flip it back, so a re-flip needs the record cleared by a person. Every flip
|
|
15
|
+
* and every reversion is an event in gitignored runtime state, with one line a
|
|
16
|
+
* claim row can cite. This module never edits `docs/CLAIMS.md`.
|
|
17
|
+
*
|
|
18
|
+
* Usage: ./scripts-run src/scripts/ai_council/kind_flip [--apply] [--audit-dir <dir>]
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
import * as fs from 'node:fs';
|
|
22
|
+
import * as path from 'node:path';
|
|
23
|
+
import { pathToFileURL } from 'node:url';
|
|
24
|
+
|
|
25
|
+
import { readShadowLedger, shadowReport, SHADOW_CALL_CAP, type KindShadowStats } from './free_hand_shadow.js';
|
|
26
|
+
import { HAND_KINDS, isHandKind, isUnpaid, ROUTE_BILLINGS, type HandKind, type RouteBilling, type VerifyVerdict } from '../_lib/hand_kinds.js';
|
|
27
|
+
|
|
28
|
+
/** The escalation kill registered on `ask_economy`; the quality claim's second half. */
|
|
29
|
+
export const ESCALATION_KILL = 0.3;
|
|
30
|
+
export const QUALITY_MARGIN = 0.05;
|
|
31
|
+
/** The A5 cap shared evenly across the kinds; below it a kind's rates settle nothing. */
|
|
32
|
+
export const MIN_SHADOW_PER_KIND = Math.floor(SHADOW_CALL_CAP / HAND_KINDS.length);
|
|
33
|
+
/** Free-routed asks a flipped kind needs before its live rate may revert it. */
|
|
34
|
+
export const REVERT_MIN_SAMPLE = 30;
|
|
35
|
+
|
|
36
|
+
import { isKindFlipped, KIND_FLIPS_RELPATH } from './kind_flip_state.js';
|
|
37
|
+
export { isKindFlipped, KIND_FLIPS_RELPATH } from './kind_flip_state.js';
|
|
38
|
+
|
|
39
|
+
export interface FlipVerdict {
|
|
40
|
+
readonly ready: boolean;
|
|
41
|
+
readonly reasons: string[];
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export function flipVerdict(s: KindShadowStats | undefined): FlipVerdict {
|
|
45
|
+
if (s === undefined) return { ready: false, reasons: ['no shadow data'] };
|
|
46
|
+
const reasons: string[] = [];
|
|
47
|
+
if (s.n < MIN_SHADOW_PER_KIND) reasons.push(`underpowered: ${String(s.n)} of ${String(MIN_SHADOW_PER_KIND)} shadow calls`);
|
|
48
|
+
if (s.free_rate > s.paid_rate + QUALITY_MARGIN) {
|
|
49
|
+
reasons.push(`quality margin: free ${s.free_rate.toFixed(3)} > paid ${s.paid_rate.toFixed(3)} + ${String(QUALITY_MARGIN)}`);
|
|
50
|
+
}
|
|
51
|
+
if (s.free_rate >= ESCALATION_KILL) reasons.push(`kill: free ${s.free_rate.toFixed(3)} >= ${String(ESCALATION_KILL)}`);
|
|
52
|
+
if (s.weeks.length === 0 || s.weeks.some((w) => w.net <= 0)) reasons.push('relief: a shadow week without net relief after verify tokens');
|
|
53
|
+
return { ready: reasons.length === 0, reasons };
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/** One free-routed typed ask after a flip, as the head recorded its verify. */
|
|
57
|
+
export interface FreeObservation {
|
|
58
|
+
readonly kind: HandKind;
|
|
59
|
+
readonly verified: VerifyVerdict;
|
|
60
|
+
readonly ts: string;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
const _BILLINGS: ReadonlySet<string> = new Set<string>(ROUTE_BILLINGS);
|
|
64
|
+
|
|
65
|
+
/** The free-routed asks among orchestration audit lines. */
|
|
66
|
+
export function observationsFromAuditLines(lines: readonly Record<string, unknown>[]): FreeObservation[] {
|
|
67
|
+
const out: FreeObservation[] = [];
|
|
68
|
+
for (const l of lines) {
|
|
69
|
+
const o = (l['orchestration'] ?? {}) as Record<string, unknown>;
|
|
70
|
+
const billing = o['route_billing'];
|
|
71
|
+
const verified = o['verified'];
|
|
72
|
+
if (o['route_taken'] !== 'ask' || !isHandKind(o['hand_kind']) || typeof l['ts'] !== 'string') continue;
|
|
73
|
+
if (typeof billing !== 'string' || !_BILLINGS.has(billing) || !isUnpaid(billing as RouteBilling)) continue;
|
|
74
|
+
if (verified !== 'pass' && verified !== 'fail' && verified !== 'skipped') continue;
|
|
75
|
+
out.push({ kind: o['hand_kind'] as HandKind, verified, ts: l['ts'] });
|
|
76
|
+
}
|
|
77
|
+
return out;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
export interface FlipEvent {
|
|
81
|
+
readonly ts: string;
|
|
82
|
+
readonly kind: HandKind;
|
|
83
|
+
readonly to: 'free' | 'paid';
|
|
84
|
+
readonly n: number;
|
|
85
|
+
readonly free_rate: number;
|
|
86
|
+
readonly line: string;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
interface KindState {
|
|
90
|
+
readonly route: 'free' | 'paid';
|
|
91
|
+
readonly since: string;
|
|
92
|
+
readonly reverted?: true;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
interface Store {
|
|
96
|
+
kinds: Partial<Record<HandKind, KindState>>;
|
|
97
|
+
events: FlipEvent[];
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
function _path(stateRoot: string): string {
|
|
101
|
+
return path.join(stateRoot, KIND_FLIPS_RELPATH);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
function _read(stateRoot: string): Store {
|
|
105
|
+
try {
|
|
106
|
+
const raw = JSON.parse(fs.readFileSync(_path(stateRoot), 'utf8')) as Partial<Store>;
|
|
107
|
+
return { kinds: raw.kinds ?? {}, events: Array.isArray(raw.events) ? raw.events : [] };
|
|
108
|
+
} catch {
|
|
109
|
+
return { kinds: {}, events: [] };
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
function _write(stateRoot: string, store: Store): void {
|
|
114
|
+
const target = _path(stateRoot);
|
|
115
|
+
fs.mkdirSync(path.dirname(target), { recursive: true });
|
|
116
|
+
const tmp = `${target}.${process.pid}.tmp`;
|
|
117
|
+
fs.writeFileSync(tmp, `${JSON.stringify(store, null, 2)}\n`, 'utf8');
|
|
118
|
+
fs.renameSync(tmp, target);
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
function _flipLine(kind: HandKind, day: string, s: KindShadowStats): string {
|
|
123
|
+
return (
|
|
124
|
+
`free-hands-quality-held: ${kind} flipped to the free route on ${day} — shadow n=${String(s.n)}, ` +
|
|
125
|
+
`free ${s.free_rate.toFixed(3)} vs paid ${s.paid_rate.toFixed(3)}, net relief ${String(s.net)} tokens`
|
|
126
|
+
);
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
function _revertLine(kind: HandKind, day: string, n: number, rate: number): string {
|
|
130
|
+
return (
|
|
131
|
+
`free-hands-quality-held: ${kind} reverted to the paid route on ${day} — free failure rate ` +
|
|
132
|
+
`${rate.toFixed(3)} over ${String(n)} free-routed asks >= kill ${String(ESCALATION_KILL)}`
|
|
133
|
+
);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/** The live breach that reverts a flipped kind: free-routed asks since the flip, at or above the kill. */
|
|
137
|
+
function _revertOf(kind: HandKind, state: KindState, live: readonly FreeObservation[]): { n: number; rate: number } | null {
|
|
138
|
+
const since = live.filter((o) => o.kind === kind && o.ts >= state.since);
|
|
139
|
+
if (since.length < REVERT_MIN_SAMPLE) return null;
|
|
140
|
+
// A `skipped` verify on a free return counts as an escalation, as in the claim.
|
|
141
|
+
const rate = since.filter((o) => o.verified !== 'pass').length / since.length;
|
|
142
|
+
return rate >= ESCALATION_KILL ? { n: since.length, rate } : null;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
export interface ApplyInput {
|
|
146
|
+
readonly shadow: readonly KindShadowStats[];
|
|
147
|
+
readonly live: readonly FreeObservation[];
|
|
148
|
+
readonly now?: Date;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
/** Flip the ready kinds, revert the breaching ones; returns this pass's events. */
|
|
152
|
+
export function applyFlips(stateRoot: string, input: ApplyInput): FlipEvent[] {
|
|
153
|
+
const store = _read(stateRoot);
|
|
154
|
+
const now = input.now ?? new Date();
|
|
155
|
+
const ts = now.toISOString();
|
|
156
|
+
const day = ts.slice(0, 10);
|
|
157
|
+
const events: FlipEvent[] = [];
|
|
158
|
+
for (const kind of HAND_KINDS) {
|
|
159
|
+
const state = store.kinds[kind];
|
|
160
|
+
if (state?.route === 'free') {
|
|
161
|
+
const breach = _revertOf(kind, state, input.live);
|
|
162
|
+
if (breach === null) continue;
|
|
163
|
+
store.kinds[kind] = { route: 'paid', since: ts, reverted: true };
|
|
164
|
+
events.push({ ts, kind, to: 'paid', n: breach.n, free_rate: breach.rate, line: _revertLine(kind, day, breach.n, breach.rate) });
|
|
165
|
+
continue;
|
|
166
|
+
}
|
|
167
|
+
if (state?.reverted === true) continue;
|
|
168
|
+
const s = input.shadow.find((x) => x.kind === kind);
|
|
169
|
+
if (s === undefined || !flipVerdict(s).ready) continue;
|
|
170
|
+
store.kinds[kind] = { route: 'free', since: ts };
|
|
171
|
+
events.push({ ts, kind, to: 'free', n: s.n, free_rate: s.free_rate, line: _flipLine(kind, day, s) });
|
|
172
|
+
}
|
|
173
|
+
if (events.length > 0) {
|
|
174
|
+
store.events.push(...events);
|
|
175
|
+
_write(stateRoot, store);
|
|
176
|
+
}
|
|
177
|
+
return events;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
function _auditLines(dir: string): Record<string, unknown>[] {
|
|
181
|
+
let files: string[];
|
|
182
|
+
try {
|
|
183
|
+
files = fs.readdirSync(dir).filter((f) => f.endsWith('.jsonl'));
|
|
184
|
+
} catch {
|
|
185
|
+
return [];
|
|
186
|
+
}
|
|
187
|
+
const out: Record<string, unknown>[] = [];
|
|
188
|
+
for (const f of files) {
|
|
189
|
+
for (const line of fs.readFileSync(path.join(dir, f), 'utf8').split('\n')) {
|
|
190
|
+
if (line.trim() === '') continue;
|
|
191
|
+
try {
|
|
192
|
+
out.push(JSON.parse(line) as Record<string, unknown>);
|
|
193
|
+
} catch {
|
|
194
|
+
/* a torn line is skipped */
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
return out;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
export async function main(argv: readonly string[], cwd: string = process.cwd()): Promise<number> {
|
|
202
|
+
const i = argv.indexOf('--audit-dir');
|
|
203
|
+
const { DEFAULT_DIR } = await import('../orchestration_record.js');
|
|
204
|
+
const auditDir = i >= 0 && argv[i + 1] !== undefined ? argv[i + 1]! : path.join(cwd, DEFAULT_DIR);
|
|
205
|
+
const shadow = shadowReport(readShadowLedger(cwd));
|
|
206
|
+
if (argv.includes('--apply')) {
|
|
207
|
+
for (const e of applyFlips(cwd, { shadow, live: observationsFromAuditLines(_auditLines(auditDir)) })) {
|
|
208
|
+
process.stdout.write(`${e.line}\n`);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
for (const kind of HAND_KINDS) {
|
|
212
|
+
const v = flipVerdict(shadow.find((s) => s.kind === kind));
|
|
213
|
+
const route = isKindFlipped(cwd, kind) ? 'free' : 'paid';
|
|
214
|
+
process.stdout.write(` ${kind}: ${route}${v.ready ? '' : ` · not ready: ${v.reasons.join('; ')}`}\n`);
|
|
215
|
+
}
|
|
216
|
+
return 0;
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
if (process.argv[1] !== undefined && import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href) {
|
|
220
|
+
void main(process.argv.slice(2)).then((code) => process.exit(code));
|
|
221
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Where a hand kind's flip is stored, and the one read the per-prompt nudge
|
|
3
|
+
* needs. Apart from `kind_flip.ts`, whose shadow-report imports would put the
|
|
4
|
+
* whole measurement path into the hook bundle.
|
|
5
|
+
*/
|
|
6
|
+
import * as fs from 'node:fs';
|
|
7
|
+
import * as path from 'node:path';
|
|
8
|
+
|
|
9
|
+
export const KIND_FLIPS_RELPATH = path.join('agents', 'runtime', 'state', 'hand-kind-flips.json');
|
|
10
|
+
|
|
11
|
+
/** Unreadable or absent state is "not flipped". */
|
|
12
|
+
export function isKindFlipped(stateRoot: string, kind: string): boolean {
|
|
13
|
+
try {
|
|
14
|
+
const raw = JSON.parse(fs.readFileSync(path.join(stateRoot, KIND_FLIPS_RELPATH), 'utf8')) as { kinds?: Record<string, { route?: unknown }> };
|
|
15
|
+
return raw.kinds?.[kind]?.route === 'free';
|
|
16
|
+
} catch {
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -4,14 +4,15 @@
|
|
|
4
4
|
* Ported from the retired Python `src/scripts/ai_council/learn_low_impact_preview.py`
|
|
5
5
|
* (ADR-200 — Python→TS migration, Phase 1).
|
|
6
6
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
7
|
+
* The command is read-only: it builds a structured plan describing which
|
|
8
|
+
* Validated entries would be worth upstreaming, and opens nothing. The
|
|
9
|
+
* `--apply` flag that once drove an upstream PR from here was retired on
|
|
10
|
+
* 2026-10-13 — it wrote into a package seed file that is not in the tree,
|
|
11
|
+
* and a second outward route would be a second set of guarantees. The one
|
|
12
|
+
* gated outward step is `self-repair:release`.
|
|
11
13
|
*
|
|
12
14
|
* The module is import-light by design — pure parsing + redaction + diff
|
|
13
|
-
* rendering.
|
|
14
|
-
* this module only hands the agent the material to surface.
|
|
15
|
+
* rendering. It hands the agent the material to surface and nothing else.
|
|
15
16
|
*/
|
|
16
17
|
|
|
17
18
|
import * as fs from 'node:fs';
|
|
@@ -22,6 +23,24 @@ import {
|
|
|
22
23
|
redact_low_impact_entry,
|
|
23
24
|
} from './redact_low_impact_entry.js';
|
|
24
25
|
|
|
26
|
+
/**
|
|
27
|
+
* The package-side seed the preview diffs against — the one place a CALLER
|
|
28
|
+
* reads this literal from, so no caller restates it. The privacy floor names
|
|
29
|
+
* the same path for its own purpose, which is a lock rather than a second
|
|
30
|
+
* source: the rule has to name what it locks.
|
|
31
|
+
*
|
|
32
|
+
* The file is deliberately NOT in the tree: the package ships no seed
|
|
33
|
+
* corpus, `_readSeedPhrases` treats a missing seed as an empty set, and the
|
|
34
|
+
* preview therefore diffs against an empty baseline. The path is still
|
|
35
|
+
* named here, and locked by `low-impact-corpus-privacy-floor`, so that a
|
|
36
|
+
* seed reappearing arrives already under the privacy floor.
|
|
37
|
+
*
|
|
38
|
+
* It is RELATIVE. A caller resolves it against the package root; resolving it
|
|
39
|
+
* against an arbitrary cwd would let a same-named file in a consumer project
|
|
40
|
+
* mark entries `already_seeded` and suppress them silently.
|
|
41
|
+
*/
|
|
42
|
+
export const PACKAGE_SEED_PATH = 'data/low-impact-decisions-seed.md';
|
|
43
|
+
|
|
25
44
|
// Python: re.compile(r"^last-upstreamed:\s*([0-9a-f]{6,40}|0+)\s*$",
|
|
26
45
|
// re.IGNORECASE | re.MULTILINE)
|
|
27
46
|
// \s is Unicode in Python; emulate via the explicit Unicode whitespace class.
|
|
@@ -57,10 +76,10 @@ export class RefusedEntry {
|
|
|
57
76
|
}
|
|
58
77
|
|
|
59
78
|
/**
|
|
60
|
-
* Structured preview for `/memory learn-low-impact
|
|
79
|
+
* Structured preview for `/memory learn-low-impact`.
|
|
61
80
|
*
|
|
62
|
-
* Consumed by the agent which renders the human-facing preview block
|
|
63
|
-
*
|
|
81
|
+
* Consumed by the agent which renders the human-facing preview block. The
|
|
82
|
+
* command ends there: it opens nothing and sends nothing.
|
|
64
83
|
*/
|
|
65
84
|
export class LearnLowImpactPreview {
|
|
66
85
|
readonly promoted: readonly PreviewEntry[];
|
|
@@ -97,10 +116,14 @@ export class LearnLowImpactPreview {
|
|
|
97
116
|
}
|
|
98
117
|
|
|
99
118
|
/**
|
|
100
|
-
* True when
|
|
119
|
+
* True when the promoted set is both non-empty and wholly clean — the
|
|
120
|
+
* shape an upstream contribution would need. Nothing here acts on it;
|
|
121
|
+
* `render()` reads it to decide which closing line to print.
|
|
101
122
|
*
|
|
102
|
-
*
|
|
103
|
-
*
|
|
123
|
+
* The name predates the retirement of `--apply` and is kept because it
|
|
124
|
+
* is the published accessor; what changed is that no caller opens
|
|
125
|
+
* anything. Iron Law, unchanged: any redactor refusal blocks promotion —
|
|
126
|
+
* the author rephrases or drops the offending entry locally and re-runs.
|
|
104
127
|
*/
|
|
105
128
|
get would_open_pr(): boolean {
|
|
106
129
|
return this.promoted.length > 0 && this.refused.length === 0;
|
|
@@ -148,13 +171,17 @@ export class LearnLowImpactPreview {
|
|
|
148
171
|
}
|
|
149
172
|
if (this.refused.length > 0) {
|
|
150
173
|
lines.push(
|
|
151
|
-
'> Refusals block
|
|
174
|
+
'> Refusals block promotion. Rephrase the entries locally' +
|
|
152
175
|
' (or drop them) and re-run.',
|
|
153
176
|
);
|
|
154
177
|
} else if (this.promoted.length > 0) {
|
|
155
178
|
lines.push(
|
|
156
|
-
|
|
157
|
-
|
|
179
|
+
// Deliberately no onward pointer. The outward ladder releases
|
|
180
|
+
// a RECORDED defect and nothing here opens a record, so a
|
|
181
|
+
// corpus entry cannot ride it today; naming a route the
|
|
182
|
+
// reader cannot take is worse than naming none.
|
|
183
|
+
'> This command sends nothing. Promoting an entry upstream is' +
|
|
184
|
+
' a separate, explicitly authorised decision.',
|
|
158
185
|
);
|
|
159
186
|
}
|
|
160
187
|
// Python: "\n".join(lines).rstrip() + "\n"
|
|
@@ -162,11 +189,11 @@ export class LearnLowImpactPreview {
|
|
|
162
189
|
}
|
|
163
190
|
|
|
164
191
|
/**
|
|
165
|
-
* Source-project-stripped diff
|
|
192
|
+
* Source-project-stripped diff the preview proposes for a reader.
|
|
166
193
|
*
|
|
167
194
|
* Emits unified-diff-style `+` lines for each promoted phrase under the
|
|
168
|
-
* seed file's `## Validated` section
|
|
169
|
-
*
|
|
195
|
+
* seed file's `## Validated` section — material for a reader to judge,
|
|
196
|
+
* not a patch this command applies anywhere.
|
|
170
197
|
*/
|
|
171
198
|
render_diff(): string {
|
|
172
199
|
if (this.promoted.length === 0) {
|
|
@@ -187,7 +214,7 @@ export class LearnLowImpactPreview {
|
|
|
187
214
|
const bodyLines: string[] = [
|
|
188
215
|
`# ${title}`,
|
|
189
216
|
'',
|
|
190
|
-
'
|
|
217
|
+
'Prepared from `/memory learn-low-impact`, which sends nothing.',
|
|
191
218
|
'',
|
|
192
219
|
'## Entries',
|
|
193
220
|
'',
|
|
@@ -223,9 +250,10 @@ function _rstrip(s: string): string {
|
|
|
223
250
|
/**
|
|
224
251
|
* Return the set of normalised phrases already in the seed file.
|
|
225
252
|
*
|
|
226
|
-
* Missing seed file is not an error — it returns an empty set
|
|
227
|
-
*
|
|
228
|
-
*
|
|
253
|
+
* Missing seed file is not an error — it returns an empty set, which is the
|
|
254
|
+
* standing case rather than an edge one: the package ships no seed, so every
|
|
255
|
+
* preview diffs against an empty baseline (see `PACKAGE_SEED_PATH`). Reuses
|
|
256
|
+
* the strict parser so a seed that does appear is contract-validated.
|
|
229
257
|
*/
|
|
230
258
|
function _readSeedPhrases(seedPath: string): Set<string> {
|
|
231
259
|
if (!fs.existsSync(seedPath)) {
|