@event4u/agent-config 9.8.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 +278 -298
- package/CONTRIBUTING.md +23 -7
- package/MIGRATION.md +20 -0
- package/README.md +55 -9
- 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/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/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/rules/code-provenance.md +112 -0
- package/dist/agent-src/rules/external-code-graph-interop.md +4 -4
- package/dist/agent-src/rules/history-discipline.md +80 -0
- package/dist/agent-src/rules/no-roadmap-references.md +1 -1
- package/dist/agent-src/rules/php-coding.md +1 -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 +7 -0
- package/dist/agent-src/rules/scale-discipline.md +92 -0
- package/dist/agent-src/rules/security-sensitive-stop.md +10 -0
- package/dist/agent-src/rules/session-canary.md +77 -0
- package/dist/agent-src/rules/token-optimizer-maintenance.md +1 -1
- package/dist/agent-src/rules/tool-safety.md +3 -1
- package/dist/agent-src/rules/untrusted-input-defense.md +10 -0
- package/dist/agent-src/skills/agent-security-review/SKILL.md +1 -1
- package/dist/agent-src/skills/code-intelligence/SKILL.md +17 -14
- 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/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-editing/SKILL.md +1 -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/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/secrets-management/SKILL.md +3 -4
- 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/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 +1 -1
- 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/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/firstRunNotice.js +70 -0
- package/dist/cli/firstRunNotice.js.map +1 -0
- package/dist/cli/main.js +35 -3
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/registry.js +7 -1
- package/dist/cli/registry.js.map +1 -1
- package/dist/discovery/deprecation-report.md +1 -1
- package/dist/discovery/discovery-manifest.json +362 -78
- 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 +90 -8
- package/dist/discovery/trust-report.md +11 -11
- package/dist/discovery/workspaces.json +31 -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 +775 -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 +4 -2
- 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 +14 -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 +4 -2
- package/dist/server/schemas/settings.js.map +1 -1
- 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 +2 -2
- package/docs/MIGRATION.md +16 -0
- package/docs/guidelines/component-oriented-and-oop-development.md +4 -2
- package/package.json +21 -11
- 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 +52 -14
- 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/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 +81 -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/fixtures/secret-detector/negatives.txt +5 -0
- package/src/scripts/_lib/fixtures/secret-detector/positives.txt +4 -0
- package/src/scripts/_lib/install_drift.ts +194 -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/rtk_allowlist.ts +44 -0
- package/src/scripts/_lib/secret_detector.test.ts +5 -0
- package/src/scripts/_lib/secret_detector.ts +9 -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/worker_budget.ts +107 -0
- 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_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 +45 -0
- package/src/scripts/chat_history.ts +8 -5
- package/src/scripts/check_backstop_debt.ts +23 -13
- package/src/scripts/check_bundle_path_leakage.ts +343 -0
- package/src/scripts/check_evaluator_budgets.ts +99 -0
- package/src/scripts/check_knowledge_sharing.ts +12 -1
- package/src/scripts/check_no_external_sources.ts +2 -2
- 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 +181 -9
- package/src/scripts/code_graph/detect.ts +52 -0
- package/src/scripts/code_graph/intent.ts +45 -0
- package/src/scripts/code_graph/query.ts +143 -29
- package/src/scripts/code_graph/sqlite_store.ts +174 -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 +5 -3
- package/src/scripts/first_run_gate_hook.ts +9 -5
- package/src/scripts/hermetic-install.sh +3 -3
- package/src/scripts/hook_manifest.yaml +55 -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 +11 -4
- 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/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 +74 -26
- 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/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/report_install_drift.ts +109 -0
- package/src/scripts/roadmap_progress_hook.ts +8 -5
- package/src/scripts/schemas/license-policy.schema.json +89 -0
- package/src/scripts/schemas/provenance-borrow.schema.json +46 -0
- package/src/scripts/schemas/rule.schema.json +10 -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/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/verify_before_complete_hook.ts +8 -5
- package/src/scripts/wrapper_freshness_hook.ts +8 -7
- package/src/server/schemas/settings.ts +8 -2
- package/dist/ui/assets/index-BPFMZWUs.css +0 -1
- package/dist/ui/assets/index-CrmZ34Rg.js +0 -40
- package/dist/ui/assets/index-CrmZ34Rg.js.map +0 -1
- package/docs/CLAIMS.md +0 -286
- 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 -785
- 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 -726
- package/docs/command-flows.md +0 -272
- package/docs/command-naming-audit.md +0 -60
- package/docs/comparison.yaml +0 -87
- 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/local-server-ports.md +0 -53
- 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 -74
- 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 -696
- 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 -191
- 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 -248
- package/docs/decisions/ADR-110-discipline-profile-resolution-locus.md +0 -112
- 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 -209
- 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-124-embedded-engine-doctrine.md +0 -255
- package/docs/decisions/ADR-125-doc-screenshot-anonymization.md +0 -131
- package/docs/decisions/ADR-126-internet-reach-operator-tooling.md +0 -254
- package/docs/decisions/ADR-127-enforcement-claims-must-resolve.md +0 -150
- package/docs/decisions/ADR-128-executable-evidence-and-measured-escalation.md +0 -201
- 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 -157
- package/docs/decisions/engine-reclassification-2026-07.md +0 -104
- 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 -126
- 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 -51
- 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/gated-platform-reads.md +0 -221
- 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 -252
- 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 -30
- 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
- package/src/scripts/postinstall_gui.ts +0 -129
|
@@ -7,18 +7,27 @@
|
|
|
7
7
|
* and had been, invisibly, because no workflow ran them. A rule declared a
|
|
8
8
|
* backstop; the backstop existed; the backstop was red; nothing said so.
|
|
9
9
|
*
|
|
10
|
-
* Those failures are pre-existing debt, not regressions from the wiring change,
|
|
11
|
-
* and fixing eleven framework-leakage spots plus eighteen source-confidentiality
|
|
12
|
-
* hits is a different piece of work with a different reviewer. Folding them in
|
|
13
|
-
* would make one PR unreviewable and would mix "make the gate run" with "clean up
|
|
14
|
-
* what the gate found".
|
|
15
|
-
*
|
|
16
10
|
* So the established pattern applies — the one the decision-homing work already
|
|
17
11
|
* uses and the council endorsed: **baseline the legacy, enforce the boundary.**
|
|
18
12
|
* Each gate's current finding count is committed. The count may fall freely; it
|
|
19
13
|
* may not rise. New violations fail, existing debt is visible and counted, and
|
|
20
14
|
* nothing is silently tolerated.
|
|
21
15
|
*
|
|
16
|
+
* **The baseline is now 0 across all five gates.** The 37 findings were cleared
|
|
17
|
+
* in a follow-up pass, so this file no longer records debt — it holds the line at
|
|
18
|
+
* zero. Keeping the ratchet after the cleanup is the point: it is what stops the
|
|
19
|
+
* counts creeping back, and the mechanism is identical whether the baseline is 37
|
|
20
|
+
* or 0.
|
|
21
|
+
*
|
|
22
|
+
* Worth recording, because it changes how the next such number should be read:
|
|
23
|
+
* roughly two thirds of the 37 were never violations. `CREDITS.md` was flagged
|
|
24
|
+
* for the license-required attribution that `source-confidentiality` explicitly
|
|
25
|
+
* exempts. A checklist row naming five ecosystems on ONE line read as
|
|
26
|
+
* PHP-specific because only the PHP family carried a plain-language window hint.
|
|
27
|
+
* An archived acceptance criterion was flagged for the source names it quotes in
|
|
28
|
+
* order to assert their absence. Wiring a gate proves that it runs; it does not
|
|
29
|
+
* prove its findings are real. That takes reading them one at a time.
|
|
30
|
+
*
|
|
22
31
|
* What this deliberately is NOT: a `continue-on-error` step. That is a WARN
|
|
23
32
|
* wearing a gate's clothes, and removing exactly that confusion is why this
|
|
24
33
|
* workflow exists.
|
|
@@ -112,12 +121,12 @@ function main(argv: string[]): number {
|
|
|
112
121
|
JSON.stringify(
|
|
113
122
|
{
|
|
114
123
|
_doc:
|
|
115
|
-
'
|
|
116
|
-
'
|
|
117
|
-
'
|
|
118
|
-
'
|
|
119
|
-
'
|
|
120
|
-
'is deliberate.',
|
|
124
|
+
'Per-gate finding counts for the rule backstops wired into CI by ' +
|
|
125
|
+
'rule-backstops.yml. Counts may FALL freely; a rise fails the build. These ' +
|
|
126
|
+
'gates were red on arrival (37 findings) because no workflow had ever run ' +
|
|
127
|
+
'them; that debt is now cleared and the baseline holds the line at 0. A ' +
|
|
128
|
+
'non-zero number here is a rule whose declared backstop is not currently ' +
|
|
129
|
+
'clean. Regenerate with --write-baseline only when the change is deliberate.',
|
|
121
130
|
gates: Object.fromEntries(measured.map((m) => [m.script, { rule: m.rule, findings: m.findings }])),
|
|
122
131
|
total: measured.reduce((a, m) => a + m.findings, 0),
|
|
123
132
|
},
|
|
@@ -172,7 +181,8 @@ function main(argv: string[]): number {
|
|
|
172
181
|
process.stderr.write('❌ rule-backstop debt ratchet:\n');
|
|
173
182
|
for (const r of regressions) process.stderr.write(` · ${r}\n`);
|
|
174
183
|
process.stderr.write(
|
|
175
|
-
'
|
|
184
|
+
' The baseline is 0 — these gates are clean, so a rise is a NEW violation, not inherited debt.\n' +
|
|
185
|
+
' Fix the finding, or re-baseline with --write-baseline if the change is deliberate.\n',
|
|
176
186
|
);
|
|
177
187
|
return 1;
|
|
178
188
|
}
|
|
@@ -0,0 +1,343 @@
|
|
|
1
|
+
#!/usr/bin/env tsx
|
|
2
|
+
/**
|
|
3
|
+
* Guard against build-machine path leakage in the tracked install bundle.
|
|
4
|
+
*
|
|
5
|
+
* road-to-feedback-9.2.0-followups Phase 4.1. Three 9.1 commits
|
|
6
|
+
* (f8752443b, 5933bf1a9, f30adb5a1) each rebuilt `dist/install/install.mjs`
|
|
7
|
+
* solely to strip a leaked build-environment path esbuild had baked into its
|
|
8
|
+
* per-module `// <path>` boundary comments: a worktree-relative `../../../
|
|
9
|
+
* node_modules/...` hop, a repo-relative `../agent-config/node_modules/...`
|
|
10
|
+
* hop, and a full `/Users/<name>/.../node_modules/...` absolute path. Each
|
|
11
|
+
* fix was a manual rebuild-and-diff after the fact; this guard makes the
|
|
12
|
+
* class fail the build instead, so a future leak cannot merge silently.
|
|
13
|
+
*
|
|
14
|
+
* Every pattern below is scoped to avoid flagging legitimate bundle content:
|
|
15
|
+
* the bundle's own emitted runtime strings use relative forms only (e.g.
|
|
16
|
+
* `"./node_modules/@event4u/agent-config/plugin/agent-config"`, a real
|
|
17
|
+
* consumer-facing plugin-manifest path), and esbuild's per-module registry
|
|
18
|
+
* keys are bare `node_modules/<pkg>/...` (no leading `/` or `../`) — neither
|
|
19
|
+
* shape trips any pattern here.
|
|
20
|
+
*
|
|
21
|
+
* - `macos-linux-home` — absolute `/Users/<name>/…` or
|
|
22
|
+
* `/home/<name>/…`, i.e. a real machine's home directory. Requires at
|
|
23
|
+
* least one path segment after the username so a bare `/Users/` or
|
|
24
|
+
* `/home/` mention (unlikely, but not impossible in prose) does not
|
|
25
|
+
* match on its own.
|
|
26
|
+
* - `private-or-opt-root` — an absolute `/private/…` (macOS's
|
|
27
|
+
* `/var` → `/private/var` realpath) or `/opt/…` (common CI-runner tool
|
|
28
|
+
* root, e.g. GitHub Actions' hostedtoolcache) path.
|
|
29
|
+
* - `windows-drive` — an absolute Windows path (`C:\…`).
|
|
30
|
+
* - `worktree-path` — a `.claude/worktrees/…` path. This
|
|
31
|
+
* package's own git-worktree convention (`worktree-lifecycle` skill) —
|
|
32
|
+
* it can never legitimately appear in a shipped consumer artifact.
|
|
33
|
+
* - `parent-relative-node-modules` — any `../`-escaping path that reaches
|
|
34
|
+
* a `node_modules/` directory, however many hops or intermediate
|
|
35
|
+
* segments (`../../../node_modules/…`, `../agent-config/node_modules/…`).
|
|
36
|
+
* A legitimate bundled module reference never needs to climb out of the
|
|
37
|
+
* repo root via string literals — node's own resolution algorithm
|
|
38
|
+
* handles that internally, not via baked-in `../` path text.
|
|
39
|
+
* - `absolute-node-modules` — any OTHER absolute path (not already
|
|
40
|
+
* caught by the three rules above) reaching a `node_modules/` directory.
|
|
41
|
+
* The negative lookbehind excludes `./node_modules/…` and mid-identifier
|
|
42
|
+
* slashes so a legitimate relative reference is never flagged.
|
|
43
|
+
* - `absolute-sourcemap` — a `sourceMappingURL=` comment pointing
|
|
44
|
+
* at an absolute path instead of a bundle-relative filename (the shape
|
|
45
|
+
* `.map` files should always use — see `dist/install/*.js.map`, whose
|
|
46
|
+
* `sources` field is repo-relative, e.g. `../../src/install/atomic.ts`).
|
|
47
|
+
*
|
|
48
|
+
* Usage:
|
|
49
|
+
* tsx src/scripts/check_bundle_path_leakage.ts
|
|
50
|
+
* tsx src/scripts/check_bundle_path_leakage.ts --quiet
|
|
51
|
+
* tsx src/scripts/check_bundle_path_leakage.ts <file> [<file> ...]
|
|
52
|
+
*
|
|
53
|
+
* Exit codes: 0 = clean, 1 = leak found, 2 = usage error.
|
|
54
|
+
*/
|
|
55
|
+
import { spawnSync } from 'node:child_process';
|
|
56
|
+
import * as fs from 'node:fs';
|
|
57
|
+
import * as path from 'node:path';
|
|
58
|
+
import { fileURLToPath, pathToFileURL } from 'node:url';
|
|
59
|
+
|
|
60
|
+
const _HERE = fileURLToPath(import.meta.url);
|
|
61
|
+
const REPO = path.resolve(path.dirname(_HERE), '..', '..');
|
|
62
|
+
|
|
63
|
+
// Tracked directories that may hold a build-generated bundle. Only
|
|
64
|
+
// `dist/install/` is force-included in `.gitignore` today (`!/dist/install/`);
|
|
65
|
+
// `dist/hooks/` and `dist/mcp/` are listed defensively in case a future
|
|
66
|
+
// change tracks them too — `git ls-files` on an untracked directory returns
|
|
67
|
+
// nothing, so listing an as-yet-untracked root here is always safe.
|
|
68
|
+
const BUNDLE_ROOTS: readonly string[] = ['dist/install', 'dist/hooks', 'dist/mcp'];
|
|
69
|
+
|
|
70
|
+
interface LeakPattern {
|
|
71
|
+
readonly name: string;
|
|
72
|
+
readonly re: RegExp;
|
|
73
|
+
readonly hint: string;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
// Every regex carries the `g` flag (all hits scanned, not just the first)
|
|
77
|
+
// and excludes `\s'"` )` from its "rest of the path" class so a match never
|
|
78
|
+
// swallows past the end of a quoted string / comment / parenthesized call.
|
|
79
|
+
const LEAK_PATTERNS: readonly LeakPattern[] = [
|
|
80
|
+
{
|
|
81
|
+
name: 'macos-linux-home',
|
|
82
|
+
re: /\/(?:Users|home)\/[^/\s'"`)]+\/[^\s'"`)]*/g,
|
|
83
|
+
hint: 'rebuild from a clean, non-worktree checkout after a fresh `npm ci`',
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
name: 'private-or-opt-root',
|
|
87
|
+
re: /(?:^|[^\w.])\/(?:private|opt)\/[^\s'"`)]*/g,
|
|
88
|
+
hint: 'rebuild in a plain (non-macOS-symlinked, non-CI-tool-cache) tree',
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
name: 'windows-drive',
|
|
92
|
+
re: /\b[A-Za-z]:\\[^\s'"`)]*/g,
|
|
93
|
+
hint: 'rebuild on a POSIX runner — the published bundle must not carry a Windows path',
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
name: 'worktree-path',
|
|
97
|
+
re: /\.claude\/worktrees\/[^\s'"`)]*/g,
|
|
98
|
+
hint: 'rebuild from the primary checkout, not a `.claude/worktrees/` git worktree',
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
name: 'parent-relative-node-modules',
|
|
102
|
+
re: /\.\.\/(?:[^\s'"`)]*\/)*node_modules\//g,
|
|
103
|
+
hint: 'esbuild resolved a dependency outside the repo root (foreign/symlinked node_modules) — rebuild after `npm ci` inside the repo',
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
name: 'absolute-node-modules',
|
|
107
|
+
re: /(?<![.\w/])\/(?:[^\s'"`)]*\/)*node_modules\//g,
|
|
108
|
+
hint: 'an absolute path reached a node_modules directory — rebuild from a repo-relative tree',
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
name: 'absolute-sourcemap',
|
|
112
|
+
re: /sourceMappingURL=(?:\/|[A-Za-z]:\\)[^\s'"`)]*/g,
|
|
113
|
+
hint: 'the sourcemap comment must reference a bundle-relative filename, not an absolute path',
|
|
114
|
+
},
|
|
115
|
+
];
|
|
116
|
+
|
|
117
|
+
interface Hit {
|
|
118
|
+
readonly file: string;
|
|
119
|
+
readonly pattern: string;
|
|
120
|
+
readonly line: number;
|
|
121
|
+
readonly snippet: string;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
const MAX_SNIPPET = 140;
|
|
125
|
+
const MAX_HITS_SHOWN_PER_GROUP = 5;
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* Redact the username segment of a `/Users/<name>/…`, `/home/<name>/…`, or
|
|
129
|
+
* `C:\Users\<name>\…` match before it reaches a log line — the machine
|
|
130
|
+
* username is incidental PII, not the point of the finding (the finding is
|
|
131
|
+
* "an absolute path leaked", not "whose machine it was").
|
|
132
|
+
*/
|
|
133
|
+
function mask_snippet(raw: string): string {
|
|
134
|
+
const masked = raw
|
|
135
|
+
.replace(/(\/(?:Users|home)\/)[^/\s'"`)]+/, '$1<masked>')
|
|
136
|
+
.replace(/(:\\Users\\)[^\\'"`)]+/i, '$1<masked>');
|
|
137
|
+
return masked.length > MAX_SNIPPET ? `${masked.slice(0, MAX_SNIPPET)}…` : masked;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
/** 1-based line number of a character offset, mirroring the other check_* scripts' style. */
|
|
141
|
+
function line_of(text: string, index: number): number {
|
|
142
|
+
let line = 1;
|
|
143
|
+
for (let i = 0; i < index; i += 1) {
|
|
144
|
+
if (text.charCodeAt(i) === 0x0a) line += 1;
|
|
145
|
+
}
|
|
146
|
+
return line;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* Pure scan core: every pattern hit in `content`, tagged with the (already
|
|
151
|
+
* relative) file path the caller supplies. No filesystem or git access —
|
|
152
|
+
* tests drive this directly with synthetic strings.
|
|
153
|
+
*/
|
|
154
|
+
function scan_content(relPath: string, content: string): Hit[] {
|
|
155
|
+
const hits: Hit[] = [];
|
|
156
|
+
for (const pattern of LEAK_PATTERNS) {
|
|
157
|
+
pattern.re.lastIndex = 0;
|
|
158
|
+
let m: RegExpExecArray | null;
|
|
159
|
+
while ((m = pattern.re.exec(content))) {
|
|
160
|
+
hits.push({
|
|
161
|
+
file: relPath,
|
|
162
|
+
pattern: pattern.name,
|
|
163
|
+
line: line_of(content, m.index),
|
|
164
|
+
snippet: mask_snippet(m[0]),
|
|
165
|
+
});
|
|
166
|
+
// Zero-width safety net (none of the patterns above can match
|
|
167
|
+
// empty, but this mirrors the other check_* scripts' loop guard).
|
|
168
|
+
if (pattern.re.lastIndex === m.index) pattern.re.lastIndex += 1;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
return hits;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
function _git(args: readonly string[]): string {
|
|
175
|
+
const res = spawnSync('git', [...args], {
|
|
176
|
+
cwd: REPO,
|
|
177
|
+
encoding: 'utf-8',
|
|
178
|
+
maxBuffer: 256 * 1024 * 1024,
|
|
179
|
+
});
|
|
180
|
+
return res.stdout ?? '';
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
function _splitlines(text: string): string[] {
|
|
184
|
+
return text.split('\n').filter((l) => l.length > 0);
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
/** Every tracked path under the bundle roots, deduped and sorted. */
|
|
188
|
+
function tracked_bundle_files(): string[] {
|
|
189
|
+
const seen = new Set<string>();
|
|
190
|
+
for (const root of BUNDLE_ROOTS) {
|
|
191
|
+
for (const rel of _splitlines(_git(['ls-files', root]))) {
|
|
192
|
+
seen.add(rel);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
return [...seen].sort();
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
/**
|
|
199
|
+
* Scan one file from disk. Binary / non-UTF-8 content is skipped (a bundle
|
|
200
|
+
* artifact is always text; a decode failure means this isn't one).
|
|
201
|
+
*/
|
|
202
|
+
function scan_file(relPath: string): Hit[] {
|
|
203
|
+
// `--file` args accept both repo-relative (the `git ls-files` default
|
|
204
|
+
// target list) and absolute paths (ad hoc / test use) — never silently
|
|
205
|
+
// resolve an already-absolute path underneath REPO.
|
|
206
|
+
const abs = path.isAbsolute(relPath) ? relPath : path.join(REPO, relPath);
|
|
207
|
+
let text: string;
|
|
208
|
+
try {
|
|
209
|
+
text = new TextDecoder('utf-8', { fatal: true }).decode(fs.readFileSync(abs));
|
|
210
|
+
} catch {
|
|
211
|
+
return [];
|
|
212
|
+
}
|
|
213
|
+
return scan_content(relPath, text);
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
function scan_files(relPaths: readonly string[]): Hit[] {
|
|
217
|
+
const hits: Hit[] = [];
|
|
218
|
+
for (const rel of relPaths) hits.push(...scan_file(rel));
|
|
219
|
+
return hits;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
function format_report(hits: readonly Hit[]): string {
|
|
223
|
+
const groups = new Map<string, Hit[]>();
|
|
224
|
+
for (const hit of hits) {
|
|
225
|
+
const key = `${hit.file}::${hit.pattern}`;
|
|
226
|
+
const group = groups.get(key);
|
|
227
|
+
if (group) group.push(hit);
|
|
228
|
+
else groups.set(key, [hit]);
|
|
229
|
+
}
|
|
230
|
+
const lines: string[] = [
|
|
231
|
+
'❌ check_bundle_path_leakage: build-machine path leakage in the tracked bundle:',
|
|
232
|
+
];
|
|
233
|
+
for (const [key, group] of groups) {
|
|
234
|
+
const [file, patternName] = key.split('::') as [string, string];
|
|
235
|
+
const pattern = LEAK_PATTERNS.find((p) => p.name === patternName);
|
|
236
|
+
lines.push(` ${file} [${patternName}] (${group.length} occurrence(s))`);
|
|
237
|
+
for (const hit of group.slice(0, MAX_HITS_SHOWN_PER_GROUP)) {
|
|
238
|
+
lines.push(` line ${hit.line}: ${hit.snippet}`);
|
|
239
|
+
}
|
|
240
|
+
if (group.length > MAX_HITS_SHOWN_PER_GROUP) {
|
|
241
|
+
lines.push(` (+${group.length - MAX_HITS_SHOWN_PER_GROUP} more)`);
|
|
242
|
+
}
|
|
243
|
+
if (pattern) lines.push(` → ${pattern.hint}`);
|
|
244
|
+
}
|
|
245
|
+
return lines.join('\n');
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
interface Options {
|
|
249
|
+
quiet: boolean;
|
|
250
|
+
files: string[];
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
/** Thrown instead of calling `process.exit` directly, so `main()` stays testable. */
|
|
254
|
+
class ExitCode extends Error {
|
|
255
|
+
code: number;
|
|
256
|
+
constructor(code: number) {
|
|
257
|
+
super(`exit ${code}`);
|
|
258
|
+
this.code = code;
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
function parse_args(argv: readonly string[]): Options {
|
|
263
|
+
const opts: Options = { quiet: false, files: [] };
|
|
264
|
+
for (const arg of argv) {
|
|
265
|
+
if (arg === '--quiet') {
|
|
266
|
+
opts.quiet = true;
|
|
267
|
+
} else if (arg === '-h' || arg === '--help') {
|
|
268
|
+
process.stdout.write(
|
|
269
|
+
'usage: check_bundle_path_leakage.ts [--quiet] [<file> ...]\n',
|
|
270
|
+
);
|
|
271
|
+
throw new ExitCode(0);
|
|
272
|
+
} else if (arg.startsWith('--')) {
|
|
273
|
+
process.stderr.write(
|
|
274
|
+
`❌ check_bundle_path_leakage: unrecognized argument: ${arg}\n`,
|
|
275
|
+
);
|
|
276
|
+
throw new ExitCode(2);
|
|
277
|
+
} else {
|
|
278
|
+
opts.files.push(arg);
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
return opts;
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
function main(argv: readonly string[] = process.argv.slice(2)): number {
|
|
285
|
+
const opts = parse_args(argv);
|
|
286
|
+
const targets = opts.files.length > 0 ? opts.files : tracked_bundle_files();
|
|
287
|
+
const hits = scan_files(targets);
|
|
288
|
+
|
|
289
|
+
if (hits.length > 0) {
|
|
290
|
+
process.stderr.write(`${format_report(hits)}\n`);
|
|
291
|
+
return 1;
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
if (!opts.quiet) {
|
|
295
|
+
process.stdout.write(
|
|
296
|
+
`✅ check_bundle_path_leakage: no build-machine path leakage ` +
|
|
297
|
+
`(${targets.length} tracked bundle file(s) scanned).\n`,
|
|
298
|
+
);
|
|
299
|
+
}
|
|
300
|
+
return 0;
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
function _isCliEntry(): boolean {
|
|
304
|
+
if (process.argv[1] === undefined) return false;
|
|
305
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
306
|
+
if (import.meta.url === argvUrl) return true;
|
|
307
|
+
try {
|
|
308
|
+
const here = fs.realpathSync(fileURLToPath(import.meta.url));
|
|
309
|
+
const argv = fs.realpathSync(path.resolve(process.argv[1]));
|
|
310
|
+
return here === argv;
|
|
311
|
+
} catch {
|
|
312
|
+
return false;
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
if (_isCliEntry() || process.argv[1] === _HERE) {
|
|
317
|
+
try {
|
|
318
|
+
process.exit(main());
|
|
319
|
+
} catch (exc) {
|
|
320
|
+
if (exc instanceof ExitCode) {
|
|
321
|
+
process.exit(exc.code);
|
|
322
|
+
}
|
|
323
|
+
throw exc;
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
export {
|
|
328
|
+
REPO,
|
|
329
|
+
BUNDLE_ROOTS,
|
|
330
|
+
LEAK_PATTERNS,
|
|
331
|
+
MAX_SNIPPET,
|
|
332
|
+
MAX_HITS_SHOWN_PER_GROUP,
|
|
333
|
+
mask_snippet,
|
|
334
|
+
scan_content,
|
|
335
|
+
scan_file,
|
|
336
|
+
scan_files,
|
|
337
|
+
tracked_bundle_files,
|
|
338
|
+
format_report,
|
|
339
|
+
parse_args,
|
|
340
|
+
main,
|
|
341
|
+
ExitCode,
|
|
342
|
+
};
|
|
343
|
+
export type { Hit, LeakPattern, Options };
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
#!/usr/bin/env tsx
|
|
2
|
+
/**
|
|
3
|
+
* check_evaluator_budgets — enforce the outside-in evaluator budgets
|
|
4
|
+
* (road-to-credible-install Phase 6) against a measurements JSON.
|
|
5
|
+
*
|
|
6
|
+
* Two failure modes per metric:
|
|
7
|
+
* 1. absolute: measured > budgets[metric].max
|
|
8
|
+
* 2. regression: measured > last_measured * (1 + regression_pct/100)
|
|
9
|
+
* — fails EVEN WHEN still under the absolute budget (the >10%
|
|
10
|
+
* creep rule), so slow rot cannot hide under a generous cap.
|
|
11
|
+
*
|
|
12
|
+
* Usage:
|
|
13
|
+
* ./scripts-run src/scripts/check_evaluator_budgets --measurements <file.json>
|
|
14
|
+
* (measurements: flat { metric: number } — produced by evaluator_umbrella.sh)
|
|
15
|
+
*
|
|
16
|
+
* Exit codes: 0 green · 1 budget/regression exceeded · 2 internal error.
|
|
17
|
+
*/
|
|
18
|
+
import * as fs from 'node:fs';
|
|
19
|
+
import * as path from 'node:path';
|
|
20
|
+
import { fileURLToPath } from 'node:url';
|
|
21
|
+
|
|
22
|
+
const REPO_ROOT = path.resolve(fileURLToPath(import.meta.url), '..', '..', '..');
|
|
23
|
+
const BUDGETS_PATH = path.join(REPO_ROOT, 'src', 'config', 'evaluator-budgets.json');
|
|
24
|
+
|
|
25
|
+
interface BudgetEntry {
|
|
26
|
+
max: number;
|
|
27
|
+
last_measured: number;
|
|
28
|
+
method: string;
|
|
29
|
+
/** Per-metric creep override — wall-clock timings get a loose one
|
|
30
|
+
* (absolute cap is their real gate); sizes/counts keep the tight
|
|
31
|
+
* global default. */
|
|
32
|
+
regression_pct?: number;
|
|
33
|
+
}
|
|
34
|
+
interface BudgetsDoc {
|
|
35
|
+
regression_pct: number;
|
|
36
|
+
budgets: Record<string, BudgetEntry>;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export function evaluate(
|
|
40
|
+
budgetsDoc: BudgetsDoc,
|
|
41
|
+
measurements: Record<string, number>,
|
|
42
|
+
): string[] {
|
|
43
|
+
const errors: string[] = [];
|
|
44
|
+
for (const [metric, entry] of Object.entries(budgetsDoc.budgets)) {
|
|
45
|
+
const measured = measurements[metric];
|
|
46
|
+
if (measured === undefined || Number.isNaN(measured)) {
|
|
47
|
+
errors.push(`${metric}: no measurement supplied (method: ${entry.method})`);
|
|
48
|
+
continue;
|
|
49
|
+
}
|
|
50
|
+
if (measured > entry.max) {
|
|
51
|
+
errors.push(`${metric}: measured ${measured} exceeds budget ${entry.max}`);
|
|
52
|
+
continue;
|
|
53
|
+
}
|
|
54
|
+
const pct = entry.regression_pct ?? budgetsDoc.regression_pct;
|
|
55
|
+
const ceiling = entry.last_measured * (1 + pct / 100);
|
|
56
|
+
if (entry.last_measured > 0 && measured > ceiling) {
|
|
57
|
+
errors.push(
|
|
58
|
+
`${metric}: measured ${measured} regressed >${pct}% vs ` +
|
|
59
|
+
`last_measured ${entry.last_measured} (ceiling ${ceiling.toFixed(2)}) — ` +
|
|
60
|
+
'fails even under the absolute budget',
|
|
61
|
+
);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return errors;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
export function main(argv: string[] = process.argv.slice(2)): number {
|
|
68
|
+
const idx = argv.indexOf('--measurements');
|
|
69
|
+
if (idx < 0 || argv[idx + 1] === undefined) {
|
|
70
|
+
process.stderr.write('usage: check_evaluator_budgets --measurements <file.json>\n');
|
|
71
|
+
return 2;
|
|
72
|
+
}
|
|
73
|
+
let budgetsDoc: BudgetsDoc;
|
|
74
|
+
let measurements: Record<string, number>;
|
|
75
|
+
try {
|
|
76
|
+
budgetsDoc = JSON.parse(fs.readFileSync(BUDGETS_PATH, 'utf-8')) as BudgetsDoc;
|
|
77
|
+
measurements = JSON.parse(fs.readFileSync(argv[idx + 1] as string, 'utf-8')) as Record<
|
|
78
|
+
string,
|
|
79
|
+
number
|
|
80
|
+
>;
|
|
81
|
+
} catch (e) {
|
|
82
|
+
process.stderr.write(`check_evaluator_budgets: ${(e as Error).message}\n`);
|
|
83
|
+
return 2;
|
|
84
|
+
}
|
|
85
|
+
const errors = evaluate(budgetsDoc, measurements);
|
|
86
|
+
if (errors.length > 0) {
|
|
87
|
+
for (const e of errors) process.stderr.write(`❌ evaluator budget: ${e}\n`);
|
|
88
|
+
return 1;
|
|
89
|
+
}
|
|
90
|
+
process.stdout.write(
|
|
91
|
+
`✅ evaluator budgets met (${Object.keys(budgetsDoc.budgets).length} metrics)\n`,
|
|
92
|
+
);
|
|
93
|
+
return 0;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
const _selfPath = fileURLToPath(import.meta.url);
|
|
97
|
+
if (process.argv[1] !== undefined && path.resolve(process.argv[1]) === path.resolve(_selfPath)) {
|
|
98
|
+
process.exit(main());
|
|
99
|
+
}
|
|
@@ -66,8 +66,19 @@ export function checkSharing(staged: StagedFile[], readContent: (path: string) =
|
|
|
66
66
|
const blocked: string[] = [];
|
|
67
67
|
const warnings: string[] = [];
|
|
68
68
|
|
|
69
|
+
// The intake DIRECTORY SKELETON is tracked so the write path exists on a
|
|
70
|
+
// fresh clone (road-to-reachable-code-memory Phase 4); only the signal
|
|
71
|
+
// CONTENT (JSONL etc.) is local scratch that must never be committed.
|
|
72
|
+
const INTAKE_SKELETON = new Set([
|
|
73
|
+
'agents/memory/intake/.gitkeep',
|
|
74
|
+
'agents/memory/intake/README.md',
|
|
75
|
+
'agents/knowledge/intake/.gitkeep',
|
|
76
|
+
'agents/knowledge/intake/README.md',
|
|
77
|
+
]);
|
|
69
78
|
const intakeFiles = staged.filter(
|
|
70
|
-
(f) =>
|
|
79
|
+
(f) =>
|
|
80
|
+
(f.path.startsWith('agents/memory/intake/') || f.path.startsWith('agents/knowledge/intake/')) &&
|
|
81
|
+
!INTAKE_SKELETON.has(f.path),
|
|
71
82
|
);
|
|
72
83
|
for (const f of intakeFiles) {
|
|
73
84
|
blocked.push(`${f.path}: gitignored intake staged — intake is local scratch, never committed`);
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
* - Vendored Apache/MIT code keeps its license-required attribution.
|
|
22
22
|
* - Recommendation/registry docs may name registries (Smithery/Glama).
|
|
23
23
|
* - A retained source link must be stored encrypted via
|
|
24
|
-
* src/scripts/_lib/link_crypto.
|
|
24
|
+
* src/scripts/_lib/link_crypto.ts, never in plaintext.
|
|
25
25
|
*
|
|
26
26
|
* Exit codes: 0 = clean, 1 = at least one denied token in a non-skipped tracked
|
|
27
27
|
* file, 2 = usage / config error.
|
|
@@ -318,7 +318,7 @@ function main(argv: readonly string[]): number {
|
|
|
318
318
|
process.stdout.write(
|
|
319
319
|
'\nThese name an external inspiration/harvest source. Remove the name,\n' +
|
|
320
320
|
'or — if a real source link must be retained — encrypt it via\n' +
|
|
321
|
-
'src/scripts/_lib/link_crypto.
|
|
321
|
+
'src/scripts/_lib/link_crypto.ts. Legitimate carve-outs (vendored code,\n' +
|
|
322
322
|
'registry recommendations) belong in external_sources_denylist.json\n' +
|
|
323
323
|
'skip_paths. See rule: source-confidentiality.\n',
|
|
324
324
|
);
|
|
@@ -17,9 +17,12 @@
|
|
|
17
17
|
* genuinely-historical line inside an allowlisted file is exempted with an
|
|
18
18
|
* inline `<!-- pointer-freshness: historical -->` marker.
|
|
19
19
|
*
|
|
20
|
-
* Extend AUTHORING_FILES as the broader `.agent-src.uncondensed` cleanup lands
|
|
21
|
-
*
|
|
22
|
-
*
|
|
20
|
+
* Extend AUTHORING_FILES as the broader `.agent-src.uncondensed` cleanup lands.
|
|
21
|
+
* road-to-retire-stale-authoring-pointers (2026-07-28) migrated the stale
|
|
22
|
+
* *authoring-source* pointers (43 `.md` lines) to `src/` and added the now
|
|
23
|
+
* token-free files here; the remaining `.agent-src.uncondensed/` references in
|
|
24
|
+
* `src/` are live code constants / pipeline descriptions / catalog paths that
|
|
25
|
+
* are correct and must stay (not authoring pointers).
|
|
23
26
|
*
|
|
24
27
|
* Exit codes: 0 = clean, 1 = a retired pointer in an allowlisted authoring
|
|
25
28
|
* file, 2 = usage / self-test failure.
|
|
@@ -41,8 +44,30 @@ const ROOT = path.resolve(path.dirname(_HERE), '..', '..');
|
|
|
41
44
|
// name the retired `.agent-src.uncondensed/` tree as current. Extend as the
|
|
42
45
|
// broader cleanup lands.
|
|
43
46
|
const AUTHORING_FILES: readonly string[] = [
|
|
47
|
+
// Seeded by #989 (the source-of-truth README + thin-root skill).
|
|
44
48
|
'src/agent-src/README.md',
|
|
45
49
|
'src/skills/agents-md-thin-root/SKILL.md',
|
|
50
|
+
// Added by road-to-retire-stale-authoring-pointers (2026-07-28): files whose
|
|
51
|
+
// stale "edit `.agent-src.uncondensed/`" authoring pointers were migrated to
|
|
52
|
+
// `src/` and are now token-free — locking them against regression. Files that
|
|
53
|
+
// retain legitimate `.agent-src.uncondensed/` references (pipeline
|
|
54
|
+
// descriptions, catalog-asset paths, validator_ignore config, fenced code)
|
|
55
|
+
// are intentionally NOT listed — they are guarded behaviorally by the
|
|
56
|
+
// downstream-changes § Doc-Impact rule, not by this any-occurrence scan.
|
|
57
|
+
'src/agent-src/templates/persona.md',
|
|
58
|
+
'src/domains/ai-video/image/command.md',
|
|
59
|
+
'src/domains/ai-video/video/command.md',
|
|
60
|
+
'src/domains/engineering-base/fix/portability/command.md',
|
|
61
|
+
'src/domains/engineering-base/fix/refs/command.md',
|
|
62
|
+
'src/domains/gtm-marketing/post-as/command.md',
|
|
63
|
+
'src/domains/meta/agents/command.md',
|
|
64
|
+
'src/domains/meta/agents/user/command.md',
|
|
65
|
+
'src/domains/meta/optimize/augmentignore/command.md',
|
|
66
|
+
'src/domains/product-basic/roadmap/ai-council/command.md',
|
|
67
|
+
'src/domains/product-discovery/research/command.md',
|
|
68
|
+
'src/skills/md-language-check/SKILL.md',
|
|
69
|
+
'src/skills/override-management/SKILL.md',
|
|
70
|
+
'src/skills/rule-refactor/SKILL.md',
|
|
46
71
|
];
|
|
47
72
|
|
|
48
73
|
// Retired source-of-truth pointer. Matches both the bare token and the older
|
|
Binary file
|