@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
|
@@ -8,10 +8,62 @@ resolution, commit-step pre-scan, halt conditions, and archival check.
|
|
|
8
8
|
The three command files are thin wrappers that bind only the **scope
|
|
9
9
|
delta**.
|
|
10
10
|
|
|
11
|
-
**Size budget:** ≤
|
|
11
|
+
**Size budget:** ≤ 57,000 chars — restated from the original 4,000.
|
|
12
|
+
|
|
13
|
+
The old figure described nothing: the file measured 47,115 bytes against it, a
|
|
14
|
+
factor of 11.8, so it was a dead budget rather than a typo. Restated at the
|
|
15
|
+
measured size rather than split, because splitting a contract this load-bearing
|
|
16
|
+
into referenced fragments is a large change with its own risk, and the step that
|
|
17
|
+
found this asked for hygiene.
|
|
18
|
+
|
|
19
|
+
**Why it moved:** this file is not a page a reader skims but the canonical
|
|
20
|
+
autonomous-execution loop — roadmap discovery, cadence resolution, the step loop,
|
|
21
|
+
the flip-guard, the halt list, the terminal outcomes, and the archival check. The
|
|
22
|
+
original 4,000 was inherited from the sibling context docs (`≤ 3,000`, `≤ 6,000`)
|
|
23
|
+
without asking whether the same shape applied.
|
|
24
|
+
|
|
25
|
+
**Read it as a ratchet, not a target.** A budget that rises whenever the file
|
|
26
|
+
does is not a budget. It may fall; raising it again needs the same kind of note
|
|
27
|
+
as this one.
|
|
28
|
+
|
|
29
|
+
**Nothing enforces this line**, and saying so is the point: no gate reads it, so
|
|
30
|
+
it is a declaration a future edit can falsify exactly as the 4,000 was falsified.
|
|
31
|
+
A true declaration with a stated enforcement boundary is worth more than a false
|
|
32
|
+
one, and less than a check — the same `enforced_by: none` honesty the rules in
|
|
33
|
+
this tree state about their own obligations.
|
|
12
34
|
|
|
13
35
|
## 1. Resolve roadmap
|
|
14
36
|
|
|
37
|
+
### Context probe — unconditionally, before resolving the roadmap
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
agent-config roadmap:context --roadmap <slug> # slug omitted on a bare invocation
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
Run it **before resolving the roadmap**, on every invocation, and print its
|
|
44
|
+
report in the pre-run summary (§ 2). Unconditional is the whole point: the live
|
|
45
|
+
merge-state clause below fires only when a message would *describe* a roadmap
|
|
46
|
+
as in-flight or merged, so a run that never makes such a claim has never looked.
|
|
47
|
+
Measured on the population that motivated this: 4 of 24 active roadmaps were
|
|
48
|
+
already closed in an open PR, and 2 of 22 six days later — the same sample
|
|
49
|
+
halved inside a week, which is why the probe re-runs on a cadence (§ 5e) rather
|
|
50
|
+
than once at branch time.
|
|
51
|
+
|
|
52
|
+
The report carries open PRs with the files they change, remote branches carrying
|
|
53
|
+
a roadmap slug, live sessions on both axes, `agents/tmp/` note names, sibling
|
|
54
|
+
roadmaps on the same topic, and roadmap-to-PR file overlap. Two readings act:
|
|
55
|
+
|
|
56
|
+
- **The roadmap is closed in an open PR** → name the PR number and stop. This is
|
|
57
|
+
a **selection error**, not a halt: nothing on the halt list fired, the run
|
|
58
|
+
simply picked work that is already done. It does not touch the halt list and
|
|
59
|
+
it is not a `blocked` outcome.
|
|
60
|
+
- **The roadmap is partially covered by an open PR** → name the PR and continue,
|
|
61
|
+
on a branch cut from `origin/main`. Never rebase onto the foreign branch.
|
|
62
|
+
|
|
63
|
+
Same honesty boundary the probe states in its own header: **the probe is
|
|
64
|
+
deterministic once invoked, and the invocation is model-carried.** Nothing fires
|
|
65
|
+
it and nothing notices when it is skipped.
|
|
66
|
+
|
|
15
67
|
Search both locations:
|
|
16
68
|
|
|
17
69
|
- `agents/roadmaps/*.md` (project root)
|
|
@@ -417,6 +469,34 @@ of [`roadmap-progress-sync`](../../rules/roadmap-progress-sync.md))
|
|
|
417
469
|
forces an immediate regen regardless of cadence. The checkbox flip
|
|
418
470
|
itself is **never** batchable — only the subprocess.
|
|
419
471
|
|
|
472
|
+
### Context refresh — a comparison, not a third cadence key
|
|
473
|
+
|
|
474
|
+
There is **no `roadmap.context_refresh_cadence` setting**, deliberately. The
|
|
475
|
+
refresh trigger is derived:
|
|
476
|
+
|
|
477
|
+
```bash
|
|
478
|
+
agent-config roadmap:context --fingerprint # cheap: one rev-parse + one gh call
|
|
479
|
+
```
|
|
480
|
+
|
|
481
|
+
At every phase boundary (and at run end), take the fingerprint and compare it
|
|
482
|
+
with the one § 1's probe returned. **Differs → re-probe in full** and apply the
|
|
483
|
+
reaction table in § 5e. **Same → nothing moved; continue without paying for a
|
|
484
|
+
probe.** Cache the new value as the run's baseline either way.
|
|
485
|
+
|
|
486
|
+
The fingerprint covers `origin/main` **and the head SHA of every open PR**. The
|
|
487
|
+
second half is the case a `main`-only trigger misses: a peer pushing to their own
|
|
488
|
+
PR branch mid-run can add a file that now overlaps this run's owned paths while
|
|
489
|
+
`origin/main` has not moved at all.
|
|
490
|
+
|
|
491
|
+
Why a comparison and not a knob: `docs/contracts/settings-classes.md` classifies
|
|
492
|
+
a fixed-beat flag as `derivable` — "the mechanism itself can decide, from the
|
|
493
|
+
situation, better than a flag can" — behind a ratchet whose count may only fall.
|
|
494
|
+
A cadence enum was implemented, refused by `lint_settings_classes`, and replaced
|
|
495
|
+
by this; the full reasoning, the options rejected, and what the substitution costs
|
|
496
|
+
are in `agents/evidence/analysis/situational-awareness-cadence-key-decision.md`.
|
|
497
|
+
Turning the refresh off is a one-line revert of this subsection, which is the same
|
|
498
|
+
reversibility a `cadence: off` value would have bought.
|
|
499
|
+
|
|
420
500
|
## 5. Step loop
|
|
421
501
|
|
|
422
502
|
For each open step in the working set (scope-bound — see wrapper):
|
|
@@ -510,6 +590,26 @@ For each open step in the working set (scope-bound — see wrapper):
|
|
|
510
590
|
links the directory. Not a gate: the memo is what makes an
|
|
511
591
|
autonomous resolution reviewable after the fact, which is the
|
|
512
592
|
condition under which it is legitimate at all.
|
|
593
|
+
4b. **Stale-artefact check — a vanished file is never a closed step.**
|
|
594
|
+
|
|
595
|
+
Before flipping anything, check the step's own cited paths against the tree:
|
|
596
|
+
|
|
597
|
+
```
|
|
598
|
+
NEVER MARK STALE WORK COMPLETE JUST BECAUSE IT DISAPPEARED.
|
|
599
|
+
ABSENCE OF THE FILE IS ABSENCE OF EVIDENCE, NOT EVIDENCE OF COMPLETION.
|
|
600
|
+
```
|
|
601
|
+
|
|
602
|
+
Any cited path missing → the step resolves to **`unverified`**: surface it in
|
|
603
|
+
the run report, name the missing path, and flip **no** checkbox. Not `[x]`
|
|
604
|
+
(the evidence cannot be checked), not `[-]` (nobody decided to skip it), not
|
|
605
|
+
`[~]` (nobody deferred it) — the box stays open and the report carries the
|
|
606
|
+
reason. `staleArtefactVerdict` in `roadmap_context.ts` is the predicate.
|
|
607
|
+
|
|
608
|
+
The failure this catches is quiet: "nothing to do here" reads identically to
|
|
609
|
+
"already done", and one of those is a closed step while the other is a lost
|
|
610
|
+
one. A step citing no paths is unaffected — there is nothing to check, and
|
|
611
|
+
inventing a doubt would fire this on every prose step.
|
|
612
|
+
|
|
513
613
|
5. **Atomic flip — same reply, every step.**
|
|
514
614
|
Flip the checkbox in `agents/roadmaps/<file>.md`: `[x]` done ·
|
|
515
615
|
`[~]` partial · `[-]` skipped. **Non-skippable, non-batchable**
|
|
@@ -634,10 +734,46 @@ sibling worktree moved, the dying session finished a step it never recorded),
|
|
|
634
734
|
and the `actual` column is what to resume from. Treating progress as corruption
|
|
635
735
|
would refuse every healthy resume.
|
|
636
736
|
|
|
737
|
+
**The checkpoint carries a repository fingerprint too, not only roadmap counts.**
|
|
738
|
+
`context_fingerprint` is the `roadmap:context --fingerprint` value the dying run
|
|
739
|
+
last held. Every other field on the checkpoint reports **roadmap** drift; none
|
|
740
|
+
reported **repository** drift, so a run resumed after a long gap trusted a context
|
|
741
|
+
reading it never re-took — the exact staleness § 4's refresh exists to end,
|
|
742
|
+
reappearing across the one boundary a mid-run cadence cannot see.
|
|
743
|
+
|
|
744
|
+
A resumed run therefore re-probes and passes the fresh fingerprint into
|
|
745
|
+
`verifyCheckpoint`. A disagreement forces a full re-probe and the § 5e reactions
|
|
746
|
+
**before the first step**. A `null` or absent value on either side reads as *not
|
|
747
|
+
known* and never as a disagreement — the same rule `head` already follows, and for
|
|
748
|
+
the same reason: a false alarm on the field whose job is to say whether anything
|
|
749
|
+
moved trains the reader to skip the line.
|
|
750
|
+
|
|
637
751
|
`agent-config run:supervise --once` reports which runs died with open steps
|
|
638
752
|
left. It never merges, pushes, or closes anything — that boundary is a named
|
|
639
753
|
rejection, not a missing feature.
|
|
640
754
|
|
|
755
|
+
### 5e. Context refresh — four reactions, enumerated and closed
|
|
756
|
+
|
|
757
|
+
At each due point (§ 4 — fingerprint differs) re-probe and act. **These four rows
|
|
758
|
+
are the whole set.** Nothing here is a halt: none of them appears on the halt list
|
|
759
|
+
and none of them is a `blocked` outcome.
|
|
760
|
+
|
|
761
|
+
| # | What the refresh found | Reaction |
|
|
762
|
+
|---|---|---|
|
|
763
|
+
| a | A PR touching my owned paths **merged** since the last refresh | Run `sync_pr_branch` now — already the documented resolution, only push-bound until this row existed. Re-read the current step's files, continue. |
|
|
764
|
+
| b | An **open** PR touches my owned paths | Continue. Name the collision in the PR description and in the final report. **Never rebase onto a foreign branch.** |
|
|
765
|
+
| c | A peer session shows `PATH OVERLAP` | Take disjoint steps first if ordering allows; otherwise name it and continue. The register is advisory, never a lock. |
|
|
766
|
+
| d | The roadmap itself was **archived on `origin/main`** | Stop. The same **selection error** as § 1, detected late — not a halt, and no checkbox is flipped to reach it. |
|
|
767
|
+
|
|
768
|
+
Deliberately NOT a drift-level taxonomy. A severity ladder over these four would
|
|
769
|
+
invite a fifth row for every new shape of surprise, and the value here is that the
|
|
770
|
+
set is closed: an agent that meets something outside it has met an ordinary step,
|
|
771
|
+
not a new reaction.
|
|
772
|
+
|
|
773
|
+
Row (a) is the one that changes behaviour mid-run rather than only reporting. Rows
|
|
774
|
+
(b) and (c) exist to make the collision **visible in the artefact** — a run that
|
|
775
|
+
silently produces a conflicting PR has spent the reviewer's time, not its own.
|
|
776
|
+
|
|
641
777
|
### Halt conditions
|
|
642
778
|
|
|
643
779
|
- Hard-Floor trigger ([`non-destructive-by-default`](../../rules/non-destructive-by-default.md))
|
|
@@ -681,14 +817,30 @@ setting, pushing, opening a PR, re-running CI, updating a merge base, fixing a
|
|
|
681
817
|
test, spending inside a budget — the agent can do all of it. That is remediation
|
|
682
818
|
work, and a `process-full` invocation grants it.
|
|
683
819
|
|
|
684
|
-
|
|
820
|
+
Four outcomes, and only one of them is success:
|
|
685
821
|
|
|
686
822
|
| Outcome | When | What it reports |
|
|
687
823
|
|---|---|---|
|
|
688
824
|
| `complete` | `count_open == 0` and the PR is open | the roadmap is finished; archival check runs (§ 6) |
|
|
689
825
|
| `blocked` | every remaining open step is **externally impossible** for the agent | the work that DID close, plus the specific impossibility |
|
|
826
|
+
| `superseded` | the remaining work **already landed** on `origin/main`, in a merged PR | which steps the tree already satisfies, with the PR number and the evidence per step |
|
|
690
827
|
| a halt | one of the five conditions above fired | the halt, its evidence, and what remains |
|
|
691
828
|
|
|
829
|
+
**Why `superseded` is here and not on the halt list.** A run that meets a merged
|
|
830
|
+
PR which already closed its remaining steps had, until this row existed, no legal
|
|
831
|
+
move: *"let the open PRs merge first"* is a forbidden non-halt reason below, the
|
|
832
|
+
halt list calls itself exhaustive, and neither `complete` nor `blocked` is true —
|
|
833
|
+
the work is done and it was not externally impossible. The only two available
|
|
834
|
+
actions were a rule violation or duplicate work. This row is the third.
|
|
835
|
+
|
|
836
|
+
It is a **report**, not a licence to flip anything. Marking a step the tree
|
|
837
|
+
already closed is a separate, deliberately unbuilt mechanism: it needs the step's
|
|
838
|
+
own `verify:` green against `origin/main`, a decision memo, and a one-strike kill
|
|
839
|
+
criterion, and an autonomous run writing a completion marker into the source of
|
|
840
|
+
truth is not switched on unasked. Until it is, `superseded` reports and the boxes
|
|
841
|
+
stay open — the same discipline the `[~]` prohibition below enforces for
|
|
842
|
+
`blocked`.
|
|
843
|
+
|
|
692
844
|
`blocked-preflight` **no longer exists** (ADR-237 § 4). A run always starts.
|
|
693
845
|
|
|
694
846
|
```
|
|
@@ -17,7 +17,7 @@ routes_to:
|
|
|
17
17
|
workspaces: [engineering]
|
|
18
18
|
packs: [engineering-base]
|
|
19
19
|
enforced_by:
|
|
20
|
-
- "
|
|
20
|
+
- "instruction-only: the note, the ask and the user decision are all prose, so no gate can tell a discharged issue from a mentioned one"
|
|
21
21
|
collision_ok:
|
|
22
22
|
"refactor": "an explicit clean-up/refactor ask is the remediation ladder's own trigger"
|
|
23
23
|
# obligation: line 31
|
|
@@ -97,11 +97,11 @@ While implementing/modifying code you pass an issue outside the literal task. Al
|
|
|
97
97
|
- The issue is the task itself — then it's just the task (no ladder needed).
|
|
98
98
|
- The user already decided this item (fixed later, or explicitly ignored).
|
|
99
99
|
|
|
100
|
-
## Honest enforcement — `
|
|
100
|
+
## Honest enforcement — `instruction-only`
|
|
101
101
|
|
|
102
102
|
The note, the ask and the user's decision are all prose, and the issue set is
|
|
103
103
|
whatever the agent happened to see, so no gate can tell a discharged issue from a
|
|
104
|
-
mentioned one. This rule ships `
|
|
104
|
+
mentioned one. This rule ships `instruction-only` — the honesty boundary
|
|
105
105
|
[`security-sensitive-stop`](security-sensitive-stop.md) and
|
|
106
106
|
[`ui-audit-gate`](ui-audit-gate.md) state for their own obligations. The ladder
|
|
107
107
|
is the control; skipping it is caught by nothing.
|
|
@@ -22,7 +22,7 @@ workspaces: [engineering]
|
|
|
22
22
|
packs: [engineering-base]
|
|
23
23
|
roles: [developer, reviewer, tester, po, incident, planner]
|
|
24
24
|
enforced_by:
|
|
25
|
-
- "
|
|
25
|
+
- "instruction-only: close-the-source-and-re-derive is a pre-write reasoning step only the model observes; CI checks the ledger, never the derivation"
|
|
26
26
|
# obligation: line 40
|
|
27
27
|
obligation_frequency: "per-edit"
|
|
28
28
|
---
|
|
@@ -129,7 +129,7 @@ checks the ledger's own records, not similarity, and cannot catch an
|
|
|
129
129
|
unrecorded borrow. The discipline above **is** the control; skipping it is
|
|
130
130
|
not caught downstream by anything automatic. No script can enforce "close
|
|
131
131
|
the source and re-derive" — a pre-write reasoning step only the model
|
|
132
|
-
observes — so this rule ships `
|
|
132
|
+
observes — so this rule ships `instruction-only`, same honesty stance as
|
|
133
133
|
`security-sensitive-stop` and `untrusted-input-defense`.
|
|
134
134
|
|
|
135
135
|
`lint_harvest_provenance.ts` stands in exactly the same relation to the
|
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
type: "auto"
|
|
3
3
|
tier: "1"
|
|
4
4
|
alwaysApply: false
|
|
5
|
+
norm:
|
|
6
|
+
tokens: 2000
|
|
7
|
+
remainder:
|
|
8
|
+
- "../docs/guidelines/agent-infra/context-hygiene-mechanics.md"
|
|
5
9
|
description: "Debugging, fixing errors, or long conversations — 3-failure stop rule, tool-loop detection, fresh-chat triggers"
|
|
6
10
|
triggers:
|
|
7
11
|
- keyword: "3-failure"
|
|
@@ -81,37 +85,14 @@ A NUMBER THAT CHANGED IS NOT NEW INFORMATION UNLESS IT CHANGES WHAT YOU DO NEXT.
|
|
|
81
85
|
```
|
|
82
86
|
|
|
83
87
|
Waiting on something external — CI, a deploy, a queue, a background job — is the
|
|
84
|
-
one shape the loop test above systematically misses
|
|
85
|
-
|
|
86
|
-
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
different digit would make you act differently. It would not: the only actions
|
|
93
|
-
available were wait, or stop and report, and 34 licensed neither more than 31
|
|
94
|
-
did. **The discriminator is the decision, not the digits.**
|
|
95
|
-
|
|
96
|
-
For CI, do not hand-write the loop: `ci_settle <pr>` (mechanics below).
|
|
97
|
-
|
|
98
|
-
So state it separately: pick **one** waiter for the condition and let it finish.
|
|
99
|
-
Where the harness re-invokes on completion, waiting costs nothing and polling
|
|
100
|
-
costs a turn per expiry — and every stacked waiter is a turn that arrives *after*
|
|
101
|
-
the answer already did. Where it does not, one `until <condition>` loop is still
|
|
102
|
-
one call rather than N.
|
|
103
|
-
|
|
104
|
-
**Measured once, at n=1, and worth naming for its shape rather than its
|
|
105
|
-
frequency** (2026-08-12): a CI wait started roughly 35 background commands —
|
|
106
|
-
a fresh timer *and* a fresh condition-watcher per round, none cancelled when the
|
|
107
|
-
next pair started. CI settled with about fifteen still live; each then expired
|
|
108
|
-
and produced an empty turn. Nothing was corrupted, which is exactly why it ran
|
|
109
|
-
so long: every individual step looked reasonable.
|
|
110
|
-
|
|
111
|
-
**Enforcement: none, and the reason is structural.** The `context-hygiene` hook
|
|
112
|
-
counts tool calls; a waiter is indistinguishable from any other call at that
|
|
113
|
-
layer, and nothing in the envelope says two live waiters are watching one
|
|
114
|
-
condition. This is model-carried on every host.
|
|
88
|
+
one shape the loop test above systematically misses. Pick **one** waiter for the
|
|
89
|
+
condition and let it finish; for CI use `ci_settle <pr>` rather than a
|
|
90
|
+
hand-written loop. Enforcement is `none` and structurally so: the hook counts
|
|
91
|
+
tool calls and a waiter is indistinguishable from any other call at that layer.
|
|
92
|
+
|
|
93
|
+
Why the loop test misses it in both clauses, the n=1 measurement behind the
|
|
94
|
+
clause, and the enforcement argument: [`context-hygiene-mechanics § Waiting is one
|
|
95
|
+
waiter`](../docs/guidelines/agent-infra/context-hygiene-mechanics.md).
|
|
115
96
|
|
|
116
97
|
## Read-Loop Detection — the 15 / 25 rule
|
|
117
98
|
|
|
@@ -134,8 +115,7 @@ A mandated analysis/audit/review protocol is exactly the case that legitimately
|
|
|
134
115
|
- **Undeclared reading keeps 3-warn / 5-abort.** Unchanged.
|
|
135
116
|
- **A declared protocol raises the abort to 8 read-only turns** — and never suspends it. "Non-bypassable" narrows to **no *silent* bypass**: a declared protocol is not silent.
|
|
136
117
|
|
|
137
|
-
> **The 8 is a guess,
|
|
138
|
-
> **Revisit-if — whichever comes first:** (a) **≥ 10 declared-protocol sessions** have been observed, at which point set the cap from their p95 and delete this note; or (b) **90 days** elapse with fewer than 10, which is itself the answer — declared protocols are rare, the cap is not load-bearing, and it drops back to the undeclared 5. A condition like "once a distribution exists" was rejected as unfalsifiable: it is gradual, never feels urgent, and absence of complaints is indistinguishable from absence of measurement.
|
|
118
|
+
> **The 8 is a guess, a LOWER BOUND, and revisitable** — derivation, the n=1 run behind it, and the two-branch `revisit-if`: [`context-hygiene-mechanics § The declared-protocol cap`](../docs/guidelines/agent-infra/context-hygiene-mechanics.md).
|
|
139
119
|
|
|
140
120
|
A declaration is only valid when it states, before the reading starts, all three of:
|
|
141
121
|
|
|
@@ -13,7 +13,7 @@ self_contained: true
|
|
|
13
13
|
workspaces: [agent-config-maintainer, construction, engineering, finance, founder, gtm, legal-review-prep, ops, product, small-business]
|
|
14
14
|
packs: [meta]
|
|
15
15
|
enforced_by:
|
|
16
|
-
- "
|
|
16
|
+
- "instruction-only: no gate reads a chat claim about availability; check_council_config_location covers the tree side only"
|
|
17
17
|
# obligation: line 27
|
|
18
18
|
obligation_frequency: "per-task"
|
|
19
19
|
---
|
|
@@ -79,7 +79,7 @@ Availability is already settled this session, or the question is about council
|
|
|
79
79
|
|
|
80
80
|
## Enforcement
|
|
81
81
|
|
|
82
|
-
`
|
|
82
|
+
`instruction-only` — no gate reads a chat claim. Deterministic instead:
|
|
83
83
|
`check_council_config_location` fails the build when a council surface ties the
|
|
84
84
|
config to `.agent-settings.yml`, which never carried it, or to a project-tree
|
|
85
85
|
path, and its §4 fails when no always-loaded rule carries this fact at all.
|
|
@@ -23,6 +23,8 @@ packs: [meta]
|
|
|
23
23
|
collision_ok:
|
|
24
24
|
"honest null": "this rule asks whether a recorded null may be REVISITED; evaluator-independence asks how one was PRODUCED — different decision points on the same artefact"
|
|
25
25
|
# obligation: line 31
|
|
26
|
+
enforced_by:
|
|
27
|
+
- "instruction-only: no gate can observe an agent citing a decision it never opened; adr_cite_check is deterministic where it runs and nothing makes it run"
|
|
26
28
|
obligation_frequency: "per-task"
|
|
27
29
|
---
|
|
28
30
|
|
|
@@ -176,7 +178,7 @@ precedent-creates-no-authority clause: [`adr-layout § Reopen authority`](../doc
|
|
|
176
178
|
- [`ask-when-uncertain`](ask-when-uncertain.md) — the numbered-options shape
|
|
177
179
|
used to present the revisit offer.
|
|
178
180
|
|
|
179
|
-
## Honest enforcement — `
|
|
181
|
+
## Honest enforcement — `instruction-only`
|
|
180
182
|
|
|
181
183
|
`adr_cite_check` is deterministic where it runs, and nothing makes it run. No
|
|
182
184
|
gate can observe an agent citing a decision it never opened, so step 2 above is
|
|
@@ -89,6 +89,24 @@ this": a prototype (HTML / JSX / Figma export), a mockup or screenshot, a
|
|
|
89
89
|
design-system file (tokens, component library), or a URL / path. It encodes
|
|
90
90
|
decisions already made — treat it like brand tokens, not like inspiration.
|
|
91
91
|
|
|
92
|
+
## Two axes — artefact maturity is not instruction mandate
|
|
93
|
+
|
|
94
|
+
```
|
|
95
|
+
MATURITY IS A PROPERTY OF THE ARTEFACT. MANDATE IS A PROPERTY OF THE INSTRUCTION.
|
|
96
|
+
A HANDOVER WHOSE OWN ARTEFACT DECLARES ITSELF LOW-FIDELITY CARRIES A **STRUCTURE**
|
|
97
|
+
MANDATE, NEVER A **PIXEL** MANDATE — WHATEVER `design.fidelity_mode` SAYS.
|
|
98
|
+
REPRODUCING A WIREFRAME'S GREYS 1:1 HONOURS THE WRONG HALF OF THE ARTEFACT.
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
`strict` means *do not redesign*; never *reproduce a wireframe's placeholder greys*, which
|
|
102
|
+
are **non-decisions** ([`wireframe`](../skills/wireframe/SKILL.md) § Gotchas).
|
|
103
|
+
**The discriminator reads the ARTEFACT, never the prose.** A finished comp whose prose
|
|
104
|
+
mentions a wireframe it replaces routes **strictly** — a reference to a previous artefact,
|
|
105
|
+
not a declaration about this one. **When the artefact does not declare its maturity,
|
|
106
|
+
it is treated as finished**: the 1:1 floor is stricter, and guessing *low fidelity*
|
|
107
|
+
would authorise the redesign this rule prevents. Maturity→spec table + the pinned near-miss:
|
|
108
|
+
[`design-fidelity-mechanics § Artefact maturity`](../docs/guidelines/design-fidelity-mechanics.md).
|
|
109
|
+
|
|
92
110
|
## Strictness — set by `design.fidelity_mode`
|
|
93
111
|
|
|
94
112
|
Read `design.fidelity_mode` from `.agent-settings.yml`. Missing → `strict`.
|
|
@@ -27,7 +27,7 @@ routes_to:
|
|
|
27
27
|
workspaces: [agent-config-maintainer, engineering]
|
|
28
28
|
packs: [frontend-design]
|
|
29
29
|
enforced_by:
|
|
30
|
-
- "
|
|
30
|
+
- "instruction-only: no artefact proves a design review happened outside the work-engine dispatcher; the review verdict is self-report"
|
|
31
31
|
collision_ok:
|
|
32
32
|
# The "component" and "design token" entries were removed with their triggers
|
|
33
33
|
# (2026-08-17): a collision note for a trigger that no longer exists is an
|
|
@@ -107,7 +107,7 @@ AS IF IT WERE VERIFIED.
|
|
|
107
107
|
|
|
108
108
|
There is no artefact a chat session can point at to prove a design review
|
|
109
109
|
happened — "I ran `design-review`" is self-report, and self-report is not
|
|
110
|
-
enforcement. So this rule ships `
|
|
110
|
+
enforcement. So this rule ships `instruction-only`, the same honesty boundary
|
|
111
111
|
`ui-audit-gate`, `security-sensitive-stop`, and `untrusted-input-defense` state
|
|
112
112
|
for their own obligations, rather than pretending a satisfiable-by-assertion
|
|
113
113
|
condition is a gate.
|
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
type: "auto"
|
|
3
3
|
tier: "2a"
|
|
4
4
|
alwaysApply: false
|
|
5
|
+
norm:
|
|
6
|
+
tokens: 1500
|
|
7
|
+
remainder:
|
|
8
|
+
- "../docs/guidelines/agent-infra/evaluator-independence-mechanics.md"
|
|
5
9
|
description: "Commissioning a review/judge/blind-pass on your own work — never author the verdict, never narrow the scope, record the prompt with the result"
|
|
6
10
|
triggers:
|
|
7
11
|
- keyword: "blind review"
|
|
@@ -13,6 +17,8 @@ triggers:
|
|
|
13
17
|
- phrase: "review my own"
|
|
14
18
|
- phrase: "commission a review"
|
|
15
19
|
- phrase: "second opinion on my"
|
|
20
|
+
routes_to:
|
|
21
|
+
- "guideline:agent-infra/evaluator-independence-mechanics"
|
|
16
22
|
self_contained: true
|
|
17
23
|
workspaces: [engineering]
|
|
18
24
|
packs: [engineering-base]
|
|
@@ -73,6 +79,29 @@ was manufactured anyway.
|
|
|
73
79
|
4. **One evaluation per turn per subject.** Re-running with a different prompt or
|
|
74
80
|
scope after an unwelcome verdict selects the answer instead of measuring it.
|
|
75
81
|
|
|
82
|
+
## The softer form — stating an expectation without stating the verdict
|
|
83
|
+
|
|
84
|
+
The Iron Law forbids **authoring the verdict** into an evaluator's prompt. There is a
|
|
85
|
+
weaker move that evades it while doing the same work, and it is the one an orchestrator
|
|
86
|
+
reaches for without noticing: **stating an expectation.**
|
|
87
|
+
|
|
88
|
+
```
|
|
89
|
+
THE ORCHESTRATOR STATES NO EXPECTATION OF THE OUTCOME IN A PROMPT IT WRITES
|
|
90
|
+
FOR A JUDGE OF ITS OWN WORK. NOT THE VERDICT, AND NOT THE DIRECTION.
|
|
91
|
+
"THIS SHOULD BE CLEAN", "I BELIEVE THIS IS CORRECT", "JUST CONFIRM",
|
|
92
|
+
"I EXPECT NO FINDINGS" — NONE OF THESE NAME A VERDICT, AND ALL OF THEM SUPPLY ONE.
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
The distinction the phrase list cannot see is exactly this one: *"NO-FINDINGS is
|
|
96
|
+
expected"* is a prediction, not a verdict, and it steered a real review into an
|
|
97
|
+
honest-null that was later refuted by five findings on the trunk. A prompt that says what
|
|
98
|
+
the author thinks the answer is has authored the answer, whatever grammatical mood it
|
|
99
|
+
used.
|
|
100
|
+
|
|
101
|
+
**What to write instead:** the scope, the diff, and the question. Nothing about how it is
|
|
102
|
+
expected to come out — including a reassurance that no particular outcome is expected,
|
|
103
|
+
which is itself an expectation stated in the negative.
|
|
104
|
+
|
|
76
105
|
## When it does NOT fire
|
|
77
106
|
|
|
78
107
|
- **Ordinary parallel fan-out.** Dispatching many subagents to read, map,
|
|
@@ -85,51 +114,34 @@ was manufactured anyway.
|
|
|
85
114
|
|
|
86
115
|
## Enforcement — honest scope
|
|
87
116
|
|
|
117
|
+
```
|
|
118
|
+
ITEM 1 IS ENFORCED. ITEMS 2, 3 AND 4 ARE NOT — 4 ONLY WARNS.
|
|
119
|
+
NEVER CITE A GUARD THAT WARNS AS ONE THAT BLOCKS.
|
|
120
|
+
```
|
|
121
|
+
|
|
88
122
|
[`evidence_independence.ts`](../scripts/hooks/evidence_independence.ts) is a
|
|
89
|
-
`pre_tool_use` concern
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
`host_semantics.ts` certifies **claude alone**, and the augment and cowork
|
|
112
|
-
trampolines discard dispatcher output and `exit 0` unconditionally — so on two
|
|
113
|
-
of the three "enforcing" hosts this guard runs and is then ignored. Nor may the
|
|
114
|
-
inverse be asserted downward: nothing records whether an unbound host's
|
|
115
|
-
pre-tool event can *deny*, and `severity: blocking` is a property of the concern
|
|
116
|
-
rather than of the host. The four states are tabulated once in
|
|
117
|
-
[`hook-architecture-v1 § Which hosts carry pre_tool_use`](../docs/contracts/hook-architecture-v1.md).
|
|
118
|
-
|
|
119
|
-
Stated at this length because this rule exists over a case where a process that
|
|
120
|
-
*looked* followed produced fabricated evidence. An unbacked reason for a real
|
|
121
|
-
gap and an unmeasured claim of enforcement are the same failure in a smaller
|
|
122
|
-
font, and this paragraph had shipped one of each. Note also what the frequency
|
|
123
|
-
join actually reports: `check_enforcement_coverage.ts` skips `fallback_only`
|
|
124
|
-
platforms, so its gap set is **four** — cursor, cline, windsurf, gemini — never
|
|
125
|
-
copilot, which is excluded by declaration rather than measured as a gap.
|
|
126
|
-
|
|
127
|
-
Items 2 and 3 — an honestly chosen scope, and recording the prompt with the
|
|
128
|
-
verdict — are **not** enforced by anything. A narrowed scope is not decidable
|
|
129
|
-
from the prompt alone, and no validator reads the artefacts a verdict lands in.
|
|
130
|
-
They are stated here as obligations and are model-carried. Saying so is the
|
|
131
|
-
point: this rule exists because a process that *looked* followed produced
|
|
132
|
-
fabricated evidence, and claiming coverage it does not have would repeat that.
|
|
123
|
+
`pre_tool_use` concern reading the prompt the agent is about to send.
|
|
124
|
+
|
|
125
|
+
- **Item 1 (pre-loaded verdict) BLOCKS** — `EXIT_BLOCK` at `:253`, on the one
|
|
126
|
+
host that honours a deny. Bound on augment, claude and cowork; only `claude`
|
|
127
|
+
denies. `agent-config hooks:status` answers it for the host you are on.
|
|
128
|
+
- **Item 4 (second self-scoped evaluation) WARNS** — `EXIT_ALLOW` with
|
|
129
|
+
`decision: "warn"` (`:301-324`). The turn-budget clause is advisory, and the
|
|
130
|
+
manifest's `severity: blocking` is true of the item-1 path only.
|
|
131
|
+
- **Item 2 (an honestly chosen scope) is enforced by nothing.** A narrowed scope
|
|
132
|
+
is not decidable from the prompt alone.
|
|
133
|
+
- **Item 3 (recording the prompt with the verdict) IS enforced** by
|
|
134
|
+
[`check_review_prompt_binding.ts`](../../src/scripts/check_review_prompt_binding.ts),
|
|
135
|
+
with one limit that matters: **omission beats substitution** — not committing
|
|
136
|
+
the prompt package drops the round out of the checkable set with no finding.
|
|
137
|
+
|
|
138
|
+
Where the guard does not deny, every item is model-carried. Never claim the
|
|
139
|
+
review ran as if it were verified.
|
|
140
|
+
|
|
141
|
+
Why each branch behaves that way, the phrase-list and turn-boundary limits, the
|
|
142
|
+
four host states, the two corrections this section has taken, and the
|
|
143
|
+
11-of-19 measurement behind item 3:
|
|
144
|
+
[`evaluator-independence-mechanics`](../docs/guidelines/agent-infra/evaluator-independence-mechanics.md).
|
|
133
145
|
|
|
134
146
|
## See also
|
|
135
147
|
|
|
@@ -23,7 +23,7 @@ triggers:
|
|
|
23
23
|
workspaces: [engineering]
|
|
24
24
|
packs: [engineering-base]
|
|
25
25
|
enforced_by:
|
|
26
|
-
- "
|
|
26
|
+
- "instruction-only: ownership-as-excuse is a disposition in prose; no gate can see a red check handed back with its cause named"
|
|
27
27
|
---
|
|
28
28
|
|
|
29
29
|
# Fix What You See
|
|
@@ -106,3 +106,11 @@ maintainer decision, recorded), a kernel rule shortened to make room, or a
|
|
|
106
106
|
option that would fire on tool output rather than on wording. Until then, `auto`
|
|
107
107
|
plus this paragraph is the honest state: the obligation is real, its delivery is
|
|
108
108
|
partial, and the partiality is named rather than implied away.
|
|
109
|
+
|
|
110
|
+
## Honest enforcement — `instruction-only`
|
|
111
|
+
|
|
112
|
+
Nothing observes a disposition. "I fixed it", "I landed a roadmap for it" and
|
|
113
|
+
"I named the author and moved on" are the same prose to every gate in this tree,
|
|
114
|
+
and the issue set is whatever the agent happened to see. So the two dispositions
|
|
115
|
+
above are model-carried, and the activation gap named in the previous section
|
|
116
|
+
sits on top of that rather than beside it.
|
|
@@ -72,7 +72,7 @@ framework-specific): `laravel*`, `symfony*`, `nextjs*`, `react-*`,
|
|
|
72
72
|
`^php-*`, `^pest-*`, `^eloquent`, `^blade*`, `^livewire`, `^flux`,
|
|
73
73
|
`^artisan-*`, `^composer-*`, `^docker*`, `^aws-*`, `^grafana`,
|
|
74
74
|
`^openapi$`, `^quality-tools`, `^sql-writing`, `^tailwind*`,
|
|
75
|
-
`^terraform*`, `^terragrunt*`, `^traefik`, `^mobile-e2e`,
|
|
75
|
+
`^terraform*`, `^terragrunt*`, `^traefik`, `^mobile-e2e`, `^monorepo-workspace$`, `^workspace-link$`,
|
|
76
76
|
`-routing$`, `project-analysis-(laravel|symfony|nextjs|react|node-express|zend-laminas)`.
|
|
77
77
|
|
|
78
78
|
## The discipline in one breath
|
|
@@ -43,29 +43,23 @@ change.
|
|
|
43
43
|
- Never consolidate or split unrelated code paths as a side effect.
|
|
44
44
|
- Never delete code that *looks* dead without proof it is unreachable.
|
|
45
45
|
|
|
46
|
-
##
|
|
46
|
+
## Repair the shared path, don't patch the reported call site
|
|
47
47
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
2. **What is the minimum number of lines per file?** If you are editing a
|
|
54
|
-
method, edit the method — not the surrounding class.
|
|
55
|
-
3. **Is any of this a refactor?** If yes, it belongs in its own commit or
|
|
56
|
-
PR, clearly labeled as a refactor, with no behavior change.
|
|
57
|
-
|
|
58
|
-
## Red flags in your own diff — reject them
|
|
59
|
-
|
|
60
|
-
Files the task never mentioned · import reordering, whitespace, or comments
|
|
61
|
-
outside the edited region · "small improvements" to neighboring methods ·
|
|
62
|
-
test-only mixed with behavior changes in one commit · renames outside the
|
|
63
|
-
task scope · dependency bumps "because it was close to the cache".
|
|
48
|
+
```
|
|
49
|
+
BEFORE EDITING A SHARED PATH, ENUMERATE ITS CALLERS AND REPAIR THE PATH ONCE.
|
|
50
|
+
PATCHING ONLY THE REPORTED CALL SITE IS NOT THE SMALLEST CHANGE — IT IS THE
|
|
51
|
+
SMALLEST-LOOKING ONE, AND IT LEAVES EVERY OTHER CALLER BROKEN.
|
|
52
|
+
```
|
|
64
53
|
|
|
65
|
-
|
|
54
|
+
Fires when the defect sits in something several callers reach — a shared
|
|
55
|
+
helper, a base class, a middleware, a query builder. The minimum set of files
|
|
56
|
+
then INCLUDES the shared path and EXCLUDES the N call sites a per-caller patch
|
|
57
|
+
would touch: repairing once is both smaller and complete.
|
|
66
58
|
|
|
67
|
-
|
|
68
|
-
|
|
59
|
+
**The PRE-fix half of a pair.** The post-fix half ships in
|
|
60
|
+
[`downstream-changes`](downstream-changes.md) § Defect-pattern search — name
|
|
61
|
+
the construct, grep the tree, report the count, AFTER the fix. Enumerate
|
|
62
|
+
before, sweep after; the two run over different sets.
|
|
69
63
|
|
|
70
64
|
## Own-orphan cleanup
|
|
71
65
|
|
|
@@ -16,6 +16,8 @@ self_contained: true
|
|
|
16
16
|
workspaces: [engineering]
|
|
17
17
|
packs: [meta]
|
|
18
18
|
# obligation: line 41
|
|
19
|
+
enforced_by:
|
|
20
|
+
- "instruction-only: nothing can observe an agent concluding that no skill exists; the skill-route concern covers only the prompts where the ranker is confident"
|
|
19
21
|
obligation_frequency: "per-turn"
|
|
20
22
|
---
|
|
21
23
|
|
|
@@ -60,6 +62,16 @@ NEVER REBUILD A CAPABILITY BECAUSE ITS SKILL WAS NOT DELIVERED.
|
|
|
60
62
|
inventing one. A ranked empty list and an unreachable catalogue are
|
|
61
63
|
different answers; the tool distinguishes them (`status: no_catalogue`) and
|
|
62
64
|
so should you.
|
|
65
|
+
5. **If the tool is not registered, say THAT — and proceed.** This rule may
|
|
66
|
+
never instruct a call it cannot verify is possible. The tool arrives with
|
|
67
|
+
this package's MCP server, which `agent-config install` registers for the
|
|
68
|
+
`claude-code` tool in the project's `.mcp.json`. No entry there, or the
|
|
69
|
+
server not started, and there is no tool to call: name the gap in one clause,
|
|
70
|
+
proceed without a skill, and — only if the missing catalogue entry actually
|
|
71
|
+
mattered — point at `agent-config mcp:check`, which reports whether
|
|
72
|
+
`.mcp.json` carries the entry. Never retry a call that is not wired, and
|
|
73
|
+
never report "no skill covers this" when what you learned is "no tool
|
|
74
|
+
answered".
|
|
63
75
|
|
|
64
76
|
## When NOT to fire
|
|
65
77
|
|
|
@@ -70,7 +82,7 @@ NEVER REBUILD A CAPABILITY BECAUSE ITS SKILL WAS NOT DELIVERED.
|
|
|
70
82
|
- A host that delivers its catalogue whole — the rule costs nothing there and
|
|
71
83
|
simply never has a gap to close.
|
|
72
84
|
|
|
73
|
-
## Honest enforcement — `
|
|
85
|
+
## Honest enforcement — `instruction-only`
|
|
74
86
|
|
|
75
87
|
Nothing can observe an agent concluding "no skill exists". The `skill-route`
|
|
76
88
|
concern injects ranked pointers on `user_prompt_submit` when its floor is
|