diff --git a/docs/BRINGUP.md b/docs/BRINGUP.md index a5bace4..5ba6548 100644 --- a/docs/BRINGUP.md +++ b/docs/BRINGUP.md @@ -1357,9 +1357,12 @@ pump flag. Beam detect stays with item 6. reset and `$X`: the stream fault is a critical alarm, which the core unlocks only after a reset, and the reset is what re-arms the stream), and the `cooling.*` set); then the push in CI order and the pin bumps. - The session runs on image 20260902144848; the harness and diagnostic - defects its first pass found are fixed in local commits (the dated record - is in CAMPAIGN-LOG). + The session's queues are green on image 20260902144848, the unattended + set and the attended set both (2026-09-02); the harness and diagnostic + defects they found are fixed in local commits (the dated record is in + CAMPAIGN-LOG). Owed now: the two bench measurements below, the pushes in + CI order, the pin bumps, one image build, and the campaign on that image, + which the release gate asks for. Decisions taken in the remediation that the operator confirms or reverses: the release image has no shell login (the install page now says so); the cloud client holds and resumes on the cooling verdict with a 30-minute diff --git a/docs/CAMPAIGN-LOG.md b/docs/CAMPAIGN-LOG.md index b5527d0..0fb935a 100644 --- a/docs/CAMPAIGN-LOG.md +++ b/docs/CAMPAIGN-LOG.md @@ -7219,6 +7219,74 @@ ones, all hot-deployed; the manifest still names the pins the image was built from until the next flash. `/tmp` is empty and `/data` holds nothing of the session's. The head was returned to its start by the baselines. +## 2026-09-02: the pooled bench session, second pass: the attended set + +The attended queue ran on image 20260902144848 later the same day and +passed in full: `laser.emission-witness` (on its fifth run; the four +before it are below), `cooling.flow-under-load`, `laser.m5-rapid-dark`, +`laser.disarm-in-hold`, `laser.armed-kill`, `laser.pause-resume-lid-cancel`, +`cloud.service-protocol`, `cloud.lid-interlock-abort`, `cloud.pause-resume`, +`cloud.oversize-stream` and `cloud.paused-lid-cancel`, and the always +core ran green once more behind them (21:50 to 21:52 UTC). The campaign +was not run again after the last harness change of the day (the cooling +implementation hashes moved), by the operator's decision: the image +built from the pushed pins gets its own campaign, and the release gate +asks for that one anyway. + +Three more defects, none in the image: + +1. `laser.emission-witness`'s dwell-gap latch rule (forgefirm 85d266e, + 2026-08-31, its first runs under fire) refused three clean runs. It + required the hardware button latch clear in every sample the engine + reported armed and then, after a first fix, in every sample up to the + last nonzero emission count; both windows came from lagging signals + (the engine's armed flag follows the controller's next report, the + emission counter latches once per second and reads nonzero about two + seconds past the relock) and reached into the tail where the job-end + relock sets the latch by design. The machine was right every time: + all four sides burned, and the per-sample trail the drill keeps now + shows the latch clear from the press to the relock, emission through + the fourth side, HV_ENABLE's dip in the dwell and its return. The rule + judges the hardware's own window now, from the first emission in every + sample whose readback word shows the laser latch unlocked, both bits + from that word, and the third run's recorded trail replays to a pass. + A fourth run errored on a name the refactor had removed and one later + check still used, which py_compile cannot catch and a live drill never + executes on the host; the CI job fails on any undefined name in the + harness now (forgefirm 970f10a). +2. The daemon dropped 18 to 46 log lines at every job start ("fflog: N + message(s) dropped (syslog socket unavailable or full)"), the named + safing writes among the lines at risk. The kernel's queue for a unix + datagram socket is 10 datagrams and the engine's arm-time settings + dump alone was 18 in two milliseconds. The logging init sets + `net.unix.max_dgram_qlen` to 512 before rsyslog and the daemons start + (forgefirm 3bb16a4; set at runtime on the board for the rest of the + session), the dump is one line, and the four engine paths that safe the + machine write their stop and lock before their log line rather than + after (forgectrl 5c6ee35). +3. The exhaust ran at 6200 rpm on an idle machine after + `kernel.fire-line`'s takeover restarted forgectrl with the kernel in the + drill's safe state (disabled). The remediation's busy-start rule took + the cooldown airflow, as it should over a live cut, but left the engine + in its idle state, which never re-applies its own duties, so the + posture had no exit unless a job opened a session. The engine remembers + a busy start and takes the idle duties on the first tick that finds the + machine idle with no session (forgectrl 522cdb2). + `cooling.fans-quiet-after-motion` gained the case: forgectrl stopped, + `cnc/disable` written, forgectrl started; the busy start logged, idle + airflow one tick later, the duties idle within 15 s (forgefirm + 9258dea). Seen beside it and left as designed: after every + takeover restart the supervisor's first liveness probe finds no motion + and its ladder cycles the rail for 5 s before the retry passes, the + DRV8825 wedge on the rail power-up that disable-then-enable causes. + +The board at the end of the day: the image's forgectrl replaced by the +522cdb2 build, the forgetest suite files and runner as committed, the +datagram queue at 512 until the next boot; `/tmp` empty, `/data` +untouched. Owed, in order: the two bench measurements BRINGUP item 9 +lists, the pushes in CI order (forgefirm first), the pin bumps with +`bitbake -c fetch`, one image build, and the campaign on that image. + ## Reference notes ### Head-IRQ source validation — the beam-emission hypothesis