mirror of
https://github.com/openglow-org/forgefirm.git
synced 2026-09-27 16:51:12 -07:00
docs: the full campaign passes on image 20260907005922; BRINGUP item 8, the first-run commissioning, is closed
This commit is contained in:
+6
-52
@@ -1376,9 +1376,11 @@ feature requests, enhancements) will eventually be tracked as GitHub issues.
|
|||||||
the headers of kernel patches 0011-0013 (`meta-glowforge-bsp`,
|
the headers of kernel patches 0011-0013 (`meta-glowforge-bsp`,
|
||||||
`recipes-kernel/linux/`).
|
`recipes-kernel/linux/`).
|
||||||
3. **Release acceptance follow-through.** The campaign is the release gate
|
3. **Release acceptance follow-through.** The campaign is the release gate
|
||||||
and runs as designed: dev image `20260824230512`, 45 of 45 from nothing,
|
and runs as designed: dev image `20260907005922`, 81 of 81 (53 run, 28
|
||||||
36 of them unattended with the bench actuator in the loop, release
|
inherited from the campaign before it on the same pins), 67 of them
|
||||||
authorized (the export is on the board at `/data/forgetest/export/`).
|
unattended with the bench actuator in the loop, release authorized
|
||||||
|
(the export is on the board at `/data/forgetest/export/` and beside
|
||||||
|
the images under `images/20260907005922/`).
|
||||||
What is left is small. Two catalog gaps from the tool's own plan,
|
What is left is small. Two catalog gaps from the tool's own plan,
|
||||||
`cooling.confirm-escalate` and
|
`cooling.confirm-escalate` and
|
||||||
`cooling.fire-gate-blocks-arm`, are not ported (both need the pump
|
`cooling.fire-gate-blocks-arm`, are not ported (both need the pump
|
||||||
@@ -1419,55 +1421,7 @@ feature requests, enhancements) will eventually be tracked as GitHub issues.
|
|||||||
far): re-measure the two heat coefficients and the machine's
|
far): re-measure the two heat coefficients and the machine's
|
||||||
air-assist offset; and if a lit check still trips, the
|
air-assist offset; and if a lit check still trips, the
|
||||||
void-on-emission design with the tube as its own flow tracer.
|
void-on-emission design with the tube as its own flow tracer.
|
||||||
8. **Initial commissioning: measure and set the machine's own numbers
|
8. **Idle before the kernel drains.** The driver reports Idle when the
|
||||||
methodically.** Phase 1 (consent, account, preferences, machine facts,
|
|
||||||
the cloud decision, the gate, HTTPS on 443, the factory return),
|
|
||||||
phase 2 (the setup checks: switches, sensors, airflow, motion, cameras,
|
|
||||||
the coolant offset and the flow calibration as checks, the cloud header
|
|
||||||
capture, the Commissioning tab, the engine-raised flags), and phase 3
|
|
||||||
(the sheet: the stroke font and renderer, the daemon's own sender with
|
|
||||||
the emission witnesses, the placement, the frame, the focus, floor,
|
|
||||||
dose-curve, corner, and flow-load cards, M102 in the driver) are in
|
|
||||||
forgectrl and the driver. Phase 1 passes the
|
|
||||||
first-run walk-through and the commission acceptance set on the bench;
|
|
||||||
phase 2 passes its six automated checks (`commission.check-*`) and the
|
|
||||||
cloud header capture; phase 3 passes `commission.sheet`, one live run
|
|
||||||
over the whole sheet on one piece. Phase 4 (the lifecycle: the
|
|
||||||
what-changed menu, the record as a download and a printable page and
|
|
||||||
inside the log bundle, the button LED choreography, the second-browser
|
|
||||||
mirror) is built in forgectrl with its three unattended cases. The
|
|
||||||
commissioning acceptance set is 23 cases, three of them attended with
|
|
||||||
the bench actuator up (the page walk, one Print in the Glowforge app,
|
|
||||||
and the sheet with one press), and every one has passed on the bench.
|
|
||||||
The usability pass over the cards (every wait named and counted, the
|
|
||||||
press prompted when the button lights, the result as a sentence with
|
|
||||||
the settings written and the numbers under a fold) is bench-proven with
|
|
||||||
the content-sized layout. All of it waits for its push and pin. Every tunable
|
|
||||||
that was measured on the bench machine
|
|
||||||
and shipped as a default varies from machine to machine: the flow
|
|
||||||
check's bands and `cool_flow_rise`, the tube's heat coefficients
|
|
||||||
(`cool_laser_heat_cw`, `cool_laser_heat_density`), the air-assist
|
|
||||||
ground offset on the coolant readings, the laser's striking and lasing
|
|
||||||
thresholds and the duty floor, the fan floors, the thermistor curve
|
|
||||||
itself. Owed: one commissioning procedure, run once on a new machine
|
|
||||||
from the panel or the bench page, that measures each of these in
|
|
||||||
order with the tube dark wherever it can be, fires only where it
|
|
||||||
must, and writes the results as that machine's settings with a
|
|
||||||
record; and a reading of what the cloud sets for the same machine,
|
|
||||||
taken from cloud cuts (the pulse header carries the factory's
|
|
||||||
per-machine values), so the commissioning can start from the
|
|
||||||
factory's own numbers where they exist and note where they differ
|
|
||||||
from the measured ones. The dose-curve recorder (the panel's one-press
|
|
||||||
ladder, fit and apply) is the first piece of this tool family and the
|
|
||||||
template for the rest. Next piece, from the corner work: a
|
|
||||||
**side-by-side chooser** - the tool cuts the same corner-heavy pattern
|
|
||||||
at several settings of a knob (the corner rolloff first: a row of
|
|
||||||
passes at, say, 1.0 / 1.25 / 1.5 / 1.75 / 2.0), labels them, and the
|
|
||||||
operator picks the best by eye; Apply writes the winner. The rolloff
|
|
||||||
is the proof case (this bench settled at 1.5 and may go lower, so the
|
|
||||||
shipped default of 2 is a starting point, not a truth), and the same
|
|
||||||
shape fits any by-eye tunable the commissioning flow meets.
|
|
||||||
9. **Idle before the kernel drains.** The driver reports Idle when the
|
|
||||||
stream is produced, up to about 550 ms before the pulse engine finishes
|
stream is produced, up to about 550 ms before the pulse engine finishes
|
||||||
playing it after chained jogs (the fact under "Running the controller").
|
playing it after chained jogs (the fact under "Running the controller").
|
||||||
A sender or a service that stops the controller at Idle loses that tail
|
A sender or a service that stops the controller at Idle loses that tail
|
||||||
|
|||||||
+82
-1
@@ -9154,7 +9154,88 @@ Two causes, one in the daemon and one in the test:
|
|||||||
came first. Fixed: the test waits up to ten seconds for the line.
|
came first. Fixed: the test waits up to ten seconds for the line.
|
||||||
|
|
||||||
The fix needs a forgectrl pin bump, so the pair is rebuilt and the
|
The fix needs a forgectrl pin bump, so the pair is rebuilt and the
|
||||||
campaign starts over on the next image.
|
campaign starts over on the next image: forgectrl 9b178c2 pushed, pinned
|
||||||
|
at 0.1.4 (forgefirm 143ef11 with the test's wait), the pair rebuilt from
|
||||||
|
those heads, stamp **20260907005922**, the same kernel and checks, forgectrl
|
||||||
|
0.1.4 on both images. That pair is the one to flash.
|
||||||
|
|
||||||
|
## 2026-09-07: the full campaign passes on image 20260907005922, 81 of 81
|
||||||
|
|
||||||
|
The operator flashed the dev image 20260907005922 and power-cycled;
|
||||||
|
forgetest took the fresh-boot reference (the probe line whole again: "head
|
||||||
|
accel p2p x=3364 y=2018"). Campaign c-20260907010414-d825 started at
|
||||||
|
01:04Z. The unattended batch: 39 tests run, 39 PASS, by 01:19Z; 28 tests
|
||||||
|
inherited their PASS from the first campaign, their fingerprints not
|
||||||
|
naming the daemon. The operator then ran the 14 attended tests from the
|
||||||
|
acceptance page, in the prerequisite order: `laser.emission-witness`,
|
||||||
|
`commission.first-run-page`, `laser.m5-rapid-dark`, `laser.disarm-in-hold`,
|
||||||
|
`laser.armed-kill`, `laser.pause-resume-lid-cancel`, `cooling.flow-under-load`,
|
||||||
|
`commission.sheet`, `commission.cloud-header-capture`,
|
||||||
|
`cloud.service-protocol`, `cloud.pause-resume`, `cloud.lid-interlock-abort`,
|
||||||
|
`cloud.oversize-stream`, `cloud.paused-lid-cancel`: every one PASS. At
|
||||||
|
01:56Z the campaign read 81 of 81 satisfied (28 inherited, 53 run), nothing
|
||||||
|
required, and the export authorized the image: artifact sha256
|
||||||
|
`60d9f7aa9f9b0005f9acffa460f863d4e8f9adc120da43e6b050cea98851a910`, kept
|
||||||
|
beside the images under `images/20260907005922/` (not committed under
|
||||||
|
`releases/`: the first signed release is the operator's call). The last
|
||||||
|
cloud test left the machine in cloud mode; switched back to GRBL. Board at
|
||||||
|
the end: `/tmp` empty, `/data` as found.
|
||||||
|
|
||||||
|
This closes BRINGUP "Next work" item 8, the first-run commissioning. The
|
||||||
|
plan file `COMMISSIONING_PLAN.md` and the review file `AGREEMENTS_REVIEW.md`
|
||||||
|
at the tree root are deleted; their decisions live in this log's entries of
|
||||||
|
2026-09-04 to 2026-09-07 and on the docs site.
|
||||||
|
|
||||||
|
The item's text as it stood in BRINGUP when it closed:
|
||||||
|
|
||||||
|
> 8. **Initial commissioning: measure and set the machine's own numbers
|
||||||
|
> methodically.** Phase 1 (consent, account, preferences, machine facts,
|
||||||
|
> the cloud decision, the gate, HTTPS on 443, the factory return),
|
||||||
|
> phase 2 (the setup checks: switches, sensors, airflow, motion, cameras,
|
||||||
|
> the coolant offset and the flow calibration as checks, the cloud header
|
||||||
|
> capture, the Commissioning tab, the engine-raised flags), and phase 3
|
||||||
|
> (the sheet: the stroke font and renderer, the daemon's own sender with
|
||||||
|
> the emission witnesses, the placement, the frame, the focus, floor,
|
||||||
|
> dose-curve, corner, and flow-load cards, M102 in the driver) are in
|
||||||
|
> forgectrl and the driver. Phase 1 passes the
|
||||||
|
> first-run walk-through and the commission acceptance set on the bench;
|
||||||
|
> phase 2 passes its six automated checks (`commission.check-*`) and the
|
||||||
|
> cloud header capture; phase 3 passes `commission.sheet`, one live run
|
||||||
|
> over the whole sheet on one piece. Phase 4 (the lifecycle: the
|
||||||
|
> what-changed menu, the record as a download and a printable page and
|
||||||
|
> inside the log bundle, the button LED choreography, the second-browser
|
||||||
|
> mirror) is built in forgectrl with its three unattended cases. The
|
||||||
|
> commissioning acceptance set is 23 cases, three of them attended with
|
||||||
|
> the bench actuator up (the page walk, one Print in the Glowforge app,
|
||||||
|
> and the sheet with one press), and every one has passed on the bench.
|
||||||
|
> The usability pass over the cards (every wait named and counted, the
|
||||||
|
> press prompted when the button lights, the result as a sentence with
|
||||||
|
> the settings written and the numbers under a fold) is bench-proven with
|
||||||
|
> the content-sized layout. All of it waits for its push and pin. Every tunable
|
||||||
|
> that was measured on the bench machine
|
||||||
|
> and shipped as a default varies from machine to machine: the flow
|
||||||
|
> check's bands and `cool_flow_rise`, the tube's heat coefficients
|
||||||
|
> (`cool_laser_heat_cw`, `cool_laser_heat_density`), the air-assist
|
||||||
|
> ground offset on the coolant readings, the laser's striking and lasing
|
||||||
|
> thresholds and the duty floor, the fan floors, the thermistor curve
|
||||||
|
> itself. Owed: one commissioning procedure, run once on a new machine
|
||||||
|
> from the panel or the bench page, that measures each of these in
|
||||||
|
> order with the tube dark wherever it can be, fires only where it
|
||||||
|
> must, and writes the results as that machine's settings with a
|
||||||
|
> record; and a reading of what the cloud sets for the same machine,
|
||||||
|
> taken from cloud cuts (the pulse header carries the factory's
|
||||||
|
> per-machine values), so the commissioning can start from the
|
||||||
|
> factory's own numbers where they exist and note where they differ
|
||||||
|
> from the measured ones. The dose-curve recorder (the panel's one-press
|
||||||
|
> ladder, fit and apply) is the first piece of this tool family and the
|
||||||
|
> template for the rest. Next piece, from the corner work: a
|
||||||
|
> **side-by-side chooser** - the tool cuts the same corner-heavy pattern
|
||||||
|
> at several settings of a knob (the corner rolloff first: a row of
|
||||||
|
> passes at, say, 1.0 / 1.25 / 1.5 / 1.75 / 2.0), labels them, and the
|
||||||
|
> operator picks the best by eye; Apply writes the winner. The rolloff
|
||||||
|
> is the proof case (this bench settled at 1.5 and may go lower, so the
|
||||||
|
> shipped default of 2 is a starting point, not a truth), and the same
|
||||||
|
> shape fits any by-eye tunable the commissioning flow meets.
|
||||||
|
|
||||||
## Reference notes
|
## Reference notes
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user