You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The index of everything measured but not done, and of the claims that were checked while building
it. Each linked issue states what is wrong, the measured evidence, acceptance criteria, and an exact
command to test it.
Numbers come from cargo test --release -p lumen-mcp --test efficiency -- --nocapture, which prints
them and asserts them, so they cannot rot into stale prose the way the last set did.
Release 1.6.0 #6 — Release 1.6.0. A minor bump: lumen doctor, lumen show and the degraded banner are
new features.
Daemon reconnect noise rotates the tray diagnostics out of the log #7 — Daemon reconnect noise rotates the tray diagnostics out of the log. 434 KB/hour
against a 256 KB cap with KeepOne = the log rotates every ~35 minutes, taking the evidence
release logging was just added to preserve.
Milestone Backlog. None of this is a routing
failure; it is file kinds the optimizer does not cover.
Intercept .js and .jsx — no new grammar needed #8 — .js / .jsx, 109,914 tokens. The cheapest item here: tree-sitter-typescript is
already a dependency and its grammar is a superset of JavaScript, so no new grammar is needed.
Outline Markdown by its headings #9 — Markdown by headings, 250,403 tokens over 64 files. The largest single opportunity.
Needs a line scanner rather than tree-sitter, with fenced-code state tracked.
Decide whether .scss and .css are worth intercepting #11 — .scss / .css: decide, do not assume. 180,448 + 63,175 tokens looks large until
you see that 83% of the scss total is one 3,116-line file read 11 times on one machine.
Wants a second corpus before committing.
The sessions table is declared in the schema and never used #13 — The sessions table is declared and never used. 0 rows while turns holds 66
distinct session ids. Populate it or drop it. (is_subagent has the same shape — 0 across all
4,446 rows — so resolve both together.)
Considered and rejected — kept so the reasoning is searchable
Closed as not planned. Reopening one is how the decision gets revisited.
Decision: not intercepting .yml #14 — .yml. A partial YAML read is not valid YAML, so an outline invites a confidently wrong
answer, and 31,010 tokens is below break-even anyway.
Decision: not intercepting .json #15 — .json. The largest on record is 271 lines against a 300-line threshold, so
interception can never fire. Structurally out of reach.
Three claims went into the CHANGELOG and README without a test behind them. All three are now
settled, and two of them turned up a further defect on the way.
The hidden-icon preference fix was unverified in the real app bundle #19 — The hidden-icon preference fix was verified only against the Lumen defaults domain,
not the io.speedata.lumen domain the bundle owns. It works — and verifying it exposed a second
key form, NSStatusItem VisibleCC <name>, that the fix was ignoring entirely.
lumen doctor reported a menu-bar manager that was never installed #20 — lumen doctor reported a menu-bar manager that has never been installed. It matched
names as substrings of the whole ps output, and "ice" is a substring of "Services": 130
processes matched on a stock install. It would have invented a phantom cause on almost any Mac.
Two more found the same way, fixed in 8f998b1: a test that opened the developer's real browser on
every cargo test --workspace, and a published metric — "0 of 1,573 eligible reads leaked" —
asserted as an invariant it never was, since the intercept's own fail-open guards produce exactly
that shape by design.
The pattern in all five: they were found by running the thing and reading the real output, not by
reasoning about the code.
The index of everything measured but not done, and of the claims that were checked while building
it. Each linked issue states what is wrong, the measured evidence, acceptance criteria, and an exact
command to test it.
Numbers come from
cargo test --release -p lumen-mcp --test efficiency -- --nocapture, which printsthem and asserts them, so they cannot rot into stale prose the way the last set did.
Before a release — milestone 1.6.0
lumen doctor,lumen showand the degraded banner arenew features.
against a 256 KB cap with
KeepOne= the log rotates every ~35 minutes, taking the evidencerelease logging was just added to preserve.
Coverage backlog — 653k tokens read whole, measured
Milestone Backlog. None of this is a routing
failure; it is file kinds the optimizer does not cover.
.js/.jsx, 109,914 tokens. The cheapest item here:tree-sitter-typescriptisalready a dependency and its grammar is a superset of JavaScript, so no new grammar is needed.
Needs a line scanner rather than tree-sitter, with fenced-code state tracked.
.outis intercepted but.outputis not, 9,547 tokens. A one-word gap in theextension list.
.scss/.css: decide, do not assume. 180,448 + 63,175 tokens looks large untilyou see that 83% of the scss total is one 3,116-line file read 11 times on one machine.
Wants a second corpus before committing.
Economics and hygiene
is the obvious move and is not clearly right; wants a measured sweep, not a guess.
sessionstable is declared and never used. 0 rows whileturnsholds 66distinct session ids. Populate it or drop it. (
is_subagenthas the same shape — 0 across all4,446 rows — so resolve both together.)
Considered and rejected — kept so the reasoning is searchable
Closed as not planned. Reopening one is how the decision gets revisited.
.yml. A partial YAML read is not valid YAML, so an outline invites a confidently wronganswer, and 31,010 tokens is below break-even anyway.
.json. The largest on record is 271 lines against a 300-line threshold, sointerception can never fire. Structurally out of reach.
token_source. Theledger is append-only and the count is already disclosed; rewriting them would trade a disclosed
unknown for an undisclosed guess.
This is how a
RunEvent::Reopenmatch arm reached CI red. The mitigation is procedural.Checked while writing this, and resolved
Three claims went into the CHANGELOG and README without a test behind them. All three are now
settled, and two of them turned up a further defect on the way.
RunEvent::Reopenwas asserted to reveal the window and never verified. It does —AppKit delivers reopen under
ActivationPolicy::Accessory. Only testable from a bundle.Lumendefaults domain,not the
io.speedata.lumendomain the bundle owns. It works — and verifying it exposed a secondkey form,
NSStatusItem VisibleCC <name>, that the fix was ignoring entirely.lumen doctorreported a menu-bar manager that has never been installed. It matchednames as substrings of the whole
psoutput, and"ice"is a substring of"Services": 130processes matched on a stock install. It would have invented a phantom cause on almost any Mac.
Two more found the same way, fixed in
8f998b1: a test that opened the developer's real browser onevery
cargo test --workspace, and a published metric — "0 of 1,573 eligible reads leaked" —asserted as an invariant it never was, since the intercept's own fail-open guards produce exactly
that shape by design.
The pattern in all five: they were found by running the thing and reading the real output, not by
reasoning about the code.