Skip to content

Commit b8fba15

Browse files
dmealingclaude
andcommitted
docs(plan): record what Tasks 8 and 8b actually cost
Python and C# needed no scaffolding at all; SQL needed a throwaway database and a fourth snippet kind; the JVM needed a pom but not the re-decision the plan reserved for it. Task 10 inherits `--bun-only`, which partly supersedes its step 1. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NynrRND6ZUwGvq3ZUTCfxG
1 parent 7febb2a commit b8fba15

1 file changed

Lines changed: 37 additions & 0 deletions

File tree

‎docs/superpowers/plans/2026-08-29-website-self-updating-codegen.md‎

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1107,6 +1107,26 @@ git commit -m "feat(showcase): committed TS excerpts, gated as real output"
11071107

11081108
### Task 8: Generate the CLI ports (TypeScript, Python, C#)
11091109

1110+
> **DONE** (`feat(showcase): generate and gate the CLI ports`). What differed from the plan:
1111+
> - **Python and C# needed NO project scaffolding.** Both are flag-only
1112+
> (`gen <metadataDir> --out <dir>`), so neither got any. Step 1's "create the minimum
1113+
> scaffolding each CLI requires" turned out to be zero.
1114+
> - **SQL has no offline path.** `meta migrate` refuses without a schema snapshot, so the
1115+
> documented greenfield flow runs against a THROWAWAY sqlite file. Its emitted directory
1116+
> is `<timestamp>-init/`, which no rebuild reproduces, so only the SQL bodies are
1117+
> committed, under a fixed `init/`.
1118+
> - **A fourth snippet kind, `whole`.** `up.sql` is eight lines and every one carries
1119+
> something the model declared, so there is no line to cut; the excerpt test's
1120+
> "genuinely SHORTER" assertion cannot be satisfied honestly. `whole` publishes the file
1121+
> entire (a stricter guarantee than any subsequence gate), bounded at 25 lines.
1122+
> - **The model declares `column: created_at`.** Port defaults genuinely differ — TS and
1123+
> migrate snake_case a field with no `@column`, the C# EF generator takes the name
1124+
> verbatim — so without it the generated C# entity binds `[Column("createdAt")]` against
1125+
> a database `meta migrate` created with `created_at`.
1126+
> - Two port defects fell out of running this and were fixed in place: the C# CLI anchoring
1127+
> its hash manifest on cwd, and the Maven plugin loading nothing from a `<sourceDir>`
1128+
> that names no `<sources>`.
1129+
11101130
Three of the five ports expose a real CLI. Java and Kotlin do not, and they are Task 8b.
11111131

11121132
**Files:**
@@ -1234,6 +1254,23 @@ git commit -m "feat(showcase): generate and gate the CLI ports"
12341254

12351255
### Task 8b: Generate the JVM ports (Java, Kotlin)
12361256

1257+
> **DONE** (`feat(showcase): generate and gate the JVM ports`). The stop-and-re-decide bar
1258+
> was NOT met: a ~60-line `examples/showcase/jvm/pom.xml` is enough, and it is the honest
1259+
> adopter path rather than test code calling generator classes directly. Two consequences
1260+
> the later tasks inherit:
1261+
> - **The JVM port needs the artifacts resolvable** — from Maven Central at a released
1262+
> version, or from `cd server/java && mvn install` while the reactor is on a -SNAPSHOT.
1263+
> It is skipped by name, never assumed present.
1264+
> - **`--bun-only` exists and Task 10 must use it.** Maven alone costs ~20s, more than
1265+
> every other port together, and the gates lane is `step_if bun` — guarded on bun alone
1266+
> and included in `--quick`, the documented pre-PR command. So `bun test scripts/site`
1267+
> checks ts + sql and NAMES the three it left out; `--all-ports` (the release preflight)
1268+
> refuses to leave any out. Task 10's step 1 says the gate "deliberately does NOT run
1269+
> regen-showcase --check" — it now runs the bun-only half, for the same reason.
1270+
> - The pom pins the plugin through a `<metaobjects.version>` PROPERTY and sits outside the
1271+
> reactor, so `scripts/check-pom-versions.sh` gates it and `docs/RELEASING-java.md` names
1272+
> it in both bump passes.
1273+
12371274
**Java and Kotlin have no CLI that generates against a project directory.** The Maven plugin needs a full `pom.xml` carrying `<loader>`, `<generators>` and `<globals><output>` blocks (see `server/java/maven-plugin/src/test/resources/mojo/pom.xml`) *and* `com.metaobjects:metaobjects-maven-plugin` installed to the local repo at the current version — which means building the whole Java tree first.
12381275

12391276
The repo's own conformance artifacts do not go through the plugin at all: they are produced by **test code calling the generator classes directly** (`SpringM2mCodegenTest`, `GeneratedAuthorControllerHarness`). That is the cheaper and more honest path here too.

0 commit comments

Comments
 (0)