Files
document-haness/docs/clean-architecture-backend-template/final/evidence/raw/251-messaging-leaf-registry-and-memberships.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

53 lines
3.2 KiB
Plaintext

# evidence 251 — messaging-leaf-registry-and-memberships
# revision: a24ece9cf797f7ea647e33bf846b115208ed1ba5
# cwd: /shared/codebase/clean-architecture-backend-template/src/messaging
# command: cd /shared/codebase/clean-architecture-backend-template && python3 - <<PY
import json,io,subprocess
d=json.load(io.open("src/config/architecture/modules.json"))
rows=[]
def w(o):
if isinstance(o,dict):
if isinstance(o.get("id"),str) and o.get("gradle_path","").startswith(":messaging:"):
rows.append((o["id"],o["source_path"],o.get("runtime_memberships"),len(o.get("allowed_dependencies") or [])))
for v in o.values(): w(v)
elif isinstance(o,list):
[w(v) for v in o]
w(d)
tot=0
print("leaves:",len(rows))
for i,(a,b,c,n) in enumerate(sorted(rows),1):
f=len(subprocess.run(["git","ls-files",b],capture_output=True,text=True).stdout.split()); tot+=f
print(f"{i:2d} {a:42s} files={f:4d} deps={n:2d} rt={c}")
print("leaf file total:",tot)
print("git ls-files src/messaging:",len(subprocess.run(["git","ls-files","src/messaging"],capture_output=True,text=True).stdout.split()))
PY
# ---- raw output ----
leaves: 25
1 messaging-admin-api files= 28 deps= 2 rt=['app-bootstrap']
2 messaging-admin-runtime files= 20 deps= 6 rt=['app-bootstrap']
3 messaging-claim-check files= 11 deps= 2 rt=['app-bootstrap']
4 messaging-cloudevents files= 6 deps= 2 rt=['app-bootstrap']
5 messaging-core-api files= 95 deps= 0 rt=['app-bootstrap']
6 messaging-inbox-jdbc-postgresql files= 13 deps= 2 rt=['app-bootstrap']
7 messaging-kafka files= 61 deps= 7 rt=['app-bootstrap']
8 messaging-kafka-share-experimental files= 7 deps= 4 rt=[]
9 messaging-nats-experimental files= 11 deps= 7 rt=[]
10 messaging-observability files= 17 deps= 1 rt=['app-bootstrap']
11 messaging-outbox-jdbc-postgresql files= 28 deps= 5 rt=['app-bootstrap']
12 messaging-policy files= 32 deps= 2 rt=['app-bootstrap']
13 messaging-pulsar-experimental files= 12 deps= 7 rt=[]
14 messaging-rabbit files= 33 deps= 7 rt=['app-bootstrap']
15 messaging-reliability-api files= 15 deps= 1 rt=['app-bootstrap']
16 messaging-runtime-core files= 12 deps= 6 rt=['app-bootstrap']
17 messaging-schema-api files= 15 deps= 1 rt=['app-bootstrap']
18 messaging-schema-avro files= 8 deps= 2 rt=[]
19 messaging-schema-json files= 6 deps= 2 rt=['app-bootstrap']
20 messaging-schema-protobuf files= 6 deps= 2 rt=[]
21 messaging-security files= 17 deps= 1 rt=['app-bootstrap']
22 messaging-spring-boot-starter files= 44 deps=17 rt=['app-bootstrap']
23 messaging-spring-cloud-stream-bridge files= 10 deps= 3 rt=[]
24 messaging-testkit files= 23 deps= 4 rt=[]
25 messaging-transport-spi files= 19 deps= 3 rt=['app-bootstrap']
leaf file total: 549
git ls-files src/messaging: 550