Commit Graph
146 Commits
Author SHA1 Message Date
Frank b9dcb88f9b live: heartbeat sync 2026-10-30T03:56:49-07:00 (Refs #11) 2026-10-30 03:56:49 -07:00
Frank fb9b8b7d22 live: heartbeat sync 2026-10-30T02:53:49-07:00 (Refs #11) 2026-10-30 02:53:49 -07:00
Frank 52e8cca8f3 live: heartbeat sync 2026-10-30T00:48:49-07:00 (Refs #11) 2026-10-30 00:48:49 -07:00
Frank 7b7566928f live: heartbeat sync 2026-10-29T23:45:49-07:00 (Refs #11) 2026-10-29 23:45:49 -07:00
Frank ee7489b546 live: heartbeat sync 2026-10-29T22:44:49-07:00 (Refs #11) 2026-10-29 22:44:49 -07:00
Frank dc56eb5b02 live: heartbeat sync 2026-10-29T20:38:49-07:00 (Refs #11) 2026-10-29 20:38:49 -07:00
Frank a5e00a09eb live: heartbeat sync 2026-10-29T19:37:40-07:00 (Refs #11) 2026-10-29 19:37:40 -07:00
Frank 4df5a28ba6 live: heartbeat sync 2026-10-29T17:35:49-07:00 (Refs #11) 2026-10-29 17:35:49 -07:00
Frank 03bf48956f live: heartbeat sync 2026-10-29T16:32:39-07:00 (Refs #11) 2026-10-29 16:32:39 -07:00
Frank 4d76c6038e live: heartbeat sync 2026-10-29T15:29:37-07:00 (Refs #11) 2026-10-29 15:29:37 -07:00
Frank dc88d6f961 live: heartbeat sync 2026-10-29T13:25:49-07:00 (Refs #11) 2026-10-29 13:25:49 -07:00
Frank f2d8aa4f9e live: heartbeat sync 2026-10-29T12:22:39-07:00 (Refs #11) 2026-10-29 12:22:39 -07:00
Frank c736456413 live: heartbeat sync 2026-10-29T10:17:49-07:00 (Refs #11) 2026-10-29 10:17:49 -07:00
Frank 441519c1f0 live: heartbeat sync 2026-10-29T09:15:49-07:00 (Refs #11) 2026-10-29 09:15:49 -07:00
Frank 90cd6bb766 live: heartbeat sync 2026-10-29T08:12:39-07:00 (Refs #11) 2026-10-29 08:12:39 -07:00
Frank a8e74e7266 live: heartbeat sync 2026-10-29T06:09:49-07:00 (Refs #11) 2026-10-29 06:09:49 -07:00
Frank 41f577c883 live: heartbeat sync 2026-10-29T02:02:39-07:00 (Refs #11) 2026-10-29 02:02:39 -07:00
Frank 32bea490c4 live: heartbeat sync 2026-10-29T01:00:49-07:00 (Refs #11) 2026-10-29 01:00:49 -07:00
Frank ea2cfad847 live: heartbeat sync 2026-10-28T21:53:49-07:00 (Refs #11) 2026-10-28 21:53:49 -07:00
Frank 7d394e74b4 live: heartbeat sync 2026-10-28T19:48:49-07:00 (Refs #11) 2026-10-28 19:48:49 -07:00
Frank 10cd18ec57 live: heartbeat sync 2026-10-28T18:46:49-07:00 (Refs #11) 2026-10-28 18:46:49 -07:00
Frank 4648ba7f3f live: heartbeat sync 2026-10-28T16:42:49-07:00 (Refs #11) 2026-10-28 16:42:49 -07:00
Frank 2d71c603cb live: heartbeat sync 2026-10-28T15:42:39-07:00 (Refs #11) 2026-10-28 15:42:39 -07:00
Frank 979382e5cc live: heartbeat sync 2026-10-28T13:39:49-07:00 (Refs #11) 2026-10-28 13:39:49 -07:00
Frank a071d71e99 live: heartbeat sync 2026-10-28T11:37:39-07:00 (Refs #11) 2026-10-28 11:37:39 -07:00
Frank 38236f35f7 live: heartbeat sync 2026-10-28T10:34:49-07:00 (Refs #11) 2026-10-28 10:34:49 -07:00
Frank 68d6889100 live: heartbeat sync 2026-10-28T08:31:49-07:00 (Refs #11) 2026-10-28 08:31:49 -07:00
Frank 5a3f1a77ac live: heartbeat sync 2026-10-28T07:29:49-07:00 (Refs #11) 2026-10-28 07:29:49 -07:00
Frank 0b27a68c33 live: heartbeat sync 2026-10-28T06:26:49-07:00 (Refs #11) 2026-10-28 06:26:49 -07:00
Frank 0b72e9a427 live: heartbeat sync 2026-10-28T05:23:49-07:00 (Refs #11) 2026-10-28 05:23:49 -07:00
Frank ddebfb63bb live: heartbeat sync 2026-10-28T01:13:49-07:00 (Refs #11) 2026-10-28 01:13:49 -07:00
Frank 414b4cd578 live: heartbeat sync 2026-10-27T23:08:49-07:00 (Refs #11) 2026-10-27 23:08:49 -07:00
Frank b289aa59d4 live: heartbeat sync 2026-10-27T22:05:49-07:00 (Refs #11) 2026-10-27 22:05:49 -07:00
Frank 175bbdf451 live: heartbeat sync 2026-10-27T21:02:39-07:00 (Refs #11) 2026-10-27 21:02:39 -07:00
Frank feda9fe668 live: heartbeat sync 2026-10-27T14:52:38-07:00 (Refs #11) 2026-10-27 14:52:38 -07:00
Frank eae9dea2b0 live: heartbeat sync 2026-10-25T19:49:50-07:00 (Refs #11) 2026-10-25 19:49:50 -07:00
Frank bc597edec1 live: heartbeat sync 2026-10-23T16:20:45-07:00 (Refs #11) 2026-10-23 16:20:45 -07:00
Frank 5f560f33c1 live: heartbeat sync 2026-10-23T15:17:45-07:00 (Refs #11) 2026-10-23 15:17:45 -07:00
Frank 461f0b8a6e live: heartbeat sync 2026-10-23T14:16:45-07:00 (Refs #11) 2026-10-23 14:16:45 -07:00
Frank 02b65989ca live: heartbeat sync 2026-10-23T13:14:45-07:00 (Refs #11) 2026-10-23 13:14:45 -07:00
Frank 42eaf9e1a7 live: heartbeat sync 2026-10-22T22:47:45-07:00 (Refs #11) 2026-10-22 22:47:45 -07:00
Frank f51f4dd1aa live: heartbeat sync 2026-10-22T20:42:45-07:00 (Refs #11) 2026-10-22 20:42:45 -07:00
Frank 0e2cf13e3b live: heartbeat sync 2026-10-22T11:24:45-07:00 (Refs #11) 2026-10-22 11:24:45 -07:00
Frank 4d515f7e81 live: heartbeat sync 2026-10-22T04:54:18-07:00 (Refs #11) 2026-10-22 04:54:18 -07:00
Frank 017404aa51 live: heartbeat sync 2026-10-21T17:49:41-07:00 (Refs #11) 2026-10-21 17:49:41 -07:00
Frank 22d2f3bcd8 chore(merge): land origin/main (PR #61, PR #63) in the deployment checkout
Two conflicts, both resolved to trunk, both proven content-free for the running
machine before the merge was committed:

- `agent/APPEND_SYSTEM.md` — the checkout's dirty copy and trunk differ in one line
  only: #61's trim of the duplicated one-log reasoning, replaced by the owner pointer.
  The doctrine text itself is byte-identical on both sides.
- `desk-1-home.kdl` — non-comment lines are byte-identical (`diff` on the stripped
  file: no output), so the deployed modes are unchanged: `3440x1440@180.000` ×3 and
  `1920x1080@60.001`. What changes is the comment: trunk's carries the measured mode
  list (`3440x1440@239.998` exists), the reason 180 is deliberate, and the verbatim
  mode-string law — the live copy still asserted "no 240 Hz mode exists", which the
  panel contradicts. `niri validate` on the assembled config: valid.

Deployment state after this: the checkout is main, and `agent/memories/**` +
`agent/managed-skills/**` were committed by the heartbeat commit underneath. Refs #60 #62
2026-10-21 01:45:33 -07:00
Frank 8af40c402b chore(agent): commit the machine tier and the doctrine text the checkout was already running
Landing blocker for #61 and #63: the deployment checkout is 12 commits behind and
`merge --ff-only` refuses while tracked paths are dirty. Discard is not available here
(workspace policy: no `checkout`/`stash` on shared state), so the dirt is committed.

- `agent/APPEND_SYSTEM.md`: the point-of-use / one-work-log / PR-link doctrine, already
  byte-identical to `origin/main` (`cmp` against the trunk blob: no difference). No new
  prose — the commit exists so the trunk merge can proceed.
- `agent/config.yml` and `agent/managed-skills/**`: the machine-live tier the heartbeat
  owns (AGENTS.md § Live-sync tiers).

`ALLOW_SECRETS=1` was used, deliberately and after auditing the staged diff by hand: the
only credential-shaped strings in it are two copies of `AKIA0000000000000EXAMPLE` — the
inert all-zero AWS example id — and they appear inside the two skill pages that teach
that exact placeholder shape. This checkout is still running the pre-#61 hook; the merged
gate (value-scoped placeholder filter, `71601f7`) exempts this value, so the refusal
dies with this landing. No `--no-verify` was used: the gate ran and its verdict is
recorded here.

Refs #61
2026-10-21 01:44:51 -07:00
Frank 334e5d0ee0 docs(niri): the ultrawide's refresh ceiling was a typo, not a limit
The page asserted the Sceptre M34's EDID tops out at 180 Hz. Measured on blankpad
after the merge, `niri msg outputs` lists 3440x1440@239.998 — the claim was false
in main, and it was load-bearing: it is the reason nobody questioned the profile
while the panel ran at 60 Hz for weeks. The real defect was one character: the
profile asked for 239.999, the panel offers 239.998, and niri matches mode strings
verbatim, falling back to *preferred* without failing.

Corrected to the measured mode list, and the deployed 180 is now documented as a
deliberate choice (the link is trained at x8 32.0 GT/s against a max of x16 and the
display engine throws EINVAL), so the next reader neither "restores 240" blind nor
re-pins 180 as a hardware ceiling. The kdl profile comment carries the same facts at
the point of edit, because that is where the next change to this mode gets typed.

Refs #60
2026-10-21 01:06:04 -07:00
Frank 671222b881 docs(60): point-of-use corrections from the 2026-10-20 review
Measured fixes, one line each, from the review of everything that landed on
2026-10-20 (issue #60). Each page keeps its own facts; nothing was moved.

- inventory/index, index: the census blurb says what the page actually covers
  (tracked-vs-box-only per file), not "all userspace configuration"
- dotfiles-deploy: the wallpaper re-fetch recipe resolves the CDN URL through
  the wallhaven API — /w/<id> answers text/html, so curl -L never yields a
  JPEG; description widened to the whole page, tools/index blurb matched
- okf-maintenance: the link example and the mistake bullet now agree with
  okf-spec, which RECOMMENDS absolute bundle paths (they said the opposite)
- decisions/index: the unlisted-page gate is kb-coverage.py, not kb-lint
- AGENTS.md: the three skill-config subsections are pointers again; the pages
  own issue tracker, labels and domain docs
- swayidle-lock.service: Description names what the unit does (arms the idle
  lock over noctalia-shell IPC); suspend belongs to noctalia's inhibitor
- common.pkgs: git-lfs re-justified by the tracked .gitattributes filter
  contract; the swayidle comment drops its lid-policy claim
2026-10-21 00:54:06 -07:00
Frank 23372e96f5 fix(niri): pin the ultrawide to the 180 Hz mode its EDID actually offers
desk-1-home.kdl asked the Sceptre M34 for 3440x1440@239.999, a mode the panel
has never offered. niri does not reject an unavailable mode: it logs "configured
mode ... could not be found, falling back to preferred" and drives the EDID
preferred mode - 60 Hz - on every connector event, which is why the monitor
looked like it was dying rather than misconfigured. Read live with
`niri msg outputs`, the mode list tops out at 180.

Also destroys the copies of the phantom number: displays.md carried 239.999 in
its diagram, its panel table and its copy-paste pattern block, and its rule 4
claimed an impossible mode leaves the output dark. Rule 4 now states the real
failure mode, a new section separates config / DP-link / amdgpu-driver faults by
log signature, and wlr-randr is corrected to not-installed (three pages claimed
it; `pacman -Qs wlr` matches nothing).

Applied live with `niri msg output <panel> mode <mode>` - the temporary
per-output path, so no config reload and no logged-out session - verified at
3440x1440 @ 180.000 Hz with the compositor PID unchanged.

Refs #58
2026-10-21 00:05:17 -07:00