@event4u/agent-config 9.9.0 → 9.10.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/.claude-plugin/marketplace.json +1 -1
- package/CHANGELOG.md +153 -194
- package/README.md +1 -1
- package/dist/agent-src/commands/agent-status.md +12 -11
- package/dist/agent-src/commands/agents/user/accept.md +115 -30
- package/dist/agent-src/commands/agents/user/delete.md +147 -0
- package/dist/agent-src/commands/agents/user/review.md +65 -28
- package/dist/agent-src/commands/agents/user/show.md +82 -29
- package/dist/agent-src/commands/agents/user/update.md +2 -2
- package/dist/agent-src/commands/agents/user.md +16 -3
- package/dist/agent-src/commands/check-current-md.md +0 -10
- package/dist/agent-src/commands/condense.md +28 -97
- package/dist/agent-src/commands/cost/report.md +7 -0
- package/dist/agent-src/commands/fix/portability.md +0 -8
- package/dist/agent-src/commands/fix/refs.md +0 -8
- package/dist/agent-src/commands/humanize.md +2 -2
- package/dist/agent-src/commands/jira-ticket.md +1 -1
- package/dist/agent-src/commands/memory/load.md +11 -0
- package/dist/agent-src/commands/optimize/skills.md +1 -1
- package/dist/agent-src/commands/pr/create.md +4 -4
- package/dist/agent-src/commands/profile/show.md +3 -3
- package/dist/agent-src/commands/rule-compliance-audit.md +5 -4
- package/dist/agent-src/commands/security-audit-config.md +1 -1
- package/dist/agent-src/commands/sync/gitignore/fix.md +1 -1
- package/dist/agent-src/commands/tdd.md +21 -0
- package/dist/agent-src/commands/team/delegate.md +2 -2
- package/dist/agent-src/commands/team-knowledge/bootstrap.md +9 -8
- package/dist/agent-src/commands/team-knowledge/consolidate.md +8 -7
- package/dist/agent-src/commands/team.md +4 -1
- package/dist/agent-src/commands/upstream-contribute.md +0 -1
- package/dist/agent-src/contexts/authority/commit-mechanics.md +7 -0
- package/dist/agent-src/contexts/authority/destructive-mechanics.md +16 -0
- package/dist/agent-src/contexts/authority/scope-mechanics.md +61 -0
- package/dist/agent-src/contexts/communication/rules-auto/reply-close-mechanics.md +20 -18
- package/dist/agent-src/contexts/communication/rules-auto/skill-quality-mechanics.md +1 -1
- package/dist/agent-src/contexts/communication/rules-auto/slash-command-routing-policy-mechanics.md +1 -1
- package/dist/agent-src/contexts/communication/rules-auto/source-of-truth-mechanics.md +9 -10
- package/dist/agent-src/contexts/communication/rules-auto/think-before-action-mechanics.md +1 -1
- package/dist/agent-src/contexts/communication/rules-auto/user-interaction-mechanics.md +11 -0
- package/dist/agent-src/contexts/contracts/artifact-engagement-flow.md +26 -15
- package/dist/agent-src/contexts/contracts/command-suggestion-flow.md +3 -0
- package/dist/agent-src/contexts/execution/auto-dispatch-classification.md +67 -37
- package/dist/agent-src/contexts/execution/auto-orchestration-activation.md +1 -1
- package/dist/agent-src/contexts/execution/autonomy-examples.md +1 -1
- package/dist/agent-src/contexts/execution/autonomy-mechanics.md +7 -6
- package/dist/agent-src/contexts/execution/evidence-discipline.md +92 -77
- package/dist/agent-src/contexts/execution/orchestration-benchmark-gate.md +22 -21
- package/dist/agent-src/contexts/execution/orchestration-telemetry.md +24 -0
- package/dist/agent-src/contexts/execution/project-intelligence.md +122 -103
- package/dist/agent-src/contexts/execution/roadmap-execution-contract.md +23 -21
- package/dist/agent-src/contexts/execution/subagent-response-contract.md +5 -5
- package/dist/agent-src/contexts/execution/subagent-routing.md +11 -0
- package/dist/agent-src/contexts/execution/subagent-spawn-contract.md +13 -13
- package/dist/agent-src/contexts/execution/subagent-steering.md +36 -34
- package/dist/agent-src/contexts/execution/toolchain-resolver.md +1 -1
- package/dist/agent-src/contexts/execution/user-memory-channels.md +189 -0
- package/dist/agent-src/contexts/execution/verification-mechanics.md +9 -0
- package/dist/agent-src/contexts/model-recommendations.md +3 -2
- package/dist/agent-src/contexts/subagent-configuration.md +3 -3
- package/dist/agent-src/ghostwriter/README.md +2 -2
- package/dist/agent-src/packs/README.md +1 -1
- package/dist/agent-src/personas/README.md +5 -5
- package/dist/agent-src/personas/_template-specialist/persona.md +3 -3
- package/dist/agent-src/personas/backend-architect.md +24 -23
- package/dist/agent-src/personas/eloquent-tamer.md +30 -30
- package/dist/agent-src/personas/frontend-engineer.md +30 -30
- package/dist/agent-src/personas/product-owner.md +41 -38
- package/dist/agent-src/personas/qa.md +13 -13
- package/dist/agent-src/personas/security-engineer.md +22 -22
- package/dist/agent-src/presets/README.md +3 -3
- package/dist/agent-src/profiles/README.md +3 -3
- package/dist/agent-src/rules/active-remediation.md +2 -2
- package/dist/agent-src/rules/artifact-engagement-recording.md +4 -4
- package/dist/agent-src/rules/ask-when-uncertain.md +0 -4
- package/dist/agent-src/rules/augment-edit-discipline.md +1 -1
- package/dist/agent-src/rules/broken-access-control.md +4 -4
- package/dist/agent-src/rules/code-comment-discipline.md +1 -1
- package/dist/agent-src/rules/code-provenance.md +2 -2
- package/dist/agent-src/rules/commit-policy.md +4 -9
- package/dist/agent-src/rules/communication-through-line.md +5 -5
- package/dist/agent-src/rules/decision-revisit-gate.md +1 -1
- package/dist/agent-src/rules/doc-screenshot-hygiene.md +1 -1
- package/dist/agent-src/rules/domain-adoption-policy.md +1 -1
- package/dist/agent-src/rules/domain-safety-pii.md +1 -1
- package/dist/agent-src/rules/external-code-graph-interop.md +1 -1
- package/dist/agent-src/rules/fast-path-marker-visibility.md +43 -7
- package/dist/agent-src/rules/finance-safety-floor.md +1 -1
- package/dist/agent-src/rules/framework-neutrality-in-generic-skills.md +3 -3
- package/dist/agent-src/rules/history-discipline.md +1 -1
- package/dist/agent-src/rules/legal-safety-floor.md +1 -1
- package/dist/agent-src/rules/lethal-trifecta-guard.md +5 -5
- package/dist/agent-src/rules/low-impact-corpus-privacy-floor.md +10 -8
- package/dist/agent-src/rules/media-governance-routing.md +13 -13
- package/dist/agent-src/rules/media-sync-ground-truth.md +29 -11
- package/dist/agent-src/rules/no-cheap-questions.md +7 -7
- package/dist/agent-src/rules/no-decorative-emojis-in-git-surfaces.md +29 -18
- package/dist/agent-src/rules/non-destructive-by-default.md +5 -23
- package/dist/agent-src/rules/onboarding-gate.md +14 -4
- package/dist/agent-src/rules/persona-governance.md +2 -2
- package/dist/agent-src/rules/prefer-enums-over-literals.md +9 -9
- package/dist/agent-src/rules/preservation-guard.md +10 -2
- package/dist/agent-src/rules/question-not-instruction.md +1 -1
- package/dist/agent-src/rules/roadmap-progress-sync.md +6 -6
- package/dist/agent-src/rules/rule-type-governance.md +1 -1
- package/dist/agent-src/rules/scale-discipline.md +1 -1
- package/dist/agent-src/rules/scope-control.md +1 -1
- package/dist/agent-src/rules/secret-vcs-guard.md +1 -1
- package/dist/agent-src/rules/security-sensitive-stop.md +17 -11
- package/dist/agent-src/rules/senior-engineering-discipline.md +17 -17
- package/dist/agent-src/rules/session-canary.md +1 -1
- package/dist/agent-src/rules/skill-quality.md +1 -1
- package/dist/agent-src/rules/source-confidentiality.md +21 -19
- package/dist/agent-src/rules/source-of-truth.md +6 -5
- package/dist/agent-src/rules/spreadsheet-source-quality.md +2 -2
- package/dist/agent-src/rules/strategy-safety-floor.md +1 -1
- package/dist/agent-src/rules/think-before-action.md +5 -5
- package/dist/agent-src/rules/token-budget-discipline.md +5 -3
- package/dist/agent-src/rules/token-efficiency.md +2 -2
- package/dist/agent-src/rules/untrusted-input-defense.md +4 -4
- package/dist/agent-src/rules/user-interaction.md +12 -0
- package/dist/agent-src/rules/verify-before-complete.md +4 -24
- package/dist/agent-src/skills/adversarial-review/SKILL.md +2 -2
- package/dist/agent-src/skills/agent-security-review/SKILL.md +52 -45
- package/dist/agent-src/skills/agents-md-thin-root/SKILL.md +2 -2
- package/dist/agent-src/skills/ai-code-blindspots/SKILL.md +20 -20
- package/dist/agent-src/skills/ai-council/SKILL.md +185 -128
- package/dist/agent-src/skills/analysis-skill-router/SKILL.md +3 -3
- package/dist/agent-src/skills/api-endpoint/SKILL.md +2 -2
- package/dist/agent-src/skills/artisan-commands/SKILL.md +2 -2
- package/dist/agent-src/skills/async-python-patterns/SKILL.md +8 -7
- package/dist/agent-src/skills/authz-review/SKILL.md +16 -15
- package/dist/agent-src/skills/aws-infrastructure/SKILL.md +5 -5
- package/dist/agent-src/skills/blade-ui/SKILL.md +1 -1
- package/dist/agent-src/skills/bug-analyzer/SKILL.md +30 -12
- package/dist/agent-src/skills/code-intelligence/SKILL.md +0 -1
- package/dist/agent-src/skills/code-intelligence/evals/triggers.json +52 -0
- package/dist/agent-src/skills/code-review/SKILL.md +6 -6
- package/dist/agent-src/skills/command-routing/SKILL.md +5 -4
- package/dist/agent-src/skills/composer-packages/SKILL.md +2 -2
- package/dist/agent-src/skills/condense-memory/SKILL.md +43 -41
- package/dist/agent-src/skills/context-document/SKILL.md +23 -21
- package/dist/agent-src/skills/copilot-config/SKILL.md +6 -1
- package/dist/agent-src/skills/decision-record/SKILL.md +20 -18
- package/dist/agent-src/skills/design-intelligence/SKILL.md +4 -4
- package/dist/agent-src/skills/design-review/SKILL.md +15 -14
- package/dist/agent-src/skills/design-system-capture/reference/design-system-json.md +28 -25
- package/dist/agent-src/skills/devcontainer/SKILL.md +2 -2
- package/dist/agent-src/skills/docker/SKILL.md +1 -1
- package/dist/agent-src/skills/docx-authoring/evals/triggers.json +52 -0
- package/dist/agent-src/skills/emit-tickets/SKILL.md +2 -2
- package/dist/agent-src/skills/error-handling-patterns/SKILL.md +1 -1
- package/dist/agent-src/skills/estimate-ticket/SKILL.md +2 -2
- package/dist/agent-src/skills/evaluate-llm-feature/SKILL.md +0 -1
- package/dist/agent-src/skills/evaluate-llm-feature/evals/triggers.json +52 -0
- package/dist/agent-src/skills/existing-ui-audit/SKILL.md +6 -5
- package/dist/agent-src/skills/feature-planning/SKILL.md +2 -2
- package/dist/agent-src/skills/finishing-a-development-branch/SKILL.md +3 -3
- package/dist/agent-src/skills/flux/SKILL.md +1 -1
- package/dist/agent-src/skills/frontend-render-security/SKILL.md +13 -13
- package/dist/agent-src/skills/git-workflow/SKILL.md +33 -33
- package/dist/agent-src/skills/grafana/SKILL.md +5 -0
- package/dist/agent-src/skills/humanizer/SKILL.md +83 -66
- package/dist/agent-src/skills/humanizer/data/patterns.md +14 -14
- package/dist/agent-src/skills/humanizer/references/anti-aiisms.md +4 -4
- package/dist/agent-src/skills/judge-artifact-completeness/SKILL.md +82 -37
- package/dist/agent-src/skills/judge-bug-hunter/SKILL.md +17 -5
- package/dist/agent-src/skills/judge-injection-defense/SKILL.md +63 -25
- package/dist/agent-src/skills/judge-security-auditor/SKILL.md +2 -0
- package/dist/agent-src/skills/judge-synthesis/SKILL.md +72 -28
- package/dist/agent-src/skills/laravel-horizon/SKILL.md +5 -0
- package/dist/agent-src/skills/laravel-mail/SKILL.md +5 -4
- package/dist/agent-src/skills/laravel-middleware/SKILL.md +5 -4
- package/dist/agent-src/skills/laravel-notifications/SKILL.md +10 -9
- package/dist/agent-src/skills/laravel-pennant/SKILL.md +1 -1
- package/dist/agent-src/skills/laravel-pulse/SKILL.md +9 -8
- package/dist/agent-src/skills/laravel-reverb/SKILL.md +6 -5
- package/dist/agent-src/skills/laravel-scheduling/SKILL.md +6 -1
- package/dist/agent-src/skills/laravel-validation/SKILL.md +12 -0
- package/dist/agent-src/skills/launch-readiness/SKILL.md +1 -1
- package/dist/agent-src/skills/learning-to-rule-or-skill/SKILL.md +7 -7
- package/dist/agent-src/skills/learning-tutor/SKILL.md +44 -43
- package/dist/agent-src/skills/learning-tutor/evals/triggers.json +52 -0
- package/dist/agent-src/skills/license-compliance-audit/SKILL.md +7 -7
- package/dist/agent-src/skills/license-compliance-borrow-check/SKILL.md +3 -3
- package/dist/agent-src/skills/license-compliance-credits/SKILL.md +4 -4
- package/dist/agent-src/skills/llm-provider-knowledge/SKILL.md +0 -1
- package/dist/agent-src/skills/memory-consolidation/SKILL.md +69 -64
- package/dist/agent-src/skills/motion-choreographer/SKILL.md +6 -6
- package/dist/agent-src/skills/pdf-tools/evals/triggers.json +52 -0
- package/dist/agent-src/skills/performance-analysis/SKILL.md +7 -3
- package/dist/agent-src/skills/persona-improvement/SKILL.md +0 -2
- package/dist/agent-src/skills/persona-improvement/evals/triggers.json +52 -0
- package/dist/agent-src/skills/php-coder/SKILL.md +10 -0
- package/dist/agent-src/skills/prediction-pool-optimizer/SKILL.md +129 -120
- package/dist/agent-src/skills/prediction-pool-optimizer/reference/ev-fixtures.md +36 -35
- package/dist/agent-src/skills/prediction-pool-optimizer/reference/odds-and-bonus.md +45 -41
- package/dist/agent-src/skills/project-analysis-core/SKILL.md +4 -4
- package/dist/agent-src/skills/project-analysis-hypothesis-driven/SKILL.md +3 -3
- package/dist/agent-src/skills/project-analysis-react/SKILL.md +1 -1
- package/dist/agent-src/skills/project-analysis-symfony/SKILL.md +1 -1
- package/dist/agent-src/skills/project-analysis-zend-laminas/SKILL.md +2 -2
- package/dist/agent-src/skills/prompt-engineering-patterns/SKILL.md +1 -1
- package/dist/agent-src/skills/prompt-validator/SKILL.md +39 -39
- package/dist/agent-src/skills/quality-tools/SKILL.md +15 -15
- package/dist/agent-src/skills/react-shadcn-ui/SKILL.md +55 -19
- package/dist/agent-src/skills/react-shadcn-ui/reference/registry.md +29 -27
- package/dist/agent-src/skills/readme-writing-package/SKILL.md +2 -2
- package/dist/agent-src/skills/reasoning-orchestrator/SKILL.md +25 -25
- package/dist/agent-src/skills/recursive-verification/SKILL.md +6 -5
- package/dist/agent-src/skills/refine-prompt/SKILL.md +1 -1
- package/dist/agent-src/skills/refine-ticket/SKILL.md +20 -2
- package/dist/agent-src/skills/repomix-packer/SKILL.md +1 -1
- package/dist/agent-src/skills/requesting-code-review/SKILL.md +2 -2
- package/dist/agent-src/skills/roadmap-management/SKILL.md +80 -66
- package/dist/agent-src/skills/roadmap-writing/SKILL.md +84 -77
- package/dist/agent-src/skills/rule-refactor/SKILL.md +1 -1
- package/dist/agent-src/skills/screenshot-hygiene/evals/triggers.json +52 -0
- package/dist/agent-src/skills/security-audit/SKILL.md +26 -9
- package/dist/agent-src/skills/security-maturity-assessment/SKILL.md +38 -16
- package/dist/agent-src/skills/skill-improvement-pipeline/SKILL.md +14 -11
- package/dist/agent-src/skills/skill-writing/SKILL.md +9 -8
- package/dist/agent-src/skills/song-to-script/SKILL.md +93 -85
- package/dist/agent-src/skills/sql-writing/SKILL.md +2 -2
- package/dist/agent-src/skills/stakeholder-tradeoff/SKILL.md +4 -3
- package/dist/agent-src/skills/standards-from-config/SKILL.md +61 -43
- package/dist/agent-src/skills/subagent-orchestration/SKILL.md +22 -8
- package/dist/agent-src/skills/subagent-orchestration/prompts/README.md +28 -2
- package/dist/agent-src/skills/supply-chain-intake/SKILL.md +13 -13
- package/dist/agent-src/skills/systematic-debugging/SKILL.md +22 -21
- package/dist/agent-src/skills/tailwind-engineer/SKILL.md +1 -1
- package/dist/agent-src/skills/technical-specification/SKILL.md +5 -0
- package/dist/agent-src/skills/terraform/SKILL.md +2 -2
- package/dist/agent-src/skills/terragrunt/SKILL.md +8 -8
- package/dist/agent-src/skills/testing-anti-patterns/process-anti-patterns.md +1 -1
- package/dist/agent-src/skills/threat-modeling/SKILL.md +19 -13
- package/dist/agent-src/skills/universal-project-analysis/SKILL.md +1 -1
- package/dist/agent-src/skills/upstream-contribute/SKILL.md +0 -1
- package/dist/agent-src/skills/using-git-worktrees/SKILL.md +9 -9
- package/dist/agent-src/skills/validate-feature-fit/SKILL.md +3 -1
- package/dist/agent-src/skills/verify-completion-evidence/SKILL.md +4 -6
- package/dist/agent-src/skills/verify-repair-loop/SKILL.md +67 -61
- package/dist/agent-src/skills/video-director/SKILL.md +7 -7
- package/dist/agent-src/skills/worktree-lifecycle/SKILL.md +3 -3
- package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
- package/dist/agent-src/templates/contexts/knowledge-pages.md +47 -45
- package/dist/agent-src/templates/contexts/lesson-card.md +2 -2
- package/dist/agent-src/templates/contexts/tenant-boundaries.md +2 -2
- package/dist/agent-src/templates/contexts.md +1 -1
- package/dist/agent-src/templates/features.md +1 -1
- package/dist/agent-src/templates/roadmaps.md +125 -116
- package/dist/agent-src/templates/rule.md +2 -1
- package/dist/agent-src/templates/scripts/pr_risk_review.ts +0 -0
- package/dist/agent-src/templates/scripts/telemetry/aggregator.ts +0 -0
- package/dist/agent-src/templates/scripts/tier_usage_report.ts +2 -2
- package/dist/agent-src/templates/scripts/work_engine/directives/ui/polish.ts +2 -2
- package/dist/agent-src/templates/scripts/work_engine/directives/ui/review.ts +1 -1
- package/dist/agent-src/user-types/README.md +8 -8
- package/dist/agent-src/user-types/galabau-field-crew.md +34 -33
- package/dist/agent-src/user-types/metalworking-shop.md +35 -34
- package/dist/agent-src/user-types/truck-driver.md +22 -20
- package/dist/cli/python/workspace_roles.js +2 -2
- package/dist/cli/python/workspace_roles.js.map +1 -1
- package/dist/discovery/deprecation-report.md +1 -1
- package/dist/discovery/discovery-manifest.json +88 -62
- package/dist/discovery/discovery-manifest.json.sha256 +1 -1
- package/dist/discovery/discovery-manifest.summary.md +3 -3
- package/dist/discovery/orphan-report.md +1 -1
- package/dist/discovery/packs.json +6 -5
- package/dist/discovery/trust-report.md +2 -2
- package/dist/discovery/workspaces.json +5 -4
- package/dist/hooks/dispatch.js +186 -12
- package/dist/install/install.mjs +8 -0
- package/dist/mcp/registry-manifest.json +3 -3
- package/dist/mcp/server.json +2 -2
- package/dist/mcp/server.mjs +1199 -857
- package/dist/router.json +1 -1
- package/dist/scripts/_lib/compile_time_toggles.js +48 -0
- package/dist/scripts/_lib/compile_time_toggles.js.map +1 -0
- package/dist/scripts/condense.js +234 -217
- package/dist/scripts/condense.js.map +1 -1
- package/dist/server/schemas/settings.js +4 -0
- package/dist/server/schemas/settings.js.map +1 -1
- package/dist/shared/userMd/utils.js +30 -0
- package/dist/shared/userMd/utils.js.map +1 -1
- package/dist/ui/assets/index-BpSQt5vm.js.map +1 -1
- package/docs/guidelines/agent-infra/api-cost-levers.md +56 -5
- package/docs/guidelines/agent-infra/simplicity-and-goal-demos.md +93 -33
- package/package.json +1 -1
- package/src/agent-src/templates/scripts/pr_risk_review.ts +0 -0
- package/src/agent-src/templates/scripts/telemetry/aggregator.ts +0 -0
- package/src/agent-src/templates/scripts/tier_usage_report.ts +2 -2
- package/src/agent-src/templates/scripts/work_engine/directives/ui/polish.ts +2 -2
- package/src/agent-src/templates/scripts/work_engine/directives/ui/review.ts +1 -1
- package/src/config/agent-settings.template.yml +32 -2
- package/src/config/ci-local-parity.yml +142 -0
- package/src/config/gate-coverage.yml +127 -0
- package/src/config/preamble-payload-budget.json +44 -0
- package/src/scripts/_cli/cmd_doctor.ts +78 -2
- package/src/scripts/_lib/agent_user_profile.ts +381 -0
- package/src/scripts/_lib/agents_overlay.ts +9 -0
- package/src/scripts/_lib/anchor_eval.ts +311 -0
- package/src/scripts/_lib/cc_transcript.ts +316 -0
- package/src/scripts/_lib/compile_time_toggles.ts +79 -0
- package/src/scripts/_lib/confusables.ts +101 -0
- package/src/scripts/_lib/duplicate_scope_census.ts +77 -0
- package/src/scripts/_lib/managed_agents_folder.ts +181 -0
- package/src/scripts/_lib/payload_hash_drift.ts +126 -0
- package/src/scripts/_lib/preservation_migration.ts +291 -0
- package/src/scripts/_lib/retrieval_sanitize.ts +166 -2
- package/src/scripts/_lib/scan_scope.ts +115 -0
- package/src/scripts/_lib/user_global_memory_audit.ts +187 -0
- package/src/scripts/_lib/user_global_observations.ts +830 -0
- package/src/scripts/_lib/user_global_revocations.ts +110 -0
- package/src/scripts/_lib/user_memory_gate_counters.ts +291 -0
- package/src/scripts/ai_council/blind_review.ts +0 -0
- package/src/scripts/ai_council/budget_guard.ts +90 -11
- package/src/scripts/ai_council/bundler.ts +2 -2
- package/src/scripts/ai_council/clients.ts +59 -3
- package/src/scripts/ai_council/config.ts +38 -0
- package/src/scripts/ai_council/orchestrator.ts +54 -9
- package/src/scripts/ai_team/team_dispatch.ts +17 -6
- package/src/scripts/anchor_eval_falsify.ts +198 -0
- package/src/scripts/anchor_scoring_run.ts +239 -0
- package/src/scripts/annotate_discovery.ts +1 -65
- package/src/scripts/bench_quality_run.ts +168 -4
- package/src/scripts/cache_realization_report.ts +782 -0
- package/src/scripts/check_artefact_count_messaging.ts +5 -1
- package/src/scripts/check_augment_description_cap.ts +15 -4
- package/src/scripts/check_ci_local_parity.ts +317 -0
- package/src/scripts/check_condensation.ts +96 -191
- package/src/scripts/check_context_paths.ts +38 -9
- package/src/scripts/check_gate_coverage.ts +299 -0
- package/src/scripts/check_iron_law_prominence.ts +22 -1
- package/src/scripts/check_kernel_prefix_stability.ts +0 -0
- package/src/scripts/check_no_new_legacy_path.ts +16 -6
- package/src/scripts/check_no_roadmap_refs.ts +22 -9
- package/src/scripts/check_originality_freshness.ts +167 -0
- package/src/scripts/check_preamble_payload_budget.ts +130 -0
- package/src/scripts/check_proposal.ts +0 -0
- package/src/scripts/check_references.ts +0 -1
- package/src/scripts/check_safety_floor_untouched.ts +171 -24
- package/src/scripts/check_site_links.ts +62 -3
- package/src/scripts/ci_status.ts +0 -0
- package/src/scripts/cluster_near_miss_patterns.ts +0 -0
- package/src/scripts/code_graph/build.ts +0 -0
- package/src/scripts/command_suggester/types.ts +0 -0
- package/src/scripts/compile_router.ts +10 -14
- package/src/scripts/condense.sh +3 -4
- package/src/scripts/condense.ts +247 -228
- package/src/scripts/cost/track.mjs +168 -33
- package/src/scripts/cost_summary.ts +33 -1
- package/src/scripts/council_cli.ts +45 -3
- package/src/scripts/discovery_graph.ts +0 -0
- package/src/scripts/encoding_corpus.ts +500 -0
- package/src/scripts/encoding_corpus_report.ts +216 -0
- package/src/scripts/generate_index.ts +19 -2
- package/src/scripts/install-hooks.sh +2 -2
- package/src/scripts/learning_sidecar.ts +0 -0
- package/src/scripts/lint_confusables.ts +10 -72
- package/src/scripts/lint_featured_skills.ts +0 -0
- package/src/scripts/lint_hidden_unicode.ts +208 -0
- package/src/scripts/lint_load_context.ts +17 -5
- package/src/scripts/lint_new_skill_gate.ts +9 -3
- package/src/scripts/lint_no_python_twin_rationale.ts +17 -2
- package/src/scripts/lint_originality.ts +1 -1
- package/src/scripts/lint_skill_originality.ts +1 -1
- package/src/scripts/lint_ticket_buildable.ts +1 -1
- package/src/scripts/mcp_server/tools.ts +4 -4
- package/src/scripts/measure_scope_dedup.ts +224 -0
- package/src/scripts/memory_lookup.ts +0 -0
- package/src/scripts/mine_session.ts +98 -0
- package/src/scripts/orchestration_payload_hash_drift.ts +145 -0
- package/src/scripts/preamble_byte_census.ts +574 -0
- package/src/scripts/probe_skill_registration.ts +2 -2
- package/src/scripts/redact_hook_capture.ts +13 -0
- package/src/scripts/release.ts +65 -10
- package/src/scripts/router_telemetry.ts +1 -1
- package/src/scripts/second_brain_retrieval.ts +14 -4
- package/src/scripts/skill_linter.ts +5 -0
- package/src/scripts/surface-tiers.yml +2 -0
- package/src/scripts/validate_pack_yaml.ts +0 -0
- package/src/server/schemas/settings.ts +8 -0
- package/src/shared/userMd/utils.ts +31 -0
- package/dist/agent-src/rules/telegraph-speak.md +0 -87
|
@@ -109,18 +109,69 @@ different model.
|
|
|
109
109
|
|
|
110
110
|
## Claude Code note
|
|
111
111
|
|
|
112
|
-
In Claude Code, prompt caching is automatic
|
|
113
|
-
is cheap, so keeping a stable prefix pays off without
|
|
114
|
-
`cache_control`. The session-level hygiene levers are `/clear`
|
|
115
|
-
shed accumulated context, plus subagent delegation for
|
|
116
|
-
never lands in the main context window.
|
|
112
|
+
In Claude Code, prompt caching is automatic for the **main loop** — resending
|
|
113
|
+
the same context prefix is cheap, so keeping a stable prefix pays off without
|
|
114
|
+
any explicit `cache_control`. The session-level hygiene levers are `/clear`
|
|
115
|
+
and `/compact` to shed accumulated context, plus subagent delegation for
|
|
116
|
+
verbose output so it never lands in the main context window.
|
|
117
|
+
|
|
118
|
+
**Subagents and forks pay a different cache economy — verified against host
|
|
119
|
+
version 2.1.220 (2026-07-30), re-check on drift:**
|
|
120
|
+
|
|
121
|
+
- A **named subagent** starts its own conversation with its own system
|
|
122
|
+
prompt and tool set. It builds its own cache from scratch, so its **first
|
|
123
|
+
call has no cache hit** — the entire per-spawn preamble (rules, tools,
|
|
124
|
+
dispatch prompt) is a cold write. Subagents use the **five-minute TTL**
|
|
125
|
+
even on a subscription; there is no per-agent setting to change that (see
|
|
126
|
+
`## Known upstream costs` below).
|
|
127
|
+
- A **fork** inherits the parent's system prompt, tools, and conversation
|
|
128
|
+
history exactly, so its first request **reads the parent's cache** instead
|
|
129
|
+
of writing a fresh one — the only documented mechanism that shares a cache
|
|
130
|
+
across a dispatch boundary. Forking forces background mode, which changes
|
|
131
|
+
the tool set and therefore invalidates the very prefix that motivated the
|
|
132
|
+
fork; weigh that cost before reaching for it — see the fork-vs-subagent
|
|
133
|
+
ordering rule in See also.
|
|
134
|
+
- Either way, the **cold-start preamble is re-written on every spawn** — the
|
|
135
|
+
always-loaded rule set, the tool definitions, and the dispatch prompt are
|
|
136
|
+
not shared across separate subagent instances. Fan-out (many subagents
|
|
137
|
+
from one parent) multiplies this cost by cohort size; see
|
|
138
|
+
`## Known upstream costs` below for the fan-out re-prefill issue this
|
|
139
|
+
package cannot fix.
|
|
140
|
+
|
|
141
|
+
## Known upstream costs
|
|
142
|
+
|
|
143
|
+
Host-controlled behaviour this package has confirmed but cannot change at
|
|
144
|
+
any layer. Each entry carries the host version observed and the command to
|
|
145
|
+
re-verify it — a stale entry degrades into a dated observation, never a
|
|
146
|
+
false promise, when Anthropic changes the behaviour underneath it.
|
|
147
|
+
|
|
148
|
+
| Cost | Observed on | Re-verify |
|
|
149
|
+
|---|---|---|
|
|
150
|
+
| Fan-out (`do-in-parallel`-shaped dispatch) re-prefills the parent-accumulated context **per child** — the waste scales linearly with fan-out width, worst exactly where fan-out is most valuable (anthropics/claude-code#81389, open). No fix at any layer. | Claude Code 2.1.220, 2026-07-30 | `claude --version`; re-check the linked issue for a status change |
|
|
151
|
+
| Host-dispatched subagents are pinned to the **five-minute** cache TTL regardless of subscription tier or any environment variable; `ENABLE_PROMPT_CACHING_1H` does not apply to them. | Claude Code 2.1.220, 2026-07-30 | `claude --version`; re-check the official caching docs for a subagent-TTL setting |
|
|
152
|
+
|
|
153
|
+
Neither entry implies a package-side fix exists or is planned — both are
|
|
154
|
+
request-construction facts inside the host binary, outside this package's
|
|
155
|
+
reach. This package's own scope is measurement and payload size (what it
|
|
156
|
+
authors), never subagent request construction (what the host authors).
|
|
117
157
|
|
|
118
158
|
## See also
|
|
119
159
|
|
|
160
|
+
- [`cache-economy-refusals`](../../../agents/settings/contexts/cache-economy-refusals.md) —
|
|
161
|
+
the measured cache figures behind the Claude Code note above, plus the
|
|
162
|
+
refusals (no interception proxy, no blanket 1h TTL, no cache-hit auto-tuning)
|
|
163
|
+
recorded so they are not rebuilt.
|
|
164
|
+
|
|
120
165
|
- [`model-recommendation.md`](model-recommendation.md) — tier routing (the
|
|
121
166
|
capability band behind lever 3).
|
|
122
167
|
- [`size-and-scope.md`](size-and-scope.md) — token discipline for the artifacts
|
|
123
168
|
that become the cached prefix.
|
|
169
|
+
- [`subagent-orchestration/prompts/README.md`](../../../src/skills/subagent-orchestration/prompts/README.md)
|
|
170
|
+
§ Prompt-cache discipline — sibling-uniformity rules and the
|
|
171
|
+
fork-vs-subagent dispatch ordering that follow from this cache economy.
|
|
172
|
+
- [`docs/contracts/ai-council-config.md`](../../contracts/ai-council-config.md)
|
|
173
|
+
§ `prompt_cache.ttl` — the one surface where this package DOES control a
|
|
174
|
+
cache-control TTL (the council's own Anthropic calls, never host subagents).
|
|
124
175
|
- The Claude Code `claude-api` plugin skill (external, not vendored here) — the
|
|
125
176
|
authoritative, versioned API reference these figures derive from; re-check it
|
|
126
177
|
when Anthropic pricing or the caching/batch surface changes.
|
|
@@ -1,3 +1,13 @@
|
|
|
1
|
+
---
|
|
2
|
+
demo_for: minimal-safe-diff, think-before-action
|
|
3
|
+
layer: pattern-memory
|
|
4
|
+
prose_delta:
|
|
5
|
+
rule_chars_before: 5927
|
|
6
|
+
rule_chars_after: 6903
|
|
7
|
+
measured_at: lint-examples-shape-conformance-pass
|
|
8
|
+
note: "Counts are of THIS demo file, measured with wc -c before and after the pass. The delta is frontmatter plus the Demo / Wrong shape / Right shape / Failure mode / Why it works headings required by lint_examples — no prose was migrated out of a rule and none was removed; every code block is byte-identical."
|
|
9
|
+
---
|
|
10
|
+
|
|
1
11
|
# Simplicity and Goal Discipline — wrong/right demos
|
|
2
12
|
|
|
3
13
|
Recognition surface for [`minimal-safe-diff § Anti-over-engineering`](../../src/rules/minimal-safe-diff.md)
|
|
@@ -7,11 +17,13 @@ execution clause in `think-before-action`. Per council convergence
|
|
|
7
17
|
the violation cannot recognize it, no matter how crisp the checklist question.
|
|
8
18
|
Match your diff against the *right* column before presenting.
|
|
9
19
|
|
|
10
|
-
## 1
|
|
20
|
+
## Demo 1 — Over-abstraction vs. one function
|
|
11
21
|
|
|
12
22
|
**Ask:** "Add a function to calculate a percentage discount."
|
|
13
23
|
|
|
14
|
-
|
|
24
|
+
### Wrong shape
|
|
25
|
+
|
|
26
|
+
Strategy pattern for a single caller (PHP):
|
|
15
27
|
|
|
16
28
|
```php
|
|
17
29
|
interface DiscountStrategy { public function calculate(float $amount): float; }
|
|
@@ -21,7 +33,13 @@ final readonly class DiscountConfig { /* strategy, minPurchase, maxDiscount */ }
|
|
|
21
33
|
final class DiscountCalculator { /* 30+ lines of orchestration */ }
|
|
22
34
|
```
|
|
23
35
|
|
|
24
|
-
**
|
|
36
|
+
**Failure mode:** the wrong version is not "bad code" — it is *premature*
|
|
37
|
+
code: harder to read, more surface to test, and speculative until the
|
|
38
|
+
requirement exists.
|
|
39
|
+
|
|
40
|
+
### Right shape
|
|
41
|
+
|
|
42
|
+
One function until the second discount type is real:
|
|
25
43
|
|
|
26
44
|
```php
|
|
27
45
|
function calculateDiscount(float $amount, float $percent): float
|
|
@@ -30,17 +48,19 @@ function calculateDiscount(float $amount, float $percent): float
|
|
|
30
48
|
}
|
|
31
49
|
```
|
|
32
50
|
|
|
33
|
-
|
|
51
|
+
### Why it works
|
|
52
|
+
|
|
53
|
+
No second caller, no second strategy → no abstraction. When the
|
|
34
54
|
second type genuinely arrives, refactor then (`prefer-enums-over-literals` /
|
|
35
|
-
Strategy sniff test governs that moment).
|
|
36
|
-
code" — it is *premature* code: harder to read, more surface to test, and
|
|
37
|
-
speculative until the requirement exists.
|
|
55
|
+
Strategy sniff test governs that moment).
|
|
38
56
|
|
|
39
|
-
## 2
|
|
57
|
+
## Demo 2 — Speculative features vs. just-what-was-asked
|
|
40
58
|
|
|
41
59
|
**Ask:** "Save user preferences to the database."
|
|
42
60
|
|
|
43
|
-
|
|
61
|
+
### Wrong shape
|
|
62
|
+
|
|
63
|
+
Options nobody requested (TypeScript):
|
|
44
64
|
|
|
45
65
|
```ts
|
|
46
66
|
class PreferenceManager {
|
|
@@ -52,7 +72,13 @@ class PreferenceManager {
|
|
|
52
72
|
}
|
|
53
73
|
```
|
|
54
74
|
|
|
55
|
-
**
|
|
75
|
+
**Failure mode:** every optional parameter with one call site, every
|
|
76
|
+
"flexibility" flag, and every handler for a scenario that cannot occur is
|
|
77
|
+
speculative complexity.
|
|
78
|
+
|
|
79
|
+
### Right shape
|
|
80
|
+
|
|
81
|
+
The ask, nothing else:
|
|
56
82
|
|
|
57
83
|
```ts
|
|
58
84
|
async function savePreferences(db: Db, userId: number, prefs: Prefs) {
|
|
@@ -61,66 +87,94 @@ async function savePreferences(db: Db, userId: number, prefs: Prefs) {
|
|
|
61
87
|
}
|
|
62
88
|
```
|
|
63
89
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
90
|
+
### Why it works
|
|
91
|
+
|
|
92
|
+
Add caching when performance data demands it, validation when bad
|
|
67
93
|
data appears, merging when the requirement lands.
|
|
68
94
|
|
|
69
|
-
## 3
|
|
95
|
+
## Demo 3 — Drive-by refactor vs. surgical diff
|
|
70
96
|
|
|
71
97
|
**Ask:** "Fix the bug where an empty email crashes the validator."
|
|
72
98
|
|
|
73
|
-
|
|
99
|
+
### Wrong shape
|
|
100
|
+
|
|
101
|
+
The fix PLUS improved email regex, new username length checks,
|
|
74
102
|
rewritten comments, and a fresh docstring — four changes, one was asked.
|
|
75
103
|
|
|
76
|
-
**
|
|
104
|
+
**Failure mode:** the "improvements" belong in a follow-up proposed via
|
|
105
|
+
`active-remediation`'s note-and-ask ladder — not smuggled into the bug fix.
|
|
106
|
+
|
|
107
|
+
### Right shape
|
|
108
|
+
|
|
109
|
+
Only the lines that make the empty-email case safe change; every
|
|
77
110
|
other line of the function is byte-identical.
|
|
78
111
|
|
|
79
|
-
|
|
80
|
-
(`minimal-safe-diff`). The "improvements" belong in a follow-up proposed via
|
|
81
|
-
`active-remediation`'s note-and-ask ladder — not smuggled into the bug fix.
|
|
112
|
+
### Why it works
|
|
82
113
|
|
|
83
|
-
|
|
114
|
+
Every changed line must trace to the stated task
|
|
115
|
+
(`minimal-safe-diff`).
|
|
116
|
+
|
|
117
|
+
## Demo 4 — Style drift vs. match-existing-style
|
|
84
118
|
|
|
85
119
|
**Ask:** "Add logging to the upload function."
|
|
86
120
|
|
|
87
|
-
|
|
121
|
+
### Wrong shape
|
|
122
|
+
|
|
123
|
+
The diff adds logging AND flips quote style, adds type hints,
|
|
88
124
|
reshapes the boolean return, reflows whitespace — the reviewer can no longer
|
|
89
125
|
see the logging change.
|
|
90
126
|
|
|
91
|
-
**
|
|
127
|
+
**Failure mode:** a diff that reformats while changing behavior hides the
|
|
128
|
+
behavior change.
|
|
129
|
+
|
|
130
|
+
### Right shape
|
|
131
|
+
|
|
132
|
+
Logger import + three log lines, inserted in the file's existing
|
|
92
133
|
style (its quoting, its spacing, its return pattern), even where you would
|
|
93
134
|
personally write it differently.
|
|
94
135
|
|
|
95
|
-
|
|
96
|
-
A diff that reformats while changing behavior hides the behavior change.
|
|
136
|
+
### Why it works
|
|
97
137
|
|
|
98
|
-
|
|
138
|
+
Style consistency is a repo property, not a per-diff taste decision.
|
|
139
|
+
|
|
140
|
+
## Demo 5 — Own-orphan vs. pre-existing dead code
|
|
99
141
|
|
|
100
142
|
**Ask:** "Replace the legacy formatter call in `processA` with the new one."
|
|
101
143
|
|
|
102
|
-
|
|
144
|
+
### Wrong shape
|
|
145
|
+
|
|
146
|
+
**Too little:** `processA` no longer calls `legacyFormat()`, but the
|
|
103
147
|
now-unused import and the helper it alone referenced stay behind — the diff
|
|
104
148
|
shipped its own litter.
|
|
105
149
|
|
|
106
|
-
**
|
|
150
|
+
**Too much:** while in the file, the agent also deletes
|
|
107
151
|
`oldHelper()`, which `processB` — untouched by this diff — still references
|
|
108
152
|
in another module, or which was already orphaned *before* this task.
|
|
109
153
|
|
|
110
|
-
**
|
|
154
|
+
**Failure mode:** two directions of the same error — the diff shipped its own
|
|
155
|
+
litter (too little), or it deleted code that untouched files still reference,
|
|
156
|
+
or that was already orphaned before this task (too much).
|
|
157
|
+
|
|
158
|
+
### Right shape
|
|
159
|
+
|
|
160
|
+
Remove exactly the imports/variables/functions whose **last
|
|
111
161
|
reference disappeared in a file this diff touched**; anything still
|
|
112
162
|
referenced from untouched files — or orphaned before the task — is
|
|
113
163
|
pre-existing debt: mention it, don't delete it.
|
|
114
164
|
|
|
115
|
-
|
|
165
|
+
### Why it works
|
|
166
|
+
|
|
167
|
+
The boundary is mechanical (grep after editing), so there is no
|
|
116
168
|
judgment call to rationalize — see
|
|
117
169
|
[`minimal-safe-diff § Own-orphan cleanup`](../../src/rules/minimal-safe-diff.md#own-orphan-cleanup).
|
|
118
170
|
|
|
119
|
-
## 6
|
|
171
|
+
## Demo 6 — Vague plan vs. verifiable per-step plan
|
|
120
172
|
|
|
121
173
|
**Ask:** "Add rate limiting to the API."
|
|
122
174
|
|
|
123
|
-
|
|
175
|
+
### Wrong shape
|
|
176
|
+
|
|
177
|
+
Unverifiable narration:
|
|
124
178
|
|
|
125
179
|
```
|
|
126
180
|
1. Review the code
|
|
@@ -129,7 +183,11 @@ judgment call to rationalize — see
|
|
|
129
183
|
4. Test the changes
|
|
130
184
|
```
|
|
131
185
|
|
|
132
|
-
**
|
|
186
|
+
**Failure mode:** a step without a `verify:` is an assumption.
|
|
187
|
+
|
|
188
|
+
### Right shape
|
|
189
|
+
|
|
190
|
+
Every step carries its check:
|
|
133
191
|
|
|
134
192
|
```
|
|
135
193
|
1. In-memory limit on one endpoint → verify: 11th request in a minute → 429 (test)
|
|
@@ -137,7 +195,9 @@ judgment call to rationalize — see
|
|
|
137
195
|
3. Shared store backend → verify: counter survives app restart; two instances share the count
|
|
138
196
|
```
|
|
139
197
|
|
|
140
|
-
|
|
198
|
+
### Why it works
|
|
199
|
+
|
|
200
|
+
Strong criteria let the
|
|
141
201
|
loop run independently (`verify-before-complete` then has something to
|
|
142
202
|
check); "make it work" guarantees clarification churn after the fact instead
|
|
143
203
|
of before.
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@event4u/agent-config",
|
|
3
3
|
"mcpName": "io.github.event4u-app/agent-config",
|
|
4
|
-
"version": "9.
|
|
4
|
+
"version": "9.10.0",
|
|
5
5
|
"description": "Governed skills, rules and commands for AI coding tools (Claude Code, Cursor, Windsurf, Copilot) — every claim machine-checked, including \"zero runtime daemon\".",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"private": false,
|
|
Binary file
|
|
Binary file
|
|
@@ -234,7 +234,7 @@ function _within_window(ts_bucket: string, window_days: number | null): boolean
|
|
|
234
234
|
return ms >= Date.now() - window_days * 24 * 60 * 60 * 1000;
|
|
235
235
|
}
|
|
236
236
|
|
|
237
|
-
type BucketKey = string; // `${tier}
|
|
237
|
+
type BucketKey = string; // `${tier}\0${command}` — composite (tier, command) key.
|
|
238
238
|
interface RowStats {
|
|
239
239
|
count: number;
|
|
240
240
|
distinct_users: number;
|
|
@@ -274,7 +274,7 @@ function aggregate(log_path: string, window_days: number): AggregateResult {
|
|
|
274
274
|
}
|
|
275
275
|
kept += 1;
|
|
276
276
|
const tier = Math.trunc(rec.tier);
|
|
277
|
-
const key = `${tier}
|
|
277
|
+
const key = `${tier}\0${rec.command}`;
|
|
278
278
|
if (!keyMeta.has(key)) {
|
|
279
279
|
keyMeta.set(key, { tier, command: rec.command });
|
|
280
280
|
counts.set(key, 0);
|
|
@@ -336,7 +336,7 @@ function _classify_token_violations(
|
|
|
336
336
|
tokens: Record<string, Any>,
|
|
337
337
|
): [Record<string, Any>[], Record<string, Any>[]] {
|
|
338
338
|
const matched: Record<string, Any>[] = [];
|
|
339
|
-
// Insertion-ordered map keyed by `${category}
|
|
339
|
+
// Insertion-ordered map keyed by `${category}\0${value}` to mirror the
|
|
340
340
|
// Python `dict[tuple[str, str], int]` insertion order.
|
|
341
341
|
const unmatched_counts = new Map<string, { category: string; value: string; count: number }>();
|
|
342
342
|
for (const finding of findings) {
|
|
@@ -356,7 +356,7 @@ function _classify_token_violations(
|
|
|
356
356
|
matched.push(finding);
|
|
357
357
|
continue;
|
|
358
358
|
}
|
|
359
|
-
const key = `${category}
|
|
359
|
+
const key = `${category}\0${value}`;
|
|
360
360
|
const existing = unmatched_counts.get(key);
|
|
361
361
|
if (existing) {
|
|
362
362
|
existing.count += 1;
|
|
@@ -294,7 +294,7 @@ function _filter_known(violations: Any[], known: Any[]): Any[] {
|
|
|
294
294
|
* scalars, mirroring Python tuple-equality in a JS `Set`.
|
|
295
295
|
*/
|
|
296
296
|
function _keyOf(rule: Any, selector: Any): string {
|
|
297
|
-
return `${_tag(rule)}
|
|
297
|
+
return `${_tag(rule)}\0${_tag(selector)}`;
|
|
298
298
|
}
|
|
299
299
|
|
|
300
300
|
function _tag(v: Any): string {
|
|
@@ -145,6 +145,36 @@ rule_loading_tier: __RULE_LOADING_TIER__
|
|
|
145
145
|
lean_projection:
|
|
146
146
|
mode: eager-all
|
|
147
147
|
|
|
148
|
+
# --- Telegraph condensation (output-side) ---
|
|
149
|
+
#
|
|
150
|
+
# speak_scope: off | prose_only | aggressive (QUOTE the value — bare `off` is a
|
|
151
|
+
# YAML 1.1 boolean, not the string)
|
|
152
|
+
#
|
|
153
|
+
# `off` is the shipped default per docs/adrs/telegraph/0001-default-off-until-bench.md
|
|
154
|
+
# (Status: accepted) and docs/contracts/condensation-default-kill-criterion.md.
|
|
155
|
+
# Reason it is off: the only output-side bench (telegraph-v1, n=10, 2026-05-16)
|
|
156
|
+
# measured median vs_terse -9.27% (API counts) / -5.47% (exact cl100k_base
|
|
157
|
+
# re-analysis) — telegraph emits MORE tokens than a plain "be terse" instruction.
|
|
158
|
+
# The kill-criterion table therefore lands on "criterion not met — defer" and the
|
|
159
|
+
# telemetry multiplier stays suspended (0.9155 < 1.0).
|
|
160
|
+
#
|
|
161
|
+
# NOTE: `speak_scope: off` disables the BEHAVIOUR but not the COST — the projector
|
|
162
|
+
# gates this rule on `telegraph.speak`, never on speak_scope, so under
|
|
163
|
+
# `lean_projection.mode: eager-all` the ~982-token body still ships every session.
|
|
164
|
+
# Set `speak: false` for zero-cost dormancy.
|
|
165
|
+
#
|
|
166
|
+
# Stated explicitly here because until 2026-07-29 this default existed only in
|
|
167
|
+
# prose — and two prose sources disagreed (the rule said prose_only, the accepted
|
|
168
|
+
# ADR said off). Do not flip without a passing output-side bench.
|
|
169
|
+
telegraph:
|
|
170
|
+
# speak: false = DORMANT (the shipped default per docs/adrs/telegraph/0002).
|
|
171
|
+
# The rule is omitted from dist/router.json entirely, so its ~982-token body
|
|
172
|
+
# never ships. This — not speak_scope — is the lever that stops the cost:
|
|
173
|
+
# compile_router gates on `speak` and never reads speak_scope.
|
|
174
|
+
# Set true only after an output-side bench clears the kill-criterion bar.
|
|
175
|
+
speak: false
|
|
176
|
+
speak_scope: "off"
|
|
177
|
+
|
|
148
178
|
# --- Token-rich skills governance ---
|
|
149
179
|
#
|
|
150
180
|
# Skills marked `token_budget_class: rich` in their frontmatter are exempt
|
|
@@ -642,7 +672,7 @@ subagents:
|
|
|
642
672
|
# delegate frontier-priced or speculative work. `resolveShippedDefault()`
|
|
643
673
|
# remains the telemetry-driven DEMOTION gate: a measured regression demotes
|
|
644
674
|
# back to `ask`.
|
|
645
|
-
auto: on
|
|
675
|
+
auto: "on"
|
|
646
676
|
|
|
647
677
|
# Route delegable sub-tasks to the lowest-capable model tier (cost + speed
|
|
648
678
|
# via model downshift). true (default) = downshift per declared model_tier;
|
|
@@ -1114,7 +1144,7 @@ decision_engine:
|
|
|
1114
1144
|
# low = refuse to advance when band is below low
|
|
1115
1145
|
# medium = refuse when below medium
|
|
1116
1146
|
# high = refuse when below high
|
|
1117
|
-
min_confidence: off
|
|
1147
|
+
min_confidence: "off"
|
|
1118
1148
|
|
|
1119
1149
|
# Risk-class ceiling for Phase=Implement.
|
|
1120
1150
|
# off = no ceiling (default)
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
# CI ↔ local parity manifest — the input to `check_ci_local_parity.ts`.
|
|
2
|
+
#
|
|
3
|
+
# WHY THIS EXISTS
|
|
4
|
+
# ---------------
|
|
5
|
+
# The local aggregate (`task ci`) and the CI workflows drifted apart in BOTH
|
|
6
|
+
# directions, and each direction cost real defects:
|
|
7
|
+
#
|
|
8
|
+
# CI-only — a gate CI runs that no local chain reaches. The contributor pushes,
|
|
9
|
+
# CI goes red, and the fix costs a round trip. Measured 2026-07-30:
|
|
10
|
+
# check_portability and check_adr_frontmatter turned a PR red that a
|
|
11
|
+
# local run would have caught, twice in one session.
|
|
12
|
+
#
|
|
13
|
+
# local-only — a gate `task ci` runs that no workflow does. Nothing enforces it
|
|
14
|
+
# remotely, so a defect merges. Measured: check-index had verified the
|
|
15
|
+
# artefact index for a long time and ran in no workflow, which is how
|
|
16
|
+
# 16 stale rows in agents/index.md + docs/catalog.md reached main.
|
|
17
|
+
# check_bridge_derivation is the same shape.
|
|
18
|
+
#
|
|
19
|
+
# A gate that exists on one side only drifts silently on the other. This manifest
|
|
20
|
+
# plus the checker makes each direction a declared, reviewable choice instead of an
|
|
21
|
+
# accident.
|
|
22
|
+
#
|
|
23
|
+
# THE CONTRACT
|
|
24
|
+
# ------------
|
|
25
|
+
# The checker DERIVES both sides — it never trusts a hand-maintained list of gates:
|
|
26
|
+
#
|
|
27
|
+
# CI side parsed from .github/workflows/*.yml — every `./scripts-run
|
|
28
|
+
# src/scripts/<name>`, `npx tsx src/scripts/<name>`, `node <path>` and
|
|
29
|
+
# `task <name>` invocation.
|
|
30
|
+
# local side the transitive closure of the `task ci` / `task consistency` chains
|
|
31
|
+
# plus the pre-push hook, resolved through taskfiles/*.yml.
|
|
32
|
+
#
|
|
33
|
+
# Anything present on one side and absent on the other must appear below with a
|
|
34
|
+
# reason, or the checker fails. That is the whole mechanism: drift is allowed, but
|
|
35
|
+
# only on the record.
|
|
36
|
+
#
|
|
37
|
+
# Parity is by gate ID, not by argv. Three gates run locally in a cheap variant and
|
|
38
|
+
# in CI in a strict one (check_release_published bare vs --strict --check-npm,
|
|
39
|
+
# build_cloud_bundle --check vs --all --clean, build_linear_digest offline vs live).
|
|
40
|
+
# They need no declaration: the parity question is "can a contributor run this before
|
|
41
|
+
# pushing at all", and the answer is yes. Declaring them anyway produced exactly the
|
|
42
|
+
# dead exemption the stale-declaration check exists to catch — it was removed rather
|
|
43
|
+
# than kept, because an exemption nothing needs is one the next reader trusts.
|
|
44
|
+
#
|
|
45
|
+
# WHY NOT JUST "RUN task ci BEFORE EVERY PUSH"
|
|
46
|
+
# --------------------------------------------
|
|
47
|
+
# Because a pre-push gate that is red for a reason the contributor did not cause
|
|
48
|
+
# either blocks every push or trains people to ignore it, and the second is worse
|
|
49
|
+
# than no gate. Two measured bounds from the same sweep:
|
|
50
|
+
#
|
|
51
|
+
# bucket A (repo-content gates) sum to ~14.5s → affordable before a push
|
|
52
|
+
# check_enforcement_coverage alone is 30.7s → belongs in the post-CI loop
|
|
53
|
+
#
|
|
54
|
+
# So `pre_push_budget_seconds` below is a real budget, not a wish. A gate declared
|
|
55
|
+
# `local_only` or `both` that exceeds it is reported, not silently added to the hook.
|
|
56
|
+
|
|
57
|
+
# Wall-clock ceiling for the pre-push gate set, in seconds. Derived from the
|
|
58
|
+
# measured bucket-A sum (14.5s) plus headroom; the existing hook already costs
|
|
59
|
+
# `task consistency` + eslint + tsc, so this is a bounded increase, not a new tax.
|
|
60
|
+
pre_push_budget_seconds: 25
|
|
61
|
+
|
|
62
|
+
# Gates CI runs that no local chain reaches — each needs a reason it cannot or
|
|
63
|
+
# should not run locally. `reason` is free text; `class` is one of:
|
|
64
|
+
# network needs a token, a registry, or a live API
|
|
65
|
+
# release verifies tag / release / published-package state
|
|
66
|
+
# artifact needs something only CI builds (site, tarball, bundle)
|
|
67
|
+
# benchmark it is a measurement, timing-sensitive or paid
|
|
68
|
+
# matrix needs an OS or Node version this machine is not
|
|
69
|
+
ci_only:
|
|
70
|
+
- id: adoption_snapshot
|
|
71
|
+
class: network
|
|
72
|
+
reason: "live api.npmjs.org + api.github.com calls, reads GITHUB_TOKEN"
|
|
73
|
+
- id: sync_github_metadata
|
|
74
|
+
class: network
|
|
75
|
+
reason: "hard-fails without GITHUB_TOKEN; mutates repo topics/description via the API"
|
|
76
|
+
- id: check_release_pr_shape
|
|
77
|
+
class: release
|
|
78
|
+
reason: "shells out to `gh pr diff <n>` — needs a live PR and a token"
|
|
79
|
+
- id: check_release_adjacent_health
|
|
80
|
+
class: release
|
|
81
|
+
reason: "queries GitHub Actions run history via gh"
|
|
82
|
+
- id: bench_drift_check
|
|
83
|
+
class: benchmark
|
|
84
|
+
reason: "consumes rolling bench reports that only a bench run produces"
|
|
85
|
+
- id: bench_baseline_ready
|
|
86
|
+
class: benchmark
|
|
87
|
+
reason: "same — no local baseline to compare against"
|
|
88
|
+
- id: bench_hook_latency
|
|
89
|
+
class: benchmark
|
|
90
|
+
reason: "a latency measurement; 24.0s measured and timing-sensitive on a loaded machine"
|
|
91
|
+
- id: check_site_links
|
|
92
|
+
class: artifact
|
|
93
|
+
reason: "needs the built Starlight site; exits 2 unbuilt or stale (registered in gate-coverage.yml with unavailable_exit: 2)"
|
|
94
|
+
- id: pack_mcp_content
|
|
95
|
+
class: artifact
|
|
96
|
+
reason: "writes the tracked internal/workers/mcp/content.json deploy artifact — a local run dirties the tree"
|
|
97
|
+
- id: consumer_matrix
|
|
98
|
+
class: matrix
|
|
99
|
+
reason: "consumes the npm pack tarball across a Node version matrix"
|
|
100
|
+
- id: cross_model_smoke
|
|
101
|
+
class: network
|
|
102
|
+
reason: "paid cross-model canary calls, secret-gated"
|
|
103
|
+
- id: trigger_eval_rotation
|
|
104
|
+
class: network
|
|
105
|
+
reason: "paid model calls"
|
|
106
|
+
- id: self_review_gate
|
|
107
|
+
class: network
|
|
108
|
+
reason: "--dry-run in the PR job; the live variant is a paid model call on the PR diff"
|
|
109
|
+
- id: bench_run
|
|
110
|
+
class: benchmark
|
|
111
|
+
reason: "paid model calls against a corpus"
|
|
112
|
+
- id: bench_runner
|
|
113
|
+
class: benchmark
|
|
114
|
+
reason: "the runner behind bench_run — same paid calls"
|
|
115
|
+
- id: skill_trigger_eval
|
|
116
|
+
class: benchmark
|
|
117
|
+
reason: "paid cross-model trigger-activation eval; the offline structural half is check_trigger_evals, which IS local"
|
|
118
|
+
- id: evaluator_umbrella
|
|
119
|
+
class: artifact
|
|
120
|
+
reason: "shell umbrella over CI-only evaluator fixtures"
|
|
121
|
+
- id: smoke_host_loadability
|
|
122
|
+
class: artifact
|
|
123
|
+
reason: "temp-HOME install + `claude plugin validate`; measured >100s, did not finish inside a 2-minute budget"
|
|
124
|
+
- id: install
|
|
125
|
+
class: matrix
|
|
126
|
+
reason: "the installer end-to-end against a scratch HOME on the OS matrix; a local run would rewrite this machine's own agent config"
|
|
127
|
+
- id: release
|
|
128
|
+
class: release
|
|
129
|
+
reason: "tags, bumps, publishes, opens the release PR — the release itself"
|
|
130
|
+
|
|
131
|
+
# Gates a local chain runs that no workflow does — each needs a reason it is not
|
|
132
|
+
# worth remote enforcement, OR it should simply be added to a workflow. Prefer
|
|
133
|
+
# adding it: a local-only gate is the direction that let real defects merge.
|
|
134
|
+
local_only:
|
|
135
|
+
- id: check_knowledge_sharing
|
|
136
|
+
class: staging-scoped
|
|
137
|
+
reason: >
|
|
138
|
+
Inspects the STAGED set (a gitignored intake file staged anyway via `git add -f`),
|
|
139
|
+
and CI has no staged set — the commit already happened by the time a workflow
|
|
140
|
+
runs. The committed-tree equivalent ("a file that should be gitignored is
|
|
141
|
+
tracked") is a different invariant and would need its own mode, so this is not
|
|
142
|
+
the local-only-by-neglect case the manifest warns about.
|