@event4u/agent-config 14.11.0 → 14.13.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 +368 -516
- package/CONTRIBUTING.md +38 -0
- package/CREDITS.md +135 -0
- package/NOTICE +13 -0
- package/README.md +8 -6
- package/dist/agent-src/commands/analyze/inbox.md +109 -2
- package/dist/agent-src/commands/feature/dev.md +7 -2
- package/dist/agent-src/commands/ghostwriter/write.md +5 -1
- package/dist/agent-src/commands/implement-ticket.md +1 -1
- package/dist/agent-src/commands/mission/upgrade.md +1 -1
- package/dist/agent-src/commands/orchestrate.md +2 -2
- package/dist/agent-src/commands/post-as/me.md +5 -1
- package/dist/agent-src/commands/pr/merge.md +19 -6
- package/dist/agent-src/commands/roadmap/process-full.md +19 -5
- package/dist/agent-src/commands/tdd/red.md +12 -2
- package/dist/agent-src/commands/work.md +1 -1
- package/dist/agent-src/contexts/communication/rules-auto/token-efficiency-mechanics.md +40 -0
- package/dist/agent-src/contexts/execution/auto-dispatch-classification.md +5 -2
- package/dist/agent-src/contexts/execution/autonomy-mechanics.md +21 -0
- package/dist/agent-src/contexts/execution/evidence-discipline.md +26 -0
- package/dist/agent-src/contexts/execution/orchestration-telemetry.md +1 -0
- package/dist/agent-src/contexts/execution/subagent-response-contract.md +40 -0
- package/dist/agent-src/contexts/execution/subagent-steering.md +13 -1
- package/dist/agent-src/contexts/execution/terminal-states.md +96 -0
- package/dist/agent-src/rules/artifact-drafting-protocol.md +1 -1
- package/dist/agent-src/rules/broken-access-control.md +4 -0
- package/dist/agent-src/rules/code-provenance.md +4 -0
- package/dist/agent-src/rules/design-fidelity.md +1 -1
- package/dist/agent-src/rules/domain-safety-pii.md +4 -0
- package/dist/agent-src/rules/domain-safety-retention.md +4 -0
- package/dist/agent-src/rules/engineering-safety-floor.md +2 -0
- package/dist/agent-src/rules/external-code-graph-interop.md +14 -12
- package/dist/agent-src/rules/improve-before-implement.md +6 -8
- package/dist/agent-src/rules/laravel-routing.md +1 -1
- package/dist/agent-src/rules/lethal-trifecta-guard.md +4 -0
- package/dist/agent-src/rules/secret-vcs-guard.md +2 -0
- package/dist/agent-src/rules/security-sensitive-stop.md +2 -0
- package/dist/agent-src/rules/source-confidentiality.md +12 -34
- package/dist/agent-src/rules/symfony-routing.md +1 -1
- package/dist/agent-src/rules/token-efficiency.md +14 -0
- package/dist/agent-src/rules/tool-safety.md +4 -0
- package/dist/agent-src/rules/untrusted-input-defense.md +4 -0
- package/dist/agent-src/scripts/archive_completed_roadmaps.ts +247 -3
- package/dist/agent-src/scripts/guarded_baseline.ts +328 -0
- package/dist/agent-src/scripts/roadmap_set_step.ts +253 -0
- package/dist/agent-src/scripts/stub_queue.ts +82 -0
- package/dist/agent-src/scripts/stubs_due.ts +400 -0
- package/dist/agent-src/scripts/ticket_bundles.ts +84 -0
- package/dist/agent-src/scripts/update_roadmap_progress.ts +8 -4
- package/dist/agent-src/skills/brand-asset-generation/SKILL.md +17 -4
- package/dist/agent-src/skills/brand-audit/SKILL.md +33 -0
- package/dist/agent-src/skills/code-intelligence/SKILL.md +57 -0
- package/dist/agent-src/skills/code-refactoring/SKILL.md +45 -1
- package/dist/agent-src/skills/code-review/SKILL.md +65 -6
- package/dist/agent-src/skills/command-writing/SKILL.md +35 -0
- package/dist/agent-src/skills/database/SKILL.md +8 -0
- package/dist/agent-src/skills/dependency-upgrade/SKILL.md +27 -0
- package/dist/agent-src/skills/design-review/SKILL.md +1 -1
- package/dist/agent-src/skills/doc-coauthoring/SKILL.md +1 -1
- package/dist/agent-src/skills/existing-ui-audit/SKILL.md +25 -2
- package/dist/agent-src/skills/feature-planning/SKILL.md +9 -2
- package/dist/agent-src/skills/frontend-render-security/SKILL.md +44 -0
- package/dist/agent-src/skills/git-workflow/SKILL.md +1 -1
- package/dist/agent-src/skills/js-library-packaging/scripts/check_package_surface.ts +38 -4
- package/dist/agent-src/skills/judge-artifact-completeness/rubrics/ticket-quality-score.json +2 -2
- package/dist/agent-src/skills/laravel/SKILL.md +35 -0
- package/dist/agent-src/skills/laravel-migration/SKILL.md +57 -3
- package/dist/agent-src/skills/monorepo-workspace/SKILL.md +26 -0
- package/dist/agent-src/skills/playbook-authoring/SKILL.md +28 -1
- package/dist/agent-src/skills/project-analysis-core/SKILL.md +23 -0
- package/dist/agent-src/skills/react-shadcn-ui/SKILL.md +30 -13
- package/dist/agent-src/skills/skill-writing/references/procedure.md +29 -7
- package/dist/agent-src/skills/sql-writing/SKILL.md +7 -1
- package/dist/agent-src/skills/standards-from-config/SKILL.md +27 -4
- package/dist/agent-src/skills/storybook-workshop/SKILL.md +9 -0
- package/dist/agent-src/skills/supply-chain-intake/SKILL.md +11 -4
- package/dist/agent-src/skills/symfony-workflow/SKILL.md +35 -0
- package/dist/agent-src/skills/test-case-discovery/SKILL.md +85 -0
- package/dist/agent-src/skills/test-driven-development/SKILL.md +33 -9
- package/dist/agent-src/skills/testing-anti-patterns/SKILL.md +1 -1
- package/dist/agent-src/skills/testing-anti-patterns/process-anti-patterns.md +37 -0
- package/dist/agent-src/skills/ui-component-architect/SKILL.md +53 -2
- package/dist/agent-src/skills/upstream-contribute/SKILL.md +38 -1
- package/dist/agent-src/skills/verify-repair-loop/SKILL.md +9 -4
- package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
- package/dist/agent-src/templates/roadmaps.md +97 -3
- package/dist/agent-src/templates/scripts/check_memory.ts +258 -17
- package/dist/agent-src/templates/scripts/check_memory_proposal.ts +9 -3
- package/dist/agent-src/templates/scripts/memory_lookup.ts +86 -0
- package/dist/agent-src/templates/scripts/memory_signal.ts +44 -0
- package/dist/agent-src/templates/scripts/work_engine/directives/backend/implement.ts +90 -0
- package/dist/agent-src/templates/scripts/work_engine/directives/backend/index.ts +11 -0
- package/dist/agent-src/templates/scripts/work_engine/directives/backend/test.ts +23 -1
- package/dist/agent-src/templates/scripts/work_engine/directives/backend/verify.ts +10 -1
- package/dist/agent-src/templates/scripts/work_engine/directives/mixed/stitch.ts +5 -1
- package/dist/agent-src/templates/scripts/work_engine/stack/runner.ts +102 -14
- package/dist/cli/commands/uiAudit.js +124 -5
- package/dist/cli/registry.js +2 -0
- package/dist/cli-delegate/{chunk-HYWSRNUX.js → chunk-2DK2VJWG.js} +3 -3
- package/dist/cli-delegate/{chunk-L43NCYPB.js → chunk-4FS4WRXP.js} +10 -0
- package/dist/cli-delegate/{chunk-OMIVVCG2.js → chunk-A4QJ6ENT.js} +24 -0
- package/dist/cli-delegate/{chunk-236PNQZK.js → chunk-AKJGUQNO.js} +466 -285
- package/dist/cli-delegate/{chunk-E46KPN6K.js → chunk-BTWUYDGN.js} +424 -363
- package/dist/cli-delegate/{chunk-K4FFODTS.js → chunk-ILMUPLGW.js} +1227 -316
- package/dist/cli-delegate/{chunk-FF7WAFMR.js → chunk-KPBWFOPZ.js} +5 -1
- package/dist/cli-delegate/cmd_adr_effective.js +102 -0
- package/dist/cli-delegate/cmd_conformance.js +42 -10
- package/dist/cli-delegate/cmd_doctor.js +3 -3
- package/dist/cli-delegate/cmd_export.js +3 -2
- package/dist/cli-delegate/cmd_fleet.js +2 -2
- 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 +3 -2
- package/dist/cli-delegate/cmd_settings_get.js +1 -1
- package/dist/cli-delegate/cmd_settings_migrate.js +3 -2
- package/dist/cli-delegate/cmd_settings_set.js +2 -2
- package/dist/cli-delegate/cmd_sync.js +3 -2
- package/dist/cli-delegate/cmd_uninstall.js +3 -2
- package/dist/cli-delegate/cmd_validate.js +3 -2
- package/dist/discovery/deprecation-report.md +1 -1
- package/dist/discovery/discovery-manifest.json +62 -62
- package/dist/discovery/discovery-manifest.json.sha256 +1 -1
- package/dist/discovery/discovery-manifest.summary.md +1 -1
- package/dist/discovery/dormancy-report.md +1 -1
- package/dist/discovery/orphan-report.md +1 -1
- package/dist/discovery/packs.json +2 -2
- package/dist/discovery/trust-report.md +1 -1
- package/dist/discovery/workspaces.json +2 -2
- package/dist/hooks/dispatch.js +2413 -1087
- package/dist/install/claudeRuleRewrite.js +254 -0
- package/dist/install/detect.js +29 -16
- package/dist/install/detect_php_shape.js +159 -0
- package/dist/install/install.mjs +639 -428
- package/dist/mcp/awesome-mcp-servers.row.md +1 -1
- package/dist/mcp/mcp-cloudflare-catalogue.json +1 -1
- package/dist/mcp/registry-manifest.json +3 -3
- package/dist/mcp/server.json +3 -3
- package/dist/mcp/server.mjs +4818 -2645
- package/dist/server/schemas/settings.js +6 -0
- package/dist/ui/assets/index-D0jaCRPM.js +29 -0
- package/dist/ui/index.html +1 -1
- package/docs/MIGRATION.md +1 -1
- package/docs/THIRD-PARTY-NOTICES.md +25 -0
- package/docs/contracts/provider-lifecycle.md +1 -1
- package/docs/contracts/settings-classes.md +30 -4
- package/docs/guidelines/agent-infra/5w2h-analysis.md +3 -3
- package/docs/guidelines/agent-infra/agent-interaction-and-decision-quality.md +1 -0
- package/docs/guidelines/agent-infra/artifact-drafting-protocol-mechanics.md +58 -3
- package/docs/guidelines/agent-infra/ask-when-uncertain-demos.md +2 -2
- package/docs/guidelines/agent-infra/asking-and-brevity-examples.md +3 -3
- package/docs/guidelines/agent-infra/break-glass-usage.md +7 -7
- package/docs/guidelines/agent-infra/carve-out-predicates.md +3 -3
- package/docs/guidelines/agent-infra/comparison-matrix.md +1 -1
- package/docs/guidelines/agent-infra/critical-thinking.md +4 -4
- package/docs/guidelines/agent-infra/direct-answers-demos.md +2 -2
- package/docs/guidelines/agent-infra/domain-eval-anti-pattern.md +1 -1
- package/docs/guidelines/agent-infra/downstream-changes-mechanics.md +91 -0
- package/docs/guidelines/agent-infra/engineering-memory-data-format.md +3 -3
- package/docs/guidelines/agent-infra/existence-question-verdicts.md +80 -0
- package/docs/guidelines/agent-infra/first-principles.md +2 -2
- package/docs/guidelines/agent-infra/framework-neutrality-patterns.md +2 -2
- package/docs/guidelines/agent-infra/guarded-baseline.md +39 -0
- package/docs/guidelines/agent-infra/inversion-thinking.md +5 -5
- package/docs/guidelines/agent-infra/language-and-tone-examples.md +1 -1
- package/docs/guidelines/agent-infra/layered-settings.md +10 -10
- package/docs/guidelines/agent-infra/memory-access.md +1 -1
- package/docs/guidelines/agent-infra/mental-models.md +3 -3
- package/docs/guidelines/agent-infra/reuse-verdict-mechanics.md +71 -0
- package/docs/guidelines/agent-infra/review-routing-data-format.md +7 -7
- package/docs/guidelines/agent-infra/roadmap-progress-mechanics.md +13 -7
- package/docs/guidelines/agent-infra/role-contracts.md +2 -2
- package/docs/guidelines/agent-infra/role-mode-router.md +3 -3
- package/docs/guidelines/agent-infra/rule-type-governance.md +2 -2
- package/docs/guidelines/agent-infra/scqa-framework.md +5 -5
- package/docs/guidelines/agent-infra/self-improvement-pipeline.md +6 -6
- package/docs/guidelines/agent-infra/simplicity-and-goal-demos.md +2 -2
- package/docs/guidelines/agent-infra/six-hats.md +3 -3
- package/docs/guidelines/agent-infra/skill-quality-checklist.md +6 -6
- package/docs/guidelines/agent-infra/source-confidentiality-mechanics.md +109 -0
- package/docs/guidelines/agent-infra/systems-thinking.md +1 -1
- package/docs/guidelines/agent-infra/verify-before-complete-demos.md +2 -2
- package/docs/guidelines/augment-portability-patterns.md +6 -4
- package/docs/guidelines/code-clarity.md +21 -0
- package/docs/guidelines/component-oriented-and-oop-development.md +3 -2
- package/docs/guidelines/cross-role-handoff.md +2 -2
- package/docs/guidelines/design-fidelity-mechanics.md +1 -1
- package/docs/guidelines/docs/readme-size-and-splitting.md +3 -3
- package/docs/guidelines/php/database.md +90 -7
- package/docs/guidelines/prompt-templates.md +7 -7
- package/docs/guidelines/redundancy-taxonomy.md +180 -0
- package/llms.txt +2 -2
- package/package.json +10 -3
- package/src/agent-src/scripts/archive_completed_roadmaps.ts +247 -3
- package/src/agent-src/scripts/guarded_baseline.ts +328 -0
- package/src/agent-src/scripts/roadmap_set_step.ts +253 -0
- package/src/agent-src/scripts/stub_queue.ts +82 -0
- package/src/agent-src/scripts/stubs_due.ts +400 -0
- package/src/agent-src/scripts/ticket_bundles.ts +84 -0
- package/src/agent-src/scripts/update_roadmap_progress.ts +8 -4
- package/src/agent-src/templates/scripts/check_memory.ts +258 -17
- package/src/agent-src/templates/scripts/check_memory_proposal.ts +9 -3
- package/src/agent-src/templates/scripts/memory_lookup.ts +86 -0
- package/src/agent-src/templates/scripts/memory_signal.ts +44 -0
- package/src/agent-src/templates/scripts/work_engine/directives/backend/implement.ts +90 -0
- package/src/agent-src/templates/scripts/work_engine/directives/backend/index.ts +11 -0
- package/src/agent-src/templates/scripts/work_engine/directives/backend/test.ts +23 -1
- package/src/agent-src/templates/scripts/work_engine/directives/backend/verify.ts +10 -1
- package/src/agent-src/templates/scripts/work_engine/directives/mixed/stitch.ts +5 -1
- package/src/agent-src/templates/scripts/work_engine/stack/runner.ts +102 -14
- package/src/config/agent-settings.template.yml +48 -3
- package/src/config/assurance-capability-registry.json +21 -9
- package/src/config/budgets.yml +19 -0
- package/src/config/canonical-terms.yml +119 -0
- package/src/config/capability-native-outcome-bars.json +81 -0
- package/src/config/ci-local-parity.yml +95 -0
- package/src/config/discovery/prompt-patterns.yml +56 -0
- package/src/config/drafting-channels.yml +43 -0
- package/src/config/estate-count-budget.json +38 -31
- package/src/config/evaluator-budgets.json +14 -14
- package/src/config/gate-coverage.yml +731 -30
- package/src/config/gate-reachability-exemptions.json +21 -0
- package/src/config/gate-violation-baselines.json +38 -20
- package/src/config/harness-evolution-budget.json +25 -0
- package/src/config/lapsed-beta-baseline.json +96 -0
- package/src/config/memory-twin-verdicts.yml +129 -0
- package/src/config/metric-registry.yml +124 -0
- package/src/config/pack-size-budget.json +35 -7
- package/src/config/preamble-payload-budget.json +97 -71
- package/src/config/profiles/balanced.ini +27 -0
- package/src/config/profiles/full.ini +27 -0
- package/src/config/profiles/minimal.ini +27 -0
- package/src/config/publish-surface.json +9 -2
- package/src/config/routing-coverage-seed.json +43 -0
- package/src/config/rule-stub-ceilings.json +126 -112
- package/src/config/suggestion-capture.json +28 -0
- package/src/config/surface-matrix.yml +21 -2
- package/src/config/turnaround-budget.json +66 -0
- package/src/config/web-launch-readiness.json +188 -0
- package/src/install/claudeRuleRewrite.ts +288 -0
- package/src/install/detect.ts +60 -17
- package/src/install/detect_php_shape.ts +191 -0
- package/src/scripts/_cli/cmd_doctor.ts +27 -112
- package/src/scripts/_dispatch.bash +27 -0
- package/src/scripts/_lib/activation_ladder.ts +211 -0
- package/src/scripts/_lib/activation_states.ts +88 -0
- package/src/scripts/_lib/adherence_detectors.ts +143 -0
- package/src/scripts/_lib/arith_claims.ts +181 -0
- package/src/scripts/_lib/arm_ranking.ts +62 -0
- package/src/scripts/_lib/asset_delivery_ledger.ts +303 -0
- package/src/scripts/_lib/audit_field_provenance.ts +54 -0
- package/src/scripts/_lib/auto_dispatch.ts +32 -3
- package/src/scripts/_lib/bench_ab_size_claim.ts +98 -4
- package/src/scripts/_lib/benchmark_cache_fields.ts +158 -0
- package/src/scripts/_lib/candidate_proposer.ts +402 -0
- package/src/scripts/_lib/candidate_record.ts +601 -0
- package/src/scripts/_lib/capture_rate.ts +319 -0
- package/src/scripts/_lib/collector_denominator.ts +771 -0
- package/src/scripts/_lib/collector_record.ts +340 -0
- package/src/scripts/_lib/collector_store.ts +664 -0
- package/src/scripts/_lib/collector_supervision.ts +827 -0
- package/src/scripts/_lib/concern_estate.ts +77 -0
- package/src/scripts/_lib/config_chain.ts +477 -0
- package/src/scripts/_lib/config_cost.ts +209 -0
- package/src/scripts/_lib/council_settings_block.ts +6 -0
- package/src/scripts/_lib/curator_ops.ts +172 -0
- package/src/scripts/_lib/delivery_arm_experiment.ts +266 -0
- package/src/scripts/_lib/delivery_criticality.ts +126 -0
- package/src/scripts/_lib/doctor_runtime_checks.ts +70 -0
- package/src/scripts/_lib/empty_cycles.ts +88 -0
- package/src/scripts/_lib/eval_publication.ts +354 -0
- package/src/scripts/_lib/evaluation_vector.ts +283 -0
- package/src/scripts/_lib/evaluator_promotion.ts +225 -0
- package/src/scripts/_lib/evidence_basis.ts +118 -0
- package/src/scripts/_lib/exec_evidence.ts +8 -0
- package/src/scripts/_lib/experience_card.ts +272 -0
- package/src/scripts/_lib/experience_report.ts +151 -0
- package/src/scripts/_lib/experiment_freeze.ts +112 -0
- package/src/scripts/_lib/gate_baseline.ts +150 -1
- package/src/scripts/_lib/generated_by.ts +66 -0
- package/src/scripts/_lib/harness_evolution_guards.ts +229 -0
- package/src/scripts/_lib/hook_effect_probe.ts +141 -0
- package/src/scripts/_lib/host_denominator.ts +687 -0
- package/src/scripts/_lib/host_projection_reach.ts +157 -0
- package/src/scripts/_lib/ignored_blocker.ts +148 -0
- package/src/scripts/_lib/install_reach_checks.ts +495 -0
- package/src/scripts/_lib/json_duplicate_keys.ts +150 -0
- package/src/scripts/_lib/judge_hygiene.ts +228 -0
- package/src/scripts/_lib/legacy_boundary_map.ts +228 -0
- package/src/scripts/_lib/loop_guards.ts +299 -0
- package/src/scripts/_lib/loss_class.ts +129 -0
- package/src/scripts/_lib/machine_wake.ts +51 -0
- package/src/scripts/_lib/md_prose_lines.ts +177 -0
- package/src/scripts/_lib/minimality_tiebreak.ts +168 -0
- package/src/scripts/_lib/one_resolver_invariant.ts +449 -0
- package/src/scripts/_lib/orchestration_record.ts +253 -5
- package/src/scripts/_lib/outcome_envelope.ts +227 -0
- package/src/scripts/_lib/outcome_vocabularies.ts +125 -0
- package/src/scripts/_lib/paired_stats.ts +245 -0
- package/src/scripts/_lib/paired_verdict.ts +226 -0
- package/src/scripts/_lib/prefix_stable_surfaces.ts +123 -0
- package/src/scripts/_lib/privacy_class.ts +47 -0
- package/src/scripts/_lib/regression_neighbourhood.ts +259 -0
- package/src/scripts/_lib/repeated_failure.ts +105 -0
- package/src/scripts/_lib/repo_root.ts +111 -0
- package/src/scripts/_lib/review_skipped_record.ts +37 -0
- package/src/scripts/_lib/role_split.ts +338 -0
- package/src/scripts/_lib/runtime_journal.ts +1499 -0
- package/src/scripts/_lib/runtime_wiring_checks.ts +430 -0
- package/src/scripts/_lib/skill_catalogue.ts +11 -1
- package/src/scripts/_lib/skill_estate.ts +115 -0
- package/src/scripts/_lib/source_digest.ts +200 -0
- package/src/scripts/_lib/source_redact.ts +260 -0
- package/src/scripts/_lib/source_shape.ts +502 -0
- package/src/scripts/_lib/source_snapshot_dedup.ts +199 -0
- package/src/scripts/_lib/strip_comments.d.mts +8 -0
- package/src/scripts/_lib/strip_comments.mjs +65 -0
- package/src/scripts/_lib/test_red_state.ts +154 -0
- package/src/scripts/_lib/trigger_shift.ts +144 -0
- package/src/scripts/_lib/untrusted_content.ts +82 -7
- package/src/scripts/adoption_report.ts +1 -1
- package/src/scripts/adr/evidence_census.ts +1 -1
- package/src/scripts/adr/regenerate_index.ts +26 -2
- package/src/scripts/adr_cite_check.ts +164 -1
- package/src/scripts/ai_council/argument_exhaustion.ts +130 -0
- package/src/scripts/ai_council/blind_review.ts +11 -1
- package/src/scripts/ai_council/clients.ts +4 -0
- package/src/scripts/ai_council/config.ts +3 -0
- package/src/scripts/ai_council/consensus.ts +28 -8
- package/src/scripts/ai_council/consensus_round.ts +226 -0
- package/src/scripts/ai_council/disagreement_signal.ts +338 -0
- package/src/scripts/ai_council/inline_findings.ts +340 -0
- package/src/scripts/ai_council/judge_position_bias.ts +197 -0
- package/src/scripts/ai_council/orchestrator.ts +16 -203
- package/src/scripts/ai_council/orchestrator_results.ts +23 -3
- package/src/scripts/ai_council/pricing.ts +106 -0
- package/src/scripts/ai_council/prompts.ts +74 -7
- package/src/scripts/ai_council/provider_leakage_bench.ts +327 -0
- package/src/scripts/ai_council/py_format.ts +14 -3
- package/src/scripts/ai_council/recouncil_guard.ts +293 -0
- package/src/scripts/ai_council/response_record.ts +50 -0
- package/src/scripts/ai_council/topology_bench_manifest.ts +860 -0
- package/src/scripts/ai_council/topology_vocabulary.ts +175 -0
- package/src/scripts/asset_delivery_ledger.ts +157 -0
- package/src/scripts/attest_artifact.ts +193 -0
- package/src/scripts/audit_auto_rules.ts +2 -1
- package/src/scripts/audit_command_surface.ts +1 -1
- package/src/scripts/audit_mcp_tools.ts +2 -2
- package/src/scripts/audit_skill_overlap_allowlist.json +6 -1
- package/src/scripts/audit_user_type_axis.ts +2 -1
- package/src/scripts/bench_ab_clone.ts +215 -10
- package/src/scripts/bench_ab_integrity.ts +119 -5
- package/src/scripts/bench_ab_v2_stats.ts +40 -213
- package/src/scripts/build_archive_index.ts +1 -1
- package/src/scripts/build_linear_digest.ts +1 -1
- package/src/scripts/build_proof.ts +11 -4
- package/src/scripts/build_rule_trigger_matrix.ts +1 -1
- package/src/scripts/build_source_digests.ts +157 -0
- package/src/scripts/cache_realization_report.ts +103 -0
- package/src/scripts/check_adr_frontmatter.ts +126 -0
- package/src/scripts/check_benchmark_report_fields.ts +207 -0
- package/src/scripts/check_beta_review_markers.ts +235 -6
- package/src/scripts/check_bundle_path_leakage.ts +195 -7
- package/src/scripts/check_claims.ts +576 -6
- package/src/scripts/check_command_examples.ts +557 -0
- package/src/scripts/check_composite_arming.ts +35 -0
- package/src/scripts/check_concern_admissions.ts +365 -0
- package/src/scripts/check_enforcement_coverage.ts +28 -0
- package/src/scripts/check_estate_count.ts +263 -3
- package/src/scripts/check_gate_reachability.ts +383 -0
- package/src/scripts/check_host_loadability.ts +104 -0
- package/src/scripts/check_loss_class_declared.ts +308 -0
- package/src/scripts/check_md_language.ts +15 -98
- package/src/scripts/check_memory_proposal.ts +18 -11
- package/src/scripts/check_no_currency_in_cost_surfaces.ts +225 -0
- package/src/scripts/check_no_external_sources.ts +281 -6
- package/src/scripts/check_pack_conformance_fixture.ts +11 -1
- package/src/scripts/check_pack_size.ts +59 -2
- package/src/scripts/check_preamble_payload_budget.ts +144 -6
- package/src/scripts/check_prefix_stable_mutation.ts +372 -0
- package/src/scripts/check_publish_surface.ts +10 -1
- package/src/scripts/check_references.ts +24 -1
- package/src/scripts/check_routing_coverage.ts +352 -0
- package/src/scripts/check_rule_evidence_declaration.ts +316 -0
- package/src/scripts/check_rule_projection_integrity.ts +14 -4
- package/src/scripts/check_score_contract.ts +528 -0
- package/src/scripts/check_skill_admissions.ts +514 -0
- package/src/scripts/check_static_parity.ts +285 -0
- package/src/scripts/check_supervision_claim_atomicity.ts +498 -0
- package/src/scripts/check_suppression_hygiene.ts +15 -0
- package/src/scripts/check_web_launch_readiness.ts +705 -0
- package/src/scripts/ci_settle.ts +39 -2
- package/src/scripts/code_graph/build.ts +60 -3
- package/src/scripts/code_graph/extract.ts +44 -0
- package/src/scripts/code_graph/types.ts +24 -0
- package/src/scripts/collector_daemon.ts +714 -0
- package/src/scripts/config_cost_report.ts +302 -0
- package/src/scripts/consumer_matrix.ts +74 -1
- package/src/scripts/cost/budget.mjs +10 -3
- package/src/scripts/cost/track.mjs +10 -3
- package/src/scripts/council_cli.ts +37 -54
- package/src/scripts/description_route_check.ts +494 -0
- package/src/scripts/dispatch_r2_reviewer.ts +46 -5
- package/src/scripts/evolution_lab.ts +980 -0
- package/src/scripts/external_sources_denylist.json +5 -18
- package/src/scripts/extract_audit_patterns.ts +21 -0
- package/src/scripts/fold_intake.ts +12 -1
- package/src/scripts/gen_discovery_baseline.ts +1 -1
- package/src/scripts/generate_capabilities_index.ts +12 -5
- package/src/scripts/generate_capability_matrix.ts +3 -3
- package/src/scripts/generate_command_flows.ts +2 -2
- package/src/scripts/generate_cookbook.ts +2 -2
- package/src/scripts/generate_index.ts +8 -1
- package/src/scripts/generate_knowledge_index.ts +2 -1
- package/src/scripts/generate_ownership_matrix.ts +2 -1
- package/src/scripts/generate_pack_manifests.ts +10 -2
- package/src/scripts/generate_role_experiences_catalog.ts +2 -2
- package/src/scripts/generate_settings_reference.ts +1 -1
- package/src/scripts/git_authorization_hook.ts +22 -1
- package/src/scripts/grade_target_readiness.ts +48 -5
- package/src/scripts/hook_effect_doctor.ts +261 -0
- package/src/scripts/hook_manifest.json +1 -1
- package/src/scripts/hook_manifest.yaml +125 -11
- package/src/scripts/hooks/block_speaking_inbox_dir.ts +271 -0
- package/src/scripts/hooks/block_unauthorized_git.ts +18 -0
- package/src/scripts/hooks/concern_registry.ts +6 -0
- package/src/scripts/hooks/dispatch_hook.ts +32 -0
- package/src/scripts/hooks/journal_record_hook.ts +345 -0
- package/src/scripts/hooks/prepush_metadata_sources.sh +110 -0
- package/src/scripts/hooks/run_continuation_hook.ts +44 -9
- package/src/scripts/hooks/shims/install.sh +61 -0
- package/src/scripts/hooks/shims/php +101 -0
- package/src/scripts/hooks/suggestion_capture_hook.ts +378 -0
- package/src/scripts/hot_context_hook.ts +16 -0
- package/src/scripts/install-hooks.sh +20 -5
- package/src/scripts/install.ts +17 -35
- package/src/scripts/inventory_frontmatter.ts +2 -1
- package/src/scripts/lint_adr_sweep_routing.ts +12 -0
- package/src/scripts/lint_budget_ownership.ts +54 -4
- package/src/scripts/lint_canonical_terms.ts +604 -0
- package/src/scripts/lint_composition_review.ts +619 -0
- package/src/scripts/lint_consolidation_lineage.ts +666 -0
- package/src/scripts/lint_eval_specs.ts +593 -0
- package/src/scripts/lint_hook_manifest.ts +19 -0
- package/src/scripts/lint_host_portability.ts +373 -0
- package/src/scripts/lint_judge_prompt_expectation.ts +27 -1
- package/src/scripts/lint_memory_twin_parity.ts +335 -0
- package/src/scripts/lint_metric_consumers.ts +355 -0
- package/src/scripts/lint_skill_descriptions.ts +18 -1
- package/src/scripts/lint_skill_frontmatter_safety.ts +58 -0
- package/src/scripts/lint_skill_link_reach.ts +252 -0
- package/src/scripts/lint_skill_trigger_corpus.ts +752 -0
- package/src/scripts/lint_ticket_buildable.ts +17 -1
- package/src/scripts/mcp_server/consumer_tool_catalog.json +1 -1
- package/src/scripts/mcp_server/tool_catalog_source.ts +1 -1
- package/src/scripts/measure_docs_dead_links.ts +348 -0
- package/src/scripts/measure_host_capture.ts +461 -0
- package/src/scripts/migration_status.ts +3 -3
- package/src/scripts/model_rule_injection.ts +60 -0
- package/src/scripts/orchestration_record.ts +14 -0
- package/src/scripts/pack_install_smoke.ts +363 -0
- package/src/scripts/pr_conflict_census.ts +187 -0
- package/src/scripts/preamble_byte_census.ts +139 -10
- package/src/scripts/prepack-check.mjs +4 -1
- package/src/scripts/probe_turnaround.ts +384 -0
- package/src/scripts/probe_unblocked_ask.ts +279 -0
- package/src/scripts/render_benchmark_md.ts +1 -1
- package/src/scripts/report_pack_delta.ts +204 -0
- package/src/scripts/rule_activation_census.ts +70 -9
- package/src/scripts/rule_backlinks.ts +1 -1
- package/src/scripts/run_lifecycle_suite.ts +208 -0
- package/src/scripts/run_skill_evals.ts +40 -0
- package/src/scripts/schemas/delivery-manifest.schema.json +43 -0
- package/src/scripts/schemas/drafting-channels.schema.json +43 -0
- package/src/scripts/schemas/evals.schema.json +24 -1
- package/src/scripts/schemas/rule.schema.json +52 -1
- package/src/scripts/schemas/skill.schema.json +17 -2
- package/src/scripts/select_analysis_mode.ts +112 -0
- package/src/scripts/skill_overlap.ts +7 -1
- package/src/scripts/skill_tools/run_block_d_eval.ts +8 -1
- package/src/scripts/skill_tools/score_skill_relevance.ts +84 -3
- package/src/scripts/skill_tools/suggest_skill_for_task.ts +8 -1
- package/src/scripts/skill_usage_report.ts +2 -1
- package/src/scripts/stubs_due.ts +211 -0
- package/src/scripts/sweep_source_surfaces.ts +678 -0
- package/src/scripts/sync_pr_branch.ts +40 -1
- package/src/scripts/trigger_eval_grandfather.json +202 -222
- package/src/scripts/utilization_report.ts +22 -2
- package/src/server/schemas/settings.ts +10 -0
- package/src/templates/marketing-copy.yml +1 -1
- 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/alerting-doctrine/evals/triggers.json +0 -17
- 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 -67
- 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/js-library-packaging/evals/triggers.json +0 -17
- 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/monorepo-workspace/evals/triggers.json +0 -17
- package/dist/agent-src/skills/nda-triage/evals/triggers.json +0 -17
- package/dist/agent-src/skills/operational-readiness/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/server-hardening/evals/triggers.json +0 -17
- 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/storybook-workshop/evals/triggers.json +0 -17
- 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/workspace-link/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/uiAudit.js.map +0 -1
- package/dist/cli/commands/uiRender.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/lean_projection_mode.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/ui_surface.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/skillRanking.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 +0 -26
- 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/ui_authority.test.ts +0 -251
- 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 -246
- package/src/scripts/self_review_gate.test.ts +0 -296
- package/src/shared/capabilities.test.ts +0 -43
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Which PHP application shape is in play — decided from the entry point and the
|
|
3
|
+
* router, never from the dependency list.
|
|
4
|
+
*
|
|
5
|
+
* `road-to-consumer-repo-reality` Phase 3. A dependency proves a library is
|
|
6
|
+
* AVAILABLE. Only the entry point and the routing mechanism prove which
|
|
7
|
+
* application shape is actually running.
|
|
8
|
+
*
|
|
9
|
+
* THE THIRD STATE IS THE POINT. Component-based distribution is a published
|
|
10
|
+
* model: a framework family ships its ORM, container, collections and HTTP
|
|
11
|
+
* layer as independently installable packages, usable with no framework
|
|
12
|
+
* present. PHP has at least two families distributed exactly this way, so the
|
|
13
|
+
* shape is a property of the DISTRIBUTION MODEL and not of any one consumer.
|
|
14
|
+
*
|
|
15
|
+
* Dependency-presence routing sends such an application to the framework's
|
|
16
|
+
* skill, which then offers a CLI that does not exist, a request-validation
|
|
17
|
+
* primitive that is not wired, and a routes file that was never there. Every
|
|
18
|
+
* suggestion is confidently wrong, and the reason is visible only from the
|
|
19
|
+
* entry point.
|
|
20
|
+
*
|
|
21
|
+
* COST IS THE OTHER HALF OF THE DESIGN. Risk-register rank 7: "the third
|
|
22
|
+
* framework state is added but never fires, because the discriminator is
|
|
23
|
+
* expensive to evaluate". So the discriminator is a FIXED SET of at most
|
|
24
|
+
* `PROBE_COUNT` filesystem existence checks plus one manifest read — no
|
|
25
|
+
* directory walk, no content scan, no per-session re-derivation. The probe set
|
|
26
|
+
* is exported so a caller can state the cost rather than estimate it.
|
|
27
|
+
*/
|
|
28
|
+
import * as fs from 'node:fs';
|
|
29
|
+
import * as path from 'node:path';
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* The verdict. `unknown` is a real answer, returned when the tree carries no
|
|
33
|
+
* `composer.json` — guessing a shape from an absent manifest would be the
|
|
34
|
+
* dependency-list reasoning this module exists to replace.
|
|
35
|
+
*/
|
|
36
|
+
export type PhpShape = 'laravel' | 'symfony' | 'components-without-framework' | 'plain-php' | 'unknown';
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Skeleton markers — the files a framework's own installer writes and a
|
|
40
|
+
* component consumer never has. Presence of ANY marker for a family is what
|
|
41
|
+
* makes the framework real rather than merely available.
|
|
42
|
+
*
|
|
43
|
+
* These are the framework's console entry point and its bootstrap config, both
|
|
44
|
+
* generated by the official skeleton and both absent when a developer wires the
|
|
45
|
+
* components by hand.
|
|
46
|
+
*/
|
|
47
|
+
export const SKELETON_MARKERS: Readonly<Record<'laravel' | 'symfony', readonly string[]>> = {
|
|
48
|
+
laravel: ['artisan', path.join('config', 'app.php'), path.join('bootstrap', 'app.php')],
|
|
49
|
+
symfony: [path.join('bin', 'console'), path.join('config', 'bundles.php'), path.join('config', 'services.yaml')],
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Composer package prefixes that prove a family's COMPONENTS are available.
|
|
54
|
+
* Availability only — this is deliberately never sufficient for a verdict.
|
|
55
|
+
*/
|
|
56
|
+
export const COMPONENT_PREFIXES: Readonly<Record<'laravel' | 'symfony', readonly string[]>> = {
|
|
57
|
+
laravel: ['illuminate/'],
|
|
58
|
+
symfony: ['symfony/'],
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
/** The whole framework, as opposed to its parts. */
|
|
62
|
+
const FRAMEWORK_PACKAGES: Readonly<Record<'laravel' | 'symfony', readonly string[]>> = {
|
|
63
|
+
laravel: ['laravel/framework'],
|
|
64
|
+
symfony: ['symfony/framework-bundle'],
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
/** Every path this module may stat. The cost, stated rather than estimated. */
|
|
68
|
+
export const PROBE_PATHS: readonly string[] = [
|
|
69
|
+
'composer.json',
|
|
70
|
+
...SKELETON_MARKERS.laravel,
|
|
71
|
+
...SKELETON_MARKERS.symfony,
|
|
72
|
+
];
|
|
73
|
+
|
|
74
|
+
/** Upper bound on filesystem probes for one verdict. */
|
|
75
|
+
export const PROBE_COUNT = PROBE_PATHS.length;
|
|
76
|
+
|
|
77
|
+
export interface PhpShapeVerdict {
|
|
78
|
+
shape: PhpShape;
|
|
79
|
+
/** Which family's components are present, if any. Availability, not shape. */
|
|
80
|
+
componentsOf: 'laravel' | 'symfony' | null;
|
|
81
|
+
/** The skeleton markers actually found, repo-relative. */
|
|
82
|
+
markersFound: string[];
|
|
83
|
+
/** One sentence a caller can print. Never empty. */
|
|
84
|
+
reason: string;
|
|
85
|
+
/** How many filesystem probes this verdict cost. */
|
|
86
|
+
probes: number;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
function _requireKeys(root: string): string[] {
|
|
90
|
+
try {
|
|
91
|
+
const raw = JSON.parse(fs.readFileSync(path.join(root, 'composer.json'), 'utf8')) as {
|
|
92
|
+
require?: Record<string, string>;
|
|
93
|
+
'require-dev'?: Record<string, string>;
|
|
94
|
+
};
|
|
95
|
+
return [...Object.keys(raw.require ?? {}), ...Object.keys(raw['require-dev'] ?? {})];
|
|
96
|
+
} catch {
|
|
97
|
+
return [];
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
function _markers(root: string, family: 'laravel' | 'symfony'): string[] {
|
|
102
|
+
return SKELETON_MARKERS[family].filter((rel) => fs.existsSync(path.join(root, rel)));
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* The verdict, in one pass.
|
|
107
|
+
*
|
|
108
|
+
* Order matters and is the whole discriminator: a family is only `laravel` or
|
|
109
|
+
* `symfony` when a **skeleton marker exists**. Components present with no
|
|
110
|
+
* marker is the third state, and it is checked before falling through to
|
|
111
|
+
* `plain-php` so a component consumer is never described as a project with no
|
|
112
|
+
* framework libraries at all.
|
|
113
|
+
*/
|
|
114
|
+
export function detectPhpShape(root: string): PhpShapeVerdict {
|
|
115
|
+
let probes = 1;
|
|
116
|
+
const requires = _requireKeys(root);
|
|
117
|
+
if (requires.length === 0 && !fs.existsSync(path.join(root, 'composer.json'))) {
|
|
118
|
+
return {
|
|
119
|
+
shape: 'unknown',
|
|
120
|
+
componentsOf: null,
|
|
121
|
+
markersFound: [],
|
|
122
|
+
reason: 'no composer.json — no PHP application shape to decide',
|
|
123
|
+
probes: probes + 1,
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
// TWO PASSES, and the order between them is the fix for a real defect.
|
|
128
|
+
//
|
|
129
|
+
// A single pass that returned on the first family with ANY component present
|
|
130
|
+
// reported a genuine Symfony application as components-without-framework the
|
|
131
|
+
// moment its composer.json also required `illuminate/collections` — because
|
|
132
|
+
// `laravel` is examined first, has a component, has no Laravel skeleton, and
|
|
133
|
+
// returned before Symfony's three markers were ever looked at. Both
|
|
134
|
+
// `illuminate/collections` and `illuminate/support` are widely used
|
|
135
|
+
// standalone, so a mixed manifest is ordinary rather than exotic.
|
|
136
|
+
//
|
|
137
|
+
// PASS 1 — a real skeleton anywhere wins. A framework whose own installer
|
|
138
|
+
// wrote its console entry point and bootstrap config is running, whatever
|
|
139
|
+
// else the manifest happens to carry.
|
|
140
|
+
const present: ('laravel' | 'symfony')[] = [];
|
|
141
|
+
for (const family of ['laravel', 'symfony'] as const) {
|
|
142
|
+
const hasFramework = FRAMEWORK_PACKAGES[family].some((p) => requires.includes(p));
|
|
143
|
+
const hasComponents = requires.some((r) => COMPONENT_PREFIXES[family].some((p) => r.startsWith(p)));
|
|
144
|
+
if (!hasFramework && !hasComponents) continue;
|
|
145
|
+
present.push(family);
|
|
146
|
+
const markersFound = _markers(root, family);
|
|
147
|
+
probes += SKELETON_MARKERS[family].length;
|
|
148
|
+
if (markersFound.length > 0) {
|
|
149
|
+
return {
|
|
150
|
+
shape: family,
|
|
151
|
+
componentsOf: family,
|
|
152
|
+
markersFound,
|
|
153
|
+
reason: `${family} skeleton present (${markersFound.join(', ')}) — the framework is real, not merely available`,
|
|
154
|
+
probes,
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
// PASS 2 — components present, no skeleton for ANY of them. Only now is the
|
|
160
|
+
// third state the right answer, and it names every family whose components
|
|
161
|
+
// are available rather than only the first one examined.
|
|
162
|
+
const first = present[0];
|
|
163
|
+
if (first !== undefined) {
|
|
164
|
+
const missing = present.flatMap((f) => SKELETON_MARKERS[f]);
|
|
165
|
+
const families = present.join(' and ');
|
|
166
|
+
return {
|
|
167
|
+
shape: 'components-without-framework',
|
|
168
|
+
componentsOf: first,
|
|
169
|
+
markersFound: [],
|
|
170
|
+
reason:
|
|
171
|
+
`${families} component(s) are required in composer.json but NO skeleton marker exists ` +
|
|
172
|
+
`(none of ${missing.join(', ')}). The entry point and router are the ` +
|
|
173
|
+
`application's own, so the framework CLI, its request-validation primitive and its routes ` +
|
|
174
|
+
'file are not there. Routing to a framework skill would offer all three.',
|
|
175
|
+
probes,
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
return {
|
|
180
|
+
shape: 'plain-php',
|
|
181
|
+
componentsOf: null,
|
|
182
|
+
markersFound: [],
|
|
183
|
+
reason: 'composer.json requires no component of either framework family',
|
|
184
|
+
probes,
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
/** True when a framework-routing rule must NOT claim this tree. */
|
|
189
|
+
export function frameworkRoutingIsWrong(v: PhpShapeVerdict): boolean {
|
|
190
|
+
return v.shape === 'components-without-framework';
|
|
191
|
+
}
|
|
@@ -99,6 +99,9 @@ import * as global_deploy_inventory from '../_lib/global_deploy_inventory.js';
|
|
|
99
99
|
import { censusDuplicateScope } from '../_lib/duplicate_scope_census.js';
|
|
100
100
|
import * as preamble_byte_census from '../preamble_byte_census.js';
|
|
101
101
|
import * as dispatch_economy_report from '../dispatch_economy_report.js';
|
|
102
|
+
import * as runtime_wiring from '../_lib/runtime_wiring_checks.js';
|
|
103
|
+
import * as install_reach from '../_lib/install_reach_checks.js';
|
|
104
|
+
import * as runtime_checks from '../_lib/doctor_runtime_checks.js';
|
|
102
105
|
import { git_common_dir } from '../_lib/git_common_dir.js';
|
|
103
106
|
import * as sync_gitattributes from '../sync_gitattributes.js';
|
|
104
107
|
import {
|
|
@@ -106,6 +109,7 @@ import {
|
|
|
106
109
|
ROOT_OVERRIDE_ENV,
|
|
107
110
|
ProjectRootError,
|
|
108
111
|
find_project_root_with_trace,
|
|
112
|
+
iter_setting_overrides,
|
|
109
113
|
project_settings_path,
|
|
110
114
|
resolve_project_root,
|
|
111
115
|
type TraceRecord,
|
|
@@ -771,6 +775,8 @@ const CHECK_IDS = [
|
|
|
771
775
|
'claude-command-wrappers',
|
|
772
776
|
'surface-state',
|
|
773
777
|
'hook-wiring',
|
|
778
|
+
...runtime_wiring.WIRING_CHECK_IDS,
|
|
779
|
+
...install_reach.REACH_CHECK_IDS,
|
|
774
780
|
'stale-orphans',
|
|
775
781
|
'overrides',
|
|
776
782
|
'rule-scope-drift',
|
|
@@ -802,6 +808,8 @@ const GLOBAL_CHECK_IDS: ReadonlySet<string> = new Set([
|
|
|
802
808
|
'claude-command-wrappers',
|
|
803
809
|
'surface-state',
|
|
804
810
|
'hook-wiring',
|
|
811
|
+
...runtime_wiring.WIRING_CHECK_IDS,
|
|
812
|
+
...install_reach.REACH_CHECK_IDS,
|
|
805
813
|
'stale-orphans',
|
|
806
814
|
'overrides',
|
|
807
815
|
'rule-scope-drift',
|
|
@@ -1361,79 +1369,16 @@ function pathExistsAny(p: string): boolean {
|
|
|
1361
1369
|
}
|
|
1362
1370
|
|
|
1363
1371
|
|
|
1364
|
-
/**
|
|
1365
|
-
* Managed hook wiring (single-surface model): the deterministic hook matrix
|
|
1366
|
-
* must be registered in ~/.claude/settings.json AND the dispatch target
|
|
1367
|
-
* (`agent-config` binary) must resolve on PATH. Both halves are required —
|
|
1368
|
-
* hooks without a binary silently no-op every session.
|
|
1369
|
-
*/
|
|
1372
|
+
/** Managed hook wiring — moved to `_lib/runtime_wiring_checks.ts` (it IS a runtime-wiring check). */
|
|
1370
1373
|
function _check_hook_wiring(): Dict {
|
|
1371
|
-
|
|
1372
|
-
|
|
1373
|
-
|
|
1374
|
-
|
|
1375
|
-
|
|
1376
|
-
|
|
1377
|
-
|
|
1378
|
-
|
|
1379
|
-
}
|
|
1380
|
-
const settings_path = path.join(os.homedir(), '.claude', 'settings.json');
|
|
1381
|
-
let missing: string[];
|
|
1382
|
-
try {
|
|
1383
|
-
const matrix = claude_settings_hooks.build_claude_hook_matrix(
|
|
1384
|
-
path.join(_package_root(), 'src', 'scripts', 'hook_manifest.yaml'),
|
|
1385
|
-
);
|
|
1386
|
-
const settings = pathExists(settings_path)
|
|
1387
|
-
? (JSON.parse(fs.readFileSync(settings_path, 'utf8')) as Record<string, unknown>)
|
|
1388
|
-
: {};
|
|
1389
|
-
const hooks = ((settings['hooks'] ?? {}) as Record<string, unknown>) || {};
|
|
1390
|
-
missing = Object.keys(matrix).filter((ev) => {
|
|
1391
|
-
const groups = hooks[ev];
|
|
1392
|
-
if (!Array.isArray(groups)) return true;
|
|
1393
|
-
return !JSON.stringify(groups).includes(claude_settings_hooks.MANAGED_SIGNATURE);
|
|
1394
|
-
});
|
|
1395
|
-
} catch (e) {
|
|
1396
|
-
return {
|
|
1397
|
-
id: 'hook-wiring',
|
|
1398
|
-
status: 'fail',
|
|
1399
|
-
message: `cannot evaluate managed hooks: ${String(e)}`,
|
|
1400
|
-
remedy: 'fix ~/.claude/settings.json (invalid JSON?), then agent-config refresh --global',
|
|
1401
|
-
};
|
|
1402
|
-
}
|
|
1403
|
-
const binary_ok = shutilWhich('agent-config') !== null;
|
|
1404
|
-
if (missing.length === 0 && binary_ok) {
|
|
1405
|
-
return {
|
|
1406
|
-
id: 'hook-wiring',
|
|
1407
|
-
status: 'ok',
|
|
1408
|
-
message: 'managed hooks registered in ~/.claude/settings.json; dispatch binary on PATH',
|
|
1409
|
-
remedy: '',
|
|
1410
|
-
};
|
|
1411
|
-
}
|
|
1412
|
-
if (missing.length > 0 && claude_plugin.claude_plugin_installed()) {
|
|
1413
|
-
return {
|
|
1414
|
-
id: 'hook-wiring',
|
|
1415
|
-
status: 'warn',
|
|
1416
|
-
message:
|
|
1417
|
-
`managed hooks missing for: ${missing.join(', ')} — currently carried by the ` +
|
|
1418
|
-
'installed plugin (deprecated surface)',
|
|
1419
|
-
remedy: 'agent-config refresh --global (writes the managed settings.json block)',
|
|
1420
|
-
};
|
|
1421
|
-
}
|
|
1422
|
-
const parts: string[] = [];
|
|
1423
|
-
if (missing.length > 0) parts.push(`managed hooks missing for: ${missing.join(', ')}`);
|
|
1424
|
-
if (!binary_ok) parts.push('`agent-config` not on PATH (hooks would silently no-op)');
|
|
1425
|
-
if (parts.length === 0) {
|
|
1426
|
-
// hooks complete, binary missing was the only issue → covered above.
|
|
1427
|
-
parts.push('`agent-config` not on PATH');
|
|
1428
|
-
}
|
|
1429
|
-
return {
|
|
1430
|
-
id: 'hook-wiring',
|
|
1431
|
-
status: 'fail',
|
|
1432
|
-
message: parts.join('; '),
|
|
1433
|
-
remedy: binary_ok
|
|
1434
|
-
? 'agent-config refresh --global'
|
|
1435
|
-
: 'npm install -g @event4u/agent-config, then agent-config refresh --global',
|
|
1436
|
-
};
|
|
1374
|
+
return runtime_wiring.checkHookWiring({
|
|
1375
|
+
which: shutilWhich,
|
|
1376
|
+
packageRoot: _package_root(),
|
|
1377
|
+
homeDir: os.homedir(),
|
|
1378
|
+
buildMatrix: (mp) => claude_settings_hooks.build_claude_hook_matrix(mp) as Record<string, unknown>,
|
|
1379
|
+
managedSignature: claude_settings_hooks.MANAGED_SIGNATURE,
|
|
1380
|
+
pluginInstalled: () => claude_plugin.claude_plugin_installed(),
|
|
1381
|
+
}) as unknown as Dict;
|
|
1437
1382
|
}
|
|
1438
1383
|
|
|
1439
1384
|
function _check_bridge_drift(
|
|
@@ -1811,46 +1756,12 @@ function _check_duplicate_scope_rules(project_root: string, userRulesDirOverride
|
|
|
1811
1756
|
};
|
|
1812
1757
|
}
|
|
1813
1758
|
|
|
1814
|
-
|
|
1815
|
-
|
|
1816
|
-
|
|
1817
|
-
|
|
1818
|
-
|
|
1819
|
-
|
|
1820
|
-
return {
|
|
1821
|
-
id: 'python-runtime',
|
|
1822
|
-
status: 'ok',
|
|
1823
|
-
message: 'python3 is not a runtime dependency (TS runtime via tsx)',
|
|
1824
|
-
remedy: '',
|
|
1825
|
-
};
|
|
1826
|
-
}
|
|
1827
|
-
|
|
1828
|
-
function _check_humanizer_runtime(): Dict {
|
|
1829
|
-
// Write-engine step 4b (humanize audit) runs `detect_ai_tells.ts` via a
|
|
1830
|
-
// Node/tsx runtime "when available", degrading to a prose-only audit
|
|
1831
|
-
// otherwise. This check surfaces which path a consumer install gets so the
|
|
1832
|
-
// default-on behavior is not a silent surprise. Either state is healthy —
|
|
1833
|
-
// the fallback is graceful by design — so it never fails the run.
|
|
1834
|
-
const node = shutilWhich('node');
|
|
1835
|
-
if (node === null) {
|
|
1836
|
-
return {
|
|
1837
|
-
id: 'humanizer-runtime',
|
|
1838
|
-
status: 'ok',
|
|
1839
|
-
message:
|
|
1840
|
-
'no Node runtime on PATH — write-engine step 4b uses the ' +
|
|
1841
|
-
'prose-only humanize audit (graceful fallback)',
|
|
1842
|
-
remedy:
|
|
1843
|
-
'install Node to enable the mechanical detect_ai_tells.ts pass; ' +
|
|
1844
|
-
'the prose audit runs regardless',
|
|
1845
|
-
};
|
|
1846
|
-
}
|
|
1847
|
-
return {
|
|
1848
|
-
id: 'humanizer-runtime',
|
|
1849
|
-
status: 'ok',
|
|
1850
|
-
message: `Node runtime present (${node}) — step 4b runs the mechanical detect_ai_tells.ts pass`,
|
|
1851
|
-
remedy: '',
|
|
1852
|
-
};
|
|
1853
|
-
}
|
|
1759
|
+
// Both bodies moved to `_lib/doctor_runtime_checks.ts` to pay for the Phase-1
|
|
1760
|
+
// install-reach wiring under `check_source_size_budget`. These wrappers keep the
|
|
1761
|
+
// historical names and arity, so the runner map, the export block and the
|
|
1762
|
+
// existing fallback test are untouched by the move.
|
|
1763
|
+
const _check_python_runtime = (): Dict => runtime_checks.checkPythonRuntime();
|
|
1764
|
+
const _check_humanizer_runtime = (): Dict => runtime_checks.checkHumanizerRuntime(shutilWhich);
|
|
1854
1765
|
|
|
1855
1766
|
function _check_mcp_beta_readiness(project_root: string): Dict {
|
|
1856
1767
|
// Maintainer-scoped gate: the six artefacts live in the agent-config
|
|
@@ -2970,6 +2881,8 @@ function _run_checks(
|
|
|
2970
2881
|
'claude-command-wrappers': _check_claude_command_wrappers,
|
|
2971
2882
|
'surface-state': _check_surface_state,
|
|
2972
2883
|
'hook-wiring': _check_hook_wiring,
|
|
2884
|
+
...(runtime_wiring.wiringRunners({ packageRoot: _package_root(), iterOverrides: () => iter_setting_overrides({ cwd: project_root }) }) as unknown as Record<string, CheckRunner>),
|
|
2885
|
+
...(install_reach.reachRunners({ projectRoot: project_root, resolvableVersion: _current_package_version() }) as unknown as Record<string, CheckRunner>),
|
|
2973
2886
|
'stale-orphans': _check_stale_orphans,
|
|
2974
2887
|
overrides: () => _check_overrides(project_root),
|
|
2975
2888
|
'rule-scope-drift': () => _check_rule_scope_drift(project_root),
|
|
@@ -3054,6 +2967,8 @@ function _run_checks_no_manifest(
|
|
|
3054
2967
|
'claude-command-wrappers': _check_claude_command_wrappers,
|
|
3055
2968
|
'surface-state': _check_surface_state,
|
|
3056
2969
|
'hook-wiring': _check_hook_wiring,
|
|
2970
|
+
...(runtime_wiring.wiringRunners({ packageRoot: _package_root(), iterOverrides: () => iter_setting_overrides({ cwd: project_root }) }) as unknown as Record<string, CheckRunner>),
|
|
2971
|
+
...(install_reach.reachRunners({ projectRoot: project_root, resolvableVersion: _current_package_version() }) as unknown as Record<string, CheckRunner>),
|
|
3057
2972
|
'stale-orphans': _check_stale_orphans,
|
|
3058
2973
|
// BOTH registries need the id. Registering only the first one crashed with
|
|
3059
2974
|
// `runners[cid] is not a function` on a global-only consumer, which is the
|
|
@@ -235,8 +235,14 @@ Tier 2 — maintenance / internal (hooks, MCP, memory, telemetry):
|
|
|
235
235
|
roadmap:progress Regenerate agents/roadmaps-progress.md from open roadmaps
|
|
236
236
|
(archives completed roadmaps; --no-archive to skip)
|
|
237
237
|
roadmap:progress-check Fail if agents/roadmaps-progress.md is stale (for CI)
|
|
238
|
+
roadmap:set-step Flip ONE checkbox glyph safely (lock + line anchor +
|
|
239
|
+
live invariant + survival check)
|
|
238
240
|
roadmap:archive Archive completed roadmaps (branch-touched by default;
|
|
239
241
|
--all for every complete one; --dry-run to preview)
|
|
242
|
+
stubs:due Read-only: roadmap stubs past their `review_by:`
|
|
243
|
+
date, plus the decisions routed to the owner.
|
|
244
|
+
Writes nothing. Flags: --json, --counts,
|
|
245
|
+
--today <ISO> (pin "now")
|
|
240
246
|
gates Open decisions that need you, rendered as actions —
|
|
241
247
|
roadmap blockers filtered by owner, most-unblocking
|
|
242
248
|
first. Flags: --all (include maintainer/external),
|
|
@@ -755,6 +761,13 @@ cmd_roadmap_progress() {
|
|
|
755
761
|
exec_ts "$script" --archive "$@"
|
|
756
762
|
}
|
|
757
763
|
|
|
764
|
+
# The parked estate's front door — read-only, and deliberately so. It authors
|
|
765
|
+
# nothing under `agents/roadmaps/stubs/`, which is what keeps it clear of the
|
|
766
|
+
# 2026-08-21 council verdict that deleted the hand-maintained index there.
|
|
767
|
+
cmd_stubs_due() {
|
|
768
|
+
exec_ts "$PACKAGE_ROOT/src/scripts/stubs_due.ts" "$@"
|
|
769
|
+
}
|
|
770
|
+
|
|
758
771
|
cmd_roadmap_progress_check() {
|
|
759
772
|
local script
|
|
760
773
|
script="$(resolve_script "dist/agent-src/scripts/update_roadmap_progress.ts" ".augment/scripts/update_roadmap_progress.ts")"
|
|
@@ -769,6 +782,18 @@ cmd_roadmap_archive() {
|
|
|
769
782
|
exec_ts "$script" "$@"
|
|
770
783
|
}
|
|
771
784
|
|
|
785
|
+
cmd_roadmap_set_step() {
|
|
786
|
+
local script
|
|
787
|
+
script="$(resolve_script "dist/agent-src/scripts/roadmap_set_step.ts" ".augment/scripts/roadmap_set_step.ts")"
|
|
788
|
+
exec_ts "$script" "$@"
|
|
789
|
+
}
|
|
790
|
+
|
|
791
|
+
cmd_stubs_due() {
|
|
792
|
+
local script
|
|
793
|
+
script="$(resolve_script "dist/agent-src/scripts/stubs_due.ts" ".augment/scripts/stubs_due.ts")"
|
|
794
|
+
exec_ts "$script" "$@"
|
|
795
|
+
}
|
|
796
|
+
|
|
772
797
|
cmd_gates() {
|
|
773
798
|
local script
|
|
774
799
|
script="$(resolve_script "dist/agent-src/scripts/roadmap_gates.ts" ".augment/scripts/roadmap_gates.ts")"
|
|
@@ -1481,6 +1506,8 @@ main() {
|
|
|
1481
1506
|
roadmap:progress) cmd_roadmap_progress "$@" ;;
|
|
1482
1507
|
roadmap:progress-check) cmd_roadmap_progress_check "$@" ;;
|
|
1483
1508
|
roadmap:archive) cmd_roadmap_archive "$@" ;;
|
|
1509
|
+
roadmap:set-step) cmd_roadmap_set_step "$@" ;;
|
|
1510
|
+
stubs:due) cmd_stubs_due "$@" ;;
|
|
1484
1511
|
gates) cmd_gates "$@" ;;
|
|
1485
1512
|
capabilities:index) cmd_capabilities_index "$@" ;;
|
|
1486
1513
|
adr:effective) cmd_adr_effective "$@" ;;
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The activation ladder, its precedence receipt, and the unknown invariant.
|
|
3
|
+
*
|
|
4
|
+
* `road-to-governed-harness-evolution` Phase 1, steps 1.1 and 1.2.
|
|
5
|
+
*
|
|
6
|
+
* **E4 + E9 decided 2026-08-30, option B, AI council 2/2** (anthropic +
|
|
7
|
+
* openai): SIX rungs, twelve cascade stages. The argument that carried it was
|
|
8
|
+
* not "more is better" — it was that option A requires EDITING Phase 1's exit
|
|
9
|
+
* criterion in order to fit, and that the distinction A drops is the one the
|
|
10
|
+
* delivery experiment exists to measure. Two independent roadmaps arriving at
|
|
11
|
+
* the same distinction (`road-to-experience-loop-broadening` Phase 5 needs five
|
|
12
|
+
* activation/adherence states of its own) was the strongest evidence available.
|
|
13
|
+
*
|
|
14
|
+
* The cost asymmetry is a ratchet and it points the same way: an
|
|
15
|
+
* under-populated rung can be collapsed later, while a distinction that was
|
|
16
|
+
* never recorded cannot be added to historical data at all.
|
|
17
|
+
*
|
|
18
|
+
* **The openai seat attached a condition, and this module is it.** Before the
|
|
19
|
+
* enums are persisted, every rung must map to a receipt field and an OBSERVABLE
|
|
20
|
+
* PREDICATE, with an explicit `unknown`; see {@link LADDER}. Its `revisit-if`:
|
|
21
|
+
* any rung lacking a distinct observable predicate, or staying `unknown` across
|
|
22
|
+
* representative Phase 1 evaluations — in which case keep six rungs and
|
|
23
|
+
* reconsider the nine-stage cascade independently.
|
|
24
|
+
*/
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* The six rungs, in order. A run climbs them; the first one it fails to reach
|
|
28
|
+
* is where the receipt points.
|
|
29
|
+
*
|
|
30
|
+
* `projected`, `delivered` and `visible` are three rungs and not one because
|
|
31
|
+
* the shipping substrate already separates them:
|
|
32
|
+
* `_lib/lean_projection_mode.ts:19` defines `eager-all | thin | delivery`, and
|
|
33
|
+
* under `thin`/`delivery` an artefact can be projected without being visible in
|
|
34
|
+
* a given turn. The 4-rung form collapses all three into `injected`.
|
|
35
|
+
*/
|
|
36
|
+
export const LADDER_RUNGS = [
|
|
37
|
+
'eligible',
|
|
38
|
+
'selected',
|
|
39
|
+
'projected',
|
|
40
|
+
'delivered',
|
|
41
|
+
'visible',
|
|
42
|
+
'adhered',
|
|
43
|
+
] as const;
|
|
44
|
+
export type LadderRung = (typeof LADDER_RUNGS)[number];
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Which failure family a stall at each rung belongs to.
|
|
48
|
+
*
|
|
49
|
+
* This is what step 1.1's exit criterion asks for: a deliberately failing
|
|
50
|
+
* trigger eval must be classifiable as CONTENT vs ACTIVATION vs ADHERENCE from
|
|
51
|
+
* the recorded receipt alone.
|
|
52
|
+
*/
|
|
53
|
+
export type FailureFamily = 'content' | 'activation' | 'adherence' | 'unknown';
|
|
54
|
+
|
|
55
|
+
/** One rung's contract: what it means, what observes it, and what it decides. */
|
|
56
|
+
export interface RungSpec {
|
|
57
|
+
readonly rung: LadderRung;
|
|
58
|
+
/** The receipt field whose value decides this rung. */
|
|
59
|
+
readonly observedBy: string;
|
|
60
|
+
/** How the value is read — the observable predicate the council required. */
|
|
61
|
+
readonly predicate: string;
|
|
62
|
+
/** The family a stall AT this rung belongs to. */
|
|
63
|
+
readonly family: Exclude<FailureFamily, 'unknown'>;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* The evidence matrix — rung → receipt field → predicate → family.
|
|
68
|
+
*
|
|
69
|
+
* Required by the E4+E9 verdict before the enum is persisted. Its purpose is to
|
|
70
|
+
* make "false precision" checkable: a rung whose predicate cannot be evaluated
|
|
71
|
+
* from a receipt is a rung that will read `unknown` forever, which is the
|
|
72
|
+
* council's own stated revisit condition.
|
|
73
|
+
*/
|
|
74
|
+
export const LADDER: readonly RungSpec[] = [
|
|
75
|
+
{
|
|
76
|
+
rung: 'eligible',
|
|
77
|
+
observedBy: 'eligible',
|
|
78
|
+
predicate: 'the artefact matched the request at all — its triggers, packs and workspaces admit it',
|
|
79
|
+
family: 'content',
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
rung: 'selected',
|
|
83
|
+
observedBy: 'selected',
|
|
84
|
+
predicate: 'the router chose it over competing artefacts at the same trigger',
|
|
85
|
+
family: 'activation',
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
rung: 'projected',
|
|
89
|
+
observedBy: 'projected',
|
|
90
|
+
predicate: 'a host tree carries the artefact — the projection wrote a file for this host',
|
|
91
|
+
family: 'activation',
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
rung: 'delivered',
|
|
95
|
+
observedBy: 'delivered',
|
|
96
|
+
predicate: 'the host loaded it for this turn under the active lean_projection_mode',
|
|
97
|
+
family: 'activation',
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
rung: 'visible',
|
|
101
|
+
observedBy: 'visible',
|
|
102
|
+
predicate: 'it survived the turn\'s context budget rather than being trimmed',
|
|
103
|
+
family: 'activation',
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
rung: 'adhered',
|
|
107
|
+
observedBy: 'adhered',
|
|
108
|
+
predicate: 'the reply shows the obligation was followed, not merely present',
|
|
109
|
+
family: 'adherence',
|
|
110
|
+
},
|
|
111
|
+
];
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* Why a rung was not reached.
|
|
115
|
+
*
|
|
116
|
+
* This replaces a flat `rule/skill/hook/router/host/model` attribution, which
|
|
117
|
+
* names a CATEGORY and not a PLACE — you cannot fix "router" and you can fix
|
|
118
|
+
* "lost to a higher-priority rule".
|
|
119
|
+
*/
|
|
120
|
+
export const PRECEDENCE_REASONS = [
|
|
121
|
+
'lost-to-higher-priority-rule',
|
|
122
|
+
'host-restriction',
|
|
123
|
+
'pack-filter',
|
|
124
|
+
'missing-projection',
|
|
125
|
+
'context-budget',
|
|
126
|
+
'contradictory-instruction',
|
|
127
|
+
] as const;
|
|
128
|
+
export type PrecedenceReason = (typeof PRECEDENCE_REASONS)[number];
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* A rung's observed state.
|
|
132
|
+
*
|
|
133
|
+
* `'unknown'` is a first-class value and NOT a default that means no: step
|
|
134
|
+
* 1.2's soundness invariant is that a state which was not observed stays
|
|
135
|
+
* unknown and is never silently converted to success. Without it every
|
|
136
|
+
* downstream rate is inflated by exactly the capture gap.
|
|
137
|
+
*/
|
|
138
|
+
export type RungState = 'reached' | 'not-reached' | 'unknown';
|
|
139
|
+
|
|
140
|
+
export interface ActivationReceipt {
|
|
141
|
+
readonly artefact: string;
|
|
142
|
+
/** A rung ABSENT from this map is `unknown` — see {@link rungState}. */
|
|
143
|
+
readonly rungs: Readonly<Partial<Record<LadderRung, RungState>>>;
|
|
144
|
+
/** Why the first not-reached rung was not reached. */
|
|
145
|
+
readonly reason?: PrecedenceReason;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
/**
|
|
149
|
+
* A rung's state, with absence read as `unknown`.
|
|
150
|
+
*
|
|
151
|
+
* ABSENT and `not-reached` are different observations and this is where that is
|
|
152
|
+
* enforced. The audit-log contract already draws the same line for
|
|
153
|
+
* `skills_applied` (`docs/contracts/audit-log-v1.md:88`): the key omitted means
|
|
154
|
+
* *not recorded*, `[]` means *recorded, and none*. A reader that folds the two
|
|
155
|
+
* cannot tell no signal from a negative signal.
|
|
156
|
+
*/
|
|
157
|
+
export function rungState(receipt: ActivationReceipt, rung: LadderRung): RungState {
|
|
158
|
+
return receipt.rungs[rung] ?? 'unknown';
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
/**
|
|
162
|
+
* Which family a receipt's failure belongs to — step 1.1's exit criterion.
|
|
163
|
+
*
|
|
164
|
+
* Walks the ladder in order and returns the family of the FIRST rung that was
|
|
165
|
+
* not reached. A rung whose state is `unknown` short-circuits to `'unknown'`
|
|
166
|
+
* rather than being skipped: skipping it would silently attribute the failure
|
|
167
|
+
* to a later rung the run may never have reached, which is the same inflation
|
|
168
|
+
* step 1.2 forbids, wearing a different shape.
|
|
169
|
+
*
|
|
170
|
+
* Every rung reached → `'adherence'` is NOT returned; the receipt did not fail,
|
|
171
|
+
* and the caller gets `null`.
|
|
172
|
+
*/
|
|
173
|
+
export function classifyFailure(receipt: ActivationReceipt): FailureFamily | null {
|
|
174
|
+
for (const spec of LADDER) {
|
|
175
|
+
const state = rungState(receipt, spec.rung);
|
|
176
|
+
if (state === 'unknown') return 'unknown';
|
|
177
|
+
if (state === 'not-reached') return spec.family;
|
|
178
|
+
}
|
|
179
|
+
return null;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
/** A rate with its `unknown` bucket kept OUT of the denominator. */
|
|
183
|
+
export interface LadderRate {
|
|
184
|
+
readonly reached: number;
|
|
185
|
+
readonly notReached: number;
|
|
186
|
+
readonly unknown: number;
|
|
187
|
+
/** `reached / (reached + notReached)`, or `null` when that is zero. */
|
|
188
|
+
readonly rate: number | null;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
/**
|
|
192
|
+
* Aggregate one rung across receipts.
|
|
193
|
+
*
|
|
194
|
+
* The invariant step 1.2 exists for: **no aggregation folds `unknown` into a
|
|
195
|
+
* success denominator.** `unknown` is reported beside the rate, never inside
|
|
196
|
+
* it, and a population that is entirely `unknown` yields `rate: null` rather
|
|
197
|
+
* than `0` — zero is a measurement, and there was none.
|
|
198
|
+
*/
|
|
199
|
+
export function ladderRate(receipts: readonly ActivationReceipt[], rung: LadderRung): LadderRate {
|
|
200
|
+
let reached = 0;
|
|
201
|
+
let notReached = 0;
|
|
202
|
+
let unknown = 0;
|
|
203
|
+
for (const r of receipts) {
|
|
204
|
+
const s = rungState(r, rung);
|
|
205
|
+
if (s === 'reached') reached += 1;
|
|
206
|
+
else if (s === 'not-reached') notReached += 1;
|
|
207
|
+
else unknown += 1;
|
|
208
|
+
}
|
|
209
|
+
const denominator = reached + notReached;
|
|
210
|
+
return { reached, notReached, unknown, rate: denominator === 0 ? null : reached / denominator };
|
|
211
|
+
}
|