Commit 065acdf
Ratified: a stream is a channel, not a source. Drop source.event, model
emission at the surface (api.eventing / operation.event / binding.messaging)
with a payload->projection ref, keep the "becomes a source when treated as
addressable state" escape clause.
Three amendments.
The first matters most, because #212 does not merely delete a catalog entry —
it ratifies a TEST, and a test applies to everything. As proposed the test was a
two-prong AND (addressable by id AND drift-inspectable as a schema), and swept
across all twelve of ADR-0007's paradigms it fails in both directions: prong (b)
would KEEP a schema-registry-backed Kafka topic and KILL source.memory, and it
wrongly maims document, keyValue (Redis), objectStore (CSV), timeSeries
(Prometheus) and graph. Prong (a) alone gives exactly the intended result, so
the ratified doctrine is addressable-state-at-rest, with drift-inspectability
demoted to a per-paradigm verify capability rather than an admission criterion.
Only event's flow kinds fall; eventStore/changelog are the escape clause;
vector and search survive (both have fetch-by-id — similarity is the query path,
not the only read).
Second: removing @ROLE: publish is not docs-only. It is live registered
vocabulary in expected-registry.json, spec/metamodel/db.json and five ports'
embedded definitions, so it rides the #210 consolidation batch rather than
landing standalone. Third: FR-024 §7's channel row references a projection, not
a value.
Investigating the second amendment surfaced a sub-decision worth its own ruling.
@ROLE is load-bearing for exactly one invariant — exactly one primary, and a
primary may not be a read-only @kind. Nothing downstream reads the value:
write-through codegen keys on @kind (isProjection/isWriteThrough), and across
every fixture only primary and replica appear, leaving index/cache/publish/mirror
with zero uses and zero readers. So removing publish is not removing a
capability, it is deleting one of four dead enum members — which leaves no
principle distinguishing the three that stay. Recommended: shrink to
primary | replica and document the rest as reserved-not-registered, the same
treatment ADR-0040 gave index.fulltext/vector/spatial. Recorded as an explicit
option set rather than carried along implicitly with publish.
The doc amendment (ADR-0007/0028/FR-024) lands now — ADR-0035 §1 excludes
reserved-but-unregistered vocabulary from the compat surface, so no quiet-clock
reset. The eventing surface rides FR-024 to 1.1; api.*, operation.* and
binding.* are all unregistered today, so it is additive by construction.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S3msoGxjRMwx94PhKSLDuE
1 parent a052f7b commit 065acdf
1 file changed
Lines changed: 1 addition & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
134 | 134 | | |
135 | 135 | | |
136 | 136 | | |
137 | | - | |
| 137 | + | |
138 | 138 | | |
139 | 139 | | |
140 | 140 | | |
| |||
0 commit comments