@@ -24,6 +24,124 @@ Next-safe-step:
2424
2525Entries
2626-------
27+ Dev-Log: DL-20260731-071
28+ Date: 2026-07-31
29+ Status: In progress
30+ Change-ID: Pending CL-20260731-070
31+ Request-or-TODO: M19-001 through M19-108 and M19-G01 through M19-G04;
32+ user required the graph to be dynamic, interactive, visually meaningful by
33+ node purpose, fully observable through the fixed live GWC UI, and tested.
34+ Goal: Deliver a task-scoped, derived, read-only program/execution/evidence graph
35+ with immutable revisions, bounded SQLite queries, deterministic stable layout,
36+ accessible interaction, bidirectional chat linkage, and explicit inspection.
37+ Assumptions: Chat remains the control surface; graph identity is distinct from
38+ revision identity; server-issued project/task/repository IDs bound every read;
39+ sessions without graph evidence render an honest empty graph; `design/` stays
40+ user-owned and excluded.
41+ Decisions: Normalize durable task facts through a typed semantic seam rather
42+ than infer structure from redacted display text; commit graph changes only for
43+ material facts; keep token deltas revision-free; use schema-versioned immutable
44+ revisions, typed metadata only, bounded continuation queries, deterministic
45+ SCC-aware left-to-right layout, and authored Go/GWC SVG interaction.
46+ Files-or-schemas: In progress across internal graph/domain projection, migration
47+ 000020, SQLite graph query repository, graph layout, typed GraphService bridge,
48+ GWC authoritative graph canvas, inspector, and performance/browser evidence.
49+ Validation: Domain, projection, migration, storage query, layout, graphcanvas,
50+ web frontend, WASM, vet, lint, generation, and artifact checks are being run
51+ per tranche; repeated layout-query tests are green after deterministic fixture
52+ correction. M18's fixed-port 260-check browser gate remains green.
53+ Failures-or-discarded-approaches: Adversarial review rejected topology commits
54+ not bound to the exact pending candidate, CSS-pixel transforms applied to a
55+ fixed SVG viewBox, selection strokes that erased status encoding, dangling
56+ tabpanel relationships, and production-only legacy graph data. Those findings
57+ now have concrete code fixes or active integration ownership.
58+ Known-limitations: The authoritative graph is not complete until the typed
59+ service is mounted in the production shell and inspector/performance/browser
60+ gates pass against the rebuilt fixed-port runtime.
61+ Next-safe-step: Finish GraphService mounting and inspector/benchmark tranches,
62+ run combined gates, visually inspect the live authoritative graph, mark only
63+ evidence-backed TODOs, commit, push, and verify public CI.
64+
65+ Dev-Log: DL-20260731-070
66+ Date: 2026-07-31
67+ Status: Complete
68+ Change-ID: CL-20260731-069
69+ Request-or-TODO: M18-001 through M18-070 and M18-G01 through M18-G05;
70+ user required uninterrupted completion, a fixed live GWC UI, backend-owned
71+ state, four-agent implementation, full interaction testing, and marked TODOs.
72+ Goal: Deliver authoritative task projection, seven-state connection certainty,
73+ idempotent task controls, exact cost/budget presentation, calm recovery, and
74+ local content-free telemetry through the existing Go/GWC workspace.
75+ Assumptions: The selected server-issued thread/session/task identities remain
76+ the only authority; unknown pricing and absent recovery evidence must remain
77+ unknown; the untracked user-owned `design/` tree remains excluded.
78+ Decisions: Keep the fixed server on 127.0.0.1:63131; use GWC resource and
79+ lifecycle hooks rather than any React model; project only ordered SQLite
80+ events; add an authoritative TaskService read path; disable mutations while
81+ sequence certainty is unresolved; retain browser-local drafts across replay.
82+ Files-or-schemas: Frontend session/task reducers, GWC client resources and
83+ controls, coordinator/transport task reads, frontend telemetry, migrations
84+ 000018 and 000019, browser acceptance fixtures, and directly affected tests.
85+ Client mutation settlement now covers pause, resume, stop, exact budget,
86+ preserve patch, reconcile, safe resume, and composer send. The diagnostics
87+ route now receives the identity-checked mounted session projection and shows
88+ its content-free last applied durable sequence, including distinct unknown,
89+ known-zero, replay, live, and gap-repair states.
90+ The production composer now renders every §27C Draft-through-Rolled-back row
91+ from `taskprojection.AvailableTaskActions`; implemented commands share the
92+ mounted callbacks, while later-milestone actions are inert and carry exact
93+ accessible disabled reasons. TaskView is query metadata only: task identity,
94+ lifecycle, revisions, budget, recovery, and action availability come solely
95+ from the accepted session task projection.
96+ Validation: Focused composer/session/task packages pass. Live browser selection
97+ and a second real composer send passed through the gRPC bridge; its durable
98+ message event cleared and re-enabled the composer without a page refresh.
99+ The eight-row production mutation contract test, `go test ./web/...`, the
100+ js/wasm client build, and `go test ./...` pass. M18-G02 is satisfied for
101+ pause, resume, stop, and budget change. M18-014 targeted client, shell, state,
102+ and frontend tests pass; both client and browser-fixture WASM builds pass;
103+ mounted Chromium verifies sequence 0 through replay/disconnect, sequence 1
104+ during gap repair, and repaired sequence 3 through replay/live/disconnect.
105+ Native client/projection/action/composer/primitives tests and both WASM builds
106+ pass. Mounted Chromium exhaustively verifies all 14 §27C rows, exact action
107+ membership/order, real supported callbacks, pre-click disabled reasons,
108+ `aria-describedby`, and keyboard focus retention after activation.
109+ M18-052 is now backed by a typed, atomically cursor-bound
110+ GetSessionSnapshot path from SQLite through authenticated gRPC; reconnect and
111+ invalidation repair re-enter only through ApplySessionSnapshot, while ordered
112+ delivery enters only through ApplySessionEvent. Focused event, storage,
113+ transport, coordinator, reducer, session-client, web-client, and WASM checks
114+ pass, including delayed session binding, crash-boundary backfill, every event
115+ category, sequence-gap repair, complete review bindings, and metadata-only
116+ TaskView regression coverage.
117+ Final production evidence includes 260/260 Chromium checks against the fixed
118+ 127.0.0.1:63131 runtime, visual inspection of the live selected-session
119+ workspace, a real gRPC-bridge message commit, GWC navigation without document
120+ reload, responsive rail selection, telemetry deletion confirmation/cancel,
121+ retained approval command identity, graph controls, and accessibility/focus.
122+ Failures-or-discarded-approaches: The live TaskService GetTask probe exposed an
123+ unimplemented server method; a composer RPC/event settlement race left the
124+ first send busy until its GWC dependency included ordered event and attempt
125+ state. No React or useEffect source exists in the frontend. Rejected adapting
126+ the current TaskView directly into the session projection: GetTask has no
127+ atomic session cursor, omits approval, validation, and complete recovery
128+ facts, and the corresponding production task writes do not yet append those
129+ session events. Such an adapter would preserve the existing double authority
130+ while merely hiding it behind ApplySessionSnapshot. Per-row raw event
131+ closures caused unstable GWC handler identity, so the action surface uses one
132+ stable value-dispatch handler. Animated disclosure made pointer actionability
133+ timing flaky in mounted Chromium; the acceptance test now activates focused
134+ enabled buttons by keyboard and asserts the resulting focus and invocation.
135+ The final browser loop also corrected stale fixture assumptions: root
136+ restoration is stateful, mutation checks select a durable session, graph fit
137+ has its own computed zoom, rapid settlement need not expose a busy frame, and
138+ responsive thread-rail closure is verified through its real control.
139+ Known-limitations: The graph shown for sessions without authoritative graph
140+ data is intentionally empty rather than fabricated. Later M19 work supplies
141+ derived graph revisions, queries, and accessible interactive projection.
142+ Next-safe-step: Commit and push M18 with its complete evidence, then continue
143+ M19 graph projection, query, layout, interaction, inspection, and benchmarks.
144+
27145Dev-Log: DL-20260731-069
28146Date: 2026-07-31
29147Status: Complete
0 commit comments