@event4u/agent-config 14.10.0 → 14.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.augment-plugin/marketplace.json +3 -3
- package/.augment-plugin/plugin.json +1 -1
- package/.claude-plugin/marketplace.json +1 -1
- package/CHANGELOG.md +161 -208
- package/README.md +1 -1
- package/dist/agent-src/commands/design.md +88 -0
- package/dist/agent-src/commands/project/analyze.md +47 -0
- package/dist/agent-src/commands/review/changes.md +67 -6
- package/dist/agent-src/commands/roadmap/create.md +49 -0
- package/dist/agent-src/commands/roadmap/next.md +27 -11
- package/dist/agent-src/commands/roadmap/process-full.md +14 -0
- package/dist/agent-src/commands/video/from-script.md +60 -3
- package/dist/agent-src/commands/video/stitch.md +14 -0
- package/dist/agent-src/contexts/communication/rules-auto/guidelines-mechanics.md +1 -0
- package/dist/agent-src/contexts/execution/evidence-discipline.md +26 -0
- package/dist/agent-src/contexts/execution/roadmap-process-loop.md +154 -2
- package/dist/agent-src/rules/active-remediation.md +3 -3
- package/dist/agent-src/rules/code-provenance.md +2 -2
- package/dist/agent-src/rules/context-hygiene.md +13 -33
- package/dist/agent-src/rules/council-availability.md +2 -2
- package/dist/agent-src/rules/decision-revisit-gate.md +3 -1
- package/dist/agent-src/rules/design-fidelity.md +18 -0
- package/dist/agent-src/rules/design-review-after-ui-write.md +2 -2
- package/dist/agent-src/rules/evaluator-independence.md +56 -44
- package/dist/agent-src/rules/fix-what-you-see.md +9 -1
- package/dist/agent-src/rules/framework-neutrality-in-generic-skills.md +1 -1
- package/dist/agent-src/rules/minimal-safe-diff.md +14 -20
- package/dist/agent-src/rules/missing-skill-recovery.md +13 -1
- package/dist/agent-src/rules/playbook-precedence.md +105 -0
- package/dist/agent-src/rules/recurring-criticism.md +3 -1
- package/dist/agent-src/rules/roadmap-progress-sync.md +14 -13
- package/dist/agent-src/rules/scale-discipline.md +24 -0
- package/dist/agent-src/rules/security-sensitive-stop.md +2 -2
- package/dist/agent-src/rules/settings-ask-protocol.md +2 -2
- package/dist/agent-src/rules/ui-audit-gate.md +27 -15
- package/dist/agent-src/rules/untrusted-input-defense.md +2 -2
- package/dist/agent-src/skills/accessibility-auditor/SKILL.md +19 -0
- package/dist/agent-src/skills/adr-create/SKILL.md +7 -0
- package/dist/agent-src/skills/agents-md-thin-root/SKILL.md +33 -0
- package/dist/agent-src/skills/ai-council/references/advanced-modes.md +17 -3
- package/dist/agent-src/skills/ai-council/references/output-and-synthesis.md +31 -0
- package/dist/agent-src/skills/ai-council/references/procedure.md +19 -0
- package/dist/agent-src/skills/alerting-doctrine/SKILL.md +225 -0
- package/dist/agent-src/skills/authz-review/SKILL.md +0 -1
- package/dist/agent-src/skills/blast-radius-analyzer/SKILL.md +32 -0
- package/dist/agent-src/skills/brand/SKILL.md +3 -0
- package/dist/agent-src/skills/brand-asset-generation/SKILL.md +3 -0
- package/dist/agent-src/skills/brand-audit/SKILL.md +3 -0
- package/dist/agent-src/skills/brand-identity/SKILL.md +3 -0
- package/dist/agent-src/skills/brand-strategy/SKILL.md +3 -0
- package/dist/agent-src/skills/brand-to-tokens/SKILL.md +3 -0
- package/dist/agent-src/skills/check-refs/SKILL.md +3 -0
- package/dist/agent-src/skills/code-refactoring/SKILL.md +45 -1
- package/dist/agent-src/skills/code-review/SKILL.md +75 -5
- package/dist/agent-src/skills/command-routing/SKILL.md +6 -0
- package/dist/agent-src/skills/command-writing/SKILL.md +35 -0
- package/dist/agent-src/skills/condense-memory/SKILL.md +3 -0
- package/dist/agent-src/skills/context-authoring/SKILL.md +1 -1
- package/dist/agent-src/skills/conventional-commits-writing/SKILL.md +3 -0
- package/dist/agent-src/skills/copilot-agents-optimization/SKILL.md +10 -0
- package/dist/agent-src/skills/corpus-grounding/SKILL.md +3 -0
- package/dist/agent-src/skills/design-intelligence/SKILL.md +3 -0
- package/dist/agent-src/skills/design-intelligence/data/landing.csv +36 -35
- package/dist/agent-src/skills/design-intelligence/data/stacks/threejs.csv +1 -0
- package/dist/agent-src/skills/design-review/SKILL.md +79 -1
- package/dist/agent-src/skills/design-review/references/verification-automation.md +41 -0
- package/dist/agent-src/skills/design-system-capture/SKILL.md +35 -40
- package/dist/agent-src/skills/design-system-capture/references/import-procedure.md +50 -0
- package/dist/agent-src/skills/design-tokens/SKILL.md +3 -0
- package/dist/agent-src/skills/design-variations/SKILL.md +3 -0
- package/dist/agent-src/skills/developer-like-execution/SKILL.md +3 -0
- package/dist/agent-src/skills/estimate-ticket/SKILL.md +3 -0
- package/dist/agent-src/skills/existing-ui-audit/SKILL.md +28 -4
- package/dist/agent-src/skills/fe-design/SKILL.md +74 -41
- package/dist/agent-src/skills/fe-design/references/craft-floor.md +52 -0
- package/dist/agent-src/skills/fe-design/references/source-led-port.md +36 -0
- package/dist/agent-src/skills/file-editor/SKILL.md +5 -0
- package/dist/agent-src/skills/finishing-a-development-branch/SKILL.md +2 -2
- package/dist/agent-src/skills/git-workflow/SKILL.md +3 -0
- package/dist/agent-src/skills/html-deck/SKILL.md +3 -0
- package/dist/agent-src/skills/iconography/SKILL.md +3 -0
- package/dist/agent-src/skills/image-editing/SKILL.md +3 -0
- package/dist/agent-src/skills/image-generation/SKILL.md +3 -0
- package/dist/agent-src/skills/image-provider-routing/SKILL.md +3 -0
- package/dist/agent-src/skills/incident-commander/SKILL.md +10 -0
- package/dist/agent-src/skills/js-library-packaging/SKILL.md +173 -0
- package/dist/agent-src/skills/js-library-packaging/scripts/check_package_surface.ts +270 -0
- package/dist/agent-src/skills/laravel-migration/SKILL.md +3 -0
- package/dist/agent-src/skills/learning-to-rule-or-skill/SKILL.md +3 -0
- package/dist/agent-src/skills/lint-skills/SKILL.md +3 -0
- package/dist/agent-src/skills/llm-provider-knowledge/SKILL.md +3 -0
- package/dist/agent-src/skills/logging-monitoring/SKILL.md +234 -51
- package/dist/agent-src/skills/logo-generation/SKILL.md +3 -0
- package/dist/agent-src/skills/md-language-check/SKILL.md +3 -0
- package/dist/agent-src/skills/monorepo-workspace/SKILL.md +149 -0
- package/dist/agent-src/skills/motion-choreographer/SKILL.md +6 -0
- package/dist/agent-src/skills/multi-tenancy/SKILL.md +4 -0
- package/dist/agent-src/skills/operational-readiness/SKILL.md +184 -0
- package/dist/agent-src/skills/override-management/SKILL.md +3 -0
- package/dist/agent-src/skills/persona-improvement/SKILL.md +3 -0
- package/dist/agent-src/skills/pest-testing/SKILL.md +3 -0
- package/dist/agent-src/skills/playbook-authoring/SKILL.md +162 -0
- package/dist/agent-src/skills/playwright-testing/SKILL.md +3 -0
- package/dist/agent-src/skills/privacy-review/SKILL.md +3 -0
- package/dist/agent-src/skills/project-analysis-core/SKILL.md +23 -0
- package/dist/agent-src/skills/prompt-engineering-image/SKILL.md +3 -0
- package/dist/agent-src/skills/quality-tools/SKILL.md +5 -0
- package/dist/agent-src/skills/react-shadcn-ui/SKILL.md +81 -33
- package/dist/agent-src/skills/readme-reviewer/SKILL.md +3 -0
- package/dist/agent-src/skills/readme-writing/SKILL.md +3 -0
- package/dist/agent-src/skills/readme-writing-package/SKILL.md +3 -0
- package/dist/agent-src/skills/receiving-code-review/SKILL.md +2 -2
- package/dist/agent-src/skills/refine-prompt/SKILL.md +3 -0
- package/dist/agent-src/skills/refine-ticket/SKILL.md +3 -0
- package/dist/agent-src/skills/requesting-code-review/SKILL.md +2 -2
- package/dist/agent-src/skills/review-routing/SKILL.md +2 -2
- package/dist/agent-src/skills/roadmap-writing/SKILL.md +23 -41
- package/dist/agent-src/skills/roadmap-writing/references/follow-up-roadmap-shape.md +47 -0
- package/dist/agent-src/skills/rtk-output-filtering/SKILL.md +22 -6
- package/dist/agent-src/skills/runway-cognition/SKILL.md +3 -0
- package/dist/agent-src/skills/scene-expander/scene-blueprint.schema.yaml +26 -0
- package/dist/agent-src/skills/secrets-management/SKILL.md +4 -0
- package/dist/agent-src/skills/server-hardening/SKILL.md +159 -0
- package/dist/agent-src/skills/skill-improvement-pipeline/SKILL.md +3 -0
- package/dist/agent-src/skills/skill-management/SKILL.md +3 -0
- package/dist/agent-src/skills/skill-reviewer/SKILL.md +3 -0
- package/dist/agent-src/skills/skill-writing/SKILL.md +6 -0
- package/dist/agent-src/skills/skill-writing/references/procedure.md +24 -2
- package/dist/agent-src/skills/spreadsheet-authoring/SKILL.md +3 -0
- package/dist/agent-src/skills/storybook-workshop/SKILL.md +203 -0
- package/dist/agent-src/skills/storybook-workshop/scripts/story_contrast_floor.ts +134 -0
- package/dist/agent-src/skills/subagent-orchestration/SKILL.md +1 -1
- package/dist/agent-src/skills/subagent-orchestration/prompts/README.md +25 -0
- package/dist/agent-src/skills/supply-chain-intake/SKILL.md +12 -0
- package/dist/agent-src/skills/systematic-debugging/SKILL.md +1 -1
- package/dist/agent-src/skills/terraform/SKILL.md +3 -0
- package/dist/agent-src/skills/test-driven-development/SKILL.md +1 -1
- package/dist/agent-src/skills/threat-modeling/SKILL.md +0 -3
- package/dist/agent-src/skills/token-optimizer/SKILL.md +3 -0
- package/dist/agent-src/skills/typography-system/SKILL.md +3 -0
- package/dist/agent-src/skills/ui-component-architect/SKILL.md +17 -1
- package/dist/agent-src/skills/upstream-contribute/SKILL.md +3 -0
- package/dist/agent-src/skills/validate-feature-fit/SKILL.md +3 -0
- package/dist/agent-src/skills/verify-completion-evidence/SKILL.md +2 -2
- package/dist/agent-src/skills/wireframe/SKILL.md +3 -0
- package/dist/agent-src/skills/wireframe/references/story-beat-ledger.schema.json +115 -0
- package/dist/agent-src/skills/workspace-link/SKILL.md +131 -0
- package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
- package/dist/agent-src/templates/playbook.md +75 -0
- package/dist/agent-src/templates/roadmaps.md +37 -0
- package/dist/agent-src/templates/scripts/check_playbook_invokes.ts +231 -0
- package/dist/agent-src/templates/scripts/work_engine/directives/ui/apply.ts +24 -0
- package/dist/agent-src/templates/scripts/work_engine/directives/ui/polish.ts +2 -0
- package/dist/agent-src/templates/scripts/work_engine/directives/ui/review.ts +216 -0
- package/dist/agent-src/templates/scripts/work_engine/directives/ui/scaffold.ts +159 -0
- package/dist/agent-src/templates/scripts/work_engine/directives/ui/stack_bundles.ts +73 -4
- package/dist/agent-src/templates/scripts/work_engine/stack/detect.ts +325 -40
- package/dist/cli/commands/uiAudit.js +221 -0
- package/dist/cli/commands/uiRender.js +206 -0
- package/dist/cli/main.js +22 -1
- package/dist/cli/mcp/content.js +64 -1
- package/dist/cli/mcp/dispatch.js +175 -10
- package/dist/cli/registry.js +3 -0
- package/dist/cli-delegate/{chunk-G23AT6GD.js → chunk-DMSZHXZS.js} +57 -1
- package/dist/cli-delegate/{chunk-77GR3VD4.js → chunk-FF7WAFMR.js} +58 -3
- package/dist/cli-delegate/{chunk-YM4GZDJG.js → chunk-JCW7ZLHK.js} +10 -0
- package/dist/cli-delegate/{chunk-H4VIVD4C.js → chunk-JJA2QEWA.js} +413 -391
- package/dist/cli-delegate/{chunk-PLSG6UL5.js → chunk-K4FFODTS.js} +341 -204
- package/dist/cli-delegate/{chunk-B2ERU2VA.js → chunk-WOKWX5PL.js} +1 -1
- package/dist/cli-delegate/cmd_brand_status.js +8 -6
- package/dist/cli-delegate/cmd_conformance.js +3 -3
- package/dist/cli-delegate/cmd_doctor.js +3 -3
- package/dist/cli-delegate/cmd_export.js +4 -4
- package/dist/cli-delegate/cmd_handoff.js +1 -1
- package/dist/cli-delegate/cmd_preflight.js +2 -2
- package/dist/cli-delegate/cmd_prune.js +4 -4
- package/dist/cli-delegate/cmd_session_recycle.js +70 -9
- package/dist/cli-delegate/cmd_settings_migrate.js +4 -4
- package/dist/cli-delegate/cmd_settings_set.js +1 -1
- package/dist/cli-delegate/cmd_sync.js +4 -4
- package/dist/cli-delegate/cmd_uninstall.js +4 -4
- package/dist/cli-delegate/cmd_validate.js +4 -4
- package/dist/discovery/deprecation-report.md +1 -1
- package/dist/discovery/discovery-manifest.json +362 -127
- package/dist/discovery/discovery-manifest.json.sha256 +1 -1
- package/dist/discovery/discovery-manifest.summary.md +4 -4
- package/dist/discovery/dormancy-report.md +1 -1
- package/dist/discovery/orphan-report.md +1 -1
- package/dist/discovery/packs.json +18 -8
- package/dist/discovery/trust-report.md +3 -3
- package/dist/discovery/workspaces.json +16 -6
- package/dist/hooks/dispatch.js +2575 -1472
- package/dist/install/install.mjs +800 -708
- package/dist/mcp/registry-manifest.json +3 -3
- package/dist/mcp/server.json +2 -2
- package/dist/mcp/server.mjs +1685 -1250
- package/dist/router.json +1 -1
- package/dist/scripts/_lib/lean_projection_mode.js +40 -0
- package/dist/scripts/_lib/scoped_projection.js +84 -0
- package/dist/scripts/_lib/ui_surface.js +89 -0
- package/dist/scripts/condense.js +6 -10
- package/dist/scripts/project_thin_rules.js +40 -2
- package/dist/server/schemas/settings.js +6 -0
- package/dist/shared/skillRanking.js +159 -0
- package/docs/contracts/provider-lifecycle.md +47 -18
- package/docs/contracts/settings-classes.md +35 -5
- package/docs/guidelines/agent-infra/context-hygiene-mechanics.md +49 -0
- package/docs/guidelines/agent-infra/downstream-changes-mechanics.md +91 -0
- package/docs/guidelines/agent-infra/evaluator-independence-mechanics.md +92 -0
- package/docs/guidelines/agent-infra/minimal-safe-diff-mechanics.md +45 -1
- package/docs/guidelines/agent-infra/roadmap-deferred-resolution-provenance.md +54 -0
- package/docs/guidelines/code-clarity.md +21 -0
- package/docs/guidelines/design-antipatterns.md +4 -2
- package/docs/guidelines/design-asset-discipline.md +38 -0
- package/docs/guidelines/design-fidelity-mechanics.md +45 -29
- package/docs/guidelines/design-handover-extraction.md +35 -5
- package/docs/guidelines/design-modes.md +41 -1
- package/docs/guidelines/monorepo-antipatterns.md +141 -0
- package/docs/guidelines/redundancy-taxonomy.md +180 -0
- package/llms.txt +50 -39
- package/package.json +6 -2
- package/src/agent-src/templates/scripts/check_playbook_invokes.ts +231 -0
- package/src/agent-src/templates/scripts/work_engine/directives/ui/apply.ts +24 -0
- package/src/agent-src/templates/scripts/work_engine/directives/ui/polish.ts +2 -0
- package/src/agent-src/templates/scripts/work_engine/directives/ui/review.ts +216 -0
- package/src/agent-src/templates/scripts/work_engine/directives/ui/scaffold.ts +159 -0
- package/src/agent-src/templates/scripts/work_engine/directives/ui/stack_bundles.ts +73 -4
- package/src/agent-src/templates/scripts/work_engine/stack/detect.ts +325 -40
- package/src/config/agent-settings.template.yml +44 -0
- package/src/config/assurance-capability-registry.json +223 -0
- package/src/config/assurance-threshold-budget.json +65 -0
- package/src/config/budgets.yml +19 -0
- package/src/config/ci-local-parity.yml +29 -0
- package/src/config/discovery/prompt-patterns.yml +56 -0
- package/src/config/discovery/unassigned-artefacts.yml +2 -0
- package/src/config/dispatch-economy-metrics.json +4 -2
- package/src/config/estate-count-budget.json +8 -3
- package/src/config/evaluator-budgets.json +14 -14
- package/src/config/gate-coverage.yml +392 -8
- package/src/config/gate-violation-baselines.json +76 -72
- package/src/config/hook-latency-budget.json +1 -0
- package/src/config/hook-token-budget.json +137 -125
- package/src/config/pack-size-budget.json +39 -10
- package/src/config/preamble-payload-budget.json +97 -71
- package/src/config/quorum-attendance-budget.json +12 -4
- package/src/config/routing-coverage-seed.json +29 -0
- package/src/config/rule-activation-census.json +7 -3
- package/src/config/rule-enforcement-baseline.json +0 -1
- package/src/config/rule-stub-ceilings.json +112 -91
- package/src/config/suggestion-capture.json +28 -0
- package/src/config/surface-matrix.yml +21 -2
- package/src/config/web-launch-readiness.json +188 -0
- package/src/scripts/_cli/cmd_doctor.ts +15 -16
- package/src/scripts/_cli/doctor_install_mode.ts +49 -0
- package/src/scripts/_cli/doctor_overrides.ts +154 -0
- package/src/scripts/_dispatch.bash +17 -0
- package/src/scripts/_lib/as_of.ts +412 -0
- package/src/scripts/_lib/exec_evidence.ts +7 -0
- package/src/scripts/_lib/gate_baseline.ts +150 -1
- package/src/scripts/_lib/hook_settings.ts +33 -0
- package/src/scripts/_lib/host_listing_model.ts +192 -0
- package/src/scripts/_lib/lean_projection_mode.ts +44 -0
- package/src/scripts/_lib/mcp_bridge.ts +199 -0
- package/src/scripts/_lib/review_independence.ts +62 -10
- package/src/scripts/_lib/rule_injection.ts +239 -0
- package/src/scripts/_lib/run_checkpoint.ts +54 -1
- package/src/scripts/_lib/scoped_projection.ts +96 -0
- package/src/scripts/_lib/session_register.ts +44 -2
- package/src/scripts/_lib/skill_catalogue.ts +38 -2
- package/src/scripts/_lib/skill_estate.ts +115 -0
- package/src/scripts/_lib/transcript_reads.ts +207 -0
- package/src/scripts/_lib/ui_authority.ts +343 -0
- package/src/scripts/ai-video/adapters/fal.sh +8 -3
- package/src/scripts/ai-video/adapters/gemini-veo.sh +10 -0
- package/src/scripts/ai-video/adapters/higgsfield.sh +10 -2
- package/src/scripts/ai-video/adapters/kling.sh +10 -0
- package/src/scripts/ai-video/adapters/sora.sh +10 -0
- package/src/scripts/ai-video/lib/calibrate-cost.sh +145 -0
- package/src/scripts/ai-video/lib/model-capabilities/README.md +53 -7
- package/src/scripts/ai-video/lib/model-capabilities/comfyui.json +15 -3
- package/src/scripts/ai-video/lib/model-capabilities/fal.json +36 -6
- package/src/scripts/ai-video/lib/model-capabilities/gemini-veo.json +23 -0
- package/src/scripts/ai-video/lib/model-capabilities/higgsfield.json +23 -0
- package/src/scripts/ai-video/lib/model-capabilities/kling.json +23 -0
- package/src/scripts/ai-video/lib/model-capabilities/musetalk.json +8 -2
- package/src/scripts/ai-video/lib/model-capabilities/replicate.json +36 -6
- package/src/scripts/ai-video/lib/model-capabilities/sora.json +45 -0
- package/src/scripts/ai-video/lib/model-capabilities/syncso.json +8 -2
- package/src/scripts/ai-video/lib/parse-blueprint.sh +52 -5
- package/src/scripts/ai-video/lib/resume-scan.sh +92 -3
- package/src/scripts/ai-video/lib/seam-plan.sh +212 -0
- package/src/scripts/ai-video/smoke-trace.sh +450 -2
- package/src/scripts/ai-video/stitch.sh +191 -10
- package/src/scripts/ai-video/test-pipeline.sh +84 -6
- package/src/scripts/ai_council/argument_exhaustion.ts +130 -0
- package/src/scripts/ai_council/cli_agency_bounds.ts +139 -0
- package/src/scripts/ai_council/cli_least_agency_canary.ts +347 -0
- package/src/scripts/ai_council/clients.ts +3 -2
- package/src/scripts/ai_council/consensus.ts +63 -6
- package/src/scripts/ai_council/events_log.ts +46 -1
- package/src/scripts/ai_council/orchestrator.ts +103 -108
- package/src/scripts/ai_council/orchestrator_results.ts +166 -0
- package/src/scripts/ai_council/prompts.ts +12 -5
- package/src/scripts/ai_council/quorum.ts +82 -1
- package/src/scripts/ai_council/quorum_wiring.ts +82 -5
- package/src/scripts/ai_council/stance_tally.ts +22 -0
- package/src/scripts/bench_hook_latency.ts +62 -0
- package/src/scripts/build_proof.ts +12 -1
- package/src/scripts/capture_skill_catalogue.ts +21 -0
- package/src/scripts/check_always_budget.ts +2 -1
- package/src/scripts/check_augmentignore.ts +2 -1
- package/src/scripts/check_beta_review_markers.ts +2 -1
- package/src/scripts/check_bundle_path_leakage.ts +162 -7
- package/src/scripts/check_command_examples.ts +557 -0
- package/src/scripts/check_composite_arming.ts +364 -0
- package/src/scripts/check_corpus_staleness.ts +2 -1
- package/src/scripts/check_council_pin_staleness.ts +3 -1
- package/src/scripts/check_enforcement_coverage.ts +116 -3
- package/src/scripts/check_enforcement_denominator.ts +365 -0
- package/src/scripts/check_estate_count.ts +122 -3
- package/src/scripts/check_gate_coverage.ts +2 -1
- package/src/scripts/check_hook_bundle_freshness.ts +13 -1
- package/src/scripts/check_knowledge_cards.ts +2 -1
- package/src/scripts/check_knowledge_pages.ts +3 -2
- package/src/scripts/check_memory.ts +2 -1
- package/src/scripts/check_no_automerge_key.ts +287 -0
- package/src/scripts/check_pack_conformance_fixture.ts +565 -0
- package/src/scripts/check_preamble_payload_budget.ts +30 -3
- package/src/scripts/check_proposal.ts +2 -1
- package/src/scripts/check_reach_staleness.ts +2 -1
- package/src/scripts/check_release_adjacent_health.ts +2 -1
- package/src/scripts/check_release_pr_shape.ts +5 -0
- package/src/scripts/check_review_schema.ts +34 -1
- package/src/scripts/check_roadmap_trackable.ts +48 -3
- package/src/scripts/check_routing_coverage.ts +352 -0
- package/src/scripts/check_score_contract.ts +505 -0
- package/src/scripts/check_skill_admissions.ts +514 -0
- package/src/scripts/check_source_size_budget.ts +2 -1
- package/src/scripts/check_standing_payload_delta.ts +505 -0
- package/src/scripts/check_trigger_evals.ts +2 -1
- package/src/scripts/check_web_launch_readiness.ts +705 -0
- package/src/scripts/classify_change_risk.ts +281 -0
- package/src/scripts/compute_skill_tiers.ts +186 -0
- package/src/scripts/condense.ts +8 -13
- package/src/scripts/council_attendance_metrics.ts +183 -0
- package/src/scripts/council_cli.ts +10 -8
- package/src/scripts/council_parse_rate.ts +116 -0
- package/src/scripts/derive_playbooks.ts +406 -0
- package/src/scripts/description_route_check.ts +494 -0
- package/src/scripts/design_slop_rules.ts +56 -2
- package/src/scripts/dispatch_r2_reviewer.ts +16 -0
- package/src/scripts/frontend_corpus_hash.ts +116 -0
- package/src/scripts/grade_target_readiness.ts +478 -0
- package/src/scripts/hook_manifest.json +1 -1
- package/src/scripts/hook_manifest.yaml +124 -16
- package/src/scripts/hooks/concern_registry.ts +6 -0
- package/src/scripts/hooks/design_pass_hook.ts +356 -0
- package/src/scripts/hooks/rtk_wrap_hook.ts +30 -7
- package/src/scripts/hooks/rule_inject_hook.ts +318 -0
- package/src/scripts/hooks/suggestion_capture_hook.ts +368 -0
- package/src/scripts/hot_context_hook.ts +74 -7
- package/src/scripts/install.ts +40 -89
- package/src/scripts/lint_adapter_tier.ts +663 -0
- package/src/scripts/lint_archived_skills.ts +93 -0
- package/src/scripts/lint_budget_ownership.ts +56 -5
- package/src/scripts/lint_deterministic_time.ts +470 -0
- package/src/scripts/lint_framework_leakage.ts +5 -0
- package/src/scripts/lint_handoffs.ts +525 -1
- package/src/scripts/lint_judge_prompt_expectation.ts +155 -0
- package/src/scripts/lint_marketplace.ts +88 -0
- package/src/scripts/lint_media_policy_linkage.ts +140 -1
- package/src/scripts/lint_one_off_age.ts +6 -1
- package/src/scripts/lint_override_kernel_guard.ts +87 -5
- package/src/scripts/lint_roadmap_complexity.ts +56 -0
- package/src/scripts/lint_rule_enforcement_declaration.ts +24 -7
- package/src/scripts/lint_rule_norm_pin.ts +321 -0
- package/src/scripts/lint_skill_trigger_corpus.ts +349 -0
- package/src/scripts/lint_spawn_payload.ts +42 -5
- package/src/scripts/lint_symptom_intake.ts +2 -1
- package/src/scripts/mcp_parity_smoke.ts +30 -4
- package/src/scripts/mcp_render.ts +66 -1
- package/src/scripts/mcp_tool_fingerprint.ts +241 -0
- package/src/scripts/measure_risk_class_drift.ts +140 -0
- package/src/scripts/measure_skill_ranker_baseline.ts +212 -0
- package/src/scripts/media/lib/adapter-common.sh +211 -1
- package/src/scripts/media/lib/adapter-contract.md +74 -6
- package/src/scripts/model_rule_injection.ts +907 -0
- package/src/scripts/pack_install_smoke.ts +363 -0
- package/src/scripts/pr_conflict_census.ts +187 -0
- package/src/scripts/project_thin_rules.ts +45 -2
- package/src/scripts/release.ts +66 -860
- package/src/scripts/release_drill.ts +59 -3
- package/src/scripts/release_env.ts +298 -0
- package/src/scripts/release_publication.ts +720 -0
- package/src/scripts/report_pack_delta.ts +204 -0
- package/src/scripts/roadmap_context.ts +778 -0
- package/src/scripts/schemas/fidelity-measurement-sheet.schema.json +169 -0
- package/src/scripts/schemas/rule.schema.json +24 -2
- package/src/scripts/schemas/skill.schema.json +39 -0
- package/src/scripts/schemas/ui-authority.schema.json +114 -0
- package/src/scripts/select_analysis_mode.ts +112 -0
- package/src/scripts/session_register_hook.ts +29 -3
- package/src/scripts/sessions_cli.ts +67 -3
- package/src/scripts/skill_tools/score_skill_relevance.ts +36 -53
- package/src/scripts/sync_pr_branch.ts +40 -1
- package/src/scripts/token_sink_report.ts +239 -0
- package/src/scripts/trigger_coverage.ts +122 -3
- package/src/scripts/update_counts.ts +7 -3
- package/src/scripts/validate_frontmatter.ts +66 -0
- package/src/server/schemas/settings.ts +10 -0
- package/src/shared/skillRanking.ts +183 -0
- package/dist/agent-src/skills/accessibility-auditor/evals/evals.json +0 -15
- package/dist/agent-src/skills/agent-security-review/evals/triggers.json +0 -52
- package/dist/agent-src/skills/ai-code-blindspots/evals/triggers.json +0 -52
- package/dist/agent-src/skills/analysis-skill-router/evals/evals.json +0 -13
- package/dist/agent-src/skills/brand/evals/triggers.json +0 -17
- package/dist/agent-src/skills/brand-asset-generation/evals/triggers.json +0 -17
- package/dist/agent-src/skills/brand-audit/evals/triggers.json +0 -17
- package/dist/agent-src/skills/brand-identity/evals/triggers.json +0 -17
- package/dist/agent-src/skills/brand-strategy/evals/triggers.json +0 -17
- package/dist/agent-src/skills/brand-to-tokens/evals/triggers.json +0 -17
- package/dist/agent-src/skills/bug-analyzer/evals/evals.json +0 -13
- package/dist/agent-src/skills/canvas-design/evals/triggers.json +0 -17
- package/dist/agent-src/skills/character-consistency/evals/evals.json +0 -16
- package/dist/agent-src/skills/code-intelligence/evals/triggers.json +0 -52
- package/dist/agent-src/skills/code-review/evals/evals.json +0 -100
- package/dist/agent-src/skills/command-routing/evals/evals.json +0 -14
- package/dist/agent-src/skills/complexity-first-planning/evals/triggers.json +0 -17
- package/dist/agent-src/skills/contract-review/evals/triggers.json +0 -17
- package/dist/agent-src/skills/conventional-commits-writing/evals/evals.json +0 -15
- package/dist/agent-src/skills/corpus-grounding/evals/triggers.json +0 -17
- package/dist/agent-src/skills/dashboard-design/evals/evals.json +0 -16
- package/dist/agent-src/skills/dcf-modeling/evals/domain-truth.json +0 -29
- package/dist/agent-src/skills/dcf-modeling/evals/evals.json +0 -20
- package/dist/agent-src/skills/decision-record/evals/evals.json +0 -20
- package/dist/agent-src/skills/decision-record/evals/triggers.json +0 -87
- package/dist/agent-src/skills/design-intelligence/evals/evals.json +0 -14
- package/dist/agent-src/skills/design-intelligence/evals/triggers.json +0 -17
- package/dist/agent-src/skills/design-system-capture/evals/evals.json +0 -15
- package/dist/agent-src/skills/design-tokens/evals/triggers.json +0 -17
- package/dist/agent-src/skills/design-variations/evals/triggers.json +0 -17
- package/dist/agent-src/skills/developer-like-execution/evals/evals.json +0 -16
- package/dist/agent-src/skills/doc-coauthoring/evals/evals.json +0 -16
- package/dist/agent-src/skills/doc-coauthoring/evals/triggers.json +0 -17
- package/dist/agent-src/skills/docx-authoring/evals/triggers.json +0 -52
- package/dist/agent-src/skills/dpa-review/evals/triggers.json +0 -17
- package/dist/agent-src/skills/editorial-calendar/evals/domain-truth.json +0 -16
- package/dist/agent-src/skills/editorial-calendar/evals/evals.json +0 -16
- package/dist/agent-src/skills/eloquent/evals/triggers.json +0 -17
- package/dist/agent-src/skills/estimate-ticket/evals/evals.json +0 -16
- package/dist/agent-src/skills/estimate-ticket/evals/output-schema.yml +0 -20
- package/dist/agent-src/skills/estimate-ticket/evals/triggers.json +0 -19
- package/dist/agent-src/skills/evaluate-llm-feature/evals/triggers.json +0 -52
- package/dist/agent-src/skills/existing-ui-audit/evals/triggers.json +0 -47
- package/dist/agent-src/skills/experiment-loop/evals/output-schema.yml +0 -27
- package/dist/agent-src/skills/experiment-loop/evals/triggers.json +0 -17
- package/dist/agent-src/skills/fe-design/evals/triggers.json +0 -55
- package/dist/agent-src/skills/forecasting/evals/domain-truth.json +0 -29
- package/dist/agent-src/skills/forecasting/evals/evals.json +0 -20
- package/dist/agent-src/skills/forensics-report/evals/triggers.json +0 -17
- package/dist/agent-src/skills/frontend-render-security/evals/triggers.json +0 -52
- package/dist/agent-src/skills/fundraising-narrative/evals/domain-truth.json +0 -16
- package/dist/agent-src/skills/fundraising-narrative/evals/evals.json +0 -16
- package/dist/agent-src/skills/gated-reach/evals/triggers.json +0 -72
- package/dist/agent-src/skills/github-ci/evals/evals.json +0 -25
- package/dist/agent-src/skills/history-design/evals/triggers.json +0 -17
- package/dist/agent-src/skills/html-deck/evals/triggers.json +0 -17
- package/dist/agent-src/skills/humanizer/evals/strip_fixtures.json +0 -57
- package/dist/agent-src/skills/humanizer/evals/triggers.json +0 -17
- package/dist/agent-src/skills/iconography/evals/triggers.json +0 -17
- package/dist/agent-src/skills/image-analyser/evals/triggers.json +0 -17
- package/dist/agent-src/skills/image-creator/evals/triggers.json +0 -17
- package/dist/agent-src/skills/image-editing/evals/triggers.json +0 -17
- package/dist/agent-src/skills/image-generation/evals/triggers.json +0 -17
- package/dist/agent-src/skills/image-provider-routing/evals/triggers.json +0 -17
- package/dist/agent-src/skills/incident-commander/evals/domain-truth.json +0 -16
- package/dist/agent-src/skills/incident-commander/evals/evals.json +0 -20
- package/dist/agent-src/skills/judge-artifact-completeness/evals/triggers.json +0 -17
- package/dist/agent-src/skills/judge-injection-defense/evals/triggers.json +0 -17
- package/dist/agent-src/skills/judge-synthesis/evals/triggers.json +0 -17
- package/dist/agent-src/skills/launch-readiness/evals/evals.json +0 -21
- package/dist/agent-src/skills/learning-tutor/evals/triggers.json +0 -52
- package/dist/agent-src/skills/legal-intake-triage/evals/triggers.json +0 -17
- package/dist/agent-src/skills/legal-practice-profile/evals/triggers.json +0 -17
- package/dist/agent-src/skills/license-compliance-audit/evals/triggers.json +0 -52
- package/dist/agent-src/skills/license-compliance-borrow-check/evals/triggers.json +0 -52
- package/dist/agent-src/skills/license-compliance-credits/evals/triggers.json +0 -52
- package/dist/agent-src/skills/llm-provider-knowledge/evals/triggers.json +0 -20
- package/dist/agent-src/skills/logging-monitoring/evals/evals.json +0 -16
- package/dist/agent-src/skills/logo-generation/evals/triggers.json +0 -17
- package/dist/agent-src/skills/messaging-architecture/evals/domain-truth.json +0 -16
- package/dist/agent-src/skills/messaging-architecture/evals/evals.json +0 -16
- package/dist/agent-src/skills/nda-triage/evals/triggers.json +0 -17
- package/dist/agent-src/skills/pdf-tools/evals/triggers.json +0 -52
- package/dist/agent-src/skills/perf-feedback-craft/evals/evals.json +0 -16
- package/dist/agent-src/skills/persona-improvement/evals/triggers.json +0 -52
- package/dist/agent-src/skills/php-coder/evals/triggers.json +0 -17
- package/dist/agent-src/skills/prediction-pool-optimizer/evals/triggers.json +0 -21
- package/dist/agent-src/skills/prompt-engineering-image/evals/triggers.json +0 -17
- package/dist/agent-src/skills/prompt-engineering-patterns/evals/evals.json +0 -16
- package/dist/agent-src/skills/prompt-validator/evals/triggers.json +0 -17
- package/dist/agent-src/skills/quality-tools/evals/evals.json +0 -15
- package/dist/agent-src/skills/reasoning-orchestrator/evals/triggers.json +0 -17
- package/dist/agent-src/skills/refine-prompt/evals/evals.json +0 -16
- package/dist/agent-src/skills/refine-ticket/evals/evals.json +0 -16
- package/dist/agent-src/skills/refine-ticket/evals/output-schema.yml +0 -16
- package/dist/agent-src/skills/refine-ticket/evals/triggers.json +0 -17
- package/dist/agent-src/skills/release-comms/evals/evals.json +0 -16
- package/dist/agent-src/skills/rice-prioritization/evals/evals.json +0 -20
- package/dist/agent-src/skills/runway-cognition/evals/domain-truth.json +0 -29
- package/dist/agent-src/skills/runway-cognition/evals/evals.json +0 -20
- package/dist/agent-src/skills/scenario-modeling/evals/domain-truth.json +0 -29
- package/dist/agent-src/skills/scenario-modeling/evals/evals.json +0 -20
- package/dist/agent-src/skills/schema-review/evals/triggers.json +0 -17
- package/dist/agent-src/skills/screenshot-hygiene/evals/triggers.json +0 -52
- package/dist/agent-src/skills/security-maturity-assessment/evals/triggers.json +0 -52
- package/dist/agent-src/skills/skill-writing/evals/triggers.json +0 -17
- package/dist/agent-src/skills/spreadsheet-authoring/evals/triggers.json +0 -47
- package/dist/agent-src/skills/subagent-orchestration/evals/evals.json +0 -60
- package/dist/agent-src/skills/supply-chain-intake/evals/triggers.json +0 -52
- package/dist/agent-src/skills/systematic-debugging/evals/evals.json +0 -20
- package/dist/agent-src/skills/test-case-discovery/evals/triggers.json +0 -52
- package/dist/agent-src/skills/test-driven-development/evals/evals.json +0 -16
- package/dist/agent-src/skills/threat-modeling/evals/evals.json +0 -21
- package/dist/agent-src/skills/typography-system/evals/evals.json +0 -14
- package/dist/agent-src/skills/typography-system/evals/triggers.json +0 -17
- package/dist/agent-src/skills/unit-economics-modeling/evals/domain-truth.json +0 -40
- package/dist/agent-src/skills/unit-economics-modeling/evals/evals.json +0 -24
- package/dist/agent-src/skills/verify-completion-evidence/evals/evals.json +0 -16
- package/dist/agent-src/skills/verify-repair-loop/evals/output-schema.yml +0 -20
- package/dist/agent-src/skills/verify-repair-loop/evals/triggers.json +0 -17
- package/dist/agent-src/skills/vision-articulation/evals/evals.json +0 -16
- package/dist/agent-src/skills/voice-and-tone-design/evals/evals.json +0 -16
- package/dist/agent-src/skills/wireframe/evals/triggers.json +0 -17
- package/dist/agent-src/skills/worktree-lifecycle/evals/evals.json +0 -38
- package/dist/agent-src/skills/worktree-lifecycle/evals/triggers.json +0 -52
- package/dist/cli/agent-config.js.map +0 -1
- package/dist/cli/bash/runBash.js.map +0 -1
- package/dist/cli/commands/commands.js.map +0 -1
- package/dist/cli/commands/config.js.map +0 -1
- package/dist/cli/commands/doctorShell.js.map +0 -1
- package/dist/cli/commands/mcpServer.js.map +0 -1
- package/dist/cli/commands/packs.js.map +0 -1
- package/dist/cli/commands/profiles.js.map +0 -1
- package/dist/cli/commands/recordTriggerEval.js.map +0 -1
- package/dist/cli/commands/rtkDetect.js.map +0 -1
- package/dist/cli/commands/settings.js.map +0 -1
- package/dist/cli/commands/uiServe.js.map +0 -1
- package/dist/cli/commands/versions.js.map +0 -1
- package/dist/cli/commands/workspaces.js.map +0 -1
- package/dist/cli/configRoot.js.map +0 -1
- package/dist/cli/discovery/loadManifest.js.map +0 -1
- package/dist/cli/firstRunNotice.js.map +0 -1
- package/dist/cli/help.js.map +0 -1
- package/dist/cli/initRouting.js.map +0 -1
- package/dist/cli/log/logger.js.map +0 -1
- package/dist/cli/main.js.map +0 -1
- package/dist/cli/mcp/content.js.map +0 -1
- package/dist/cli/mcp/dispatch.js.map +0 -1
- package/dist/cli/mcp/stdio.js.map +0 -1
- package/dist/cli/paths.js.map +0 -1
- package/dist/cli/python/knowledge_ingest.js.map +0 -1
- package/dist/cli/python/workspace_analytics.js.map +0 -1
- package/dist/cli/python/workspace_crypto.js.map +0 -1
- package/dist/cli/python/workspace_documents.js.map +0 -1
- package/dist/cli/python/workspace_drive.js.map +0 -1
- package/dist/cli/python/workspace_drive_health.js.map +0 -1
- package/dist/cli/python/workspace_explain.js.map +0 -1
- package/dist/cli/python/workspace_hosts.js.map +0 -1
- package/dist/cli/python/workspace_inbox.js.map +0 -1
- package/dist/cli/python/workspace_render.js.map +0 -1
- package/dist/cli/python/workspace_roles.js.map +0 -1
- package/dist/cli/python/workspace_secrets.js.map +0 -1
- package/dist/cli/python/workspace_sessions.js.map +0 -1
- package/dist/cli/python/workspace_skills.js.map +0 -1
- package/dist/cli/registry.js.map +0 -1
- package/dist/install/agentSwitchDetection.js.map +0 -1
- package/dist/install/agentSwitchProfile.js.map +0 -1
- package/dist/install/atomic.js.map +0 -1
- package/dist/install/claudePathsPlan.js.map +0 -1
- package/dist/install/conflict.js.map +0 -1
- package/dist/install/detect.js.map +0 -1
- package/dist/install/emit_host_rules_cli.js.map +0 -1
- package/dist/install/globalRuleLayers.js.map +0 -1
- package/dist/install/hostLayerFingerprint.js.map +0 -1
- package/dist/install/partitionEligibility.js.map +0 -1
- package/dist/install/paths.js.map +0 -1
- package/dist/install/plan.js.map +0 -1
- package/dist/install/preflight.js.map +0 -1
- package/dist/install/rtkDetection.js.map +0 -1
- package/dist/install/ruleInScope.js.map +0 -1
- package/dist/install/ruleLayerPartition.js.map +0 -1
- package/dist/install/rule_scope.js.map +0 -1
- package/dist/install/rule_scope_cli.js.map +0 -1
- package/dist/install/selectedTools.js.map +0 -1
- package/dist/install/toolDetection.js.map +0 -1
- package/dist/install/txlog.js.map +0 -1
- package/dist/install/types.js.map +0 -1
- package/dist/install/wizard-plan.js.map +0 -1
- package/dist/install/wizardDismissals.js.map +0 -1
- package/dist/scripts/_lib/agent_settings.js.map +0 -1
- package/dist/scripts/_lib/agent_src.js.map +0 -1
- package/dist/scripts/_lib/claude_builtin_names.js.map +0 -1
- package/dist/scripts/_lib/claude_plugin.js.map +0 -1
- package/dist/scripts/_lib/claude_settings_hooks.js.map +0 -1
- package/dist/scripts/_lib/compile_time_toggles.js.map +0 -1
- package/dist/scripts/_lib/environment_detector.js.map +0 -1
- package/dist/scripts/_lib/host_launch.js.map +0 -1
- package/dist/scripts/_lib/install_layout.js.map +0 -1
- package/dist/scripts/_lib/installed_lock.js.map +0 -1
- package/dist/scripts/_lib/model_tier.js.map +0 -1
- package/dist/scripts/_lib/prune_empty_dirs.js.map +0 -1
- package/dist/scripts/_lib/scoped_projection.js.map +0 -1
- package/dist/scripts/_lib/script_output.js.map +0 -1
- package/dist/scripts/_lib/spawn_env.js.map +0 -1
- package/dist/scripts/_lib/surface_tiers.js.map +0 -1
- package/dist/scripts/_lib/token_count.js.map +0 -1
- package/dist/scripts/_lib/trigger_eval_floors.js.map +0 -1
- package/dist/scripts/_lib/user_global_paths.js.map +0 -1
- package/dist/scripts/ai_council/modes.js.map +0 -1
- package/dist/scripts/ai_council/transport_resolver.js.map +0 -1
- package/dist/scripts/condense.js.map +0 -1
- package/dist/scripts/project_thin_rules.js.map +0 -1
- package/dist/server/app.js.map +0 -1
- package/dist/server/io/atomicMultiWrite.js.map +0 -1
- package/dist/server/io/atomicWrite.js.map +0 -1
- package/dist/server/io/sharedWriteCheck.js.map +0 -1
- package/dist/server/io/substituteTemplate.js.map +0 -1
- package/dist/server/io/yamlIO.js.map +0 -1
- package/dist/server/nicknameResolver.js.map +0 -1
- package/dist/server/port.js.map +0 -1
- package/dist/server/routes/discovery.js.map +0 -1
- package/dist/server/routes/install.js.map +0 -1
- package/dist/server/routes/ping.js.map +0 -1
- package/dist/server/routes/schema.js.map +0 -1
- package/dist/server/routes/settings.js.map +0 -1
- package/dist/server/routes/settingsChanges.js.map +0 -1
- package/dist/server/routes/userMd.js.map +0 -1
- package/dist/server/routes/wizard.js.map +0 -1
- package/dist/server/routes/workspace.js.map +0 -1
- package/dist/server/schemas/settings.js.map +0 -1
- package/dist/server/serverInfo.js.map +0 -1
- package/dist/server/token.js.map +0 -1
- package/dist/server/writeRoot.js.map +0 -1
- package/dist/shared/capabilities.js.map +0 -1
- package/dist/shared/interactiveContext.js.map +0 -1
- package/dist/shared/nicknamePrefill.js.map +0 -1
- package/dist/shared/settingsAsks.js.map +0 -1
- package/dist/shared/settingsCarveOut.js.map +0 -1
- package/dist/shared/settingsClasses.js.map +0 -1
- package/dist/shared/settingsConsent.js.map +0 -1
- package/dist/shared/settingsSurface.js.map +0 -1
- package/dist/shared/userMd/formAdapter.js.map +0 -1
- package/dist/shared/userMd/schema.js.map +0 -1
- package/dist/shared/userMd/utils.js.map +0 -1
- package/dist/ui/assets/index-Cxgy63kz.js.map +0 -1
- package/src/scripts/_lib/adr_frontmatter.test.ts +0 -365
- package/src/scripts/_lib/adversarial_council_gate.test.ts +0 -112
- package/src/scripts/_lib/adversarial_reconcile.test.ts +0 -197
- package/src/scripts/_lib/auto_dispatch.corpus.test.ts +0 -150
- package/src/scripts/_lib/secret_detector.test.ts +0 -108
- package/src/scripts/_lib/secret_detector_adversarial.test.ts +0 -116
- package/src/scripts/_lib/untrusted_content.test.ts +0 -175
- package/src/scripts/check_secret_leak.test.ts +0 -90
- package/src/scripts/design_slop_rules.test.ts +0 -239
- package/src/scripts/self_review_gate.test.ts +0 -296
- package/src/shared/capabilities.test.ts +0 -43
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
{
|
|
2
|
+
"_comment": "Assurance capability registry — the ONE canonical answer to 'which assurance capability does which surface own, and what is its state'. Phase 0.1 / 0.2 / 0.3 of road-to-agentic-engineering-assurance, and the artefact its blocker `sibling-roadmap-dispositions` resolves against. THIS IS NOT A SECOND GRADER. Exactly one grader exists in this tree — src/scripts/grade_target_readiness.ts — and every capability whose state can be read off a target repository declares the dimension id of that grader which produces it, in `projection`. A capability with `projection: null` is one no shipped probe reads; its state is `unknown` or it is a process obligation owned by a skill, and either way nothing here grades it. TWO AXES, DECLARED PER ENTRY, because conflating them was a real defect in the umbrella roadmap's own premise: `axis: target` is a property of the user's repository that AC is installed into, which is what grade_target_readiness measures; `axis: self` is a property of THIS package's own tests and reviews, which is what the three sibling roadmaps measured. The umbrella's Phase 4 asked to 'consume the sibling dispositions' for capabilities it had also listed as target-repository capabilities — those are different questions with different answers, so the axis is a required field rather than a note. STATE VOCABULARY is exactly four values and is closed: available | missing | degraded | unknown. `unknown` means nobody measured; `missing` means measured absent; `degraded` means present with a named limitation that is recorded in `limitations`. There is no fifth state and adding one is a contract change, not an entry edit.",
|
|
3
|
+
"schema_version": 1,
|
|
4
|
+
"owner": "maintainer",
|
|
5
|
+
"review_by": "2027-08-23",
|
|
6
|
+
"registered_at": "2026-08-23",
|
|
7
|
+
"grader": {
|
|
8
|
+
"path": "src/scripts/grade_target_readiness.ts",
|
|
9
|
+
"dimensions": 10,
|
|
10
|
+
"knockouts": ["test-presence", "static-analysis", "security-supply-chain", "ci-enforcement"],
|
|
11
|
+
"note": "Grades 0 Absent / 1 Present / 2 Enforced-in-CI / 3 Independent-and-diff-scoped, verdict `min` over the four knockouts, printed as `L<n> — bound by <dimension>`. Emits no aggregate figure — a test greps its own output for `%` and `/100`. `null` is 'this tool cannot tell' and is NOT a zero; on a knockout it binds at L0 with its reason printed."
|
|
12
|
+
},
|
|
13
|
+
"state_vocabulary": ["available", "missing", "degraded", "unknown"],
|
|
14
|
+
"capabilities": {
|
|
15
|
+
"unit-test": {
|
|
16
|
+
"axis": "target",
|
|
17
|
+
"owner_surface": "src/scripts/grade_target_readiness.ts",
|
|
18
|
+
"projection": "test-presence",
|
|
19
|
+
"state": "available",
|
|
20
|
+
"rationale": "A test-runner config (vitest/jest/phpunit/pest/pytest) is probed and the 1 → 2 distinction is whether CI blocks on it.",
|
|
21
|
+
"evidence": "tests/scripts/grade_target_readiness.test.ts — presence asserted in tests/fixtures/target-repos/full, absence in ci-absent",
|
|
22
|
+
"revisit_if": "the probe stops distinguishing a present runner from an absent one on the committed fixtures"
|
|
23
|
+
},
|
|
24
|
+
"integration-test": {
|
|
25
|
+
"axis": "target",
|
|
26
|
+
"owner_surface": "src/scripts/grade_target_readiness.ts",
|
|
27
|
+
"projection": "test-presence",
|
|
28
|
+
"state": "unknown",
|
|
29
|
+
"rationale": "No shipped probe separates integration tests from unit tests; both collapse into the test-presence dimension. Recorded as unknown rather than folded into unit-test, because 'we cannot tell them apart' is not 'they are both present'.",
|
|
30
|
+
"evidence": "src/scripts/grade_target_readiness.ts — the test-presence probe reads runner configs only; no directory or marker convention distinguishes the two",
|
|
31
|
+
"revisit_if": "a probe lands that reads a test-suite split (a runner project/suite config, or a conventional directory) on the committed fixtures"
|
|
32
|
+
},
|
|
33
|
+
"e2e-test": {
|
|
34
|
+
"axis": "target",
|
|
35
|
+
"owner_surface": "none",
|
|
36
|
+
"projection": null,
|
|
37
|
+
"state": "unknown",
|
|
38
|
+
"rationale": "No probe exists. `playwright` and `cypress` return zero occurrences in the grader.",
|
|
39
|
+
"evidence": "grep -oiE 'playwright|cypress' src/scripts/grade_target_readiness.ts → no match, 2026-08-23",
|
|
40
|
+
"revisit_if": "an e2e probe ships with fixture coverage for presence AND absence"
|
|
41
|
+
},
|
|
42
|
+
"behavior-spec": {
|
|
43
|
+
"axis": "target",
|
|
44
|
+
"owner_surface": "src/scripts/grade_target_readiness.ts",
|
|
45
|
+
"projection": "behaviour-contract",
|
|
46
|
+
"state": "available",
|
|
47
|
+
"rationale": "AGENTS.md / openapi.yaml / CONTRACT.md presence is probed as the repository's declared behavioural contract.",
|
|
48
|
+
"evidence": "tests/scripts/grade_target_readiness.test.ts — graded > 0 in the full fixture, 0 in the python fixture",
|
|
49
|
+
"revisit_if": "the contract probe is widened to a form whose absence the fixtures no longer distinguish"
|
|
50
|
+
},
|
|
51
|
+
"test-red-evidence": {
|
|
52
|
+
"axis": "self",
|
|
53
|
+
"owner_surface": "src/skills/test-driven-development/SKILL.md",
|
|
54
|
+
"projection": null,
|
|
55
|
+
"state": "available",
|
|
56
|
+
"rationale": "A process obligation, not a repository artefact: an observed failing test is a fact about a run, and no repository scan can recover it. Owned by the TDD skill's RED → GREEN → REFACTOR cycle, which this roadmap explicitly does not duplicate.",
|
|
57
|
+
"evidence": "src/skills/test-driven-development/SKILL.md:140 — 'Each case from the list then gets its own RED → GREEN cycle'",
|
|
58
|
+
"revisit_if": "a durable RED-run identifier is emitted somewhere a later reader can check, at which point this becomes projectable"
|
|
59
|
+
},
|
|
60
|
+
"mutation-sensitivity": {
|
|
61
|
+
"axis": "target",
|
|
62
|
+
"owner_surface": "src/scripts/grade_target_readiness.ts",
|
|
63
|
+
"projection": "test-strength",
|
|
64
|
+
"state": "degraded",
|
|
65
|
+
"limitations": [
|
|
66
|
+
"detection only — the grader reads stryker/infection/mutmut config presence and never runs a mutation pass",
|
|
67
|
+
"no universal min-MSI constant exists here and none may be added (AC-8)",
|
|
68
|
+
"a tool-assisted rig for THIS package was refused on measured grounds by the sibling roadmap"
|
|
69
|
+
],
|
|
70
|
+
"rationale": "Config presence is detected; sensitivity is never measured by this tree. For AC's own suite the manual control-inversion probe in testing-anti-patterns is the substitute, and it is a named substitute rather than a silent one.",
|
|
71
|
+
"evidence": "src/skills/testing-anti-patterns/SKILL.md:185 — 'No mutation-testing rig required: comment the control out, run that one spec, put it back.' · agents/roadmaps/archive/road-to-test-independence-and-mutation-evidence.md — rig REFUSED (measured), 10 hand probes in minutes",
|
|
72
|
+
"revisit_if": "a mutation adapter ships that runs a changed-surface pass and reports survivors and timeouts separately"
|
|
73
|
+
},
|
|
74
|
+
"property-test": {
|
|
75
|
+
"axis": "target",
|
|
76
|
+
"owner_surface": "src/scripts/grade_target_readiness.ts",
|
|
77
|
+
"projection": "test-strength",
|
|
78
|
+
"state": "available",
|
|
79
|
+
"rationale": "fast-check and Hypothesis are probed as property-based libraries.",
|
|
80
|
+
"evidence": "src/scripts/grade_target_readiness.ts — 'fast-check' and 'hypothesis' tokens present; asserted > 0 in the full fixture",
|
|
81
|
+
"revisit_if": "the probe stops distinguishing a present property library from an absent one"
|
|
82
|
+
},
|
|
83
|
+
"static-analysis": {
|
|
84
|
+
"axis": "target",
|
|
85
|
+
"owner_surface": "src/scripts/grade_target_readiness.ts",
|
|
86
|
+
"projection": "static-analysis",
|
|
87
|
+
"state": "degraded",
|
|
88
|
+
"limitations": [
|
|
89
|
+
"PHP and JS/TS only — on a Python-primary target the dimension is `not detectable`, never 0, and binds at L0 because it is a knockout",
|
|
90
|
+
"quality-tools ships no Python mode body"
|
|
91
|
+
],
|
|
92
|
+
"rationale": "The limitation is recorded rather than rounded up: a 0 would claim the target lacks static analysis, and a Python target may well run mypy while the tool cannot tell.",
|
|
93
|
+
"evidence": "src/skills/quality-tools/SKILL.md:33-36 — PHP and JS/TS mode rows only; grep -ci python → 0 · tests/scripts/grade_target_readiness.test.ts:118-119 — toBeNull() with a paired not.toBe(0)",
|
|
94
|
+
"revisit_if": "a Python mode body lands in quality-tools/references/ and the grader probes it"
|
|
95
|
+
},
|
|
96
|
+
"type-check": {
|
|
97
|
+
"axis": "target",
|
|
98
|
+
"owner_surface": "src/scripts/grade_target_readiness.ts",
|
|
99
|
+
"projection": "static-analysis",
|
|
100
|
+
"state": "degraded",
|
|
101
|
+
"limitations": [
|
|
102
|
+
"not separable from static-analysis — tsconfig.json, phpstan.neon and psalm.xml all feed one dimension",
|
|
103
|
+
"inherits the Python not-detectable limitation"
|
|
104
|
+
],
|
|
105
|
+
"rationale": "Folded into static-analysis by the shipped grader. Recorded as its own capability with a shared projection rather than deleted, because the policy vocabulary distinguishes them even though the probe does not.",
|
|
106
|
+
"evidence": "src/scripts/grade_target_readiness.ts — tsconfig / phpstan / psalm tokens all under the static-analysis dimension",
|
|
107
|
+
"revisit_if": "a probe separates type checking from lint/static analysis on the committed fixtures"
|
|
108
|
+
},
|
|
109
|
+
"architecture-constraint": {
|
|
110
|
+
"axis": "target",
|
|
111
|
+
"owner_surface": "src/scripts/grade_target_readiness.ts",
|
|
112
|
+
"projection": "architecture-gates",
|
|
113
|
+
"state": "available",
|
|
114
|
+
"rationale": ".dependency-cruiser.* and deptrac.yaml are probed; non-knockout.",
|
|
115
|
+
"evidence": "src/scripts/grade_target_readiness.ts — 'dependency-cruiser' and 'deptrac' tokens; asserted > 0 in the full fixture and 0 in python",
|
|
116
|
+
"revisit_if": "the probe stops distinguishing presence from absence on the fixtures"
|
|
117
|
+
},
|
|
118
|
+
"dependency-audit": {
|
|
119
|
+
"axis": "target",
|
|
120
|
+
"owner_surface": "src/scripts/grade_target_readiness.ts",
|
|
121
|
+
"projection": "security-supply-chain",
|
|
122
|
+
"state": "available",
|
|
123
|
+
"rationale": "Lockfile presence plus a blocking audit step in CI; the 1 → 2 distinction is whether the audit job can fail the build.",
|
|
124
|
+
"evidence": "tests/scripts/grade_target_readiness.test.ts — the full fixture reports 'lockfile; SAST config; audit runs in CI' at grade 2, ci-absent reports 'no blocking audit step' at grade 1",
|
|
125
|
+
"revisit_if": "the CI-blocking heuristic is replaced by per-job YAML attribution and the coarse reading changes a fixture grade"
|
|
126
|
+
},
|
|
127
|
+
"secret-scan": {
|
|
128
|
+
"axis": "target",
|
|
129
|
+
"owner_surface": "none",
|
|
130
|
+
"projection": null,
|
|
131
|
+
"state": "unknown",
|
|
132
|
+
"rationale": "No probe exists. gitleaks, trufflehog and detect-secrets return zero occurrences in the grader. Distinct from this package's own secret hygiene, which is a different axis and separately owned.",
|
|
133
|
+
"evidence": "grep -oiE 'gitleaks|trufflehog|detect-secrets' src/scripts/grade_target_readiness.ts → no match, 2026-08-23",
|
|
134
|
+
"revisit_if": "a secret-scan probe ships with fixture coverage for presence AND absence"
|
|
135
|
+
},
|
|
136
|
+
"security-scan": {
|
|
137
|
+
"axis": "target",
|
|
138
|
+
"owner_surface": "src/scripts/grade_target_readiness.ts",
|
|
139
|
+
"projection": "security-supply-chain",
|
|
140
|
+
"state": "available",
|
|
141
|
+
"rationale": "Semgrep and bandit configs are probed under the security-supply-chain knockout.",
|
|
142
|
+
"evidence": "src/scripts/grade_target_readiness.ts — 'semgrep' and 'bandit' tokens; the python fixture reports 'no SAST config'",
|
|
143
|
+
"revisit_if": "the SAST probe stops distinguishing presence from absence on the fixtures"
|
|
144
|
+
},
|
|
145
|
+
"runtime-probe": {
|
|
146
|
+
"axis": "target",
|
|
147
|
+
"owner_surface": "agents/roadmaps/stubs/road-to-target-project-bootstrap-enforce.md",
|
|
148
|
+
"projection": "runtime-verification",
|
|
149
|
+
"state": "unknown",
|
|
150
|
+
"rationale": "Out of scope by design, and the grader says so in its own output rather than grading a 0. Cut with a stated reason by the sibling roadmap: runtime verification needs a deploy platform this package does not own.",
|
|
151
|
+
"evidence": "src/scripts/grade_target_readiness.ts:270 — notDetectable: 'needs a deploy platform this tool does not own' · agents/roadmaps/archive/road-to-target-project-assurance-readiness.md — 'Runtime verification (canary/flags/rollback) | Needs a deploy platform AC does not own; stubbed, not planned.'",
|
|
152
|
+
"revisit_if": "this package gains a deploy or runtime surface it owns, at which point the dimension stops being not-detectable"
|
|
153
|
+
},
|
|
154
|
+
"visual-regression": {
|
|
155
|
+
"axis": "target",
|
|
156
|
+
"owner_surface": "none",
|
|
157
|
+
"projection": null,
|
|
158
|
+
"state": "unknown",
|
|
159
|
+
"rationale": "No probe exists. percy and chromatic return zero occurrences in the grader.",
|
|
160
|
+
"evidence": "grep -oiE 'percy|chromatic' src/scripts/grade_target_readiness.ts → no match, 2026-08-23",
|
|
161
|
+
"revisit_if": "a visual-regression probe ships with fixture coverage for presence AND absence"
|
|
162
|
+
},
|
|
163
|
+
"independent-test-author": {
|
|
164
|
+
"axis": "self",
|
|
165
|
+
"owner_surface": "agents/roadmaps/archive/road-to-test-independence-and-mutation-evidence.md",
|
|
166
|
+
"projection": null,
|
|
167
|
+
"state": "unknown",
|
|
168
|
+
"rationale": "AI council 2026-08-23, 2/2 convergent, pick (1a). The sibling's pre-registered outcome is `unmeasurable-here` — the third pre-registered state, explicitly NOT a null and NOT a refutation: the measurement did not run because the run lacked a subagent dispatch primitive. `unknown` is exactly 'nobody measured' in this vocabulary. It must never be read back as evidence against spec-first authorship, and policy may not select it until the measurement runs.",
|
|
169
|
+
"evidence": "agents/evidence/analysis/test-independence-unmeasurable.md · agents/roadmaps/archive/road-to-test-independence-and-mutation-evidence.md — the 'Sibling disposition' table written for this blocker to consume",
|
|
170
|
+
"shipped_mechanism": "a `test_authorship` envelope field, default `unknown`",
|
|
171
|
+
"revisit_if": "a subagent dispatch primitive ships AND the sibling's pre-registered corpus, grader and threshold are re-run — the pre-registration fixed them in advance so a later run re-runs rather than redesigns"
|
|
172
|
+
},
|
|
173
|
+
"independent-review": {
|
|
174
|
+
"axis": "self",
|
|
175
|
+
"owner_surface": "agents/roadmaps/archive/road-to-review-independence.md",
|
|
176
|
+
"projection": null,
|
|
177
|
+
"state": "degraded",
|
|
178
|
+
"limitations": [
|
|
179
|
+
"single-member: one reviewer, one model family",
|
|
180
|
+
"derived independence pair is `provisional` / `single-pass`",
|
|
181
|
+
"src/scripts/self_review_gate.ts:471 hardcodes independenceFields(['anthropic'])",
|
|
182
|
+
"check_review_schema reports `scanned: 1` in this repository today — a corpus of one, which cannot be distinguished from a conforming corpus"
|
|
183
|
+
],
|
|
184
|
+
"rationale": "AI council 2026-08-23, 2/2 convergent, pick (2b). The fresh-context dispatcher shipped and routes the default review path, so the capability is real; the family axis one member cannot supply is a named limitation, so it is degraded rather than available. Recording it degraded is what keeps P8's floor checkable: a same-context review is never presentable as an independent one.",
|
|
185
|
+
"evidence": "src/scripts/dispatch_r2_reviewer.ts — emits independence: single-member / fresh · agents/roadmaps/archive/road-to-review-independence.md — blocker second-ci-provider-key resolved option (b)",
|
|
186
|
+
"revisit_if": "self_review_gate.ts stops hardcoding a single provider AND either multi-family routing is measured or single-family parity is measured"
|
|
187
|
+
},
|
|
188
|
+
"requirement-trace": {
|
|
189
|
+
"axis": "self",
|
|
190
|
+
"owner_surface": "src/scripts/check_requirements_trace.ts",
|
|
191
|
+
"projection": null,
|
|
192
|
+
"state": "degraded",
|
|
193
|
+
"limitations": [
|
|
194
|
+
"adoption is 1 of 25 active roadmaps, and the single declarer is the mechanism's own roadmap",
|
|
195
|
+
"enforcement is parked under two fired falsifiers",
|
|
196
|
+
"demonstrated value is not evaluable — no documented sample exists"
|
|
197
|
+
],
|
|
198
|
+
"falsifiers": {
|
|
199
|
+
"no_opportunity": "fired",
|
|
200
|
+
"no_adoption": "fired",
|
|
201
|
+
"poor_resolution": "not_fired",
|
|
202
|
+
"no_demonstrated_value": "not_evaluable"
|
|
203
|
+
},
|
|
204
|
+
"rationale": "AI council 2026-08-23, 2/2 convergent, pick (3b). The schema ships and resolves deterministically, so the mechanism works; but two of four pre-registered falsifiers have FIRED and enforcement is parked under them, so `available` would launder a parked outcome into a positive one — which is precisely the failure the blocker's `If you do nothing` names. A traceability capability that cannot demonstrate value over the corpus it was built to serve is degraded in delivered capability even when its code is defect-free.",
|
|
205
|
+
"evidence": "agents/roadmaps/archive/road-to-requirements-traceability-minimal.md — Phase 2 disposition, live reading 3 rows / 3 linked / 0 unlinked / 0 unresolved over 25 active roadmaps with 1 declaring · src/config/requirements-trace-budget.json — shrink-only ratchet at all-zero",
|
|
206
|
+
"revisit_if": "adoption reaches >= 3 eligible active roadmaps, OR >= 1 non-maintainer-prompted roadmap adopts the fields, OR the `no_demonstrated_value` falsifier transitions from not_evaluable to a measured state"
|
|
207
|
+
},
|
|
208
|
+
"evidence-binding": {
|
|
209
|
+
"axis": "both",
|
|
210
|
+
"owner_surface": "agents/roadmaps/stubs/road-to-target-project-evidence-contract.md",
|
|
211
|
+
"projection": "evidence-traceability",
|
|
212
|
+
"state": "degraded",
|
|
213
|
+
"limitations": [
|
|
214
|
+
"per-dimension evidence strings exist on the target axis and are now asserted, but there is no aggregate per-change evidence record",
|
|
215
|
+
"verify-completion-evidence produces prose — json, schema and machine return 0 occurrences in that skill",
|
|
216
|
+
"the aggregate schema is transferred, not built"
|
|
217
|
+
],
|
|
218
|
+
"rationale": "The target axis binds every graded dimension to an evidence string, and that invariant is now pinned by a spec rather than merely true. The aggregate per-change record the umbrella's Phase 4.5 and Phase 6 describe is a transferred successor, so the capability is partially present and its gap is named.",
|
|
219
|
+
"evidence": "tests/scripts/grade_target_readiness.test.ts — the '1.3 evidence binding' block; sabotage-probed both ways · src/skills/verify-completion-evidence/SKILL.md — 0 occurrences of json/schema/machine",
|
|
220
|
+
"revisit_if": "the evidence-contract stub is promoted and an aggregate per-change record ships"
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
{
|
|
2
|
+
"_comment": "PRE-REGISTRATION (resolution of `blocker: assurance-enforcement-thresholds` on agents/roadmaps/road-to-agentic-engineering-assurance.md). This file commits to a CLOSED four-dimension measurement framework and establishes that no new blocking assurance policy may be adopted while its applicable thresholds are null. The `registered_at` date is the pre-registration CUTOFF: any blocking assurance policy proposed after it is governed by these thresholds even while they remain null, and may not adopt blocking enforcement until the applicable ones are set. Each threshold is explicitly `null` — not absent — with a `set_when` clause naming the specific measurement run that will produce it, so 'committed' means 'present in a falsifiable state' rather than 'populated with a number'. That distinction is what resolves the contradiction in the blocker's own text, which asked in one line for 'a number and the measurement that produced it' and five lines later said 'the numbers stay unset until the corpus exists'. NO NUMBER IN THIS FILE WAS INVENTED. No benchmark corpus exists in this tree, so no measurement could have produced one, and a provisional number in a src/config/ file is read by later readers as derived — which is the failure this repository treats as worse than an honest gap. An enforcement gate is PROMISED, NOT SHIPPED: committing untested CI automation with nothing to test it against is how an argument-parser defect is discovered on the critical path, and there is no proposed blocking assurance policy in the tree today for it to run against. It is implemented when the first policy proposal arrives or Phase 8.5 begins, whichever comes first. The dimension set is closed: a fifth dimension requires schema_version 2 and re-registration. Decided by AI council 2026-08-23, 2/2 quorum (anthropic/claude-sonnet-4-5 + openai/gpt-4o), convergent on option (a). The convergence is summarised here rather than linked: both members picked (a), both rejected provisional numbers as 'dressed as derivation', and the two clauses that make the four nulls safe — dimension_applicability keyed to observable policy characteristics, and the safety-floor exemption — came from the final round rather than from the blocker's own text.",
|
|
3
|
+
"schema_version": 1,
|
|
4
|
+
"owner": "maintainer",
|
|
5
|
+
"review_by": "2027-08-23",
|
|
6
|
+
"registered_at": "2026-08-23",
|
|
7
|
+
"review_by_note": "A calendar date, because every other budget config in src/config/ carries one and the gates read that shape. The council's preferred form — '90 days after the frozen benchmark corpus commit, or 2027-12-31, whichever is earlier' — is not a date and would not parse; the corpus-indexed condition it expresses is carried in `revisit_if` instead, which is where the council itself also put it.",
|
|
8
|
+
"threshold_setting_procedure": "A threshold may be set only after the measurement named in its `set_when` clause completes. If set from empirical data, that dimension's `_comment` must cite the percentile or delta and the run that produced it (e.g. 'P95 from ablation run 2026-04-12'). If set as a safety floor independent of any empirical distribution (e.g. false_verified_rate 0.0 for a zero-tolerance property), the `_comment` must state 'safety floor' and name the invariant (e.g. 'no credential in a commit message may pass verification'). A threshold citing neither an empirical derivation nor a named safety invariant is rejected on review. This specifies what must be true of a number, not who chairs the meeting that sets it: the blocker's `owner: maintainer` field assigns the VALUES to the maintainer, not the governance process.",
|
|
9
|
+
"dimension_applicability": {
|
|
10
|
+
"_comment": "Dimensions govern a policy by its OBSERVABLE characteristics, never by what its author claims about it. Without this section the four nulls together would form a universal 'no blocking policy may be adopted' constant — functionally a universal minimum threshold of infinity, which is exactly the vanity constant AC-8 forbids under another name. With it, a policy that asserts no empirical claim and no safety property is ungoverned and may be adopted without waiting for an ablation.",
|
|
11
|
+
"false_verified_rate": "Governs any policy that gates `done` — a false green would let a defective change through.",
|
|
12
|
+
"defect_catch_uplift": "Governs any policy whose own documentation uses `catch`, `detect`, `find` or `prevent` in reference to a defect class.",
|
|
13
|
+
"cost_budget": "Governs any policy that adds a gate step or invokes an external service.",
|
|
14
|
+
"false_positive_burden": "Governs any policy that can return red on a change.",
|
|
15
|
+
"safety_floor_exemption": "A policy asserting a hard safety property (e.g. 'no AWS key in any commit') is governed by false_verified_rate but NOT by defect_catch_uplift: it claims a red line, not a higher catch rate. Such a policy's `_comment` must state 'safety floor' and name the invariant. This is the AC-11 escape hatch — a hard safety property may block without an empirical uplift claim."
|
|
16
|
+
},
|
|
17
|
+
"dimensions": {
|
|
18
|
+
"false_verified_rate": {
|
|
19
|
+
"description": "Proportion of changes the harness reports verified that contain a defect, or violate a safety property the policy is supposed to catch.",
|
|
20
|
+
"threshold": null,
|
|
21
|
+
"measurement": null,
|
|
22
|
+
"set_when": "A frozen benchmark corpus exists (Phase 8.1) AND the false-confidence metric is instrumented (Phase 8.2) AND an ablation comparing assurance-on against assurance-off has completed (Phase 8.4).",
|
|
23
|
+
"blocks_enforcement": true,
|
|
24
|
+
"unit": "proportion (0.0-1.0)",
|
|
25
|
+
"direction": "lower_is_better",
|
|
26
|
+
"_comment": null
|
|
27
|
+
},
|
|
28
|
+
"defect_catch_uplift": {
|
|
29
|
+
"description": "Incremental defects caught with the assurance mechanism active, minus the baseline without it.",
|
|
30
|
+
"threshold": null,
|
|
31
|
+
"measurement": null,
|
|
32
|
+
"set_when": "A frozen benchmark corpus exists (Phase 8.1) AND an ablation comparing assurance-on against assurance-off has completed (Phase 8.4). The measurement is the delta in defect-catch count between the two arms.",
|
|
33
|
+
"blocks_enforcement": true,
|
|
34
|
+
"unit": "count_delta (integer, may be negative)",
|
|
35
|
+
"direction": "higher_is_better",
|
|
36
|
+
"_comment": null
|
|
37
|
+
},
|
|
38
|
+
"cost_budget": {
|
|
39
|
+
"description": "Wall-clock time and token cost per gated change.",
|
|
40
|
+
"threshold": null,
|
|
41
|
+
"measurement": null,
|
|
42
|
+
"set_when": "A frozen benchmark corpus exists (Phase 8.1) AND a cost/latency measurement run has completed (Phase 8.3). Note: cost is measurable independently of ablation completion, so this threshold can be set before the other three.",
|
|
43
|
+
"blocks_enforcement": true,
|
|
44
|
+
"unit": "composite: {p50_seconds, p50_tokens, p95_seconds, p95_tokens}",
|
|
45
|
+
"direction": "lower_is_better",
|
|
46
|
+
"_comment": null
|
|
47
|
+
},
|
|
48
|
+
"false_positive_burden": {
|
|
49
|
+
"description": "Reds raised by the mechanism that a maintainer overrides as not-a-defect.",
|
|
50
|
+
"threshold": null,
|
|
51
|
+
"measurement": null,
|
|
52
|
+
"set_when": "A frozen benchmark corpus exists (Phase 8.1) AND an ablation has completed (Phase 8.4) AND human labelling of flagged changes as true- or false-positive is complete. That last input is NOT a named Phase 8 step and is the same class of unobtainable input as the sibling roadmap's `blocker: b-human-risk-corpus`.",
|
|
53
|
+
"blocks_enforcement": true,
|
|
54
|
+
"unit": "count_per_100_changes (float)",
|
|
55
|
+
"direction": "lower_is_better",
|
|
56
|
+
"_comment": null
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
"revisit_if": [
|
|
60
|
+
"Any dimension's threshold is still null 90 days after the frozen benchmark corpus is committed.",
|
|
61
|
+
"A proposed blocking policy's observable characteristics map to no dimension under `dimension_applicability`.",
|
|
62
|
+
"Empirical data shows the four-dimension set is incomplete — a failure mode orthogonal to all four emerges.",
|
|
63
|
+
"The promised enforcement gate is removed or bypassed without bumping schema_version and re-registering."
|
|
64
|
+
]
|
|
65
|
+
}
|
package/src/config/budgets.yml
CHANGED
|
@@ -4,6 +4,25 @@
|
|
|
4
4
|
# instead of hard-coding them (measure_augment_budget, and any future
|
|
5
5
|
# per-tool budget meter).
|
|
6
6
|
|
|
7
|
+
# ── Ownership ─────────────────────────────────────────────────────────────────
|
|
8
|
+
# Added 2026-08-24, road-to-standing-payload-truth `b-budgets-yml-outside-ownership`.
|
|
9
|
+
# This file was outside `lint_budget_ownership`'s corpus for its whole life,
|
|
10
|
+
# because that gate filtered on `.json`. A budget without an owner is a budget
|
|
11
|
+
# nobody has to defend, and this is the one that gates `standing_rule_delivery` —
|
|
12
|
+
# the larger of the two red payload numbers. It is now governed by an explicit
|
|
13
|
+
# single-file row in that gate's `GOVERNED_NON_JSON`, not by a widened glob.
|
|
14
|
+
#
|
|
15
|
+
# `review_by` IS DERIVED, AND NO CADENCE RULE IS DOCUMENTED — said plainly rather
|
|
16
|
+
# than presented as policy. `lint_budget_ownership` requires the field and defines
|
|
17
|
+
# no interval for it. Two conventions are observable in the sibling budgets:
|
|
18
|
+
# four files use 2026-11-10 (the preamble milestone) and seven use a ~1-year
|
|
19
|
+
# horizon, including this file's subject-nearest sibling
|
|
20
|
+
# `preamble-payload-budget.json`. Registered 2026-08-24 on that convention →
|
|
21
|
+
# 2027-08-24. If a cadence is ever written down and disagrees, this date is wrong
|
|
22
|
+
# and should move to the rule rather than the rule to the date.
|
|
23
|
+
owner: maintainer
|
|
24
|
+
review_by: '2027-08-24'
|
|
25
|
+
|
|
7
26
|
augment_workspace_guidelines:
|
|
8
27
|
# Verified platform maximum: 99,024 chars (re-measured 2026-07; the old
|
|
9
28
|
# 49,512 ceiling from the 2026-05-08 baseline is obsolete). We deliberately
|
|
@@ -101,6 +101,35 @@ pre_push_budget_seconds: 25
|
|
|
101
101
|
# resolver not a gate at all — a helper a workflow step calls to compute
|
|
102
102
|
# something (a diff base, a scope); it decides and blocks nothing
|
|
103
103
|
ci_only:
|
|
104
|
+
# road-to-target-project-assurance-readiness steps 0.3 and 3.1. Both run in the
|
|
105
|
+
# NIGHTLY risk-class-drift workflow, and neither belongs in a local gate chain:
|
|
106
|
+
# `measure_risk_class_drift` APPENDS to a ledger, so putting it in `task ci` would
|
|
107
|
+
# make every local run write a row and the drift series would measure how often
|
|
108
|
+
# contributors ran the gate rather than what the tree looks like. Its classifier
|
|
109
|
+
# self-test is the half that IS worth running locally, and it is reachable —
|
|
110
|
+
# `classify_change_risk --self-test` — but the workflow invokes it as a step of
|
|
111
|
+
# its own rather than through the aggregate, which is what this checker sees.
|
|
112
|
+
# road-to-npm-payload-reduction Phase 3.1. `report_pack_delta` measures the
|
|
113
|
+
# BRANCH-vs-BASE packed payload, which has no meaning without a pull request:
|
|
114
|
+
# locally `--base origin/main --head HEAD` on main reads +0.0 KB every time, and
|
|
115
|
+
# the step's own contract is to write nothing when the delta is zero. It also
|
|
116
|
+
# checks out BOTH refs into throwaway worktrees and packs each (~1 minute), so
|
|
117
|
+
# putting it in `task ci` would add a minute to every local run for a number
|
|
118
|
+
# that is structurally absent locally. It is a REPORT and cannot red the build
|
|
119
|
+
# (`continue-on-error: true`, and the script exits 0 whatever the number), so
|
|
120
|
+
# there is no failure a contributor could discover only after pushing — which is
|
|
121
|
+
# the exact harm this checker exists to prevent.
|
|
122
|
+
#
|
|
123
|
+
# Reachable on demand: `task report-pack-delta -- --base <ref> --head <ref>`.
|
|
124
|
+
- id: report_pack_delta
|
|
125
|
+
class: artifact
|
|
126
|
+
reason: "a pull-request-only delta report with no local meaning (base==head reads +0.0 KB and the step writes nothing); it packs two refs in throwaway worktrees at ~1 min, cannot red the build, and is reachable on demand via `task report-pack-delta`"
|
|
127
|
+
- id: classify_change_risk
|
|
128
|
+
class: benchmark
|
|
129
|
+
reason: "invoked as the nightly drift workflow's self-test step; the classifier itself gates nothing and its `--self-test` is runnable locally on demand (`./scripts-run src/scripts/classify_change_risk --self-test`)"
|
|
130
|
+
- id: measure_risk_class_drift
|
|
131
|
+
class: benchmark
|
|
132
|
+
reason: "appends one row per run to agents/evidence/risk-classifier-drift.jsonl — in a local chain it would make the drift series a count of local gate runs rather than a measurement of merged changes; the standing metric is nightly by design (step 3.1 forbids a per-change trigger)"
|
|
104
133
|
- id: check_release_surface_equality
|
|
105
134
|
class: release
|
|
106
135
|
reason: "shells out to `gh pr diff <n>` for a live release PR — there is no PR body to compare the CHANGELOG against on a local checkout"
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# Controlled prompt-pattern vocabulary for command `## Examples` Why lines.
|
|
2
|
+
#
|
|
3
|
+
# Read by `src/scripts/check_command_examples.ts` (sub-check c). A Why line on
|
|
4
|
+
# an example must cite exactly ONE id from `approved_patterns`.
|
|
5
|
+
#
|
|
6
|
+
# WHY A CONTROLLED VOCABULARY AND NOT FREE PROSE. A worked example teaches two
|
|
7
|
+
# things: what to type, and why that phrasing works. The second half is the part
|
|
8
|
+
# that transfers to a command the reader has not seen. Free prose lets every
|
|
9
|
+
# author invent their own account of it, and six accounts of the same pattern
|
|
10
|
+
# teach the pattern less well than one. The ids are deliberately few and
|
|
11
|
+
# deliberately about the SHAPE of the invocation, never about the command.
|
|
12
|
+
#
|
|
13
|
+
# FORWARD-ONLY, on the `command-verbs.yml` precedent (ADR-041): only commands
|
|
14
|
+
# added, or promoted into `visible` / `advanced`, since the frozen grandfather
|
|
15
|
+
# set in `check_command_examples.ts` are required to carry Why lines. The
|
|
16
|
+
# existing surface is grandfathered and melts down voluntarily.
|
|
17
|
+
#
|
|
18
|
+
# Adding an id here is a governance change: land it in its own PR with the
|
|
19
|
+
# reason the six below could not carry the case. Do NOT add an id to make one
|
|
20
|
+
# awkward example pass — rewrite the example to an existing pattern, or leave
|
|
21
|
+
# the Why line off and accept the gate's finding.
|
|
22
|
+
|
|
23
|
+
approved_patterns:
|
|
24
|
+
# Name the end state, not the sequence of steps to reach it. The agent picks
|
|
25
|
+
# the steps; a step list from the operator overconstrains it and goes stale.
|
|
26
|
+
- outcome-not-steps
|
|
27
|
+
|
|
28
|
+
# Build the verification into the ask, so the agent can tell green from done
|
|
29
|
+
# without a second turn.
|
|
30
|
+
- self-check-loop
|
|
31
|
+
|
|
32
|
+
# Point at a file, a ticket, a URL, a line range — a resolvable location
|
|
33
|
+
# beats a description of the thing.
|
|
34
|
+
- measurable-target
|
|
35
|
+
|
|
36
|
+
# Hand over the artifact itself rather than describing it: paste the log, the
|
|
37
|
+
# diff, the failing output.
|
|
38
|
+
- give-the-artifact
|
|
39
|
+
|
|
40
|
+
# Cite an existing convention, doc, or sibling implementation as the standard
|
|
41
|
+
# to match, instead of restating it inline.
|
|
42
|
+
- point-at-reference
|
|
43
|
+
|
|
44
|
+
# State the shape the answer must arrive in — a table, JSON, one sentence, a
|
|
45
|
+
# file path — when the shape is what makes it usable.
|
|
46
|
+
- say-the-format
|
|
47
|
+
|
|
48
|
+
# The two literals a Why line may use. Adopted verbatim from
|
|
49
|
+
# `lint_examples.ts` (`### Why it works` / `**Why it works:**`), the strings
|
|
50
|
+
# the demo linter already detects for the SAME purpose on a different
|
|
51
|
+
# population. Reusing the strings rather than the code keeps the two
|
|
52
|
+
# conventions textually aligned without coupling the gates — the demo linter's
|
|
53
|
+
# scope and observable behaviour are compatibility-pinned and stay untouched.
|
|
54
|
+
why_line_literals:
|
|
55
|
+
- '**Why it works:**'
|
|
56
|
+
- '### Why it works'
|
|
@@ -28,6 +28,8 @@
|
|
|
28
28
|
reason: scaffold template for ticket-bundle tickets (ADR-101); carries no runtime frontmatter — emit-tickets fills it in per ticket
|
|
29
29
|
- path: src/agent-src/templates/contexts.md
|
|
30
30
|
reason: scaffold index for project contexts/
|
|
31
|
+
- path: src/agent-src/templates/playbook.md
|
|
32
|
+
reason: scaffold for a Playbook context (ADR-244); its frontmatter is the PLAYBOOK'''s (task/scope/grade/invokes) and is shown in a fence, so the file itself carries none
|
|
31
33
|
- path: src/agent-src/templates/contexts/auth-model.md
|
|
32
34
|
reason: scaffold for project auth-model context
|
|
33
35
|
- path: src/agent-src/templates/contexts/data-sensitivity.md
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
"status": "armed-awaiting-projection: Phase 3.1-3.3 are data-window-gated (>= 2 weeks of rules_used); this criterion binds the moment a projection ships"
|
|
41
41
|
},
|
|
42
42
|
"ask_economy": {
|
|
43
|
-
"definition": "Rung-0.5 substitution and adoption (roadmap Phase 4.4): substitution = ask-routed lines / (ask-routed + rung-1 spawn lines); adoption = ask lines with dispatch_outcome DONE / all ask lines; escalation = the caller
|
|
43
|
+
"definition": "Rung-0.5 substitution and adoption (roadmap Phase 4.4): substitution = ask-routed lines / (ask-routed + rung-1 spawn lines); adoption = ask lines with dispatch_outcome DONE / all ask lines; escalation = the caller's follow-up SPAWN lines carrying route_taken=subagent + escalated=true + origin=dispatch-economy-2026 (the ask line itself cannot know it was insufficient).",
|
|
44
44
|
"source": "Audit-log orchestration lines with route_taken='ask' (written by src/scripts/ask_transport.ts, origin tag dispatch-economy-2026).",
|
|
45
45
|
"thresholds": {
|
|
46
46
|
"escalation_kill": 0.3,
|
|
@@ -53,7 +53,9 @@
|
|
|
53
53
|
"thresholds": {
|
|
54
54
|
"low_quota_signal": 0.2,
|
|
55
55
|
"_low_quota": "a sustained median quota below 0.2 over the review window is the cut-line evidence Phase 3.1 requires (>= 2 weeks of data) and the retriever gate's demand signal"
|
|
56
|
-
}
|
|
56
|
+
},
|
|
57
|
+
"classification": "pre-intervention-impossible",
|
|
58
|
+
"classification_note": "Classified 2026-08-23 by road-to-trigger-delivered-rule-bodies step 0.8, which requires exactly one of miswired / pre-intervention-impossible / stale before anything is changed. NOT miswired: the report path works and 755 orchestration lines in agents/runtime/state/audit/2026-08.jsonl carry both fields, null on every one, because orchestration_record.ts:146-147 reads them from --rules-carried / --rules-used CLI flags that no caller anywhere passes. NOT stale: the question it asks is exactly the one a delivery mode makes answerable. IMPOSSIBLE: `rules_used` is 'rules the worker actually applied/cited' (contexts/execution/orchestration-telemetry.md:68), a model self-report, and under an eager projection there is no runtime consumer of rule bodies to instrument -- nothing can distinguish a rule that was applied from one that was merely present. The metric is left registered rather than deleted so this reasoning stays attached to it, and it no longer gates anything: later/road-to-deferred-rule-retriever condition (c) now reads the trigger-MATCH rate (rules_matched / rules_carried, produced by src/scripts/model_rule_injection), which is an event the delivery concern performs rather than a claim the model makes. The match rate is explicitly NOT relabelled as usage: matched-and-delivered is not applied-and-followed, and calling it usage would make the retriever's own demand gate self-fulfilling. Evidence: agents/evidence/analysis/trigger-delivery-baseline.md section 7."
|
|
57
59
|
}
|
|
58
60
|
},
|
|
59
61
|
"honest_null_consequence": "If the re-measured floor on the post-9.29 tree is materially smaller than the cache-economy baseline (roadmap step 1.4), phases 3-5 of road-to-token-economy-dispatch downgrade to blockers citing the null, and the null is published in docs/benchmark.md. A metric nobody re-runs by review_by is treated as the latency file's fossilization failure: the report command below is the re-verification procedure.",
|
|
@@ -6,18 +6,23 @@
|
|
|
6
6
|
"owner": "maintainer",
|
|
7
7
|
"review_by": "2027-08-18",
|
|
8
8
|
"metric": {
|
|
9
|
-
"basis": "src/scripts/check_estate_count.ts. The live side uses collect() from update_roadmap_progress \u2014 the same parser the dashboard is generated from, imported rather than re-implemented. The floor side runs the SAME functions over a scratch copy of the base ref's agents/roadmaps/, materialised by _lib/base_tree.ts (git ls-tree + git cat-file --batch; `git archive` cannot be used here because .gitattributes carries `/agents export-ignore` and would yield an empty, silently-zero tree).",
|
|
9
|
+
"basis": "src/scripts/check_estate_count.ts. The live side uses collect() from update_roadmap_progress \u2014 the same parser the dashboard is generated from, imported rather than re-implemented. The floor side runs the SAME functions over a scratch copy of the base ref's agents/roadmaps/, materialised by _lib/base_tree.ts (git ls-tree + git cat-file --batch; `git archive` cannot be used here because .gitattributes carries `/agents export-ignore` and would yield an empty, silently-zero tree). SKILL METRICS (added 2026-08-24): _lib/skill_estate.ts walks src/skills/*/SKILL.md under the SAME root, so the floor side measures the base ref's own skill tree with the same function. That needs a SECOND materialised subtree \u2014 materialiseSubtree takes one prefix \u2014 and the two are independent on purpose: a base ref with no src/skills (an old tag, a shallow clone) drops the skill metrics and leaves the roadmap metrics ratcheting.",
|
|
10
10
|
"active_roadmaps": "non-draft roadmap candidates at the top level of agents/roadmaps/, as collect() counts them. This is exactly the number the dashboard header prints as 'N open roadmaps'.",
|
|
11
11
|
"later_roadmaps": "roadmap-shaped *.md files under agents/roadmaps/later/ \u2014 the same is_roadmap_candidate name filter the active side uses, so later/README.md is not counted. Counted from the filesystem because parked roadmaps sit outside collect()'s corpus by design; they are estate all the same, and a drawdown that moved everything into later/ and called the number down would be the burial T1's quality anchor exists to prevent.",
|
|
12
12
|
"open_blockers": "blockers whose Status does not start with `resolved`, summed over the active and later corpora.",
|
|
13
|
-
"floor": "the same three metrics measured at the base ref (origin/main, else the merge commit's first parent). No base ref resolves -> no floor -> the gate FAILS rather than skipping: a shrink-only gate with no floor passes every possible tree. `--base <ref>` is the explicit escape."
|
|
13
|
+
"floor": "the same three metrics measured at the base ref (origin/main, else the merge commit's first parent). No base ref resolves -> no floor -> the gate FAILS rather than skipping: a shrink-only gate with no floor passes every possible tree. `--base <ref>` is the explicit escape.",
|
|
14
|
+
"skill_count": "Maintained src/skills/*/SKILL.md files; `lifecycle: deprecated` EXCLUDED. The exclusion is load-bearing rather than tidy: with deprecated skills counted, deprecating one would create no headroom and the retirement mechanism would be unusable against its own gate. 0 skills carry it today, so the exclusion is a no-op now and a correctness property once a tranche lands. Measured 2026-08-24: 299. Reproduce with `find src/skills -name SKILL.md | wc -l` (299 including any deprecated) or `npx tsx -e \"import {measureSkillEstate} from './src/scripts/_lib/skill_estate.ts'; console.log(measureSkillEstate(process.cwd()))\"` for the split.",
|
|
15
|
+
"skill_description_tokens": "Exact-BPE tokens (js-tiktoken, cl100k_base, via _lib/token_count.ts gpt_tokens) across those skills' `description:` frontmatter fields ONLY \u2014 not bodies. Measured 2026-08-24: 11,461 over 299 skills (52,983 chars). A SECOND DIMENSION, not a companion figure: a count ratchet alone is gameable by merging four large skills into one file, which lowers the count while the description payload a host must carry stays put. AI council 2/2 (2026-08-24) asked for both in one gate over the roadmap's own recommendation of count-plus-informational-figure. UNRESOLVED rather than approximated: when the tokeniser does not resolve on either side the metric is dropped from the compare with a printed reason, because an exact reading against a proxy one differs by more than the growth this gate is trying to catch.",
|
|
16
|
+
"skill_metric_rejected_candidates": "Measured before choosing, not argued. (b) catalogue bytes via _lib/skill_catalogue.ts read 0 on a real checkout: readProjectedCatalogue walks .claude/skills, empty in any tree where `task generate-tools` cannot complete (it fails under projection.mode=scoped without the config package) \u2014 a ratchet whose reading depends on whether a generator ran reds for the environment. (d) host-listing slots are the host's decision, not the repository's: a measured install published its own budget event stating it had stripped every description and dropped 402 entries. Neither is reproducible from the repo, so neither can carry a floor."
|
|
14
17
|
},
|
|
15
18
|
"growth_allowances": {
|
|
16
19
|
"_comment": "An exact floor leaves no incidental headroom, so every legitimate increase needs a named path. Two are automatic because existing policy already sanctions the act; the third is the general authorisation.",
|
|
17
20
|
"active_roadmaps": "+1 per addition carrying `estate_offset_exempt: <reason>` in its own frontmatter (unchanged T3 key). Without this the sanctioned un-offsettable addition would fail the count half with no green path.",
|
|
18
21
|
"later_roadmaps": "+1 per roadmap moved from the active top level into later/ in the same change. Parking relocates estate rather than creating it. It does NOT cover a later/ file that appears from nowhere, and it is keyed on parking rather than on any offset so that an archive move cannot buy a new later/ file.",
|
|
19
22
|
"open_blockers": "none. Nothing in the policy sanctions a new blocker, so it takes the claim path or nothing.",
|
|
20
|
-
"claim": "`estate_growth_exempt: <reason>` added, in this change, to the frontmatter of any roadmap under agents/roadmaps/. Authorises growth in any metric, with the reason printed. Diff-scoped, so a claim left in a file authorises nothing later \u2014 the banking failure a stored baseline had. Deliberately unbounded, which a stored baseline could not afford: there the surplus of an over-raise was inherited by the next change, where nobody could act on it; here the next change's floor IS this change's measurement, so there is no surplus to inherit."
|
|
23
|
+
"claim": "`estate_growth_exempt: <reason>` added, in this change, to the frontmatter of any roadmap under agents/roadmaps/. Authorises growth in any metric, with the reason printed. Diff-scoped, so a claim left in a file authorises nothing later \u2014 the banking failure a stored baseline had. Deliberately unbounded, which a stored baseline could not afford: there the surplus of an over-raise was inherited by the next change, where nobody could act on it; here the next change's floor IS this change's measurement, so there is no surplus to inherit.",
|
|
24
|
+
"skill_count": "0 \u2014 no allowance, deliberately. The defect this metric addresses is a corpus that grew +8 in one release (290 at 14.0.0, 291 at 14.9.0 and 14.10.0, 299 at 14.11.0) with nothing objecting. An addition takes the estate_growth_exempt claim path \u2014 a recorded reason read from the diff \u2014 or it fails.",
|
|
25
|
+
"skill_description_tokens": "0 \u2014 same reasoning. An addition that grows the description payload without adding a file is the gaming path this dimension exists to close, and an allowance would reopen it."
|
|
21
26
|
},
|
|
22
27
|
"target": {
|
|
23
28
|
"_comment": "T1's proposed ceilings, kept as the destination. PROPOSALS, NOT REGISTERED: the roadmap says in as many words that both numbers and the window belong to the maintainer, and no date is pinned in this file. Nothing reads these values \u2014 `one_in_one_out.applies_above_active` is the only threshold the gate evaluates.",
|