chore: v1-prep hygiene sweep — LICENSE (MIT), fixtures under tools/, doc staleness
All checks were successful
Check / eval (push) Successful in 4m21s
All checks were successful
Check / eval (push) Successful in 4m21s
Three-way audit ahead of v1 (structure/necessity, docs-vs-code drift, mechanical checkers) came back clean: zero dead files, zero doc hard errors, all 92 options documented, all consistency checkers green, no untracked files. What it did surface, fixed here: - LICENSE was missing entirely — the one hard launch blocker. MIT (Bernardo's call), pointer at the README foot. - checks/ was the only top-level dir outside the documented layout rule; its two state-legacy-name fixtures moved to tools/fixtures/ (Bernardo chose move over documenting an exception), flake.nix refs + drift messages updated. - Doc staleness: two leftover "theme-state" leads (HARDWARE.md, REQUIREMENTS.md) now say state.json; VISION Theme C charge-limit row gets its ✓; VISION agent-slices datestamp bumped. - The idle.nix miniTransition duplication (same binary name, lossy subset of the real display-transition tool) is deliberately NOT refactored here — filed as PROPOSED #150 with the audit evidence. Wallpapers-in-repo (97 MB) is the known LATER artifact-split item, not re-filed. Verification: V0 — nix flake check --no-build green after the fixture move (state-legacy-name's eval asserts exercise the new paths); doc edits prose-reviewed. Audits by three Sonnet passes; triage on Fable. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
21
LICENSE
Normal file
21
LICENSE
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2026 Bernardo Magri
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
@@ -542,3 +542,5 @@ reload # exec zsh (reload the shell)
|
|||||||
| **[agent/LOOP.md](agent/LOOP.md)** | Autonomous iteration protocol |
|
| **[agent/LOOP.md](agent/LOOP.md)** | Autonomous iteration protocol |
|
||||||
|
|
||||||
Kept out of the README body so this stays a focused entry point.
|
Kept out of the README body so this stays a focused entry point.
|
||||||
|
|
||||||
|
License: [MIT](LICENSE).
|
||||||
|
|||||||
@@ -185,6 +185,25 @@ If that count is zero over a few weeks post-linger, **close this unbuilt**. If i
|
|||||||
is not, the upstream issue has sat ten months on vaxerski's "that will cause a
|
is not, the upstream issue has sat ten months on vaxerski's "that will cause a
|
||||||
segfault no?" and a reproducer would be worth more than a local guard.
|
segfault no?" and a reproducer would be worth more than a local guard.
|
||||||
|
|
||||||
|
### 150. Extract the display-transition tool — idle.nix carries a lossy copy under the same name
|
||||||
|
|
||||||
|
Found by the 2026-07-17 structural audit. `modules/home/idle.nix:23-53` defines
|
||||||
|
`miniTransition`, a ~22-line `writeShellScriptBin` named
|
||||||
|
**`nomarchy-display-transition`** — the same binary name as the real ~175-line
|
||||||
|
tool in `modules/home/hyprland.nix:136-310` — implementing only
|
||||||
|
`undock|enable`, with none of the full tool's safety: no logging, no
|
||||||
|
lid-inhibitor gate, no `restore_keyboards`, no workspace moves, no
|
||||||
|
failure dump. The comment says why: "a mini transition avoids a circular
|
||||||
|
import on hyprland.nix". No PATH collision today (the mini is never installed;
|
||||||
|
it is baked by store path into hypridle's wake tool via `display-tools.nix`),
|
||||||
|
but nothing asserts the two stay behaviourally consistent, and this is the
|
||||||
|
subsystem where #100/#142/#148 all lived. Pitch: extract the full tool into
|
||||||
|
its own module file (e.g. `modules/home/display-transition.nix`) imported by
|
||||||
|
both hyprland.nix and idle.nix, delete the mini, re-run the
|
||||||
|
`tools/monitor-fallback.nix` harness + `checks.docking-ux` as the V2 gate.
|
||||||
|
Cost: a focused refactor of safety-critical code — deliberately NOT done as
|
||||||
|
hygiene drive-by; deserves its own iteration.
|
||||||
|
|
||||||
### 149. `[watch]` Waybar's exec-once workaround may be defending against nothing post-linger
|
### 149. `[watch]` Waybar's exec-once workaround may be defending against nothing post-linger
|
||||||
|
|
||||||
Spun out of #147 (shipped 2026-07-17) so its loose thread survives the entry:
|
Spun out of #147 (shipped 2026-07-17) so its loose thread survives the entry:
|
||||||
|
|||||||
@@ -19,6 +19,23 @@ Template:
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## 2026-07-17 — v1-prep hygiene sweep: repo is clean; LICENSE was the real gap
|
||||||
|
- **Task:** Bernardo asked for a structure/necessity audit + full docs sweep
|
||||||
|
ahead of v1. Three Sonnet passes (structure, docs-vs-code, mechanical
|
||||||
|
checkers); triage + fixes here.
|
||||||
|
- **Findings:** zero dead files (every pkg/module/tool/theme traces to a live
|
||||||
|
consumer); zero doc hard-errors; all 92 options documented; all 9 checkers
|
||||||
|
green; no untracked files. Real items: no LICENSE (fixed — MIT, Bernardo's
|
||||||
|
call), `checks/` violated the seven-dir rule (moved → `tools/fixtures/`,
|
||||||
|
flake refs updated), miniTransition duplication filed as #150, four one-line
|
||||||
|
doc staleness fixes (theme-state wording ×2, VISION ✓ + date).
|
||||||
|
- **Verified:** V0 — `nix flake check --no-build` green after the fixture
|
||||||
|
move (state-legacy-name's eval asserts exercise the new paths).
|
||||||
|
- **Pending:** nothing from this sweep; wallpapers-in-repo (97 MB) is the
|
||||||
|
known LATER split, not re-filed.
|
||||||
|
- **Next suggestion:** #150 when promoted, or the theme-switch latency
|
||||||
|
measurement that decides the wallpapers split.
|
||||||
|
|
||||||
## 2026-07-17 — #134: `unstable.<pkg>` seam shipped
|
## 2026-07-17 — #134: `unstable.<pkg>` seam shipped
|
||||||
- **Task:** BACKLOG #134 (NEXT, decided shape from this morning's triage).
|
- **Task:** BACKLOG #134 (NEXT, decided shape from this morning's triage).
|
||||||
- **Did:** `nixpkgs-unstable` input + `unstable` attrset in
|
- **Did:** `nixpkgs-unstable` input + `unstable` attrset in
|
||||||
|
|||||||
@@ -467,7 +467,7 @@ For contributors (and power users who will PR):
|
|||||||
|
|
||||||
## 11. Doctor and hardware health (current vs target)
|
## 11. Doctor and hardware health (current vs target)
|
||||||
|
|
||||||
**Today** (`nomarchy-doctor`): failed units, disk space, theme-state
|
**Today** (`nomarchy-doctor`): failed units, disk space, state.json
|
||||||
validity/git, generation age, snapper; hardware section self-gates per
|
validity/git, generation age, snapper; hardware section self-gates per
|
||||||
machine (NetworkManager, audio sink, GPU smoke, fprintd, fwupd, charge
|
machine (NetworkManager, audio sink, GPU smoke, fprintd, fwupd, charge
|
||||||
limit, battery health, hibernate/zram). All read-only; each ✖ prints one
|
limit, battery health, hibernate/zram). All read-only; each ✖ prints one
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ Related: [HARDWARE.md](HARDWARE.md) (profiles/drivers),
|
|||||||
## Graphics (default desktop)
|
## Graphics (default desktop)
|
||||||
|
|
||||||
The sole terminal is **Kitty** (GPU-accelerated OpenGL, themed from
|
The sole terminal is **Kitty** (GPU-accelerated OpenGL, themed from
|
||||||
theme-state). It runs on older integrated GPUs that reject Ghostty’s OpenGL
|
state.json). It runs on older integrated GPUs that reject Ghostty’s OpenGL
|
||||||
**4.3** floor — notably **Intel HD 4000 / Ivy Bridge** (Acer Aspire M5-481T
|
**4.3** floor — notably **Intel HD 4000 / Ivy Bridge** (Acer Aspire M5-481T
|
||||||
reported OpenGL **4.2** and could not start Ghostty). That is why Nomarchy
|
reported OpenGL **4.2** and could not start Ghostty). That is why Nomarchy
|
||||||
standardized on Kitty only: one terminal to theme, one set of classed windows
|
standardized on Kitty only: one terminal to theme, one set of classed windows
|
||||||
|
|||||||
@@ -85,7 +85,7 @@ Reference: [HARDWARE.md](HARDWARE.md) §4–§5, §11 (doctor).
|
|||||||
| **Dock life** ✓ | Lid closed + external only, wake, default audio sink on undock | ✓ #86 clamshell logind; ✓ #87 WirePlumber HDMI/USB priority (V3 hotplug QA) |
|
| **Dock life** ✓ | Lid closed + external only, wake, default audio sink on undock | ✓ #86 clamshell logind; ✓ #87 WirePlumber HDMI/USB priority (V3 hotplug QA) |
|
||||||
| **Hibernate/sleep confidence** ✓ | Doctor: resume device, swap size, clean suspend journal | ✓ shipped #77 (+ #76 agent V0–V2; V3 power-cycle HARDWARE-QUEUE) |
|
| **Hibernate/sleep confidence** ✓ | Doctor: resume device, swap size, clean suspend journal | ✓ shipped #77 (+ #76 agent V0–V2; V3 power-cycle HARDWARE-QUEUE) |
|
||||||
| **Battery health readout** ✓ | Cycles + design capacity % in doctor where sysfs allows | ✓ shipped #80 (report-only; charge limit is a separate row) |
|
| **Battery health readout** ✓ | Cycles + design capacity % in doctor where sysfs allows | ✓ shipped #80 (report-only; charge limit is a separate row) |
|
||||||
| **Charge-limit instant apply** | Live sysfs write without rebuild | Shipped menu live-write path 2026-07-10; residual V3 Dell Adaptive / non-BAT* in HARDWARE-QUEUE |
|
| **Charge-limit instant apply** ✓ | Live sysfs write without rebuild | ✓ shipped menu live-write path 2026-07-10; residual V3 Dell Adaptive / non-BAT* in HARDWARE-QUEUE |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -152,7 +152,7 @@ From GOALS non-goals and installer audits — do not “fill the roadmap” with
|
|||||||
|
|
||||||
## Suggested agent slices (promote via PROPOSED → NEXT)
|
## Suggested agent slices (promote via PROPOSED → NEXT)
|
||||||
|
|
||||||
**Still open** (as of 2026-07-11). Shipped items above are *not* open work.
|
**Still open** (as of 2026-07-17). Shipped items above are *not* open work.
|
||||||
|
|
||||||
1. `VISION § D` / LATER — wallpapers artifact split (decided deferred;
|
1. `VISION § D` / LATER — wallpapers artifact split (decided deferred;
|
||||||
promote only if theme-switch latency still hurts after measurement)
|
promote only if theme-switch latency still hurts after measurement)
|
||||||
|
|||||||
@@ -1558,8 +1558,8 @@
|
|||||||
let
|
let
|
||||||
inherit (nixpkgs) lib;
|
inherit (nixpkgs) lib;
|
||||||
expect = cond: msg: lib.assertMsg cond "state-legacy-name: ${msg}";
|
expect = cond: msg: lib.assertMsg cond "state-legacy-name: ${msg}";
|
||||||
legacy = ./checks/fixtures/legacy-state;
|
legacy = ./tools/fixtures/legacy-state;
|
||||||
none = ./checks/fixtures/no-state;
|
none = ./tools/fixtures/no-state;
|
||||||
evalsOk = src:
|
evalsOk = src:
|
||||||
(builtins.tryEval
|
(builtins.tryEval
|
||||||
(builtins.isAttrs (self.lib.mkFlake { inherit src; username = "fixture"; })))
|
(builtins.isAttrs (self.lib.mkFlake { inherit src; username = "fixture"; })))
|
||||||
@@ -1568,9 +1568,9 @@
|
|||||||
# Fixture drift: if someone adds a state.json here the check
|
# Fixture drift: if someone adds a state.json here the check
|
||||||
# would still pass, while testing nothing at all.
|
# would still pass, while testing nothing at all.
|
||||||
expect (builtins.pathExists (legacy + "/theme-state.json"))
|
expect (builtins.pathExists (legacy + "/theme-state.json"))
|
||||||
"fixture drift: checks/fixtures/legacy-state has no theme-state.json"
|
"fixture drift: tools/fixtures/legacy-state has no theme-state.json"
|
||||||
&& expect (! builtins.pathExists (legacy + "/state.json"))
|
&& expect (! builtins.pathExists (legacy + "/state.json"))
|
||||||
("fixture drift: checks/fixtures/legacy-state also has a state.json, "
|
("fixture drift: tools/fixtures/legacy-state also has a state.json, "
|
||||||
+ "so it no longer exercises the legacy-only path")
|
+ "so it no longer exercises the legacy-only path")
|
||||||
&& expect (evalsOk legacy)
|
&& expect (evalsOk legacy)
|
||||||
("mkFlake cannot evaluate a checkout carrying only theme-state.json — "
|
("mkFlake cannot evaluate a checkout carrying only theme-state.json — "
|
||||||
|
|||||||
Reference in New Issue
Block a user