mirror of
https://github.com/PR0M3TH3AN/TORCH.git
synced 2026-11-02 10:51:54 +00:00
Refine portable fleet product surface
This commit is contained in:
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
@@ -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
@@ -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
@@ -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; }
|
||||
|
||||
@@ -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/);
|
||||
|
||||
Reference in new issue
Block a user