morgana: row 257 BUILD.md records sage-2202 rulings (PSI latch on first seen, PSI count across resources)

This commit is contained in:
2026-10-21 17:10:40 -05:00
parent e98e37ca9f
commit 9ffa507302
+12 -3
View File
@@ -24,15 +24,24 @@ Post-v1: MVP rows and re-pin windows go ahead of it on the slot. Base: refactor
- Follow-up, not in this row: subtract reclaimable cache using memory.stat `inactive_file`, if S2's
live samples show holds that the host's MemAvailable doesn't support.
Rulings on two readings from the build (sage-2202, re morgana-0057):
5. **PSI latch.** PSI becomes required on the first sample that carries it. This is stricter than
"present at the first sample" and fails closed: a PSI file that disappears after it was seen is a
missing signal, so health-unknown holds.
6. **PSI count across resources.** Design line 152 says "CPU some ≥20, memory full ≥2, or I/O full
≥10, for 3 samples". The window applies to the whole disjunction, so any PSI condition on 3
consecutive samples holds. If Filbert reads it per resource at review, the review finding decides,
and the fix is a single counter.
Other readings of the D4 table, made in the build:
- **Memory floors.** "Whichever demands more free memory" means the larger floor applies. Hold below
max(15% x limit, 1 GiB); release above max(25% x limit, 2 GiB).
- **Edges as written.** Hold at ≥ for load and PSI, < for memory. Release at ≤ 0.55 for load, < for
PSI, > for memory. Critical below 5% of the limit and below 1 GiB of disk.
- **Sample counts.** "For 3 samples" means 3 consecutive samples. The count resets after a gap of more
than 6 s (the stale limit) between samples. The PSI row counts as one row: any of its three
conditions on 3 consecutive samples holds, and the reasons name the resources over on the latest
sample. Counting per resource would be weaker.
than 6 s (the stale limit) between samples. The PSI row counts as one row (ruling 6), and the
reasons name the resources over on the latest sample.
- **Memory holds on one sample.** The table's memory row has no sample count.
- **Release** needs every applicable release condition on every sample for 30 s, by the samples' own
times (`>= 30000` ms after the first qualifying sample). A dead-band sample or any hold restarts the