Skip to content

Commit 76bd1cf

Browse files
committed
[docs] distinguish frozen destinations from generated board paths
Signed-off-by: Viwat Vchirawongkwin <viwat.v@chula.ac.th>
1 parent 005e479 commit 76bd1cf

2 files changed

Lines changed: 22 additions & 0 deletions

File tree

‎docs/specifications/firmware/TDD.md‎

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2436,6 +2436,15 @@ pico-sdk, BTstack and its actually linked third parties, CYW43, TinyUSB, and
24362436
every contributing ARM GNU/newlib runtime archive. Deleting or substituting
24372437
one class fails even when the remaining evidence is canonically rehashed.
24382438

2439+
ESP frozen-payload tests MUST reach the production observer with a real
2440+
descriptor-captured retained board layout and literal manifest selections.
2441+
They distinguish a flat workspace destination from its canonical-source-relative
2442+
`pyble/` copy, and preserve already-prefixed and historical package selections.
2443+
Missing nested copies, matching flat decoys, stale bytes, file/directory
2444+
symlinks, and duplicate frozen destinations are rejection cases. The existing
2445+
lock-generated version exception and overlay byte checks remain independently
2446+
covered; tests must not replace the snapshot or byte comparison with a model.
2447+
24392448
RP2 environment-proof tests MUST run the actual checked-in build driver through
24402449
the production Arm observer's parser boundary. They separately cover the strict
24412450
`unset` command and the exact pinned offline CMake assignment/export block,

‎docs/specifications/firmware/browser-flashing.md‎

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1573,6 +1573,19 @@ The following ESP-IDF resolution rules are part of that fail-closed mapping:
15731573
tree; materializing such an ambient tree is neither an audit prerequisite
15741574
nor substitute evidence for bytes used by the build.
15751575

1576+
A frozen destination is not necessarily its generated board source path.
1577+
`prepare.sh` materializes a selected canonical `firmware/pyble/<relative>`
1578+
source at `BOARD_DIR/pyble/<relative>`, independently of the manifest's
1579+
destination. In particular, the flat frozen `pyble_workspace.py` destination
1580+
uses `BOARD_DIR/pyble/pyble_workspace.py`; already-prefixed `pyble/...`
1581+
destinations MUST NOT gain a second `pyble/` prefix. The audit MUST derive
1582+
that physical copy path from the canonical source-relative path, retain the
1583+
original frozen destination, and compare the exact retained copy bytes.
1584+
A flat matching decoy cannot replace a missing or changed nested copy.
1585+
The lock-generated `_version.py` exception, overlay copies, separately
1586+
admitted first-party modules, and upstream selections keep their existing
1587+
validation rules.
1588+
15761589
The collector MUST open every component of that exact retained `BOARD_DIR`
15771590
descriptor-relatively without following links, capture its complete bytes
15781591
and node identities, and materialize a byte-identical execution snapshot in

0 commit comments

Comments
 (0)