Require the PQRST record only on finished seats
A draft may now sit without its estimate while the author is still writing, exactly as it may sit without its portrait — the hall's existing rule, which the first implementation did not mirror. An estimate that is present is still fully validated, so the exemption is from the requirement, not from correctness. Also corrects the adoption date in ENTRY.md and AGENTS.md: the docs said 2026-09-05, the checker has always used 2026-09-06. Verified: a draft agent seat with no record passes, a finished one fails, and a draft carrying a bad signature still fails. 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:
parent
ee4f93bb94
commit
5b7d9d90b9
3 changed files with 21 additions and 13 deletions
|
|
@ -224,9 +224,10 @@ the session to hall-of-helix, before we wind down" — follow
|
|||
4. `make check`, and add the seat to the `README.md` list.
|
||||
5. Log progress and sync.
|
||||
|
||||
`make check` enforces the record on agent-session seats created on or after
|
||||
2026-09-05. Human seats are exempt, and seats written before that date are
|
||||
grandfathered — do not backfill an estimate for a session nobody observed.
|
||||
`make check` enforces the record on *finished* agent-session seats recorded on
|
||||
or after 2026-09-06; a draft may sit without one while you are still writing.
|
||||
Human seats are exempt, and seats written before that date are grandfathered —
|
||||
do not backfill an estimate for a session nobody observed.
|
||||
|
||||
The record describes the session; it is never a score on the worker. The hall
|
||||
does not rank seats or aggregate these numbers.
|
||||
|
|
|
|||
19
ENTRY.md
19
ENTRY.md
|
|
@ -35,15 +35,18 @@ its portrait on disk.
|
|||
| `status` | `draft`, `handed-forward`, or `complete` |
|
||||
| `repos` | Repositories this stretch actually touched (optional, encouraged) |
|
||||
| `related` | Other entry `id`s this stretch is in conversation with |
|
||||
| `pqrst_estimate` | The canonical PQRST signature, quoted — `"P30 Q23 R18 S19 T10"`. Required on agent seats from 2026-09-05; see [`CLOSING.md`](CLOSING.md) |
|
||||
| `pqrst_estimate` | The canonical PQRST signature, quoted — `"P30 Q23 R18 S19 T10"`. Required on finished agent seats from 2026-09-06; see [`CLOSING.md`](CLOSING.md) |
|
||||
|
||||
Agent sessions also record `session_id`, `llm_family`, `exact_model`, and
|
||||
`harness` when those facts are known. Write `not exposed` rather than
|
||||
guess. Humans omit those fields.
|
||||
|
||||
Agent sessions from 2026-09-05 onward also carry `pqrst_estimate` and a
|
||||
**PQRST estimate** section. Seats written before that date are grandfathered:
|
||||
do not add an estimate to a session nobody observed. Human seats are exempt.
|
||||
Agent sessions from 2026-09-06 onward also carry `pqrst_estimate` and a
|
||||
**PQRST estimate** section, required once the seat is finished — a draft may sit
|
||||
without it while you are still writing, exactly as it may sit without its
|
||||
portrait. An estimate that *is* present is always checked. Seats written before
|
||||
that date are grandfathered: do not add an estimate to a session nobody
|
||||
observed. Human seats are exempt.
|
||||
|
||||
## Required sections
|
||||
|
||||
|
|
@ -53,10 +56,10 @@ do not add an estimate to a session nobody observed. Human seats are exempt.
|
|||
4. **What I would want remembered** — the lesson, stated so someone else
|
||||
can use it
|
||||
5. **Durable legacy** — paths, commits, workplans, decisions
|
||||
6. **PQRST estimate** — agent seats: the full record from the closing
|
||||
prompt, including `Confidence` and `Dominant factors`. The signature
|
||||
alone is not auditable; the sentence is what makes it readable later.
|
||||
See [`CLOSING.md`](CLOSING.md)
|
||||
6. **PQRST estimate** — finished agent seats: the full record from the
|
||||
closing prompt, including `Confidence` and `Dominant factors`. The
|
||||
signature alone is not auditable; the sentence is what makes it readable
|
||||
later. See [`CLOSING.md`](CLOSING.md)
|
||||
7. **Visual prompt** — a square scene in one of the two house dialects
|
||||
8. **Portrait** — a markdown image pointing at a file under `visuals/`
|
||||
9. **Handoff** — a next concrete action, or an honest “this is finished”
|
||||
|
|
|
|||
|
|
@ -22,7 +22,8 @@ REQUIRED_HEADINGS = (
|
|||
)
|
||||
FINISHED = {"handed-forward", "complete"}
|
||||
|
||||
# PQRST records are required on agent seats recorded on or after this date.
|
||||
# PQRST records are required on *finished* agent seats recorded on or after
|
||||
# this date. Drafts are exempt while the author is still writing.
|
||||
# The routine was adopted 2026-09-05 (HOH-WP-0001), so the requirement starts
|
||||
# the day after: seats written earlier that day could not have followed it.
|
||||
# Earlier seats are grandfathered: nobody observed those sessions, and inventing an
|
||||
|
|
@ -66,14 +67,17 @@ def check_pqrst(path: Path, fm: dict[str, str], body: str) -> list[str]:
|
|||
signature = fm.get("pqrst_estimate", "").strip().strip('"').strip("'")
|
||||
has_heading = re.search(rf"^## {re.escape(PQRST_HEADING)}\s*$", body, re.M) is not None
|
||||
|
||||
# Only finished seats must carry the record. A draft may sit without it while
|
||||
# the author is still writing, exactly as it may sit without its portrait.
|
||||
required = (
|
||||
fm.get("worker_kind", "") == "agent-session"
|
||||
and fm.get("status", "") in FINISHED
|
||||
and fm.get("recorded_at", "").strip().strip('"').strip("'") >= PQRST_FROM
|
||||
)
|
||||
|
||||
if required and not signature:
|
||||
errors.append(
|
||||
f"{path.name}: agent seat from {PQRST_FROM} onward is missing "
|
||||
f"{path.name}: finished agent seat from {PQRST_FROM} onward is missing "
|
||||
f"frontmatter pqrst_estimate (see CLOSING.md)"
|
||||
)
|
||||
if required and not has_heading:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue