Generate contract types, pin fixtures to spec, add build and ADRs
Some checks failed
ci / build (push) Failing after 1m6s
Some checks failed
ci / build (push) Failing after 1m6s
Completes FLUID-WP-0002. The record types in internal/contract are generated from schemas/ by a dependency-free generator; fixtures transcribed from the spec's worked examples validate against those schemas and round-trip through the generated types with DisallowUnknownFields, so a spec change that misses the schemas fails CI rather than drifting silently. Adds identifier prefix helpers, Makefile, GitHub Actions, and five ADRs recording the Go choice, out-of-process attachment, the wire contract as boundary, the evidence store, and revision identity. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014KmVxhJ35tCo7rE7UnLwWu Assistant: claude-code Assistant-Model: opus Assistant-Process: 1116572@bnt-lap001 Assistant-Session: 8ba9bb93-a72a-4883-b189-2499cce5c400
This commit is contained in:
parent
fbbf56df7a
commit
76912adef8
44 changed files with 4010 additions and 7 deletions
48
internal/contract/event_gen.go
Normal file
48
internal/contract/event_gen.go
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
// Code generated by tools/schemagen. DO NOT EDIT.
|
||||
// Source: schemas/. Regenerate with `make generate`.
|
||||
|
||||
package contract
|
||||
|
||||
type FluidEventEntityType string
|
||||
|
||||
const (
|
||||
FluidEventEntityTypePressure FluidEventEntityType = "pressure"
|
||||
FluidEventEntityTypeHypothesis FluidEventEntityType = "hypothesis"
|
||||
FluidEventEntityTypeRevision FluidEventEntityType = "revision"
|
||||
FluidEventEntityTypeExperiment FluidEventEntityType = "experiment"
|
||||
FluidEventEntityTypeBackendRequirement FluidEventEntityType = "backend_requirement"
|
||||
FluidEventEntityTypeIntent FluidEventEntityType = "intent"
|
||||
FluidEventEntityTypeDecision FluidEventEntityType = "decision"
|
||||
FluidEventEntityTypeRoutingPolicy FluidEventEntityType = "routing_policy"
|
||||
)
|
||||
|
||||
// Valid reports whether v is a defined FluidEventEntityType.
|
||||
func (v FluidEventEntityType) Valid() bool {
|
||||
switch v {
|
||||
case FluidEventEntityTypePressure, FluidEventEntityTypeHypothesis, FluidEventEntityTypeRevision, FluidEventEntityTypeExperiment, FluidEventEntityTypeBackendRequirement, FluidEventEntityTypeIntent, FluidEventEntityTypeDecision, FluidEventEntityTypeRoutingPolicy:
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
type FluidEvent struct {
|
||||
Actor Actor `json:"actor" yaml:"actor"`
|
||||
EntityID string `json:"entity_id" yaml:"entity_id"`
|
||||
EntityType FluidEventEntityType `json:"entity_type" yaml:"entity_type"`
|
||||
EventType string `json:"event_type" yaml:"event_type"`
|
||||
EvidenceRefs []EvidenceRef `json:"evidence_refs,omitempty" yaml:"evidence_refs,omitempty"`
|
||||
ID EventID `json:"id" yaml:"id"`
|
||||
|
||||
// Identifiers of the records this transition drew on.
|
||||
Inputs []string `json:"inputs,omitempty" yaml:"inputs,omitempty"`
|
||||
OccurredAt Timestamp `json:"occurred_at" yaml:"occurred_at"`
|
||||
Reason string `json:"reason,omitempty" yaml:"reason,omitempty"`
|
||||
SchemaVersion SchemaVersion `json:"schema_version" yaml:"schema_version"`
|
||||
}
|
||||
|
||||
// Append-only record of a material lifecycle transition. FLUID evolution is itself
|
||||
// a system behavior that must remain reconstructable
|
||||
// (FluidHypothesisRevisionSchema.md section 15).
|
||||
type EventDocument struct {
|
||||
FluidEvent FluidEvent `json:"fluid_event" yaml:"fluid_event"`
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue