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
215 lines
8.9 KiB
Go
215 lines
8.9 KiB
Go
// Code generated by tools/schemagen. DO NOT EDIT.
|
|
// Source: schemas/. Regenerate with `make generate`.
|
|
|
|
package contract
|
|
|
|
type RevisionContractType string
|
|
|
|
const (
|
|
RevisionContractTypeOpenapi RevisionContractType = "openapi"
|
|
RevisionContractTypeGraphql RevisionContractType = "graphql"
|
|
RevisionContractTypeProtobuf RevisionContractType = "protobuf"
|
|
RevisionContractTypeAsyncapi RevisionContractType = "asyncapi"
|
|
RevisionContractTypeJsonschema RevisionContractType = "jsonschema"
|
|
RevisionContractTypeCustom RevisionContractType = "custom"
|
|
)
|
|
|
|
// Valid reports whether v is a defined RevisionContractType.
|
|
func (v RevisionContractType) Valid() bool {
|
|
switch v {
|
|
case RevisionContractTypeOpenapi, RevisionContractTypeGraphql, RevisionContractTypeProtobuf, RevisionContractTypeAsyncapi, RevisionContractTypeJsonschema, RevisionContractTypeCustom:
|
|
return true
|
|
}
|
|
return false
|
|
}
|
|
|
|
type RevisionContract struct {
|
|
Digest Digest `json:"digest" yaml:"digest"`
|
|
|
|
// Where the contract artifact can be fetched.
|
|
Source string `json:"source,omitempty" yaml:"source,omitempty"`
|
|
Type RevisionContractType `json:"type" yaml:"type"`
|
|
}
|
|
|
|
// Which interface evolution intent governs this revision. Required: a revision with
|
|
// no governing intent cannot be audited.
|
|
type RevisionIntent struct {
|
|
Digest *Digest `json:"digest,omitempty" yaml:"digest,omitempty"`
|
|
Version string `json:"version" yaml:"version"`
|
|
}
|
|
|
|
type RevisionPolicyCompatibility string
|
|
|
|
const (
|
|
RevisionPolicyCompatibilityBackwardCompatible RevisionPolicyCompatibility = "backward_compatible"
|
|
RevisionPolicyCompatibilityForwardCompatible RevisionPolicyCompatibility = "forward_compatible"
|
|
RevisionPolicyCompatibilityAdditive RevisionPolicyCompatibility = "additive"
|
|
RevisionPolicyCompatibilityBehavioralChange RevisionPolicyCompatibility = "behavioral_change"
|
|
RevisionPolicyCompatibilityBreaking RevisionPolicyCompatibility = "breaking"
|
|
RevisionPolicyCompatibilityMigrationOnly RevisionPolicyCompatibility = "migration_only"
|
|
RevisionPolicyCompatibilityInternalOnly RevisionPolicyCompatibility = "internal_only"
|
|
)
|
|
|
|
// Valid reports whether v is a defined RevisionPolicyCompatibility.
|
|
func (v RevisionPolicyCompatibility) Valid() bool {
|
|
switch v {
|
|
case RevisionPolicyCompatibilityBackwardCompatible, RevisionPolicyCompatibilityForwardCompatible, RevisionPolicyCompatibilityAdditive, RevisionPolicyCompatibilityBehavioralChange, RevisionPolicyCompatibilityBreaking, RevisionPolicyCompatibilityMigrationOnly, RevisionPolicyCompatibilityInternalOnly:
|
|
return true
|
|
}
|
|
return false
|
|
}
|
|
|
|
type RevisionPolicyPolicyCheck string
|
|
|
|
const (
|
|
RevisionPolicyPolicyCheckPending RevisionPolicyPolicyCheck = "pending"
|
|
RevisionPolicyPolicyCheckPassed RevisionPolicyPolicyCheck = "passed"
|
|
RevisionPolicyPolicyCheckFailed RevisionPolicyPolicyCheck = "failed"
|
|
)
|
|
|
|
// Valid reports whether v is a defined RevisionPolicyPolicyCheck.
|
|
func (v RevisionPolicyPolicyCheck) Valid() bool {
|
|
switch v {
|
|
case RevisionPolicyPolicyCheckPending, RevisionPolicyPolicyCheckPassed, RevisionPolicyPolicyCheckFailed:
|
|
return true
|
|
}
|
|
return false
|
|
}
|
|
|
|
type RevisionPolicySecurityCheck string
|
|
|
|
const (
|
|
RevisionPolicySecurityCheckPending RevisionPolicySecurityCheck = "pending"
|
|
RevisionPolicySecurityCheckPassed RevisionPolicySecurityCheck = "passed"
|
|
RevisionPolicySecurityCheckFailed RevisionPolicySecurityCheck = "failed"
|
|
)
|
|
|
|
// Valid reports whether v is a defined RevisionPolicySecurityCheck.
|
|
func (v RevisionPolicySecurityCheck) Valid() bool {
|
|
switch v {
|
|
case RevisionPolicySecurityCheckPending, RevisionPolicySecurityCheckPassed, RevisionPolicySecurityCheckFailed:
|
|
return true
|
|
}
|
|
return false
|
|
}
|
|
|
|
type RevisionPolicy struct {
|
|
Compatibility RevisionPolicyCompatibility `json:"compatibility" yaml:"compatibility"`
|
|
PolicyCheck *RevisionPolicyPolicyCheck `json:"policy_check,omitempty" yaml:"policy_check,omitempty"`
|
|
RollbackTo *RevisionID `json:"rollback_to,omitempty" yaml:"rollback_to,omitempty"`
|
|
SecurityCheck RevisionPolicySecurityCheck `json:"security_check" yaml:"security_check"`
|
|
}
|
|
|
|
type RevisionRouting struct {
|
|
// Empty or absent means all cohorts are eligible.
|
|
EligibleCohorts []CohortID `json:"eligible_cohorts,omitempty" yaml:"eligible_cohorts,omitempty"`
|
|
|
|
// Ceiling the router enforces regardless of what a routing policy asks for.
|
|
MaxTrafficShare *UnitInterval `json:"max_traffic_share,omitempty" yaml:"max_traffic_share,omitempty"`
|
|
}
|
|
|
|
type RevisionRuntimeCircuitBreaker struct {
|
|
FailureThreshold *int64 `json:"failure_threshold,omitempty" yaml:"failure_threshold,omitempty"`
|
|
ResetAfterMS *int64 `json:"reset_after_ms,omitempty" yaml:"reset_after_ms,omitempty"`
|
|
}
|
|
|
|
type RevisionRuntimeRetry struct {
|
|
BackoffMS *int64 `json:"backoff_ms,omitempty" yaml:"backoff_ms,omitempty"`
|
|
MaxAttempts *int64 `json:"max_attempts,omitempty" yaml:"max_attempts,omitempty"`
|
|
RetryOn []string `json:"retry_on,omitempty" yaml:"retry_on,omitempty"`
|
|
}
|
|
|
|
// Out-of-process attachment: the adapter is an upstream reached over the network,
|
|
// so it may be implemented in any language.
|
|
type RevisionRuntime struct {
|
|
CircuitBreaker *RevisionRuntimeCircuitBreaker `json:"circuit_breaker,omitempty" yaml:"circuit_breaker,omitempty"`
|
|
Digest *Digest `json:"digest,omitempty" yaml:"digest,omitempty"`
|
|
Image string `json:"image,omitempty" yaml:"image,omitempty"`
|
|
Retry *RevisionRuntimeRetry `json:"retry,omitempty" yaml:"retry,omitempty"`
|
|
TimeoutMS *int64 `json:"timeout_ms,omitempty" yaml:"timeout_ms,omitempty"`
|
|
|
|
// Base URL of the adapter process serving this revision.
|
|
Upstream string `json:"upstream" yaml:"upstream"`
|
|
}
|
|
|
|
type RevisionSignatureAlgorithm string
|
|
|
|
const (
|
|
RevisionSignatureAlgorithmEd25519 RevisionSignatureAlgorithm = "ed25519"
|
|
)
|
|
|
|
// Valid reports whether v is a defined RevisionSignatureAlgorithm.
|
|
func (v RevisionSignatureAlgorithm) Valid() bool {
|
|
switch v {
|
|
case RevisionSignatureAlgorithmEd25519:
|
|
return true
|
|
}
|
|
return false
|
|
}
|
|
|
|
// The router accepts only signed published descriptors (ArchitectureBlueprint.md
|
|
// section 35). The signature covers the canonical form of this document with the
|
|
// signature member removed.
|
|
type RevisionSignature struct {
|
|
Algorithm RevisionSignatureAlgorithm `json:"algorithm" yaml:"algorithm"`
|
|
KeyID string `json:"key_id" yaml:"key_id"`
|
|
SignedAt *Timestamp `json:"signed_at,omitempty" yaml:"signed_at,omitempty"`
|
|
Value string `json:"value" yaml:"value"`
|
|
}
|
|
|
|
// The router refuses to route to created, failed or retired revisions
|
|
// (ArchitectureBlueprint.md section 5.3).
|
|
type RevisionState string
|
|
|
|
const (
|
|
RevisionStateCreated RevisionState = "created"
|
|
RevisionStateVerified RevisionState = "verified"
|
|
RevisionStateExperiment RevisionState = "experiment"
|
|
RevisionStateCandidate RevisionState = "candidate"
|
|
RevisionStateStable RevisionState = "stable"
|
|
RevisionStateDeprecated RevisionState = "deprecated"
|
|
RevisionStateRetired RevisionState = "retired"
|
|
)
|
|
|
|
// Valid reports whether v is a defined RevisionState.
|
|
func (v RevisionState) Valid() bool {
|
|
switch v {
|
|
case RevisionStateCreated, RevisionStateVerified, RevisionStateExperiment, RevisionStateCandidate, RevisionStateStable, RevisionStateDeprecated, RevisionStateRetired:
|
|
return true
|
|
}
|
|
return false
|
|
}
|
|
|
|
type Revision struct {
|
|
Contract RevisionContract `json:"contract" yaml:"contract"`
|
|
ID RevisionID `json:"id" yaml:"id"`
|
|
|
|
// Which interface evolution intent governs this revision. Required: a revision
|
|
// with no governing intent cannot be audited.
|
|
Intent RevisionIntent `json:"intent" yaml:"intent"`
|
|
Interface InterfaceID `json:"interface" yaml:"interface"`
|
|
Policy RevisionPolicy `json:"policy" yaml:"policy"`
|
|
Routing *RevisionRouting `json:"routing,omitempty" yaml:"routing,omitempty"`
|
|
|
|
// Out-of-process attachment: the adapter is an upstream reached over the network,
|
|
// so it may be implemented in any language.
|
|
Runtime RevisionRuntime `json:"runtime" yaml:"runtime"`
|
|
SchemaVersion SchemaVersion `json:"schema_version" yaml:"schema_version"`
|
|
|
|
// The router accepts only signed published descriptors (ArchitectureBlueprint.md
|
|
// section 35). The signature covers the canonical form of this document with the
|
|
// signature member removed.
|
|
Signature *RevisionSignature `json:"signature,omitempty" yaml:"signature,omitempty"`
|
|
|
|
// The router refuses to route to created, failed or retired revisions
|
|
// (ArchitectureBlueprint.md section 5.3).
|
|
State RevisionState `json:"state" yaml:"state"`
|
|
}
|
|
|
|
// The runtime-facing projection of a revision, deliberately small enough to be
|
|
// consumed deterministically by infrastructure (ArchitectureBlueprint.md section
|
|
// 36). This is a wire artifact: the gateway must be able to read it without any
|
|
// fluid-core library.
|
|
type RevisionDescriptorDocument struct {
|
|
Revision Revision `json:"revision" yaml:"revision"`
|
|
}
|