Files
document-haness/docs/clean-architecture-backend-template/final/evidence/raw/270-messaging-runtime-membership-doc-drift.txt
T
DongHyeonkaandClaude Opus 5 b2963105a8 docs(keycloak-session-store): import the session-storage lab as a new project
The keycloak project ended with four open questions that design could not
settle. A two-VM lab was built to answer them by measurement, and this is
that material: 26 experiments, 125 raw command outputs, 22 browser captures.

Follows the import procedure in README.md.

  source/     the originating repository verbatim — 78 documents, 28 SVGs,
              8 manifests, plus .source-revision recording the commit
  final/      the SSOT
    document.md   729 lines written from the 29 experiment documents, not
                  concatenated: what was predicted, what was measured, and
                  where the measurement itself was wrong
    evidence/raw    125 outputs, flattened to <experiment>__<file> because
                    the originals collided (01-baseline.txt appeared three
                    times) and the audit only globs the top level
    evidence/meta   one per raw file; command and exitCode are null and the
                    README says why rather than inventing them
    evidence/browser  22 captures
    assets/       three diagrams through techviz
    .techviz/     their VizSpecs

A separate project rather than an addition to keycloak: the B-layer answers
that project's four questions, but the A, C and D layers are about cluster
failure, SSO and operations, and one document.md should hold one subject.
The four question records there can point here through 관계.

Recorded rather than papered over: only three of the 28 diagrams were
remade. The repository forbids hand-drawn SVG and forbids titles inside the
canvas; all 28 originals carry both, so converting them is redrawing, not
reformatting. They stay in source/ and the gap is written into the document.

verify-pipeline.py passes. audit-records.py reports no issues.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-04 22:51:59 +09:00

44 lines
2.9 KiB
Plaintext

# revision: 21234e38cdb9a926cbc92bb97a2aee2e4a7d2916
# modules.json last changed by: 21234e38 feat: grpc 기능 deep 구현
## 1. the operator-facing claim, verbatim
> 또한 registry의 messaging leaf는 모두 `runtime_memberships`가 비어 있다. 이는 **build-only /
> incubating** — 어느 composition root에도 편입되지 않았다는 뜻이며, 아래의 등급과는 다른 축이다.
> 등급은 "무엇이 증명되었는가", membership은 "무엇이 실행되는가"를 말한다. 애플리케이션에 배선하려면
> registry를 먼저 바꾸고 `verifyRuntimeModuleMembership`을 통과시켜야 한다. 자세한 규칙은
## 2. re-measured from the registry the claim names
messaging leaves : 25
runtime_memberships empty : 7
runtime_memberships wired : 18
wired -> messaging-core-api, messaging-schema-api, messaging-schema-json, messaging-cloudevents, messaging-policy, messaging-transport-spi, messaging-runtime-core, messaging-observability, messaging-security, messaging-kafka, messaging-rabbit, messaging-reliability-api, messaging-outbox-jdbc-postgresql, messaging-inbox-jdbc-postgresql, messaging-claim-check, messaging-admin-api, messaging-admin-runtime, messaging-spring-boot-starter
empty -> messaging-schema-avro, messaging-schema-protobuf, messaging-kafka-share-experimental, messaging-pulsar-experimental, messaging-nats-experimental, messaging-spring-cloud-stream-bridge, messaging-testkit
## 3. the module policy file the claim defers to already records the correction
## Runtime membership이 비어 있다는 것의 의미
**이 절은 한동안 사실이 아닌 채로 남아 있었다.** "registry의 모든 messaging leaf는
`runtime_memberships`가 비어 있고 따라서 build-only"라고 쓰여 있었는데, 다섯 어댑터 remediation이
`messaging-spring-boot-starter`를 `app-bootstrap` 의존성으로 넣으면서 그 closure 전체가 런타임
classpath에 올라갔다. 정확한 목록은 registry가 소유하므로 여기서 세지 않는다 — 세는 순간 다시
drift한다.
지금 의미는 이렇다:
- 대부분의 leaf는 `runtime_memberships`에 `app-bootstrap`을 갖는다. **배포된 아티팩트가 싣고 있고,
master switch `app.messaging.enabled`로 켜진다.** 기본값은 `false`다.
- 여전히 비어 있는 leaf(experimental transport, 일부 codec, bridge, testkit)만이 build-only /
incubating이다.
- **런타임에 있다는 것과 자격이 증명됐다는 것은 다르다.** Kafka publish 경로만 실브로커 round trip으로
## 4. the assembly edge that made it true
87: implementation project(':messaging:messaging-spring-boot-starter')
## verdict: CONFIRMED DRIFT.
docs/messaging/support-matrix.md:23 states all messaging leaves are unwired.
At this revision 18 of 25 declare runtime_memberships=[app-bootstrap].
src/messaging/CLAUDE.md, which the same paragraph names as the owner of the rule,
already retracts the claim. The two documents disagree at the same revision.