The Platform ships 8 Spine-driven
apps across 25 rungs
(14 declared gaps). This table is folded live from
recipe-ladder-manifest-v1.json — it is never hand-maintained.
| App | Rungs | Gaps | Completeness | Access |
|---|---|---|---|---|
graphics-game | 2 | 2 | CONSTRUCTIBLE-WITH-2-NAMED-GAPS | free |
graphing-calculator | 2 | 2 | constructible-with-gaps: 2 pipe primitives fully witnessed (seq-source, svg-sink); 2 declared pure-kernel gaps (expr-parse, expr-eval) — the expression engine is honest derive-first work. One interactive sub-lane (pan-zoom / input-handling). | free |
mandelbrot | 2 | 2 | constructible-with-gaps: 2 pipe primitives fully witnessed (grid-source, ppm-raster); 2 declared pure-kernel gaps (color-map, escape-iter) — the fractal compute core is honest derive-first work. One interactive sub-lane (pan-zoom / input-handling). Judgment call resolved: mb.pixel-grid witnessed by grid-source (the shared grid substrate, same as spreadsheet). | free |
photoshop-killer | 7 | 2 | CONSTRUCTIBLE-WITH-2-NAMED-GAPS | free |
spreadsheet | 2 | 3 | constructible-with-gaps: 2 pipe primitives fully witnessed (grid-source, grid-sink); 3 declared pure-kernel gaps (formula-parse, dep-graph, recalc) — the spreadsheet compute core is honest derive-first work. One interactive sub-lane (edit-cell / input-handling). | free |
sudoku | 3 | 2 | CONSTRUCTIBLE-WITH-2-NAMED-GAPS | free |
text-editor | 4 | 0 | CONSTRUCTIBLE-COMPLETE | free |
timeline | 3 | 1 | constructible-with-gap: 3 pipe primitives fully witnessed (timeline, range-filter, gantt-sink); 1 declared pure-kernel gap (time-scale). One interactive sub-lane (pan-zoom / input-handling). | free |
Honest ceiling. A rung means the primitive is named in the app's authored Spine, never that the app runs. Verdicts/gaps are copied verbatim. Inherits the Spine ceilings (record_shape unproven; port-level not record-shape).
site/platform/catalog.html, rendered from the section frame + the manifests by build_habitat_pages.py over page_set.py. The source is canonical; when a rendered page and its source disagree, the source wins.