notes: audit the options roadmap against the repos, not against itself - #183
Merged
Merged
Conversation
An audit of every open box in §5 against the actual checkouts found three
items that had shipped and were never ticked, plus one option family that
was renamed out from under the whole document.
§5.9 rice-side nebelhaus.pounce.items rice#149, 2026-07-30
§5.12 haus doctor detects FDA rice#128
§5.2 Finder sidebar size follows scale rice#181
§5.4a multi-source install rice#182 — which also renamed
nebelhaus.apps → nebelhaus.roster
The §5.9 one is why this pass happened: the status block at the top already
credited rice#149 by number while the checkbox 600 lines below still called
it "the next cheap win in this section". Picking work off the checkboxes —
the way the file is actually used — meant starting to rebuild something that
had existed for four days.
So the corrections are here, and §5.14 is new: what drifted, why this doc
drifts more than a normal TODO list (the work is in four repos and the doc
lives in a fifth, and items keep shipping out of phase from the app side),
and the rule it leaves — the header summarises, the checkbox decides, and
when they disagree the repo settles it.
Also records rice#198 (hot corners + screenshots), which closes §5.6's first
two groups and settles that section's default policy: null means write
nothing, and null is not the same as off.
No verdict in §6 moves — all three reference rices still pass and the
font-package format limit is still the one visible gap. What changed is the
count of what's left, and the observation that Phase 0's last item needs no
code at all, which is exactly why it keeps losing to items that do.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
rice#198 ships packs/writing.nix, so the roadmap's oldest open item is done and Phase 0 is closed. Three findings recorded where they'll be read: - Writing the pack found a real bug: roster leader keys were never checked against the built-in launch-mode actions, only leaderExtras was. The check existed in one direction only, and a SHARED rice is what makes the other direction likely — a pack author doesn't know the leader vocabulary. - appId is the one roster field a pack structurally cannot fill in, so the honest shape is to ship null and name the one-liner that closes it. - §5.3's package-type format limit reappeared from a second family (roster.*.package, same as fonts.mono.package). Two families is where it stops being a per-option workaround and becomes one fix — and the audit for it is mechanical enough to be a check rather than a one-off. Also notes why Phase 0 stalled in the first place: its last item needed no code at all, which is precisely why it kept losing to items that did. Cheap and unblocked is not the same as likely to happen. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
An accuracy pass over
notes/options-roadmap.md,driven by an audit of every open
- [ ]in §5 against the actual repos.Three items had shipped and were never ticked, and one option family was
renamed out from under the whole document:
nebelhaus.pounce.itemshaus doctordetects FDAui.scalenebelhaus.apps→nebelhaus.rosterPlus rice#198 (hot corners + screenshots) recorded, closing §5.6's first two
groups, and a new §5.14 on the drift itself.
Why
§5.9 is the case that prompted this. The status block at the top of the file
already credited rice#149 by number, while the checkbox 600 lines below still
read "rice side, and it is the next cheap win in this section". Picking work off
the checkboxes — which is how the file is actually used — meant starting to
rebuild something that had existed for four days.
That is a documentation bug with a cost, so §5.14 records the mechanism rather
than just fixing the symptom. Two structural reasons this file drifts more than
an ordinary TODO list, both worth designing around instead of resolving to try
harder:
nebelhaus,nebelungorpounceCI can see this file, so a PR that closesan item has no mechanical way to say so. Every other cross-repo seam in this
project got fixed by making the upstream repo emit data (
options-json,wm-bindings-json,ports.meta.json, §7) — this one is still prose on bothsides.
§5.9's item schema both arrived from downstream repos that wanted the data
structure for their own reasons. Phase 4 already notes that as a good thing,
and it is — but it means a rice-side box goes stale without anyone in the rice
touching the item.
The rule it leaves: the header summarises, the checkbox decides, and when they
disagree the repo settles it.
Two smaller findings that came out of the same pass and are recorded where
they'll be read:
shipped in
rosteris four parallel nullable source fields, not{ source; package; }. A discriminated union reads better in a doc but isworse to merge, and merging is what a registry is for — parallel fields let
two modules contribute to one entry under the module system's ordinary merge,
while a union makes every contributor restate the discriminator and turns a
partial contribution into a type error.
code at all — the format, the guide and the four install sources all exist.
That's exactly why it keeps losing to items that do.
Verify
Docs only — no code, no generated artefact, nothing for CI to check.
gh pr view <n> --repo nebelhaus/nebelhaus.nebelhaus.appsnow appears only where it's explicitly discussed as the oldname;
apps.*.workspace/apps.*.keyareroster.*.◐partial.Watch-out
PR changes shape or doesn't land, this file overstates by two groups.
apps/rostervocabulary. It didnot re-verify the already-ticked
[x]boxes, so an item that shipped andwas later reverted would still read as done.
🤖 Generated with Claude Code