From 218ce3fbc8f6dda38876c6a8b7ce7aee62cb5747 Mon Sep 17 00:00:00 2001 From: thePR0M3TH3AN Date: Sun, 27 Sep 2026 19:54:16 -0400 Subject: [PATCH] Refine portable fleet product surface --- ...grity-note-2026-09-27-portable-kernel.yaml | 3 +- site/app.js | 34 +++++++++++++++---- site/index.html | 20 +++++------ site/styles.css | 6 ++-- test/fleet/product-surface.test.mjs | 5 ++- 5 files changed, 47 insertions(+), 21 deletions(-) diff --git a/reports/test-audit/test-integrity-note-2026-09-27-portable-kernel.yaml b/reports/test-audit/test-integrity-note-2026-09-27-portable-kernel.yaml index 163b75c..b568207 100644 --- a/reports/test-audit/test-integrity-note-2026-09-27-portable-kernel.yaml +++ b/reports/test-audit/test-integrity-note-2026-09-27-portable-kernel.yaml @@ -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 diff --git a/site/app.js b/site/app.js index 883f791..c3eaab8 100644 --- a/site/app.js +++ b/site/app.js @@ -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); }); diff --git a/site/index.html b/site/index.html index c60d2a1..31589bc 100644 --- a/site/index.html +++ b/site/index.html @@ -34,7 +34,7 @@
-

Request CR-184

+

Example fleet ยท Request CR-184

    @@ -96,12 +96,12 @@
CapabilityCurrent evidenceState
-
Portable kernel and reversalScenario testedProven locally
-
Durable control plane and backlogSQLite + tracked tasksProven locally
-
Checks, resources, integrationExact-SHA lifecycleProven locally
-
Claude and Codex coordinationVirtualized adaptersLive gate open
-
Self-managed successorAtomic candidate mechanicsStable boot open
-
COMBATRIG migration33 areas, 570 tasks inventoriedBoundaries open
+
Portable kernel and reversalScenario testedProven locally
+
Durable control plane and backlogSQLite + tracked tasksProven locally
+
Checks, resources, integrationExact-SHA lifecycleProven locally
+
Claude and Codex coordinationVirtualized adaptersLive gate open
+
Self-managed successorIsolated build + activationStable boot open
+
COMBATRIG migration33 areas, 570 tasks inventoriedBoundaries open
@@ -112,10 +112,10 @@
- - + +
-
node bin/torch.mjs bootstrap \
+        
torch bootstrap \
   --repo /path/to/project \
   --spec /path/to/product-spec.md \
   --output fleet-design-brief.json \
diff --git a/site/styles.css b/site/styles.css
index 403d8ea..24cdfa6 100644
--- a/site/styles.css
+++ b/site/styles.css
@@ -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; }
diff --git a/test/fleet/product-surface.test.mjs b/test/fleet/product-surface.test.mjs
index 1f8b9ab..6fe254f 100644
--- a/test/fleet/product-surface.test.mjs
+++ b/test/fleet/product-surface.test.mjs
@@ -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/);