Refine portable fleet product surface

This commit is contained in:
thePR0M3TH3AN committed 2026-09-27 19:54:16 -04:00
1 parent 9e2a6100a3
commit 218ce3fbc8
5 files changed
+47 -21

No files matched your search

@@ -1,6 +1,7 @@
test_integrity_note:
change_type:
- new_tests
- spec_correction
scenarios:
- id: SCN-init-read-only
given: a normal Git repository with committed project files
@@ -217,7 +218,7 @@ test_integrity_note:
- id: SCN-product-site
given: the redesigned TORCH public surface
when: its product story and local-console boundary are inspected
then: it explains project-derived fleets, exact-commit routing, honest open gates, and measured context claims without obsolete product language
then: it explains project-derived fleets, exact-commit routing, honest open gates, and measured context claims without obsolete product language, and onboarding uses the installed public launcher rather than source-checkout internals
- id: SCN-architecture-decisions
given: the ten implementation decisions required by the portable Fleet specification
when: the repository architecture ledger is inspected
+27 -7
View File
@@ -33,26 +33,46 @@ routeButton?.addEventListener('click', () => {
const commands = {
both: [
'node bin/torch.mjs bootstrap \\',
'torch bootstrap \\',
' --repo /path/to/project \\',
' --spec /path/to/product-spec.md \\',
' --output fleet-design-brief.json \\',
' --json',
].join('\n'),
repo: [
'node bin/torch.mjs bootstrap \\',
'torch bootstrap \\',
' --repo /path/to/project \\',
' --output fleet-design-brief.json \\',
' --json',
].join('\n'),
};
const command = document.querySelector('#start-command');
document.querySelectorAll('[data-command]').forEach((button) => button.addEventListener('click', () => {
document.querySelectorAll('[data-command]').forEach((tab) => tab.setAttribute('aria-selected', String(tab === button)));
const commandTabs = [...document.querySelectorAll('[data-command]')];
function selectCommand(button) {
commandTabs.forEach((tab) => {
tab.setAttribute('aria-selected', String(tab === button));
tab.tabIndex = tab === button ? 0 : -1;
});
command.textContent = commands[button.dataset.command];
}));
command.setAttribute('aria-labelledby', button.id);
}
commandTabs.forEach((button, buttonIndex) => {
button.addEventListener('click', () => selectCommand(button));
button.addEventListener('keydown', (event) => {
if (!['ArrowLeft', 'ArrowRight'].includes(event.key)) return;
event.preventDefault();
const offset = event.key === 'ArrowRight' ? 1 : -1;
const target = commandTabs[(buttonIndex + offset + commandTabs.length) % commandTabs.length];
selectCommand(target);
target.focus();
});
});
document.querySelector('#copy-command')?.addEventListener('click', async (event) => {
await navigator.clipboard.writeText(command.textContent);
event.currentTarget.textContent = 'Copied';
try {
await navigator.clipboard.writeText(command.textContent);
event.currentTarget.textContent = 'Copied';
} catch {
event.currentTarget.textContent = 'Copy unavailable';
}
setTimeout(() => { event.currentTarget.textContent = 'Copy command'; }, 1500);
});
+10 -10
View File
@@ -34,7 +34,7 @@
<div class="dispatch" aria-label="Interactive TORCH routing board">
<div class="dispatch-head">
<p>Request CR-184</p>
<p>Example fleet · Request CR-184</p>
<button id="route-toggle" type="button" aria-pressed="false">Run the route</button>
</div>
<ol class="route" id="route">
@@ -96,12 +96,12 @@
</div>
<div class="ledger" role="table" aria-label="Current TORCH qualification ledger">
<div class="ledger-row ledger-head" role="row"><span role="columnheader">Capability</span><span role="columnheader">Current evidence</span><span role="columnheader">State</span></div>
<div class="ledger-row" role="row"><span>Portable kernel and reversal</span><span>Scenario tested</span><strong class="proven">Proven locally</strong></div>
<div class="ledger-row" role="row"><span>Durable control plane and backlog</span><span>SQLite + tracked tasks</span><strong class="proven">Proven locally</strong></div>
<div class="ledger-row" role="row"><span>Checks, resources, integration</span><span>Exact-SHA lifecycle</span><strong class="proven">Proven locally</strong></div>
<div class="ledger-row" role="row"><span>Claude and Codex coordination</span><span>Virtualized adapters</span><strong class="pending">Live gate open</strong></div>
<div class="ledger-row" role="row"><span>Self-managed successor</span><span>Atomic candidate mechanics</span><strong class="pending">Stable boot open</strong></div>
<div class="ledger-row" role="row"><span>COMBATRIG migration</span><span>33 areas, 570 tasks inventoried</span><strong class="pending">Boundaries open</strong></div>
<div class="ledger-row" role="row"><span data-label="Capability">Portable kernel and reversal</span><span data-label="Evidence">Scenario tested</span><strong class="proven" data-label="State">Proven locally</strong></div>
<div class="ledger-row" role="row"><span data-label="Capability">Durable control plane and backlog</span><span data-label="Evidence">SQLite + tracked tasks</span><strong class="proven" data-label="State">Proven locally</strong></div>
<div class="ledger-row" role="row"><span data-label="Capability">Checks, resources, integration</span><span data-label="Evidence">Exact-SHA lifecycle</span><strong class="proven" data-label="State">Proven locally</strong></div>
<div class="ledger-row" role="row"><span data-label="Capability">Claude and Codex coordination</span><span data-label="Evidence">Virtualized adapters</span><strong class="pending" data-label="State">Live gate open</strong></div>
<div class="ledger-row" role="row"><span data-label="Capability">Self-managed successor</span><span data-label="Evidence">Isolated build + activation</span><strong class="pending" data-label="State">Stable boot open</strong></div>
<div class="ledger-row" role="row"><span data-label="Capability">COMBATRIG migration</span><span data-label="Evidence">33 areas, 570 tasks inventoried</span><strong class="pending" data-label="State">Boundaries open</strong></div>
</div>
</section>
@@ -112,10 +112,10 @@
</div>
<div class="command-panel">
<div class="command-tabs" role="tablist" aria-label="Startup input">
<button role="tab" aria-selected="true" data-command="both">Repository + spec</button>
<button role="tab" aria-selected="false" data-command="repo">Repository only</button>
<button id="tab-both" role="tab" aria-selected="true" aria-controls="start-command" tabindex="0" data-command="both">Repository + spec</button>
<button id="tab-repo" role="tab" aria-selected="false" aria-controls="start-command" tabindex="-1" data-command="repo">Repository only</button>
</div>
<pre><code id="start-command">node bin/torch.mjs bootstrap \
<pre><code id="start-command" role="tabpanel" aria-labelledby="tab-both">torch bootstrap \
--repo /path/to/project \
--spec /path/to/product-spec.md \
--output fleet-design-brief.json \
+4 -2
View File
@@ -154,14 +154,16 @@ footer div { display: flex; gap: 1.5rem; }
@media (max-width: 600px) {
body { font-size: 16px; }
.masthead { padding-block: 1rem; align-items: flex-start; }
nav { display: grid; grid-template-columns: 1fr 1fr; gap: .4rem 1rem; }
.masthead { padding-block: 1rem; align-items: stretch; flex-direction: column; gap: 1rem; }
nav { display: grid; grid-template-columns: 1fr 1fr; gap: .4rem 1.5rem; font-size: .95rem; }
.hero { padding-top: 4rem; }
h1 { font-size: clamp(3rem, 13vw, 5.2rem); }
.hero-actions, footer { align-items: flex-start; flex-direction: column; }
.peer { display: none; }
.ledger-row { grid-template-columns: 1fr; gap: .25rem; }
.ledger-head { display: none; }
.ledger-row > [data-label]::before { content: attr(data-label) ": "; color: var(--muted); font-weight: 500; }
.ledger-row > [data-label="Capability"]::before { content: ""; }
.context-diagram { grid-template-columns: 1fr; }
.versus { writing-mode: initial; text-align: center; }
.console-summary, .console-grid, .agent-list { grid-template-columns: 1fr; }
+4 -1
View File
@@ -31,7 +31,10 @@ test('SCN-product-site: public surface explains the portable fleet and separates
assert.match(html, /Exact-commit checks/);
assert.match(html, /Live gate open/);
assert.match(html, /Context savings are a measured hypothesis/);
assert.match(html, /torch\.mjs bootstrap/);
assert.match(html, /torch bootstrap/);
assert.doesNotMatch(html, /node bin\/torch\.mjs/);
assert.match(html, /Isolated build \+ activation/);
assert.match(html, /data-label="Evidence"/);
assert.match(html, /manager can propose another specialist[\s\S]*owner approval/i);
assert.doesNotMatch(html, /nostr|relay coordination|task lock/i);
assert.match(consoleHtml, /Local Fleet Console/);