Skip to content

Commit 1082942

Browse files
hyperpolymathclaude
andcommitted
feat: add first seam record (intsoc-branch-newspaper)
Seam record documenting the consent pipeline boundary between intsoc-transactor and branch-newspaper. Validated with seamctl. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent d5c8b44 commit 1082942

2 files changed

Lines changed: 494 additions & 0 deletions

File tree

Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
{
2+
"id": "intsoc-branch-newspaper",
3+
"title": "Intsoc-transactor document pipeline ↔ Branch-newspaper publication",
4+
"status": "draft",
5+
"owners": [
6+
{
7+
"name": "Jonathan D.A. Jewell",
8+
"contact": "j.d.a.jewell@open.ac.uk",
9+
"role": "maintainer"
10+
}
11+
],
12+
"side_a": "intsoc-transactor (document check/fix/submit, Rust)",
13+
"side_b": "branch-newspaper (publication platform, Elixir/Phoenix)",
14+
"boundary_type": "network",
15+
"data_flows": [
16+
{
17+
"name": "validated_document",
18+
"direction": "a_to_b",
19+
"description": "Documents validated and fixed by intsoc-transactor are submitted for publication via branch-newspaper."
20+
},
21+
{
22+
"name": "consent_metadata",
23+
"direction": "a_to_b",
24+
"description": "IPR declarations, author consent status, and publication consent travel with the document."
25+
},
26+
{
27+
"name": "publication_receipt",
28+
"direction": "b_to_a",
29+
"description": "IPFS CID and publication URL returned after successful publication."
30+
}
31+
],
32+
"contract_artifacts": [
33+
{
34+
"path": "seams/records/intsoc-branch-newspaper.seam.json",
35+
"kind": "seam-record",
36+
"version": "0.1.0"
37+
}
38+
],
39+
"compat_policy": {
40+
"strategy": "semver-ish",
41+
"rules": [
42+
"Document submission format changes require coordinated release",
43+
"consent-aware-http middleware (planned) will mediate this seam"
44+
],
45+
"deprecation_window_days": 60
46+
},
47+
"semantic_invariants": [
48+
"Documents must pass all intsoc checks before crossing this seam",
49+
"Consent metadata must be present and valid for publication to proceed",
50+
"IPFS CIDs returned must be verifiable against document content hash"
51+
],
52+
"security_invariants": [
53+
"All transport over HTTPS/TLS",
54+
"No plaintext credentials in document metadata",
55+
"Author identity verified via IPR declaration before publication"
56+
],
57+
"privacy_invariants": [
58+
"Author contact details not published unless explicitly consented",
59+
"Draft documents remain private until publication consent given"
60+
],
61+
"test_vectors": [],
62+
"checks": {
63+
"conformance": {
64+
"status": "todo",
65+
"notes": "Create test documents that pass through full pipeline"
66+
},
67+
"no_hidden_channels": {
68+
"status": "todo",
69+
"notes": "Verify consent-aware-http properly gates all document flows"
70+
},
71+
"evolution": {
72+
"status": "todo",
73+
"notes": "HTTP 430 status code adoption tracking"
74+
}
75+
},
76+
"slo": {
77+
"latency_ms_p95": 5000,
78+
"error_rate_max": 0.01
79+
},
80+
"failure_behavior": {
81+
"timeouts": "Publication timeout at 30s; IPFS pin timeout at 60s",
82+
"retries": "Up to 3 retries with exponential backoff for IPFS failures",
83+
"backpressure": "Queue documents when IPFS node is overloaded",
84+
"idempotency": "Re-submission of same document returns existing CID"
85+
},
86+
"observability": {
87+
"metrics": ["documents_submitted", "publication_duration_ms", "ipfs_pin_failures"],
88+
"logs": {
89+
"required_fields": ["seam_id", "component", "event", "document_id", "consent_status"]
90+
},
91+
"tracing": {
92+
"propagation": ["traceparent"]
93+
}
94+
},
95+
"change_process": {
96+
"required_reviewers": ["@hyperpolymath"],
97+
"gates": ["seamctl validate", "intsoc check"]
98+
},
99+
"rollout_backout": {
100+
"rollout_steps": [
101+
"Deploy consent-aware-http middleware",
102+
"Update intsoc-transactor submit command to use middleware",
103+
"Configure branch-newspaper to accept middleware-verified documents"
104+
],
105+
"backout_steps": [
106+
"Revert to direct submission (bypass middleware)",
107+
"Verify existing publications unaffected"
108+
]
109+
}
110+
}

0 commit comments

Comments
 (0)