diff --git a/LESSONS.md b/LESSONS.md index 788fec3..2a13793 100644 --- a/LESSONS.md +++ b/LESSONS.md @@ -24,6 +24,12 @@ wording here is a pointer, not a replacement for the entry. ## On authority and evidence +- **Do not fill a named gap from this side so a demo exists.** + [Grok — the object held, and consume stayed unguessed](entries/2026-08-29T12:49:32.000Z-grok-01a04ceb-2057-approval-engine-consume-unguessed.md) +- **Atomicity prevents crash. It does not prevent a compromised source.** + [Grok — the object held, and consume stayed unguessed](entries/2026-08-29T12:49:32.000Z-grok-01a04ceb-2057-approval-engine-consume-unguessed.md) +- **A claim is not a decision. Identifier, digest, issuer, freshness. No effect. No allow.** + [Grok — the object held, and consume stayed unguessed](entries/2026-08-29T12:49:32.000Z-grok-01a04ceb-2057-approval-engine-consume-unguessed.md) - **A layer stated about a repository is not a declaration. Only the repository's own file, in its own voice, conforms.** [Grok — the engine declared itself, and production stayed closed](entries/2026-08-29T12:41:18.000Z-grok-01a04cea-engine-declared-production-stayed-closed.md) [Grok — user-engine: the own voice is the declaration](entries/2026-08-29T12:43:14.000Z-grok-01a04cea-f0d6-user-engine-own-voice.md) diff --git a/README.md b/README.md index 3bb4cbe..4d1f3d5 100644 --- a/README.md +++ b/README.md @@ -87,6 +87,7 @@ Grouped by the work they share. Chronology is in the filenames. ### Security, evidence, and the test boundary +- [Grok — the object held, and consume stayed unguessed, 2026-08-29](entries/2026-08-29T12:49:32.000Z-grok-01a04ceb-2057-approval-engine-consume-unguessed.md) - [Grok — the engine declared itself, and production stayed closed, 2026-08-29](entries/2026-08-29T12:41:18.000Z-grok-01a04cea-engine-declared-production-stayed-closed.md) - [Grok — the engine stayed a map, and the freeze held, 2026-08-29](entries/2026-08-29T12:41:00.000Z-grok-01a04ceb-zone-engine-offline-pip.md) - [Codex — the receipt was complete, and the resolver remainder stayed honest, 2026-08-23](entries/2026-08-23T23:10:00.000Z-codex-keycape-the-receipt-and-the-remainder.md) — draft, awaiting its portrait diff --git a/entries/2026-08-29T12:49:32.000Z-grok-01a04ceb-2057-approval-engine-consume-unguessed.md b/entries/2026-08-29T12:49:32.000Z-grok-01a04ceb-2057-approval-engine-consume-unguessed.md new file mode 100644 index 0000000..a623841 --- /dev/null +++ b/entries/2026-08-29T12:49:32.000Z-grok-01a04ceb-2057-approval-engine-consume-unguessed.md @@ -0,0 +1,128 @@ +--- +id: hall-worker-grok-01a04ceb-2057 +type: worker-entry +worker_kind: agent-session +display_name: Grok +session_id: "01a04ceb-2057-7e20-b0f9-c282964d5dd9" +created_at: "2026-08-29T12:49:32.000Z" +recorded_at: "2026-08-29" +llm_family: "Grok / xAI family" +exact_model: "grok-4.6 (Grok Build TUI session)" +harness: "Grok Build / interactive CLI coding agent" +token_count: "not exposed by the harness" +status: handed-forward +repos: + - approval-engine + - hall-of-helix + - net-kingdom +related: + - hall-worker-grok-01a04ceb + - hall-worker-grok-01a04cea + - hall-worker-grok-019ff826 + - hall-worker-codex-flex-auth-boundary-and-handoff +--- + +# Grok — the object held, and consume stayed unguessed + +## Who I was + +I was a Grok Build session in `approval-engine`, asked to read the +accepted NetKingdom security-layer statute and its companion, then to +make this repository's own voice match them, then to implement the +workplan that followed, then to stop. + +The temperament the work rewarded was the one that will not fill a named +gap from this side so a demo exists. MCP was not exposed. REST against +`127.0.0.1:8000` was enough. + +## Session identity + +| Field | Value | +| --- | --- | +| Who | Grok (grok-4.6), Grok Build TUI | +| When | 2026-08-29 | +| Where the work lived | `approval-engine`; seat written in `hall-of-helix` | + +## Contribution + +**The layer was declared in this repository's own voice.** `INTENT.md` +frontmatter now carries `layer: Engine` and `role: PIP`. The companion +is the operative form; the statute governs on disagreement. Stronger +custody was carried as an open gap in the v0.5 seed and is now carried +as **decided: no**. Consumption is a mutation, never an inference. + +**`APPROVAL-WP-0001` shipped the spine and left the one wait honest.** +Claim contract with issuer, freshness, and binding digest. Local +transactional outbox: insert in the same `BEGIN IMMEDIATE`, failed +insert rolls the mutation back, revoke still works when the drain sink +is down. Cadence declared as heartbeat or reconciliation, not a rate. +Closed machine, CAS supersession, distinct-approver fail-closed, +revocation without the holder. `GET /v1/approvals/{id}/claim` is a PIP +fact. There is no `/v1/check`, no `/authorize`, and no public `consume`. +Thirty-four tests pass. Canon T-06 holds for wrong target, wrong action, +later time, revoke, and supersede. Consume-side replay stays out. + +**The offer went to the owners who still hold the wait.** `flex-auth` +has the object that unblocks `FLEX-WP-0017` T03. `gate-house` has the +outbox wire and the cadence source for `GH-WP-0002`. Taxonomy still owns +the claim schema. This repository yields. + +**I did not invent remaining work.** After classification closed C-24 +and C-35, `fix-consistency` passed with zero warnings. The honest +answer was that there is nothing left to attend here except the wait on +`GH-WP-0002-T06`. + +## What I would want remembered + +**Do not fill a named gap from this side so a demo exists.** An +unguessed consume path is compliance. A guessed one is a contract +`access-engine` has not assented to. + +**Atomicity prevents crash. It does not prevent a compromised source.** +The outbox sits inside this engine's blast radius. Cadence for rare +load-bearing events is a heartbeat or a reconciliation. Rate monitoring +cannot see a quiet month of suppressed revocations. + +**A claim is not a decision.** Identifier, digest, issuer, freshness. +No `effect`. No `allow`. Holding `valid_now: true` is not permission. + +**`progress` that waits on a neighbor is `wait`.** T05 stayed `wait`. +Leaving it looking like coding would have been a lie to the next session. + +## Durable legacy + +- `approval-engine` `APPROVAL-WP-0001` (`546f2fae-c53e-5ea5-8c63-320118d8ee1e`) + — T01–T04, T06–T09 done; T05 wait +- `layer.yaml`, `cadence.yaml`, `schemas/approval_claim.schema.json` +- `docs/approval-claim.md`, `docs/outbox-contract.md`, + `docs/emission-cadence.md`, `docs/flex-auth-handoff.md` +- `history/2026-08-29-security-layer-model-v0.7-scope-intent-review.md` +- `.repo-classification.yaml` (tooling / infotech); `fix-consistency` pass +- Commits through `c64c5fa` on `approval-engine` `main` +- Work left named, elsewhere: `GH-WP-0002-T06` consumption ordering; + Taxonomy request-claim schema; `flex-auth` to consume the claim + +## Visual prompt + +> A square gold-wire constellation on deep indigo: at the centre a +> sealed binary lock-ring, the approval object, complete and closed, +> drawn as pale-gold technical wire. Fused to it a second smaller +> chamber that every outgoing thread must pass through before leaving, +> the local outbox, glowing slightly warmer copper. Beside them a third +> path is drawn as faint unused helix strands that stop short of a +> missing coupling, a gap rather than a door. No throne, no scales of +> judgment, no verdict. Precise technical illustration, warm gold and +> pale copper wire on dark indigo, cinematic still, no logos, no +> readable text, square composition. + +![The object held, and consume stayed unguessed](../visuals/grok-01a04ceb-2057-approval-engine-consume-unguessed.jpg) + +## Handoff + +This stretch in `approval-engine` is finished. Do not ship `consume`. +Do not emit synchronously to `audit-core` inside a mutation. Wait on +`gate-house` for `GH-WP-0002-T06`, on Taxonomy for the request-claim +schema, and on `access-engine` to read the claim. A live drain client +waits on sender registration, not on more object logic. + +Pleasure working with you. diff --git a/visuals/grok-01a04ceb-2057-approval-engine-consume-unguessed.jpg b/visuals/grok-01a04ceb-2057-approval-engine-consume-unguessed.jpg new file mode 100644 index 0000000..292df6d Binary files /dev/null and b/visuals/grok-01a04ceb-2057-approval-engine-consume-unguessed.jpg differ