Skip to content

feat(atlas): section TD, structured EIP-712, with hardware evidence - #49

Merged
BitHighlander merged 1 commit into
masterfrom
feat/atlas-section-td
Aug 21, 2026
Merged

feat(atlas): section TD, structured EIP-712, with hardware evidence#49
BitHighlander merged 1 commit into
masterfrom
feat/atlas-section-td

Conversation

@BitHighlander

Copy link
Copy Markdown
Owner

Four entries for the structured EIP-712 walk, and the first section in this catalog whose expected values come from outside this repository.

TD1 asserts the domainSeparator and messageHash published by assets/eip-712/Example.js in ethereum/EIPs — the reference implementation the spec links to — republished by Example.sol, by eth-sig-util's V3 and V4 snapshots, and by Mrtenz/eip-712.

That distinction is the section's reason to exist. The firmware C, the hdwallet TypeScript and the python client were written by one hand against one reading of the spec, so three of them agreeing proves the reading is self-consistent and nothing more. A shared misreading produces three consistent wrong answers. It cannot produce those two numbers.

Hardware evidence, recorded in the notes

2026-08-21, K1-14AM, unsigned build of the 7.15 line:

  • nine screens, one per leaf, all correct on operator review
  • 42-character addresses rendered in full — the truncation class that shipped as a bug at >42 chars, and the one claim the emulator's framebuffer genuinely cannot settle
  • the published hashes matched on silicon, not just in the emulator
  • device address 0x73d0385F4d8E00C5e6504C6030F47BF6212736A8, identical to the emulator, so key derivation agrees too

TD2 covers arrays, refused outright until a kilobyte came back from MAX_DECODE_SIZE (at 13 KB the ARM image missed the linker's runtime-reserve gate by 204 bytes; at 12 KB it clears by 812). TD3 covers a fixed dimension checked against the document — the count is the only thing the device is ever told. TD4 covers the AdvancedMode gate.

Section id is two characters because all 26 letters were taken; the catalog keys on a string.

Four entries for the walk, and the first section in this catalog whose expected
values come from OUTSIDE the repository.

TD1 asserts the domainSeparator and messageHash published by
assets/eip-712/Example.js in ethereum/EIPs -- the reference implementation the
spec links to -- republished by Example.sol, by eth-sig-util's V3 and V4
snapshots, and by Mrtenz/eip-712.

That distinction is the section's reason to exist. The firmware C, the hdwallet
TypeScript and the python client were written by one hand against one reading
of the spec, so three of them agreeing proves the reading is self-consistent
and nothing more. A shared misreading produces three consistent WRONG answers.
It cannot produce those two numbers.

Hardware evidence recorded in the notes, 2026-08-21, K1-14AM, unsigned build of
the 7.15 line:

  - nine screens, one per leaf, all correct on operator review
  - 42-character addresses rendered IN FULL. That is the truncation class that
    shipped as a bug at >42 chars, and it is the one claim the emulator's
    framebuffer genuinely cannot settle
  - the published hashes matched on silicon, not just in the emulator
  - device address 0x73d0385F4d8E00C5e6504C6030F47BF6212736A8, identical to
    the emulator, so key derivation agrees too

TD2 covers arrays, which were refused outright until a kilobyte came back from
MAX_DECODE_SIZE: at 13 KB the ARM image missed the linker's runtime-reserve
gate by 204 bytes, at 12 KB it clears by 812. TD3 covers a fixed dimension
being checked against the document -- the count is the only thing the device is
ever told, so accepting a wrong one signs a type nobody declared. TD4 covers
the AdvancedMode gate.

The section id is two characters because all 26 letters were taken. The catalog
keys on a string, so it costs nothing.
@BitHighlander
BitHighlander merged commit b8c4302 into master Aug 21, 2026
1 of 2 checks passed
@BitHighlander
BitHighlander deleted the feat/atlas-section-td branch August 21, 2026 23:32
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.

1 participant