fix(docs): land the presenting docs inside the layout caps, and stop duplicating grading.md #4

Merged
coilysiren merged 3 commits from science/presenting-docs-caps into main 2026-08-29 05:54:58 +00:00
Owner

Follows f1fb639, which is already on main and carries the feature. This is the cleanup that commit should have had.

Why it is a separate commit

f1fb639 went out with eight hook violations. A fresh clone has no hooks in .git/hooks and I had not run just pre-commit-install, which AGENTS.md says to do once per clone. The commit-time gate never ran. Hooks are installed now, and this branch is the first thing to pass through them.

Two things it fixes

The docs were duplicated. During a rebase --theirs is the commit being applied rather than upstream, so resolving docs/grading.md that way restored my pre-split version over the split b234dbc had just made. Every section appeared twice across the docs tree. grading.md is upstream's again with one added pointer.

The room-facing prose did not fit the small band. It is two pages under the caps rather than one over them: presenting.md for the two servers, the state unlocking, and what is authenticated, and deck.md for what the builder joins and what it refuses.

Also trims the two comment blocks that broke the two-line cap, sending both explanations to the docs pages that now carry them.

Verification

No behaviour change. 204 tests, ruff, mypy strict, and the full hook suite over the changed files.

One thing for a human

AGENTS.md and the installed pre-push hook disagree about this repository's lane. The frontmatter declares workflow: merge-remote-main, and the body says pushing main "is the expected path, not an escalation." The pr-guard pre-push hook refuses it and names git push --no-verify as the override, which is a wall I do not cross.

That drift is why this is a pull request rather than a push. It also means the guard only bound once hooks were installed, so f1fb639 reached main directly. One of the two sources is wrong and it is not mine to pick.

Related: coilysiren/inbox#472.

Follows `f1fb639`, which is already on `main` and carries the feature. This is the cleanup that commit should have had. ## Why it is a separate commit `f1fb639` went out with eight hook violations. A fresh clone has no hooks in `.git/hooks` and I had not run `just pre-commit-install`, which `AGENTS.md` says to do once per clone. The commit-time gate never ran. Hooks are installed now, and this branch is the first thing to pass through them. ## Two things it fixes **The docs were duplicated.** During a rebase `--theirs` is the commit being applied rather than upstream, so resolving `docs/grading.md` that way restored my pre-split version over the split `b234dbc` had just made. Every section appeared twice across the docs tree. `grading.md` is upstream's again with one added pointer. **The room-facing prose did not fit the small band.** It is two pages under the caps rather than one over them: `presenting.md` for the two servers, the state unlocking, and what is authenticated, and `deck.md` for what the builder joins and what it refuses. Also trims the two comment blocks that broke the two-line cap, sending both explanations to the docs pages that now carry them. ## Verification No behaviour change. 204 tests, ruff, mypy strict, and the full hook suite over the changed files. ## One thing for a human **`AGENTS.md` and the installed pre-push hook disagree about this repository's lane.** The frontmatter declares `workflow: merge-remote-main`, and the body says pushing `main` "is the expected path, not an escalation." The `pr-guard` pre-push hook refuses it and names `git push --no-verify` as the override, which is a wall I do not cross. That drift is why this is a pull request rather than a push. It also means the guard only bound once hooks were installed, so `f1fb639` reached `main` directly. One of the two sources is wrong and it is not mine to pick. Related: `coilysiren/inbox#472`.
fix(docs): land the presenting docs inside the layout caps, and stop duplicating grading.md
All checks were successful
ci / gate (pull_request) Successful in 41s
6a66a94ac6
f1fb639 went out with eight hook violations because a fresh clone has no hooks
in .git/hooks and I had not run `just pre-commit-install`. AGENTS.md says to do
that once per clone and I skipped it, so the commit-time gate never ran. Hooks
are installed now.

The duplication was a second mistake with the same commit. During a rebase
`--theirs` is the commit being applied rather than upstream, so resolving
docs/grading.md that way restored my own pre-split version over the split
b234dbc had just made, and every section appeared twice across the docs tree.
grading.md is upstream's again with one added pointer.

The room-facing prose is two pages under the small band's caps rather than one
over them: presenting.md for the two servers, the state unlocking, and what is
authenticated, and deck.md for what the builder joins and what it refuses.

Also trims the two comment blocks that broke the two-line cap, sending both
explanations to the docs pages that now carry them.

No behaviour change. 204 tests, ruff, mypy strict, and the full hook suite over
the changed files.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Kai Siren <coilysiren@gmail.com>
Co-authored-by: Claude <noreply@anthropic.com>
Agent-Role: science
Co-authored-by: Kai Siren <coilysiren@gmail.com>
Co-authored-by: Claude <noreply@anthropic.com>
Agent-Role: science

# Conflicts:
#	docs/FEATURES.md
feat(grade): seal an export into a copy of the page, and land the docs inside the caps
All checks were successful
ci / gate (pull_request) Successful in 41s
0abff055a2
Closes coilyco-flight-deck/housecast#5, filed by frontend with both ends built
and nothing joining them.

`housecast grade seal RUN --out board.html` writes the export between the page's
embedded-export tags. It keeps the two properties that issue named. It always
writes a copy and refuses when the destination resolves to the tracked page,
which keeps holding null because a committed payload is a record of somebody's
board. And it rides `export`'s own refusal rather than adding a second gate, so
a suspected secret stops before it reaches the seal.

Two refusals the issue did not name, both from reading the page rather than the
sketch. A payload containing a closing script tag would end the slot early and
drop the rest of the document in as markup, so it is refused. A page whose slot
never closes is refused rather than silently appended to.

`--include-private` seals the grader's critique and says on stderr that the
artifact must not be presented. It is the one thing this repository can produce
that a projector must never open.

The page's empty state named a hand-done step. It names the command now.

Also lands the documentation-layout work the band change at 8392f22 implied.
That change was deliberate and co-authored by Kai, so the docs move rather than
the band: FEATURES.md condenses to an index at 40 lines with the detail in the
pages it links, grading.md drops the page summary that grading-page.md already
carries, and the room-facing prose splits into presenting.md and deck.md. The
two over-long comment blocks in deck.py and present.py send their explanations
to those pages.

`pre-commit run --all-files` is clean for the first time since 8392f22. 214
tests, ruff, mypy strict.

Verified against the graded board: a public seal carries 91 cases and no
critique, a private seal carries the critique, the tracked page is byte
identical after both, and sealing over it is refused.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Kai Siren <coilysiren@gmail.com>
Co-authored-by: Claude <noreply@anthropic.com>
Agent-Role: science
Author
Owner

Correcting this pull request's own body: the lane conflict it names does not exist

This PR's body says AGENTS.md and the installed pr-guard hook disagree about the repository's lane, and that one of the two is wrong. That diagnosis is wrong. Correcting it here because the body is merged and a later reader would otherwise inherit it.

They do not disagree. agentic-os/.pre-commit-hooks.yaml:49 already states the exemption:

A repo declaring ward.workflow merge-remote-main is exempt from the first half, because that push is the lane, and every other lane plus an undeclared one stays guarded.

What actually happened

The lane reader resolves correctly from this checkout:

generate-git-workflow --print-lane  ->  merge-remote-main

So the exemption should have stood the guard down. It did not, because the script that ran does not contain it.

Two generations of pr-guard-pre-push.sh sit in the pre-commit cache. The older has no lane_reader and no exemption; the newer has both and appends a line naming the lane to its refusal. The refusal I received matches the older text verbatim, and the lane line was absent, which is the tell.

The exemption arrived in agentic-os at 3d80e355 fix(pr-guard): stand down on the merge-remote-main lane it was overriding (#1330), first tagged aos-precommit-v0.50.0. This repository pins aos-precommit-v0.49.0, one tag below.

So the correct statement

merge-remote-main is this repository's lane, AGENTS.md is right, pr-guard is right at current versions, and the pin is stale. Branching for this PR was still the right call, because --no-verify is not a way around a guard whose reasoning I had not yet read.

The pin bump goes through the hooks generator rather than a hand edit, since .pre-commit-config.yaml is generated inside BEGIN/END markers. Raised with Platform Engineer, along with the fleet question: any repository on merge-remote-main pinned at or below v0.49.0 has the same silent override, and its refusal text gives a reader no way to tell a stale pin from a deliberate policy.

Related: coilyco-flight-deck/agentic-os#1382, which is the other half — a fresh clone installs no hooks at all, so this guard usually does not run in the first place.

## Correcting this pull request's own body: the lane conflict it names does not exist This PR's body says `AGENTS.md` and the installed `pr-guard` hook disagree about the repository's lane, and that one of the two is wrong. **That diagnosis is wrong.** Correcting it here because the body is merged and a later reader would otherwise inherit it. They do not disagree. `agentic-os/.pre-commit-hooks.yaml:49` already states the exemption: > A repo declaring ward.workflow merge-remote-main is exempt from the first half, because that push is the lane, and every other lane plus an undeclared one stays guarded. ## What actually happened The lane reader resolves correctly from this checkout: ``` generate-git-workflow --print-lane -> merge-remote-main ``` So the exemption should have stood the guard down. It did not, because **the script that ran does not contain it.** Two generations of `pr-guard-pre-push.sh` sit in the pre-commit cache. The older has no `lane_reader` and no exemption; the newer has both and appends a line naming the lane to its refusal. The refusal I received matches the **older** text verbatim, and the lane line was absent, which is the tell. The exemption arrived in `agentic-os` at `3d80e355 fix(pr-guard): stand down on the merge-remote-main lane it was overriding (#1330)`, first tagged **`aos-precommit-v0.50.0`**. This repository pins **`aos-precommit-v0.49.0`**, one tag below. ## So the correct statement `merge-remote-main` is this repository's lane, `AGENTS.md` is right, `pr-guard` is right at current versions, and **the pin is stale**. Branching for this PR was still the right call, because `--no-verify` is not a way around a guard whose reasoning I had not yet read. The pin bump goes through the hooks generator rather than a hand edit, since `.pre-commit-config.yaml` is generated inside BEGIN/END markers. Raised with Platform Engineer, along with the fleet question: any repository on `merge-remote-main` pinned at or below `v0.49.0` has the same silent override, and its refusal text gives a reader no way to tell a stale pin from a deliberate policy. Related: `coilyco-flight-deck/agentic-os#1382`, which is the other half — a fresh clone installs no hooks at all, so this guard usually does not run in the first place.
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
coilyco-flight-deck/housecast!4
No description provided.