Loading files
This file is pinned to the selected release. Download the original to open it in your design tool.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
<title>Build The Cartilage Spatial Circuit Workstation | 28-Part Roadmap</title>
<meta name="description" content="A 28-part engineering program for readable Cartilage circuits, regional reconfiguration, single-writer shared objects, closed-contour recovery, browser projects, and live lessons.">
<meta name="robots" content="index, follow, max-snippet:-1, max-image-preview:large">
<link rel="canonical" href="https://greenforest.io/cartilage-reconfigurable-computing-roadmap.html">
<link rel="icon" href="/favicon.ico">
<meta property="og:title" content="Build The Cartilage Spatial Circuit Workstation: 28 Engineering Packages">
<meta property="og:description" content="Move Cartilage from visible local roles to traceable nets, deterministic regions, recoverable ownership, saved browser projects, and live lessons.">
<meta property="og:type" content="article">
<meta property="og:url" content="https://greenforest.io/cartilage-reconfigurable-computing-roadmap.html">
<meta property="article:published_time" content="2026-07-24">
<meta property="article:modified_time" content="2026-07-28">
<!-- greenforest:share-metadata:start -->
<!-- greenforest:preview-source:media/mux-algebra/cartilage/cartilage-09-complete-configurable-network.png -->
<meta property="og:site_name" content="Greenforest I/O">
<meta property="og:image" content="https://greenforest.io/social-previews/cartilage-reconfigurable-computing-roadmap.png">
<meta property="og:image:secure_url" content="https://greenforest.io/social-previews/cartilage-reconfigurable-computing-roadmap.png">
<meta property="og:image:type" content="image/png">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
<meta property="og:image:alt" content="The 28-part Cartilage spatial circuit workstation roadmap - Greenforest I/O share preview">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:image" content="https://greenforest.io/social-previews/cartilage-reconfigurable-computing-roadmap.png">
<meta name="twitter:image:alt" content="The 28-part Cartilage spatial circuit workstation roadmap - Greenforest I/O share preview">
<script src="/site-analytics.js" defer></script>
<!-- greenforest:share-metadata:end -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "TechArticle",
"headline": "Build The Cartilage Spatial Circuit Workstation: A 28-Part Roadmap",
"description": "A 28-part engineering program for readable Cartilage circuits, regional reconfiguration, single-writer shared objects, closed-contour recovery, browser projects, and live lessons.",
"datePublished": "2026-07-24",
"dateModified": "2026-08-01",
"mainEntityOfPage": "https://greenforest.io/cartilage-reconfigurable-computing-roadmap.html",
"image": "https://greenforest.io/social-previews/cartilage-reconfigurable-computing-roadmap.png",
"author": {
"@type": "Person",
"name": "Brian Greenforest",
"url": "https://greenforest.io/"
},
"publisher": {
"@type": "Organization",
"@id": "https://greenforest.io/#organization",
"name": "Greenforest I/O",
"legalName": "Solid State Pros LLC",
"url": "https://greenforest.io/"
},
"about": {
"@type": "SoftwareSourceCode",
"name": "Cartilage Core",
"codeRepository": "https://github.com/avesus/cartilage-core",
"programmingLanguage": [
"GLSL",
"JavaScript",
"SystemVerilog"
]
},
"isBasedOn": "https://github.com/avesus/cartilage-core/tree/48ff6e004b4b91e968f58493a5456c1b6256ff78",
"keywords": [
"reconfigurable computing",
"Cartilage",
"GLSL",
"spatial computing",
"circuit simulator",
"ownership",
"logic education"
]
}
</script>
<script src="/common-script.js" type="text/javascript"></script>
<style>
body.cartilage-roadmap section,
body.cartilage-roadmap figcaption {
text-align: left;
-webkit-hyphens: none;
hyphens: none;
}
body.cartilage-roadmap section {
margin-bottom: 2.4rem;
}
body.cartilage-roadmap section.abstract {
width: auto;
margin-bottom: 1.25rem;
}
.roadmap-deck {
margin: 0.35rem 0 0.9rem;
font-family: "Spectral", serif;
font-size: 28px;
line-height: 1.22;
}
.roadmap-badge {
display: inline-block;
margin: 0 0.45rem 0.45rem 0;
padding: 0.2rem 0.45rem;
border: 1px solid #6b7873;
border-radius: 3px;
background: #fff;
color: #203c34;
font-family: "Inconsolata", monospace;
font-size: 14px;
font-weight: bold;
letter-spacing: 0.03em;
line-height: 1.2;
text-transform: uppercase;
}
.roadmap-badge--established {
border-color: #087a45;
color: #087a45;
}
.roadmap-badge--proposed {
border-color: #9a5516;
color: #7d4411;
}
.roadmap-summary {
display: grid;
grid-template-columns: minmax(0, 1.2fr) minmax(220px, 0.8fr);
gap: 16px;
margin: 1.2rem 0 1.6rem;
}
.roadmap-summary-card {
min-width: 0;
padding: 0.9rem 1rem;
border: 1px solid #b9c5c0;
background: #fff;
}
.roadmap-summary-card h2,
.roadmap-summary-card h3 {
margin: 0 0 0.45rem;
font-family: "Spectral", serif;
font-size: 22px;
font-weight: normal;
}
body.cartilage-roadmap .roadmap-summary-card h2::before,
body.cartilage-roadmap .roadmap-workstream-header h2::before {
content: none;
counter-increment: none;
}
.roadmap-progress-number {
margin: 0.2rem 0;
color: #16362f;
font-family: "Inconsolata", monospace;
font-size: 34px;
font-weight: bold;
line-height: 1;
}
.roadmap-progress {
display: block;
width: 100%;
height: 18px;
margin: 0.75rem 0 0.45rem;
accent-color: #087a45;
}
.roadmap-progress::-webkit-progress-bar {
border: 1px solid #aebdb6;
background: #edf1ef;
}
.roadmap-progress::-webkit-progress-value {
background: #087a45;
}
.roadmap-progress::-moz-progress-bar {
background: #087a45;
}
.roadmap-summary-card p {
margin: 0.4rem 0;
}
.roadmap-figure {
margin: 1.2rem 0 1.8rem;
padding: 0.65rem;
border: 1px solid #b9c5c0;
background: #fbfaf5;
}
.roadmap-figure a,
.roadmap-figure picture {
display: block;
}
.roadmap-figure img {
display: block;
width: 100%;
height: auto;
border: 0;
background: #fbfaf5;
}
.roadmap-figure figcaption {
margin: 0.65rem 0.2rem 0.15rem;
font-size: 17px;
font-style: normal;
line-height: 1.4;
}
.roadmap-sequence {
display: grid;
grid-template-columns: repeat(5, minmax(0, 1fr));
gap: 8px;
margin: 1rem 0;
padding: 0;
list-style: none;
counter-reset: roadmap-sequence;
}
.roadmap-sequence li {
position: relative;
min-width: 0;
padding: 2.5rem 0.65rem 0.75rem;
border: 1px solid #b9c5c0;
background: #fff;
counter-increment: roadmap-sequence;
font-size: 16px;
line-height: 1.3;
}
.roadmap-sequence li::before {
content: counter(roadmap-sequence);
position: absolute;
top: 0.55rem;
left: 0.65rem;
display: grid;
width: 1.45rem;
height: 1.45rem;
place-items: center;
border: 1px solid #087a45;
border-radius: 50%;
color: #087a45;
font-family: "Inconsolata", monospace;
font-size: 13px;
font-weight: bold;
}
.roadmap-workstream {
margin: 1.2rem 0 2.8rem;
padding-top: 0.2rem;
}
.roadmap-workstream-header {
display: grid;
grid-template-columns: auto minmax(0, 1fr);
gap: 0.75rem;
align-items: start;
margin-bottom: 0.65rem;
}
.roadmap-priority {
display: inline-grid;
min-width: 3.4rem;
min-height: 3.4rem;
place-items: center;
border: 2px solid #16362f;
border-radius: 50%;
color: #16362f;
font-family: "Inconsolata", monospace;
font-size: 15px;
font-weight: bold;
line-height: 1;
}
.roadmap-workstream-header h2 {
margin: 0;
}
.roadmap-workstream-header p {
margin: 0.25rem 0 0;
}
.roadmap-task-list {
display: grid;
gap: 10px;
margin: 1rem 0;
padding: 0;
list-style: none;
}
.roadmap-task {
min-width: 0;
padding: 0.75rem 0.85rem;
border: 1px solid #c4cec9;
border-left: 4px solid #9a5516;
background: #fff;
}
.roadmap-task[data-roadmap-status="active"] {
border-left-color: #175b8f;
}
.roadmap-task[data-roadmap-status="complete"] {
border-left-color: #087a45;
}
.roadmap-task-line {
display: grid;
grid-template-columns: auto minmax(0, 1fr) auto;
gap: 0.65rem;
align-items: start;
}
.roadmap-task-id,
.roadmap-task-status {
font-family: "Inconsolata", monospace;
font-size: 14px;
font-weight: bold;
line-height: 1.35;
text-transform: uppercase;
}
.roadmap-task-id {
color: #43534d;
}
.roadmap-task-status {
padding: 0.12rem 0.35rem;
border: 1px solid #9a5516;
border-radius: 3px;
color: #7d4411;
white-space: nowrap;
}
.roadmap-task[data-roadmap-status="active"] .roadmap-task-status {
border-color: #175b8f;
color: #175b8f;
}
.roadmap-task[data-roadmap-status="complete"] .roadmap-task-status {
border-color: #087a45;
color: #087a45;
}
.roadmap-task strong {
color: #16362f;
}
.roadmap-task-proof {
margin: 0.35rem 0 0;
padding-left: calc(4.6rem + 0.65rem);
color: #43534d;
font-size: 16px;
line-height: 1.35;
}
.roadmap-invariant {
margin: 1rem 0;
padding: 0.8rem 0.9rem;
border-left: 4px solid #087a45;
background: #f6f8f6;
font-family: "Inconsolata", monospace;
font-size: 17px;
line-height: 1.45;
}
.roadmap-warning {
margin: 1rem 0;
padding: 0.8rem 0.9rem;
border-left: 4px solid #9a5516;
background: #faf8f2;
}
.roadmap-warning p {
margin: 0.35rem 0;
}
.roadmap-release-gate {
padding: 0.9rem 1rem;
border: 1px solid #16362f;
background: #f6f8f6;
}
.roadmap-release-gate ul {
margin-bottom: 0.4rem;
}
.roadmap-log {
padding-left: 1.4rem;
}
.roadmap-log li {
margin-bottom: 0.55rem;
}
@media screen and (max-width: 800px) {
.roadmap-summary {
grid-template-columns: minmax(0, 1fr);
}
.roadmap-sequence {
grid-template-columns: minmax(0, 1fr);
}
.roadmap-sequence li {
padding-top: 0.75rem;
padding-left: 3rem;
}
.roadmap-sequence li::before {
top: 0.7rem;
}
}
@media screen and (max-width: 640px) {
.roadmap-deck {
font-size: 24px;
}
.roadmap-workstream-header {
grid-template-columns: minmax(0, 1fr);
}
.roadmap-priority {
min-width: 0;
min-height: 0;
width: fit-content;
padding: 0.3rem 0.5rem;
border-width: 1px;
border-radius: 3px;
}
.roadmap-task-line {
grid-template-columns: auto minmax(0, 1fr);
}
.roadmap-task-status {
grid-column: 2;
width: fit-content;
}
.roadmap-task-proof {
padding-left: 0;
}
.roadmap-figure {
padding: 0.35rem;
}
}
@media print {
.roadmap-task,
.roadmap-summary-card,
.roadmap-figure {
break-inside: avoid;
}
}
</style>
</head>
<body class="article-structured cartilage-roadmap">
<header><h1 class="page-title">Build The Cartilage Spatial Circuit Workstation: A 28-Part Roadmap</h1></header>
<address><time datetime="2026-07-24">July 24, 2026</time> · <time datetime="2026-07-28">Updated July 28, 2026</time></address>
<section class="abstract">
<p class="roadmap-deck">Twenty-eight concrete engineering packages turn Cartilage into a readable, controllable, resilient, shareable, and teachable spatial circuit workstation.</p>
<p>Cartilage already exposes local Boolean roles, routing, ownership, and configuration. This program adds a disciplined component renderer, complete net tracing, a region-scale configuration interface, single-writer sharing, closed-contour recovery, durable browser projects, and lessons that operate the real fabric.</p>
<p>The build order moves from visibility to regional authority, recovery, persistence, and teaching so every later capability rests on a workstation an engineer can inspect and control.</p>
<p><strong>Current foundation:</strong> Cartilage Core serially installs one exact <code>6×6</code> child region, while the MUX visual edition runs already placed application circuits.</p>
<p><strong>Twenty-eight-part build program:</strong> the diagrams specify the target mechanisms and interactions for each named work package.</p>
<p><strong>Roadmap engine:</strong> Cartilage Core <a href="https://github.com/avesus/cartilage-core/tree/48ff6e004b4b91e968f58493a5456c1b6256ff78" target="_blank" rel="noopener"><code>48ff6e0</code></a>.</p>
<div class="cta-row" role="group" aria-label="Start building or learning the Cartilage workstation">
<a class="cta-link" href="/cartilage-core.html">Run the current Core</a>
<a class="cta-link" href="https://github.com/avesus/cartilage-core" target="_blank" rel="noopener">Build from public source</a>
<a class="cta-link" href="/cartilage/">Follow the Cartilage learning path</a>
<a class="cta-link" href="/contact.html">Fund or build a work package</a>
</div>
</section>
<section aria-labelledby="roadmap-progress-heading">
<div class="roadmap-summary" data-roadmap-progress>
<div class="roadmap-summary-card">
<h2 id="roadmap-progress-heading">Twenty-Eight Engineering Packages</h2>
<p class="roadmap-progress-number" data-roadmap-progress-count><span data-roadmap-complete>0</span>/<span data-roadmap-total>28</span> complete</p>
<progress class="roadmap-progress" data-roadmap-progress-fill value="0" max="28" aria-label="Delivered Cartilage workstation packages out of 28">0 of 28</progress>
<p><strong><span data-roadmap-remaining>28</span> named engine packages form the current build program.</strong></p>
</div>
<div class="roadmap-summary-card">
<h3>Milestone Accounting</h3>
<p><strong>Planned</strong> identifies a named engineering package.</p>
<p><strong>Active</strong> links that package to an implementation branch or issue.</p>
<p><strong>Complete</strong> joins merged code with a repeatable run and a public capture or report.</p>
<p><small>Program review: <time datetime="2026-07-24">July 24, 2026</time>.</small></p>
</div>
</div>
</section>
<figure class="roadmap-figure">
<a href="/media/cartilage-roadmap/diagrams/08-dependency-roadmap-status.svg">
<picture>
<source media="(max-width: 700px)" srcset="/media/cartilage-roadmap/diagrams/08-dependency-roadmap-status-mobile.svg">
<img src="/media/cartilage-roadmap/diagrams/08-dependency-roadmap-status.svg" width="1200" height="720" loading="eager" decoding="async" alt="Cartilage build sequence from component and net visibility through regional claiming, single-writer ownership, contour recovery, workstation controls, and live lessons">
</picture>
</a>
<figcaption>Readable components and nets unlock deterministic regional authority; that authority supports single-writer sharing, bounded recovery, durable projects, and live instruction.</figcaption>
</figure>
<main>
<section id="baseline">
<h2>Start From A Running Browser And Hardware Core</h2>
<p><a href="/cartilage-core.html">Cartilage Core</a> publishes a local WebGL1/GLSL transition, independent SystemVerilog, and one <code>6×6</code> image streamed as 252 payload bits plus one apply pulse. The installed region realizes an interior-MUX AND circuit.</p>
<p><a href="/mux-algebra.html">MUX Algebra</a> supplies 34 one-to-one abstract and Cartilage views with 606 shader-readback cases across already placed and routed circuits. A general placer/router and a serial installer for the wider catalog form separate packages in this program.</p>
<p>The live <a href="/cartilage-nested-instantiation-demo.html">nested-instantiation fabric</a> establishes the composition model: a parent, a local port, a bounded daughter region, and roles rewritten through the fabric.</p>
<div class="article-fact-table" role="table" aria-label="Cartilage running foundation and named build packages">
<div class="article-fact-row" role="row">
<div class="article-fact-key" role="cell">Running foundation</div>
<div role="cell">Local roles, parent directions, one fixed ownership-tree postorder, one exact region install, application-plane patches, and live nested-region behavior.</div>
</div>
<div class="article-fact-row" role="row">
<div class="article-fact-key" role="cell">Build program</div>
<div role="cell">Block inspection, named net tracing, a multi-cell root, deterministic claiming, shared-object authority, contour recovery, hosted persistence, a lesson shell, and the full Logisim-replacement workflow.</div>
</div>
</div>
</section>
<section id="priority-order">
<h2>Build Visibility Before Authority And Recovery</h2>
<p>Readable components, named nets, and step controls give engineers the instruments needed to develop ownership and recovery protocols. Deterministic regional claiming then supplies authority for shared objects and contour recovery. Hosting and lessons expose the same engine as a product and teaching system.</p>
<ol class="roadmap-sequence">
<li><strong>See and control the circuit.</strong><br>Render blocks, ports, nets, fanout, pause, and step.</li>
<li><strong>Claim a complete region.</strong><br>Use a multi-cell root and deterministic spanning tree.</li>
<li><strong>Share one object through one writer.</strong><br>Overlay logical references on a unique physical parent forest.</li>
<li><strong>Recover a bounded island.</strong><br>Send one serial token around a closed contour.</li>
<li><strong>Publish and teach the running system.</strong><br>Save, host, replay, and drive live lessons.</li>
</ol>
</section>
<section class="roadmap-workstream" id="ergonomics">
<div class="roadmap-workstream-header">
<span class="roadmap-priority" aria-label="Priority zero">P0</span>
<div>
<h2>Render Named Components And Trace Every Net End To End</h2>
<p>The first workstation release turns author-defined component structure into visible blocks, ports, routes, and selectable nets while keeping regional ownership independent.</p>
</div>
</div>
<p>A defining block attaches a stable <strong>non-reconfigurable component tag</strong> to every cell in its subtree. The tag supplies display and authoring metadata while the continuous ownership tree and its writer authority remain unchanged. From tag membership, the renderer derives block backgrounds, exact contours, hover and focus states, labels, and inspection data.</p>
<figure class="roadmap-figure">
<a href="/media/cartilage-roadmap/diagrams/01-component-tags-contours-hover.svg">
<picture>
<source media="(max-width: 700px)" srcset="/media/cartilage-roadmap/diagrams/01-component-tags-contours-hover-mobile.svg">
<img src="/media/cartilage-roadmap/diagrams/01-component-tags-contours-hover.svg" width="1200" height="760" loading="lazy" decoding="async" alt="Cartilage component-tag design with block backgrounds, exact contours, hover selection, and one continuous ownership tree across tagged subcomponents">
</picture>
</a>
<figcaption>Component tags create human and tool-facing structure while parent pointers continue through every tagged subtree as one ownership tree.</figcaption>
</figure>
<p>A continuous-line mode turns each unbranched net into one readable route. Static arrowheads show direction during pause, print, and reduced motion; optional slow interframes expose the modeled propagation order. Selecting any segment reveals the complete named net, its single driver, every branch and sink, and each component contour it crosses.</p>
<figure class="roadmap-figure">
<a href="/media/cartilage-roadmap/diagrams/02-bubbles-direction-fanout-trace.svg">
<picture>
<source media="(max-width: 700px)" srcset="/media/cartilage-roadmap/diagrams/02-bubbles-direction-fanout-trace-mobile.svg">
<img src="/media/cartilage-roadmap/diagrams/02-bubbles-direction-fanout-trace.svg" width="1200" height="760" loading="lazy" decoding="async" alt="Cartilage named-net design tracing one directional input across component regions to three fanout sinks">
</picture>
</a>
<figcaption>Separate cues carry value, activity, and direction, while the fanout highlight follows the circuit’s logical connectivity from one driver to every sink.</figcaption>
</figure>
<ul class="roadmap-task-list">
<li class="roadmap-task" data-roadmap-task data-roadmap-id="ERG-01" data-roadmap-status="planned">
<div class="roadmap-task-line"><span class="roadmap-task-id">ERG-01</span><span><strong>Tag exact component subtrees.</strong> Let a defining block name every member cell while the enclosing ownership tree continues through it.</span><span class="roadmap-task-status">Planned</span></div>
<p class="roadmap-task-proof"><strong>Completion test:</strong> Stable membership survives placement and simulation, and every parent chain retains its original path.</p>
</li>
<li class="roadmap-task" data-roadmap-task data-roadmap-id="ERG-02" data-roadmap-status="planned">
<div class="roadmap-task-line"><span class="roadmap-task-id">ERG-02</span><span><strong>Select blocks by mouse, keyboard, or touch.</strong> Give every tagged component a distinct background, hover, focus, and selection treatment.</span><span class="roadmap-task-status">Planned</span></div>
<p class="roadmap-task-proof"><strong>Completion test:</strong> Selection reveals the block name, cells, ports, and runtime state while every signal remains visible.</p>
</li>
<li class="roadmap-task" data-roadmap-task data-roadmap-id="ERG-03" data-roadmap-status="planned">
<div class="roadmap-task-line"><span class="roadmap-task-id">ERG-03</span><span><strong>Draw exact component contours.</strong> Follow every change in adjacent cell tags through concave and nested shapes.</span><span class="roadmap-task-status">Planned</span></div>
<p class="roadmap-task-proof"><strong>Completion test:</strong> Adjacent blocks share one readable seam, and nested blocks keep distinct hit targets.</p>
</li>
<li class="roadmap-task" data-roadmap-task data-roadmap-id="ERG-04" data-roadmap-status="planned">
<div class="roadmap-task-line"><span class="roadmap-task-id">ERG-04</span><span><strong>Render unbranched wires as continuous routes.</strong> Keep crossings, junctions, MUXes, and values distinct at every zoom.</span><span class="roadmap-task-status">Planned</span></div>
<p class="roadmap-task-proof"><strong>Completion test:</strong> One route remains legible in overview and close inspection with no cell-by-cell bubble chain.</p>
</li>
<li class="roadmap-task" data-roadmap-task data-roadmap-id="ERG-05" data-roadmap-status="planned">
<div class="roadmap-task-line"><span class="roadmap-task-id">ERG-05</span><span><strong>Animate modeled propagation order.</strong> Tie optional slow interframes to real engine steps and retain static arrows for pause, print, and reduced motion.</span><span class="roadmap-task-status">Planned</span></div>
<p class="roadmap-task-proof"><strong>Completion test:</strong> One recorded step sequence produces the same visible order on every replay and labels that order as modeled time.</p>
</li>
<li class="roadmap-task" data-roadmap-task data-roadmap-id="ERG-06" data-roadmap-status="planned">
<div class="roadmap-task-line"><span class="roadmap-task-id">ERG-06</span><span><strong>Trace fanout from any segment or port.</strong> Highlight the full connected net across branches and component regions.</span><span class="roadmap-task-status">Planned</span></div>
<p class="roadmap-task-proof"><strong>Completion test:</strong> A one-driver, three-sink circuit identifies exactly those endpoints and excludes a crossing with no junction.</p>
</li>
<li class="roadmap-task" data-roadmap-task data-roadmap-id="ERG-07" data-roadmap-status="planned">
<div class="roadmap-task-line"><span class="roadmap-task-id">ERG-07</span><span><strong>Name every net and port.</strong> Preserve wire labels and distinguish input, output, and configuration ports through shape, text, and color.</span><span class="roadmap-task-status">Planned</span></div>
<p class="roadmap-task-proof"><strong>Completion test:</strong> Labels clear the fabric marks, follow rerouted nets, and survive save and reload.</p>
</li>
</ul>
</section>
<section class="roadmap-workstream" id="region-root">
<div class="roadmap-workstream-header">
<span class="roadmap-priority" aria-label="Priority zero">P0</span>
<div>
<h2>Give Every Region A Complete Multi-Lane Interface</h2>
<p>A practical region root needs enough physical capacity for configuration clock, data in, data out, and its ownership-tree connection.</p>
</div>
</div>
<p>One logical root can occupy several physical cells or lanes while presenting independent configuration clock, data-in, data-out, and ownership-tree channels. Measurement across supported orientations will determine the minimum footprint; the <code>2×2</code> diagram supplies the first candidate geometry.</p>
<figure class="roadmap-figure">
<a href="/media/cartilage-roadmap/diagrams/03-one-cell-rp-channel-contract.svg">
<picture>
<source media="(max-width: 700px)" srcset="/media/cartilage-roadmap/diagrams/03-one-cell-rp-channel-contract-mobile.svg">
<img src="/media/cartilage-roadmap/diagrams/03-one-cell-rp-channel-contract.svg" width="1200" height="760" loading="lazy" decoding="async" alt="Cartilage region-interface design comparing one root cell with a multi-cell logical root carrying separate clock, data-in, data-out, and ownership-tree connections">
</picture>
</a>
<figcaption>The logical root spans enough physical cells to expose every configuration channel and the ownership-tree trunk directly.</figcaption>
</figure>
<p>The reviewed transition rotates a cell’s parent direction while it searches for a live configuration signal. The roadmap replaces open-ended search with an explicit claimable power-on image and an ordered spanning-tree wavefront whose edge arbitration and child order produce the same region on every run.</p>
<figure class="roadmap-figure">
<a href="/media/cartilage-roadmap/diagrams/04-root-macro-ordered-spanning-tree.svg">
<picture>
<source media="(max-width: 700px)" srcset="/media/cartilage-roadmap/diagrams/04-root-macro-ordered-spanning-tree-mobile.svg">
<img src="/media/cartilage-roadmap/diagrams/04-root-macro-ordered-spanning-tree.svg" width="1200" height="760" loading="lazy" decoding="async" alt="Cartilage multi-cell root design with a deterministic wavefront claiming one closed component, assigning one adjacent parent per cell, and producing one postorder visit">
</picture>
</a>
<figcaption>The ordered claim visits each selected cell once, assigns every non-root cell one adjacent parent, rejects cycles and orphans, and reproduces one postorder stream.</figcaption>
</figure>
<ul class="roadmap-task-list">
<li class="roadmap-task" data-roadmap-task data-roadmap-id="ROOT-01" data-roadmap-status="planned">
<div class="roadmap-task-line"><span class="roadmap-task-id">ROOT-01</span><span><strong>Build the multi-cell root interface.</strong> Give one contiguous logical root named clock, data-in, data-out, and tree connections.</span><span class="roadmap-task-status">Planned</span></div>
<p class="roadmap-task-proof"><strong>Completion test:</strong> Every channel drives and reads independently through all supported orientations.</p>
</li>
<li class="roadmap-task" data-roadmap-task data-roadmap-id="ROOT-02" data-roadmap-status="planned">
<div class="roadmap-task-line"><span class="roadmap-task-id">ROOT-02</span><span><strong>Install an explicit power-on claim state.</strong> Initialize every unclaimed cell with a defined reconfiguration role and deterministic discovery behavior.</span><span class="roadmap-task-status">Planned</span></div>
<p class="roadmap-task-proof"><strong>Completion test:</strong> Repeated full resets produce one state hash, and every cell exits parent search.</p>
</li>
<li class="roadmap-task" data-roadmap-task data-roadmap-id="ROOT-03" data-roadmap-status="planned">
<div class="roadmap-task-line"><span class="roadmap-task-id">ROOT-03</span><span><strong>Claim regions through an ordered spanning tree.</strong> Specify edge arbitration, parent rotation, fixed child order, and the closing wavefront.</span><span class="roadmap-task-status">Planned</span></div>
<p class="roadmap-task-proof"><strong>Completion test:</strong> Every parent chain reaches one root, each cell appears once, and repeated runs emit one visit order.</p>
</li>
<li class="roadmap-task" data-roadmap-task data-roadmap-id="ROOT-04" data-roadmap-status="planned">
<div class="roadmap-task-line"><span class="roadmap-task-id">ROOT-04</span><span><strong>Claim, configure, and read a whole region.</strong> Extend beyond the root footprint through all three configuration channels.</span><span class="roadmap-task-status">Planned</span></div>
<p class="roadmap-task-proof"><strong>Completion test:</strong> One trace records the claim, deterministic load, returned output, and every cell attached to the root.</p>
</li>
</ul>
</section>
<section class="roadmap-workstream" id="ownership-overlap">
<div class="roadmap-workstream-header">
<span class="roadmap-priority" aria-label="Priority one">P1</span>
<div>
<h2>Share One Object Across Many Compositions With One Writer</h2>
<p>Several surrounding objects can reference and manage one shared object while a single writer capability keeps mutation deterministic.</p>
</div>
</div>
<p><strong>Ownership overlap</strong> places logical containment and shared application references above a physical ownership forest. In the <code>4×4</code> circuit, every non-root cell keeps exactly one adjacent parent, while exactly one surrounding block holds the current writer capability.</p>
<p>A passable ownership pointer moves that unique mutation authority through an ordered handoff: fence the old writer, acknowledge the new generation, reject stale pointers, and release the old capability.</p>
<figure class="roadmap-figure">
<a href="/media/cartilage-roadmap/diagrams/05-overlap-one-writer-handoff.svg">
<picture>
<source media="(max-width: 700px)" srcset="/media/cartilage-roadmap/diagrams/05-overlap-one-writer-handoff-mobile.svg">
<img src="/media/cartilage-roadmap/diagrams/05-overlap-one-writer-handoff.svg" width="1200" height="760" loading="lazy" decoding="async" alt="Cartilage 4 by 4 shared-object design with adjacent block references and one writer token transferring atomically from block B to block D">
</picture>
</a>
<figcaption>Logical sharing connects the object to several compositions, while its physical parent tree and mutable writer remain unique.</figcaption>
</figure>
<p class="roadmap-invariant">physical parents per non-root cell = 1<br>active writers per mutable shared object ≤ 1<br>writer transfer = fence → acknowledge → generation change → release</p>
<ul class="roadmap-task-list">
<li class="roadmap-task" data-roadmap-task data-roadmap-id="OWN-01" data-roadmap-status="planned">
<div class="roadmap-task-line"><span class="roadmap-task-id">OWN-01</span><span><strong>Overlay sharing on the physical parent forest.</strong> Represent overlapping logical blocks and references while each cell keeps one physical parent edge.</span><span class="roadmap-task-status">Planned</span></div>
<p class="roadmap-task-proof"><strong>Completion test:</strong> The inspector displays both graphs, and every physical parent walk reaches exactly one root.</p>
</li>
<li class="roadmap-task" data-roadmap-task data-roadmap-id="OWN-02" data-roadmap-status="planned">
<div class="roadmap-task-line"><span class="roadmap-task-id">OWN-02</span><span><strong>Enforce one writer capability.</strong> Serialize conflicting commits for every mutable shared object.</span><span class="roadmap-task-status">Planned</span></div>
<p class="roadmap-task-proof"><strong>Completion test:</strong> Exactly one of two competing writes commits, and the object rejects every stale generation.</p>
</li>
<li class="roadmap-task" data-roadmap-task data-roadmap-id="OWN-03" data-roadmap-status="planned">
<div class="roadmap-task-line"><span class="roadmap-task-id">OWN-03</span><span><strong>Transfer writer authority atomically.</strong> Fence, acknowledge, advance the generation, and release while preserving the stored object.</span><span class="roadmap-task-status">Planned</span></div>
<p class="roadmap-task-proof"><strong>Completion test:</strong> Exactly one writer exists before and after the handoff, and every interrupted step follows a deterministic recovery path.</p>
</li>
<li class="roadmap-task" data-roadmap-task data-roadmap-id="OWN-04" data-roadmap-status="planned">
<div class="roadmap-task-line"><span class="roadmap-task-id">OWN-04</span><span><strong>Run the <code>4×4</code> shared-object circuit.</strong> Surround one subfabric with four blocks and pass the writer among them.</span><span class="roadmap-task-status">Planned</span></div>
<p class="roadmap-task-proof"><strong>Completion test:</strong> The traversal visits all 16 cells once, reader removal and writer transfer preserve the object, and the overlay names every relationship.</p>
</li>
</ul>
</section>
<section class="roadmap-workstream" id="kill-pill">
<div class="roadmap-workstream-header">
<span class="roadmap-priority" aria-label="Priority one">P1</span>
<div>
<h2>Reset A Stuck Ownership Island From Its Closed Perimeter</h2>
<p>A closed-contour serial token gives surrounding owners a bounded way to recover a self-pointing or cyclic island from outside that island.</p>
</div>
</div>
<p>The roadmap’s <strong>sequential serial kill pill</strong> travels as a bounded reset token rather than a global clear. One surrounding owner can establish and inject through a complete perimeter; several surrounding owners collaborate on one ordered transaction.</p>
<p>The token traverses the perimeter and returns to its injection point before it authorizes the enclosed reset. The subfabric then receives the same explicit claimable image as power-on. Open, branched, duplicated, or incomplete contours abort the transaction before any cell changes.</p>
<figure class="roadmap-figure">
<a href="/media/cartilage-roadmap/diagrams/06-cooperative-kill-pill-reset.svg">
<picture>
<source media="(max-width: 700px)" srcset="/media/cartilage-roadmap/diagrams/06-cooperative-kill-pill-reset-mobile.svg">
<img src="/media/cartilage-roadmap/diagrams/06-cooperative-kill-pill-reset.svg" width="1200" height="760" loading="lazy" decoding="async" alt="Cartilage serial recovery design with surrounding blocks completing one closed perimeter before resetting the enclosed ownership island">
</picture>
</a>
<figcaption>The closed perimeter carries reset authority; a complete traversal and acknowledgement precede every enclosed cell change.</figcaption>
</figure>
<ul class="roadmap-task-list">
<li class="roadmap-task" data-roadmap-task data-roadmap-id="REC-01" data-roadmap-status="planned">
<div class="roadmap-task-line"><span class="roadmap-task-id">REC-01</span><span><strong>Identify a recoverable stuck island.</strong> Detect a self-parenting or cyclic enclosed object after external application connections leave or quiesce.</span><span class="roadmap-task-status">Planned</span></div>
<p class="roadmap-task-proof"><strong>Completion test:</strong> The detector separates injected stuck circuits from live transactions that continue to make progress.</p>
</li>
<li class="roadmap-task" data-roadmap-task data-roadmap-id="REC-02" data-roadmap-status="planned">
<div class="roadmap-task-line"><span class="roadmap-task-id">REC-02</span><span><strong>Encode the serial recovery token.</strong> Specify its start, direction, generation, duplicate handling, acknowledgement, and timeout states.</span><span class="roadmap-task-status">Planned</span></div>
<p class="roadmap-task-proof"><strong>Completion test:</strong> Ordinary configuration traffic and stale generations never initiate a reset.</p>
</li>
<li class="roadmap-task" data-roadmap-task data-roadmap-id="REC-03" data-roadmap-status="planned">
<div class="roadmap-task-line"><span class="roadmap-task-id">REC-03</span><span><strong>Construct one closed contour.</strong> Give every boundary member exactly one predecessor and one successor along the shortest valid perimeter.</span><span class="roadmap-task-status">Planned</span></div>
<p class="roadmap-task-proof"><strong>Completion test:</strong> The token visits each perimeter segment once, while open and branched contours stop before reset.</p>
</li>
<li class="roadmap-task" data-roadmap-task data-roadmap-id="REC-04" data-roadmap-status="planned">
<div class="roadmap-task-line"><span class="roadmap-task-id">REC-04</span><span><strong>Coordinate every surrounding owner.</strong> Unify single-owner and multi-owner perimeters into one recovery generation.</span><span class="roadmap-task-status">Planned</span></div>
<p class="roadmap-task-proof"><strong>Completion test:</strong> One-, two-, and four-participant circuits agree on one generation or stop with every enclosed cell unchanged.</p>
</li>
<li class="roadmap-task" data-roadmap-task data-roadmap-id="REC-05" data-roadmap-status="planned">
<div class="roadmap-task-line"><span class="roadmap-task-id">REC-05</span><span><strong>Close the loop and restore power-on state.</strong> Let the returning token reset the enclosed object and install its defined claimable image.</span><span class="roadmap-task-status">Planned</span></div>
<p class="roadmap-task-proof"><strong>Completion test:</strong> The reset hash matches a fresh power-on instance, and every cell outside the contour retains its state.</p>
</li>
</ul>
</section>
<section class="roadmap-workstream" id="simulator-shell">
<div class="roadmap-workstream-header">
<span class="roadmap-priority" aria-label="Priority two">P2</span>
<div>
<h2>Turn The Cartilage Engine Into A Practical Browser Workstation</h2>
<p>Direct controls and durable project state make the simulator usable, while the host drives, observes, serializes, and publishes the same fabric semantics.</p>
</div>
</div>
<p>Play, pause, single-step, and speed controls govern both engine state and propagation view. Saving keeps the editable source project distinct from an optional runtime checkpoint. Static hosting publishes the application, while an authenticated project service adds versions, permissions, quotas, and conflict-safe writes.</p>
<figure class="roadmap-figure">
<a href="/media/cartilage-roadmap/diagrams/07-simulator-shell-lessons.svg">
<picture>
<source media="(max-width: 700px)" srcset="/media/cartilage-roadmap/diagrams/07-simulator-shell-lessons-mobile.svg">
<img src="/media/cartilage-roadmap/diagrams/07-simulator-shell-lessons.svg" width="1200" height="760" loading="lazy" decoding="async" alt="Cartilage browser workstation design with time controls, project persistence, a named-net inspector, sharing, and lesson buttons connected to the engine">
</picture>
</a>
<figcaption>Run control, persistence, publication, and lessons operate one engine; each lesson button causes one visible state transition and one engine result.</figcaption>
</figure>
<ul class="roadmap-task-list">
<li class="roadmap-task" data-roadmap-task data-roadmap-id="SIM-01" data-roadmap-status="planned">
<div class="roadmap-task-line"><span class="roadmap-task-id">SIM-01</span><span><strong>Control time directly.</strong> Add play, pause, step, reset, speed, an engine tick counter, and deterministic resume.</span><span class="roadmap-task-status">Planned</span></div>
<p class="roadmap-task-proof"><strong>Completion test:</strong> Pause holds one checksum, and checkpoint replay yields the same sequence of state hashes.</p>
</li>
<li class="roadmap-task" data-roadmap-task data-roadmap-id="SIM-02" data-roadmap-status="planned">
<div class="roadmap-task-line"><span class="roadmap-task-id">SIM-02</span><span><strong>Save and reopen complete circuits.</strong> Serialize the versioned editable project separately from an optional runtime checkpoint.</span><span class="roadmap-task-status">Planned</span></div>
<p class="roadmap-task-proof"><strong>Completion test:</strong> Save-load-save preserves every block, net, port, ownership, annotation, and machine-state identity.</p>
</li>
<li class="roadmap-task" data-roadmap-task data-roadmap-id="SIM-03" data-roadmap-status="planned">
<div class="roadmap-task-line"><span class="roadmap-task-id">SIM-03</span><span><strong>Host and share versioned projects.</strong> Connect the browser app to permissions, quotas, generations, and conflict-safe writes.</span><span class="roadmap-task-status">Planned</span></div>
<p class="roadmap-task-proof"><strong>Completion test:</strong> A clean HTTPS session opens the shared project, and the service rejects unauthorized or stale writes.</p>
</li>
<li class="roadmap-task" data-roadmap-task data-roadmap-id="SIM-04" data-roadmap-status="planned">
<div class="roadmap-task-line"><span class="roadmap-task-id">SIM-04</span><span><strong>Persist the inspection view.</strong> Store labels, colors, probes, block treatments, and net identities as project annotations beside installed cell state.</span><span class="roadmap-task-status">Planned</span></div>
<p class="roadmap-task-proof"><strong>Completion test:</strong> Rerouting and reopening preserve each named object across screen-geometry changes.</p>
</li>
</ul>
</section>
<section class="roadmap-workstream" id="learning-series">
<div class="roadmap-workstream-header">
<span class="roadmap-priority" aria-label="Priority three">P3</span>
<div>
<h2>Teach Cartilage Through Buttons That Drive The Real Fabric</h2>
<p>A reader presses one button and watches the engine inject a signal, trace a net, claim a region, transfer authority, or recover an object.</p>
</div>
</div>
<p>Every lesson starts from a deterministic engine snapshot, triggers one visible action, and reads one machine result. The sequence begins with constants, wires, a MUX, fanout, names, and ports, then advances through state, composition, regional reconfiguration, writer transfer, and closed-contour recovery.</p>
<ul class="roadmap-task-list">
<li class="roadmap-task" data-roadmap-task data-roadmap-id="LEARN-01" data-roadmap-status="planned">
<div class="roadmap-task-line"><span class="roadmap-task-id">LEARN-01</span><span><strong>Embed the workstation engine in every lesson.</strong> Route tutorial buttons into the same Cartilage simulator used for circuit work.</span><span class="roadmap-task-status">Planned</span></div>
<p class="roadmap-task-proof"><strong>Completion test:</strong> A fresh browser runs the lesson through visible controls and the live engine.</p>
</li>
<li class="roadmap-task" data-roadmap-task data-roadmap-id="LEARN-02" data-roadmap-status="planned">
<div class="roadmap-task-line"><span class="roadmap-task-id">LEARN-02</span><span><strong>Inject signals through visible controls.</strong> Connect start, back, next, check, reset, play, and pause to named ports and nets.</span><span class="roadmap-task-status">Planned</span></div>
<p class="roadmap-task-proof"><strong>Completion test:</strong> Each action produces one named state transition and one engine-state result.</p>
</li>
<li class="roadmap-task" data-roadmap-task data-roadmap-id="LEARN-03" data-roadmap-status="planned">
<div class="roadmap-task-line"><span class="roadmap-task-id">LEARN-03</span><span><strong>Teach spatial behavior beyond gates.</strong> Lead readers from selector fanout into feedback, named components, regional replacement, shared objects, writer handoff, and recovery.</span><span class="roadmap-task-status">Planned</span></div>
<p class="roadmap-task-proof"><strong>Completion test:</strong> The public sequence includes dynamic regional behavior beyond conventional gate lessons.</p>
</li>
<li class="roadmap-task" data-roadmap-task data-roadmap-id="LEARN-04" data-roadmap-status="planned">
<div class="roadmap-task-line"><span class="roadmap-task-id">LEARN-04</span><span><strong>Make every lesson repeatable and accessible.</strong> Package fixed starting states, target hashes, independent reset, keyboard operation, mobile layouts, and saved progress.</span><span class="roadmap-task-status">Planned</span></div>
<p class="roadmap-task-proof"><strong>Completion test:</strong> Automated playback reaches every expected checkpoint, and back or reset starts each lesson from its own state.</p>
</li>
</ul>
</section>
<section id="logisim-target">
<h2>Replace The Complete Logisim Workflow And Add Runtime Regions</h2>
<div class="roadmap-release-gate">
<p>The workstation release combines Cartilage design, simulation, debugging, and teaching in one browser workflow, then extends that workflow through spatial ownership and runtime regional replacement.</p>
<p>The complete release lets a user:</p>
<ul>
<li>construct and revise constants, wires, crossings, MUXes, state, components, and named ports;</li>
<li>trace fanout, pause, step, probe, label, and compare circuit behavior;</li>
<li>save, reopen, share, and continue editing a browser project;</li>
<li>rebuild the MUX catalog, an adder, a sequential circuit, and the bubbles-free serial multiplier; and</li>
<li>claim regions, transfer writer authority, and recover bounded ownership islands.</li>
</ul>
<p>The 28 packages on this page form the implementation path into that release. A separate interoperability package can add tested file-level <code>.circ</code> compatibility.</p>
</div>
</section>
<section id="support">
<h2>Fund Or Build One Concrete Cartilage Work Package</h2>
<p>The Cartilage workstation program offers bounded packages across GLSL rendering, Web UI, protocols, persistence, fault recovery, verification, hosting, accessibility, and curriculum design.</p>
<div class="capability-grid">
<article class="capability-card">
<p class="eyebrow">Fund a defined package</p>
<h3>Deliver One Named Milestone</h3>
<p>Support a renderer, protocol, persistence, recovery, or lesson package with its runnable result specified in advance.</p>
</article>
<article class="capability-card">
<p class="eyebrow">Contribute engineering</p>
<h3>Build GLSL, Web UI, Protocol, Or Test Infrastructure</h3>
<p>Implement one task ID, construct its circuit, and make the result repeatable across browser and hardware-model layers.</p>
</article>
<article class="capability-card capability-card-wide">
<p class="eyebrow">Review, stress, and teach</p>
<h3>Strengthen The Machine And Its Learning Path</h3>
<p>Architecture review, fault injection, accessibility work, curriculum design, classroom pilots, and server infrastructure turn the spatial system into a widely usable engineering environment.</p>
</article>
</div>
<p><a class="cta-link" href="/contact.html">Choose a Cartilage work package with Brian Greenforest</a></p>
<p>Every contribution attaches to a task ID, implementation branch, repeatable run, and public result so collaborators can see exactly what their work unlocks.</p>
</section>
<section id="updates">
<h2>Program Timeline</h2>
<ol class="roadmap-log">
<li><time datetime="2026-07-24">July 24, 2026</time>: the 28-part program opened across circuit rendering, regional roots, shared-object authority, contour recovery, the browser workstation, and live lessons.</li>
</ol>
</section>
</main>
<div class="reader-note cartilage-demo-access">
<p><strong>Try Cartilage:</strong> <a href="/cartilage-multiplier-demo/">Run the open one-slot multiplier</a>.</p>
<p>To edit, load, save, share, and follow the browser, Raspberry Pi, and FPGA streaming work, <a href="https://www.linkedin.com/in/briangreenforest" target="_blank" rel="noopener">request the private demo username and password on LinkedIn</a>.</p>
</div>
<nav class="article-links" aria-label="Continue from the Cartilage workstation roadmap">
<p>Run the foundation next:</p>
<a href="/cartilage-core.html">Cartilage Core: Reconfigurable Fabric In WebGL And SystemVerilog</a>
<p>Follow the bounded browser and RTL mechanism through one exact 252-bit regional installation.</p>
<p>Then build the conceptual sequence:</p>
<a href="/cartilage/">The Complete Cartilage Learning Path</a>
<p>Move from one MUX through physical distribution, state, timing, composition, ownership, and runtime regions.</p>
</nav>
<script>
(() => {
const tasks = Array.from(document.querySelectorAll("[data-roadmap-task]"));
const counts = { planned: 0, active: 0, complete: 0 };
for (const task of tasks) {
const status = task.getAttribute("data-roadmap-status");
if (Object.prototype.hasOwnProperty.call(counts, status)) {
counts[status] += 1;
}
}
const total = tasks.length;
const remaining = total - counts.complete;
document.querySelectorAll("[data-roadmap-total]").forEach((node) => {
node.textContent = String(total);
});
document.querySelectorAll("[data-roadmap-complete]").forEach((node) => {
node.textContent = String(counts.complete);
});
document.querySelectorAll("[data-roadmap-remaining]").forEach((node) => {
node.textContent = String(remaining);
});
const fill = document.querySelector("[data-roadmap-progress-fill]");
if (fill) {
fill.max = total;
fill.value = counts.complete;
fill.textContent = `${counts.complete} of ${total}`;
fill.setAttribute("aria-label", `Cartilage roadmap: ${counts.complete} of ${total} work items complete`);
}
})();
</script>
</body>
</html>
44b2ffa79This file is pinned to the selected release. Download the original to open it in your design tool.