spine-rigc 2.12.0 → 2.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -2
- package/docs/AUTHORING.md +18 -4
- package/package.json +1 -1
- package/skills/rigc/SKILL.md +4 -1
package/README.md
CHANGED
|
@@ -63,8 +63,13 @@ it cuts both ways:
|
|
|
63
63
|
selftest call, and on a private corpus of production rigs measured before each
|
|
64
64
|
release. Of the 51 assertions, 50 run on both; `A00_ROUNDTRIP_PARSE`, the official
|
|
65
65
|
parser's own parse, runs only where the runtime is installed and is reported as a
|
|
66
|
-
SKIP elsewhere.
|
|
67
|
-
|
|
66
|
+
SKIP elsewhere. There, in the parse's place, the report also carries the model
|
|
67
|
+
side's own two parse rules, `A00_MODEL_READ` and `A00_MODEL_REGIONS_ON_PAGES`,
|
|
68
|
+
which no round-trip rule matches and the registry does not hold — so its summary
|
|
69
|
+
totals 53 on the core entry, and its last line counts 44 rules on the model side
|
|
70
|
+
([AUTHORING §5.2](docs/AUTHORING.md) has a row for each). Install it beside rigc
|
|
71
|
+
(`bun add -d @esotericsoftware/spine-core`) and the same `rigc` runs the round
|
|
72
|
+
trip on every build. The
|
|
68
73
|
[Spine Runtimes License Agreement](https://esotericsoftware.com/spine-runtimes-license)
|
|
69
74
|
applies to that dependency wherever it is installed.
|
|
70
75
|
|
package/docs/AUTHORING.md
CHANGED
|
@@ -155,9 +155,11 @@ That entry's `build` takes the same flags and writes the same files, byte for by
|
|
|
155
155
|
`skeleton.json`, `skeleton.atlas`, `skeleton.model.json`, and the pages `--pack` or
|
|
156
156
|
`--copy-images` put in `--out`.
|
|
157
157
|
Only the gate differs, because the round trip is spine-core's: it runs the model
|
|
158
|
-
side over the document
|
|
159
|
-
|
|
160
|
-
|
|
158
|
+
side over the document — its own two parse rules first, `A00_MODEL_READ` and
|
|
159
|
+
`A00_MODEL_REGIONS_ON_PAGES`, which stand where spine-core's parse stands and are
|
|
160
|
+
not in the registry, then the registry's rules that read the model — and the round
|
|
161
|
+
trip's own rules restated over the text the emitter wrote (A01, A02, A05, A07, A16,
|
|
162
|
+
A31, A35, and A18 over a second compile's three files), and it does not run `A00_ROUNDTRIP_PARSE`, which reports **SKIP**
|
|
161
163
|
naming spine-core. Its report ends on a line saying which rules ran there and
|
|
162
164
|
which did not, and it writes only when none of them fails (§5.2).
|
|
163
165
|
|
|
@@ -6358,6 +6360,16 @@ you can reproduce by counting rows:
|
|
|
6358
6360
|
assertions and not `FAIL` lines: one assertion that finds six wrong vertices
|
|
6359
6361
|
prints six rows and is one failure here.
|
|
6360
6362
|
|
|
6363
|
+
🔢 **On the entry without the runtime the report has two rows the registry does not.**
|
|
6364
|
+
`cli_core.ts build` (and `repack`) prints the model side's own parse rules,
|
|
6365
|
+
`A00_MODEL_READ` and `A00_MODEL_REGIONS_ON_PAGES` — the first two rows of the
|
|
6366
|
+
table below — which stand where `A00_ROUNDTRIP_PARSE`'s parse stands and have no
|
|
6367
|
+
round-trip counterpart, so they are not in the registry. That is the whole of the
|
|
6368
|
+
difference between the two totals: `<N>` is 53 on the core entry and 51 on `cli.ts build`,
|
|
6369
|
+
and the core report's last line states the split — 44 rules on the model side,
|
|
6370
|
+
which are the 42 registry assertions the model side runs and those two; the 8 restated over the emitted text;
|
|
6371
|
+
and `A00_ROUNDTRIP_PARSE`, which it reports as a SKIP.
|
|
6372
|
+
|
|
6361
6373
|
🚨 **When `A00_ROUNDTRIP_PARSE` fails, read the report as a report about A00 and
|
|
6362
6374
|
nothing else.** Most of the rules read the skeleton or the atlas that A00 loads,
|
|
6363
6375
|
and with no parse there is nothing for them to look at — so they report `SKIP`
|
|
@@ -6368,7 +6380,9 @@ Fix A00 and run it again.
|
|
|
6368
6380
|
|
|
6369
6381
|
| Assertion | Profile | What tripped it, and where to fix it |
|
|
6370
6382
|
| --- | --- | --- |
|
|
6371
|
-
| `
|
|
6383
|
+
| `A00_MODEL_READ` | both | **Printed only by `cli_core.ts build` and `repack`**, where it runs before every other rule and its line leads the lines of its verdict; `cli.ts` never prints it, because there the parse is `A00_ROUNDTRIP_PARSE`'s. rigc's own reader of the model document (`readModel`) refused the `skeleton.model.json` this build compiled — the model side's parse, and like A00 the row to read first: when it fails, `A00_MODEL_REGIONS_ON_PAGES` **SKIPs** naming it and every registry rule of the model side **SKIPs** with *the model side read no document to measure*. The detail is the reader's own sentence, naming each path it refused, the value there and what it must be: `the model document: 1 problem(s): skins[0] "default".attachments["torso"]["torso"]: width is "wide", not a finite number`, `spec is "rigc-compiled/9", not "rigc-compiled/3" (…)`, `section "rig" is missing`, or `… in the rig section the model side reads its declarations from: rig.archetype is 7, not a string`. ⚠️ **No file of yours reaches it, written or edited**: the document it reads is the one the compiler just wrote in the same process, before anything is on disk, and `validate` on this entry refuses a rigc build rather than reading one (`RC36`). So a FAIL here is the compiler writing a document its own reader refuses — a rigc fault, whatever the spec says. Report it with the rig spec, the motion spec, the manifest and art if the build used them, and the command line. Not one of the registry's assertions: it is one of the two rows that make a core-entry summary total two more than `cli.ts`'s (§5.2 above) |
|
|
6384
|
+
| `A00_MODEL_REGIONS_ON_PAGES` | both | **Printed only by `cli_core.ts build` and `repack`**, run second, after `A00_MODEL_READ`. A record of the document that draws through an atlas region — a region, a mesh or a linked mesh, every frame of a `sequence` by its numbered name — resolves through a region no page of the document holds, or states that the build had no rectangle for it: `skin "default" slot "torso" placeholder "torso": resolves through the region "torso_typo", which no page of the document holds`, beside `…: the region record's atlas is null — the build had no rectangle for "torso_typo", and a runtime loading it finds no region`. **The rig spec reaches this one**: an attachment with no `image`, its `width` and `height` given, whose `path` names a region the build atlases no art for. `A08_REGION_NAMES_MATCH_ATTACHMENTS` fails on the same record with the attachment's own name, and the round trip refuses the same build at A08 and `A00_ROUNDTRIP_PARSE`. Change the attachment's `path` in the rig spec to a region the build has — a PNG under `images`, or a region of the `--atlas-in` pack — or give it the `image` it draws. Two more shapes it prints are documents a build of this rigc does not write, so on `build` they are a rigc fault, reported as for `A00_MODEL_READ`: `the document is rigc-compiled/1, which states no pages, …` and `the model document's sequences: … start is "x", not a whole number of at least 0`. **SKIP** when `A00_MODEL_READ` refused the document (it names that row), and when no record draws through a region — a rig with no region, mesh or linked-mesh attachment. Not one of the registry's assertions, for the reason the row above gives |
|
|
6385
|
+
| `A00_ROUNDTRIP_PARSE` | both | `spine-core` could not parse the skeleton or the atlas. Almost everything else in the report is downstream of this one — fix it first. When it fails, every rule that reads the loaded skeleton or the loaded atlas reports **SKIP** saying so by name, so the row count stays at the full registry and the summary's *measured* figure tells you how little was actually asked. ⚠️ **Two rules run before it and can be upstream of it**: `A31_DRAW_ORDER_OFFSETS_RESOLVE`, because a bad draw-order key makes the loader spin rather than return, and `A08_REGION_NAMES_MATCH_ATTACHMENTS`, because a `path` naming no region makes it throw. The round trip is still attempted either way; when the loader refuses a path A08 has already refused, this row **defers** to A08 by name instead of restating the miss in the parser's poorer words Under `cli_core.ts build`, which links none of spine-core, it is a **SKIP** naming spine-core — the one rule of the registry that entry does not run. The entry that links spine-core runs it on `build` and `validate`: installed, the same `rigc` once `@esotericsoftware/spine-core` is installed beside the package; from a clone, `bun cli.ts` (`RC28`). |
|
|
6372
6386
|
| `A01_NO_LEGACY_TOPLEVEL_CONSTRAINT_ARRAYS` | both | a 4.1/4.2-shaped `ik`/`transform`/`path`/`physics`/`slider` array. rigc emits the 4.3 `constraints` array, so this normally means hand-edited JSON Under `cli_core.ts build` the same clause runs over the text the emitter wrote and prints this line in the same words (`RC28`). |
|
|
6373
6387
|
| `A02_NO_BONE_TRANSFORM_KEY` | both | `bone "…" uses "transform", the key 4.0 and 4.1 spelled; 4.2 and 4.3 spell it "inherit"` — rename it `inherit` in the rig spec Under `cli_core.ts build` the same clause runs over the text the emitter wrote and prints this line in the same words (`RC28`). |
|
|
6374
6388
|
| `A03_REGION_WIDTH_HEIGHT_FINITE` | both | a region loaded `NaN` or a non-positive size — the attachment has no `image` and no `width`/`height`. **SKIP** when the skeleton carries no region attachment |
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "spine-rigc",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.13.0",
|
|
4
4
|
"description": "AI-authored Spine 2D rigging and animation, verified before it is written. rigc compiles a rig spec into Spine 4.3 skeleton data, gates it with named assertions held to a spine-core round trip's verdicts, and emits nothing that fails. Output imports into the Spine editor. Ships as an agent skill.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
package/skills/rigc/SKILL.md
CHANGED
|
@@ -49,7 +49,10 @@ through `@esotericsoftware/spine-core`: install it beside the package
|
|
|
49
49
|
(`bun add -d @esotericsoftware/spine-core`) and the same `rigc` runs them, and
|
|
50
50
|
`build` runs the round trip as well. Without it they are refused by name, and
|
|
51
51
|
`build` writes the same files gated without the parse — `rigc --version` names the
|
|
52
|
-
entry that ran.
|
|
52
|
+
entry that ran. In the parse's place that `build` runs two rules of its own over
|
|
53
|
+
rigc's model document, `A00_MODEL_READ` and `A00_MODEL_REGIONS_ON_PAGES`; they are
|
|
54
|
+
not registry assertions, so its summary counts two more, and AUTHORING §5.2 has a
|
|
55
|
+
row for each.
|
|
53
56
|
|
|
54
57
|
## The loop
|
|
55
58
|
|