Skip to content

docs(plans): BEAST-01 rebuild execution ladder — rungs, artifact design, rung-0 decisions - #252

Draft
Coldaine wants to merge 4 commits into
mainfrom
claude/robot-repo-rebuild-bldvin
Draft

docs(plans): BEAST-01 rebuild execution ladder — rungs, artifact design, rung-0 decisions#252
Coldaine wants to merge 4 commits into
mainfrom
claude/robot-repo-rebuild-bldvin

Conversation

@Coldaine

@Coldaine Coldaine commented Aug 27, 2026

Copy link
Copy Markdown
Collaborator

Description

Adds the execution ladder for the BEAST-01 clean-room rebuild as a companion work order to the governing plan held on #247. The plan on #247 owns what survives and why (preserve list, evidence, watch-outs); this document owns how the work is sequenced: nine rungs (ratify → knowledge extraction + memory triage → pin the world → CI proof → beast_hardware → C1 side-by-side → C2 fresh metal → cutover + single-commit delete → close out), with the invariant that the robot is never broken below rung 7 and every rung is revertible.

It also records, so nobody rebuilds them, the pieces that already exist: self-hosted runners (moosegoose-general, moosegoose-n5-large), the arm64 beast-ros GHCR image build with buildx/GHA layer caching, and the rollback-proven source-mode beast-pull deploy (2026-08-14 supervised rollout).

Rung 0 names the five owner decisions that gate execution, with recommendations: merge #247 (with DB-cited numbers, including resolving the 8.332 vs 8.368 V pack-trip discrepancy), decide ugv_cockpit (recommend temporary shim with expiry), pick the artifact form, keep one repo (re-evaluate after cutover), and optionally run the autonomy on-ramp's first real mapping run on the old stack pre-cutover so rung 5's side-by-side has a real map to compare against. Rung 1 adds the evidence-class triage of the insights DB (measurement / identity / diagnosis / procedure) so mis-diagnosed incidents stop passing as facts without deleting recorded history.

The second commit is a research pass over current Jetson/ROS deployment practice (container-vs-native on Jetson, L4T/JetPack base-image alignment, ROOTFS_AB/nvbootctrl field reports, QEMU-vs-native arm64 CI build numbers). It moved the artifact-form recommendation to container as the deploy vehicle — the artifact CI proves is byte-for-byte what the robot runs, and the CPU-only stack sidesteps the L4T/CUDA alignment trap today, with the GPU-era base-image rule recorded alongside the decision. Release-dir A/B stays as the rung-5 fallback; OS-layer ROOTFS_AB stays out of scope with its failure modes named. Rung 3 gains the QEMU cost figures and the native-arm64-runner escape hatch.

The third commit folds in owner-discussion findings from 2026-08-28: three preserve-list candidates the six knowledge items do not cover (the camera-to-cockpit pipeline, decided by NORTH_STAR G7 naming video as a portal surface; the autonomy on-ramp Phase 1 calibration constants and ekf.yaml fusion config, whose operative values live in old-tree files Phase D deletes; kinematics/URDF from ugv_description), the optional pre-cutover mapping run as decision 5, and a plans-directory harvest rule at rung 1 — hazards that exist only in plan prose (rosbridge bare-NaN, keyboard_ctrl SIGHUP, time-sync ordering, ESP32 velocity latch) land as insights before their code dies, and plans die with their target code at rung 8.

Branch Scope

  • I reviewed all work currently on this branch.
  • I confirmed which branch changes belong in this PR.
  • Branch/work reviewed: single coherent branch — three commits, two files (new plan + index row; the research amendment; the owner-discussion amendment).
  • Included here: all branch changes.
  • Excluded or left for a later PR: None.

PR Shape

  • I considered whether this work should be split into multiple PRs.
  • Rationale: one plan document plus its required index entry is a single review unit; the subsequent amendments revise that same document, so they belong in the same review.

Independent Review

  • I called a subagent or independent reviewer and incorporated or recorded the result.
  • Not called because this change was narrow/mechanical, no suitable reviewer was available, or this branch already received equivalent review.
  • Review notes: docs-only work order whose substance is precisely what the owner must review — it exists to be ratified or amended at rung 0, and its parent plan already received independent review on docs(plans): BEAST-01 platform rebuild — tear it down, keep a short list, build it back #247. The artifact-form section was checked against external practitioner sources (Jetson container base-image alignment guidance, ROOTFS_AB/nvbootctrl field reports, QEMU-vs-native arm64 CI measurements) rather than a code reviewer, which is the review that section needed. The third commit's additions come from an owner discussion cross-checked against the tree (ugv_vision entry points, build_first.sh allowlists, the on-ramp plan's executed-phase record).

Documentation

  • Documentation updates made: docs/plans/2026-08-27-beast-rebuild-execution-ladder.md (new work order, then research and owner-discussion amendments), docs/plans/README.md (index row, per the plans-directory convention).
  • Documentation considered but not changed: docs/deploy.md, docs/beast-ops.md, AGENTS.md — the ladder assigns their updates to rung 8 (close-out) rather than editing them ahead of executed work; docs/NORTH_STAR.md untouched by design.
  • Documentation workflow: AGENTS.md "Where docs live" followed — proposed work goes in docs/plans/ with an index entry; no owner doc claims changed state.

Superseded Docs / Cleanup

Validation

  • Checks run: git diff --check (clean); manual verification of every repo-state claim in the document against the tree (workflow names, runner labels, cache config in .github/workflows/beast-ros-image.yml, deploy state in docs/deploy.md, feat(beast): autonomy stack overhaul - explore_lite, tuned Nav2/SLAM params, base_node limits #245's post-plan changes, ugv_main/ugv_else package inventory and build allowlists); external-practice claims checked against multiple independent sources before landing.
  • Checks skipped: web/robot test suites — no code touched.

Risk / Rollback

  • Risk: Low — a proposed work order that explicitly does not govern ("code is truth" per the plans README) and whose rung 0 requires owner ratification before anything executes.
  • Rollback: revert this PR; the plans index row goes with it.

🤖 Generated with Claude Code

https://claude.ai/code/session_01Ev2gEVzf2qQyfpW2hyzynG

claude added 2 commits August 27, 2026 23:40
…gn, rung-0 decisions

Companion work order to the clean-room rebuild plan on PR #247. The plan
owns what survives and why; this owns how the work is sequenced so the
robot is never broken: ratify, extract + memory triage, pin the world,
CI proof (C2 as a standing gate), beast_hardware on the bench, C1
side-by-side, C2 fresh metal, cutover + single-commit delete, close out.

Records what already exists so nobody rebuilds it: self-hosted runners,
the arm64 beast-ros image build with layer caching, and the
rollback-proven source-mode deploy. Recommends release-dir A/B on the
robot with the container kept as CI proof of declaration completeness,
staying one repo, and evidence-class triage (measurement / identity /
diagnosis / procedure) for the insights DB so mis-diagnosed incidents
stop passing as facts without deleting recorded history.

Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ev2gEVzf2qQyfpW2hyzynG
…mes the recommended vehicle

Researched current Jetson/ROS deployment practice (container-vs-native on
Jetson, L4T/JetPack base-image alignment, ROOTFS_AB/nvbootctrl field
reports, QEMU-vs-native arm64 CI numbers) and amended the ladder where
the evidence disagreed with the first draft:

- Decision 3 flips to container-as-deploy-vehicle: the artifact CI
  proves is byte-for-byte what the robot runs, the CPU-only stack
  sidesteps the L4T/CUDA alignment trap today, and the rule for when
  GPU inference enters scope is recorded with the decision. Release-dir
  A/B stays as the rung-5 fallback; OS-layer ROOTFS_AB stays out of
  scope with its failure modes named.
- Rung 3 gains the QEMU cost honesty (3-10x on compile layers) and the
  native-arm64-runner escape hatch.
- Rung 7 states the swap in artifact terms: robot always holds
  last-good, rollback is one retag.

Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ev2gEVzf2qQyfpW2hyzynG
@qodo-code-review

Copy link
Copy Markdown
Contributor

ⓘ Your Qodo trial ends soon. Ask your workspace admin to set up billing to keep reviews running after the trial. Manage billing

claude added 2 commits August 28, 2026 05:27
Owner discussion 2026-08-28 surfaced three preserve-list gaps the six
knowledge items do not cover, plus a sequencing option and a doc rule:

- Rung 0 decision 1 gains three preserve-list candidates: the
  camera-to-cockpit pipeline (decided by NORTH_STAR G7, which names video
  as a portal surface), the autonomy on-ramp Phase 1 calibration constants
  and ekf.yaml fusion config (measured 2026-08-14; operative values live in
  old-tree launch/param files Phase D deletes), and kinematics/URDF from
  ugv_description.
- New rung 0 decision 5 (optional): run the on-ramp's Phase 2 mapping run
  on the old stack pre-cutover — not F13-gated, map stem is off-tree, and
  it gives rung 5's side-by-side a real map to compare against.
- Rung 1 gains the plans-directory harvest: hazards that exist only in
  plan prose (rosbridge NaN, keyboard_ctrl SIGHUP, time-sync ordering,
  ESP32 latch) land as insights before their code dies; plans die with
  their target code at rung 8. The roslib-convergence plan is web-side
  and survives in parallel.

Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ev2gEVzf2qQyfpW2hyzynG
The camera preserve item gets a hardware half: the repo records first
light 2026-07-31 as a working camera (RGB + aligned depth ~16 FPS, TF
correct) but at USB SPEED: HIGH (USB 2.0), with the in-box cable as the
presumed cause and the discriminating test (known-USB3 cable, direct
Orin USB3 port, expect SUPER) written but never run. Rung 5 now runs
that discriminator, checks IMU presence on this Lite revision, and
lands the verdict as a measurement-class insight — clearing the unit
or making it genuinely suspect before the new stack builds on it.

Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ev2gEVzf2qQyfpW2hyzynG
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.

2 participants