docs(roadmap): record implementation status per track, add Matter to LATER - #1054
Conversation
…LATER Claude-Session: https://claude.ai/code/session_015HBnpxLWTu2NtekaEPEDGF Co-authored-by: HuggeK <48095810+HuggeK@users.noreply.github.com>
miravoss26
left a comment
There was a problem hiding this comment.
Docs-only status update to the roadmap table: adds dated "Status 2026-09-02" notes to every NOW/NEXT track plus a new Matter (matter.js) LATER row, rewrites the stale FTW-app "open work" list, and updates the OCPP/passive-battery/V2X LATER rows.
- Every status claim cites concrete PR numbers as evidence, and the methodology (4 parallel read-only verification passes grounded in file/line/test evidence) is documented in a collapsible section — good practice for a claim-heavy doc change.
- No code touched, single file (
docs/roadmap.md), 43+/28- lines. No secrets, no injection surface, no new deps — nothing for the security lens to flag. - CI green (brand-cleanup, changeset-check, repo hygiene, go test+vet all pass; the code-test jobs correctly skipped for a docs-only diff).
- Consistent with the companion PR (srcfl/ftw-web#9) which links the marketing site to this same doc.
Safe to merge from my read — I didn't re-verify every linked PR's code against the specific claims (that's a large surface for a docs review), but the sourcing is unusually rigorous for a status update.
frahlg
left a comment
There was a problem hiding this comment.
Status notes belong in the table, and the ones I spot-checked against master hold: ledger rows are deleted after two years with no cold archive (EnergyLedgerRetention), cycle_cost_ore_kwh is on the wire struct but never set when core builds externalStorage, DELETE /api/app-link/devices/{id} exists, OCPP 1.6J+2.0.1 is on master, and the app pairing/revocation items really did ship.
Nit, not blocking: the lease has fifteen BatteryBoostStopReason constants, not sixteen. Matter as LATER after Excess-PV sinks is the right placement — optional module, never a second commander.
The roadmap hadn't moved since #961 (2026-08-19) while a lot of tracked work landed. This PR annotates every NOW/NEXT track — and the LATER rows that moved — with a dated Status 2026-09-02 note recording what is actually implemented on
master, verified against the code and its tests rather than PR titles. It also adds one new LATER direction: Matter support via matter.js.Highlights of what the verification found:
New LATER row — Matter support (matter.js). A TypeScript matter.js process as an optional module behind a narrow versioned contract, mirroring the optimizer's rules: independent failure/update semantics, a safe unavailable state, devices entering control only as capability-declared devices with autonomous defaults, and the fabric never becoming a second commander.
@frahlg — the Matter row's placement (after Excess-PV sinks, since Matter plugs are the natural dump-load transport) and its gate wording are proposals; reorder or tighten as you see fit.
How the status notes were produced
Four parallel read-only verification passes over
masterat 4ba2f12, one per lane, each grounding every verdict in file/line evidence, test names, andgit logPR attribution:cycle_cost_ore_kwhwire field, shipped app items, OCPP status, open perf(web): stop dashboard render loops when their view is hidden #881/perf(state): batch energy-ledger SQL inside each control tick #882).The notes deliberately record evidence gaps (untested behaviour) separately from unbuilt behaviour, matching the document's "exit evidence" framing.
Why the notes live in the table rather than a separate status doc
The roadmap's own rule is that a track moves only on evidence. Putting the dated status next to each exit-evidence cell keeps the claim and its current truth in one place, and the next update replaces the notes instead of growing a parallel document. A one-paragraph rule at the top says the notes are evidence, not promises.
Documentation-only change, so no changeset per the release rules. Companion PR srcfl/ftw-web#9 makes the website's "Public roadmap" chip actually link here.
🤖 Generated with Claude Code
https://claude.ai/code/session_015HBnpxLWTu2NtekaEPEDGF