One register, enforced by a gate; closed work compressed into siblings (R-376..R-378)
gates / gates (push) Successful in 16s
gates / gates (push) Successful in 16s
Records and process only. No machine contacted. ONE REGISTER (operator ruling). 17 roadmap rows moved into OPEN-ITEMS.md keeping their identifiers, evidence and original filing dates - the oldest R-10, filed 2026-07-15, 38 days. 15 ideas stay in ROADMAP.md, which is their home; the gate exempts them by their own state word. 59 already-closed rows stay as history. Sorting rule recorded in the roadmap header: does the item assert something about the shipped product a reader could check and find false? scripts/one_register_gate.py, wired as the 11th gate. Control run: baseline passes, a planted open roadmap-only row is convicted by name, removing it passes with the file byte-identical, and a planted `idea` row is correctly exempt. Its four residual holes are in its docstring. The gate earned its keep immediately: it caught R-103, a READY finding my hand-sort mis-read as done because my regex matched the whole row where the body contains "shipped" - the gate matches the state cell. It also caught R-203 and R-163, recorded closed in the register and still open in the roadmap; the roadmap copies are marked SUPERSEDED with the register's verdict. HOUSEKEEPING. OPEN-ITEMS 672,376 -> 327,109 bytes (-51%); ROADMAP 239,306 -> 78,110 (-67%). Closed work compressed to 17% into CLOSED-ITEMS.md and ROADMAP-HISTORY.md; every entry names the commit whose git show returns the full original text. Rule-sentences are kept verbatim under "Reasoning kept" rather than judged entry by entry - 25 carry one. CONTEXT.md deliberately NOT compressed and the disagreement is argued in the report: 86% of it is standing rulings still in force, this prompt's own 3.4 says the log is never edited, and it has no per-ruling delimiter. Filed as R-377 - the problem is navigational, not volumetric. The hot/bulk placement decision was NEVER recorded as a decision anywhere - established, not assumed. Now marked [DESIGN] with a pointer honest about having no original date, given a decision-log entry that records what was rejected, and the [DESIGN]/[FACT] legend carried from 1 of 8 architecture documents to 8 of 8. Existing statements deliberately left unmarked (R-376). PROMPT-TEMPLATE gains N.7: compress what you closed, rehome live reasoning before it goes, state the register's size before and after. Ceiling R-375 -> R-378.
This commit is contained in:
@@ -1,5 +1,20 @@
|
||||
# 00 — Felhom Capability Map
|
||||
|
||||
> **How to read this document.** Two kinds of statement appear, and where this document marks them it
|
||||
> marks them like this — the same wording as `07-backup-architecture.md:11-17`, carried here on
|
||||
> 2026-08-22 (R-376) so a reader meets one convention and not eight:
|
||||
>
|
||||
> - **[DESIGN]** — a decision taken. Not derived from code; the code may not implement it yet.
|
||||
> - **[FACT]** — an observed property, carrying a `file:line`, a live command output or a citation.
|
||||
>
|
||||
> **Statements in this document are NOT yet all marked.** Marking them wholesale is a large judgement
|
||||
> exercise and a wrong mark is worse than none, so only what a session touches is marked (R-376).
|
||||
> **An unmarked statement therefore means "not yet classified", never "observed".** That ambiguity is
|
||||
> exactly what cost this project three sessions in August 2026: the hot/bulk placement decision sat
|
||||
> unmarked beside a marked `[FACT]`, and was read as an observation and reported as a defect.
|
||||
|
||||
|
||||
|
||||
> **What this is:** the single cross-component truth table of what the Felhom platform can do
|
||||
> **today**, at what confidence level, with verifiable evidence. Rows are *scenarios* (user- or
|
||||
> operator-visible outcomes), not modules — a scenario spans agent + controller + hub + catalog,
|
||||
|
||||
@@ -1,5 +1,20 @@
|
||||
# Felhom Controller Architecture — Part 1: Topology & Trust
|
||||
|
||||
> **How to read this document.** Two kinds of statement appear, and where this document marks them it
|
||||
> marks them like this — the same wording as `07-backup-architecture.md:11-17`, carried here on
|
||||
> 2026-08-22 (R-376) so a reader meets one convention and not eight:
|
||||
>
|
||||
> - **[DESIGN]** — a decision taken. Not derived from code; the code may not implement it yet.
|
||||
> - **[FACT]** — an observed property, carrying a `file:line`, a live command output or a citation.
|
||||
>
|
||||
> **Statements in this document are NOT yet all marked.** Marking them wholesale is a large judgement
|
||||
> exercise and a wrong mark is worse than none, so only what a session touches is marked (R-376).
|
||||
> **An unmarked statement therefore means "not yet classified", never "observed".** That ambiguity is
|
||||
> exactly what cost this project three sessions in August 2026: the hot/bulk placement decision sat
|
||||
> unmarked beside a marked `[FACT]`, and was read as an observation and reported as a defect.
|
||||
|
||||
|
||||
|
||||
**Status:** draft (decisions from the topology/trust design sessions).
|
||||
**Platform facts** referenced here live in `docs/proxmox-platform.md`; this document
|
||||
records *Felhom's decisions*, not Proxmox behaviour.
|
||||
@@ -147,9 +162,23 @@ credentials.
|
||||
at attach), role, encrypted credentials, schedule/retention. The agent creates the Proxmox
|
||||
storages, continuously checks presence/reachability, and reports per-target status (a
|
||||
disconnected target → actionable notification).
|
||||
- **App data placement is per-volume, not per-app:** `.felhom.yml` classifies each volume
|
||||
- **[DESIGN] App data placement is per-volume, not per-app:** `.felhom.yml` classifies each volume
|
||||
**hot** (DB/config/cache → fast storage, enforced) vs **bulk** (media/files → may be slow).
|
||||
A photo app's DB stays on SSD while its blobs go to the USB.
|
||||
|
||||
> **Marked [DESIGN] on 2026-08-22 (R-376), and the pointer is honest about what it can point at.**
|
||||
> **This decision was never recorded as a decision anywhere** — it was established by reading, not
|
||||
> by citation: it exists as this bullet and nowhere else, with no dated entry in the decision log
|
||||
> and no `R-` row. A log entry was written on 2026-08-22 (`CONTEXT.md`, "App data placement is a
|
||||
> DECISION") **to give it a home, not to claim it was decided then**; the choice is older than the
|
||||
> entry and its original date is not on record.
|
||||
>
|
||||
> **What being unmarked cost.** The consequence of this bullet — that 40 of 53 catalogue templates
|
||||
> declare no configurable path because they are all-hot — is stated as **[FACT]** at
|
||||
> `07-backup-architecture.md:296-299`. A reader met a marked observation beside an unmarked choice
|
||||
> and reasonably asked whether it *should* be so. **Between 19 and 22 August that reader called this
|
||||
> decision a defect in four places** (R-370), and one session's work went into correcting the record
|
||||
> rather than into the product.
|
||||
- **Backup scoping:** hot data (LXC rootfs) rides the guest `vzdump` → tiers + PBS. Bulk data
|
||||
on external mount points is **excluded** from the guest vzdump (per-mount `backup` flag) and
|
||||
gets its own per-volume policy (file-level to a tier, slower cadence — or explicitly *not*
|
||||
|
||||
@@ -1,5 +1,20 @@
|
||||
# Felhom Controller Architecture — Part 2: Controller Module Map
|
||||
|
||||
> **How to read this document.** Two kinds of statement appear, and where this document marks them it
|
||||
> marks them like this — the same wording as `07-backup-architecture.md:11-17`, carried here on
|
||||
> 2026-08-22 (R-376) so a reader meets one convention and not eight:
|
||||
>
|
||||
> - **[DESIGN]** — a decision taken. Not derived from code; the code may not implement it yet.
|
||||
> - **[FACT]** — an observed property, carrying a `file:line`, a live command output or a citation.
|
||||
>
|
||||
> **Statements in this document are NOT yet all marked.** Marking them wholesale is a large judgement
|
||||
> exercise and a wrong mark is worse than none, so only what a session touches is marked (R-376).
|
||||
> **An unmarked statement therefore means "not yet classified", never "observed".** That ambiguity is
|
||||
> exactly what cost this project three sessions in August 2026: the hot/bulk placement decision sat
|
||||
> unmarked beside a marked `[FACT]`, and was read as an observation and reported as a defect.
|
||||
|
||||
|
||||
|
||||
> **EXECUTED (slice 8C, 2026-06-10 — controller v0.37.0).** This map's target state is now realized:
|
||||
> the disk-execution subsystem (`storage/*`, restic, cross-drive, drive-restore, `disk_layout`,
|
||||
> `local_infra`, `infra_backup`, `setup/scanner`, `monitor/watchdog`+`pinger`, the storage UI) is
|
||||
|
||||
@@ -1,5 +1,20 @@
|
||||
# Architecture Part 3 — The Host Agent
|
||||
|
||||
> **How to read this document.** Two kinds of statement appear, and where this document marks them it
|
||||
> marks them like this — the same wording as `07-backup-architecture.md:11-17`, carried here on
|
||||
> 2026-08-22 (R-376) so a reader meets one convention and not eight:
|
||||
>
|
||||
> - **[DESIGN]** — a decision taken. Not derived from code; the code may not implement it yet.
|
||||
> - **[FACT]** — an observed property, carrying a `file:line`, a live command output or a citation.
|
||||
>
|
||||
> **Statements in this document are NOT yet all marked.** Marking them wholesale is a large judgement
|
||||
> exercise and a wrong mark is worse than none, so only what a session touches is marked (R-376).
|
||||
> **An unmarked statement therefore means "not yet classified", never "observed".** That ambiguity is
|
||||
> exactly what cost this project three sessions in August 2026: the hot/bulk placement decision sat
|
||||
> unmarked beside a marked `[FACT]`, and was read as an observation and reported as a defect.
|
||||
|
||||
|
||||
|
||||
> Status: design draft (decision content). To be grounded by Claude Code against
|
||||
> `docs/proxmox-platform.md` and `docs/architecture/02-controller-module-map.md`,
|
||||
> then placed at `docs/architecture/03-host-agent.md`.
|
||||
|
||||
@@ -1,5 +1,20 @@
|
||||
# Architecture Part 4 — Control-plane authorization (operator signing)
|
||||
|
||||
> **How to read this document.** Two kinds of statement appear, and where this document marks them it
|
||||
> marks them like this — the same wording as `07-backup-architecture.md:11-17`, carried here on
|
||||
> 2026-08-22 (R-376) so a reader meets one convention and not eight:
|
||||
>
|
||||
> - **[DESIGN]** — a decision taken. Not derived from code; the code may not implement it yet.
|
||||
> - **[FACT]** — an observed property, carrying a `file:line`, a live command output or a citation.
|
||||
>
|
||||
> **Statements in this document are NOT yet all marked.** Marking them wholesale is a large judgement
|
||||
> exercise and a wrong mark is worse than none, so only what a session touches is marked (R-376).
|
||||
> **An unmarked statement therefore means "not yet classified", never "observed".** That ambiguity is
|
||||
> exactly what cost this project three sessions in August 2026: the hot/bulk placement decision sat
|
||||
> unmarked beside a marked `[FACT]`, and was read as an observation and reported as a defect.
|
||||
|
||||
|
||||
|
||||
> Status: design draft (decision content), grounded on `docs/tests/phase4-signing-findings.md`.
|
||||
> To be reviewed by Claude Code against that spike + `03` §4, then placed at
|
||||
> `docs/architecture/04-control-plane-authorization.md`.
|
||||
|
||||
@@ -1,5 +1,20 @@
|
||||
# Architecture Part 5 — The Hub
|
||||
|
||||
> **How to read this document.** Two kinds of statement appear, and where this document marks them it
|
||||
> marks them like this — the same wording as `07-backup-architecture.md:11-17`, carried here on
|
||||
> 2026-08-22 (R-376) so a reader meets one convention and not eight:
|
||||
>
|
||||
> - **[DESIGN]** — a decision taken. Not derived from code; the code may not implement it yet.
|
||||
> - **[FACT]** — an observed property, carrying a `file:line`, a live command output or a citation.
|
||||
>
|
||||
> **Statements in this document are NOT yet all marked.** Marking them wholesale is a large judgement
|
||||
> exercise and a wrong mark is worse than none, so only what a session touches is marked (R-376).
|
||||
> **An unmarked statement therefore means "not yet classified", never "observed".** That ambiguity is
|
||||
> exactly what cost this project three sessions in August 2026: the hot/bulk placement decision sat
|
||||
> unmarked beside a marked `[FACT]`, and was read as an observation and reported as a defect.
|
||||
|
||||
|
||||
|
||||
> Status: design draft (decision content). To be validated by Claude Code against the **actual
|
||||
> felhom-hub source** (`felhom.eu` repo, `hub/`) + Parts 01–04, then placed at
|
||||
> `docs/architecture/05-hub-architecture.md`.
|
||||
|
||||
@@ -1,5 +1,20 @@
|
||||
# Architecture Part 6 — Offsite Connectivity (the backup transport)
|
||||
|
||||
> **How to read this document.** Two kinds of statement appear, and where this document marks them it
|
||||
> marks them like this — the same wording as `07-backup-architecture.md:11-17`, carried here on
|
||||
> 2026-08-22 (R-376) so a reader meets one convention and not eight:
|
||||
>
|
||||
> - **[DESIGN]** — a decision taken. Not derived from code; the code may not implement it yet.
|
||||
> - **[FACT]** — an observed property, carrying a `file:line`, a live command output or a citation.
|
||||
>
|
||||
> **Statements in this document are NOT yet all marked.** Marking them wholesale is a large judgement
|
||||
> exercise and a wrong mark is worse than none, so only what a session touches is marked (R-376).
|
||||
> **An unmarked statement therefore means "not yet classified", never "observed".** That ambiguity is
|
||||
> exactly what cost this project three sessions in August 2026: the hot/bulk placement decision sat
|
||||
> unmarked beside a marked `[FACT]`, and was read as an observation and reported as a defect.
|
||||
|
||||
|
||||
|
||||
> Status: **design-of-record** (2026-07-03). Records the settled offsite-backup-transport
|
||||
> decisions; grounded against felhom.eu @ `bf099f6` and felhom-agent @ `4ba1b14` (v0.63.0).
|
||||
> Evidence base: `documentation/audits/SPIKE-connectivity-wireguard-2026-07-03.md` (all
|
||||
|
||||
Reference in New Issue
Block a user