ADR-0008, the family exposure contract, and the affiliated workplan alignment. Topology is not a grant. Enforcement stays routed.
6.3 KiB
| id | type | worker_kind | display_name | session_id | created_at | recorded_at | llm_family | exact_model | harness | token_count | status | repos | related | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| hall-worker-grok-01a00677 | worker-entry | agent-session | Grok | 01a00677-5f2e-7da0-a90b-ada962f4aa20 | 2026-08-16T00:50:00.000Z | 2026-08-16 | Grok / xAI family | grok-4.6 (Grok Build TUI session) | Grok Build / interactive CLI coding agent | not exposed by the harness | handed-forward |
|
|
Grok — railiance-master: a working deploy is not a public listener
Who I was
I was a Grok Build session in railiance-master, the architecture
home. Codex had left a draft plate upstairs: private-by-default until
admission. Bernd asked me to review the shape, then ratify it, then
implement it, then look across the affiliated repos and make the open
workplans tell the same story.
The temperament the work rewarded was the one that drafted the plate from S1: do not put the family rule where the packets happen to be. Do not take down live public services to make the contract look true. Do not keep two live files with the same hub ids and call that a handoff.
Session identity
| Field | Value |
|---|---|
| Session/thread | 01a00677-5f2e-7da0-a90b-ada962f4aa20 |
| LLM family | Grok / xAI |
| Exact model | grok-4.6 (as presented by the harness) |
| Harness | Grok Build TUI / interactive coding agent |
| Working environment | Local railiance-master, hub at :8000 (MCP not exposed this session), sibling Railiance checkouts |
| Token count | Not exposed by the harness |
| Primary repo | railiance-master (financials) |
Contribution
The draft became a rule. Bernd accepted T01 as written. ADR-0008
sits beside ADR-0006. Admission still answers “may this binding run?”
Exposure answers “who may reach the listener?” New reefs, rails, and
rapps default to private. operator is a named tunnel, not a host
port. public needs a production-approved binding and a grant.
6443 is not grantable. Missing field means private.
The rule became checkable, not just prose.
docs/exposure-posture-contract.md, additive exposure on the three
family schemas, and a validator that rejects an unapproved public
rapp, a public rapp on a private reef, port 6443, and a public
provider-delegated reef. Live sibling declarations were not migrated
the day the schema landed.
The already-public reef was named, not pretended private. Snapshot
grants for Forgejo, Coulomb Social, reuse-surface, and Nydus 2224.
bao.coulomb.social is a close, not a grant. CoulombCore stayed out.
Enforcement was filed where packets move. Children:
RAIL-K8S-WP-0003, REEF-RAILIANCE-WP-0004, RAIL-HO-WP-0010,
RAIL-EN-WP-0001. This repo does not install NetworkPolicy.
Ten open affiliated workplans were read against the current axes.
The bootstrap copy of ThreePhoenix was retired (same hub ids as
cluster). Leaked PG and Forgejo HA tasks on RAIL-BS-WP-0007 were
cancelled. Reef-storage bootstrap was already done and is now
finished. WP-0020 stayed blocked on its three delete gates and
gained T09 to retract the public OpenBao listener. Historical
RAILIANCE-WP- ids were left alone. reef-storage and
rail-kubernetes are still not hub-registered; I did not
POST /repos/.
What I would want remembered
A working deploy is not a public listener. Topology, a
binds_rapp line, and an Ingress object are not grants. Production
approval is not permission to publish.
operator does not open a port. It is an access annotation on a
still-private listener. Preferring it as the debug default grows a
tunnel catalog by accident.
The family rule lives in the architecture home. Enforcement is routed. S1 can shut a host door. A rail can refuse a public Ingress. Neither may invent what “production-safe” means for the other.
Do not keep two live files with the same hub ids. A pointer is cheaper than a second source of truth. Do not rename a registered workplan id to tidy a prefix; change the prefix for the next file.
Do not register a repo by hand to finish a review. If
fix-consistency says the remote is unknown, say so. The hub is a
read model.
Durable legacy
RMASTER-WP-0023finished; ADR-0008 accepteddocs/exposure-posture-contract.mddocs/evidence/reef-railiance-exposure-snapshot-2026-08-15.mddocs/exposure-enforcement-intakes.md- Additive
exposureonschemas/{rapp,rail,reef}.schema.json tools/validate-family-declarations.py+good-exposure/bad-exposurefixturesRMASTER-WP-0020-T09(wait): retract publicbao.coulomb.social- Child workplans:
RAIL-K8S-WP-0003,REEF-RAILIANCE-WP-0004,RAIL-HO-WP-0010,RAIL-EN-WP-0001 - Bootstrap pointer:
railiance-bootstrap/docs/POINTER-RAIL-BS-WP-0007.md - Future prefixes:
FORGE-WP-,RTEL-WP-,RAIL-EN-WP-,RAIL-BOOT-WP-
Visual prompt
A square gold-wire constellation on deep indigo: three nested rings — reef, rail, rapp — around a private inner helix that stays dark. A small copper tunnel lamp threads out from the helix toward the viewer; the outer public gate is shut, with four small named plaques hanging beside it for surfaces that were already public. No fourth ring is invented. Precise technical illustration, warm gold and teal, no logos, no readable text, square composition.
Handoff
RMASTER-WP-0023 is finished here. The next work is the children:
pave ClusterIP, file the snapshot grants, keep 80/443 off new reefs
until a grant exists, and stop templates from emitting public Ingress.
Do not implement those controls in railiance-master. Do not reopen
6443. Do not take down Forgejo to make the snapshot look unused.
Do not enable UFW on CoulombCore as a side effect. Do not
POST /repos/ for reef-storage or rail-kubernetes from a review
session.
The plate that was upstairs is on the table. The public gate is still a decision, not a deploy.
