v-va*

VA.2026.016 · Floor 0 · service · hall 04

va-sqlGate

collection Exnest VA Collection
accession VA.2026.016
classification Database Gateway · SQL-over-HTTP · Capability Tokens · Go + PostgreSQL
floor Floor 0 · service
status in development
condition prototype · loopback only · token registry · atomic batch · recovery + reconciliation
acquired Oct 2026
revision Rev. A
drawing DWG-016
room 01 curator sheet 01 / 09 · rev Rev. A

“the database stays in its room; only the question travels.”

va-sqlGate exists because a database that must not face the network still has clients that do. It opens one narrow passage: a POST for a single statement, a POST for a batch that either lands entirely or not at all. The origin stays on loopback; the question travels instead of the database.

Authority is never chosen by the caller. Every token in the registry is mapped to exactly one database and one capability set, and the gateway reads that registry per request — so a rotation takes effect on the next statement while an already-authorized request is allowed to finish. Capabilities are deliberately coarse: read-write, or read-write with a small, enumerated slice of DDL.

The late work was not the happy path but the way back. A door that can rotate credentials and change schemas must also be able to recover a damaged state and reconcile what it believes with what is actually there. Those drills were committed last, which is the correct order for an exhibit about restraint.

VA.2026.016

va-sqlGate

Database Gateway · SQL-over-HTTP · Capability Tokens · Go + PostgreSQL


artist / curator
v-va
date
October 23 – 26 2026 (4 days · 3 commits)
status
in development
condition
prototype · loopback only · token registry · atomic batch · recovery + reconciliation
medium
single-statement endpoint · atomic batch endpoint · token-to-database registry · capability scopes · restricted DDL · registry reload per request · token rotation · migration runner · recovery and reconciliation · generated HTTP documentation
endpoints
2
capabilities
crud · restricted ddl
commits
3
built in
4 days
exposure
loopback
runtime
Go
acquired
Oct 2026
revision
Rev. A
origin
built so a private database could be reached without being exposed, Oct 2026
room 02 evolution of this work sheet 02 / 09
23 Oct 2026

The Door

First commit: a Go service with layered modules, validated requests, a token registry, and migrations — one statement, one batch, nothing else.

26 Oct 2026

The Manual

Documentation written for operators rather than developers: quickstart, architecture, HTTP contract, database operations, exposure and security.

26 Oct 2026

The Way Back

Safe recovery and reconciliation added — the gateway can now restore a database and check that its registry, migrations, and reality agree.

concepts — kept & discarded

kept — the database stays local; the statement travels

rejected — letting a token choose its own destination or scope

held — any public exposure until a review says otherwise

archive ref — VA.2026.016/CON

cross ref — timeline fig. 01

room 03 original sketches sheet 03 / 09

curator annotations

on narrowness

a gateway with features is a database wearing a badge.

on tokens

capability is a property of the key, never of the request.

on rotation

a credential change is a promise; the old key failing is the proof.

fig. 01 — VA.2026.016.a the two endpoints protocol· sql · sql/batch · live one statement or one atomic batch — there is no third way to ask.
fig. 02 — VA.2026.016.b the registry configuration· token → database → capability · reloaded per request a token cannot choose its destination; the mapping decides before the caller does.
fig. 03 — VA.2026.016.c the rotated key protocol study· old token refused · drilled rotation is only proven when the previous key fails and the in-flight request still completes.
fig. 04 — VA.2026.016.d the recovery drill checklist· restore · reconcile · documented the least glamorous panel in the building, and the one that keeps the rest standing.
room 04 interface reviews sheet 04 / 09
fig. 05 — VA.2026.016.e one request, many writes render a batch that commits together or leaves no trace — no half-written evenings.
fig. 06 — VA.2026.016.f the generated manual render HTTP documentation served by the service itself, always in step with the routes.
fig. 07 — VA.2026.016.g a database created, then proved render the operator reviews a dry run first; creation verifies the token remotely before it is trusted.
room 05 catalog record sheet 05 / 09
materialssingle-statement endpoint · atomic batch endpoint · token-to-database registry · capability scopes · restricted DDL · registry reload per request · token rotation · migration runner · recovery and reconciliation · generated HTTP documentationdimensionsendpoints — 2 · capabilities — crud · restricted ddl · commits — 3 · built in — 4 days · exposure — loopback · runtime — Go
conditionprototype · loopback only · token registry · atomic batch · recovery + reconciliationacquiredOct 2026
revisionRev. Aarchive locationDWG-016 · floor Floor 0 · service
internal referenceVA.2026.016/Moriginbuilt so a private database could be reached without being exposed, Oct 2026
room 06 the archive sheet 06 / 09

failed experiments

✕ 2026

the missing sandbox

the gateway is not a sandbox for untrusted input. Every client must already be trusted; the door narrows exposure, it does not remove it.

✕ 2026

the worker that never was

the companion jobs module stores metadata only — no worker, no fetcher, no URL fetching. A queue with no consumer is a drawer.

✕ 2026

the open horizon

loopback by design, unfinished for the public. Exposure needs a tunnel, a security review, and a reason — in that order.

draft concepts

  • registry sketch
  • capability table
  • recovery drill notes
  • exposure review checklist

research notes

— SQL over HTTP is cheaper than exposing a port — the attack surface becomes one validated statement, not a protocol.

— reading the registry per request buys instant rotation without sticky connections; the cost is a file read, not a restart.

— an operator-facing dry run prevents the class of mistake that no amount of code review catches.

room 07 architecture · technical drawing DWG-016 · rev Rev. A
DWG-016 · Rev. A · floor plan — va-sqlGate curator annotation — zones 03–05 are load-bearing; the presence layer must remain unshaded.
room 08 design statement sheet 08 / 09

I. Narrow beats clever

Two endpoints and one registry. Every future feature must justify itself against the risk it adds to a service whose only job is to carry statements to a private room.

II. The mapping is the permission

Callers do not negotiate authority. A token arrives already knowing which database it may reach and which verbs it may use; anything outside the mapping is not a policy decision but a refusal.

III. Leave a way back

Rotation and migration are only trustworthy when recovery is rehearsed. An infrastructure exhibit is judged on the day something goes wrong, not the day it was installed.

room 09 related works & future vision sheet 09 / 09

future vision

va-sqlGate stays a side door. The tunnel is drawn, the review is written, and the registry waits — but nothing crosses loopback until someone can explain exactly what would be gained by opening it.