@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
|
@@ -259,7 +259,7 @@ function _pyTruthy(v: Json): boolean {
|
|
|
259
259
|
export function render_report(rows: JsonObject[], weeks: number): string {
|
|
260
260
|
let header =
|
|
261
261
|
'# Adoption report — rolling trend\n\n' +
|
|
262
|
-
'> Generated by `
|
|
262
|
+
'> Generated by `adoption_report`. Do not edit. From ' +
|
|
263
263
|
'`agents/runtime/metrics/adoption-snapshots.jsonl`.\n' +
|
|
264
264
|
`> Window: rolling ${weeks} weeks. Source contract: ` +
|
|
265
265
|
'`docs/contracts/adoption-signal-floor.md`.\n\n';
|
|
@@ -700,7 +700,7 @@ export function renderArtifact(result: CensusResult): string {
|
|
|
700
700
|
L.push('# ADR evidence census — proposed provenance and evidence grades');
|
|
701
701
|
L.push('');
|
|
702
702
|
L.push(
|
|
703
|
-
`Generated by \`
|
|
703
|
+
`Generated by \`evidence_census\`. Records examined: **${String(result.scanned)}** ` +
|
|
704
704
|
`(${String(result.records.filter((r) => r.surface === 'flat').length)} flat, ` +
|
|
705
705
|
`${String(result.records.filter((r) => r.surface === 'area').length)} per-area).`,
|
|
706
706
|
);
|
|
@@ -17,6 +17,7 @@ import * as path from 'node:path';
|
|
|
17
17
|
import process from 'node:process';
|
|
18
18
|
import { fileURLToPath, pathToFileURL } from 'node:url';
|
|
19
19
|
import { readAdrAxisCells, readAdrFrontmatterScalars } from '../_lib/adr_frontmatter.js';
|
|
20
|
+
import { generatedByItalic } from '../_lib/generated_by.js';
|
|
20
21
|
|
|
21
22
|
// ^ADR-(\d{3})-([a-z0-9-]+)\.md$
|
|
22
23
|
const NAMED = /^ADR-(\d{3})-([a-z0-9-]+)\.md$/;
|
|
@@ -171,6 +172,28 @@ export function scan(d: string): [Row[], Row[], string[]] {
|
|
|
171
172
|
return [num, leg, errs];
|
|
172
173
|
}
|
|
173
174
|
|
|
175
|
+
/**
|
|
176
|
+
* A supersession cell: the refs, plus the partial-supersession scope in
|
|
177
|
+
* parentheses when the record declares one.
|
|
178
|
+
*
|
|
179
|
+
* The scope used to live INSIDE the ref value — `superseded_by: ADR-124
|
|
180
|
+
* (engine-adoption interpretation only)` — which put prose inside a
|
|
181
|
+
* comma-separated ref list and forced every reader to strip parentheses before
|
|
182
|
+
* resolving a number. `adr-layout` moved it to a sibling `*_scope` field. This
|
|
183
|
+
* helper is why that move costs the reader nothing: the rendered cell is
|
|
184
|
+
* unchanged, so a partial supersession is still visible at a glance, while the
|
|
185
|
+
* SOURCE stays parseable without a regex.
|
|
186
|
+
*
|
|
187
|
+
* A scope with no refs renders as `—`: a qualifier on nothing is not a
|
|
188
|
+
* supersession, and printing the prose alone would read as one.
|
|
189
|
+
*/
|
|
190
|
+
export function supersessionCell(refs: string | undefined, scope: string | undefined): string {
|
|
191
|
+
const r = (refs ?? '').trim();
|
|
192
|
+
if (r === '' || r === '—') return '—';
|
|
193
|
+
const s = (scope ?? '').trim();
|
|
194
|
+
return s === '' || s === '—' ? r : `${r} (${s})`;
|
|
195
|
+
}
|
|
196
|
+
|
|
174
197
|
/** Mirror `row(r)`. */
|
|
175
198
|
export function row(r: Row): string {
|
|
176
199
|
const decision = r.decision ?? r.slug ?? '—';
|
|
@@ -179,7 +202,8 @@ export function row(r: Row): string {
|
|
|
179
202
|
return (
|
|
180
203
|
`| [${label}](${r.path}) | ${title} | ${r.status ?? '—'} ` +
|
|
181
204
|
`| ${r.date ?? '—'} | ${r.provenance_kind ?? '—'} | ${r.evidence_grade ?? '—'} ` +
|
|
182
|
-
`| ${r.supersedes
|
|
205
|
+
`| ${supersessionCell(r.supersedes, r.supersedes_scope)} ` +
|
|
206
|
+
`| ${supersessionCell(r.superseded_by, r.superseded_scope)} ` +
|
|
183
207
|
`| ${r.amended_by ?? '—'} |`
|
|
184
208
|
);
|
|
185
209
|
}
|
|
@@ -243,7 +267,7 @@ export function render(num: Row[], leg: Row[], outside: OutsideRow[] = []): stri
|
|
|
243
267
|
const out = [
|
|
244
268
|
'# ADR Index',
|
|
245
269
|
'',
|
|
246
|
-
'
|
|
270
|
+
generatedByItalic('regenerate_index'),
|
|
247
271
|
'',
|
|
248
272
|
];
|
|
249
273
|
if (num.length === 0 && leg.length === 0 && outside.length === 0) {
|
|
@@ -503,6 +503,20 @@ export function verdict_for(r: Omit<CiteResult, 'verdict'>): string {
|
|
|
503
503
|
const by = r.superseded_by !== undefined && r.superseded_by !== '—' ? ` (by ${r.superseded_by})` : '';
|
|
504
504
|
return `NOT A LIVE LOCK — status is \`${status}\`${by}. Citing it as a blocker is a stale-state claim.`;
|
|
505
505
|
}
|
|
506
|
+
if (status === 'challenged') {
|
|
507
|
+
// Reported DISTINCTLY from `accepted` and from `superseded`, and it is a
|
|
508
|
+
// LIVE lock. `challenged` records "accepted, and under active question";
|
|
509
|
+
// it names no successor and suspends nothing. If citing it cleared the
|
|
510
|
+
// lock, the status would become a way to stop obeying a decision without
|
|
511
|
+
// reopening it — road-to-decision-conformance 1.2 names that as the
|
|
512
|
+
// failure to prevent, and this branch is where it would have happened.
|
|
513
|
+
return (
|
|
514
|
+
'LIVE, CHALLENGED — the decision is under active question and STILL BINDS. ' +
|
|
515
|
+
'A challenge is not a successor: nothing has replaced this record. Read the ' +
|
|
516
|
+
'challenge, then either satisfy it or route the reopening — do not treat the ' +
|
|
517
|
+
'status as permission to act against the decision.'
|
|
518
|
+
);
|
|
519
|
+
}
|
|
506
520
|
if (status === 'rejected') {
|
|
507
521
|
return (
|
|
508
522
|
'LIVE — status `rejected` records a REJECTED PROPOSAL, so the rejection is the ' +
|
|
@@ -793,18 +807,167 @@ export function selfTest(): number {
|
|
|
793
807
|
}
|
|
794
808
|
}
|
|
795
809
|
|
|
810
|
+
/**
|
|
811
|
+
* One row per ADR — the corpus survey `road-to-decision-conformance` Phase 2
|
|
812
|
+
* asks for. Distinct from `--cited`, which resolves every ADR *citation* and
|
|
813
|
+
* answers "does this reference land"; this answers "what state is the corpus
|
|
814
|
+
* in", which is a different denominator (186 records vs the citations that
|
|
815
|
+
* happen to name them).
|
|
816
|
+
*/
|
|
817
|
+
export interface CorpusRow {
|
|
818
|
+
ref: string;
|
|
819
|
+
file: string;
|
|
820
|
+
status: string;
|
|
821
|
+
/** `superseded_by` when present, else `—`. */
|
|
822
|
+
successor: string;
|
|
823
|
+
/** Does the record carry a `review_trigger` at all? */
|
|
824
|
+
has_trigger: boolean;
|
|
825
|
+
/** Only meaningful when `has_trigger`; see `TRIGGER_VERDICTS`. */
|
|
826
|
+
trigger: 'fired' | 'not-fired' | 'indeterminate' | 'none';
|
|
827
|
+
reopen_policy: string;
|
|
828
|
+
/** Cited anywhere OUTSIDE `docs/decisions/`. */
|
|
829
|
+
cited_outside: boolean;
|
|
830
|
+
}
|
|
831
|
+
|
|
832
|
+
/**
|
|
833
|
+
* The three states 2.2 requires, and why a fourth exists beside them.
|
|
834
|
+
*
|
|
835
|
+
* `none` is NOT one of the three. The step asks that fired + not-fired +
|
|
836
|
+
* indeterminate sum to "the number of ADRs carrying a trigger", so a record
|
|
837
|
+
* with no trigger is outside the denominator rather than a fourth bucket
|
|
838
|
+
* inside it.
|
|
839
|
+
*/
|
|
840
|
+
export const TRIGGER_VERDICTS = ['fired', 'not-fired', 'indeterminate'] as const;
|
|
841
|
+
|
|
842
|
+
/** Every ADR file, surveyed. */
|
|
843
|
+
export function corpus_survey(repo_root: string = REPO_ROOT): CorpusRow[] {
|
|
844
|
+
const files = adr_files(repo_root);
|
|
845
|
+
const cited_outside = new Set<string>();
|
|
846
|
+
for (const root of CITATION_ROOTS) {
|
|
847
|
+
for (const file of walk_citable(path.join(repo_root, root))) {
|
|
848
|
+
const rel = path.relative(repo_root, file);
|
|
849
|
+
if (rel.startsWith(path.join('docs', 'decisions'))) continue;
|
|
850
|
+
for (const m of fs.readFileSync(file, 'utf-8').matchAll(CITATION_RE)) {
|
|
851
|
+
const parsed = normalise_ref(m[0]);
|
|
852
|
+
if (parsed !== null) cited_outside.add(parsed.id);
|
|
853
|
+
}
|
|
854
|
+
}
|
|
855
|
+
}
|
|
856
|
+
const rows: CorpusRow[] = [];
|
|
857
|
+
for (const f of files) {
|
|
858
|
+
const text = fs.readFileSync(f, 'utf-8');
|
|
859
|
+
const fm = parse_frontmatter(text) ?? {};
|
|
860
|
+
const base = path.basename(f);
|
|
861
|
+
// Key on the SAME identity the citation side produces, via
|
|
862
|
+
// `normalise_ref`. Deriving it with a private regex here is how the two
|
|
863
|
+
// halves of a join silently stop matching.
|
|
864
|
+
const parsedSelf = normalise_ref(path.relative(repo_root, f));
|
|
865
|
+
const num = parsedSelf?.id ?? base;
|
|
866
|
+
const raw_trigger = (fm['review_trigger'] ?? '').trim();
|
|
867
|
+
rows.push({
|
|
868
|
+
ref: num,
|
|
869
|
+
file: path.relative(repo_root, f),
|
|
870
|
+
status: (fm['status'] ?? '(none)').trim(),
|
|
871
|
+
successor: (fm['superseded_by'] ?? '—').trim() || '—',
|
|
872
|
+
has_trigger: raw_trigger !== '' && raw_trigger.toLowerCase() !== 'unclassified',
|
|
873
|
+
trigger: trigger_state(fm),
|
|
874
|
+
reopen_policy: (fm['reopen_policy'] ?? 'unclassified').trim() || 'unclassified',
|
|
875
|
+
cited_outside: cited_outside.has(num),
|
|
876
|
+
});
|
|
877
|
+
}
|
|
878
|
+
return rows.sort((a, b) => a.ref.localeCompare(b.ref));
|
|
879
|
+
}
|
|
880
|
+
|
|
881
|
+
export interface CorpusSummary {
|
|
882
|
+
total: number;
|
|
883
|
+
by_status: Record<string, number>;
|
|
884
|
+
with_trigger: number;
|
|
885
|
+
trigger_counts: Record<string, number>;
|
|
886
|
+
accepted: number;
|
|
887
|
+
accepted_cited_outside: number;
|
|
888
|
+
uncited_pct: number;
|
|
889
|
+
reopen_policy_declared: number;
|
|
890
|
+
}
|
|
891
|
+
|
|
892
|
+
export function corpus_summary(rows: readonly CorpusRow[]): CorpusSummary {
|
|
893
|
+
const by_status: Record<string, number> = {};
|
|
894
|
+
for (const r of rows) by_status[r.status] = (by_status[r.status] ?? 0) + 1;
|
|
895
|
+
const with_trigger = rows.filter((r) => r.has_trigger).length;
|
|
896
|
+
const trigger_counts: Record<string, number> = { fired: 0, 'not-fired': 0, indeterminate: 0 };
|
|
897
|
+
for (const r of rows) {
|
|
898
|
+
if (!r.has_trigger) continue;
|
|
899
|
+
trigger_counts[r.trigger] = (trigger_counts[r.trigger] ?? 0) + 1;
|
|
900
|
+
}
|
|
901
|
+
const accepted = rows.filter((r) => r.status.toLowerCase() === 'accepted');
|
|
902
|
+
const cited = accepted.filter((r) => r.cited_outside).length;
|
|
903
|
+
return {
|
|
904
|
+
total: rows.length,
|
|
905
|
+
by_status,
|
|
906
|
+
with_trigger,
|
|
907
|
+
trigger_counts,
|
|
908
|
+
accepted: accepted.length,
|
|
909
|
+
accepted_cited_outside: cited,
|
|
910
|
+
uncited_pct: accepted.length === 0 ? 0 : ((accepted.length - cited) * 100) / accepted.length,
|
|
911
|
+
reopen_policy_declared: rows.filter((r) => r.reopen_policy !== 'unclassified').length,
|
|
912
|
+
};
|
|
913
|
+
}
|
|
914
|
+
|
|
915
|
+
function render_corpus(rows: readonly CorpusRow[], sum: CorpusSummary): string {
|
|
916
|
+
const out: string[] = [];
|
|
917
|
+
out.push(`adr corpus survey · ${String(sum.total)} decision record(s)\n`);
|
|
918
|
+
out.push(' status:');
|
|
919
|
+
for (const [k, v] of Object.entries(sum.by_status).sort()) {
|
|
920
|
+
out.push(` ${k.padEnd(14)} ${String(v)}`);
|
|
921
|
+
}
|
|
922
|
+
out.push('');
|
|
923
|
+
out.push(` review_trigger — ${String(sum.with_trigger)} record(s) carry one:`);
|
|
924
|
+
for (const k of TRIGGER_VERDICTS) {
|
|
925
|
+
out.push(` ${k.padEnd(14)} ${String(sum.trigger_counts[k] ?? 0)}`);
|
|
926
|
+
}
|
|
927
|
+
const triSum = TRIGGER_VERDICTS.reduce((a, k) => a + (sum.trigger_counts[k] ?? 0), 0);
|
|
928
|
+
out.push(
|
|
929
|
+
` ${'sum'.padEnd(14)} ${String(triSum)}` +
|
|
930
|
+
(triSum === sum.with_trigger ? ' ✅ equals the carrying count' : ' ❌ DOES NOT equal the carrying count'),
|
|
931
|
+
);
|
|
932
|
+
out.push('');
|
|
933
|
+
out.push(
|
|
934
|
+
` citation reach — ${String(sum.accepted_cited_outside)} of ${String(sum.accepted)} accepted ` +
|
|
935
|
+
`ADR(s) are cited outside docs/decisions/ (${sum.uncited_pct.toFixed(1)} % uncited)`,
|
|
936
|
+
);
|
|
937
|
+
out.push(
|
|
938
|
+
` reopen_policy — ${String(sum.reopen_policy_declared)} of ${String(sum.total)} declare one; ` +
|
|
939
|
+
'the rest resolve to `unclassified`',
|
|
940
|
+
);
|
|
941
|
+
out.push('');
|
|
942
|
+
out.push(' Reports only. This command decides nothing and gates nothing.');
|
|
943
|
+
return out.join('\n') + '\n';
|
|
944
|
+
}
|
|
945
|
+
|
|
796
946
|
function main(argv: string[]): number {
|
|
797
947
|
const as_json = argv.includes('--json');
|
|
798
948
|
if (argv.includes('--self-test')) return selfTest();
|
|
799
949
|
const corpus_mode = argv.includes('--cited');
|
|
950
|
+
const survey_mode = argv.includes('--all');
|
|
951
|
+
if (survey_mode) {
|
|
952
|
+
const root = scan_root();
|
|
953
|
+
const rows = corpus_survey(root);
|
|
954
|
+
const sum = corpus_summary(rows);
|
|
955
|
+
process.stdout.write(
|
|
956
|
+
as_json ? `${JSON.stringify({ summary: sum, rows }, null, 2)}\n` : render_corpus(rows, sum),
|
|
957
|
+
);
|
|
958
|
+
return 0;
|
|
959
|
+
}
|
|
800
960
|
const explicit = argv.filter((a) => !a.startsWith('--'));
|
|
801
961
|
if (!corpus_mode && explicit.length === 0) {
|
|
802
962
|
process.stderr.write(
|
|
803
963
|
'usage: adr_cite_check <ADR-NNN> [ADR-NNN …] [--json]\n' +
|
|
804
964
|
' adr_cite_check --cited [--json]\n' +
|
|
965
|
+
' adr_cite_check --all [--json]\n' +
|
|
805
966
|
' evaluate a decision before citing it as a reason not to act\n' +
|
|
806
967
|
' --cited: resolve every ADR citation in ' +
|
|
807
|
-
`${CITATION_ROOTS.join(', ')} (the CI gate)\n
|
|
968
|
+
`${CITATION_ROOTS.join(', ')} (the CI gate)\n` +
|
|
969
|
+
' --all: one row per decision record — status, successor, trigger\n' +
|
|
970
|
+
' state, reopen_policy, citation reach. Reports only.\n',
|
|
808
971
|
);
|
|
809
972
|
return 2;
|
|
810
973
|
}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The argument-exhaustion stop predicate, with the ordering encoded.
|
|
3
|
+
*
|
|
4
|
+
* `road-to-inbox-harvest-2026-08-e-council-topology-evidence` Phase 6.2, and the
|
|
5
|
+
* resolution of its `early-stop-vs-dissent-ordering` blocker.
|
|
6
|
+
*
|
|
7
|
+
* ## The ordering IS the substance
|
|
8
|
+
*
|
|
9
|
+
* Anti-conformity repair must fire **before** the cost stop, because
|
|
10
|
+
* **convergence may be conformity collapse rather than solution stability**. A
|
|
11
|
+
* round where everyone agrees because nobody pushed back looks, to a cost meter,
|
|
12
|
+
* exactly like a round where the argument is genuinely finished — and stopping
|
|
13
|
+
* there reports the collapse as consensus. That is the failure Phase 6 exists to
|
|
14
|
+
* prevent, so `dissentRepairAttempted` is a **required conjunct of the
|
|
15
|
+
* predicate**, not a soft check somewhere upstream that the predicate hopes ran.
|
|
16
|
+
*
|
|
17
|
+
* Encoding it as a conjunct rather than as call-order discipline is deliberate:
|
|
18
|
+
* a caller that forgets the order produces a wrong answer silently, while a
|
|
19
|
+
* caller that forgets to set the field produces `false` — the safe direction,
|
|
20
|
+
* and a visible one.
|
|
21
|
+
*
|
|
22
|
+
* ## Why all four, and why none of them is majority size
|
|
23
|
+
*
|
|
24
|
+
* A stop fires only when **every** condition holds:
|
|
25
|
+
*
|
|
26
|
+
* 1. `roundsCompleted >= MIN_ROUNDS` — one round is an opening statement, not an
|
|
27
|
+
* argument. There is nothing to be exhausted yet.
|
|
28
|
+
* 2. `dissentRepairAttempted` — the conformity defence got its chance.
|
|
29
|
+
* 3. every present member is a self-near-duplicate of their own prior round —
|
|
30
|
+
* the members have stopped adding, judged by the novelty logic that already
|
|
31
|
+
* exists rather than by a new similarity measure.
|
|
32
|
+
* 4. no unresolved adversarial trigger — an open objection is unfinished
|
|
33
|
+
* argument whatever the novelty numbers say.
|
|
34
|
+
*
|
|
35
|
+
* **Majority size is absent on purpose** (6.3). Unanimity is the single most
|
|
36
|
+
* available signal and the single least trustworthy one here: it is exactly what
|
|
37
|
+
* conformity collapse produces. A predicate that read it would stop soonest in
|
|
38
|
+
* precisely the case it must not.
|
|
39
|
+
*
|
|
40
|
+
* Everything here is pure and reads already-paid outputs — no model call, which
|
|
41
|
+
* is 6.1's contract and the reason this can be evaluated after every round for
|
|
42
|
+
* free.
|
|
43
|
+
*/
|
|
44
|
+
|
|
45
|
+
/** One round is an opening statement; exhaustion needs an exchange. */
|
|
46
|
+
export const MIN_ROUNDS = 2;
|
|
47
|
+
|
|
48
|
+
export interface StopInputs {
|
|
49
|
+
/** Rounds completed so far. */
|
|
50
|
+
roundsCompleted: number;
|
|
51
|
+
/**
|
|
52
|
+
* Whether anti-conformity repair ran for the round under judgement.
|
|
53
|
+
*
|
|
54
|
+
* The ordering conjunct. `false` when repair was skipped, deferred, or
|
|
55
|
+
* never reached — all three are the same thing to this predicate, because
|
|
56
|
+
* all three leave conformity collapse untested.
|
|
57
|
+
*/
|
|
58
|
+
dissentRepairAttempted: boolean;
|
|
59
|
+
/**
|
|
60
|
+
* Per present member: did this round near-duplicate that member's own prior
|
|
61
|
+
* round? Absent members contribute no entry rather than a `false`.
|
|
62
|
+
*/
|
|
63
|
+
selfNearDuplicate: readonly boolean[];
|
|
64
|
+
/** Adversarial triggers raised and not yet resolved. */
|
|
65
|
+
unresolvedAdversarialTriggers: number;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
export type StopBlocker =
|
|
69
|
+
| 'too-few-rounds'
|
|
70
|
+
| 'dissent-repair-not-attempted'
|
|
71
|
+
| 'members-still-adding'
|
|
72
|
+
| 'unresolved-adversarial-trigger'
|
|
73
|
+
| 'no-members-present';
|
|
74
|
+
|
|
75
|
+
export interface StopVerdict {
|
|
76
|
+
stop: boolean;
|
|
77
|
+
/** Every condition that failed, not just the first — a caller acting on one
|
|
78
|
+
* reason at a time would re-evaluate N times to learn N blockers. */
|
|
79
|
+
blockers: StopBlocker[];
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
export function evaluateStop(x: StopInputs): StopVerdict {
|
|
83
|
+
const blockers: StopBlocker[] = [];
|
|
84
|
+
|
|
85
|
+
if (x.roundsCompleted < MIN_ROUNDS) blockers.push('too-few-rounds');
|
|
86
|
+
|
|
87
|
+
// The ordering conjunct. Deliberately evaluated as its own condition rather
|
|
88
|
+
// than folded into a caller-side guard: see the module docstring.
|
|
89
|
+
if (!x.dissentRepairAttempted) blockers.push('dissent-repair-not-attempted');
|
|
90
|
+
|
|
91
|
+
if (x.selfNearDuplicate.length === 0) {
|
|
92
|
+
// No present member is not "everyone is done" — it is no evidence at
|
|
93
|
+
// all. `every()` over an empty array is vacuously true, which would
|
|
94
|
+
// make an empty council the easiest one to stop.
|
|
95
|
+
blockers.push('no-members-present');
|
|
96
|
+
} else if (!x.selfNearDuplicate.every((d) => d)) {
|
|
97
|
+
blockers.push('members-still-adding');
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
if (x.unresolvedAdversarialTriggers > 0) blockers.push('unresolved-adversarial-trigger');
|
|
101
|
+
|
|
102
|
+
return { stop: blockers.length === 0, blockers };
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* The rendering contract for a stopped run (6.4).
|
|
107
|
+
*
|
|
108
|
+
* A stopped run must be **textually distinguishable** from a full one. The
|
|
109
|
+
* failure this prevents is quiet and expensive: an artifact that reads as though
|
|
110
|
+
* all configured rounds executed, when three of five did, is a claim about
|
|
111
|
+
* deliberation depth that nobody made on purpose.
|
|
112
|
+
*/
|
|
113
|
+
export interface StopRender {
|
|
114
|
+
roundsCompleted: number;
|
|
115
|
+
roundsConfigured: number;
|
|
116
|
+
savedCalls: number;
|
|
117
|
+
savedCostUsd: number;
|
|
118
|
+
exhaustedMembers: readonly string[];
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
export function renderStop(r: StopRender): string {
|
|
122
|
+
return [
|
|
123
|
+
`council: STOPPED EARLY — round ${String(r.roundsCompleted)} of ${String(r.roundsConfigured)}.`,
|
|
124
|
+
' reason: argument exhaustion — every present member near-duplicated their own',
|
|
125
|
+
' prior round, after anti-conformity repair had already been attempted.',
|
|
126
|
+
` exhausted: ${r.exhaustedMembers.length > 0 ? r.exhaustedMembers.join(', ') : '(none named)'}`,
|
|
127
|
+
` saved: ${String(r.savedCalls)} call(s), $${r.savedCostUsd.toFixed(4)}`,
|
|
128
|
+
' NOT a full run: the remaining configured rounds did not execute.',
|
|
129
|
+
].join('\n');
|
|
130
|
+
}
|
|
@@ -31,7 +31,17 @@ type Dict = Record<string, unknown>;
|
|
|
31
31
|
|
|
32
32
|
// ── deterministic seeding (sha256 of the question text — no Math.random, no Date) ──
|
|
33
33
|
|
|
34
|
-
|
|
34
|
+
/**
|
|
35
|
+
* `sha256(s)` as lowercase hex.
|
|
36
|
+
*
|
|
37
|
+
* EXPORTED since 2026-08-30 rather than copied: the re-council guard
|
|
38
|
+
* (`recouncil_guard.ts`) needs the question hash, and
|
|
39
|
+
* road-to-inbox-harvest-2026-08-e-council-topology-evidence 1A.1 requires it to
|
|
40
|
+
* reuse THE EXISTING one — "no second hash implementation". Two hashes of one
|
|
41
|
+
* question are two answers to "is this the same question", and the second one
|
|
42
|
+
* is the one nobody updates.
|
|
43
|
+
*/
|
|
44
|
+
export function _sha256_hex(s: string): string {
|
|
35
45
|
return createHash('sha256').update(s, 'utf-8').digest('hex');
|
|
36
46
|
}
|
|
37
47
|
|
|
@@ -269,6 +269,8 @@ export class CouncilResponse {
|
|
|
269
269
|
// persisted response JSON stay backward-compatible.
|
|
270
270
|
model_served: string;
|
|
271
271
|
text: string;
|
|
272
|
+
/** Pre-rewrite reply; `null` when nothing rewrote `text`. See inline_findings.ts. */
|
|
273
|
+
raw_text: string | null;
|
|
272
274
|
input_tokens: number;
|
|
273
275
|
output_tokens: number;
|
|
274
276
|
// Prompt-cache accounting (Anthropic). `cache_read_input_tokens` bill at
|
|
@@ -286,6 +288,7 @@ export class CouncilResponse {
|
|
|
286
288
|
model: string;
|
|
287
289
|
model_served?: string;
|
|
288
290
|
text: string;
|
|
291
|
+
raw_text?: string | null;
|
|
289
292
|
input_tokens?: number;
|
|
290
293
|
output_tokens?: number;
|
|
291
294
|
cache_creation_input_tokens?: number;
|
|
@@ -298,6 +301,7 @@ export class CouncilResponse {
|
|
|
298
301
|
this.model = opts.model;
|
|
299
302
|
this.model_served = opts.model_served ?? '';
|
|
300
303
|
this.text = opts.text;
|
|
304
|
+
this.raw_text = opts.raw_text ?? null;
|
|
301
305
|
this.input_tokens = opts.input_tokens ?? 0;
|
|
302
306
|
this.output_tokens = opts.output_tokens ?? 0;
|
|
303
307
|
this.cache_creation_input_tokens = opts.cache_creation_input_tokens ?? 0;
|
|
@@ -359,6 +359,8 @@ export interface ConsensusScoringConfig {
|
|
|
359
359
|
readonly strong_threshold: number;
|
|
360
360
|
readonly minority_threshold: number;
|
|
361
361
|
readonly lenses: readonly string[];
|
|
362
|
+
/** Phase 1B — see `inline_findings.ts`. Default `false` until 1B.4's gate is met. */
|
|
363
|
+
readonly inline_findings: boolean;
|
|
362
364
|
}
|
|
363
365
|
|
|
364
366
|
const _VALID_NECESSITY_MODES: ReadonlySet<string> = new Set([
|
|
@@ -1462,6 +1464,7 @@ function _build_consensus_scoring(d: Dict): ConsensusScoringConfig {
|
|
|
1462
1464
|
strong_threshold: strong,
|
|
1463
1465
|
minority_threshold: minority,
|
|
1464
1466
|
lenses: lenses_raw as string[],
|
|
1467
|
+
inline_findings: Boolean(_pyTruthy(_get(d, 'inline_findings', false))),
|
|
1465
1468
|
};
|
|
1466
1469
|
}
|
|
1467
1470
|
|
|
@@ -34,9 +34,9 @@ import { pyRound } from '../_lib/value_ladder.js';
|
|
|
34
34
|
// Python: re.compile(r"```(?:json)?\s*(\[.*?\])\s*```", re.DOTALL)
|
|
35
35
|
// re.DOTALL → 's'. Python regex is not global; a fresh RegExp per call avoids
|
|
36
36
|
// lastIndex carryover, and we use .exec() (first match) below.
|
|
37
|
-
const _JSON_BLOCK_SRC = '```(?:json)?\\s*(\\[[\\s\\S]*?\\])\\s*```';
|
|
37
|
+
export const _JSON_BLOCK_SRC = '```(?:json)?\\s*(\\[[\\s\\S]*?\\])\\s*```';
|
|
38
38
|
// Python: re.compile(r"(\[\s*\{.*?\}\s*\])", re.DOTALL)
|
|
39
|
-
const _BARE_ARRAY_SRC = '(\\[\\s*\\{[\\s\\S]*?\\}\\s*\\])';
|
|
39
|
+
export const _BARE_ARRAY_SRC = '(\\[\\s*\\{[\\s\\S]*?\\}\\s*\\])';
|
|
40
40
|
|
|
41
41
|
// Defaults mirror the roadmap (Phase 4 Step 4). The .agent-settings.yml
|
|
42
42
|
// block overrides them at run time.
|
|
@@ -302,6 +302,22 @@ export type FindingsParseOutcome = 'parsed' | 'empty' | 'parse_failed';
|
|
|
302
302
|
export interface FindingsExtraction {
|
|
303
303
|
readonly findings: Finding[];
|
|
304
304
|
readonly outcome: FindingsParseOutcome;
|
|
305
|
+
/**
|
|
306
|
+
* How many array items the parse SAW, before `_collect_findings` skipped the
|
|
307
|
+
* ones missing `id` or `text`.
|
|
308
|
+
*
|
|
309
|
+
* `outcome: 'parsed'` alone says only "this was a syntactically valid JSON
|
|
310
|
+
* array". A caller deciding whether the array is a member's own findings
|
|
311
|
+
* BLOCK — as opposed to some other JSON the member happened to quote —
|
|
312
|
+
* needs to know whether every item survived. Added 2026-08-30 after a
|
|
313
|
+
* completion review found the inline-findings short-circuit reading
|
|
314
|
+
* `'parsed'` as "this is a findings block" and silently deleting quoted
|
|
315
|
+
* evidence from the text peer review reads.
|
|
316
|
+
*
|
|
317
|
+
* 0 for `empty` and `parse_failed`, and 0 for the bare-`[]` branch, whose
|
|
318
|
+
* item count genuinely is zero.
|
|
319
|
+
*/
|
|
320
|
+
readonly item_count: number;
|
|
305
321
|
}
|
|
306
322
|
|
|
307
323
|
/**
|
|
@@ -317,7 +333,7 @@ export function parse_findings_outcome(
|
|
|
317
333
|
): FindingsExtraction {
|
|
318
334
|
const source = opts.source;
|
|
319
335
|
if (text.trim() === '') {
|
|
320
|
-
return { findings: [], outcome: 'empty' };
|
|
336
|
+
return { findings: [], outcome: 'empty', item_count: 0 };
|
|
321
337
|
}
|
|
322
338
|
const array = _extract_json_array(text);
|
|
323
339
|
if (!array) {
|
|
@@ -335,20 +351,24 @@ export function parse_findings_outcome(
|
|
|
335
351
|
// `parse_findings_response` and `parse_scores_response` accept, which is a
|
|
336
352
|
// behaviour change this step did not ask for.
|
|
337
353
|
if (/(^|[\s`])\[\s*\](\s|`|$)/.test(text)) {
|
|
338
|
-
return { findings: [], outcome: 'parsed' };
|
|
354
|
+
return { findings: [], outcome: 'parsed', item_count: 0 };
|
|
339
355
|
}
|
|
340
|
-
return { findings: [], outcome: 'parse_failed' };
|
|
356
|
+
return { findings: [], outcome: 'parse_failed', item_count: 0 };
|
|
341
357
|
}
|
|
342
358
|
let parsed: unknown;
|
|
343
359
|
try {
|
|
344
360
|
parsed = JSON.parse(array);
|
|
345
361
|
} catch {
|
|
346
|
-
return { findings: [], outcome: 'parse_failed' };
|
|
362
|
+
return { findings: [], outcome: 'parse_failed', item_count: 0 };
|
|
347
363
|
}
|
|
348
364
|
if (!Array.isArray(parsed)) {
|
|
349
|
-
return { findings: [], outcome: 'parse_failed' };
|
|
365
|
+
return { findings: [], outcome: 'parse_failed', item_count: 0 };
|
|
350
366
|
}
|
|
351
|
-
return {
|
|
367
|
+
return {
|
|
368
|
+
findings: _collect_findings(parsed, source),
|
|
369
|
+
outcome: 'parsed',
|
|
370
|
+
item_count: parsed.length,
|
|
371
|
+
};
|
|
352
372
|
}
|
|
353
373
|
|
|
354
374
|
export function parse_findings_response(
|