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:
parent
df116bfc7a
commit
aac350da0a
2 changed files with 149 additions and 1 deletions
142
decisions/drafts/GH-DEC-2026-023-frictionless-decision-intake.md
Normal file
142
decisions/drafts/GH-DEC-2026-023-frictionless-decision-intake.md
Normal 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.
|
||||
|
|
@ -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"
|
||||
```
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue