@event4u/agent-config 9.8.0 → 9.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +1 -1
- package/CHANGELOG.md +278 -298
- package/CONTRIBUTING.md +23 -7
- package/MIGRATION.md +20 -0
- package/README.md +55 -9
- package/dist/agent-src/commands/agents/audit.md +1 -1
- package/dist/agent-src/commands/agents/optimize.md +2 -2
- package/dist/agent-src/commands/agents/user.md +1 -1
- package/dist/agent-src/commands/agents.md +1 -1
- package/dist/agent-src/commands/check-current-md.md +3 -3
- package/dist/agent-src/commands/fix/portability.md +2 -2
- package/dist/agent-src/commands/fix/pr-comments-loop.md +136 -0
- package/dist/agent-src/commands/fix/refs.md +2 -2
- package/dist/agent-src/commands/fix/route.md +4 -3
- package/dist/agent-src/commands/fix.md +9 -6
- package/dist/agent-src/commands/ghostwriter.md +1 -1
- package/dist/agent-src/commands/image.md +1 -1
- package/dist/agent-src/commands/optimize/augmentignore.md +1 -1
- package/dist/agent-src/commands/optimize/skills.md +2 -2
- package/dist/agent-src/commands/post-as.md +1 -1
- package/dist/agent-src/commands/research.md +1 -1
- package/dist/agent-src/commands/roadmap/ai-council.md +1 -1
- package/dist/agent-src/commands/security-audit-config.md +1 -1
- package/dist/agent-src/commands/team/delegate.md +4 -0
- package/dist/agent-src/commands/video.md +1 -1
- package/dist/agent-src/contexts/authority/kernel-rule-edits.md +1 -1
- package/dist/agent-src/contexts/contracts/emergency-triage-block.md +2 -2
- package/dist/agent-src/contexts/execution/auto-dispatch-classification.md +48 -2
- package/dist/agent-src/contexts/execution/orchestration-telemetry.md +10 -0
- package/dist/agent-src/contexts/execution/subagent-modes-detail.md +109 -8
- package/dist/agent-src/contexts/execution/subagent-response-contract.md +20 -0
- package/dist/agent-src/contexts/execution/subagent-spawn-contract.md +53 -3
- package/dist/agent-src/rules/code-provenance.md +112 -0
- package/dist/agent-src/rules/external-code-graph-interop.md +4 -4
- package/dist/agent-src/rules/history-discipline.md +80 -0
- package/dist/agent-src/rules/no-roadmap-references.md +1 -1
- package/dist/agent-src/rules/php-coding.md +1 -0
- package/dist/agent-src/rules/reviewer-awareness.md +1 -0
- package/dist/agent-src/rules/roadmap-ci-steps-policy.md +1 -0
- package/dist/agent-src/rules/roadmap-progress-sync.md +7 -0
- package/dist/agent-src/rules/scale-discipline.md +92 -0
- package/dist/agent-src/rules/security-sensitive-stop.md +10 -0
- package/dist/agent-src/rules/session-canary.md +77 -0
- package/dist/agent-src/rules/token-optimizer-maintenance.md +1 -1
- package/dist/agent-src/rules/tool-safety.md +3 -1
- package/dist/agent-src/rules/untrusted-input-defense.md +10 -0
- package/dist/agent-src/skills/agent-security-review/SKILL.md +1 -1
- package/dist/agent-src/skills/code-intelligence/SKILL.md +17 -14
- package/dist/agent-src/skills/condense-memory/SKILL.md +1 -1
- package/dist/agent-src/skills/corpus-grounding/SKILL.md +0 -3
- package/dist/agent-src/skills/description-assist/SKILL.md +1 -1
- package/dist/agent-src/skills/design-review/SKILL.md +5 -6
- package/dist/agent-src/skills/design-tokens/SKILL.md +0 -1
- package/dist/agent-src/skills/history-design/SKILL.md +101 -0
- package/dist/agent-src/skills/history-design/evals/triggers.json +17 -0
- package/dist/agent-src/skills/humanizer/SKILL.md +3 -3
- package/dist/agent-src/skills/image-editing/SKILL.md +1 -1
- package/dist/agent-src/skills/image-generation/SKILL.md +2 -1
- package/dist/agent-src/skills/image-provider-routing/SKILL.md +2 -2
- package/dist/agent-src/skills/launch-readiness/SKILL.md +1 -1
- package/dist/agent-src/skills/license-compliance-audit/SKILL.md +161 -0
- package/dist/agent-src/skills/license-compliance-audit/evals/triggers.json +52 -0
- package/dist/agent-src/skills/license-compliance-borrow-check/SKILL.md +145 -0
- package/dist/agent-src/skills/license-compliance-borrow-check/evals/triggers.json +52 -0
- package/dist/agent-src/skills/license-compliance-credits/SKILL.md +97 -0
- package/dist/agent-src/skills/license-compliance-credits/evals/triggers.json +52 -0
- package/dist/agent-src/skills/md-language-check/SKILL.md +1 -1
- package/dist/agent-src/skills/override-management/SKILL.md +1 -1
- package/dist/agent-src/skills/prediction-pool-optimizer/SKILL.md +7 -7
- package/dist/agent-src/skills/project-analysis-core/SKILL.md +1 -1
- package/dist/agent-src/skills/prompt-engineering-image/SKILL.md +3 -2
- package/dist/agent-src/skills/react-shadcn-ui/SKILL.md +2 -2
- package/dist/agent-src/skills/recursive-verification/SKILL.md +6 -0
- package/dist/agent-src/skills/refine-ticket/SKILL.md +3 -3
- package/dist/agent-src/skills/roadmap-writing/SKILL.md +4 -0
- package/dist/agent-src/skills/rtk-output-filtering/SKILL.md +31 -12
- package/dist/agent-src/skills/rule-refactor/SKILL.md +3 -3
- package/dist/agent-src/skills/schema-review/SKILL.md +92 -0
- package/dist/agent-src/skills/schema-review/evals/triggers.json +17 -0
- package/dist/agent-src/skills/secrets-management/SKILL.md +3 -4
- package/dist/agent-src/skills/security-audit/SKILL.md +1 -1
- package/dist/agent-src/skills/security-maturity-assessment/SKILL.md +1 -1
- package/dist/agent-src/skills/skill-improvement-pipeline/SKILL.md +3 -3
- package/dist/agent-src/skills/skill-writing/SKILL.md +2 -2
- package/dist/agent-src/skills/source-discovery/SKILL.md +5 -5
- package/dist/agent-src/skills/subagent-orchestration/SKILL.md +45 -85
- package/dist/agent-src/skills/subagent-orchestration/prompts/README.md +5 -4
- package/dist/agent-src/skills/systematic-debugging/SKILL.md +2 -2
- package/dist/agent-src/skills/tailwind-engineer/SKILL.md +2 -3
- package/dist/agent-src/skills/token-optimizer/SKILL.md +4 -4
- package/dist/agent-src/skills/verify-repair-loop/SKILL.md +1 -1
- package/dist/agent-src/skills/worktree-lifecycle/SKILL.md +2 -3
- package/dist/agent-src/templates/AGENTS.md +1 -1
- package/dist/agent-src/templates/agents/.gitattributes.fragment +25 -6
- package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
- package/dist/agent-src/templates/command.md +3 -3
- package/dist/agent-src/templates/persona.md +2 -2
- package/dist/agent-src/templates/rule.md +2 -2
- package/dist/agent-src/templates/scripts/telemetry/engagement.ts +77 -0
- package/dist/agent-src/templates/scripts/telemetry_record.ts +33 -1
- package/dist/cli/commands/doctorShell.js +20 -0
- package/dist/cli/commands/doctorShell.js.map +1 -1
- package/dist/cli/commands/rtkDetect.js +58 -0
- package/dist/cli/commands/rtkDetect.js.map +1 -0
- package/dist/cli/firstRunNotice.js +70 -0
- package/dist/cli/firstRunNotice.js.map +1 -0
- package/dist/cli/main.js +35 -3
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/registry.js +7 -1
- package/dist/cli/registry.js.map +1 -1
- package/dist/discovery/deprecation-report.md +1 -1
- package/dist/discovery/discovery-manifest.json +362 -78
- package/dist/discovery/discovery-manifest.json.sha256 +1 -1
- package/dist/discovery/discovery-manifest.summary.md +6 -4
- package/dist/discovery/orphan-report.md +1 -1
- package/dist/discovery/packs.json +90 -8
- package/dist/discovery/trust-report.md +11 -11
- package/dist/discovery/workspaces.json +31 -7
- package/dist/hooks/dispatch.js +19475 -0
- package/dist/install/agentSwitchDetection.js +75 -0
- package/dist/install/agentSwitchDetection.js.map +1 -0
- package/dist/install/agentSwitchProfile.js +117 -0
- package/dist/install/agentSwitchProfile.js.map +1 -0
- package/dist/install/atomic.js +1 -1
- package/dist/install/detect.js +1 -1
- package/dist/install/install.mjs +775 -486
- package/dist/install/rtkDetection.js +213 -0
- package/dist/install/rtkDetection.js.map +1 -0
- package/dist/install/rule_scope.js +2 -1
- package/dist/install/rule_scope.js.map +1 -1
- package/dist/install/types.js +2 -2
- package/dist/install/wizard-plan.js +1 -1
- package/dist/install/wizardDismissals.js +58 -0
- package/dist/install/wizardDismissals.js.map +1 -0
- package/dist/mcp/awesome-mcp-servers.row.md +1 -1
- package/dist/mcp/mcp-cloudflare-catalogue.json +1 -1
- package/dist/mcp/registry-manifest.json +15 -4
- package/dist/mcp/server.json +20 -0
- package/dist/mcp/server.mjs +44292 -0
- package/dist/router.json +1 -1
- package/dist/scripts/condense.js +14 -7
- package/dist/scripts/condense.js.map +1 -1
- package/dist/server/app.js +4 -2
- package/dist/server/app.js.map +1 -1
- package/dist/server/io/sharedWriteCheck.js +101 -0
- package/dist/server/io/sharedWriteCheck.js.map +1 -0
- package/dist/server/routes/ping.js +14 -0
- package/dist/server/routes/ping.js.map +1 -1
- package/dist/server/routes/settings.js +21 -4
- package/dist/server/routes/settings.js.map +1 -1
- package/dist/server/routes/userMd.js +21 -4
- package/dist/server/routes/userMd.js.map +1 -1
- package/dist/server/routes/wizard.js +68 -25
- package/dist/server/routes/wizard.js.map +1 -1
- package/dist/server/schemas/settings.js +4 -2
- package/dist/server/schemas/settings.js.map +1 -1
- package/dist/ui/assets/index-BpSQt5vm.js +40 -0
- package/dist/ui/assets/index-BpSQt5vm.js.map +1 -0
- package/dist/ui/assets/index-jSfMW8_t.css +1 -0
- package/dist/ui/index.html +2 -2
- package/docs/MIGRATION.md +16 -0
- package/docs/guidelines/component-oriented-and-oop-development.md +4 -2
- package/package.json +21 -11
- package/src/agent-src/templates/AGENTS.md +1 -1
- package/src/agent-src/templates/scripts/telemetry/engagement.ts +77 -0
- package/src/agent-src/templates/scripts/telemetry_record.ts +33 -1
- package/src/config/agent-settings.template.yml +52 -14
- package/src/config/discovery/packs.yml +22 -0
- package/src/config/discovery/workspaces.yml +1 -1
- package/src/config/evaluator-budgets.json +47 -0
- package/src/config/hook-latency-budget.json +20 -0
- package/src/install/agentSwitchDetection.ts +90 -0
- package/src/install/agentSwitchProfile.ts +131 -0
- package/src/install/atomic.ts +1 -1
- package/src/install/detect.ts +1 -1
- package/src/install/rtkDetection.ts +274 -0
- package/src/install/rule_scope.ts +9 -2
- package/src/install/types.ts +2 -2
- package/src/install/wizard-plan.ts +1 -1
- package/src/install/wizardDismissals.ts +60 -0
- package/src/scripts/_cli/cmd_doctor.ts +62 -1
- package/src/scripts/_cli/cmd_memory_get.ts +197 -0
- package/src/scripts/_cli/cmd_refresh.ts +30 -0
- package/src/scripts/_dispatch.bash +81 -0
- package/src/scripts/_lib/auto_dispatch.corpus.test.ts +64 -1
- package/src/scripts/_lib/auto_dispatch.ts +76 -0
- package/src/scripts/_lib/detect_target_license.ts +714 -0
- package/src/scripts/_lib/fixtures/secret-detector/negatives.txt +5 -0
- package/src/scripts/_lib/fixtures/secret-detector/positives.txt +4 -0
- package/src/scripts/_lib/install_drift.ts +194 -0
- package/src/scripts/_lib/memory_fts_index.ts +390 -0
- package/src/scripts/_lib/orchestration_record.ts +91 -2
- package/src/scripts/_lib/persistence/adapter_raw_sql.ts +443 -0
- package/src/scripts/_lib/persistence/detect_audit_coverage.ts +423 -0
- package/src/scripts/_lib/persistence/detect_bounded_reads.ts +154 -0
- package/src/scripts/_lib/persistence/detect_index_parity.ts +576 -0
- package/src/scripts/_lib/persistence/detect_n1_eloquent.ts +226 -0
- package/src/scripts/_lib/persistence/detect_offload.ts +441 -0
- package/src/scripts/_lib/persistence/detect_prisma_growth.ts +74 -0
- package/src/scripts/_lib/persistence/offload_catalog.ts +73 -0
- package/src/scripts/_lib/persistence/types.ts +109 -0
- package/src/scripts/_lib/rtk_allowlist.ts +44 -0
- package/src/scripts/_lib/secret_detector.test.ts +5 -0
- package/src/scripts/_lib/secret_detector.ts +9 -0
- package/src/scripts/_lib/secret_detector_adversarial.test.ts +116 -0
- package/src/scripts/_lib/spawn_env.ts +7 -0
- package/src/scripts/_lib/sqlite_guard.ts +191 -0
- package/src/scripts/_lib/subagent_spawn.ts +53 -0
- package/src/scripts/_lib/worker_budget.ts +107 -0
- package/src/scripts/ai_council/blind_review.ts +0 -0
- package/src/scripts/ai_council/config.ts +12 -6
- package/src/scripts/ai_council/orchestrator.ts +73 -3
- package/src/scripts/ai_team/review_gate.ts +8 -10
- package/src/scripts/ai_team/team_dispatch.ts +48 -0
- package/src/scripts/audit_initial_context.ts +1 -1
- package/src/scripts/bench_cross_source_eval.ts +400 -0
- package/src/scripts/bench_honesty_score.ts +1093 -0
- package/src/scripts/bench_hook_latency.ts +218 -0
- package/src/scripts/build_mcp_catalog.ts +275 -0
- package/src/scripts/build_mcp_registry_manifest.ts +46 -0
- package/src/scripts/build_proof.ts +45 -0
- package/src/scripts/chat_history.ts +8 -5
- package/src/scripts/check_backstop_debt.ts +23 -13
- package/src/scripts/check_bundle_path_leakage.ts +343 -0
- package/src/scripts/check_evaluator_budgets.ts +99 -0
- package/src/scripts/check_knowledge_sharing.ts +12 -1
- package/src/scripts/check_no_external_sources.ts +2 -2
- package/src/scripts/check_source_pointer_freshness.ts +28 -3
- package/src/scripts/code_graph/build.ts +0 -0
- package/src/scripts/code_graph/cli.ts +181 -9
- package/src/scripts/code_graph/detect.ts +52 -0
- package/src/scripts/code_graph/intent.ts +45 -0
- package/src/scripts/code_graph/query.ts +143 -29
- package/src/scripts/code_graph/sqlite_store.ts +174 -0
- package/src/scripts/condense.ts +14 -6
- package/src/scripts/context_hygiene_hook.ts +8 -5
- package/src/scripts/council_cli.ts +126 -12
- package/src/scripts/detect_target_license.ts +203 -0
- package/src/scripts/evaluator_umbrella.sh +145 -0
- package/src/scripts/external_sources_denylist.json +5 -3
- package/src/scripts/first_run_gate_hook.ts +9 -5
- package/src/scripts/hermetic-install.sh +3 -3
- package/src/scripts/hook_manifest.yaml +55 -16
- package/src/scripts/hooks/block_kernel_rule_writes.ts +212 -0
- package/src/scripts/hooks/block_no_verify.ts +9 -9
- package/src/scripts/hooks/code_graph_nudge_hook.ts +11 -4
- package/src/scripts/hooks/concern_registry.ts +75 -0
- package/src/scripts/hooks/design_slop_hook.ts +8 -5
- package/src/scripts/hooks/dispatch_entry.ts +37 -0
- package/src/scripts/hooks/dispatch_hook.ts +176 -3
- package/src/scripts/hooks/hook_stdin.ts +42 -0
- package/src/scripts/hooks/rtk_wrap_hook.ts +26 -12
- package/src/scripts/hot_context_hook.ts +7 -6
- package/src/scripts/injection_scan_hook.ts +9 -1
- package/src/scripts/install +6 -6
- package/src/scripts/install-hooks.sh +4 -4
- package/src/scripts/install.sh +5 -4
- package/src/scripts/install.ts +264 -23
- package/src/scripts/learning_sidecar.ts +0 -0
- package/src/scripts/lint_budget_ownership.ts +89 -0
- package/src/scripts/lint_command_routing.ts +35 -5
- package/src/scripts/lint_command_verbs.ts +42 -9
- package/src/scripts/lint_consumer_internal_refs.ts +211 -0
- package/src/scripts/lint_discovery_vocabulary.ts +2 -0
- package/src/scripts/lint_documented_commands.ts +670 -0
- package/src/scripts/lint_framework_leakage.ts +17 -3
- package/src/scripts/lint_framework_leakage_allowlist.json +32 -0
- package/src/scripts/lint_governed_writes.ts +335 -0
- package/src/scripts/lint_hidden_unicode.ts +6 -0
- package/src/scripts/lint_mcp_registry_manifest.ts +26 -1
- package/src/scripts/lint_memory_tripwire.ts +186 -0
- package/src/scripts/lint_override_kernel_guard.ts +74 -26
- package/src/scripts/lint_persistence.ts +171 -0
- package/src/scripts/lint_pre_migration_refs.ts +106 -0
- package/src/scripts/lint_provenance.ts +547 -0
- package/src/scripts/lint_provenance_vocabulary.ts +437 -0
- package/src/scripts/lint_spawn_payload.ts +283 -0
- package/src/scripts/lint_store_boundary.ts +152 -0
- package/src/scripts/lint_versioned_cache.ts +7 -1
- package/src/scripts/mcp_server/__main__.ts +7 -2
- package/src/scripts/mcp_server/catalog.ts +23 -1
- package/src/scripts/mcp_server/consumer_tool_catalog.json +563 -193
- package/src/scripts/mcp_server/prompts.ts +6 -0
- package/src/scripts/mcp_server/tool_catalog_source.ts +332 -0
- package/src/scripts/mcp_server/tools.ts +56 -5
- package/src/scripts/mcp_telemetry_query.ts +2 -33
- package/src/scripts/mcp_telemetry_store.ts +64 -34
- package/src/scripts/memory_learn_hook.ts +126 -0
- package/src/scripts/memory_lookup.ts +0 -0
- package/src/scripts/memory_replay_24.ts +312 -0
- package/src/scripts/memory_report.ts +16 -3
- package/src/scripts/memory_signal.ts +48 -0
- package/src/scripts/memory_status.ts +6 -0
- package/src/scripts/minimal_safe_diff_hook.ts +8 -5
- package/src/scripts/onboarding_gate_hook.ts +8 -5
- package/src/scripts/orchestration_record.ts +16 -0
- package/src/scripts/pr_url_reminder_hook.ts +8 -1
- package/src/scripts/prepack-check.mjs +17 -0
- package/src/scripts/prepack_lifecycle_check.d.mts +8 -0
- package/src/scripts/prepack_lifecycle_check.mjs +82 -0
- package/src/scripts/profile_staleness_hook.ts +8 -7
- package/src/scripts/report_install_drift.ts +109 -0
- package/src/scripts/roadmap_progress_hook.ts +8 -5
- package/src/scripts/schemas/license-policy.schema.json +89 -0
- package/src/scripts/schemas/provenance-borrow.schema.json +46 -0
- package/src/scripts/schemas/rule.schema.json +10 -0
- package/src/scripts/self_review_gate.test.ts +173 -1
- package/src/scripts/self_review_gate.ts +155 -15
- package/src/scripts/session_canary_hook.ts +182 -0
- package/src/scripts/smoke_quickstart.ts +2 -2
- package/src/scripts/surface_probe_hook.ts +8 -7
- package/src/scripts/sync_gitattributes.ts +310 -0
- package/src/scripts/team_review_gate_hook.ts +13 -16
- package/src/scripts/verify_before_complete_hook.ts +8 -5
- package/src/scripts/wrapper_freshness_hook.ts +8 -7
- package/src/server/schemas/settings.ts +8 -2
- package/dist/ui/assets/index-BPFMZWUs.css +0 -1
- package/dist/ui/assets/index-CrmZ34Rg.js +0 -40
- package/dist/ui/assets/index-CrmZ34Rg.js.map +0 -1
- package/docs/CLAIMS.md +0 -286
- package/docs/DISTRIBUTION_CHECKLIST.md +0 -170
- package/docs/RELEASE_STORY_TEMPLATE.md +0 -37
- package/docs/SKILL_CENSUS.md +0 -352
- package/docs/adrs/cost/0001-hard-stop-hook.md +0 -114
- package/docs/adrs/cost/README.md +0 -9
- package/docs/adrs/memory/0001-consumer-side-snapshot.md +0 -119
- package/docs/adrs/memory/README.md +0 -10
- package/docs/adrs/router/0001-three-tier-routing.md +0 -119
- package/docs/adrs/router/README.md +0 -9
- package/docs/adrs/schema/0001-json-schema-frontmatter.md +0 -102
- package/docs/adrs/schema/README.md +0 -9
- package/docs/adrs/smoke/0001-per-tier-smoke-scripts.md +0 -99
- package/docs/adrs/smoke/README.md +0 -9
- package/docs/adrs/telegraph/0001-default-off-until-bench.md +0 -93
- package/docs/adrs/telegraph/README.md +0 -9
- package/docs/announcements/2026-05-non-dev-launch.md +0 -79
- package/docs/announcements/2026-07-honest-cost-sweep-launch.md +0 -84
- package/docs/anti-reskin-gate.md +0 -60
- package/docs/architecture/augment-projection.md +0 -70
- package/docs/architecture/claude-bundle.md +0 -77
- package/docs/architecture/current-onboard-baseline.md +0 -126
- package/docs/architecture/current-safety-behavior.md +0 -137
- package/docs/architecture/multi-tool-projection.md +0 -125
- package/docs/architecture/setup-vs-settings-shared-surface.md +0 -114
- package/docs/architecture/source-projection.md +0 -85
- package/docs/architecture.md +0 -390
- package/docs/archive/CHANGELOG-6.0.0-overview.md +0 -953
- package/docs/archive/CHANGELOG-7.0.0.md +0 -419
- package/docs/archive/CHANGELOG-pre-2.11.0.md +0 -141
- package/docs/archive/CHANGELOG-pre-2.15.0.md +0 -244
- package/docs/archive/CHANGELOG-pre-2.16.0.md +0 -48
- package/docs/archive/CHANGELOG-pre-2.17.0.md +0 -63
- package/docs/archive/CHANGELOG-pre-2.2.0.md +0 -2138
- package/docs/archive/CHANGELOG-pre-2.20.0.md +0 -159
- package/docs/archive/CHANGELOG-pre-2.25.0.md +0 -191
- package/docs/archive/CHANGELOG-pre-2.7.0.md +0 -185
- package/docs/archive/CHANGELOG-pre-3.0.0.md +0 -130
- package/docs/archive/CHANGELOG-pre-3.1.0.md +0 -167
- package/docs/archive/CHANGELOG-pre-3.2.0.md +0 -268
- package/docs/archive/CHANGELOG-pre-4.0.0.md +0 -80
- package/docs/archive/CHANGELOG-pre-4.5.0.md +0 -289
- package/docs/archive/CHANGELOG-pre-5.4.0.md +0 -260
- package/docs/archive/CHANGELOG-pre-5.9.0.md +0 -270
- package/docs/archive/CHANGELOG-pre-6.0.0.md +0 -473
- package/docs/archive/CHANGELOG-pre-7.0.0.md +0 -126
- package/docs/archive/CHANGELOG-pre-8.0.0.md +0 -301
- package/docs/archive/CHANGELOG-pre-8.1.0.md +0 -316
- package/docs/archive/CHANGELOG-pre-8.12.0.md +0 -304
- package/docs/archive/CHANGELOG-pre-8.9.0.md +0 -306
- package/docs/archive/CHANGELOG-pre-9.2.0.md +0 -276
- package/docs/artefact-census.md +0 -71
- package/docs/benchmark.md +0 -785
- package/docs/benchmark.pinned.yml +0 -31
- package/docs/benchmarks.md +0 -85
- package/docs/capability-matrix.md +0 -33
- package/docs/case-studies/_template.md +0 -60
- package/docs/case-studies/frontend-design-positioning.md +0 -86
- package/docs/catalog.md +0 -726
- package/docs/command-flows.md +0 -272
- package/docs/command-naming-audit.md +0 -60
- package/docs/comparison.yaml +0 -87
- package/docs/contracts/CHANGELOG-conventions.md +0 -149
- package/docs/contracts/STABILITY.md +0 -188
- package/docs/contracts/adoption-signal-floor.md +0 -127
- package/docs/contracts/adr-architectural-consensus-mechanism.md +0 -68
- package/docs/contracts/adr-chat-history-split.md +0 -140
- package/docs/contracts/adr-command-suggestion.md +0 -144
- package/docs/contracts/adr-forecast-construction-shape.md +0 -90
- package/docs/contracts/adr-gtm-context-spine.md +0 -116
- package/docs/contracts/adr-implement-ticket-runtime.md +0 -121
- package/docs/contracts/adr-install-user-type-axis.md +0 -107
- package/docs/contracts/adr-layout.md +0 -107
- package/docs/contracts/adr-level-6-productization.md +0 -145
- package/docs/contracts/adr-mcp-runtime.md +0 -128
- package/docs/contracts/adr-product-ui-track.md +0 -381
- package/docs/contracts/adr-prompt-driven-execution.md +0 -186
- package/docs/contracts/adr-settings-sync-engine.md +0 -128
- package/docs/contracts/adr-user-types-axis.md +0 -127
- package/docs/contracts/adr-wing4-context-spine.md +0 -126
- package/docs/contracts/agent-user-schema.md +0 -170
- package/docs/contracts/agents-layout.md +0 -148
- package/docs/contracts/agents-md-tech-stack.md +0 -75
- package/docs/contracts/ai-council-config.md +0 -829
- package/docs/contracts/ai-team-config.md +0 -224
- package/docs/contracts/analysis-memory-loop.md +0 -149
- package/docs/contracts/at-rest-encryption.md +0 -191
- package/docs/contracts/audit-log-v1.md +0 -150
- package/docs/contracts/auto-orchestration-v1.md +0 -70
- package/docs/contracts/benchmark-ab-contract.md +0 -106
- package/docs/contracts/benchmark-corpus-spec.md +0 -125
- package/docs/contracts/benchmark-report-schema.md +0 -113
- package/docs/contracts/branch-protection-policy.md +0 -139
- package/docs/contracts/brand-token-consumption.md +0 -74
- package/docs/contracts/capability-boundary.md +0 -69
- package/docs/contracts/capability-packs.md +0 -217
- package/docs/contracts/ci-cost-budget.md +0 -111
- package/docs/contracts/ci-green-floor.md +0 -141
- package/docs/contracts/command-category-governance.md +0 -84
- package/docs/contracts/command-clusters.md +0 -399
- package/docs/contracts/command-surface-tiers.md +0 -176
- package/docs/contracts/command-taxonomy.md +0 -137
- package/docs/contracts/condensation-default-kill-criterion.md +0 -116
- package/docs/contracts/config-presets.md +0 -144
- package/docs/contracts/conformance.md +0 -84
- package/docs/contracts/consumer-bridge.md +0 -73
- package/docs/contracts/context-paths.md +0 -101
- package/docs/contracts/context-spine.md +0 -179
- package/docs/contracts/cost-dashboard.md +0 -143
- package/docs/contracts/cost-enforcement.md +0 -134
- package/docs/contracts/cost-profile-defaults.md +0 -110
- package/docs/contracts/cost-summary-schema.md +0 -107
- package/docs/contracts/creative-pack-boundary.md +0 -63
- package/docs/contracts/cross-repo-retrieval.md +0 -64
- package/docs/contracts/cross-wing-handoff.md +0 -134
- package/docs/contracts/daily-workspace.md +0 -147
- package/docs/contracts/decision-engine-gates.md +0 -120
- package/docs/contracts/decision-trace-v1.md +0 -177
- package/docs/contracts/design-artifact-lifecycle.md +0 -93
- package/docs/contracts/design-artifact-verification.md +0 -153
- package/docs/contracts/discovery-manifest.md +0 -209
- package/docs/contracts/discovery-manifest.schema.json +0 -254
- package/docs/contracts/evidence-based-pruning.md +0 -102
- package/docs/contracts/explain-modes.md +0 -187
- package/docs/contracts/explain-trace.schema.json +0 -144
- package/docs/contracts/file-ownership-matrix.json +0 -13941
- package/docs/contracts/file-ownership-matrix.md +0 -135
- package/docs/contracts/frontmatter-contract.md +0 -140
- package/docs/contracts/ghostwriter-schema.md +0 -337
- package/docs/contracts/governance-enforcement-projection.md +0 -159
- package/docs/contracts/gui-wizard.md +0 -350
- package/docs/contracts/harness-expectations.md +0 -128
- package/docs/contracts/hook-architecture-v1.md +0 -325
- package/docs/contracts/host-agent-protocol.md +0 -110
- package/docs/contracts/implement-ticket-flow.md +0 -625
- package/docs/contracts/init-telemetry.md +0 -132
- package/docs/contracts/injected-block-authenticity-model.md +0 -66
- package/docs/contracts/install-layout.md +0 -249
- package/docs/contracts/install-scopes.md +0 -82
- package/docs/contracts/installed-tools-lockfile.md +0 -144
- package/docs/contracts/installer-agent-mode.md +0 -137
- package/docs/contracts/iron-law-overrides.txt +0 -26
- package/docs/contracts/kernel-membership.md +0 -339
- package/docs/contracts/linear-ai-rules-inclusion.md +0 -143
- package/docs/contracts/linear-ai-three-layers.md +0 -130
- package/docs/contracts/linter-structural-model.md +0 -181
- package/docs/contracts/load-context-budget-model.md +0 -259
- package/docs/contracts/load-context-schema.md +0 -220
- package/docs/contracts/local-analytics.md +0 -160
- package/docs/contracts/local-knowledge-ingestion.md +0 -96
- package/docs/contracts/local-server-api.md +0 -134
- package/docs/contracts/local-server-ports.md +0 -53
- package/docs/contracts/low-impact-corpus-format.md +0 -95
- package/docs/contracts/mcp-beta-criteria.md +0 -130
- package/docs/contracts/mcp-cloud-scope.md +0 -355
- package/docs/contracts/mcp-discovery-phase-notice.md +0 -60
- package/docs/contracts/mcp-phase-1-scope.md +0 -272
- package/docs/contracts/mcp-registry-manifest.schema.json +0 -129
- package/docs/contracts/mcp-tool-inventory.md +0 -64
- package/docs/contracts/mcp-tool-stub-envelope.md +0 -78
- package/docs/contracts/measurement-baseline.md +0 -103
- package/docs/contracts/memory-visibility-v1.md +0 -160
- package/docs/contracts/mental-models.md +0 -336
- package/docs/contracts/migrate-command.md +0 -233
- package/docs/contracts/multi-tool-projection-fidelity.md +0 -134
- package/docs/contracts/namespace.md +0 -125
- package/docs/contracts/no-runtime-boundary.md +0 -61
- package/docs/contracts/one-off-script-lifecycle.md +0 -110
- package/docs/contracts/orchestration-dsl-v1.md +0 -153
- package/docs/contracts/package-self-orientation.md +0 -163
- package/docs/contracts/pilot/agent-authority.md +0 -24
- package/docs/contracts/pilot/direct-answers.md +0 -70
- package/docs/contracts/pilot/language-and-tone.md +0 -63
- package/docs/contracts/plain-language-surface.md +0 -117
- package/docs/contracts/prelaunch-diagnostics.md +0 -151
- package/docs/contracts/profile-system.md +0 -167
- package/docs/contracts/reasoning-discipline-protocol.md +0 -83
- package/docs/contracts/release-pr-gating.md +0 -151
- package/docs/contracts/release-sizing.md +0 -107
- package/docs/contracts/release-trunk-sync.md +0 -105
- package/docs/contracts/review-lens-schema.md +0 -64
- package/docs/contracts/roadmap-complexity-standard.md +0 -138
- package/docs/contracts/role-experience.md +0 -125
- package/docs/contracts/router-blending.md +0 -71
- package/docs/contracts/rule-classification.md +0 -171
- package/docs/contracts/rule-interactions.md +0 -132
- package/docs/contracts/rule-interactions.yml +0 -260
- package/docs/contracts/rule-priority-hierarchy.md +0 -88
- package/docs/contracts/rule-router.md +0 -287
- package/docs/contracts/safety-model.md +0 -129
- package/docs/contracts/session-profile-overlay.md +0 -157
- package/docs/contracts/settings-api.md +0 -264
- package/docs/contracts/settings-gui-agent-mode.schema.json +0 -128
- package/docs/contracts/settings-sync-yaml-subset.md +0 -139
- package/docs/contracts/skill-bundled-assets.md +0 -62
- package/docs/contracts/skill-discovery.md +0 -80
- package/docs/contracts/skill-distribution-channels.md +0 -66
- package/docs/contracts/skill-domains.md +0 -144
- package/docs/contracts/skill-dry-run.md +0 -47
- package/docs/contracts/skill-family-map.yml +0 -915
- package/docs/contracts/smoke-contracts.md +0 -144
- package/docs/contracts/subagent-boundary.md +0 -74
- package/docs/contracts/surface-agent-contracts.md +0 -153
- package/docs/contracts/surface-matrix.md +0 -108
- package/docs/contracts/surface-tiers.md +0 -81
- package/docs/contracts/telegraph-telemetry.md +0 -83
- package/docs/contracts/ticket-bundle-format.md +0 -233
- package/docs/contracts/tier-3-contrib-plugin.md +0 -137
- package/docs/contracts/trust-and-safety.md +0 -144
- package/docs/contracts/ui-stack-extension.md +0 -237
- package/docs/contracts/ui-track-flow.md +0 -329
- package/docs/contracts/universal-skills.md +0 -91
- package/docs/contracts/user-type-schema.md +0 -146
- package/docs/contracts/value-dashboard-spec.md +0 -378
- package/docs/contracts/value-report-schema.md +0 -168
- package/docs/contracts/workflow-packs.md +0 -121
- package/docs/contracts/workspace-boundary.md +0 -84
- package/docs/contracts/workspace-documents.md +0 -144
- package/docs/contracts/write-engine.md +0 -182
- package/docs/cookbook.md +0 -152
- package/docs/customization.md +0 -696
- package/docs/decisions/ADR-001-kernel-swap-deferred.md +0 -109
- package/docs/decisions/ADR-002-kernel-bucket-overrides.md +0 -135
- package/docs/decisions/ADR-003-flat-cluster-subs-and-colon-syntax.md +0 -137
- package/docs/decisions/ADR-004-rule-governance-pruning.md +0 -240
- package/docs/decisions/ADR-005-subagent-worktrees.md +0 -120
- package/docs/decisions/ADR-006-skill-tools-python-pilot.md +0 -114
- package/docs/decisions/ADR-007-agent-discovery-scopes.md +0 -371
- package/docs/decisions/ADR-008-installed-tools-manifest.md +0 -160
- package/docs/decisions/ADR-009-event4u-namespace.md +0 -188
- package/docs/decisions/ADR-010-profile-pack-preset-boundary.md +0 -168
- package/docs/decisions/ADR-011-domain-pack-readiness.md +0 -213
- package/docs/decisions/ADR-012-typescript-cli-shell.md +0 -162
- package/docs/decisions/ADR-013-discovery-frontmatter-contract.md +0 -342
- package/docs/decisions/ADR-014-gui-framework-choice.md +0 -136
- package/docs/decisions/ADR-015-discovery-manifest-contract.md +0 -146
- package/docs/decisions/ADR-016-installer-architecture.md +0 -191
- package/docs/decisions/ADR-017-monorepo-physical-layout.md +0 -261
- package/docs/decisions/ADR-018-trust-and-safety-layer.md +0 -159
- package/docs/decisions/ADR-019-router-json-dist-location.md +0 -124
- package/docs/decisions/ADR-020-global-only-consumer-scope.md +0 -213
- package/docs/decisions/ADR-021-deployment-shape.md +0 -153
- package/docs/decisions/ADR-022-daily-workspace-decomposition.md +0 -140
- package/docs/decisions/ADR-023-host-agent-protocol.md +0 -129
- package/docs/decisions/ADR-024-workspace-v0-feature-floor.md +0 -126
- package/docs/decisions/ADR-025-workspace-chrome.md +0 -119
- package/docs/decisions/ADR-026-explain-mode-translation.md +0 -117
- package/docs/decisions/ADR-027-changelog-machine-vs-manual.md +0 -129
- package/docs/decisions/ADR-028-root-layout.md +0 -147
- package/docs/decisions/ADR-029-multi-workspace-deferred.md +0 -122
- package/docs/decisions/ADR-030-claude-code-command-projection.md +0 -147
- package/docs/decisions/ADR-031-validation-severity-tiers-and-projection-roundtrip.md +0 -97
- package/docs/decisions/ADR-032-linked-projects-scope.md +0 -122
- package/docs/decisions/ADR-033-distribution-identity-npm-primary.md +0 -81
- package/docs/decisions/ADR-034-per-skill-model-recommendation-transport.md +0 -63
- package/docs/decisions/ADR-035-model-capability-tiers.md +0 -104
- package/docs/decisions/ADR-036-global-install-browser-wizard-handoff.md +0 -106
- package/docs/decisions/ADR-037-cost-profile-untangle.md +0 -117
- package/docs/decisions/ADR-038-canonical-settings-path.md +0 -96
- package/docs/decisions/ADR-039-claude-skills-untracked.md +0 -139
- package/docs/decisions/ADR-040-execution-model-projection-time-filtering.md +0 -244
- package/docs/decisions/ADR-041-controlled-command-verbs.md +0 -133
- package/docs/decisions/ADR-042-runtime-resolver-decision-gate.md +0 -113
- package/docs/decisions/ADR-043-monorepo-collapse-to-src-domains.md +0 -128
- package/docs/decisions/ADR-044-command-naming-scheme-hyphenated.md +0 -250
- package/docs/decisions/ADR-045-src-source-layout-and-profiles-as-views.md +0 -111
- package/docs/decisions/ADR-046-thin-command-principle.md +0 -93
- package/docs/decisions/ADR-047-framework-neutral-stack-adaptive-commands.md +0 -94
- package/docs/decisions/ADR-048-command-justification-rule.md +0 -106
- package/docs/decisions/ADR-049-configuration-trust-boundary.md +0 -132
- package/docs/decisions/ADR-050-workspace-vs-package-root-boundary.md +0 -121
- package/docs/decisions/ADR-051-uncondensed-source-container-relocation.md +0 -114
- package/docs/decisions/ADR-052-packages-removal-and-pack-home-migration.md +0 -86
- package/docs/decisions/ADR-053-agents-namespace-dual-role-resolution.md +0 -132
- package/docs/decisions/ADR-054-rule-adherence-decay-triggered-restate.md +0 -143
- package/docs/decisions/ADR-055-flow-layer-data-model.md +0 -235
- package/docs/decisions/ADR-056-unvalidated-video-adapters-disposition.md +0 -124
- package/docs/decisions/ADR-057-consolidation-evidence-gate-outcomes.md +0 -135
- package/docs/decisions/ADR-058-condensed-output-relocation-to-dist.md +0 -94
- package/docs/decisions/ADR-059-render-resume-filesystem-as-state.md +0 -161
- package/docs/decisions/ADR-060-comfyui-sandbox-model.md +0 -154
- package/docs/decisions/ADR-061-corpus-grounding-layer.md +0 -230
- package/docs/decisions/ADR-062-encrypt-at-rest-store-architecture.md +0 -121
- package/docs/decisions/ADR-063-append-jsonl-encryption-deferred.md +0 -83
- package/docs/decisions/ADR-064-append-jsonl-per-record-encryption.md +0 -113
- package/docs/decisions/ADR-065-tier3-inbox-handoff-v0.md +0 -86
- package/docs/decisions/ADR-066-skill-body-prerendering.md +0 -93
- package/docs/decisions/ADR-067-glama-registry-listing.md +0 -259
- package/docs/decisions/ADR-068-host-tier-detection.md +0 -90
- package/docs/decisions/ADR-069-prompt-renderer.md +0 -97
- package/docs/decisions/ADR-070-tier1-drive-loop.md +0 -94
- package/docs/decisions/ADR-071-launch-drive-integration.md +0 -95
- package/docs/decisions/ADR-072-codex-gemini-drive-configs.md +0 -90
- package/docs/decisions/ADR-073-drive-health-kill-switch.md +0 -81
- package/docs/decisions/ADR-074-drive-kill-switch-auto-recovery.md +0 -84
- package/docs/decisions/ADR-075-workspace-gui-drive.md +0 -83
- package/docs/decisions/ADR-076-workspace-multi-turn.md +0 -92
- package/docs/decisions/ADR-077-workspace-followup-gui.md +0 -70
- package/docs/decisions/ADR-078-drive-health-panel.md +0 -70
- package/docs/decisions/ADR-079-workspace-host-picker.md +0 -81
- package/docs/decisions/ADR-080-host-session-expired-410.md +0 -92
- package/docs/decisions/ADR-081-drive-health-reset-and-410-affordance.md +0 -71
- package/docs/decisions/ADR-082-410-one-click-relaunch.md +0 -58
- package/docs/decisions/ADR-083-session-thread-and-arbitrary-continuation.md +0 -85
- package/docs/decisions/ADR-084-drive-health-refresh-on-drive.md +0 -52
- package/docs/decisions/ADR-085-mcp-stdio-end-user-distribution-shape.md +0 -158
- package/docs/decisions/ADR-086-read-only-cross-agent-mcp-discovery-helper.md +0 -171
- package/docs/decisions/ADR-087-installer-e2e-test-strategy.md +0 -111
- package/docs/decisions/ADR-088-no-external-runtime-federation.md +0 -144
- package/docs/decisions/ADR-089-lean-local-plugin-install.md +0 -111
- package/docs/decisions/ADR-090-visibility-command-frontmatter-field.md +0 -95
- package/docs/decisions/ADR-091-split-meta-capability-packs.md +0 -113
- package/docs/decisions/ADR-092-defer-command-tier-alias-removal.md +0 -117
- package/docs/decisions/ADR-093-ai-council-config-user-global.md +0 -117
- package/docs/decisions/ADR-094-agent-memory-layer-removal.md +0 -94
- package/docs/decisions/ADR-095-workspace-boundary-contract.md +0 -108
- package/docs/decisions/ADR-096-analysis-workbench.md +0 -110
- package/docs/decisions/ADR-097-mission-recipe-privilege-boundary.md +0 -121
- package/docs/decisions/ADR-098-evidence-first-structure-discovery.md +0 -154
- package/docs/decisions/ADR-099-file-first-pattern-library.md +0 -87
- package/docs/decisions/ADR-100-global-knowledge-card-sharing.md +0 -140
- package/docs/decisions/ADR-101-ticket-bundle-emission.md +0 -109
- package/docs/decisions/ADR-102-ticket-handoff-paste-and-mcp.md +0 -72
- package/docs/decisions/ADR-103-global-knowledge-default-off-until-measured.md +0 -92
- package/docs/decisions/ADR-104-ai-council-config-global-only.md +0 -119
- package/docs/decisions/ADR-105-automatic-subagent-orchestration.md +0 -108
- package/docs/decisions/ADR-106-recursive-verification-benchmark-gate.md +0 -126
- package/docs/decisions/ADR-107-legal-domain-pack-adoption.md +0 -70
- package/docs/decisions/ADR-108-open-source-forever-no-commercial-tier.md +0 -46
- package/docs/decisions/ADR-109-subagent-v1-contract.md +0 -248
- package/docs/decisions/ADR-110-discipline-profile-resolution-locus.md +0 -112
- package/docs/decisions/ADR-111-canonical-glama-listing.md +0 -97
- package/docs/decisions/ADR-112-stdio-lite-stays-read-only.md +0 -92
- package/docs/decisions/ADR-113-ci-native-release-label-trigger.md +0 -209
- package/docs/decisions/ADR-114-commit-policy-iron-law-override.md +0 -85
- package/docs/decisions/ADR-115-command-cluster-consolidation-phase-4.md +0 -91
- package/docs/decisions/ADR-116-memory-tripwire-activation-path.md +0 -144
- package/docs/decisions/ADR-117-subagents-auto-default-on.md +0 -89
- package/docs/decisions/ADR-118-loop-engineering-boundaries.md +0 -162
- package/docs/decisions/ADR-119-global-knowledge-default-on.md +0 -104
- package/docs/decisions/ADR-120-council-chairman-mode.md +0 -70
- package/docs/decisions/ADR-121-knowledge-sensitivity-classes.md +0 -90
- package/docs/decisions/ADR-122-adversarial-verification-council.md +0 -166
- package/docs/decisions/ADR-123-runtime-security-scope-and-spawn-hardening.md +0 -142
- package/docs/decisions/ADR-124-embedded-engine-doctrine.md +0 -255
- package/docs/decisions/ADR-125-doc-screenshot-anonymization.md +0 -131
- package/docs/decisions/ADR-126-internet-reach-operator-tooling.md +0 -254
- package/docs/decisions/ADR-127-enforcement-claims-must-resolve.md +0 -150
- package/docs/decisions/ADR-128-executable-evidence-and-measured-escalation.md +0 -201
- package/docs/decisions/ADR-200-python-to-typescript-migration.md +0 -203
- package/docs/decisions/ADR-rule-kernel-and-router.md +0 -133
- package/docs/decisions/INDEX.md +0 -157
- package/docs/decisions/engine-reclassification-2026-07.md +0 -104
- package/docs/deploy/connector-setup.md +0 -129
- package/docs/deploy/env-vars.md +0 -70
- package/docs/deploy/policy-cookbook.md +0 -130
- package/docs/deploy/quickstart.md +0 -112
- package/docs/deploy/small-team-recipe.md +0 -148
- package/docs/deploy/team-deployment-posture.md +0 -111
- package/docs/design/adversarial-council-eval.md +0 -106
- package/docs/design/council-vs-solo-baseline.md +0 -92
- package/docs/design/cross-model-parity-eval.md +0 -82
- package/docs/design/length-neutral-judge-rerun.md +0 -92
- package/docs/design/utilization-window-criteria.md +0 -51
- package/docs/development.md +0 -230
- package/docs/distribution/awesome-list-submission.md +0 -46
- package/docs/distribution/consumer-matrix.md +0 -96
- package/docs/distribution/launch-story-draft.md +0 -58
- package/docs/distribution/mcp-submission-checklist.md +0 -95
- package/docs/distribution/public-install-smoke.md +0 -68
- package/docs/distribution/registries.md +0 -126
- package/docs/distribution/registry-submissions.md +0 -85
- package/docs/distribution/telemetry-privacy.md +0 -128
- package/docs/distribution/telemetry-schema.md +0 -174
- package/docs/distribution/topics-equivalents-decay-policy.md +0 -51
- package/docs/end-to-end-walkthroughs.md +0 -165
- package/docs/enforcement-by-host.md +0 -51
- package/docs/examples/agent-user.example.md +0 -22
- package/docs/experiences/agency.md +0 -49
- package/docs/experiences/content_creator.md +0 -49
- package/docs/experiences/developer.md +0 -49
- package/docs/experiences/finance.md +0 -50
- package/docs/experiences/founder.md +0 -49
- package/docs/experiences/ops.md +0 -49
- package/docs/featured-commands.md +0 -27
- package/docs/featured-skills.md +0 -95
- package/docs/flows.md +0 -67
- package/docs/getting-started-by-role.md +0 -190
- package/docs/getting-started-laravel.md +0 -72
- package/docs/getting-started-local-stdio.md +0 -77
- package/docs/getting-started.md +0 -254
- package/docs/github-topics.md +0 -93
- package/docs/governance-advantage.md +0 -72
- package/docs/governance.md +0 -96
- package/docs/guides/cross-repo-linked-projects.md +0 -93
- package/docs/guides/cross-repo-retrieval.md +0 -61
- package/docs/guides/frontend-design-corpus-refresh.md +0 -83
- package/docs/guides/gated-platform-reads.md +0 -221
- package/docs/guides/local-analytics.md +0 -125
- package/docs/guides/local-knowledge.md +0 -127
- package/docs/guides/skill-discovery.md +0 -71
- package/docs/guides/skill-preview.md +0 -71
- package/docs/hook-payload-capture.md +0 -221
- package/docs/install-friction-report.md +0 -66
- package/docs/installation.md +0 -959
- package/docs/maintainers/branch-protection.md +0 -105
- package/docs/maintainers/dev-mode.md +0 -106
- package/docs/maintainers/optional-media-deps.md +0 -50
- package/docs/maintainers/system-map.md +0 -85
- package/docs/mcp-registries.md +0 -94
- package/docs/mcp-server.md +0 -175
- package/docs/mcp.md +0 -147
- package/docs/media/proof-demo.cast +0 -14
- package/docs/media/proof-demo.gif +0 -0
- package/docs/migration/consumer-template-consumption-model.md +0 -145
- package/docs/migration/divergences/README.md +0 -55
- package/docs/migration/divergences/_template.md +0 -50
- package/docs/migration/divergences/bench-stats-float-precision.md +0 -72
- package/docs/migration/divergences/mcp-telemetry-node-sqlite.md +0 -61
- package/docs/migration/divergences/pack-mcp-content-gzip-body.md +0 -53
- package/docs/migration/divergences/src-scripts-build_cloud_bundle.md +0 -63
- package/docs/migration/divergences/src-scripts-check_memory.md +0 -91
- package/docs/migration/divergences/src-scripts-inventory_abstraction_budget.md +0 -65
- package/docs/migration/divergences/src-scripts-lint_marketplace.md +0 -57
- package/docs/migration/divergences/src-scripts-lint_mcp_registry_manifest.md +0 -70
- package/docs/migration/divergences/src-scripts-spotcheck_thin_root.md +0 -60
- package/docs/migration/divergences/src-scripts-validate_agent_settings.md +0 -58
- package/docs/migration/node-floor.md +0 -86
- package/docs/migration/v1-to-v2.md +0 -156
- package/docs/migration/yaml-roundtrip-spike.md +0 -163
- package/docs/migrations/commands-1.15.0.md +0 -117
- package/docs/parity/bench-external.json +0 -58
- package/docs/parity/bench.json +0 -41
- package/docs/parity/command-frontmatter.md +0 -60
- package/docs/parity/external-runtime.md +0 -46
- package/docs/personas.md +0 -178
- package/docs/positioning-evidence.md +0 -86
- package/docs/profiles.md +0 -108
- package/docs/proof.md +0 -252
- package/docs/quality.md +0 -98
- package/docs/readme-split-plan.md +0 -102
- package/docs/recruits/_template.md +0 -81
- package/docs/release-runbook.md +0 -141
- package/docs/role-experiences.md +0 -19
- package/docs/safety.md +0 -30
- package/docs/second-brain-scope.md +0 -116
- package/docs/self-review-gate.md +0 -65
- package/docs/setup/enterprise-and-offline.md +0 -201
- package/docs/setup/mcp-client-config.md +0 -358
- package/docs/setup/mcp-cloud-endpoints.md +0 -116
- package/docs/setup/mcp-cloud-registry-listing.md +0 -99
- package/docs/setup/mcp-cloud-setup.md +0 -183
- package/docs/setup/mcp-r2-bootstrap.md +0 -82
- package/docs/setup/mcp-server-docker.md +0 -101
- package/docs/setup/per-ide/aider.md +0 -48
- package/docs/setup/per-ide/antigravity.md +0 -68
- package/docs/setup/per-ide/augment.md +0 -89
- package/docs/setup/per-ide/claude-code.md +0 -97
- package/docs/setup/per-ide/claude-desktop.md +0 -207
- package/docs/setup/per-ide/cline.md +0 -43
- package/docs/setup/per-ide/codebuddy.md +0 -63
- package/docs/setup/per-ide/codex.md +0 -46
- package/docs/setup/per-ide/continue.md +0 -68
- package/docs/setup/per-ide/copilot.md +0 -80
- package/docs/setup/per-ide/cursor.md +0 -125
- package/docs/setup/per-ide/droid.md +0 -65
- package/docs/setup/per-ide/gemini-cli.md +0 -45
- package/docs/setup/per-ide/jetbrains.md +0 -76
- package/docs/setup/per-ide/kilocode.md +0 -66
- package/docs/setup/per-ide/kiro.md +0 -72
- package/docs/setup/per-ide/opencode.md +0 -62
- package/docs/setup/per-ide/qoder.md +0 -63
- package/docs/setup/per-ide/roocode.md +0 -68
- package/docs/setup/per-ide/trae.md +0 -63
- package/docs/setup/per-ide/warp.md +0 -63
- package/docs/setup/per-ide/windsurf.md +0 -109
- package/docs/setup/per-ide/zed.md +0 -73
- package/docs/showcase.md +0 -209
- package/docs/skill-duplication-findings.md +0 -91
- package/docs/skills-catalog.md +0 -265
- package/docs/skills-taxonomy.md +0 -90
- package/docs/spawn-site-policy.md +0 -72
- package/docs/succession.md +0 -80
- package/docs/threat-model.md +0 -30
- package/docs/troubleshooting.md +0 -155
- package/docs/ui-track-mental-model.md +0 -121
- package/docs/us-vs-the-category.md +0 -38
- package/docs/value.md +0 -86
- package/docs/walkthroughs/assets/workspace-role-grid.png +0 -0
- package/docs/walkthroughs/assets/workspace-session-started.png +0 -0
- package/docs/walkthroughs/assets/workspace-task-picker.png +0 -0
- package/docs/walkthroughs/daily-workspace-a11y.md +0 -87
- package/docs/walkthroughs/daily-workspace.md +0 -127
- package/docs/wedge/production-validator/README.md +0 -81
- package/docs/wedge/production-validator/first-run-check.sh +0 -42
- package/docs/wedge/production-validator/production-validator.md +0 -83
- package/docs/wizard.md +0 -173
- package/src/scripts/postinstall_gui.ts +0 -129
|
@@ -1,230 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
adr: 061
|
|
3
|
-
status: accepted
|
|
4
|
-
date: 2026-06-07
|
|
5
|
-
decision: corpus-grounding-layer
|
|
6
|
-
supersedes: —
|
|
7
|
-
superseded_by: —
|
|
8
|
-
phase: frontend design intelligence (road-to-frontend-design-intelligence, Phase 0)
|
|
9
|
-
type: structural
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
# ADR-061 — Reusable corpus-grounding layer; frontend is its first instance
|
|
13
|
-
|
|
14
|
-
## Status
|
|
15
|
-
|
|
16
|
-
**Accepted** · 2026-06-07. Records the AI-council convergence
|
|
17
|
-
(anthropic/claude-sonnet-4-5 + anthropic/claude-opus-4-5 + openai/gpt-4o,
|
|
18
|
-
deep 3-round debate, 2026-06-03 — no split, no tie-break) plus the four
|
|
19
|
-
implementation forks resolved 2026-06-07 (anthropic/claude-sonnet-4-5 +
|
|
20
|
-
openai/gpt-4o, converged).
|
|
21
|
-
|
|
22
|
-
## Context
|
|
23
|
-
|
|
24
|
-
The package's UI directive set (`audit → design → apply → review → polish`)
|
|
25
|
-
produces design briefs from agent judgment plus the `fe-design` heuristics —
|
|
26
|
-
there is no queryable design-knowledge corpus. The MIT-licensed
|
|
27
|
-
`nextlevelbuilder/ui-ux-pro-max-skill` repository ships exactly that: ~15
|
|
28
|
-
tabular CSVs (161-row `ui-reasoning` with JSON decision rules, WCAG-adjusted
|
|
29
|
-
color token sets, typography pairings, chart-selection knowledge, 16
|
|
30
|
-
per-framework best-practice files) plus a dependency-free pure-stdlib BM25
|
|
31
|
-
engine. The owner's escalated goal — *"real knowledge + real orchestration in
|
|
32
|
-
every domain, as flexible and good as possible"* — reshaped the adoption from
|
|
33
|
-
"copy a frontend corpus" into "build a reusable grounding layer; frontend is
|
|
34
|
-
its first instance."
|
|
35
|
-
|
|
36
|
-
## Decision
|
|
37
|
-
|
|
38
|
-
### 1. Four-operation routing — never one corpus for everything
|
|
39
|
-
|
|
40
|
-
Each domain's knowledge is split across four mechanisms; conflating them is a
|
|
41
|
-
named failure mode ("grounding theater"):
|
|
42
|
-
|
|
43
|
-
| Operation | When | Mechanism |
|
|
44
|
-
|---|---|---|
|
|
45
|
-
| **Grounding** | *before* action — constrains the option space | curated corpus + decision rules |
|
|
46
|
-
| **Reference** | *during* action — factual lookup | on-demand `references/` / RAG, not the corpus |
|
|
47
|
-
| **Validation** | *after* action — constraint check | rules / linters |
|
|
48
|
-
| **Method** | the procedure itself | framework skill |
|
|
49
|
-
|
|
50
|
-
A corpus **grounds** (pre-action). Mid-action lookup is reference; post-action
|
|
51
|
-
checking is a rule; the procedure stays a skill.
|
|
52
|
-
|
|
53
|
-
### 2. One shared engine, invoked not inherited
|
|
54
|
-
|
|
55
|
-
A generic engine lives at `src/skills/_lib/corpus-grounding/`
|
|
56
|
-
(`bm25_search.py`, `decision_engine.py`, `schema_validator.py`) with a
|
|
57
|
-
**versioned interface-stability contract** documented in its README before any
|
|
58
|
-
domain adopts it. Domains plug in via a manifest; the engine is grep-able,
|
|
59
|
-
never a hidden god-dependency. Retrieval: BM25 default with a structured
|
|
60
|
-
`filters` pre-filter from day one; retriever selected by name
|
|
61
|
-
(`bm25`/`structured`/`hybrid`); embeddings only on measured recall failure,
|
|
62
|
-
never network-by-default.
|
|
63
|
-
|
|
64
|
-
### 3. Schema-agnostic plug-in contract — explicitly NOT uniform
|
|
65
|
-
|
|
66
|
-
Each domain declares its own axes via a manifest (corpus files, search
|
|
67
|
-
columns, output columns, reasoning-map location) and an output tier:
|
|
68
|
-
**lookup-only → conditional-grounding (decision rules) → constraint-emission**.
|
|
69
|
-
Forcing the frontend schema onto other domains is a named failure mode. Every
|
|
70
|
-
corpus output carries a **confidence score + an evidence-gap line** by
|
|
71
|
-
contract (prevents false precision / authority inflation).
|
|
72
|
-
|
|
73
|
-
### 4. Grounding default = lightweight consultation
|
|
74
|
-
|
|
75
|
-
Default integration: a skill consults the corpus → proposes grounded options
|
|
76
|
-
with confidence + evidence-gap → human confirms. Directive-engine integration
|
|
77
|
-
is reserved for mature, naturally-sequential domains (frontend keeps its
|
|
78
|
-
directive engine — Tier 2); "directive engines everywhere" is rejected as
|
|
79
|
-
orchestration envy. `directives/ui/design.py` never imports the engine — the
|
|
80
|
-
corpus call lives in the skill layer (`ui-design-brief` /
|
|
81
|
-
`design-intelligence`), keeping the engine an optional dependency.
|
|
82
|
-
|
|
83
|
-
### 5. Qualification by decision-rule utility, NOT row count
|
|
84
|
-
|
|
85
|
-
A domain qualifies when (i) its selection/constraint decision is
|
|
86
|
-
externalizable as auditable rules that beat the agent's priors, and (ii)
|
|
87
|
-
grounding happens before action. Verdicts:
|
|
88
|
-
|
|
89
|
-
- **Strong**: security/threat-modeling (MITRE-derived), accessibility
|
|
90
|
-
(WCAG/ARIA patterns), API design, DB-query tuning.
|
|
91
|
-
- **Conditional (evidence-gated)**: finance *method selection*,
|
|
92
|
-
architecture-pattern selection — thin pre-action selection corpora only;
|
|
93
|
-
land only if a corpus measurably beats the existing framework skill over
|
|
94
|
-
≥10 real sessions (the council's change-my-mind anchor).
|
|
95
|
-
- **Reject as corpus**: anything that is really reference (→ RAG), really
|
|
96
|
-
validation (→ rule), volatile/culturally-specific (people/org fads), or a
|
|
97
|
-
thin corpus that doesn't beat priors. Test: *if it fits in 5 lines of an
|
|
98
|
-
always-on rule, it's a rule, not a corpus.*
|
|
99
|
-
|
|
100
|
-
### 6. Provenance / freshness — the upstream-source line is part of DoD
|
|
101
|
-
|
|
102
|
-
Every adopted asset carries an inline upstream-source line: upstream repo +
|
|
103
|
-
commit SHA + last-checked date. Per-corpus header additionally names a
|
|
104
|
-
maintainer + refresh cadence + last-validated date (domain-adoption Gate 2).
|
|
105
|
-
CI link-checks; volatile content is tiered by rot velocity or marked
|
|
106
|
-
reference-only. **Definition of done for every adoption phase includes this
|
|
107
|
-
line** (refresh stays mechanical, not archaeological).
|
|
108
|
-
|
|
109
|
-
### 7. Licensing
|
|
110
|
-
|
|
111
|
-
Root corpus + scripts: MIT (Next Level Builder, 2024) → retain notice.
|
|
112
|
-
`ui-styling`-derived material: **Apache-2.0** (vendored "claudekit"; the
|
|
113
|
-
dedicated `LICENSE.txt` wins over the MIT frontmatter claim) → retain notice,
|
|
114
|
-
mark modified files (§4b), ship the license copy alongside derived assets.
|
|
115
|
-
Recorded in `src/skills/design-intelligence/ATTRIBUTION.md`.
|
|
116
|
-
|
|
117
|
-
### 8. Implementation forks (council-resolved 2026-06-07)
|
|
118
|
-
|
|
119
|
-
| Fork | Resolution |
|
|
120
|
-
|---|---|
|
|
121
|
-
| Pack placement | **New `frontend-design` pack** (ADR-013 amendment, same PR). `requires: [engineering-base]`, `suggests: [react, nextjs]` — corpus is stack-agnostic data, React never required. Keeps ~1 MB of design data out of `engineering-base`. |
|
|
122
|
-
| `google-fonts.csv` (745 KB, 1923 rows) | **Skip.** Redundant with the public Google Fonts API; `font-pairings-reference.csv` (73 curated pairings) carries the pairing decision. Document the API fallback for fonts outside the curated set. |
|
|
123
|
-
| Stack-corpus surfacing | **`--stack <name>` search domain** on the one grounding engine — single mechanism, no 16-way prose-staleness vector. |
|
|
124
|
-
| Brand→token pipeline | **Defer** with a watch note pinning the upstream commit SHA; adopt on first consumer demand. |
|
|
125
|
-
|
|
126
|
-
### 9. Out of scope (explicit)
|
|
127
|
-
|
|
128
|
-
- The upstream slide/presentation engine (out of frontend scope).
|
|
129
|
-
- The Gemini generative brand-asset suite (logo/CIP/icon/banner/social) —
|
|
130
|
-
gated by `domain-adoption-policy`; see the domain-watch note. If gates
|
|
131
|
-
pass later, it adapts into `pack-ai-video` (no second image-gen stack).
|
|
132
|
-
- Business-pack corpora (people/org, GTM, founder-strategy verdicts) —
|
|
133
|
-
rejected per the qualification rubric; reference belongs to RAG,
|
|
134
|
-
validation to rules.
|
|
135
|
-
|
|
136
|
-
## Consequences
|
|
137
|
-
|
|
138
|
-
- A new domain ships a manifest + data + a named owner — not a forked engine.
|
|
139
|
-
- `engineering-base` stays lean; design intelligence is opt-in via the
|
|
140
|
-
`frontend-design` pack.
|
|
141
|
-
- The skill-bundled `scripts/` + `data/` delivery path becomes a sanctioned,
|
|
142
|
-
tested pattern (delivery-mechanism gate, Phase 1) — load-bearing for every
|
|
143
|
-
later domain corpus.
|
|
144
|
-
- Corpus maintenance is a standing cost: named owner + cadence per corpus, or
|
|
145
|
-
the corpus is not merged.
|
|
146
|
-
|
|
147
|
-
## Alternatives considered
|
|
148
|
-
|
|
149
|
-
- **One corpus for everything (CSV per domain)** — rejected; conflates the
|
|
150
|
-
four operations, produces grounding theater + maintenance bloat.
|
|
151
|
-
- **Fold the corpus into `fe-design`** — rejected 2-of-3; size discipline.
|
|
152
|
-
`fe-design` stays heuristics and *invokes* `design-intelligence`.
|
|
153
|
-
- **Directive engines for every domain** — rejected; consultation default.
|
|
154
|
-
- **Keep `.cjs` token generators on Node** — rejected unanimously; ported to
|
|
155
|
-
Python (no Node runtime dependency for core flows).
|
|
156
|
-
- **Adopt `google-fonts.csv`** — rejected; public-API-redundant bloat.
|
|
157
|
-
|
|
158
|
-
## References
|
|
159
|
-
|
|
160
|
-
- `agents/roadmaps/archive/road-to-frontend-design-intelligence.md` —
|
|
161
|
-
implementing roadmap, archived 2026-06-07 (full source analysis + phase
|
|
162
|
-
plan + per-step evidence notes).
|
|
163
|
-
- [ADR-013 — Discovery frontmatter contract](ADR-013-discovery-frontmatter-contract.md)
|
|
164
|
-
— `frontend-design` pack amendment (2026-06-07).
|
|
165
|
-
- `src/skills/design-intelligence/ATTRIBUTION.md` — upstream provenance +
|
|
166
|
-
license obligations.
|
|
167
|
-
- `agents/settings/contexts/domain-watch/generative-brand-assets.md` — gated
|
|
168
|
-
Gemini-suite watch note.
|
|
169
|
-
- Upstream: `nextlevelbuilder/ui-ux-pro-max-skill` @
|
|
170
|
-
`b7e3af80f6e331f6fb456667b82b12cade7c9d35` (last checked 2026-06-07).
|
|
171
|
-
|
|
172
|
-
## Amendment — 2026-06-16 (§8/§9 superseded in part)
|
|
173
|
-
|
|
174
|
-
The image/brand/typography work re-examined the gated and deferred items of
|
|
175
|
-
§8/§9 on the merits for the product vision. A two-round merits council
|
|
176
|
-
(anthropic/claude-sonnet-4-5 + openai/gpt-4o, 2026-06-13, design lens,
|
|
177
|
-
web-research-grounded) overturned three of them. The four-operation routing
|
|
178
|
-
(§1) and the no-forked-engine principle (§2) are unchanged — the brand corpus
|
|
179
|
-
is a second instance of the same grounding engine.
|
|
180
|
-
|
|
181
|
-
- **§8 brand→token defer — resolved, no longer deferred.** This work was the
|
|
182
|
-
"first consumer demand" §8 named. `brand-to-tokens` ships: brand decisions →
|
|
183
|
-
a DTCG `.tokens.json` source of truth → `design-tokens/scripts/tokens.py`
|
|
184
|
-
(no Node). The same `.tokens.json` is the export pack-ai-image's brand-asset
|
|
185
|
-
generation and the greenfield-scaffold seed consume.
|
|
186
|
-
- **§8 font fork — superseded.** "Skip `google-fonts.csv`, rely on the live
|
|
187
|
-
Google Fonts API" is replaced by **adopt-lite pinned metadata**: pin the MIT
|
|
188
|
-
`google-font-metadata` mirror (or a slim top-N slice) as a deterministic
|
|
189
|
-
offline **Reference**; the live API needs a key, is nondeterministic, and
|
|
190
|
-
carries no pairing metadata. `font-pairings-reference.csv` stays the curated
|
|
191
|
-
pairing Reference with a freshness contract.
|
|
192
|
-
- **§9 brand-asset generation — superseded, ADOPTED.** The Gemini generative
|
|
193
|
-
brand-asset suite (logo/CIP/banner/social) was gated as a possible second
|
|
194
|
-
image-gen stack. The merits pass established it never was one: generation is
|
|
195
|
-
structured prompting + brand-token injection + provider routing on the
|
|
196
|
-
**existing** adapters (now the neutral `scripts/media/` substrate), with a
|
|
197
|
-
`recraft`/LLM-SVG vector path for marks raster models can't emit. Generation
|
|
198
|
-
lives in **pack-ai-image**; brand governance/tokens stay in **pack-brand**,
|
|
199
|
-
which exports tokens pack-ai-image consumes (dependency B → A, never
|
|
200
|
-
inverted). The `domain-watch/generative-brand-assets.md` gate is cleared.
|
|
201
|
-
- **§9 slide/presentation engine — confirmed out of scope, but reasoned.**
|
|
202
|
-
Document assembly ≠ brand UX; owning a render engine (reveal.js / Presenton /
|
|
203
|
-
Gamma) is scope creep. pack-brand instead **exports validated brand
|
|
204
|
-
templates** (Marp/reveal YAML with locked brand variables) for the user's own
|
|
205
|
-
deck tools — enforcement via the template, not engine ownership. Re-open only
|
|
206
|
-
on evidenced demand.
|
|
207
|
-
|
|
208
|
-
The brand corpus deviates from the §8-implied "adopt the SHA-pinned claudekit
|
|
209
|
-
brand sub-skills" framing: it is **original-authored** from public brand
|
|
210
|
-
frameworks (Jung / Mark-Pearson archetypes, public messaging frameworks),
|
|
211
|
-
`upstream: null` — honest provenance, no third-party SHA to pin, no §4b file
|
|
212
|
-
marking. The shared grounding engine is still attributed via
|
|
213
|
-
`design-intelligence/ATTRIBUTION.md`.
|
|
214
|
-
|
|
215
|
-
Implementing roadmap: `road-to-image-brand-typography` (Phase A–D),
|
|
216
|
-
archived 2026-06-16; live-validation + command-surface follow-on tracked in
|
|
217
|
-
its sibling follow-up roadmap.
|
|
218
|
-
|
|
219
|
-
## Resolution note — retrieval ranking at scale (2026-07-09)
|
|
220
|
-
|
|
221
|
-
The "no engine fork / no minisearch-class dependency" decision is honoured at
|
|
222
|
-
memory/knowledge retrieval scale by a **hand-rolled BM25 + trigram index**
|
|
223
|
-
(`src/scripts/_lib/lexical_index.ts`, pure Node stdlib) rather than SQLite-FTS5
|
|
224
|
-
or any embedded search engine. It activates at the `lint_knowledge_scale`
|
|
225
|
-
tripwire (>200/type or >500 total files) and replaces the coarse `_score`
|
|
226
|
-
bucket scorer's ranking; measured lift on the retrieval-precision corpus is a
|
|
227
|
-
mean top tie-set of 3.333 → 1.0 with precision@1/@5 unchanged
|
|
228
|
-
(`internal/bench/reports/lexical-ranking.json`). This closes the ADR-061 ↔
|
|
229
|
-
FTS5 open question flagged in `road-to-retrieval-substrate-hardening` (B2): the
|
|
230
|
-
BM25 core ADR-061 sanctioned is realised without an engine dependency.
|
|
@@ -1,121 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
adr: 062
|
|
3
|
-
status: accepted
|
|
4
|
-
date: 2026-06-08
|
|
5
|
-
decision: encrypt-at-rest-store-architecture
|
|
6
|
-
supersedes: —
|
|
7
|
-
superseded_by: —
|
|
8
|
-
phase: employee-product Phase 8 (road-to-employee-product-and-external-proof, Step 3)
|
|
9
|
-
type: structural
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
# ADR-062 — Encrypt-at-rest store architecture: AES-256-GCM + Python-authoritative store access
|
|
13
|
-
|
|
14
|
-
## Status
|
|
15
|
-
|
|
16
|
-
**Accepted** · 2026-06-08. Design converged via two-round AI-council debate
|
|
17
|
-
(anthropic/claude-sonnet-4-5 + openai/gpt-4o, design mode, 2026-06-08). Both
|
|
18
|
-
members independently converged in round 2. This ADR records the architecture;
|
|
19
|
-
the **implementation is a dedicated follow-up PR** (scope + must-haves below) —
|
|
20
|
-
it is deliberately **not** bundled into a reconciliation diff.
|
|
21
|
-
|
|
22
|
-
## Context
|
|
23
|
-
|
|
24
|
-
Phase 8 of the employee-product workstream adds at-rest encryption for the
|
|
25
|
-
three workspace stores under `~/.event4u/agent-config/workspace/`
|
|
26
|
-
(sessions `*.jsonl`, documents `*.md` + `*.history.jsonl`, analytics
|
|
27
|
-
`events.jsonl`). The crypto layer `workspace_crypto.py` is shipped behind the
|
|
28
|
-
`workspace.encrypt_at_rest` flag (default **OFF** — no field data is encrypted
|
|
29
|
-
yet). A prior council (2026-06-07) deferred the *store wiring* to its own PR
|
|
30
|
-
because the Node-side crypto/key approach was undecided.
|
|
31
|
-
|
|
32
|
-
Two problems had to be resolved before any wiring:
|
|
33
|
-
|
|
34
|
-
1. **Cipher drift.** `docs/contracts/at-rest-encryption.md` specifies
|
|
35
|
-
**AES-256-GCM** (envelope `AC1\0` + version + 12-byte nonce + 16-byte tag +
|
|
36
|
-
ciphertext) and lists `keytar` (Node) alongside `keyring` (Python). The
|
|
37
|
-
shipped `workspace_crypto.py` actually uses **Fernet** (AES-128-CBC +
|
|
38
|
-
HMAC-SHA256, magic `E4U-WSv1`). Fernet is not natively reproducible in
|
|
39
|
-
Node's `node:crypto`; AES-256-GCM is.
|
|
40
|
-
2. **The Node GUI server reads/writes the stores directly** (`src/server/routes/workspace.ts`
|
|
41
|
-
via `fs` — readdir/readFile/writeFile/appendFile, filtering by `.jsonl` /
|
|
42
|
-
`.md`). If Python writes `.enc`, those direct reads break.
|
|
43
|
-
|
|
44
|
-
## Decision
|
|
45
|
-
|
|
46
|
-
### A — Cipher: align the code to the contract's **AES-256-GCM**
|
|
47
|
-
|
|
48
|
-
The code is wrong, not the contract. Re-cipher `workspace_crypto.py` from
|
|
49
|
-
Fernet to AES-256-GCM with the documented `AC1\0` + version-byte envelope,
|
|
50
|
-
keeping the public API (`encrypt_bytes` / `decrypt_bytes` / `encrypt_file` /
|
|
51
|
-
`decrypt_file`) and the plaintext-pass-through-on-read back-compat. Reject
|
|
52
|
-
unknown envelope versions explicitly. Safe to do because the flag is default-OFF
|
|
53
|
-
and **no Fernet-encrypted field data exists** to migrate. AES-256-GCM is native
|
|
54
|
-
in both `cryptography` (Python `AESGCM`) and `node:crypto`, so the same envelope
|
|
55
|
-
is byte-reproducible across runtimes.
|
|
56
|
-
|
|
57
|
-
### B — Store access: **Option 4, Python-authoritative end-to-end**
|
|
58
|
-
|
|
59
|
-
The Node GUI server stops reading/writing the encrypted store files directly.
|
|
60
|
-
All store access routes through the Python CLI modules (the canonical writers),
|
|
61
|
-
which own encryption. Rejected alternatives:
|
|
62
|
-
|
|
63
|
-
- **keytar in Node** — `keytar` is deprecated (Dec 2022, superseded by
|
|
64
|
-
Electron `safeStorage`); cross-library keychain interop between Python
|
|
65
|
-
`keyring` and `keytar` is unproven. Both council members rejected it.
|
|
66
|
-
- **Reimplement Fernet in Node** — moot once A picks AES-256-GCM, and still a
|
|
67
|
-
new format-fiddly surface.
|
|
68
|
-
- **Dual native crypto** — duplicates the security-critical path in two
|
|
69
|
-
runtimes; the council called line-count "narrowness" that leaves a dual-write
|
|
70
|
-
footgun a false economy.
|
|
71
|
-
|
|
72
|
-
To avoid Python interpreter cold-start cost (the dissent's concern, sharp on
|
|
73
|
-
Windows ~200–500 ms), store reads use **batched** CLI calls (e.g.
|
|
74
|
-
`workspace_sessions.py list --decrypt` returns all decrypted records in one
|
|
75
|
-
subprocess), not one subprocess per file.
|
|
76
|
-
|
|
77
|
-
## Consequences
|
|
78
|
-
|
|
79
|
-
- The follow-up PR is a **real refactor of the GUI data path**, not a wiring
|
|
80
|
-
one-liner. The council was explicit: *"ship the right architecture now, or
|
|
81
|
-
don't ship encryption at all"* — Option 1 (shell-out as a temporary
|
|
82
|
-
intermediate) was rejected as process theatre.
|
|
83
|
-
- The flag stays **default OFF** through this work; the `true` flip waits for
|
|
84
|
-
external (recruit-session) validation per `agents/roles/EVIDENCE_BASIS.md`'s
|
|
85
|
-
sibling reasoning.
|
|
86
|
-
|
|
87
|
-
### Must-haves before the implementation PR is greenlit (council checklist)
|
|
88
|
-
|
|
89
|
-
1. **`cryptography` exercised in CI.** Today the round-trip tests in
|
|
90
|
-
`tests/test_workspace_crypto.py` **skip** when `cryptography` is absent —
|
|
91
|
-
and it is absent in CI, so the cipher has never actually round-tripped under
|
|
92
|
-
test. The implementation PR MUST add `cryptography` to the test job so the
|
|
93
|
-
AES-256-GCM round-trip genuinely runs (otherwise the cipher ships unverified
|
|
94
|
-
— a `verify-before-complete` violation on a security primitive).
|
|
95
|
-
2. **Migration with concurrency safety.** Detect plaintext → encrypt-in-place
|
|
96
|
-
atomically (temp + fsync + rename + delete), roll back on any error; refuse
|
|
97
|
-
to migrate while the GUI server is running (or make it non-destructive).
|
|
98
|
-
3. **Key rotation path.** Wrong-key today = permanent data loss; ship
|
|
99
|
-
`workspace_crypto.py rekey` + a documented recovery/export flow.
|
|
100
|
-
4. **Kill-switch / rollback criteria.** `AGENT_CONFIG_NO_ENCRYPTION` already
|
|
101
|
-
forces-disable reads; add an emergency bulk-decrypt and a documented
|
|
102
|
-
error-rate auto-disable.
|
|
103
|
-
5. **Envelope version semantics.** Version byte defined; unknown versions
|
|
104
|
-
rejected with a clear error, not a crash.
|
|
105
|
-
6. **Cross-runtime integration test.** Python encrypts → Node reads back the
|
|
106
|
-
decrypted record through the Python-authoritative path (Option 4).
|
|
107
|
-
|
|
108
|
-
## Alternatives
|
|
109
|
-
|
|
110
|
-
See § Decision B rejected alternatives (keytar / Fernet-in-Node / dual native)
|
|
111
|
-
and the cipher A alternative (keep Fernet + reconcile the contract to document
|
|
112
|
-
it — rejected because it forecloses native Node interop and the contract's
|
|
113
|
-
AES-256-GCM was the deliberate original design).
|
|
114
|
-
|
|
115
|
-
## References
|
|
116
|
-
|
|
117
|
-
- Contract: [`docs/contracts/at-rest-encryption.md`](../contracts/at-rest-encryption.md).
|
|
118
|
-
- Crypto layer: `src/cli/python/workspace_crypto.py`.
|
|
119
|
-
- GUI store IO: `src/server/routes/workspace.ts`.
|
|
120
|
-
- Prior deferral: AI-council 2026-06-07 (recorded in the roadmap Phase 8 Step 3 deferral note).
|
|
121
|
-
- Roadmap: `agents/roadmaps/archive/road-to-employee-product-and-external-proof.md` Phase 8.
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
adr: 063
|
|
3
|
-
status: accepted
|
|
4
|
-
date: 2026-06-08
|
|
5
|
-
decision: append-jsonl-encryption-deferred
|
|
6
|
-
supersedes: —
|
|
7
|
-
superseded_by: —
|
|
8
|
-
phase: employee-product Phase 8 (road-to-employee-product-and-external-proof, Step 3)
|
|
9
|
-
type: structural
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
# ADR-063 — Append-JSONL store encryption deferred (nonce-management gate)
|
|
13
|
-
|
|
14
|
-
## Status
|
|
15
|
-
|
|
16
|
-
**Accepted** · 2026-06-08. AI-council (claude-sonnet-4-5 + gpt-4o, design mode,
|
|
17
|
-
2026-06-08). Records why encrypt-at-rest Part B ships **documents-only** and
|
|
18
|
-
what must be solved before the append-heavy JSONL stores are encrypted.
|
|
19
|
-
|
|
20
|
-
## Context
|
|
21
|
-
|
|
22
|
-
ADR-062 chose AES-256-GCM + Option-4 Python-authoritative store access. The
|
|
23
|
-
three workspace stores have different write shapes:
|
|
24
|
-
|
|
25
|
-
- **documents** — whole-file `<slug>.md`. Whole-file `.md.enc` is a natural
|
|
26
|
-
fit; encrypted in Part B.
|
|
27
|
-
- **sessions** — `sessions/<day>/<id>.jsonl`, **append-heavy** (one record per
|
|
28
|
-
host turn).
|
|
29
|
-
- **analytics** — `analytics/events.jsonl`, **append-heavy** on a hot UI path.
|
|
30
|
-
- **document revision logs** — `<slug>.history.jsonl`, append-once-per-save.
|
|
31
|
-
|
|
32
|
-
AES-256-GCM encrypts a whole blob — you cannot append a line to an encrypted
|
|
33
|
-
blob. Two strategies were weighed:
|
|
34
|
-
|
|
35
|
-
- **Whole-file read-decrypt-append-encrypt-rewrite** per append: O(file) per
|
|
36
|
-
event under a lock — unacceptable for the analytics hot path.
|
|
37
|
-
- **Per-record encryption** (one envelope per line, append stays append):
|
|
38
|
-
attractive, but the council flagged it as **cryptographically unsafe as
|
|
39
|
-
sketched** — AES-GCM security collapses on (key, nonce) reuse, and the
|
|
40
|
-
design had no nonce-derivation scheme, no crash/concurrency reuse proof, no
|
|
41
|
-
nonce-exhaustion handling.
|
|
42
|
-
|
|
43
|
-
## Decision
|
|
44
|
-
|
|
45
|
-
**Defer encryption of all append-JSONL stores** — `sessions/*.jsonl`,
|
|
46
|
-
`analytics/events.jsonl`, and document `*.history.jsonl` — to a dedicated
|
|
47
|
-
follow-up. Part B encrypts document `.md` bodies only (the highest-sensitivity
|
|
48
|
-
content: offer / mail / memo / brief bodies). The append-JSONL set stays
|
|
49
|
-
plaintext until a per-record encryption protocol is designed and ADR'd.
|
|
50
|
-
|
|
51
|
-
## Consequences
|
|
52
|
-
|
|
53
|
-
- Document bodies are encrypted end-to-end (write + Python-authoritative read);
|
|
54
|
-
edit metadata in `.history.jsonl` and session/analytics records remain
|
|
55
|
-
plaintext for now. The at-rest-encryption contract scope table is updated to
|
|
56
|
-
mark this split explicitly so no one assumes the JSONL stores are protected.
|
|
57
|
-
- The flag stays default-OFF; nothing about today's behaviour changes.
|
|
58
|
-
|
|
59
|
-
### Must-solve before append-JSONL encryption (the follow-up ADR's gate)
|
|
60
|
-
|
|
61
|
-
1. **Nonce-derivation scheme** that provably never reuses (key, nonce):
|
|
62
|
-
deterministic from (key, file-id, monotonic-record-index) or a
|
|
63
|
-
crash-persistent counter — not bare random per line.
|
|
64
|
-
2. **Concurrent-append serialization** (file lock + atomic record-index
|
|
65
|
-
allocation) so two writers cannot mint the same nonce.
|
|
66
|
-
3. **Crash safety** — partial/truncated final record detected and skipped, not
|
|
67
|
-
fatal; counter state survives process restart.
|
|
68
|
-
4. **Nonce-exhaustion / rotation** before the GCM 2^32-per-key limit.
|
|
69
|
-
5. **Hot-path cost** — analytics `emit()` must stay non-blocking; per-record
|
|
70
|
-
encryption must not reintroduce whole-file rewrite.
|
|
71
|
-
|
|
72
|
-
## Alternatives
|
|
73
|
-
|
|
74
|
-
Whole-file-rewrite-per-append (rejected: O(file) on the hot path) and
|
|
75
|
-
ship-all-three-now with random per-line nonces (rejected: nonce-reuse
|
|
76
|
-
vulnerability). See ADR-062 for the cipher + Option-4 architecture this builds
|
|
77
|
-
on.
|
|
78
|
-
|
|
79
|
-
## References
|
|
80
|
-
|
|
81
|
-
- ADR-062 — encrypt-at-rest store architecture (cipher + Option 4).
|
|
82
|
-
- Contract: [`docs/contracts/at-rest-encryption.md`](../contracts/at-rest-encryption.md).
|
|
83
|
-
- Stores: `src/cli/python/workspace_sessions.py`, `workspace_analytics.py`, `workspace_documents.py`.
|
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
adr: 064
|
|
3
|
-
status: accepted
|
|
4
|
-
date: 2026-06-08
|
|
5
|
-
decision: append-jsonl-per-record-encryption
|
|
6
|
-
supersedes: —
|
|
7
|
-
superseded_by: —
|
|
8
|
-
phase: employee-product Phase 8 (road-to-employee-product-and-external-proof, Step 3)
|
|
9
|
-
type: structural
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
# ADR-064 — Append-JSONL per-record encryption protocol
|
|
13
|
-
|
|
14
|
-
## Status
|
|
15
|
-
|
|
16
|
-
**Accepted** · 2026-06-08. Resolves the nonce-management gate ADR-063 set.
|
|
17
|
-
Design converged via AI-council (claude-sonnet-4-5 + gpt-4o, design mode,
|
|
18
|
-
2026-06-08) — a cautious round that raised six refinements (nonce-count
|
|
19
|
-
awareness, single-writer enforcement, per-store corruption policy, envelope
|
|
20
|
-
versioning, OS preconditions, scope sequencing); the protocol below folds them
|
|
21
|
-
in. First store shipped under this protocol: **analytics**.
|
|
22
|
-
|
|
23
|
-
## Context
|
|
24
|
-
|
|
25
|
-
ADR-063 deferred encrypting the append-heavy JSONL stores because AES-GCM
|
|
26
|
-
cannot append to a blob and the per-record scheme needed a nonce-management
|
|
27
|
-
design. This ADR fixes the protocol.
|
|
28
|
-
|
|
29
|
-
## Decision
|
|
30
|
-
|
|
31
|
-
### Protocol — per-record self-contained envelope
|
|
32
|
-
|
|
33
|
-
Each JSONL record is encrypted independently into its own `AC1\0` AES-256-GCM
|
|
34
|
-
envelope (the Part-A cipher, with its version byte), base64-encoded as **one
|
|
35
|
-
line**. Append = `encrypt_line(json)` → a single atomic `O_APPEND` write. No
|
|
36
|
-
whole-file rewrite, no shared counter. Helpers live in `workspace_crypto`
|
|
37
|
-
(`encrypt_line` / `decrypt_line`); `decrypt_line` passes a plaintext JSON line
|
|
38
|
-
(`{`/`[`-prefixed) through unchanged, so a file with mixed plaintext+encrypted
|
|
39
|
-
records (flag flipped mid-life) reads correctly.
|
|
40
|
-
|
|
41
|
-
- **Nonce (N1):** a fresh **random 96-bit nonce per record**. NIST SP 800-38D
|
|
42
|
-
permits random-construction nonces up to 2^32 invocations per key; a session
|
|
43
|
-
or analytics file is many orders below that, and `rekey` resets the per-key
|
|
44
|
-
count. Random nonces carry **no crash-fragile counter state** — the prior
|
|
45
|
-
round's "catastrophic reuse" concern was about counters resetting on crash,
|
|
46
|
-
which this scheme does not use.
|
|
47
|
-
- **Concurrency (N2):** correctness rests on **single-writer-per-file**, not
|
|
48
|
-
locks. Each record line is independent (own nonce, own envelope), so one
|
|
49
|
-
atomic append per line suffices. The single-writer guarantee is
|
|
50
|
-
**architectural**: the Python store module is the sole writer. For sessions
|
|
51
|
-
(Node reads+writes today) this means routing through the Python CLI
|
|
52
|
-
(ADR-062 Option 4) so there is still exactly one writer — the protocol is
|
|
53
|
-
single-writer-based, **not** Python-only-based, so it extends to sessions
|
|
54
|
-
unchanged.
|
|
55
|
-
- **Corruption (N3) — per store:** *analytics* is best-effort telemetry →
|
|
56
|
-
skip-and-continue on a torn/undecryptable line. *Document history* (when it
|
|
57
|
-
lands) is state-critical → fail-closed. The reader policy is the store's
|
|
58
|
-
call, not the protocol's.
|
|
59
|
-
- **Versioning (N4):** the envelope version byte (Part A) lets a future
|
|
60
|
-
scheme coexist; unknown versions already reject.
|
|
61
|
-
|
|
62
|
-
### Operations parity
|
|
63
|
-
|
|
64
|
-
Each encrypted append-JSONL store ships `migrate` (plaintext → per-record
|
|
65
|
-
`.enc` lines, idempotent), `decrypt-all` (kill-switch → plaintext, works
|
|
66
|
-
flag-off), and `rekey` (rotate key + re-encrypt every record). `prune` (and any
|
|
67
|
-
age/query reader) is decrypt-aware but keeps the original encrypted line at
|
|
68
|
-
rest.
|
|
69
|
-
|
|
70
|
-
### Rollout order
|
|
71
|
-
|
|
72
|
-
1. **analytics** — Python-only, single-writer already true. **Shipped.**
|
|
73
|
-
2. **document `.history.jsonl`** — Python-only, inside `workspace_documents.py`;
|
|
74
|
-
its whole-file `.md` migrate/rekey/decrypt-all gained a parallel per-line
|
|
75
|
-
history pass. **Shipped.**
|
|
76
|
-
3. **sessions** — Node reads+writes; the Option-4 Node-session refactor routed
|
|
77
|
-
all 5 endpoints (list / read / launch / append) through the Python CLI
|
|
78
|
-
(`--root` validated, `--host` / `--data-json` for record fidelity).
|
|
79
|
-
**Shipped.** All three append-JSONL stores now encrypt at rest.
|
|
80
|
-
|
|
81
|
-
> **Routing choice (sessions):** the refactor went **uniform** Python-routing
|
|
82
|
-
> (reads + writes always through the CLI, like documents), not the
|
|
83
|
-
> conditional flag-gated routing this ADR's design round leaned toward. Uniform
|
|
84
|
-
> removes the need for Node to read the flag (Python owns the flag decision —
|
|
85
|
-
> true single source of truth), is consistent with the documents precedent, and
|
|
86
|
-
> is fully CI-testable (plaintext path needs no `cryptography`). The design
|
|
87
|
-
> round's perf concern targeted *machine-hot* appends; session appends are
|
|
88
|
-
> human-turn-paced, so the per-op subprocess cost is imperceptible.
|
|
89
|
-
|
|
90
|
-
## Consequences
|
|
91
|
-
|
|
92
|
-
- Analytics records are encrypted at rest when the flag is on; the flag stays
|
|
93
|
-
**default-OFF**, so nothing changes for today's users.
|
|
94
|
-
- `emit()` stays non-blocking and never raises: a crypto error DROPS the event
|
|
95
|
-
(consistent with the existing scrub-fail-drop), never persists it
|
|
96
|
-
unencrypted.
|
|
97
|
-
- The shared `encrypt_line`/`decrypt_line` protocol is now the contract the
|
|
98
|
-
history + session follow-ups reuse verbatim.
|
|
99
|
-
|
|
100
|
-
## Alternatives
|
|
101
|
-
|
|
102
|
-
Counter-based nonces (rejected: crash-fragile state, concurrent-index
|
|
103
|
-
allocation) and whole-file read-modify-rewrite per append (rejected by ADR-063:
|
|
104
|
-
O(file) on the analytics hot path). See ADR-062 (cipher + Option 4) and ADR-063
|
|
105
|
-
(the deferral gate this resolves).
|
|
106
|
-
|
|
107
|
-
## References
|
|
108
|
-
|
|
109
|
-
- ADR-062 — cipher + Python-authoritative architecture.
|
|
110
|
-
- ADR-063 — the deferral + nonce gate this resolves.
|
|
111
|
-
- `src/cli/python/workspace_crypto.py` (`encrypt_line`/`decrypt_line`),
|
|
112
|
-
`workspace_analytics.py` (emit/read/prune/migrate/decrypt-all/rekey).
|
|
113
|
-
- Contract: [`docs/contracts/at-rest-encryption.md`](../contracts/at-rest-encryption.md).
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
adr: 065
|
|
3
|
-
status: accepted
|
|
4
|
-
date: 2026-06-08
|
|
5
|
-
decision: tier3-inbox-handoff-v0
|
|
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-065 — Tier-3 host hand-off inbox: plaintext, ephemeral v0 (encryption declined)
|
|
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). The encrypt-at-rest arc (ADR-062/063/064)
|
|
18
|
-
listed the inbox as the one deferred store; the council round that scoped it
|
|
19
|
-
found the inbox did not exist yet **and** that encrypting it would be security
|
|
20
|
-
theater. This ADR records the honest v0: build the hand-off, ship it plaintext.
|
|
21
|
-
|
|
22
|
-
## Context
|
|
23
|
-
|
|
24
|
-
ADR-023 specifies a **Tier-3 host hand-off**: for hosts the workspace cannot
|
|
25
|
-
drive (Augment, Cursor, Cline, Windsurf, JetBrains), the workspace writes the
|
|
26
|
-
rendered prompt into `~/.event4u/agent-config/workspace/inbox/<id>.md` and
|
|
27
|
-
surfaces a copy-to-clipboard banner; the user opens the host themselves. No
|
|
28
|
-
code wrote or read that file — the feature was specified, never built.
|
|
29
|
-
|
|
30
|
-
## Decision
|
|
31
|
-
|
|
32
|
-
Build the Tier-3 inbox as a **plaintext, ephemeral, content-minimal** store.
|
|
33
|
-
|
|
34
|
-
- **Plaintext — encryption declined.** The inbox holds a prompt the user
|
|
35
|
-
*reads to copy-paste*; the adversary an at-rest cipher defends against is a
|
|
36
|
-
filesystem attacker. That same prompt content already lives in the
|
|
37
|
-
**encrypted sessions store**. Encrypting the inbox therefore stops **no
|
|
38
|
-
incremental threat** — it would add migrate/rekey/decrypt-all/Python-routing
|
|
39
|
-
complexity for zero marginal security. Revisit only if a distinct threat
|
|
40
|
-
model emerges (e.g. the inbox starts holding content not in sessions).
|
|
41
|
-
- **Ephemeral.** `prune` drops hand-off files older than 24h; the store is a
|
|
42
|
-
transient hand-off surface, not durable storage.
|
|
43
|
-
- **Content-minimal (v0).** The file is a small frontmatter header
|
|
44
|
-
(id / role / task / session / created_at) + the **rendered prompt body**
|
|
45
|
-
supplied by the caller. Skill-body pre-rendering **shipped** as a follow-up
|
|
46
|
-
([`ADR-066`](ADR-066-skill-body-prerendering.md) — `--skill-hint` resolves the
|
|
47
|
-
skill body into the hand-off). Still **deferred:** host-tier **auto-detection**
|
|
48
|
-
(v0 takes the hand-off intent explicitly from the caller).
|
|
49
|
-
- **Python-authoritative, ships dark.** `workspace_inbox.py`
|
|
50
|
-
(write / read / list / forget / prune, `--root` validated to
|
|
51
|
-
`…/workspace/inbox`) is the store; the Node `POST /api/v1/workspace/inbox`
|
|
52
|
-
+ `GET /api/v1/workspace/inbox/:id` endpoints route through it and are
|
|
53
|
-
**gated behind `AGENT_CONFIG_TIER3_INBOX` (default off)** until the hand-off
|
|
54
|
-
UX is validated. The write endpoint returns `{id, path, banner}`; the banner
|
|
55
|
-
text only — clipboard / UI wiring is the Preact shell's job, deferred.
|
|
56
|
-
- A pasted credential in the prompt is **scrubbed** on write (disposable
|
|
57
|
-
hand-off posture, same as the session/analytics telemetry stores).
|
|
58
|
-
|
|
59
|
-
## Consequences
|
|
60
|
-
|
|
61
|
-
- The Tier-3 hand-off has a real, tested writer/reader for the first time;
|
|
62
|
-
the encrypt-at-rest arc is closed (the inbox is intentionally plaintext, not
|
|
63
|
-
an outstanding encryption gap).
|
|
64
|
-
- The feature ships dark — zero behaviour change until an operator sets the
|
|
65
|
-
flag.
|
|
66
|
-
- If the inbox later carries content NOT mirrored in sessions, encryption
|
|
67
|
-
must be revisited (reuse the documents whole-file `.md.enc` pattern); the
|
|
68
|
-
contract scope table records this trigger.
|
|
69
|
-
|
|
70
|
-
## Alternatives
|
|
71
|
-
|
|
72
|
-
- **Encrypt the inbox** (the arc's original intent) — rejected as security
|
|
73
|
-
theater per the threat-model analysis above.
|
|
74
|
-
- **Fold into `launch`** (write the inbox when a Tier-3 launch happens) —
|
|
75
|
-
rejected for v0: requires host-tier auto-detection, which is deferred; a
|
|
76
|
-
standalone endpoint is more testable and modular.
|
|
77
|
-
- **Skill-body pre-rendering in v0** — rejected: a new skill-resolution trust
|
|
78
|
-
boundary; its own ADR.
|
|
79
|
-
|
|
80
|
-
## References
|
|
81
|
-
|
|
82
|
-
- ADR-023 — host-agent protocol (Tier-3 hand-off spec).
|
|
83
|
-
- ADR-024 — workspace v0 floor (the inbox is a post-floor addition).
|
|
84
|
-
- ADR-062/063/064 — the encrypt-at-rest arc this closes.
|
|
85
|
-
- `src/cli/python/workspace_inbox.py`, `src/server/routes/workspace.ts`.
|
|
86
|
-
- Contract: [`docs/contracts/at-rest-encryption.md`](../contracts/at-rest-encryption.md).
|