@event4u/agent-config 14.12.0 → 14.14.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 +118 -155
- 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 +145 -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/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-comment-discipline.md +6 -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 +252 -8
- package/dist/agent-src/scripts/guarded_baseline.ts +343 -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 +516 -0
- package/dist/agent-src/scripts/ticket_bundles.ts +84 -0
- package/dist/agent-src/scripts/update_roadmap_progress.ts +16 -12
- 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/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 +17 -1
- 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/react-shadcn-ui/SKILL.md +1 -1
- package/dist/agent-src/skills/skill-writing/references/procedure.md +5 -5
- 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/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 +45 -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-JCW7ZLHK.js → chunk-4FS4WRXP.js} +5 -0
- package/dist/cli-delegate/{chunk-OMIVVCG2.js → chunk-A4QJ6ENT.js} +24 -0
- package/dist/cli-delegate/{chunk-JJA2QEWA.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 +80 -11
- 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 +58 -58
- 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 +2900 -1049
- 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 +634 -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 +4895 -2627
- package/dist/server/schemas/settings.js +3 -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 +10 -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/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 +18 -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/llms.txt +2 -2
- package/package.json +5 -2
- package/src/agent-src/scripts/archive_completed_roadmaps.ts +252 -8
- package/src/agent-src/scripts/guarded_baseline.ts +343 -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 +516 -0
- package/src/agent-src/scripts/ticket_bundles.ts +84 -0
- package/src/agent-src/scripts/update_roadmap_progress.ts +16 -12
- 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 +32 -3
- package/src/config/assurance-capability-registry.json +21 -9
- 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 +80 -0
- package/src/config/drafting-channels.yml +43 -0
- package/src/config/estate-count-budget.json +57 -36
- package/src/config/evaluator-budgets.json +14 -14
- package/src/config/gate-coverage.yml +729 -63
- package/src/config/gate-reachability-exemptions.json +21 -0
- package/src/config/gate-violation-baselines.json +42 -19
- 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 +16 -15
- package/src/config/preamble-payload-budget.json +12 -4
- 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 +16 -2
- package/src/config/rule-stub-ceilings.json +133 -112
- package/src/config/turnaround-budget.json +66 -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 +23 -0
- package/src/scripts/_lib/activation_ladder.ts +255 -0
- package/src/scripts/_lib/activation_receipt_producer.ts +341 -0
- package/src/scripts/_lib/activation_states.ts +88 -0
- package/src/scripts/_lib/adherence_detectors.ts +143 -0
- package/src/scripts/_lib/adr_frontmatter.ts +26 -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_pair_delta.ts +349 -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/carrier_status.ts +118 -0
- package/src/scripts/_lib/cascade_stage_enumeration.ts +92 -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/corpus_manifest.ts +726 -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 +282 -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/estate_carrier_cases.ts +72 -0
- package/src/scripts/_lib/eval_publication.ts +354 -0
- package/src/scripts/_lib/evaluation_cascade.ts +452 -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/evolution_roi.ts +562 -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/generated_by.ts +66 -0
- package/src/scripts/_lib/harness_evolution_guards.ts +239 -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/lexical_shortlist.ts +215 -0
- package/src/scripts/_lib/llm_candidate_proposer.ts +461 -0
- package/src/scripts/_lib/llm_proposer_transport.ts +153 -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/pathology_archive.ts +393 -0
- package/src/scripts/_lib/prefix_stable_surfaces.ts +123 -0
- package/src/scripts/_lib/privacy_class.ts +47 -0
- package/src/scripts/_lib/promotion_capability.ts +315 -0
- package/src/scripts/_lib/promotion_evidence.ts +414 -0
- package/src/scripts/_lib/promotion_review.ts +294 -0
- package/src/scripts/_lib/prompt_shape.ts +92 -0
- package/src/scripts/_lib/regression_neighbourhood.ts +259 -0
- package/src/scripts/_lib/release_highlights.ts +70 -1
- package/src/scripts/_lib/release_material.ts +125 -2
- 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/routing_corpus.ts +307 -0
- package/src/scripts/_lib/routing_index_input.ts +104 -0
- package/src/scripts/_lib/rule_injection.ts +22 -1
- package/src/scripts/_lib/runtime_journal.ts +1499 -0
- package/src/scripts/_lib/runtime_wiring_checks.ts +430 -0
- package/src/scripts/_lib/semantic_noop.ts +167 -0
- package/src/scripts/_lib/skill_catalogue.ts +11 -1
- 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/activation_receipt.ts +258 -0
- 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/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/cross_exam.ts +128 -0
- package/src/scripts/ai_council/disagreement_signal.ts +338 -0
- package/src/scripts/ai_council/explain_route.ts +157 -0
- package/src/scripts/ai_council/information_gain.ts +293 -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/leakage_corpus.ts +385 -0
- package/src/scripts/ai_council/leakage_patterns.ts +453 -0
- package/src/scripts/ai_council/minority_retention.ts +171 -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/recouncil_savings.ts +299 -0
- package/src/scripts/ai_council/replay_route.ts +223 -0
- package/src/scripts/ai_council/response_record.ts +50 -0
- package/src/scripts/ai_council/reviewer_assignment.ts +279 -0
- package/src/scripts/ai_council/routing_training_row.ts +197 -0
- package/src/scripts/ai_council/synthesis_strategy.ts +159 -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 +131 -10
- 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 +34 -1
- package/src/scripts/check_claims.ts +576 -6
- 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 +347 -25
- 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 +114 -3
- 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_release_highlights.ts +96 -13
- package/src/scripts/check_roadmap_trackable.ts +17 -2
- 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 +26 -3
- 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/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/corpus_manifest.ts +235 -0
- 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/dispatch_r2_reviewer.ts +46 -5
- package/src/scripts/evolution_lab.ts +1153 -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 -16
- 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/comment_discipline_hook.ts +146 -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 +10 -0
- package/src/scripts/hooks/turn_end_gate_hook.ts +9 -1
- 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/language_mirror_hook.ts +14 -2
- package/src/scripts/lint_adr_sweep_routing.ts +12 -0
- package/src/scripts/lint_canonical_terms.ts +604 -0
- package/src/scripts/lint_carrier_integrity.ts +820 -0
- package/src/scripts/lint_code_comments.ts +643 -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_plan_risk_register.ts +39 -19
- package/src/scripts/lint_promotion_paths.ts +779 -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 +426 -23
- package/src/scripts/lint_ticket_buildable.ts +17 -1
- package/src/scripts/llm_propose.ts +256 -0
- 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_delivery_sets.ts +361 -0
- package/src/scripts/measure_docs_dead_links.ts +348 -0
- package/src/scripts/measure_host_capture.ts +461 -0
- package/src/scripts/measure_routing_signal.ts +307 -0
- package/src/scripts/migration_status.ts +3 -3
- package/src/scripts/model_rule_injection.ts +76 -0
- package/src/scripts/orchestration_record.ts +14 -0
- package/src/scripts/preamble_byte_census.ts +139 -10
- package/src/scripts/prepack-check.mjs +4 -1
- package/src/scripts/probe_council_retention.ts +495 -0
- package/src/scripts/probe_turnaround.ts +384 -0
- package/src/scripts/probe_unblocked_ask.ts +279 -0
- package/src/scripts/release.ts +21 -37
- package/src/scripts/release_drill.ts +143 -0
- package/src/scripts/release_env.ts +35 -0
- package/src/scripts/release_publication.ts +84 -0
- package/src/scripts/render_benchmark_md.ts +1 -1
- 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/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 +3 -3
- package/src/scripts/trigger_eval_grandfather.json +202 -222
- package/src/scripts/utilization_report.ts +22 -2
- package/src/server/schemas/settings.ts +5 -0
- package/src/templates/marketing-copy.yml +1 -1
- package/dist/ui/assets/index-Cxgy63kz.js +0 -26
|
@@ -26,6 +26,7 @@ import {
|
|
|
26
26
|
bundle_roadmap,
|
|
27
27
|
} from './ai_council/bundler.js';
|
|
28
28
|
import { select_chairman } from './ai_council/chairman.js';
|
|
29
|
+
import { warnIfRecounciled } from './ai_council/recouncil_guard.js';
|
|
29
30
|
import { jaccardSimilarity } from './_lib/text_similarity.js';
|
|
30
31
|
import type { ChairmanCandidate } from './ai_council/chairman.js';
|
|
31
32
|
import { synthesis_template } from './ai_council/prompts.js';
|
|
@@ -137,19 +138,23 @@ import {
|
|
|
137
138
|
run_debate,
|
|
138
139
|
run_peer_review,
|
|
139
140
|
} from './ai_council/orchestrator.js';
|
|
141
|
+
import { serializeResponses } from './ai_council/response_record.js';
|
|
140
142
|
import {
|
|
141
143
|
type PriceTable,
|
|
142
144
|
downgrade_coupling,
|
|
143
|
-
|
|
145
|
+
allSeatsNonBillable,
|
|
144
146
|
estimate_input_tokens,
|
|
145
147
|
load_prices,
|
|
146
148
|
prices_file_for,
|
|
149
|
+
sumBillableCost,
|
|
147
150
|
} from './ai_council/pricing.js';
|
|
148
151
|
import { detect_project_context } from './ai_council/project_context.js';
|
|
149
152
|
import {
|
|
150
153
|
DecisionReplayInputs,
|
|
151
154
|
render_decision_replay,
|
|
152
155
|
} from './ai_council/replay.js';
|
|
156
|
+
import type { FindingsExtraction } from './ai_council/consensus.js';
|
|
157
|
+
import { harvest_inline_findings, inlineFindingsActive } from './ai_council/inline_findings.js';
|
|
153
158
|
import {
|
|
154
159
|
Finding as ConsensusFinding,
|
|
155
160
|
FindingScore as ConsensusFindingScore,
|
|
@@ -471,8 +476,6 @@ function load_settings(
|
|
|
471
476
|
return settings;
|
|
472
477
|
}
|
|
473
478
|
|
|
474
|
-
|
|
475
|
-
|
|
476
479
|
// ── member construction ─────────────────────────────────────────────
|
|
477
480
|
|
|
478
481
|
interface BuildMembersOptions {
|
|
@@ -1186,6 +1189,7 @@ function _maybe_run_consensus(
|
|
|
1186
1189
|
table: PriceTable,
|
|
1187
1190
|
project: unknown,
|
|
1188
1191
|
args: Args,
|
|
1192
|
+
inline_extractions: ReadonlyMap<string, FindingsExtraction> | null = null,
|
|
1189
1193
|
): ConsensusResult | null {
|
|
1190
1194
|
const cs = (ai_cfg['consensus_scoring'] as Dict) || {};
|
|
1191
1195
|
if (!_pyBool(cs['enabled'])) {
|
|
@@ -1196,6 +1200,7 @@ function _maybe_run_consensus(
|
|
|
1196
1200
|
return null;
|
|
1197
1201
|
}
|
|
1198
1202
|
return run_consensus_scoring(members, responses, {
|
|
1203
|
+
inline_extractions,
|
|
1199
1204
|
budget,
|
|
1200
1205
|
table,
|
|
1201
1206
|
project: project as never,
|
|
@@ -1230,8 +1235,8 @@ function _serialise_consensus(consensus: ConsensusResult): Dict {
|
|
|
1230
1235
|
reason: s.reason,
|
|
1231
1236
|
})),
|
|
1232
1237
|
metadata,
|
|
1233
|
-
extraction_responses:
|
|
1234
|
-
scoring_responses:
|
|
1238
|
+
extraction_responses: serializeResponses(consensus.extraction_responses),
|
|
1239
|
+
scoring_responses: serializeResponses(consensus.scoring_responses),
|
|
1235
1240
|
};
|
|
1236
1241
|
}
|
|
1237
1242
|
|
|
@@ -1478,7 +1483,7 @@ function _maybe_run_peer_review(
|
|
|
1478
1483
|
|
|
1479
1484
|
function _serialise_peer_review(peer_review: PeerReviewResult): Dict {
|
|
1480
1485
|
return {
|
|
1481
|
-
responses:
|
|
1486
|
+
responses: serializeResponses(peer_review.responses),
|
|
1482
1487
|
label_to_source: _mapToObject(peer_review.label_to_source),
|
|
1483
1488
|
persona_labels: _mapToObject(peer_review.persona_labels),
|
|
1484
1489
|
};
|
|
@@ -1773,28 +1778,6 @@ function _emit_debate_estimate(
|
|
|
1773
1778
|
return 0;
|
|
1774
1779
|
}
|
|
1775
1780
|
|
|
1776
|
-
function _serialise_responses(responses: CouncilResponse[]): Dict[] {
|
|
1777
|
-
const out: Dict[] = [];
|
|
1778
|
-
for (const r of responses) {
|
|
1779
|
-
const metadata: Dict = {};
|
|
1780
|
-
for (const [k, v] of Object.entries(r.metadata || {})) {
|
|
1781
|
-
metadata[k] = String(v);
|
|
1782
|
-
}
|
|
1783
|
-
out.push({
|
|
1784
|
-
provider: r.provider,
|
|
1785
|
-
model: r.model,
|
|
1786
|
-
text: r.text,
|
|
1787
|
-
input_tokens: r.input_tokens,
|
|
1788
|
-
output_tokens: r.output_tokens,
|
|
1789
|
-
cache_creation_input_tokens: r.cache_creation_input_tokens,
|
|
1790
|
-
cache_read_input_tokens: r.cache_read_input_tokens,
|
|
1791
|
-
latency_ms: r.latency_ms,
|
|
1792
|
-
error: r.error,
|
|
1793
|
-
metadata,
|
|
1794
|
-
});
|
|
1795
|
-
}
|
|
1796
|
-
return out;
|
|
1797
|
-
}
|
|
1798
1781
|
|
|
1799
1782
|
function _deserialise_responses(items: Dict[]): CouncilResponse[] {
|
|
1800
1783
|
const out: CouncilResponse[] = [];
|
|
@@ -2503,6 +2486,7 @@ function cmd_run(
|
|
|
2503
2486
|
const [extra_calls, extra_usd] = _consensus_cost_delta(ai_cfg, question.mode, estimates, billable.length);
|
|
2504
2487
|
const [ch_calls, ch_usd] = _chairman_cost_delta(ai_cfg, estimates);
|
|
2505
2488
|
const [pr_extra_calls, pr_extra_usd] = _peer_review_cost_delta(ai_cfg, args, estimates, billable.length);
|
|
2489
|
+
warnIfRecounciled(REPO_ROOT, artefact, question.user_prompt, members, _resolve_rounds(args, ai_cfg), _stdout);
|
|
2506
2490
|
if (!args.confirm) _stdout('council:run · DRY PASS — estimate only, no seat is contacted. Add --confirm to run.\n');
|
|
2507
2491
|
_stdout(
|
|
2508
2492
|
`council:run · mode=${question.mode} · members=${members.length} ` +
|
|
@@ -2623,6 +2607,9 @@ function cmd_run(
|
|
|
2623
2607
|
rounds,
|
|
2624
2608
|
advisor_plans,
|
|
2625
2609
|
stance_tally: stance_tally_on,
|
|
2610
|
+
// Phase 1B — the same predicate the harvest below reads, so a member is asked
|
|
2611
|
+
// for the block exactly when the consensus round intends to read one.
|
|
2612
|
+
inline_findings: inlineFindingsActive(ai_cfg, question.mode),
|
|
2626
2613
|
member_prompt_suffix,
|
|
2627
2614
|
no_project_context_members,
|
|
2628
2615
|
// Mid-flight cli→api fallback (ai-council-config.md § failure-class-
|
|
@@ -2706,6 +2693,9 @@ function cmd_run(
|
|
|
2706
2693
|
// this is always additive, never a fabricated decision.
|
|
2707
2694
|
const handoff: HandoffEnvelope = buildHandoffFromStanceTally(stance_tally_result);
|
|
2708
2695
|
const persona_labels = build_persona_labels(advisor_plans, billable);
|
|
2696
|
+
// Phase 1B — BEFORE peer review, chairman synthesis and rendering read
|
|
2697
|
+
// `responses`; the block is scaffolding, not argument. Off → null, nothing touched.
|
|
2698
|
+
const inline_extractions = inlineFindingsActive(ai_cfg, question.mode) ? harvest_inline_findings(members, responses) : null;
|
|
2709
2699
|
const peer_review = _maybe_run_peer_review(
|
|
2710
2700
|
ai_cfg,
|
|
2711
2701
|
args,
|
|
@@ -2717,7 +2707,7 @@ function cmd_run(
|
|
|
2717
2707
|
project,
|
|
2718
2708
|
{ persona_labels },
|
|
2719
2709
|
);
|
|
2720
|
-
const consensus = _maybe_run_consensus(ai_cfg, question, members, responses, budget, table, project, args);
|
|
2710
|
+
const consensus = _maybe_run_consensus(ai_cfg, question, members, responses, budget, table, project, args, inline_extractions);
|
|
2721
2711
|
// Rendered attendance, re-derived after the parser. The event does not move.
|
|
2722
2712
|
quorum_out.result = annotateRenderedQuorum(quorum_out.result, consensus?.parse_outcomes);
|
|
2723
2713
|
const chairman = _maybe_run_chairman(
|
|
@@ -2761,13 +2751,10 @@ function cmd_run(
|
|
|
2761
2751
|
all_responses.push(chairman.response);
|
|
2762
2752
|
}
|
|
2763
2753
|
all_responses.push(...stance_repairs);
|
|
2764
|
-
|
|
2765
|
-
|
|
2766
|
-
|
|
2767
|
-
|
|
2768
|
-
const ce = estimate_cost(r.provider, r.model, r.input_tokens, r.output_tokens, table);
|
|
2769
|
-
actual_total += ce.input_usd + ce.output_usd;
|
|
2770
|
-
}
|
|
2754
|
+
// Billable-aware: a subscription-CLI seat spent nothing, so pricing it at
|
|
2755
|
+
// API rates and calling the figure "actual" is a false statement about
|
|
2756
|
+
// money. See pricing.ts § billable-aware aggregation.
|
|
2757
|
+
actual_total += sumBillableCost(all_responses, table);
|
|
2771
2758
|
const payload: Dict = {
|
|
2772
2759
|
schema_version: SCHEMA_VERSION,
|
|
2773
2760
|
mode: question.mode,
|
|
@@ -2784,7 +2771,7 @@ function cmd_run(
|
|
|
2784
2771
|
stances: stances_on,
|
|
2785
2772
|
blind_chairman: blind_chairman_on,
|
|
2786
2773
|
chairman_fields: chairman_fields_on,
|
|
2787
|
-
responses:
|
|
2774
|
+
responses: serializeResponses(responses),
|
|
2788
2775
|
};
|
|
2789
2776
|
if (peer_review !== null) {
|
|
2790
2777
|
payload['peer_review'] = _serialise_peer_review(peer_review);
|
|
@@ -2819,9 +2806,16 @@ function cmd_run(
|
|
|
2819
2806
|
});
|
|
2820
2807
|
fs.mkdirSync(path.dirname(_resolveTarget(out_path)), { recursive: true });
|
|
2821
2808
|
fs.writeFileSync(_resolveTarget(out_path), _jsonDumpsIndent2(payload) + '\n', { encoding: 'utf-8' });
|
|
2809
|
+
// The trailing note is not decoration. Before 2026-08-27 this line read
|
|
2810
|
+
// `actual $0.1055` on a run whose every seat was subscription-authed, two
|
|
2811
|
+
// lines below a `TOTAL: $0.0000` from the pre-run path — and an operator
|
|
2812
|
+
// reading the tail of the output saw only the wrong one. When every seat is
|
|
2813
|
+
// non-billable the figure is now 0 and says why, so the two lines agree.
|
|
2814
|
+
const _all_subscription = allSeatsNonBillable(all_responses);
|
|
2822
2815
|
_stdout(
|
|
2823
2816
|
`\ncouncil:run · wrote ${out_path} ` +
|
|
2824
|
-
`(estimated $${_pyFixed(estimated_total, 4)} /
|
|
2817
|
+
`(estimated $${_pyFixed(estimated_total, 4)} / spent $${_pyFixed(actual_total, 4)}` +
|
|
2818
|
+
`${_all_subscription ? ' — all seats subscription-authed, nothing billed' : ''})\n`,
|
|
2825
2819
|
);
|
|
2826
2820
|
const replay_path = _maybe_write_decision_replay({
|
|
2827
2821
|
ai_cfg,
|
|
@@ -2863,14 +2857,9 @@ function _write_debate_round(
|
|
|
2863
2857
|
},
|
|
2864
2858
|
): string {
|
|
2865
2859
|
fs.mkdirSync(_resolveTarget(out_dir), { recursive: true });
|
|
2866
|
-
|
|
2867
|
-
|
|
2868
|
-
|
|
2869
|
-
continue;
|
|
2870
|
-
}
|
|
2871
|
-
const ce = estimate_cost(r.provider, r.model, r.input_tokens, r.output_tokens, opts.table);
|
|
2872
|
-
actual_total += ce.input_usd + ce.output_usd;
|
|
2873
|
-
}
|
|
2860
|
+
// Billable-aware, same reason as the sibling site above: a subscription
|
|
2861
|
+
// seat contributes nothing to `cost_usd_actual`.
|
|
2862
|
+
const actual_total = sumBillableCost(responses, opts.table);
|
|
2874
2863
|
const payload: Dict = {
|
|
2875
2864
|
schema_version: SCHEMA_VERSION,
|
|
2876
2865
|
mode: opts.question.mode,
|
|
@@ -2884,7 +2873,7 @@ function _write_debate_round(
|
|
|
2884
2873
|
rounds: 1,
|
|
2885
2874
|
cost_usd_actual: _pyRound(actual_total, 6),
|
|
2886
2875
|
prompt_cache_round_gap_ms: opts.cache_gap_ms_since_previous_round ?? null,
|
|
2887
|
-
responses:
|
|
2876
|
+
responses: serializeResponses(responses),
|
|
2888
2877
|
};
|
|
2889
2878
|
const out_path = path.join(_resolveTarget(out_dir), _debate_round_filename(round_number));
|
|
2890
2879
|
fs.writeFileSync(out_path, _jsonDumpsIndent2(payload) + '\n', { encoding: 'utf-8' });
|
|
@@ -3220,13 +3209,7 @@ function cmd_debate(
|
|
|
3220
3209
|
|
|
3221
3210
|
let actual_total = 0.0;
|
|
3222
3211
|
for (const rnd of [...all_rounds, restate_responses]) {
|
|
3223
|
-
|
|
3224
|
-
if (r.error) {
|
|
3225
|
-
continue;
|
|
3226
|
-
}
|
|
3227
|
-
const ce = estimate_cost(r.provider, r.model, r.input_tokens, r.output_tokens, table);
|
|
3228
|
-
actual_total += ce.input_usd + ce.output_usd;
|
|
3229
|
-
}
|
|
3212
|
+
actual_total += sumBillableCost(rnd, table);
|
|
3230
3213
|
}
|
|
3231
3214
|
_stdout(
|
|
3232
3215
|
`\ncouncil:debate · ${all_rounds.length} round(s) complete · ` +
|
|
@@ -54,6 +54,7 @@ import { fileURLToPath, pathToFileURL } from 'node:url';
|
|
|
54
54
|
// time, and each CLI entry guard only fires for its own argv[1].
|
|
55
55
|
import { isAcceptanceCriteriaHeading } from './_lib/ac_heading.js';
|
|
56
56
|
import { gitEnv } from './_lib/git_env.js';
|
|
57
|
+
import { loadDenyPatterns, redactSourceShape, redactSourceTokens, writeRedacted } from './_lib/source_redact.js';
|
|
57
58
|
import { completionReviewDisabled } from './_lib/planning_settings.js';
|
|
58
59
|
import { artifactRelevance } from './check_completion_review.js';
|
|
59
60
|
|
|
@@ -1251,17 +1252,41 @@ function runDispatch(args: Args): number {
|
|
|
1251
1252
|
acHash: hashes.ac_hash,
|
|
1252
1253
|
dispatched,
|
|
1253
1254
|
});
|
|
1255
|
+
// Phase 3.4 of road-to-source-silence: redact deny-set hits AT WRITE TIME.
|
|
1256
|
+
// This package's confidentiality gate carried a blanket `skip_paths`
|
|
1257
|
+
// exemption over `*.review-input/diff.patch`, which did not stop the leak —
|
|
1258
|
+
// it stopped the gate from seeing it. The generator is the only writer of
|
|
1259
|
+
// these files, so it is the only place the content can be fixed instead of
|
|
1260
|
+
// exempted. Redaction is line-local: hunks, paths and context are
|
|
1261
|
+
// untouched, so the evidence chain a reviewer reads stays intact.
|
|
1262
|
+
//
|
|
1263
|
+
// ORDERING IS LOAD-BEARING. `prompt_hash` must re-derive from the bytes on
|
|
1264
|
+
// disk (`check_review_prompt_binding` re-hashes `prompt.md`), so the prompt
|
|
1265
|
+
// is redacted BEFORE it is hashed. Hashing the pre-redaction text and
|
|
1266
|
+
// writing the post-redaction text would make every new artefact fail its
|
|
1267
|
+
// own binding gate.
|
|
1268
|
+
const denyPatterns = loadDenyPatterns();
|
|
1269
|
+
let redactions = 0;
|
|
1270
|
+
const promptTokens = redactSourceTokens(promptText, denyPatterns);
|
|
1271
|
+
// Shape redaction runs on the prompt too, and BEFORE the hash below, for the
|
|
1272
|
+
// same reason the deny pass does: `check_review_prompt_binding` re-derives
|
|
1273
|
+
// prompt_hash from prompt.md on disk, so hashing anything other than the
|
|
1274
|
+
// exact bytes written would make every new artefact fail its own binding.
|
|
1275
|
+
const promptRedacted = redactSourceShape(promptTokens.text);
|
|
1276
|
+
redactions += promptTokens.count + promptRedacted.count;
|
|
1277
|
+
|
|
1254
1278
|
const skeleton = findingsSkeleton({
|
|
1255
1279
|
slug,
|
|
1256
1280
|
headSha,
|
|
1257
1281
|
scopeHash: hashes.scope_hash,
|
|
1258
1282
|
reviewedDate,
|
|
1259
1283
|
manifest,
|
|
1260
|
-
promptHash: sha256(
|
|
1284
|
+
promptHash: sha256(promptRedacted.text),
|
|
1261
1285
|
});
|
|
1262
1286
|
|
|
1263
1287
|
fs.mkdirSync(inputDirAbs, { recursive: true });
|
|
1264
|
-
|
|
1288
|
+
|
|
1289
|
+
redactions += writeRedacted(path.join(inputDirAbs, 'diff.patch'), scopeDiffText, denyPatterns);
|
|
1265
1290
|
if (roadmapText !== null) {
|
|
1266
1291
|
// The snapshot lands under agents/evidence/, which check_references
|
|
1267
1292
|
// walks, while the live roadmap layer is deliberately excluded from
|
|
@@ -1273,10 +1298,26 @@ function runDispatch(args: Args): number {
|
|
|
1273
1298
|
const snapshotHeader =
|
|
1274
1299
|
'<!-- check-refs: skip -->\n' +
|
|
1275
1300
|
'<!-- verbatim roadmap snapshot for the R2 reviewer; the live roadmap layer is excluded from check_references, and a snapshot must not fail a gate its source is exempt from -->\n';
|
|
1276
|
-
|
|
1301
|
+
redactions += writeRedacted(
|
|
1302
|
+
path.join(inputDirAbs, 'roadmap.md'),
|
|
1303
|
+
snapshotHeader + roadmapText,
|
|
1304
|
+
denyPatterns,
|
|
1305
|
+
);
|
|
1306
|
+
}
|
|
1307
|
+
redactions += writeRedacted(
|
|
1308
|
+
path.join(inputDirAbs, 'acceptance-criteria.md'),
|
|
1309
|
+
acText ?? '',
|
|
1310
|
+
denyPatterns,
|
|
1311
|
+
);
|
|
1312
|
+
fs.writeFileSync(path.join(inputDirAbs, 'prompt.md'), promptRedacted.text, 'utf-8');
|
|
1313
|
+
if (redactions > 0) {
|
|
1314
|
+
// Never redact silently: a changed artefact nobody was told about is
|
|
1315
|
+
// the failure mode this whole programme is about.
|
|
1316
|
+
process.stderr.write(
|
|
1317
|
+
`dispatch_r2_reviewer: redacted ${redactions} source-confidentiality hit(s) ` +
|
|
1318
|
+
`from the review-input snapshot (marker: [REDACTED:src-conf]).\n`,
|
|
1319
|
+
);
|
|
1277
1320
|
}
|
|
1278
|
-
fs.writeFileSync(path.join(inputDirAbs, 'acceptance-criteria.md'), acText ?? '', 'utf-8');
|
|
1279
|
-
fs.writeFileSync(path.join(inputDirAbs, 'prompt.md'), promptText, 'utf-8');
|
|
1280
1321
|
fs.writeFileSync(findingsAbs, skeleton, 'utf-8');
|
|
1281
1322
|
|
|
1282
1323
|
const inputDirRel = path.join(args.outDir, `${slug}.review-input`);
|