Skip to content

Commit 5e4e50d

Browse files
dmealingclaude
andcommitted
docs(plan): mark the projection/payload vocab batch complete
Records the five deliberate deviations from the plan as executed -- Unit A growing to include Java on a falsified premise, the third breaking change found in final review, Release 2 cut as MINOR rather than the directed PATCH, the nested-target rule landing as one loader rule instead of per-port filters, and the runner.ts guard re-keyed to hasAnyRdbSource. Also records the batch's recurring failure mode and its five instances, because the pattern is more useful than any of them individually: documentation asserting removed behavior as current, each surviving a sweep narrower than the prose required. The worst was a skill shipped in @metaobjectsdev/sdk that instructed agents to author metadata this batch made un-loadable -- it survived four sweeps because they grepped `origin.aggregate` and the file wrote `aggregate` bare. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01S3msoGxjRMwx94PhKSLDuE
1 parent 589c1ea commit 5e4e50d

1 file changed

Lines changed: 27 additions & 1 deletion

File tree

docs/superpowers/plans/2026-08-06-projection-payload-vocab-batch.md

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,33 @@
1515
- [x] Unit A (#270) — Java honors declared `@isArray` on plain scalars (`34705ce9`)
1616
- [x] Unit A (#270) — docs closure (CLAUDE.md open question, KNOWN_GAPS, roadmap) + doc-truth wave (`608f4217`)
1717
- [x] Unit A — independent review (review → adjudication → 2 fix rounds → final review → re-review): **SHIP**
18-
- [ ] Unit A — merge to `main` + local-ci green
18+
- [x] Unit A — merge to `main` + local-ci green — **PR #274, `18792e52`, 9/9 green**
19+
- [x] **Release 1 — `0.20.16` / `7.20.16` coordinated PATCH — SHIPPED to all four registries**
20+
- [x] Unit B — doctrine docs amendment — **verified already landed** (`91de3a85`, `d6e250f3`); roadmap marked with Unit C
21+
- [x] Unit C — `@role` shrink to `primary | replica` (+ closes #212) — `93955c35`, `cb991a25`
22+
- [x] Unit D — #210: assembly origins off `object.value`; `@payloadRef`/`@responseRef` widened — `6c73e77a`, `e0e561ab`, `9c4fbadd`
23+
- [x] Fixture-count + docs propagation — **262 → 270** (counted, not computed: the plan's 269 missed the nested-target fixture)
24+
- [x] Batch (Units C+D) — independent review + merge to `main` + local-ci green — **PR #276, `18fb4bbe`, 9/9 green**
25+
- [x] **Release 2 — `0.21.0` / `7.21.0` coordinated MINOR — SHIPPED to all four registries**
26+
- [x] Issues closed with receipts: **#270, #212, #210, #271** (#271 discharged — premise falsified by recon)
27+
28+
## OUTCOME — batch complete 2026-08-08
29+
30+
**Deviations from this plan, all deliberate and recorded:**
31+
1. **Unit A grew to include Java.** This plan recorded TS/C#/**Java** as origin-blind reference ports. False for Java — `SpringPayloadGenerator` carried the identical origin dispatch. Root cause: raw NUL bytes made the file test as *binary*, so the environment's `-I` grep wrapper silently returned nothing. Maintainer ruled fix-Java-too. See the NOTE on A's ruling above.
32+
2. **Three breaking changes, not two.** Final review found the nested-target rule (`field.object @objectRef` must target an `object.value`) is a genuine third break — TS/C#/Python previously accepted a non-value target *and emitted from it*.
33+
3. **Release 2 cut as MINOR, not the directed PATCH.** Pre-1.0 `^0.20.x` resolves `<0.21.0`, so a patch would be auto-adopted on a routine `npm update` and break adopters with no deliberate action. Maintainer left the call to the executor.
34+
4. **§4b (payload nested legal-target-set) implemented** as one fail-closed loader rule across four loaders, per the adjudication that overturned a per-port codegen filter.
35+
5. **`runner.ts` `dbImport`/`dialect` guard re-keyed** to `hasAnyRdbSource` — the release gate caught that it would false-positive on the very sourceless projections this release recommends.
36+
37+
**The batch's recurring failure mode, five instances:** documentation asserting removed behavior as
38+
current, each surviving a sweep that was slightly narrower than the prose required — a false roadmap
39+
claim; a Java error message listing the rejected value as allowed (grepped constant *names*, not
40+
values); an ADR Consequences bullet contradicting its own amendment 35 lines above (grepped subtype
41+
names, not prose); **a skill shipped in `@metaobjectsdev/sdk` instructing agents to author
42+
now-illegal metadata** (grepped `origin.aggregate`; the file wrote `aggregate` bare); and `CLAUDE.md`
43+
listing 2 of 5 origin subtypes (never swept at all). **Lesson: sweep member VALUES as free text,
44+
spelling-agnostic, and read the hits rather than counting them.**
1945
- [ ] Release 1 — `0.20.16` / `7.20.16` coordinated PATCH (checkpoint with the maintainer first)
2046
- [ ] Unit B — doctrine docs amendment (ADR-0007 / FR-024 §7) — docs-only
2147
- [x] Unit C — Gate 0 adopter scan — **CLEARED 2026-08-06** (see C.0)

0 commit comments

Comments
 (0)