Files
Nomarchy/agent
Bernardo Magri 3e6cc6fe84
All checks were successful
Check / eval (push) Successful in 3m49s
docs(agent): #137 re-diagnosed from plymouth's source — my first read was wrong
The entry claimed Window.GetWidth() returns head 0 and that the fix was
per-head sprites. Both false, and per-head sprites would have REGRESSED it
into duplicate logos. From plymouth.src (the build nixpkgs ships):

- Window.GetWidth() with no index returns data->max_width — the widest
  head (script-lib-sprite.c:227), not head 0;
- the plugin builds a max_width x max_height canvas and CENTRES every
  display inside it (display->x = (max_width - width)/2, :536), drawing
  sprites per display at sprite->x - display->x (:452);
- so a canvas-centred sprite IS centred on every head, and today's math is
  correct at the instant it runs. (The DRM renderer's area.x = 0 for every
  head is a red herring — the offsets that matter are the plugin's.)

The real bug is TIME: nomarchy.script computes every position as a
top-level statement at parse time, against the canvas that existed then. A
display arriving or leaving mid-splash — exactly "boot/shutdown with an
external" — changes max_*, the plugin re-centres each display, and the
frozen sprite coords are then off by (new_max - old_max)/2 on every head.
A single monitor never changes the canvas, which is why it was never seen
undocked.

Fix shape recorded (reposition from the existing refresh callback on
canvas change). Not shipped: the same script draws the LUKS passphrase box
on an encrypted machine, and the render rig — plymouth ships x11.so plus a
built-in PLY_CREATE_FAKE_MULTI_HEAD_SETUP — needs root.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-16 11:57:54 +01:00
..

Agent instructions + loop state

Everything an AI agent needs to work on Nomarchy, vendor-neutral and git-tracked. Protocol: LOOP.md. Entry point for every harness: repo-root AGENTS.md.

Instructions (how to work)

File Who writes Role
LOOP.md Human One-iteration protocol (orient → pick → work → verify → commit → record) + the V0V3 ladder
VERIFICATION.md Human (agents propose) Enforcement: preflight, honesty rules, visual protocol, hardware-blocked checks, reporting
DELEGATION.md Human (agents propose) Capability tiers, scout/runner roles, token economy, parallel fan-out
GOALS.md Human (agents propose) Pillars, quality bars, non-goals
CONVENTIONS.md Human (agents propose) How to write code/menu/state while shipping
THEME-DESIGN.md Human (agents propose) Theme/visual design instructions

State (what's happening)

File Who writes Role
BACKLOG.md Both Prioritized queue — only executable work list
JOURNAL.md Agents Append-only iteration log (read last 35 entries; older → JOURNAL-ARCHIVE.md)
MEMORY.md Agents Curated durable gotchas
HARDWARE-QUEUE.md Agents append, human checks On-hardware V3 tests only Bernardo can run

Product / design docs (not a queue)

File Role
../docs/VISION.md v1.0 product themes — agents slice into BACKLOG PROPOSED
../docs/ROADMAP.md Design history + shipped log
../docs/README.md Full docs map

Harness adapters (vendor-specific, thin)

Shared content never lives in an adapter — adapters only register/route into the files above, in whatever format their harness requires.

Path Harness Role
../AGENTS.md any Entry point (CLAUDE.md is a symlink to it)
../.claude/settings.json Claude Code Tool permissions
../.claude/agents/ Claude Code nomarchy-scout / nomarchy-runner role defs (contracts in DELEGATION.md)

Do not put backlog items, vision text, or policy under an adapter directory — it is not shared with other agent runners.

Rules of thumb

  1. Execute from BACKLOG only (NOW → NEXT; never PROPOSED without human triage).
  2. Orient with GOALS + CONVENTIONS + MEMORY + last journal + BACKLOG; when the task is product-shaped, also read the relevant VISION §.
  3. Record lasting design in ROADMAP ✓ when something ships that future humans should know; delete the BACKLOG line.
  4. v1 branch is human-only — never advance from an agent session.