loki-mode 11.3.0 → 11.3.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 (215) hide show
  1. package/README.md +68 -650
  2. package/SKILL.md +4 -4
  3. package/VERSION +1 -1
  4. package/autonomy/completion-council.sh +2 -2
  5. package/autonomy/context-tracker.py +4 -4
  6. package/autonomy/council-v2.sh +1 -1
  7. package/autonomy/grill.sh +1 -1
  8. package/autonomy/lib/done-recognition.sh +1 -1
  9. package/autonomy/lib/prd-enrich.sh +1 -1
  10. package/autonomy/lib/voter-agents.sh +1 -1
  11. package/autonomy/loki +99 -75
  12. package/autonomy/run.sh +30 -18
  13. package/autonomy/sandbox.sh +1 -1
  14. package/autonomy/tui.sh +6 -5
  15. package/autonomy/verify.sh +1 -1
  16. package/bin/loki +166 -59
  17. package/completions/_loki +2 -0
  18. package/completions/loki.bash +2 -2
  19. package/dashboard/__init__.py +1 -1
  20. package/dashboard/server.py +25 -31
  21. package/docs/ARCHITECTURE.md +337 -0
  22. package/docs/BRANDING.md +124 -0
  23. package/docs/CLI-REFERENCE.md +7 -1
  24. package/docs/COMPONENTS.md +447 -0
  25. package/docs/DEPLOYMENT.md +9 -9
  26. package/docs/DOCKER.md +469 -0
  27. package/docs/INSTALLATION.md +67 -1045
  28. package/docs/KNOWN-ISSUES.md +11 -35
  29. package/docs/TESTING.md +161 -0
  30. package/docs/air-gapped.md +1 -2
  31. package/docs/alternative-installations.md +14 -24
  32. package/docs/architecture/DECISIONS.md +333 -0
  33. package/docs/audit-logging.md +7 -7
  34. package/docs/authentication.md +3 -3
  35. package/docs/authorization.md +1 -1
  36. package/docs/certification/04-production-deployment/lab.md +6 -6
  37. package/docs/certification/04-production-deployment/lesson.md +4 -4
  38. package/docs/certification/README.md +1 -1
  39. package/docs/control-plane-container.md +2 -2
  40. package/docs/dev/real-run.md +34 -0
  41. package/docs/dev/release-checklist.md +2 -2
  42. package/docs/exit-codes.md +3 -3
  43. package/docs/git-workflow.md +3 -3
  44. package/docs/metrics.md +37 -55
  45. package/docs/network-security.md +1 -1
  46. package/docs/siem-integration.md +5 -5
  47. package/docs/v10/CLI-MODERN.md +4 -3
  48. package/docs/v10/DECISIONS.md +44 -0
  49. package/docs/v10/DEPS.md +22 -22
  50. package/docs/v10/ENGINE.md +1 -1
  51. package/docs/v10/FAILURE-CLASSES.md +118 -1
  52. package/docs/v10/FOUNDER-QUEUE.md +1 -0
  53. package/docs/v10/GUARDS.md +13 -0
  54. package/docs/v10/LEGACY-REMOVAL.md +4 -6
  55. package/docs/v10/METRICS.md +2 -2
  56. package/docs/v10/MODERNIZE.md +1 -1
  57. package/docs/v10/OPERATING-MODEL.md +2 -1
  58. package/docs/v10/PROGRESS.md +29 -0
  59. package/docs/v11/COST-HALF.md +352 -0
  60. package/docs/v11/MARKET-SLICES.md +315 -0
  61. package/docs/v11/REGISTRIES.md +730 -0
  62. package/loki-ts/data/model-pricing.json +52 -24
  63. package/loki-ts/dist/loki.js +1036 -957
  64. package/mcp/__init__.py +1 -1
  65. package/package.json +1 -1
  66. package/packages/control-plane/dist/server.js +2467 -736
  67. package/plugins/loki-mode/.claude-plugin/plugin.json +1 -1
  68. package/src/protocols/mcp-client.js +6 -2
  69. package/src/protocols/mcp-server.js +13 -3
  70. package/tools/audit-docs.py +1 -1
  71. package/web-app/dist/assets/{AdminPage-D_e45uTw.js → AdminPage-CMkHNJbF.js} +1 -1
  72. package/web-app/dist/assets/{Avatar-T3nIpoaf.js → Avatar-BJyjV7Zi.js} +1 -1
  73. package/web-app/dist/assets/{Badge-BKqb59pP.js → Badge-D572l0uq.js} +1 -1
  74. package/web-app/dist/assets/{Button-DjVlkh8_.js → Button-T4BnOZgl.js} +1 -1
  75. package/web-app/dist/assets/{CockpitPage-DXJgLGmh.js → CockpitPage-Cj_GFsNn.js} +1 -1
  76. package/web-app/dist/assets/{ComparePage-BRP_eVc_.js → ComparePage-A8m4ZXak.js} +1 -1
  77. package/web-app/dist/assets/{ErrorBoundary-CLjpGLjC.js → ErrorBoundary-hugCg5yg.js} +1 -1
  78. package/web-app/dist/assets/{EvidenceReceiptPanel-DX-vb4Xy.js → EvidenceReceiptPanel-CuJKDC2G.js} +1 -1
  79. package/web-app/dist/assets/{GitHubIssuesPanel-214HVHtX.js → GitHubIssuesPanel-BYGKjarC.js} +1 -1
  80. package/web-app/dist/assets/{GitHubPRsPanel-BEiZKc4t.js → GitHubPRsPanel-c7sFIJlf.js} +1 -1
  81. package/web-app/dist/assets/{HomePage-VvMHS5ga.js → HomePage-A1MIkG2P.js} +2 -2
  82. package/web-app/dist/assets/{LoginPage-5WD-v7n3.js → LoginPage-8KQMRhtR.js} +1 -1
  83. package/web-app/dist/assets/{MagicPage-DUQT_Jye.js → MagicPage-C05QW2Lx.js} +1 -1
  84. package/web-app/dist/assets/{MetricsPage-lga-z79v.js → MetricsPage-Oukv5hme.js} +1 -1
  85. package/web-app/dist/assets/{NotFoundPage-CGhBX3G1.js → NotFoundPage-DKIwsawz.js} +1 -1
  86. package/web-app/dist/assets/{ProjectPage-CdzF2GzZ.js → ProjectPage-DwFRPLCG.js} +3 -3
  87. package/web-app/dist/assets/{ProjectsPage-DRG64N8s.js → ProjectsPage-CgY4YYDX.js} +1 -1
  88. package/web-app/dist/assets/{SettingsPage-5fzW9Frb.js → SettingsPage-BpfcSjUA.js} +1 -1
  89. package/web-app/dist/assets/{ShowcasePage-DrTdxO4y.js → ShowcasePage-BqBakC4K.js} +1 -1
  90. package/web-app/dist/assets/{SystemSettingsPage-C9Mqs6Rd.js → SystemSettingsPage-CZLu5VB0.js} +1 -1
  91. package/web-app/dist/assets/{TeamsPage-CUGPdSWo.js → TeamsPage-D55S1jKz.js} +1 -1
  92. package/web-app/dist/assets/{TemplatesPage-CNraDY0F.js → TemplatesPage-D3SydvxN.js} +1 -1
  93. package/web-app/dist/assets/{TerminalOutput-BIu_6Pea.js → TerminalOutput-hNg8G1-e.js} +1 -1
  94. package/web-app/dist/assets/{activity-Bk-kgqaf.js → activity-D2C0VagO.js} +1 -1
  95. package/web-app/dist/assets/{bell-BXmUdmo8.js → bell-CMvYi36w.js} +1 -1
  96. package/web-app/dist/assets/{bot-CiuzXxUR.js → bot-BvtQ6lmo.js} +1 -1
  97. package/web-app/dist/assets/{check-BEzjXppd.js → check-B13xkXed.js} +1 -1
  98. package/web-app/dist/assets/{chevron-left-AYWCXHf8.js → chevron-left-emu6r49E.js} +1 -1
  99. package/web-app/dist/assets/{circle-alert-BNg2uSRq.js → circle-alert-CExlwjuy.js} +1 -1
  100. package/web-app/dist/assets/{clock-DTj0kkGT.js → clock-D7Uas3oL.js} +1 -1
  101. package/web-app/dist/assets/{cloud-x4nTDBLT.js → cloud-CkB4S86C.js} +1 -1
  102. package/web-app/dist/assets/{code-xml-BVh_MLrk.js → code-xml-SL9IIWIn.js} +1 -1
  103. package/web-app/dist/assets/{database-DdfBaowG.js → database-BQFkd7t1.js} +1 -1
  104. package/web-app/dist/assets/{dollar-sign-XuYFmAOY.js → dollar-sign-qHmnNYsU.js} +1 -1
  105. package/web-app/dist/assets/{file-code-corner-D4cRnmeL.js → file-code-corner-C2YUDP0K.js} +1 -1
  106. package/web-app/dist/assets/{file-plus-CyoVlHc_.js → file-plus-C_ooIkDe.js} +1 -1
  107. package/web-app/dist/assets/{globe-Y6IK2RPW.js → globe-CQ-GL485.js} +1 -1
  108. package/web-app/dist/assets/{hammer-BKzr9VZI.js → hammer-U05L_D7V.js} +1 -1
  109. package/web-app/dist/assets/{index-B20cSx5G.js → index-CooHd7I-.js} +3 -3
  110. package/web-app/dist/assets/{layers-DebNOhGS.js → layers-Buo17rjW.js} +1 -1
  111. package/web-app/dist/assets/{loader-circle-DyGbrEgd.js → loader-circle-15vK3oV1.js} +1 -1
  112. package/web-app/dist/assets/{lock-BKPpyt20.js → lock-BeXLebuJ.js} +1 -1
  113. package/web-app/dist/assets/{package-egF5Wi4y.js → package-MVh_6-6R.js} +1 -1
  114. package/web-app/dist/assets/{plus-OiEgKIc-.js → plus-Dh_nd9vS.js} +1 -1
  115. package/web-app/dist/assets/{refresh-cw-CzKvrONq.js → refresh-cw-C9cBJEAT.js} +1 -1
  116. package/web-app/dist/assets/{rotate-ccw-Bu2mII0p.js → rotate-ccw-D3PAtzST.js} +1 -1
  117. package/web-app/dist/assets/{scroll-text-CSkiyax8.js → scroll-text-DZCoXQjo.js} +1 -1
  118. package/web-app/dist/assets/{server-DlPthJFw.js → server-OCOLI5J_.js} +1 -1
  119. package/web-app/dist/assets/{shield-alert-CbpHWQQX.js → shield-alert-oVhmf1_h.js} +1 -1
  120. package/web-app/dist/assets/{thumbs-up-DgGpZe-Q.js → thumbs-up-B-kbX4vN.js} +1 -1
  121. package/web-app/dist/assets/{trash-2-BV3GlCB-.js → trash-2-EL6moveW.js} +1 -1
  122. package/web-app/dist/assets/{trending-down-Y4TJtXhD.js → trending-down-Cl3kjpsx.js} +1 -1
  123. package/web-app/dist/assets/{trending-up-DsDNoHZY.js → trending-up-DST7I6M2.js} +1 -1
  124. package/web-app/dist/assets/{upload-gkThrc_I.js → upload-CUOT780G.js} +1 -1
  125. package/web-app/dist/assets/{usePolling-jpNSeNAe.js → usePolling-Djmt90eb.js} +1 -1
  126. package/web-app/dist/assets/{user-3Zez1WOK.js → user-BRBohA6J.js} +1 -1
  127. package/web-app/dist/index.html +1 -1
  128. package/docs/ARCHITECTURE-OVERVIEW.md +0 -209
  129. package/docs/AUTONOMI-ECOSYSTEM.md +0 -107
  130. package/docs/COCKPIT-SPEC.md +0 -72
  131. package/docs/COCKPIT-UX-MANDATE.md +0 -53
  132. package/docs/COMPETITIVE-ANALYSIS.md +0 -303
  133. package/docs/COMPETITIVE-NEXT-10.md +0 -316
  134. package/docs/COMPETITIVE-RALPH-ZEROSHOT-2026-07-08.md +0 -81
  135. package/docs/DASHBOARD-9.12-EVIDENCE.md +0 -97
  136. package/docs/DASHBOARD-ARCHITECTURE.md +0 -425
  137. package/docs/DASHBOARD_V2_CHECKLIST.md +0 -243
  138. package/docs/DEMOS.md +0 -63
  139. package/docs/ENTERPRISE-IDENTITY-ROADMAP.md +0 -206
  140. package/docs/EVIDENCE-RECEIPT-BUILD-APPLICABILITY.md +0 -79
  141. package/docs/FEAT-PRDREUSE-DOCKER-PLAN.md +0 -144
  142. package/docs/GATE-FAILURE-TRIAGE.md +0 -254
  143. package/docs/HANDOFF-2026-08-03.md +0 -439
  144. package/docs/LOOP-CANDIDATE-PROPOSAL-v1.md +0 -167
  145. package/docs/LOOP-HARNESS-AUDIT.md +0 -684
  146. package/docs/MERGE-DEDUP-MAP.md +0 -420
  147. package/docs/MERGE-ROUTE-MAP.md +0 -139
  148. package/docs/MODEL-REGISTRY-PLAN.md +0 -155
  149. package/docs/OUTCOME-FRONTIER.md +0 -536
  150. package/docs/P2-SPEC-ROBUSTNESS-PLAN.md +0 -192
  151. package/docs/PLANS-INDEX.md +0 -32
  152. package/docs/PRD-REUSE-DONE-RECOGNITION-PLAN.md +0 -536
  153. package/docs/PROMPT-ABLATION-RESULT.md +0 -97
  154. package/docs/R4-TRUST-TRAJECTORY-DESIGN.md +0 -127
  155. package/docs/R5-AUTO-WIKI-DESIGN.md +0 -137
  156. package/docs/R6-ROLLBACK-CHECKPOINT-PLAN.md +0 -107
  157. package/docs/R7-ZERO-CONFIG-FIRST-RUN-PLAN.md +0 -137
  158. package/docs/R8-SHAREABLE-TEAM-ASSETS-PLAN.md +0 -129
  159. package/docs/R9-OPEN-CORE-HOOKS-PLAN.md +0 -113
  160. package/docs/RARV-C-100X-PLAN.md +0 -286
  161. package/docs/RARV-C-LOOP-EFFICIENCY-PLAN.md +0 -470
  162. package/docs/SHAREABLE-PROOF-PLAN.md +0 -194
  163. package/docs/SONNET5-DEFAULT-PLAN.md +0 -157
  164. package/docs/SPEED-AND-FIRST-PASS-PLAN.md +0 -281
  165. package/docs/STALE-STATE-AUDIT.md +0 -174
  166. package/docs/SYNERGY-TASKS.md +0 -143
  167. package/docs/TASKLIST-ACCURACY-PLAN.md +0 -355
  168. package/docs/TOP-100-BACKLOG.md +0 -159
  169. package/docs/V8-ACCEPTANCE-TRIAGE-2026-07-24.md +0 -114
  170. package/docs/V8-COMPLEXITY-AUDIT-2026-07-24.md +0 -45
  171. package/docs/V8-MAJOR-RELEASE-PLAN.md +0 -137
  172. package/docs/V8-OVERNIGHT-PLAN-2026-07-25.md +0 -82
  173. package/docs/V8-SDK-RESEARCH-RAW.md +0 -129
  174. package/docs/WELCOME-OPENER-PLAN.md +0 -106
  175. package/docs/adoption-baseline-2026-07-31.md +0 -84
  176. package/docs/architecture/bmad-integration-epic.md +0 -271
  177. package/docs/architecture/bmad-integration-review.md +0 -86
  178. package/docs/architecture/bmad-integration-validation.md +0 -249
  179. package/docs/architecture/bmad-loki-voice-agent-council-analysis.md +0 -61
  180. package/docs/auto-claude-comparison.md +0 -250
  181. package/docs/bug-fixes/agent-01-cli-fixes.md +0 -101
  182. package/docs/bug-fixes/agent-02-purplelab-fixes.md +0 -88
  183. package/docs/bug-fixes/agent-03-dashboard-fixes.md +0 -119
  184. package/docs/bug-fixes/agent-04-memory-fixes.md +0 -105
  185. package/docs/bug-fixes/agent-05-provider-fixes.md +0 -86
  186. package/docs/bug-fixes/agent-06-integration-fixes.md +0 -101
  187. package/docs/bug-fixes/agent-07-dash-run-fixes.md +0 -101
  188. package/docs/bug-fixes/agent-08-docker-fixes.md +0 -164
  189. package/docs/bug-fixes/agent-09-e2e-build-fixes.md +0 -69
  190. package/docs/bug-fixes/agent-10-e2e-fullstack-fixes.md +0 -102
  191. package/docs/bug-fixes/agent-11-e2e-session-fixes.md +0 -70
  192. package/docs/bug-fixes/agent-12-scenario-fixes.md +0 -120
  193. package/docs/bug-fixes/agent-13-enterprise-fixes.md +0 -143
  194. package/docs/bug-fixes/agent-14-uat-newuser-fixes.md +0 -88
  195. package/docs/bug-fixes/agent-15-uat-poweruser-fixes.md +0 -132
  196. package/docs/bug-fixes/agent-19-code-review.md +0 -316
  197. package/docs/bug-fixes/agent-20-architecture-review.md +0 -331
  198. package/docs/competitive/bolt-new-analysis.md +0 -579
  199. package/docs/competitive/emergence-others-analysis.md +0 -605
  200. package/docs/competitive/replit-lovable-analysis.md +0 -622
  201. package/docs/dashboard-guide.md +0 -487
  202. package/docs/enterprise/migration.md +0 -265
  203. package/docs/history/one-run-audit.md +0 -304
  204. package/docs/plans/FORGE-AUTONOMOUS-QUEUE.md +0 -312
  205. package/docs/plans/ULTRAPLAN-FORGE-BAAS.md +0 -612
  206. package/docs/plans/UT2-6-LSP-DIAGNOSTIC-BROADCAST.md +0 -394
  207. package/docs/prd-purple-lab-ide.md +0 -152
  208. package/docs/prd-purple-lab-platform-v2.md +0 -223
  209. package/docs/prd-purple-lab-platform.md +0 -319
  210. package/docs/retrospectives/v7.5.15-fleet-postmortem.md +0 -325
  211. package/docs/retrospectives/v7.5.15-honesty-audit.md +0 -136
  212. package/docs/retrospectives/v7.5.15-llm-failure-modes.md +0 -49
  213. package/docs/show-hn-post.md +0 -46
  214. package/docs/test-scenarios/enterprise-scenarios.md +0 -732
  215. package/docs/thick2thin.md +0 -173
@@ -1,192 +0,0 @@
1
- # P2 Spec Robustness Plan (P2-1 spec interrogation gate + P2-2 assumption ledger)
2
-
3
- Status: design for implementation. No version bump, no commit in this arc.
4
-
5
- ## Goal
6
-
7
- Loki must stay accurate even when the input spec is WRONG, ambiguous, or
8
- incomplete. Today two building blocks already detect spec defects but neither
9
- feeds the autonomous loop:
10
-
11
- - `autonomy/grill.sh` invokes the provider once with a Devil's-Advocate prompt
12
- and writes 10-15 hardest spec questions to `.loki/grill/report.md`. It is
13
- CLI-only (`grep grill autonomy/run.sh` = 0 invocations) and nothing reads its
14
- output.
15
- - `autonomy/prd-analyzer.py` detects missing PRD dimensions and has a
16
- deterministic `_make_assumption()` map, writing `.loki/prd-observations.md`,
17
- which nothing reads. Its interactive Q&A is inert in non-TTY (autonomous) runs.
18
-
19
- The fix: run interrogation automatically in DISCOVERY, classify the findings,
20
- record every spec gap as a first-class ASSUMPTION in a tracked ledger, BLOCK
21
- completion while high-severity assumptions are unconfirmed-and-unacknowledged,
22
- and surface the ledger in the proof-of-done output. Defects are SURFACED as
23
- recorded assumptions, never silently autocorrected.
24
-
25
- ## Core design decision: auto-acknowledgment lifecycle (prevents the trap)
26
-
27
- A naive "block completion while any high-severity assumption is unconfirmed"
28
- hard-blocks EVERY ambiguous run to max-iterations, because in autonomous
29
- (non-TTY) mode no human can ever set `confirmed=yes`. We never reach the
30
- "done, plus here is what I assumed" output the goal demands.
31
-
32
- Resolution: split the gate from the lifecycle.
33
-
34
- - The gate `council_assumption_ledger_gate` is a PURE function of ledger state.
35
- It blocks iff an entry has `severity=high AND confirmed=false AND
36
- acknowledged=false`.
37
- - The auto-acknowledgment lifecycle lives in run.sh (NOT in the gate). Once an
38
- assumption has been written into the ledger AND injected into the build prompt
39
- at least once, run.sh marks it `acknowledged=true`. Default-on; opt-out
40
- `LOKI_ASSUMPTIONS_REQUIRE_CONFIRM=1` keeps a human-in-the-loop path where only
41
- `confirmed=true` clears the block.
42
-
43
- This is the OPPOSITE of silent autocorrect: the assumption is recorded,
44
- injected into the agent's prompt, and surfaced in proof-of-done. Acknowledgment
45
- records "Loki has SEEN this gap and proceeded with a stated default", not "Loki
46
- hid it". The gate still has teeth on the first iteration (high-sev unacknowledged
47
- blocks) and in the require-confirm path.
48
-
49
- ## Severity rule (deterministic, no LLM)
50
-
51
- grill emits no severity. Classify by section / keyword on the read side:
52
-
53
- - HIGH: security blind spots; scale/reliability blind spots; missing or
54
- untestable acceptance criteria; any line containing contradiction keywords
55
- (contradict, conflict, inconsistent, mutually exclusive).
56
- - MEDIUM: ambiguities; unstated assumptions; underspecified behavior; all
57
- prd-analyzer missing-dimension assumptions.
58
-
59
- This guarantees a HIGH tier exists (so the gate has teeth) and is fully
60
- deterministic (so tests are reproducible).
61
-
62
- ## Taxonomy mapping (classification, read-side only)
63
-
64
- grill section -> finding class:
65
- - "Ambiguities and missing acceptance criteria" -> ambiguous (HIGH if the line
66
- references acceptance criteria / testable / measurable; else MEDIUM)
67
- - "Unstated assumptions" -> underspecified (MEDIUM)
68
- - "Security blind spots" -> missing (HIGH)
69
- - "Scale and reliability blind spots" -> missing (HIGH)
70
- - any line with a contradiction keyword (any section) -> contradictory (HIGH)
71
- - prd-analyzer missing dimensions -> missing (MEDIUM, deterministic default)
72
-
73
- "None identified." lines are skipped (no fabricated findings).
74
-
75
- grill output contract is NOT changed (it is parsed by the loki-grill skill).
76
- We classify a COPY of its markdown; grill.sh stays byte-identical.
77
-
78
- ## No-fabrication rule for ledger content
79
-
80
- A grill finding is a QUESTION, not a resolution. The ledger `assumption` field
81
- for a grill-derived gap is an honest "spec gives no answer; proceeding with the
82
- implementer default for <area>" plus `affects=<area>`. We do NOT invent a
83
- specific resolution the build will not actually follow. prd-analyzer assumptions
84
- reuse its existing deterministic `_make_assumption()` text verbatim.
85
-
86
- ## Ledger schema (`.loki/assumptions/`)
87
-
88
- One JSON file per assumption: `.loki/assumptions/<id>.json`, plus a
89
- human-readable `.loki/assumptions/ledger.md` rollup regenerated on each write.
90
- Each entry:
91
-
92
- ```json
93
- {
94
- "id": "a-0001",
95
- "gap": "<the spec defect / unanswered question, verbatim>",
96
- "assumption": "<honest stated default Loki proceeds with>",
97
- "why": "<why this assumption / where the gap came from: grill|prd-analyzer>",
98
- "severity": "high|medium",
99
- "class": "ambiguous|contradictory|underspecified|missing",
100
- "affects": "<area, e.g. security, acceptance-criteria, data-model>",
101
- "source": "grill|prd-analyzer",
102
- "confirmed": false,
103
- "acknowledged": false,
104
- "created_at": "<iso8601>"
105
- }
106
- ```
107
-
108
- Stable id = `a-` + zero-padded counter over existing files (idempotent: a second
109
- DISCOVERY run with the same findings does not duplicate; dedupe on the `gap`
110
- text hash).
111
-
112
- ## Build surface (files + functions)
113
-
114
- 1. NEW `autonomy/spec-interrogation.sh` (sourced by run.sh; standalone-testable):
115
- - `spec_interrogation_classify_report <report.md path>`: pure classifier.
116
- Reads grill markdown, emits one TSV/JSON finding per question line with
117
- class + severity. Takes a file so a fixture report drives the test with no
118
- `claude` call.
119
- - `spec_interrogation_severity_for <section> <line>`: deterministic severity.
120
- - `spec_ledger_write <gap> <assumption> <why> <severity> <class> <affects>
121
- <source>`: idempotent writer (dedupe on gap hash) -> `.loki/assumptions/`.
122
- - `spec_ledger_rebuild_md`: regenerate `.loki/assumptions/ledger.md`.
123
- - `spec_ledger_high_unresolved_count`: count entries with
124
- `severity=high AND confirmed=false AND acknowledged=false` (gate input;
125
- also reused by the summary).
126
- - `spec_ledger_acknowledge_all`: set `acknowledged=true` on all entries
127
- (auto-ack lifecycle helper; default path).
128
- - `spec_interrogation_run <spec_path>`: orchestrator. Default-on
129
- (`LOKI_SPEC_GRILL=0` opts out). Provider-aware: source grill.sh, call
130
- `grill_check_provider`; if provider absent, log honest message, skip the
131
- grill subcall (NO fabricated questions), but STILL fold prd-analyzer
132
- missing-dimension assumptions into the ledger so degrade surfaces something
133
- non-blocking. On provider present: run `grill_main` (writes report.md),
134
- classify it, write ledger entries. Always non-fatal to the run.
135
-
136
- 2. `autonomy/run.sh` DISCOVERY (~13056, after prd-analyzer + council_init,
137
- before the iteration loop): source spec-interrogation.sh and call
138
- `spec_interrogation_run "$prd_path"`. This is the grep-able grill invocation
139
- the task requires. Best-effort (`|| true`), never blocks startup.
140
-
141
- 3. `autonomy/run.sh` auto-ack lifecycle: after the build prompt is constructed
142
- each iteration (assumptions are injected into the prompt via build_prompt),
143
- call `spec_ledger_acknowledge_all` UNLESS
144
- `LOKI_ASSUMPTIONS_REQUIRE_CONFIRM=1`. Inject the high-severity assumption
145
- list into the build prompt (so the agent sees the gaps it must respect).
146
-
147
- 4. `autonomy/completion-council.sh` `council_assumption_ledger_gate` (new),
148
- slotted into `council_evaluate` right after `council_evidence_gate`
149
- (mirrors 2510-2513). Same defensive `COUNCIL_STATE_DIR` default, opt-out
150
- `LOKI_ASSUMPTION_GATE=0`. Blocks iff `spec_ledger_high_unresolved_count > 0`.
151
- Writes `.loki/council/assumption-block.json` on block, removes it on pass.
152
- Also wired into the completion-promise route in run.sh (~14525 pattern) and
153
- the code_review gate chain (~15013) so the promise path cannot bypass it.
154
-
155
- 5. `autonomy/run.sh` `build_completion_summary` (~2637): emit an
156
- "Assumptions recorded: N (M high-severity)" block into COMPLETION.txt and the
157
- ledger list, plus the count into completion.json. So "done" means "done, plus
158
- here are the N places your spec was ambiguous and what I assumed."
159
-
160
- 6. NEW `tests/test-spec-interrogation.sh` (bash convention, ok/bad counters,
161
- source the module, mktemp fixtures):
162
- - (a) classifier on a fixture grill report writes classified findings to the
163
- ledger (ambiguous/contradictory/underspecified/missing + high/medium).
164
- - (b) a ledger with one high/confirmed:false/acknowledged:false entry makes
165
- `council_assumption_ledger_gate` return 1 (BLOCK) and write
166
- assumption-block.json.
167
- - (c) clean spec (no high-sev entries, or all acknowledged) -> gate returns 0
168
- (no spurious block), no block file.
169
- - (d) no provider -> `spec_interrogation_run` degrades cleanly: honest
170
- message, prd-analyzer assumptions still folded (medium, non-blocking), run
171
- proceeds, gate passes.
172
-
173
- ## Gate reachability (resolved open question)
174
-
175
- The existing gates fire from THREE sites: `council_evaluate` (~2510), the
176
- completion-promise route (~14525), and the code_review gate chain (~15013). The
177
- new gate is wired into all three so high-sev unacknowledged assumptions cannot
178
- slip through the promise path.
179
-
180
- ## Opt-out knobs (all default-on, intelligent)
181
-
182
- - `LOKI_SPEC_GRILL=0` -> skip interrogation entirely.
183
- - `LOKI_ASSUMPTION_GATE=0` -> gate is pass-through.
184
- - `LOKI_ASSUMPTIONS_REQUIRE_CONFIRM=1` -> require human `confirmed=true`
185
- (disables auto-ack); the human-in-the-loop path.
186
-
187
- No "user must decide the type" knob. Classification + severity are automatic.
188
-
189
- ## Constraints
190
-
191
- No emojis, no em dashes, no version bump, no commit, no push. Provider-aware,
192
- degrade cleanly, no fabricated questions when provider absent.
@@ -1,32 +0,0 @@
1
- # Plans Index
2
-
3
- This index maps each historical plan doc to its status. Plan docs are kept as design history; a 'shipped' plan's feature is live in the code.
4
-
5
- | Plan | Status | Notes |
6
- |---|---|---|
7
- | BUILD-HUD-PLAN.md | shipped | Live in-terminal build HUD; `LOKI_HUD` / `[HUD]` in `autonomy/run.sh`, CHANGELOG "Live in-terminal build HUD". |
8
- | history/v8-config-plan.md | shipped | Unified config file; `--config` / `--vars` / `--env-file` flags in `autonomy/loki`. |
9
- | CRASH-REPORTING-PLAN.md | shipped | Crash-reporting + auto-fix; `cmd_crash()` in `autonomy/loki` (`loki crash`). |
10
- | DEPLOY-PLAN.md | shipped | `loki deploy` advisory print-only; CHANGELOG "`loki deploy`: advisory, print-only deploy guidance". |
11
- | FAILURE-MEMORY-PLAN.md | shipped | Failure-memory loop; `FailureMode` schema in `memory/schemas.py`. |
12
- | FEAT-PRDREUSE-DOCKER-PLAN.md | shipped | PRD-reuse + Docker batch; Docker dashboard/port + PRD-reuse present in `autonomy/loki`. |
13
- | MERGE3-PLAN.md | shipped | Purple-Lab-into-Dashboard integration; `/lab/` mount in `dashboard/server.py`. |
14
- | P0-SWEEP-PLAN.md | shipped | Verification-credibility sweep; wired detectors are part of the 8-gate system. |
15
- | P2-SPEC-ROBUSTNESS-PLAN.md | shipped | Spec interrogation gate + assumption ledger; part of quality-gates spec robustness. |
16
- | PRD-REUSE-DONE-RECOGNITION-PLAN.md | shipped | PRD-reuse done-recognition gate; reuse-then-verify behavior in the engine. |
17
- | PREVIEW-LINK-PLAN.md | shipped | `loki preview --public`; `_preview_public` in `autonomy/loki`, CHANGELOG "`loki preview --public`". |
18
- | R10-MARKETPLACE-PLAN.md | shipped | Agent/template marketplace (install-from-source); `loki template` marketplace in `autonomy/loki`. |
19
- | R6-ROLLBACK-CHECKPOINT-PLAN.md | shipped | 1-click rollback + checkpoint UX; `cmd_rollback()` / `rollback)` dispatch in `autonomy/loki`. |
20
- | R7-ZERO-CONFIG-FIRST-RUN-PLAN.md | shipped | Zero-config first run; welcome/first-run path in `autonomy/loki`. |
21
- | R8-SHAREABLE-TEAM-ASSETS-PLAN.md | shipped | Exportable/importable team assets; `cmd_export()` / `cmd_import()` in `autonomy/loki`. |
22
- | R9-OPEN-CORE-HOOKS-PLAN.md | shipped | Open-core seams (BUSL-1.1); open-core seam references in `autonomy/loki`. Seams only; no hosted backend (by design). |
23
- | RARV-C-100X-PLAN.md | active | v8.0.0 native-primitives arc; v8 lives on the `feature/v8-agent-sdk` branch, not yet merged to main. |
24
- | RARV-C-LOOP-EFFICIENCY-PLAN.md | superseded | Self-marked SUPERSEDED by RARV-C-100X-PLAN.md (v8.0.0 arc); anchors drifted, kept as history. |
25
- | SHAREABLE-PROOF-PLAN.md | shipped | Opt-in shareable proof-of-run (v7.19.3) preserving zero-egress posture. |
26
- | SONNET5-DEFAULT-PLAN.md | shipped | Sonnet 5 default execution model; `v7.104.0: Sonnet 5 is the default` in `providers/claude.sh`. |
27
- | TASKLIST-ACCURACY-PLAN.md | shipped | Dashboard task-list accuracy fix; task-list handling in `dashboard/server.py`, CHANGELOG v7.104.x task-list fixes. |
28
- | UNCERTAINTY-ESCALATION-PLAN.md | shipped | Uncertainty-gated escalation (v7.19.2); uncertainty escalation logic in `autonomy/run.sh`. |
29
- | VERIFIED-COMPLETION-PLAN.md | shipped | Verified completion (v7.19.1); verified-completion gate in `autonomy/run.sh` + `autonomy/completion-council.sh`. |
30
- | WELCOME-OPENER-PLAN.md | shipped | Welcome opener ("magic opener"); `welcome` path in `autonomy/loki`. |
31
- | history/v8-agent-sdk-plan.md | shipped | The v8 Anthropic SDK runtime migration; shipped on `feature/v8-agent-sdk` as v8.0.0 + v8.1 (`loki-ts/src/runner/sdk_invoker.ts`, `sdk_mode.ts`, CHANGELOG v8.0.0/v8.1). Feature-branch-only, not yet merged to main. |
32
- | V8-SDK-RESEARCH-RAW.md | shipped | Research notes underpinning V8-AGENT-SDK-PLAN; design history for the v8 SDK arc. |