@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
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
# Divergence: check_memory
|
|
2
|
-
|
|
3
|
-
## Script
|
|
4
|
-
|
|
5
|
-
- Python: `src/scripts/check_memory.py`
|
|
6
|
-
- TypeScript: `src/scripts/check_memory.ts`
|
|
7
|
-
|
|
8
|
-
## Symptom
|
|
9
|
-
|
|
10
|
-
Two byte-level mismatches, both confined to paths that depend on external
|
|
11
|
-
behaviour the TS port cannot reproduce in-language:
|
|
12
|
-
|
|
13
|
-
### 1. YAML-parse-error class name (`--path`, malformed `.yml`)
|
|
14
|
-
|
|
15
|
-
When a `.yml` file fails to parse, the finding message ends with the parser's
|
|
16
|
-
exception class name:
|
|
17
|
-
|
|
18
|
-
- **Python output:** `YAML parse error: ScannerError` (or `ParserError`,
|
|
19
|
-
`ComposerError`, … — whatever PyYAML's scanner/parser raised for the input)
|
|
20
|
-
- **TS output:** `YAML parse error: YAMLError` (constant)
|
|
21
|
-
- Affected channel(s): stdout (text + json `message` field)
|
|
22
|
-
|
|
23
|
-
### 2. `--shadow-report` backend label
|
|
24
|
-
|
|
25
|
-
- **Python output:** `Shadow report — backend: misconfigured` (or whatever
|
|
26
|
-
`scripts.memory_status.status` returns at runtime), with real per-type
|
|
27
|
-
hit/shadow counts pulled from `scripts.memory_lookup.retrieve`.
|
|
28
|
-
- **TS output:** `Shadow report — backend: unknown`, all per-type counts 0.
|
|
29
|
-
- Affected channel(s): stdout (text + json `backend` / `per_type` fields)
|
|
30
|
-
|
|
31
|
-
## Root cause
|
|
32
|
-
|
|
33
|
-
### 1. YAML-parse-error class name
|
|
34
|
-
|
|
35
|
-
The Python original catches `except Exception as exc` and renders
|
|
36
|
-
`exc.__class__.__name__`. PyYAML's scanner/parser raises specific subclasses
|
|
37
|
-
(`ScannerError`, `ParserError`, `ComposerError`, `ConstructorError`) chosen by
|
|
38
|
-
its hand-written state machine. The TypeScript port uses the `yaml` npm
|
|
39
|
-
package, whose error taxonomy is structurally different (`YAMLParseError` with
|
|
40
|
-
`code` values like `BAD_INDENT`, `BAD_SCALAR_START`, `TAB_AS_INDENT`,
|
|
41
|
-
`DUPLICATE_KEY`). The two classifiers disagree even on which *phase* the error
|
|
42
|
-
belongs to — e.g. an unquoted backtick scalar is a `ScannerError` in PyYAML
|
|
43
|
-
but is first reported as `BAD_INDENT` by `yaml`. Reproducing PyYAML's exact
|
|
44
|
-
class for an arbitrary malformed input would require porting PyYAML's scanner
|
|
45
|
-
and parser state machines verbatim, which is out of scope for this phase and
|
|
46
|
-
provides no behavioural value — the class name is a debugging hint appended to
|
|
47
|
-
the stable `YAML parse error: ` prefix, not a contract field. The TS port
|
|
48
|
-
emits a constant `YAMLError` after that prefix.
|
|
49
|
-
|
|
50
|
-
### 2. `--shadow-report`
|
|
51
|
-
|
|
52
|
-
`_shadow_report` imports `scripts.memory_lookup` (`CURATED_TYPES`,
|
|
53
|
-
`retrieve`, `RetrievalResult`) and best-effort `scripts.memory_status`. Both
|
|
54
|
-
modules are **unported** in Phase 4 (they belong to the memory/telemetry
|
|
55
|
-
cluster, Phase 7). The TS port reproduces the scaffold with a zero-shadow
|
|
56
|
-
result and a `backend: unknown` label so the CLI surface (flag, channels,
|
|
57
|
-
output shape) stays identical until those modules land. The Python original's
|
|
58
|
-
`backend` value (`misconfigured` on this machine) reflects the real
|
|
59
|
-
`memory_status` probe, which has no TS equivalent yet.
|
|
60
|
-
|
|
61
|
-
## Verdict
|
|
62
|
-
|
|
63
|
-
`formatting-only` for (1) — the byte difference is a debugging-hint suffix
|
|
64
|
-
with no semantic or consumer impact; the stable `YAML parse error: ` prefix
|
|
65
|
-
(which every caller and test asserts on) is preserved.
|
|
66
|
-
|
|
67
|
-
`intentional-improvement` is **not** claimed for (2); it is an unavoidable
|
|
68
|
-
consequence of cross-phase ordering. The `--shadow-report` path is scaffolding
|
|
69
|
-
("Ships today as scaffolding" per the Python docstring) whose real backend is
|
|
70
|
-
absent until `@event4u/agent-memory` and the Phase-7 memory modules exist. The
|
|
71
|
-
TS scaffold is behaviourally faithful to the *absent-backend* state the feature
|
|
72
|
-
was designed around (zero shadows). Full byte-parity for `--shadow-report`
|
|
73
|
-
re-opens when `memory_lookup` / `memory_status` are ported.
|
|
74
|
-
|
|
75
|
-
## Evidence
|
|
76
|
-
|
|
77
|
-
- pytest suite `tests/test_check_memory.py` and the TS twin
|
|
78
|
-
`tests/scripts/check_memory.test.ts` assert the **substring**
|
|
79
|
-
`YAML parse error` (not the class name), so both suites pass under the
|
|
80
|
-
divergence.
|
|
81
|
-
- Golden-parity tests in the TS suite cover every other `--path` /
|
|
82
|
-
`--format` / `--append-only` case byte-exact (stdout + stderr + exit) and
|
|
83
|
-
explicitly exclude the malformed-YAML class-name suffix and
|
|
84
|
-
`--shadow-report` per this doc.
|
|
85
|
-
|
|
86
|
-
## Approval
|
|
87
|
-
|
|
88
|
-
Approved as a Phase-4 documented divergence. Both items are tracked: (1) is
|
|
89
|
-
permanent (cross-library error taxonomy); (2) closes when the Phase-7 memory
|
|
90
|
-
modules are ported and `--shadow-report` can call real `retrieve` /
|
|
91
|
-
`memory_status` twins.
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
# Divergence: inventory_abstraction_budget
|
|
2
|
-
|
|
3
|
-
## Script
|
|
4
|
-
|
|
5
|
-
- Python: `src/scripts/inventory_abstraction_budget.py`
|
|
6
|
-
- TypeScript: `src/scripts/inventory_abstraction_budget.ts`
|
|
7
|
-
|
|
8
|
-
## Symptom
|
|
9
|
-
|
|
10
|
-
In the generated `frontmatter.csv` / Markdown audit table, the
|
|
11
|
-
`dominant_value` column can differ between the Python and TypeScript runs
|
|
12
|
-
**on rows where the top frequency is shared by two or more values** (a
|
|
13
|
-
top-frequency tie). All other columns — `class`, `field`, `total`,
|
|
14
|
-
`distinct`, `dominant_share`, `bloat_candidate` — are byte-identical.
|
|
15
|
-
|
|
16
|
-
- Observed (CI, ext4): `fm row 5 col 4` — Python `4`, TS `3`.
|
|
17
|
-
- Not observed locally (macOS APFS) — the two filesystems happened to
|
|
18
|
-
iterate the source files in the same order, so the tie resolved to the
|
|
19
|
-
same value.
|
|
20
|
-
- Affected channel(s): the `dominant_value` cell only, and only on
|
|
21
|
-
rows whose `dominant_share` ≤ 50% (no strict majority → a tie is
|
|
22
|
-
possible).
|
|
23
|
-
|
|
24
|
-
## Root cause
|
|
25
|
-
|
|
26
|
-
`dominant_value` is `Counter.most_common(1)[0]` in Python — among the
|
|
27
|
-
max-count group it returns the **first-inserted** value, and insertion
|
|
28
|
-
order is the file-iteration order. Python `Path.glob("**/*.md")` returns
|
|
29
|
-
files in **unsorted OS `readdir` order**; the TS twin's `_globPattern`
|
|
30
|
-
sorts (`out.sort()`). When a field has two values tied at the top count,
|
|
31
|
-
the "first-inserted" winner depends on that file order, so the sorted-TS
|
|
32
|
-
order and the unsorted-Python order can pick different tied values.
|
|
33
|
-
|
|
34
|
-
This is **unreconcilable**, not a port bug: Python's own glob order is
|
|
35
|
-
OS-nondeterministic, so two Python runs on different filesystems can
|
|
36
|
-
already disagree on the same tie. Forcing the TS twin to sort does not
|
|
37
|
-
help (Python is unsorted); forcing it to read unsorted would still not
|
|
38
|
-
reliably reproduce CPython's recursive-glob traversal order across
|
|
39
|
-
runtimes. Every other derived value (the counts, the share, the bloat
|
|
40
|
-
flag) is order-independent and stays byte-identical.
|
|
41
|
-
|
|
42
|
-
## Verdict
|
|
43
|
-
|
|
44
|
-
`formatting-only` — the byte difference is confined to a single
|
|
45
|
-
display-label column that is inherently OS-iteration-order-dependent in
|
|
46
|
-
the Python original itself. No count, share, or bloat-candidate decision
|
|
47
|
-
changes. The column that the script exists to drive (`bloat_candidate`,
|
|
48
|
-
gated on `dominant_share > 0.95`) is unaffected, because a >95% share is a
|
|
49
|
-
strict majority and therefore never tied.
|
|
50
|
-
|
|
51
|
-
## Evidence
|
|
52
|
-
|
|
53
|
-
`tests/scripts/inventory_abstraction_budget.test.ts` — the golden-parity
|
|
54
|
-
suite asserts `inventory.csv` byte-identical, and for `frontmatter.csv`
|
|
55
|
-
compares every column byte-identical **except** `dominant_value` on rows
|
|
56
|
-
without a strict majority (`dominant_share` ≤ 50%, where a top tie is
|
|
57
|
-
possible). On rows with `dominant_share > 50%` the dominant value is
|
|
58
|
-
provably unique and IS compared. The Markdown table comparison
|
|
59
|
-
independently permits a per-line divergence only in the `dominant_value`
|
|
60
|
-
cell (pipe-cell index 5) and asserts every other cell identical.
|
|
61
|
-
|
|
62
|
-
## Approval
|
|
63
|
-
|
|
64
|
-
- Reviewer: matze4u
|
|
65
|
-
- Date: 2026-06-12
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
# Divergence: lint_marketplace
|
|
2
|
-
|
|
3
|
-
## Script
|
|
4
|
-
|
|
5
|
-
- Python: `src/scripts/lint_marketplace.py`
|
|
6
|
-
- TypeScript: `src/scripts/lint_marketplace.ts`
|
|
7
|
-
|
|
8
|
-
## Symptom
|
|
9
|
-
|
|
10
|
-
One byte-level mismatch, confined to the malformed-`marketplace.json` path
|
|
11
|
-
where the message embeds the language's native JSON-parser error text:
|
|
12
|
-
|
|
13
|
-
- **Python output:** `❌ .claude-plugin/marketplace.json is not valid JSON: Expecting property name enclosed in double quotes: line 1 column 3 (char 2)`
|
|
14
|
-
- **TS output:** `❌ .claude-plugin/marketplace.json is not valid JSON: Expected property name or '}' in JSON at position 2 (line 1 column 3)`
|
|
15
|
-
- Affected channel(s): stdout
|
|
16
|
-
|
|
17
|
-
Every other case (valid repo, missing file, missing field, version mismatch,
|
|
18
|
-
nonexistent / SKILL.md-less / duplicate skill paths, empty plugins, missing
|
|
19
|
-
owner email, reverse-drift, completeness exemptions) is byte-identical.
|
|
20
|
-
|
|
21
|
-
## Root cause
|
|
22
|
-
|
|
23
|
-
The Python original catches `json.JSONDecodeError` and renders `str(exc)`,
|
|
24
|
-
which is CPython's hand-written decoder message
|
|
25
|
-
(`Expecting property name enclosed in double quotes: line L column C (char N)`).
|
|
26
|
-
The TypeScript port catches the `JSON.parse` `SyntaxError` and renders
|
|
27
|
-
`e.message`, which is V8's decoder message
|
|
28
|
-
(`Expected property name or '}' in JSON at position N (line L column C)`).
|
|
29
|
-
The two decoders disagree on wording, position vs. char offset, and clause
|
|
30
|
-
order for the same malformed input. Reproducing CPython's exact decoder
|
|
31
|
-
message in TS would require porting CPython's `json.scanner` state machine
|
|
32
|
-
verbatim — out of scope and of no consumer value: the message is a debugging
|
|
33
|
-
hint appended to the stable `… is not valid JSON: ` prefix, which is the
|
|
34
|
-
actual contract (alongside exit code 1). Mirrors the same cross-language
|
|
35
|
-
parser-error-text divergence already accepted for `check_memory`
|
|
36
|
-
(YAML parse-error class name).
|
|
37
|
-
|
|
38
|
-
## Verdict
|
|
39
|
-
|
|
40
|
-
`formatting-only` — the byte difference is a debugging-hint suffix with no
|
|
41
|
-
semantic or consumer impact. The stable `… is not valid JSON: ` prefix and the
|
|
42
|
-
exit code (1) are preserved; both are what callers and tests assert on.
|
|
43
|
-
|
|
44
|
-
## Evidence
|
|
45
|
-
|
|
46
|
-
- The TS twin `tests/scripts/lint_marketplace.test.ts` runs python3 and tsx in
|
|
47
|
-
the same tmp cwd and asserts **byte-identical** stdout/stderr/exit for every
|
|
48
|
-
fixture **except** the malformed-JSON one, where it asserts the stable
|
|
49
|
-
contract (exit 1 + the `is not valid JSON` prefix on both) per this doc.
|
|
50
|
-
- The real-repo golden-parity case (the live CI invocation, which has a valid
|
|
51
|
-
`marketplace.json`) is byte-identical.
|
|
52
|
-
|
|
53
|
-
## Approval
|
|
54
|
-
|
|
55
|
-
Approved as a Phase-4 documented divergence. Permanent — it stems from the
|
|
56
|
-
cross-language JSON-decoder error taxonomy, the same class as the accepted
|
|
57
|
-
`check_memory` YAML divergence.
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
# Divergence: lint_mcp_registry_manifest
|
|
2
|
-
|
|
3
|
-
## Script
|
|
4
|
-
|
|
5
|
-
- Python: `src/scripts/lint_mcp_registry_manifest.py`
|
|
6
|
-
- TypeScript: `src/scripts/lint_mcp_registry_manifest.ts`
|
|
7
|
-
|
|
8
|
-
## Symptom
|
|
9
|
-
|
|
10
|
-
**Conditional, latent divergence — not reached on the real repo.** Golden
|
|
11
|
-
parity (python3 vs tsx, no-arg and `--quiet`) is byte-identical today, because
|
|
12
|
-
`dist/mcp/` is absent in this worktree, so both versions short-circuit on the
|
|
13
|
-
first artefact check and emit:
|
|
14
|
-
|
|
15
|
-
- stderr: `❌ missing: dist/mcp/registry-manifest.json`
|
|
16
|
-
- exit: 1
|
|
17
|
-
|
|
18
|
-
The only branch where the two versions *would* differ is the schema-validation
|
|
19
|
-
failure message, which fires solely on a **structurally invalid** manifest
|
|
20
|
-
(after all four `dist/mcp/*` artefacts exist):
|
|
21
|
-
|
|
22
|
-
- **Python output:** `❌ schema validation: <jsonschema e.message> at <list(e.absolute_path)>`
|
|
23
|
-
— wording produced by `jsonschema.Draft202012Validator`.
|
|
24
|
-
- **TS output:** `❌ schema validation: <subset-validator message> at [<path…>]`
|
|
25
|
-
— wording produced by the hand-rolled Draft-2020-12 subset validator in the
|
|
26
|
-
TS port.
|
|
27
|
-
- Affected channel(s): stderr (only on an invalid manifest)
|
|
28
|
-
|
|
29
|
-
The stable prefix `schema validation: ` and the surrounding control flow
|
|
30
|
-
(which artefact is checked, in what order, the exit code 1, the `❌ `
|
|
31
|
-
glyph + two-space prefix) are identical. Only the embedded
|
|
32
|
-
validator-specific error string and the `at [...]` path rendering can differ.
|
|
33
|
-
|
|
34
|
-
## Root cause
|
|
35
|
-
|
|
36
|
-
Python uses `jsonschema.Draft202012Validator(schema).validate(manifest)` and
|
|
37
|
-
formats `f"schema validation: {e.message} at {list(e.absolute_path)}"`. The TS
|
|
38
|
-
runtime has only `ajv` v6 (Draft-07) available — it cannot evaluate a
|
|
39
|
-
Draft-2020-12 schema with `jsonschema`-identical diagnostics. Following the
|
|
40
|
-
established Wave-4b pattern (`src/scripts/lint_discovery_manifest.ts`), the TS
|
|
41
|
-
port ships a faithful Draft-2020-12 **subset** validator that ACCEPTS every
|
|
42
|
-
valid manifest (the golden path) but renders rejection messages in its own
|
|
43
|
-
wording. Matching `jsonschema`'s per-keyword English message text + Python
|
|
44
|
-
`repr` of the instance + `list(absolute_path)` rendering byte-for-byte is out
|
|
45
|
-
of scope and provides no consumer value (the manifest is generated, so an
|
|
46
|
-
invalid manifest is a build bug surfaced equally by either version).
|
|
47
|
-
|
|
48
|
-
## Verdict
|
|
49
|
-
|
|
50
|
-
`intentional-improvement` — both behaviors reject an invalid manifest with a
|
|
51
|
-
non-zero exit and a `schema validation: …` stderr line; the TS wording is a
|
|
52
|
-
deliberate, documented substitute for the unavailable Draft-2020-12
|
|
53
|
-
`jsonschema` diagnostics. The accept/reject decision (the consumer-relevant
|
|
54
|
-
behavior) is preserved.
|
|
55
|
-
|
|
56
|
-
## Evidence
|
|
57
|
-
|
|
58
|
-
- `tests/scripts/lint_mcp_registry_manifest.test.ts`:
|
|
59
|
-
- the behavioural-spec block asserts the subset validator ACCEPTS a fully
|
|
60
|
-
valid manifest and REJECTS each malformed shape (wrong `version` const,
|
|
61
|
-
missing required key, unknown additional property, bad `status` enum,
|
|
62
|
-
`< minItems` registries) — i.e. the accept/reject contract holds.
|
|
63
|
-
- the golden-parity block asserts byte-identical stdout + stderr + exit on
|
|
64
|
-
the real repo for both the no-arg and `--quiet` invocations (the
|
|
65
|
-
`missing:` branch), proving no actual mismatch ships today.
|
|
66
|
-
|
|
67
|
-
## Approval
|
|
68
|
-
|
|
69
|
-
- Reviewer: <pending>
|
|
70
|
-
- Date: <pending>
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
# Divergence: spotcheck_thin_root
|
|
2
|
-
|
|
3
|
-
## Script
|
|
4
|
-
|
|
5
|
-
- Python: `src/scripts/spotcheck_thin_root.py`
|
|
6
|
-
- TypeScript: `src/scripts/spotcheck_thin_root.ts`
|
|
7
|
-
|
|
8
|
-
## Symptom
|
|
9
|
-
|
|
10
|
-
The entire `main()` is a **live AI-council call** (Anthropic `claude-sonnet-4-5`
|
|
11
|
-
+ OpenAI `gpt-4o`) that requires API keys + network access and produces a
|
|
12
|
-
**non-deterministic** report — per-call `latency_ms` and `tokens_in/out` vary
|
|
13
|
-
every run, and the model prose is not reproducible. There is therefore no
|
|
14
|
-
golden-parity path: python3 vs tsx output cannot be byte-compared, and the
|
|
15
|
-
script cannot run inside CI.
|
|
16
|
-
|
|
17
|
-
- Affected channel(s): written files (`thin-root-platform-spotcheck.md` /
|
|
18
|
-
`.json`) + stderr (`Running …`, `✅ Wrote …`).
|
|
19
|
-
|
|
20
|
-
## Root cause
|
|
21
|
-
|
|
22
|
-
The Python original imports three still-Python `ai_council` modules with no TS
|
|
23
|
-
twin in this wave:
|
|
24
|
-
|
|
25
|
-
- `ai_council.clients` — `AnthropicClient`, `OpenAIClient`,
|
|
26
|
-
`load_anthropic_key`, `load_openai_key` (~1,385 lines, network clients).
|
|
27
|
-
- `ai_council.orchestrator` — `CostBudget`, `CouncilQuestion`, `consult`
|
|
28
|
-
(~1,206 lines).
|
|
29
|
-
- `ai_council.pricing` — `load_prices` (ported as `ai_council/pricing.ts`).
|
|
30
|
-
|
|
31
|
-
A `.ts` cannot import a `.py`, and the "PORT + import, never inline the
|
|
32
|
-
un-ported logic" rule forbids re-implementing those ~2,800 lines of
|
|
33
|
-
network-calling code inside this twin. Per the established precedent for
|
|
34
|
-
un-ported Python deps (`check_discovery_determinism.ts` runs its un-ported
|
|
35
|
-
scanner via `python3`; `smoke_quickstart.ts` Step 3 imports `decision_engine`
|
|
36
|
-
via a `python3` shim), the TS twin delegates the live `consult(...)` call to a
|
|
37
|
-
`python3` shim that imports the real Python modules. The deterministic parts —
|
|
38
|
-
artefact assembly, the `json.dumps(indent=2)` writer, the Markdown report
|
|
39
|
-
layout, the stderr lines — are ported faithfully in TS.
|
|
40
|
-
|
|
41
|
-
## Verdict
|
|
42
|
-
|
|
43
|
-
`intentional-improvement` — both behaviors are defensible; the TS twin
|
|
44
|
-
preserves the byte-shape of the written report and the stderr surface while
|
|
45
|
-
running the unportable, non-deterministic, network-bound council step through
|
|
46
|
-
the still-Python modules. Porting the two large network clients is out of this
|
|
47
|
-
wave's scope and tracked separately.
|
|
48
|
-
|
|
49
|
-
## Evidence
|
|
50
|
-
|
|
51
|
-
`tests/scripts/spotcheck_thin_root.test.ts` asserts the module imports without
|
|
52
|
-
a top-level throw and exposes the `main` entry point (the deterministic CLI
|
|
53
|
-
surface). The live council path (network + keys) is excluded from CI by
|
|
54
|
-
construction — there is no fixture that could pin a non-deterministic
|
|
55
|
-
LLM-latency report.
|
|
56
|
-
|
|
57
|
-
## Approval
|
|
58
|
-
|
|
59
|
-
- Reviewer: <pending — porting subagent, Wave 8h>
|
|
60
|
-
- Date: 2026-06-13
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
# Divergence: validate_agent_settings
|
|
2
|
-
|
|
3
|
-
## Script
|
|
4
|
-
|
|
5
|
-
- Python: `src/scripts/validate_agent_settings.py`
|
|
6
|
-
- TypeScript: `src/scripts/validate_agent_settings.ts`
|
|
7
|
-
|
|
8
|
-
## Symptom
|
|
9
|
-
|
|
10
|
-
Only the **error-message prose** of a schema violation can differ. The exit
|
|
11
|
-
code, the GitHub `::error file=…::<loc>:` location prefix, the violation
|
|
12
|
-
count, the summary line, and the clean-pass line are byte-identical.
|
|
13
|
-
|
|
14
|
-
- **Python output (violation):** `::error file=…::rule_loading_tier: 'lean' is not one of ['minimal', 'balanced', 'full', 'custom']`
|
|
15
|
-
— the trailing clause is produced verbatim by the `jsonschema` library and
|
|
16
|
-
is Python-version-dependent.
|
|
17
|
-
- **TS output (violation):** same `::error file=…::rule_loading_tier:` prefix
|
|
18
|
-
and field path; the enum/type clause is reproduced by a minimal Draft-07
|
|
19
|
-
validator (`_iter_errors`) and may differ in exact wording from a given
|
|
20
|
-
`jsonschema` release.
|
|
21
|
-
- Affected channel(s): stdout (only the prose tail of a violation line).
|
|
22
|
-
|
|
23
|
-
## Root cause
|
|
24
|
-
|
|
25
|
-
The Python script delegates message text to `jsonschema.Draft7Validator`,
|
|
26
|
-
whose `ValidationError.message` wording is not a stable contract (it has
|
|
27
|
-
changed across `jsonschema` releases). The package ships no `ajv`/jsonschema
|
|
28
|
-
dependency for the TS side and `package.json` is frozen for this wave, so the
|
|
29
|
-
twin implements the exact constraint subset the shared schema uses (`type`
|
|
30
|
-
object/string, string `enum`, `properties`, permissive `additionalProperties:
|
|
31
|
-
true`) and approximates the message text. Per ADR-200 §4 the parity contract
|
|
32
|
-
for schema-validation findings is **exit code + flagged field-paths**, not
|
|
33
|
-
byte-exact jsonschema prose.
|
|
34
|
-
|
|
35
|
-
## Verdict
|
|
36
|
-
|
|
37
|
-
`formatting-only` — the constraint set, the violating field path, the error
|
|
38
|
-
location prefix, the violation count, and both summary lines match exactly;
|
|
39
|
-
only the human-readable enum/type clause may differ, with no semantic or
|
|
40
|
-
consumer impact (CI greps the `::error file=…::<loc>:` location, not the tail).
|
|
41
|
-
|
|
42
|
-
## Evidence
|
|
43
|
-
|
|
44
|
-
- `tests/scripts/validate_agent_settings.test.ts` asserts: every valid
|
|
45
|
-
`rule_loading_tier` accepted; an out-of-enum value rejected **at the
|
|
46
|
-
`['rule_loading_tier']` path** with a message naming the allowed values;
|
|
47
|
-
the legacy `cost_profile` key tolerated (shipped reality); nested enums
|
|
48
|
-
(`memory.cadence`, `model.auto_switch`, `worktrees.mode`) enforced at the
|
|
49
|
-
correct paths.
|
|
50
|
-
- Golden parity: the same test runs `python3 validate_agent_settings.py` vs
|
|
51
|
-
`tsx validate_agent_settings.ts` on the real repo and asserts stdout, stderr,
|
|
52
|
-
and exit code are byte-identical (the clean repo never triggers a violation
|
|
53
|
-
line, so the only golden-parity surface is the OK summary — byte-identical).
|
|
54
|
-
|
|
55
|
-
## Approval
|
|
56
|
-
|
|
57
|
-
- Reviewer: <pending — porting subagent, ADR-200 Phase 4 / Wave 4c>
|
|
58
|
-
- Date: 2026-06-11
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
# Node Floor Audit
|
|
2
|
-
|
|
3
|
-
> Phase 1 Step 12 of `agents/roadmaps/archive/road-to-typescript-only-scripts.md`.
|
|
4
|
-
> Decision: which Node.js floor the TS-only script suite supports, where it is
|
|
5
|
-
> enforced, and what CI tests.
|
|
6
|
-
|
|
7
|
-
## Facts (as audited 2026-06-11, branch feat/py2ts-phase1-infra)
|
|
8
|
-
|
|
9
|
-
| Surface | Value | Source |
|
|
10
|
-
|---|---|---|
|
|
11
|
-
| `engines.node` | `>=20.11.0` | `package.json:53-55` |
|
|
12
|
-
| tsconfig target | `ES2022` (`module: ESNext`, `moduleResolution: Bundler`) | `tsconfig.json:3-5` |
|
|
13
|
-
| tsconfig lib | `ES2022` (+ `DOM` in `tsconfig.ui.json:4`, `tsconfig.test.json:6`) | tsconfig files |
|
|
14
|
-
| CI — tests.yml | Node `20` | `.github/workflows/tests.yml:241` |
|
|
15
|
-
| CI — release-drift.yml | Node `20` | `.github/workflows/release-drift.yml:44` |
|
|
16
|
-
| CI — publish-npm.yml | Node `20` | `.github/workflows/publish-npm.yml:48` |
|
|
17
|
-
| CI — smoke-public-install.yml | matrix `node: ['20', '22']` × 3 OS | `smoke-public-install.yml:78-80` |
|
|
18
|
-
| CI — deploy-mcp-worker.yml | Node `22` | `deploy-mcp-worker.yml:68` |
|
|
19
|
-
| `engine-strict` | not set (no `.npmrc`) — `engines` is advisory only | repo root |
|
|
20
|
-
| Installer Node check | none today (Python installer never inspects `process.version`) | grep of `src/scripts/install*`, `setup.sh` |
|
|
21
|
-
|
|
22
|
-
Feature scan of `src/` TypeScript (sampled, not exhaustive):
|
|
23
|
-
|
|
24
|
-
- `node:` protocol imports — 34 files (Node ≥ 16; trivially within floor).
|
|
25
|
-
- Global `fetch` in Node-side code — `src/server/token.ts` (stable without flag
|
|
26
|
-
since Node 18, marked stable in 21; fine on ≥ 20.11).
|
|
27
|
-
- No hits for `structuredClone`, top-of-module top-level `await`,
|
|
28
|
-
`Array.prototype.at(-…)`, `Object.hasOwn`, `findLast` in `src/` TS.
|
|
29
|
-
- Browser-only `fetch` usage (`src/ui/api.ts`) is covered by the `DOM` lib, not
|
|
30
|
-
the Node floor.
|
|
31
|
-
|
|
32
|
-
Conclusion of the scan: nothing in the current TS code requires more than
|
|
33
|
-
Node 18; the ES2022 compile target is the binding constraint and is fully
|
|
34
|
-
served by every Node ≥ 18.12. The floor question is therefore a **support
|
|
35
|
-
lifecycle** decision, not a syntax one.
|
|
36
|
-
|
|
37
|
-
## Recommendation
|
|
38
|
-
|
|
39
|
-
**Raise the floor to Node `>=22.0.0` as part of the TS-only migration; test
|
|
40
|
-
22 (minimum) and 24 (current LTS) in CI.** Keep `>=20.11.0` only until the
|
|
41
|
-
first major/breaking release of the migration lands, then flip — the bump is a
|
|
42
|
-
semver-major signal per the package's versioning policy.
|
|
43
|
-
|
|
44
|
-
## Rationale
|
|
45
|
-
|
|
46
|
-
- **Node 20 is end-of-life.** Its maintenance window ended April 2026. A
|
|
47
|
-
migration that will ship through 2026/27 should not anchor its floor on a
|
|
48
|
-
line that no longer receives security fixes; keeping it implies supporting
|
|
49
|
-
consumers on an unpatched runtime.
|
|
50
|
-
- **Node 22 (maintenance LTS) and 24 (active LTS) are the 2026 reality.** CI
|
|
51
|
-
already runs 22 in two workflows; the smoke matrix already proves installs
|
|
52
|
-
on 22. Raising the floor to 22 costs no code changes (the feature scan shows
|
|
53
|
-
no >ES2022 usage to add or remove) and removes a dead line from the matrix.
|
|
54
|
-
- **Consumer compatibility risk is low and visible.** The package is a dev-time
|
|
55
|
-
tool invoked via `npx`/global install, not a production runtime dependency.
|
|
56
|
-
Consumers still on Node 20 get a clear, immediate failure at install time
|
|
57
|
-
(see Enforcement) rather than a latent one.
|
|
58
|
-
- **Why not 24 as the floor:** 24 only entered LTS in late 2025; many CI images
|
|
59
|
-
and corporate baselines still pin 22. Floor = oldest non-EOL LTS (22),
|
|
60
|
-
matrix-test up to current LTS (24).
|
|
61
|
-
|
|
62
|
-
## Enforcement points
|
|
63
|
-
|
|
64
|
-
1. **`package.json` `engines`** — flip to `">=22.0.0"` at the breaking release.
|
|
65
|
-
Advisory only without `engine-strict`; npm prints a warning, pnpm/yarn fail
|
|
66
|
-
harder. Do **not** set `engine-strict` repo-wide (it would also bind
|
|
67
|
-
maintainers); rely on point 2 for the hard gate.
|
|
68
|
-
2. **TS installer runtime check (the hard gate).** Phase 3 Step 2 already
|
|
69
|
-
requires "Node-version check with a clear error": the TS installer must
|
|
70
|
-
compare `process.versions.node` against the floor on startup and fail with
|
|
71
|
-
an actionable message before writing anything. This is the enforcement the
|
|
72
|
-
Python installer never had — it must land with the TS installer.
|
|
73
|
-
3. **CI matrix** — pin the floor and the current LTS:
|
|
74
|
-
- `smoke-public-install.yml`: `node: ['22', '24']` (replacing `['20', '22']`).
|
|
75
|
-
- `tests.yml` / `release-drift.yml` / `publish-npm.yml`: bump single-version
|
|
76
|
-
jobs `20` → `22`; add a `24` leg to `tests.yml` if budget allows.
|
|
77
|
-
4. **Docs** — README Quickstart and `docs/getting-started.md` state the floor
|
|
78
|
-
explicitly ("requires Node 22+"); CHANGELOG `### Breaking` entry +
|
|
79
|
-
`BREAKING_CHANGES.md` index the bump per the versioning policy.
|
|
80
|
-
|
|
81
|
-
## Decision status
|
|
82
|
-
|
|
83
|
-
Recommended here; the `engines` flip itself is release-gated (semver-major)
|
|
84
|
-
and should ride the first breaking release of the TS migration, not this
|
|
85
|
-
infra PR. Until then `>=20.11.0` stays in `package.json`, and CI keeps one
|
|
86
|
-
Node 20 leg solely to honor the published floor.
|
|
@@ -1,156 +0,0 @@
|
|
|
1
|
-
# Migration — v1 → v2 (npx-only runtime)
|
|
2
|
-
|
|
3
|
-
> **Status:** active. The one-shot `npx @event4u/agent-config migrate`
|
|
4
|
-
> is implemented in `scripts/_cli/cmd_migrate.py`; its action matrix +
|
|
5
|
-
> exit-code contract live in
|
|
6
|
-
> [`docs/contracts/migrate-command.md`](../contracts/migrate-command.md).
|
|
7
|
-
> This document is the user-facing narrative; the contract is the
|
|
8
|
-
> normative reference.
|
|
9
|
-
|
|
10
|
-
## Why this change
|
|
11
|
-
|
|
12
|
-
v2 retires the local-install scheme (Composer dependency, npm
|
|
13
|
-
`postinstall`, `--global` symlink namespace under `~/.claude/`,
|
|
14
|
-
`~/.cursor/`, `~/.codeium/windsurf/`, `~/.config/agent-config/`) in
|
|
15
|
-
favour of an **npx-only runtime**. The trade-off and the council's Q1
|
|
16
|
-
rejection + the user's override are recorded in
|
|
17
|
-
[`docs/architecture.md` § Distribution model](../architecture.md#distribution-model--npx-only--version-pin-governance).
|
|
18
|
-
|
|
19
|
-
## TL;DR
|
|
20
|
-
|
|
21
|
-
```bash
|
|
22
|
-
npx @event4u/agent-config migrate
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
One command, idempotent. Re-runs on an already-migrated repo do nothing.
|
|
26
|
-
|
|
27
|
-
## What disappears from the consumer
|
|
28
|
-
|
|
29
|
-
| Path / entry | Reason |
|
|
30
|
-
|-------------------------------------------------------|-----------------------------------------|
|
|
31
|
-
| `composer.json` → `require-dev.event4u/agent-config` | No Composer dependency under v2. |
|
|
32
|
-
| `composer.lock` line for `event4u/agent-config` | Same; lockfile updated by Composer. |
|
|
33
|
-
| `package.json` → `devDependencies.@event4u/agent-config` | No npm dependency under v2. |
|
|
34
|
-
| `package-lock.json` / `pnpm-lock.yaml` entries | Same. |
|
|
35
|
-
| `node_modules/@event4u/agent-config/` | Removed by the package manager once the `package.json` entry is gone. |
|
|
36
|
-
| `vendor/event4u/agent-config/` | Removed by Composer once the require entry is gone. |
|
|
37
|
-
| `~/.claude/{rules,skills}/event4u/` | Retired `--global` namespace dir. |
|
|
38
|
-
| `~/.cursor/rules/imported/event4u/` | Same. |
|
|
39
|
-
| `~/.codeium/windsurf/global_workflows/event4u/` | Same. |
|
|
40
|
-
| `~/.config/agent-config/{rules,skills}/event4u/` | Same (fallback path). |
|
|
41
|
-
| Legacy `.gitignore` block lines marked `event4u/agent-config (legacy local install)` | Replaced by the v2 block written by `sync-gitignore`. |
|
|
42
|
-
|
|
43
|
-
The retired `templates/global-install-manifest.yml` shipped inside the
|
|
44
|
-
package and is gone in v2; consumers never carried it directly.
|
|
45
|
-
|
|
46
|
-
## What appears in the consumer
|
|
47
|
-
|
|
48
|
-
| Path / entry | Owner / shape |
|
|
49
|
-
|-------------------------------------------------------|-----------------------------------------|
|
|
50
|
-
| `.agent-settings.yml` → `agent_config_version: "<pin>"` | Project version pin, reviewed in PRs. |
|
|
51
|
-
| `.agent-settings.yml` → `update_check:` block | Defaults shipped by `init`; opt-out per knob. |
|
|
52
|
-
| Updated `.gitignore` block | v2 entries written by `sync-gitignore`. |
|
|
53
|
-
|
|
54
|
-
The per-tool glue (`.claude/`, `.cursor/`, `.clinerules/`,
|
|
55
|
-
`.windsurfrules`, `GEMINI.md`, `.github/copilot-instructions.md`,
|
|
56
|
-
`.augment/`, `.vscode/settings.json`) keeps the same shape as v1 — only
|
|
57
|
-
the source that writes them changed (from `vendor/` /
|
|
58
|
-
`node_modules/` scripts to the npx-resolved runtime).
|
|
59
|
-
|
|
60
|
-
## The `migrate` command
|
|
61
|
-
|
|
62
|
-
```bash
|
|
63
|
-
npx @event4u/agent-config migrate # apply, real changes
|
|
64
|
-
npx @event4u/agent-config migrate --dry-run # plan only, zero writes
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
One opinionated command, one flag. The full action matrix +
|
|
68
|
-
exit-code contract is documented in
|
|
69
|
-
[`docs/contracts/migrate-command.md`](../contracts/migrate-command.md);
|
|
70
|
-
the operations summary below is the narrative form.
|
|
71
|
-
|
|
72
|
-
Order of operations (fixed; foundation-first):
|
|
73
|
-
|
|
74
|
-
1. Detect every legacy signal in one pass: `composer.json` require
|
|
75
|
-
entry, `package.json` devDependency, managed symlinks pointing
|
|
76
|
-
into `vendor/` / `node_modules/`, v0
|
|
77
|
-
`.implement-ticket-state.json`, project-local `.agent-settings.yml`
|
|
78
|
-
/ `.agent-user.yml` (flat or under `settings/`), empty
|
|
79
|
-
`agent-config/` shell.
|
|
80
|
-
2. Under `--dry-run`, print the planned change set and stop with
|
|
81
|
-
exit 0.
|
|
82
|
-
3. Strip the package entries from `package.json` / `composer.json`
|
|
83
|
-
in-place; preserve sibling keys + formatting.
|
|
84
|
-
4. Purge legacy symlinks; preserve user-managed symlinks elsewhere
|
|
85
|
-
with a warning.
|
|
86
|
-
5. Migrate `.implement-ticket-state.json` → `.work-state.json`
|
|
87
|
-
(renames the v0 source to `.bak`).
|
|
88
|
-
6. **Hard-delete** legacy project-local config files. The wizard
|
|
89
|
-
(`agent-config setup`) recreates fresh global config on the next
|
|
90
|
-
run — deletion is the design, not a regression.
|
|
91
|
-
7. Remove the empty `agent-config/` shell directory if present.
|
|
92
|
-
8. Refresh the `.gitignore` agent-config managed block.
|
|
93
|
-
9. Print a summary listing every action taken.
|
|
94
|
-
|
|
95
|
-
Idempotency: re-running on a fully-migrated repo prints
|
|
96
|
-
*"already migrated — nothing to do"* and exits 0 without touching
|
|
97
|
-
the filesystem.
|
|
98
|
-
|
|
99
|
-
## Verification after migration
|
|
100
|
-
|
|
101
|
-
```bash
|
|
102
|
-
npx @event4u/agent-config doctor # P3 — runtime sanity check
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
Expected: pin resolved, no v1 markers detected, `update_check` reachable.
|
|
106
|
-
|
|
107
|
-
## v2 → v2.4 — `~/.event4u/agent-config/` namespace move
|
|
108
|
-
|
|
109
|
-
v2.4 relocates package-owned user-scope state from
|
|
110
|
-
`~/.config/agent-config/` to `~/.event4u/agent-config/`. Tool anchors
|
|
111
|
-
(`~/.claude/`, `~/.augment/`, `~/.cursor/`, `~/.codeium/windsurf/`) are
|
|
112
|
-
**not** moved — those belong to their host tools.
|
|
113
|
-
|
|
114
|
-
### What moves
|
|
115
|
-
|
|
116
|
-
| Old path | New path |
|
|
117
|
-
|-----------------------------------------------------|---------------------------------------------------------|
|
|
118
|
-
| `~/.config/agent-config/agent-settings.yml` | `~/.event4u/agent-config/agent-settings.yml` |
|
|
119
|
-
| `~/.config/agent-config/installed.lock` | `~/.event4u/agent-config/installed.lock` |
|
|
120
|
-
| `~/.config/agent-config/installed-tools.yml` | `~/.event4u/agent-config/installed-tools.yml` |
|
|
121
|
-
| `~/.config/agent-config/update-check.json` | `~/.event4u/agent-config/update-check.json` |
|
|
122
|
-
| `~/.config/agent-config/ai-council/` | `~/.event4u/agent-config/ai-council/` |
|
|
123
|
-
|
|
124
|
-
### Migration — zero action required
|
|
125
|
-
|
|
126
|
-
A one-shot auto-migration shim runs on the first `init` / `update` /
|
|
127
|
-
`uninstall` after upgrading to ≥ 2.4:
|
|
128
|
-
|
|
129
|
-
1. If `~/.event4u/agent-config/` already exists → no-op.
|
|
130
|
-
2. Otherwise, copy every file from `~/.config/agent-config/` to the new
|
|
131
|
-
path, preserving mtimes.
|
|
132
|
-
3. Drop a `MIGRATED.md` breadcrumb in the legacy dir pointing at the new
|
|
133
|
-
home. Legacy files stay readable; loaders fall back to them until a
|
|
134
|
-
subsequent install overwrites the new path.
|
|
135
|
-
|
|
136
|
-
Override the target dir with `EVENT4U_HOME=/some/path` if you keep a
|
|
137
|
-
non-standard home (`$HOME` substitute) or want to test the migration
|
|
138
|
-
against a sandbox.
|
|
139
|
-
|
|
140
|
-
### Claude Desktop — new bundle output
|
|
141
|
-
|
|
142
|
-
v2.4 ships a real Claude Desktop deployment instead of the
|
|
143
|
-
marker-only stub. Running `npx @event4u/agent-config init
|
|
144
|
-
--tools=claude-desktop` (or any superset that includes it) now produces
|
|
145
|
-
one ZIP per `.claude/skills/<name>/` under
|
|
146
|
-
`~/.event4u/agent-config/claude-desktop/bundles/`. Import them via
|
|
147
|
-
Claude Desktop → Customize → Skills → Upload. See
|
|
148
|
-
[`docs/setup/per-ide/claude-desktop.md`](../setup/per-ide/claude-desktop.md)
|
|
149
|
-
for the click-through.
|
|
150
|
-
|
|
151
|
-
## See also
|
|
152
|
-
|
|
153
|
-
- [`docs/architecture.md` § Distribution model](../architecture.md#distribution-model--npx-only--version-pin-governance) — Q1 council rejection + override + pin substitution.
|
|
154
|
-
- [`agents/roadmaps/road-to-portable-runtime-and-update-check.md`](../../agents/roadmaps/road-to-portable-runtime-and-update-check.md) — full delivery plan and acceptance criteria.
|
|
155
|
-
- [`agents/roadmaps/road-to-event4u-namespace-and-claude-desktop.md`](../../agents/roadmaps/road-to-event4u-namespace-and-claude-desktop.md) — v2.4 namespace + bundle delivery plan.
|
|
156
|
-
- [`docs/installation.md`](../installation.md) — v2 install reference.
|