fix(tab5): match camera geometry to PPA scale - #49
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:10 PM ET / 16:10 UTC (Revision 6). ClawSweeper reviewWhat this changesThe branch aligns Tab5 JPEG dimensions with hardware scaling and includes stacked camera compatibility patches, media diagnostics, packaging verification, and regression tests. Merge readiness⛔ Blocked before merge - 4 items remain The geometry repair remains necessary and has credible bounded hardware proof. The previously reported packaging regression still exists in the pinned head; the stated dependency landing plan addresses it, but has not yet been incorporated. Priority: P2 Review scores
Verification
How this fits togetherThe Tab5 board handles camera requests by capturing sensor frames, rotating and scaling them with the pixel-processing accelerator, and encoding a JPEG. Firmware packaging separately verifies the SDK and camera-component inputs used to build the device image. flowchart LR
A[Camera request and width limit] --> B[Sensor capture]
B --> C[Quantized hardware scaling]
C --> D[Packed pixels and JPEG dimensions]
D --> E[JPEG response]
F[SDK and component inputs] --> G[Firmware verification]
G --> B
Before merge
Findings
Agent review detailsSecurityNone. Review metrics
Root-cause clusterRelationship: Members:
Proposal only: this assessment does not dispatch repair, suppress jobs, mutate sibling items, close, or merge anything. Merge-risk optionsMaintainer options:
Technical reviewBest possible solution: Retain the shared quantized geometry calculation while carrying forward the predecessor's resolved-lock packaging verification, privacy repairs, and qualified build inputs. Do we have a high-confidence way to reproduce the issue? Yes: the production calculation and pinned SDK establish the geometry mismatch, while the packaging call chain proves rejection of otherwise valid alternative camera versions. This review did not execute firmware or tests. Is this the best way to solve the issue? Yes for the geometry calculation; the cumulative branch also needs the predecessor's existing packaging correction before it is a safe landing candidate. 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 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
HistoryReview history (5 earlier review cycles)
|
Problem
The Tab5 camera transform calculated JPEG dimensions independently of the PPA's
four-bit fractional scale. With the rotated 1280x720 sensor image and
maxWidth: 640, it described 640x1136 pixels while the PPA wrote only 630x1120.The larger output pitch and packed-image size included an unwritten margin.
The allocation is zero-initialized; this is not a demonstrated heap disclosure.
Change
PPA pitch, packed RGB byte count, JPEG encoding and response metadata.
allocation, blocking transform and cleanup.
Stacked on #48
at
5e66310797e87d35684d8e61b9dba324c5b9cb66. No SDK, managed-component,configuration, tint, warm-up, capture, audio or provider changes.
Validation
packed image 640x1136 differs from PPA-written extent 630x1120.as errors. The PPA fixture writes only its quantized extent using the configured
pitch; coverage includes native/minimum scales, all right-angle rotations,
width/pixel bounds and allocation/transform failure cleanup.
git diff --checkpasses.P0-P2 issues in the frozen four-file candidate.
The normal CI run, attempt 1
passed all five jobs at head
b05b470fabf54fbc9aac687488eafb76e5fc2814,including Tab5 and Waveshare. Tab5 firmware and symbols uploaded successfully;
only the firmware artifact was downloaded for verification.
Tab5 artifact
10121391198is 2,898,286 bytes and matches GitHub's SHA256abcea107a6d2ec580784933de9574796f45d29097156303117eec23c297a5bb4.All 11 internal checksums, manifest file sizes/hashes and four offset-mapped
images passed verification. The manifest identifies compiled test merge
2e75363465cbbe39f7e3ff777db3ffe54864151b; its immutable commit has the expectedPR48 base and this PR's head as parents, with the same tree as this head.
Generated configuration and the complete parsed dependency lock match the
previously tested
079791093d6dddb2eced111da3a3685ecb995fe1image. There is no newdependency drift, including
dl_fft, and the existing SDK, SDIO and camerapatch records match. The SDK remains
v5.5.5-648-g362a1776ec2-dirty, qualifiedby the existing tracked SPM/NVS patches, not pristine release 5.5.5. The retained
post-Ninja camera mapper/object evidence is unchanged. Symbols were not
downloaded and object bytes were not independently inspected.
Bounded Live Validation
The same compiled
2e75363465cbbe39f7e3ff777db3ffe54864151bimage completedbounded keyless boot/reconnect validation: 150.994 seconds of capture, with
stability windows of 60.148 and 50.054 seconds. No parser, assert, panic, SDIO
or NVS I/O fault was observed in that capture. These windows are not endurance
qualification. An earlier framing-unknown capture remains unresolved; this
change does not claim a framing/parser fix.
One actual
camera.snapsucceeded on September 9, 2026 at 20:49:46.898 UTC,producing a 630x1120 JPEG of 46,818 bytes. Direct comparison of the retained
079 and new images showed that the old black right/bottom borders and noisy
lower-right strip were absent in the new image. This is a verified result for
that capture, not a guarantee for every operating condition.
The green/dim cast remains. Color/exposure quality, orientation, physical
privacy-indicator presentation and sensor power-off remain unqualified.
External screen footage was not readable enough to establish UI or privacy
indicator proof. No provider or Talk calls were made in these runs, so voice
and complete media behavior are not qualified by this evidence.
Cleanup completed with a normal exit and complete receipts; test-owned
processes and capture handles were released. Those trials did not change
source or CI.
Landing
Accept this bounded geometry repair on its actual-owner regression and exact
historical image evidence. Landing uses a merge commit after predecessor
#48, with an exact cumulative
tree check that preserves the accepted privacy and packaging repairs and the
qualified Tab5 image pin. Tree equivalence is not new hardware coverage.
The current test merge has main
cf600d8206b4bc2e7694787fb12508bc9ab96b63and unchanged head
b05b470fabf54fbc9aac687488eafb76e5fc2814as parents.Its tree
53e178f13c884415fb08b9032fbc7d79cb6b7ba1equals that main plusthe frozen geometry delta, including the already-merged ordinary packaging
correction. The inherited packaging finding is therefore resolved in the
landing tree without rewriting the original signed geometry head.
The color and media limitations above remain open; this does not authorize
a release or establish end-to-end voice qualification.