Skip to content

docs: correct the drift, and stop linking to files that are not there (#18) - #37

Merged
dni merged 2 commits into
dni:mainfrom
TheCryptoDonkey:docs/fix-drift
Aug 17, 2026
Merged

docs: correct the drift, and stop linking to files that are not there (#18)#37
dni merged 2 commits into
dni:mainfrom
TheCryptoDonkey:docs/fix-drift

Conversation

@TheCryptoDonkey

Copy link
Copy Markdown
Collaborator

Closes #18. Stacked on #36 — the README now points at docs/HARDWARE-TEST-CHECKLIST.md, which that PR adds, so stacking keeps the link from dangling at any point. This PR's own diff is the last commit.

What was wrong

The wallet integration exists. The README said it "is a deliberate follow-up, not part of this repo yet" and listed "No lnurl-wallet integration yet" under known limitations. device.ts, deviceQueue.ts, deviceOrchestration.ts, DeviceContext.tsx and pages/Vault.tsx are all there, with device.test.ts and deviceOrchestration.test.ts. I checked each file against dni/lnurl-wallet via the API rather than taking the issue's word for it.

sdkconfig.defaults disowned itself. It opened by saying it had been authored without a working ESP-IDF install, and pointed at a README section called "Status: unverified by compilation" that no longer exists. CI builds both environments on every push and both have run on hardware. The useful half of that note — option names drift between IDF releases — is kept, now sitting next to the fact that platformio.ini pins the platform so it doesn't happen by surprise.

The nvs_keys note undersold the consequence. It called the partition "now-unused"; it isn't in the repo at all. And it stopped short of what a reader most needs to know: NVS encryption is off entirely, so a physical flash dump recovers every secret and physical possession is the protection model. Said plainly now.

Stale numbers. Reported sizes were 30.1% RAM / 25.6% flash. A real build of this commit is 36.3% / 27.2%.

Two claims hardware has since contradicted: a "What's still unverified" paragraph listing display rendering, button timing, BLE and NVS persistence as open questions, and a line calling export_secret's approval gate "unverified on hardware". All exercised now. That paragraph defers to the checklist instead — a file with dates, boards and firmware versions per area, which marks anything unrun as NOT YET BENCH-RUN, is a better authority than a prose paragraph that goes stale silently.

Links that did not resolve

Seven links pointed at ../luds/25.md or ../../luds/25.md, plus ../lnurl-wallet and ../lnurl-mint. Those only work inside a monorepo checkout — on GitHub they 404.

LUD-25 is not a merged file anywhere; it is an open PR, lnurl/luds#301. The links now point at the proposal, and the two sibling projects at their own repositories.

Not changed, deliberately

The installer's github.com/dni/lnurl-vault source links. The issue lists them as drift, but they point at the canonical upstream and are correct as written. Deriving them from the Pages host would add JavaScript to a page whose job is flashing firmware, and would not survive a custom domain. Say the word if you'd rather they were fork-aware.

Verification

  • 257/257 native assertions
  • the S3 target builds — that build is where the corrected size figures come from
  • the LUD-25 PR and all five lnurl-wallet files confirmed to exist via the GitHub API

TheCryptoDonkey and others added 2 commits August 17, 2026 16:41
… parts

Closes dni#14.

src/ui/buttons.c has been pointing at docs/HARDWARE-TEST-CHECKLIST.md for a
while; the file did not exist. It does now, in the format the issue asks
for: numbered sections, each ending in a dated bench record naming the
board and the firmware version get_info reported, and an explicit
NOT YET BENCH-RUN in those words where nothing has been run -- so nothing
counts as verified merely by having been written down.

Fifteen sections. Nine carry a real record from 2026-08-17 on a classic
LilyGo T-Display; six say NOT YET BENCH-RUN, and say why: the approval
gesture and granting a wipe need a finger on the board, OTA needs the
release signing seed, the watchdog firing needs code that would have to be
removed again, release artefacts need a tag, and the S3 target builds but
was not bench-run in this pass.

test/hardware/bench.py runs everything that does not need a press, prints
a pass/fail table and exits non-zero, so it can gate a release. It
deliberately never grants a wipe and never approves an export: an
automated test one press away from erasing a device is not a test worth
having. It degrades to skips against firmware that predates a feature
rather than reporting failures, so it is usable for finding out what an
older build does.

Two things it handles that cost real time to learn, and that are written
down next to the code that handles them: opening the serial port drives
DTR/RTS into the auto-reset circuit, so a script that opens per command
reboots the device between every command and silently invalidates anything
measuring uptime or persistence; and boot chatter shares the UART that
carries the protocol on the classic board, so responses have to be matched
by looking for a line starting with '{'.

Verified: run against a board carrying every currently-open PR merged
together -- 23 passed, 0 failed, 5 skipped, all five skips being the rows
that need a human.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RpMeqfvv9KqifKGVM2GwA5
Closes dni#18.

WHAT WAS WRONG

The README said browser-side integration into lnurl-wallet "is a
deliberate follow-up, not part of this repo yet", and listed "No
lnurl-wallet integration yet" under known limitations. It exists:
device.ts, deviceQueue.ts, deviceOrchestration.ts, DeviceContext.tsx and
pages/Vault.tsx, with device.test.ts and deviceOrchestration.test.ts.
Checked each file against dni/lnurl-wallet rather than taking the issue's
word for it.

sdkconfig.defaults opened by saying it had been authored without a working
ESP-IDF install, and pointed at a README section called "Status:
unverified by compilation" that no longer exists. CI builds both
environments on every push and both have run on hardware. The useful half
of that note -- that option names drift between IDF releases -- is kept,
now next to the fact that platformio.ini pins the platform so it does not
happen by surprise.

The nvs_keys note said the partition was "now-unused". It is not in the
repo at all, and the sentence stopped short of the thing a reader most
needs: NVS encryption is off entirely, so a physical flash dump recovers
every secret and physical possession is the protection model. Said plainly
now.

Reported build sizes were 30.1% RAM / 25.6% flash. A real build of this
commit is 36.3% / 27.2%.

Two claims that hardware has since contradicted: a "What's still
unverified" paragraph listing display rendering, button timing, BLE and
NVS persistence as open questions, and a line calling export_secret's
approval gate "unverified on hardware". All of those have been exercised.
That paragraph now defers to docs/HARDWARE-TEST-CHECKLIST.md, which
carries dates, boards and firmware versions per area and marks anything
unrun as NOT YET BENCH-RUN -- a file is a better authority for this than a
prose paragraph that goes stale silently.

LINKS THAT DID NOT RESOLVE

Seven links pointed at ../luds/25.md or ../../luds/25.md, plus
../lnurl-wallet and ../lnurl-mint. Those only work inside a monorepo
checkout; on GitHub they 404. LUD-25 is not a merged file anywhere -- it is
an open PR, lnurl/luds#301 -- so the links now point at the proposal, and
the two sibling projects at their own repositories.

NOT CHANGED

The web installer's github.com/dni/lnurl-vault source links. The issue
lists them as drift, but they point at the canonical upstream and are
correct as written. Deriving them from the Pages host would add JavaScript
to a page whose job is flashing firmware, and would not survive a custom
domain. Left alone deliberately rather than churned.

Verified: 257/257 native assertions; the S3 target builds (the source of
the corrected size figures); the LUD-25 PR and all five lnurl-wallet files
confirmed to exist via the GitHub API.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RpMeqfvv9KqifKGVM2GwA5
@dni
dni merged commit 28b7f76 into dni:main Aug 17, 2026
2 checks passed
@TheCryptoDonkey
TheCryptoDonkey deleted the docs/fix-drift branch August 18, 2026 11:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Documentation drift

2 participants