diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a29307e..50bfd4e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -103,7 +103,7 @@ jobs: node scripts/render-cv-reference.mjs revision-002 skill-fixtures: - name: skill-fixtures (GraphCompose 1.6.7 via Maven Central) + name: skill-fixtures (GraphCompose 1.7.0 via Maven Central) runs-on: ubuntu-latest strategy: fail-fast: false diff --git a/AGENTS.md b/AGENTS.md index fe550aa..a381839 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -10,7 +10,7 @@ GraphCompose AI Template Flow turns a visual document reference (a PNG screenshot of a CV, invoice, proposal, cover letter, report, brochure, datasheet — ANY single-page or multi-page document GraphCompose primitives can express) into a maintainable Java -template that targets GraphCompose 1.6.7 — with a strict visual +template that targets GraphCompose 1.7.0 — with a strict visual parity contract, a typed data spec the user can edit without touching Java, a per-revision asset bundle (Iconify icons + Google Fonts), a clean and a debug render, and a publish-quality bundle @@ -23,7 +23,7 @@ change creates a new revision; nothing is overwritten. **Document-kind contract.** The four canonical upstream surfaces are `cv`, `coverletter`, `invoice`, `proposal`, with three distinct -generations as of GraphCompose 1.6.7: +generations as of GraphCompose 1.7.0: - `cv` — V2 layered (data → theme → components → widgets → preset orchestrator). @@ -204,7 +204,8 @@ docs/ long-form reference skills/ versioned skill packs skill-manifest.json - versions/graphcompose-1.6/*.md one skill per topic, tied to GraphCompose 1.6.x (verified against 1.6.7) + versions/graphcompose-1.7/*.md active skill pack, tied to GraphCompose 1.7.x (verified against 1.7.0) + versions/graphcompose-1.6/*.md frozen 1.6.x snapshot (retained for projects pinned back to 1.6.x) tools/ asset-resolver/ Iconify + Google Fonts CLI (Node) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3c2775e..b1697e0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,39 @@ the full visual-baseline pass is the gate to `1.0.0`. ## Unreleased +### GraphCompose 1.7.0 +- **Dependency bumped 1.6.7 → 1.7.0.** All render-runner, skill-fixture, + and preview-renderer poms now resolve + `io.github.demchaav:graph-compose:1.7.0` from Maven Central; every live + example `template-project.json` (`targetGraphComposeVersion`) and the + `graphcompose-flow init` scaffold default move with them. 1.7.0 is + additive over 1.6.x (zero breaking changes), so existing generated + templates compile and render unchanged. +- **New `skills/versions/graphcompose-1.7/` pack.** A port of the 1.6 + pack (the frozen `graphcompose-1.6/` snapshot is retained for projects + pinned back) with the v1.7.0 additive primitives folded into the topic + skills: inline shape runs (rating dots / bullets / arrows / checkboxes + drawn from geometry, no font glyph), polygon `ShapeOutline` geometry, + composite inline figures + swappable tick/arrow styles, per-corner + `roundedRect(...)`, vertical text alignment + (`verticalAlign(TextVerticalAlign)`), semantic timelines + (`addTimeline(...)`), dashed/dotted lines (`LineBuilder.dashed(...)`), + `headingBar(...)`, `softPanel(..., stroke)`, `FontName.JETBRAINS_MONO`, + `DocumentSession.availableHeight()`, and the nested-stack + `position(...)` offset fix. The `spacing-and-alignment` "no per-line + vertical centring" note was corrected for the new `verticalAlign`. +- **Manifest repointed to 1.7.x.** `skill-manifest.json` → + `skillsVersion 0.3.0`, `defaultGraphComposeVersion 1.7.x`, + `supportedGraphComposeVersions [1.6.x, 1.7.x]`, all 14 entries + `verifiedAgainst 1.7.0` (`status: needs-validation` until the render + + visual-diff loop runs on 1.7.0). +- **Prompts + docs refreshed.** The Architecture Mapper gains mapping + rows for the 1.7.0 primitives; the Template Coder lists them as Stable, + surface-agnostic idioms; `AGENTS.md`, the quickstart / overview / + roadmap / limitations / implementation-status / skill-validation / + integration docs, README, and CONTRIBUTING move their "current target" + to 1.7.0 (the pre-1.6.7 JitPack boundary is left intact as history). + ### Live preview - **`live/` mirror.** Every render now also writes a single stable copy of the latest output to `live/current.pdf` (plus `current-debug.pdf`, `current.png`, diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 230af9e..5dce660 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -12,9 +12,9 @@ honest about its limitations. Phases 1 through 7 of the project plan are shipped. See [docs/roadmap.md](docs/roadmap.md) for the per-phase table and [docs/implementation-status.md](docs/implementation-status.md) for the -honest claim-vs-reality matrix. GraphCompose 1.6.7 is reachable for +honest claim-vs-reality matrix. GraphCompose 1.7.0 is reachable for fixture validation through Maven Central as -`io.github.demchaav:graph-compose:1.6.7` (older pins ≤ 1.6.5 still +`io.github.demchaav:graph-compose:1.7.0` (older pins ≤ 1.6.5 still resolve via JitPack as `com.github.DemchaAV:GraphCompose:vX.Y.Z`), and the five committed skill fixtures compile and run against it. The preview renderer now executes compiled templates and writes diff --git a/README.md b/README.md index a1f07aa..504448a 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ setup. **Works for any document kind** GraphCompose primitives can express — CV, cover letter, invoice, proposal, report, brochure, datasheet, single-page brand collateral. The four canonical template surfaces upstream are -first-class targets as of GraphCompose 1.6.7: +first-class targets as of GraphCompose 1.7.0: | Surface | Generation | Shape | |---|---|---| @@ -63,7 +63,7 @@ Source reference: [`examples/cv-reference/`](examples/cv-reference/) → publish | Published template bundle (`mint-editorial-cv`) | Available | | GitHub Actions CI matrix | Green (Node 20 + Java 21 + Maven) | | Full visual baseline orchestration | In progress | -| Skills under `skills/versions/graphcompose-1.6/` | `needs-validation` until baseline pass lands | +| Skills under `skills/versions/graphcompose-1.7/` | `needs-validation` until baseline pass lands | Full claim-vs-reality matrix: [`docs/implementation-status.md`](docs/implementation-status.md). @@ -266,8 +266,8 @@ and a Node visual-diff CLI ([`visual-diff`](tools/visual-diff/)). All three ship with passing test suites and are wired to GitHub Actions CI. -GraphCompose 1.6.7 is reachable for fixture validation through -Maven Central as `io.github.demchaav:graph-compose:1.6.7` +GraphCompose 1.7.0 is reachable for fixture validation through +Maven Central as `io.github.demchaav:graph-compose:1.7.0` (JitPack `com.github.DemchaAV:GraphCompose:vX.Y.Z` still resolves for pre-1.6.7 pins). The five fixture projects under [`examples/skill-fixtures/`](examples/skill-fixtures/) compile and diff --git a/docs/implementation-status.md b/docs/implementation-status.md index efacd20..de55064 100644 --- a/docs/implementation-status.md +++ b/docs/implementation-status.md @@ -12,14 +12,14 @@ The repository is no longer only documentation. The workflow scaffold, revision tooling, preview tooling, visual diff tooling, repository-contract checks, and five GraphCompose skill fixtures all exist on disk. The Java fixture projects compile and run against -GraphCompose 1.6.7 through Maven Central using: +GraphCompose 1.7.0 through Maven Central using: ```text -io.github.demchaav:graph-compose:1.6.7 +io.github.demchaav:graph-compose:1.7.0 ``` Older pins (≤ v1.6.5) continue to resolve via JitPack as -`com.github.DemchaAV:GraphCompose:vX.Y.Z`. GraphCompose 1.6.7 is +`com.github.DemchaAV:GraphCompose:vX.Y.Z`. GraphCompose 1.7.0 is compiled for Java 21, so GraphCompose-backed Maven jobs run on Java 21 in CI. The invoice and CV reference examples both render through local render-runner projects. @@ -39,7 +39,7 @@ visual review loop completes against committed baselines. |---|---|---| | Documentation MVP | README, docs, AGENTS, prompts, contributing guide, limitations, roadmap | REAL | | Agent prompt pack | 10 prompt files under `prompts/` | REAL | -| Versioned skill pack | 14 files under `skills/versions/graphcompose-1.6/` with manifest/frontmatter checks | REAL, still `needs-validation` | +| Versioned skill pack | 14 files under `skills/versions/graphcompose-1.7/` with manifest/frontmatter checks | REAL, still `needs-validation` | | Manual invoice example | Three revisions under `examples/invoice-reference/`, render-runner, committed `output.pdf`/`output.png` | REAL-WITH-CAVEAT: visual baseline absent | | Manual CV example | Two two-page drafts under `examples/cv-reference/`, render-runner, committed `output.pdf`, `output.png`, and `output-page-2.png` for the current draft | REAL-WITH-CAVEAT: visual baseline absent | | Revision statuses | `DRAFT`, `APPROVED`, `REJECTED`, `SUPERSEDED`, `FAILED`, `REVERTED` in `tools/revision-manager/src/types.ts` | REAL | diff --git a/docs/integration-with-graphcompose.md b/docs/integration-with-graphcompose.md index 0afe338..dd35650 100644 --- a/docs/integration-with-graphcompose.md +++ b/docs/integration-with-graphcompose.md @@ -9,11 +9,12 @@ workflow that uses GraphCompose as the target language. GraphCompose itself is maintained at [https://github.com/DemchaAV/GraphCompose](https://github.com/DemchaAV/GraphCompose). The skill packs in this repository currently target GraphCompose -`1.6.x` (the `defaultGraphComposeVersion` in `skills/skill-manifest.json`). -A `1.5.x` skill pack is also planned per the structure in -[versioned-skills.md](versioned-skills.md). When GraphCompose ships a -new minor version, a new skill pack directory is added under -`skills/versions/` rather than mutating the existing one. +`1.7.x` (the `defaultGraphComposeVersion` in `skills/skill-manifest.json`), +with the frozen `1.6.x` pack retained under `skills/versions/` for +projects that pin back. When GraphCompose ships a new minor version, a +new skill pack directory is added under `skills/versions/` rather than +mutating the existing one — the `1.6.x` → `1.7.x` port followed exactly +this rule (see [versioned-skills.md](versioned-skills.md)). ## How this strengthens GraphCompose positioning diff --git a/docs/limitations.md b/docs/limitations.md index 2f77157..612ca2b 100644 --- a/docs/limitations.md +++ b/docs/limitations.md @@ -45,8 +45,8 @@ Three tools ship under [`../tools/`](../tools/) and pass CI: 21 unit tests; functional. - The five fixture projects under [`../examples/skill-fixtures/`](../examples/skill-fixtures/) compile - and run with Maven against GraphCompose 1.6.7 from Maven Central: - `io.github.demchaav:graph-compose:1.6.7`. Pre-1.6.7 pins still + and run with Maven against GraphCompose 1.7.0 from Maven Central: + `io.github.demchaav:graph-compose:1.7.0`. Pre-1.6.7 pins still resolve via JitPack as `com.github.DemchaAV:GraphCompose:vX.Y.Z`. What is intentionally NOT in this repository today: diff --git a/docs/overview.md b/docs/overview.md index 7f5c4ac..54f70bc 100644 --- a/docs/overview.md +++ b/docs/overview.md @@ -110,8 +110,8 @@ and a `render` path for compiled GraphCompose templates), and a Node visual-diff CLI. All three have passing test suites and are wired to GitHub Actions CI. -GraphCompose 1.6.7 is reachable through Maven Central as -`io.github.demchaav:graph-compose:1.6.7` (JitPack +GraphCompose 1.7.0 is reachable through Maven Central as +`io.github.demchaav:graph-compose:1.7.0` (JitPack `com.github.DemchaAV:GraphCompose:vX.Y.Z` still resolves for pre-1.6.7 pins), and the five fixture projects under [`examples/skill-fixtures/`](../examples/skill-fixtures/) compile diff --git a/docs/quickstart.md b/docs/quickstart.md index a7994c1..227a4b8 100644 --- a/docs/quickstart.md +++ b/docs/quickstart.md @@ -39,10 +39,10 @@ npm --version git --version ``` -GraphCompose 1.6.7 is resolved by Maven through Maven Central as: +GraphCompose 1.7.0 is resolved by Maven through Maven Central as: ```text -io.github.demchaav:graph-compose:1.6.7 +io.github.demchaav:graph-compose:1.7.0 ``` Older pins (≤ v1.6.5) continue to resolve through JitPack as @@ -255,7 +255,7 @@ That runner shows how to: - copy the selected revision's `generated-template.java` into Maven generated sources -- compile it against GraphCompose 1.6.7 +- compile it against GraphCompose 1.7.0 - provide sample business data through a spec provider - call `tools/preview-renderer` to write `output.pdf` and `output.png` diff --git a/docs/revision-model.md b/docs/revision-model.md index b82853d..df87ec0 100644 --- a/docs/revision-model.md +++ b/docs/revision-model.md @@ -20,7 +20,7 @@ Example: "projectName": "invoice-reference", "referenceImage": "reference/reference.png", "targetGraphComposeVersion": "1.6.0", - "skillPack": "skills/versions/graphcompose-1.6", + "skillPack": "skills/versions/graphcompose-1.7", "currentApprovedRevisionId": "revision-001", "currentDraftRevisionId": "revision-002", "createdAt": "2026-05-12T16:00:00Z", @@ -50,7 +50,7 @@ Example: "status": "DRAFT", "userRequest": "Make the table darker and move the footer down", "targetGraphComposeVersion": "1.6.0", - "skillPack": "skills/versions/graphcompose-1.6", + "skillPack": "skills/versions/graphcompose-1.7", "changedComponents": [ "LineItemsTable", "Footer" diff --git a/docs/roadmap.md b/docs/roadmap.md index 3cb1649..0a0831c 100644 --- a/docs/roadmap.md +++ b/docs/roadmap.md @@ -5,9 +5,9 @@ and one manual example. Tooling starts at Phase 5. ## Current phase -All seven phases of the project plan are shipped. GraphCompose 1.6.7 +All seven phases of the project plan are shipped. GraphCompose 1.7.0 is reachable for fixture validation through Maven Central as -`io.github.demchaav:graph-compose:1.6.7` (JitPack +`io.github.demchaav:graph-compose:1.7.0` (JitPack `com.github.DemchaAV:GraphCompose:vX.Y.Z` remains the fallback for pre-1.6.7 pins), and the five skill fixtures compile and run against it. `preview-renderer render` can diff --git a/docs/skill-validation.md b/docs/skill-validation.md index 8b8df97..721e899 100644 --- a/docs/skill-validation.md +++ b/docs/skill-validation.md @@ -5,8 +5,8 @@ documents the validation discipline. Phase 4 has shipped the [`validation/`](../validation/) folder (templates, checklists, the baseline report) and the [`examples/skill-fixtures/`](../examples/skill-fixtures/) projects. -The fixture projects now compile and run against GraphCompose 1.6.7 -from Maven Central (`io.github.demchaav:graph-compose:1.6.7`; older +The fixture projects now compile and run against GraphCompose 1.7.0 +from Maven Central (`io.github.demchaav:graph-compose:1.7.0`; older pre-1.6.7 pins remain resolvable via JitPack as `com.github.DemchaAV:GraphCompose:vX.Y.Z`). The remaining validation work is the full render + preview + visual-diff loop that promotes @@ -153,7 +153,7 @@ Phase 4 has shipped: the historical baseline report from before fixture execution. - [`validation/reports/fixture-smoke-2026-05-18.md`](../validation/reports/fixture-smoke-2026-05-18.md) — the first compile/run smoke report against GraphCompose 1.6.0 via - JitPack (historical; the fixtures now resolve 1.6.7 from Maven Central). + JitPack (historical; the fixtures now resolve 1.7.0 from Maven Central). - Five fixture projects under [`examples/skill-fixtures/`](../examples/skill-fixtures/): `row-basic`, `section-basic`, `table-basic`, `layer-stack-badge`, @@ -162,7 +162,7 @@ Phase 4 has shipped: are not part of the Phase 4 scope. The fixture smoke proves the covered DSL calls compile and run against -the real 1.6.7 artifact. As of 2026-06-03 the render + visual-diff loop +the real 1.7.0 artifact. As of 2026-06-03 the render + visual-diff loop is built too: `scripts/validate-skills.mjs` renders each fixture through `tools/preview-renderer` (a no-arg `*FixtureDocument` adapter per fixture) and compares the PNG against a committed diff --git a/docs/versioned-skills.md b/docs/versioned-skills.md index c23ebd5..0109cc7 100644 --- a/docs/versioned-skills.md +++ b/docs/versioned-skills.md @@ -56,6 +56,11 @@ skills/ visual-regression.md revision-discipline.md troubleshooting.md + + graphcompose-1.7/ + (same 14 files — the active pack, ported to 1.7.x and verified + against 1.7.0; graphcompose-1.6/ is retained as the frozen + 1.6.x snapshot) ``` Skills are physically duplicated per supported GraphCompose version diff --git a/examples/cover-letter-reference/README.md b/examples/cover-letter-reference/README.md index 2f799e6..1e6e14c 100644 --- a/examples/cover-letter-reference/README.md +++ b/examples/cover-letter-reference/README.md @@ -15,8 +15,8 @@ kick-off gesture that opens `revision-001`. ## Surface V2 layered (`com.demcha.compose.document.templates.coverletter.v2.*`) -on GraphCompose 1.6.7 — the only surface upstream for cover letters -as of the 1.6.7 release. See the upstream +on GraphCompose 1.7.0 — the only surface upstream for cover letters +as of the 1.7.0 release. See the upstream [v2-layered authoring cheatsheet](https://github.com/DemchaAV/GraphCompose/blob/main/docs/templates/v2-layered/authoring-presets.md) for the canonical reference. diff --git a/examples/cover-letter-reference/template-project.json b/examples/cover-letter-reference/template-project.json index bad01ee..76c2252 100644 --- a/examples/cover-letter-reference/template-project.json +++ b/examples/cover-letter-reference/template-project.json @@ -4,8 +4,8 @@ "tagline": "Scaffold project for the first cover-letter run through the GraphCompose AI Template Flow. Pairs with a CV preset via shared CvIdentity + CvTheme on the V2 layered surface (coverletter.v2).", "referenceImage": "reference/reference.png", "referenceDescription": "reference/PLACEHOLDER.md", - "targetGraphComposeVersion": "1.6.7", - "skillPack": "skills/versions/graphcompose-1.6", + "targetGraphComposeVersion": "1.7.0", + "skillPack": "skills/versions/graphcompose-1.7", "currentApprovedRevisionId": null, "currentDraftRevisionId": null, "createdAt": "2026-06-01T12:30:00.000Z", diff --git a/examples/cv-reference/render-runner/pom.xml b/examples/cv-reference/render-runner/pom.xml index 91b3cc8..279ea3c 100644 --- a/examples/cv-reference/render-runner/pom.xml +++ b/examples/cv-reference/render-runner/pom.xml @@ -12,7 +12,7 @@ 21 21 UTF-8 - 1.6.7 + 1.7.0 revision-002 ${project.build.directory}/generated-sources/revision diff --git a/examples/cv-reference/template-project.json b/examples/cv-reference/template-project.json index 6259c3e..7301594 100644 --- a/examples/cv-reference/template-project.json +++ b/examples/cv-reference/template-project.json @@ -4,8 +4,8 @@ "tagline": "Two-page editorial-style resume for a graphic designer, with a mint accent rule and Iconify-backed contact and social glyphs.", "referenceImage": "reference/reference.png", "referenceDescription": "reference/reference.md", - "targetGraphComposeVersion": "1.6.7", - "skillPack": "skills/versions/graphcompose-1.6", + "targetGraphComposeVersion": "1.7.0", + "skillPack": "skills/versions/graphcompose-1.7", "currentApprovedRevisionId": "revision-009", "currentDraftRevisionId": "revision-008", "previouslyApprovedRevisionId": "revision-008", diff --git a/examples/invoice-reference/render-runner/pom.xml b/examples/invoice-reference/render-runner/pom.xml index 7a51f93..abb6e75 100644 --- a/examples/invoice-reference/render-runner/pom.xml +++ b/examples/invoice-reference/render-runner/pom.xml @@ -12,7 +12,7 @@ 21 21 UTF-8 - 1.6.7 + 1.7.0 revision-003 ${project.build.directory}/generated-sources/revision diff --git a/examples/invoice-reference/template-project.json b/examples/invoice-reference/template-project.json index f42c7f1..cb8e8c9 100644 --- a/examples/invoice-reference/template-project.json +++ b/examples/invoice-reference/template-project.json @@ -2,8 +2,8 @@ "projectName": "invoice-reference", "referenceImage": "reference/reference.png", "referenceDescription": "reference/reference.md", - "targetGraphComposeVersion": "1.6.7", - "skillPack": "skills/versions/graphcompose-1.6", + "targetGraphComposeVersion": "1.7.0", + "skillPack": "skills/versions/graphcompose-1.7", "currentApprovedRevisionId": "revision-003", "currentDraftRevisionId": null, "createdAt": "2026-05-18T12:00:00Z", diff --git a/examples/noir-corporate-cv/render-runner/pom.xml b/examples/noir-corporate-cv/render-runner/pom.xml index 2eef347..3f98cce 100644 --- a/examples/noir-corporate-cv/render-runner/pom.xml +++ b/examples/noir-corporate-cv/render-runner/pom.xml @@ -12,7 +12,7 @@ 21 21 UTF-8 - 1.6.7 + 1.7.0 revision-001 ${project.build.directory}/generated-sources/revision diff --git a/examples/noir-corporate-cv/template-project.json b/examples/noir-corporate-cv/template-project.json index 4f77e14..949aa01 100644 --- a/examples/noir-corporate-cv/template-project.json +++ b/examples/noir-corporate-cv/template-project.json @@ -4,8 +4,8 @@ "tagline": "Single-page corporate-style resume / CV with a dark aubergine sidebar plate, circular CV avatar badge, dark section header bars, rating-dot skills and languages blocks, and Iconify-backed contact and interest glyphs.", "referenceImage": "reference/reference.png", "referenceDescription": "reference/reference.md", - "targetGraphComposeVersion": "1.6.7", - "skillPack": "skills/versions/graphcompose-1.6", + "targetGraphComposeVersion": "1.7.0", + "skillPack": "skills/versions/graphcompose-1.7", "currentApprovedRevisionId": null, "currentDraftRevisionId": "revision-007", "previouslyApprovedRevisionId": null, diff --git a/examples/proposal-reference/README.md b/examples/proposal-reference/README.md index 8721012..3eb3216 100644 --- a/examples/proposal-reference/README.md +++ b/examples/proposal-reference/README.md @@ -15,7 +15,7 @@ kick-off gesture that opens `revision-001`. ## Surface `com.demcha.compose.document.templates.proposal.*` on GraphCompose -1.6.7 — single-preset V2 architecture upstream (`ModernProposal` + +1.7.0 — single-preset V2 architecture upstream (`ModernProposal` + `ProposalSpec`). New presets live in the same package and share `ProposalSpec` as the typed input. diff --git a/examples/proposal-reference/reference/PLACEHOLDER.md b/examples/proposal-reference/reference/PLACEHOLDER.md index d0efafa..769a2cd 100644 --- a/examples/proposal-reference/reference/PLACEHOLDER.md +++ b/examples/proposal-reference/reference/PLACEHOLDER.md @@ -20,7 +20,7 @@ The orchestrator routes that gesture through the 11-agent chain. ## Surface -GraphCompose 1.6.7 ships a single proposal preset upstream: +GraphCompose 1.7.0 ships a single proposal preset upstream: - Package: `com.demcha.compose.document.templates.proposal` - Preset: `ModernProposal` diff --git a/examples/proposal-reference/template-project.json b/examples/proposal-reference/template-project.json index f764045..15c0afa 100644 --- a/examples/proposal-reference/template-project.json +++ b/examples/proposal-reference/template-project.json @@ -4,8 +4,8 @@ "tagline": "Scaffold project for the first proposal run through the GraphCompose AI Template Flow. Targets the V2 proposal surface (single-preset upstream: ModernProposal).", "referenceImage": "reference/reference.png", "referenceDescription": "reference/PLACEHOLDER.md", - "targetGraphComposeVersion": "1.6.7", - "skillPack": "skills/versions/graphcompose-1.6", + "targetGraphComposeVersion": "1.7.0", + "skillPack": "skills/versions/graphcompose-1.7", "currentApprovedRevisionId": null, "currentDraftRevisionId": null, "createdAt": "2026-06-01T12:45:00.000Z", diff --git a/examples/skill-fixtures/README.md b/examples/skill-fixtures/README.md index 8a2ce6a..d7e03c1 100644 --- a/examples/skill-fixtures/README.md +++ b/examples/skill-fixtures/README.md @@ -4,7 +4,7 @@ This folder is the home of the Phase 4 skill validation fixtures. A *skill fixture* is a small, self-contained Maven project that exercises one GraphCompose primitive documented by the -[`skills/versions/graphcompose-1.6/`](../../skills/versions/graphcompose-1.6/) +[`skills/versions/graphcompose-1.7/`](../../skills/versions/graphcompose-1.7/) skill pack. Each fixture proves, at the smallest possible scope, that the primitive the skill documents is real GraphCompose API surface and not fantasy documentation. The fixtures are the on-disk receipts for the diff --git a/examples/skill-fixtures/layer-stack-badge/README.md b/examples/skill-fixtures/layer-stack-badge/README.md index edd433b..725fe15 100644 --- a/examples/skill-fixtures/layer-stack-badge/README.md +++ b/examples/skill-fixtures/layer-stack-badge/README.md @@ -40,22 +40,42 @@ overlap), so the layer stack is the correct primitive. ## How to run 1. `cd examples/skill-fixtures/layer-stack-badge` -2. `mvn test` +2. `mvn test` — the JUnit smoke test; asserts `compose(...)` does not + throw 3. inspect `expected-output/layout-snapshot.json` for the intended layer order, region shapes, and anchor -Phase 6 will additionally write `expected-output/output.pdf` and -`expected-output/output.png` on every run. +The committed render baseline is captured separately from the JUnit +test. A no-arg +[`LayerStackBadgeFixtureDocument`](src/main/java/com/demcha/compose/document/fixtures/layerstackbadge/LayerStackBadgeFixtureDocument.java) +exposes the same `compose(DocumentSession)` the test exercises, and +`tools/preview-renderer` drives it to `expected-output/output.pdf` and +`output.png`. Run the loop from the repo root: -## Deferred checks +- `node scripts/validate-skills.mjs` — re-render and visual-diff the PNG + against the committed baseline (expects `IDENTICAL`). +- `node scripts/validate-skills.mjs --update-baseline` — (re)capture the + `expected-output/output.{pdf,png}` baseline. -The JUnit test currently asserts only that `compose(...)` does not -throw. Three checks are pending the Phase 6 renderer and the Phase 7 -visual-diff tool: +## Checks -- layout-snapshot equality against - `expected-output/layout-snapshot.json` -- PDF byte sanity (non-empty, valid header) on - `expected-output/output.pdf` -- preview-image visual diff against a committed - `expected-output/output.png` baseline +The JUnit test still asserts only that `compose(...)` does not throw. The +render and visual-diff now run through the `LayerStackBadgeFixtureDocument` +adapter and `node scripts/validate-skills.mjs`, not the test: + +- preview-image visual diff against the committed + `expected-output/output.png` — wired. `node scripts/validate-skills.mjs` + re-renders via `tools/preview-renderer` and compares the PNG with + `tools/visual-diff`, expecting `IDENTICAL` (AE == 0). +- rendered-output sanity — wired. The runner asserts the render produced a + non-empty `output.pdf` and `output.png` (CI runs `--render-only`, since + PNG rasterisation is platform-specific). Full PDF byte equality is + intentionally skipped: PDFs carry timestamps, so parity is judged on the + PNG. +- layout-snapshot equality against `expected-output/layout-snapshot.json` + — still not enforced. `layout-snapshot.json` stays illustrative; it + documents intent, not a measured engine run. + +The captured baseline sizes and the `IDENTICAL` result for all five +fixtures are recorded in +[`../../../validation/reports/skill-render-validation-2026-06-03.md`](../../../validation/reports/skill-render-validation-2026-06-03.md). diff --git a/examples/skill-fixtures/layer-stack-badge/expected-output/README.md b/examples/skill-fixtures/layer-stack-badge/expected-output/README.md index 83fe3c9..51f16db 100644 --- a/examples/skill-fixtures/layer-stack-badge/expected-output/README.md +++ b/examples/skill-fixtures/layer-stack-badge/expected-output/README.md @@ -1,30 +1,37 @@ # expected-output for layer-stack-badge -This folder is where the Phase 6 render-and-preview tool will write the -rendered artifacts for this fixture. Until that lands, only -`layout-snapshot.json` is present, and it is illustrative — the values -describe the layout shape the fixture intends to produce, not values -measured by a real engine run. +This folder holds the committed render baseline for this fixture. +`output.pdf` and `output.png` are produced by `tools/preview-renderer` +driving the fixture's no-arg `LayerStackBadgeFixtureDocument` adapter. +`layout-snapshot.json` is still illustrative — its values describe the +layout shape the fixture intends to produce, not values measured by a +real engine run. ## Files | File | Status | Populated by | |---|---|---| -| `layout-snapshot.json` | present, illustrative | placeholder for Phase 6 | -| `output.pdf` | absent, Phase 6 deferred | preview-renderer tool | -| `output.png` | absent, Phase 6 deferred | preview-renderer tool | +| `layout-snapshot.json` | present, illustrative | hand-authored (documents intent) | +| `output.pdf` | present (committed baseline) | `tools/preview-renderer` via `LayerStackBadgeFixtureDocument` | +| `output.png` | present (committed baseline) | `tools/preview-renderer` via `LayerStackBadgeFixtureDocument` | -## What lands when +## How the baseline was captured -- **Phase 6** (preview-renderer): every `mvn test` regenerates - `layout-snapshot.json` from the real engine, writes - `output.pdf`, and converts the first page to `output.png`. The - illustrative `notes` field on the snapshot will be removed at that - point. -- **Phase 7** (visual-diff): introduces a committed `output.png` - baseline and a tool that compares a new render against both - `layout-snapshot.json` and that baseline. Diffs are classified per +The render plus visual-diff loop is built (see +[`../../../../scripts/validate-skills.mjs`](../../../../scripts/validate-skills.mjs) +and the run recorded in +[`../../../../validation/reports/skill-render-validation-2026-06-03.md`](../../../../validation/reports/skill-render-validation-2026-06-03.md)): + +- **Render** (`tools/preview-renderer`): `node scripts/validate-skills.mjs + --update-baseline` instantiates the no-arg `LayerStackBadgeFixtureDocument`, + calls its `compose(DocumentSession)`, writes `output.pdf`, and converts + the first page to `output.png` here. +- **Visual-diff** (`tools/visual-diff`): `node scripts/validate-skills.mjs` + re-renders and compares the new PNG against this committed `output.png`, + expecting `IDENTICAL` (AE == 0). PDFs carry timestamps, so parity is + judged on the PNG, not the PDF bytes. Diffs are classified per [`../../../../docs/visual-accuracy-contract.md`](../../../../docs/visual-accuracy-contract.md). -Do not edit `layout-snapshot.json` by hand once Phase 6 is wired; it -will be regenerated. Do edit it by hand now — it documents intent. +`layout-snapshot.json` is not part of that loop. It stays hand-authored +and illustrative, so it is safe to edit by hand; the render loop never +regenerates it. diff --git a/examples/skill-fixtures/layer-stack-badge/pom.xml b/examples/skill-fixtures/layer-stack-badge/pom.xml index 3ac70e4..8c9bf58 100644 --- a/examples/skill-fixtures/layer-stack-badge/pom.xml +++ b/examples/skill-fixtures/layer-stack-badge/pom.xml @@ -12,7 +12,7 @@ 21 21 UTF-8 - 1.6.7 + 1.7.0