CUST-WP-0075: gate-house doctrine answer for INFD-WP-0005

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 3775@bnt-lap001
Assistant-Session: cfacb6a5-ad5b-4f79-ac67-053e3b0d34a3
This commit is contained in:
tegwick 2026-10-03 12:55:07 +02:00
parent df116bfc7a
commit aac350da0a
2 changed files with 149 additions and 1 deletions

View file

@ -0,0 +1,142 @@
## GH-DEC-2026-023 — Posing a decision needs no human act; attribute admission may replace exact-record admission, on conditions
**Draft, status `proposed`. Not registered in State Hub.** The metadata below is
fenced as `text` on purpose: a `yaml` block carrying a `GH-DEC-` id is
registered as a hub decision by the consistency sync (C-32), and this record
is not ruled yet. When the founder rules, move it into `decisions/decisions.md`
with the usual `yaml` block and let the sync register it.
```text
id: GH-DEC-2026-023
kind: decision
title: Posing a decision needs no human act; attribute admission may replace
exact-record admission for decision memos, on conditions
status: proposed
owner: Bernd Worsch
repo: gate-house
standard: net-kingdom/canon/standards/security-layer-model_v0.8.md
source_note: informed-decision docs/specs/FrictionlessDecisionIntake.md (INFD-WP-0005,
T09); hub message 6ab42744 (2026-10-03); CUST-WP-0075 close-down checklist row 2
requested_dispositions: [approved, revised, rejected]
affects: [gate-house, informed-decision, access-engine, approval-engine, state-hub,
railiance-platform, audit-core]
created: '2026-10-03'
```
## Question
`informed-decision` asked whether any doctrine requires a human or operator act
when a decision is *posed*, as opposed to when it is *bound*. Today an
operator-edited exact-record list in `access-engine`
(`informed-decision.compact-sitting` v1–v6) admits each memo. The spec proposes
admission by attributes, with the human still seeing exactly what is bound.
## Ruling 1 — No doctrine requires a human or operator act at posing time
- **The human requirement attaches to the bind, not to the request.**
`GH-DEC-2026-016` §1–§2 puts it on the approval object and makes the bind
"the cheap moment" for refusal. Nothing in it, in statute §6.4 or §9.4, or in
the ASM canon requires a human to put a question in front of a human.
- **Posing is proposing.** "Cognition proposes. Authority disposes." An agent
drafting a memo and a create-only client drafting an approval is the shape
the canon asks for, not an exception to it. A draft approval carries no
authority until a human binds it.
- **The exact-record list was a build artifact, not doctrine.** No gate-house
record required it. Of its two jobs (spec §5.1), (a), that the human sees
exactly what is bound, *is* doctrine (`GH-DEC-2026-012` R3). (b), operator
gating of posing, is not.
- **The `human_control` declaration made at issue is a requester property, not
a human act.** `GH-DEC-2026-016` §3 requires it to be declared at issue, and
the intake declares it on every create.
## Ruling 2 — Accepted, on conditions that hold now (build mode included)
C1. **Never accept the approval fact from the PDP allow** (statute §6.4
obligation 5, last sentence). The live approval-engine read and the identity
compare of approval id and binding digest against the memo pin (spec §5.1,
§5.4) are the validation of the approval. The PDP allow is eligibility only.
The spec must say this as a rule. Today it reads only as a description of
current code.
C2. **`view_hash` never enters the PDP context** (`GH-DEC-2026-012` R2 limit 2,
R3). Spec §5.2 omits it. Make the omission normative. The binding digest in
context is the one read from approval-engine, never recomputed from the memo's
own vocabulary (R3 co-reference, obligation 5 identity-not-translation).
C3. **`human_control: true` on every intake-created approval, with no memo
class able to turn it off** (`GH-DEC-2026-016` §3). The PDP rule keeps
`approval_human_control == true` as a deny condition. The human principal stays
directory-asserted (`authentication-derived`), never registration-supplied
(`GH-DEC-2026-016` §5).
C4. **A submitter can be stopped without its cooperation, at runtime**
(ASM-S09, INV-07). Removing a submitter from `deploy/intake-submitters.json`
must refuse its next pose without an access-engine image build. A refusal at
the surface is deny-side and cannot manufacture authority (§8), so this is not
a second decision point.
C5. **No submitter admits itself** (ASM-G05). Changes to the submitter and
class lists, in `informed-decision` and in the generated `access-engine` set,
are reviewed commits made by someone other than the submitter they admit.
C6. **Asserted provenance stays visibly asserted** (ASM-M04). While State Hub
is the submitter for workstation agents (R2), `intake_submitter = state-hub`
proves only that the hub forwarded the memo. Anything that can reach the
hub's loopback API can pose. The review UI shows `drafted_by` as asserted, and
no record or rationale may describe it as authenticated origin.
## Findings carried into the close-down register
F1. **R3 is the material relaxation.** In build mode the PDP decides on
approval and intake facts asserted by the PEP that benefits from the allow.
This is tolerable only because of C1, and because approval-engine refuses a
non-human bind regardless. Re-arm: access-engine verifies the approval-engine
approval-claim (`GH-DEC-2026-005`, `GET /v1/approvals/{id}/claim`) and a signed
intake receipt itself, and the PEP carries ids only. The `GH-DEC-2026-010`
attribution gap (the PEP cannot yet prove the allow came from access-engine)
is unchanged by this design and stays declared.
F2. **Human attention becomes the control, and it can be flooded.** With
posing ungated, the scarce resource is the founder's attention. A habituated
reviewer turns a human-in-the-loop control into the theatre `GH-DEC-2026-016`
§1 forbids. Build mode: a per-submitter volume cap SHOULD exist. Close-down:
it MUST, with a budget per submitter (ASM-G04) and the overview showing
volume per submitter.
F3. **Notifications are an unauthenticated channel** (R8). A hub writer can
send the founder a message that looks like a memo notification and links
elsewhere. Close-down: the signed-in overview is the authoritative entry point,
and notifications carry ids, not links the reviewer must trust.
## What must be re-armed at production close-down
R1–R8 of the spec §9, as written, plus:
- R2 re-arm also covers C6: the forwarded submitter carries the authenticated
drafting agent identity, and `drafted_by` becomes authenticated or is
dropped.
- R3 re-arm as F1, including retirement of PEP-carried approval attributes.
- R5 re-arm also covers C5: the signed regeneration path names a reviewer
other than the admitted submitter.
- New: the per-submitter volume budget (F2) becomes MUST.
- New: the exact-record branch (`compact-sitting` v1–v6) is removed once its
memos are terminal, not left as a permanent second path.
## Never relaxed
The spec's own list stands: humans bind, fresh MFA on answer, one question per
memo, no approve-all, no secret values, audit-core evidence. Also C1–C3 above.
## What this does not rule
Which acts require human approval at all. That stays open
(`GH-DEC-2026-016` §5). This record says posing needs no human act. It does not
say which memo classes must exist. Nor does it rule approval-engine's
`Idempotency-Key` or `requested_via` (spec §4); those are the owner's.
## Reversal condition
Ruling 1 reverses if a memo reaches a reviewer whose approval binding the live
read did not confirm. That would mean job (a) of the exact-record list was
lost, and an operator gate returns until it is restored. Ruling 2's acceptance
of R3 lapses at production close-down whether or not F1 has landed.

View file

@ -123,11 +123,17 @@ and A12 r3 (operator-authorized; recorded under T09), changes no files, and conf
`INFD-IN-0007` and the §4 row coupling stay open with no deadline. Nothing the task waits
for was delivered; the wait stays on `informed-decision` resolving `INFD-IN-0007`.
2026-10-03 (CUST-WP-0075, second check): `informed-decision`'s 2026-10-03 message (`6ab42744`,
INFD-WP-0005 doctrine check on frictionless decision intake) is about memo admission, not
`INFD-IN-0007` or the §4 row. It was answered separately (reply `4a290496`; draft
`decisions/drafts/GH-DEC-2026-023-frictionless-decision-intake.md`). No other
`informed-decision` message delivers the gate. The wait stands.
```task
id: GH-WP-0004-T06
status: wait
blocked_on: message-from:informed-decision
blocking_reason: "informed-decision answered yes; its section-4 row is coupled to INFD-IN-0007, still open with no deadline (reply 2026-09-27)."
blocking_reason: "informed-decision answered yes; its section-4 row is coupled to INFD-IN-0007, still open with no deadline (reply 2026-09-27; rechecked 2026-10-03)."
priority: medium
state_hub_task_id: "62ac1f55-d3fc-59bd-84a5-8baec5de6bac"
```