loki-mode 11.2.2 → 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 (216) 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/skill-link-heal.sh +78 -1
  11. package/autonomy/lib/voter-agents.sh +1 -1
  12. package/autonomy/loki +99 -75
  13. package/autonomy/run.sh +30 -18
  14. package/autonomy/sandbox.sh +1 -1
  15. package/autonomy/tui.sh +6 -5
  16. package/autonomy/verify.sh +1 -1
  17. package/bin/loki +166 -59
  18. package/completions/_loki +2 -0
  19. package/completions/loki.bash +2 -2
  20. package/dashboard/__init__.py +1 -1
  21. package/dashboard/server.py +25 -31
  22. package/docs/ARCHITECTURE.md +337 -0
  23. package/docs/BRANDING.md +124 -0
  24. package/docs/CLI-REFERENCE.md +7 -1
  25. package/docs/COMPONENTS.md +447 -0
  26. package/docs/DEPLOYMENT.md +9 -9
  27. package/docs/DOCKER.md +469 -0
  28. package/docs/INSTALLATION.md +67 -1045
  29. package/docs/KNOWN-ISSUES.md +11 -35
  30. package/docs/TESTING.md +161 -0
  31. package/docs/air-gapped.md +1 -2
  32. package/docs/alternative-installations.md +14 -24
  33. package/docs/architecture/DECISIONS.md +333 -0
  34. package/docs/audit-logging.md +7 -7
  35. package/docs/authentication.md +3 -3
  36. package/docs/authorization.md +1 -1
  37. package/docs/certification/04-production-deployment/lab.md +6 -6
  38. package/docs/certification/04-production-deployment/lesson.md +4 -4
  39. package/docs/certification/README.md +1 -1
  40. package/docs/control-plane-container.md +2 -2
  41. package/docs/dev/real-run.md +34 -0
  42. package/docs/dev/release-checklist.md +2 -2
  43. package/docs/exit-codes.md +3 -3
  44. package/docs/git-workflow.md +3 -3
  45. package/docs/metrics.md +37 -55
  46. package/docs/network-security.md +1 -1
  47. package/docs/siem-integration.md +5 -5
  48. package/docs/v10/CLI-MODERN.md +4 -3
  49. package/docs/v10/DECISIONS.md +44 -0
  50. package/docs/v10/DEPS.md +22 -22
  51. package/docs/v10/ENGINE.md +1 -1
  52. package/docs/v10/FAILURE-CLASSES.md +129 -1
  53. package/docs/v10/FOUNDER-QUEUE.md +1 -0
  54. package/docs/v10/GUARDS.md +13 -0
  55. package/docs/v10/LEGACY-REMOVAL.md +4 -6
  56. package/docs/v10/METRICS.md +2 -2
  57. package/docs/v10/MODERNIZE.md +1 -1
  58. package/docs/v10/OPERATING-MODEL.md +2 -1
  59. package/docs/v10/PROGRESS.md +29 -0
  60. package/docs/v11/COST-HALF.md +352 -0
  61. package/docs/v11/MARKET-SLICES.md +315 -0
  62. package/docs/v11/REGISTRIES.md +730 -0
  63. package/loki-ts/data/model-pricing.json +52 -24
  64. package/loki-ts/dist/loki.js +1036 -957
  65. package/mcp/__init__.py +1 -1
  66. package/package.json +1 -1
  67. package/packages/control-plane/dist/server.js +2467 -736
  68. package/plugins/loki-mode/.claude-plugin/plugin.json +1 -1
  69. package/src/protocols/mcp-client.js +6 -2
  70. package/src/protocols/mcp-server.js +13 -3
  71. package/tools/audit-docs.py +1 -1
  72. package/web-app/dist/assets/{AdminPage-C-iMLNxe.js → AdminPage-CMkHNJbF.js} +1 -1
  73. package/web-app/dist/assets/{Avatar-C7VUvwsO.js → Avatar-BJyjV7Zi.js} +1 -1
  74. package/web-app/dist/assets/{Badge-tGvQEhnw.js → Badge-D572l0uq.js} +1 -1
  75. package/web-app/dist/assets/{Button-_iHlH_yL.js → Button-T4BnOZgl.js} +1 -1
  76. package/web-app/dist/assets/{CockpitPage-J_nNjbcR.js → CockpitPage-Cj_GFsNn.js} +1 -1
  77. package/web-app/dist/assets/{ComparePage-B05ui6Xt.js → ComparePage-A8m4ZXak.js} +1 -1
  78. package/web-app/dist/assets/{ErrorBoundary-Bxex6DLn.js → ErrorBoundary-hugCg5yg.js} +1 -1
  79. package/web-app/dist/assets/{EvidenceReceiptPanel-BsgWfdD1.js → EvidenceReceiptPanel-CuJKDC2G.js} +1 -1
  80. package/web-app/dist/assets/{GitHubIssuesPanel-DZBhZ8_X.js → GitHubIssuesPanel-BYGKjarC.js} +1 -1
  81. package/web-app/dist/assets/{GitHubPRsPanel-BaxlAl6R.js → GitHubPRsPanel-c7sFIJlf.js} +1 -1
  82. package/web-app/dist/assets/{HomePage-mVJvzqbF.js → HomePage-A1MIkG2P.js} +2 -2
  83. package/web-app/dist/assets/{LoginPage-B0zd4A_G.js → LoginPage-8KQMRhtR.js} +1 -1
  84. package/web-app/dist/assets/{MagicPage-DXLQ-y_R.js → MagicPage-C05QW2Lx.js} +1 -1
  85. package/web-app/dist/assets/{MetricsPage-CLS34Xvr.js → MetricsPage-Oukv5hme.js} +1 -1
  86. package/web-app/dist/assets/{NotFoundPage-BXG8PbNV.js → NotFoundPage-DKIwsawz.js} +1 -1
  87. package/web-app/dist/assets/{ProjectPage-D3kFFC0F.js → ProjectPage-DwFRPLCG.js} +3 -3
  88. package/web-app/dist/assets/{ProjectsPage-2bFn-gnC.js → ProjectsPage-CgY4YYDX.js} +1 -1
  89. package/web-app/dist/assets/{SettingsPage-CBM0ziWE.js → SettingsPage-BpfcSjUA.js} +1 -1
  90. package/web-app/dist/assets/{ShowcasePage-BTaXhjI3.js → ShowcasePage-BqBakC4K.js} +1 -1
  91. package/web-app/dist/assets/{SystemSettingsPage-BrC2hyAr.js → SystemSettingsPage-CZLu5VB0.js} +1 -1
  92. package/web-app/dist/assets/{TeamsPage-oqxdbVbY.js → TeamsPage-D55S1jKz.js} +1 -1
  93. package/web-app/dist/assets/{TemplatesPage-CEbUIY21.js → TemplatesPage-D3SydvxN.js} +1 -1
  94. package/web-app/dist/assets/{TerminalOutput-aIoWLbJA.js → TerminalOutput-hNg8G1-e.js} +1 -1
  95. package/web-app/dist/assets/{activity-CPyi45gt.js → activity-D2C0VagO.js} +1 -1
  96. package/web-app/dist/assets/{bell-BhaNBaJp.js → bell-CMvYi36w.js} +1 -1
  97. package/web-app/dist/assets/{bot-Da8REaEP.js → bot-BvtQ6lmo.js} +1 -1
  98. package/web-app/dist/assets/{check-DPj99ArM.js → check-B13xkXed.js} +1 -1
  99. package/web-app/dist/assets/{chevron-left-CkxonN0X.js → chevron-left-emu6r49E.js} +1 -1
  100. package/web-app/dist/assets/{circle-alert-C0JkB1y5.js → circle-alert-CExlwjuy.js} +1 -1
  101. package/web-app/dist/assets/{clock-COzFIiWi.js → clock-D7Uas3oL.js} +1 -1
  102. package/web-app/dist/assets/{cloud-bjkac4kn.js → cloud-CkB4S86C.js} +1 -1
  103. package/web-app/dist/assets/{code-xml-hlKlvXUJ.js → code-xml-SL9IIWIn.js} +1 -1
  104. package/web-app/dist/assets/{database-D555S5Km.js → database-BQFkd7t1.js} +1 -1
  105. package/web-app/dist/assets/{dollar-sign-CVcApzcD.js → dollar-sign-qHmnNYsU.js} +1 -1
  106. package/web-app/dist/assets/{file-code-corner-UORaMIcO.js → file-code-corner-C2YUDP0K.js} +1 -1
  107. package/web-app/dist/assets/{file-plus-ALJtDoI2.js → file-plus-C_ooIkDe.js} +1 -1
  108. package/web-app/dist/assets/{globe-CPlrM_IC.js → globe-CQ-GL485.js} +1 -1
  109. package/web-app/dist/assets/{hammer-qaGZHpja.js → hammer-U05L_D7V.js} +1 -1
  110. package/web-app/dist/assets/{index-BcXljIAO.js → index-CooHd7I-.js} +3 -3
  111. package/web-app/dist/assets/{layers-BV8R9VUK.js → layers-Buo17rjW.js} +1 -1
  112. package/web-app/dist/assets/{loader-circle-6TlDS9Tu.js → loader-circle-15vK3oV1.js} +1 -1
  113. package/web-app/dist/assets/{lock-B9t6oWI0.js → lock-BeXLebuJ.js} +1 -1
  114. package/web-app/dist/assets/{package-2gEUAtZJ.js → package-MVh_6-6R.js} +1 -1
  115. package/web-app/dist/assets/{plus-DXocxPjU.js → plus-Dh_nd9vS.js} +1 -1
  116. package/web-app/dist/assets/{refresh-cw-D3dWHBd6.js → refresh-cw-C9cBJEAT.js} +1 -1
  117. package/web-app/dist/assets/{rotate-ccw-CvuWqaSB.js → rotate-ccw-D3PAtzST.js} +1 -1
  118. package/web-app/dist/assets/{scroll-text-ktmD_xJY.js → scroll-text-DZCoXQjo.js} +1 -1
  119. package/web-app/dist/assets/{server-E7pZtj5A.js → server-OCOLI5J_.js} +1 -1
  120. package/web-app/dist/assets/{shield-alert-968j9z0V.js → shield-alert-oVhmf1_h.js} +1 -1
  121. package/web-app/dist/assets/{thumbs-up-Tz_8rpU_.js → thumbs-up-B-kbX4vN.js} +1 -1
  122. package/web-app/dist/assets/{trash-2-Drh9IIj8.js → trash-2-EL6moveW.js} +1 -1
  123. package/web-app/dist/assets/{trending-down-DCQXtVSL.js → trending-down-Cl3kjpsx.js} +1 -1
  124. package/web-app/dist/assets/{trending-up-BIiwQbWV.js → trending-up-DST7I6M2.js} +1 -1
  125. package/web-app/dist/assets/{upload-sCbPkfmy.js → upload-CUOT780G.js} +1 -1
  126. package/web-app/dist/assets/{usePolling-BMIg6ZVT.js → usePolling-Djmt90eb.js} +1 -1
  127. package/web-app/dist/assets/{user-kGzXC3V2.js → user-BRBohA6J.js} +1 -1
  128. package/web-app/dist/index.html +1 -1
  129. package/docs/ARCHITECTURE-OVERVIEW.md +0 -209
  130. package/docs/AUTONOMI-ECOSYSTEM.md +0 -107
  131. package/docs/COCKPIT-SPEC.md +0 -72
  132. package/docs/COCKPIT-UX-MANDATE.md +0 -53
  133. package/docs/COMPETITIVE-ANALYSIS.md +0 -303
  134. package/docs/COMPETITIVE-NEXT-10.md +0 -316
  135. package/docs/COMPETITIVE-RALPH-ZEROSHOT-2026-07-08.md +0 -81
  136. package/docs/DASHBOARD-9.12-EVIDENCE.md +0 -97
  137. package/docs/DASHBOARD-ARCHITECTURE.md +0 -425
  138. package/docs/DASHBOARD_V2_CHECKLIST.md +0 -243
  139. package/docs/DEMOS.md +0 -63
  140. package/docs/ENTERPRISE-IDENTITY-ROADMAP.md +0 -206
  141. package/docs/EVIDENCE-RECEIPT-BUILD-APPLICABILITY.md +0 -79
  142. package/docs/FEAT-PRDREUSE-DOCKER-PLAN.md +0 -144
  143. package/docs/GATE-FAILURE-TRIAGE.md +0 -254
  144. package/docs/HANDOFF-2026-08-03.md +0 -439
  145. package/docs/LOOP-CANDIDATE-PROPOSAL-v1.md +0 -167
  146. package/docs/LOOP-HARNESS-AUDIT.md +0 -684
  147. package/docs/MERGE-DEDUP-MAP.md +0 -420
  148. package/docs/MERGE-ROUTE-MAP.md +0 -139
  149. package/docs/MODEL-REGISTRY-PLAN.md +0 -155
  150. package/docs/OUTCOME-FRONTIER.md +0 -536
  151. package/docs/P2-SPEC-ROBUSTNESS-PLAN.md +0 -192
  152. package/docs/PLANS-INDEX.md +0 -32
  153. package/docs/PRD-REUSE-DONE-RECOGNITION-PLAN.md +0 -536
  154. package/docs/PROMPT-ABLATION-RESULT.md +0 -97
  155. package/docs/R4-TRUST-TRAJECTORY-DESIGN.md +0 -127
  156. package/docs/R5-AUTO-WIKI-DESIGN.md +0 -137
  157. package/docs/R6-ROLLBACK-CHECKPOINT-PLAN.md +0 -107
  158. package/docs/R7-ZERO-CONFIG-FIRST-RUN-PLAN.md +0 -137
  159. package/docs/R8-SHAREABLE-TEAM-ASSETS-PLAN.md +0 -129
  160. package/docs/R9-OPEN-CORE-HOOKS-PLAN.md +0 -113
  161. package/docs/RARV-C-100X-PLAN.md +0 -286
  162. package/docs/RARV-C-LOOP-EFFICIENCY-PLAN.md +0 -470
  163. package/docs/SHAREABLE-PROOF-PLAN.md +0 -194
  164. package/docs/SONNET5-DEFAULT-PLAN.md +0 -157
  165. package/docs/SPEED-AND-FIRST-PASS-PLAN.md +0 -281
  166. package/docs/STALE-STATE-AUDIT.md +0 -174
  167. package/docs/SYNERGY-TASKS.md +0 -143
  168. package/docs/TASKLIST-ACCURACY-PLAN.md +0 -355
  169. package/docs/TOP-100-BACKLOG.md +0 -159
  170. package/docs/V8-ACCEPTANCE-TRIAGE-2026-07-24.md +0 -114
  171. package/docs/V8-COMPLEXITY-AUDIT-2026-07-24.md +0 -45
  172. package/docs/V8-MAJOR-RELEASE-PLAN.md +0 -137
  173. package/docs/V8-OVERNIGHT-PLAN-2026-07-25.md +0 -82
  174. package/docs/V8-SDK-RESEARCH-RAW.md +0 -129
  175. package/docs/WELCOME-OPENER-PLAN.md +0 -106
  176. package/docs/adoption-baseline-2026-07-31.md +0 -84
  177. package/docs/architecture/bmad-integration-epic.md +0 -271
  178. package/docs/architecture/bmad-integration-review.md +0 -86
  179. package/docs/architecture/bmad-integration-validation.md +0 -249
  180. package/docs/architecture/bmad-loki-voice-agent-council-analysis.md +0 -61
  181. package/docs/auto-claude-comparison.md +0 -250
  182. package/docs/bug-fixes/agent-01-cli-fixes.md +0 -101
  183. package/docs/bug-fixes/agent-02-purplelab-fixes.md +0 -88
  184. package/docs/bug-fixes/agent-03-dashboard-fixes.md +0 -119
  185. package/docs/bug-fixes/agent-04-memory-fixes.md +0 -105
  186. package/docs/bug-fixes/agent-05-provider-fixes.md +0 -86
  187. package/docs/bug-fixes/agent-06-integration-fixes.md +0 -101
  188. package/docs/bug-fixes/agent-07-dash-run-fixes.md +0 -101
  189. package/docs/bug-fixes/agent-08-docker-fixes.md +0 -164
  190. package/docs/bug-fixes/agent-09-e2e-build-fixes.md +0 -69
  191. package/docs/bug-fixes/agent-10-e2e-fullstack-fixes.md +0 -102
  192. package/docs/bug-fixes/agent-11-e2e-session-fixes.md +0 -70
  193. package/docs/bug-fixes/agent-12-scenario-fixes.md +0 -120
  194. package/docs/bug-fixes/agent-13-enterprise-fixes.md +0 -143
  195. package/docs/bug-fixes/agent-14-uat-newuser-fixes.md +0 -88
  196. package/docs/bug-fixes/agent-15-uat-poweruser-fixes.md +0 -132
  197. package/docs/bug-fixes/agent-19-code-review.md +0 -316
  198. package/docs/bug-fixes/agent-20-architecture-review.md +0 -331
  199. package/docs/competitive/bolt-new-analysis.md +0 -579
  200. package/docs/competitive/emergence-others-analysis.md +0 -605
  201. package/docs/competitive/replit-lovable-analysis.md +0 -622
  202. package/docs/dashboard-guide.md +0 -487
  203. package/docs/enterprise/migration.md +0 -265
  204. package/docs/history/one-run-audit.md +0 -304
  205. package/docs/plans/FORGE-AUTONOMOUS-QUEUE.md +0 -312
  206. package/docs/plans/ULTRAPLAN-FORGE-BAAS.md +0 -612
  207. package/docs/plans/UT2-6-LSP-DIAGNOSTIC-BROADCAST.md +0 -394
  208. package/docs/prd-purple-lab-ide.md +0 -152
  209. package/docs/prd-purple-lab-platform-v2.md +0 -223
  210. package/docs/prd-purple-lab-platform.md +0 -319
  211. package/docs/retrospectives/v7.5.15-fleet-postmortem.md +0 -325
  212. package/docs/retrospectives/v7.5.15-honesty-audit.md +0 -136
  213. package/docs/retrospectives/v7.5.15-llm-failure-modes.md +0 -49
  214. package/docs/show-hn-post.md +0 -46
  215. package/docs/test-scenarios/enterprise-scenarios.md +0 -732
  216. 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. |