docs: the moved documents live on the documentation site

INSTALL.md, SERIAL.md, docs/COOLING.md, docs/LIGHTBURN.md,
docs/MOTION.md, docs/SAFETY.md, docs/UPDATE-SYSTEM.md, docs/VIDEO.md and
their images are pages on https://docs.forgefirm.org/ now. Every
reference in the README, BRINGUP, the kas config, the cold-build
workflow, forgetest, and the bench scripts points to the site page. The
README carries the beta banner. docs/ keeps BRINGUP.md and
CAMPAIGN-LOG.md.

No catalog consequence: the deleted files are documents, and the code
changes are comment and help-text repoints only.
This commit is contained in:
ScottW514
2026-09-01 15:33:17 -04:00
parent 8a93202c00
commit 6a48cd3969
23 changed files with 48 additions and 2637 deletions
+1 -1
View File
@@ -40,7 +40,7 @@ page's takeover does that; from a host, stop them first.
| `flow_characterize.py` | Coolant flow characterization using the factory temperature curve (board or host; forgectrl and controller stopped): baseline → flow → no-flow → recovery, printing the ΔT bands and their separation. Takes the heater duty as an argument (`flow_characterize.py 30`); aborts if downstream passes 45 °C. |
| `flow_matrix.py` | **The flow-detection design matrix** (board or host; forgectrl and controller stopped; with `flow_sampler.py` from `/usr/share/forgetest/bench/`): duty × duration × flow/no-flow, every run from a common cooled baseline, interleaved repeats. One heating trace yields the metric at every candidate duration, so cost and precision come from the same 60 runs. Prints a cost table, a precision table (mean±sd, worst-case margin, d′) and a ranked shortlist. `flow_matrix.py [duties] [repeats]` (or env `FM_DUTIES`, `FM_REPEATS`, `FM_RESULTS`); results/log in the bench data directory, resumable. |
| `flow_sustained.py` | Long-run test of the real re-check cadence via M8 (board or host; controller running): counts verdicts/false faults against the configured `cool_flow_rise` and tracks whether the loop accumulates heat. `flow_sustained.py [minutes]`. |
| `temp_calibrate.py` (`supply-*` modes) | The power supply's sensor (`pic/pwr_temp`, raw) against a thermometer on its heatsink: `supply-watch`, `supply-point <C>`, `supply-fit`; the fit is printed beside `UAPI.md`'s unverified guess. Three points during a long cut settle it. |
| `temp_calibrate.py` (`supply-*` modes) | The power supply's sensor (`pic/pwr_temp`, raw) against a thermometer on its heatsink: `supply-watch`, `supply-point <C>`, `supply-fit`; the fit is printed beside the documented unverified guess ([sensors](https://docs.forgefirm.org/technical/machine/sensors/)). Three points during a long cut settle it. |
| `critical_tier_drill.py` | The coolant critical tier on a rising temperature (board or host): sets the ceiling, the resume gate and the critical line a few tenths above the live upstream reading and lets the engine's own flow-check heater warm the loop through them inside one `M8` session, expecting `OVERTEMP` at the ceiling and then `CRITICAL` (fire blocked, hold, no resume) with the fault ending at `M9`; restores the settings and cycles a session so the engine re-reads them. Results as JSON in the bench data directory. |
| `aa_offset_check.py` | Coolant offset correction under the run airflow (board; controller running; dark, no press): M8 brings the fans to the run profile while the raw coolant counts, `/status` and the engine's readings are averaged before, during and after; with `cool_aa_offset_counts` at the machine's value the readings hold still while the raw counts step, at zero they drop by about a degree. `aa_offset_check.py [dwell_s]`. |
| `offset_probe.py` | Coolant-sensor offset probe (board; forgectrl idle; dark, no press): switches one actuator at a time (exhaust at 100/50/25 %, intakes, air assist, purge, heater, pump, TEC, lid lamp, then all run fans) with both thermistors sampled at 25 Hz and scores the common-mode step at every edge and the level toggling inside every dwell; `offset_probe.py ladder` runs the air-assist duty ladder alone. Every value is restored on exit. JSON record in the bench data directory. |
+1 -1
View File
@@ -14,7 +14,7 @@ board(cmd) run a shell command on the machine and return its stdout
(local: sh -c; host: ssh, or the client named by GF_SSH,
e.g. GF_SSH='wsl -d <distro> -- ssh').
degc(raw) the factory B-equation coolant conversion
(kernel-module-glowforge/UAPI.md).
(docs.forgefirm.org, the sensors page).
data_path(f) where a tool keeps its data files: FORGETEST_BENCH_DATA
when set (the bench page passes <data>/bench/), else next
to the tool.
+1 -1
View File
@@ -12,7 +12,7 @@ full download with the GF1 header (magic at [1:4], total header length at
[4:8], then 8-byte key/value records). Header settings (STfr, XSmm) override
the --rate/--mode defaults when present.
Byte layout (kernel-module-glowforge/UAPI.md, hardware-verified):
Byte layout (docs.forgefirm.org, the step engine page; hardware-verified):
bit7 set -> laser power byte (low 7 bits = power, no steps this tick)
bit0 X_STEP, bit1 X_DIR (set = -X)
bit2 Y_STEP, bit3 Y_DIR (set = +Y)
+5 -5
View File
@@ -2,7 +2,7 @@
"""Coolant temperature spot-check helper (runs on the board or from a
host; gfbench: GF_HOST).
The raw->Celsius conversion in UAPI.md is the factory B-equation (10k
The documented raw->Celsius conversion (docs.forgefirm.org, sensors) is the factory B-equation (10k
B3380 NTC in a 10k divider behind a 1.3x gain stage, 10-bit ADC). This
tool collects reference points - a measured real temperature paired with
the machine's raw ADC readings - and fits a per-machine line to
@@ -17,7 +17,7 @@ Usage:
temp_calibrate.py supply-watch [seconds] the same for the power supply
temp_calibrate.py supply-point <C> [note] sensor (pic/pwr_temp, raw):
temp_calibrate.py supply-fit thermometer on the heatsink vs
the raw count; UAPI.md's guess
the raw count; the documented guess
raw * 0.08715 - 21 is shown
beside it. Points go to
supply_calibration.json.
@@ -40,7 +40,7 @@ SUPPLY_STORE = data_path('supply_calibration.json')
def supply_guess_c(raw):
"""UAPI.md's unverified guess for pic/pwr_temp."""
"""The documented unverified guess for pic/pwr_temp."""
return raw * 0.08715 - 21
@@ -55,7 +55,7 @@ def supply_raw(samples=5, delay=1.0):
def uapi_c(raw):
"""The UAPI.md factory conversion (B-equation NTC behind divider + gain)."""
"""The documented factory conversion (B-equation NTC behind divider + gain)."""
return degc(raw)
@@ -149,7 +149,7 @@ def supply_main(mode):
if slope is None:
print('points share one raw value; no fit')
return 1
print('fit: degC = %.5f * raw + %.2f (UAPI.md guess: 0.08715 * raw - 21)' % (slope, offset))
print('fit: degC = %.5f * raw + %.2f (documented guess: 0.08715 * raw - 21)' % (slope, offset))
worst = max(abs(p['measured_c'] - supply_guess_c(p['raw'])) for p in pts)
print('the guess is off by at most %.1f C at these points' % worst)
return 0