5.2 KiB
5.2 KiB
03 — What the predecessor taught
A study on 2026-10-04 of the retired predecessor:
- its 128 module manifests, their hooks, its installer and its sync engine;
- 3,395 commits of history;
- what it left on four machines.
This document holds what bears on the graphical session and on the system layer (research 027). The evidence is in the predecessor's history. A commit is cited here by what it fixed, not by its hash, because the repository is private.
Keep: what worked
| pattern | where it shows | in the mesh |
|---|---|---|
| ownership marked inside the file: inside the markers is reconciled, outside is kept verbatim | a block marker in a shared file, after an engine that rewrote whole files | kept regions (ADR 0174, ADR 0204) |
two writers get two files and an include, the include first |
the ssh client's configuration, after two writers fought over one file | ADR 0203's two files; research 026 C1 |
| one writer per file, one authority per action | only the reload watcher restarts the window manager, after three mechanisms each did | ADR 0182 |
| refuse to write when the source of truth is unreadable; never empty a block because a query found nothing | a block of names was emptied by a failed query | — keep |
| an unresolved template variable fails the install | a literal unfilled path was installed green | issue 231: the mesh still has this gap |
| prune only what you can prove you placed | stale files from earlier deliveries | ADR 0189 |
| ensuring never rotates a credential | a silent rotation caused a retry storm, a ban of the shared address and a lost registry | ADR 0114 |
| vendor only the files you use; never clone and link | three files instead of 77 MB | ADR 0205 |
| copy, never symlink | a recursive delete followed a link, and every reinstall failed | ADR 0012 |
| verification says what it did not check | a verifier said clean while the secret was still on disk | — keep |
| alert once per condition | 411 alerts hid a 28-hour outage | ADR 0090 |
Do not repeat
| failure | what it did | the mesh instead | where the mesh is still exposed |
|---|---|---|---|
| Flavors | variant files and packages per machine type: a gate dropped, the first-seen variant won, packages never installed, the verifier ignored the gate. On the day of the study a desktop carried a laptop model's fragments | one module per piece, assignment per machine (ADR 0174, research 026 §1) | a setting that switches which whole file is rendered is a flavor under another name |
| The freeze | existing values outranked new defaults; templated files were rendered once (copy if absent) | files are generated (ADR 0011) | a created-once file (ADR 0087) is a deliberate freeze, and a push must say kept |
| Adopting drift | a merge strategy made a local edit the record forever; switching strategies clobbered a person's model choice | nothing is read back (ADR 0174) | an edit outside a kept region is overwritten silently. The predecessor's why is this back loop: the push should name what it overwrote |
| Environment templating | ${VAR} matched any name; unresolved names stayed literal; comments and destination paths were interpolated |
namespaced placeholders; $ forbidden in contributed values (ADR 0203) |
issue 231 |
| Hooks with privilege | install hooks ran sudo, chsh, systemctl, git clone and curl, and swallowed failures into a warning |
the user shape, the service shape, archives (ADR 0176, 0177, 0205) |
the agent module writes under /etc from its own tool through sudo (no keep-original, no give-back); the prompt's helper downloads itself unpinned; that the operator escalates without a prompt is assumed by three modules and declared by none (research 027) |
| Secrets in environment files | .env files left world-readable; the decryption key beside what it decrypts; a deleted secret stayed in the file, so rotation was a no-op |
the vault (ADR 0113, 0114) | a predecessor file of secrets is still sourced into the graphical session on two machines (research 027 Q2) |
| Symlinks into a home | a system file linked into a person's home | ADR 0012 | on the control machine, a fail2ban action file is still a predecessor link into its home tree. Deleting that tree would silently break the repeat-offender jail. The mesh's fail2ban module must own it as a file first |
| Green while broken | a recorded version frozen for four months; a verifier passing what it skipped | ADR 0134, 0145, 0184 | issue 230: a plan waiting for ever reads as healthy |
What it means here
- Research 026: the desktop's 88 flavor-gated files and 92 theme variables are the flavor and templating failures in one module. Question 1 (one module per piece) and question 6 (hardware modules, settings later) are the answer, and nothing in the new modules may switch whole files on a setting.
- Research 027: the hooks that installed the AUR helper, enabled the login manager and changed
shells are what the
package,serviceandusershapes replace. Every remainingsudoin a module's own code is a debt to be named, starting with the agent module.