Skip to content

fix(cli): harden meta init scaffold and close the Java CI reactor gate#82

Merged
dmealing merged 3 commits into
mainfrom
fix/ci-reactor-gate-and-init-scaffold
Jun 27, 2026
Merged

fix(cli): harden meta init scaffold and close the Java CI reactor gate#82
dmealing merged 3 commits into
mainfrom
fix/ci-reactor-gate-and-init-scaffold

Conversation

@dmealing

@dmealing dmealing commented Jun 27, 2026

Copy link
Copy Markdown
Member

Intent

Fix three contained GitHub bug issues (#37, #75, #77), all low-risk.

#37 (CI gate): Java CI ran 'mvn install -DskipTests' (compile-only) so the metaobjects-maven-plugin mojo tests never ran in CI — a red full-reactor 'mvn clean install' (the FR-032 ERR_RELATIVE_REF_IN_CANONICAL fixture break, since fixed in a9a962d) sat on main while every PR showed green. The conformance workflow's java-smoke-compile job is renamed java-reactor and now runs 'mvn clean install' (full 14-module reactor WITH tests, ~370 test files). integration-tests (separate workflow, needs Docker) and fatjar-smoke (on-demand) stay out by design, documented in the job comment. This PR's own CI runs the new gate — that IS the test. IMPORTANT human follow-up: branch protection's required-status-checks must add 'conformance / java-reactor' (job renamed) — I can't change branch protection from code.

#75 (codegen hygiene): meta init's scaffolded .metaobjects/.gitignore ignored only .gen-state/, so when a user points a per-target codegen outDir under .metaobjects//src/generated/ the regenerable generated shadow (canonical output lives at the configured outDir) escaped the ignore and got committed by default. Hardened METAOBJECTS_GITIGNORE_BODY with '*/src/generated/' plus '!migrations/'/'!config.json'/'!package.meta.json' re-include guards so the tracked artifacts can never be swept up. codegen-ts emits no framework shadow itself — confirmed — so the gitignore fix is the right layer.

#77 (agent-context UX): meta init scaffolds .claude/skills/metaobjects-* relative to cwd; in a monorepo subdir those skills don't load from a repo-root-launched Claude session (skills are discovered from cwd+ancestors, not down into subdirs). Added findGitRoot()+warnIfMonorepoSubdir() that warns when the init dir is a git subdir, pointing to 'cd && meta init --docs-only --server '; chose the low-risk WARN over auto-relocating skills. Also surfaced result.warnings on the normal init output path (previously dropped, so the warning would've been invisible).

All three are independent. cli bun test green except the pre-existing detectPackageManager/pm-detect env failure (lib/pm-detect.ts, untouched). No production Java code changed (#37 is CI config only).

What Changed

Risk Assessment

✅ Low: Three independent, well-bounded changes (CI config rename, defensive gitignore additions, an advisory-only init warning with tests) with no production-code logic risk and no internal job-dependency breakage; the only follow-up is the human-side branch-protection check rename the author already flagged.

Testing

Ran the cli init unit suite (25/25, including the new #75/#77 tests) and the full cli suite (346 pass; the lone failure is the pre-existing, unrelated pm-detect env test in untouched code). Then demonstrated each fix end-to-end with product-level artifacts: for #37 I executed the exact new gate command mvn clean install on the full 14-module Java reactor (BUILD SUCCESS, every module green, and the previously-skipped maven-plugin mojo tests now run); for #75 I ran real meta init and used real git check-ignore to prove the per-target generated shadow is ignored while migrations/config.json/package.meta.json stay tracked; for #77 I ran meta init from a monorepo subdir (warning shown) and from the repo root (no warning). These are CLI/build surfaces with no UI, so evidence is CLI transcripts and the reactor build log rather than screenshots. Working tree left clean and build outputs removed.

Evidence: #37 — full-reactor gate green + mojo tests now run

[INFO] BUILD SUCCESS — Reactor Summary: 14/14 modules SUCCESS Running com.metaobjects.mojo.MetaDataGeneratorMojoTest Running com.metaobjects.mojo.DocsMojoTest Running com.metaobjects.mojo.MetaDataVerifyMojoTest maven-plugin Tests run: 16, Failures: 0, Errors: 0, Skipped: 0 (+ per-suite counts, all green)

### Issue #37 — new gate command 'mvn clean install' (tests ON) on full 14-module reactor

Gate command in conformance.yml job 'java-reactor':
196:        run: cd server/java && mvn -q clean install

--- BUILD result ---
[INFO] BUILD SUCCESS
[INFO] Total time:  59.527 s

--- Reactor module summary (all SUCCESS) ---
[INFO] Reactor Summary for MetaObjects Core 7.4.3-SNAPSHOT:
[INFO] MetaObjects Core ................................... SUCCESS [  0.150 s]
[INFO] MetaObjects :: MetaData ............................ SUCCESS [  3.891 s]
[INFO] MetaObjects :: Render .............................. SUCCESS [  0.873 s]
[INFO] MetaObjects :: ObjectManager ....................... SUCCESS [  1.138 s]
[INFO] MetaObjects :: Code Generation :: Base ............. SUCCESS [  2.101 s]
[INFO] MetaObjects :: Code Generation :: Mustache ......... SUCCESS [  1.257 s]
[INFO] MetaObjects :: ObjectManager :: RDB ................ SUCCESS [  6.359 s]
[INFO] MetaObjects :: Codegen :: Spring ................... SUCCESS [  3.247 s]
[INFO] MetaObjects :: Metadata Kotlin Facade .............. SUCCESS [  6.178 s]
[INFO] MetaObjects :: Codegen :: Kotlin ................... SUCCESS [ 20.200 s]
[INFO] MetaObjects :: Code Generation :: PlantUML ......... SUCCESS [  1.027 s]
[INFO] MetaObjects :: Maven Plugin ........................ SUCCESS [  3.486 s]
[INFO] MetaObjects :: Core :: Spring Integration .......... SUCCESS [  2.116 s]
[INFO] MetaObjects :: Spring Boot Starter ................. SUCCESS [  0.184 s]
[INFO] MetaObjects :: OMDB Kotlin Facade .................. SUCCESS [  7.238 s]

--- maven-plugin mojo test suites that NOW execute (were skipped under old 'install -DskipTests') ---
Running com.metaobjects.mojo.MetaDataVerifyTemplatesModeTest
Running com.metaobjects.mojo.MetaDataVerifyMojoTest
Running com.metaobjects.mojo.MetaDataGeneratorMojoTest
Running com.metaobjects.mojo.MavenLoaderConfigurationTest
Running com.metaobjects.mojo.DocsMojoTest
Running com.metaobjects.mojo.KotlinGeneratorViaGenSpiTest

--- maven-plugin module aggregate test result ---
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.172 sec
Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 sec
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.168 sec
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.005 sec
Tests run: 16, Failures: 0, Errors: 0, Skipped: 0
Evidence: #37 — full mvn clean install reactor log
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Build Order:
[INFO] 
[INFO] MetaObjects Core                                                   [pom]
[INFO] MetaObjects :: MetaData                                            [jar]
[INFO] MetaObjects :: Render                                              [jar]
[INFO] MetaObjects :: ObjectManager                                       [jar]
[INFO] MetaObjects :: Code Generation :: Base                             [jar]
[INFO] MetaObjects :: Code Generation :: Mustache                         [jar]
[INFO] MetaObjects :: ObjectManager :: RDB                                [jar]
[INFO] MetaObjects :: Codegen :: Spring                                   [jar]
[INFO] MetaObjects :: Metadata Kotlin Facade                              [jar]
[INFO] MetaObjects :: Codegen :: Kotlin                                   [jar]
[INFO] MetaObjects :: Code Generation :: PlantUML                         [jar]
[INFO] MetaObjects :: Maven Plugin                               [maven-plugin]
[INFO] MetaObjects :: Core :: Spring Integration                          [jar]
[INFO] MetaObjects :: Spring Boot Starter                                 [jar]
[INFO] MetaObjects :: OMDB Kotlin Facade                                  [jar]
[INFO] 
[INFO] --------------------< com.metaobjects:metaobjects >---------------------
[INFO] Building MetaObjects Core 7.4.3-SNAPSHOT                          [1/15]
[INFO] --------------------------------[ pom ]---------------------------------
[INFO] 
[INFO] --- maven-clean-plugin:3.4.0:clean (default-clean) @ metaobjects ---
[INFO] 
[INFO] --- jacoco-maven-plugin:0.8.13:prepare-agent (prepare-agent) @ metaobjects ---
[INFO] argLine set to -javaagent:/home/doug/.m2/repository/org/jacoco/org.jacoco.agent/0.8.13/org.jacoco.agent-0.8.13-runtime.jar=destfile=/home/doug/.no-mistakes/worktrees/4a36a911fd68/01KW57NW9J0CX57XRAMZGC4DPD/server/java/target/jacoco.exec,excludes=**/*Test*:**/test/**:**/*Exception*
[INFO] 
[INFO] --- jacoco-maven-plugin:0.8.13:report (report) @ metaobjects ---
[INFO] Skipping JaCoCo execution due to missing execution data file.
[INFO] 
[INFO] --- jacoco-maven-plugin:0.8.13:prepare-agent-integration (prepare-agent-integration) @ metaobjects ---
[INFO] argLine set to -javaagent:/home/doug/.m2/repository/org/jacoco/org.jacoco.agent/0.8.13/org.jacoco.agent-0.8.13-runtime.jar=destfile=/home/doug/.no-mistakes/worktrees/4a36a911fd68/01KW57NW9J0CX57XRAMZGC4DPD/server/java/target/jacoco-it.exec,excludes=**/*Test*:**/test/**:**/*Exception*
[INFO] 
[INFO] --- jacoco-maven-plugin:0.8.13:report-integration (report-integration) @ metaobjects ---
[INFO] Skipping JaCoCo execution due to missing execution data file.
[INFO] 
[INFO] --- jacoco-maven-plugin:0.8.13:report-aggregate (report-aggregate) @ metaobjects ---
[INFO] 
[INFO] --- jacoco-maven-plugin:0.8.13:check (coverage-check) @ metaobjects ---
[INFO] Skipping JaCoCo execution due to missing execution data file:/home/doug/.no-mistakes/worktrees/4a36a911fd68/01KW57NW9J0CX57XRAMZGC4DPD/server/java/target/jacoco.exec
[INFO] 
[INFO] --- maven-install-plugin:3.1.3:install (default-install) @ metaobjects ---
[INFO] Installing /home/doug/.no-mistakes/worktrees/4a36a911fd68/01KW57NW9J0CX57XRAMZGC4DPD/server/java/pom.xml to /home/doug/.m2/repository/com/metaobjects/metaobjects/7.4.3-SNAPSHOT/metaobjects-7.4.3-SNAPSHOT.pom
[INFO] 
[INFO] ----------------< com.metaobjects:metaobjects-metadata >----------------
[INFO] Building MetaObjects :: MetaData 7.4.3-SNAPSHOT                   [2/15]
[INFO] --------------------------------[ jar ]---------------------------------
[WARNING] The artifact xml-apis:xml-apis:jar:2.0.2 has been relocated to xml-apis:xml-apis:jar:1.0.b2
[INFO] 
[INFO] --- maven-clean-plugin:3.4.0:clean (default-clean) @ metaobjects-metadata ---
[INFO] 
[INFO] --- jacoco-maven-plugin:0.8.13:prepare-agent (prepare-agent) @ metaobjects-metadata ---
[INFO] argLine set to -javaagent:/home/doug/.m2/repository/org/jacoco/org.jacoco.agent/0.8.13/org.jacoco.agent-0.8.13-runtime.jar=destfile=/home/doug/.no-mistakes/worktrees/4a36a911fd68/01KW57NW9J0CX57XRAMZGC4DPD/server/java/metadata/target/jacoco.exec,excludes=**/*Test*:**/test/**:**/*Exception*
[INFO] 
[INFO] --- maven-resources-plugin:3.3.1:copy-resources (bundle-spec-metamodel) @ metaobjects-metadata ---
[INFO] Copying 15 resources from ../../../spec/metamodel to target/classes/spec/metamodel
[INFO] 
[INFO] --- maven-resources-plugin:3.3.1:resources (default-resources) @ metaobjects-metadata ---
[INFO] Copying 1 resource from src/main/resources to target/classes
[INFO] 
[INFO] --- maven-compiler-plugin:3.13.0:compile (default-compile) @ metaobjects-metadata ---
[INFO] Recompiling the module because of changed source code.
[INFO] Compiling 217 source files with javac [debug release 21] to target/classes
[INFO] /home/doug/.no-mistakes/worktrees/4a36a911fd68/01KW57NW9J0CX57XRAMZGC4DPD/server/java/metadata/src/main/java/com/metaobjects/registry/MetaDataRegistry.java: Some input files use or override a deprecated API.
[INFO] /home/doug/.no-mistakes/worktrees/4a36a911fd68/01KW57NW9J0CX57XRAMZGC4DPD/server/java/metadata/src/main/java/com/metaobjects/registry/MetaDataRegistry.java: Recompile with -Xlint:deprecation for details.
[INFO] /home/doug/.no-mistakes/worktrees/4a36a911fd68/01KW57NW9J0CX57XRAMZGC4DPD/server/java/metadata/src/main/java/com/metaobjects/attr/MetaAttribute.java: Some input files use unchecked or unsafe operations.
[INFO] /home/doug/.no-mistakes/worktrees/4a36a911fd68/01KW57NW9J0CX57XRAMZGC4DPD/server/java/metadata/src/main/java/com/metaobjects/attr/MetaAttribute.java: Recompile with -Xlint:unchecked for details.
[INFO] 
[INFO] --- maven-resources-plugin:3.3.1:testResources (default-testResources) @ metaobjects-metadata ---
[INFO] Copying 23 resources from src/test/resources to target/test-classes
[INFO] 
[INFO] --- maven-compiler-plugin:3.13.0:testCompile (default-testCompile) @ metaobjects-metadata ---
[INFO] Recompiling the module because of changed dependency.
[INFO] Compiling 132 source files with javac [debug release 21] to target/test-classes
[WARNING] /home/doug/.no-mistakes/worktrees/4a36a911fd68/01KW57NW9J0CX57XRAMZGC4DPD/server/java/metadata/src/test/java/com/metaobjects/registry/InheritanceRobustnessTest.java:[243,15] runFinalization() in java.lang.System has been deprecated and marked for removal
[INFO] /home/doug/.no-mistakes/worktrees/4a36a911fd68/01KW57NW9J0CX57XRAMZGC4DPD/server/java/metadata/src/test/java/com/metaobjects/attr/StringArrayAttributeRegexValidationTest.java: Some input files use or override a deprecated API.
[INFO] /home/doug/.no-mistakes/worktrees/4a36a911fd68/01KW57NW9J0CX57XRAMZGC4DPD/server/java/metadata/src/test/java/com/metaobjects/attr/StringArrayAttributeRegexValidationTest.java: Recompile with -Xlint:deprecation for details.
[INFO] /home/doug/.no-mistakes/worktrees/4a36a911fd68/01KW57NW9J0CX57XRAMZGC4DPD/server/java/metadata/src/test/java/com/metaobjects/io/object/ObjectIOTestBase.java: Some input files use unchecked or unsafe operations.
[INFO] /home/doug/.no-mistakes/worktrees/4a36a911fd68/01KW57NW9J0CX57XRAMZGC4DPD/server/java/metadata/src/test/java/com/metaobjects/io/object/ObjectIOTestBase.java: Recompile with -Xlint:unchecked for details.
[INFO] 
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ metaobjects-metadata ---
[INFO] Surefire report directory: /home/doug/.no-mistakes/worktrees/4a36a911fd68/01KW57NW9J0CX57XRAMZGC4DPD/server/java/metadata/target/surefire-reports

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running com.metaobjects.registry.CreateWithCoreProvidersTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.308 sec
Running com.metaobjects.registry.ComposeRegistryTest
Tests run: 6, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.001 sec
Running com.metaobjects.registry.CamelCaseSubtypeRoundTripTest
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.133 sec
Running com.metaobjects.registry.UnifiedRegistrySchemaI

... [1381507 bytes truncated] ...

rg.jetbrains.dokka.base.DokkaBase/locationProvider by Extension: org.jetbrains.dokka.javadoc.JavadocPlugin/javadocLocationProviderFactory,
	Extension: org.jetbrains.dokka.kotlinAsJava.KotlinAsJavaPlugin/javaSignatureProvider by Extension: org.jetbrains.dokka.javadoc.JavadocPlugin/javadocSignatureProvider,
	Extension: org.jetbrains.dokka.base.DokkaBase/defaultSamplesTransformer by Extension: org.jetbrains.dokka.javadoc.JavadocPlugin/emptySampleTransformer,
	Extension: org.jetbrains.dokka.base.DokkaBase/kotlinSignatureProvider by Extension: org.jetbrains.dokka.kotlinAsJava.KotlinAsJavaPlugin/javaSignatureProvider,
	Extension: org.jetbrains.dokka.base.DokkaBase/documentableToPageTranslator by Extension: org.jetbrains.dokka.kotlinAsJava.KotlinAsJavaPlugin/kotlinAsJavaDocumentableToPageTranslator
]
[INFO] Dokka is performing: documentation for metaobjects-omdb-ktx
[INFO] Validity check
[INFO] Creating documentation models
[INFO] logging: loading modules: [java.se, jdk.accessibility, jdk.attach, jdk.compiler, jdk.dynalink, jdk.httpserver, jdk.incubator.vector, jdk.jartool, jdk.javadoc, jdk.jconsole, jdk.jdi, jdk.jfr, jdk.jshell, jdk.jsobject, jdk.management, jdk.management.jfr, jdk.net, jdk.nio.mapmode, jdk.sctp, jdk.security.auth, jdk.security.jgss, jdk.unsupported, jdk.unsupported.desktop, jdk.xml.dom, java.base, java.compiler, java.datatransfer, java.desktop, java.xml, java.instrument, java.logging, java.management, java.management.rmi, java.rmi, java.naming, java.net.http, java.prefs, java.scripting, java.security.jgss, java.security.sasl, java.sql, java.transaction.xa, java.sql.rowset, java.xml.crypto, jdk.internal.jvmstat, jdk.internal.opt, jdk.zipfs, jdk.management.agent, jdk.jdwp.agent, jdk.internal.ed, jdk.internal.le]
[INFO] Transforming documentation model before merging
[INFO] Merging documentation models
[INFO] Transforming documentation model after merging
[INFO] Creating pages
[INFO] Transforming pages
[INFO] Rendering
[INFO] Running post-actions
[INFO] KotlinAsJava plugin is in Alpha version, use at your own risk, expect bugs and migration issues
[INFO] The Javadoc output format is still in Alpha so you may find bugs and experience migration issues when using it. Successful integration with tools that accept Java's Javadoc HTML as input is not guaranteed. You use it at your own risk.
[INFO] Unused extension points found: ExtensionPoint: org.jetbrains.dokka.base.DokkaBase/immediateHtmlCommandConsumer, ExtensionPoint: org.jetbrains.dokka.base.DokkaBase/htmlPreprocessors, ExtensionPoint: org.jetbrains.dokka.analysis.kotlin.KotlinAnalysisPlugin/externalDocumentableProvider, ExtensionPoint: org.jetbrains.dokka.analysis.kotlin.internal.InternalKotlinAnalysisPlugin/inheritanceBuilder, ExtensionPoint: org.jetbrains.dokka.analysis.kotlin.internal.InternalKotlinAnalysisPlugin/syntheticDocumentableDetector, ExtensionPoint: org.jetbrains.dokka.analysis.kotlin.KotlinAnalysisPlugin/sampleAnalysisEnvironmentCreator, ExtensionPoint: org.jetbrains.dokka.analysis.kotlin.internal.InternalKotlinAnalysisPlugin/documentableSourceLanguageParser
[INFO] Generation completed successfully
[INFO] 
[INFO] 

 === TIME MEASUREMENT ===

[INFO]                            Initializing plugins:   65
[INFO]                                  Validity check:    0
[INFO]                   Creating documentation models: 1129
[INFO] Transforming documentation model before merging:    5
[INFO]                    Merging documentation models:    0
[INFO]  Transforming documentation model after merging:    7
[INFO]                                  Creating pages:   15
[INFO]                              Transforming pages:    1
[INFO]                                       Rendering:  799
[INFO]                            Running post-actions:    7
[INFO] Building jar: /home/doug/.no-mistakes/worktrees/4a36a911fd68/01KW57NW9J0CX57XRAMZGC4DPD/server/java/omdb-ktx/target/metaobjects-omdb-ktx-7.4.3-SNAPSHOT-javadoc.jar
[INFO] 
[INFO] --- jacoco-maven-plugin:0.8.13:prepare-agent-integration (prepare-agent-integration) @ metaobjects-omdb-ktx ---
[INFO] argLine set to -javaagent:/home/doug/.m2/repository/org/jacoco/org.jacoco.agent/0.8.13/org.jacoco.agent-0.8.13-runtime.jar=destfile=/home/doug/.no-mistakes/worktrees/4a36a911fd68/01KW57NW9J0CX57XRAMZGC4DPD/server/java/omdb-ktx/target/jacoco-it.exec,excludes=**/*Test*:**/test/**:**/*Exception*
[INFO] 
[INFO] --- jacoco-maven-plugin:0.8.13:report-integration (report-integration) @ metaobjects-omdb-ktx ---
[INFO] Skipping JaCoCo execution due to missing execution data file.
[INFO] 
[INFO] --- jacoco-maven-plugin:0.8.13:report-aggregate (report-aggregate) @ metaobjects-omdb-ktx ---
[INFO] Loading execution data file /home/doug/.no-mistakes/worktrees/4a36a911fd68/01KW57NW9J0CX57XRAMZGC4DPD/server/java/omdb-ktx/target/jacoco.exec
[INFO] Loading execution data file /home/doug/.no-mistakes/worktrees/4a36a911fd68/01KW57NW9J0CX57XRAMZGC4DPD/server/java/omdb/target/jacoco.exec
[INFO] Loading execution data file /home/doug/.no-mistakes/worktrees/4a36a911fd68/01KW57NW9J0CX57XRAMZGC4DPD/server/java/core-spring/target/jacoco.exec
[INFO] Analyzed bundle 'metaobjects-omdb' with 49 classes
[INFO] Analyzed bundle 'metaobjects-core-spring' with 9 classes
[INFO] 
[INFO] --- jacoco-maven-plugin:0.8.13:check (coverage-check) @ metaobjects-omdb-ktx ---
[INFO] Loading execution data file /home/doug/.no-mistakes/worktrees/4a36a911fd68/01KW57NW9J0CX57XRAMZGC4DPD/server/java/omdb-ktx/target/jacoco.exec
[INFO] Analyzed bundle 'metaobjects-omdb-ktx' with 5 classes
[INFO] All coverage checks have been met.
[INFO] 
[INFO] --- maven-install-plugin:3.1.3:install (default-install) @ metaobjects-omdb-ktx ---
[INFO] Installing /home/doug/.no-mistakes/worktrees/4a36a911fd68/01KW57NW9J0CX57XRAMZGC4DPD/server/java/omdb-ktx/pom.xml to /home/doug/.m2/repository/com/metaobjects/metaobjects-omdb-ktx/7.4.3-SNAPSHOT/metaobjects-omdb-ktx-7.4.3-SNAPSHOT.pom
[INFO] Installing /home/doug/.no-mistakes/worktrees/4a36a911fd68/01KW57NW9J0CX57XRAMZGC4DPD/server/java/omdb-ktx/target/metaobjects-omdb-ktx-7.4.3-SNAPSHOT.jar to /home/doug/.m2/repository/com/metaobjects/metaobjects-omdb-ktx/7.4.3-SNAPSHOT/metaobjects-omdb-ktx-7.4.3-SNAPSHOT.jar
[INFO] Installing /home/doug/.no-mistakes/worktrees/4a36a911fd68/01KW57NW9J0CX57XRAMZGC4DPD/server/java/omdb-ktx/target/metaobjects-omdb-ktx-7.4.3-SNAPSHOT-javadoc.jar to /home/doug/.m2/repository/com/metaobjects/metaobjects-omdb-ktx/7.4.3-SNAPSHOT/metaobjects-omdb-ktx-7.4.3-SNAPSHOT-javadoc.jar
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary for MetaObjects Core 7.4.3-SNAPSHOT:
[INFO] 
[INFO] MetaObjects Core ................................... SUCCESS [  0.150 s]
[INFO] MetaObjects :: MetaData ............................ SUCCESS [  3.891 s]
[INFO] MetaObjects :: Render .............................. SUCCESS [  0.873 s]
[INFO] MetaObjects :: ObjectManager ....................... SUCCESS [  1.138 s]
[INFO] MetaObjects :: Code Generation :: Base ............. SUCCESS [  2.101 s]
[INFO] MetaObjects :: Code Generation :: Mustache ......... SUCCESS [  1.257 s]
[INFO] MetaObjects :: ObjectManager :: RDB ................ SUCCESS [  6.359 s]
[INFO] MetaObjects :: Codegen :: Spring ................... SUCCESS [  3.247 s]
[INFO] MetaObjects :: Metadata Kotlin Facade .............. SUCCESS [  6.178 s]
[INFO] MetaObjects :: Codegen :: Kotlin ................... SUCCESS [ 20.200 s]
[INFO] MetaObjects :: Code Generation :: PlantUML ......... SUCCESS [  1.027 s]
[INFO] MetaObjects :: Maven Plugin ........................ SUCCESS [  3.486 s]
[INFO] MetaObjects :: Core :: Spring Integration .......... SUCCESS [  2.116 s]
[INFO] MetaObjects :: Spring Boot Starter ................. SUCCESS [  0.184 s]
[INFO] MetaObjects :: OMDB Kotlin Facade .................. SUCCESS [  7.238 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  59.527 s
[INFO] Finished at: 2026-06-27T15:15:40-04:00
[INFO] ------------------------------------------------------------------------
Evidence: #75 — scaffolded .gitignore + real git check-ignore

IGNORED -> .metaobjects/database/src/generated/Program.ts TRACKED -> .metaobjects/migrations/0001_init.sql TRACKED -> .metaobjects/config.json TRACKED -> .metaobjects/package.meta.json

### Issue #75 — scaffolded .metaobjects/.gitignore
--- file contents ---
.gen-state/

# Per-target codegen output routed under .metaobjects/<target>/ is regenerable
# (re-run `meta gen`); never commit it. The canonical output is your configured
# outDir, not this shadow.
*/src/generated/

# These ARE meant to be tracked — keep them even if a broad pattern matches.
!migrations/
!config.json
!package.meta.json

--- git status of .metaobjects/ (untracked = will be committed; ignored = safe) ---
A  .metaobjects/.agent-context.json
A  .metaobjects/.gitignore
A  .metaobjects/AGENTS.md
A  .metaobjects/CLAUDE.md
A  .metaobjects/config.json
A  .metaobjects/migrations/0001_init.sql
A  .metaobjects/package.meta.json

--- git check-ignore results (1 line = IGNORED) ---
IGNORED   -> .metaobjects/database/src/generated/Program.ts
TRACKED   -> .metaobjects/migrations/0001_init.sql
TRACKED   -> .metaobjects/config.json
TRACKED   -> .metaobjects/package.meta.json
Evidence: #77 — meta init from monorepo subdir (warning shown)

meta: agent-context skills scaffolded into a monorepo subdir won't be discovered from a root-launched session (Claude Code only walks cwd + ancestors). Scaffold the context at the repo root instead: cd <repo-root> && meta init --docs-only --server typescript

### CASE A: meta init from monorepo SUBDIR (/tmp/tmp.cJSowH39wT/packages/api) — expect WARN

Initialized metaobjects/ + .metaobjects/ + metaobjects.config.ts

Next steps (when later sub-projects ship):
  meta ingest        # propose entities from your existing TS code
  meta gen           # codegen TS targets from entities
  meta docs          # neutral model docs (entity + template pages, incl. linked template source)
  meta serve         # local viewer
  meta install-hooks # register MCP server + Claude Code hooks

meta: agent-context skills scaffolded into a monorepo subdir won't be discovered from a root-launched session (Claude Code only walks cwd + ancestors). Scaffold the context at the repo root instead: cd <repo-root> && meta init --docs-only --server typescript
Evidence: #77 — meta init at git repo root (no warning)
### CASE B: meta init at git repo ROOT — expect NO subdir warning

Initialized metaobjects/ + .metaobjects/ + metaobjects.config.ts

Next steps (when later sub-projects ship):
  meta ingest        # propose entities from your existing TS code
  meta gen           # codegen TS targets from entities
  meta docs          # neutral model docs (entity + template pages, incl. linked template source)
  meta serve         # local viewer
  meta install-hooks # register MCP server + Claude Code hooks

Pipeline

Updates from git push no-mistakes

✅ **intent** - passed

✅ No issues found.

✅ **Rebase** - passed

✅ No issues found.

⚠️ **Review** - 3 infos
  • ℹ️ server/typescript/packages/cli/src/commands/init.ts:42 - The !migrations/, !config.json, !package.meta.json re-include guards in METAOBJECTS_GITIGNORE_BODY are currently no-ops: no positive pattern in the file matches those paths, so the negations protect nothing today. They're also placed before any hypothetical future broad pattern — and gitignore is last-match-wins, so a broad pattern appended after them would still win and override the re-includes. They function as documentation/intent rather than an actual safeguard, which is fine, but the comment's claim that they keep artifacts tracked 'even if a future broad pattern were added' is only true if that pattern is added above the guards.
  • ℹ️ server/typescript/packages/cli/src/commands/init.ts:143 - warnIfMonorepoSubdir fires whenever init runs in any git subdir with skills enabled, regardless of where the user will actually launch Claude. A user who intentionally keeps the project in a subdir and launches sessions from that same subdir will get skills discovered correctly but still sees the advisory warning telling them to re-init at the repo root. It's a benign, deliberate WARN (author chose this over auto-relocating), but it can be a mild false positive for the subdir-launched workflow.
  • ℹ️ server/typescript/packages/cli/src/commands/init.ts:426 - Adding for (const w of result.warnings) log.warn(w) to the normal init path now surfaces ALL previously-dropped warnings (hand-edited-file refresh, orphaned context files, wired-root-import, invalid-config-replaced), not just the meta init scaffolds skills into cwd; in a monorepo subdir they aren't discovered from the repo root #77 monorepo warning. This is a net improvement (those were silently dropped), just noting the behavior change is broader than the meta init scaffolds skills into cwd; in a monorepo subdir they aren't discovered from the repo root #77 fix the comment describes — e.g. the wireRootMemory 'wired ... so the context loads' info message now prints as a warn.
✅ **Test** - passed

✅ No issues found.

  • cd server/typescript/packages/cli &amp;&amp; bun test test/init.test.ts — 25/25 pass incl. new #75/#77 cases
  • bun test (full cli suite) — 346 pass, 1 fail (pre-existing, unrelated detectPackageManager env failure in untouched lib/pm-detect.ts)
  • #37: cd server/java &amp;&amp; mvn clean install (exact new gate command, tests on) — BUILD SUCCESS, all 14 reactor modules green, maven-plugin mojo tests executed
  • #75: ran real meta init then git check-ignore on a simulated per-target shadow + tracked artifacts
  • #77: ran real meta init from a git subdir (warns) and from the git root (no warn)
  • Checked remote CI via gh run list/view — confirmed target commit's CI not yet run
✅ **Document** - passed

✅ No issues found.

✅ **Lint** - passed

✅ No issues found.

✅ **Push** - passed

✅ No issues found.


Closes #37
Closes #75
Closes #77

dmealing and others added 2 commits June 27, 2026 15:07
#37 — Java CI ran `mvn install -DskipTests` (compile-only), so the maven-plugin
mojo tests never ran and a red reactor sat on main while PRs showed green. The
conformance `java-smoke-compile` job → `java-reactor` now runs `mvn clean install`
(full reactor WITH tests, all 14 modules). integration-tests (Docker) + fatjar-smoke
(on-demand) stay out, documented. NOTE: branch protection must add the required
check `conformance / java-reactor` (job renamed).

#75 — meta init's scaffolded .metaobjects/.gitignore ignored only .gen-state/, so a
per-target outDir under .metaobjects/<target>/src/generated/ (regenerable) got
committed by default. Added `*/src/generated/` + re-include guards (!migrations/,
!config.json, !package.meta.json) so the shadow is ignored but tracked artifacts
can't be swept up.

#77 — meta init scaffolds skills relative to cwd; in a monorepo subdir they don't
load from a root-launched session (Claude Code discovers skills from cwd+ancestors,
not down into subdirs). Added a monorepo-subdir warning (findGitRoot) pointing to
`cd <repo-root> && meta init --docs-only --server <lang>`, and surfaced
result.warnings on the init output path (previously dropped).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LuZWKnWzYGVnESijL7uuky
@dmealing
dmealing merged commit c90259c into main Jun 27, 2026
29 checks passed
@dmealing
dmealing deleted the fix/ci-reactor-gate-and-init-scaffold branch June 27, 2026 19:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment