Skip to content

docs: a rough roadmap to 1.0, and the road so far - #447

Merged
firejune merged 7 commits into
mainfrom
docs/a-rough-roadmap-to-1-0
Sep 6, 2026
Merged

docs: a rough roadmap to 1.0, and the road so far#447
firejune merged 7 commits into
mainfrom
docs/a-rough-roadmap-to-1-0

Conversation

@firejune

@firejune firejune commented Sep 6, 2026

Copy link
Copy Markdown
Owner

A rough ROADMAP.md: goals only, no dates, no feature list. Linked from the README's documentation table.

The framing, which is the part worth arguing about

The standing rule here is that direction comes from what users hit, not from what this repository predicts — and writing a roadmap does not suspend it. So the file says that outright in its second paragraph and lists conditions that have to become true, not work booked in advance.

What 1.0 means is one thing: the input spec stops moving. Everything else about a version number is bookkeeping; that one is a promise to whoever writes a rig spec. Pre-1.0 a spec change is a minor bump and nobody pays. After 1.0 the author pays.

The measurement behind that, rather than a feeling about it: src/rig.ts and src/types.ts changed in four of the last nine releases, including additions of 185 and 175 lines. RELEASING.md already said "1.0.0 is a deliberate act, not the side effect of one commit"; this gives that sentence something to be deliberate about.

The four goals

Each has an exit condition and no date:

goal done when
Real art has used the new surface each recent construct has at least one cut of real art compiling through it
The spec has stopped growing on its own initiative spec changes come from a need somebody reported, over enough releases to be a pattern rather than a lull
Every claim the repository makes about itself is derived nothing load-bearing is hand-maintained, and the derivations are themselves asserted
The published package works on a machine that has never seen this repo installing from the registry and running a build is checked mechanically, every release

⚠️ The first gates the second, which is why the order is what it is. Depth input, the turn ceiling, sliders and parameter-driven faces are measured only against generated fixtures — a registered cuts run comes back green and touches none of them, because the cuts predate them. A spec frozen at 1.0 that real art has never exercised is a prediction.

What is explicitly not in 1.0

Written down, because leaving it out is how a roadmap grows by inference:

  • The format-agnostic core — ruled to come after the feature work, and nothing here changes that.
  • Full coverage of the Spine 4.3 surface — ⭐ 1.0 is not everything works, it is the boundary is honest and stable: what rigc emits it emits correctly, and what it does not it refuses by name. Coverage is a separate axis and may keep moving after 1.0.
  • Rewriting the dated research notes — a note stamped with the day it was measured is doing its job. Making it current would make it a live claim, and live claims have to be derived.

The road so far

Same register, in order rather than by date: the split out of a game project's sandbox and the pass it took to finish sanitising the code after the files had moved; the ladder, whose cleared rungs stay in place as regression gates; the gate being put under the gate — a rung's pass withdrawn on a tolerance change and restored after the gate answered what that exposed; publication with an allowlist and the guide shipped inside the package; the gallery and its films, which have been the best defect-finder the project has; the face and Spine's own slider; and currency.

🔸 It carries no counts — not tags, not controls, not days. Counts drift the moment they are written, which is the third goal's whole subject, and LADDER.md and the CHANGELOG hold the real record. Its last phase is that third goal, still open, which is the seam between the two halves of the file.

Verification: bun run selftest 551 PASS / 0 FAIL / 0 SKIP / 0 HOLE.

firejune and others added 2 commits September 6, 2026 18:50
Deliberately short and undated. The standing rule here is that direction comes
from what users hit rather than from what this repository predicts, and writing
a roadmap does not suspend it — so the file says that outright and lists
conditions that have to become true rather than work booked in advance.

What 1.0 means is one thing: the input spec stops moving. Pre-1.0 a spec change
is a minor bump and nobody pays; after 1.0 the author of a rig spec pays, so
the number should not be claimed until the surface has earned it. The input
spec changed in four of the last nine releases, which is the measurement behind
the goals rather than a complaint about them.

Four goals, each with an exit rather than a date: real art has used the new
surface, the spec has stopped growing on its own initiative, every claim the
repository makes about itself is derived, and the published package works on a
machine that has never seen this repository. The first gates the second, which
is why the order is what it is.

What is explicitly not in 1.0 is written down too, because leaving it out is
how a roadmap grows by inference: the format-agnostic core comes after the
feature work, full coverage of the 4.3 surface is a separate axis, and the
dated research notes stay dated. 1.0 is not everything works; it is that the
boundary is honest and stable.

The history is in the same register and carries no counts, since counts drift
the moment they are written and LADDER.md and the CHANGELOG hold the real
record. Its last phase is the third goal, still open, which is the seam between
the two halves of the file.

Linked from the README's documentation table.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The file stated what 1.0 means procedurally and never stated what the work is
for, which let Spine read as the centre of it rather than as one supported
tool.

The end state is rigging and animation produced by an AI with no human hands.
rigc links spine-core for a narrower reason than allegiance to a format:
everything written to disk has to have been read back by a parser rigc did not
write, and that is what makes the output trustworthy. That is an oracle, not a
dependency, and another backend does not need permission — it needs an oracle
of its own, which is the larger half of building one.

The 1.0 promise is unchanged and its reason improves. The rig and motion specs
are the part that belongs to no backend, so a format can be swapped under a
spec that holds still and cannot be swapped under one that does not.

One consequence is stated because an earlier framing said the opposite: the
goal is not an AI draft a person finishes by hand. An editor round trip is how
a result gets checked, not where it gets finished.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@firejune

firejune commented Sep 6, 2026

Copy link
Copy Markdown
Owner Author

Reframed on the owner's correction

"The goal of this project is AI doing rigging and animation with no human hands. Spine is one of the tools we support, not a dependency."

The first draft said what 1.0 means procedurally and never said what the work is for, which let Spine read as the centre of it. Fixed at the top of the file, and it changes two other passages.

The distinction the file now draws

Spine is a backend. spine-core is linked for a narrower reason than allegiance to a format: everything written to disk has to have been read back by a parser rigc did not write. That is an oracle, not a dependency.

⚠️ Worth being precise, because "not a dependency" could be misread as licence to drop the link. It is not — the doctrine's structural invariant stands untouched. What the correction settles is the reason the link exists: verification, not format allegiance. Another backend does not need permission; it needs an oracle of its own, and building that is the larger half of the job. Not in 1.0's first bullet is now "a second backend", explicitly not because Spine is the point.

The 1.0 promise is unchanged, and its reason got better

"The input spec stops moving" was a packaging promise when Spine was implicitly the centre. Under a multi-backend goal it is the load-bearing one, because the rig and motion specs are the part that belongs to no backend:

A format can be swapped under a spec that holds still. It cannot be swapped under one that does not.

One thing the correction retires

An earlier framing — #285's, now closed — held that the value was an AI draft that a person then finishes by hand in the editor. That is the opposite of the stated goal, so the file says so: an editor round trip is how a result gets checked, not where it gets finished. The face angle that became a value rather than a moment on a timeline is the direction; nobody keys it.


⚠️ Open question the correction exposes, not answered here

All four goals are about whether the tool can be trusted — real art, spec stability, derived claims, a working install. None is about whether the mission has been demonstrated. If the end state is hands-free, the most direct 1.0 evidence would be a hands-free run on art nobody has seen, and the ladder and PILOT.md are that shape but sit in the record rather than in the conditions.

Deliberately not added, because inventing a goal is how a prediction-driven roadmap starts. Two ways to settle it:

  • Leave it. Trustworthiness is what 1.0 certifies; the hands-free proof keeps running as the ladder and does not gate a version.
  • Add a fifth goal. ⚠️ Then the exit condition has to be drawn first, and it is genuinely hard: where is the line of "a hand"? Writing the brief is a hand. Choosing the art is a hand. Without that line the goal cannot be measured, and an unmeasurable goal on this list would be the only one.

Owner's call.

Verification: bun run selftest 551 PASS / 0 FAIL / 0 SKIP / 0 HOLE.

firejune and others added 5 commits September 6, 2026 21:01
…irection

Calling coverage "a separate axis" made covering someone else's format into a
direction this project travels. It is not one. Coverage follows from what an
author needs to express, and a construct nobody has asked for is not a gap.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…kend

A statement that treats Spine as already optional is ahead of the code rather
than describing it. spine-core is the oracle today as a fact: nothing rigc
writes is trusted until a parser rigc did not write has read it back, and the
benchmark ladder is an oracle in the same sense — art this project did not
author and answers it cannot tune to. Neither is deference; both are the only
independent check there is.

The frame changes at one moment, when the core can be its own oracle. Not when
a second backend can emit: emitting is the easy half and output nobody can
check is worth nothing.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…here each stands

The file said what the project is for and never said where it expects to be
better than the alternative. Three places, chosen for being the ones a hand is
the wrong instrument in rather than for being hard: vertex work at a density
posing cannot reach, jiggle tension as a property of a region rather than a
curve somebody drew, and turning a flat drawing through an angle it was never
drawn at.

The line that makes the claim checkable is posing. Writing the brief is not a
hand and choosing the art is not a hand; making a pose is. Every neighbouring
tool has a person making poses somewhere, and this one is trying not to at any
layer — which a run can be measured against rather than only asserted.

None of the three is proven end-to-end, so the first goal now carries where
each stands instead of implying it: the vertex gate holds at densities the
artifact cannot, nothing yet measures whether a jiggle is right, and on
measured depth noise is also a slope so the reported angle may be set by
sampling rather than shape. Two of the three are blocked outside the compiler,
which makes the differentiator and the oracle question the same question.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…k catalogue

The first goal said real art without saying whose, which leaves it satisfiable
by whatever is nearest to hand. A project is waiting on rigc to become usable
before it starts, and its art is the one this goal is about.

That is also what makes the first goal gate the second: a spec declared
finished against art chosen after the fact to fit it has not been tested by
anything.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…ot a detour

Sequencing the core after the feature work already had one reason — a format
cannot be designed for constructs nobody has discovered. It has a second and
better one: proving 2.5D on real art is exactly the experiment that asks
whether a deform should be stored as offsets or evaluated from a depth and an
angle, and jiggle asks the same of an impulse response.

So the representation question is not deferred by the sequencing, it is
answered by it. Running both tracks at once would mean guessing in two places
instead of measuring in one.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@firejune
firejune merged commit 0cd287b into main Sep 6, 2026
1 check passed
@firejune
firejune deleted the docs/a-rough-roadmap-to-1-0 branch September 6, 2026 12:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant