Apply GH-DEC-2026-017: declare layer Staff, make layer.yaml derived, answer the section 4 question.
gate-house ruled the section 3 vocabulary closed at four case-insensitive tokens and named Staff (role pep-shaped unchanged). Both files were changed the same day, as this repository had committed to. INTENT.md now governs. layer.yaml is marked derived from INTENT.md and carries no standard or companion version. The reasoning behind `surface` stays in layer.yaml as history. INFD-IN-0006 is closed. INFD-IN-0007 asks once more how section 3.4's Staff definition fits a deterministic, non-agentic, evidence-holding repository. It is a question only: nothing waits on it. Section 4 answer: yes, as a Staff / pep-shaped / evidence-source row. The emission guarantee is owed per event class: presentation (volume), disposition (rare), stance-application (rare). See docs/section-4-catalog-row.md. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Assistant: claude-code Assistant-Model: opus Assistant-Process: 63291@bnt-lap001 Assistant-Session: 8bd77868-ca68-4f49-bb1e-d539ecc0d703
This commit is contained in:
parent
d0d0bad66d
commit
f5cd5d9376
6 changed files with 546 additions and 53 deletions
89
INTENT.md
89
INTENT.md
|
|
@ -6,9 +6,24 @@ intent_version: 0.1.0
|
|||
date: "2026-09-09"
|
||||
domain: infotech
|
||||
topic_slug: netkingdom
|
||||
layer: surface
|
||||
role: pep-shaped # confirmed by GH-DEC-2026-012; see layer.yaml
|
||||
standard: net-kingdom/canon/standards/security-layer-model_v0.7.md
|
||||
# NetKingdom security layer declaration (security-layer-model §11).
|
||||
# THIS FRONTMATTER IS THE DECLARATION. GH-DEC-2026-017 §1 rules that INTENT.md
|
||||
# governs and that `layer.yaml` is a DERIVED artifact which must agree with it.
|
||||
#
|
||||
# `layer: surface` stood here from 2026-09-09 to 2026-09-21. GH-DEC-2026-017 §3
|
||||
# ruled the §3 vocabulary closed at four tokens — Taxonomy, Tooling, Engine,
|
||||
# Staff — and named Staff for this repository. Changed the same day, without
|
||||
# argument, as this repository pre-committed in
|
||||
# docs/gate-house-decision-request-layer-vocabulary.md §3. The reasoning that
|
||||
# produced `surface` is kept as history in layer.yaml; it is not erased.
|
||||
#
|
||||
# No standard version is carried, per GH-DEC-2026-017 §5 / A12: this declares a
|
||||
# standing property, and a version here would read as a validity condition that
|
||||
# every revision of the standard invalidated. Version-scoped state belongs in
|
||||
# the derived conformance record.
|
||||
layer: Staff
|
||||
role: pep-shaped # §6.4 shape, confirmed by GH-DEC-2026-012 R1; a role is not a layer
|
||||
standard: net-kingdom/canon/standards/ # the body, unversioned on purpose
|
||||
companion: net-kingdom/SECURITY-COMPANION.md
|
||||
---
|
||||
|
||||
|
|
@ -186,21 +201,61 @@ not failure** — a memo sent back for improvement is the surface working.
|
|||
|
||||
## Layer Placement — Ruled
|
||||
|
||||
**PEP-shaped**, confirmed by `GH-DEC-2026-012` (answering `INFD-IN-0001`).
|
||||
Not an Engine: this repository holds no state another layer reads at runtime for
|
||||
a verdict, and renders no decision. Companion §5 is owed and statute §6.4
|
||||
applies in full. The declaration is `layer.yaml`, in this repository's own voice
|
||||
— a layer someone else states about you is not a declaration.
|
||||
**Layer: `Staff`. Role: PEP-shaped.** Both are ruled.
|
||||
|
||||
The **shape** is ruled; the **layer value** is open. `GH-DEC-2026-012` R1 left
|
||||
the layer to this repository to declare, and `surface` was written by
|
||||
elimination — the presentation-and-binding tier, the runtime a human touches.
|
||||
§3 of the model does not enumerate it, which the custodian's estate-wide sweep
|
||||
surfaced on 2026-09-21. This repository holds that `surface` names a real tier
|
||||
§3 omits, and will change the value without argument if `gate-house` rules the
|
||||
vocabulary closed and names which of the four applies. Open as `INFD-IN-0006`;
|
||||
the argument is `docs/gate-house-decision-request-layer-vocabulary.md`. The
|
||||
frontmatter value is unchanged pending that ruling, on purpose.
|
||||
The **shape** was ruled by `GH-DEC-2026-012` R1 (answering `INFD-IN-0001`): not
|
||||
an Engine — this repository holds no state another layer reads at runtime for a
|
||||
verdict, and renders no decision. Companion §5 is owed and statute §6.4 applies
|
||||
in full.
|
||||
|
||||
The **layer value** was ruled by `GH-DEC-2026-017` §3 (answering `INFD-IN-0006`)
|
||||
on 2026-09-21. §3's vocabulary is **closed** and has four tokens — `Taxonomy`,
|
||||
`Tooling`, `Engine`, `Staff`; comparison is ASCII case-insensitive and nobody is
|
||||
asked to re-spell anything. `surface` is not among them, and the correct value
|
||||
here is `Staff`, with `role: pep-shaped` untouched. `ops-mason` and `ops-warden`
|
||||
are the precedent: Staff in the layer column, PEP-shaped in the role column.
|
||||
|
||||
This repository had pre-committed to changing both files the same day, without
|
||||
argument, if the vocabulary was ruled closed and a value was named
|
||||
(`docs/gate-house-decision-request-layer-vocabulary.md` §3). It did. **The
|
||||
reasoning that produced `surface` is not erased** — it is kept as history in
|
||||
`layer.yaml`, because a value written by elimination against a vocabulary that
|
||||
turned out to be closed is evidence about the vocabulary, not carelessness.
|
||||
|
||||
Two things follow, and are recorded rather than argued:
|
||||
|
||||
- **`informed-decision` was never a §11 non-conformance.** §11's obligations
|
||||
attach to estate-authored repositories **in §4**, and this repository holds no
|
||||
§4 catalog row. `GH-DEC-2026-017` §4 states that a run which grades it is
|
||||
over-scoped, and requires every conformance run to state its scope. The
|
||||
correct report is *declared voluntarily, outside catalog scope; value not in
|
||||
the vocabulary, correction identified*. The correction was this repository's
|
||||
to make and it made it.
|
||||
- **The declaration's form changed too.** `INTENT.md` frontmatter **governs**;
|
||||
`layer.yaml` is a **derived artifact** that must be marked derived, must name
|
||||
`INTENT.md` as what it derives from, and must agree with it
|
||||
(`GH-DEC-2026-017` §1 / A11). A declaration carries **no standard version**
|
||||
(§5 / A12), so the `standard_version: "0.7"` this repository flagged is gone.
|
||||
`ops-warden` owns the reference sidecar form and is updating it; this
|
||||
repository applied the two ruled properties and follows that form for the rest.
|
||||
|
||||
One thing the ruling did **not** settle, carried as `INFD-IN-0007` rather than
|
||||
treated as settled: §3.4 says Staff *"MUST NOT hold state that another layer
|
||||
depends on at runtime"*, and this repository's presentation records are exactly
|
||||
state `audit-core` depends on. The ruling reaches `Staff` by elimination — not
|
||||
Engine per `GH-DEC-2026-012` R1, and nothing else in the four is true — which is
|
||||
the same route this repository walked, and it gives the value. It does not say
|
||||
how a deterministic, non-agentic repository that holds evidentiary state sits
|
||||
inside the layer defined by non-determinism and agentic capability. **The value
|
||||
is applied regardless**; the question is asked for the next repository in this
|
||||
position, not as a condition on the change.
|
||||
|
||||
### §4 catalog membership — answered: yes
|
||||
|
||||
`GH-DEC-2026-017` §4 deliberately did **not** enrol this repository, because a
|
||||
layer stated about a repository by another is not a declaration and that rule
|
||||
applies to catalogue membership at least as strongly. The question was asked,
|
||||
and this repository's answer is **yes**: see `docs/section-4-catalog-row.md`.
|
||||
|
||||
The ruling also confirmed that emitting a **presentation claim** does not
|
||||
require a second catalog row: PEP and PIP are shapes a repository has, and §4
|
||||
|
|
|
|||
|
|
@ -1,5 +1,25 @@
|
|||
# Decision request — is §3's layer vocabulary closed, and what is `surface`?
|
||||
|
||||
> **RULED, 2026-09-21 — `GH-DEC-2026-017`.** The vocabulary is **closed** at four tokens
|
||||
> (`Taxonomy`, `Tooling`, `Engine`, `Staff`), comparison is case-insensitive, and the value
|
||||
> for this repository is **`Staff`**, with `role: pep-shaped` untouched. That is the second
|
||||
> row of §3's table below: *change both files to that value in one commit, same day, with
|
||||
> no argument.* Done the same day, in `INTENT.md` (which now governs, per the same ruling)
|
||||
> and in `layer.yaml` (now marked derived). The elimination reasoning below is kept as
|
||||
> history in `layer.yaml` rather than erased.
|
||||
>
|
||||
> The ruling also held that this repository was **never a §11 non-conformance** — §11 binds
|
||||
> repositories in §4 and this one has no row — and asked, rather than decided, whether it
|
||||
> should take one. Answered in `docs/section-4-catalog-row.md`: **yes**.
|
||||
>
|
||||
> One part of §3's non-conditional request is answered as to the **value** and not as to
|
||||
> the **fit**: §3.4's prohibition on Staff holding runtime state another layer depends on
|
||||
> is not reached by the ruling. Asked once more as `INFD-IN-0007`. It blocks nothing and
|
||||
> the value was applied regardless, as promised.
|
||||
>
|
||||
> **This document is not edited below this line.** It is the record of what this repository
|
||||
> argued before it knew the answer, and it is more useful unretouched.
|
||||
|
||||
**Intake:** `INFD-IN-0006`
|
||||
**To:** `gate-house` (owner of §11 and of the security layer model)
|
||||
**Standard:** `net-kingdom/canon/standards/security-layer-model_v0.8.md` (proposed)
|
||||
|
|
|
|||
164
docs/section-4-catalog-row.md
Normal file
164
docs/section-4-catalog-row.md
Normal file
|
|
@ -0,0 +1,164 @@
|
|||
# Should `informed-decision` hold a §4 catalog row? — answered: **yes**
|
||||
|
||||
**Answers:** `GH-DEC-2026-017` §4, the open item gate-house carries as `GH-WP-0004-T06`
|
||||
**To:** `gate-house` (author), `net-kingdom` (publisher of the catalog)
|
||||
**Standard:** `net-kingdom/canon/standards/` — the security layer model, §3, §4, §9.6, §11
|
||||
**Intake:** `INFD-IN-0006` (closed by the ruling); this document is its second half
|
||||
**Raised by:** `gate-house`, which asked rather than enrolled
|
||||
|
||||
> **Derived-artifact note (§12).** This document restates §3, §4, §9.6 and §11 of the
|
||||
> security layer model and quotes `GH-DEC-2026-017` and `GH-DEC-2026-018`. Derived from
|
||||
> `net-kingdom/canon/standards/security-layer-model_v0.8.md` as published 2026-09-09 (the
|
||||
> **proposed** cut, held by `GH-DEC-2026-019`), from the amendment set
|
||||
> `gate-house/docs/amendments/v0.8-section-11-declaration-amendments.md` v0.1, and from
|
||||
> `gate-house/decisions/decisions.md` as of 2026-09-21. Where they and this differ, they
|
||||
> govern.
|
||||
|
||||
---
|
||||
|
||||
## 1. The question, as gate-house put it
|
||||
|
||||
> *"Not ruled: whether `informed-decision` should become a §4 row. It holds a ruled
|
||||
> boundary, is PEP-shaped, and sits on the approval path, which is a real argument. Adding
|
||||
> a catalog row is a canon change, and a repository is **asked**, not enrolled — §11's own
|
||||
> rule that a layer stated about a repository by another is not a declaration applies to
|
||||
> catalogue membership at least as strongly."*
|
||||
|
||||
The manner of asking is worth recording before the answer, because it is the thing being
|
||||
tested. gate-house had every argument it needed to add the row and did not add it. That is
|
||||
§11's declaration rule applied against its own author's convenience, which is the same move
|
||||
`access-engine` made when it raised gate-house's undeclared layer against gate-house.
|
||||
|
||||
**Answer: yes.** `informed-decision` asks for a §4 catalog row.
|
||||
|
||||
## 2. Why — and it is not the flattering reason
|
||||
|
||||
The tempting argument is that this repository holds a ruled boundary, is PEP-shaped, sits
|
||||
on the approval path, and that every §4 Staff row with its shape — `ops-warden`,
|
||||
`ops-mason` — is catalogued. That argument is true and it is not the one that decides it,
|
||||
because it is an argument about belonging rather than about a cost anyone bears.
|
||||
|
||||
**The deciding argument is that being outside §4 makes this repository's evidence
|
||||
obligation uncheckable, and that is worse for the estate than for this repository.**
|
||||
|
||||
`GH-DEC-2026-017` §4 is correct that §11 does not bind a repository outside §4, and
|
||||
correct that a run which grades one is over-scoped. Applied here, that means:
|
||||
|
||||
- `layer.yaml` declares `evidence.kind: load-bearing` — presentation evidence is *the only
|
||||
record of what a human was shown before binding*;
|
||||
- §9.6 and §11 make a load-bearing source declare an emission guarantee per event class,
|
||||
which is what makes §9.6 **checkable rather than reviewable**;
|
||||
- and no conformance run may check that here, because there is no row to check.
|
||||
|
||||
So the current state is a repository asserting the strongest evidence property in the
|
||||
model, voluntarily, with nothing in canon able to observe whether it holds. That is the
|
||||
same shape as the defect the amendment round exists to close: a rule a careful implementer
|
||||
can satisfy without doing the thing it exists to require. This repository would rather be
|
||||
gradeable.
|
||||
|
||||
The secondary argument is `L3-independent-evidence-path`, the limit `GH-DEC-2026-012`
|
||||
attached to the presentation claim: *the copy that is evidence MUST NOT be reachable only
|
||||
through the party it is evidence about*. In this component the actor and the source are
|
||||
the same, which is exactly the case where an external check is load-bearing rather than
|
||||
ceremonial. A repository whose architecture rests on being audited independently should be
|
||||
in the catalog that makes independent auditing mechanical.
|
||||
|
||||
## 3. What the row would say
|
||||
|
||||
| Repository | Layer | Role | Evidence source |
|
||||
| --- | --- | --- | --- |
|
||||
| `informed-decision` | `Staff` | `PEP-shaped` | `yes` |
|
||||
|
||||
`Staff` and `PEP-shaped` are ruled — `GH-DEC-2026-017` §3 and `GH-DEC-2026-012` R1 — and
|
||||
match `ops-warden` and `ops-mason` exactly. The third column is A10's, and this repository
|
||||
marks itself `yes` rather than leaving it `—`: it **emits** into the estate's evidence
|
||||
stream, and A10 is explicit that custody is disjoint from emission, so `audit-core`
|
||||
holding the record discharges nothing of this emitter's guarantee.
|
||||
|
||||
**No second row for the presentation claim.** `GH-DEC-2026-012` R2 already settled that:
|
||||
PEP and PIP are shapes a repository has; §4 records the layers it occupies. One row.
|
||||
|
||||
## 4. The obligation this acquires, stated per event class
|
||||
|
||||
A `yes` in the evidence-source column triggers §11's emission-guarantee check. Under A10
|
||||
that guarantee is **per event class** — *"a single repository-level guarantee over a stream
|
||||
containing both a high-volume and a rare class is an average, not a declaration, and will
|
||||
be satisfied by rate monitoring that cannot see the rare event go missing."*
|
||||
|
||||
This repository publishes three classes. The classification is **its own**, which §11
|
||||
requires: *"which class an event falls in, and whether it is rare, is the source's
|
||||
published classification; a conformance run is supplied that inventory and MUST NOT infer
|
||||
it from an event name, payload, or observed rate, or the check becomes circular."*
|
||||
|
||||
| Event class | Kind | Classification | Detection surface required |
|
||||
| --- | --- | --- | --- |
|
||||
| `presentation` | load-bearing | **volume** — one per render | Rate monitoring is permitted for this class, with a positive window and a positive minimum, **plus** reconciliation |
|
||||
| `disposition` | load-bearing | **rare** | Heartbeat **and** reconciliation. Rate monitoring is forbidden for this class |
|
||||
| `stance-application` | load-bearing | **rare** | Heartbeat **and** reconciliation |
|
||||
|
||||
All three are **load-bearing**. None is attributive, so none takes the attributive escape
|
||||
of declaring a trade and stating that completeness is not claimed.
|
||||
|
||||
`disposition` is the class the whole obligation is about. A disposition is the binding act
|
||||
— the moment a named human commits their identity to an act, in the vocabulary
|
||||
`accept` / `decline` / `return` / `escalate`. Dispositions are rare by construction, and a
|
||||
quiet month of them is indistinguishable from suppression by rate alone, which is
|
||||
`approval-engine`'s argument for its own classes and is correct here for the same reason.
|
||||
Classifying `disposition` as volume because it shares a stream with `presentation` is
|
||||
precisely the averaging A10 forbids, and this repository names the three classes separately
|
||||
so that the averaging is not available to it.
|
||||
|
||||
The design already exists at `docs/evidence-path-design.md` §5: reconciliation as the
|
||||
primary form, per class — this repository's own count against `audit-core`'s event count
|
||||
per class, divergence a finding — plus a heartbeat for the low-volume classes.
|
||||
|
||||
## 5. What this repository cannot yet do, said plainly
|
||||
|
||||
**The guarantee is owed and is not yet declarable.** It needs the local transactional
|
||||
outbox (§9.4), a `cadence.yaml` in the form `approval-engine` set as the reference
|
||||
instance, and sender registration with `audit-core`; the cadence depends on
|
||||
`AUDIT-WP-0009` T04/T06, which are open. `docs/evidence-path-design.md` says the cadence
|
||||
is declared and *"will not be described as operating until those land"*, and that stays
|
||||
true here.
|
||||
|
||||
**This is not a reason to delay the row, and this repository asks that it not be treated as
|
||||
one.** A10 already provides the honest shape: *"an unassessed row carries `—` and §11's
|
||||
check reports it as unassessed rather than as conforming."* The row can land now, with the
|
||||
evidence-source marking `yes` and the emission guarantee reported as **owed and not yet
|
||||
declared** — a tracked non-conformance under §11's own four-state table, which is a state
|
||||
the model has and which is more informative than absence. `informed-decision` would rather
|
||||
be in the catalog as a source with an open guarantee than outside it with a load-bearing
|
||||
evidence claim nobody may check.
|
||||
|
||||
If the catalog's authors prefer the row to wait until the guarantee is declarable, that is
|
||||
their call to make and this repository does not contest it. It asks only that the reason be
|
||||
recorded as a sequencing choice and not as a finding that this repository is not a source.
|
||||
|
||||
## 6. What this does not ask for
|
||||
|
||||
- **Not a second PDP, and not a decision surface.** `layer.yaml` declares
|
||||
`decision_surfaces_exposed: none` and §6 is untouched. A row records a layer occupied,
|
||||
never a permission acquired.
|
||||
- **Not a change to §3.** The four-token vocabulary is closed and this repository declares
|
||||
inside it, as ruled. `surface` is not being re-argued here; it is history in `layer.yaml`.
|
||||
- **Not a resolution of the §3.4 question.** `INFD-IN-0007` asks how a deterministic,
|
||||
non-agentic, evidence-holding repository sits in the layer §3.4 defines by
|
||||
non-determinism and agentic capability. The row would make that question sharper, since a
|
||||
catalogued Staff row is measured against §3.4 directly. It is asked, it blocks nothing,
|
||||
and this repository takes `Staff` either way.
|
||||
- **Not enrolment by correspondence.** This document is a declaration in this repository's
|
||||
own voice, which is the only form §11 accepts. It is an answer to a question, and the
|
||||
canon change is `gate-house`'s and `net-kingdom`'s to make or decline.
|
||||
|
||||
## 7. Summary
|
||||
|
||||
1. **Yes** — `informed-decision` asks for a §4 catalog row.
|
||||
2. The row is `Staff` / `PEP-shaped` / evidence source `yes`; one row, no second row for
|
||||
the presentation claim.
|
||||
3. The deciding reason is that a load-bearing evidence claim outside §4 is uncheckable, not
|
||||
that this repository belongs in the company of the rows that are there.
|
||||
4. The emission guarantee is accepted **per event class**: `presentation` (load-bearing,
|
||||
volume), `disposition` (load-bearing, rare), `stance-application` (load-bearing, rare) —
|
||||
the two rare classes requiring heartbeat **and** reconciliation, not either alone.
|
||||
5. The guarantee is **owed and not yet declarable**; the row should land with it marked
|
||||
owed rather than wait for it, and either sequencing is the catalog authors' to choose.
|
||||
|
|
@ -314,7 +314,7 @@ state_hub_intake_id: "01a0c14e-f965-788f-8efb-4424f1f1ad08"
|
|||
id: INFD-IN-0006
|
||||
kind: intake
|
||||
title: Is section 3's layer vocabulary closed, and what is `surface`?
|
||||
status: open
|
||||
status: closed
|
||||
origin: coordination
|
||||
origin_ref: the-custodian/docs/assessments/2026-09-21-layer-declaration-boundaries.md
|
||||
priority: medium
|
||||
|
|
@ -327,6 +327,26 @@ tags:
|
|||
- conformance
|
||||
created: '2026-09-21'
|
||||
updated: '2026-09-21'
|
||||
resolved_by: GH-DEC-2026-017
|
||||
resolution: >-
|
||||
RULED 2026-09-21. The section 3 vocabulary is CLOSED and has four tokens —
|
||||
Taxonomy, Tooling, Engine, Staff — with comparison ASCII case-insensitive, so
|
||||
no repository is asked to re-spell anything. `surface` is not a layer and this
|
||||
repository's correct declaration is `layer: Staff, role: pep-shaped`, which
|
||||
the ruling notes this repository's own file already reasons from twice.
|
||||
Applied the same day in one commit, in INTENT.md and in layer.yaml, with no
|
||||
argument, exactly as pre-committed; the elimination reasoning that produced
|
||||
`surface` is kept as history in layer.yaml because the ruling's own reversal
|
||||
condition names it. The ruling also held that this repository was NEVER a
|
||||
section 11 non-conformance — section 11 binds estate-authored repositories IN
|
||||
section 4 and this repository has no catalog row, so a run that grades it is
|
||||
over-scoped — and it changed the declaration's FORM: INTENT.md governs,
|
||||
layer.yaml is a derived artifact that must be marked derived and agree, and a
|
||||
declaration carries no standard version, which removes the
|
||||
`standard_version: "0.7"` this repository had flagged. Two things spawn from
|
||||
it rather than close with it: INFD-IN-0007 (the section 3.4 fit, asked once
|
||||
more) and the section 4 catalog-row question, answered YES in
|
||||
docs/section-4-catalog-row.md.
|
||||
description: >-
|
||||
This repository declares `layer: surface` in both INTENT.md frontmatter and
|
||||
layer.yaml. Section 3 of security-layer-model_v0.8.md enumerates four layers —
|
||||
|
|
@ -372,3 +392,53 @@ description: >-
|
|||
docs/gate-house-decision-request-layer-vocabulary.md.
|
||||
state_hub_intake_id: "01a0c14f-17b6-72fb-8951-8c933bd05d6b"
|
||||
```
|
||||
|
||||
## INFD-IN-0007 — How does section 3's determinism cut reach Staff for this repository?
|
||||
|
||||
```yaml
|
||||
id: INFD-IN-0007
|
||||
kind: intake
|
||||
title: How does section 3's determinism cut reach Staff for this repository?
|
||||
status: open
|
||||
origin: residual
|
||||
origin_ref: INFD-IN-0006
|
||||
priority: low
|
||||
owner: gate-house
|
||||
repo: informed-decision
|
||||
lane: blue
|
||||
tags:
|
||||
- decision-request
|
||||
- cross-repo
|
||||
- conformance
|
||||
created: '2026-09-21'
|
||||
updated: '2026-09-21'
|
||||
blocks_nothing: true
|
||||
description: >-
|
||||
GH-DEC-2026-017 closed INFD-IN-0006 and named the value: this repository is
|
||||
`layer: Staff, role: pep-shaped`, and that value is APPLIED — both files
|
||||
changed the day the ruling arrived, unconditionally, as pre-committed. This
|
||||
intake is not a reservation on it and nothing waits on it. INFD-IN-0006 asked
|
||||
one non-conditional question in two parts: WHICH value, and HOW section 3's
|
||||
determinism cut reaches it given GH-DEC-2026-012 R1. The first part is
|
||||
answered squarely. The second is answered by elimination — not an Engine per
|
||||
R1, and nothing else in the four is true, therefore Staff, with ops-mason and
|
||||
ops-warden as the precedent for Staff in the layer column and PEP-shaped in
|
||||
the role column. That gives the value and it does not reach the objection this
|
||||
repository actually raised, which was not about elimination but about fit:
|
||||
section 3.4 defines Staff as interactive and NON-deterministic, working
|
||||
through agentic capability, and says Staff repositories MUST NOT hold state
|
||||
that another layer depends on at runtime. This repository is deterministic by
|
||||
test (the same approval rendered to the same principal in the same role yields
|
||||
the same view_hash), forbids an agent from completing its protected act at all
|
||||
(AGENTS.md: humans bind, agents draft), and holds presentation evidence
|
||||
audit-core depends on. Section 3 makes determinism the primary cut and this
|
||||
repository falls on the deterministic side of it while being assigned the
|
||||
non-deterministic layer. ASK: that the answer be written down for the next
|
||||
repository in this position, which was the stated reason for asking the first
|
||||
time — either that section 3.4's prohibitions bind a catalogued Staff row
|
||||
differently than the elimination that reaches the layer, or that the cut is
|
||||
not what this repository read it to be, or that this is a real tension carried
|
||||
openly. Taking the section 4 row (docs/section-4-catalog-row.md) sharpens it,
|
||||
since a catalogued Staff row is measured against section 3.4 directly. This
|
||||
repository takes Staff either way and is not asking to be moved.
|
||||
```
|
||||
|
|
|
|||
213
layer.yaml
213
layer.yaml
|
|
@ -1,50 +1,160 @@
|
|||
# informed-decision — NetKingdom security layer declaration
|
||||
# informed-decision — NetKingdom security layer declaration (DERIVED)
|
||||
#
|
||||
# Framework: net-kingdom/canon/standards/security-layer-model_v0.7.md
|
||||
# Companion: net-kingdom/SECURITY-COMPANION.md v0.2
|
||||
# THIS FILE DOES NOT GOVERN. GH-DEC-2026-017 §1 (A11) rules that the `layer:`
|
||||
# key in INTENT.md frontmatter IS the declaration, and that an equivalent
|
||||
# declaration file is a DERIVED ARTIFACT which must be marked as derived, must
|
||||
# name INTENT.md as what it derives from, and must agree with it. §11 already
|
||||
# said a repository declares its layer in its own INTENT.md; the file form was
|
||||
# added to give the declaration a machine-readable shape, not a second
|
||||
# authority.
|
||||
#
|
||||
# A disagreement between the two forms is a finding in its own right and must be
|
||||
# reported rather than resolved away by precedence. There is none here: both
|
||||
# files carried `surface` in the same casing before the ruling and both carry
|
||||
# `Staff` after it, changed in one commit.
|
||||
#
|
||||
# Framework: net-kingdom/canon/standards/ — the body, UNVERSIONED on purpose.
|
||||
# Companion: net-kingdom/SECURITY-COMPANION.md
|
||||
# Voice: INTENT.md (this repository's own, per §11 "who must declare")
|
||||
# Ruling: GH-DEC-2026-012 (gate-house@0a1d1d9) answered INFD-IN-0001
|
||||
# Rulings: GH-DEC-2026-012 (INFD-IN-0001) — the shape
|
||||
# GH-DEC-2026-017 (INFD-IN-0006) — the layer value, the form, the version
|
||||
#
|
||||
# Reference form: ops-warden's, adopted by audit-core and kings-guard, with
|
||||
# kings-guard's adaptation for a repository with no Tooling contacts.
|
||||
#
|
||||
# GH-DEC-2026-012 R1 confirmed the SHAPE. The layer is declared here, in this
|
||||
# repository's own voice, because a layer someone else states about you is not
|
||||
# a declaration.
|
||||
# kings-guard's adaptation for a repository with no Tooling contacts. ops-warden
|
||||
# owns that form and is updating it for GH-DEC-2026-017 §1 and §5 in a parallel
|
||||
# session; this file applies the two RULED properties (derived marking, absence
|
||||
# of a standard version) and follows ops-warden's shape for everything else
|
||||
# rather than inventing one.
|
||||
|
||||
schema_version: "0.1"
|
||||
framework: netkingdom-security-layer-model
|
||||
standard_version: "0.7"
|
||||
companion_version: "0.2"
|
||||
repository: informed-decision
|
||||
|
||||
# §3 vocabulary — UNDER RULING, value deliberately unchanged (INFD-IN-0006).
|
||||
# §11 derived-artifact rule + GH-DEC-2026-017 §1.
|
||||
derived: true
|
||||
derives_from: INTENT.md
|
||||
derives_from_note: >-
|
||||
INTENT.md frontmatter governs. This file is regenerated from it by hand and
|
||||
changes in the same commit, so it is derived at the same commit by
|
||||
construction; if the two ever disagree, INTENT.md is this repository's answer
|
||||
and the disagreement is itself a finding.
|
||||
|
||||
# NO standard_version, and no companion_version — GH-DEC-2026-017 §5 (A12).
|
||||
# A layer declaration asserts a STANDING property: which layer this repository
|
||||
# is. That does not change when the standard is revised, and a version here
|
||||
# makes every revision read as though it invalidated the declaration. The field
|
||||
# was flagged by this repository on 2026-09-21 and by access-engine in its own
|
||||
# file; the ruling removes it estate-wide from ops-warden's reference form.
|
||||
# Version-scoped state belongs in the derived conformance record, which must
|
||||
# carry the version it was derived at. `companion_version` is removed on the
|
||||
# same reasoning; it is a version pin in a declaration and nothing in the
|
||||
# ruling's argument distinguishes it. Raised with ops-warden as part of the
|
||||
# reference-form update rather than decided here for the estate.
|
||||
|
||||
# §3 vocabulary — RULED CLOSED, value corrected 2026-09-21 (INFD-IN-0006).
|
||||
#
|
||||
# `surface` denotes the presentation-and-binding tier: the runtime a human
|
||||
# touches, where a decision rendered elsewhere is shown to a named person, that
|
||||
# person binds their identity to the act, and the evidence that the presentation
|
||||
# happened is produced. It was chosen by elimination: GH-DEC-2026-012 R1 ruled
|
||||
# this repository out of Engine and left the layer to it to declare, and each
|
||||
# remaining §3 value is false of it — not Staff (deterministic by construction,
|
||||
# and holding state audit-core depends on at runtime, which §3.4 forbids Staff),
|
||||
# not Tooling (persists nothing another layer reads), not Taxonomy (nothing but
|
||||
# a runtime position).
|
||||
# GH-DEC-2026-017 §3: the §3 vocabulary is CLOSED and has four tokens —
|
||||
# Taxonomy, Tooling, Engine, Staff. Comparison is ASCII case-insensitive (§2 /
|
||||
# A9), so no repository is asked to re-spell anything. `surface` is not among
|
||||
# them: "surface is not a layer... Its correct declaration is layer: Staff, role:
|
||||
# pep-shaped, which its own file already reasons from two ways." ops-mason and
|
||||
# ops-warden are the precedent: Staff in the layer column, PEP-shaped in the
|
||||
# role column.
|
||||
#
|
||||
# §3 of security-layer-model_v0.8.md does not enumerate `surface`, and
|
||||
# flex-auth's validator reads the vocabulary as closed. Surfaced 2026-09-21 by
|
||||
# the custodian's estate-wide sweep extending FLEX-WP-0030; never raised against
|
||||
# this repository before. This repository holds that `surface` names a real tier
|
||||
# §3 does not enumerate, and will change both files the same day without
|
||||
# argument if gate-house rules the vocabulary closed and names the value.
|
||||
# Changing it ahead of the ruling would pre-empt gate-house and destroy the
|
||||
# evidence of what this repository actually concluded.
|
||||
#
|
||||
# Request: docs/gate-house-decision-request-layer-vocabulary.md
|
||||
layer: surface
|
||||
# Changed the same day the ruling was received, in one commit, with no argument
|
||||
# — exactly as this repository pre-committed in
|
||||
# docs/gate-house-decision-request-layer-vocabulary.md §3. `role: pep-shaped` is
|
||||
# untouched and was already right; a role is not a layer (GH-DEC-2026-012 R2,
|
||||
# restated by GH-DEC-2026-017 §3 for the declaration field).
|
||||
layer: Staff
|
||||
role: pep-shaped
|
||||
declared_by: INTENT.md
|
||||
declared_at: "2026-09-09"
|
||||
ruling: GH-DEC-2026-012
|
||||
declared_at: "2026-09-09" # the declaration; the VALUE was corrected 2026-09-21
|
||||
value_corrected_at: "2026-09-21"
|
||||
ruling: GH-DEC-2026-017
|
||||
shape_ruling: GH-DEC-2026-012
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# HISTORY — why `surface` was written. KEPT ON PURPOSE, not erased.
|
||||
#
|
||||
# GH-DEC-2026-017 §3's reversal condition names this reasoning directly, so it
|
||||
# has to remain readable: "§3's closure reverses on an argued amendment to §3,
|
||||
# from a repository that bears a cost under the four-layer cut."
|
||||
#
|
||||
# From 2026-09-09 (commit f6376dd) to 2026-09-21 this file and INTENT.md both
|
||||
# declared `layer: surface`, in the same casing, meaning the
|
||||
# presentation-and-binding tier: the runtime a human touches, where a decision
|
||||
# rendered elsewhere is shown to a named person, that person binds their
|
||||
# identity to the act, and the evidence that the presentation happened is
|
||||
# produced.
|
||||
#
|
||||
# It was chosen by ELIMINATION, not casually. GH-DEC-2026-012 R1 ruled this
|
||||
# repository out of Engine and left the layer to it to declare, and each
|
||||
# remaining §3 value was read as false of it:
|
||||
# - not Staff — deterministic by construction (the same approval rendered to
|
||||
# the same principal in the same role yields the same
|
||||
# view_hash, asserted by test), and holding state audit-core
|
||||
# depends on at runtime, which §3.4 forbids Staff;
|
||||
# - not Tooling — persists nothing another layer reads;
|
||||
# - not Taxonomy— nothing but a runtime position.
|
||||
# Faced with picking a value it believed false or writing the true word and
|
||||
# carrying the finding, this repository wrote the word and asked for a ruling.
|
||||
# It did not ask for §3 to be amended in its favour, and it does not now.
|
||||
#
|
||||
# The ruling reaches Staff by the same elimination from the other end — not an
|
||||
# Engine, and nothing else in the four is true, so Staff — and gives the value,
|
||||
# which is what was asked for and what binds. The part of the elimination above
|
||||
# that the ruling does not address is recorded as INFD-IN-0007 below. It is a
|
||||
# question, not a reservation: the value is applied unconditionally.
|
||||
#
|
||||
# Request: docs/gate-house-decision-request-layer-vocabulary.md
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
# OPEN, non-blocking — INFD-IN-0007.
|
||||
#
|
||||
# §3.4 defines Staff as interactive and non-deterministic, working through
|
||||
# agentic capability, and says Staff repositories MUST NOT hold state that
|
||||
# another layer depends on at runtime. This repository is deterministic by test,
|
||||
# forbids an agent from completing its protected act at all, and holds
|
||||
# presentation evidence audit-core depends on. It is Staff by ruling and the
|
||||
# declaration above says so. What is not yet written down is how §3's
|
||||
# determinism cut reaches a deterministic, non-agentic, evidence-holding
|
||||
# repository — the derivation this repository asked for as a non-condition, and
|
||||
# which the ruling answers as far as the VALUE and not as far as the FIT.
|
||||
# Asked once more of gate-house; no deadline, no dependency, nothing waits on it.
|
||||
section_3_4_fit:
|
||||
status: open
|
||||
intake: INFD-IN-0007
|
||||
blocks_nothing: true
|
||||
|
||||
# §4 catalog membership — ASKED by GH-DEC-2026-017 §4, ANSWERED here.
|
||||
#
|
||||
# gate-house deliberately did not enrol this repository: adding a row is a canon
|
||||
# change, and §11's own rule — a layer stated ABOUT a repository BY another is
|
||||
# not a declaration — applies to catalogue membership at least as strongly. The
|
||||
# question was put, not decided. This repository's answer is YES, with the
|
||||
# obligation that comes with it accepted rather than negotiated.
|
||||
#
|
||||
# Full argument: docs/section-4-catalog-row.md. Carried by gate-house as
|
||||
# GH-WP-0004-T06.
|
||||
catalog:
|
||||
section_4_row_today: false
|
||||
declared_voluntarily: true
|
||||
scope_report: declared-voluntarily-outside-catalog-scope
|
||||
requested: true
|
||||
requested_at: "2026-09-21"
|
||||
requested_row:
|
||||
repository: informed-decision
|
||||
layer: Staff
|
||||
role: pep-shaped
|
||||
evidence_source: "yes"
|
||||
accepts_emission_guarantee: true
|
||||
note: >-
|
||||
Until the row exists, §11 does not bind this repository and a run that
|
||||
grades it is over-scoped (GH-DEC-2026-017 §4). That is the reason to ask for
|
||||
the row, not a reason to avoid it: this repository's presentation evidence
|
||||
is the only record of what a human was shown before binding, and an evidence
|
||||
obligation nobody is allowed to check is the weaker position.
|
||||
|
||||
# §6.4 — informed-decision is PEP-shaped: it causes a protected side effect on
|
||||
# the far side of a decision (recording an approver entry against an approval
|
||||
|
|
@ -160,7 +270,11 @@ binding_digest_relationship:
|
|||
this linkage must be revisited before the widening ships — a fail-closed
|
||||
consumer obeying a cyclic claim denies permanently.
|
||||
|
||||
# §5 applies to Staff. This is a browser-facing surface with no Tooling contact.
|
||||
# §5 applies to Staff, and this repository is now Staff by ruling — so the line
|
||||
# below is the §11 mechanical check landing on it directly rather than by
|
||||
# analogy. It is a browser-facing surface with no Tooling contact, so the check
|
||||
# is total with an empty map and this repository is CONFORMING on §5, not
|
||||
# blocked-clean and not a declared gap.
|
||||
tooling_contacts: []
|
||||
|
||||
# §11 — record non-Tooling clients so the check is total.
|
||||
|
|
@ -202,6 +316,35 @@ evidence:
|
|||
residual: compromised-surface-presents-x-attests-y
|
||||
residual_closed: false
|
||||
custody: same-bound-as-every-other-source # §16 decided: no stronger archive
|
||||
# A10 (GH-DEC-2026-018 §5) — emission is marked, never inferred. This
|
||||
# repository EMITS into the estate's evidence stream; audit-core holds
|
||||
# custody, which is disjoint from emission and discharges nothing of this
|
||||
# emitter's guarantee.
|
||||
emission_guarantee_owed: true
|
||||
event_classes:
|
||||
- id: presentation
|
||||
kind: load-bearing
|
||||
classification: volume
|
||||
note: >-
|
||||
One per render. Classified volume by this repository, which is the
|
||||
classification a conformance run is SUPPLIED and MUST NOT infer.
|
||||
- id: disposition
|
||||
kind: load-bearing
|
||||
classification: rare
|
||||
note: >-
|
||||
The binding act. Rare and security-relevant: heartbeat AND
|
||||
reconciliation, never rate monitoring alone — a quiet month of
|
||||
dispositions is indistinguishable from suppression by rate.
|
||||
- id: stance-application
|
||||
kind: load-bearing
|
||||
classification: rare
|
||||
note: Fail-closed stance applied at a binding attempt. Same form as disposition.
|
||||
emission_guarantee_status: not-yet-declarable
|
||||
emission_guarantee_blocked_on: >-
|
||||
The local transactional outbox (§9.4) and the cadence declaration are
|
||||
designed (docs/evidence-path-design.md §5) and depend on audit-core's
|
||||
AUDIT-WP-0009 T04/T06 and on sender registration. Declared as owed rather
|
||||
than described as operating.
|
||||
note: >-
|
||||
GH-DEC-2026-012 states the residual is not closed in those words, and this
|
||||
repository is not credited with closing it. Same disposition as
|
||||
|
|
|
|||
|
|
@ -197,3 +197,44 @@ def test_classification_coverage_is_dated_and_complete_against_the_axis(stance_d
|
|||
cov = stance_doc["classification_coverage"]
|
||||
assert cov["as_of"]
|
||||
assert cov["axis_values_enumerated"] == cov["axis_values_in_schema"] == len(AXIS_VALUES)
|
||||
|
||||
|
||||
# --------------------------------------------------------------------------
|
||||
# GH-DEC-2026-017 — INTENT.md governs; layer.yaml is derived and must agree;
|
||||
# the vocabulary is closed at four tokens and case-insensitive; no version.
|
||||
# --------------------------------------------------------------------------
|
||||
|
||||
LAYER_VOCABULARY = {"taxonomy", "tooling", "engine", "staff"}
|
||||
|
||||
|
||||
@pytest.fixture(scope="module")
|
||||
def intent_frontmatter() -> dict:
|
||||
text = (ROOT / "INTENT.md").read_text(encoding="utf-8")
|
||||
_, front, _ = text.split("---\n", 2)
|
||||
return yaml.safe_load(front)
|
||||
|
||||
|
||||
def test_intent_declares_a_layer_inside_the_closed_vocabulary(intent_frontmatter):
|
||||
assert intent_frontmatter["layer"].casefold() in LAYER_VOCABULARY
|
||||
|
||||
|
||||
def test_layer_is_staff_as_ruled(intent_frontmatter):
|
||||
assert intent_frontmatter["layer"].casefold() == "staff"
|
||||
assert intent_frontmatter["role"] == "pep-shaped"
|
||||
|
||||
|
||||
def test_sidecar_is_marked_derived_from_intent(layer_doc):
|
||||
assert layer_doc["derived"] is True
|
||||
assert layer_doc["derives_from"] == "INTENT.md"
|
||||
|
||||
|
||||
def test_sidecar_agrees_with_intent(layer_doc, intent_frontmatter):
|
||||
assert layer_doc["layer"].casefold() == intent_frontmatter["layer"].casefold()
|
||||
assert layer_doc["role"] == intent_frontmatter["role"]
|
||||
|
||||
|
||||
def test_declaration_carries_no_standard_version(layer_doc, intent_frontmatter):
|
||||
for doc in (layer_doc, intent_frontmatter):
|
||||
assert "standard_version" not in doc
|
||||
assert "companion_version" not in doc
|
||||
assert "_v0." not in str(intent_frontmatter.get("standard", ""))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue