Apply GH-DEC-2026-015/016 and the audit-core registration; both blockers cleared

Origin and evidence path both landed today.

T07 origin: railiance-apps deployed decisions.coulomb.social and corrected the
hostname in this repo — not the decide.coulomb.social this workplan proposed.
Verified here rather than taken on report: both paths 200, TLS verify 0, Let's
Encrypt cert valid to 2026-12-09.

T08: audit-core registered the source with every field as proposed and landed
the detection half. INFD-IN-0003 closed. Their refinements booked — reconciliation
on the high-volume class too, since rate detects a stream stopping but never a
stream missing the particular renders that mattered, which is exactly our threat
model; and PR-12, the custody locator must be a stable non-secret identifier
because redact scans data and an existence declaration arriving without its
pointer looks complete while being useless.

INFD-IN-0004 ruled as GH-DEC-2026-015: gate-house reversed itself and nesting is
permitted for this pair. The decisive ground was not the cycle argument we led
with — our binding slice canonicalizes principal and target, two of the five
digest fields, so co-reference left us performing a partial recomputation of one
act in a second vocabulary, closer to the translation R3 forbade than nesting
is. Our ordering objection was withdrawn as mistaken.

The permission is conditioned and NOT ACTIVE until approval-engine states its
presentation exclusion as normative and tested. layer.yaml is deliberately
unchanged and carries nesting_permission_active false — we do not activate on
our own initiative.

GH-DEC-2026-016 ruled NC-03. Its §5 is live rather than hypothetical and is
booked as PR-11: principal_type: human is a property of the client registration,
structurally the same shape as the gap-route tenant, so a human-in-the-loop
control must not be discharged on it as verified humanity.

T07 stays progress: the submission to key-cape is written but unsent, blocked by
the local permission classifier rather than by any repository.

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
This commit is contained in:
tegwick 2026-09-10 19:19:10 +02:00
parent 1614f257b6
commit 1fb17aec6b
6 changed files with 210 additions and 13 deletions

View file

@ -430,6 +430,7 @@ issuer, so it is not this repository's to decide alone.
```task
id: INFD-WP-0001-T08
status: todo
priority: medium
state_hub_task_id: "b5c1d329-9580-5672-9640-2930cbbb729a"
```
@ -471,3 +472,57 @@ component, and the payload question is open. Design and decision request in
- **Scope pressure toward an approvals inbox.** The fastest way to close
`KEY-WP-0013-T02` is to build a queue with two buttons. That would satisfy the
dependency and abandon the thesis. T04 exists to make the cost of that visible.
## Session note — 2026-09-10, both blockers cleared
**T07 origin: cleared and independently verified.** `railiance-apps` deployed
`decisions.coulomb.social` at 14:32 UTC (their `7c2e51a`) and corrected the
hostname in this repository's `docs/keycape-client-registration.md` and the T07
note — the assigned name is **not** the `decide.coulomb.social` this workplan
proposed. Verified here rather than taken on report: `/` and `/auth/callback`
both return `200` from `92.205.62.239`, TLS verify `0`, Let's Encrypt
`CN=decisions.coulomb.social` issued by YR2, valid to 2026-12-09. The path is an
nginx placeholder, which does not affect a registration matched as a string at
`/authorize`.
**T08 evidence path: cleared.** `audit-core` registered this source with every
field as proposed (`AUDIT-IN-0003`, their `c4016a7`) and landed the detection
half (`AUDIT-WP-0009` T04/T06/T07). `INFD-IN-0003` closed.
**`INFD-IN-0004` ruled — `GH-DEC-2026-015`, and gate-house reversed itself.**
Nesting is permitted for this pair. The decisive ground was not the cycle
argument we led with: our binding slice canonicalizes `principal` and `target`,
two of the five digest fields, so co-reference left us performing a partial
recomputation of one act in a second vocabulary — *closer to the translation R3
forbade than nesting is*. Our ordering-dependency objection was withdrawn as
mistaken. **The permission is conditioned and NOT ACTIVE**: it turns on when
`approval-engine` states its presentation exclusion as normative and tested.
`layer.yaml` is deliberately unchanged and carries
`nesting_permission_active: false`. We do not activate on our own initiative.
**`GH-DEC-2026-016` ruled NC-03.** Where an approval is declared as discharging
a human-in-the-loop control, the approver must be human and `approval-engine`
must refuse at bind time. Our surface enforcement stays — ours refuses earlier
with a better error, theirs makes the refusal a property of the object. Its §5
lands here as PR-11 and is live rather than hypothetical:
`principal_type: human` is a property of the *client registration*, the same
shape as the gap-route tenant, so a human-in-the-loop control must not be
discharged on it as verified humanity.
**A-16 and A-17 were corrected with this repository's rider and precondition**
(`gate-house@62c6399`), including the dependency that A-17 needs A-16 first.
### Outstanding — a tooling block, not a dependency
Two messages are **written and unsent**, blocked by the local permission
classifier rather than by any repository:
1. **`key-cape`** — the `client_id` and callback URI submission that closes
`KEY-WP-0013-T02`. Payload ready; also carries the PR-11 provenance question
about `principal_type`.
2. **`audit-core`** — `heartbeat_classes`, declaring all three classes at
`86400`, including `presentation` with the reasoning for declaring a
heartbeat on a class their guidance put outside it.
Until these send, T07 cannot close and the first heartbeat cannot be emitted.