fix(core): serialize runtime NVS diagnostics through stdio - #52
Conversation
|
🦞👀 Pull request received. I will update this pull request when review starts. ClawSweeper review completeClawSweeper finished reviewing this revision. The review result is being finalized. |
|
Codex review: blocked before merge. Reviewed September 12, 2026, 12:14 PM ET / 16:14 UTC (Revision 3). ClawSweeper reviewWhat this changesRoutes runtime nonvolatile-storage diagnostics through standard output and carries stacked Tab5 camera, display-memory, allocation-diagnostic, packaging, CI, and regression-test changes. Regression provenancePossible regression — suspected (reviewed change). No predecessor PR is attributed. Merge readiness⛔ Blocked before merge - 5 items remain The runtime diagnostic correction remains useful and is absent from main. The draft blocker is resolved, but the retargeted cumulative branch still lacks an accepted predecessor repair and currently has merge conflicts. Priority: P2 Review scores
Verification
How this fits togetherThe ESP node firmware loads saved connection credentials and reports numeric diagnostic records to its console. The Tab5 board adapter also manages display buffers, camera processing, and transport-start diagnostics. flowchart TD
A[Saved connection attempts] --> B[Nonvolatile storage operations]
B --> C[Numeric runtime diagnostics]
C --> D[Standard output serialization]
E[Normal application logs] --> D
D --> F[Device console collector]
Before merge
Findings
Agent review detailsSecurityNone. Review metrics
Merge-risk optionsMaintainer options:
Technical reviewBest possible solution: Retain the narrow stdio correction on the repaired cumulative stack, preserving encrypted-display allocation and the documented limits of console serialization. Do we have a high-confidence way to reproduce the issue? Yes for the bounded output-ordering mechanism: the actual-loader fixture provides a deterministic contention path, with original-failure/patched-pass results reported in the captured body. The physical collector fragment's origin remains unknown. Is this the best way to solve the issue? Yes for replacing runtime ROM output with one printf call per record; the cumulative landing must also incorporate the already accepted encrypted-display repair. Full review comments:
Overall correctness: patch is incorrect AGENTS.md: not found in the target repository. Codex review notes: model internal, reasoning medium; reviewed against 6b63951f0ac5. LabelsLabel changes:
Label justifications:
EvidenceWhat I checked:
Likely related people:
Rank-up movesOptional improvements that raise the rating; they are not merge blockers.
Rating scale
Overall follows the weaker of proof and patch quality. Workflow
History |
Problem
The normal-runtime
nvs_connect_diagandnvs_session_diagrecords use ROMoutput alongside standard application logging. On the pinned ESP-IDF build,
standard Log V1 uses
vprintfand USB Serial/JTAG VFS serialization, while ROMprinting takes a separate output path.
A live collector rejected a record with an unknown two-byte prefix. Those
prefix bytes were not retained, so this change does not claim to identify that
specific fragment's source.
Changes
printfcall, preserving its exact barenumeric grammar and existing call position after NVS operations.
behavior unchanged. No mutex, flush, prefix, or parser change is introduced.
Stacked on #51, base
e166026c7616e1c7eaeea1c023585d6c2748c02e. No SDK, dependency, memory-placement,or configuration changes.
Validation
at the output-order assertion and passes with this change. A condition
variable arranges the competing stdout log; no timing sleeps are used.
behavior, synthetic-canary exclusion, and the unchanged SDK I/O,
alignment, and concurrent first-failure cases.
CI run 34497105780, attempt 1.
The component job also executed the focused NVS tests.
digest, all 11 internal checksums, 10 manifest file records, and four image
offsets. Compiled merge
1e909d48f3d7d623ff9ac12f09ad8658248de054has parents
e166026c7616e1c7eaeea1c023585d6c2748c02eand6c23b60bfccf907d6fd64084610269ed7c7ba2e6, with the source head's tree.dependency lock match the preceding
d9bbea660bcfcd571df1bba81a9d121d594e97e9candidate. The SDK remains
362a1776ec212788fda95f75b733bfdde3a0c394plus the recorded patches, not pristine ESP-IDF 5.5.5.
Firmware artifact
10160619136, 2,898,606 bytes, SHA256:4c93ac1345fe76ee9ff576c44581fc819b7e4afce64069e36c7bfe39f0047b49.The contention test models ROM's independent write path and delegates stdio
output to real
vprintf. It is host boundary proof, not execution of physicalUSB or ROM firmware. This repair does not guarantee atomic output against
remaining ROM writers. No new firmware flashing, reconnect qualification,
Talk, or provider proof is claimed here.
Landing
Accept the narrow runtime-stdio correction with its deterministic contention
proof and unchanged numeric contract. Land after
#51 using a merge commit and
the exact cumulative tree, preserving the accepted encryption fallback and
earlier repairs. This is not a fix for every observed serial framing failure,
nor new voice or physical USB qualification. No release is authorized.