Fund a work package
Move One Milestone To Evidence
Support a bounded renderer, protocol, persistence, or lesson package with its completion test defined in advance.
The finite continuation program for turning the Cartilage prototype into a readable, controllable, robust, shareable, and teachable spatial circuit workstation.
Cartilage already makes local Boolean roles, routing, ownership, and configuration visible. The next version does not need a new theory of computation. It needs a disciplined renderer and inspector, a region-scale configuration interface, safe ownership transfer and recovery, and the web-product ergonomics that let an engineer build and debug a serious circuit.
This page provides public progress tracking. It says what remains, why the order matters, and what evidence will be required before an item changes from Planned to Complete.
Established baselineThe public Core demonstrates one exact serially installed 6×6 child region, and the MUX visual edition separately verifies already placed application circuits.
Continuation workAll 28 implementation items below are proposed. The diagrams describe target behavior; they are not screenshots of features the current shader already supports.
Engine reviewed for this roadmap: Cartilage Core 48ff6e0.
0/28 complete
28 work items remain. Roadmap publication itself is complete and is not counted as an engine feature.
Planned names an accepted target.
Active requires a linked implementation branch or issue.
Complete requires merged code, a repeatable check, and a public capture, demo, or report.
Last reviewed .
The continuation starts from working machinery, not from a slide deck. Cartilage Core publishes a local WebGL1/GLSL transition, independent SystemVerilog, and one checked 6×6 image streamed as 252 payload bits plus one apply pulse. The installed image realizes an interior-MUX AND circuit.
MUX Algebra gives 34 one-to-one abstract and Cartilage views with 606 shader-readback cases. Those captures load circuits that are already placed and routed, so they prove application behavior and illustration parity, not a general compiler or the serial installation of every example.
The preserved nested-instantiation artifact shows the architectural direction: a parent, a local port, a bounded daughter region, and roles rewritten through the fabric. The roadmap below makes the missing interface and lifecycle work explicit.
Usability is first because the ownership and recovery protocols cannot be debugged through a sea of unlabeled wires and instantaneous bubbles. Region claiming comes next because overlap and recovery need deterministic authority. The hosted tool and lessons then expose the same checked mechanisms without inventing a second simulator.
The first release must let a person see the same component structure that the design author intended, without pretending that every named block is an independently reconfigurable region.
A defining block may attach a stable, non-reconfigurable component tag to the cells in its subtree. That tag is display and authoring metadata. It does not create a reconfiguration-port root, it does not break the larger continuous ownership tree, and it does not grant write authority. The renderer can then derive block backgrounds, exact block boundaries and contours, hover states, labels, and inspection data from tag membership.
Wire rendering needs a second mode. An unbranched net should read as one continuous route, not as a chain of bubbles. The present instantaneous wave was optimized for rendering throughput, not for a person following the route. Direction may be shown with static arrowheads and, when wire animation is enabled, slow interframes that expose modeled propagation order. Selecting any segment must reveal the complete named net, its single driver, every branch, every sink, and every component boundary it crosses.
Complete when: stable membership survives placement and simulation while every parent chain remains unchanged.
Complete when: selecting a block reveals its name, cells, ports, and status without mutating runtime state or hiding signals.
Complete when: adjacent blocks share one readable seam and nested blocks retain distinct hit targets.
Complete when: the same route reads correctly at overview and inspection zoom without a bubble at every cell.
Complete when: one recorded step sequence produces the same visible order every time and never masquerades as physical delay.
Complete when: a one-driver, three-sink fixture identifies exactly those endpoints and excludes a geometric crossing without a junction.
Complete when: labels avoid the fabric marks, remain attached after rerouting, and survive save and reload.
One MUX-sized cell is too small a unit for the complete reconfiguration interface now required at a practical region boundary.
The issue is a reconfiguration channel contract, not merely drawing space. A region must independently carry at least configuration clock, data in, and data out while remaining connected to its internal ownership tree. The implementation should therefore define one logical root whose physical footprint may use several cells or lanes. The exact minimum shape must be measured; a 2×2 drawing is only a candidate, not a theorem.
Boot must also become deterministic. In the current experimental transition, a cell without a live configuration signal can rotate its parent direction while searching. A practical fabric cannot depend on an indefinite search that makes cells spin or gray unpredictably. The proposed boot image makes unclaimed cells explicitly claimable, then lets a reconfiguration root claim them through an ordered spanning tree with a defined edge and child order.
Complete when: every channel can be driven and observed independently through all supported orientations.
Complete when: repeated full resets produce the same state hash, with zero cells spinning indefinitely in parent search.
Complete when: every parent chain reaches one root, no cell is duplicated or omitted, and repeated runs emit the same visit order.
Complete when: the trace proves claim, deterministic load, output return, and no orphaned or still-searching cell.
Composition becomes much more flexible when an object can be referenced, stored, and managed from more than one surrounding object while mutation authority remains singular.
Here, ownership overlap means overlapping logical containment or shared application references above a physical ownership forest. It does not mean that one physical cell suddenly has two adjacent parents. In the requested 4×4 fixture, every non-root cell still has exactly one adjacent parent, and exactly one surrounding block holds the current single writer authority.
A passable ownership pointer is therefore an ordered transfer of unique mutation authority, not a duplicate writer. The handoff must fence the old writer, acknowledge the new generation, and reject stale pointers.
physical parents per non-root cell = 1
active writers per mutable shared object ≤ 1
writer transfer = fence → acknowledge → generation change → release
Complete when: the validator can display both graphs and every physical parent walk still reaches exactly one root.
Complete when: two attempted writes cannot both commit and stale writer generations are rejected.
Complete when: exactly one writer exists before and after the handoff, and interruption has a deterministic recovery path.
4×4 overlap fixture. Surround one shared subfabric with four adjacent blocks, mark one active parent, and pass authority among them.PlannedComplete when: all 16 cells are visited once, the object survives reader removal and writer transfer, and the overlay names every relationship.
A self-pointing or cyclic ownership island needs a bounded recovery protocol that does not depend on the stuck object cooperating internally.
The sequential serial kill pill is a proposed reset token, not an instantaneous global clear. The surrounding owner or owners first establish one valid closed contour around the isolated object. If one object surrounds the full perimeter, it can inject alone. If several objects share that perimeter, boundary collaboration must create one ordered transaction.
The token propagates around the perimeter and returns to its injection point. Only that loop closure authorizes injection into the enclosed region. The enclosed subfabric then performs a reset to power-on: it receives the same explicit claimable image used at startup. Open, branched, duplicated, or incomplete contours must abort without a partial reset.
Complete when: injected stuck fixtures are detected without killing a live, progressing transaction.
Complete when: ordinary configuration traffic and stale tokens cannot accidentally initiate a reset.
Complete when: the token visits every perimeter segment once and open or branched contours fail before reset.
Complete when: one-, two-, and four-participant fixtures either agree on one generation or abort safely.
Complete when: the post-reset hash matches a fresh power-on instance and every cell outside the contour remains unchanged.
The simulator needs ordinary controls and durable project state, but the host must remain a driver, observer, serializer, and publisher rather than becoming a hidden semantic interpreter.
Play, pause, single-step, and speed control must govern the real simulator state and the propagation view together. Saving must distinguish the editable source project from a transient runtime checkpoint. Static hosting can publish the application; authenticated server hosting and project storage are a separate service with versions, permissions, and conflict protection.
Complete when: a paused checksum stays fixed and replay from one checkpoint yields the same next state hashes.
Complete when: save-load-save preserves stable block, net, port, ownership, annotation, and machine-state identities.
Complete when: a clean HTTPS session opens a shared project and an unauthorized or stale client cannot overwrite it.
Complete when: rerouting or reopening a project preserves the named object even when its screen geometry changes.
A reader should be able to press a button on a web page and watch the actual fabric receive a signal, trace a net, claim a region, transfer authority, or recover an object.
The series must not be a slideshow sitting next to the simulator. Every button-driven tutorial starts from a deterministic machine snapshot, gives one visible action, and checks one real result. The order begins with constants, wires, a MUX, fanout, names, and ports; it then advances through state, component composition, regional reconfiguration, ownership transfer, and closed-contour recovery.
Complete when: a fresh browser runs a lesson without source edits, hidden key bindings, or a substitute animation.
Complete when: each action produces one named state transition and a machine-state acceptance check.
Complete when: the public sequence includes at least one dynamic regional behavior that ordinary gate lessons do not cover.
Complete when: automated playback reaches every expected checkpoint and back/reset never leaks state between lessons.
Release gateThe goal is to replace Logisim completely in the Cartilage design, simulation, debugging, and teaching workflow, then go beyond it with spatial ownership and runtime replacement.
That claim will be earned when a user can:
Until that bar is met, the accurate phrase is a path toward replacing Logisim in the Cartilage workflow. File-level .circ compatibility is a separate milestone and will not be implied unless it is implemented and tested.
This roadmap is what the Cartilage continuation program needs fundraising, engineering time, review, hosting, and contributors to finish. The work is concrete enough to divide without fragmenting the architecture.
Fund a work package
Support a bounded renderer, protocol, persistence, or lesson package with its completion test defined in advance.
Contribute engineering time
Help implement one task ID, build its fixture, or make its result repeatable across browser and hardware-model layers.
Review and teach
Architecture review, fault injection, accessibility work, curriculum design, classroom pilots, and server infrastructure all move this from prototype proof to a usable engineering environment.
Contact Brian Greenforest about Cartilage
Contributions and funding will be reported against the task IDs above. No percentage will move without a defined denominator, and no item will be marked complete without linked evidence.