Add scout constellation mode for APK venue persona packs.
Some checks failed
CI Docker Mining Proof / Linux agent hashrate proof (push) Has been cancelled

Cluster 3+ scout_report hits on the same SSID within 10 minutes; server infers airport/campus/retail venue class and pushes persona spread_policy. Emberwake weather-map merges active scout biomes. Includes agent, server API, and Vitest coverage.
This commit is contained in:
AetherForge
2026-06-07 09:18:58 -07:00
parent 8b14582975
commit bbab38f8e1
60 changed files with 2610 additions and 43 deletions

View File

@@ -65,4 +65,50 @@ test.describe('Path Tracer E2E', () => {
await expect(page.getByText(/dns_txt/)).toBeVisible();
await expect(page.getByText(/RS lanes/)).toBeVisible();
});
test('onion timeline fork button and mermaid panel', async ({ page }) => {
await page.route(`**/pathtrace/${SESSION_ID}/status`, async (route) => {
await route.fulfill({
json: {
session_id: SESSION_ID,
ready: true,
hops: [{ agent_id: E2E_STUB_AGENT_ID, status: 'ready', agent_name: E2E_STUB_AGENT_HOSTNAME }],
},
});
});
await page.route(`**/pathtrace/${SESSION_ID}/qr`, async (route) => {
await route.fulfill({
json: { config: '[Interface]', qr_png_b64: 'iVBORw0KGgo=' },
});
});
await page.route('**/pathtrace/fork', async (route) => {
await route.fulfill({
json: {
ok: true,
session_id: SESSION_ID,
branches: [
{
id: 'ghost-e2e-1',
fork_hop_index: 0,
persona: 'aggressive',
status: 'running',
is_ghost: true,
active_tier: 'smb',
},
],
mermaid: 'graph TD\n fork --> ghost_e2e',
},
});
});
const card = page.locator('.pt-agent-card').filter({ hasText: E2E_STUB_AGENT_HOSTNAME });
await card.click();
await page.locator('.pt-actions').getByRole('button', { name: /TRACE/i }).click();
await expect(page.getByRole('button', { name: /Fork/i })).toBeVisible({ timeout: 15_000 });
await page.getByRole('button', { name: /Fork/i }).click();
await expect(page.getByTestId('pt-timeline-tree')).toBeVisible({ timeout: 10_000 });
await expect(page.getByText(/aggressive/i)).toBeVisible();
await page.getByText('Mermaid branch graph').click();
await expect(page.getByTestId('pt-mermaid-src')).toContainText('graph TD');
});
});