2026-09-21). Not a finding this repository received directly, and not one anyone
had raised with it before 2026-09-21.
> **Derived-artifact note (§12).** This document restates §3, §6.4 and §11 of
> `security-layer-model_v0.8.md` and quotes `GH-DEC-2026-012`. It is derived from
> those bodies at `net-kingdom` v0.8 as published 2026-09-09 and
> `gate-house` `decisions/decisions.md` as of 2026-09-21. Where it and they
> differ, they govern.
---
## 1. What was found
`informed-decision` declares `layer: surface` in `INTENT.md` frontmatter and in
`layer.yaml`. §3 of the security layer model enumerates four layers — Taxonomy,
Tooling, Engines, Staff — and `surface` is not among them. `flex-auth`'s
conformance validator reads the vocabulary as closed and admits only
`{Staff, Engine, Tooling}`, so this repository fails it on the **value**.
Two facts about the finding, stated so the ruling is not made on a wrong picture:
- **This repository is internally consistent.** Both files carry `surface`, in
the same casing. The nine repositories in B1 of the boundaries review disagree
with themselves between `INTENT.md` and `layer.yaml`; `informed-decision` is
not one of them and the precedence question (which form governs) does not
arise here. Whichever form gate-house rules authoritative, this repository
gives the same answer.
- **`informed-decision` has no §4 catalog row.** The standard does not name it.
It declared its layer ahead of being catalogued, on the strength of §11's
"who must declare" and `GH-DEC-2026-012`. So the ruling asked for here is not
only about a word in a file; it is about what row this repository would take
if §4 were extended to it.
## 2. What `surface` was meant to denote
`surface` names the **presentation-and-binding tier**: the place where a
decision rendered elsewhere is shown to a named human, and that human's identity
is bound to the act — together with the evidence that the presentation actually
happened. It is the position `INTENT.md` opens on: *"every layer of the
NetKingdom estate has an owner except the one a human actually touches."*
It was not a casual word and it was not a synonym for "frontend". It was written
on 2026-09-09 in commit `f6376dd`, in this repository's own voice, immediately
after `GH-DEC-2026-012`, whose R1 ends:
> *"Being PEP-shaped does not move a repository out of its layer (§6.4). Its
> layer is its own to declare in its own voice; this ruling settles its shape,
> which is what was asked and what was blocking."*
That sentence left the layer value to this repository — and left it with a
vocabulary in which no value was true.
**Why not Engine.** `GH-DEC-2026-012` R1 ruled it, in terms: *"It is **not** an
Engine and takes no catalog row as one. It holds no state another layer reads at
runtime to reach a verdict, which is the test, and it renders no decision."*
This repository asked for that ruling and argued for it against itself
(`docs/gate-house-decision-request-layer-placement.md` §3, the self-dealing
objection). Declaring `Engine` now would contradict a standing gate-house ruling.
**Why not Staff.** §3.4 makes Staff *"interactive and non-deterministic"*,
working *"through agentic capability"*, producing *"specifications, decisions,
workplans, and tasks"*. This repository's core artifact is a hash over a
rendered view: the same approval rendered to the same principal in the same role
yields the same `view_hash`, asserted by test. Determinism is the standard's
primary cut (§3), and this falls on the deterministic side. §3.4 also says Staff
*"MUST NOT hold state that another layer depends on at runtime"* — presentation
records are exactly state `audit-core` depends on, so a Staff declaration would
be self-violating on the day it was made. And `AGENTS.md` carries **never let an
agent bind**: only a human completes a disposition. A repository whose hardest
rule is that no agent may perform its protected act is a poor fit for the layer
defined by agentic capability.
**Why not Tooling.** §3.2 is *"deterministic infrastructure: data structures,
persistence, and the consistent, performant, scalable keeping of state."* This
repository persists nothing another layer reads; `approval-engine` owns the
approval object and `audit-core` owns the archive. It is a client of both.
**Why not Taxonomy.** §3.1 is terms and semantic contracts with *"no runtime
position"*. This repository is nothing but a runtime position.
So `surface` was chosen because each of the four §3 values is **false** of this
repository, one of them by gate-house's own ruling. Faced with picking a false
value to satisfy a validator or writing the true word and carrying the finding,
this repository wrote the true word. That is the same order it used in
`INFD-IN-0001` — ruling first, architecture second — and the same disposition as
declaring `GH-DEC-2026-010` an inherited open gap rather than describing the
decision path as validated.
`role: pep-shaped` is a separate key and carries the §6.4 shape. `surface` was
never intended as a restatement of "PEP" in the layer slot; §6.4 is explicit
that PEP is a shape and not a layer, and this repository accepted that in full.
## 3. This repository's position
**`informed-decision` holds that `surface` names a real tier §3 does not
enumerate.** The argument is the elimination above, and its sharpest form is
this: `GH-DEC-2026-012` ruled this repository out of Engine, and §3 offers
nothing else that is true of it. If the vocabulary is closed at §3's four
values, then a standing ruling and a closed vocabulary together leave this
repository **no conforming declaration available**. That is the defect the
standard has now corrected several times in its own text — *"a rule that assigns
an obligation the holder cannot discharge is the §9.1 defect applied to
conformance rather than capability"* (§11) — and it would be produced here by
the interaction of two correct rules rather than by either being wrong.
**But this repository does not claim the ruling must go its way, and does not
ask for §3 to be amended in its favour.** It asks for a ruling, and states now
what it will do on each answer:
| Ruling | What `informed-decision` does |
| --- | --- |
| §3's vocabulary is **open**, and `surface` (or a gate-house-chosen name for that tier) is enumerated in a future §3 | Adopt the enumerated spelling in `INTENT.md` and `layer.yaml` in one commit, update `tests/test_layer_conformance.py` to pin it, and take the §4 row that comes with it. |
| §3's vocabulary is **closed**, and gate-house names which of the four this repository takes | Change both files to that value in one commit, same day, with no argument — and record in `layer.yaml` the reasoning above as the history of what was believed, so the change does not read as if the word had been careless. |
| §3's vocabulary is **closed** and gate-house declines to name a value | This repository cannot pick one. It would carry an undeclared violation it has no move against, and would rather be told than guess. |
**One request attaches to the closed outcome.** If gate-house rules the
vocabulary closed, this repository asks that the ruling say **which value** and
**how §3's determinism cut reaches it**, given `GH-DEC-2026-012` R1. Not as a
condition — the value changes either way — but because the next repository in
this position will reason from the ruling, and "not Engine, and also Staff" is a
result that needs its derivation shown. `approval-engine`'s inbox, this
repository's own existence, and `key-cape`'s blocked `client_id` all came from
the same gap: the tier a human touches had no owner. A vocabulary that cannot