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
134 lines
2.9 KiB
YAML
134 lines
2.9 KiB
YAML
fluid_revision:
|
|
schema_version: "0.1"
|
|
|
|
id: "R-000221"
|
|
interface_id: "customer-finance-api"
|
|
|
|
revision_number: 22
|
|
parent_revision: "R-000220"
|
|
|
|
state: "CANDIDATE"
|
|
|
|
created_at: "2026-09-04T13:10:00Z"
|
|
created_by:
|
|
type: "daimon"
|
|
id: "fluid-daimon/customer-finance-api"
|
|
|
|
contract:
|
|
type: "openapi"
|
|
version: "3.1"
|
|
artifact_ref: "artifact:openapi/customer-finance-api/r22"
|
|
digest: "sha256:3b1f9c2e7a4d8b6051e2c9f0a7d4b83e15c6f2a9d0b7e4c1836a5f2d9c0b7e41"
|
|
|
|
implementation:
|
|
artifact_ref: "artifact:adapter/customer-finance-api/r22"
|
|
source_ref: "git:9f4c2ab"
|
|
build_ref: "build:8871"
|
|
digest: "sha256:3b1f9c2e7a4d8b6051e2c9f0a7d4b83e15c6f2a9d0b7e4c1836a5f2d9c0b7e41"
|
|
|
|
interface_evolution_intent:
|
|
version: "IEI-7"
|
|
artifact_ref: "artifact:intent/customer-finance-api/IEI-7"
|
|
|
|
originating_hypotheses:
|
|
- "H-000184"
|
|
|
|
backend_requirements: []
|
|
|
|
compatibility:
|
|
class: "BACKWARD_COMPATIBLE"
|
|
breaking_changes: []
|
|
deprecations: []
|
|
supersedes: []
|
|
compatibility_evidence_refs:
|
|
- "test:compat-suite-775"
|
|
|
|
adaptation_classes:
|
|
- "contract"
|
|
|
|
verification:
|
|
status: "PASSED"
|
|
test_refs:
|
|
- "test:unit-12081"
|
|
- "test:contract-8821"
|
|
- "test:security-610"
|
|
- "test:compat-suite-775"
|
|
security_check: "PASSED"
|
|
policy_check: "PASSED"
|
|
|
|
complexity:
|
|
before:
|
|
surface_area: 41
|
|
operation_count: 39
|
|
after:
|
|
surface_area: 42
|
|
operation_count: 40
|
|
delta_score: 0.18
|
|
budget_status: "WITHIN_BUDGET"
|
|
|
|
deployment:
|
|
environments:
|
|
- name: "production"
|
|
started_at: "2026-09-05T08:00:00Z"
|
|
routing_policy_ref: "route-policy:rp-118"
|
|
current_exposure:
|
|
traffic_share: 0.28
|
|
cohorts:
|
|
- "partner-integrations"
|
|
- "coding-agents"
|
|
|
|
fitness:
|
|
baseline_revision: "R-000220"
|
|
measurement_window:
|
|
start: "2026-09-05T08:00:00Z"
|
|
end: null
|
|
metrics:
|
|
requests_per_completed_task:
|
|
baseline: 2.7
|
|
current: 1.15
|
|
target: 1.2
|
|
p95_latency_ms:
|
|
baseline: 300
|
|
current: 302
|
|
guardrail: 315
|
|
error_rate:
|
|
baseline: 0.008
|
|
current: 0.007
|
|
|
|
adoption:
|
|
eligible_consumers: 412
|
|
active_consumers: 119
|
|
adoption_rate: 0.289
|
|
retained_adoption_rate: null
|
|
|
|
economics:
|
|
build_cost: 38.20
|
|
experiment_cost_to_date: 12.40
|
|
currency: "EUR"
|
|
|
|
promotion:
|
|
eligible: true
|
|
recommended_state: "STABLE"
|
|
recommendation_reason: >
|
|
Target fitness reached with no guardrail violations.
|
|
authorized_by: null
|
|
authorized_at: null
|
|
|
|
rollback:
|
|
supported: true
|
|
target_revision: "R-000220"
|
|
procedure_ref: "runbook:rollback-r22"
|
|
|
|
provenance:
|
|
decision_refs:
|
|
- "D-2811"
|
|
experiment_refs:
|
|
- "E-000093"
|
|
telemetry_refs:
|
|
- "telemetry:invoice-pattern-2026w36"
|
|
|
|
audit:
|
|
immutable_event_refs:
|
|
- "EV-990221"
|
|
- "EV-990244"
|
|
- "EV-990281"
|