loki-mode 10.8.0 → 10.10.1

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.
Files changed (178) hide show
  1. package/.github/actions/issue-to-pr/action.yml +2 -2
  2. package/README.md +11 -5
  3. package/SKILL.md +12 -2
  4. package/VERSION +1 -1
  5. package/autonomy/lib/proof-generator.py +1 -0
  6. package/autonomy/loki +55 -40
  7. package/autonomy/receipt_jwt.py +46 -1
  8. package/autonomy/run.sh +1 -1
  9. package/autonomy/telemetry.sh +1 -1
  10. package/autonomy/trigger-server.py +1 -0
  11. package/autonomy/tui.sh +5 -1
  12. package/bin/loki +12 -1
  13. package/bin/loki-postinstall.js +12 -0
  14. package/dashboard/__init__.py +1 -1
  15. package/dashboard/api_phases.py +1 -1
  16. package/dashboard/api_start.py +0 -1
  17. package/dashboard/server.py +22 -138
  18. package/docs/CLI-REFERENCE.md +139 -0
  19. package/docs/COCKPIT-SPEC.md +3 -1
  20. package/docs/DASHBOARD-9.12-EVIDENCE.md +1 -1
  21. package/docs/DASHBOARD-ARCHITECTURE.md +13 -11
  22. package/docs/DASHBOARD_V2_CHECKLIST.md +2 -0
  23. package/docs/INSTALLATION.md +12 -11
  24. package/docs/LOKI-10-BUILD-PROMPT.md +2 -2
  25. package/docs/MERGE-DEDUP-MAP.md +1 -1
  26. package/docs/MERGE-ROUTE-MAP.md +1 -1
  27. package/docs/MERGE3-PLAN.md +2 -2
  28. package/docs/PLANS-INDEX.md +2 -3
  29. package/docs/R3-COST-OBSERVABILITY-DESIGN.md +2 -2
  30. package/docs/R4-TRUST-TRAJECTORY-DESIGN.md +1 -1
  31. package/docs/R5-AUTO-WIKI-DESIGN.md +1 -1
  32. package/docs/R6-ROLLBACK-CHECKPOINT-PLAN.md +1 -1
  33. package/docs/RARV-C-100X-PLAN.md +3 -3
  34. package/docs/SLO.md +3 -3
  35. package/docs/SONNET5-DEFAULT-PLAN.md +2 -2
  36. package/docs/SYNERGY-TASKS.md +1 -1
  37. package/docs/TOOL-INTEGRATION.md +1 -1
  38. package/docs/TOP-100-BACKLOG.md +1 -1
  39. package/docs/alternative-installations.md +2 -2
  40. package/docs/architecture/ADR-001-runtime-migration.md +1 -1
  41. package/docs/architecture/DASHBOARD_V2_ARCHITECTURE.md +2 -0
  42. package/docs/audit-logging.md +2 -0
  43. package/docs/authentication.md +2 -0
  44. package/docs/authorization.md +2 -0
  45. package/docs/bug-fixes/agent-04-memory-fixes.md +1 -1
  46. package/docs/certification/02-enterprise-features/lab.md +2 -0
  47. package/docs/certification/02-enterprise-features/lesson.md +2 -0
  48. package/docs/certification/04-production-deployment/lab.md +2 -0
  49. package/docs/certification/04-production-deployment/lesson.md +2 -0
  50. package/docs/control-plane-migration.md +97 -0
  51. package/docs/dashboard-guide.md +6 -7
  52. package/docs/dev/release-checklist.md +10 -12
  53. package/docs/enterprise/integration-cookbook.md +2 -0
  54. package/docs/enterprise/migration.md +1 -1
  55. package/docs/enterprise/performance.md +3 -1
  56. package/docs/enterprise/sdk-guide.md +2 -0
  57. package/docs/enterprise/security.md +2 -0
  58. package/{.github/workflows/loki-issue-to-pr.yml → docs/examples/loki-issue-to-pr.yml.example} +2 -0
  59. package/docs/{ONE-RUN-AUDIT.md → history/one-run-audit.md} +6 -0
  60. package/docs/{BUG-AUDIT-v6.61.0.md → history/v6.61.0-audit.md} +6 -0
  61. package/docs/{V8-AGENT-SDK-PLAN.md → history/v8-agent-sdk-plan.md} +6 -0
  62. package/docs/{CONFIG-FILE-PLAN.md → history/v8-config-plan.md} +6 -0
  63. package/docs/plans/FORGE-AUTONOMOUS-QUEUE.md +2 -2
  64. package/docs/research-2026-07/OBSERVABILITY-TOOL-SPEC.md +1 -1
  65. package/docs/retrospectives/v7.5.15-honesty-audit.md +2 -2
  66. package/docs/test-scenarios/enterprise-scenarios.md +3 -3
  67. package/docs/v10/ARCHITECT-CUTS.md +9 -9
  68. package/docs/v10/BACKLOG.md +7 -7
  69. package/docs/v10/BOARD.md +28 -25
  70. package/docs/v10/CLI-MODERN.md +190 -0
  71. package/docs/v10/CONTROL-PLANE.md +4 -4
  72. package/docs/v10/CP-ENTERPRISE-UI.md +66 -66
  73. package/docs/v10/D51-PHASE-B.md +1 -1
  74. package/docs/v10/DECISIONS.md +3 -3
  75. package/docs/v10/DEPS.md +148 -169
  76. package/docs/v10/FAILURE-CLASSES.md +63 -1
  77. package/docs/v10/LEGACY-REMOVAL.md +335 -26
  78. package/docs/v10/PROGRESS.md +15 -0
  79. package/docs/v10/SWARM.md +2 -2
  80. package/loki-ts/dist/cockpit.js +11 -11
  81. package/loki-ts/dist/loki.js +1610 -1813
  82. package/magic/core/design_tokens.py +1 -2
  83. package/magic/core/generator.py +2 -2
  84. package/magic/tokens/README.md +1 -3
  85. package/mcp/__init__.py +1 -1
  86. package/package.json +4 -8
  87. package/packages/control-plane/dist/server.js +1956 -1019
  88. package/packages/control-plane/src/db/fixture-cleanup.ts +47 -0
  89. package/packages/control-plane/src/server/app.ts +2 -0
  90. package/packages/control-plane/src/server/integrity.ts +48 -9
  91. package/packages/control-plane/src/server/legacy/routes-audit.ts +50 -0
  92. package/packages/control-plane/src/server/legacy/routes-control.ts +26 -0
  93. package/packages/control-plane/src/server/legacy/routes-memory.ts +30 -0
  94. package/packages/control-plane/src/server/legacy/routes.ts +58 -58
  95. package/packages/control-plane/src/server/legacy/shim.ts +10 -4
  96. package/packages/control-plane/src/server/routes/checkpoints.ts +171 -0
  97. package/packages/control-plane/src/server/routes/index.ts +4 -1
  98. package/packages/control-plane/src/server/routes/memory.ts +219 -0
  99. package/packages/control-plane/src/server/routes/session_control.ts +155 -0
  100. package/packages/control-plane/src/server/routes/stats.ts +16 -5
  101. package/packages/control-plane/src/server/runs.ts +16 -4
  102. package/packages/control-plane/ui/dist/assets/index-NAMkcA9N.js +165 -0
  103. package/packages/control-plane/ui/dist/index.html +1 -1
  104. package/plugins/loki-mode/.claude-plugin/plugin.json +1 -1
  105. package/references/magic-modules-patterns.md +2 -2
  106. package/schemas/status-result.schema.json +13 -22
  107. package/skills/factory-operations.md +3 -3
  108. package/skills/magic-modules.md +1 -1
  109. package/skills/release-cadence.md +6 -6
  110. package/tools/audit-docs.py +1 -1
  111. package/tools/index-codebase.py +1 -1
  112. package/web-app/dist/assets/{AdminPage-DDDvUz0N.js → AdminPage-B8RjG3sy.js} +1 -1
  113. package/web-app/dist/assets/{Avatar-Dcdz46i6.js → Avatar-Dttmvqc-.js} +1 -1
  114. package/web-app/dist/assets/{Badge-BB24cCpK.js → Badge-Bvyp8VrD.js} +1 -1
  115. package/web-app/dist/assets/{Button-D0-DmPZL.js → Button-DtY5ZrZw.js} +1 -1
  116. package/web-app/dist/assets/{CockpitPage-CdjpU2JW.js → CockpitPage-B2gbOwRp.js} +1 -1
  117. package/web-app/dist/assets/{ComparePage-DT5U0y0d.js → ComparePage-CHi5nZTU.js} +1 -1
  118. package/web-app/dist/assets/{ErrorBoundary-lEHcl0EO.js → ErrorBoundary-BUuTj-OQ.js} +1 -1
  119. package/web-app/dist/assets/{EvidenceReceiptPanel-GpnWvdCr.js → EvidenceReceiptPanel-C5aOn4ES.js} +1 -1
  120. package/web-app/dist/assets/{GitHubIssuesPanel-C7VOh1B7.js → GitHubIssuesPanel-isVxxHXb.js} +1 -1
  121. package/web-app/dist/assets/{GitHubPRsPanel-G_kOuINv.js → GitHubPRsPanel-DtDpxyQl.js} +1 -1
  122. package/web-app/dist/assets/{HomePage-PqRisOny.js → HomePage-Casf-LUB.js} +2 -2
  123. package/web-app/dist/assets/{LoginPage-DU7pFAkf.js → LoginPage-DvB78691.js} +1 -1
  124. package/web-app/dist/assets/{MagicPage-C5JWIWMk.js → MagicPage-DU6hmbnC.js} +1 -1
  125. package/web-app/dist/assets/{MetricsPage-CbIGS_qo.js → MetricsPage-DcPwzoS8.js} +1 -1
  126. package/web-app/dist/assets/{NotFoundPage-vU1pvdSt.js → NotFoundPage-Bs6WxAZ8.js} +1 -1
  127. package/web-app/dist/assets/{ProjectPage-SsixIPPv.js → ProjectPage-RBIqC-DJ.js} +3 -3
  128. package/web-app/dist/assets/{ProjectsPage-BfQKSR9k.js → ProjectsPage-CogXD7jM.js} +1 -1
  129. package/web-app/dist/assets/{SettingsPage-B8YfXAom.js → SettingsPage-pAyJAfPt.js} +1 -1
  130. package/web-app/dist/assets/{ShowcasePage-Ba407f2-.js → ShowcasePage-D6bT2bDd.js} +1 -1
  131. package/web-app/dist/assets/{SystemSettingsPage-DzNQhhBS.js → SystemSettingsPage-CE8xiJRh.js} +1 -1
  132. package/web-app/dist/assets/{TeamsPage-tqUnpZ15.js → TeamsPage-wMS55TDT.js} +1 -1
  133. package/web-app/dist/assets/{TemplatesPage-ClB5EpI3.js → TemplatesPage-COJNVQqu.js} +1 -1
  134. package/web-app/dist/assets/{TerminalOutput-CBvpYfEu.js → TerminalOutput-Cc2XASxd.js} +1 -1
  135. package/web-app/dist/assets/{activity-C1s0L_X9.js → activity-C6eHFDjL.js} +1 -1
  136. package/web-app/dist/assets/{bell-DMEiXr73.js → bell-BJpVYj4n.js} +1 -1
  137. package/web-app/dist/assets/{bot-BF_xIOxu.js → bot-BwRVVUQL.js} +1 -1
  138. package/web-app/dist/assets/{check-Dv1Ynvrs.js → check-CGDwoKy8.js} +1 -1
  139. package/web-app/dist/assets/{chevron-left-Ddhsod7S.js → chevron-left-CF2Nilj6.js} +1 -1
  140. package/web-app/dist/assets/{circle-alert-OATHUkBZ.js → circle-alert-D0RyRec1.js} +1 -1
  141. package/web-app/dist/assets/{clock-C1Ltva07.js → clock-xeF3gW0W.js} +1 -1
  142. package/web-app/dist/assets/{cloud-B-S4oOy9.js → cloud-D5Sy69ZZ.js} +1 -1
  143. package/web-app/dist/assets/{code-xml-D3Femn_F.js → code-xml-C6-5Ql9I.js} +1 -1
  144. package/web-app/dist/assets/{database-DBSeFgO3.js → database-BSjG1_z0.js} +1 -1
  145. package/web-app/dist/assets/{dollar-sign-sgDgNuGE.js → dollar-sign-FnDR2QUu.js} +1 -1
  146. package/web-app/dist/assets/{file-code-corner-C-MbdZEc.js → file-code-corner-BiOK9vR6.js} +1 -1
  147. package/web-app/dist/assets/{file-plus-CCB6yqXv.js → file-plus-3WALQDEE.js} +1 -1
  148. package/web-app/dist/assets/{globe-DlbrNAj1.js → globe-vUdUrQqp.js} +1 -1
  149. package/web-app/dist/assets/{hammer-B-DWm695.js → hammer-0VwHUEpa.js} +1 -1
  150. package/web-app/dist/assets/{index-Dvny-1SU.js → index-BMKIwteZ.js} +3 -3
  151. package/web-app/dist/assets/{layers-99qsKpOT.js → layers-C6q8kzST.js} +1 -1
  152. package/web-app/dist/assets/{loader-circle-ZvZyZl3J.js → loader-circle-B4Tz724d.js} +1 -1
  153. package/web-app/dist/assets/{lock-DosGjcxP.js → lock-yxvEA65n.js} +1 -1
  154. package/web-app/dist/assets/{package-C-PumesN.js → package-BpKD0Ot0.js} +1 -1
  155. package/web-app/dist/assets/{plus-CTYYskTB.js → plus-Ibqx_Vo9.js} +1 -1
  156. package/web-app/dist/assets/{refresh-cw-qW2ztTFS.js → refresh-cw-C9auyvi-.js} +1 -1
  157. package/web-app/dist/assets/{rotate-ccw-ZIKrf-vO.js → rotate-ccw-2cEiXm6O.js} +1 -1
  158. package/web-app/dist/assets/{scroll-text-BamlXjAT.js → scroll-text-BPAWML-w.js} +1 -1
  159. package/web-app/dist/assets/{server-BljXb79I.js → server-CZh6B1zx.js} +1 -1
  160. package/web-app/dist/assets/{shield-alert-Dr6eT9c_.js → shield-alert-CivolUIx.js} +1 -1
  161. package/web-app/dist/assets/{thumbs-up-v3oBXZgU.js → thumbs-up-BP9covEH.js} +1 -1
  162. package/web-app/dist/assets/{trash-2-BOuIrCpi.js → trash-2-BCDfTcNx.js} +1 -1
  163. package/web-app/dist/assets/{trending-down-Dp7jMCgH.js → trending-down-5LypivXh.js} +1 -1
  164. package/web-app/dist/assets/{trending-up-CDiur-nP.js → trending-up-DNt4SFdk.js} +1 -1
  165. package/web-app/dist/assets/{upload-DxIHXhNE.js → upload-DBmHbY6y.js} +1 -1
  166. package/web-app/dist/assets/{usePolling-D2Uu-YZb.js → usePolling-DOPZcbUL.js} +1 -1
  167. package/web-app/dist/assets/{user-BVWCUAfF.js → user-BQTJJDCG.js} +1 -1
  168. package/web-app/dist/index.html +1 -1
  169. package/dashboard/static/assets/mermaid.min.js +0 -2030
  170. package/dashboard/static/cost.html +0 -344
  171. package/dashboard/static/favicon.svg +0 -5
  172. package/dashboard/static/index.html +0 -15577
  173. package/dashboard/static/proofs.html +0 -194
  174. package/dashboard/static/start.html +0 -131
  175. package/dashboard/static/trust.html +0 -325
  176. package/docs/BRANCH-LIFECYCLE-PLAN.md +0 -354
  177. package/docs/EXECUTION-COCKPIT-PLAN.md +0 -289
  178. package/packages/control-plane/ui/dist/assets/index-Dbhu244h.js +0 -155
@@ -0,0 +1,190 @@
1
+ # CLI modernization inventory
2
+
3
+ Generated from `loki-ts/src/cli/registry.ts` by `bun loki-ts/scripts/gen-cli-modern-doc.ts`. Do not edit by hand; the registry guard fails when this file is stale.
4
+
5
+ Classes: KEEP-MODERN (v10-native or engine-neutral), UPDATE (live but needs modernizing), DROP-LEGACY (drives only the legacy engine; removed under LEGACY-ZERO, hidden from help and completions meanwhile), DELETE (deprecated alias).
6
+
7
+ ## Counts
8
+
9
+ - KEEP-MODERN: 60
10
+ - UPDATE: 22
11
+ - DROP-LEGACY: 31
12
+ - DELETE: 14
13
+ - Total rows: 127
14
+ - Registry paths (commands and nested subcommands): 171
15
+
16
+ ## Commands
17
+
18
+ | Command | Where dispatched | Class | Reason |
19
+ | --- | --- | --- | --- |
20
+ | version | loki-ts/src/cli.ts | KEEP-MODERN | Bun-native, no legacy dependency |
21
+ | status | bun route, bash fallthrough | UPDATE | Reads both engines; fold legacy fields into the v10 view |
22
+ | stats | loki-ts/src/cli.ts | DELETE | Deprecated alias; use report session |
23
+ | doctor | bun route, bash fallthrough | KEEP-MODERN | Core onboarding gate |
24
+ | provider | bun route, bash fallthrough | KEEP-MODERN | Provider-agnostic core |
25
+ | memory | bun route, bash fallthrough | UPDATE | Memory still carries legacy store paths |
26
+ | rollback | bun route, bash fallthrough | KEEP-MODERN | Checkpoint restore is engine-neutral |
27
+ | proof | bun route, bash fallthrough | KEEP-MODERN | The Evidence Receipt moat |
28
+ | receipt | bun route, bash fallthrough | DELETE | Alias of proof; shown only under 'loki help aliases' |
29
+ | wiki | bun route, bash fallthrough | KEEP-MODERN | Bun-native knowledge feature |
30
+ | control | bun route, bash fallthrough | KEEP-MODERN | D56 control plane, on by default |
31
+ | kpis | loki-ts/src/cli.ts | KEEP-MODERN | Bun-native KPI report |
32
+ | report | bun route, bash fallthrough | UPDATE | Mixed route; only kpis is Bun |
33
+ | trust | bun route, bash fallthrough | KEEP-MODERN | Trust moat surface |
34
+ | crash | bun route, bash fallthrough | KEEP-MODERN | Local-only crash plumbing |
35
+ | contract | loki-ts/src/cli.ts | KEEP-MODERN | v10 delivery contract |
36
+ | start | bun route, bash fallthrough | UPDATE | Forks between v10 and the SDK loop; flags still legacy-shaped |
37
+ | slack | loki-ts/src/cli.ts | KEEP-MODERN | Bun-native integration |
38
+ | answer | loki-ts/src/cli.ts | KEEP-MODERN | v10 blocked-run flow |
39
+ | engine10 | loki-ts/src/cli.ts | KEEP-MODERN | The v10 engine |
40
+ | internal (hidden) | loki-ts/src/cli.ts | KEEP-MODERN | Hidden plumbing |
41
+ | completion (hidden) | loki-ts/src/cli.ts | KEEP-MODERN | Hidden plumbing; completions install themselves |
42
+ | __complete (hidden) | loki-ts/src/cli.ts | KEEP-MODERN | Hidden plumbing for generated completions |
43
+ | help | autonomy/loki | KEEP-MODERN | Core |
44
+ | quick | autonomy/loki | UPDATE | Routes to the v10 lean path by default |
45
+ | quickstart | autonomy/loki | KEEP-MODERN | Onboarding path |
46
+ | init | autonomy/loki | UPDATE | Templates predate v10 |
47
+ | template | autonomy/loki | KEEP-MODERN | Engine-neutral |
48
+ | verify | autonomy/loki | UPDATE | Legacy proof vs v10 verify split |
49
+ | keys | autonomy/loki | KEEP-MODERN | Trust moat |
50
+ | review | autonomy/loki | UPDATE | Gates are legacy-shaped |
51
+ | dashboard | autonomy/loki | UPDATE | Overlaps Control Plane |
52
+ | config | autonomy/loki | UPDATE | Mixed legacy keys |
53
+ | mcp | autonomy/loki | KEEP-MODERN | Engine-neutral |
54
+ | acp | autonomy/loki | KEEP-MODERN | Engine-neutral |
55
+ | stop | autonomy/loki | KEEP-MODERN | Session control |
56
+ | pause | autonomy/loki | KEEP-MODERN | Session control |
57
+ | resume | autonomy/loki | KEEP-MODERN | Session control |
58
+ | why | autonomy/loki | KEEP-MODERN | Outcome explainer |
59
+ | next | autonomy/loki | KEEP-MODERN | Guided flow |
60
+ | logs | autonomy/loki | KEEP-MODERN | Engine-neutral |
61
+ | ship | autonomy/loki | KEEP-MODERN | Delivery |
62
+ | deploy | autonomy/loki | KEEP-MODERN | Delivery |
63
+ | import | autonomy/loki | KEEP-MODERN | Spec intake |
64
+ | github | autonomy/loki | KEEP-MODERN | Integration |
65
+ | issue | autonomy/loki | KEEP-MODERN | Issue-mode |
66
+ | ci | autonomy/loki | KEEP-MODERN | Engine-neutral |
67
+ | modernize | bun route, bash fallthrough | KEEP-MODERN | Routed to engine10 modernize |
68
+ | share | autonomy/loki | KEEP-MODERN | Engine-neutral |
69
+ | assets | autonomy/loki | KEEP-MODERN | Engine-neutral |
70
+ | export | autonomy/loki | UPDATE | Duplicates report export |
71
+ | notify | autonomy/loki | KEEP-MODERN | Engine-neutral |
72
+ | tour | autonomy/loki | KEEP-MODERN | Onboarding |
73
+ | welcome | autonomy/loki | KEEP-MODERN | Onboarding |
74
+ | onboard | autonomy/loki | UPDATE | Overlaps wiki |
75
+ | setup-skill | autonomy/loki | KEEP-MODERN | Setup |
76
+ | self-update | autonomy/loki | KEEP-MODERN | Maintenance |
77
+ | self_update | autonomy/loki | DELETE | Alias of self-update; shown only under 'loki help aliases' |
78
+ | update | autonomy/loki | DELETE | Alias of self-update; shown only under 'loki help aliases' |
79
+ | remote | autonomy/loki | KEEP-MODERN | Engine-neutral |
80
+ | rc | autonomy/loki | DELETE | Alias of remote; shown only under 'loki help aliases' |
81
+ | cockpit | autonomy/loki | KEEP-MODERN | Engine-neutral |
82
+ | code | autonomy/loki | UPDATE | Overlaps wiki |
83
+ | context | autonomy/loki | KEEP-MODERN | Engine-neutral |
84
+ | ctx | autonomy/loki | DELETE | Alias of context; shown only under 'loki help aliases' |
85
+ | secrets | autonomy/loki | KEEP-MODERN | Security |
86
+ | api | autonomy/loki | KEEP-MODERN | Engine-neutral |
87
+ | sandbox | autonomy/loki | KEEP-MODERN | Isolation |
88
+ | docker | autonomy/loki | KEEP-MODERN | Isolation |
89
+ | web | autonomy/loki | UPDATE | Overlaps Control Plane UI |
90
+ | preview | autonomy/loki | KEEP-MODERN | Delivery |
91
+ | telemetry | autonomy/loki | KEEP-MODERN | Privacy surface |
92
+ | otel | autonomy/loki | DELETE | Alias of telemetry; shown only under 'loki help aliases' |
93
+ | syslog | autonomy/loki | UPDATE | Legacy log paths |
94
+ | explain | autonomy/loki | KEEP-MODERN | Knowledge |
95
+ | docs | autonomy/loki | KEEP-MODERN | Core |
96
+ | test | autonomy/loki | UPDATE | Legacy runner |
97
+ | bench | autonomy/loki | KEEP-MODERN | Engine-neutral |
98
+ | voice | autonomy/loki | UPDATE | Experimental |
99
+ | own | autonomy/loki | UPDATE | Legacy handoff |
100
+ | handoff | autonomy/loki | DELETE | Alias of own; shown only under 'loki help aliases' |
101
+ | secure | autonomy/loki | KEEP-MODERN | Security |
102
+ | compliance | autonomy/loki | KEEP-MODERN | Enterprise |
103
+ | enterprise | autonomy/loki | KEEP-MODERN | Enterprise |
104
+ | projects | autonomy/loki | KEEP-MODERN | Engine-neutral |
105
+ | audit | autonomy/loki | KEEP-MODERN | Enterprise |
106
+ | cost | autonomy/loki | UPDATE | Duplicates report cost |
107
+ | metrics | autonomy/loki | UPDATE | Duplicates report metrics |
108
+ | sentrux | autonomy/loki | UPDATE | Legacy gate input |
109
+ | magic | autonomy/loki | UPDATE | Legacy UI generator |
110
+ | estimate | autonomy/loki | DROP-LEGACY | Estimates the legacy PRD flow |
111
+ | plan | autonomy/loki | DROP-LEGACY | Legacy PRD flow |
112
+ | grill | autonomy/loki | DROP-LEGACY | Legacy PRD flow |
113
+ | spec | autonomy/loki | DROP-LEGACY | Legacy PRD flow |
114
+ | intent | autonomy/loki | DROP-LEGACY | Legacy PRD flow |
115
+ | backlog | autonomy/loki | DROP-LEGACY | Drives legacy RARV per issue |
116
+ | workspace | autonomy/loki | DROP-LEGACY | Drives legacy RARV |
117
+ | council | autonomy/loki | DROP-LEGACY | Legacy RARV gate |
118
+ | compound | autonomy/loki | DROP-LEGACY | Legacy memory pipeline |
119
+ | cluster | autonomy/loki | DROP-LEGACY | Legacy RARV |
120
+ | optimize | autonomy/loki | DROP-LEGACY | Legacy RARV |
121
+ | ultracode | autonomy/loki | DROP-LEGACY | Legacy Claude-only |
122
+ | monitor | autonomy/loki | DROP-LEGACY | Legacy engine state |
123
+ | watch | autonomy/loki | DROP-LEGACY | PRD flow |
124
+ | watchdog | autonomy/loki | DROP-LEGACY | Legacy engine |
125
+ | cleanup | autonomy/loki | DROP-LEGACY | Legacy run.sh orphans |
126
+ | state | autonomy/loki | DROP-LEGACY | Legacy engine |
127
+ | agent | autonomy/loki | DROP-LEGACY | Legacy engine |
128
+ | trigger | autonomy/loki | DROP-LEGACY | Legacy engine |
129
+ | failover | autonomy/loki | DROP-LEGACY | Legacy engine |
130
+ | reset | autonomy/loki | DROP-LEGACY | Legacy engine |
131
+ | merge | autonomy/loki | DROP-LEGACY | Legacy parallel mode |
132
+ | heal | autonomy/loki | DROP-LEGACY | Legacy engine |
133
+ | migrate | autonomy/loki | DROP-LEGACY | Superseded by modernize |
134
+ | dogfood | autonomy/loki | DROP-LEGACY | Legacy engine |
135
+ | steer | autonomy/loki | DROP-LEGACY | Needs legacy prompt injection |
136
+ | outcomes | autonomy/loki | DROP-LEGACY | Legacy outcome store |
137
+ | worktree | autonomy/loki | DROP-LEGACY | Legacy parallel mode |
138
+ | wt | autonomy/loki | DELETE | Alias of worktree; shown only under 'loki help aliases' |
139
+ | checkpoint | autonomy/loki | DROP-LEGACY | Legacy engine |
140
+ | cp | autonomy/loki | DELETE | Alias of checkpoint; shown only under 'loki help aliases' |
141
+ | analyze | autonomy/loki | DROP-LEGACY | Legacy analyze flow |
142
+ | demo | autonomy/loki | DROP-LEGACY | Legacy engine demo |
143
+ | run | autonomy/loki | DELETE | Alias; use start |
144
+ | trust-metrics | autonomy/loki | DELETE | Alias; use trust detail |
145
+ | serve | autonomy/loki | DELETE | Alias; use api start |
146
+ | open | autonomy/loki | DELETE | Alias; use dashboard open |
147
+
148
+ ## Registry gaps (nested paths dispatched but not yet in the registry)
149
+
150
+ - audit: 8
151
+ - code: 5
152
+ - compliance: 1
153
+ - config: 3
154
+ - context: 5
155
+ - cost: 6
156
+ - deploy: 1
157
+ - docs: 4
158
+ - enterprise: 2
159
+ - explain: 5
160
+ - export: 6
161
+ - github: 5
162
+ - import: 1
163
+ - init: 21
164
+ - issue: 2
165
+ - magic: 12
166
+ - memory: 7
167
+ - metrics: 6
168
+ - modernize: 3
169
+ - next: 1
170
+ - notify: 6
171
+ - onboard: 5
172
+ - own: 1
173
+ - pause: 1
174
+ - preview: 1
175
+ - projects: 8
176
+ - proof: 6
177
+ - provider: 3
178
+ - quick: 1
179
+ - resume: 1
180
+ - rollback: 2
181
+ - secrets: 3
182
+ - secure: 3
183
+ - setup-skill: 1
184
+ - share: 6
185
+ - ship: 1
186
+ - syslog: 3
187
+ - telemetry: 1
188
+ - template: 4
189
+ - version: 1
190
+ - web: 1
@@ -3,7 +3,7 @@
3
3
  Architect design, 2026-10-01, base 1dfc87103. Design only. Flag: `LOKI_CONTROL=1` until acceptance (slice CP-17).
4
4
 
5
5
  ## 1. Goal
6
- 1. One service plus one UI, `loki control`, replaces dashboard/, dashboard-ui/ and engine10/dashboard. Zero config locally; deployed once for hundreds of runs.
6
+ 1. One service plus one UI, `loki control`, replaces dashboard/, legacy-ui/ and engine10/dashboard. Zero config locally; deployed once for hundreds of runs.
7
7
  2. Stateless processes, all state in one DB (SQLite by default, Postgres via DATABASE_URL), self-healing, horizontally scalable on Postgres.
8
8
  3. Every number is folded from ingested run events. A panel with no data says "no data ingested", never 0.
9
9
 
@@ -22,7 +22,7 @@ Architect design, 2026-10-01, base 1dfc87103. Design only. Flag: `LOKI_CONTROL=1
22
22
  | engine10 dashboard | engine10/dashboard/server.ts:30-57 (fold-based), routes :116-125 | REAL, but one repo, one process, 127.0.0.1 |
23
23
  | Python dashboard, 168 routes | dashboard/server.py (13,171 lines); cost reads `.loki/metrics/efficiency` server.py:7869 | REAL but legacy: reads run.sh state that v10 runs never write |
24
24
  | Pricing table | dashboard/server.py:7748, :8582 ("Unverified placeholder rate") | INVENTED |
25
- | dashboard-ui /api/v2 activity, agents/leaderboard, cost/breakdown, memory/graph, pipeline/status, providers/health | dashboard-ui/index.js:100-105, issue #203 | INVENTED (no server route) |
25
+ | legacy-ui /api/v2 activity, agents/leaderboard, cost/breakdown, memory/graph, pipeline/status, providers/health | legacy-ui/index.js:100-105, issue #203 | INVENTED (no server route) |
26
26
  | Secret redaction | util/redact.ts:4-14 `redactSecrets`; seal.ts:30 `sanitizeReason`; output.ts:79 Reason line | REAL. Reuse. |
27
27
 
28
28
  ## 3. Data model (Drizzle, one schema for SQLite and Postgres)
@@ -63,7 +63,7 @@ Architect design, 2026-10-01, base 1dfc87103. Design only. Flag: `LOKI_CONTROL=1
63
63
  ## 8. Migration and deletion
64
64
  1. Build in packages/control-plane/ behind LOKI_CONTROL=1. The old UIs keep running; old-dashboard bug work is retired (D56.6).
65
65
  2. Acceptance (CP-17): real runs in, correct counts out, on SQLite and Postgres; first-run gate passes with the flag on.
66
- 3. Flip the default. One release later, delete dashboard/, dashboard-ui/, engine10/dashboard/ (and its registry.ts:19 line), `loki dashboard` becomes an alias of `loki control`, and the dashboard tests are removed (CP-18).
66
+ 3. Flip the default. One release later, delete dashboard/, legacy-ui/, engine10/dashboard/ (and its registry.ts:19 line), `loki dashboard` becomes an alias of `loki control`, and the dashboard tests are removed (CP-18).
67
67
 
68
68
  ## 9. v0 (ships in 1 to 2 hours on a D46 train)
69
69
  CP-00 corpus, then CP-01, CP-02 and CP-03 in parallel, then CP-04 to wire them: SQLite service with ingest, the shipper with backfill, and a UI with the Runs list and detail, all behind the flag.
@@ -91,7 +91,7 @@ Rules for every card: file sets do not overlap; only CP-02 touches supervisor.ts
91
91
  | CP-15 | Deploy: `packages/control-plane/Dockerfile`, `deploy/helm/loki-control/` | image boots, /ready 200 after migrations; `helm template` renders probes; replicas>1 without DATABASE_URL fails render | MEDIUM | CP-07 |
92
92
  | CP-16 | Self-heal: /ready gating, stale-run derivation, replay on boot | DB file removed while up: /ready 503, recovers; stale run flagged after heartbeat gap | LOW | 01,05 |
93
93
  | CP-17 | Acceptance + flag flip | full corpus and one real first-run demo run on SQLite and Postgres: every view's counts equal EXPECTED.json | HIGH | all above |
94
- | CP-18 | Delete dashboard/, dashboard-ui/, engine10/dashboard/, their tests and references | `rg` finds no imports; local-ci fast tier green; first-run gate opens the control UI | HIGH | CP-17 + 1 release |
94
+ | CP-18 | Delete dashboard/, legacy-ui/, engine10/dashboard/, their tests and references | `rg` finds no imports; local-ci fast tier green; first-run gate opens the control UI | HIGH | CP-17 + 1 release |
95
95
 
96
96
  Dependencies to add (none present today; web-app/package.json pins react 19, vite 6, tailwind 3, so align): hono, drizzle-orm, drizzle-kit (dev), react, react-dom, vite, @vitejs/plugin-react, tailwindcss. SQLite uses built-in `bun:sqlite`. Postgres uses drizzle's `bun-sql` driver if the pinned drizzle-orm exports it, otherwise `postgres` is the one extra. No hard blocker found: Bun is already the runtime (bin/loki:94).
97
97
 
@@ -20,24 +20,24 @@ Package: packages/control-plane (server in src/server, UI in ui/src). Sources ci
20
20
 
21
21
  ## 1. Legacy inventory (KEEP / REWORK / DROP)
22
22
 
23
- Shell: dashboard-ui/scripts/build-standalone.js (generates dashboard/static/index.html). Nav groups at build-standalone.js:1266-1347 (Build, Quality and Trust, Insights, Ops, Wiki). Pages at :1358-1882. RARV, Council, gates, checkpoints and app runner are legacy engine concepts with no v10 producer (docs/v10/LEGACY-REMOVAL.md:36-37), so they DROP or remap to v10 stages (events stage.started/completed/failed/skipped, loki-ts/src/engine10/status.ts:9).
23
+ Shell: legacy-ui/scripts/build-standalone.js (generates legacy-ui-static/index.html). Nav groups at build-standalone.js:1266-1347 (Build, Quality and Trust, Insights, Ops, Wiki). Pages at :1358-1882. RARV, Council, gates, checkpoints and app runner are legacy engine concepts with no v10 producer (docs/v10/LEGACY-REMOVAL.md:36-37), so they DROP or remap to v10 stages (events stage.started/completed/failed/skipped, loki-ts/src/engine10/status.ts:9).
24
24
 
25
25
  | Legacy page or control | Source | Decision | v10 home |
26
26
  |---|---|---|---|
27
27
  | Overview (spec, tasks, RARV timeline, diff) | components/loki-overview.js, loki-spec-panel.js, loki-rarv-timeline.js, loki-session-diff.js, loki-task-board.js; build-standalone.js:1358-1415 | REWORK | Home (KPI row, recent runs, BLOCKED inbox). RARV timeline becomes the v10 stage timeline in the run thread. Task board DROP (no v10 task queue). Diff KEEP inside the run thread. |
28
28
  | First-run hero ("loki quickstart") | build-standalone.js:1365-1387 | REWORK | Empty state of the New run composer (one action: paste an issue). |
29
29
  | App Runner | loki-app-preview.js, loki-app-status.js (/api/app-runner/*) | DROP | Screenshots and evidence in the run thread replace it. |
30
- | Checkpoints | loki-checkpoint-viewer.js (/api/checkpoints, rollback) | DROP | No v10 checkpoints; rollback deleted (LEGACY-REMOVAL.md:37). |
30
+ | Checkpoints | loki-checkpoint-viewer.js (/api/checkpoints, rollback) | REWORK | Served by the Control Plane: /v1/checkpoints read routes, plus create and rollback on the loopback-only action path (CPE24-P2). |
31
31
  | Context | loki-context-tracker.js (/api/context) | DROP | Token counts per run (input_tokens, output_tokens) shown in the run cost card. |
32
32
  | Fleet | loki-fleet.js (/api/fleet/*) | REWORK | Runs table (all repos, filters, group_id rollup). Its table styling is the Table primitive. |
33
33
  | Quality (score, gates, prompt optimizer) | loki-quality-score.js, loki-quality-gates.js, loki-prompt-optimizer.js | DROP | v10 verify stage plus NOT PROVEN list in the run thread. |
34
- | Trust trajectory and receipts panel | dashboard/static/trust.html, proofs.html; build-standalone.js:1811-1828 | KEEP on v10 data | Receipts page (list, inline verify, verified-rate trend from runs). |
34
+ | Trust trajectory and receipts panel | legacy-ui-static/trust.html, proofs.html; build-standalone.js:1811-1828 | KEEP on v10 data | Receipts page (list, inline verify, verified-rate trend from runs). |
35
35
  | Completion Council | loki-council-dashboard.js, loki-council-transcripts.js | DROP | Remapped: the v10 verify stage and receipt verdict. |
36
36
  | Spec Checklist | loki-checklist-viewer.js (/api/checklist) | REWORK | Plans and traceability (plan.json, issue.json, receipt claims). |
37
37
  | Insights: logs | loki-log-stream.js (/api/logs) | KEEP | Streaming log inside the run thread (events.jsonl). |
38
38
  | Insights: memory, learnings, USAGE.md | loki-memory-browser.js, loki-learning-dashboard.js; build-standalone.js:1427-1590 | DROP now | Memory page deferred until a v10 memory read API exists (section 3.2). USAGE.md becomes a Help link. |
39
39
  | Analytics | loki-analytics.js (/api/activity) | REWORK | Home trends (runs per day, verified rate) from the runs table. |
40
- | Cost | loki-cost-dashboard.js, loki-cost-waterfall.js, dashboard/static/cost.html; spend-cap banner build-standalone.js:1800-1806 | KEEP on v10 data | Cost and usage page; the "no cap" banner is kept and fed by loki.yaml budgets. |
40
+ | Cost | loki-cost-dashboard.js, loki-cost-waterfall.js, legacy-ui-static/cost.html; spend-cap banner build-standalone.js:1800-1806 | KEEP on v10 data | Cost and usage page; the "no cap" banner is kept and fed by loki.yaml budgets. |
41
41
  | Notifications | loki-notification-center.js | REWORK | Derived from events: BLOCKED, FAILED, budget.hit, tampered, conflict. |
42
42
  | Escalations | loki-escalations.js | REWORK | BLOCKED inbox on Home plus the reply prompt in the thread. |
43
43
  | Migration | loki-migration-dashboard.js | REWORK | Runs filtered to `loki modernize` runs once they ship events (engine10/modernize); hidden until then. |
@@ -55,11 +55,11 @@ Shell: dashboard-ui/scripts/build-standalone.js (generates dashboard/static/inde
55
55
  | Budget banner | build-standalone.js:1200-1203 | KEEP | Top banner when a budget is hit (budget.hit event). |
56
56
  | Run manager, audit viewer | loki-run-manager.js, loki-audit-viewer.js | REWORK | Runs table actions; Audit log page (control-plane actions). |
57
57
  | API keys, tenant switcher, managed memory | loki-api-keys.js, loki-tenant-switcher.js, loki-managed-memory-panel.js | DROP | Local single user; the bearer token is set by env (src/server/auth.ts). |
58
- | Onboarding (start.html) | dashboard/static/start.html (/api/onboarding/*, /api/backlog/*) | REWORK | Integrations page (GitHub connect status) plus the composer empty state. |
58
+ | Onboarding (start.html) | legacy-ui-static/start.html (/api/onboarding/*, /api/backlog/*) | REWORK | Integrations page (GitHub connect status) plus the composer empty state. |
59
59
 
60
60
  ## 2. Design system (extracted, binding)
61
61
 
62
- Two legacy layers exist and disagree on ground colors. The SHELL layer in build-standalone.js:113-185 is documented as the founder-approved identity (light-grey ground, comment at :113) and is what users saw around every page; the COMPONENT layer in dashboard-ui/core/loki-unified-styles.js:20-146 (also loki-theme.js:44-124) supplies the scales, status colors and component specs. Decision: shell ground and accent per theme from the shell layer; scales, radii, shadows, model colors and component recipes from the component layer. (Open question 1.)
62
+ Two legacy layers exist and disagree on ground colors. The SHELL layer in build-standalone.js:113-185 is documented as the founder-approved identity (light-grey ground, comment at :113) and is what users saw around every page; the COMPONENT layer in legacy-ui/core/loki-unified-styles.js:20-146 (also loki-theme.js:44-124) supplies the scales, status colors and component specs. Decision: shell ground and accent per theme from the shell layer; scales, radii, shadows, model colors and component recipes from the component layer. (Open question 1.)
63
63
 
64
64
  Package: packages/control-plane/ui/src/design/ with tokens.css (custom properties below), fonts.css (Google Fonts link, build-standalone parity: Fraunces opsz 9..144 wght 400/500/600, Inter 300-700, JetBrains Mono 400/500; static/index.html:11), tailwind.preset.ts (maps Tailwind colors, radius, spacing, fontFamily to the vars, so existing Tailwind classes keep working), and primitives/*.tsx.
65
65
 
@@ -238,7 +238,7 @@ Method. Route list: FastAPI introspection of `dashboard.server.app` (the 234 ent
238
238
 
239
239
  Status values: EXISTS (the CP serves it today), PARTIAL (the shim maps it and says what differs), MISSING (a USED route the CP has no data or mechanism for), UNUSED (no consumer). Shim actions: map (answer from CP data), 308 to CP UI (HTML page), 410 with notice (UNUSED, retired), 501 not yet supported (USED but no CP data or mechanism: the shim answers an explicit 501, never a faked success), none (the CP already serves the path).
240
240
 
241
- Counts: map 6, 308 5, 501 77, 410 142, none 4; total 234.
241
+ Counts: map 35, 308 5, 501 21, 410 169, none 4; total 234. A 410 row with a non-empty CP column also names that replacement in the 410 body (CPE24-P6).
242
242
 
243
243
  Auth contract (never looser than legacy). Legacy `require_scope` is open when LOKI_ENTERPRISE_AUTH and OIDC are both off, and otherwise answers 401 without a token and 403 on a missing scope. Open in every mode: /health, /.well-known/agent.json, /api/enterprise/status, /api/auth/info, /api/providers/models, /metrics, the docs routes. The shim applies one rule to every route the legacy server guarded: if LOKI_CONTROL_TOKEN is set, require the CP bearer token (401 with www-authenticate otherwise); if no CP token is set but legacy enterprise auth or OIDC is enabled in the environment, fail closed with 401 (the CP has no way to check the legacy `loki_*` tokens); if neither is set, open, matching the legacy default. The CP token carries every scope, which is safe because the shim exposes only read routes and answers 501 or 410 for the rest. 501 and 410 answers are also behind the guard, so an unauthenticated caller learns nothing about a guarded route. The shim never binds a port; mounting it on the CP app keeps hostGuard and the loopback-only action routes exactly as they are.
244
244
 
@@ -260,11 +260,11 @@ First hit per process, each route logs one line: `legacy dashboard route <path>
260
260
  | GET `/docs` | none | none | UNUSED | 410 with notice |
261
261
  | GET `/docs/oauth2-redirect` | none | none | UNUSED | 410 with notice |
262
262
  | GET `/redoc` | none | none | UNUSED | 410 with notice |
263
- | POST `/api/v2/tenants` | sdk/python/loki_mode_sdk/client.py:204, sdk/typescript/src/client.ts:237 | none | MISSING | 501 not yet supported |
264
- | GET `/api/v2/tenants` | sdk/python/loki_mode_sdk/client.py:191, sdk/typescript/src/client.ts:225 | none | MISSING | 501 not yet supported |
265
- | GET `/api/v2/tenants/{tenant_id}` | sdk/typescript/src/client.ts:229 | none | MISSING | 501 not yet supported |
263
+ | POST `/api/v2/tenants` | sdk/python/loki_mode_sdk/client.py:204, sdk/typescript/src/client.ts:237 | no tenants: local single user | DROPPED (section 1) | 410 with notice |
264
+ | GET `/api/v2/tenants` | sdk/python/loki_mode_sdk/client.py:191, sdk/typescript/src/client.ts:225 | no tenants: local single user | DROPPED (section 1) | 410 with notice |
265
+ | GET `/api/v2/tenants/{tenant_id}` | sdk/typescript/src/client.ts:229 | no tenants: local single user | DROPPED (section 1) | 410 with notice |
266
266
  | PUT `/api/v2/tenants/{tenant_id}` | none | none | UNUSED | 410 with notice |
267
- | DELETE `/api/v2/tenants/{tenant_id}` | sdk/typescript/src/client.ts:241 | none | MISSING | 501 not yet supported |
267
+ | DELETE `/api/v2/tenants/{tenant_id}` | sdk/typescript/src/client.ts:241 | no tenants: local single user | DROPPED (section 1) | 410 with notice |
268
268
  | GET `/api/v2/tenants/{tenant_id}/projects` | none | none | UNUSED | 410 with notice |
269
269
  | POST `/api/v2/runs` | vscode-extension/media/loki-dashboard.js:9617 | none | MISSING | 501 not yet supported |
270
270
  | GET `/api/v2/runs` | sdk/python/loki_mode_sdk/client.py:220, sdk/typescript/src/client.ts:201 | /v1/runs | PARTIAL (ids are source:run strings, not ints; no project_id filter; status maps to running/completed; limit/offset map to limit/cursor) | map |
@@ -272,12 +272,12 @@ First hit per process, each route logs one line: `legacy dashboard route <path>
272
272
  | POST `/api/v2/runs/{run_id}/cancel` | sdk/python/loki_mode_sdk/client.py:233, sdk/typescript/src/client.ts:209, vscode-extension/media/loki-dashboard.js:9617 | none | MISSING | 501 not yet supported |
273
273
  | POST `/api/v2/runs/{run_id}/replay` | sdk/python/loki_mode_sdk/client.py:238, sdk/typescript/src/client.ts:213, vscode-extension/media/loki-dashboard.js:9617 | none | MISSING | 501 not yet supported |
274
274
  | GET `/api/v2/runs/{run_id}/timeline` | sdk/python/loki_mode_sdk/client.py:243, sdk/typescript/src/client.ts:217, vscode-extension/media/loki-dashboard.js:9255 | /v1/runs/:id (stages, events) | PARTIAL (phases are CP stages; events carry seq, ts, type, stage only) | map |
275
- | POST `/api/v2/api-keys` | sdk/python/loki_mode_sdk/client.py:263, sdk/typescript/src/client.ts:178, vscode-extension/media/loki-dashboard.js:10097 | none | MISSING | 501 not yet supported |
276
- | GET `/api/v2/api-keys` | sdk/python/loki_mode_sdk/client.py:253, sdk/typescript/src/client.ts:170 | none | MISSING | 501 not yet supported |
275
+ | POST `/api/v2/api-keys` | sdk/python/loki_mode_sdk/client.py:263, sdk/typescript/src/client.ts:178, vscode-extension/media/loki-dashboard.js:10097 | CP bearer token set by env (LOKI_CONTROL_TOKEN) | DROPPED (section 1) | 410 with notice |
276
+ | GET `/api/v2/api-keys` | sdk/python/loki_mode_sdk/client.py:253, sdk/typescript/src/client.ts:170 | CP bearer token set by env (LOKI_CONTROL_TOKEN) | DROPPED (section 1) | 410 with notice |
277
277
  | GET `/api/v2/api-keys/{identifier}` | none | none | UNUSED | 410 with notice |
278
278
  | PUT `/api/v2/api-keys/{identifier}` | none | none | UNUSED | 410 with notice |
279
- | DELETE `/api/v2/api-keys/{identifier}` | sdk/typescript/src/client.ts:190, vscode-extension/media/loki-dashboard.js:10097 | none | MISSING | 501 not yet supported |
280
- | POST `/api/v2/api-keys/{identifier}/rotate` | sdk/python/loki_mode_sdk/client.py:271, sdk/typescript/src/client.ts:186, vscode-extension/media/loki-dashboard.js:10097 | none | MISSING | 501 not yet supported |
279
+ | DELETE `/api/v2/api-keys/{identifier}` | sdk/typescript/src/client.ts:190, vscode-extension/media/loki-dashboard.js:10097 | CP bearer token set by env (LOKI_CONTROL_TOKEN) | DROPPED (section 1) | 410 with notice |
280
+ | POST `/api/v2/api-keys/{identifier}/rotate` | sdk/python/loki_mode_sdk/client.py:271, sdk/typescript/src/client.ts:186, vscode-extension/media/loki-dashboard.js:10097 | CP bearer token set by env (LOKI_CONTROL_TOKEN) | DROPPED (section 1) | 410 with notice |
281
281
  | GET `/api/v2/policies` | none | none | UNUSED | 410 with notice |
282
282
  | PUT `/api/v2/policies` | none | none | UNUSED | 410 with notice |
283
283
  | POST `/api/v2/policies/evaluate` | none | none | UNUSED | 410 with notice |
@@ -314,31 +314,31 @@ First hit per process, each route logs one line: `legacy dashboard route <path>
314
314
  | GET `/api/projects/{project_id}` | sdk/python/loki_mode_sdk/client.py:174, sdk/typescript/src/client.ts:131 | none | MISSING | 501 not yet supported |
315
315
  | PUT `/api/projects/{project_id}` | vscode-extension/media/loki-dashboard.js:496 | none | MISSING | 501 not yet supported |
316
316
  | DELETE `/api/projects/{project_id}` | vscode-extension/media/loki-dashboard.js:496 | none | MISSING | 501 not yet supported |
317
- | GET `/api/tasks` | sdk/python/loki_mode_sdk/tasks.py:30, sdk/typescript/src/client.ts:150 | none | MISSING | 501 not yet supported |
318
- | POST `/api/tasks` | sdk/python/loki_mode_sdk/tasks.py:56, sdk/typescript/src/client.ts:162, vscode-extension/media/loki-dashboard.js:496 | none | MISSING | 501 not yet supported |
319
- | GET `/api/tasks/{task_id}` | sdk/python/loki_mode_sdk/tasks.py:38, sdk/typescript/src/client.ts:154, vscode-extension/src/views/dashboardWebview.ts:168 | none | MISSING | 501 not yet supported |
320
- | PUT `/api/tasks/{task_id}` | sdk/python/loki_mode_sdk/tasks.py:71, vscode-extension/media/loki-dashboard.js:496 | none | MISSING | 501 not yet supported |
321
- | DELETE `/api/tasks/{task_id}` | vscode-extension/media/loki-dashboard.js:496 | none | MISSING | 501 not yet supported |
322
- | POST `/api/tasks/{task_id}/move` | vscode-extension/media/loki-dashboard.js:496 | none | MISSING | 501 not yet supported |
323
- | WS `/ws` | vscode-extension/media/loki-dashboard.js:496 | none | MISSING | 501 not yet supported |
317
+ | GET `/api/tasks` | sdk/python/loki_mode_sdk/tasks.py:30, sdk/typescript/src/client.ts:150 | /v1/tasks (CPE24-P3) | PARTIAL (reads the same .loki source; legacy SQLite memory backend not read; unmeasured values are null) | map |
318
+ | POST `/api/tasks` | sdk/python/loki_mode_sdk/tasks.py:56, sdk/typescript/src/client.ts:162, vscode-extension/media/loki-dashboard.js:496 | no v10 task queue; read-only GET /v1/tasks | DROPPED (section 1) | 410 with notice |
319
+ | GET `/api/tasks/{task_id}` | sdk/python/loki_mode_sdk/tasks.py:38, sdk/typescript/src/client.ts:154, vscode-extension/src/views/dashboardWebview.ts:168 | no v10 task queue; read-only GET /v1/tasks | DROPPED (section 1) | 410 with notice |
320
+ | PUT `/api/tasks/{task_id}` | sdk/python/loki_mode_sdk/tasks.py:71, vscode-extension/media/loki-dashboard.js:496 | no v10 task queue; read-only GET /v1/tasks | DROPPED (section 1) | 410 with notice |
321
+ | DELETE `/api/tasks/{task_id}` | vscode-extension/media/loki-dashboard.js:496 | no v10 task queue; read-only GET /v1/tasks | DROPPED (section 1) | 410 with notice |
322
+ | POST `/api/tasks/{task_id}/move` | vscode-extension/media/loki-dashboard.js:496 | no v10 task queue; read-only GET /v1/tasks | DROPPED (section 1) | 410 with notice |
323
+ | WS `/ws` | vscode-extension/media/loki-dashboard.js:496 | SSE at GET /v1/stream | DROPPED (section 1) | 410 with notice |
324
324
  | GET `/api/registry/projects` | none | none | UNUSED | 410 with notice |
325
- | POST `/api/registry/projects` | vscode-extension/media/loki-dashboard.js:496 | none | MISSING | 501 not yet supported |
325
+ | POST `/api/registry/projects` | vscode-extension/media/loki-dashboard.js:496 | repos are discovered locally; GET /v1/repos | DROPPED (section 1) | 410 with notice |
326
326
  | GET `/api/registry/projects/{identifier}` | none | none | UNUSED | 410 with notice |
327
327
  | DELETE `/api/registry/projects/{identifier}` | none | none | UNUSED | 410 with notice |
328
328
  | GET `/api/registry/projects/{identifier}/health` | none | none | UNUSED | 410 with notice |
329
329
  | POST `/api/registry/projects/{identifier}/access` | none | none | UNUSED | 410 with notice |
330
330
  | GET `/api/registry/discover` | none | none | UNUSED | 410 with notice |
331
- | POST `/api/registry/sync` | vscode-extension/media/loki-dashboard.js:496 | none | MISSING | 501 not yet supported |
331
+ | POST `/api/registry/sync` | vscode-extension/media/loki-dashboard.js:496 | repos are discovered locally; GET /v1/repos | DROPPED (section 1) | 410 with notice |
332
332
  | GET `/api/registry/tasks` | none | none | UNUSED | 410 with notice |
333
333
  | GET `/api/registry/learnings` | none | none | UNUSED | 410 with notice |
334
334
  | GET `/api/fleet/runs` | tests/moat/p7-no-fabricated-data.sh:4637 (test), tests/moat/p7-no-fabricated-data.sh:4706 (test), tests/moat/p7-no-fabricated-data.sh:4710 (test) (+1) | /v1/fleet/runs (CPE24-P1) | PARTIAL (reads the same .loki or registry source; unmeasured values are null with a not-measured marker) | map |
335
335
  | GET `/api/fleet/summary` | tests/moat/p7-no-fabricated-data.sh:4637 (test), tests/moat/p7-no-fabricated-data.sh:4695 (test), tests/moat/p7-no-fabricated-data.sh:4696 (test) (+1) | /v1/fleet/summary (CPE24-P1) | PARTIAL (reads the same .loki or registry source; unmeasured values are null with a not-measured marker) | map |
336
336
  | GET `/api/fleet/runs/{identifier}` | none | none | UNUSED | 410 with notice |
337
- | POST `/api/focus` | autonomy/run.sh:24831, web-app/server.py:2744 | none | MISSING | 501 not yet supported |
337
+ | POST `/api/focus` | autonomy/run.sh:24831, web-app/server.py:2744 | /v1/focus (CPE24-P3) | PARTIAL (focus only to this checkout or a registered project; loopback, JSON, same-origin) | map |
338
338
  | GET `/api/focus` | none | none | UNUSED | 410 with notice |
339
339
  | DELETE `/api/focus` | none | none | UNUSED | 410 with notice |
340
340
  | GET `/api/session/model` | none | none | UNUSED | 410 with notice |
341
- | POST `/api/session/model` | vscode-extension/media/loki-dashboard.js:496 | none | MISSING | 501 not yet supported |
341
+ | POST `/api/session/model` | vscode-extension/media/loki-dashboard.js:496 | no mid-run model switch; start a new run with another model (POST /v1/runs) | DROPPED (section 1) | 410 with notice |
342
342
  | GET `/api/running-projects` | none | none | UNUSED | 410 with notice |
343
343
  | POST `/api/control/start` | vscode-extension/media/loki-dashboard.js:496, vscode-extension/src/api/client.ts:257, vscode-extension/src/extension.ts:580 | none | MISSING | 501 not yet supported |
344
344
  | GET `/api/control/builds/{execution_id}` | none | none | UNUSED | 410 with notice |
@@ -352,19 +352,19 @@ First hit per process, each route logs one line: `legacy dashboard route <path>
352
352
  | POST `/api/enterprise/tokens` | none | none | UNUSED | 410 with notice |
353
353
  | GET `/api/enterprise/tokens` | none | none | UNUSED | 410 with notice |
354
354
  | DELETE `/api/enterprise/tokens/{identifier}` | none | none | UNUSED | 410 with notice |
355
- | GET `/api/enterprise/audit` | none | none | UNUSED | 410 with notice |
356
- | GET `/api/enterprise/audit/summary` | none | none | UNUSED | 410 with notice |
355
+ | GET `/api/enterprise/audit` | none | /v1/audit (CPE24-P2) | PARTIAL (read-only; the operator audit table, no hash chain access) | map |
356
+ | GET `/api/enterprise/audit/summary` | none | /v1/audit/summary (CPE24-P2) | PARTIAL (read-only; success, failure and resource-type counts are null, not measured) | map |
357
357
  | GET `/api/compliance` | none | none | UNUSED | 410 with notice |
358
358
  | GET `/api/memory/summary` | none | none | UNUSED | 410 with notice |
359
- | GET `/api/memory/episodes` | vscode-extension/src/views/memoryViewProvider.ts:152 | none | MISSING | 501 not yet supported |
360
- | GET `/api/memory/episodes/{episode_id}` | vscode-extension/src/views/dashboardWebview.ts:204, vscode-extension/src/views/memoryViewProvider.ts:215 | none | MISSING | 501 not yet supported |
361
- | GET `/api/memory/patterns` | vscode-extension/src/views/memoryViewProvider.ts:151 | none | MISSING | 501 not yet supported |
362
- | GET `/api/memory/patterns/{pattern_id}` | vscode-extension/src/views/dashboardWebview.ts:186, vscode-extension/src/views/memoryViewProvider.ts:197 | none | MISSING | 501 not yet supported |
363
- | GET `/api/memory/skills` | vscode-extension/src/views/memoryViewProvider.ts:153 | none | MISSING | 501 not yet supported |
359
+ | GET `/api/memory/episodes` | vscode-extension/src/views/memoryViewProvider.ts:152 | /v1/memory/episodes (CPE24-P3) | PARTIAL (reads the same .loki source; legacy SQLite memory backend not read; unmeasured values are null) | map |
360
+ | GET `/api/memory/episodes/{episode_id}` | vscode-extension/src/views/dashboardWebview.ts:204, vscode-extension/src/views/memoryViewProvider.ts:215 | /v1/memory/episodes/{id} (CPE24-P3) | PARTIAL (reads the same .loki source; legacy SQLite memory backend not read; unmeasured values are null) | map |
361
+ | GET `/api/memory/patterns` | vscode-extension/src/views/memoryViewProvider.ts:151 | /v1/memory/patterns (CPE24-P3) | PARTIAL (reads the same .loki source; legacy SQLite memory backend not read; unmeasured values are null) | map |
362
+ | GET `/api/memory/patterns/{pattern_id}` | vscode-extension/src/views/dashboardWebview.ts:186, vscode-extension/src/views/memoryViewProvider.ts:197 | /v1/memory/patterns/{id} (CPE24-P3) | PARTIAL (reads the same .loki source; legacy SQLite memory backend not read; unmeasured values are null) | map |
363
+ | GET `/api/memory/skills` | vscode-extension/src/views/memoryViewProvider.ts:153 | /v1/memory/skills (CPE24-P3) | PARTIAL (reads the same .loki source; legacy SQLite memory backend not read; unmeasured values are null) | map |
364
364
  | GET `/api/memory/skills/{skill_id}` | none | none | UNUSED | 410 with notice |
365
- | GET `/api/memory/economics` | tests/moat/p7-no-fabricated-data.sh:4638 (test), tests/moat/p7-no-fabricated-data.sh:4749 (test), tests/moat/p7-no-fabricated-data.sh:4750 (test) (+2) | none | MISSING | 501 not yet supported |
366
- | POST `/api/memory/consolidate` | vscode-extension/media/loki-dashboard.js:496 | none | MISSING | 501 not yet supported |
367
- | POST `/api/memory/retrieve` | vscode-extension/media/loki-dashboard.js:496 | none | MISSING | 501 not yet supported |
365
+ | GET `/api/memory/economics` | tests/moat/p7-no-fabricated-data.sh:4638 (test), tests/moat/p7-no-fabricated-data.sh:4749 (test), tests/moat/p7-no-fabricated-data.sh:4750 (test) (+2) | /v1/memory/economics (CPE24-P3) | PARTIAL (reads the same .loki source; legacy SQLite memory backend not read; unmeasured values are null) | map |
366
+ | POST `/api/memory/consolidate` | vscode-extension/media/loki-dashboard.js:496 | read-only GET /v1/memory/* | DROPPED (section 1) | 410 with notice |
367
+ | POST `/api/memory/retrieve` | vscode-extension/media/loki-dashboard.js:496 | read-only GET /v1/memory/* | DROPPED (section 1) | 410 with notice |
368
368
  | GET `/api/memory/index` | none | none | UNUSED | 410 with notice |
369
369
  | GET `/api/memory/timeline` | none | none | UNUSED | 410 with notice |
370
370
  | GET `/api/memory/files` | none | none | UNUSED | 410 with notice |
@@ -375,41 +375,41 @@ First hit per process, each route logs one line: `legacy dashboard route <path>
375
375
  | GET `/api/learning/trends` | none | none | UNUSED | 410 with notice |
376
376
  | GET `/api/learning/signals` | none | none | UNUSED | 410 with notice |
377
377
  | GET `/api/learning/aggregation` | none | none | UNUSED | 410 with notice |
378
- | POST `/api/learning/aggregate` | vscode-extension/media/loki-dashboard.js:496 | none | MISSING | 501 not yet supported |
378
+ | POST `/api/learning/aggregate` | vscode-extension/media/loki-dashboard.js:496 | read-only GET /v1/memory/patterns | DROPPED (section 1) | 410 with notice |
379
379
  | GET `/api/learning/preferences` | none | none | UNUSED | 410 with notice |
380
380
  | GET `/api/learning/errors` | none | none | UNUSED | 410 with notice |
381
381
  | GET `/api/learning/success` | none | none | UNUSED | 410 with notice |
382
382
  | GET `/api/learning/tools` | none | none | UNUSED | 410 with notice |
383
- | POST `/api/control/pause` | vscode-extension/media/loki-dashboard.js:496, vscode-extension/src/api/client.ts:277, vscode-extension/src/extension.ts:703 | none | MISSING | 501 not yet supported |
384
- | POST `/api/control/resume` | vscode-extension/media/loki-dashboard.js:496, vscode-extension/src/api/client.ts:285, vscode-extension/src/extension.ts:743 | none | MISSING | 501 not yet supported |
385
- | POST `/api/control/stop` | vscode-extension/media/loki-dashboard.js:496, vscode-extension/src/api/client.ts:269, vscode-extension/src/extension.ts:651 | none | MISSING | 501 not yet supported |
383
+ | POST `/api/control/pause` | vscode-extension/media/loki-dashboard.js:496, vscode-extension/src/api/client.ts:277, vscode-extension/src/extension.ts:703 | /v1/control/pause (CPE24-P4) | PARTIAL (writes only the .loki signal file run.sh reads; no process is signalled; same-origin plus loopback or CP token required) | map |
384
+ | POST `/api/control/resume` | vscode-extension/media/loki-dashboard.js:496, vscode-extension/src/api/client.ts:285, vscode-extension/src/extension.ts:743 | /v1/control/resume (CPE24-P4) | PARTIAL (writes only the .loki signal file run.sh reads; no process is signalled; same-origin plus loopback or CP token required) | map |
385
+ | POST `/api/control/stop` | vscode-extension/media/loki-dashboard.js:496, vscode-extension/src/api/client.ts:269, vscode-extension/src/extension.ts:651 | /v1/control/stop (CPE24-P4) | PARTIAL (writes only the .loki signal file run.sh reads; no process is signalled; same-origin plus loopback or CP token required) | map |
386
386
  | GET `/api/cost` | tests/moat/p7-no-fabricated-data.sh:4637 (test), tests/moat/p7-no-fabricated-data.sh:4646 (test), tests/moat/p7-no-fabricated-data.sh:4647 (test) (+3) | /v1/cost/snapshot (CPE24-P1) | PARTIAL (reads the same .loki or registry source; unmeasured values are null with a not-measured marker) | map |
387
387
  | GET `/api/budget` | tests/e2e/dashboard-evidence-panels.mjs:73 (test), tests/moat/p7-no-fabricated-data.sh:4637 (test), tests/moat/p7-no-fabricated-data.sh:4650 (test) (+3) | none | MISSING | 501 not yet supported |
388
388
  | GET `/api/cost/timeline` | tests/moat/p7-no-fabricated-data.sh:4637 (test), tests/moat/p7-no-fabricated-data.sh:4652 (test), tests/moat/p7-no-fabricated-data.sh:4653 (test) (+15) | /v1/cost/timeline (CPE24-P1) | PARTIAL (reads the same .loki or registry source; unmeasured values are null with a not-measured marker) | map |
389
389
  | GET `/api/trust/trajectory` | none | none | UNUSED | 410 with notice |
390
390
  | GET `/api/gate-policy` | none | none | UNUSED | 410 with notice |
391
391
  | GET `/api/pricing` | none | none | UNUSED | 410 with notice |
392
- | GET `/api/council/state` | none | none | UNUSED | 410 with notice |
393
- | GET `/api/council/verdicts` | none | none | UNUSED | 410 with notice |
394
- | GET `/api/council/convergence` | none | none | UNUSED | 410 with notice |
395
- | GET `/api/council/report` | none | none | UNUSED | 410 with notice |
396
- | POST `/api/council/force-review` | vscode-extension/media/loki-dashboard.js:496, vscode-extension/media/loki-dashboard.js:4312 | none | MISSING | 501 not yet supported |
397
- | GET `/api/council/transcripts` | vscode-extension/media/loki-dashboard.js:12426 | none | MISSING | 501 not yet supported |
392
+ | GET `/api/council/state` | none | /v1/council/state (CPE24-P4) | PARTIAL (reads the same .loki/council files; read-only) | map |
393
+ | GET `/api/council/verdicts` | none | /v1/council/verdicts (CPE24-P4) | PARTIAL (reads the same .loki/council files; read-only) | map |
394
+ | GET `/api/council/convergence` | none | /v1/council/convergence (CPE24-P4) | PARTIAL (reads the same .loki/council files; read-only) | map |
395
+ | GET `/api/council/report` | none | /v1/council/report (CPE24-P4) | PARTIAL (reads the same .loki/council files; read-only) | map |
396
+ | POST `/api/council/force-review` | vscode-extension/media/loki-dashboard.js:496, vscode-extension/media/loki-dashboard.js:4312 | /v1/control/council-review (CPE24-P4) | PARTIAL (writes only the .loki signal file run.sh reads; no process is signalled; same-origin plus loopback or CP token required) | map |
397
+ | GET `/api/council/transcripts` | vscode-extension/media/loki-dashboard.js:12426 | /v1/council/transcripts (CPE24-P4) | PARTIAL (reads the same .loki/council files; read-only) | map |
398
398
  | GET `/api/council/transcripts/{iteration_id}` | none | none | UNUSED | 410 with notice |
399
- | GET `/api/context` | tests/moat/p7-no-fabricated-data.sh:4638 (test), tests/moat/p7-no-fabricated-data.sh:4745 (test), tests/moat/p7-no-fabricated-data.sh:4746 (test) (+3) | none | MISSING | 501 not yet supported |
399
+ | GET `/api/context` | tests/moat/p7-no-fabricated-data.sh:4638 (test), tests/moat/p7-no-fabricated-data.sh:4745 (test), tests/moat/p7-no-fabricated-data.sh:4746 (test) (+3) | /v1/context (CPE24-P3) | PARTIAL (reads the same .loki source; legacy SQLite memory backend not read; unmeasured values are null) | map |
400
400
  | GET `/api/notifications` | none | none | UNUSED | 410 with notice |
401
401
  | GET `/api/notifications/triggers` | none | none | UNUSED | 410 with notice |
402
- | PUT `/api/notifications/triggers` | vscode-extension/media/loki-dashboard.js:496, vscode-extension/media/loki-dashboard.js:6802 | none | MISSING | 501 not yet supported |
402
+ | PUT `/api/notifications/triggers` | vscode-extension/media/loki-dashboard.js:496, vscode-extension/media/loki-dashboard.js:6802 | GET /v1/notifications (derived from events) | DROPPED (section 1) | 410 with notice |
403
403
  | POST `/api/notifications/{notification_id}/acknowledge` | none | none | UNUSED | 410 with notice |
404
404
  | POST `/api/notifications/{notification_id}/unacknowledge` | none | none | UNUSED | 410 with notice |
405
- | GET `/api/checkpoints` | vscode-extension/src/views/checkpointProvider.ts:108, vscode-extension/src/views/checkpointProvider.ts:134 | none | MISSING | 501 not yet supported |
406
- | GET `/api/checkpoints/{checkpoint_id}` | none | none | UNUSED | 410 with notice |
407
- | POST `/api/checkpoints` | vscode-extension/media/loki-dashboard.js:5960 | none | MISSING | 501 not yet supported |
408
- | POST `/api/checkpoints/{checkpoint_id}/rollback` | vscode-extension/media/loki-dashboard.js:5960 | none | MISSING | 501 not yet supported |
405
+ | GET `/api/checkpoints` | vscode-extension/src/views/checkpointProvider.ts:108, vscode-extension/src/views/checkpointProvider.ts:134 | /v1/checkpoints (CPE24-P2) | PARTIAL (reads the same .loki/state/checkpoints store; unmeasured values are null) | map |
406
+ | GET `/api/checkpoints/{checkpoint_id}` | none | /v1/checkpoints/{id} (CPE24-P2) | PARTIAL (reads the same .loki/state/checkpoints store; unmeasured values are null) | map |
407
+ | POST `/api/checkpoints` | vscode-extension/media/loki-dashboard.js:5960 | /v1/checkpoints (CPE24-P2) | PARTIAL (loopback peer, loopback Host and JSON required; audited) | map |
408
+ | POST `/api/checkpoints/{checkpoint_id}/rollback` | vscode-extension/media/loki-dashboard.js:5960 | /v1/checkpoints/{id}/rollback (CPE24-P2) | PARTIAL (loopback peer, loopback Host and JSON required; forced pre-rollback snapshot; audited) | map |
409
409
  | GET `/api/agents` | none | none | UNUSED | 410 with notice |
410
- | POST `/api/agents/{agent_id}/kill` | vscode-extension/media/loki-dashboard.js:4312 | none | MISSING | 501 not yet supported |
411
- | POST `/api/agents/{agent_id}/pause` | vscode-extension/media/loki-dashboard.js:4312 | none | MISSING | 501 not yet supported |
412
- | POST `/api/agents/{agent_id}/resume` | vscode-extension/media/loki-dashboard.js:4312 | none | MISSING | 501 not yet supported |
410
+ | POST `/api/agents/{agent_id}/kill` | vscode-extension/media/loki-dashboard.js:4312 | POST /v1/control/stop | DROPPED (section 1) | 410 with notice |
411
+ | POST `/api/agents/{agent_id}/pause` | vscode-extension/media/loki-dashboard.js:4312 | POST /v1/control/stop (v10 has no pause) | DROPPED (section 1) | 410 with notice |
412
+ | POST `/api/agents/{agent_id}/resume` | vscode-extension/media/loki-dashboard.js:4312 | POST /v1/control/resume | DROPPED (section 1) | 410 with notice |
413
413
  | GET `/api/logs` | none | none | UNUSED | 410 with notice |
414
414
  | POST `/api/collab/join` | none | none | UNUSED | 410 with notice |
415
415
  | POST `/api/collab/leave` | none | none | UNUSED | 410 with notice |
@@ -438,19 +438,19 @@ First hit per process, each route logs one line: `legacy dashboard route <path>
438
438
  | GET `/api/checklist/summary` | none | none | UNUSED | 410 with notice |
439
439
  | GET `/api/prd-observations` | none | none | UNUSED | 410 with notice |
440
440
  | GET `/api/checklist/waivers` | none | none | UNUSED | 410 with notice |
441
- | POST `/api/checklist/waivers` | vscode-extension/media/loki-dashboard.js:496 | none | MISSING | 501 not yet supported |
442
- | DELETE `/api/checklist/waivers/{item_id}` | vscode-extension/media/loki-dashboard.js:496 | none | MISSING | 501 not yet supported |
441
+ | POST `/api/checklist/waivers` | vscode-extension/media/loki-dashboard.js:496 | plan.json and receipt claims in GET /v1/runs/:id | DROPPED (section 1) | 410 with notice |
442
+ | DELETE `/api/checklist/waivers/{item_id}` | vscode-extension/media/loki-dashboard.js:496 | plan.json and receipt claims in GET /v1/runs/:id | DROPPED (section 1) | 410 with notice |
443
443
  | GET `/api/council/gate` | tests/moat/p7-no-fabricated-data.sh:4638 (test), tests/moat/p7-no-fabricated-data.sh:4760 (test), tests/moat/p7-no-fabricated-data.sh:4762 (test) (+1) | none | MISSING | 501 not yet supported |
444
444
  | GET `/api/app-runner/status` | none | none | UNUSED | 410 with notice |
445
445
  | GET `/api/app-runner/logs` | none | none | UNUSED | 410 with notice |
446
446
  | GET `/api/app-runner/errors` | none | none | UNUSED | 410 with notice |
447
- | POST `/api/control/app-restart` | vscode-extension/media/loki-dashboard.js:496 | none | MISSING | 501 not yet supported |
448
- | POST `/api/control/app-stop` | vscode-extension/media/loki-dashboard.js:496 | none | MISSING | 501 not yet supported |
447
+ | POST `/api/control/app-restart` | vscode-extension/media/loki-dashboard.js:496 | evidence in GET /v1/runs/:source/:run/artifact/* | DROPPED (section 1) | 410 with notice |
448
+ | POST `/api/control/app-stop` | vscode-extension/media/loki-dashboard.js:496 | evidence in GET /v1/runs/:source/:run/artifact/* | DROPPED (section 1) | 410 with notice |
449
449
  | GET `/api/playwright/results` | none | none | UNUSED | 410 with notice |
450
450
  | GET `/api/playwright/screenshot` | none | none | UNUSED | 410 with notice |
451
451
  | GET `/api/failures` | none | none | UNUSED | 410 with notice |
452
452
  | GET `/api/prompt-versions` | none | none | UNUSED | 410 with notice |
453
- | POST `/api/prompt-optimize` | autonomy/loki:17793, vscode-extension/media/loki-dashboard.js:7581 | none | MISSING | 501 not yet supported |
453
+ | POST `/api/prompt-optimize` | autonomy/loki:17793, vscode-extension/media/loki-dashboard.js:7581 | verify stage: POST /v1/runs/:source/:run/verify | DROPPED (section 1) | 410 with notice |
454
454
  | MOUNT `/assets` | none | UI static assets | EXISTS (vite output under ui/dist/assets) | none (CP UI serves it) |
455
455
  | GET `/api/activity` | vscode-extension/media/loki-dashboard.js:8596 | none | MISSING | 501 not yet supported |
456
456
  | GET `/api/session-diff` | none | none | UNUSED | 410 with notice |
@@ -461,8 +461,8 @@ First hit per process, each route logs one line: `legacy dashboard route <path>
461
461
  | GET `/` | none | CP UI (/) | EXISTS | 308 to CP UI |
462
462
  | GET `/api/quality-score` | none | none | UNUSED | 410 with notice |
463
463
  | GET `/api/quality-score/history` | none | none | UNUSED | 410 with notice |
464
- | POST `/api/quality-scan` | autonomy/loki:23927, vscode-extension/media/loki-dashboard.js:7832 | none | MISSING | 501 not yet supported |
465
- | GET `/api/quality-report` | autonomy/loki:23994 | none | MISSING | 501 not yet supported |
464
+ | POST `/api/quality-scan` | autonomy/loki:23927, vscode-extension/media/loki-dashboard.js:7832 | verify stage: POST /v1/runs/:source/:run/verify | DROPPED (section 1) | 410 with notice |
465
+ | GET `/api/quality-report` | autonomy/loki:23994 | verify stage: POST /v1/runs/:source/:run/verify | DROPPED (section 1) | 410 with notice |
466
466
  | GET `/api/migration/list` | vscode-extension/media/loki-dashboard.js:8173 | none | MISSING | 501 not yet supported |
467
467
  | POST `/api/migration/start` | none | none | UNUSED | 410 with notice |
468
468
  | GET `/api/migration/{migration_id}/status` | vscode-extension/media/loki-dashboard.js:8173 | none | MISSING | 501 not yet supported |
@@ -471,8 +471,8 @@ First hit per process, each route logs one line: `legacy dashboard route <path>
471
471
  | GET `/api/migration/{migration_id}/seams` | none | none | UNUSED | 410 with notice |
472
472
  | POST `/api/migration/{migration_id}/advance` | none | none | UNUSED | 410 with notice |
473
473
  | POST `/api/migration/{migration_id}/start-phase` | none | none | UNUSED | 410 with notice |
474
- | GET `/api/managed/events` | vscode-extension/media/loki-dashboard.js:11965 | none | MISSING | 501 not yet supported |
475
- | GET `/api/managed/status` | tests/integration/test_dashboard_api_smoke.sh:105 (test), tests/integration/test_dashboard_api_smoke.sh:106 (test), vscode-extension/media/loki-dashboard.js:11965 | none | MISSING | 501 not yet supported |
474
+ | GET `/api/managed/events` | vscode-extension/media/loki-dashboard.js:11965 | managed memory dropped; GET /v1/runs/:source/:run/events | DROPPED (section 1) | 410 with notice |
475
+ | GET `/api/managed/status` | tests/integration/test_dashboard_api_smoke.sh:105 (test), tests/integration/test_dashboard_api_smoke.sh:106 (test), vscode-extension/media/loki-dashboard.js:11965 | managed memory dropped; GET /v1/runs | DROPPED (section 1) | 410 with notice |
476
476
  | GET `/api/managed/memory_versions/{memory_id}` | none | none | UNUSED | 410 with notice |
477
477
  | GET `/api/findings/{iteration}` | none | none | UNUSED | 410 with notice |
478
478
  | GET `/api/quality/architecture` | none | none | UNUSED | 410 with notice |
@@ -488,7 +488,7 @@ First hit per process, each route logs one line: `legacy dashboard route <path>
488
488
  | GET `/api/spec/history` | none | none | UNUSED | 410 with notice |
489
489
  | GET `/api/wiki` | none | none | UNUSED | 410 with notice |
490
490
  | GET `/api/wiki/{section}` | none | none | UNUSED | 410 with notice |
491
- | POST `/api/wiki/ask` | vscode-extension/media/loki-dashboard.js:12595 | none | MISSING | 501 not yet supported |
491
+ | POST `/api/wiki/ask` | vscode-extension/media/loki-dashboard.js:12595 | wiki deleted; no replacement | DROPPED (section 1) | 410 with notice |
492
492
  | GET `/{full_path:path}` | none | SPA fallback | EXISTS (CP app.get("*") serves the SPA and 404s missing assets) | none (CP UI serves it) |
493
493
 
494
494
  ### 5.3 Notes for the deletion gate
@@ -527,7 +527,7 @@ Rules: one writer per file; UI pages register through ui/src/pages/registry.ts a
527
527
  | CPE-21 | Notifications and Audit log: derived notifications, actions view | src/server/routes/notify.ts, src/server/routes/audit.ts, ui/src/pages/notifications/**, ui/src/pages/audit/**, test/server/notify.test.ts | `bun test test/server/notify.test.ts` | 03 | LOW |
528
528
  | CPE-22 | Cmd+K palette, global search, shortcuts (Cmd+Enter, Cmd+N, Cmd+Shift+D, Esc) | ui/src/palette/**, test/ui/palette.test.tsx | `bun test test/ui/palette.test.tsx` | 02 | LOW |
529
529
  | CPE-23 | Accessibility, mobile and visual parity: axe, keyboard path, 375 px layout, light and dark screenshot comparison to legacy captures | test/e2e/cp-ui.spec.ts, test/e2e/legacy-baseline/**, ui/playwright.config.ts | `bunx playwright test test/e2e/cp-ui.spec.ts` (headless, LOKI_NO_BROWSER=1) | 06, 08, 12 | MEDIUM |
530
- | CPE-24 | Delete legacy dashboard at parity: dashboard-ui/, dashboard/static/, legacy server routes, their tests and package entries | dashboard-ui/**, dashboard/static/**, dashboard/server.py (UI routes), package.json files list, tests naming them | section 5 checklist all green plus `bash scripts/local-ci.sh` | all, section 5 | MEDIUM |
530
+ | CPE-24 | Delete legacy dashboard at parity: legacy-ui/, legacy-ui-static/, legacy server routes, their tests and package entries | legacy-ui/**, legacy-ui-static/**, dashboard/server.py (UI routes), package.json files list, tests naming them | section 5 checklist all green plus `bash scripts/local-ci.sh` | all, section 5 | MEDIUM |
531
531
 
532
532
  Parallelism: CPE-01 and CPE-03 start at once; after them up to 12 builders run in parallel (04, 05, 07, 09, 11, 12, 13, 14, 15, 18, 21, 22). HIGH slices (04, 07, 09, 14) carry the security review the founder asked for.
533
533
 
@@ -98,7 +98,7 @@ Failure modes:
98
98
  | B11 | PR comment with the integration result, via the existing gh token path (no LLM in the step) | autonomy/lib/workspace_comment.py, tests/workspace/80-comment.sh | stub gh receives one comment per PR; the token appears in no log or argv | MEDIUM |
99
99
  | B12 | CLI `loki workspace` subcommand (list, show, run, status, clean) | autonomy/loki, tests/workspace/90-cli.sh | flag off: the command says it is disabled; `clean` never removes a worktree whose branch has an open PR | MEDIUM |
100
100
  | B13 | Dashboard endpoints reading group.json; run launches a detached runner | dashboard/api_workspaces.py, dashboard/server.py, tests/dashboard/test_api_workspaces.py | the group survives an app restart; non-loopback Host gets 403; control scope required for run | HIGH |
101
- | B14 | Dashboard group card (per-repo rows, integration row, stale-evidence badge) | dashboard/static/start.html | Playwright: a fixture group renders 2 repo rows plus integration; a mismatched head SHA shows stale | LOW |
101
+ | B14 | Dashboard group card (per-repo rows, integration row, stale-evidence badge) | legacy-ui-static/start.html | Playwright: a fixture group renders 2 repo rows plus integration; a mismatched head SHA shows stale | LOW |
102
102
  | B15 | 10x metric: PRs per wall-clock hour and per attention minute from group.json timestamps | autonomy/lib/workspace_metrics.py, tests/workspace/95-metrics.sh | a fixture group gives the hand-computed rate; unmeasured runs are reported, not counted as zero | LOW |
103
103
  | B16 | Docs plus flag flip after the whole-feature Wall: a 2-repo fixture (lib and app) ends with 2 PRs and integration passed | docs/WORKSPACES.md, tests/workspace/99-e2e.sh | the e2e part passes on CI with the stub provider; one real run is recorded in METRICS.md | MEDIUM |
104
104