Skip to content

docs(runbook): correct the v0.69 pass's findings — 127.0.0.1 baseline, design re-shoots, the stale-build trap, rig reproducibility - #832

Closed
edspencer wants to merge 5 commits into
mainfrom
docs/runbook-v069-corrections
Closed

docs(runbook): correct the v0.69 pass's findings — 127.0.0.1 baseline, design re-shoots, the stale-build trap, rig reproducibility#832
edspencer wants to merge 5 commits into
mainfrom
docs/runbook-v069-corrections

Conversation

@edspencer

Copy link
Copy Markdown
Owner

Corrections to DOCS-UPDATE-RUNBOOK.md from running it at v0.66.2 → v0.69.0. Prose only — one file, no code, no assets.

What changed

§7 — the 127.0.0.1 baseline was stale (recounted: 46). Replaced the inline prose count with a per-file table. The interesting part is how it drifted, which is now recorded, because the previous figure was wrong in two different ways:

Verified at three commits (38075e0, 60f6ab5, origin/main) rather than taken on trust; occurrences and matching lines are equal today (46 = 46).

§5 — how to handle a release that changes the design. This was the hardest judgement of the pass and the runbook had nothing on it. A What's New entry describes the release as it shipped, so a historical still showing the old UI is correct and re-shooting it rewrites history; a page describing current behaviour showing an obsolete UI is simply wrong. Bucket by the tense of the surrounding prose, not the directory — directory is a proxy that fails on exactly the dual-use assets cited from both a current page and an archive entry. For those, fork: new frame for the current page, byte-identical copy left in whats-new/.

§5 — the stale-build trap. Serving dist/ from a clone that predates the release means every "re-shot" frame is the old UI, and every downstream check still passes — rig up, seeding fine, leak scan clean, all shots captured. The only tell is a design nobody examines while concentrating on framing. Recorded the mitigation as a positive assertion against the served bundle rather than the git state of a directory: name a UI element only the new build can paint and look for it first. The v0.69 example (/config → Appearance section, four theme cards) is kept as an illustration under a generalised rule.

§5 — the rig's own fragility. Not every path on a dev box is on a persisted volume. A rig whose projects dir sat on a non-persisted path lost its entire projects tree on a container restart while its data dir survived — and that asymmetry is the dangerous part: it boots to zero projects plus orphaned job records, which reads as "empty instance" rather than "destroyed instance". Points at #828 as the fix (env-driven serve.sh/seed.mjs under tools/docs-media/).

§3 — verify a survey agent's negative findings against source before acting. A negative claim is the highest-risk kind: it sounds like rigour, and acting on it deletes correct documentation. In this pass an audit reported an accessibility floor as unenforced; source showed it was real, and three children were briefly steered into under-claiming a shipped feature. Also: scope a negative to its narrowest defensible form, because an over-broad negative in a filed issue discredits the true one next to it.

§1 / §9 — re-check PR and issue state at the moment you act on it. Several agents work this repo concurrently; a PR landed mid-pass and closed three issues an audit had just re-verified as open. Includes the stateReason caveat — an issue closed as NOT_PLANNED or as a duplicate is not a fixed one.

Notes for the reviewer

@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying paddock with  Cloudflare Pages  Cloudflare Pages

Latest commit: 035b3fc
Status: ✅  Deploy successful!
Preview URL: https://e6f3d352.paddock-7u2.pages.dev
Branch Preview URL: https://docs-runbook-v069-correction.paddock-7u2.pages.dev

View logs

@edspencer

Copy link
Copy Markdown
Owner Author

Closing — superseded by #830, which covers all four of these corrections and goes further (positive-control greps, CDN mid-propagation, md5sum duplicate-shot detection, and the leak-regex-in-its-own-file point). Two branches editing one 760-line file is a guaranteed conflict; #830 is the one to keep. No conflict remains once this is closed.

One factual note for #830's author, since it lands in the cautionary example and would teach the wrong lesson if it ships as written.

#830 says the previous revision "had the right total but attributed all 46 to the docs subtree and then added 'plus 6 in README.md' on top, which sums to 52". Measured at the commit that wrote the figure (38075e0), that isn't what happened:

site subtree README.md total
what the old text said 38 6 44
reality at 38075e0 38 7 45
reality at 38075e0^ 38 6 44

The 38 was genuinely site-only and correct — not a mis-attributed 46, and the old text summed to 44, not 52. The single error was README.md: off by one, and introduced by that very commit, which closed two README gaps and added the seventh 127.0.0.1 while the same diff wrote "plus 6".

That also inverts the failure mode. A 52 over-count would hide a real hit (dangerous). The actual under-count by one produces a surplus unexplained hit, which is the safe direction — you investigate and find it legitimate.

The lesson the real data supports, and which I think is worth keeping: if your own PR edits any of the files you are counting, count at the end, not the start. The baseline was stale before it was pushed.

Repro:

for r in 38075e0 38075e0^ origin/main; do
  t=$(mktemp -d); git archive $r website/src/content/docs README.md | tar -x -C $t
  echo "$r site=$(grep -ro '127\.0\.0\.1' $t/website/src/content/docs | wc -l) readme=$(grep -o '127\.0\.0\.1' $t/README.md | wc -l)"
  rm -rf $t
done

Minor second point: the site count did not drift by much and why is instructive — it went 38 → 39 from one new file (guides/running-as-a-service.md, #804), while #803's Discover-led rewrite of getting-started.md, one of the most loopback-dense pages on the site, left it at 6. "A big docs PR landed" is not a proxy for "the baseline moved", in either direction.

#830's totals (46 = 39 + 7) are correct and match my independent recount.

@edspencer edspencer closed this Aug 10, 2026
edspencer pushed a commit that referenced this pull request Aug 10, 2026
…d re-checking state

Both are about how this pass itself went wrong, which makes them the most
valuable lessons in it.

'Verify a survey agent's NEGATIVE findings before acting on them' is the sharper
one. A confident claim about what the code does NOT do reads as rigour, and is
the one class of finding whose consequence is deleting correct documentation —
nothing downstream catches it, because the edit makes the docs claim less, so it
builds, reads sensibly and survives review.

'Re-check PR and issue state at the moment you act on it' covers the other
concurrency hazard: several agents work this repo at once, so recon has a shelf
life measured in hours.
edspencer pushed a commit that referenced this pull request Aug 10, 2026
The last-but-one figure was stale before it was pushed: the commit that recorded
it (#778) also closed two README gaps, one of which added the seventh 127.0.0.1.
That is not drift afterwards — it is the recording PR invalidating its own count.

Last item outstanding from the #830/#831/#832 reconciliation; everything else
those branches carried is already here.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant