Update implementation plan status

This commit is contained in:
Georg Bauer
2026-07-25 09:31:55 +02:00
parent 2fbe605b5d
commit 19fe61fc21

48
PLAN.md
View File

@@ -12,15 +12,15 @@ sessions, tools, and turn orchestration.
| Area | Status | Available now | Still open | | Area | Status | Available now | Still open |
| --- | --- | --- | --- | | --- | --- | --- | --- |
| App shell | Implemented | Native multi-window Iced app, Codex-inspired layout, Chat/Stats segmented workspace, native Application/Edit/Window menus, Preferences panel, Model Manager, and streaming composer | Native app release packaging | | App shell | Implemented | Native multi-window Iced app, Codex-inspired layout, Chat/Stats segmented workspace, native Application/Edit/Window menus, Preferences panel, Model Manager, streaming composer, and an ad-hoc-signed development `.app` bundle | Production signing, hardened runtime, entitlements, notarization, and update delivery |
| Projects and sessions | Implemented with transcripts and KV resume | Native folder picker, project-name dialog, create/select/delete projects and sessions, durable structured chat history, and per-session KV checkpoints | Rename/archive and model binding | | Projects and sessions | Implemented with transcripts and KV resume | Native folder picker, project-name dialog, create/select/delete projects and sessions, durable structured chat history, and per-session KV checkpoints | Rename/archive and model binding |
| Persistence | Implemented for local chat | SQLite in Application Support, Diesel ORM, embedded migrations, constrained defaults, streamed message updates, reopen tests, context/speed state, and local KV rehydration | Downloaded-artifact metadata and session-runtime migrations; HTTP chats deliberately never enter SQLite | | Persistence | Implemented for local chat | SQLite in Application Support, Diesel ORM, embedded migrations, constrained defaults, streamed message updates, reopen tests, context/speed state, and local KV rehydration | Downloaded-artifact metadata and session-runtime migrations; HTTP chats deliberately never enter SQLite |
| Model runtime | DeepSeek Flash decode and batched prefill implemented | Rust-owned mmap/model/session graph, local Metal kernels, full configured sparse context, exact absolute-position chunk scheduling, cold and resumed layer-major prefill (including unaligned compressor/indexer frontiers), DS4 sampling, one process-wide UI/HTTP owner, cancellation, idle unloading, prefix continuation, KV checkpoint save/load, and lock-free runtime metrics | Remaining KV continuation/rewrite parity, DSpark/SSD/steering, GLM/Pro execution, and sampled per-kernel GPU timing if coarse phase metrics prove insufficient | | Model runtime | DeepSeek Flash decode and batched prefill implemented | Rust-owned mmap/model/session graph, local Metal kernels, full configured sparse context, exact absolute-position chunk scheduling, cold and resumed layer-major prefill (including unaligned compressor/indexer frontiers), DS4 sampling, one process-wide UI/HTTP owner, cancellation, idle unloading, prefix continuation, KV checkpoint save/load, and lock-free runtime metrics | Remaining KV continuation/rewrite parity, DSpark/SSD/steering, GLM/Pro execution, and sampled per-kernel GPU timing if coarse phase metrics prove insufficient |
| Local endpoint | Exact parity in progress | Configurable localhost listener, verified-on-disk model discovery, transient Chat/Completions/Messages/Responses routes, native JSON/SSE envelopes, exact tool schema/call/result replay, live tool continuation, and differential C/Rust fixtures for tool use, cache accounting, reasoning, cold 6k-token prefill, resumed unaligned prefill, and real Pi tool execution | Remaining `ds4_server.c` parser/tool recovery, KV-store policy, disconnect/cancellation, scheduling/lifecycle, and error/context-limit fixtures; enable/disable controls | | Local endpoint | Exact parity in progress | Configurable localhost listener, verified-on-disk model discovery, transient Chat/Completions/Messages/Responses routes, native JSON/SSE envelopes, exact tool schema/call/result replay, live tool continuation, canonical/short/plain DSML recovery, strict Responses replay validation, and differential C/Rust fixtures for tool use, cache accounting, reasoning, cold 6k-token prefill, resumed unaligned prefill, and real Pi tool execution | Remaining malformed-tool repair/error fallbacks, full KV-store policy, disconnect/cancellation, scheduling/lifecycle, and error/context-limit fixtures; enable/disable controls |
| Agent | Solid local chat implemented | Multi-turn role rendering, structured reasoning disclosure, Markdown, automatic scrolling, context/speed display, durable transcript rehydration, KV-backed resume, and a live Stats dashboard | Tools, approvals, and compaction | | Agent | Solid local chat implemented | Multi-turn role rendering, structured reasoning disclosure, Markdown, automatic scrolling, context/speed display, durable transcript rehydration, KV-backed resume, and a live Stats dashboard | Tools, approvals, and compaction |
| A2UI | Future extension | bDS2 provides the reference structured render-tool contract | Native inline surfaces for local chat after core chat and tools are stable | | A2UI | Future extension | bDS2 provides the reference structured render-tool contract | Native inline surfaces for local chat after core chat and tools are stable |
| Dev brain | Not started | No vault access | Obsidian vault selection, durable access, and agent knowledge/memory tools | | Dev brain | Not started | No vault access | Obsidian vault selection, durable access, and agent knowledge/memory tools |
| Release | Not started | Development binary builds and tests | `.app` packaging, signing, entitlements, and notarization | | Release | Development bundle implemented | Release-mode `.app` packaging and ad-hoc code signing run through `make bundle` as a commit gate | Distribution identity/signing, hardened runtime, entitlements, notarization, update delivery, and release automation |
The application manages durable project/session metadata and model preferences. The application manages durable project/session metadata and model preferences.
Its Model Manager downloads, validates, and deletes managed GGUF artifacts Its Model Manager downloads, validates, and deletes managed GGUF artifacts
@@ -33,8 +33,8 @@ attention, fixed-size cold/resumed batch chunks, unaligned compressor/indexer
continuation, and durable local KV checkpoints. The shared HTTP service exposes continuation, and durable local KV checkpoints. The shared HTTP service exposes
every `ds4_server.c` route and passes the initial differential corpus for native every `ds4_server.c` route and passes the initial differential corpus for native
tool use/continuation, cache accounting, reasoning, and Pi execution. Full tool use/continuation, cache accounting, reasoning, and Pi execution. Full
reference parity remains in progress until the remaining parser, KV-store, reference parity remains in progress until malformed-output recovery, KV-store,
cancellation, scheduling, and error fixtures are ported. cancellation, scheduling, lifecycle, and error fixtures are ported.
## Phase 0 — project and session shell ## Phase 0 — project and session shell
@@ -296,10 +296,13 @@ engine lifecycle.
Status: **exact parity in progress**. The shared single-model runtime, Status: **exact parity in progress**. The shared single-model runtime,
verified-model discovery, configurable localhost port, all four generation verified-model discovery, configurable localhost port, all four generation
routes, native JSON/SSE response envelopes, exact batched prefill, tool replay, routes, native JSON/SSE response envelopes, exact batched prefill, tool replay,
and live continuation exist. Differential C/Rust fixtures cover tools, and live continuation exist. Canonical, short, and plain DSML tool output plus
reasoning, usage/cache accounting, and real Pi execution. Full parser/tool loose nested parameters are recovered in final and streaming responses, and
recovery, KV-store, cancellation, scheduling, lifecycle, and error fixture Responses replay rejects unknown/partial state instead of silently dropping
parity remain open, so no route is considered complete yet. it. Differential C/Rust fixtures cover tools, reasoning, usage/cache
accounting, and real Pi execution. Malformed-tool repair/error fallbacks, full
KV-store, cancellation, scheduling, lifecycle, and error fixture parity remain
open, so no route is considered complete yet.
`../ds4/ds4_server.c` is normative for every externally observable HTTP `../ds4/ds4_server.c` is normative for every externally observable HTTP
behavior. “Compatible” approximations are not acceptable: routes, accepted behavior. “Compatible” approximations are not acceptable: routes, accepted
@@ -412,8 +415,9 @@ the same conversation without prefill when its KV payload is compatible.
Status: **basic local chat implemented**. The conversation area streams Status: **basic local chat implemented**. The conversation area streams
multi-turn DeepSeek Flash output, persists and rehydrates structured reasoning multi-turn DeepSeek Flash output, persists and rehydrates structured reasoning
and answers, and supports Stop; tool turns and the coding-agent runtime remain and answers, renders Markdown, follows new output, restores sessions at their
open. latest message, reports context use and generation speed, and supports Stop.
Tool turns and the coding-agent runtime remain open.
Every chat feature must persist its semantic state and rehydrate it when a Every chat feature must persist its semantic state and rehydrate it when a
session is reopened in the same implementation slice. In-memory-only chat session is reopened in the same implementation slice. In-memory-only chat
@@ -421,10 +425,12 @@ features are incomplete by definition; disclosure state and other purely
ephemeral presentation preferences are the only exception. ephemeral presentation preferences are the only exception.
1. **Partially implemented:** build the classic chat surface. Transcript, 1. **Partially implemented:** build the classic chat surface. Transcript,
structured reasoning disclosure, composer, streamed output, and Stop are structured reasoning disclosure, Markdown rendering, composer, automatic
complete; tool-call cards, queued input, prefill progress, and generation scrolling, streamed output, context/generation-speed status, and Stop are
statistics remain. Local turns must call the same session registry and KV complete. The shared Stats dashboard provides 200 ms runtime, prefill,
path used by the HTTP endpoint. decode, HTTP, and KV telemetry; tool-call cards, queued input, and inline
chat-prefill progress remain. Local turns must call the same session registry
and KV path used by the HTTP endpoint.
2. Port the native agent turn loop from `ds4_agent.c`, including model-specific 2. Port the native agent turn loop from `ds4_agent.c`, including model-specific
system prompts and DeepSeek DSML/GLM tool-call parsing. system prompts and DeepSeek DSML/GLM tool-call parsing.
3. Implement the local tool set with the project directory as its boundary: 3. Implement the local tool set with the project directory as its boundary:
@@ -559,10 +565,14 @@ and all surfaces survive application restart with their message history.
## Verification and packaging ## Verification and packaging
Status: **partially implemented**. Formatting, Clippy, build, and unit-test Status: **partially implemented**. Formatting, Clippy, release build/application
commit gates are documented in `AGENTS.md`; database migration/CRUD constraints bundle, and unit-test commit gates are documented in `AGENTS.md` and pass.
and the preferences shortcut have unit coverage. Model fixtures, integration Database migration/CRUD, preferences, engine scheduling, metrics, request
tests, and release packaging remain open. parsing, tool replay/recovery, and streaming behavior have focused unit
coverage. Live C/Rust endpoint scripts cover tool calls, multi-turn
continuation/cache accounting, reasoning, and real Pi execution. The complete
automated `ds4_server.c` differential corpus and production release signing,
notarization, and delivery remain open.
- Keep unit coverage narrow: persistence round trips, format compatibility, - Keep unit coverage narrow: persistence round trips, format compatibility,
DS4 KV prefix/rewrite/store/load parity, cross-surface session binding, DS4 KV prefix/rewrite/store/load parity, cross-surface session binding,