the size rule: a small finding is fixed in the session, not filed; reports state four register numbers (burn-down Part D)
gates / gates (push) Successful in 33s
gates / gates (push) Successful in 33s
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
This commit is contained in:
@@ -13,7 +13,8 @@ unconditional: true
|
|||||||
- A register row **you or another CC session filed**, with owner CC, at P3 or a bounded P2, that
|
- A register row **you or another CC session filed**, with owner CC, at P3 or a bounded P2, that
|
||||||
needs **no operator decision**, touches **no customer data by design**, and introduces **no
|
needs **no operator decision**, touches **no customer data by design**, and introduces **no
|
||||||
mechanism nobody has measured**. Smallest first.
|
mechanism nobody has measured**. Smallest first.
|
||||||
- A defect you find while exercising the product, filed as a row **before** you fix it.
|
- A defect you find while exercising the product, filed as a row **before** you fix it — **unless it is small**:
|
||||||
|
a small finding is fixed in the session and never filed (the size rule, `OPEN-ITEMS.md` „How a row is filed").
|
||||||
- Hygiene: register compression, stale citations, rows with no owner, documents that contradict
|
- Hygiene: register compression, stale citations, rows with no owner, documents that contradict
|
||||||
live source.
|
live source.
|
||||||
|
|
||||||
@@ -43,7 +44,8 @@ it **first** in the morning note. A decision you cannot write in that shape is o
|
|||||||
6. **One release per repo per session**, with a CHANGELOG entry (controller: with its `MinAgent`
|
6. **One release per repo per session**, with a CHANGELOG entry (controller: with its `MinAgent`
|
||||||
line), REPORT overwritten, floor raised to deliver it. **No golden unless a drill or fresh install
|
line), REPORT overwritten, floor raised to deliver it. **No golden unless a drill or fresh install
|
||||||
needs one** (the waiver, R-468). **No `--no-verify`.**
|
needs one** (the waiver, R-468). **No `--no-verify`.**
|
||||||
7. **An enumerated gap becomes a row in the same session.** Prose is not a record.
|
7. **An enumerated gap becomes a row in the same session — or, if it is small, is fixed in it** (the size rule).
|
||||||
|
Prose is not a record.
|
||||||
8. **Hungarian text is searched with ASCII fragments**, with a positive and a negative control.
|
8. **Hungarian text is searched with ASCII fragments**, with a positive and a negative control.
|
||||||
9. **Never leave a half-state.** If time runs out, revert to clean and say what was reverted.
|
9. **Never leave a half-state.** If time runs out, revert to clean and say what was reverted.
|
||||||
10. **Teardown, three layers, stated** — machine, host, hub — or "provisioned nothing".
|
10. **Teardown, three layers, stated** — machine, host, hub — or "provisioned nothing".
|
||||||
|
|||||||
@@ -88,8 +88,8 @@ newer release and was pinned to 4.7.0.
|
|||||||
the `data` field only → restore `rc=0`, integrity `ok`, 4 hosts; without a key → `missing key`.
|
the `data` field only → restore `rc=0`, integrity `ok`, 4 hosts; without a key → `missing key`.
|
||||||
- **Alarm** (`alarm-drill.txt`): success file hidden 13:51:46Z → pending 13:52:06Z → **firing 14:22Z** → Alertmanager:
|
- **Alarm** (`alarm-drill.txt`): success file hidden 13:51:46Z → pending 13:52:06Z → **firing 14:22Z** → Alertmanager:
|
||||||
1 active alert, receiver `email-notifications`, `notifications_total{email}` 5 and `failed_total` 0 → a real push
|
1 active alert, receiver `email-notifications`, `notifications_total{email}` 5 and `failed_total` 0 → a real push
|
||||||
14:23 (2 s) → inactive 14:23:42Z, email counter 6. **The mail itself was not read**: the Gmail connector reads the
|
14:23 (2 s) → inactive 14:23:42Z, email counter 6. **Both mails arrived** (operator's inbox screenshot, 2026-10-05):
|
||||||
felhom.eu catch-all, and Alertmanager mails the operator's personal address — the operator is asked to confirm.
|
„[FIRING] HubDBBackupStale" 16:22 and „[RESOLVED] HubDBBackupStale" 16:27 CEST.
|
||||||
- **R-519 on 9202** (`r519/`): 9202 raised to controller 0.296.0 by hand (`00-upgrade-9202.txt`); bookstack installed;
|
- **R-519 on 9202** (`r519/`): 9202 raised to controller 0.296.0 by hand (`00-upgrade-9202.txt`); bookstack installed;
|
||||||
run 1 complete (33 s); run 2 cut by `docker restart felhom-controller` at 14:05:59.67Z, 0.8 s after `Volume dump:
|
run 1 complete (33 s); run 2 cut by `docker restart felhom-controller` at 14:05:59.67Z, 0.8 s after `Volume dump:
|
||||||
bookstack/bookstack_bookstack_config` and before its database volume. After: the run record turned `interrupted`;
|
bookstack/bookstack_bookstack_config` and before its database volume. After: the run record turned `interrupted`;
|
||||||
@@ -126,5 +126,4 @@ newer release and was pinned to 4.7.0.
|
|||||||
## Unproven / say-so
|
## Unproven / say-so
|
||||||
|
|
||||||
- `unproven.py --summary`: walked 20, partial 17, built 14, missing 4 — NOT WALKED 35 of 55; no number moved (the hub-DB capability is a new row in `00` §G, not one of the 55 walked claims).
|
- `unproven.py --summary`: walked 20, partial 17, built 14, missing 4 — NOT WALKED 35 of 55; no number moved (the hub-DB capability is a new row in `00` §G, not one of the 55 walked claims).
|
||||||
- The `HubDBBackupStale` mail in the operator's inbox — seen only as Alertmanager's send counter.
|
|
||||||
- Runbook §3 steps 4–5.
|
- Runbook §3 steps 4–5.
|
||||||
|
|||||||
@@ -34,8 +34,8 @@ by-design abilities stay. Today you also chose: grow the hub's disk to 2 GiB, an
|
|||||||
DooPlex use "always the newest" (new row).
|
DooPlex use "always the newest" (new row).
|
||||||
|
|
||||||
- **The alarm mail:** I hid the "copy sent" signal on purpose; after 30 minutes the alarm fired (14:22) and the mail
|
- **The alarm mail:** I hid the "copy sent" signal on purpose; after 30 minutes the alarm fired (14:22) and the mail
|
||||||
system sent it without error; a real send cleared it a minute later. **Please check your inbox** for
|
system sent it without error; a real send cleared it a minute later. **You confirmed both mails arrived:**
|
||||||
"HubDBBackupStale" around 16:22 — I cannot read your personal mailbox.
|
"[FIRING] HubDBBackupStale" 16:22 and "[RESOLVED] HubDBBackupStale" 16:27.
|
||||||
- **The mail system (Alertmanager) cannot save its own notes since the Longhorn restart.** Mail still goes out; but a
|
- **The mail system (Alertmanager) cannot save its own notes since the Longhorn restart.** Mail still goes out; but a
|
||||||
silence you set would be lost at its next restart (new row).
|
silence you set would be lost at its next restart (new row).
|
||||||
|
|
||||||
|
|||||||
@@ -257,7 +257,9 @@ Then: [exact refusal — HTTP status, error, and the proven non-effect, e.g. "m
|
|||||||
typecheck; do not accumulate compile errors.
|
typecheck; do not accumulate compile errors.
|
||||||
2. **Minimal changes:** build only what's listed. No "while I'm here" refactors. Note anything worth
|
2. **Minimal changes:** build only what's listed. No "while I'm here" refactors. Note anything worth
|
||||||
fixing under "Observations" (§15) — don't act on it, but **do file it**: §15.9's marker rule means
|
fixing under "Observations" (§15) — don't act on it, but **do file it**: §15.9's marker rule means
|
||||||
"not acted on" never means "not recorded".
|
"not acted on" never means "not recorded". **Exception — the size rule (2026-10-05):** a finding that is cosmetic
|
||||||
|
or small (about 30 minutes, in a repo this session may change) is FIXED in the session with a test and listed under
|
||||||
|
„fixed without a row" — not filed (`OPEN-ITEMS.md` „How a row is filed").
|
||||||
3. **No silent failures:** never swallow a parse/exec error — log it. Check a subprocess's **own** exit
|
3. **No silent failures:** never swallow a parse/exec error — log it. Check a subprocess's **own** exit
|
||||||
code; never pipe in a way that hides a 127. (The silent `.felhom.yml` quoting bug + the spike's
|
code; never pipe in a way that hides a 127. (The silent `.felhom.yml` quoting bug + the spike's
|
||||||
exit-swallow lesson.)
|
exit-swallow lesson.)
|
||||||
@@ -423,8 +425,9 @@ inside an entry about something else, and a finding rediscovered because nobody
|
|||||||
shape `[DESIGN]` in the architecture document and point it at the log entry** (§4's map).
|
shape `[DESIGN]` in the architecture document and point it at the log entry** (§4's map).
|
||||||
**Losing a reason is how a deliberate design becomes a bug in someone's eyes** — that cost four
|
**Losing a reason is how a deliberate design becomes a bug in someone's eyes** — that cost four
|
||||||
mis-filed defect reports in August 2026 (R-370, R-376).
|
mis-filed defect reports in August 2026 (R-370, R-376).
|
||||||
3. **State the register's size in the report, before and after.** A number every session is what makes
|
3. **State the register's size in the report as FOUR numbers: rows before, rows after, rows opened, rows closed**
|
||||||
growth visible; prose about tidiness is not a mechanism.
|
(2026-10-05). A number every session is what makes growth visible; prose about tidiness is not a mechanism.
|
||||||
|
Before/after alone hid that sessions closed some and opened as many.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
## operator confirmation (inbox screenshot): [FIRING] HubDBBackupStale 16:22 CEST; [RESOLVED] HubDBBackupStale 16:27 CEST
|
||||||
## alarm drill start 2026-10-05T13:51:46Z: success file moved aside (absent case)
|
## alarm drill start 2026-10-05T13:51:46Z: success file moved aside (absent case)
|
||||||
backup_freshness.prom
|
backup_freshness.prom
|
||||||
fan_metrics.prom
|
fan_metrics.prom
|
||||||
|
|||||||
@@ -13,6 +13,17 @@ a non-overwritten `REPORT-<topic>.md` sibling instead (`CLAUDE.md:82-87`), of wh
|
|||||||
belongs inside backticks), whose **Category** is not one of the eleven below, or whose **Sev** is not
|
belongs inside backticks), whose **Category** is not one of the eleven below, or whose **Sev** is not
|
||||||
`P1`–`P4`. **A new row goes into its category's section**, in severity order.
|
`P1`–`P4`. **A new row goes into its category's section**, in severity order.
|
||||||
|
|
||||||
|
**Fix small, do not file (the size rule — operator brief 2026-10-05, the burn-down).** The register grew because every
|
||||||
|
session closed a few rows and filed a few small new ones. So: **a finding that is cosmetic or small — fixable in the
|
||||||
|
session in about 30 minutes, in a repo the session may change — is FIXED in that session, with a test where it changes
|
||||||
|
behaviour, and NOT filed.** It is recorded in that repo's `CHANGELOG.md` and in the session report under „fixed without
|
||||||
|
a row". **Only a finding that needs a decision, a design, a larger build, or a change the session may not make** (a
|
||||||
|
protected machine, a repo out of scope, a release budget already spent) **becomes a row.** This narrows — it does not
|
||||||
|
repeal — „an enumerated gap becomes a row": a small gap leaves the session fixed, which is a record too.
|
||||||
|
|
||||||
|
**Every session report states four numbers:** rows before, rows after, rows opened, rows closed — counted the way
|
||||||
|
`register_shape_gate.py` counts (`| **R-n** |` lines in this file).
|
||||||
|
|
||||||
**Sev — one scale for this file and `ROADMAP.md`:**
|
**Sev — one scale for this file and `ROADMAP.md`:**
|
||||||
- **P1 — now.** A household can lose or leak data, a box can stop or be taken over, or a promise we make is
|
- **P1 — now.** A household can lose or leak data, a box can stop or be taken over, or a promise we make is
|
||||||
false — today. A P1 row says in one sentence what the harm is.
|
false — today. A P1 row says in one sentence what the harm is.
|
||||||
|
|||||||
Reference in New Issue
Block a user