@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,95 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
adr: 071
|
|
3
|
-
status: accepted
|
|
4
|
-
date: 2026-06-08
|
|
5
|
-
decision: launch-drive-integration
|
|
6
|
-
supersedes: —
|
|
7
|
-
superseded_by: —
|
|
8
|
-
phase: employee-product Phase 8 (road-to-employee-product-and-external-proof)
|
|
9
|
-
type: structural
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
# ADR-071 — Wire the Tier-1 drive loop into `POST /launch` (v0)
|
|
13
|
-
|
|
14
|
-
## Status
|
|
15
|
-
|
|
16
|
-
**Accepted** · 2026-06-08. Design converged via AI-council (claude-sonnet-4-5 +
|
|
17
|
-
gpt-4o, design mode, 2026-06-08). This is **PR 2** of the drive-loop work
|
|
18
|
-
([`ADR-070`](ADR-070-tier1-drive-loop.md) was PR 1 — the executor). The council
|
|
19
|
-
heavily stress-tested the failure paths; two facts defused the sharpest
|
|
20
|
-
critiques and shaped the final design (see Consequences).
|
|
21
|
-
|
|
22
|
-
## Context
|
|
23
|
-
|
|
24
|
-
The pieces existed but were unwired: `workspace_render.py` (ADR-069) renders a
|
|
25
|
-
task prompt; `workspace_drive.py` (ADR-070) drives one Tier-1 turn;
|
|
26
|
-
`workspace_sessions.py` records encrypted events; `detectHostTier` (ADR-068)
|
|
27
|
-
reported `tier1-drive-pending`. `POST /launch {role, task, host}` wrote a
|
|
28
|
-
session header and stopped. This ADR makes a Tier-1 launch actually drive a
|
|
29
|
-
turn, and degrades cleanly everywhere else.
|
|
30
|
-
|
|
31
|
-
## Decision
|
|
32
|
-
|
|
33
|
-
| # | Question | Verdict | Rationale |
|
|
34
|
-
|---|---|---|---|
|
|
35
|
-
| 1 | Where the prompt comes from | **Fat launch** — `POST /launch {role, task, inputs?, host}` resolves task→prompt, renders in-process, drives. | One round-trip is the natural UX; the render *endpoint* stays pure (launch calls the render module, doesn't re-implement it). Render failure → `host.error(render-error)` + `{driven:false}`, **no drive attempt**. |
|
|
36
|
-
| 2 | Backwards compatibility | **Additive.** Header always written first; driving only when the task resolves to a prompt AND the host is tier 1. Inputs supplied to a no-prompt task → explicit `{driven:false, reason:"no-prompt-for-task", ignored_inputs:true}`. | The legacy `{role, task, host}` → header contract is unchanged; no silent input drops. |
|
|
37
|
-
| 3 | What gets appended | Header (`launcher.input`), then **exactly one** `host.turn` (success) or `host.error` (render / drive failure). | Each launch mints a **fresh** session id → no shared-session append race; "single append" needs no lock in v0. |
|
|
38
|
-
| 4 | Degrade matrix | Tier-3 host, or tier-1 drive failure: **best-effort** inbox hand-off when the flag is on (write rendered prompt, append `inbox.handoff`); flag off → header + tier only. | The session record is the source of truth; the inbox is a convenience, so its write is best-effort (try/catch, never fails the response). |
|
|
39
|
-
| 5 | Timeout response | **HTTP 200** always, with `{driven:false, error_kind:"timeout"}`; never 202. | The session + error are recorded synchronously; a 202 would imply async continuation that does not exist. |
|
|
40
|
-
|
|
41
|
-
### Response shape
|
|
42
|
-
|
|
43
|
-
`POST /launch` always returns 200 with the session header fields + tier, plus:
|
|
44
|
-
|
|
45
|
-
- success: `{driven:true, turn:{…uniform turn…}}`
|
|
46
|
-
- no prompt: `{driven:false, reason:"no-prompt-for-task", ignored_inputs?:true}`
|
|
47
|
-
- render error: `{driven:false, error_kind:"render-error", error}`
|
|
48
|
-
- tier-3 / drive failure: `{driven:false, error_kind?, error?, handoff?}` (`handoff` present iff the inbox flag was on and the write succeeded)
|
|
49
|
-
|
|
50
|
-
## Consequences
|
|
51
|
-
|
|
52
|
-
- **No shared-session race** (council's biggest concern): every launch mints a
|
|
53
|
-
new session id, so two concurrent launches write two sessions, never a
|
|
54
|
-
double-append to one. The "single append" invariant is per-launch and needs
|
|
55
|
-
no lock in v0.
|
|
56
|
-
- **No partial-output-on-timeout** (council's second concern): `claude -p
|
|
57
|
-
--output-format json` is non-streaming; on a timeout the subprocess is killed
|
|
58
|
-
with no parseable envelope, so `host.error(timeout)` carries metadata only.
|
|
59
|
-
- The session log stays the single source of truth — every outcome (turn,
|
|
60
|
-
render-error, drive-error, handoff) is recorded through the encrypted store
|
|
61
|
-
(ADR-064); the response mirrors what was recorded.
|
|
62
|
-
- Driving is opt-in and additive; existing GUI callers that send no inputs and
|
|
63
|
-
hit a no-prompt task keep their header-only behaviour.
|
|
64
|
-
|
|
65
|
-
## Alternatives considered
|
|
66
|
-
|
|
67
|
-
- **Thin launch (client renders via `/render`, passes the prompt to launch)** —
|
|
68
|
-
rejected for v0: two round-trips for the common path; the render endpoint
|
|
69
|
-
staying pure already preserves the separation the thin shape was protecting.
|
|
70
|
-
- **Separate `POST /launch/:id/drive`** — rejected (ADR-070 decision 4):
|
|
71
|
-
orphaned-session risk with no rollback/dedup in v0.
|
|
72
|
-
- **202 on timeout** — rejected: implies async continuation we do not have; the
|
|
73
|
-
error is recorded synchronously, so 200 is honest.
|
|
74
|
-
- **Fail the response when the inbox degrade write fails** — rejected: the
|
|
75
|
-
session error is already recorded; the hand-off is a convenience, so its
|
|
76
|
-
failure must not mask a recorded outcome.
|
|
77
|
-
|
|
78
|
-
## Deferred to v1 (debt)
|
|
79
|
-
|
|
80
|
-
- Multi-turn / tool execution (inherited from ADR-070).
|
|
81
|
-
- `codex` / `gemini` drive configs (the unified `drive()` is ready).
|
|
82
|
-
- Pre-flight checks (disk / key validity) + write-ahead recovery for the
|
|
83
|
-
header→turn sequence — v0 relies on best-effort append + the always-present
|
|
84
|
-
header for recovery.
|
|
85
|
-
- Drive metrics + a kill-switch flipping tier-1 to inbox-only on a failure-rate
|
|
86
|
-
threshold.
|
|
87
|
-
|
|
88
|
-
## References
|
|
89
|
-
|
|
90
|
-
- [`ADR-070`](ADR-070-tier1-drive-loop.md) — the drive executor (PR 1).
|
|
91
|
-
- [`ADR-069`](ADR-069-prompt-renderer.md) — the renderer launch calls in-process.
|
|
92
|
-
- [`ADR-068`](ADR-068-host-tier-detection.md) — tier detection gating the drive.
|
|
93
|
-
- [`ADR-065`](ADR-065-tier3-inbox-handoff-v0.md) — the inbox the degrade path writes to.
|
|
94
|
-
- [`ADR-064`](ADR-064-append-jsonl-per-record-encryption.md) — the encrypted session store.
|
|
95
|
-
- [`daily-workspace`](../contracts/daily-workspace.md) — `/launch` surface contract.
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
adr: 072
|
|
3
|
-
status: accepted
|
|
4
|
-
date: 2026-06-08
|
|
5
|
-
decision: codex-gemini-drive-configs
|
|
6
|
-
supersedes: —
|
|
7
|
-
superseded_by: —
|
|
8
|
-
phase: employee-product Phase 8 (road-to-employee-product-and-external-proof)
|
|
9
|
-
type: structural
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
# ADR-072 — Codex + Gemini drive configs
|
|
13
|
-
|
|
14
|
-
## Status
|
|
15
|
-
|
|
16
|
-
**Accepted** · 2026-06-08. Implementation follow-up to
|
|
17
|
-
[`ADR-070`](ADR-070-tier1-drive-loop.md), which shipped the unified drive loop
|
|
18
|
-
with the `claude-code` config and left `codex` / `gemini` as v1 debt. This is a
|
|
19
|
-
**mechanical extension**, not a new design decision: the unified `drive()` is
|
|
20
|
-
unchanged; each host adds a `build_args` + envelope parser. No AI-council round
|
|
21
|
-
was needed — the only unknowns were the two CLIs' envelope shapes, which are
|
|
22
|
-
**facts to verify, not trade-offs to debate** (per `think-before-action`).
|
|
23
|
-
|
|
24
|
-
## Context
|
|
25
|
-
|
|
26
|
-
`workspace_drive.py` (ADR-070) drives one Tier-1 turn through a per-host config.
|
|
27
|
-
All three Tier-1 hosts (Claude Code / Codex / Gemini — ADR-023) are now CLI-
|
|
28
|
-
present; the launch integration (ADR-071) already drives any `effective_tier==1`
|
|
29
|
-
host, so adding the two configs lights up codex / gemini end-to-end with **no
|
|
30
|
-
Node change**.
|
|
31
|
-
|
|
32
|
-
## Decision
|
|
33
|
-
|
|
34
|
-
Add `codex` and `gemini` to `HOST_CONFIGS`, refactoring the per-host hook from
|
|
35
|
-
`normalise(dict)` to `parse(stdout)` so a host can own a multi-line stream
|
|
36
|
-
(codex) rather than a single JSON object.
|
|
37
|
-
|
|
38
|
-
**Envelope shapes — verified, not guessed:**
|
|
39
|
-
|
|
40
|
-
| Host | Invocation | Shape | Text key | Usage | Session |
|
|
41
|
-
|---|---|---|---|---|---|
|
|
42
|
-
| `claude-code` | `claude -p <p> --output-format json` | single JSON | `result` | `usage.{input,output}_tokens` | `session_id` |
|
|
43
|
-
| `codex` | `codex exec --json <p>` | **NDJSON** event stream | last `item.completed` → `item.content[].text` | `turn.completed.usage` | `session.created.session_id` |
|
|
44
|
-
| `gemini` | `gemini -p <p> --output-format json` | single JSON | `response` | `stats.models.<model>.tokens` (model name dynamic) | `session_id` |
|
|
45
|
-
|
|
46
|
-
- **Codex** shape is reused verbatim from the actively-used
|
|
47
|
-
`ai_council.clients.OpenAICliClient` parser (`item.completed` /
|
|
48
|
-
`turn.completed` / `session.created`); unknown events are skipped, event
|
|
49
|
-
order is tolerated. Missing assistant text → fail-closed (`bad-envelope`).
|
|
50
|
-
- **Gemini** shape was confirmed by a live `gemini -p … --output-format json`
|
|
51
|
-
probe (2026-06-08): top-level `response` + `session_id`, token usage nested
|
|
52
|
-
under `stats.models.<dynamic-model>.tokens` (take the first model entry
|
|
53
|
-
best-effort; `output ≈ total − prompt`). Missing `response` → fail-closed.
|
|
54
|
-
- **Tool calls** stay opaque (recorded, never executed) — same as ADR-070.
|
|
55
|
-
|
|
56
|
-
## Consequences
|
|
57
|
-
|
|
58
|
-
- A workspace launch (ADR-071) against `host: "codex"` or `host: "gemini"` now
|
|
59
|
-
drives a real turn when the CLI is on PATH; no other code path changes.
|
|
60
|
-
- The drift-detection posture from ADR-070 extends to all three hosts: an
|
|
61
|
-
opt-in contract test per host (skipped when the CLI is absent) catches a
|
|
62
|
-
vendor-side envelope rename the moment it runs where the CLI is present.
|
|
63
|
-
- The `parse(stdout)` refactor is backwards-compatible: the claude config's
|
|
64
|
-
behaviour and the uniform turn shape are unchanged.
|
|
65
|
-
|
|
66
|
-
## Alternatives considered
|
|
67
|
-
|
|
68
|
-
- **Guess the gemini envelope from the contract prose** — rejected: the exact
|
|
69
|
-
keys (`response`, nested `stats.models`) are not documented in-repo; a live
|
|
70
|
-
probe is cheap and removes the guess (`think-before-action`).
|
|
71
|
-
- **Per-host `drive_*` functions** — rejected again (ADR-070 decision 3): the
|
|
72
|
-
variance is CLI flags + envelope parsing, both already captured by the config
|
|
73
|
-
table; control flow stays single.
|
|
74
|
-
- **Pass `--model` to codex / gemini** — deferred: the drive loop uses each
|
|
75
|
-
host's default model in v0; model selection is a later concern.
|
|
76
|
-
|
|
77
|
-
## Deferred to v1 (debt)
|
|
78
|
-
|
|
79
|
-
Inherited from ADR-070: multi-turn / tool execution, drive metrics +
|
|
80
|
-
kill-switch, error-taxonomy refinement. Plus: explicit model selection per
|
|
81
|
-
host, and a normalised cross-host `usage` schema (codex/claude expose
|
|
82
|
-
input/output tokens directly; gemini is derived).
|
|
83
|
-
|
|
84
|
-
## References
|
|
85
|
-
|
|
86
|
-
- [`ADR-070`](ADR-070-tier1-drive-loop.md) — the unified drive loop (claude-code config).
|
|
87
|
-
- [`ADR-071`](ADR-071-launch-drive-integration.md) — the launch integration that drives any tier-1 host.
|
|
88
|
-
- [`ADR-023`](ADR-023-host-agent-protocol.md) — the three Tier-1 hosts.
|
|
89
|
-
- [`host-agent-protocol`](../contracts/host-agent-protocol.md) — envelope-as-contract + fail-closed posture.
|
|
90
|
-
- `src/scripts/ai_council/clients.py` — the proven claude / codex CLI envelope parsers reused here.
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
adr: 073
|
|
3
|
-
status: accepted
|
|
4
|
-
date: 2026-06-08
|
|
5
|
-
decision: drive-health-kill-switch
|
|
6
|
-
supersedes: —
|
|
7
|
-
superseded_by: —
|
|
8
|
-
phase: employee-product Phase 8 (road-to-employee-product-and-external-proof)
|
|
9
|
-
type: structural
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
# ADR-073 — Drive health + kill-switch (v0)
|
|
13
|
-
|
|
14
|
-
## Status
|
|
15
|
-
|
|
16
|
-
**Accepted** · 2026-06-08. Design converged via AI-council (claude-sonnet-4-5 +
|
|
17
|
-
gpt-4o, design mode, 2026-06-08). Closes the observability + kill-switch gap the
|
|
18
|
-
drive-loop councils (ADR-070/071/072) repeatedly flagged: there was no way to
|
|
19
|
-
see "this host keeps timing out" and no automatic degrade when a host CLI goes
|
|
20
|
-
bad.
|
|
21
|
-
|
|
22
|
-
## Context
|
|
23
|
-
|
|
24
|
-
Every Tier-1 drive (ADR-070/071/072) writes one session record — `host.turn`
|
|
25
|
-
(success) or `host.error` (`error_kind` ∈ timeout / cli-missing / nonzero-exit
|
|
26
|
-
/ bad-envelope / …). That store is the **canonical** history, but it is
|
|
27
|
-
encrypted and per-session; the kill-switch needs a *cheap, frequent* read on
|
|
28
|
-
every launch ("is this host healthy enough to drive?"). Scanning session files
|
|
29
|
-
per launch is the wrong shape.
|
|
30
|
-
|
|
31
|
-
## Decision
|
|
32
|
-
|
|
33
|
-
Add `workspace_drive_health.py`: a tiny per-host **cache** counter at
|
|
34
|
-
`<writeRoot>/workspace/health/<host>.json`, plus a kill-switch.
|
|
35
|
-
|
|
36
|
-
| # | Question | Verdict | Rationale |
|
|
37
|
-
|---|---|---|---|
|
|
38
|
-
| 1 | Metrics source | **Dedicated counter file, as a cache.** Session log stays canonical; a missing / unreadable cache **fails open** (host treated as healthy). Minimal schema (`consecutive_failures`, `killed`, lifetime totals, last outcome) — no histograms. | The kill-switch needs O(1) reads; deriving from encrypted session scans per launch is wrong. The cache never fabricates a kill. |
|
|
39
|
-
| 2 | Kill-switch trigger | **Auto + manual.** Auto-trips at **5 consecutive failures**; a manual `kill` forces it. | A consecutive-failure streak is simpler than windowing math; 5 lets transient blips self-heal while a broken CLI trips fast. |
|
|
40
|
-
| 3 | State + reset | On-disk per host; **manual reset only** in v0. A success resets the *streak* but not a tripped `killed` flag. | Auto-cooldown / probe-drive risks flapping with no data on real failure modes yet — that is a v1 feature. |
|
|
41
|
-
| 4 | Enforcement | **Single point in `POST /launch`**: before driving a tier-1 host, consult health; killed → skip the drive, append `host.error(host-killed)`, degrade to the inbox (same path as a drive failure). Never mutates the detected tier. | One synchronous fallback, not a tier mutation a poller has to observe. |
|
|
42
|
-
| 5 | Surface | CLI (`record` / `status` / `kill` / `reset`) + a `host_killed` flag on the launch response **+ a read-only `GET /api/v1/workspace/drive-health`**. | The GUI needs health data; without the endpoint it would read the JSON file directly and bypass the surface. The endpoint is ~10 lines reading the same data the CLI does. |
|
|
43
|
-
|
|
44
|
-
**Concurrency:** writes are atomic (temp file + `os.replace`) so a concurrent
|
|
45
|
-
reader never sees a partial file. The read-modify-write increment is best-effort
|
|
46
|
-
under true concurrency (a lost increment is acceptable — the session log is
|
|
47
|
-
canonical); drives are launch-paced in v0, so contention is rare.
|
|
48
|
-
|
|
49
|
-
## Consequences
|
|
50
|
-
|
|
51
|
-
- A host that fails 5 drives in a row auto-routes its launches to the Tier-3
|
|
52
|
-
inbox until an operator runs `reset` — a broken host CLI no longer burns turn
|
|
53
|
-
after turn.
|
|
54
|
-
- `GET /drive-health` gives the GUI (and an operator) a per-host snapshot
|
|
55
|
-
without reading the canonical (encrypted) session log.
|
|
56
|
-
- The cache is non-authoritative: deleting `workspace/health/` resets the
|
|
57
|
-
kill-switch state with no data loss (the session log retains the history).
|
|
58
|
-
|
|
59
|
-
## Alternatives considered
|
|
60
|
-
|
|
61
|
-
- **Derive metrics from session records on demand** — rejected as the primary
|
|
62
|
-
source: O(sessions) encrypted scans on every launch. (It remains the
|
|
63
|
-
canonical reconciliation source for a future v1 audit.)
|
|
64
|
-
- **Auto-cooldown + probe-drive recovery** — deferred to v1: no data yet on
|
|
65
|
-
whether hosts flap; manual reset is the conservative v0 choice.
|
|
66
|
-
- **Failure-rate window instead of a streak** — deferred: windowing math is
|
|
67
|
-
v0 over-engineering; a consecutive-streak is enough to catch a dead CLI.
|
|
68
|
-
- **No HTTP endpoint (CLI only)** — rejected (council): the GUI would read the
|
|
69
|
-
file directly and bypass the surface; the endpoint is cheap.
|
|
70
|
-
|
|
71
|
-
## Deferred to v1 (debt)
|
|
72
|
-
|
|
73
|
-
Auto-cooldown + probe-drive recovery, failure-rate windows, per-error-kind
|
|
74
|
-
weighting (a `bad-envelope` may warrant a faster trip than a transient
|
|
75
|
-
`timeout`), and reconciliation of the cache against the canonical session log.
|
|
76
|
-
|
|
77
|
-
## References
|
|
78
|
-
|
|
79
|
-
- [`ADR-070`](ADR-070-tier1-drive-loop.md) / [`ADR-071`](ADR-071-launch-drive-integration.md) / [`ADR-072`](ADR-072-codex-gemini-drive-configs.md) — the drive loop this instruments.
|
|
80
|
-
- [`ADR-064`](ADR-064-append-jsonl-per-record-encryption.md) — the canonical encrypted session store.
|
|
81
|
-
- [`daily-workspace`](../contracts/daily-workspace.md) — workspace surface (lists `/drive-health`).
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
adr: 074
|
|
3
|
-
status: accepted
|
|
4
|
-
date: 2026-06-08
|
|
5
|
-
decision: drive-kill-switch-auto-recovery
|
|
6
|
-
supersedes: —
|
|
7
|
-
superseded_by: —
|
|
8
|
-
phase: employee-product Phase 8 (road-to-employee-product-and-external-proof)
|
|
9
|
-
type: structural
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
# ADR-074 — Drive kill-switch auto-cooldown recovery (v1)
|
|
13
|
-
|
|
14
|
-
## Status
|
|
15
|
-
|
|
16
|
-
**Accepted** · 2026-06-08. Design converged via AI-council (claude-sonnet-4-5 +
|
|
17
|
-
gpt-4o, design mode, 2026-06-08). Implements the auto-recovery that
|
|
18
|
-
[`ADR-073`](ADR-073-drive-health-kill-switch.md) explicitly deferred to v1, and
|
|
19
|
-
**amends** ADR-073's decision 3 ("manual reset only"): an *auto*-tripped host
|
|
20
|
-
now self-recovers via a half-open probe; a *manual* kill stays sticky.
|
|
21
|
-
|
|
22
|
-
## Context
|
|
23
|
-
|
|
24
|
-
ADR-073's kill-switch was manual-reset-only — a tripped host stayed inbox-only
|
|
25
|
-
until an operator ran `reset`. That is operator toil once the underlying problem
|
|
26
|
-
clears. This v1 adds a classic circuit-breaker half-open recovery.
|
|
27
|
-
|
|
28
|
-
## Decision
|
|
29
|
-
|
|
30
|
-
| # | Question | Verdict | Rationale |
|
|
31
|
-
|---|---|---|---|
|
|
32
|
-
| 1 | State model | **Three-state `gate(host)` → closed / open / half_open** (via `killed_at` + cooldown). Cache miss → `closed` (fail open). | The launch path switches on the gate; the boolean `is_killed` becomes a status read. |
|
|
33
|
-
| 2 | Probe mechanism | **Reuse the next real launch** as the probe. async / synthetic probe = v2. | This is a **local single-user** workspace, not a high-traffic service — the one user paying a probe's latency ~once per cooldown is acceptable; an async probe runner is disproportionate for v1. The council's UX concern is noted and the feature is flag-gated as the escape hatch. |
|
|
34
|
-
| 3 | Success semantics | A success **closes** an *auto*-tripped circuit (un-kills); a *manual* kill is never auto-cleared. Safe because a real drive only runs when closed/half-open. | Auto-recovery without operator toil; manual intent is preserved. |
|
|
35
|
-
| 4 | Probe failure | Re-open, restart the cooldown (**fixed**, no back-off in v1) and `trip_count += 1`. **Flapping guard:** at `MAX_AUTO_TRIPS = 3` the host goes **sticky** (manual reset only). | Bounds a misconfigured host probing forever and burning quota. |
|
|
36
|
-
| 5 | Cooldown | **Env-tunable** `AGENT_CONFIG_DRIVE_COOLDOWN_SEC` (default **600 s**), global; no per-host override. | A wrong default is an env flip (30 s), not a code deploy; per-host is over-engineering. |
|
|
37
|
-
| 6 | Manual kill | **Sticky** (`kill_reason: "manual"`) — never auto-recovers. Only auto-trips (`"auto"`) take the cooldown path. | A manual kill encodes out-of-band knowledge ("broken until I fix it"); auto-healing it would fight the operator. |
|
|
38
|
-
|
|
39
|
-
**Escape hatch (council: mandatory):** the whole behaviour is behind
|
|
40
|
-
`AGENT_CONFIG_DRIVE_AUTO_RECOVERY` (default on; `0/false/off` → ADR-073 v0
|
|
41
|
-
manual-only). **Concurrency:** a `probe_started_at` time-lease (`PROBE_LEASE_SEC
|
|
42
|
-
= 120`) makes a concurrent launch see `open` instead of firing a second
|
|
43
|
-
simultaneous probe — adequate for launch-paced single-user writes; a full
|
|
44
|
-
compare-and-swap lock is v2. **Observability:** `record(..., is_probe=True)` +
|
|
45
|
-
`last_was_probe` distinguish probe outcomes from normal drives.
|
|
46
|
-
|
|
47
|
-
## Launch enforcement
|
|
48
|
-
|
|
49
|
-
`POST /launch` calls `gate(host)` before driving: `open` → skip + inbox
|
|
50
|
-
(`host.error(host-killed)`); `half_open` → drive ONE probe, record with
|
|
51
|
-
`is_probe`, response carries `recovered: true` on a successful probe; `closed`
|
|
52
|
-
→ normal drive. One enforcement point, unchanged from ADR-073.
|
|
53
|
-
|
|
54
|
-
## Consequences
|
|
55
|
-
|
|
56
|
-
- An auto-tripped host recovers on its own once the problem clears — no operator
|
|
57
|
-
toil for transient outages.
|
|
58
|
-
- A genuinely broken host trips → probes → re-trips up to `MAX_AUTO_TRIPS`, then
|
|
59
|
-
goes sticky so it stops burning probes until an operator intervenes.
|
|
60
|
-
- A manual `kill` behaves exactly as before (sticky); the escape-hatch flag
|
|
61
|
-
restores full v0 behaviour.
|
|
62
|
-
|
|
63
|
-
## Alternatives considered
|
|
64
|
-
|
|
65
|
-
- **Async / synthetic background probe** (council's preferred UX) — deferred to
|
|
66
|
-
v2: needs a background task runner; disproportionate for a local single-user
|
|
67
|
-
tool where the probe-latency cost lands on at most one user per cooldown.
|
|
68
|
-
- **Exponential cooldown back-off** — deferred to v2: fixed cooldown + the
|
|
69
|
-
`MAX_AUTO_TRIPS` sticky guard already bounds flapping.
|
|
70
|
-
- **Auto-recovering manual kills** — rejected: a manual kill is an operator
|
|
71
|
-
decision that auto-healing would override.
|
|
72
|
-
- **Hard-coded cooldown** — rejected: env-tunability is three lines and turns a
|
|
73
|
-
wrong default into a 30-second fix.
|
|
74
|
-
|
|
75
|
-
## Deferred to v2 (debt)
|
|
76
|
-
|
|
77
|
-
Async / synthetic probe (decouple recovery from a user launch), full
|
|
78
|
-
compare-and-swap probe lock, per-host cooldown override, exponential back-off,
|
|
79
|
-
per-error-kind trip weighting, cache↔session-log reconciliation.
|
|
80
|
-
|
|
81
|
-
## References
|
|
82
|
-
|
|
83
|
-
- [`ADR-073`](ADR-073-drive-health-kill-switch.md) — the v0 kill-switch this amends (decision 3).
|
|
84
|
-
- [`ADR-070`](ADR-070-tier1-drive-loop.md) / [`ADR-071`](ADR-071-launch-drive-integration.md) — the drive loop + launch enforcement point.
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
adr: 075
|
|
3
|
-
status: accepted
|
|
4
|
-
date: 2026-06-08
|
|
5
|
-
decision: workspace-gui-drive
|
|
6
|
-
supersedes: —
|
|
7
|
-
superseded_by: —
|
|
8
|
-
phase: employee-product Phase 8 (road-to-employee-product-and-external-proof)
|
|
9
|
-
type: structural
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
# ADR-075 — WorkspacePage drive integration (GUI v0)
|
|
13
|
-
|
|
14
|
-
## Status
|
|
15
|
-
|
|
16
|
-
**Accepted** · 2026-06-08. Design converged via AI-council (claude-sonnet-4-5 +
|
|
17
|
-
gpt-4o, design mode, 2026-06-08) — both members converged firmly on the minimal
|
|
18
|
-
surface. Makes the drive backend (ADR-069..074) usable from the GUI: the
|
|
19
|
-
employee fills a task's inputs, runs it, and sees the host's turn — the
|
|
20
|
-
"external-proof" payoff of the phase.
|
|
21
|
-
|
|
22
|
-
## Context
|
|
23
|
-
|
|
24
|
-
`src/ui/pages/WorkspacePage.tsx` (Preact + signals) had a "Start session" button
|
|
25
|
-
that POSTed `/launch {role, task}` with **no inputs** and showed a banner — so
|
|
26
|
-
every real-task launch hit the backend's render-error path. The GUI never
|
|
27
|
-
collected inputs, never showed the driven turn, never surfaced drive health.
|
|
28
|
-
|
|
29
|
-
## Decision
|
|
30
|
-
|
|
31
|
-
| # | Question | Verdict | Rationale |
|
|
32
|
-
|---|---|---|---|
|
|
33
|
-
| 1 | Input collection | **Inline expander form** under the task — one field per declared input, required marked, `shape` as placeholder. | Least chrome; fits the existing task list. A modal / rail is more surface for no v0 benefit. |
|
|
34
|
-
| 2 | Input-spec source | **Inline the spec in `GET /roles/:role/tasks`** (each task gains `inputs` + `skill_hint`); **no** dedicated inspect endpoint. | A dedicated lazy endpoint blocks the form on an RTT and adds a second failure mode; the per-task spec is <500 bytes. Parsed in Node (prompts are plaintext) for display; render/drive stays Python-authoritative. |
|
|
35
|
-
| 3 | Result display | Driven turn → assistant **text** inline, **collapsed behind "Show full" past 2000 chars** (+ model/token meta). Each non-driven outcome → a distinct banner. | A 4k-token turn would break the chrome — the collapse is a day-1 guardrail, not post-v0 polish. |
|
|
36
|
-
| 4 | Drive-health UI | **Defer a dedicated health panel.** Reflect `host_killed` / `recovered` from the launch response in the banner only. | `GET /drive-health` exists (ADR-073) for a later panel; a health dashboard is not the v0 critical path. |
|
|
37
|
-
| 5 | Host selection | **Hard-code `host: 'claude-code'`** for v0; no host picker. | The v0 goal is validating the drive flow end-to-end with one host; a picker is UX debt (host ids ≠ model names) + an N×M test matrix for an unrequested feature. |
|
|
38
|
-
|
|
39
|
-
**Shape-mismatch safety (council blocker check):** the renderer stringifies any
|
|
40
|
-
input value (`str(val)`), so a wrong-typed input never 500s — only a
|
|
41
|
-
missing-required input returns the structured `render-error` the banner shows.
|
|
42
|
-
|
|
43
|
-
## Surface
|
|
44
|
-
|
|
45
|
-
- `GET /roles/:role/tasks` now returns, per task, `inputs: [{name, required,
|
|
46
|
-
shape}]` + `skill_hint` (read-only display data).
|
|
47
|
-
- `WorkspacePage`: selecting a role fetches tasks-with-specs; "Start session"
|
|
48
|
-
expands the inline `TaskForm`; "Run task" POSTs `/launch {role, task, inputs,
|
|
49
|
-
host: 'claude-code'}`; `TurnResult` renders the driven turn (collapsible);
|
|
50
|
-
`bannerFor()` maps every outcome (driven / recovered / host-killed /
|
|
51
|
-
render-error / no-prompt / handoff) to one banner.
|
|
52
|
-
|
|
53
|
-
## Consequences
|
|
54
|
-
|
|
55
|
-
- The full render → drive → turn path is now exercisable by an employee in the
|
|
56
|
-
browser — the phase's external-proof goal.
|
|
57
|
-
- The tasks endpoint stays one round-trip; no new endpoint, no subprocess
|
|
58
|
-
fan-out (Node parses the plaintext prompt frontmatter for the display spec).
|
|
59
|
-
- Multi-host selection and a drive-health panel are deferred with the
|
|
60
|
-
`host: 'claude-code'` default and the `host_killed`/`recovered` banner as the
|
|
61
|
-
forward hooks.
|
|
62
|
-
|
|
63
|
-
## Alternatives considered
|
|
64
|
-
|
|
65
|
-
- **Dedicated `/prompts/:name` inspect endpoint** — rejected: RTT block on form
|
|
66
|
-
open + a second failure mode; inlining is trivial payload.
|
|
67
|
-
- **Host picker in v0** — rejected (both council members): speculative,
|
|
68
|
-
UX-confusing (host ids), and an N×M test matrix before any user has asked.
|
|
69
|
-
- **Render the turn raw with no collapse** — rejected: a long turn breaks the
|
|
70
|
-
layout; the char-collapse is a day-1 guardrail.
|
|
71
|
-
- **Drive-health panel now** — deferred: not the v0 critical path; the endpoint
|
|
72
|
-
already exists for a later pass.
|
|
73
|
-
|
|
74
|
-
## Deferred to v1 (debt)
|
|
75
|
-
|
|
76
|
-
A host picker (claude-code / codex / gemini / inbox), a drive-health panel fed
|
|
77
|
-
by `GET /drive-health`, streaming turn output (v0 is single-turn), and a richer
|
|
78
|
-
input-validation surface (typed fields beyond textarea + `shape` hints).
|
|
79
|
-
|
|
80
|
-
## References
|
|
81
|
-
|
|
82
|
-
- [`ADR-069`](ADR-069-prompt-renderer.md) / [`ADR-071`](ADR-071-launch-drive-integration.md) / [`ADR-073`](ADR-073-drive-health-kill-switch.md) / [`ADR-074`](ADR-074-drive-kill-switch-auto-recovery.md) — the drive backend this surfaces.
|
|
83
|
-
- [`daily-workspace`](../contracts/daily-workspace.md) — the workspace surface contract.
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
adr: 076
|
|
3
|
-
status: accepted
|
|
4
|
-
date: 2026-06-09
|
|
5
|
-
decision: workspace-multi-turn
|
|
6
|
-
supersedes: —
|
|
7
|
-
superseded_by: —
|
|
8
|
-
phase: employee-product Phase 8 (road-to-employee-product-and-external-proof)
|
|
9
|
-
type: structural
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
# ADR-076 — Workspace multi-turn = conversation continuation (v0)
|
|
13
|
-
|
|
14
|
-
## Status
|
|
15
|
-
|
|
16
|
-
**Accepted** · 2026-06-09. Design converged via AI-council (claude-sonnet-4-5 +
|
|
17
|
-
gpt-4o, design mode, 2026-06-08) — both members converged firmly on **Reading B
|
|
18
|
-
(conversation continuation)** over Reading A (agentic tool-execution loop).
|
|
19
|
-
Resolves the ADR-070 "multi-turn + tool execution" debt by scoping it correctly.
|
|
20
|
-
|
|
21
|
-
## Context
|
|
22
|
-
|
|
23
|
-
The ADR-070 debt was labelled "multi-turn + tool execution," which conflates two
|
|
24
|
-
very different features. The council's framing decision:
|
|
25
|
-
|
|
26
|
-
- **Reading A — agentic tool-execution loop at our layer.** Parse tool-call
|
|
27
|
-
requests from the host envelope, *we* execute them, feed results back. This is
|
|
28
|
-
**largely redundant** — `claude -p` / `codex exec` / `gemini -p` each run their
|
|
29
|
-
own agent loop + tool execution internally and return the *final* result. It
|
|
30
|
-
also makes **us** execute model-requested actions — a heavy security surface
|
|
31
|
-
(`security-sensitive-stop`: threat-model + allowlist + sandbox) for little
|
|
32
|
-
gain over what the host already does.
|
|
33
|
-
- **Reading B — conversation continuation.** Every launch today is a *fresh*
|
|
34
|
-
single-turn session with no way to send a **follow-up** to the *same* host
|
|
35
|
-
session. We reuse the host session id (captured on `host.turn`) to continue
|
|
36
|
-
(`claude --resume`, `codex exec resume`, `gemini --resume`). The host keeps
|
|
37
|
-
running its own tools internally each turn; we add no execution surface.
|
|
38
|
-
|
|
39
|
-
**Decision: Reading B.** It is the real, non-redundant gap and is far
|
|
40
|
-
lower-risk. Reading A is deferred indefinitely (redundant with the host loop).
|
|
41
|
-
|
|
42
|
-
## Decision (Reading B)
|
|
43
|
-
|
|
44
|
-
| # | Question | Verdict |
|
|
45
|
-
|---|---|---|
|
|
46
|
-
| 1 | Surface | Dedicated **`POST /workspace/sessions/:id/continue {prompt}`**. |
|
|
47
|
-
| 2 | Per-host resume | `build_resume_args(session_id, prompt)` + `supports_resume` per `HOST_CONFIGS`. All three Tier-1 hosts expose a documented non-interactive resume (verified): claude `--resume <id> -p`, codex `exec resume <id> --json <prompt>`, gemini `--resume <id> -p`. |
|
|
48
|
-
| 3 | session-id source | The **most recent `host.turn`** record's `session_id` (the session log is canonical). **No host turn with a session_id → HTTP 409** ("run at least one turn first"). |
|
|
49
|
-
| 4 | Health interaction | Continuation is a drive → same `gate()` + `recordDriveHealth` as a launch (kill-switch applies). |
|
|
50
|
-
| 5 | First PR | Mechanics only — `build_resume_args` + the session-id lookup + `/continue`. The GUI "Follow up" affordance is a later PR. |
|
|
51
|
-
|
|
52
|
-
**Failure handling:** a resume drive failure is recorded as `host.error` and
|
|
53
|
-
returned `{driven:false, error_kind}` (same shape as a launch). A host-session-
|
|
54
|
-
expired 410 mapping (distinct from a generic failure) needs per-host stderr
|
|
55
|
-
parsing → deferred to v1. The append-only session log has no per-session
|
|
56
|
-
"status", so there is no "stuck in_progress" state to recover.
|
|
57
|
-
|
|
58
|
-
## Consequences
|
|
59
|
-
|
|
60
|
-
- A follow-up turn continues the *same* host conversation (the host carries its
|
|
61
|
-
own context + ran its own tools on turn 1) — no tool-execution surface at our
|
|
62
|
-
layer, no threat-model gate tripped.
|
|
63
|
-
- `/continue` reuses the launch drive machinery (`driveHostTurn` gained an
|
|
64
|
-
optional `resumeSessionId`), so the kill-switch, health recording, and
|
|
65
|
-
encrypted `host.turn` append all apply unchanged.
|
|
66
|
-
- The 409 guard makes "continue a session that never drove" fail loud.
|
|
67
|
-
|
|
68
|
-
## Alternatives considered
|
|
69
|
-
|
|
70
|
-
- **Reading A (agentic tool-exec loop)** — rejected: redundant with the host
|
|
71
|
-
CLI's own loop + a heavy security surface for no gain.
|
|
72
|
-
- **Fold continuation into a generalised launch** — rejected: a dedicated
|
|
73
|
-
session-keyed endpoint is clearer and avoids overloading launch's contract.
|
|
74
|
-
- **A separate session-id index** — rejected: the session log already records
|
|
75
|
-
it on `host.turn`; a second source would drift.
|
|
76
|
-
- **Concurrency lock on `/continue`** — deferred: the drive infra is already
|
|
77
|
-
sequential-launch-assumed; concurrent continuation is a later hardening
|
|
78
|
-
concern, documented not solved.
|
|
79
|
-
|
|
80
|
-
## Deferred to v1 (debt)
|
|
81
|
-
|
|
82
|
-
A 410 "host session expired" mapping (per-host stderr detection), a session-
|
|
83
|
-
level concurrency lock, and the GUI "Follow up" affordance. Reading A (agentic
|
|
84
|
-
tool execution at our layer) remains deferred indefinitely — redundant with the
|
|
85
|
-
host loop.
|
|
86
|
-
|
|
87
|
-
## References
|
|
88
|
-
|
|
89
|
-
- [`ADR-070`](ADR-070-tier1-drive-loop.md) — the drive loop + the "multi-turn" debt this scopes.
|
|
90
|
-
- [`ADR-071`](ADR-071-launch-drive-integration.md) / [`ADR-073`](ADR-073-drive-health-kill-switch.md) — the launch drive + kill-switch `/continue` reuses.
|
|
91
|
-
- [`ADR-023`](ADR-023-host-agent-protocol.md) — the three Tier-1 hosts + their CLIs.
|
|
92
|
-
- [`security-sensitive-stop`](../../dist/agent-src/rules/security-sensitive-stop.md) — why Reading A's execution surface was avoided.
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
adr: 077
|
|
3
|
-
status: accepted
|
|
4
|
-
date: 2026-06-09
|
|
5
|
-
decision: workspace-followup-gui
|
|
6
|
-
supersedes: —
|
|
7
|
-
superseded_by: —
|
|
8
|
-
phase: employee-product Phase 8 (road-to-employee-product-and-external-proof)
|
|
9
|
-
type: structural
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
# ADR-077 — WorkspacePage follow-up affordance (GUI for /continue)
|
|
13
|
-
|
|
14
|
-
## Status
|
|
15
|
-
|
|
16
|
-
**Accepted** · 2026-06-09. Closes the GUI debt [`ADR-076`](ADR-076-workspace-multi-turn.md)
|
|
17
|
-
explicitly deferred ("the GUI 'Follow up' affordance"). A small, mechanical
|
|
18
|
-
reuse of the ADR-075 GUI patterns over the merged `/continue` endpoint — no
|
|
19
|
-
council needed (no design fork; the only target is the active session).
|
|
20
|
-
|
|
21
|
-
## Context
|
|
22
|
-
|
|
23
|
-
ADR-076 shipped `POST /sessions/:id/continue` (resume the same host session) but
|
|
24
|
-
left it unsurfaced — the WorkspacePage could drive a first turn (ADR-075) but
|
|
25
|
-
not send a follow-up. This wires that.
|
|
26
|
-
|
|
27
|
-
## Decision
|
|
28
|
-
|
|
29
|
-
- After a **driven** turn, `TurnResult` shows a **"Follow up"** textarea +
|
|
30
|
-
"Send follow-up" button. Submit calls `continueTurn(launchResult.id, prompt)`
|
|
31
|
-
→ `POST /sessions/:id/continue {prompt}` → replaces the displayed turn with
|
|
32
|
-
the continuation (reusing `TurnResult` + `bannerFor`).
|
|
33
|
-
- **Target = the active session** (`launchResult.id`). v0 does not add a
|
|
34
|
-
session-strip "continue any past session" affordance — the natural flow is
|
|
35
|
-
launch → see turn → follow up. Picking an arbitrary historical session to
|
|
36
|
-
resume is deferred.
|
|
37
|
-
- The box appears **only when a turn has driven** (`launchResult.driven`); a
|
|
38
|
-
hand-off / render-error / host-killed outcome shows no follow-up (there is no
|
|
39
|
-
host session to continue) — matching the `/continue` 409 guard.
|
|
40
|
-
- `followupText` resets on a new launch (a fresh launch starts a fresh
|
|
41
|
-
conversation); it clears on a landed continuation, and is **kept** on a
|
|
42
|
-
failed one so the user can retry.
|
|
43
|
-
|
|
44
|
-
## Consequences
|
|
45
|
-
|
|
46
|
-
- The end-to-end multi-turn flow is now visible: launch → turn → follow-up →
|
|
47
|
-
turn, all in the same host session, with the kill-switch + health applying to
|
|
48
|
-
every turn (server-side, ADR-073/076).
|
|
49
|
-
- Pure additive reuse — no new endpoint, no server change; `bannerFor` /
|
|
50
|
-
`TurnResult` already handle the continuation response shape (identical to a
|
|
51
|
-
launch result).
|
|
52
|
-
|
|
53
|
-
## Alternatives considered
|
|
54
|
-
|
|
55
|
-
- **Continue any session from the strip** — deferred: the active-session flow
|
|
56
|
-
is the v0 critical path; arbitrary-session resume needs a session-detail view
|
|
57
|
-
first.
|
|
58
|
-
- **A dedicated continuation ADR section in ADR-076** — chose a thin ADR-077
|
|
59
|
-
instead so the deferred-debt closure has its own audit entry.
|
|
60
|
-
|
|
61
|
-
## Deferred to v1 (debt)
|
|
62
|
-
|
|
63
|
-
Continue an arbitrary past session from the session strip; a per-turn
|
|
64
|
-
conversation thread view (today the latest turn replaces the prior in the
|
|
65
|
-
result pane — the full thread lives in the session JSONL).
|
|
66
|
-
|
|
67
|
-
## References
|
|
68
|
-
|
|
69
|
-
- [`ADR-076`](ADR-076-workspace-multi-turn.md) — the `/continue` endpoint this surfaces (and the debt it closes).
|
|
70
|
-
- [`ADR-075`](ADR-075-workspace-gui-drive.md) — the GUI drive patterns (`TaskForm` / `TurnResult` / `bannerFor`) reused here.
|