@@ -55,6 +55,35 @@ the key-*name* list from each owning module.
5555 snapshot + disjoint tests already guard loudly (no silent-bug risk). Not worth
5656 it at this size and stage.
5757
58+ ## Reopened 2026-07-15 — reaffirmed
59+
60+ Reopened at the maintainer's request during an architecture review. The registry
61+ question was handed to ** two independent reviewers, each blind to this decision**
62+ — one mandated to build the strongest case * for* a structural-key registry, one
63+ * against* . They converged on this decision's holding: a universal registry is a
64+ false seam, and ` secrets ` /` configs ` (` stores.py ` ), ` dns ` /` sysctls ` /` extra_hosts `
65+ (` pod.py ` ), ` deploy ` (` resources.py ` ), ` depends_on ` /` networks ` /` hostname ` /
66+ ` container_name ` (` graph.py ` ), and the positional ` command ` /` entrypoint ` /` image `
67+ argv keys all belong in their owning module. The clinching disproof of the
68+ universal case: a single ` entrypoint ` value emits tokens on * both sides* of the
69+ ` image ` token and a string ` entrypoint ` silently cancels ` command `
70+ (` emit.py:199-207 ` ) — no ` emit(value) -> list[Token] ` slot can express that.
71+
72+ The reopen surfaced exactly one crack, and it does ** not** reach this rejection.
73+ Four per-service keys have no owning noun — ` environment ` , ` env_file ` , ` volumes ` ,
74+ ` tmpfs ` — and of those, ` environment ` is provably ` _map("-e") ` (same
75+ ` validate_map ` , same ` ["-e", Expand(str(pair))] ` emit loop as ` labels ` /
76+ ` annotations ` , same ` pairs_to_mapping ` map-merge), fitting the * existing*
77+ ` emit(value) ` signature at zero interface cost. ` tmpfs ` is nearly ` _list("--tmpfs") ` .
78+ But ` env_file ` /` volumes ` need ` project_dir ` , which would force widening
79+ ` KeySpec.emit ` to ` emit(value, ctx) ` across all ~ 29 current keys to house two —
80+ a real cost this decision still declines. So the strongest "reopen" collapses
81+ from * "structural-key registry"* all the way down to * "optionally move
82+ ` environment ` (± ` tmpfs ` ) into ` SERVICE_KEYS ` "* , which is this decision's own
83+ narrow revisit-trigger #2 , not an overturn of it. That narrow move was examined
84+ and left unscheduled (same category as the option-2 single-sourcing declined
85+ above); it is recorded here so a third review does not re-derive it from scratch.
86+
5887## Revisit trigger
5988
6089Reopen — and when reopening, reach for the ** narrow name single-sourcing** , not
0 commit comments