Skip to content

decisions: owner decisions of 2 Nov 2026 (wireless charging prepared, portrait Getac, E-stop on the adapter plate, ZED 57 mm, battery trays, lift sensors and plate, tyre compression) - #84

Merged
BotshareAI merged 1 commit into
mainfrom
decisions/2026-11-02
Nov 2, 2026

Conversation

@BotshareAI

@BotshareAI BotshareAI commented Nov 2, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Records the platform lead's decisions of 2 November 2026 in decisions.yaml so that roadmap PR openAMRobot/openamrobot-docs#68 no longer contradicts the register. in_force stays P-03-rev20.2, with a note that these owner decisions are to be entered in P-03. Each superseded value is kept in its entry's supersedes history. Scope: decisions.yaml, tests/test_check_decisions.py, WATCHDOG.md (accepted-words table, regenerated), STATE.md.

Source line (added under sources, like "Alex decision 2026-10-30"): Alex decision 2026-11-02: platform decision of 2 November 2026; change request #83; to be entered in P-03.

Changed entries (old, then new):

  • CHARGING: "WCM-500-24 is the 2.0 charging path; receiver, SB50, F-CHG, charge relay and fault input designed in; Daly charger bench only with the E-stop pressed", now "WCM-500-24 prepared in 2.0: receiver (170 x 150 x 52 mm, manual V2.5) position reserved at the rear panel on the centre line, bottom 50 mm above the floor, base-sheet cut-out, F-CHG, KCHG and the start and fault lines designed and wired; receiver installed later; manual SB50 charging with the Daly 28.4 V / 20 A charger at any time; docking approaches, turns 180 degrees and reverses onto the transmitter". New check: Daly charger presented as bench only.
  • DOCK-NO-CONTACTS: "wireless charging belongs to 2.0", now "wireless charging prepared in 2.0, receiver installed later; docking approach turns 180 degrees and reverses onto the transmitter".
  • OPERATOR-PANEL: "ZX80 on a rotatable mount, landscape by default, portrait second", now "ZX80 portrait only (149.8 wide x 234 tall) on a fixed mount; no rotation, no landscape". UI-code check now flags landscape or a rotatable mount.
  • TABLET-MOUNT: "rotatable mount, two locked positions, landscape default", now "portrait only on a fixed mount; centre 40 mm lower; head light top edge 10 mm below the Getac bottom edge". Text check now flags landscape or a rotatable mount.
  • HEAD-CAMERA-IDENTITY: "lens 0.042 m ahead of the arm mount", now "lens 0.057 m ahead", height unchanged. Check now also flags 0.042 m / 42 mm.
  • SAFETY-PROCUREMENT: "second E-stop on the rear face of the static lift column", now "on top of the moving adapter plate, centred, behind the arm post, button up (about 0.90 / 1.08 / 1.25 m at L1000 / L1175 / L1350)". New check: second E-stop on the static column.
  • BATTERY-PLACEMENT: "one 8S1P pack, as close to the rear edge as practical (single row of 8 cells)", now "8 x EVE LF105, 8S, in two removable trays of 4 cells in the rear side pockets, joined by PWR-018; BMS and power distribution on a plate above the receiver position; nothing on top of the cells". New check: single row of 8 cells.
  • LIFT: "lift approved in principle", now "combined model including the lift implemented and verified in simulation; physical hardware build and acceptance in progress; release gates still open". Adds stop sensors (3 x SICK IME12-04BNSZC0S, rear face of the static column, z 120 / 295 / 470 mm), the flag rod on a rear extension of a one-piece adapter plate (425 x 100 x 10 mm, 6082-T6; supersedes the rear-flush rule, P-03 rev20.1 item 25 D2) and the base plate on the centre-frame arch (doubler, or through-bolts with a backing plate). Check messages reworded.
  • FRAMES-REP105: "base_link 0.098 m (axle height)", now also "wheel radius 0.100 m with base_link at 0.098 m is intended: 2 mm tyre compression, no suspension".

I checked DOCKING-NOT-CHARGING, SHARED-BASE and DRIVETRAIN and left them unchanged. They do not contradict these decisions, and base_link height is recorded only in FRAMES-REP105.

Work package

#83 (contract change request). Unblocks openAMRobot/openamrobot-docs#68

Integration Gate

Tests

Changed or added in tests/test_check_decisions.py: test_head_camera_lens_57_mm_ahead, test_second_estop_on_the_adapter_plate, test_daly_charger_is_not_bench_only, test_battery_in_two_trays, test_2026_11_02_values_recorded, test_tablet_mount, test_zx80_portrait_only_no_landscape, test_operator_panel_is_the_getac_zx80, test_p03_rev20_1_values_are_cited, test_rev20_2_values_in_force.

  • With this change: tests/test_check_decisions.py ran 98 tests, 98 passed, 0 skipped.
  • Revert run (main's decisions.yaml with these tests): 9 failed, 89 passed.
  • rollout/verify.sh: 293 of 293 tests executed, 0 skipped.

Evidence

Base SHA: a9e229e
Head SHA: 4056b8e

bash rollout/verify.sh                                  -> Tests executed: 293 of 293 (skipped 0); PASS: test; PASS: evidence
python3 tools/check_decisions.py --decisions decisions.yaml --maintainers maintainers.yaml --validate-only  -> 46 loaded, 41 recorded and scanned, 2 open, 3 superseded
python3 tools/check_decisions.py --decisions decisions.yaml --maintainers maintainers.yaml --root . --repository .github  -> 0 contradiction(s)
python3 tools/check_agent_rules.py --canonical agent-rules/SHARED_RULES.md --file AGENTS.md  -> PASS AGENTS.md (v2)
python3 tools/check_public_extract.py --root . --allowlist public-extract-allowlist.yaml --repository .github  -> 0 finding(s)
python3 -m pytest -q tests/test_check_decisions.py      -> 98 passed
python3 tools/watchdog.py --accepted-words              -> WATCHDOG.md table regenerated

Dependencies

None.

Safety impact

Record only, with no change to any safety function. SAFETY-PROCUREMENT changes only the mounting position of the second E-stop. The button, the contact block, the dual channel into the PNOZ s3, K1/K2 and the reset loop are unchanged. CHARGING records KCHG and the start and fault lines as designed and wired, and their function is unchanged. No file under safety_paths is changed. The SAFETY-PROCUREMENT owner (electrical-owner) and the platform lead must review the position change. A text scan is not safety evidence.

STATE.md

Updated: work-package row for #83, the in_force note, the known-gap line for SAFETY-PROCUREMENT and a Not verified line.

Not verified

  • Register values against the owner's decision record and P-03. The values are not yet entered in P-03, and the source documents are not in any repository.
  • Scans of consumer repositories (openamrobot-docs, openamr-platform-hw, openamr-platform-sw, openamrobot-ui) against the changed patterns. Text there that names a landscape or rotatable ZX80, the 42 mm lens offset, the E-stop on the static column, a single cell row or a bench-only Daly charger will be reported until it is relabelled.
  • Mechanical fit of the receiver position, battery trays, adapter plate and E-stop heights. Nothing physical was checked.

AI disclosure

Claude Code produced the register edits, tests, STATE.md update, the regenerated WATCHDOG.md table, contract change request #83 and this description from the owner's summary. The work-package owner must review it and write adopt, adapt or reject.

Contribution terms

  • Every commit is signed off under the DCO.
  • I am covered by an accepted Contributor Agreement.
  • Third-party material is identified with source and licence.
  • No confidential, personal, credential or export-controlled information is included.
  • No partner, customer or private person is named; the application is Use_Case_1.

🤖 Generated with Claude Code

Record the platform lead's decisions of 2 November 2026 (source
"Alex decision 2026-11-02"); in_force stays P-03-rev20.2 with a note
that the decisions are to be entered in P-03.

- CHARGING, DOCK-NO-CONTACTS: TZBOT WCM-500-24 prepared in 2.0 (receiver
  position, cut-out, F-CHG, KCHG, start and fault lines designed and
  wired; receiver installed later); manual SB50 charging with the Daly
  charger at any time; 180 degree turn and reverse onto the transmitter
- OPERATOR-PANEL, TABLET-MOUNT: ZX80 portrait only on a fixed mount;
  centre 40 mm lower; head light 10 mm below the Getac
- HEAD-CAMERA-IDENTITY: lens 0.057 m ahead (was 0.042 m)
- SAFETY-PROCUREMENT: second E-stop position on the moving adapter plate
  (record of position only; contacts and chain unchanged)
- BATTERY-PLACEMENT: two removable 4-cell trays, PWR-018
- LIFT: stop sensors, one-piece adapter plate (rear-flush rule
  superseded), base plate on the centre-frame arch, status wording
- FRAMES-REP105: wheel radius 0.100 m, base_link 0.098 m, 2 mm tyre
  compression
- superseded values kept in supersedes; patterns and tests updated;
  WATCHDOG.md accepted-words table regenerated; STATE.md updated

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DZnPEQTLKUwNLekv6fCbV1
Signed-off-by: Alex Reznichenko <info@botshare.ai>
@BotshareAI
BotshareAI marked this pull request as ready for review November 2, 2026 21:11
@BotshareAI
BotshareAI merged commit 5ed600e into main Nov 2, 2026
6 checks passed
@BotshareAI
BotshareAI deleted the decisions/2026-11-02 branch November 2, 2026 21:14
BotshareAI added a commit to openAMRobot/openamrobot-docs that referenced this pull request Nov 2, 2026
- Wireless charging prepared in 2.0: TZBOT WCM-500-24 receiver at the
  rear panel on the centre line, bottom 50 mm, class "prepared, installed
  later"; base-sheet cut-out, F-CHG, KCHG and the start and fault lines
  prepared; manual SB50 charging with the Daly 28.4 V / 20 A charger at
  any time; hardware page note replaced; GI-036 and GI-121 to GI-123 of
  kind "to solve before receiver installation"; release 3.0 wording
  removed.
- Getac ZX80 portrait only on a fixed portrait mount: BOM UI-002, model
  parts, reference pages; design-intent pocket without pivot detents or
  plunger; checker also rejects a rotatable mount and still fails a
  landscape Getac.
- GI-080: major, kind "manual layout pending", owner evans-kwashie; free
  space above the receiver about 190 x 229 x 165 mm; manual two-level
  layout with datasheet outlines in the next PR.
- Register cited at decisions.yaml 5ed600e; charging register conflict
  removed (14 source conflicts).
- Regenerated by run_all.sh: placement, issues (0 blockers, 4 majors,
  47 minors), mass export, parity, hardware sections, layout STEP,
  Playwright sync audit (144 parts, 0 mismatches); two evidence shots
  retaken.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DZnPEQfYXGfB3uXPRsWYAj
Signed-off-by: Alex Reznichenko <info@botshare.ai>
BotshareAI added a commit to openAMRobot/openamrobot-docs that referenced this pull request Nov 3, 2026
* Roadmap update 2 Nov 2026: work in progress

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DZnPENuVcmVSR9z5iEBd9u
Signed-off-by: Alex Reznichenko <info@botshare.ai>

* hardware: re-import PARTS from BOM Issue 7.14 (146 records)

Adds LFT-001 to LFT-007, AUX-002, AUX-003 and PWR-032; SAF-001 qty 2;
ARM-008 and CTL-002 qty 0; AUX-001 Falcon head light; MEC-018 DOLD SKU;
MEC-019 description; UI-002 rotatable 2-position mount. The re-import is
scripts/roadmap_model/bom714.py (idempotent).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DZnPENuVcmVSR9z5iEBd9u
Signed-off-by: Alex Reznichenko <info@botshare.ai>

* roadmap model: design-intent parts a to k (STEP, STL, parametric CadQuery scripts)

Eleven parametric scripts in scripts/roadmap_model/design_intent/ export
STEP and STL per variant to docs/assets/roadmap/model/design_intent/ with
index.json (method, thickness, mass, placement in base_footprint,
adjustment, fasteners). Class provisional; CAD owner: fridayali.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DZnPENuVcmVSR9z5iEBd9u
Signed-off-by: Alex Reznichenko <info@botshare.ai>

* roadmap model: placement data from sources, BOM coverage, harness and fasteners

scripts/roadmap_model/build.py reads datums.yaml (2026-11-01.c),
sensor_frames.yaml, facts.yaml (section B), parts.yaml and bom_map.yaml and
writes model/placement.json (front bay and rear zone parts packed with air
gaps, keep-outs around the lift-plate bolts, harness tubes per domain,
fittings, fasteners), exploded.json entries with stage 9 Harness,
bom_coverage.csv, fastener_schedule.csv, cable_list.csv and
assembly_sequence.csv. model.js loads placement.json, draws it on both
pages and hides small parts until High quality is on. Lift base plate
drawn 360 x 230 x 10 per M-01 rev19.7. Pages move to the 2 Nov 2026
snapshot (index, progress, architecture content per B1 to B6).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DZnPENuVcmVSR9z5iEBd9u
Signed-off-by: Alex Reznichenko <info@botshare.ai>

* roadmap model: front bay, rear zone, harness routing, analysis and layout STEP

Packer places the front-bay and rear-zone parts in the free space of the
CAD v0.2 base (side-panel return flanges voxelized), with the B5 zones and
the overflow alternative; design-intent meshes (MEC-015 brackets, MEC-007
tray, rear E-stop housing and clear-position ghost, Getac pocket and its
portrait ghost) drawn from model/design_intent. Cable tubes per segment.
analyse.py rebuilds the page scene in Python (self-check within 1.5 mm),
runs interference, arm sweep, sensor views, mass and stability, TZBOT,
services and K1/K2 fit, and writes geometry_issues.csv. export_layout.py
writes export/openamrobot2_layout.step in base_footprint.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DZnPENuVcmVSR9z5iEBd9u
Signed-off-by: Alex Reznichenko <info@botshare.ai>

* roadmap: hardware page model sections, conflicts, checker for sources and coverage

hardware.html gains generated sections (3D model coverage, mechanical
parts, geometry and hardware issues from geometry_issues.csv, conflicts
between sources); stale #14 draft, BUY-32 and register citations updated.
check_roadmap.py checks BOM 7.14 coverage and model quantities, one model
source for robot and exploded pages, sensors within 1 mm of
sensor_frames.yaml and upper-body items within 1 mm of datums.yaml
(model/source_snapshot.json), design heights, cable endpoints, and
partner terms. Payload budget 15 MB default view.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DZnPENuVcmVSR9z5iEBd9u
Signed-off-by: Alex Reznichenko <info@botshare.ai>

* roadmap: visual review evidence, changelog and state for the 2 Nov 2026 snapshot

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DZnPENuVcmVSR9z5iEBd9u
Signed-off-by: Alex Reznichenko <info@botshare.ai>

* roadmap model: convergence phase 1, combined model expansion and parity report (warn only)

Expand openamr-upperbody-sw combined_robot.xacro without ROS (pip xacro, minimal ament index under
../ament: platform-sw 131e500, upperbody-sw a8c304d, openarm_description 14ff67b) at bp000 and bp050,
map every URDF link with a visual to the roadmap parts (link_map.yaml) and compare world pose and
primitive size at L1000 / L1175 / L1350 and bp050 within 0.5 mm. CI runs the report as a warning.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DZnPEPTGKjyTz6iF38tLSa
Signed-off-by: Alex Reznichenko <info@botshare.ai>

* check_roadmap: sensor pose check in x, y, z and orientation; STATE.md figures from generated files

Review of ef90d7f: the sensor placement check compared the source point with the drawn bounding box plus
1 mm, and the ultrasonic special case never compared x. Each drawn base sensor body is now fitted rigidly
(Horn quaternion fit) to its reference body in its source frame (source_snapshot.json sensor_bodies, built
from the drawn mesh and checked against the platform-sw visual STL); the fitted origin must be within 1 mm
of sensor_frames.yaml in x, y and z and the orientation within 0.2 deg, and the body reference point must
sit at the frame plus the offset declared once in SENSOR_BODY_OFFSETS (with its source). The lift stop
sensors and the head camera are compared with the expanded combined model. The ultrasonic special case
is removed.

STATE.md states the snapshot, sync-audit, BOM, issue and parity figures; check_roadmap.py reads them from
the generated files and fails when STATE.md disagrees.

Tests (scripts/tests): +20 mm x, +2 mm y, +2 mm z and +1 deg pitch on one sensor each fail, the
committed model passes; the portrait second-position ghost passes and a portrait default fails.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DZnPEPTGKjyTz6iF38tLSa
Signed-off-by: Alex Reznichenko <info@botshare.ai>

* roadmap model: owner decisions of 2 Nov 2026 and the front bay options (work in progress)

B1 wheel compression as an intended contact; B2 second E-stop positions P1 to P4 (P2 drawn,
proposed) with a reach study; B3 lift base plate on the centre-frame arch with its load check;
B4 TZBOT receiver position, ferrite sheet, metal-free zone, base-sheet cut-out and floor
transmitter; C1 front bay options A and B with the receiver in place (switch on the exploded
view); C2 rear zone packed around the battery tray and the real pocket section; Getac portrait
pivot moved; C3 front harness below the LiDAR scan plane.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DZnPEPTGKjyTz6iF38tLSa
Signed-off-by: Alex Reznichenko <info@botshare.ai>

* roadmap: hardware page sections for the 2 Nov decisions, front bay options and parity; mass export

Hardware page: owner decisions of 2 Nov 2026 (wheel compression, second E-stop P1 to P4, lift base
plate on the arch with the load check, TZBOT receiver with cut-out, metal-free list, EMC distances and
questions for TZBOT), front bay option A vs B fit numbers, roadmap vs combined model (convergence goal,
phases, parity summary). mass_export.yaml per URDF link. Checker: wheel-to-floor overlap up to 2 mm
is an intended contact. Robot and overview pages follow the E-stop proposal and the decisions.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DZnPEPTGKjyTz6iF38tLSa
Signed-off-by: Alex Reznichenko <info@botshare.ai>

* roadmap: verification pass, front bay switch tags both options, receiver clash check, evidence

Both front bay options carry their option tag, so the exploded-view switch shows exactly one; the sync
audit requires the non-default option hidden on both pages (163 parts, 0 mismatches, regenerated by the
Playwright audit). External links open in a new tab (checked). Receiver clash with the printed
ultrasonic mounts reported. Unit tests run in CI. Evidence retaken.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DZnPEPTGKjyTz6iF38tLSa
Signed-off-by: Alex Reznichenko <info@botshare.ai>

* roadmap model: TZBOT values from the WCM-500-24 manual V2.5, charging-gap issue, stable issue IDs

Source: TZBOT "WCM-500-24 Wireless Charger Instruction Manual", WCM-500-24 V2.5, 2021-09-23. facts.yaml
tzbot_receiver / tzbot_transmitter: 170 x 150 x 52 mm, about 1.5 kg each, air gap 20 +-10 mm, X and Y +-20 mm,
no metal within 20 mm, 30 to 60 kHz, 2.400 to 2.485 GHz at 0 dBm, 12 to 30 V, 8 to 15 A, >= 85 %, signal
colours. They replace 240 x 210 x 65 mm, about 5 kg, 0 to 50 mm and +-30 mm (kept only in the conflicts entry).

frames.tzbot_layout() places the receiver at the B4 position (front edge 25 mm from the front panel inner
face, bottom 50 mm, 2 mm below the base sheet) and picks 170 mm along x (MMP.07 -6.2 mm vs -16.2 mm);
cut-out 210 x 190 mm (197 x 190 mm to the flange line). front_bay.py, build.py, analyse.py and the hardware
sections derive from it: bay plate at 0.122, strips outside |y| 0.095 (grid-aligned, 70 mm wide), ferrite
sheet 170 x 150 x 1 mm, floor transmitter 52 mm (provisional, offboard), red overlap band.

Known interference, warn only: receiver bottom 50 mm vs transmitter top 52 mm, overlap 2 mm, manual gap 10 to
30 mm. GI-036 (major, charging gap, owner fridayali, known, fix scheduled later by the owner) with the fix
options; declared in check_roadmap.py KNOWN_CONTACTS (three tests).

Issue IDs are stable (issue_ids.yaml, seeded from the IDs published in PR #68): GI-032, GI-034, GI-035,
GI-036 updated, GI-033 closed, new issues from GI-080. Reruns: metal-free zone, EMC (no item under 50 mm;
Wi-Fi coexistence issue), front bay A 21 parts / B 19, mass 96.1 kg (mass_export.yaml), parity
42 / 6 / 12, sync audit 164 parts 0 mismatches, checker, tests, mkdocs --strict, six pages, evidence.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DZnPEPN6WuBV5CZ9zmdTkn
Signed-off-by: Alex Reznichenko <info@botshare.ai>

* roadmap model: TZBOT receiver position reserved at the rear under the battery (release 3.0)

Wireless charging is a release 3.0 item; 2.0 charges by cable. Decided 2 Nov 2026: the TZBOT WCM-500-24
receiver position is reserved at the rear of the base under the battery cell group, centred on the long axis
and the cell-group centre, 170 mm across, 150 mm fore-aft, bottom 2 mm below the base-sheet underside (50 mm
above the floor). Class reserved, translucent, labelled, no mass in 2.0; the floor transmitter is not drawn.
Values stay from the TZBOT WCM-500-24 manual V2.5: 170 x 150 x 52 mm, about 1.5 kg, air gap 20 +-10 mm,
+-20 mm in X and Y, no metal within 20 mm.

Removed with the front position: ferrite sheet, metal-free zone, base-sheet cut-out extension (the original
contact-charger cut-out stays), floor transmitter and overlap band, and the electronics-above-the-receiver
constraint in the front bay (bay plate back on the base sheet, MMP.07 at its CAD position, no strips beside
the receiver; the option A shelf keeps its height). Front-position issues GI-032, GI-034, GI-035, GI-036,
GI-083, GI-084, GI-093 (and GI-033) closed: receiver moved to the rear.

Warning GI-099 (minor, reserved for 3.0, owner fridayali, known, to be solved in release 3.0): receiver top
102 mm vs the cells overlap 48.0 mm, vs the tray overlap 44.9 mm; base sheet overlap 2.0 mm, centre bracket
10.1 mm, rear plate 19.0 mm, rear castors 100 mm; charging gap with a 52 mm transmitter -2 mm. Declared as a
known contact in check_roadmap.py (tests updated).

Reruns: build, analysis, front bay options (A 22 placed; B 15, 6 not placed), mass 94.6 kg, parity
42 / 6 / 8, hardware sections, Playwright sync audit 156 parts 0 mismatches, STATE.md, checker and tests,
mkdocs --strict, check_docs.sh, six pages, evidence.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DZnPEPN6WuBV5CZ9zmdTkn
Signed-off-by: Alex Reznichenko <info@botshare.ai>

* roadmap: owner corrections of 2 Nov 2026 (rear layout, one front bay, Getac portrait, ZED 57 mm, E-stop on the adapter plate)

A1 and the receiver position of 2 Nov 2026 (to be entered in P-03 and M-01): TZBOT WCM-500-24
receiver reserved at the rear panel on the centre line (170 x 150 x 52 mm, x -0.369 to -0.199,
not installed in 2.0, release 3.0) with the 20 mm metal-free margin; 4 + 4 LF105 upright in the
side pockets (rear_layout.py, two pocket trays MEC-007, series link across the centre); power
electronics on the MEC-006 plate above the receiver (underside 122 mm), second level allowed,
nothing above a fuse. The single-row battery GLB node is hidden on both pages. Front receiver
items (ferrite, front cut-out, front metal-free zone, transmitter) removed.
A2: one front bay layout, plate on the base sheet, second tier because one plate does not take
every part; the option switch and the option B parts are removed.
A3: Getac ZX80 portrait (decided default), centre 40 mm lower, light bar 10 mm below; the
landscape position and the portrait ghost are removed; the checker passes portrait and fails a
landscape default (tests for both).
A4: ZED Mini lens 57 mm ahead of J1_A.
A5: second E-stop on the adapter plate behind the post, button up (actuator 0.901 / 1.076 /
1.251 m); P1, P3, P4, the ghosts and the random-pose reach study (estop_positions.py) removed.
Issues: 1 blocker (GI-080, FB-B and the BMS without space), 5 majors, 48 minors; closed issues
keep their reasons. Combined model expanded at upperbody-sw a8c304d (unchanged).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DZnPENuVcmVSR9z5iEBd9u
Signed-off-by: Alex Reznichenko <info@botshare.ai>

* changelog: owner corrections of 2 Nov 2026

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DZnPENuVcmVSR9z5iEBd9u
Signed-off-by: Alex Reznichenko <info@botshare.ai>

* roadmap: owner corrections A5 to A9 of 2 Nov 2026

A5: arm checks use only valid poses (joint limits, no self-collision,
no collision with the robot body); GI-081 closed.
A6: lift stop sensors on the rear face of the static column at z 120 /
295 / 470 mm, cables down the static column; one-piece 6082-T6 adapter
plate 425 x 100 x 10 mm with a 65 mm rear extension carrying the flag
rod (no separate rod bracket); stroke check of the rod and flag; GI-010
closed; design-intent STEP/STL updated.
A7: GI-082 minor, decided fix, CAD pending.
A9: CAD rear dimensions are the reference; GI-080 options tried in
order (none fits); GI-126 for the F0 distance and the 25 mm2 bend
radius; two removable battery trays joined by PWR-018 (conflict with
B-02 rev18.10 listed); GI-025 minor, decided fix, CAD pending.
Evidence retaken; STATE.md and CHANGELOG.md updated.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DZnPEPN6WuBV5CZ9zmdTkn
Signed-off-by: Alex Reznichenko <info@botshare.ai>

* roadmap: independent review fixes (GI-080 options 4 and 5, arm sweep, parity CI, leftovers)

- GI-080: options 4 (four compact MIDI fuse holders instead of FB-B) and
  5 (BMS upright against a battery tray wall) tried, both proposed;
  neither fits (plate floor 71 of 435 cm2 free with 5 mm gaps, largest
  free rectangle 30 x 64 mm; 2 mm between tray wall and margin). GI-080
  stays a blocker with all five attempts and their numbers.
- Arm valid-pose check: the gripper fingers count as adjacent to link7,
  so the motion no longer stops on a false self-collision at 10 deg.
- Documentation workflow: install the parity dependencies; the parity
  step fails on execution errors, out-of-tolerance items stay warnings.
- Leftovers: old E-stop positions in the conflicts table and the
  second_estop source text; side-face sensor text in exploded stage 7;
  two trays with PWR-018 in stage 3; STATE.md owner handle list; docs
  #69 in the after-the-snapshot note.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DZnPEPN6WuBV5CZ9zmdTkn
Signed-off-by: Alex Reznichenko <info@botshare.ai>

* roadmap: align with the decisions register after openAMRobot/.github#84

- Wireless charging prepared in 2.0: TZBOT WCM-500-24 receiver at the
  rear panel on the centre line, bottom 50 mm, class "prepared, installed
  later"; base-sheet cut-out, F-CHG, KCHG and the start and fault lines
  prepared; manual SB50 charging with the Daly 28.4 V / 20 A charger at
  any time; hardware page note replaced; GI-036 and GI-121 to GI-123 of
  kind "to solve before receiver installation"; release 3.0 wording
  removed.
- Getac ZX80 portrait only on a fixed portrait mount: BOM UI-002, model
  parts, reference pages; design-intent pocket without pivot detents or
  plunger; checker also rejects a rotatable mount and still fails a
  landscape Getac.
- GI-080: major, kind "manual layout pending", owner evans-kwashie; free
  space above the receiver about 190 x 229 x 165 mm; manual two-level
  layout with datasheet outlines in the next PR.
- Register cited at decisions.yaml 5ed600e; charging register conflict
  removed (14 source conflicts).
- Regenerated by run_all.sh: placement, issues (0 blockers, 4 majors,
  47 minors), mass export, parity, hardware sections, layout STEP,
  Playwright sync audit (144 parts, 0 mismatches); two evidence shots
  retaken.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DZnPEQfYXGfB3uXPRsWYAj
Signed-off-by: Alex Reznichenko <info@botshare.ai>

* reference: align second E-stop, light gap, ZED and battery rows with the 2 Nov register

Second E-stop on top of the moving adapter plate (SAFETY-PROCUREMENT), cable
through the lift cable chain, to be confirmed by the electrical and platform
safety owners; light-to-Getac gap 10 mm (TABLET-MOUNT); ZED Mini lens 57 mm;
4 + 4 cells in two trays marked proposed until the B-02 update. Adds a checker
scan so these superseded values cannot return to the reference pages.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DZnPERXdK4VNyx7trxz3QR
Signed-off-by: Alex Reznichenko <info@botshare.ai>

* roadmap: generated pages follow the 2 Nov register; scan covers them

hardware.html (BOM overrides in bom714.py, block text, diagram labels),
robot.html, index.html and progress.html: second E-stop on top of the
moving adapter plate with the cable through the lift cable chain, ZED Mini
lens 57 mm (frame 0.237), head light 10 mm below the Getac, 4 + 4 cells in
two trays marked proposed; dated entries labelled superseded. The superseded
value scan now also runs on the four generated pages. Sync audit rerun:
144 parts, 0 mismatches.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DZnPERXdK4VNyx7trxz3QR
Signed-off-by: Alex Reznichenko <info@botshare.ai>

---------

Signed-off-by: Alex Reznichenko <info@botshare.ai>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
BotshareAI added a commit to openAMRobot/openamrobot-docs that referenced this pull request Nov 3, 2026
* Roadmap update 2 Nov 2026: work in progress

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DZnPENuVcmVSR9z5iEBd9u
Signed-off-by: Alex Reznichenko <info@botshare.ai>

* hardware: re-import PARTS from BOM Issue 7.14 (146 records)

Adds LFT-001 to LFT-007, AUX-002, AUX-003 and PWR-032; SAF-001 qty 2;
ARM-008 and CTL-002 qty 0; AUX-001 Falcon head light; MEC-018 DOLD SKU;
MEC-019 description; UI-002 rotatable 2-position mount. The re-import is
scripts/roadmap_model/bom714.py (idempotent).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DZnPENuVcmVSR9z5iEBd9u
Signed-off-by: Alex Reznichenko <info@botshare.ai>

* roadmap model: design-intent parts a to k (STEP, STL, parametric CadQuery scripts)

Eleven parametric scripts in scripts/roadmap_model/design_intent/ export
STEP and STL per variant to docs/assets/roadmap/model/design_intent/ with
index.json (method, thickness, mass, placement in base_footprint,
adjustment, fasteners). Class provisional; CAD owner: fridayali.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DZnPENuVcmVSR9z5iEBd9u
Signed-off-by: Alex Reznichenko <info@botshare.ai>

* roadmap model: placement data from sources, BOM coverage, harness and fasteners

scripts/roadmap_model/build.py reads datums.yaml (2026-11-01.c),
sensor_frames.yaml, facts.yaml (section B), parts.yaml and bom_map.yaml and
writes model/placement.json (front bay and rear zone parts packed with air
gaps, keep-outs around the lift-plate bolts, harness tubes per domain,
fittings, fasteners), exploded.json entries with stage 9 Harness,
bom_coverage.csv, fastener_schedule.csv, cable_list.csv and
assembly_sequence.csv. model.js loads placement.json, draws it on both
pages and hides small parts until High quality is on. Lift base plate
drawn 360 x 230 x 10 per M-01 rev19.7. Pages move to the 2 Nov 2026
snapshot (index, progress, architecture content per B1 to B6).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DZnPENuVcmVSR9z5iEBd9u
Signed-off-by: Alex Reznichenko <info@botshare.ai>

* roadmap model: front bay, rear zone, harness routing, analysis and layout STEP

Packer places the front-bay and rear-zone parts in the free space of the
CAD v0.2 base (side-panel return flanges voxelized), with the B5 zones and
the overflow alternative; design-intent meshes (MEC-015 brackets, MEC-007
tray, rear E-stop housing and clear-position ghost, Getac pocket and its
portrait ghost) drawn from model/design_intent. Cable tubes per segment.
analyse.py rebuilds the page scene in Python (self-check within 1.5 mm),
runs interference, arm sweep, sensor views, mass and stability, TZBOT,
services and K1/K2 fit, and writes geometry_issues.csv. export_layout.py
writes export/openamrobot2_layout.step in base_footprint.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DZnPENuVcmVSR9z5iEBd9u
Signed-off-by: Alex Reznichenko <info@botshare.ai>

* roadmap: hardware page model sections, conflicts, checker for sources and coverage

hardware.html gains generated sections (3D model coverage, mechanical
parts, geometry and hardware issues from geometry_issues.csv, conflicts
between sources); stale #14 draft, BUY-32 and register citations updated.
check_roadmap.py checks BOM 7.14 coverage and model quantities, one model
source for robot and exploded pages, sensors within 1 mm of
sensor_frames.yaml and upper-body items within 1 mm of datums.yaml
(model/source_snapshot.json), design heights, cable endpoints, and
partner terms. Payload budget 15 MB default view.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DZnPENuVcmVSR9z5iEBd9u
Signed-off-by: Alex Reznichenko <info@botshare.ai>

* roadmap: visual review evidence, changelog and state for the 2 Nov 2026 snapshot

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DZnPENuVcmVSR9z5iEBd9u
Signed-off-by: Alex Reznichenko <info@botshare.ai>

* roadmap model: convergence phase 1, combined model expansion and parity report (warn only)

Expand openamr-upperbody-sw combined_robot.xacro without ROS (pip xacro, minimal ament index under
../ament: platform-sw 131e500, upperbody-sw a8c304d, openarm_description 14ff67b) at bp000 and bp050,
map every URDF link with a visual to the roadmap parts (link_map.yaml) and compare world pose and
primitive size at L1000 / L1175 / L1350 and bp050 within 0.5 mm. CI runs the report as a warning.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DZnPEPTGKjyTz6iF38tLSa
Signed-off-by: Alex Reznichenko <info@botshare.ai>

* check_roadmap: sensor pose check in x, y, z and orientation; STATE.md figures from generated files

Review of ef90d7f: the sensor placement check compared the source point with the drawn bounding box plus
1 mm, and the ultrasonic special case never compared x. Each drawn base sensor body is now fitted rigidly
(Horn quaternion fit) to its reference body in its source frame (source_snapshot.json sensor_bodies, built
from the drawn mesh and checked against the platform-sw visual STL); the fitted origin must be within 1 mm
of sensor_frames.yaml in x, y and z and the orientation within 0.2 deg, and the body reference point must
sit at the frame plus the offset declared once in SENSOR_BODY_OFFSETS (with its source). The lift stop
sensors and the head camera are compared with the expanded combined model. The ultrasonic special case
is removed.

STATE.md states the snapshot, sync-audit, BOM, issue and parity figures; check_roadmap.py reads them from
the generated files and fails when STATE.md disagrees.

Tests (scripts/tests): +20 mm x, +2 mm y, +2 mm z and +1 deg pitch on one sensor each fail, the
committed model passes; the portrait second-position ghost passes and a portrait default fails.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DZnPEPTGKjyTz6iF38tLSa
Signed-off-by: Alex Reznichenko <info@botshare.ai>

* roadmap model: owner decisions of 2 Nov 2026 and the front bay options (work in progress)

B1 wheel compression as an intended contact; B2 second E-stop positions P1 to P4 (P2 drawn,
proposed) with a reach study; B3 lift base plate on the centre-frame arch with its load check;
B4 TZBOT receiver position, ferrite sheet, metal-free zone, base-sheet cut-out and floor
transmitter; C1 front bay options A and B with the receiver in place (switch on the exploded
view); C2 rear zone packed around the battery tray and the real pocket section; Getac portrait
pivot moved; C3 front harness below the LiDAR scan plane.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DZnPEPTGKjyTz6iF38tLSa
Signed-off-by: Alex Reznichenko <info@botshare.ai>

* roadmap: hardware page sections for the 2 Nov decisions, front bay options and parity; mass export

Hardware page: owner decisions of 2 Nov 2026 (wheel compression, second E-stop P1 to P4, lift base
plate on the arch with the load check, TZBOT receiver with cut-out, metal-free list, EMC distances and
questions for TZBOT), front bay option A vs B fit numbers, roadmap vs combined model (convergence goal,
phases, parity summary). mass_export.yaml per URDF link. Checker: wheel-to-floor overlap up to 2 mm
is an intended contact. Robot and overview pages follow the E-stop proposal and the decisions.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DZnPEPTGKjyTz6iF38tLSa
Signed-off-by: Alex Reznichenko <info@botshare.ai>

* roadmap: verification pass, front bay switch tags both options, receiver clash check, evidence

Both front bay options carry their option tag, so the exploded-view switch shows exactly one; the sync
audit requires the non-default option hidden on both pages (163 parts, 0 mismatches, regenerated by the
Playwright audit). External links open in a new tab (checked). Receiver clash with the printed
ultrasonic mounts reported. Unit tests run in CI. Evidence retaken.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DZnPEPTGKjyTz6iF38tLSa
Signed-off-by: Alex Reznichenko <info@botshare.ai>

* roadmap model: TZBOT values from the WCM-500-24 manual V2.5, charging-gap issue, stable issue IDs

Source: TZBOT "WCM-500-24 Wireless Charger Instruction Manual", WCM-500-24 V2.5, 2021-09-23. facts.yaml
tzbot_receiver / tzbot_transmitter: 170 x 150 x 52 mm, about 1.5 kg each, air gap 20 +-10 mm, X and Y +-20 mm,
no metal within 20 mm, 30 to 60 kHz, 2.400 to 2.485 GHz at 0 dBm, 12 to 30 V, 8 to 15 A, >= 85 %, signal
colours. They replace 240 x 210 x 65 mm, about 5 kg, 0 to 50 mm and +-30 mm (kept only in the conflicts entry).

frames.tzbot_layout() places the receiver at the B4 position (front edge 25 mm from the front panel inner
face, bottom 50 mm, 2 mm below the base sheet) and picks 170 mm along x (MMP.07 -6.2 mm vs -16.2 mm);
cut-out 210 x 190 mm (197 x 190 mm to the flange line). front_bay.py, build.py, analyse.py and the hardware
sections derive from it: bay plate at 0.122, strips outside |y| 0.095 (grid-aligned, 70 mm wide), ferrite
sheet 170 x 150 x 1 mm, floor transmitter 52 mm (provisional, offboard), red overlap band.

Known interference, warn only: receiver bottom 50 mm vs transmitter top 52 mm, overlap 2 mm, manual gap 10 to
30 mm. GI-036 (major, charging gap, owner fridayali, known, fix scheduled later by the owner) with the fix
options; declared in check_roadmap.py KNOWN_CONTACTS (three tests).

Issue IDs are stable (issue_ids.yaml, seeded from the IDs published in PR #68): GI-032, GI-034, GI-035,
GI-036 updated, GI-033 closed, new issues from GI-080. Reruns: metal-free zone, EMC (no item under 50 mm;
Wi-Fi coexistence issue), front bay A 21 parts / B 19, mass 96.1 kg (mass_export.yaml), parity
42 / 6 / 12, sync audit 164 parts 0 mismatches, checker, tests, mkdocs --strict, six pages, evidence.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DZnPEPN6WuBV5CZ9zmdTkn
Signed-off-by: Alex Reznichenko <info@botshare.ai>

* roadmap model: TZBOT receiver position reserved at the rear under the battery (release 3.0)

Wireless charging is a release 3.0 item; 2.0 charges by cable. Decided 2 Nov 2026: the TZBOT WCM-500-24
receiver position is reserved at the rear of the base under the battery cell group, centred on the long axis
and the cell-group centre, 170 mm across, 150 mm fore-aft, bottom 2 mm below the base-sheet underside (50 mm
above the floor). Class reserved, translucent, labelled, no mass in 2.0; the floor transmitter is not drawn.
Values stay from the TZBOT WCM-500-24 manual V2.5: 170 x 150 x 52 mm, about 1.5 kg, air gap 20 +-10 mm,
+-20 mm in X and Y, no metal within 20 mm.

Removed with the front position: ferrite sheet, metal-free zone, base-sheet cut-out extension (the original
contact-charger cut-out stays), floor transmitter and overlap band, and the electronics-above-the-receiver
constraint in the front bay (bay plate back on the base sheet, MMP.07 at its CAD position, no strips beside
the receiver; the option A shelf keeps its height). Front-position issues GI-032, GI-034, GI-035, GI-036,
GI-083, GI-084, GI-093 (and GI-033) closed: receiver moved to the rear.

Warning GI-099 (minor, reserved for 3.0, owner fridayali, known, to be solved in release 3.0): receiver top
102 mm vs the cells overlap 48.0 mm, vs the tray overlap 44.9 mm; base sheet overlap 2.0 mm, centre bracket
10.1 mm, rear plate 19.0 mm, rear castors 100 mm; charging gap with a 52 mm transmitter -2 mm. Declared as a
known contact in check_roadmap.py (tests updated).

Reruns: build, analysis, front bay options (A 22 placed; B 15, 6 not placed), mass 94.6 kg, parity
42 / 6 / 8, hardware sections, Playwright sync audit 156 parts 0 mismatches, STATE.md, checker and tests,
mkdocs --strict, check_docs.sh, six pages, evidence.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DZnPEPN6WuBV5CZ9zmdTkn
Signed-off-by: Alex Reznichenko <info@botshare.ai>

* roadmap: owner corrections of 2 Nov 2026 (rear layout, one front bay, Getac portrait, ZED 57 mm, E-stop on the adapter plate)

A1 and the receiver position of 2 Nov 2026 (to be entered in P-03 and M-01): TZBOT WCM-500-24
receiver reserved at the rear panel on the centre line (170 x 150 x 52 mm, x -0.369 to -0.199,
not installed in 2.0, release 3.0) with the 20 mm metal-free margin; 4 + 4 LF105 upright in the
side pockets (rear_layout.py, two pocket trays MEC-007, series link across the centre); power
electronics on the MEC-006 plate above the receiver (underside 122 mm), second level allowed,
nothing above a fuse. The single-row battery GLB node is hidden on both pages. Front receiver
items (ferrite, front cut-out, front metal-free zone, transmitter) removed.
A2: one front bay layout, plate on the base sheet, second tier because one plate does not take
every part; the option switch and the option B parts are removed.
A3: Getac ZX80 portrait (decided default), centre 40 mm lower, light bar 10 mm below; the
landscape position and the portrait ghost are removed; the checker passes portrait and fails a
landscape default (tests for both).
A4: ZED Mini lens 57 mm ahead of J1_A.
A5: second E-stop on the adapter plate behind the post, button up (actuator 0.901 / 1.076 /
1.251 m); P1, P3, P4, the ghosts and the random-pose reach study (estop_positions.py) removed.
Issues: 1 blocker (GI-080, FB-B and the BMS without space), 5 majors, 48 minors; closed issues
keep their reasons. Combined model expanded at upperbody-sw a8c304d (unchanged).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DZnPENuVcmVSR9z5iEBd9u
Signed-off-by: Alex Reznichenko <info@botshare.ai>

* changelog: owner corrections of 2 Nov 2026

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DZnPENuVcmVSR9z5iEBd9u
Signed-off-by: Alex Reznichenko <info@botshare.ai>

* roadmap: owner corrections A5 to A9 of 2 Nov 2026

A5: arm checks use only valid poses (joint limits, no self-collision,
no collision with the robot body); GI-081 closed.
A6: lift stop sensors on the rear face of the static column at z 120 /
295 / 470 mm, cables down the static column; one-piece 6082-T6 adapter
plate 425 x 100 x 10 mm with a 65 mm rear extension carrying the flag
rod (no separate rod bracket); stroke check of the rod and flag; GI-010
closed; design-intent STEP/STL updated.
A7: GI-082 minor, decided fix, CAD pending.
A9: CAD rear dimensions are the reference; GI-080 options tried in
order (none fits); GI-126 for the F0 distance and the 25 mm2 bend
radius; two removable battery trays joined by PWR-018 (conflict with
B-02 rev18.10 listed); GI-025 minor, decided fix, CAD pending.
Evidence retaken; STATE.md and CHANGELOG.md updated.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DZnPEPN6WuBV5CZ9zmdTkn
Signed-off-by: Alex Reznichenko <info@botshare.ai>

* roadmap: independent review fixes (GI-080 options 4 and 5, arm sweep, parity CI, leftovers)

- GI-080: options 4 (four compact MIDI fuse holders instead of FB-B) and
  5 (BMS upright against a battery tray wall) tried, both proposed;
  neither fits (plate floor 71 of 435 cm2 free with 5 mm gaps, largest
  free rectangle 30 x 64 mm; 2 mm between tray wall and margin). GI-080
  stays a blocker with all five attempts and their numbers.
- Arm valid-pose check: the gripper fingers count as adjacent to link7,
  so the motion no longer stops on a false self-collision at 10 deg.
- Documentation workflow: install the parity dependencies; the parity
  step fails on execution errors, out-of-tolerance items stay warnings.
- Leftovers: old E-stop positions in the conflicts table and the
  second_estop source text; side-face sensor text in exploded stage 7;
  two trays with PWR-018 in stage 3; STATE.md owner handle list; docs
  #69 in the after-the-snapshot note.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DZnPEPN6WuBV5CZ9zmdTkn
Signed-off-by: Alex Reznichenko <info@botshare.ai>

* roadmap: align with the decisions register after openAMRobot/.github#84

- Wireless charging prepared in 2.0: TZBOT WCM-500-24 receiver at the
  rear panel on the centre line, bottom 50 mm, class "prepared, installed
  later"; base-sheet cut-out, F-CHG, KCHG and the start and fault lines
  prepared; manual SB50 charging with the Daly 28.4 V / 20 A charger at
  any time; hardware page note replaced; GI-036 and GI-121 to GI-123 of
  kind "to solve before receiver installation"; release 3.0 wording
  removed.
- Getac ZX80 portrait only on a fixed portrait mount: BOM UI-002, model
  parts, reference pages; design-intent pocket without pivot detents or
  plunger; checker also rejects a rotatable mount and still fails a
  landscape Getac.
- GI-080: major, kind "manual layout pending", owner evans-kwashie; free
  space above the receiver about 190 x 229 x 165 mm; manual two-level
  layout with datasheet outlines in the next PR.
- Register cited at decisions.yaml 5ed600e; charging register conflict
  removed (14 source conflicts).
- Regenerated by run_all.sh: placement, issues (0 blockers, 4 majors,
  47 minors), mass export, parity, hardware sections, layout STEP,
  Playwright sync audit (144 parts, 0 mismatches); two evidence shots
  retaken.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DZnPEQfYXGfB3uXPRsWYAj
Signed-off-by: Alex Reznichenko <info@botshare.ai>

* reference: align second E-stop, light gap, ZED and battery rows with the 2 Nov register

Second E-stop on top of the moving adapter plate (SAFETY-PROCUREMENT), cable
through the lift cable chain, to be confirmed by the electrical and platform
safety owners; light-to-Getac gap 10 mm (TABLET-MOUNT); ZED Mini lens 57 mm;
4 + 4 cells in two trays marked proposed until the B-02 update. Adds a checker
scan so these superseded values cannot return to the reference pages.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DZnPERXdK4VNyx7trxz3QR
Signed-off-by: Alex Reznichenko <info@botshare.ai>

* roadmap: generated pages follow the 2 Nov register; scan covers them

hardware.html (BOM overrides in bom714.py, block text, diagram labels),
robot.html, index.html and progress.html: second E-stop on top of the
moving adapter plate with the cable through the lift cable chain, ZED Mini
lens 57 mm (frame 0.237), head light 10 mm below the Getac, 4 + 4 cells in
two trays marked proposed; dated entries labelled superseded. The superseded
value scan now also runs on the four generated pages. Sync audit rerun:
144 parts, 0 mismatches.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DZnPERXdK4VNyx7trxz3QR
Signed-off-by: Alex Reznichenko <info@botshare.ai>

* roadmap model: harness routing with tie points, wheel guards, DP-LIFT and the lift energy chain (work in progress)

Named harnesses W01 to W09 on supported routes found on a voxel model of
the base (keep-outs, withdrawal paths, bend radius per cable class), tie
points at 150 mm or less, labels and disconnect points per cable, the
upper-body harness through a vertical energy chain behind the column,
checker rules with tests.

Signed-off-by: Alex Reznichenko <info@botshare.ai>

* roadmap model: harness routes, tie points, wheel guards and lift energy chain; checks and evidence

- harness.py: named harnesses W01 to W09, voxel router with keep-outs,
  withdrawal paths and class bend radius, smooth lug-to-lug links,
  tie points within 50 mm of connectors and branches and at 150 mm or
  less, strain relief and grommets, route cache by input hash
- lift: DP-LIFT, fixed sleeve, vertical energy chain checked over the
  stroke, drawn for the current lift height in model.js
- cable_list.csv harness, labels, disconnect and radius columns;
  harness_routes.json; harness_cad_changes.csv; fasteners; assembly
  steps 9 to 11 and 18; hardware page harness table
- check_roadmap.py harness rules with failing and passing tests
- GI-129, GI-130: CBL-P02 and CBL-P05 have no compliant route in the
  current rear layout (rear-layout rework with GI-080)
- evidence/2026-11-03-harness screenshots; STATE.md and CHANGELOG

Signed-off-by: Alex Reznichenko <info@botshare.ai>

* roadmap model: self-check includes the lift energy chain links; checker gates the self-check

model.js draws the chain links (chainLinks + M.setChain at travel 0) on the page,
but the Python analysis scene only had the fixed-end bracket, so the self-check
reported 263 mm on lift_energy_chain. analyse.py now builds the same link boxes
(chain_link_meshes, same formula as M.setChain); the self-check is back to
3.0 mm (rod_corner_bracket, unchanged from main). check_roadmap.py fails when
the self-check is missing or above 5 mm, with tests. Issue counts unchanged
(0 blocker, 6 major, 47 minor); model.js and exploded.json unchanged, so the
sync audit stays valid.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DZnPERXdK4VNyx7trxz3QR
Signed-off-by: Alex Reznichenko <info@botshare.ai>

---------

Signed-off-by: Alex Reznichenko <info@botshare.ai>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
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