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.
- package/README.md +68 -650
- package/SKILL.md +4 -4
- package/VERSION +1 -1
- package/autonomy/completion-council.sh +2 -2
- package/autonomy/context-tracker.py +4 -4
- package/autonomy/council-v2.sh +1 -1
- package/autonomy/grill.sh +1 -1
- package/autonomy/lib/done-recognition.sh +1 -1
- package/autonomy/lib/prd-enrich.sh +1 -1
- package/autonomy/lib/voter-agents.sh +1 -1
- package/autonomy/loki +99 -75
- package/autonomy/run.sh +30 -18
- package/autonomy/sandbox.sh +1 -1
- package/autonomy/tui.sh +6 -5
- package/autonomy/verify.sh +1 -1
- package/bin/loki +166 -59
- package/completions/_loki +2 -0
- package/completions/loki.bash +2 -2
- package/dashboard/__init__.py +1 -1
- package/dashboard/server.py +25 -31
- package/docs/ARCHITECTURE.md +337 -0
- package/docs/BRANDING.md +124 -0
- package/docs/CLI-REFERENCE.md +7 -1
- package/docs/COMPONENTS.md +447 -0
- package/docs/DEPLOYMENT.md +9 -9
- package/docs/DOCKER.md +469 -0
- package/docs/INSTALLATION.md +67 -1045
- package/docs/KNOWN-ISSUES.md +11 -35
- package/docs/TESTING.md +161 -0
- package/docs/air-gapped.md +1 -2
- package/docs/alternative-installations.md +14 -24
- package/docs/architecture/DECISIONS.md +333 -0
- package/docs/audit-logging.md +7 -7
- package/docs/authentication.md +3 -3
- package/docs/authorization.md +1 -1
- package/docs/certification/04-production-deployment/lab.md +6 -6
- package/docs/certification/04-production-deployment/lesson.md +4 -4
- package/docs/certification/README.md +1 -1
- package/docs/control-plane-container.md +2 -2
- package/docs/dev/real-run.md +34 -0
- package/docs/dev/release-checklist.md +2 -2
- package/docs/exit-codes.md +3 -3
- package/docs/git-workflow.md +3 -3
- package/docs/metrics.md +37 -55
- package/docs/network-security.md +1 -1
- package/docs/siem-integration.md +5 -5
- package/docs/v10/CLI-MODERN.md +4 -3
- package/docs/v10/DECISIONS.md +44 -0
- package/docs/v10/DEPS.md +22 -22
- package/docs/v10/ENGINE.md +1 -1
- package/docs/v10/FAILURE-CLASSES.md +118 -1
- package/docs/v10/FOUNDER-QUEUE.md +1 -0
- package/docs/v10/GUARDS.md +13 -0
- package/docs/v10/LEGACY-REMOVAL.md +4 -6
- package/docs/v10/METRICS.md +2 -2
- package/docs/v10/MODERNIZE.md +1 -1
- package/docs/v10/OPERATING-MODEL.md +2 -1
- package/docs/v10/PROGRESS.md +29 -0
- package/docs/v11/COST-HALF.md +352 -0
- package/docs/v11/MARKET-SLICES.md +315 -0
- package/docs/v11/REGISTRIES.md +730 -0
- package/loki-ts/data/model-pricing.json +52 -24
- package/loki-ts/dist/loki.js +1036 -957
- package/mcp/__init__.py +1 -1
- package/package.json +1 -1
- package/packages/control-plane/dist/server.js +2467 -736
- package/plugins/loki-mode/.claude-plugin/plugin.json +1 -1
- package/src/protocols/mcp-client.js +6 -2
- package/src/protocols/mcp-server.js +13 -3
- package/tools/audit-docs.py +1 -1
- package/web-app/dist/assets/{AdminPage-D_e45uTw.js → AdminPage-CMkHNJbF.js} +1 -1
- package/web-app/dist/assets/{Avatar-T3nIpoaf.js → Avatar-BJyjV7Zi.js} +1 -1
- package/web-app/dist/assets/{Badge-BKqb59pP.js → Badge-D572l0uq.js} +1 -1
- package/web-app/dist/assets/{Button-DjVlkh8_.js → Button-T4BnOZgl.js} +1 -1
- package/web-app/dist/assets/{CockpitPage-DXJgLGmh.js → CockpitPage-Cj_GFsNn.js} +1 -1
- package/web-app/dist/assets/{ComparePage-BRP_eVc_.js → ComparePage-A8m4ZXak.js} +1 -1
- package/web-app/dist/assets/{ErrorBoundary-CLjpGLjC.js → ErrorBoundary-hugCg5yg.js} +1 -1
- package/web-app/dist/assets/{EvidenceReceiptPanel-DX-vb4Xy.js → EvidenceReceiptPanel-CuJKDC2G.js} +1 -1
- package/web-app/dist/assets/{GitHubIssuesPanel-214HVHtX.js → GitHubIssuesPanel-BYGKjarC.js} +1 -1
- package/web-app/dist/assets/{GitHubPRsPanel-BEiZKc4t.js → GitHubPRsPanel-c7sFIJlf.js} +1 -1
- package/web-app/dist/assets/{HomePage-VvMHS5ga.js → HomePage-A1MIkG2P.js} +2 -2
- package/web-app/dist/assets/{LoginPage-5WD-v7n3.js → LoginPage-8KQMRhtR.js} +1 -1
- package/web-app/dist/assets/{MagicPage-DUQT_Jye.js → MagicPage-C05QW2Lx.js} +1 -1
- package/web-app/dist/assets/{MetricsPage-lga-z79v.js → MetricsPage-Oukv5hme.js} +1 -1
- package/web-app/dist/assets/{NotFoundPage-CGhBX3G1.js → NotFoundPage-DKIwsawz.js} +1 -1
- package/web-app/dist/assets/{ProjectPage-CdzF2GzZ.js → ProjectPage-DwFRPLCG.js} +3 -3
- package/web-app/dist/assets/{ProjectsPage-DRG64N8s.js → ProjectsPage-CgY4YYDX.js} +1 -1
- package/web-app/dist/assets/{SettingsPage-5fzW9Frb.js → SettingsPage-BpfcSjUA.js} +1 -1
- package/web-app/dist/assets/{ShowcasePage-DrTdxO4y.js → ShowcasePage-BqBakC4K.js} +1 -1
- package/web-app/dist/assets/{SystemSettingsPage-C9Mqs6Rd.js → SystemSettingsPage-CZLu5VB0.js} +1 -1
- package/web-app/dist/assets/{TeamsPage-CUGPdSWo.js → TeamsPage-D55S1jKz.js} +1 -1
- package/web-app/dist/assets/{TemplatesPage-CNraDY0F.js → TemplatesPage-D3SydvxN.js} +1 -1
- package/web-app/dist/assets/{TerminalOutput-BIu_6Pea.js → TerminalOutput-hNg8G1-e.js} +1 -1
- package/web-app/dist/assets/{activity-Bk-kgqaf.js → activity-D2C0VagO.js} +1 -1
- package/web-app/dist/assets/{bell-BXmUdmo8.js → bell-CMvYi36w.js} +1 -1
- package/web-app/dist/assets/{bot-CiuzXxUR.js → bot-BvtQ6lmo.js} +1 -1
- package/web-app/dist/assets/{check-BEzjXppd.js → check-B13xkXed.js} +1 -1
- package/web-app/dist/assets/{chevron-left-AYWCXHf8.js → chevron-left-emu6r49E.js} +1 -1
- package/web-app/dist/assets/{circle-alert-BNg2uSRq.js → circle-alert-CExlwjuy.js} +1 -1
- package/web-app/dist/assets/{clock-DTj0kkGT.js → clock-D7Uas3oL.js} +1 -1
- package/web-app/dist/assets/{cloud-x4nTDBLT.js → cloud-CkB4S86C.js} +1 -1
- package/web-app/dist/assets/{code-xml-BVh_MLrk.js → code-xml-SL9IIWIn.js} +1 -1
- package/web-app/dist/assets/{database-DdfBaowG.js → database-BQFkd7t1.js} +1 -1
- package/web-app/dist/assets/{dollar-sign-XuYFmAOY.js → dollar-sign-qHmnNYsU.js} +1 -1
- package/web-app/dist/assets/{file-code-corner-D4cRnmeL.js → file-code-corner-C2YUDP0K.js} +1 -1
- package/web-app/dist/assets/{file-plus-CyoVlHc_.js → file-plus-C_ooIkDe.js} +1 -1
- package/web-app/dist/assets/{globe-Y6IK2RPW.js → globe-CQ-GL485.js} +1 -1
- package/web-app/dist/assets/{hammer-BKzr9VZI.js → hammer-U05L_D7V.js} +1 -1
- package/web-app/dist/assets/{index-B20cSx5G.js → index-CooHd7I-.js} +3 -3
- package/web-app/dist/assets/{layers-DebNOhGS.js → layers-Buo17rjW.js} +1 -1
- package/web-app/dist/assets/{loader-circle-DyGbrEgd.js → loader-circle-15vK3oV1.js} +1 -1
- package/web-app/dist/assets/{lock-BKPpyt20.js → lock-BeXLebuJ.js} +1 -1
- package/web-app/dist/assets/{package-egF5Wi4y.js → package-MVh_6-6R.js} +1 -1
- package/web-app/dist/assets/{plus-OiEgKIc-.js → plus-Dh_nd9vS.js} +1 -1
- package/web-app/dist/assets/{refresh-cw-CzKvrONq.js → refresh-cw-C9cBJEAT.js} +1 -1
- package/web-app/dist/assets/{rotate-ccw-Bu2mII0p.js → rotate-ccw-D3PAtzST.js} +1 -1
- package/web-app/dist/assets/{scroll-text-CSkiyax8.js → scroll-text-DZCoXQjo.js} +1 -1
- package/web-app/dist/assets/{server-DlPthJFw.js → server-OCOLI5J_.js} +1 -1
- package/web-app/dist/assets/{shield-alert-CbpHWQQX.js → shield-alert-oVhmf1_h.js} +1 -1
- package/web-app/dist/assets/{thumbs-up-DgGpZe-Q.js → thumbs-up-B-kbX4vN.js} +1 -1
- package/web-app/dist/assets/{trash-2-BV3GlCB-.js → trash-2-EL6moveW.js} +1 -1
- package/web-app/dist/assets/{trending-down-Y4TJtXhD.js → trending-down-Cl3kjpsx.js} +1 -1
- package/web-app/dist/assets/{trending-up-DsDNoHZY.js → trending-up-DST7I6M2.js} +1 -1
- package/web-app/dist/assets/{upload-gkThrc_I.js → upload-CUOT780G.js} +1 -1
- package/web-app/dist/assets/{usePolling-jpNSeNAe.js → usePolling-Djmt90eb.js} +1 -1
- package/web-app/dist/assets/{user-3Zez1WOK.js → user-BRBohA6J.js} +1 -1
- package/web-app/dist/index.html +1 -1
- package/docs/ARCHITECTURE-OVERVIEW.md +0 -209
- package/docs/AUTONOMI-ECOSYSTEM.md +0 -107
- package/docs/COCKPIT-SPEC.md +0 -72
- package/docs/COCKPIT-UX-MANDATE.md +0 -53
- package/docs/COMPETITIVE-ANALYSIS.md +0 -303
- package/docs/COMPETITIVE-NEXT-10.md +0 -316
- package/docs/COMPETITIVE-RALPH-ZEROSHOT-2026-07-08.md +0 -81
- package/docs/DASHBOARD-9.12-EVIDENCE.md +0 -97
- package/docs/DASHBOARD-ARCHITECTURE.md +0 -425
- package/docs/DASHBOARD_V2_CHECKLIST.md +0 -243
- package/docs/DEMOS.md +0 -63
- package/docs/ENTERPRISE-IDENTITY-ROADMAP.md +0 -206
- package/docs/EVIDENCE-RECEIPT-BUILD-APPLICABILITY.md +0 -79
- package/docs/FEAT-PRDREUSE-DOCKER-PLAN.md +0 -144
- package/docs/GATE-FAILURE-TRIAGE.md +0 -254
- package/docs/HANDOFF-2026-08-03.md +0 -439
- package/docs/LOOP-CANDIDATE-PROPOSAL-v1.md +0 -167
- package/docs/LOOP-HARNESS-AUDIT.md +0 -684
- package/docs/MERGE-DEDUP-MAP.md +0 -420
- package/docs/MERGE-ROUTE-MAP.md +0 -139
- package/docs/MODEL-REGISTRY-PLAN.md +0 -155
- package/docs/OUTCOME-FRONTIER.md +0 -536
- package/docs/P2-SPEC-ROBUSTNESS-PLAN.md +0 -192
- package/docs/PLANS-INDEX.md +0 -32
- package/docs/PRD-REUSE-DONE-RECOGNITION-PLAN.md +0 -536
- package/docs/PROMPT-ABLATION-RESULT.md +0 -97
- package/docs/R4-TRUST-TRAJECTORY-DESIGN.md +0 -127
- package/docs/R5-AUTO-WIKI-DESIGN.md +0 -137
- package/docs/R6-ROLLBACK-CHECKPOINT-PLAN.md +0 -107
- package/docs/R7-ZERO-CONFIG-FIRST-RUN-PLAN.md +0 -137
- package/docs/R8-SHAREABLE-TEAM-ASSETS-PLAN.md +0 -129
- package/docs/R9-OPEN-CORE-HOOKS-PLAN.md +0 -113
- package/docs/RARV-C-100X-PLAN.md +0 -286
- package/docs/RARV-C-LOOP-EFFICIENCY-PLAN.md +0 -470
- package/docs/SHAREABLE-PROOF-PLAN.md +0 -194
- package/docs/SONNET5-DEFAULT-PLAN.md +0 -157
- package/docs/SPEED-AND-FIRST-PASS-PLAN.md +0 -281
- package/docs/STALE-STATE-AUDIT.md +0 -174
- package/docs/SYNERGY-TASKS.md +0 -143
- package/docs/TASKLIST-ACCURACY-PLAN.md +0 -355
- package/docs/TOP-100-BACKLOG.md +0 -159
- package/docs/V8-ACCEPTANCE-TRIAGE-2026-07-24.md +0 -114
- package/docs/V8-COMPLEXITY-AUDIT-2026-07-24.md +0 -45
- package/docs/V8-MAJOR-RELEASE-PLAN.md +0 -137
- package/docs/V8-OVERNIGHT-PLAN-2026-07-25.md +0 -82
- package/docs/V8-SDK-RESEARCH-RAW.md +0 -129
- package/docs/WELCOME-OPENER-PLAN.md +0 -106
- package/docs/adoption-baseline-2026-07-31.md +0 -84
- package/docs/architecture/bmad-integration-epic.md +0 -271
- package/docs/architecture/bmad-integration-review.md +0 -86
- package/docs/architecture/bmad-integration-validation.md +0 -249
- package/docs/architecture/bmad-loki-voice-agent-council-analysis.md +0 -61
- package/docs/auto-claude-comparison.md +0 -250
- package/docs/bug-fixes/agent-01-cli-fixes.md +0 -101
- package/docs/bug-fixes/agent-02-purplelab-fixes.md +0 -88
- package/docs/bug-fixes/agent-03-dashboard-fixes.md +0 -119
- package/docs/bug-fixes/agent-04-memory-fixes.md +0 -105
- package/docs/bug-fixes/agent-05-provider-fixes.md +0 -86
- package/docs/bug-fixes/agent-06-integration-fixes.md +0 -101
- package/docs/bug-fixes/agent-07-dash-run-fixes.md +0 -101
- package/docs/bug-fixes/agent-08-docker-fixes.md +0 -164
- package/docs/bug-fixes/agent-09-e2e-build-fixes.md +0 -69
- package/docs/bug-fixes/agent-10-e2e-fullstack-fixes.md +0 -102
- package/docs/bug-fixes/agent-11-e2e-session-fixes.md +0 -70
- package/docs/bug-fixes/agent-12-scenario-fixes.md +0 -120
- package/docs/bug-fixes/agent-13-enterprise-fixes.md +0 -143
- package/docs/bug-fixes/agent-14-uat-newuser-fixes.md +0 -88
- package/docs/bug-fixes/agent-15-uat-poweruser-fixes.md +0 -132
- package/docs/bug-fixes/agent-19-code-review.md +0 -316
- package/docs/bug-fixes/agent-20-architecture-review.md +0 -331
- package/docs/competitive/bolt-new-analysis.md +0 -579
- package/docs/competitive/emergence-others-analysis.md +0 -605
- package/docs/competitive/replit-lovable-analysis.md +0 -622
- package/docs/dashboard-guide.md +0 -487
- package/docs/enterprise/migration.md +0 -265
- package/docs/history/one-run-audit.md +0 -304
- package/docs/plans/FORGE-AUTONOMOUS-QUEUE.md +0 -312
- package/docs/plans/ULTRAPLAN-FORGE-BAAS.md +0 -612
- package/docs/plans/UT2-6-LSP-DIAGNOSTIC-BROADCAST.md +0 -394
- package/docs/prd-purple-lab-ide.md +0 -152
- package/docs/prd-purple-lab-platform-v2.md +0 -223
- package/docs/prd-purple-lab-platform.md +0 -319
- package/docs/retrospectives/v7.5.15-fleet-postmortem.md +0 -325
- package/docs/retrospectives/v7.5.15-honesty-audit.md +0 -136
- package/docs/retrospectives/v7.5.15-llm-failure-modes.md +0 -49
- package/docs/show-hn-post.md +0 -46
- package/docs/test-scenarios/enterprise-scenarios.md +0 -732
- package/docs/thick2thin.md +0 -173
package/docs/SYNERGY-TASKS.md
DELETED
|
@@ -1,143 +0,0 @@
|
|
|
1
|
-
# Loki Mode Synergy Implementation Tasks
|
|
2
|
-
|
|
3
|
-
This document tracks all implementation tasks to achieve tool synergy and competitive leadership.
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## Phase 1: Event Bus Foundation (v5.17.0) - COMPLETED
|
|
8
|
-
|
|
9
|
-
| Task ID | Task | Status | Notes |
|
|
10
|
-
|---------|------|--------|-------|
|
|
11
|
-
| SYN-001 | Create Python event bus module | Done | events/bus.py |
|
|
12
|
-
| SYN-002 | Create TypeScript event bus module | Done | events/bus.ts |
|
|
13
|
-
| SYN-003 | Create Bash event emitter helper | Done | events/emit.sh |
|
|
14
|
-
| SYN-004 | Add event bus tests | Done | 10/10 passing |
|
|
15
|
-
| SYN-005 | Document event bus architecture | Done | SYNERGY-ROADMAP.md |
|
|
16
|
-
|
|
17
|
-
---
|
|
18
|
-
|
|
19
|
-
## Phase 2: Memory Integration (v5.18.0) - COMPLETED
|
|
20
|
-
|
|
21
|
-
| Task ID | Task | Status | Priority | Notes |
|
|
22
|
-
|---------|------|--------|----------|-------|
|
|
23
|
-
| SYN-006 | Create unified memory access layer | Done | High | memory/unified_access.py |
|
|
24
|
-
| SYN-007 | Add memory context to VS Code sidebar | Done | High | memoryViewProvider.ts |
|
|
25
|
-
| SYN-008 | Add memory retrieval to CLI start | Done | Medium | autonomy/loki - base64 encoding, atomic writes |
|
|
26
|
-
| SYN-009 | Add automatic context loading to MCP | Done | High | MCP uses unified access |
|
|
27
|
-
| SYN-010 | Add memory-informed suggestions to API | Done | Medium | /api/status has memory context |
|
|
28
|
-
| SYN-011 | Integrate VS Code file edits with memory | Pending | Medium | Record edits as episodes |
|
|
29
|
-
|
|
30
|
-
---
|
|
31
|
-
|
|
32
|
-
## Phase 3: Smart State Sync (v5.19.0) - IN PROGRESS
|
|
33
|
-
|
|
34
|
-
| Task ID | Task | Status | Priority | Notes |
|
|
35
|
-
|---------|------|--------|----------|-------|
|
|
36
|
-
| SYN-012 | Create centralized state manager | Done | High | state/manager.py, state/manager.ts - peer reviewed |
|
|
37
|
-
| SYN-013 | Replace direct file reads with state manager | Pending | High | All components use manager |
|
|
38
|
-
| SYN-014 | Add optimistic updates with conflict resolution | Pending | Medium | Handle concurrent writes |
|
|
39
|
-
| SYN-015 | Add state versioning for rollback | Pending | Low | Recovery capability |
|
|
40
|
-
| SYN-016 | Add state change notifications | Pending | High | Real-time sync |
|
|
41
|
-
|
|
42
|
-
---
|
|
43
|
-
|
|
44
|
-
## Phase 4: Cross-Tool Learning (v5.20.0) - IN PROGRESS
|
|
45
|
-
|
|
46
|
-
| Task ID | Task | Status | Priority | Notes |
|
|
47
|
-
|---------|------|--------|----------|-------|
|
|
48
|
-
| SYN-017 | Define learning signal types | Done | High | learning/signals.py + learning/signals.ts - peer reviewed |
|
|
49
|
-
| SYN-018 | Implement learning collectors in CLI | Pending | Medium | CLI emits learning signals |
|
|
50
|
-
| SYN-019 | Implement learning collectors in API | Pending | Medium | API emits learning signals |
|
|
51
|
-
| SYN-020 | Implement learning collectors in VS Code | Pending | Medium | VS Code emits learning signals |
|
|
52
|
-
| SYN-021 | Implement learning collectors in MCP | Pending | Medium | MCP emits learning signals |
|
|
53
|
-
| SYN-022 | Create learning aggregator | Pending | High | Consolidate signals |
|
|
54
|
-
| SYN-023 | Add learning-based suggestions | Pending | High | Use learnings to improve |
|
|
55
|
-
| SYN-024 | Add learning metrics dashboard | Pending | Low | Visualize learning |
|
|
56
|
-
|
|
57
|
-
---
|
|
58
|
-
|
|
59
|
-
## Phase 5: Unified Dashboard (v5.21.0) - IN PROGRESS
|
|
60
|
-
|
|
61
|
-
| Task ID | Task | Status | Priority | Notes |
|
|
62
|
-
|---------|------|--------|----------|-------|
|
|
63
|
-
| SYN-025 | Extract dashboard as reusable web components | Done | High | legacy-ui/ - ARIA, keyboard nav, focus mgmt - peer reviewed |
|
|
64
|
-
| SYN-026 | Create VS Code webview integration | Pending | High | Embed dashboard in VS Code |
|
|
65
|
-
| SYN-027 | Unify styling and behavior | Pending | Medium | Consistent UX |
|
|
66
|
-
| SYN-028 | Add dashboard feature parity check | Pending | Low | Ensure all features available |
|
|
67
|
-
|
|
68
|
-
---
|
|
69
|
-
|
|
70
|
-
## Competitive Gap Tasks (vs claude-flow, claude-mem, etc.)
|
|
71
|
-
|
|
72
|
-
| Task ID | Task | Status | Priority | Competitor Gap |
|
|
73
|
-
|---------|------|--------|----------|----------------|
|
|
74
|
-
| COMP-001 | Implement swarm intelligence patterns | Pending | Medium | claude-flow has 60+ agents |
|
|
75
|
-
| COMP-002 | Add Byzantine fault tolerance | Pending | Low | claude-flow resilience |
|
|
76
|
-
| COMP-003 | Improve embedding quality | Pending | Medium | claude-mem uses OpenAI |
|
|
77
|
-
| COMP-004 | Add importance scoring for memories | Done | High | Now has decay + boost |
|
|
78
|
-
| COMP-005 | Implement memory namespaces | Pending | Medium | claude-mem project isolation |
|
|
79
|
-
| COMP-006 | Add real-time collaboration | Pending | Low | Multi-user support |
|
|
80
|
-
| COMP-007 | Improve context window optimization | Done | High | Progressive disclosure + budget |
|
|
81
|
-
|
|
82
|
-
---
|
|
83
|
-
|
|
84
|
-
## Security Tasks (from Peer Review)
|
|
85
|
-
|
|
86
|
-
| Task ID | Task | Status | Priority | Notes |
|
|
87
|
-
|---------|------|--------|----------|-------|
|
|
88
|
-
| SEC-001 | Fix command injection in session-init.sh | Done | Critical | Fixed via env vars |
|
|
89
|
-
| SEC-002 | Fix command injection in store-episode.sh | Done | Critical | Fixed via env vars |
|
|
90
|
-
| SEC-003 | Fix path traversal in mcp/server.py | Done | High | Added validate_path() |
|
|
91
|
-
| SEC-004 | Improve fork bomb pattern detection | Done | Medium | Regex updated in v5.16.0 |
|
|
92
|
-
| SEC-005 | Add input sanitization to all hooks | Done | High | Via path validation |
|
|
93
|
-
| SEC-006 | Fix path traversal in storage.py | Done | High | Path validation in v5.25.0 |
|
|
94
|
-
| SEC-007 | Fix XSS in log-stream | Done | High | Output sanitization in v5.25.0 |
|
|
95
|
-
| SEC-008 | Fix memory leak in session-control | Done | Medium | Resource cleanup in v5.25.0 |
|
|
96
|
-
| SEC-009 | Fix Python injection in completion-council.sh | Done | Critical | Input sanitization in v5.25.0 |
|
|
97
|
-
| SEC-010 | Make CORS configurable | Done | Medium | CORS_ALLOWED_ORIGINS env var in v5.25.0 |
|
|
98
|
-
|
|
99
|
-
---
|
|
100
|
-
|
|
101
|
-
## Quick Wins (Can Do Now)
|
|
102
|
-
|
|
103
|
-
| Task ID | Task | Status | Priority | Effort |
|
|
104
|
-
|---------|------|--------|----------|--------|
|
|
105
|
-
| QW-001 | CLI emits events on command execution | Done | High | Low |
|
|
106
|
-
| QW-002 | API returns relevant patterns with status | Done | Medium | Low |
|
|
107
|
-
| QW-003 | MCP emits tool call events | Done | Medium | Low |
|
|
108
|
-
| QW-004 | Add suggestions endpoint to API | Done | Medium | Medium | api/routes/memory.ts - rate limiting, security fixes - peer reviewed |
|
|
109
|
-
| QW-005 | VS Code shows memory stats in status bar | Done | Low | Low |
|
|
110
|
-
|
|
111
|
-
---
|
|
112
|
-
|
|
113
|
-
## Task Dependencies
|
|
114
|
-
|
|
115
|
-
```
|
|
116
|
-
SYN-006 (unified memory) -> SYN-007, SYN-008, SYN-009, SYN-010, SYN-011
|
|
117
|
-
SYN-012 (state manager) -> SYN-013, SYN-014, SYN-015, SYN-016
|
|
118
|
-
SYN-017 (learning signals) -> SYN-018, SYN-019, SYN-020, SYN-021 -> SYN-022 -> SYN-023
|
|
119
|
-
SYN-025 (web components) -> SYN-026, SYN-027
|
|
120
|
-
|
|
121
|
-
SEC-001, SEC-002 -> Should be done ASAP (Critical)
|
|
122
|
-
```
|
|
123
|
-
|
|
124
|
-
---
|
|
125
|
-
|
|
126
|
-
## Progress Tracking
|
|
127
|
-
|
|
128
|
-
| Phase | Total Tasks | Completed | In Progress | Pending |
|
|
129
|
-
|-------|-------------|-----------|-------------|---------|
|
|
130
|
-
| Phase 1 (Event Bus) | 5 | 5 | 0 | 0 |
|
|
131
|
-
| Phase 2 (Memory) | 6 | 5 | 0 | 1 |
|
|
132
|
-
| Phase 3 (State) | 5 | 1 | 0 | 4 |
|
|
133
|
-
| Phase 4 (Learning) | 8 | 1 | 0 | 7 |
|
|
134
|
-
| Phase 5 (Dashboard) | 4 | 1 | 0 | 3 |
|
|
135
|
-
| Competitive | 7 | 2 | 0 | 5 |
|
|
136
|
-
| Security | 10 | 10 | 0 | 0 |
|
|
137
|
-
| Quick Wins | 5 | 5 | 0 | 0 |
|
|
138
|
-
| **Total** | **50** | **30** | **0** | **20** |
|
|
139
|
-
|
|
140
|
-
---
|
|
141
|
-
|
|
142
|
-
*Last Updated: 2026-02-06*
|
|
143
|
-
*v5.25.0: 50 tasks tracked, 30 completed. Security hardening (5 new fixes) added in v5.25.0.*
|
|
@@ -1,355 +0,0 @@
|
|
|
1
|
-
# Dashboard Task-List Accuracy Fix Plan
|
|
2
|
-
|
|
3
|
-
Branch: fix/tasklist-accuracy
|
|
4
|
-
Worktree: /Users/lokesh/git/loki-tasklist-wt
|
|
5
|
-
Type: PATCH release (bug fix, no new features)
|
|
6
|
-
Status: Plan only. No implementation in this document.
|
|
7
|
-
|
|
8
|
-
## 1. Summary
|
|
9
|
-
|
|
10
|
-
On a live run (~/git/anonima, loki start reusing a generated PRD) the dashboard
|
|
11
|
-
board at :57375/#section=overview shows:
|
|
12
|
-
|
|
13
|
-
- DONE column: 30 bare "Iteration N" cards with empty body (click -> empty modal).
|
|
14
|
-
- PENDING column: 12 rich PRD stories (prd-001..prd-012) that never move.
|
|
15
|
-
- IN-PROGRESS: iteration-13, which correctly borrows the active PRD story
|
|
16
|
-
title/description (intentional).
|
|
17
|
-
|
|
18
|
-
This plan verifies the mechanism against source, recommends an honesty-first
|
|
19
|
-
board model, lists the exact per-file change set with line references, gives a
|
|
20
|
-
test plan, and notes the patch-release steps.
|
|
21
|
-
|
|
22
|
-
## 2. Verified root cause (against source + real data)
|
|
23
|
-
|
|
24
|
-
Reproduced by replaying the /api/tasks merge logic over the real
|
|
25
|
-
~/git/anonima/.loki files. Rendered output shape:
|
|
26
|
-
|
|
27
|
-
- TOTAL 43 tasks: done=30, pending=12, in_progress=1.
|
|
28
|
-
- EMPTY-description done cards: 30 of 30.
|
|
29
|
-
- Duplicate ids in the output: iteration-1 x5, iteration-2 x3,
|
|
30
|
-
iteration-3..12 x2 each, iteration-13 x2 (appears in BOTH in_progress and
|
|
31
|
-
done). This is a distinct, second defect (see 2C).
|
|
32
|
-
|
|
33
|
-
There are four concrete defects.
|
|
34
|
-
|
|
35
|
-
### 2A. Thin completed markers (primary defect -> empty done cards)
|
|
36
|
-
|
|
37
|
-
`track_iteration_start` (autonomy/run.sh:5370-5569) writes a RICH in-progress
|
|
38
|
-
record: it reads pending[0] for context (5395-5416) and emits a task with
|
|
39
|
-
id `iteration-N`, type `iteration`, a real title/description, acceptance_criteria,
|
|
40
|
-
notes, and a `logs` array (5462-5488, with fallbacks at 5499-5532 and
|
|
41
|
-
5545-5568). `append_iteration_log` (5013-5072) appends further per-phase log
|
|
42
|
-
entries to that same in-progress record.
|
|
43
|
-
|
|
44
|
-
`track_iteration_complete` (autonomy/run.sh:6276-6455) writes the COMPLETED
|
|
45
|
-
marker with a hardcoded THIN body (6400-6411):
|
|
46
|
-
|
|
47
|
-
{
|
|
48
|
-
"id": "iteration-N",
|
|
49
|
-
"type": "iteration",
|
|
50
|
-
"title": "Iteration N",
|
|
51
|
-
"status": "completed"|"failed",
|
|
52
|
-
"completedAt": "...",
|
|
53
|
-
"exitCode": N,
|
|
54
|
-
"provider": "..."
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
No title-from-context, no description, no logs. It appends this to
|
|
58
|
-
completed.json/failed.json (6414-6429), then DELETES the rich in-progress
|
|
59
|
-
record (6431-6443). So the rich in-progress card becomes an empty done card,
|
|
60
|
-
and the logs that lived only in the in-progress record are discarded.
|
|
61
|
-
|
|
62
|
-
Confirmed data: ~/git/anonima/.loki/queue/completed.json items are all
|
|
63
|
-
`{"id":"iteration-N","title":"Iteration N","description":""...}`.
|
|
64
|
-
|
|
65
|
-
Key consequence for the fix: the body (logs/phase) exists ONLY in the
|
|
66
|
-
in-progress record at completion time. The API cannot recover it after run.sh
|
|
67
|
-
deletes it. run.sh MUST lift it before removal. This is why run.sh is the
|
|
68
|
-
required fix site for the card body, not the API.
|
|
69
|
-
|
|
70
|
-
### 2B. PRD stories never reconcile pending -> done
|
|
71
|
-
|
|
72
|
-
PRD tasks are populated once into pending.json by the PRD parser
|
|
73
|
-
(autonomy/run.sh:15167-15213, ids `prd-001`..). Nothing ever pops or moves a
|
|
74
|
-
prd task out of pending: grep of every pending.json write site
|
|
75
|
-
(2625-2720 dedup, 2918-2938 GitHub sync read-only, 14663 openspec purge,
|
|
76
|
-
14679 populate) shows no path that transitions a prd story to completed. The
|
|
77
|
-
RARV loop only READS pending[0] for iteration context (5403-5413); it never
|
|
78
|
-
mutates prd status. So the 12 stories sit in pending forever regardless of how
|
|
79
|
-
many iterations run.
|
|
80
|
-
|
|
81
|
-
Honesty check (decisive): ~/git/anonima/.loki/checklist/checklist.json has 19
|
|
82
|
-
items, ALL status `pending`; verification-results.json summary is
|
|
83
|
-
verified=0/failing=0/pending=19. Nothing in this run is verified-complete.
|
|
84
|
-
Auto-moving any prd story to done would be fake-green.
|
|
85
|
-
|
|
86
|
-
### 2C. No intra-source dedup in /api/tasks (duplicate cards, broken keys)
|
|
87
|
-
|
|
88
|
-
dashboard/server.py /api/tasks (1772-1914) merges two sources:
|
|
89
|
-
1. dashboard-state.json `.tasks` groups (1783-1825) mapped
|
|
90
|
-
pending->pending, inProgress->in_progress, completed->done, failed->done.
|
|
91
|
-
2. queue/*.json files (1827-1881).
|
|
92
|
-
|
|
93
|
-
The queue merge skips ids already present (1854 `any(t["id"] == tid ...)`), but
|
|
94
|
-
there is NO dedup WITHIN the dashboard-state groups themselves, and no
|
|
95
|
-
cross-column dedup. The real dashboard-state completed group already contains
|
|
96
|
-
iteration-1 x5 and iteration-13 (which is ALSO in the inProgress group). Result:
|
|
97
|
-
the same id renders as multiple cards, and iteration-13 appears in both the
|
|
98
|
-
in-progress and done columns simultaneously. In the React board these become
|
|
99
|
-
duplicate `key={task.id}` / dnd-kit sortable ids (TaskCard.tsx:24), which is a
|
|
100
|
-
correctness bug (duplicate keys, unstable drag).
|
|
101
|
-
|
|
102
|
-
Root of the id collision: iteration ids are `iteration-N` and N resets/repeats
|
|
103
|
-
across sub-runs, and completed.json is capped with `data[-50:]` (run.sh:6426)
|
|
104
|
-
which retains stale duplicate-id entries rather than replacing by id.
|
|
105
|
-
|
|
106
|
-
### 2D. iteration-13 leaks into completed while still in-progress
|
|
107
|
-
|
|
108
|
-
The completed group contains iteration-13 even though it is the active
|
|
109
|
-
in-progress card. Combined with 2C this is what puts one id in two columns.
|
|
110
|
-
The dedup fix (3C) resolves the display; the run.sh completed-writer dedup (3B)
|
|
111
|
-
resolves the source accumulation.
|
|
112
|
-
|
|
113
|
-
## 3. Recommended board model (honesty-first)
|
|
114
|
-
|
|
115
|
-
Recommendation: Option A now; defer Option B as a scoped follow-up. Do NOT ship
|
|
116
|
-
Option B (or C) in this patch.
|
|
117
|
-
|
|
118
|
-
Rationale (honesty + accuracy):
|
|
119
|
-
|
|
120
|
-
- Iterations that ran are real events. Making their done cards honest and
|
|
121
|
-
informative is truthful and low-risk.
|
|
122
|
-
- LITERAL Option A is a trap and must be avoided: `track_iteration_start`
|
|
123
|
-
borrows pending[0] for the title, and because prd stories never leave pending
|
|
124
|
-
(2B), pending[0] is ALWAYS prd-001. Carrying that borrowed PRD title forward
|
|
125
|
-
onto every done card would render 13+ done cards all titled
|
|
126
|
-
"server.js (single backend module)", implying server.js was built and
|
|
127
|
-
completed 13 times, when the checklist says it was never verified. That is the
|
|
128
|
-
same fake-green we reject for Option B, spread across the done column. So the
|
|
129
|
-
corrected Option A carries forward the REAL, iteration-scoped parts (logs,
|
|
130
|
-
phase, exit code, duration) and keeps an iteration-scoped title
|
|
131
|
-
("Iteration N complete - <phase>, exit 0"), NOT the borrowed PRD story title.
|
|
132
|
-
- Option B (reconcile prd pending -> done) requires a trustworthy per-story
|
|
133
|
-
completion signal. The only per-item truth signal is the checklist, keyed by
|
|
134
|
-
`be-001`/`api-001` item ids with NO stored `prd-NNN` link
|
|
135
|
-
(verified in checklist.json/verification-results.json). Mapping checklist ->
|
|
136
|
-
prd would require fuzzy title matching, which introduces inaccuracy
|
|
137
|
-
(mismatch -> fake-green or fake-red). Shipping a fuzzy reconciler in a patch
|
|
138
|
-
contradicts the high-accuracy mandate. On this run the correct verified signal
|
|
139
|
-
would move ZERO stories anyway (verified=0), so B delivers no value now and
|
|
140
|
-
carries real regression risk. Defer to a follow-up that either (a) stamps a
|
|
141
|
-
`prd-NNN` source id onto checklist items at generation time so the join is
|
|
142
|
-
exact, or (b) surfaces the checklist as its own honest progress panel instead
|
|
143
|
-
of mutating prd story status.
|
|
144
|
-
|
|
145
|
-
Net board after this patch: DONE shows honest iteration cards (informative
|
|
146
|
-
title + real logs, no empty modals); PENDING keeps the 12 prd stories
|
|
147
|
-
(truthful - none are verified-done); IN-PROGRESS shows the single active
|
|
148
|
-
iteration; no duplicate cards; no card in two columns.
|
|
149
|
-
|
|
150
|
-
## 4. Exact change set (per file, with line refs)
|
|
151
|
-
|
|
152
|
-
All engine (run.sh) edits are additive/corrective to the task-record shape only.
|
|
153
|
-
No trust-gate, verdict, or completion-council logic is touched.
|
|
154
|
-
|
|
155
|
-
### 4A. autonomy/run.sh - track_iteration_complete (6390-6444)
|
|
156
|
-
|
|
157
|
-
Change the completed-marker construction so it lifts the honest body from the
|
|
158
|
-
in-progress record BEFORE that record is removed.
|
|
159
|
-
|
|
160
|
-
- Before building task_json (currently 6400-6411), read the matching
|
|
161
|
-
`iteration-N` entry from in-progress.json (the file already read at 6432-6443
|
|
162
|
-
for removal). Capture its `logs`, `title`, `description`, `acceptance_criteria`,
|
|
163
|
-
`notes`, `startedAt`, `user_story`, `source`, `project` if present.
|
|
164
|
-
- Build the completed entry with:
|
|
165
|
-
- `title`: iteration-scoped and honest, e.g.
|
|
166
|
-
"Iteration N complete - <phase>" (exit 0) or
|
|
167
|
-
"Iteration N failed (exit <code>)" - derived from `$phase` (already computed
|
|
168
|
-
at 6355-6356) and `$exit_code`. Do NOT reuse the borrowed PRD story title
|
|
169
|
-
(see 3 rationale). If a truthful iteration description is wanted, synthesize
|
|
170
|
-
"Iteration N: <phase>, exit <code>, <duration>ms" from values already in
|
|
171
|
-
scope (`$phase`, `$exit_code`, `$duration_ms` at 6285).
|
|
172
|
-
- `logs`: the lifted logs array from the in-progress record (preserves the
|
|
173
|
-
real per-phase entries so the modal is populated).
|
|
174
|
-
- keep `type`, `status`, `completedAt`, `exitCode`, `provider` as today; add
|
|
175
|
-
`startedAt` (from in-progress) so the card can show duration.
|
|
176
|
-
- Do this with the same python-embedded approach already used at 6417-6429;
|
|
177
|
-
read in-progress inside that python block so it is atomic with the append.
|
|
178
|
-
- Dedup by id on write (see 4B) instead of blind append.
|
|
179
|
-
|
|
180
|
-
Keep the existing lock/atomic-write and the last-resort fallback shape so a
|
|
181
|
-
python-unavailable environment still writes a valid (if minimal) card.
|
|
182
|
-
|
|
183
|
-
### 4B. autonomy/run.sh - completed.json/failed.json dedup on write (6417-6429)
|
|
184
|
-
|
|
185
|
-
Replace the blind `data.append(...)` + `data[-50:]` (6424-6426) with a
|
|
186
|
-
replace-by-id upsert: drop any existing entry with the same `id`, append the
|
|
187
|
-
new one, then cap at 50. This stops the cross-sub-run iteration-N accumulation
|
|
188
|
-
(iteration-1 x5) at the source. Failed.json (same writer, target chosen at
|
|
189
|
-
6414-6415) gets the same upsert.
|
|
190
|
-
|
|
191
|
-
Note: also prevents an id being simultaneously in completed and failed (real
|
|
192
|
-
data has iteration-1 in both). Upsert-by-id in the chosen target plus removal
|
|
193
|
-
from the other target (add a small removal of `id` from the non-target file)
|
|
194
|
-
makes completed/failed mutually exclusive per id.
|
|
195
|
-
|
|
196
|
-
### 4C. dashboard/server.py - /api/tasks global dedup (1780-1914)
|
|
197
|
-
|
|
198
|
-
Add a single global dedup pass keyed by id with column priority so one id yields
|
|
199
|
-
exactly one card, and it lands in the most-active column:
|
|
200
|
-
|
|
201
|
-
- Priority order: in_progress > review > pending > done. (in_progress beats done
|
|
202
|
-
so iteration-13-in-both resolves to the in-progress card; pending beats done
|
|
203
|
-
is irrelevant here but keeps a story that is both queued and archived in the
|
|
204
|
-
live column.)
|
|
205
|
-
- Implementation: keep a dict keyed by id while appending; when a duplicate id
|
|
206
|
-
arrives, keep the entry whose status has higher priority, and if equal
|
|
207
|
-
priority prefer the one with a non-empty description/logs (richer wins). Apply
|
|
208
|
-
this across BOTH the dashboard-state pass (1796-1823) and the queue pass
|
|
209
|
-
(1850-1879), replacing the current one-directional skip at 1854.
|
|
210
|
-
- Return `list(dict.values())` (or rebuild all_tasks from the dict) at 1906
|
|
211
|
-
before the project_id/status filters, preserving current ordering by
|
|
212
|
-
first-seen where possible.
|
|
213
|
-
|
|
214
|
-
Backward compatibility: the response is still a JSON array of the same
|
|
215
|
-
task-entry shape (same keys as today at 1808-1822 and 1856-1878). No field is
|
|
216
|
-
removed or renamed. Consumers see fewer/deduped items and populated
|
|
217
|
-
description/logs on done cards. This is strictly a correctness improvement to an
|
|
218
|
-
existing shape - compatible.
|
|
219
|
-
|
|
220
|
-
### 4D. dashboard/frontend - defense-in-depth (optional, low risk)
|
|
221
|
-
|
|
222
|
-
The React TaskCard already guards empty description (TaskCard.tsx:129-133) and
|
|
223
|
-
renders title from `task.title` (124-126); the empty cards are a DATA problem
|
|
224
|
-
fixed by 4A/4C, so no functional SPA change is required. Optional hardening:
|
|
225
|
-
|
|
226
|
-
- TaskModal.tsx: when a task has neither description nor logs nor
|
|
227
|
-
acceptance_criteria, render an explicit honest placeholder
|
|
228
|
-
("No details recorded for this iteration.") instead of an empty modal body.
|
|
229
|
-
This is a safety net for any legacy/thin records still on disk from before the
|
|
230
|
-
patch.
|
|
231
|
-
- No change to api.ts transformTask (api.ts:41-56) or types.ts is needed; the
|
|
232
|
-
status enum already covers done/in_progress/pending.
|
|
233
|
-
|
|
234
|
-
Prefer to include 4D TaskModal placeholder (small, defensive) but keep it out of
|
|
235
|
-
scope if the patch must be minimal - 4A/4C alone fix the reported bug.
|
|
236
|
-
|
|
237
|
-
## 5. Dedup correctness argument
|
|
238
|
-
|
|
239
|
-
- Source (run.sh): 4B upsert-by-id makes completed.json / failed.json contain at
|
|
240
|
-
most one entry per iteration id, and mutual exclusion across the two files.
|
|
241
|
-
- API (server.py): 4C global id-dedup with column priority guarantees each id
|
|
242
|
-
appears in exactly one column. iteration-13 (currently in inProgress state
|
|
243
|
-
group AND completed queue) collapses to the in_progress card because
|
|
244
|
-
in_progress outranks done. The 5x iteration-1 collapses to one done card.
|
|
245
|
-
- Result on the anonima fixture: 43 -> ~26 unique cards (12 pending + 1
|
|
246
|
-
in_progress + ~13 unique iteration done cards), zero duplicate ids, zero
|
|
247
|
-
cross-column duplication, zero empty-body done cards.
|
|
248
|
-
|
|
249
|
-
## 6. Test plan
|
|
250
|
-
|
|
251
|
-
### 6A. pytest for /api/tasks (primary)
|
|
252
|
-
|
|
253
|
-
Add a test module under the dashboard test suite (co-locate with existing
|
|
254
|
-
server/API tests; confirm the exact dir during implementation, e.g.
|
|
255
|
-
dashboard/tests/ or tests/). Build a fixture .loki dir mirroring anonima:
|
|
256
|
-
|
|
257
|
-
- dashboard-state.json .tasks with: pending = 12 prd-NNN rich stories;
|
|
258
|
-
inProgress = [iteration-13 rich, borrowed prd title]; completed = duplicate
|
|
259
|
-
iteration-1..13 thin markers INCLUDING iteration-13 (to reproduce cross-column
|
|
260
|
-
leak); failed = [iteration-14 thin, iteration-1 thin].
|
|
261
|
-
- queue/completed.json + queue/pending.json mirroring the same.
|
|
262
|
-
|
|
263
|
-
Assertions:
|
|
264
|
-
1. No done-column card has an empty title AND empty description AND empty logs
|
|
265
|
-
(no empty modal payloads). After the fix, done iteration cards carry logs.
|
|
266
|
-
2. Every returned id is unique (len(ids) == len(set(ids))).
|
|
267
|
-
3. iteration-13 appears exactly once, with status in_progress (column-priority
|
|
268
|
-
rule).
|
|
269
|
-
4. All 12 prd-NNN remain in pending (no fake-green: none promoted to done).
|
|
270
|
-
5. Counts: done has one card per unique completed/failed iteration id; no
|
|
271
|
-
duplicates.
|
|
272
|
-
6. Backward-compat: response is a list; each entry still has id/title/
|
|
273
|
-
description/status/priority/type keys.
|
|
274
|
-
|
|
275
|
-
Add a focused unit-style test for the dedup helper (column-priority + richer-
|
|
276
|
-
wins) if it is factored into a function.
|
|
277
|
-
|
|
278
|
-
### 6B. run.sh completed-writer test (shell/behavioral)
|
|
279
|
-
|
|
280
|
-
If the shell test harness supports it (see scripts/local-ci.sh 14/14 dual-route
|
|
281
|
-
suite), add a case that: seeds an in-progress.json with a rich iteration-N record
|
|
282
|
-
(title/desc/logs), calls track_iteration_complete N 0, then asserts the resulting
|
|
283
|
-
completed.json entry (a) has a non-empty logs array carried from in-progress,
|
|
284
|
-
(b) has an honest iteration-scoped title (not "Iteration N" empty-body, not the
|
|
285
|
-
borrowed PRD story title), and (c) contains no duplicate id after two calls with
|
|
286
|
-
the same N (upsert). Keep it provider-agnostic and offline.
|
|
287
|
-
|
|
288
|
-
### 6C. Playwright screenshot of the board
|
|
289
|
-
|
|
290
|
-
Capture :57375/#section=overview against the fixture-backed dashboard (or the
|
|
291
|
-
anonima state) after the fix: assert the DONE column cards show titles + preview
|
|
292
|
-
text (not bare "Iteration N"), clicking a done card opens a populated modal, and
|
|
293
|
-
no card ID is visually duplicated across columns. Store under
|
|
294
|
-
artifacts/<release>-screens/ per CLAUDE.md:227.
|
|
295
|
-
|
|
296
|
-
## 7. Disjoint build lanes
|
|
297
|
-
|
|
298
|
-
Two independent lanes (can be done in parallel, no shared edit region):
|
|
299
|
-
|
|
300
|
-
- Lane 1 (engine): autonomy/run.sh 6390-6444 (completed writer + upsert). Owner
|
|
301
|
-
must respect: additive/corrective to record shape only; no trust/verdict/
|
|
302
|
-
council logic; no version bump/commit; no emoji/em-dash.
|
|
303
|
-
- Lane 2 (dashboard): dashboard/server.py /api/tasks 1780-1914 (global dedup) +
|
|
304
|
-
optional dashboard/frontend TaskModal.tsx placeholder.
|
|
305
|
-
|
|
306
|
-
Lane 3 (tests, after 1+2): pytest fixture (6A), optional shell test (6B),
|
|
307
|
-
Playwright shot (6C).
|
|
308
|
-
|
|
309
|
-
Sequencing: Lane 1 and Lane 2 are independent and each independently improves
|
|
310
|
-
the board; the API dedup (Lane 2) also protects against any not-yet-fixed thin
|
|
311
|
-
records, so it can ship even if Lane 1 slips. Tests depend on both.
|
|
312
|
-
|
|
313
|
-
## 8. Patch release steps (per CLAUDE.md)
|
|
314
|
-
|
|
315
|
-
- Version: current 7.104.1 (VERSION, package.json, CLAUDE.md:306, SKILL.md
|
|
316
|
-
header+footer, plugins/loki-mode/.claude-plugin/plugin.json, wiki/Home.md,
|
|
317
|
-
wiki/_Sidebar.md, docs/INSTALLATION.md - grep "7.104.1" for the full set).
|
|
318
|
-
Bump PATCH -> 7.104.2 in ALL of these (CLAUDE.md:301 mandates header AND footer
|
|
319
|
-
for SKILL.md).
|
|
320
|
-
- CHANGELOG.md: add a new "## [7.104.2] - <date>" section above 7.104.1 with a
|
|
321
|
-
fix entry describing honest iteration done cards + /api/tasks dedup + no
|
|
322
|
-
fake-green prd promotion. (Currently "## [Unreleased]" is "(none)".)
|
|
323
|
-
- Pre-push gate (MANDATORY, CLAUDE.md:318-330): run
|
|
324
|
-
`bash scripts/local-ci.sh` on this Mac; do not push if it says DO NOT PUSH.
|
|
325
|
-
- Commit protocol (CLAUDE.md:290-296): show git diff --stat, stage files
|
|
326
|
-
individually by name (never git add -A), STOP and wait for user approval
|
|
327
|
-
before commit. This plan does not commit.
|
|
328
|
-
- Post-release distribution validation (CLAUDE.md:332-334): npm pack + Docker
|
|
329
|
-
pull smoke of the shipped version.
|
|
330
|
-
|
|
331
|
-
## 9. Open questions
|
|
332
|
-
|
|
333
|
-
1. Done-card title wording: "Iteration N complete - <phase>" vs
|
|
334
|
-
"Iteration N: <phase>, exit 0, <duration>ms". Pick the clearest; both avoid
|
|
335
|
-
the borrowed PRD title. Founder preference?
|
|
336
|
-
2. Should failed iterations render in the done column (current mapping
|
|
337
|
-
failed->done) or a distinct failed column? Out of scope for this patch;
|
|
338
|
-
current behavior preserved. Note for follow-up.
|
|
339
|
-
3. Follow-up (Option B) design: stamp `prd-NNN` source id onto checklist items
|
|
340
|
-
at generation so checklist->story is an exact join, versus surfacing the
|
|
341
|
-
checklist as a separate honest progress panel. Decide before building B.
|
|
342
|
-
4. Exact dashboard test directory + whether a shell harness case for
|
|
343
|
-
track_iteration_complete is supported by scripts/local-ci.sh - confirm at
|
|
344
|
-
implementation time.
|
|
345
|
-
5. Should the API dedup also collapse the stale duplicate ids already persisted
|
|
346
|
-
in old on-disk state (one-time migration), or is display-time dedup
|
|
347
|
-
sufficient? Recommend display-time only (no destructive migration in a patch).
|
|
348
|
-
|
|
349
|
-
## 10. Critical files for implementation
|
|
350
|
-
|
|
351
|
-
- /Users/lokesh/git/loki-tasklist-wt/autonomy/run.sh (track_iteration_complete 6276-6455; track_iteration_start 5370-5569; append_iteration_log 5013-5072; write_dashboard_state 5078-5118)
|
|
352
|
-
- /Users/lokesh/git/loki-tasklist-wt/dashboard/server.py (/api/tasks 1772-1914)
|
|
353
|
-
- /Users/lokesh/git/loki-tasklist-wt/dashboard/frontend/src/components/TaskModal.tsx (optional empty-body placeholder)
|
|
354
|
-
- /Users/lokesh/git/loki-tasklist-wt/CHANGELOG.md (patch entry)
|
|
355
|
-
- /Users/lokesh/git/loki-tasklist-wt/VERSION and package.json (patch bump; plus SKILL.md/CLAUDE.md/plugin.json version strings)
|
package/docs/TOP-100-BACKLOG.md
DELETED
|
@@ -1,159 +0,0 @@
|
|
|
1
|
-
# Loki + Autonomi: Top-100 Backlog (Master Plan)
|
|
2
|
-
|
|
3
|
-
Generated 2026-07-01 by the top100-backlog-enumeration ultracode workflow (7 agents, 116 raw items -> 100 ranked). North star: easiest to integrate with anyone; ranked by leverage toward zero-friction adoption, modularization, enterprise-grade, and scale.
|
|
4
|
-
|
|
5
|
-
## Themes
|
|
6
|
-
- Trust and correctness bugs (data-loss, cross-tenant, fake-green safety)
|
|
7
|
-
- Autonomi Verify productization (stub -> shipped: gate/council/cost/sign wiring)
|
|
8
|
-
- Zero-friction adoption (reduce user setup and error surface)
|
|
9
|
-
- Modularization (extract libraries, break monoliths, fix import boundaries)
|
|
10
|
-
- Enterprise-scale and multi-tenant (RBAC/SSO/persistence/sandbox, mostly founder-gated)
|
|
11
|
-
- autonomi-saas evidence and proof pipeline (receipt phases, correlation, worker cutover)
|
|
12
|
-
- CI, test, and distribution hardening (coverage, unreachable tests, publish gates)
|
|
13
|
-
- Runtime-agnostic and Bun migration (bash sunset, write-path port)
|
|
14
|
-
|
|
15
|
-
## Legend
|
|
16
|
-
- **gate**: autonomous (I execute) | founder-gated (prep to one-approval-away) | community
|
|
17
|
-
- **effort**: S/M/L/XL | **value**: critical/high/medium/low
|
|
18
|
-
|
|
19
|
-
## Full ranked list
|
|
20
|
-
|
|
21
|
-
| # | value | eff | gate | area | item |
|
|
22
|
-
|---|---|---|---|---|---|
|
|
23
|
-
| 1 | critical | S | autonomous | engine | run.sh self-delete EXIT trap nukes canonical source on LOKI_RUNNING_FROM_TEMP |
|
|
24
|
-
| 2 | critical | M | autonomous | saas | autonomi-saas proof correlation: cross-tenant leak + stuck-Building fix (per-build run_id) |
|
|
25
|
-
| 3 | critical | XL | founder-gated | verify | Verify: verifyCompletion() stub throws not-implemented (wire gate->integrity->council->cost->sign pipeline) |
|
|
26
|
-
| 4 | critical | M | founder-gated | verify | Verify: npm @autonomi/verify unpublishable (private:true, no exports/types/build, .ts bin, undeclared zod) |
|
|
27
|
-
| 5 | critical | S | founder-gated | saas | Verify: BUSL-1.1 vs open licensing undecided (blocks hosted/commercial launch) |
|
|
28
|
-
| 6 | critical | M | founder-gated | saas | Verify: hosted /verify REST API not deployed (Node entry + Dockerfile + serve script + persistent signing key) |
|
|
29
|
-
| 7 | critical | M | autonomous | modularization | Verify: extract verification-core library (port council_evidence_gate to TS) |
|
|
30
|
-
| 8 | critical | S | autonomous | verify | Verify: 5 deterministic gates parity with completion-council.sh (staged, verify + ship) |
|
|
31
|
-
| 9 | critical | S | autonomous | saas | autonomi-saas anti-fake-green safety: verdict strictly from engine honesty.headline (verify + guard) |
|
|
32
|
-
| 10 | critical | M | autonomous | saas | autonomi-saas VS-7 worker cutover: BFF enqueues, worker sole executor (verify live e2e) |
|
|
33
|
-
| 11 | high | M | founder-gated | verify | Signed neutral records on SDK/MCP path (verifyCompletion returns UNSIGNED_SENTINEL; only REST signs) |
|
|
34
|
-
| 12 | medium | S | autonomous | verify | Verify: fix embed import boundary (review/* drags LLM council into offline core; refresh regresses) |
|
|
35
|
-
| 13 | high | S | founder-gated | verify | Verify: resolve naming collision (loki-vaas vs loki-verify bin vs loki verify subcommand) |
|
|
36
|
-
| 14 | critical | L | founder-gated | engine | Sandbox backend implementation (createSandbox throws; choose gVisor/Firecracker/Kata) |
|
|
37
|
-
| 15 | critical | XL | founder-gated | enterprise | Enterprise RBAC / SSO / API-key auth / metering (hosted + on-prem control plane) |
|
|
38
|
-
| 16 | high | L | founder-gated | enterprise | On-prem persistence backend interface + first prod store (Postgres/SQLite) |
|
|
39
|
-
| 17 | high | S | autonomous | engine | base_unreachable signal in ObservedDiff (suppress empty_diff false-block once sandbox lands) |
|
|
40
|
-
| 18 | high | M | founder-gated | engine | Real Anthropic LLM provider wiring for production verify (council against live model) |
|
|
41
|
-
| 19 | high | M | founder-gated | verify | Verify: LLM council wired into default verdict path (module exists, verifyCompletion stub does not invoke) |
|
|
42
|
-
| 20 | high | S | autonomous | engine | Signed verification records + ed25519 audit trail (staged, verify + ship) |
|
|
43
|
-
| 21 | high | M | autonomous | verify | Golden-output conformance corpus for byte-identical CLI-invariance across implementations |
|
|
44
|
-
| 22 | high | M | autonomous | engine | Code review gate: run 3 parallel reviewers (currently single-reviewer path) |
|
|
45
|
-
| 23 | high | S | founder-gated | saas | HTTP /verify endpoint production wiring (handler complete, README lists as planned) |
|
|
46
|
-
| 24 | high | S | autonomous | saas | MCP verify tools (verify_completion, run_evidence_gate) wiring + distribution (staged) |
|
|
47
|
-
| 25 | high | M | community | test | Memory failure-loop (FAILURE_MEMORY) persistence bug (strict-xfail; recency read incomplete) |
|
|
48
|
-
| 26 | high | XL | autonomous | engine | Bun runtime Phase 2: migrate write-path commands (feat/bun-migration) |
|
|
49
|
-
| 27 | high | M | autonomous | cli | Bash runtime sunset (loki run-shell removal, Phase 6, after clean soak) |
|
|
50
|
-
| 28 | high | M | community | saas | autonomi-saas Evidence Receipt Phase 2: screenshot capture + BFF stream route (in progress) |
|
|
51
|
-
| 29 | high | M | community | saas | autonomi-saas Evidence Receipt Phase 3: test results from engine workspace |
|
|
52
|
-
| 30 | high | L | autonomous | saas | autonomi-saas Cost tab + budget-breaker UX (web + enforcement audit) |
|
|
53
|
-
| 31 | high | S | community | saas | autonomi-saas BFF overlays stored saas_evidence onto engine proof (verify) |
|
|
54
|
-
| 32 | medium | M | founder-gated | saas | E4 no-server run output capture for CLI/library builds (bounded inline + artifact) |
|
|
55
|
-
| 33 | high | M | autonomous | dashboard | Prompt Optimizer: wire real LLM-as-judge (currently heuristic-only) |
|
|
56
|
-
| 34 | high | M | community | engine | Cost-honesty check implementation (normalizeModel + quote==dispatched) |
|
|
57
|
-
| 35 | high | S | community | saas | POST /cost-honesty API handler (blocked on cost core) |
|
|
58
|
-
| 36 | critical | L | founder-gated | saas | Hosted metered runner with per-verification container sandbox |
|
|
59
|
-
| 37 | high | M | community | ci | CI parity-matrix flake root-cause (state cooldown after test-cli-commands.sh) |
|
|
60
|
-
| 38 | high | M | community | ci | Post-release smoke sign-off gate before npm/Docker go public |
|
|
61
|
-
| 39 | high | M | community | test | Document the 3 pre-existing failing shell tests (no public known-failures list) |
|
|
62
|
-
| 40 | medium | S | autonomous | dashboard | PR #178: dashboard memory summary reports 0 on JSON-backed projects |
|
|
63
|
-
| 41 | high | M | community | test | ARM64 runtime verification (emulation-only in CI; needs real Apple Silicon run) |
|
|
64
|
-
| 42 | high | XL | founder-gated | saas | Multi-tenant sandbox backend (gVisor/Firecracker/Kata) selection spike |
|
|
65
|
-
| 43 | critical | L | community | test | Real provider end-to-end tests (cost + secrets + duration make CI-unreachable) |
|
|
66
|
-
| 44 | high | XL | founder-gated | enterprise | Enterprise deploy: object-store sync + queue fleet modes + #691 --config loader |
|
|
67
|
-
| 45 | high | M | founder-gated | enterprise | Compliance scanner (loki-verify) converged as module in trust-layer SKU |
|
|
68
|
-
| 46 | high | L | founder-gated | saas | GitHub App verification integration (webhook wrapper, greenfield) |
|
|
69
|
-
| 47 | high | L | community | test | Long-duration stress tests (leak/queue-churn) unreachable in CI |
|
|
70
|
-
| 48 | medium | L | community | saas | autonomi-saas Evidence Receipt Phase 4: clip + full test-log streaming + build_artifacts table |
|
|
71
|
-
| 49 | high | XL | community | test | SWE-bench Pro 119 resume (paused 35/119) |
|
|
72
|
-
| 50 | medium | M | autonomous | engine | Multi-reviewer completion council option in hosted verify (council:true dropped today) |
|
|
73
|
-
| 51 | medium | M | autonomous | engine | Integrity detectors (mock-only, tautological, test-weakening) wired into evidence block |
|
|
74
|
-
| 52 | medium | S | community | test | Bun test coverage threshold enforcement on branches (70% baseline exists) |
|
|
75
|
-
| 53 | medium | L | autonomous | dashboard | Dashboard mid-run steering / builder control (mid-flight model switch exists, broader control deferred) |
|
|
76
|
-
| 54 | medium | S | community | test | Dashboard static-asset freshness gate in local-ci (like loki-ts/dist) |
|
|
77
|
-
| 55 | medium | L | community | test | Windows/WSL runtime verification (no Windows CI runner) |
|
|
78
|
-
| 56 | low | M | autonomous | cli | KPI reporting (loki report kpis) on bash legacy route (Bun-only today) |
|
|
79
|
-
| 57 | medium | M | autonomous | cli | Voice mode (Issue #85) |
|
|
80
|
-
| 58 | medium | M | community | test | Mutation testing (stryker) workflow re-enable + fix stale 5-provider assertions |
|
|
81
|
-
| 59 | medium | XL | founder-gated | engine | Managed Agents multiagent path (LOKI_EXPERIMENTAL_MANAGED_*, research preview) |
|
|
82
|
-
| 60 | low | M | autonomous | engine | Sentrux iteration-loop auto-gating (manual-only today) |
|
|
83
|
-
| 61 | medium | S | founder-gated | adoption | npm registry publish prep for @autonomi/verify SDK (distribution wiring) |
|
|
84
|
-
| 62 | low | M | founder-gated | adoption | Disclosed default-on PostHog telemetry (Phase L, blocked + deferred) |
|
|
85
|
-
| 63 | medium | S | community | saas | MCP check_cost_honesty tool registration (deferred until cost core lands) |
|
|
86
|
-
| 64 | medium | L | founder-gated | dashboard | Hosted dashboard with shareable verification badges |
|
|
87
|
-
| 65 | medium | M | founder-gated | adoption | MCP registry submission + Glama claim + awesome-list PRs |
|
|
88
|
-
| 66 | medium | M | autonomous | saas | autonomi-saas UI/UX pass: build-watching pane + finished cues from trust verdict |
|
|
89
|
-
| 67 | medium | XL | autonomous | dashboard | Server.py route modularization (~10K-line monolith, no domain separation) |
|
|
90
|
-
| 68 | medium | L | autonomous | dashboard | Large legacy-ui components modularization (5 files 1K-1.9K lines) |
|
|
91
|
-
| 69 | medium | L | founder-gated | engine | Wave-13 deferred trust fixes + PRD-reuse spurious-update design fix |
|
|
92
|
-
| 70 | medium | M | community | dashboard | Dashboard dark-toggle iframe theme not following SPA (harness/product parity) |
|
|
93
|
-
| 71 | medium | M | community | ci | Sonnet-5 calibration follow-ups: test-verify --hosted + gate missing-tool handling |
|
|
94
|
-
| 72 | medium | S | community | ci | Integrity audit (SBOM/provenance) blocking on publish (currently informational) |
|
|
95
|
-
| 73 | medium | S | community | distribution | Python SDK version pre-check before publish (mismatch risk if publish fails post-tag) |
|
|
96
|
-
| 74 | medium | S | community | ci | Docker buildx early-detection for uncommitted loki-ts/dist (silent COPY failure risk) |
|
|
97
|
-
| 75 | medium | S | community | ci | loki-enterprise workflow enabled in main CI (dispatch-only today) |
|
|
98
|
-
| 76 | medium | S | community | distribution | Brew tap real-install verification on clean macOS host post-release |
|
|
99
|
-
| 77 | low | L | founder-gated | perf | Horizontal scaling / distributed rate-limit + persistence (in-memory today) |
|
|
100
|
-
| 78 | low | S | community | saas | Optional build_artifacts table for enumeration/lifecycle/reaping (deferred) |
|
|
101
|
-
| 79 | medium | S | community | saas | Headless browser (playwright-core) dep + Docker image size cap for screenshot capture |
|
|
102
|
-
| 80 | low | M | community | engine | Wave-8/9 deferred tail: spawn_timeout removal, heredoc guards, MED/LOW findings |
|
|
103
|
-
| 81 | medium | L | community | adoption | v7.19.1 traction: uncertainty-gated escalation + shareable proof + integrate 8 tutorials |
|
|
104
|
-
| 82 | medium | M | autonomous | verify | Benchmarks HumanEval/SWE-bench: publish results (runners + datasets exist) |
|
|
105
|
-
| 83 | low | S | autonomous | cli | loki run removal (deprecated alias for loki start, next major) |
|
|
106
|
-
| 84 | low | S | autonomous | cli | Fable model tier wiring (collapses to Opus until API-available) |
|
|
107
|
-
| 85 | low | S | community | distribution | Homepage/blog release update automation (Slack-notify-only today) |
|
|
108
|
-
| 86 | low | S | community | distribution | Wiki-sync scheduled trigger (manual/dispatch only, skips without API key) |
|
|
109
|
-
| 87 | low | L | autonomous | dashboard | Dashboard React app: implement four stub views (experimental app) |
|
|
110
|
-
| 88 | low | S | community | test | Embeddings edge-case tests run without numpy (skip today) |
|
|
111
|
-
| 89 | low | S | community | test | Hybrid-search test runs without chromadb skip |
|
|
112
|
-
| 90 | low | S | community | test | PID-recycling test platform-portability (ps lstart skip for pid 1) |
|
|
113
|
-
| 91 | low | S | community | test | Cloud integration tests (aider-cloud) run in a credentialed gated job |
|
|
114
|
-
| 92 | low | S | community | test | Sentrux real-binary nightly promoted from best-effort to tracked |
|
|
115
|
-
| 93 | low | S | community | test | Model-catalog probe: surface staleness in tests (issue-create skipped without admin scope) |
|
|
116
|
-
| 94 | low | S | community | test | Phase 6 readiness check re-enable (cron disabled; issues disabled on repo) |
|
|
117
|
-
| 95 | low | S | community | distribution | TS/Bun SDK (@loki-mode/sdk) discoverability from main package/docs |
|
|
118
|
-
| 96 | low | S | community | distribution | Docker Hub description update resilience (PAT scope failures non-blocking) |
|
|
119
|
-
| 97 | low | S | community | distribution | VS Code extension: keep source marked deprecated, not silently removed |
|
|
120
|
-
| 98 | low | S | autonomous | dashboard | Web-app docs: fill video placeholder (coming-soon text) |
|
|
121
|
-
| 99 | low | M | autonomous | cli | C# provider support (roslyn analyzers + dotnet build, deferred) |
|
|
122
|
-
| 100 | low | XL | founder-gated | engine | BMAD-METHOD v6 integration (net-new, needs founder planning) |
|
|
123
|
-
|
|
124
|
-
## Gate split (what can actually close autonomously) - 2026-07-01
|
|
125
|
-
|
|
126
|
-
The /goal asks to work through all 100. The honest structural reality: only a
|
|
127
|
-
subset is autonomously completable. The rest need a founder decision or are
|
|
128
|
-
community/CI-infra work that cannot be forced from this session.
|
|
129
|
-
|
|
130
|
-
- **Autonomous (I can execute end-to-end): ~25 items** (the `gate=autonomous` rows).
|
|
131
|
-
- **Founder-gated (blocked on a decision only the founder can make): ~35 items.**
|
|
132
|
-
Licensing (#5), hosted deploy target (#6, #23, #36), enterprise RBAC/SSO (#15),
|
|
133
|
-
sandbox backend choice (#14, #42), spend (#49 SWE-bench, #18 live-model), npm
|
|
134
|
-
publish + brand (#4, #13, #61), telemetry (#62), GitHub App (#46). Prepped to
|
|
135
|
-
one-approval-away where possible; CANNOT close without the founder.
|
|
136
|
-
- **Community / CI-infra (~40 items):** flake root-causes, coverage thresholds,
|
|
137
|
-
platform runners (ARM64/Windows), distribution resilience. Environmental
|
|
138
|
-
hardening, not single-session feature work.
|
|
139
|
-
|
|
140
|
-
### Shipped this session (accuracy-moat, from the competitive gap-analysis)
|
|
141
|
-
|
|
142
|
-
Net-new accuracy work driven from docs/research-2026-07/gap-analysis-backlog.json
|
|
143
|
-
(a companion list), NOT retroactive Top-100 claims:
|
|
144
|
-
|
|
145
|
-
- v7.105.0 - convergence: council evaluates on completion-claim (4.0x faster, n=3). commit b8a368a0.
|
|
146
|
-
- v7.106.0 - reverse-classical test provenance (tautological tests downgraded). commit 71299faa.
|
|
147
|
-
- v7.107.0 - loki mcp --transport http loopback bind + bearer auth (+ latent crash fix). commit f3aa523c.
|
|
148
|
-
- v7.108.0 - runtime boot smoke gate + annotate-before-act expectation ledger. commit 806fc374.
|
|
149
|
-
|
|
150
|
-
### Top-100 items with a concrete shipped commit
|
|
151
|
-
|
|
152
|
-
- #40 (dashboard memory summary on JSON-backed projects) - commit 330de52d.
|
|
153
|
-
- #22 (3 parallel code reviewers) - already present in the engine (council path).
|
|
154
|
-
|
|
155
|
-
### Next autonomous batch (by value, unblocked, user-visible)
|
|
156
|
-
|
|
157
|
-
Picked from the `autonomous` rows by value + real-user impact (not primitives that
|
|
158
|
-
ship dormant). Verify each before starting; several may overlap the already-built
|
|
159
|
-
private autonomi-verify TS engine (e.g. #7/#8 - check before rebuilding).
|