Repository navigation
Closed
Labels
area: toolingReusable workflows, Gradle, templates, Renovate, and API tooling.Reusable workflows, Gradle, templates, Renovate, and API tooling.component: buildGradle, npm, packaging, or local build tooling.Gradle, npm, packaging, or local build tooling.component: ciContinuous integration workflow or check behavior.Continuous integration workflow or check behavior.priority: P1High; important and should be handled in the current iteration.High; important and should be handled in the current iteration.type: choreMaintenance work without intended behavior change.Maintenance work without intended behavior change.
Description
Parent
What to build
The model-driven implementation gets a build before it gets any EMF code, so the walking skeleton lands into gates that already hold. This is the EMF scaffold: no EMF, OCL, Xtext, QVTo or Acceleo dependency yet, and no Tycho.
- A Maven reactor inside the coursework directory, run through a Maven wrapper that commits no jar and pins a Maven 3.9 release, on the JDK named by a version file beside it (21, Temurin in CI). Coordinates
dev.jorisjonkers.deploykit.emf, version0.1.0-SNAPSHOT, never published: nothing declares a distribution target. - One module,
parity, holding the first real code the parity contract needs: an RFC 8785 canonical JSON writer, with its tests. The other five modules arrive with their stage. - Gates that match what the estate's JVM repositories actually enforce, plus Java-shaped equivalents where the estate has only Kotlin tooling: the enforcer (Java 21, Maven 3.9, dependency convergence), compiler warnings as errors with every lint on, Spotless with palantir-java-format, JUnit 6 with AssertJ, ArchUnit enforcing the module dependency direction the coursework architecture states, JaCoCo at a line-coverage floor bound to
verify, and PIT mutation testing with a break threshold. Both thresholds are set from the first local measurement and only rise. - Rejected, with the reason recorded: SpotBugs, Error Prone, NullAway, SBOM generation and signing. Nothing in the estate runs them for JVM code, and CodeQL covers the security half.
- A new ADR 0115 in the coursework register records the gate set, the estate audit it came from, and that PIT is scoped to non-OSGi modules if Tycho breaks it.
- A list of Java witnesses for model behaviours (ADR 0114) and the JUnit check that holds it against the root behaviour ledger. It is green while no model row exists yet.
- A Maven-enforced rule list inside the coursework directory, each rule proved by a JUnit fixture.
Root wiring, each piece named in the sunset list:
- An
emfCI job running the reactor'sverify, required byPipeline Complete, writing a one-line test, coverage and mutation summary into the job summary. - CodeQL scans
java-kotlinwith build modenone, triggers on changes to the coursework directory, and ignores build output and generated sources through a config file. - A root test that fails when a workflow calls the Maven wrapper against a POM that does not exist, or the reactor names a module that is not on disk. Two rule-ledger rows: the wiring check, and Java being scanned.
- release-please ignores the coursework directory, so its commits neither bump the npm package nor enter the changelog.
- Renovate groups the
mavenandmaven-wrappermanagers for the coursework directory through a local rule. - Git ignore and attribute entries for Maven, a CODEOWNERS line, a README row, and the gates table in
docs/architecture.mdcounting fifteen. CONTEXT.mddefines EMF scaffold and Walking skeleton. Bootstrap keeps its meaning (the bootstrap set and order).- The coursework architecture document names the scaffold as the change before the walking skeleton, gains a Gates section, and no longer calls coverage and mutation gates out of scope for Java.
Acceptance criteria
- The
emfCI job runs the reactor'sverifyon JDK 21 and is inPipeline Complete's needs. - Weakening a canonical JSON test fails the build on the mutation threshold; removing one fails it on the coverage floor.
- A misformatted Java file fails Spotless, a compiler warning fails the build, and an import against the module direction fails ArchUnit.
- CodeQL reports a
java-kotlinanalysis on a pull request that touches only the coursework directory. - The wiring test fails on a workflow naming a missing POM, and on a reactor module missing from disk.
- A
feat:commit touching only the coursework directory produces no release-please change. - ADR 0115 passes the coursework ADR lint, and
npm run verifypasses.
Blocked by
None (can start immediately).
Metadata
Metadata
Assignees
Labels
area: toolingReusable workflows, Gradle, templates, Renovate, and API tooling.Reusable workflows, Gradle, templates, Renovate, and API tooling.component: buildGradle, npm, packaging, or local build tooling.Gradle, npm, packaging, or local build tooling.component: ciContinuous integration workflow or check behavior.Continuous integration workflow or check behavior.priority: P1High; important and should be handled in the current iteration.High; important and should be handled in the current iteration.type: choreMaintenance work without intended behavior change.Maintenance work without intended behavior change.
Activity