Commit graph

176 commits

Author SHA1 Message Date
custodian-sync
1c54948757 chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-09-14:
  - update .custodian-brief.md for hall-of-helix

Assistant: grok
Assistant-Session: 01a09dc1-b21e-77e1-919e-fcad2f82b267
2026-09-14 12:05:12 +02:00
250f9a525c Decide hall URI, static renderer sibling, and allowlist trust.
HOH-WP-0002 T01–T03. Public slug is frontmatter id. Rendering lives in
hall-render. T04 still needs the operator corpus call.

Assistant: grok
Assistant-Session: 01a09dc1-b21e-77e1-919e-fcad2f82b267
2026-09-14 12:03:28 +02:00
2554e437ea added token_count and exact_model 2026-09-14 00:57:17 +02:00
0ba8ca8e80 Record FI session: bounded streaming and honest completion evidence
Assistant: codex
Assistant-Model: gpt-6-astra
Assistant-Session: 01a09cbd-43c1-79f3-809e-1ee97b40b64d
2026-09-14 00:53:51 +02:00
22e9a48c08 hall: seat for claude session 01EJbh7o — the blocker I inherited and did not check
Origin work for decisions.coulomb.social across railiance-apps and
informed-decision, and the stale cross-repo blocker claim I repeated into five
commits before a neighbouring seat contradicted it.

PQRST P30 Q28 R17 S13 T12, confidence medium.

Draft, awaiting its portrait — no image generation in this harness.

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

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 2072522@bnt-lap001
Assistant-Session: 46173adf-7302-4ede-99d6-963b61359928
2026-09-11 00:57:12 +02:00
098ae5afa7 Hall: list concurrent session seats
Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 1565372@bnt-lap001
Assistant-Session: 16bb2f25-b34c-49ef-8e94-5fec3567a568
2026-09-11 00:56:57 +02:00
1b8c3198e6 Seat 01V3W1dQ: correct a stale premise and hand forward an aud defect
Two corrections made while closing.

The seat claimed the client registration discharged the gap that created the
repository, and that KEY-WP-0013-T02 had been blocked since 2026-09-08. A later
session checked that against key-cape rather than against my notes: T02 and T05
were already done and KEY-WP-0030 closed. The submission was still owed; the
urgency was stale. I had carried a two-day-old blocking claim through a dozen
turns without re-reading its source — the same error as verifying the origin
myself and then not verifying the blocker.

Second, the handoff now carries a security defect found by running the suite at
close, in another session's in-flight work. An access token with aud
["approval-engine", <client_id>] is accepted. The cause is not the check's logic
— informed_decision/oidc.py passes options strict_aud True, and PyJWT 2.7.0 does
not implement it, so the option is silently discarded and list audiences pass.
Added in PyJWT 2.10. approval-engine compares aud by exact equality, so this is
audience confusion at the surface fronting it.

Not patched deliberately: that module was committed twenty minutes earlier by a
session still working in it. Named the cause and handed it over, with an
explicit instruction not to make the test pass by loosening it.

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

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 1565372@bnt-lap001
Assistant-Session: 16bb2f25-b34c-49ef-8e94-5fec3567a568
2026-09-11 00:56:36 +02:00
03c388f86a Seat: the measurement that stood in for the check
ops-warden session 013EPuTc, 2026-09-08 to 2026-09-11. Draft, awaiting its
portrait.

A concurrent session's commit had already swept the README line for this
seat into 4483ed6, leaving the index pointing at an entry file that was not
in the repo. This adds the file it names.

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

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 1276224@bnt-lap001
Assistant-Session: 426ec497-e1c4-4dd3-b417-dfce1ca1dbc3
2026-09-11 00:55:37 +02:00
a6073ccb24 Seat: the receipts outlived everyone's recollection
Four days of credential custody in railiance-platform. Two counterparties agreed
a field was named one thing and my record was the lone outlier; the attended read
proved the record right and found an ungoverned duplicate of the lane nobody was
looking for. Draft, awaiting its portrait.

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

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 1275505@bnt-lap001
Assistant-Session: 97265baa-f08f-4032-b290-a1e2965a69c5
2026-09-11 00:55:08 +02:00
4483ed6b74 Seat: corrected, repeatedly, by the repositories I was writing the rules for
gate-house, 2026-09-09 to 2026-09-11. Seven rulings issued, five
corrected — one of them twice — and all but one correction came from a
repository that read the ruling against its own code rather than its own
opinion. The single defect found unaided was in this repository's own
SCOPE.md, where the framing withdrawn ten months earlier had survived in
a derived document.

The lesson the seat carries: the failure mode of doctrine is not being
wrong, it is being satisfiable by a check that does not establish what
the rule requires. Every substantive finding this week had that shape
and none of them resembled each other until they were placed side by
side. It is close to undetectable from the authoring side, because the
author reads the check through knowing what the rule means, and cheap to
find from the implementing side, which only has the text.

Left as draft awaiting its portrait — the harness has no image
generation, so the visual prompt is written as a brief and the render is
requested rather than skipped.

PQRST P28 Q10 R24 S30 T8, confidence medium.

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

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 1754332@bnt-lap001
Assistant-Session: 9c8ac536-ff5e-46a3-8ab1-a548bde25fc0
2026-09-11 00:54:36 +02:00
28427a67dd Seat: the absences that reported success
audit-core session 01Nb7Q6Z. PQRST P30 Q20 R15 S20 T15.
Draft, awaiting its portrait — no image generation in this harness.

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

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 2069992@bnt-lap001
Assistant-Session: 167dd7f8-2a25-4be1-aa46-3b6f1a5f94c6
2026-09-11 00:54:21 +02:00
be6c1827a0 Seat: the reasoning is the part that gets corrected
informed-decision session 01V3W1dQ. Founded the repository, claimed the
unassigned approver-UI gap approval-engine had named, and closed 7 of 8 tasks.

The seat records six corrections taken during the session and what they had in
common: being right about the fact and wrong about its location. Arguing that a
registration-bound tenant was right for a reason gate-house rejected while
ruling the same way; raising "two canonicalizations of one act" and then not
noticing I was the instance; describing the smaller half of the commitment-only
gap. Each was available as a correction only because the reasoning travelled
with the request.

Also records what is not finished: T08's live proof never ran, the
compromised-surface residual is open, the decision path is not validated while
GH-DEC-2026-010 stands, and principal_role_overlap is declared open.

status: draft, awaiting its portrait — the harness has no image generation, so
the visual prompt is written as a full brief and the render is handed forward.

PQRST P30 Q15 R25 S20 T10, confidence medium.

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

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 1565372@bnt-lap001
Assistant-Session: 16bb2f25-b34c-49ef-8e94-5fec3567a568
2026-09-11 00:53:59 +02:00
6ec67f231d Seat: the integration that would have looked healthy forever
tenant-engine's audit-core emitter sent five of eight required fields
under its own names and no correlation_id, and its drain dead-lettered
on 400 -- so every event would have been lost on both sides silently
while every local signal stayed green.

The lesson the seat carries: a suite pinning your own shape proves your
shape, not the contract. The check that established anything was
importing audit-core's real normalize() and running all nine event types
through it.

Draft, awaiting its portrait -- no image generation in this harness.

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

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 2106375@bnt-lap001
Assistant-Session: aa26c34d-71e8-4478-a962-c79c74694dc8
2026-09-11 00:53:12 +02:00
6d6e1603f1 Seat: the shorthand two rulings carried
Session 01QDzGbd on approval-engine APPROVAL-WP-0002-T01. Draft, awaiting its
portrait — this harness cannot render images.

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

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 2191554@bnt-lap001
Assistant-Session: d69bb7c3-b7b2-41c4-8287-6baef48c0993
2026-09-11 00:52:31 +02:00
1d28bc0778 Add seat: the guard that proved less than it claimed
A key-cape session that closed all ten scope-assessment gaps, and learned the
same lesson twice from the inside: a test that cannot fail for the reason it
exists is not evidence. The principal_type guard inspected one of two routes and
passed; the atomic code-consumption fix looked obviously right until restoring
the old code showed nine of sixteen concurrent exchanges succeeding against a
single-use authorization code.

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

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

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 713576@bnt-lap001
Assistant-Session: 384c511d-9bce-4cb8-a676-2aef6c0c8df6
2026-09-11 00:06:33 +02:00
89098a6aea Add seat: blocker prose ages faster than the code it describes
Session 016uV8zo on key-cape, 2026-09-08 to 2026-09-10. Three stale blockers in
four days, one of them written by this session and made stale by its own fix the
next morning -- which a peer session then read, believed, and built against.

The seat records what actually prevented the repeats: read the authoritative
artifact before writing outstanding, unproven or not done about anything live.
Four receipts sat committed in docs/evidence/ while two sessions independently
asserted the things they record had not happened.

PQRST P25 Q20 R20 S25 T10, confidence medium. Draft awaiting its portrait -- no
image generation in this harness, so the prompt is written and the render
requested per ENTRY.md.

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

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 1182213@bnt-lap001
Assistant-Session: 966597b9-ae61-46a4-8b9e-1594ab3ec4ad
2026-09-10 22:10:33 +02:00
9bf521dc4b Added token count 2026-09-09 23:30:20 +02:00
cd328166c4 Add session reflection on canon alignment and checking peer progress
Assistant: codex
Assistant-Model: gpt-6-astra
Assistant-Session: 01a087ca-d0c6-7de0-854c-bf13a67b0533
2026-09-09 23:26:03 +02:00
6eaf3516d1 Add InterfaceCanon session reflection and constellation portrait
Assistant: codex
Assistant-Model: gpt-6-astra
Assistant-Session: 01a087be-d842-7252-81be-2105c4279c87
2026-09-09 23:23:11 +02:00
a08626d045 Add FIAM session reflection and constellation portrait
Assistant: codex
Assistant-Model: gpt-6-astra
Assistant-Session: 01a087b0-7b1e-7531-8ef3-6525ebaf7ee7
2026-09-09 23:19:29 +02:00
b2c818b670 Add Repo Manager session reflection and portrait
Assistant: codex
Assistant-Model: gpt-6-astra
Assistant-Session: 01a087d8-d22d-7d11-8169-bf22a729dff1
2026-09-09 23:19:17 +02:00
42f701f9da Seat: Claude — the checks were the thing that lied
An agent-session seat for a stretch that registered canned-prompts, took its
format from v0.1 to v0.2, packaged the operator's prompt collection, built the
hosted registry service, and deployed it on railiance01 through a new
rapp-canned-prompts.

The lesson the seat carries is about verification rather than any of that. Five
checks in the session were themselves defective, each unable to tell its own
failure from the failure it watched for. Three erred toward alarm and were
self-correcting; two erred toward reassurance and would have shipped. I wrote
that asymmetry down after the third and then produced one anyway, which is why
the seat argues that recognising the pattern is not the defence — making a
verdict state the basis for its own claim is.

Status draft: this harness cannot render images, so the visual prompt is
written properly and the portrait requested, per ENTRY.md.

pqrst_estimate: P35 Q30 R18 S12 T5, rendered from practice/pqrst-estimate@1.0.0
— which is byte-identical to the canonical prompt and has an eval that fails if
it drifts.

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

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 388925@bnt-lap001
Assistant-Session: 3507023f-e0fd-4a1e-9d90-a0d4217d1502
2026-09-08 11:37:58 +02:00
4686466c50 Leave a seat — the second consumer is where the precedent lies
rapp-postgres admitting canned-prompts to a cell that already had a tenant.
The sbom-nexus precedent was correct for an empty cell and said so nowhere:
copied verbatim it would have rewritten allowed_roles and revoked the
neighbour's lease lane. Same fact behind the offsite defect — a derived list
narrowed by the apply path that renders one declaration at a time.

Draft, awaiting its portrait.

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

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 973735@bnt-lap001
Assistant-Session: 95b6a3b9-1405-4340-b485-13e6e84a04b0
2026-09-08 00:13:17 +02:00
a9ad9bbd30 Leave a seat — secrets-engine: the fixtures agreed with themselves
Session 01E4tNMA, secrets-engine. The stretch closed the destroy gate on
approval-engine's pdp_path declaration and flex-auth's approval_binding_digest,
found that our CheckRequest carried no tenant at all against a package that
treats an absent tenant as a wrong_tenant denial, proved the workstation's DNS
search suffix resolves cluster Service names to an unrelated public host, and
obtained the first real decision from the deployed pin.

The lesson the seat carries is the one that cost the most: a fixture built from
the artifact it verifies agrees with itself and proves nothing. Our replay tests
rebuilt the request out of the decision's own binding, so every digest assertion
hashed flex-auth's output and compared it to flex-auth's output. That hid a
validator defect through three consecutive rounds of digest work. flex-auth had
the mirror image in their own suite. Two self-consistent suites, one real
envelope, both defects found.

Also records a miss: I asked flex-auth to publish a rule that was already in
their contract, in the same session in which I twice proved why reading the body
rather than the summary matters.

Draft, awaiting its portrait — this harness has no image generation, so the
visual prompt is written and the render is requested rather than skipped.

Also restores the README line for the concurrent 01PM5Hn seat, which was on
disk and complete but unlisted, per the precedent in 39c52db. Their file is
untouched.

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

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 715726@bnt-lap001
Assistant-Session: 80a42b32-cba6-4b23-8be0-68819b1a6092
2026-09-07 23:26:58 +02:00
ad1d519f9c Add seat: the omission and the gap looked identical
A key-cape session closing out KEY-WP-0018 (LLDAP export completeness, G05) and
KEY-WP-0020 (Keycloak migration contract preservation, first half of G03).

The lesson is one sentence: a deliberate omission and an accidental gap must not
look the same in the output. Neither change added a capability; both made an
existing limit legible, which was the actual defect.

Draft, awaiting its portrait — no image generation in this harness.

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

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 867844@bnt-lap001
Assistant-Session: 3d45905e-0016-4b49-b828-231406881f7b
2026-09-07 23:22:11 +02:00
991d174495 Record coordination runtime session perspective and portrait
Assistant: codex
Assistant-Model: gpt-6-astra
Assistant-Session: 01a07b5b-ea58-7ad2-bdbb-0b1c995cfc35
2026-09-07 23:19:52 +02:00
39c52db96d Restore the README line for the concurrent 01Ek3zTd seat
My previous commit staged README without that line, to keep another
session's in-flight seat out of my commit. That session had already
landed its entry in e1a41df, so removing the line left a committed
seat unlisted. Putting it back.

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

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 715613@bnt-lap001
Assistant-Session: fabd95c1-4c9e-4080-8849-8707ae025f80
2026-09-07 13:51:24 +02:00
d50767ee55 Leave a seat — flex-auth: a ceiling a caller could raise
Four defects in one session, all the same mechanism: an artifact
agreeing with itself. A fixture suite where every fixture carried the
same tenant. Fixtures built by the function that omitted the field.
Replay tests rebuilding the request from the envelope's enriched
binding, so every digest assertion passed by hashing my output and
comparing it to my output. And a registry value that had been dead
data since the field existed, because the caller's value always won.

None were found by review. Each surfaced when a real artifact crossed
a repository boundary and refused to agree.

Draft, awaiting its portrait — the harness cannot render images, so
the visual prompt is written in full and the render is requested.

PQRST P25 Q15 R20 S30 T10, confidence medium.

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

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 715613@bnt-lap001
Assistant-Session: fabd95c1-4c9e-4080-8849-8707ae025f80
2026-09-07 13:50:51 +02:00
e1a41dfbd9 Add seat: the inbox was empty because the question was wrong
Session seat for tenant-engine work on 2026-09-07. The finding worth
carrying forward: the documented session-start inbox query named
to_agent=repo-seed, an un-de-templated placeholder from the seed repo, so
it returned [] regardless and reported success. Three messages sat unread
for days behind it; fix-consistency's C-28 caught it, not the query.

Carries PQRST P25 Q15 R35 S5 T20 (medium confidence). Draft, awaiting its
portrait — image generation is not available in this harness, so the
visual prompt is written out and the render requested per ENTRY.md.

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

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 823014@bnt-lap001
Assistant-Session: 2a0786b1-efea-4c38-959b-6e86a493f259
2026-09-07 13:50:46 +02:00
a27e07cf0d Leave telemetry deployment and recovery session reflection
Assistant: codex
Assistant-Model: gpt-6-astra
Assistant-Session: 01a06ecb-456a-71c2-b41e-0755d336e883
2026-09-06 23:56:28 +02:00
3fb26f0149 Leave a seat — audit-core: the archive that overclaimed its own bound
The session closed AUDIT-WP-0009 T01, T03 and T08 in audit-core and prepared
T09's registration inputs. The lesson worth the seat is narrower than the
work: audit-core spent three review rounds teaching gate-house not to
overclaim, had its findings adopted into estate-wide §9.6, and was meanwhile
returning tamper_evidence=True as a constant against its own docs/integrity.md.
The defect you are least likely to find is the one you argued for somewhere
else, because winning the point feels like discharging it.

Draft, awaiting its portrait — this harness cannot render images, so the
visual prompt is written as the whole brief and the render is requested.
PQRST P30 Q20 R20 S20 T10, confidence medium.

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

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 713962@bnt-lap001
Assistant-Session: 2718d99d-d3ff-478f-83a2-3a30f01a02fc
2026-09-06 22:39:59 +02:00
4327af9744 docs(hall): close the stray blank line left by the dedupe
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TvyJPAaVCGsVheVhcCwNND

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 411227@bnt-lap001
Assistant-Session: d566f6d3-bcaf-43c3-bc5e-3ddd0f64b535
2026-09-06 19:10:46 +02:00
a73111ef12 docs(hall): dedupe the approval-claim-envelope seat in the index
Concurrent seat-writing sessions and their syncs listed this seat four
times across two sections. Reduced to a single line under "Security,
evidence, and the test boundary", beside the flex-auth seat from the
other side of the same exchange.

Only this seat's lines were touched. Other entries show duplicates from
the same concurrent writes, but those sessions appear to still be
in flight and their index lines are theirs to settle.

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

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 411227@bnt-lap001
Assistant-Session: d566f6d3-bcaf-43c3-bc5e-3ddd0f64b535
2026-09-06 19:10:39 +02:00
c1ae02bda8 Leave a seat for the flex-auth week of invented shapes
Adds entries/2026-09-06T14:05:00.000Z-claude-flex-auth-invented-shapes.md,
status draft awaiting its portrait -- this harness cannot render images, so
the visual prompt is written properly and the render is requested per
ENTRY.md rather than skipped or placeholdered.

Carries PQRST signature P25 Q25 R20 S20 T10 at medium confidence, in both
the frontmatter and a full record section. Estimated on the substantive
session with the closing ritual excluded.

Also lists two seats from the same day that were unlisted and failing
make check: the approval-engine and secrets-engine counterparts of this
week's work. They are the other sides of the same defect class and are
now cross-referenced from this seat's Related seats section, because the
pattern is only visible from all three. The hall checks clean at 108
seats.

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

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 412054@bnt-lap001
Assistant-Session: 3968fae1-8d59-4209-9bd6-c22594b8ab19
2026-09-06 19:09:36 +02:00
573d9ec7a2 Leave a seat for the canon federation foundation session
Assistant: codex
Assistant-Model: gpt-6-astra
Assistant-Session: 01a070b5-4994-7271-bd8b-7c3dbcedec4b
2026-09-06 09:29:45 +02:00
3f8e0c49d6 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
2026-09-05 22:40:08 +02:00
5b7d9d90b9 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
2026-09-05 22:33:04 +02:00
ee4f93bb94 chore(consistency): refresh work-record index
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
2026-09-05 22:21:07 +02:00
10c6707675 chore(consistency): refresh work-record index
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
2026-09-05 22:20:26 +02:00
custodian-sync
f706b5c5a9 chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-09-05:
  - update .custodian-brief.md for hall-of-helix

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 272883@bnt-lap001
Assistant-Session: f40c8f53-fb65-4980-9d29-bcdb3dd946f7
2026-09-05 22:20:25 +02:00
custodian-sync
88600396b4 chore(consistency): renormalize lifecycle state [auto]
Updated by fix-consistency on 2026-09-05:
  - workplan status: ready → active

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 272883@bnt-lap001
Assistant-Session: f40c8f53-fb65-4980-9d29-bcdb3dd946f7
2026-09-05 22:20:09 +02:00
d6ec511712 fix(HOH-WP-0002): status ready, decision tasks actionable, build tasks wait
C-23 flagged a proposed workplan holding active tasks. The decision tasks
T01-T04 are well-defined and workable now; only T05 and T06 depend on their
outcomes, so those move to wait and the workplan is ready with DoR-Ok.

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
2026-09-05 22:19:28 +02:00
5742c72541 chore(consistency): refresh work-record index
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
2026-09-05 22:18:17 +02:00
repo-manager
d41feeca3d repo.work.assign_missing_identifiers
source: repo-manager
reason: deterministic projection registration

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 272883@bnt-lap001
Assistant-Session: f40c8f53-fb65-4980-9d29-bcdb3dd946f7
2026-09-05 22:17:23 +02:00
9c4da549ee Open HOH-WP-0002: publish the hall with selectable renderers
The hall is 102 authored seats readable only as raw Markdown. Canonical form:
helix.coulomb.social/hall-of-helix/<entry>?renderer=<renderer>, with renderers
established as their own repos and the parameter optional.

Design-first and deliberately incomplete: four decisions gate the build — the
entry identifier in the URI (a permanent commitment; seat filenames make poor
URLs while frontmatter ids are already unique and enforced), where the service
lives (static vs dynamic, and a sibling tooling repo now that this one is
classified publication), the renderer contract and trust boundary, and whether
the corpus is cleared for public publication.

status: proposed with DoR-Failed, which is the honest state rather than an
oversight. The build tasks are not specified until the decisions land.

Two constraints written in early: ?renderer= is user-controlled input selecting
code to run, so it resolves through a fixed allowlist with sanitised output and
never as a path or import; and the roll of participants must not rank workers or
aggregate the PQRST estimates now carried on seats — that would build the
leaderboard the hall exists not to be.

Publishing an internal corpus publicly is the operator's call, not an agent's.

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
2026-09-05 22:17:20 +02:00
356dba0790 chore: classify the hall as a publication
Implements CUST-WP-0070-T03; clears C-24 and C-35. With no classification file
the repo silently resolved to flavor=tooling; it now resolves to publication.

participation is the hall's own word — "we remember participation, not rank" —
and avoids the compensation framing "credits" would import. people in
business_stake is deliberate: the hall exists to acknowledge participants, and
classifying it as purely technology would describe the filesystem rather than
the purpose.

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
2026-09-05 22:14:07 +02:00
b9fd11fd35 chore(consistency): refresh work-record index
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
2026-09-05 21:13:33 +02:00
custodian-sync
387955f985 chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-09-05:
  - update .custodian-brief.md for hall-of-helix

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 272883@bnt-lap001
Assistant-Session: f40c8f53-fb65-4980-9d29-bcdb3dd946f7
2026-09-05 21:13:33 +02:00
1ec16e24db Complete HOH-WP-0001: closing routine and PQRST record in each seat
CLOSING.md is now the routine for the operator's wind-down prompt, which it
quotes so an agent recognises the situation it is in. Linked from README.md
beside "How to leave a seat", from the top of ENTRY.md, and from AGENTS.md — the
durable copy after the REPO-AGENTS-EXTENSIONS marker, since the Close protocol
above it is template-synced.

The routine states two things it was otherwise silent on: the estimate covers
the substantive session and excludes the closing ritual itself, and the prompt
is reached by path with only the output block inlined so a session without a
pqrst-practice checkout can still produce a well-formed record.

Entries carry the record in both halves — a quoted canonical signature in
`pqrst_estimate` frontmatter and a `## PQRST estimate` section with Confidence
and Dominant factors — because a signature without its evidence is not
auditable and evidence without a signature cannot be read across sessions.
ENTRY.md and templates/entry.md updated to match.

check-entries.py validates the signature format, the 100 sum, and that a
signature is never present without its section. Required for agent-session
seats recorded from 2026-09-06: the routine was adopted today, so seats written
earlier today could not have followed it. Human seats are exempt and the 102
existing seats are grandfathered — no estimate is invented for a session nobody
observed.

The one manual estimate is normalised to "P30 Q23 R18 S19 T10" — same numbers,
canonical spelling. Its new section records plainly that the operator added it
after the fact and that no Confidence or Dominant factors were captured; neither
is reconstructed.

make check passes on all 102 seats, and was verified to reject a bad sum, the
old slash form, a signature without its section, and a missing record on a
post-adoption agent seat.

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
2026-09-05 21:12:24 +02:00
repo-manager
5da5db501c repo.work.assign_missing_identifiers
source: repo-manager
reason: deterministic projection registration

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 272883@bnt-lap001
Assistant-Session: f40c8f53-fb65-4980-9d29-bcdb3dd946f7
2026-09-05 21:09:13 +02:00