spine-rigc 0.8.1 → 0.10.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 CHANGED
@@ -30,6 +30,8 @@ parser and a list of named assertions all come back green.
30
30
  | You have | You run | You get |
31
31
  | --- | --- | --- |
32
32
  | part PNGs, a rig spec and a motion spec | `rigc build` | `skeleton.json` + `skeleton.atlas` — or a failure named by rule, and **nothing on disk** |
33
+ | the same, and one texture instead of many | `rigc build --pack` | the parts arranged onto shared atlas pages, written beside the skeleton — losslessly, so the picture is the picture |
34
+ | a pack somebody already made | `rigc build --atlas-in` | the same skeleton, with every part resolved to a region of that atlas — or a named refusal, never a part that silently does not draw |
33
35
  | a compiled rig | `rigc render` | every animation as PNG frames, plus one labelled contact sheet of the whole shot |
34
36
  | a compiled rig | `rigc preview` | one self-contained `.html` that plays it in Spine's own web player |
35
37
  | two to four compiled rigs | `rigc vote` | one ballot page a human picks from, and the answer checked into a ledger |
@@ -81,10 +83,11 @@ run a list of named assertions, and **write nothing unless all of them are green
81
83
 
82
84
  ## Install
83
85
 
84
- 📦 **rigc measures loose PNGs directly one atlas page per image.** It is not an
85
- atlas packer: packing several regions onto one page is tracked as
86
- [issue #4](https://github.com/firejune/rigc/issues/4), not something the tool does
87
- today.
86
+ 📦 **rigc measures loose PNGs directly, and emits one atlas page per image unless
87
+ you ask otherwise.** `rigc build --pack` arranges every part onto shared pages and
88
+ writes them into `--out`; `--atlas-in` builds against a pack somebody else made.
89
+ Both are opt-in and both are narrow — no trimming, no rotation, no scaling — and
90
+ [AUTHORING §0.1–§0.2](docs/AUTHORING.md) states the limits before you hit them.
88
91
 
89
92
  rigc runs on [Bun](https://bun.sh). The package ships its TypeScript sources and
90
93
  Bun runs them, so there is no build step and no `dist/` that can drift from the
@@ -379,6 +382,8 @@ commands take it and what its default is.
379
382
  | Command | Does |
380
383
  | --- | --- |
381
384
  | `build --rig … --motion … --out …` | compiles, gates, and **writes only if the gate is green**. `--images <dir>` says where the rig spec's `image` names resolve, `--manifest` adds measured art, and `--copy-images` copies every page PNG into `--out` so the directory is self-contained |
385
+ | `build … --pack` | the same build with every part arranged onto **shared** atlas pages, written into `--out` — losslessly, and gated a second time as the pair that ships. `--page-size` and `--padding` tune it |
386
+ | `build … --atlas-in <file.atlas>` | the same build with every part resolved to a **region of an existing pack** instead of a loose PNG; a name the atlas lacks, a size the spec disagrees with or a rectangle off its page is refused by name |
382
387
  | `validate <dir>` | re-gates artifacts already on disk |
383
388
  | `explain --rig … --motion …` | the compiled rig as a table — every bone with its resolved parent, the slots in draw order, every timeline key by key. Writes nothing. What to reach for when a rig compiles and still looks wrong |
384
389
  | `render --candidate <dir>` | PNG frames plus a contact sheet, in `render/` |
@@ -394,9 +399,9 @@ work on any frames you have, and `bench` is a repository workflow that needs a c
394
399
  and `bun run fetch-examples`. The reasoning behind all three is in
395
400
  [the benchmark dossier](https://github.com/firejune/rigc/blob/main/docs/BENCHMARK.md).
396
401
 
397
- `build` and `validate` both default to `--profile spine` — the 22 validity rules, which
402
+ `build` and `validate` both default to `--profile spine` — the 25 validity rules, which
398
403
  ask *is this valid Spine 4.3 that any runtime plays correctly?* `--profile spine-html`
399
- adds all 36: the other 14 are one renderer's policy and one canvas budget's, and they
404
+ adds all 39: the other 14 are one renderer's policy and one canvas budget's, and they
400
405
  fire on perfectly correct editor-produced Spine data, so reach for that profile when
401
406
  you are shipping into *that* project rather than to be thorough. A report always names
402
407
  the profile it ran and lists what that profile left out.
@@ -413,6 +418,7 @@ the art. Its shape is under
413
418
  | --- | --- |
414
419
  | 📘 **[docs/AUTHORING.md](docs/AUTHORING.md)** | **the format guide, and the one to read before writing a spec.** Both input files field by field with a complete minimal example each, every field with its Spine meaning, the rules that decide what is emitted, the build → read the report → fix → repeat loop, the map from every named failure to the file that has to change, and the features rigc refuses by name so you do not spend a loop discovering them. It travels **inside the npm package**, at `node_modules/spine-rigc/docs/AUTHORING.md` |
415
420
  | 🎞️ **[docs/MOTION.md](docs/MOTION.md)** | **the key-pose recipe.** How to get two poses, what a pair of poses does and does not fix, the in-betweening rules and where each comes from, and how to spread candidates so a ballot informs. Ships in the package too |
421
+ | 📥 **[docs/INGEST.md](docs/INGEST.md)** | **working with a skeleton you did not author.** What every command can and cannot do with a foreign `skeleton.json`, reading it with the toolchain, transcription as the route that makes it yours, what each validator complaint means on an export, and the re-pivot/rename/extend recipes. Ships in the package too |
416
422
  | 🤖 **[docs/PROMPTING.md](docs/PROMPTING.md)** | **handing the authoring to an AI agent** — the prompt clauses a measured pilot run paid for, and what you can leave unsaid. Ships in the package too |
417
423
  | 🔬 **[docs/SPEC_COVERAGE.md](docs/SPEC_COVERAGE.md)** | Spine 4.3's full export surface against what rigc emits and what the official examples measurably use, with the ordered gap list |
418
424
  | 🎓 **[the benchmark dossier](https://github.com/firejune/rigc/blob/main/docs/BENCHMARK.md)** | **why you can trust the output.** The yardstick, `diff` and `check` and what neither can see, the eight-rung ladder and the spineboy graduation exam, the run viewer, the 36 named assertions with their profiles, and the selftest that has watched every one of them fire. Repository material — it is not in the npm package |
@@ -425,12 +431,27 @@ rigc is measured against **Spine's own official example projects** — the
425
431
  as the graduation exam.
426
432
 
427
433
  🎓 **The ladder is complete, 2026-08-28.** All eight numbered rungs and the
428
- spineboy graduation exam are cleared under gate v2.1 and hold under **v2.2**, every clause PASS or SKIP:
434
+ spineboy graduation exam are cleared and hold under the current gate, **v2.3**, every clause PASS or SKIP:
429
435
  worst attributable slot drift **5.55 px** against a 6.0 px bar, and **0 of 124**
430
436
  frame-change disagreements. Recompiling the same spec in a different session
431
437
  reproduced every field of the measurement record **to the digit**. The rungs stay
432
438
  in place as regression gates.
433
439
 
440
+ 🗓️ **One rung's pass was withdrawn and restored on 2026-09-02, and both are dated
441
+ facts.** `check`'s extent tolerance ([PR #254](https://github.com/firejune/rigc/pull/254))
442
+ changed which box a set is measured in, and rung 7's stored candidate failed **G2**
443
+ under it — one of its three slots draws in every set and is attributable in none,
444
+ and no read-down ground survived the framing change. The gate then answered the two
445
+ clause questions that exposed, as **v2.3**: a read-down names the framing of its
446
+ evidence, and a slot whose attributability is **measured** to be capped below the bar
447
+ reads down when everything observable about it is independently verified strict. That
448
+ rung's third attempt clears on those grounds, on the candidate it already had.
449
+ **Rungs 1–6 and 8 and the graduation exam were unaffected throughout**: each reproduces
450
+ its gated figures to the digit, and the 5.55 px and 0-of-124 figures above are among
451
+ them. Both verdicts, and the sweep of every candidate under the new gate, are in
452
+ [docs/LADDER.md](https://github.com/firejune/rigc/blob/main/docs/LADDER.md)'s *PR #254 instrument re-inspection* and *gate-v2.3
453
+ re-inspection*.
454
+
434
455
  ⚠️ **What that certifies, stated exactly.** That **the tool, the guide and the
435
456
  protocol reach the bar across a bounded series of honest attempts, each residual
436
457
  diagnosed and fixed** — spineboy took five, and the last inherited its
@@ -439,7 +460,7 @@ that an agent authors a spineboy-scale rig from the brief alone in one run: the
439
460
  ladder has not demonstrated that, and each row records which of the two it is.
440
461
 
441
462
  The whole dossier — the yardstick, `diff` and `check` and what neither of them can
442
- see, every rung, the run viewer, the 36 assertions and the selftest behind them — is
463
+ see, every rung, the run viewer, the 39 assertions and the selftest behind them — is
443
464
  [docs/BENCHMARK.md](https://github.com/firejune/rigc/blob/main/docs/BENCHMARK.md).
444
465
  Live rung status is
445
466
  [docs/LADDER.md](https://github.com/firejune/rigc/blob/main/docs/LADDER.md).