fluid-core/workplans/FLUID-WP-0002-foundations-and-wire-contract.md
repo-manager 0aab793a3a repo.work.assign_missing_identifiers
source: repo-manager
reason: deterministic projection registration

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 1116572@bnt-lap001
Assistant-Session: 8ba9bb93-a72a-4883-b189-2499cce5c400
2026-09-04 01:52:06 +02:00

117 lines
3.2 KiB
Markdown

---
id: FLUID-WP-0002
type: workplan
title: "FLUID foundations and the wire contract"
domain: infotech
repo: fluid-core
status: active
owner: worsch
topic_slug: fluid-core
created: "2026-09-04"
updated: "2026-09-04"
planning_priority: high
planning_order: 1
related_repos:
- fluid-telegram
- fluid-x
- fluid-substack
state_hub_workstream_id: "bd8c4140-9c82-500b-a52b-13f275411289"
---
# FLUID-WP-0002 - Foundations and the wire contract
Establish the boundary before any code depends on it. fluid-core integrates
out of process, so its contract is a set of on-the-wire artifacts, not a Go
API. Everything downstream assumes these schemas are stable.
Reference: `spec/FluidHypothesisRevisionSchema.md`, `spec/ArchitectureBlueprint.md`
§36 (revision descriptor), §17 (routing policy), §44 (control APIs).
## T01 - Repository scaffold and INTENT
```task
id: FLUID-WP-0002-T01
status: done
priority: high
state_hub_task_id: "bf47b3dd-9ca0-5ce2-9d9d-22dabab5f89c"
```
Go module, directory tree per the plan, `INTENT.md` declaring the wire-contract
boundary and the four invariants this repo defends hardest.
## T02 - Record schemas
```task
id: FLUID-WP-0002-T02
status: todo
priority: high
state_hub_task_id: "5cf83eeb-819f-5972-a660-aa9f5345355f"
```
JSON Schema for `fluid_pressure`, `fluid_hypothesis`, `fluid_revision`,
`fluid_experiment`, `fluid_event`, `fluid_backend_requirement` and the feedback
record. Transcribe field names faithfully from the schema document — they are
the interop surface, per its §1.
## T03 - Descriptor and policy schemas
```task
id: FLUID-WP-0002-T03
status: todo
priority: high
state_hub_task_id: "da22bde0-5138-56db-a26d-f63a3195d6ed"
```
JSON Schema for the revision descriptor (Blueprint §36) and the routing policy
(Blueprint §17). These two are what the gateway consumes at runtime and must be
readable without any fluid-core code.
## T04 - Type generation
```task
id: FLUID-WP-0002-T04
status: todo
priority: high
state_hub_task_id: "ba9933b2-0b92-55c4-96b0-b46c955e25a6"
```
Generate Go types into `internal/contract/` from `schemas/`. Hand-written record
types are prohibited — drift between spec and implementation must fail CI.
## T05 - Spec examples as fixtures
```task
id: FLUID-WP-0002-T05
status: todo
priority: high
state_hub_task_id: "f835faf7-98f4-514f-937d-83b86b4b44a5"
```
Extract the YAML examples embedded in the spec documents and validate them
against the schemas in CI. If the spec changes and the schema does not, the
build breaks.
## T06 - Build, CI and identifier conventions
```task
id: FLUID-WP-0002-T06
status: todo
priority: medium
state_hub_task_id: "2b0e42e0-c6ff-534e-8de4-3ff333af9e78"
```
Makefile, GitHub Actions (build, vet, test, schema validation), and the
identifier prefix helpers from schema doc §16: `H- R- E- P- BR- D- EV- F- C-`.
## T07 - Architecture decision records
```task
id: FLUID-WP-0002-T07
status: todo
priority: medium
state_hub_task_id: "83b10a34-08e3-5ceb-81f4-f148a3d87183"
```
ADRs for: Go as the implementation language; out-of-process attachment; the
wire contract as boundary; SQLite to Postgres evidence store; and the revision
identity scheme, which Blueprint §54 leaves deliberately open.