docs: a rough roadmap to 1.0, and the road so far - #447
Conversation
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>
Reframed on the owner's correction
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 drawsSpine is a backend.
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:
One thing the correction retiresAn 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.
|
…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>
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.tsandsrc/types.tschanged in four of the last nine releases, including additions of 185 and 175 lines.RELEASING.mdalready 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:
What is explicitly not in 1.0
Written down, because leaving it out is how a roadmap grows by inference:
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.mdand theCHANGELOGhold 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 selftest551 PASS / 0 FAIL / 0 SKIP / 0 HOLE.