rename: drop nebelhaus — decision 10, §11, and the workshop half - #372
Merged
Conversation
Re-measured the rename's tail against the machine and the org rather than against the note, and found §10 further along than it claimed: - 10.3: `bench relocate-haus` had run (layer at ./haus) AND its compatibility shim was retired by workshop#331 on 2026-08-12 — no command, no repo_dir fallback, no status nudge, no bats cases survive in bench. - 10.4: zero family locks still record `"repo": "hausfold"`, and no repo in the org still describes itself as nebelhaus. Both bullets closed. - §10's gate re-runs green; all six `hausfold/hausfold` hits are on the allow-list §10.2 wrote. One rename item survives: ~/.config/nix/flake.nix:7 still names the old slug. It is one fix with the consumer's lock, not two — a lock's `original` is copied from the flake ref, so the lock cannot correct itself first. The night handoff also answers the question asked at the end of the arc in full: nebelhaus is NOT dropped, and the four live senses each stay for a different reason (the desktop, the flake input name, the dead org's update-check redirects, the state paths). Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QiRMS2Hcpo5svDKK9hpZa9
The assurance pass caught the enumeration mis-splitting them: AGENTS.md:48 is not a PR citation, so "every one is on §10.2's allow-list" over-claimed. Three are historical PR links; three are sentences that quote the old slug in order to say it's gone — which is a second allowed kind, written after the allow-list was. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QiRMS2Hcpo5svDKK9hpZa9
The desktop becomes `hacker`; everything else still wearing the word becomes `haus`. Reverses §6's first two paragraphs, struck through in place rather than deleted — the reasoning there protected the PAGE, not the word, and every bit of it survives as `/desktops/hacker`. §11 carries the walkthrough. Its §11.0 table is the load-bearing part: 1,125 hits, three different answers, and most of them "leave it alone" — the dead org (update checks), holt's Go module path, nebelhaus.com's 301 map, and 110 lines of option aliases all stay. Two design notes worth having before the code: - The site already planned for this. worker.js's own comment predicted the desktop losing the name and prescribed the shape: new row, old row stays as an alias. The trap is the alias's PIN — re-point it to `hacker` or it 200s at the Worker and fails inside bootstrap. - The state-path move is by SYMLINK, which collapses perch's two-repo marker contract from a three-release coordination into none: old binaries resolve through the link and keep working. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QiRMS2Hcpo5svDKK9hpZa9
Decision 10 (notes/hausfold-rename.md §11): the desktop is `hacker`. - web/worker.js: the three rows landing on hausfold.co's desktop page now point at /desktops/hacker/. The KEYS keep the old spelling — a redirect source is a fact about the past — but the destinations were re-pointed rather than left to chain onto hausfold.co's own /desktops/nebelhaus row. One hop is this file's whole reason to exist (§5.2); a chain is how it quietly becomes two again. - bench: the release audience for `haus` is hausfold.co/hacker.sh. - AGENTS.md: the terminology table's "nebelhaus bare … stays, forever (§6)" row is struck and re-pointed at §11, and the flake-input row got sharper rather than weaker — §11.2 moves the input to `haus`, but the input name and bench's OVERRIDABLE are ONE edit, because Nix doesn't hard-fail an override for an unknown input. - README: the "when this can be turned off" paragraph leaned on §6 to argue the domain outlives the desktop's name. The argument survives the reversal intact and is now made without it. Verified: web vitest 15/15, shellcheck bench clean, bats test/bench.bats 75/75. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QiRMS2Hcpo5svDKK9hpZa9
nebelhaus — decision 10, §11, and the workshop half
JulienMartel
added a commit
that referenced
this pull request
Aug 15, 2026
… the code Three published nebelhaus.com URLs have been redirecting onto a 404 since #372 deployed at 10:06Z: /start/what-is-nebelhaus, /start/first-run and /reference/keybindings all pointed at hausfold.co/desktops/hacker/, which is the desktop's old path with its new name substituted in. hausfold.co had retired that tree into the docs hours earlier (hausfold.co#47) — /desktops/ hacker/ is a 404, /desktops/nebelhaus/ is itself a 301 into /docs/haus/desktops/hacker/, and the #keys fragment the keybindings row carried does not exist on any page any more (the ids are what-it-turns-on, first-moves, making-it-yours, where-to-go-next). So: the two desktop rows land on /docs/haus/desktops/hacker/, keeping the #first-moves fragment which is real there. Keybindings follows the ruling hausfold.co already made for the same URL — the keys were a shortened reprint of the windows room and the port deliberately didn't copy them, so it lands on the page that has them rather than on a fragment of the desktop's sheet. The suite stayed green throughout, which is the part worth keeping: it proves the map is complete and points at hausfold.co, and nothing in it fetches, so a destination that 404s is invisible to it. Two tests now pin the renamed rows by hand, and one fails any future row pointing under hausfold.co/desktops/ — that prefix is either a 404 or the second hop this file exists to avoid. Separately, README.md and AGENTS.md picked up "new installs scaffold `haus`" in #372. They don't — haus's bootstrap.sh:567 writes inputs.nebelhaus.url for a fresh install, so a new machine spells it exactly as this one does. That claim is the §11.2 trap dressed as progress: believing the input has half-moved is what leads to finishing it by editing bench's OVERRIDABLE alone, which is the edit that makes every --override-input silently no-op while reporting success. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PkTBtapKcZTCeTqfhRZEJ7
JulienMartel
added a commit
that referenced
this pull request
Aug 15, 2026
… the code Three published nebelhaus.com URLs have been redirecting onto a 404 since #372 deployed at 10:06Z: /start/what-is-nebelhaus, /start/first-run and /reference/keybindings all pointed at hausfold.co/desktops/hacker/, which is the desktop's old path with its new name substituted in. hausfold.co had retired that tree into the docs hours earlier (hausfold.co#47) — /desktops/ hacker/ is a 404, /desktops/nebelhaus/ is itself a 301 into /docs/haus/desktops/hacker/, and the #keys fragment the keybindings row carried does not exist on any page any more (the ids are what-it-turns-on, first-moves, making-it-yours, where-to-go-next). So: the two desktop rows land on /docs/haus/desktops/hacker/, keeping the #first-moves fragment which is real there. Keybindings follows the ruling hausfold.co already made for the same URL — the keys were a shortened reprint of the windows room and the port deliberately didn't copy them, so it lands on the page that has them rather than on a fragment of the desktop's sheet. The suite stayed green throughout, which is the part worth keeping: it proves the map is complete and points at hausfold.co, and nothing in it fetches, so a destination that 404s is invisible to it. Two tests now pin the renamed rows by hand, and one fails any future row pointing under hausfold.co/desktops/ — that prefix is either a 404 or the second hop this file exists to avoid. Separately, README.md and AGENTS.md picked up "new installs scaffold `haus`" in #372. They don't — haus's bootstrap.sh:567 writes inputs.nebelhaus.url for a fresh install, so a new machine spells it exactly as this one does. That claim is the §11.2 trap dressed as progress: believing the input has half-moved is what leads to finishing it by editing bench's OVERRIDABLE alone, which is the edit that makes every --override-input silently no-op while reporting success. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PkTBtapKcZTCeTqfhRZEJ7
JulienMartel
added a commit
that referenced
this pull request
Aug 15, 2026
…01s onto a 404 (#375) * ci, notes: enumerate the account — four leaked previews, two still serving the ?ref= hole §5.3 closed with a *look* rather than a step: the Cloudflare dashboard's Workers ▸ Routes for both zones, "since nothing in either repo enumerates what is actually deployed". Taking it turned up two things. It never needed the dashboard. The wrangler OAuth token already on the machine carries account:read and workers_scripts, so two REST calls list every Worker and every zone route — a check something can run rather than a thing to remember. And the sheet wasn't clean. Four PR-preview Workers leaked from PRs closed 2026-08-11/12, all of them workers_dev=true and publicly reachable. Two predate the 301 map, so they are copies of the old site Worker: /init.sh answers 200, and ?ref=<a real 40-hex sha> answers 200 with the bootstrap from that ref — the fork-network hole §5.3 recorded as closed. Deleting nebelhaus-init closed the path it was on, not the code; the code lives on in every preview upload of that era, each with its own hostname. preview-web.yml's cleanup job is not at fault — both leaks are its trigger failing to fire, which no pull_request-triggered job can fix. The paths filter is evaluated against the PR's whole diff, so a PR that touched web/** early and not finally deploys a preview and never fires `closed` (nebelhaus-pr-321). And a PR closed in the same operation that deletes its head branch gets no `closed` run at all (nebelhaus-pr-341). So ask the other question, from state: preview-sweep.yml lists the account's Workers daily, asks GitHub whether each <prefix>-pr-<n>'s PR is still open, and deletes the ones that aren't. Anchored name match, so neither production Worker can match; workflow_dispatch takes a dry_run. Verified by driving the extracted job body against the live account in dry-run — it named those four and nothing else — and shellcheck-clean. One thing no merge can fix, left 👤 in §5.3: an api.hausfold.co route pointing at the nebelhaus.com 301 map, declared in no config in either repo, dormant only because that subdomain has no DNS record. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PkTBtapKcZTCeTqfhRZEJ7 * web: the desktop rows 301 onto a 404, and two docs claims that outran the code Three published nebelhaus.com URLs have been redirecting onto a 404 since #372 deployed at 10:06Z: /start/what-is-nebelhaus, /start/first-run and /reference/keybindings all pointed at hausfold.co/desktops/hacker/, which is the desktop's old path with its new name substituted in. hausfold.co had retired that tree into the docs hours earlier (hausfold.co#47) — /desktops/ hacker/ is a 404, /desktops/nebelhaus/ is itself a 301 into /docs/haus/desktops/hacker/, and the #keys fragment the keybindings row carried does not exist on any page any more (the ids are what-it-turns-on, first-moves, making-it-yours, where-to-go-next). So: the two desktop rows land on /docs/haus/desktops/hacker/, keeping the #first-moves fragment which is real there. Keybindings follows the ruling hausfold.co already made for the same URL — the keys were a shortened reprint of the windows room and the port deliberately didn't copy them, so it lands on the page that has them rather than on a fragment of the desktop's sheet. The suite stayed green throughout, which is the part worth keeping: it proves the map is complete and points at hausfold.co, and nothing in it fetches, so a destination that 404s is invisible to it. Two tests now pin the renamed rows by hand, and one fails any future row pointing under hausfold.co/desktops/ — that prefix is either a 404 or the second hop this file exists to avoid. Separately, README.md and AGENTS.md picked up "new installs scaffold `haus`" in #372. They don't — haus's bootstrap.sh:567 writes inputs.nebelhaus.url for a fresh install, so a new machine spells it exactly as this one does. That claim is the §11.2 trap dressed as progress: believing the input has half-moved is what leads to finishing it by editing bench's OVERRIDABLE alone, which is the edit that makes every --override-input silently no-op while reporting success. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PkTBtapKcZTCeTqfhRZEJ7 --------- Co-authored-by: Claude Opus 5 (1M context) <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
Decision 10 — the name
nebelhausis dropped. The desktop becomeshacker; every other survivingnebelhausbecomeshaus. This PR is the plan of record plus the workshop's own half; the other two are hausfold/haus#364 and hausfold/hausfold.co#47.It also closes §10, which turned out to be further along than the note claimed.
§11 — the plan
The word has 1,125 hits across the family and three different answers, so §11.0's table is the load-bearing part rather than the step list:
hackerblank,minimal,everyday— three of which say who they are for, and one of which was a private joke about foghausmkNebelhaus, 19NEBELHAUS_*env vars, four state dirs,share/, activation-script names. AHACKER_FLAKEenv var would be nonsense; these were never the desktop'sgithub.com/nebelhausorg (shipped pounce/perch update checks live on its redirects), holt's Go module path,nebelhaus.com,modules/renamed.nix's namespace aliases,org.nebelhaus.*bundle ids,nebelhaus#NNNcitationsTwo design notes the note carries because they're the difference between a flag day and none:
worker.js's own comment predicted the desktop losing the name and prescribed the shape: new row, old row stays. The trap it doesn't mention is the alias's pin, which is now written down.The workshop's own half
web/worker.js— the three rows landing on hausfold.co's desktop page re-pointed to/desktops/hacker/. The keys keep the old spelling (a redirect source is a fact about the past); the destinations moved rather than chaining onto hausfold.co's own row, because one hop is what §5.2 paid for.bench— the release audience forhaus.AGENTS.md— the terminology table's "nebelhaus bare … stays, forever (§6)" row is struck through and re-pointed at §11. The flake-input row got sharper: §11.2 moves the input tohaus, but that name andbench'sOVERRIDABLEare one edit, because Nix doesn't hard-fail an override for an unknown input.README.md— the "when can this be turned off" paragraph argued from §6 that the domain outlives the desktop's name. The argument survives the reversal; it's now made without the citation.§10, closed
Re-measured against the machine and the org rather than the note, and found two of three items already done:
bench relocate-haushad run and its shim was retired (workshop#331, 2026-08-12); zero family locks record"repo": "hausfold"; no repo in the org describes itself as nebelhaus. The gate re-runs green.Verify
Watch out
haus#364→hausfold.co#47→ this. hausfold.co deploys on push to main and its docs publish flakes callingmkHaus, which doesn't exist on haus main yet. This PR is docs-and-redirects only, so it's safe anywhere, but itsweb/destinations assume/desktops/hackerexists — until fix: bench pull also freshens the workshop checkout #47 lands they'd 404, which is why the two should land together.bench's--override-input nebelhaus/…is deliberately unchanged, and~/.config/nixstill names its inputnebelhaus. Renaming either alone silently makesbench trybuild the pinned desktop while reporting your branch. §11.2 flags it as the one edit in the arc that can't be half-done — it's yours, on a 👤 file.AGENTS.md:48is prose, not a PR citation, so the sixhausfold/hausfoldhits are two allowed kinds, not one). Fixed.🤖 Generated with Claude Code
https://claude.ai/code/session_01QiRMS2Hcpo5svDKK9hpZa9