151 lines
5.1 KiB
JSON
151 lines
5.1 KiB
JSON
|
|
{
|
||
|
|
"id": "01K4Q8Z3R7V2N6K9M1P5T8W4XC",
|
||
|
|
"version": 2,
|
||
|
|
"schema_version": "0.2.0",
|
||
|
|
"status": "awaiting_actor",
|
||
|
|
"depth": 2,
|
||
|
|
"title": "Accept ADR-0042: event-sourced billing ledger",
|
||
|
|
"question": "Do you formally accept ADR-0042 as the billing architecture for prod?",
|
||
|
|
"requested_act": "accept",
|
||
|
|
"binding_level": "aes",
|
||
|
|
"locale": "en",
|
||
|
|
"created_at": "2026-09-08T14:02:11Z",
|
||
|
|
"updated_at": "2026-09-09T07:18:44Z",
|
||
|
|
"submitted_at": "2026-09-08T15:10:00Z",
|
||
|
|
"due_at": "2026-09-12T16:00:00Z",
|
||
|
|
"requester": {
|
||
|
|
"id": "01K4Q8A1B2C3D4E5F6G7H8J9K0",
|
||
|
|
"kind": "person",
|
||
|
|
"display_name": "Lea Hoffmann",
|
||
|
|
"role": "staff engineer",
|
||
|
|
"identifiers": [
|
||
|
|
{ "scheme": "email", "value": "lea.hoffmann@example.com" },
|
||
|
|
{ "scheme": "idp:oidc-sub", "value": "auth.example.com|a8f21c" }
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"parties": [
|
||
|
|
{
|
||
|
|
"id": "01K4Q8MANDATE000000000001",
|
||
|
|
"kind": "person",
|
||
|
|
"display_name": "Bernd Worsch",
|
||
|
|
"role": "principal engineer / ADR acceptor",
|
||
|
|
"mandate": {
|
||
|
|
"id": "01K4Q8MANDATE00000000000A",
|
||
|
|
"scope": "Accept architecture decision records for billing and payments",
|
||
|
|
"policy_ref": "https://policy.example.com/adr-acceptance"
|
||
|
|
}
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"brief": "Replace nightly batch invoicing with an append-only event ledger. Replay is the source of truth for invoices. Dual-run for 60 days. Rollback: freeze the ledger and revert the read model to the last nightly snapshot.",
|
||
|
|
"consequences": "On-call owns replay tooling. Finance reporting moves from SQL warehouse tables to a projection job. No in-place updates of posted invoices.",
|
||
|
|
"packet": [
|
||
|
|
{
|
||
|
|
"id": "01K4Q8DOC0000000000000001",
|
||
|
|
"role": "primary",
|
||
|
|
"filename": "ADR-0042.md",
|
||
|
|
"media_type": "text/markdown",
|
||
|
|
"language": "en",
|
||
|
|
"bytes": 12880,
|
||
|
|
"hash": { "alg": "sha256", "hex": "6b1c0f8a9d2e4c7b8a1f0e3d5c6b7a8f9e0d1c2b3a4f5e6d7c8b9a0f1e2d3c4b" },
|
||
|
|
"storage_uri": "s3://decisions/adr/0042.md",
|
||
|
|
"version": 2,
|
||
|
|
"is_to_be_signed": true,
|
||
|
|
"label": "ADR-0042"
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"highlights": [
|
||
|
|
{
|
||
|
|
"id": "01K4Q8HL00000000000000001",
|
||
|
|
"item_id": "01K4Q8DOC0000000000000001",
|
||
|
|
"severity": "critical",
|
||
|
|
"locator": {
|
||
|
|
"kind": "markdown_heading",
|
||
|
|
"heading": "Consequences / rollback"
|
||
|
|
},
|
||
|
|
"title": "Rollback is operationally expensive",
|
||
|
|
"note": "Accepting this ADR commits on-call to ledger freeze drills before go-live.",
|
||
|
|
"required_ack": true,
|
||
|
|
"author_id": "01K4Q8A1B2C3D4E5F6G7H8J9K0",
|
||
|
|
"created_at": "2026-09-08T14:20:00Z",
|
||
|
|
"source": "requester"
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"route": {
|
||
|
|
"mode": "sequential",
|
||
|
|
"steps": [
|
||
|
|
{
|
||
|
|
"id": "01K4Q8STEP000000000000001",
|
||
|
|
"ordinal": 1,
|
||
|
|
"kind": "review",
|
||
|
|
"assignee": {
|
||
|
|
"id": "01K4Q8MANDATE000000000002",
|
||
|
|
"kind": "role",
|
||
|
|
"display_name": "Billing domain reviewer"
|
||
|
|
},
|
||
|
|
"required_verbs": ["acknowledge"],
|
||
|
|
"status": "completed",
|
||
|
|
"completed_at": "2026-09-08T17:40:00Z"
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"id": "01K4Q8STEP000000000000002",
|
||
|
|
"ordinal": 2,
|
||
|
|
"kind": "schlusszeichnung",
|
||
|
|
"assignee": {
|
||
|
|
"id": "01K4Q8MANDATE000000000001",
|
||
|
|
"kind": "person",
|
||
|
|
"display_name": "Bernd Worsch"
|
||
|
|
},
|
||
|
|
"required_verbs": ["accept", "return", "escalate"],
|
||
|
|
"min_binding_level": "aes",
|
||
|
|
"status": "active",
|
||
|
|
"due_at": "2026-09-12T16:00:00Z"
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"current_step_ids": ["01K4Q8STEP000000000000002"]
|
||
|
|
},
|
||
|
|
"thread": [
|
||
|
|
{
|
||
|
|
"id": "01K4Q8MSG0000000000000001",
|
||
|
|
"author_id": "01K4Q8MANDATE000000000002",
|
||
|
|
"body": "Rollback drill date is missing. Acceptable if added before go-live.",
|
||
|
|
"created_at": "2026-09-08T17:39:12Z"
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"presentations": [
|
||
|
|
{
|
||
|
|
"id": "01K4Q8PRES000000000000001",
|
||
|
|
"actor_id": "01K4Q8MANDATE000000000001",
|
||
|
|
"memo_version": 2,
|
||
|
|
"opened_at": "2026-09-09T07:10:00Z",
|
||
|
|
"ui_release": "informed-decision@0.3.1",
|
||
|
|
"locale": "en",
|
||
|
|
"viewport": "brief",
|
||
|
|
"packet_hashes": [
|
||
|
|
{
|
||
|
|
"item_id": "01K4Q8DOC0000000000000001",
|
||
|
|
"hash": { "alg": "sha256", "hex": "6b1c0f8a9d2e4c7b8a1f0e3d5c6b7a8f9e0d1c2b3a4f5e6d7c8b9a0f1e2d3c4b" }
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"highlight_ids": ["01K4Q8HL00000000000000001"],
|
||
|
|
"highlight_set_hash": { "alg": "sha256", "hex": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" },
|
||
|
|
"brief_hash": { "alg": "sha256", "hex": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb" },
|
||
|
|
"view_hash": { "alg": "sha256", "hex": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc" },
|
||
|
|
"acked_highlight_ids": ["01K4Q8HL00000000000000001"],
|
||
|
|
"auth_context": {
|
||
|
|
"method": "passkey",
|
||
|
|
"assurance": "substantial",
|
||
|
|
"idp": "https://auth.example.com"
|
||
|
|
}
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"dispositions": [],
|
||
|
|
"relations": [
|
||
|
|
{ "kind": "supersedes", "to": "01K4Q8OLDADR0000000000001", "note": "Supersedes ADR-0011 batch invoicing" }
|
||
|
|
],
|
||
|
|
"legal": {
|
||
|
|
"form_requirement": "none",
|
||
|
|
"retention_years": 10,
|
||
|
|
"classification": "internal"
|
||
|
|
}
|
||
|
|
}
|