openspec/changes/archive/2026-09-10-add-sensor-lens-kit/reviews/2026-09-10-re-advise.md
Re-advise — add-sensor-lens-kit
ADVISE: accept READER: fable-5.1-arch-review SPAWN: /Users/dukejones/work/ClientProjects/AllSystemsGo/AICamera/.spawns/add-sensor-lens-kit-1789038683-8881-84d4b0da
Read after Grok’s send-back amend. Prior send-back: reviews/2026-09-10-advise.md (sol-arch-review).
Independent take (blind pass)
Written from the proposal Why, openspec/specs/hardware-kit/spec.md, the delta, docs/SENSORS.md, docs/CAMERAS.md, and docs/LENS.md before opening design.md or tasks.md.
- Pin: the body must satisfy the living-spec /i sidecar, and CAMERAS.md says no CSI/GMSL module speaks /i. Design must name the body /i path (PL or LPL contacts or barrel port to a UART on Thor), not defer it to “a reader later”.
- Pin: sidecar timestamp source per camera. Body is Thor-clocked. Sat picture is camera-encoded; /i bridge and ToF are separate Ethernet streams. Design must say which clock stamps them (PTP on the sat vs Thor arrival) or “locked to timecode” is unmet.
- Pin: the shipped sat is RV1126B core in our case with UART ToF and barrel /i. That is firmware we own, forwarding ToF and /i over Ethernet. Design must say whether this change scopes that firmware or hands it to a follow-on.
- Pin: “electronic iris and/or focus” is too loose against a sidecar that requires both T-stop and focus distance. Cine /i glass is manual with external FIZ motors; EF electronic glass has in-lens motors but needs an EF electronic mount. Design must pick the fork or name both.
- Pin: body pipe is CSI-2. GMSL on the body is a deserializer card and BSP weeks for a 20 cm flex. “CSI-2 or GMSL” is acceptable only if GMSL is not on the body BOM.
- Refuse: HSB or USB as production body ingest. Refuse: sealed P-iris turret as shipped sat class. Both are in the delta; the design must not reopen them.
- Refuse: retail SKUs in this change. add-datasheet-pack owns them, and the living-spec manifest rule applies to RV1126B module, ToF, and /i bridge once steered.
- Tradeoff: PoE H.265 sats give 100 m, cheap BOM, days of bring-up, and no PoE on Thor. They cost RAW into ISP, cuVSLAM on sat pixels, and hardware genlock. Sync is PTP class. Design should state this as accepted, not silent.
- Encoder budget: body takes one of two T4000 NVENC HQ 4Kp30 slots; sats are camera-encoded and Thor only remuxes. Consistent with the living spec sag rule.
- Power: PoE switch feeds sats and never backfeeds Thor. ToF and /i bridge power on the sat module itself, not a third supply.
Comparison
Both send-back conditions are met, in the design and in the delta, and both packet anchors hold.
- HSB/USB is named as AGX bring-up fallback only at
design.md:14-16, and the delta’s body requirement says it SHALL NOT be the production path. Production body is enclosure-mounted CSI/GMSL into Thor NVENC (design.md:11-13). - The P-iris turret is an encode mule at
design.md:17-18. The shipped sat is RV1126B core in our case with barrel /i to Ethernet sidecar and UART 1D ToF on every sat (design.md:19-22). The delta says the turret SHALL NOT be the shipped class.
Against my take:
- Take 1 (body /i path) is answered at class level. The body class row in
docs/SENSORS.md:39is PL/LPL with /i or EF electronic, anddocs/LENS.md:48gives the transport: PL contacts or barrel port to UART/USB on Thor. Design.md points at that. Good enough for a classes-not-SKUs doc. - Take 2 (clock) is answered structurally, not explicitly. Putting picture, /i, and ToF on one RV1126B module is exactly what makes a single timecode possible. That is the architectural reason the module beats the turret, and it is the strongest steelman for the amend.
- Take 6, 7, 9, 10 are already in the delta or the living spec. Nothing reopened.
- Take 5:
design.md:11keeps “CSI/GMSL” on the body.docs/CAMERAS.md:68pins the body to CSI-2 and reserves GMSL for sats. I read the body GMSL as a flex-length hedge, not a deser card. Acceptable.
Notes for act and for add-datasheet-pack
These are the take items the design does not answer. None contradicts the living spec, so none is a send-back. They are what the next node must pin.
- Sat lens control fork (take 4). Design.md says “motorized iris/focus” and “barrel /i” without choosing how the motors get there. Two honest shapes: cine /i glass plus external FIZ motors and a barrel-to-Ethernet bridge, or EF electronic glass on an EF electronic mount board with EF data mapped into /i fields. The first is a four-figure add per sat. The second means the RV1126B module needs a mount with contacts, which almost none have. add-datasheet-pack should shop with this fork named, or it will return a C-mount module that satisfies neither.
- Sidecar clock source (take 2). Write it down: the sat module stamps /i and ToF with its own encoder timecode, PTP-disciplined, and Thor remuxes without restamping. Thor arrival time is only for the bridge-box case. One line in design.md or LENS.md closes this.
- Sat module firmware is a change of its own (take 3). “RV1126B module + our case” with UART ToF forwarded over Ethernet is firmware we own. Proposal out-of-scope does not name it. Name the follow-on change-id at fold time so the fold does not leave the shipped sat as an unowned requirement.
- Accepted tradeoff should be written (take 8). PoE H.265 sats give up RAW into ISP, cuVSLAM on sat pixels, and hardware genlock.
docs/CAMERAS.mdalready carries the table. Design.md should say the trade is accepted so nobody reopens GMSL sats as a v1 fix later. - tasks.md hygiene. Line 5 is an unboxed note in a checklist. Harmless; fold will drop it.
Same-session author and reader: no. Author is grok-conductor, reader is this spawn.