@event4u/agent-config 9.7.0 → 9.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +1 -1
- package/CHANGELOG.md +314 -190
- package/CONTRIBUTING.md +23 -7
- package/MIGRATION.md +20 -0
- package/README.md +57 -11
- package/dist/agent-src/commands/agents/audit.md +1 -1
- package/dist/agent-src/commands/agents/optimize.md +2 -2
- package/dist/agent-src/commands/agents/user.md +1 -1
- package/dist/agent-src/commands/agents.md +1 -1
- package/dist/agent-src/commands/check-current-md.md +3 -3
- package/dist/agent-src/commands/commit/in-chunks.md +8 -0
- package/dist/agent-src/commands/commit.md +17 -0
- package/dist/agent-src/commands/fix/portability.md +2 -2
- package/dist/agent-src/commands/fix/pr-comments-loop.md +136 -0
- package/dist/agent-src/commands/fix/refs.md +2 -2
- package/dist/agent-src/commands/fix/route.md +4 -3
- package/dist/agent-src/commands/fix.md +9 -6
- package/dist/agent-src/commands/ghostwriter.md +1 -1
- package/dist/agent-src/commands/image.md +1 -1
- package/dist/agent-src/commands/optimize/augmentignore.md +1 -1
- package/dist/agent-src/commands/optimize/skills.md +2 -2
- package/dist/agent-src/commands/post-as.md +1 -1
- package/dist/agent-src/commands/pr/create.md +4 -0
- package/dist/agent-src/commands/research.md +1 -1
- package/dist/agent-src/commands/roadmap/ai-council.md +1 -1
- package/dist/agent-src/commands/security-audit-config.md +1 -1
- package/dist/agent-src/commands/team/delegate.md +4 -0
- package/dist/agent-src/commands/video.md +1 -1
- package/dist/agent-src/contexts/authority/kernel-rule-edits.md +1 -1
- package/dist/agent-src/contexts/contracts/emergency-triage-block.md +2 -2
- package/dist/agent-src/contexts/execution/auto-dispatch-classification.md +48 -2
- package/dist/agent-src/contexts/execution/orchestration-telemetry.md +10 -0
- package/dist/agent-src/contexts/execution/subagent-modes-detail.md +109 -8
- package/dist/agent-src/contexts/execution/subagent-response-contract.md +20 -0
- package/dist/agent-src/contexts/execution/subagent-spawn-contract.md +53 -3
- package/dist/agent-src/contexts/override-system.md +75 -5
- package/dist/agent-src/rules/code-provenance.md +112 -0
- package/dist/agent-src/rules/context-hygiene.md +2 -0
- package/dist/agent-src/rules/doc-screenshot-hygiene.md +97 -0
- package/dist/agent-src/rules/domain-safety-pii.md +1 -0
- package/dist/agent-src/rules/external-code-graph-interop.md +13 -3
- package/dist/agent-src/rules/framework-neutrality-in-generic-skills.md +2 -0
- package/dist/agent-src/rules/git-history-discipline.md +2 -0
- package/dist/agent-src/rules/history-discipline.md +80 -0
- package/dist/agent-src/rules/language-and-tone.md +2 -0
- package/dist/agent-src/rules/lethal-trifecta-guard.md +3 -0
- package/dist/agent-src/rules/media-governance-routing.md +2 -0
- package/dist/agent-src/rules/minimal-safe-diff.md +2 -0
- package/dist/agent-src/rules/no-roadmap-references.md +4 -1
- package/dist/agent-src/rules/non-destructive-by-default.md +20 -0
- package/dist/agent-src/rules/onboarding-gate.md +2 -0
- package/dist/agent-src/rules/output-discipline.md +2 -0
- package/dist/agent-src/rules/persona-governance.md +2 -0
- package/dist/agent-src/rules/php-coding.md +1 -0
- package/dist/agent-src/rules/preservation-guard.md +3 -0
- package/dist/agent-src/rules/reviewer-awareness.md +1 -0
- package/dist/agent-src/rules/roadmap-ci-steps-policy.md +1 -0
- package/dist/agent-src/rules/roadmap-progress-sync.md +9 -0
- package/dist/agent-src/rules/scale-discipline.md +92 -0
- package/dist/agent-src/rules/secret-vcs-guard.md +106 -0
- package/dist/agent-src/rules/security-sensitive-stop.md +11 -1
- package/dist/agent-src/rules/session-canary.md +77 -0
- package/dist/agent-src/rules/skill-quality.md +2 -0
- package/dist/agent-src/rules/source-confidentiality.md +2 -0
- package/dist/agent-src/rules/source-of-truth.md +2 -0
- package/dist/agent-src/rules/telegraph-speak.md +2 -0
- package/dist/agent-src/rules/token-optimizer-maintenance.md +3 -1
- package/dist/agent-src/rules/tool-safety.md +4 -1
- package/dist/agent-src/rules/untrusted-input-defense.md +10 -0
- package/dist/agent-src/rules/verify-before-complete.md +2 -0
- package/dist/agent-src/skills/adr-create/SKILL.md +17 -1
- package/dist/agent-src/skills/agent-security-review/SKILL.md +1 -1
- package/dist/agent-src/skills/code-intelligence/SKILL.md +97 -0
- package/dist/agent-src/skills/condense-memory/SKILL.md +1 -1
- package/dist/agent-src/skills/corpus-grounding/SKILL.md +0 -3
- package/dist/agent-src/skills/description-assist/SKILL.md +1 -1
- package/dist/agent-src/skills/design-review/SKILL.md +5 -6
- package/dist/agent-src/skills/design-tokens/SKILL.md +0 -1
- package/dist/agent-src/skills/gated-reach/SKILL.md +185 -0
- package/dist/agent-src/skills/gated-reach/evals/triggers.json +72 -0
- package/dist/agent-src/skills/history-design/SKILL.md +101 -0
- package/dist/agent-src/skills/history-design/evals/triggers.json +17 -0
- package/dist/agent-src/skills/humanizer/SKILL.md +3 -3
- package/dist/agent-src/skills/image-analyser/SKILL.md +14 -12
- package/dist/agent-src/skills/image-editing/SKILL.md +2 -1
- package/dist/agent-src/skills/image-generation/SKILL.md +2 -1
- package/dist/agent-src/skills/image-provider-routing/SKILL.md +2 -2
- package/dist/agent-src/skills/launch-readiness/SKILL.md +1 -1
- package/dist/agent-src/skills/license-compliance-audit/SKILL.md +161 -0
- package/dist/agent-src/skills/license-compliance-audit/evals/triggers.json +52 -0
- package/dist/agent-src/skills/license-compliance-borrow-check/SKILL.md +145 -0
- package/dist/agent-src/skills/license-compliance-borrow-check/evals/triggers.json +52 -0
- package/dist/agent-src/skills/license-compliance-credits/SKILL.md +97 -0
- package/dist/agent-src/skills/license-compliance-credits/evals/triggers.json +52 -0
- package/dist/agent-src/skills/md-language-check/SKILL.md +1 -1
- package/dist/agent-src/skills/override-management/SKILL.md +1 -1
- package/dist/agent-src/skills/prediction-pool-optimizer/SKILL.md +7 -7
- package/dist/agent-src/skills/project-analysis-core/SKILL.md +1 -1
- package/dist/agent-src/skills/prompt-engineering-image/SKILL.md +3 -2
- package/dist/agent-src/skills/react-shadcn-ui/SKILL.md +2 -2
- package/dist/agent-src/skills/readme-writing/SKILL.md +6 -1
- package/dist/agent-src/skills/recursive-verification/SKILL.md +6 -0
- package/dist/agent-src/skills/refine-ticket/SKILL.md +3 -3
- package/dist/agent-src/skills/roadmap-writing/SKILL.md +4 -0
- package/dist/agent-src/skills/rtk-output-filtering/SKILL.md +31 -12
- package/dist/agent-src/skills/rule-refactor/SKILL.md +3 -3
- package/dist/agent-src/skills/schema-review/SKILL.md +92 -0
- package/dist/agent-src/skills/schema-review/evals/triggers.json +17 -0
- package/dist/agent-src/skills/screenshot-hygiene/SKILL.md +171 -0
- package/dist/agent-src/skills/secrets-management/SKILL.md +43 -1
- package/dist/agent-src/skills/security-audit/SKILL.md +1 -1
- package/dist/agent-src/skills/security-maturity-assessment/SKILL.md +1 -1
- package/dist/agent-src/skills/skill-improvement-pipeline/SKILL.md +3 -3
- package/dist/agent-src/skills/skill-writing/SKILL.md +2 -2
- package/dist/agent-src/skills/source-discovery/SKILL.md +5 -5
- package/dist/agent-src/skills/subagent-orchestration/SKILL.md +45 -85
- package/dist/agent-src/skills/subagent-orchestration/prompts/README.md +5 -4
- package/dist/agent-src/skills/subagent-orchestration/prompts/adversarial-verification-council.md +29 -0
- package/dist/agent-src/skills/subagent-orchestration/prompts/do-and-judge-two-stage.md +29 -0
- package/dist/agent-src/skills/subagent-orchestration/prompts/do-and-judge.md +29 -0
- package/dist/agent-src/skills/subagent-orchestration/prompts/do-competitively.md +29 -0
- package/dist/agent-src/skills/subagent-orchestration/prompts/do-in-parallel.md +29 -0
- package/dist/agent-src/skills/subagent-orchestration/prompts/do-in-steps.md +29 -0
- package/dist/agent-src/skills/subagent-orchestration/prompts/do-in-worktrees.md +29 -0
- package/dist/agent-src/skills/subagent-orchestration/prompts/judge-with-debate.md +29 -0
- package/dist/agent-src/skills/systematic-debugging/SKILL.md +2 -2
- package/dist/agent-src/skills/tailwind-engineer/SKILL.md +2 -3
- package/dist/agent-src/skills/token-optimizer/SKILL.md +4 -4
- package/dist/agent-src/skills/verify-repair-loop/SKILL.md +4 -0
- package/dist/agent-src/skills/worktree-lifecycle/SKILL.md +2 -3
- package/dist/agent-src/templates/AGENTS.md +1 -1
- package/dist/agent-src/templates/agents/.gitattributes.fragment +25 -6
- package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
- package/dist/agent-src/templates/command.md +3 -3
- package/dist/agent-src/templates/github-workflows/secret-scan.yml +65 -0
- package/dist/agent-src/templates/persona.md +2 -2
- package/dist/agent-src/templates/rule.md +2 -2
- package/dist/agent-src/templates/scripts/telemetry/engagement.ts +77 -0
- package/dist/agent-src/templates/scripts/telemetry_record.ts +33 -1
- package/dist/cli/commands/doctorShell.js +20 -0
- package/dist/cli/commands/doctorShell.js.map +1 -1
- package/dist/cli/commands/rtkDetect.js +58 -0
- package/dist/cli/commands/rtkDetect.js.map +1 -0
- package/dist/cli/configRoot.js +112 -0
- package/dist/cli/configRoot.js.map +1 -0
- package/dist/cli/configRoot.test.js +97 -0
- package/dist/cli/configRoot.test.js.map +1 -0
- package/dist/cli/firstRunNotice.js +70 -0
- package/dist/cli/firstRunNotice.js.map +1 -0
- package/dist/cli/help.js +4 -1
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/main.js +54 -5
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/registry.js +8 -1
- package/dist/cli/registry.js.map +1 -1
- package/dist/discovery/deprecation-report.md +1 -1
- package/dist/discovery/discovery-manifest.json +502 -101
- package/dist/discovery/discovery-manifest.json.sha256 +1 -1
- package/dist/discovery/discovery-manifest.summary.md +6 -4
- package/dist/discovery/orphan-report.md +1 -1
- package/dist/discovery/packs.json +95 -8
- package/dist/discovery/trust-report.md +11 -11
- package/dist/discovery/workspaces.json +36 -7
- package/dist/hooks/dispatch.js +19475 -0
- package/dist/install/agentSwitchDetection.js +75 -0
- package/dist/install/agentSwitchDetection.js.map +1 -0
- package/dist/install/agentSwitchProfile.js +117 -0
- package/dist/install/agentSwitchProfile.js.map +1 -0
- package/dist/install/atomic.js +1 -1
- package/dist/install/detect.js +1 -1
- package/dist/install/install.mjs +791 -486
- package/dist/install/rtkDetection.js +213 -0
- package/dist/install/rtkDetection.js.map +1 -0
- package/dist/install/rule_scope.js +2 -1
- package/dist/install/rule_scope.js.map +1 -1
- package/dist/install/types.js +2 -2
- package/dist/install/wizard-plan.js +1 -1
- package/dist/install/wizardDismissals.js +58 -0
- package/dist/install/wizardDismissals.js.map +1 -0
- 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 +15 -4
- package/dist/mcp/server.json +20 -0
- package/dist/mcp/server.mjs +44292 -0
- package/dist/router.json +1 -1
- package/dist/scripts/condense.js +14 -7
- package/dist/scripts/condense.js.map +1 -1
- package/dist/server/app.js +12 -0
- package/dist/server/app.js.map +1 -1
- package/dist/server/io/sharedWriteCheck.js +101 -0
- package/dist/server/io/sharedWriteCheck.js.map +1 -0
- package/dist/server/routes/ping.js +32 -0
- package/dist/server/routes/ping.js.map +1 -1
- package/dist/server/routes/settings.js +21 -4
- package/dist/server/routes/settings.js.map +1 -1
- package/dist/server/routes/userMd.js +21 -4
- package/dist/server/routes/userMd.js.map +1 -1
- package/dist/server/routes/wizard.js +68 -25
- package/dist/server/routes/wizard.js.map +1 -1
- package/dist/server/schemas/settings.js +12 -2
- package/dist/server/schemas/settings.js.map +1 -1
- package/dist/server/serverInfo.js +6 -2
- package/dist/server/serverInfo.js.map +1 -1
- package/dist/server/token.js +11 -4
- package/dist/server/token.js.map +1 -1
- package/dist/server/writeRoot.js +15 -1
- package/dist/server/writeRoot.js.map +1 -1
- package/dist/shared/capabilities.js +33 -0
- package/dist/shared/capabilities.js.map +1 -0
- package/dist/shared/capabilities.test.js +39 -0
- package/dist/shared/capabilities.test.js.map +1 -0
- package/dist/ui/assets/index-BpSQt5vm.js +40 -0
- package/dist/ui/assets/index-BpSQt5vm.js.map +1 -0
- package/dist/ui/assets/index-jSfMW8_t.css +1 -0
- package/dist/ui/index.html +15 -6
- package/docs/MIGRATION.md +16 -0
- package/docs/guidelines/component-oriented-and-oop-development.md +4 -2
- package/package.json +22 -9
- package/src/agent-src/templates/AGENTS.md +1 -1
- package/src/agent-src/templates/scripts/telemetry/engagement.ts +77 -0
- package/src/agent-src/templates/scripts/telemetry_record.ts +33 -1
- package/src/config/agent-settings.template.yml +94 -13
- package/src/config/discovery/packs.yml +22 -0
- package/src/config/discovery/workspaces.yml +1 -1
- package/src/config/evaluator-budgets.json +47 -0
- package/src/config/hook-latency-budget.json +20 -0
- package/src/config/reach-channels.yml +217 -0
- package/src/config/reach-prescriptions-intake.yml +200 -0
- package/src/install/agentSwitchDetection.ts +90 -0
- package/src/install/agentSwitchProfile.ts +131 -0
- package/src/install/atomic.ts +1 -1
- package/src/install/detect.ts +1 -1
- package/src/install/rtkDetection.ts +274 -0
- package/src/install/rule_scope.ts +9 -2
- package/src/install/types.ts +2 -2
- package/src/install/wizard-plan.ts +1 -1
- package/src/install/wizardDismissals.ts +60 -0
- package/src/scripts/_cli/cmd_doctor.ts +62 -1
- package/src/scripts/_cli/cmd_memory_get.ts +197 -0
- package/src/scripts/_cli/cmd_refresh.ts +30 -0
- package/src/scripts/_dispatch.bash +96 -0
- package/src/scripts/_lib/auto_dispatch.corpus.test.ts +64 -1
- package/src/scripts/_lib/auto_dispatch.ts +76 -0
- package/src/scripts/_lib/detect_target_license.ts +714 -0
- package/src/scripts/_lib/exec_evidence.ts +251 -0
- package/src/scripts/_lib/fixtures/secret-detector/negatives.txt +15 -0
- package/src/scripts/_lib/fixtures/secret-detector/positives.txt +15 -0
- package/src/scripts/_lib/install_drift.ts +194 -0
- package/src/scripts/_lib/kernel_rules.ts +46 -0
- package/src/scripts/_lib/memory_fts_index.ts +390 -0
- package/src/scripts/_lib/orchestration_record.ts +91 -2
- package/src/scripts/_lib/persistence/adapter_raw_sql.ts +443 -0
- package/src/scripts/_lib/persistence/detect_audit_coverage.ts +423 -0
- package/src/scripts/_lib/persistence/detect_bounded_reads.ts +154 -0
- package/src/scripts/_lib/persistence/detect_index_parity.ts +576 -0
- package/src/scripts/_lib/persistence/detect_n1_eloquent.ts +226 -0
- package/src/scripts/_lib/persistence/detect_offload.ts +441 -0
- package/src/scripts/_lib/persistence/detect_prisma_growth.ts +74 -0
- package/src/scripts/_lib/persistence/offload_catalog.ts +73 -0
- package/src/scripts/_lib/persistence/types.ts +109 -0
- package/src/scripts/_lib/reddit_thread_parse.ts +598 -0
- package/src/scripts/_lib/risk_paths.ts +160 -0
- package/src/scripts/_lib/rtk_allowlist.ts +44 -0
- package/src/scripts/_lib/secret_detector.test.ts +108 -0
- package/src/scripts/_lib/secret_detector.ts +328 -0
- package/src/scripts/_lib/secret_detector_adversarial.test.ts +116 -0
- package/src/scripts/_lib/spawn_env.ts +7 -0
- package/src/scripts/_lib/sqlite_guard.ts +191 -0
- package/src/scripts/_lib/subagent_spawn.ts +53 -0
- package/src/scripts/_lib/tool_probe.ts +359 -0
- package/src/scripts/_lib/worker_budget.ts +107 -0
- package/src/scripts/adr/regenerate_index.ts +81 -6
- package/src/scripts/ai_council/blind_review.ts +0 -0
- package/src/scripts/ai_council/config.ts +12 -6
- package/src/scripts/ai_council/orchestrator.ts +73 -3
- package/src/scripts/ai_team/review_gate.ts +8 -10
- package/src/scripts/ai_team/team_dispatch.ts +48 -0
- package/src/scripts/audit_adr_coverage.ts +33 -0
- package/src/scripts/audit_initial_context.ts +1 -1
- package/src/scripts/bench_cross_source_eval.ts +400 -0
- package/src/scripts/bench_honesty_score.ts +1093 -0
- package/src/scripts/bench_hook_latency.ts +218 -0
- package/src/scripts/build_mcp_catalog.ts +275 -0
- package/src/scripts/build_mcp_registry_manifest.ts +46 -0
- package/src/scripts/build_proof.ts +207 -0
- package/src/scripts/chat_history.ts +8 -5
- package/src/scripts/check_adr_frontmatter.ts +195 -0
- package/src/scripts/check_artefact_count_messaging.ts +4 -0
- package/src/scripts/check_backstop_debt.ts +210 -0
- package/src/scripts/check_bundle_path_leakage.ts +343 -0
- package/src/scripts/check_claims.ts +188 -8
- package/src/scripts/check_comparison.ts +12 -0
- package/src/scripts/check_enforcement_coverage.ts +592 -0
- package/src/scripts/check_evaluator_budgets.ts +99 -0
- package/src/scripts/check_kernel_rule_bundle.ts +16 -12
- package/src/scripts/check_knowledge_sharing.ts +12 -1
- package/src/scripts/check_no_external_sources.ts +2 -2
- package/src/scripts/check_reach_channels.ts +407 -0
- package/src/scripts/check_reach_staleness.ts +364 -0
- package/src/scripts/check_secret_leak.test.ts +47 -0
- package/src/scripts/check_secret_leak.ts +290 -0
- package/src/scripts/check_source_pointer_freshness.ts +28 -3
- package/src/scripts/code_graph/build.ts +0 -0
- package/src/scripts/code_graph/cli.ts +379 -0
- package/src/scripts/code_graph/detect.ts +186 -0
- package/src/scripts/code_graph/extract.ts +386 -0
- package/src/scripts/code_graph/intent.ts +45 -0
- package/src/scripts/code_graph/loader.ts +123 -0
- package/src/scripts/code_graph/query.ts +290 -0
- package/src/scripts/code_graph/sanitize.ts +30 -0
- package/src/scripts/code_graph/sqlite_store.ts +174 -0
- package/src/scripts/code_graph/types.ts +83 -0
- package/src/scripts/code_graph/validate.ts +63 -0
- package/src/scripts/condense.ts +14 -6
- package/src/scripts/context_hygiene_hook.ts +8 -5
- package/src/scripts/council_cli.ts +126 -12
- package/src/scripts/detect_target_license.ts +203 -0
- package/src/scripts/evaluator_umbrella.sh +145 -0
- package/src/scripts/external_sources_denylist.json +8 -4
- package/src/scripts/first_run_gate_hook.ts +9 -5
- package/src/scripts/generate_subagent_floor.ts +194 -0
- package/src/scripts/hermetic-install.sh +3 -3
- package/src/scripts/hook_manifest.yaml +65 -16
- package/src/scripts/hooks/block_kernel_rule_writes.ts +212 -0
- package/src/scripts/hooks/block_no_verify.ts +9 -9
- package/src/scripts/hooks/code_graph_nudge_hook.ts +191 -0
- package/src/scripts/hooks/concern_registry.ts +75 -0
- package/src/scripts/hooks/design_slop_hook.ts +8 -5
- package/src/scripts/hooks/dispatch_entry.ts +37 -0
- package/src/scripts/hooks/dispatch_hook.ts +176 -3
- package/src/scripts/hooks/hook_stdin.ts +42 -0
- package/src/scripts/hooks/rtk_wrap_hook.ts +26 -12
- package/src/scripts/hot_context_hook.ts +7 -6
- package/src/scripts/injection_scan_hook.ts +9 -1
- package/src/scripts/install +6 -6
- package/src/scripts/install-hooks.sh +4 -4
- package/src/scripts/install.sh +5 -4
- package/src/scripts/install.ts +264 -23
- package/src/scripts/iron_law_sha.ts +3 -12
- package/src/scripts/learning_sidecar.ts +0 -0
- package/src/scripts/lint_budget_ownership.ts +89 -0
- package/src/scripts/lint_command_routing.ts +35 -5
- package/src/scripts/lint_command_verbs.ts +42 -9
- package/src/scripts/lint_consumer_internal_refs.ts +211 -0
- package/src/scripts/lint_discovery_vocabulary.ts +2 -0
- package/src/scripts/lint_documented_commands.ts +670 -0
- package/src/scripts/lint_framework_leakage.ts +17 -3
- package/src/scripts/lint_framework_leakage_allowlist.json +32 -0
- package/src/scripts/lint_governed_writes.ts +335 -0
- package/src/scripts/lint_hidden_unicode.ts +6 -0
- package/src/scripts/lint_mcp_registry_manifest.ts +26 -1
- package/src/scripts/lint_memory_tripwire.ts +186 -0
- package/src/scripts/lint_override_kernel_guard.ts +267 -0
- package/src/scripts/lint_persistence.ts +171 -0
- package/src/scripts/lint_pre_migration_refs.ts +106 -0
- package/src/scripts/lint_provenance.ts +547 -0
- package/src/scripts/lint_provenance_vocabulary.ts +437 -0
- package/src/scripts/lint_spawn_payload.ts +283 -0
- package/src/scripts/lint_store_boundary.ts +152 -0
- package/src/scripts/lint_versioned_cache.ts +7 -1
- package/src/scripts/mcp_server/__main__.ts +7 -2
- package/src/scripts/mcp_server/catalog.ts +23 -1
- package/src/scripts/mcp_server/consumer_tool_catalog.json +563 -193
- package/src/scripts/mcp_server/prompts.ts +6 -0
- package/src/scripts/mcp_server/tool_catalog_source.ts +332 -0
- package/src/scripts/mcp_server/tools.ts +56 -5
- package/src/scripts/mcp_telemetry_query.ts +2 -33
- package/src/scripts/mcp_telemetry_store.ts +64 -34
- package/src/scripts/measure_rule_budget.ts +3 -12
- package/src/scripts/memory_learn_hook.ts +126 -0
- package/src/scripts/memory_lookup.ts +0 -0
- package/src/scripts/memory_replay_24.ts +312 -0
- package/src/scripts/memory_report.ts +16 -3
- package/src/scripts/memory_signal.ts +48 -0
- package/src/scripts/memory_status.ts +6 -0
- package/src/scripts/minimal_safe_diff_hook.ts +8 -5
- package/src/scripts/onboarding_gate_hook.ts +8 -5
- package/src/scripts/orchestration_record.ts +16 -0
- package/src/scripts/pr_url_reminder_hook.ts +8 -1
- package/src/scripts/prepack-check.mjs +17 -0
- package/src/scripts/prepack_lifecycle_check.d.mts +8 -0
- package/src/scripts/prepack_lifecycle_check.mjs +82 -0
- package/src/scripts/profile_staleness_hook.ts +8 -7
- package/src/scripts/reach_doctor.ts +1651 -0
- package/src/scripts/release.ts +24 -3
- package/src/scripts/report_install_drift.ts +109 -0
- package/src/scripts/risk_escalation_shadow.ts +160 -0
- package/src/scripts/roadmap_progress_hook.ts +8 -5
- package/src/scripts/schemas/agent-settings.schema.json +23 -0
- package/src/scripts/schemas/license-policy.schema.json +89 -0
- package/src/scripts/schemas/provenance-borrow.schema.json +46 -0
- package/src/scripts/schemas/reach-channels.schema.json +134 -0
- package/src/scripts/schemas/reach-doctor-payload.schema.json +220 -0
- package/src/scripts/schemas/rule.schema.json +20 -0
- package/src/scripts/self_review_gate.test.ts +173 -1
- package/src/scripts/self_review_gate.ts +155 -15
- package/src/scripts/session_canary_hook.ts +182 -0
- package/src/scripts/skill_linter.ts +55 -0
- package/src/scripts/smoke_quickstart.ts +2 -2
- package/src/scripts/surface_probe_hook.ts +8 -7
- package/src/scripts/sync_gitattributes.ts +310 -0
- package/src/scripts/team_review_gate_hook.ts +13 -16
- package/src/scripts/validate_reach_prescriptions.ts +751 -0
- package/src/scripts/verify_before_complete_hook.ts +8 -5
- package/src/scripts/wrapper_freshness_hook.ts +8 -7
- package/src/server/schemas/settings.ts +24 -2
- package/src/shared/capabilities.test.ts +43 -0
- package/src/shared/capabilities.ts +75 -0
- package/src/templates/minimal/agents-overrides-readme.md +20 -0
- package/dist/ui/assets/index-BPFMZWUs.css +0 -1
- package/dist/ui/assets/index-BiEZiZ31.js +0 -40
- package/dist/ui/assets/index-BiEZiZ31.js.map +0 -1
- package/docs/CLAIMS.md +0 -261
- package/docs/DISTRIBUTION_CHECKLIST.md +0 -170
- package/docs/RELEASE_STORY_TEMPLATE.md +0 -37
- package/docs/SKILL_CENSUS.md +0 -352
- package/docs/adrs/cost/0001-hard-stop-hook.md +0 -114
- package/docs/adrs/cost/README.md +0 -9
- package/docs/adrs/memory/0001-consumer-side-snapshot.md +0 -119
- package/docs/adrs/memory/README.md +0 -10
- package/docs/adrs/router/0001-three-tier-routing.md +0 -119
- package/docs/adrs/router/README.md +0 -9
- package/docs/adrs/schema/0001-json-schema-frontmatter.md +0 -102
- package/docs/adrs/schema/README.md +0 -9
- package/docs/adrs/smoke/0001-per-tier-smoke-scripts.md +0 -99
- package/docs/adrs/smoke/README.md +0 -9
- package/docs/adrs/telegraph/0001-default-off-until-bench.md +0 -93
- package/docs/adrs/telegraph/README.md +0 -9
- package/docs/announcements/2026-05-non-dev-launch.md +0 -79
- package/docs/announcements/2026-07-honest-cost-sweep-launch.md +0 -84
- package/docs/anti-reskin-gate.md +0 -60
- package/docs/architecture/augment-projection.md +0 -70
- package/docs/architecture/claude-bundle.md +0 -77
- package/docs/architecture/current-onboard-baseline.md +0 -126
- package/docs/architecture/current-safety-behavior.md +0 -137
- package/docs/architecture/multi-tool-projection.md +0 -125
- package/docs/architecture/setup-vs-settings-shared-surface.md +0 -114
- package/docs/architecture/source-projection.md +0 -85
- package/docs/architecture.md +0 -390
- package/docs/archive/CHANGELOG-6.0.0-overview.md +0 -953
- package/docs/archive/CHANGELOG-7.0.0.md +0 -419
- package/docs/archive/CHANGELOG-pre-2.11.0.md +0 -141
- package/docs/archive/CHANGELOG-pre-2.15.0.md +0 -244
- package/docs/archive/CHANGELOG-pre-2.16.0.md +0 -48
- package/docs/archive/CHANGELOG-pre-2.17.0.md +0 -63
- package/docs/archive/CHANGELOG-pre-2.2.0.md +0 -2138
- package/docs/archive/CHANGELOG-pre-2.20.0.md +0 -159
- package/docs/archive/CHANGELOG-pre-2.25.0.md +0 -191
- package/docs/archive/CHANGELOG-pre-2.7.0.md +0 -185
- package/docs/archive/CHANGELOG-pre-3.0.0.md +0 -130
- package/docs/archive/CHANGELOG-pre-3.1.0.md +0 -167
- package/docs/archive/CHANGELOG-pre-3.2.0.md +0 -268
- package/docs/archive/CHANGELOG-pre-4.0.0.md +0 -80
- package/docs/archive/CHANGELOG-pre-4.5.0.md +0 -289
- package/docs/archive/CHANGELOG-pre-5.4.0.md +0 -260
- package/docs/archive/CHANGELOG-pre-5.9.0.md +0 -270
- package/docs/archive/CHANGELOG-pre-6.0.0.md +0 -473
- package/docs/archive/CHANGELOG-pre-7.0.0.md +0 -126
- package/docs/archive/CHANGELOG-pre-8.0.0.md +0 -301
- package/docs/archive/CHANGELOG-pre-8.1.0.md +0 -316
- package/docs/archive/CHANGELOG-pre-8.12.0.md +0 -304
- package/docs/archive/CHANGELOG-pre-8.9.0.md +0 -306
- package/docs/archive/CHANGELOG-pre-9.2.0.md +0 -276
- package/docs/artefact-census.md +0 -71
- package/docs/benchmark.md +0 -648
- package/docs/benchmark.pinned.yml +0 -31
- package/docs/benchmarks.md +0 -85
- package/docs/capability-matrix.md +0 -33
- package/docs/case-studies/_template.md +0 -60
- package/docs/case-studies/frontend-design-positioning.md +0 -86
- package/docs/catalog.md +0 -721
- package/docs/command-flows.md +0 -272
- package/docs/command-naming-audit.md +0 -60
- package/docs/comparison.yaml +0 -45
- package/docs/contracts/CHANGELOG-conventions.md +0 -149
- package/docs/contracts/STABILITY.md +0 -188
- package/docs/contracts/adoption-signal-floor.md +0 -127
- package/docs/contracts/adr-architectural-consensus-mechanism.md +0 -68
- package/docs/contracts/adr-chat-history-split.md +0 -140
- package/docs/contracts/adr-command-suggestion.md +0 -144
- package/docs/contracts/adr-forecast-construction-shape.md +0 -90
- package/docs/contracts/adr-gtm-context-spine.md +0 -116
- package/docs/contracts/adr-implement-ticket-runtime.md +0 -121
- package/docs/contracts/adr-install-user-type-axis.md +0 -107
- package/docs/contracts/adr-layout.md +0 -107
- package/docs/contracts/adr-level-6-productization.md +0 -145
- package/docs/contracts/adr-mcp-runtime.md +0 -128
- package/docs/contracts/adr-product-ui-track.md +0 -381
- package/docs/contracts/adr-prompt-driven-execution.md +0 -186
- package/docs/contracts/adr-settings-sync-engine.md +0 -128
- package/docs/contracts/adr-user-types-axis.md +0 -127
- package/docs/contracts/adr-wing4-context-spine.md +0 -126
- package/docs/contracts/agent-user-schema.md +0 -170
- package/docs/contracts/agents-layout.md +0 -148
- package/docs/contracts/agents-md-tech-stack.md +0 -75
- package/docs/contracts/ai-council-config.md +0 -829
- package/docs/contracts/ai-team-config.md +0 -224
- package/docs/contracts/analysis-memory-loop.md +0 -149
- package/docs/contracts/at-rest-encryption.md +0 -191
- package/docs/contracts/audit-log-v1.md +0 -150
- package/docs/contracts/auto-orchestration-v1.md +0 -70
- package/docs/contracts/benchmark-ab-contract.md +0 -106
- package/docs/contracts/benchmark-corpus-spec.md +0 -125
- package/docs/contracts/benchmark-report-schema.md +0 -113
- package/docs/contracts/branch-protection-policy.md +0 -139
- package/docs/contracts/brand-token-consumption.md +0 -74
- package/docs/contracts/capability-boundary.md +0 -69
- package/docs/contracts/capability-packs.md +0 -217
- package/docs/contracts/ci-cost-budget.md +0 -111
- package/docs/contracts/ci-green-floor.md +0 -141
- package/docs/contracts/command-category-governance.md +0 -84
- package/docs/contracts/command-clusters.md +0 -399
- package/docs/contracts/command-surface-tiers.md +0 -176
- package/docs/contracts/command-taxonomy.md +0 -137
- package/docs/contracts/condensation-default-kill-criterion.md +0 -116
- package/docs/contracts/config-presets.md +0 -144
- package/docs/contracts/conformance.md +0 -84
- package/docs/contracts/consumer-bridge.md +0 -73
- package/docs/contracts/context-paths.md +0 -101
- package/docs/contracts/context-spine.md +0 -179
- package/docs/contracts/cost-dashboard.md +0 -143
- package/docs/contracts/cost-enforcement.md +0 -134
- package/docs/contracts/cost-profile-defaults.md +0 -110
- package/docs/contracts/cost-summary-schema.md +0 -107
- package/docs/contracts/creative-pack-boundary.md +0 -63
- package/docs/contracts/cross-repo-retrieval.md +0 -64
- package/docs/contracts/cross-wing-handoff.md +0 -134
- package/docs/contracts/daily-workspace.md +0 -147
- package/docs/contracts/decision-engine-gates.md +0 -120
- package/docs/contracts/decision-trace-v1.md +0 -177
- package/docs/contracts/design-artifact-lifecycle.md +0 -93
- package/docs/contracts/design-artifact-verification.md +0 -153
- package/docs/contracts/discovery-manifest.md +0 -209
- package/docs/contracts/discovery-manifest.schema.json +0 -254
- package/docs/contracts/evidence-based-pruning.md +0 -102
- package/docs/contracts/explain-modes.md +0 -187
- package/docs/contracts/explain-trace.schema.json +0 -144
- package/docs/contracts/file-ownership-matrix.json +0 -13941
- package/docs/contracts/file-ownership-matrix.md +0 -135
- package/docs/contracts/frontmatter-contract.md +0 -140
- package/docs/contracts/ghostwriter-schema.md +0 -337
- package/docs/contracts/governance-enforcement-projection.md +0 -159
- package/docs/contracts/gui-wizard.md +0 -350
- package/docs/contracts/harness-expectations.md +0 -128
- package/docs/contracts/hook-architecture-v1.md +0 -325
- package/docs/contracts/host-agent-protocol.md +0 -110
- package/docs/contracts/implement-ticket-flow.md +0 -625
- package/docs/contracts/init-telemetry.md +0 -132
- package/docs/contracts/injected-block-authenticity-model.md +0 -66
- package/docs/contracts/install-layout.md +0 -249
- package/docs/contracts/install-scopes.md +0 -82
- package/docs/contracts/installed-tools-lockfile.md +0 -144
- package/docs/contracts/installer-agent-mode.md +0 -137
- package/docs/contracts/iron-law-overrides.txt +0 -26
- package/docs/contracts/kernel-membership.md +0 -339
- package/docs/contracts/linear-ai-rules-inclusion.md +0 -143
- package/docs/contracts/linear-ai-three-layers.md +0 -130
- package/docs/contracts/linter-structural-model.md +0 -181
- package/docs/contracts/load-context-budget-model.md +0 -259
- package/docs/contracts/load-context-schema.md +0 -220
- package/docs/contracts/local-analytics.md +0 -160
- package/docs/contracts/local-knowledge-ingestion.md +0 -96
- package/docs/contracts/local-server-api.md +0 -134
- package/docs/contracts/low-impact-corpus-format.md +0 -95
- package/docs/contracts/mcp-beta-criteria.md +0 -130
- package/docs/contracts/mcp-cloud-scope.md +0 -355
- package/docs/contracts/mcp-discovery-phase-notice.md +0 -60
- package/docs/contracts/mcp-phase-1-scope.md +0 -272
- package/docs/contracts/mcp-registry-manifest.schema.json +0 -129
- package/docs/contracts/mcp-tool-inventory.md +0 -64
- package/docs/contracts/mcp-tool-stub-envelope.md +0 -78
- package/docs/contracts/measurement-baseline.md +0 -103
- package/docs/contracts/memory-visibility-v1.md +0 -160
- package/docs/contracts/mental-models.md +0 -336
- package/docs/contracts/migrate-command.md +0 -233
- package/docs/contracts/multi-tool-projection-fidelity.md +0 -134
- package/docs/contracts/namespace.md +0 -125
- package/docs/contracts/no-runtime-boundary.md +0 -61
- package/docs/contracts/one-off-script-lifecycle.md +0 -110
- package/docs/contracts/orchestration-dsl-v1.md +0 -153
- package/docs/contracts/package-self-orientation.md +0 -163
- package/docs/contracts/pilot/agent-authority.md +0 -24
- package/docs/contracts/pilot/direct-answers.md +0 -70
- package/docs/contracts/pilot/language-and-tone.md +0 -63
- package/docs/contracts/plain-language-surface.md +0 -117
- package/docs/contracts/prelaunch-diagnostics.md +0 -151
- package/docs/contracts/profile-system.md +0 -167
- package/docs/contracts/reasoning-discipline-protocol.md +0 -83
- package/docs/contracts/release-pr-gating.md +0 -151
- package/docs/contracts/release-sizing.md +0 -107
- package/docs/contracts/release-trunk-sync.md +0 -105
- package/docs/contracts/review-lens-schema.md +0 -64
- package/docs/contracts/roadmap-complexity-standard.md +0 -138
- package/docs/contracts/role-experience.md +0 -125
- package/docs/contracts/router-blending.md +0 -71
- package/docs/contracts/rule-classification.md +0 -171
- package/docs/contracts/rule-interactions.md +0 -132
- package/docs/contracts/rule-interactions.yml +0 -260
- package/docs/contracts/rule-priority-hierarchy.md +0 -88
- package/docs/contracts/rule-router.md +0 -287
- package/docs/contracts/safety-model.md +0 -129
- package/docs/contracts/session-profile-overlay.md +0 -157
- package/docs/contracts/settings-api.md +0 -264
- package/docs/contracts/settings-gui-agent-mode.schema.json +0 -128
- package/docs/contracts/settings-sync-yaml-subset.md +0 -139
- package/docs/contracts/skill-bundled-assets.md +0 -62
- package/docs/contracts/skill-discovery.md +0 -80
- package/docs/contracts/skill-distribution-channels.md +0 -66
- package/docs/contracts/skill-domains.md +0 -144
- package/docs/contracts/skill-dry-run.md +0 -47
- package/docs/contracts/skill-family-map.yml +0 -915
- package/docs/contracts/smoke-contracts.md +0 -144
- package/docs/contracts/subagent-boundary.md +0 -59
- package/docs/contracts/surface-agent-contracts.md +0 -153
- package/docs/contracts/surface-matrix.md +0 -108
- package/docs/contracts/surface-tiers.md +0 -81
- package/docs/contracts/telegraph-telemetry.md +0 -83
- package/docs/contracts/ticket-bundle-format.md +0 -233
- package/docs/contracts/tier-3-contrib-plugin.md +0 -137
- package/docs/contracts/trust-and-safety.md +0 -144
- package/docs/contracts/ui-stack-extension.md +0 -237
- package/docs/contracts/ui-track-flow.md +0 -329
- package/docs/contracts/universal-skills.md +0 -91
- package/docs/contracts/user-type-schema.md +0 -146
- package/docs/contracts/value-dashboard-spec.md +0 -378
- package/docs/contracts/value-report-schema.md +0 -168
- package/docs/contracts/workflow-packs.md +0 -121
- package/docs/contracts/workspace-boundary.md +0 -84
- package/docs/contracts/workspace-documents.md +0 -144
- package/docs/contracts/write-engine.md +0 -182
- package/docs/cookbook.md +0 -152
- package/docs/customization.md +0 -685
- package/docs/decisions/ADR-001-kernel-swap-deferred.md +0 -109
- package/docs/decisions/ADR-002-kernel-bucket-overrides.md +0 -135
- package/docs/decisions/ADR-003-flat-cluster-subs-and-colon-syntax.md +0 -137
- package/docs/decisions/ADR-004-rule-governance-pruning.md +0 -240
- package/docs/decisions/ADR-005-subagent-worktrees.md +0 -120
- package/docs/decisions/ADR-006-skill-tools-python-pilot.md +0 -114
- package/docs/decisions/ADR-007-agent-discovery-scopes.md +0 -371
- package/docs/decisions/ADR-008-installed-tools-manifest.md +0 -160
- package/docs/decisions/ADR-009-event4u-namespace.md +0 -188
- package/docs/decisions/ADR-010-profile-pack-preset-boundary.md +0 -168
- package/docs/decisions/ADR-011-domain-pack-readiness.md +0 -213
- package/docs/decisions/ADR-012-typescript-cli-shell.md +0 -162
- package/docs/decisions/ADR-013-discovery-frontmatter-contract.md +0 -342
- package/docs/decisions/ADR-014-gui-framework-choice.md +0 -136
- package/docs/decisions/ADR-015-discovery-manifest-contract.md +0 -146
- package/docs/decisions/ADR-016-installer-architecture.md +0 -189
- package/docs/decisions/ADR-017-monorepo-physical-layout.md +0 -261
- package/docs/decisions/ADR-018-trust-and-safety-layer.md +0 -159
- package/docs/decisions/ADR-019-router-json-dist-location.md +0 -124
- package/docs/decisions/ADR-020-global-only-consumer-scope.md +0 -213
- package/docs/decisions/ADR-021-deployment-shape.md +0 -153
- package/docs/decisions/ADR-022-daily-workspace-decomposition.md +0 -140
- package/docs/decisions/ADR-023-host-agent-protocol.md +0 -129
- package/docs/decisions/ADR-024-workspace-v0-feature-floor.md +0 -126
- package/docs/decisions/ADR-025-workspace-chrome.md +0 -119
- package/docs/decisions/ADR-026-explain-mode-translation.md +0 -117
- package/docs/decisions/ADR-027-changelog-machine-vs-manual.md +0 -129
- package/docs/decisions/ADR-028-root-layout.md +0 -147
- package/docs/decisions/ADR-029-multi-workspace-deferred.md +0 -122
- package/docs/decisions/ADR-030-claude-code-command-projection.md +0 -147
- package/docs/decisions/ADR-031-validation-severity-tiers-and-projection-roundtrip.md +0 -97
- package/docs/decisions/ADR-032-linked-projects-scope.md +0 -122
- package/docs/decisions/ADR-033-distribution-identity-npm-primary.md +0 -81
- package/docs/decisions/ADR-034-per-skill-model-recommendation-transport.md +0 -63
- package/docs/decisions/ADR-035-model-capability-tiers.md +0 -104
- package/docs/decisions/ADR-036-global-install-browser-wizard-handoff.md +0 -106
- package/docs/decisions/ADR-037-cost-profile-untangle.md +0 -117
- package/docs/decisions/ADR-038-canonical-settings-path.md +0 -96
- package/docs/decisions/ADR-039-claude-skills-untracked.md +0 -139
- package/docs/decisions/ADR-040-execution-model-projection-time-filtering.md +0 -244
- package/docs/decisions/ADR-041-controlled-command-verbs.md +0 -133
- package/docs/decisions/ADR-042-runtime-resolver-decision-gate.md +0 -113
- package/docs/decisions/ADR-043-monorepo-collapse-to-src-domains.md +0 -128
- package/docs/decisions/ADR-044-command-naming-scheme-hyphenated.md +0 -250
- package/docs/decisions/ADR-045-src-source-layout-and-profiles-as-views.md +0 -111
- package/docs/decisions/ADR-046-thin-command-principle.md +0 -93
- package/docs/decisions/ADR-047-framework-neutral-stack-adaptive-commands.md +0 -94
- package/docs/decisions/ADR-048-command-justification-rule.md +0 -106
- package/docs/decisions/ADR-049-configuration-trust-boundary.md +0 -132
- package/docs/decisions/ADR-050-workspace-vs-package-root-boundary.md +0 -121
- package/docs/decisions/ADR-051-uncondensed-source-container-relocation.md +0 -114
- package/docs/decisions/ADR-052-packages-removal-and-pack-home-migration.md +0 -86
- package/docs/decisions/ADR-053-agents-namespace-dual-role-resolution.md +0 -132
- package/docs/decisions/ADR-054-rule-adherence-decay-triggered-restate.md +0 -143
- package/docs/decisions/ADR-055-flow-layer-data-model.md +0 -235
- package/docs/decisions/ADR-056-unvalidated-video-adapters-disposition.md +0 -124
- package/docs/decisions/ADR-057-consolidation-evidence-gate-outcomes.md +0 -135
- package/docs/decisions/ADR-058-condensed-output-relocation-to-dist.md +0 -94
- package/docs/decisions/ADR-059-render-resume-filesystem-as-state.md +0 -161
- package/docs/decisions/ADR-060-comfyui-sandbox-model.md +0 -154
- package/docs/decisions/ADR-061-corpus-grounding-layer.md +0 -230
- package/docs/decisions/ADR-062-encrypt-at-rest-store-architecture.md +0 -121
- package/docs/decisions/ADR-063-append-jsonl-encryption-deferred.md +0 -83
- package/docs/decisions/ADR-064-append-jsonl-per-record-encryption.md +0 -113
- package/docs/decisions/ADR-065-tier3-inbox-handoff-v0.md +0 -86
- package/docs/decisions/ADR-066-skill-body-prerendering.md +0 -93
- package/docs/decisions/ADR-067-glama-registry-listing.md +0 -259
- package/docs/decisions/ADR-068-host-tier-detection.md +0 -90
- package/docs/decisions/ADR-069-prompt-renderer.md +0 -97
- package/docs/decisions/ADR-070-tier1-drive-loop.md +0 -94
- package/docs/decisions/ADR-071-launch-drive-integration.md +0 -95
- package/docs/decisions/ADR-072-codex-gemini-drive-configs.md +0 -90
- package/docs/decisions/ADR-073-drive-health-kill-switch.md +0 -81
- package/docs/decisions/ADR-074-drive-kill-switch-auto-recovery.md +0 -84
- package/docs/decisions/ADR-075-workspace-gui-drive.md +0 -83
- package/docs/decisions/ADR-076-workspace-multi-turn.md +0 -92
- package/docs/decisions/ADR-077-workspace-followup-gui.md +0 -70
- package/docs/decisions/ADR-078-drive-health-panel.md +0 -70
- package/docs/decisions/ADR-079-workspace-host-picker.md +0 -81
- package/docs/decisions/ADR-080-host-session-expired-410.md +0 -92
- package/docs/decisions/ADR-081-drive-health-reset-and-410-affordance.md +0 -71
- package/docs/decisions/ADR-082-410-one-click-relaunch.md +0 -58
- package/docs/decisions/ADR-083-session-thread-and-arbitrary-continuation.md +0 -85
- package/docs/decisions/ADR-084-drive-health-refresh-on-drive.md +0 -52
- package/docs/decisions/ADR-085-mcp-stdio-end-user-distribution-shape.md +0 -158
- package/docs/decisions/ADR-086-read-only-cross-agent-mcp-discovery-helper.md +0 -171
- package/docs/decisions/ADR-087-installer-e2e-test-strategy.md +0 -111
- package/docs/decisions/ADR-088-no-external-runtime-federation.md +0 -144
- package/docs/decisions/ADR-089-lean-local-plugin-install.md +0 -111
- package/docs/decisions/ADR-090-visibility-command-frontmatter-field.md +0 -95
- package/docs/decisions/ADR-091-split-meta-capability-packs.md +0 -113
- package/docs/decisions/ADR-092-defer-command-tier-alias-removal.md +0 -117
- package/docs/decisions/ADR-093-ai-council-config-user-global.md +0 -117
- package/docs/decisions/ADR-094-agent-memory-layer-removal.md +0 -94
- package/docs/decisions/ADR-095-workspace-boundary-contract.md +0 -108
- package/docs/decisions/ADR-096-analysis-workbench.md +0 -110
- package/docs/decisions/ADR-097-mission-recipe-privilege-boundary.md +0 -121
- package/docs/decisions/ADR-098-evidence-first-structure-discovery.md +0 -154
- package/docs/decisions/ADR-099-file-first-pattern-library.md +0 -87
- package/docs/decisions/ADR-100-global-knowledge-card-sharing.md +0 -140
- package/docs/decisions/ADR-101-ticket-bundle-emission.md +0 -109
- package/docs/decisions/ADR-102-ticket-handoff-paste-and-mcp.md +0 -72
- package/docs/decisions/ADR-103-global-knowledge-default-off-until-measured.md +0 -92
- package/docs/decisions/ADR-104-ai-council-config-global-only.md +0 -119
- package/docs/decisions/ADR-105-automatic-subagent-orchestration.md +0 -108
- package/docs/decisions/ADR-106-recursive-verification-benchmark-gate.md +0 -126
- package/docs/decisions/ADR-107-legal-domain-pack-adoption.md +0 -70
- package/docs/decisions/ADR-108-open-source-forever-no-commercial-tier.md +0 -46
- package/docs/decisions/ADR-109-subagent-v1-contract.md +0 -246
- package/docs/decisions/ADR-110-discipline-profile-resolution-locus.md +0 -110
- package/docs/decisions/ADR-111-canonical-glama-listing.md +0 -97
- package/docs/decisions/ADR-112-stdio-lite-stays-read-only.md +0 -92
- package/docs/decisions/ADR-113-ci-native-release-label-trigger.md +0 -201
- package/docs/decisions/ADR-114-commit-policy-iron-law-override.md +0 -85
- package/docs/decisions/ADR-115-command-cluster-consolidation-phase-4.md +0 -91
- package/docs/decisions/ADR-116-memory-tripwire-activation-path.md +0 -144
- package/docs/decisions/ADR-117-subagents-auto-default-on.md +0 -89
- package/docs/decisions/ADR-118-loop-engineering-boundaries.md +0 -162
- package/docs/decisions/ADR-119-global-knowledge-default-on.md +0 -104
- package/docs/decisions/ADR-120-council-chairman-mode.md +0 -70
- package/docs/decisions/ADR-121-knowledge-sensitivity-classes.md +0 -90
- package/docs/decisions/ADR-122-adversarial-verification-council.md +0 -166
- package/docs/decisions/ADR-123-runtime-security-scope-and-spawn-hardening.md +0 -142
- package/docs/decisions/ADR-200-python-to-typescript-migration.md +0 -203
- package/docs/decisions/ADR-rule-kernel-and-router.md +0 -133
- package/docs/decisions/INDEX.md +0 -136
- package/docs/deploy/connector-setup.md +0 -129
- package/docs/deploy/env-vars.md +0 -70
- package/docs/deploy/policy-cookbook.md +0 -130
- package/docs/deploy/quickstart.md +0 -112
- package/docs/deploy/small-team-recipe.md +0 -148
- package/docs/deploy/team-deployment-posture.md +0 -111
- package/docs/design/adversarial-council-eval.md +0 -106
- package/docs/design/council-vs-solo-baseline.md +0 -92
- package/docs/design/cross-model-parity-eval.md +0 -82
- package/docs/design/length-neutral-judge-rerun.md +0 -92
- package/docs/design/utilization-window-criteria.md +0 -51
- package/docs/development.md +0 -230
- package/docs/distribution/awesome-list-submission.md +0 -46
- package/docs/distribution/consumer-matrix.md +0 -96
- package/docs/distribution/launch-story-draft.md +0 -58
- package/docs/distribution/mcp-submission-checklist.md +0 -95
- package/docs/distribution/public-install-smoke.md +0 -68
- package/docs/distribution/registries.md +0 -117
- package/docs/distribution/registry-submissions.md +0 -85
- package/docs/distribution/telemetry-privacy.md +0 -128
- package/docs/distribution/telemetry-schema.md +0 -174
- package/docs/distribution/topics-equivalents-decay-policy.md +0 -51
- package/docs/end-to-end-walkthroughs.md +0 -165
- package/docs/enforcement-by-host.md +0 -44
- package/docs/examples/agent-user.example.md +0 -22
- package/docs/experiences/agency.md +0 -49
- package/docs/experiences/content_creator.md +0 -49
- package/docs/experiences/developer.md +0 -49
- package/docs/experiences/finance.md +0 -50
- package/docs/experiences/founder.md +0 -49
- package/docs/experiences/ops.md +0 -49
- package/docs/featured-commands.md +0 -27
- package/docs/featured-skills.md +0 -95
- package/docs/flows.md +0 -67
- package/docs/getting-started-by-role.md +0 -190
- package/docs/getting-started-laravel.md +0 -72
- package/docs/getting-started-local-stdio.md +0 -77
- package/docs/getting-started.md +0 -254
- package/docs/github-topics.md +0 -93
- package/docs/governance-advantage.md +0 -72
- package/docs/governance.md +0 -96
- package/docs/guides/cross-repo-linked-projects.md +0 -93
- package/docs/guides/cross-repo-retrieval.md +0 -61
- package/docs/guides/frontend-design-corpus-refresh.md +0 -83
- package/docs/guides/local-analytics.md +0 -125
- package/docs/guides/local-knowledge.md +0 -127
- package/docs/guides/skill-discovery.md +0 -71
- package/docs/guides/skill-preview.md +0 -71
- package/docs/hook-payload-capture.md +0 -221
- package/docs/install-friction-report.md +0 -66
- package/docs/installation.md +0 -959
- package/docs/maintainers/branch-protection.md +0 -105
- package/docs/maintainers/dev-mode.md +0 -106
- package/docs/maintainers/optional-media-deps.md +0 -50
- package/docs/maintainers/system-map.md +0 -85
- package/docs/mcp-registries.md +0 -94
- package/docs/mcp-server.md +0 -175
- package/docs/mcp.md +0 -147
- package/docs/media/proof-demo.cast +0 -14
- package/docs/media/proof-demo.gif +0 -0
- package/docs/migration/consumer-template-consumption-model.md +0 -145
- package/docs/migration/divergences/README.md +0 -55
- package/docs/migration/divergences/_template.md +0 -50
- package/docs/migration/divergences/bench-stats-float-precision.md +0 -72
- package/docs/migration/divergences/mcp-telemetry-node-sqlite.md +0 -61
- package/docs/migration/divergences/pack-mcp-content-gzip-body.md +0 -53
- package/docs/migration/divergences/src-scripts-build_cloud_bundle.md +0 -63
- package/docs/migration/divergences/src-scripts-check_memory.md +0 -91
- package/docs/migration/divergences/src-scripts-inventory_abstraction_budget.md +0 -65
- package/docs/migration/divergences/src-scripts-lint_marketplace.md +0 -57
- package/docs/migration/divergences/src-scripts-lint_mcp_registry_manifest.md +0 -70
- package/docs/migration/divergences/src-scripts-spotcheck_thin_root.md +0 -60
- package/docs/migration/divergences/src-scripts-validate_agent_settings.md +0 -58
- package/docs/migration/node-floor.md +0 -86
- package/docs/migration/v1-to-v2.md +0 -156
- package/docs/migration/yaml-roundtrip-spike.md +0 -163
- package/docs/migrations/commands-1.15.0.md +0 -117
- package/docs/parity/bench-external.json +0 -58
- package/docs/parity/bench.json +0 -41
- package/docs/parity/command-frontmatter.md +0 -60
- package/docs/parity/external-runtime.md +0 -46
- package/docs/personas.md +0 -178
- package/docs/positioning-evidence.md +0 -86
- package/docs/profiles.md +0 -108
- package/docs/proof.md +0 -176
- package/docs/quality.md +0 -98
- package/docs/readme-split-plan.md +0 -102
- package/docs/recruits/_template.md +0 -81
- package/docs/release-runbook.md +0 -141
- package/docs/role-experiences.md +0 -19
- package/docs/safety.md +0 -30
- package/docs/second-brain-scope.md +0 -116
- package/docs/self-review-gate.md +0 -65
- package/docs/setup/enterprise-and-offline.md +0 -201
- package/docs/setup/mcp-client-config.md +0 -358
- package/docs/setup/mcp-cloud-endpoints.md +0 -116
- package/docs/setup/mcp-cloud-registry-listing.md +0 -99
- package/docs/setup/mcp-cloud-setup.md +0 -183
- package/docs/setup/mcp-r2-bootstrap.md +0 -82
- package/docs/setup/mcp-server-docker.md +0 -101
- package/docs/setup/per-ide/aider.md +0 -48
- package/docs/setup/per-ide/antigravity.md +0 -68
- package/docs/setup/per-ide/augment.md +0 -89
- package/docs/setup/per-ide/claude-code.md +0 -97
- package/docs/setup/per-ide/claude-desktop.md +0 -207
- package/docs/setup/per-ide/cline.md +0 -43
- package/docs/setup/per-ide/codebuddy.md +0 -63
- package/docs/setup/per-ide/codex.md +0 -46
- package/docs/setup/per-ide/continue.md +0 -68
- package/docs/setup/per-ide/copilot.md +0 -80
- package/docs/setup/per-ide/cursor.md +0 -125
- package/docs/setup/per-ide/droid.md +0 -65
- package/docs/setup/per-ide/gemini-cli.md +0 -45
- package/docs/setup/per-ide/jetbrains.md +0 -76
- package/docs/setup/per-ide/kilocode.md +0 -66
- package/docs/setup/per-ide/kiro.md +0 -72
- package/docs/setup/per-ide/opencode.md +0 -62
- package/docs/setup/per-ide/qoder.md +0 -63
- package/docs/setup/per-ide/roocode.md +0 -68
- package/docs/setup/per-ide/trae.md +0 -63
- package/docs/setup/per-ide/warp.md +0 -63
- package/docs/setup/per-ide/windsurf.md +0 -109
- package/docs/setup/per-ide/zed.md +0 -73
- package/docs/showcase.md +0 -209
- package/docs/skill-duplication-findings.md +0 -91
- package/docs/skills-catalog.md +0 -265
- package/docs/skills-taxonomy.md +0 -90
- package/docs/spawn-site-policy.md +0 -72
- package/docs/succession.md +0 -80
- package/docs/threat-model.md +0 -29
- package/docs/troubleshooting.md +0 -155
- package/docs/ui-track-mental-model.md +0 -121
- package/docs/us-vs-the-category.md +0 -38
- package/docs/value.md +0 -86
- package/docs/walkthroughs/assets/workspace-role-grid.png +0 -0
- package/docs/walkthroughs/assets/workspace-session-started.png +0 -0
- package/docs/walkthroughs/assets/workspace-task-picker.png +0 -0
- package/docs/walkthroughs/daily-workspace-a11y.md +0 -87
- package/docs/walkthroughs/daily-workspace.md +0 -127
- package/docs/wedge/production-validator/README.md +0 -81
- package/docs/wedge/production-validator/first-run-check.sh +0 -42
- package/docs/wedge/production-validator/production-validator.md +0 -83
- package/docs/wizard.md +0 -173
|
@@ -36,6 +36,7 @@ import { fileURLToPath, pathToFileURL } from "node:url";
|
|
|
36
36
|
// `agents/runtime/state/.dispatcher.lock` discipline (hook-architecture-v1.md
|
|
37
37
|
// § Concurrency, Phase 7.4).
|
|
38
38
|
import { atomic_write_json } from "./hooks/state_io.js";
|
|
39
|
+
import { readHookStdin } from "./hooks/hook_stdin.js";
|
|
39
40
|
|
|
40
41
|
// NOTE: the Python docstring says `agents/runtime/state/`, but the code
|
|
41
42
|
// constant is `agents/state/`. Replicated verbatim — this is a latent
|
|
@@ -252,11 +253,7 @@ function parse_args(argv: string[]): ParsedArgs {
|
|
|
252
253
|
}
|
|
253
254
|
|
|
254
255
|
function _readStdin(): string {
|
|
255
|
-
|
|
256
|
-
return fs.readFileSync(0, "utf-8");
|
|
257
|
-
} catch {
|
|
258
|
-
return "";
|
|
259
|
-
}
|
|
256
|
+
return readHookStdin();
|
|
260
257
|
}
|
|
261
258
|
|
|
262
259
|
export function main(argv?: string[]): number {
|
|
@@ -264,7 +261,13 @@ export function main(argv?: string[]): number {
|
|
|
264
261
|
return run(_readStdin(), { consumer_root: process.cwd(), verbose: args.verbose });
|
|
265
262
|
}
|
|
266
263
|
|
|
264
|
+
// Bundle-safety: never auto-run when inlined into an esbuild bundle, where
|
|
265
|
+
// every module shares the bundle's `import.meta.url` (see cmd_migrate.ts).
|
|
266
|
+
declare const __AGENT_CONFIG_BUNDLE__: boolean | undefined;
|
|
267
267
|
function _isCliEntry(): boolean {
|
|
268
|
+
if (typeof __AGENT_CONFIG_BUNDLE__ !== 'undefined' && __AGENT_CONFIG_BUNDLE__) {
|
|
269
|
+
return false;
|
|
270
|
+
}
|
|
268
271
|
if (process.argv[1] === undefined) {
|
|
269
272
|
return false;
|
|
270
273
|
}
|
|
@@ -117,6 +117,15 @@ import {
|
|
|
117
117
|
} from './ai_council/consensus.js';
|
|
118
118
|
import * as _shadow from './ai_council/shadow_dispatch.js';
|
|
119
119
|
import * as _lowimpact from './ai_council/low_impact.js';
|
|
120
|
+
import {
|
|
121
|
+
apply_chairman_override,
|
|
122
|
+
assign_stances,
|
|
123
|
+
build_blind_labels,
|
|
124
|
+
OUTSIDER_STANCE_NAME,
|
|
125
|
+
parse_chairman_override,
|
|
126
|
+
render_deanonymization_block,
|
|
127
|
+
with_chairman_fields,
|
|
128
|
+
} from './ai_council/blind_review.js';
|
|
120
129
|
|
|
121
130
|
// ── argparse-style exit plumbing ────────────────────────────────────
|
|
122
131
|
// Mirror CPython argparse: a `prog: error: …` line on stderr + exit 2.
|
|
@@ -1168,16 +1177,36 @@ function _maybe_run_chairman(
|
|
|
1168
1177
|
response: null,
|
|
1169
1178
|
};
|
|
1170
1179
|
}
|
|
1171
|
-
//
|
|
1172
|
-
//
|
|
1173
|
-
|
|
1174
|
-
|
|
1175
|
-
|
|
1176
|
-
|
|
1177
|
-
const
|
|
1178
|
-
|
|
1179
|
-
|
|
1180
|
-
|
|
1180
|
+
// road-to-council-blind-review Phase 1 (Ü1): --blind-chairman shuffles the
|
|
1181
|
+
// transcript deterministically (seeded by the question text) and strips
|
|
1182
|
+
// identity to Response-A/B/… labels, reusing the EXISTING
|
|
1183
|
+
// `consensus.anonymize_responses` seam. The default path below (transcript
|
|
1184
|
+
// WITH identities — "the chairman judges attributed positions") is
|
|
1185
|
+
// byte-identical to today.
|
|
1186
|
+
const blind = args.blind_chairman === true;
|
|
1187
|
+
let transcript: string;
|
|
1188
|
+
let blind_label_to_source: Map<string, string> | null = null;
|
|
1189
|
+
const successful = responses.filter((r) => r.error === null && r.text.trim() !== '');
|
|
1190
|
+
if (blind) {
|
|
1191
|
+
const pairs: Array<[string, string]> = successful.map((r) => [`${r.provider}:${r.model}`, r.text]);
|
|
1192
|
+
const built = build_blind_labels(question.user_prompt, pairs);
|
|
1193
|
+
transcript = built.transcript;
|
|
1194
|
+
blind_label_to_source = built.label_to_source;
|
|
1195
|
+
} else {
|
|
1196
|
+
transcript = successful
|
|
1197
|
+
.map((r) => `## ${r.provider} - ${r.model}\n\n${r.text.trim()}`)
|
|
1198
|
+
.join('\n\n---\n\n');
|
|
1199
|
+
}
|
|
1200
|
+
// Ü3: --chairman-fields appends the two mandatory trailing sections.
|
|
1201
|
+
const template =
|
|
1202
|
+
args.chairman_fields === true ? with_chairman_fields(synthesis_template(question.mode)) : synthesis_template(question.mode);
|
|
1203
|
+
const synth_prompt = blind
|
|
1204
|
+
? `You are the council CHAIRMAN. You did not deliberate. Author the synthesis ` +
|
|
1205
|
+
`of the anonymized member positions below (labels A–E). Do not guess ` +
|
|
1206
|
+
`identities.\n\n${template}\n\n---\n\n${transcript}`
|
|
1207
|
+
: `You are the council CHAIRMAN. You did not deliberate. Author the synthesis ` +
|
|
1208
|
+
`of the attributed member positions below, following the template.\n\n` +
|
|
1209
|
+
`${template}\n\n---\n\n${transcript}`;
|
|
1181
1210
|
const synthQ = new CouncilQuestion({
|
|
1182
1211
|
mode: question.mode,
|
|
1183
1212
|
user_prompt: synth_prompt,
|
|
@@ -1197,7 +1226,13 @@ function _maybe_run_chairman(
|
|
|
1197
1226
|
response: r,
|
|
1198
1227
|
};
|
|
1199
1228
|
}
|
|
1200
|
-
|
|
1229
|
+
// Blind is only at decision time — de-anonymization lands in the audit
|
|
1230
|
+
// artifact immediately after the verdict, never fed back into a prompt.
|
|
1231
|
+
const final_text =
|
|
1232
|
+
blind && blind_label_to_source !== null
|
|
1233
|
+
? `${r.text.trim()}\n\n${render_deanonymization_block('### De-anonymization (post-verdict)', blind_label_to_source)}`
|
|
1234
|
+
: r.text;
|
|
1235
|
+
return { member: sel.member, annotation: sel.annotation, text: final_text, response: r };
|
|
1201
1236
|
}
|
|
1202
1237
|
|
|
1203
1238
|
function _maybe_run_peer_review(
|
|
@@ -1840,6 +1875,15 @@ function _apply_solo_dispatch(members: ExternalAIClient[]): [ExternalAIClient[],
|
|
|
1840
1875
|
];
|
|
1841
1876
|
}
|
|
1842
1877
|
|
|
1878
|
+
/** `--chairman` value → parsed override, or `ArgumentTypeError` on malformed input. */
|
|
1879
|
+
function _resolved_chairman_override(raw: string | null) {
|
|
1880
|
+
try {
|
|
1881
|
+
return parse_chairman_override(raw);
|
|
1882
|
+
} catch (exc) {
|
|
1883
|
+
throw new ArgumentTypeError(exc instanceof Error ? exc.message : String(exc));
|
|
1884
|
+
}
|
|
1885
|
+
}
|
|
1886
|
+
|
|
1843
1887
|
function cmd_run(
|
|
1844
1888
|
args: Args,
|
|
1845
1889
|
opts: { settings?: Dict | null; members?: ExternalAIClient[] | null; table?: PriceTable | null } = {},
|
|
@@ -1850,7 +1894,12 @@ function cmd_run(
|
|
|
1850
1894
|
if (settings === null) {
|
|
1851
1895
|
settings = load_settings();
|
|
1852
1896
|
}
|
|
1853
|
-
|
|
1897
|
+
// road-to-council-blind-review Phase 1: `--chairman host|auto|member:NAME`
|
|
1898
|
+
// is a pure runtime override, never a config write.
|
|
1899
|
+
const ai_cfg = apply_chairman_override(
|
|
1900
|
+
_isDict(settings) ? ((settings['ai_council'] as Dict) || {}) : {},
|
|
1901
|
+
_resolved_chairman_override(_getattr<string | null>(args, 'chairman', null)),
|
|
1902
|
+
) as Dict;
|
|
1854
1903
|
const advisor_plans = _build_advisor_plans(ai_cfg, REPO_ROOT);
|
|
1855
1904
|
const explicit_overrides = _parse_model_overrides(_getattr<string[] | null>(args, 'model', null));
|
|
1856
1905
|
const skipped: Dict[] = [];
|
|
@@ -1978,6 +2027,21 @@ function cmd_run(
|
|
|
1978
2027
|
_isDict(ai_cfg) &&
|
|
1979
2028
|
_isDict(ai_cfg['stance_tally']) &&
|
|
1980
2029
|
(ai_cfg['stance_tally'] as Dict)['enabled'] === true;
|
|
2030
|
+
// road-to-council-blind-review Phase 1 (Ü2): five orthogonal stances
|
|
2031
|
+
// rotated deterministically over the config-ordered member list; the
|
|
2032
|
+
// outsider seat additionally drops project_context. Default off.
|
|
2033
|
+
const stances_on = args.stances === true;
|
|
2034
|
+
const stance_assignment = stances_on ? assign_stances(members.map((m) => m.name), question.user_prompt) : null;
|
|
2035
|
+
const member_prompt_suffix = stance_assignment
|
|
2036
|
+
? new Map(Array.from(stance_assignment.entries()).map(([name, s]) => [name, s.prompt]))
|
|
2037
|
+
: null;
|
|
2038
|
+
const no_project_context_members = stance_assignment
|
|
2039
|
+
? new Set(
|
|
2040
|
+
Array.from(stance_assignment.entries())
|
|
2041
|
+
.filter(([, s]) => s.name === OUTSIDER_STANCE_NAME)
|
|
2042
|
+
.map(([name]) => name),
|
|
2043
|
+
)
|
|
2044
|
+
: null;
|
|
1981
2045
|
const stance_repairs: CouncilResponse[] = [];
|
|
1982
2046
|
const responses = consult(members, question, budget, {
|
|
1983
2047
|
table,
|
|
@@ -1986,6 +2050,8 @@ function cmd_run(
|
|
|
1986
2050
|
rounds,
|
|
1987
2051
|
advisor_plans,
|
|
1988
2052
|
stance_tally: stance_tally_on,
|
|
2053
|
+
member_prompt_suffix,
|
|
2054
|
+
no_project_context_members,
|
|
1989
2055
|
// Interactive one-line confirm (cmd_run has no --auto-continue); the
|
|
1990
2056
|
// repaired-call cost is collected so cost_usd_actual stays honest.
|
|
1991
2057
|
on_stance_repair: stance_tally_on
|
|
@@ -2009,6 +2075,22 @@ function cmd_run(
|
|
|
2009
2075
|
);
|
|
2010
2076
|
const consensus = _maybe_run_consensus(ai_cfg, question, members, responses, budget, table, project, args);
|
|
2011
2077
|
const chairman = _maybe_run_chairman(ai_cfg, question, members, responses, budget, table, project, args);
|
|
2078
|
+
// road-to-council-blind-review Phase 1 (Ü1), host-path only: when no
|
|
2079
|
+
// member chairman ran (mode === 'host'), the blind mapping is computed
|
|
2080
|
+
// here (seeded from the question text) and persisted for a later
|
|
2081
|
+
// `council:render` to blind the response headers. The member-chairman
|
|
2082
|
+
// path (below, inside `_maybe_run_chairman`) blinds inline instead.
|
|
2083
|
+
const blind_chairman_on = args.blind_chairman === true;
|
|
2084
|
+
const chairman_fields_on = args.chairman_fields === true;
|
|
2085
|
+
let blind_review_map: Map<string, string> | null = null;
|
|
2086
|
+
if (blind_chairman_on && chairman === null) {
|
|
2087
|
+
const pairs: Array<[string, string]> = responses
|
|
2088
|
+
.filter((r) => r.error === null && r.text.trim() !== '')
|
|
2089
|
+
.map((r) => [`${r.provider}:${r.model}`, r.text]);
|
|
2090
|
+
if (pairs.length > 0) {
|
|
2091
|
+
blind_review_map = build_blind_labels(question.user_prompt, pairs).label_to_source;
|
|
2092
|
+
}
|
|
2093
|
+
}
|
|
2012
2094
|
const estimated_total = estimates.reduce((acc, e) => acc + _total_usd(e), 0.0);
|
|
2013
2095
|
let actual_total = 0.0;
|
|
2014
2096
|
const all_responses: CouncilResponse[] = [...responses];
|
|
@@ -2043,6 +2125,9 @@ function cmd_run(
|
|
|
2043
2125
|
cost_usd_estimated: _pyRound(estimated_total, 6),
|
|
2044
2126
|
cost_usd_actual: _pyRound(actual_total, 6),
|
|
2045
2127
|
stance_tally: stance_tally_on,
|
|
2128
|
+
stances: stances_on,
|
|
2129
|
+
blind_chairman: blind_chairman_on,
|
|
2130
|
+
chairman_fields: chairman_fields_on,
|
|
2046
2131
|
responses: _serialise_responses(responses),
|
|
2047
2132
|
};
|
|
2048
2133
|
if (peer_review !== null) {
|
|
@@ -2054,6 +2139,9 @@ function cmd_run(
|
|
|
2054
2139
|
if (chairman !== null) {
|
|
2055
2140
|
payload['chairman'] = { member: chairman.member, annotation: chairman.annotation, text: chairman.text };
|
|
2056
2141
|
}
|
|
2142
|
+
if (blind_review_map !== null) {
|
|
2143
|
+
payload['blind_review_map'] = _mapToObject(blind_review_map);
|
|
2144
|
+
}
|
|
2057
2145
|
const out_path = _validate_council_output_path(args.output as string, {
|
|
2058
2146
|
kind: 'responses',
|
|
2059
2147
|
subcommand: 'run',
|
|
@@ -2452,12 +2540,18 @@ function cmd_render(args: Args): number {
|
|
|
2452
2540
|
}
|
|
2453
2541
|
const consensus = _deserialise_consensus(payload['consensus'] as Dict);
|
|
2454
2542
|
const peer_review = _deserialise_peer_review(payload['peer_review'] as Dict);
|
|
2543
|
+
// road-to-council-blind-review Phase 1: a persisted `blind_review_map`
|
|
2544
|
+
// means `--blind-chairman` ran on the host path (no member chairman) —
|
|
2545
|
+
// blind the response headers + append the de-anonymization map.
|
|
2546
|
+
const blind_map_raw = payload['blind_review_map'];
|
|
2455
2547
|
const body = render(_deserialise_responses(items), {
|
|
2456
2548
|
mode: mode ?? null,
|
|
2457
2549
|
prose_synthesis: prose,
|
|
2458
2550
|
consensus,
|
|
2459
2551
|
peer_review,
|
|
2460
2552
|
stance_tally: payload['stance_tally'] === true,
|
|
2553
|
+
chairman_fields: payload['chairman_fields'] === true,
|
|
2554
|
+
blind: _isDict(blind_map_raw) ? { label_to_source: _objToMap(blind_map_raw as Dict) } : null,
|
|
2461
2555
|
chairman: _isDict(payload['chairman'])
|
|
2462
2556
|
? (payload['chairman'] as { member: string | null; annotation: string; text: string | null })
|
|
2463
2557
|
: null,
|
|
@@ -2672,6 +2766,11 @@ interface Args {
|
|
|
2672
2766
|
auto_continue: boolean;
|
|
2673
2767
|
restate?: boolean;
|
|
2674
2768
|
continue_as_debate: string | null;
|
|
2769
|
+
// road-to-council-blind-review Phase 1 — flag-gated, default-off (`run` only)
|
|
2770
|
+
chairman: string | null;
|
|
2771
|
+
blind_chairman: boolean;
|
|
2772
|
+
stances: boolean;
|
|
2773
|
+
chairman_fields: boolean;
|
|
2675
2774
|
// render / replay
|
|
2676
2775
|
responses?: string | null;
|
|
2677
2776
|
include_member_arguments: boolean | null;
|
|
@@ -2726,6 +2825,15 @@ function _defaultArgs(): Args {
|
|
|
2726
2825
|
prose_synthesis: null,
|
|
2727
2826
|
auto_continue: false,
|
|
2728
2827
|
continue_as_debate: null,
|
|
2828
|
+
chairman: null,
|
|
2829
|
+
// Ü1 ADOPTED (road-to-council-blind-review Phase 3, 2026-07-28):
|
|
2830
|
+
// blind synthesis is the default — 0/10 + 0/10 pre-registered
|
|
2831
|
+
// degradation triggers on the n=10 A/B; opt out per-invocation
|
|
2832
|
+
// with --no-blind-chairman (the audit artifact always keeps the
|
|
2833
|
+
// post-verdict de-anonymization map either way).
|
|
2834
|
+
blind_chairman: true,
|
|
2835
|
+
stances: false,
|
|
2836
|
+
chairman_fields: false,
|
|
2729
2837
|
responses: null,
|
|
2730
2838
|
include_member_arguments: null,
|
|
2731
2839
|
low_impact_stats: false,
|
|
@@ -2788,6 +2896,12 @@ function _specsFor(cmd: string): { positionals: string[]; opts: OptSpec[]; requi
|
|
|
2788
2896
|
{ flag: '--single', takesValue: false, apply: (o) => (o.single = true) },
|
|
2789
2897
|
{ flag: '--prose-synthesis', takesValue: false, apply: (o) => (o.prose_synthesis = true) },
|
|
2790
2898
|
{ flag: '--no-prose-synthesis', takesValue: false, apply: (o) => (o.prose_synthesis = false) },
|
|
2899
|
+
// road-to-council-blind-review Phase 1 — flag-gated, default-off.
|
|
2900
|
+
{ flag: '--chairman', takesValue: true, apply: (o, v) => (o.chairman = v) },
|
|
2901
|
+
{ flag: '--blind-chairman', takesValue: false, apply: (o) => (o.blind_chairman = true) },
|
|
2902
|
+
{ flag: '--no-blind-chairman', takesValue: false, apply: (o) => (o.blind_chairman = false) },
|
|
2903
|
+
{ flag: '--stances', takesValue: false, apply: (o) => (o.stances = true) },
|
|
2904
|
+
{ flag: '--chairman-fields', takesValue: false, apply: (o) => (o.chairman_fields = true) },
|
|
2791
2905
|
],
|
|
2792
2906
|
requiredOpts: ['--output'],
|
|
2793
2907
|
};
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* detect_target_license — deterministic SPDX license detection + derived
|
|
4
|
+
* borrow-compatibility policy (road-to-provenance-and-license-governance
|
|
5
|
+
* S1.2). CLI wrapper — the actual detection/matrix/invalidation/override
|
|
6
|
+
* logic lives in `./_lib/detect_target_license.ts` (that module does the
|
|
7
|
+
* filesystem I/O too; detection is inherently a file-read job). This file
|
|
8
|
+
* owns only argv parsing, stdout/stderr shaping, schema validation, and the
|
|
9
|
+
* `--write` side effect.
|
|
10
|
+
*
|
|
11
|
+
* Usage:
|
|
12
|
+
* npx tsx src/scripts/detect_target_license.ts [repo-path] [--write] [--json]
|
|
13
|
+
* npx tsx src/scripts/detect_target_license.ts --help
|
|
14
|
+
*
|
|
15
|
+
* Default (no --write): report only, nothing written to disk.
|
|
16
|
+
* --write create/update license-policy.yaml in the target repo, unless
|
|
17
|
+
* escalation is required or the existing file is derived_from: manual.
|
|
18
|
+
*
|
|
19
|
+
* Exit codes: 0 success (including the warn-only "nothing detectable"
|
|
20
|
+
* path); 1 usage/IO/schema error; 2 escalation required — a human decision,
|
|
21
|
+
* never an auto-pick (source disagreement, or a divergent workspace license).
|
|
22
|
+
*/
|
|
23
|
+
|
|
24
|
+
import * as fs from 'node:fs';
|
|
25
|
+
import * as path from 'node:path';
|
|
26
|
+
import { pathToFileURL } from 'node:url';
|
|
27
|
+
|
|
28
|
+
import { parse as parseYaml, stringify as stringifyYaml } from 'yaml';
|
|
29
|
+
|
|
30
|
+
import {
|
|
31
|
+
buildLicensePolicyDocument,
|
|
32
|
+
checkInvalidation,
|
|
33
|
+
detectTargetLicense,
|
|
34
|
+
mergeOverride,
|
|
35
|
+
type LicensePolicyDoc,
|
|
36
|
+
} from './_lib/detect_target_license.js';
|
|
37
|
+
import { load_schema, validate, type YamlValue } from './validate_frontmatter.js';
|
|
38
|
+
|
|
39
|
+
export const POLICY_FILENAME = 'license-policy.yaml';
|
|
40
|
+
|
|
41
|
+
const USAGE = `usage: detect_target_license [repo-path] [--write] [--json] [-h|--help]
|
|
42
|
+
|
|
43
|
+
Deterministic SPDX license detection + derived borrow-compatibility policy.
|
|
44
|
+
|
|
45
|
+
repo-path target repo root (default: .)
|
|
46
|
+
--write write/update ${POLICY_FILENAME} in the target repo (skipped on
|
|
47
|
+
escalation, or when the existing file is derived_from: manual)
|
|
48
|
+
--json machine-readable report on stdout
|
|
49
|
+
|
|
50
|
+
Exit codes: 0 success, 1 usage/IO/schema error, 2 escalation required.
|
|
51
|
+
`;
|
|
52
|
+
|
|
53
|
+
export interface CliArgs {
|
|
54
|
+
repoPath: string;
|
|
55
|
+
write: boolean;
|
|
56
|
+
json: boolean;
|
|
57
|
+
help: boolean;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export function parseArgs(argv: string[]): CliArgs {
|
|
61
|
+
let repoPath = '.';
|
|
62
|
+
let write = false;
|
|
63
|
+
let json = false;
|
|
64
|
+
let help = false;
|
|
65
|
+
for (const a of argv) {
|
|
66
|
+
if (a === '-h' || a === '--help') help = true;
|
|
67
|
+
else if (a === '--write') write = true;
|
|
68
|
+
else if (a === '--json') json = true;
|
|
69
|
+
else if (!a.startsWith('--')) repoPath = a;
|
|
70
|
+
}
|
|
71
|
+
return { repoPath, write, json, help };
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
export function serializeLicensePolicy(doc: LicensePolicyDoc): string {
|
|
75
|
+
return stringifyYaml(doc, { indent: 2 });
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
export function parseLicensePolicyFile(text: string): LicensePolicyDoc {
|
|
79
|
+
return parseYaml(text) as LicensePolicyDoc; // caller schema-validates before trusting this
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
export function main(argv: string[] = process.argv.slice(2)): number {
|
|
83
|
+
const args = parseArgs(argv);
|
|
84
|
+
if (args.help) {
|
|
85
|
+
process.stdout.write(USAGE);
|
|
86
|
+
return 0;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
const repoRoot = path.resolve(args.repoPath);
|
|
90
|
+
if (!fs.existsSync(repoRoot) || !fs.statSync(repoRoot).isDirectory()) {
|
|
91
|
+
process.stderr.write(`detect_target_license: error: not a directory: ${repoRoot}\n`);
|
|
92
|
+
return 1;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
const detection = detectTargetLicense(repoRoot);
|
|
96
|
+
|
|
97
|
+
if (detection.escalate) {
|
|
98
|
+
if (args.json) {
|
|
99
|
+
process.stdout.write(JSON.stringify({
|
|
100
|
+
escalate: true,
|
|
101
|
+
reason: detection.escalateReason,
|
|
102
|
+
spdx_id: detection.spdxId,
|
|
103
|
+
warnings: detection.warnings,
|
|
104
|
+
}) + '\n');
|
|
105
|
+
} else {
|
|
106
|
+
process.stdout.write(`detect_target_license: ESCALATE — ${detection.escalateReason ?? 'unspecified'}\n`);
|
|
107
|
+
for (const w of detection.warnings) process.stdout.write(` warning: ${w}\n`);
|
|
108
|
+
process.stdout.write(`No ${POLICY_FILENAME} written. This needs a human decision, never an auto-pick.\n`);
|
|
109
|
+
}
|
|
110
|
+
return 2;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
const nowIso = new Date().toISOString();
|
|
114
|
+
const freshDoc = buildLicensePolicyDocument(detection, nowIso);
|
|
115
|
+
const policyPath = path.join(repoRoot, POLICY_FILENAME);
|
|
116
|
+
|
|
117
|
+
let finalDoc: LicensePolicyDoc = freshDoc;
|
|
118
|
+
let rejectedOverrides: string[] = [];
|
|
119
|
+
let action: 'derived' | 'kept-manual' | 're-derived' | 'merged' | 'unchanged' = 'derived';
|
|
120
|
+
|
|
121
|
+
if (fs.existsSync(policyPath)) {
|
|
122
|
+
let existing: LicensePolicyDoc | null = null;
|
|
123
|
+
try {
|
|
124
|
+
existing = parseLicensePolicyFile(fs.readFileSync(policyPath, 'utf8'));
|
|
125
|
+
} catch (err) {
|
|
126
|
+
process.stderr.write(
|
|
127
|
+
`detect_target_license: warning: failed to parse existing ${POLICY_FILENAME}, ` +
|
|
128
|
+
`treating as absent: ${err instanceof Error ? err.message : String(err)}\n`,
|
|
129
|
+
);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
if (existing) {
|
|
133
|
+
const invalidation = checkInvalidation(existing, detection);
|
|
134
|
+
if (invalidation.action === 'escalate') {
|
|
135
|
+
if (args.json) {
|
|
136
|
+
process.stdout.write(JSON.stringify({ escalate: true, reason: invalidation.reason }) + '\n');
|
|
137
|
+
} else {
|
|
138
|
+
process.stdout.write(`detect_target_license: ESCALATE — ${invalidation.reason}\n`);
|
|
139
|
+
process.stdout.write(`${POLICY_FILENAME} left unchanged. This needs a human decision, never an auto-pick.\n`);
|
|
140
|
+
}
|
|
141
|
+
return 2;
|
|
142
|
+
}
|
|
143
|
+
if (existing.derived_from === 'manual') {
|
|
144
|
+
finalDoc = existing;
|
|
145
|
+
action = 'kept-manual';
|
|
146
|
+
} else if (invalidation.action === 're-derive') {
|
|
147
|
+
finalDoc = freshDoc;
|
|
148
|
+
action = 're-derived';
|
|
149
|
+
} else {
|
|
150
|
+
const merge = mergeOverride(existing, freshDoc);
|
|
151
|
+
finalDoc = merge.doc;
|
|
152
|
+
rejectedOverrides = merge.rejectedOverrides;
|
|
153
|
+
action = rejectedOverrides.length > 0 || JSON.stringify(merge.doc.policy) !== JSON.stringify(existing.policy)
|
|
154
|
+
? 'merged'
|
|
155
|
+
: 'unchanged';
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
if (action !== 'kept-manual') {
|
|
161
|
+
const schema = load_schema('license-policy');
|
|
162
|
+
const errors = validate(finalDoc as unknown as YamlValue, schema);
|
|
163
|
+
if (errors.length > 0) {
|
|
164
|
+
process.stderr.write('detect_target_license: refused — derived policy fails schema validation:\n');
|
|
165
|
+
for (const e of errors) process.stderr.write(` - ${e.format()}\n`);
|
|
166
|
+
return 1;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
const willWrite = args.write && action !== 'kept-manual';
|
|
171
|
+
if (willWrite) {
|
|
172
|
+
fs.writeFileSync(policyPath, serializeLicensePolicy(finalDoc), 'utf8');
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
if (args.json) {
|
|
176
|
+
process.stdout.write(JSON.stringify({
|
|
177
|
+
escalate: false,
|
|
178
|
+
action,
|
|
179
|
+
wrote: willWrite,
|
|
180
|
+
policy_path: policyPath,
|
|
181
|
+
doc: finalDoc,
|
|
182
|
+
rejected_overrides: rejectedOverrides,
|
|
183
|
+
}) + '\n');
|
|
184
|
+
} else {
|
|
185
|
+
process.stdout.write(
|
|
186
|
+
`detect_target_license: detected ${detection.spdxId ?? '(none)'} -> ` +
|
|
187
|
+
`target_class=${detection.targetClass} workspace_scope=${detection.workspaceScope}\n`,
|
|
188
|
+
);
|
|
189
|
+
for (const w of detection.warnings) process.stdout.write(` warning: ${w}\n`);
|
|
190
|
+
for (const r of rejectedOverrides) process.stdout.write(` rejected override: ${r}\n`);
|
|
191
|
+
process.stdout.write(
|
|
192
|
+
willWrite
|
|
193
|
+
? `wrote ${policyPath} (${action})\n`
|
|
194
|
+
: `(dry run — pass --write to update ${policyPath}; action would be: ${action})\n`,
|
|
195
|
+
);
|
|
196
|
+
}
|
|
197
|
+
return 0;
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
if (process.argv[1] !== undefined) {
|
|
201
|
+
const invokedUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
202
|
+
if (import.meta.url === invokedUrl) process.exit(main());
|
|
203
|
+
}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# evaluator_umbrella.sh — the external evaluator's "first five minutes" as
|
|
3
|
+
# ONE suite over the PACKED artifact (road-to-credible-install Phase 6).
|
|
4
|
+
#
|
|
5
|
+
# Runs in a clean container (see .github/workflows/evaluator-umbrella.yml)
|
|
6
|
+
# on every release PR and nightly — never against the checkout's working
|
|
7
|
+
# tree: every check below exercises the tarball `npm pack` produces or the
|
|
8
|
+
# clean consumer install made from it.
|
|
9
|
+
#
|
|
10
|
+
# Checks (each individually red-testable via its own gate/tests):
|
|
11
|
+
# 1. audit gate npm audit --omit=dev --audit-level=high
|
|
12
|
+
# 2. tarball integrity publint + prepack script-target assertion
|
|
13
|
+
# (lifecycle gate: tests/scripts/prepack_lifecycle_check.test.ts)
|
|
14
|
+
# 3. headless install npm install --omit=dev <tarball> in a scratch project
|
|
15
|
+
# 4. staleness lints lint_pre_migration_refs (+ consumer-internal refs
|
|
16
|
+
# lint when present)
|
|
17
|
+
# 5. hook-latency bench bench_hook_latency --gate (budget + regression)
|
|
18
|
+
# 6. cold-start budgets CLI --version, mcp-server boot-to-initialize
|
|
19
|
+
# 7. size budgets unpacked, node_modules, dep count (>10% regression
|
|
20
|
+
# fails even under budget)
|
|
21
|
+
# 8. surface budgets CLI registry command count, MCP tools/list count
|
|
22
|
+
# (frozen post-Phase-3 values, ADR-132: 19)
|
|
23
|
+
# 9. npx smoke first-touch paths (--version, --help, mcp initialize)
|
|
24
|
+
# 6-8 feed src/scripts/check_evaluator_budgets.ts against
|
|
25
|
+
# src/config/evaluator-budgets.json (owner + review date lint-enforced).
|
|
26
|
+
#
|
|
27
|
+
# Usage: bash src/scripts/evaluator_umbrella.sh [--skip-pack <tarball>]
|
|
28
|
+
set -euo pipefail
|
|
29
|
+
|
|
30
|
+
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
|
|
31
|
+
cd "$ROOT"
|
|
32
|
+
|
|
33
|
+
TARBALL=""
|
|
34
|
+
if [[ "${1:-}" == "--skip-pack" && -n "${2:-}" ]]; then
|
|
35
|
+
TARBALL="$2"
|
|
36
|
+
fi
|
|
37
|
+
|
|
38
|
+
step() { printf '\n=== umbrella: %s ===\n' "$1"; }
|
|
39
|
+
|
|
40
|
+
# ---------------------------------------------------------------- 1. audit
|
|
41
|
+
step "npm audit (runtime deps, high+)"
|
|
42
|
+
npm audit --omit=dev --audit-level=high
|
|
43
|
+
|
|
44
|
+
# ------------------------------------------------------------- 2. pack + shape
|
|
45
|
+
if [[ -z "$TARBALL" ]]; then
|
|
46
|
+
step "npm pack (prepack chain: build + discovery + manifest + prepack-check)"
|
|
47
|
+
TARBALL="$(npm pack --silent | tail -1)"
|
|
48
|
+
else
|
|
49
|
+
step "using pre-packed tarball: $TARBALL"
|
|
50
|
+
fi
|
|
51
|
+
[[ -f "$TARBALL" ]] || { echo "❌ tarball missing: $TARBALL" >&2; exit 1; }
|
|
52
|
+
|
|
53
|
+
step "publint (published-package shape)"
|
|
54
|
+
npm run lint:publint --silent
|
|
55
|
+
|
|
56
|
+
# `--ignore-scripts` is NOT honoured for `prepare` by every npm version: on the
|
|
57
|
+
# node-20 container npm still runs it, and this repo's prepare installs the git
|
|
58
|
+
# hooks and prints a banner — straight into the `--json` stdout we parse. Slice
|
|
59
|
+
# from the first `[` so any lifecycle banner ahead of the payload is tolerated
|
|
60
|
+
# instead of turning into `SyntaxError: Unexpected token '✅'`.
|
|
61
|
+
UNPACKED_BYTES="$(npm pack --dry-run --json --ignore-scripts --silent 2>/dev/null \
|
|
62
|
+
| node -e 'let b="";process.stdin.on("data",c=>b+=c).on("end",()=>{const i=b.indexOf("[");const j=JSON.parse(i>=0?b.slice(i):b);console.log(j[0].unpackedSize)})')"
|
|
63
|
+
|
|
64
|
+
# ------------------------------------------------------- 3. headless install
|
|
65
|
+
step "headless consumer install from the tarball"
|
|
66
|
+
WORK="$(mktemp -d)"
|
|
67
|
+
trap 'rm -rf "$WORK"' EXIT
|
|
68
|
+
( cd "$WORK" && npm init -y >/dev/null 2>&1 \
|
|
69
|
+
&& npm install --omit=dev --no-audit --no-fund --silent "$ROOT/$TARBALL" )
|
|
70
|
+
PKG_DIR="$WORK/node_modules/@event4u/agent-config"
|
|
71
|
+
[[ -d "$PKG_DIR" ]] || { echo "❌ install did not produce the package dir" >&2; exit 1; }
|
|
72
|
+
|
|
73
|
+
# --------------------------------------------------------- 4. staleness lints
|
|
74
|
+
step "staleness lints (pre-migration refs)"
|
|
75
|
+
./scripts-run src/scripts/lint_pre_migration_refs
|
|
76
|
+
if [[ -f src/scripts/lint_consumer_internal_refs.ts ]]; then
|
|
77
|
+
./scripts-run src/scripts/lint_consumer_internal_refs
|
|
78
|
+
fi
|
|
79
|
+
|
|
80
|
+
# ------------------------------------------------------ 5. hook-latency bench
|
|
81
|
+
step "hook-latency bench (pre-registered budget gate)"
|
|
82
|
+
./scripts-run src/scripts/bench_hook_latency --gate
|
|
83
|
+
|
|
84
|
+
# ----------------------------------------------- 6-8. measured budget metrics
|
|
85
|
+
step "cold-start + size + surface measurements"
|
|
86
|
+
MEASURE_TMP="$WORK/measurements.json"
|
|
87
|
+
CLI_BIN="$WORK/node_modules/.bin/agent-config"
|
|
88
|
+
|
|
89
|
+
CLI_MS="$(node -e '
|
|
90
|
+
const {execFileSync}=require("node:child_process");
|
|
91
|
+
const t=Date.now();
|
|
92
|
+
execFileSync(process.argv[1],["--version"],{stdio:"ignore"});
|
|
93
|
+
console.log(Date.now()-t);' "$CLI_BIN")"
|
|
94
|
+
|
|
95
|
+
MCP_MS="$(node -e '
|
|
96
|
+
const {spawnSync}=require("node:child_process");
|
|
97
|
+
const t=Date.now();
|
|
98
|
+
const p=spawnSync("node",[process.argv[1]+"/dist/mcp/server.mjs"],{input:JSON.stringify({jsonrpc:"2.0",id:1,method:"initialize",params:{protocolVersion:"2024-11-05",capabilities:{},clientInfo:{name:"p",version:"0"}}})+"\n",encoding:"utf-8",timeout:30000});
|
|
99
|
+
if(!(p.stdout||"").includes("serverInfo")){console.error(p.stderr);process.exit(1)}
|
|
100
|
+
console.log(Date.now()-t);' "$PKG_DIR")"
|
|
101
|
+
|
|
102
|
+
NM_MB="$(du -sm "$WORK/node_modules" | awk '{print $1}')"
|
|
103
|
+
DEP_COUNT="$(node -e '
|
|
104
|
+
const j=require(process.argv[1]);
|
|
105
|
+
console.log(Object.keys(j.packages||{}).length-1);' "$WORK/package-lock.json")"
|
|
106
|
+
|
|
107
|
+
CLI_COUNT="$(node -e '
|
|
108
|
+
const fs=require("node:fs");
|
|
109
|
+
const t=fs.readFileSync(process.argv[1],"utf-8");
|
|
110
|
+
console.log((t.match(/\{ name: /g)||[]).length);' "$ROOT/src/cli/registry.ts")"
|
|
111
|
+
|
|
112
|
+
MCP_TOOLS="$(node -e '
|
|
113
|
+
const {spawnSync}=require("node:child_process");
|
|
114
|
+
const reqs=[{jsonrpc:"2.0",id:1,method:"initialize",params:{protocolVersion:"2024-11-05",capabilities:{},clientInfo:{name:"p",version:"0"}}},{jsonrpc:"2.0",method:"notifications/initialized"},{jsonrpc:"2.0",id:2,method:"tools/list"}];
|
|
115
|
+
const p=spawnSync("node",[process.argv[1]+"/dist/mcp/server.mjs"],{input:reqs.map(r=>JSON.stringify(r)).join("\n")+"\n",encoding:"utf-8",timeout:30000});
|
|
116
|
+
const lines=(p.stdout||"").trim().split("\n").map(l=>{try{return JSON.parse(l)}catch{return null}}).filter(Boolean);
|
|
117
|
+
const resp=lines.find(l=>l.id===2);
|
|
118
|
+
if(!resp||!resp.result||!Array.isArray(resp.result.tools)){console.error("no tools/list result");process.exit(1)}
|
|
119
|
+
console.log(resp.result.tools.length);' "$PKG_DIR")"
|
|
120
|
+
|
|
121
|
+
node -e '
|
|
122
|
+
const fs=require("node:fs");
|
|
123
|
+
const m={
|
|
124
|
+
unpacked_size_mb: Number(process.argv[2])/1e6,
|
|
125
|
+
node_modules_mb: Number(process.argv[3]),
|
|
126
|
+
runtime_dep_count: Number(process.argv[4]),
|
|
127
|
+
cli_version_cold_ms: Number(process.argv[5]),
|
|
128
|
+
mcp_boot_to_initialize_ms: Number(process.argv[6]),
|
|
129
|
+
cli_help_command_count: Number(process.argv[7]),
|
|
130
|
+
mcp_public_tool_count: Number(process.argv[8]),
|
|
131
|
+
};
|
|
132
|
+
fs.writeFileSync(process.argv[1], JSON.stringify(m, null, 2));
|
|
133
|
+
console.log(JSON.stringify(m, null, 1));' \
|
|
134
|
+
"$MEASURE_TMP" "$UNPACKED_BYTES" "$NM_MB" "$DEP_COUNT" "$CLI_MS" "$MCP_MS" "$CLI_COUNT" "$MCP_TOOLS"
|
|
135
|
+
|
|
136
|
+
step "budget gate (absolute + >regression_pct creep)"
|
|
137
|
+
./scripts-run src/scripts/check_evaluator_budgets --measurements "$MEASURE_TMP"
|
|
138
|
+
|
|
139
|
+
# ------------------------------------------------------------- 9. npx smoke
|
|
140
|
+
step "first-touch smoke (installed bin)"
|
|
141
|
+
"$CLI_BIN" --version >/dev/null
|
|
142
|
+
"$CLI_BIN" --help >/dev/null
|
|
143
|
+
|
|
144
|
+
echo
|
|
145
|
+
echo "✅ evaluator umbrella green — the first five minutes hold on the packed artifact."
|
|
@@ -57,7 +57,9 @@
|
|
|
57
57
|
"\\bskillui\\b",
|
|
58
58
|
"\\bgraphify\\b",
|
|
59
59
|
"graphify-labs",
|
|
60
|
-
"penpax"
|
|
60
|
+
"penpax",
|
|
61
|
+
"\\bagent-reach\\b",
|
|
62
|
+
"panniantong"
|
|
61
63
|
],
|
|
62
64
|
"skip_paths": [
|
|
63
65
|
"src/scripts/check_no_external_sources.py",
|
|
@@ -89,15 +91,17 @@
|
|
|
89
91
|
"agents/roadmaps/archive/road-to-final-state-and-market-readiness.md",
|
|
90
92
|
"agents/roadmaps/archive/road-to-image-brand-typography.md",
|
|
91
93
|
"agents/roadmaps/archive/road-to-subagent-value-realization.md",
|
|
92
|
-
"agents/roadmap-assets/road-to-image-brand-typography.assets.md"
|
|
94
|
+
"agents/roadmap-assets/road-to-image-brand-typography.assets.md",
|
|
95
|
+
"CREDITS.md",
|
|
96
|
+
"agents/roadmaps/archive/road-to-ecosystem-harvest-index.md"
|
|
93
97
|
],
|
|
94
98
|
"skip_reason": {
|
|
95
|
-
"vendored_cluster": "design-intelligence/corpus-grounding/design-tokens/react-shadcn-ui/tailwind-engineer + cost/*.mjs ship vendored Apache/MIT code; their upstream attribution is license-required and must NOT be stripped (ADR-061).",
|
|
99
|
+
"vendored_cluster": "design-intelligence/corpus-grounding/design-tokens/react-shadcn-ui/tailwind-engineer + cost/*.mjs ship vendored Apache/MIT code; their upstream attribution is license-required and must NOT be stripped (ADR-061). CREDITS.md is the repo-level attribution file FOR that same cluster — it names the upstreams because the licenses require it, which is the one case source-confidentiality explicitly exempts. It was missing here, so the gate flagged the very attribution the rule mandates.",
|
|
96
100
|
"recommendation_docs": "mcp.md, mcp-registries.md, DISTRIBUTION_CHECKLIST.md, ADR-086, marketing-copy.yml reference registries (Smithery/Glama) as recommendations/distribution targets — allowed.",
|
|
97
101
|
"generated_bundles": "content.json* bundle the vendored-cluster skill bodies above.",
|
|
98
102
|
"self": "the linter + its denylist + the source-confidentiality rule necessarily contain the deny tokens as data.",
|
|
99
103
|
"validate_safe_paths": "telegraph-derived (MIT) ported code; upstream attribution is license-required.",
|
|
100
|
-
"archived_roadmaps_newly_tracked": "Archived roadmaps (and their assets) that predate the source-confidentiality sweep became tracked via the 2026-07 agents-dir gitignore hygiene change. They are frozen historical records; the claudekit mentions are ADR-061 license-attribution work and the remaining names are historical planning references. New roadmaps stay subject to the gate."
|
|
104
|
+
"archived_roadmaps_newly_tracked": "Archived roadmaps (and their assets) that predate the source-confidentiality sweep became tracked via the 2026-07 agents-dir gitignore hygiene change. They are frozen historical records; the claudekit mentions are ADR-061 license-attribution work and the remaining names are historical planning references. New roadmaps stay subject to the gate. road-to-ecosystem-harvest-index.md is the sharpest case: the flagged line is its own acceptance criterion, 'No harvest-family artifact names a real external source' — it quotes the names in order to assert their absence, so the gate fires on the sentence that records the cleanup. road-to-opt-retrieval-and-memory.md was REMOVED from this list on 2026-07-28 (road-to-native-code-intelligence Phase 6): its two clear-text mentions named a gitignored borrow-catalogue inbox file, which carries no historical value that a neutral descriptor loses — so the mentions were rewritten and the exception retired rather than kept. Retiring an exception is preferred over holding one whenever the named token is not license-required attribution and not load-bearing for the record."
|
|
101
105
|
},
|
|
102
106
|
"_excluded_tokens": {
|
|
103
107
|
"agent-os": "collides with our own coined 'Agent-OS primitive' term (universal-skills) — too FP-prone to auto-deny; scrub external 'agent-os' mentions by review.",
|