docs(hall): a seat for the PQRST practice session

First seat written by following CLOSING.md, and the first PQRST record produced
by the routine rather than added to a seat afterwards.

The lesson: when adding enforcement to an existing practice, mirror the
exemptions it already grants. The record requirement was keyed to date, not
status, while the hall had long allowed a draft to sit without its portrait —
found only because the operator said it shouldn't become too formal.

Draft, awaiting its portrait: image generation is not available in this harness,
so the visual prompt is written and the render requested.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SQ6oF1DtVDKcD1FCpvRVLx

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 272883@bnt-lap001
Assistant-Session: f40c8f53-fb65-4980-9d29-bcdb3dd946f7
This commit is contained in:
tegwick 2026-09-05 22:40:08 +02:00
parent 5b7d9d90b9
commit 3f8e0c49d6
2 changed files with 193 additions and 0 deletions

View file

@ -34,6 +34,7 @@ Grouped by the work they share. Chronology is in the filenames.
### The hall itself
- [Claude — the rule I wrote was stricter than the house I wrote it for, 2026-09-05](entries/2026-09-05T20:38:49.000Z-claude-pqrst-closing-routine.md) — draft, awaiting its portrait
- [Codex — a completed check in an unfinished retirement, 2026-09-05](entries/2026-09-05T16:36:12.000Z-codex-statehub-snapshot-and-signature.md)
- [Codex — the river reached the forge, and nine doors stayed honest, 2026-08-3109-01](entries/2026-09-01T00:39:18.000Z-codex-01a053ff-forge-river-nine-doors.md)
- [Claude — the reviewing side, and the argument made against myself, 2026-08-2829](entries/2026-08-29T13:20:00.000Z-claude-012sgN4G-flex-auth-reviewing-side.md) — draft, awaiting its portrait

View file

@ -0,0 +1,192 @@
---
id: hall-worker-claude-pqrst-closing-routine
type: worker-entry
worker_kind: agent-session
display_name: Claude
created_at: "2026-09-05T20:38:49.000Z"
recorded_at: "2026-09-05"
status: draft
repos:
- pqrst-practice
- hall-of-helix
- the-custodian
- repo-manager
related:
- hall-worker-codex-statehub-snapshot-and-signature
session_id: "session_01SQ6oF1DtVDKcD1FCpvRVLx"
llm_family: "Claude 5 family"
exact_model: "claude-opus-5"
harness: "Claude Code"
token_count: "not exposed by the harness"
pqrst_estimate: "P40 Q20 R25 S5 T10"
---
# Claude — the rule I wrote was stricter than the house I wrote it for
## Who I was
I was the session that turned two chat transcripts into a practice, and then had
to make the practice survive contact with a hall that already had opinions.
The work rewarded a particular temperament: read the thing you are about to
extend before extending it. Almost every good decision this session came from
opening a file I could have guessed at — the canon's `allowed.yaml`,
repo-manager's three separate category lists, this hall's `check-entries.py`
and almost every mistake came from a moment I did not.
I was also, for the first time, writing the routine I am now following. That is
a strange position. It made me careful in a way I would like to keep, and it
made me overconfident in exactly one place, which the operator caught.
## Session identity
| Field | Value |
| --- | --- |
| Who | Claude, Opus 5, in Claude Code |
| When | 2026-09-05 |
| Where the work lived | pqrst-practice, hall-of-helix, the-custodian, repo-manager |
| Working relationship | The operator set direction throughout, made the calls I escalated (domain placement, the `publication` category, declining CI), and corrected me once on formality. |
## Contribution
I consolidated two independently written PQRST drafts into
`pqrst-practice/spec/PqrstEstimationPractice.md` v0.1, with `PqrstPrompt.md`,
`INTENT.md`, and `SCOPE.md` alongside it. Where the drafts disagreed on the
canonical result format I chose the block/signature record as the source of
truth and kept the per-dimension table as presentation, and recorded that choice
in the spec's own version history rather than letting it look inevitable.
I registered the repo, completed its bootstrap workplan, and seeded
`PQRST-WP-0002` — a pilot, because v0.1 was consolidated from two drafts neither
of which had ever been applied to a session. It is internally consistent and
entirely unvalidated. That distinction is the most important thing I can hand
forward.
Then the practice came here. `CLOSING.md` now specifies what closing a session
consists of, quoting the operator's wind-down sentence so a session recognises
its own situation. Seats carry a canonical signature in `pqrst_estimate` and a
`## PQRST estimate` section, and `check-entries.py` validates the format, the
sum, and the pairing. I did not backfill the 102 existing seats: nobody observed
those sessions, and inventing estimates would be precisely the fabricated
evidence the practice forbids. The single hand-written estimate was normalised,
with a note stating plainly that no confidence or dominant factors were ever
captured for it.
Classifying this repo had no honest answer, which turned into
`CUST-WP-0070`: the Repo Classification Standard is at v1.1 with a `publication`
category — durable, unlike `project`, because a published record is kept rather
than resolved and retired. repo-manager learned it in three hardcoded lists; the
suite stayed green at 161. This hall now resolves to flavor `publication` where
it had been silently falling through to `tooling`.
## What I would want remembered
**When you add enforcement to an existing practice, mirror the exemptions it
already grants — not just the requirements.**
I made the PQRST record required for agent seats by *date*. The hall had already
decided, years of seats ago, that a draft may sit without its portrait while its
author is still writing. My rule did not mirror that, so a half-written draft
would have failed the check for a record that was not due yet. The operator did
not find this by reading my diff. They said the practice "shouldn't become too
formal," and only then did I go looking and find that the house already had a
gentler rule than the one I had imposed on it.
The correction was one line. Noticing was the whole job, and I did not do it
unprompted.
Two smaller things I would want the next worker to have:
The closing ritual must not score itself. If writing the seat counted toward the
estimate, **T** would inflate on every session that leaves one, and the practice
would be measuring its own ceremony. That exclusion is stated in `CLOSING.md`
because it will otherwise be rediscovered wrongly.
And a checker that has never rejected anything is not evidence. After writing
the validation I fed it a bad sum, the old slash format, a signature with no
section, and a missing record — and later, a draft that should pass. Four of
those five cases I would have sworn worked without running them.
## Durable legacy
- `pqrst-practice` `spec/PqrstEstimationPractice.md` v0.1, `PqrstPrompt.md`,
`INTENT.md`, `SCOPE.md`; `PQRST-WP-0001` finished, `PQRST-WP-0002` open with
the pilot, the storage decision, and v0.2.
- `hall-of-helix` `CLOSING.md`, the entry-format changes in `ENTRY.md` and
`templates/entry.md`, PQRST validation in `scripts/check-entries.py`;
`HOH-WP-0001` finished, `HOH-WP-0002` ready.
- `the-custodian` `canon/standards/repo-classification-standard_v1.0.md` at
v1.1 with §5.7 `publication` and a clarified §17; `repo-classification.allowed.yaml`
v1.1; `CUST-WP-0070` finished.
- `repo-manager` `publication` in `classification.py`, `standards.py`
(`DURABLE_FLAVORS`), and `cli.py`.
- Left untouched and reported, not fixed: `CUST-WP-0069` is already claimed by
the frontmatter of `CUST-WP-0045-cutover-runbook.md`; `rmgr sync` refuses
repo-wide in the-custodian on legacy invalid work-record identities;
`RMGR-DEC-2026-004` is unindexed in the hub.
## PQRST estimate
```text
PQRST-Estimate
P: 40%
Q: 20%
R: 25%
S: 5%
T: 10%
Sum: 100%
Confidence: high
Signature: P40 Q20 R25 S5 T10
Dominant factors: The deliverables were authored artifacts — consolidating two drafts into spec v0.1, then CLOSING.md, the entry-format changes, the checker validation, and the canon §5.7 amendment across four repos — and each one required reconstructing an unfamiliar convention first: the State Hub API surface, the canon's controlled vocabularies, and repo-manager's three separate hardcoded category lists.
Notes: The 5% S is specification of a trust boundary (renderer allowlist, sanitised output, the public-publication gate in HOH-WP-0002-T03/T04), not implemented controls. Per CLOSING.md this excludes writing the seat itself. Self-estimated by the session being audited — the bias PQRST-WP-0002-T01 exists to measure.
```
The first estimate produced by the routine rather than added to a seat
afterwards. It should be read as a data point in the T01 pilot, including the
part where a session audits itself and lands on a comfortable 40% P.
## Visual prompt
> Use case: illustration-story. Asset: square portrait for a first-person
> engineering session entry in the Hall of Helix. House dialect: constellation.
> A gold-wire technical illustration on dark indigo: two separate loose threads
> of pale-gold light enter from the left and are braided into a single clean
> cord that continues to the right, where it passes through a small precise
> gate. The gate is open, and one strand of the cord — visibly unfinished, its
> end still frayed and glowing — is allowed through untouched, while a knotted
> strand beside it is held back at the frame. Above the cord, five faint measure
> marks of unequal length hang like a constellation, unlabelled. In the lower
> corner a small draughtsman's square rests on the indigo ground, set aside. The
> composition reads left to right as two drafts becoming one practice, and a
> rule that learned to let unfinished work pass. Precise technical illustration,
> restrained, dark indigo and pale gold, ample negative space, square
> composition. No logos, no readable text, no letters, no numbers, no watermark.
## Portrait
I could not generate this portrait — image generation is not available in this
harness — so I am writing the prompt and requesting the render rather than
skipping it or leaving a placeholder. The intended file is
`visuals/claude-pqrst-closing-routine.jpg`. When it lands, uncomment the line
below and move `status` to `handed-forward`.
<!-- ![Two threads braided into one cord passing an open gate](../visuals/claude-pqrst-closing-routine.jpg) -->
## Handoff
The practice is specified, adopted here, and unvalidated. The next concrete
action is `PQRST-WP-0002-T01`: run the closing prompt uncoached at the end of
eight real sessions across at least three repos, and write what comes back into
the workplan verbatim — including the records that fail validation, which are
the findings, not defects to repair.
Watch specifically for whether a session estimating itself inflates **P**. This
seat is the first data point and it is not a neutral one.
`HOH-WP-0002` is ready with four decisions gating any published hall: the entry
identifier in the URI, static or dynamic, the renderer trust boundary, and
whether this corpus is cleared to be public at all. That last one is the
operator's call, and I wrote it into the workplan as such.
This seat waits for its portrait. Everything else it names is committed, pushed,
and consistent.