From c362ccd5cc8fff94c59d4a0c8f178628dc5e7596 Mon Sep 17 00:00:00 2001 From: thePR0M3TH3AN Date: Wed, 30 Sep 2026 15:59:00 -0400 Subject: [PATCH 01/51] TASK-conversation-runtime-diagnostics: extract Codex startup failures --- src/adapters/codex.mjs | 76 +++++++++++++++++++++++++++++++++++++++ src/runtime/lifecycle.mjs | 10 +++++- 2 files changed, 85 insertions(+), 1 deletion(-) diff --git a/src/adapters/codex.mjs b/src/adapters/codex.mjs index 2652312..e106e09 100644 --- a/src/adapters/codex.mjs +++ b/src/adapters/codex.mjs @@ -69,6 +69,10 @@ function launchPolicyArgs(policy = {}) { return args; } +const MAX_STARTUP_OUTPUT_BYTES = 16 * 1024; +const MAX_STARTUP_EVENT_COUNT = 64; +const MAX_DIAGNOSTIC_TEXT_LENGTH = 512; + function parseJsonLines(output) { const records = []; for (const line of String(output ?? '').split('\n').map((value) => value.trim()).filter(Boolean)) { @@ -77,6 +81,74 @@ function parseJsonLines(output) { return records; } +function redactDiagnosticText(value, limit = MAX_DIAGNOSTIC_TEXT_LENGTH) { + if (typeof value !== 'string') return null; + const compact = value.replace(/\s+/g, ' ').trim(); + if (!compact) return null; + return compact + .replace(/\bBearer\s+[A-Za-z0-9._~+\/-]+=*/gi, 'Bearer [REDACTED]') + .replace(/((?:api[_ -]?key|access[_ -]?token|refresh[_ -]?token|token|password|secret|credential|authorization|cookie)\s*(?:=|:|\s)\s*)([^\s,;]+)/gi, '$1[REDACTED]') + .replace(/(https?:\/\/)[^\s/@]+:[^\s/@]+@/gi, '$1[REDACTED]@') + .slice(0, limit); +} + +function boundedStartupOutput(output) { + const text = typeof output === 'string' ? output : String(output ?? ''); + if (Buffer.byteLength(text, 'utf8') > MAX_STARTUP_OUTPUT_BYTES) { + return { records: null, reason: 'stdout-exceeds-bound' }; + } + const lines = text.split('\n').map((value) => value.trim()).filter(Boolean); + if (lines.length > MAX_STARTUP_EVENT_COUNT) return { records: null, reason: 'stdout-too-many-events' }; + const records = []; + for (const line of lines) { + try { records.push(JSON.parse(line)); } catch { return { records: null, reason: 'stdout-malformed-json' }; } + } + return { records, reason: null }; +} + +function startupFailureEvent(record) { + if (!record || typeof record !== 'object' || Array.isArray(record)) return null; + if (record.type === 'error' || record.type === 'turn.failed' || record.type === 'turn.error') { + const error = record.error && typeof record.error === 'object' && !Array.isArray(record.error) + ? record.error : record; + return { code: error.code ?? record.code, message: error.message ?? record.message }; + } + return null; +} + +function safeDiagnosticCode(value) { + return typeof value === 'string' && /^[A-Z][A-Z0-9_.-]{0,79}$/.test(value) ? value : null; +} + +export function diagnoseCodexStartupFailure({ stdout, stderr } = {}) { + const parsed = boundedStartupOutput(stdout); + const safeStderr = redactDiagnosticText(stderr); + if (!parsed.records) { + return { + schema: 'torch.dev/runtime-startup-diagnostic/v1alpha1', outcome: 'unknown', reason: parsed.reason, + stderr: safeStderr, + }; + } + const failure = parsed.records.map(startupFailureEvent).find(Boolean); + if (!failure) { + return { + schema: 'torch.dev/runtime-startup-diagnostic/v1alpha1', outcome: 'unknown', reason: 'stdout-no-failure-event', + stderr: safeStderr, + }; + } + const message = redactDiagnosticText(failure.message); + const code = safeDiagnosticCode(failure.code); + const modelRejection = /\b(model|unsupported|not supported|unavailable|not available|does not exist)\b/i.test(message ?? '') + || /MODEL|UNSUPPORTED/i.test(code ?? ''); + return { + schema: 'torch.dev/runtime-startup-diagnostic/v1alpha1', outcome: 'known', + category: modelRejection ? 'model-rejection' : 'runtime-error', + ...(code ? { code } : {}), + ...(message ? { message } : {}), + stderr: safeStderr, + }; +} + export class CodexRuntimeAdapter { constructor({ env = process.env, @@ -227,6 +299,10 @@ export class CodexRuntimeAdapter { return { areaId: text(areaId, 'areaId'), runtimeSessionId: text(captured, 'runtimeSessionId') }; } + diagnoseStartupFailure({ stdout, stderr } = {}) { + return diagnoseCodexStartupFailure({ stdout, stderr }); + } + getStatus() { return unsupportedCapability(this.name, 'getStatus'); } listSessions() { return unsupportedCapability(this.name, 'listSessions'); } diff --git a/src/runtime/lifecycle.mjs b/src/runtime/lifecycle.mjs index 1047820..9852603 100644 --- a/src/runtime/lifecycle.mjs +++ b/src/runtime/lifecycle.mjs @@ -483,13 +483,21 @@ export function startFleet({ plan, controlPlane, executor, adapters } = {}) { writeCombinedPrompt(action); const result = executor({ ...action.launch, areaId: action.areaId, runtimeSessionId: action.runtimeSessionId }); if (result?.status !== undefined && result.status !== 0) { + const runtimeAdapter = runtimes.get(action.runtime); + const diagnostic = typeof runtimeAdapter?.diagnoseStartupFailure === 'function' + ? runtimeAdapter.diagnoseStartupFailure({ stdout: result?.stdout, stderr: result?.stderr }) : null; controlPlane.reportStatus({ areaId: action.areaId, state: 'offline', runtime: action.runtime, runtimeSessionId: action.runtimeSessionId, summary: 'Runtime launch failed.', }); throw new TorchError(`Fleet startup failed for ${action.areaId}`, { code: 'FLEET_START_FAILED', - details: { areaId: action.areaId, status: result.status, stderr: result.stderr ?? null, started }, + details: { + areaId: action.areaId, status: result.status, + stderr: diagnostic ? diagnostic.stderr : result.stderr ?? null, + ...(diagnostic ? { diagnostic } : {}), + started, + }, }); } let runtimeSessionId = action.runtimeSessionId; From 2f1ca157b3382a19e1c6c8f4132b9d140983f7e6 Mon Sep 17 00:00:00 2001 From: thePR0M3TH3AN Date: Wed, 30 Sep 2026 16:22:45 -0400 Subject: [PATCH 02/51] TASK-conversation-runtime-diagnostics: verify Codex startup diagnostics --- docs/TEST_INTEGRITY.md | 28 +++++++++++ src/adapters/codex.mjs | 2 +- test/fleet/lifecycle.test.mjs | 93 +++++++++++++++++++++++++++++++++++ 3 files changed, 122 insertions(+), 1 deletion(-) diff --git a/docs/TEST_INTEGRITY.md b/docs/TEST_INTEGRITY.md index c426613..d3111ed 100644 --- a/docs/TEST_INTEGRITY.md +++ b/docs/TEST_INTEGRITY.md @@ -2290,3 +2290,31 @@ test_integrity_note: did_relax_any_assertion: false if_true_explain_spec_basis: "" ``` + +# Codex startup runtime diagnostics (2026-09-30) + +```yaml +test_integrity_note: + change_type: new_tests + scenarios: + - id: SCN-codex-startup-diagnostics + given: "A real Codex adapter and lifecycle plan receive deterministic nonzero child-process results" + when: "Codex stdout contains a model-rejection event, malformed JSON, or output above the diagnostic bound" + then: "Owner-visible failure details prefer the structured model rejection, redact stderr secrets and prompt fields, and label malformed or oversized output unknown with an explicit reason" + observable_outcomes: + - "FLEET_START_FAILED status, persisted offline identity state and owner-visible diagnostic details" + - "Structured model rejection over noisy MCP stderr; explicit unknown outcomes without retained oversized stdout" + - "No synthetic prompt, token or password value in serialized error details" + determinism_controls: + - "Disposable local Git/XDG fixtures and fixed injected child-process output" + - "Real createCodexAdapter and startFleet boundary; no provider calls, retries, sleeps or network" + anti_cheat_rationale: + prevents: + - "Returning a hard-coded success while losing the real nonzero execution status" + - "Displaying unrelated MCP noise instead of a structured model rejection" + - "Leaking raw prompt or credential values through diagnostics" + - "Treating malformed or oversized stdout as trusted structured evidence" + relaxation: + did_relax_any_assertion: false + if_true_explain_spec_basis: "" +``` diff --git a/src/adapters/codex.mjs b/src/adapters/codex.mjs index e106e09..8992c38 100644 --- a/src/adapters/codex.mjs +++ b/src/adapters/codex.mjs @@ -86,7 +86,7 @@ function redactDiagnosticText(value, limit = MAX_DIAGNOSTIC_TEXT_LENGTH) { const compact = value.replace(/\s+/g, ' ').trim(); if (!compact) return null; return compact - .replace(/\bBearer\s+[A-Za-z0-9._~+\/-]+=*/gi, 'Bearer [REDACTED]') + .replace(/\bBearer\s+[-A-Za-z0-9._~+/]+=*/gi, 'Bearer [REDACTED]') .replace(/((?:api[_ -]?key|access[_ -]?token|refresh[_ -]?token|token|password|secret|credential|authorization|cookie)\s*(?:=|:|\s)\s*)([^\s,;]+)/gi, '$1[REDACTED]') .replace(/(https?:\/\/)[^\s/@]+:[^\s/@]+@/gi, '$1[REDACTED]@') .slice(0, limit); diff --git a/test/fleet/lifecycle.test.mjs b/test/fleet/lifecycle.test.mjs index 14effb5..b90260d 100644 --- a/test/fleet/lifecycle.test.mjs +++ b/test/fleet/lifecycle.test.mjs @@ -360,3 +360,96 @@ test('SCN-mixed-runtime: Codex and Claude share stable identities while planning assert.equal(control.identity(fixture.worker).state, 'offline'); control.close(); }); + +test('SCN-codex-startup-diagnostics: owner-visible startup failures prefer bounded structured Codex evidence without disclosure', () => { + const modelFixture = fleetFixture({ workerRuntime: 'codex' }); + const modelControl = openControlPlane({ repositoryRoot: modelFixture.root, env: modelFixture.env }); + const modelAdapters = new Map([ + ['claude', createClaudeAdapter()], + ['codex', createCodexAdapter({ executable: 'codex' })], + ]); + const modelPlan = planFleetUp({ + repositoryRoot: modelFixture.root, controlPlane: modelControl, adapters: modelAdapters, fresh: true, + }); + let modelFailure; + assert.throws( + () => startFleet({ + plan: modelPlan, controlPlane: modelControl, adapters: modelAdapters, + executor: (launch) => launch.areaId === modelFixture.worker + ? { + status: 23, + stdout: '{"type":"error","code":"MODEL_NOT_SUPPORTED","message":"Requested model fixture-model is not supported","prompt":"fixture prompt must not leak"}\n', + stderr: 'Vercel MCP authentication warning: token=fixture-token password=fixture-password', + } + : { status: 0, stdout: 'claude-manager-1\n' }, + }), + (error) => { + modelFailure = error; + return error.code === 'FLEET_START_FAILED' && error.details.status === 23; + }, + ); + assert.deepEqual(modelFailure.details.diagnostic, { + schema: 'torch.dev/runtime-startup-diagnostic/v1alpha1', outcome: 'known', + category: 'model-rejection', code: 'MODEL_NOT_SUPPORTED', + message: 'Requested model fixture-model is not supported', + stderr: 'Vercel MCP authentication warning: token=[REDACTED] password=[REDACTED]', + }); + assert.equal(modelFailure.details.stderr, modelFailure.details.diagnostic.stderr); + assert.doesNotMatch(JSON.stringify(modelFailure.details), /fixture prompt|fixture-token|fixture-password/); + assert.equal(modelControl.identity(modelFixture.worker).state, 'offline'); + modelControl.close(); + + const malformedFixture = fleetFixture({ workerRuntime: 'codex' }); + const malformedControl = openControlPlane({ repositoryRoot: malformedFixture.root, env: malformedFixture.env }); + const malformedAdapters = new Map([ + ['claude', createClaudeAdapter()], + ['codex', createCodexAdapter({ executable: 'codex' })], + ]); + const malformedPlan = planFleetUp({ + repositoryRoot: malformedFixture.root, controlPlane: malformedControl, adapters: malformedAdapters, fresh: true, + }); + let malformedFailure; + assert.throws( + () => startFleet({ + plan: malformedPlan, controlPlane: malformedControl, adapters: malformedAdapters, + executor: (launch) => launch.areaId === malformedFixture.worker + ? { status: 24, stdout: '{malformed Codex event', stderr: 'MCP warning' } + : { status: 0, stdout: 'claude-manager-2\n' }, + }), + (error) => { + malformedFailure = error; + return error.code === 'FLEET_START_FAILED' && error.details.status === 24; + }, + ); + assert.equal(malformedFailure.details.diagnostic.outcome, 'unknown'); + assert.equal(malformedFailure.details.diagnostic.reason, 'stdout-malformed-json'); + assert.equal(malformedFailure.details.diagnostic.stderr, 'MCP warning'); + malformedControl.close(); + + const oversizedFixture = fleetFixture({ workerRuntime: 'codex' }); + const oversizedControl = openControlPlane({ repositoryRoot: oversizedFixture.root, env: oversizedFixture.env }); + const oversizedAdapters = new Map([ + ['claude', createClaudeAdapter()], + ['codex', createCodexAdapter({ executable: 'codex' })], + ]); + const oversizedPlan = planFleetUp({ + repositoryRoot: oversizedFixture.root, controlPlane: oversizedControl, adapters: oversizedAdapters, fresh: true, + }); + let oversizedFailure; + assert.throws( + () => startFleet({ + plan: oversizedPlan, controlPlane: oversizedControl, adapters: oversizedAdapters, + executor: (launch) => launch.areaId === oversizedFixture.worker + ? { status: 25, stdout: 'x'.repeat((16 * 1024) + 1), stderr: 'MCP warning' } + : { status: 0, stdout: 'claude-manager-3\n' }, + }), + (error) => { + oversizedFailure = error; + return error.code === 'FLEET_START_FAILED' && error.details.status === 25; + }, + ); + assert.equal(oversizedFailure.details.diagnostic.outcome, 'unknown'); + assert.equal(oversizedFailure.details.diagnostic.reason, 'stdout-exceeds-bound'); + assert.doesNotMatch(JSON.stringify(oversizedFailure.details), /x{512}/); + oversizedControl.close(); +}); From d3a679849b0f5e55c2114223a2e56977c318391e Mon Sep 17 00:00:00 2001 From: thePR0M3TH3AN Date: Wed, 30 Sep 2026 19:17:42 -0400 Subject: [PATCH 03/51] TASK-bounded-routine-coordination: propagate bounded routine policy Closes: TASK-bounded-routine-coordination --- docs/TEST_INTEGRITY.md | 31 +++++++ src/kernel/install.mjs | 8 +- src/kernel/prompts.mjs | 12 +++ test/fleet/routine-coordination.test.mjs | 106 +++++++++++++++++++++++ 4 files changed, 153 insertions(+), 4 deletions(-) create mode 100644 test/fleet/routine-coordination.test.mjs diff --git a/docs/TEST_INTEGRITY.md b/docs/TEST_INTEGRITY.md index c426613..91620da 100644 --- a/docs/TEST_INTEGRITY.md +++ b/docs/TEST_INTEGRITY.md @@ -1,5 +1,36 @@ # Test Integrity Notes +## 2026-09-30 — Bounded routine coordination + +```yaml +test_integrity_note: + change_type: new_tests + scenarios: + - id: SCN-routine-coordination-instructions + given: A freshly installed Fleet using generated default prompts + when: Common, manager, specialist, and resume instructions are read + then: Each preserves own-inbox acknowledgement, direct peer routing, owner exceptions, and paused execution + - id: SCN-routine-coordination-boundaries + given: An assigned task and pending peer and owner approvals in a fixed-time local control plane + when: The named recipient acknowledges messages and the manager attempts a non-owned decision + then: The task and approvals remain pending until only the named peer decides its approval + observable_outcomes: + - Generated tracked instruction text for fresh-install and resume surfaces + - Durable task state, approval state, named-approver identity, and authority errors + determinism_controls: + - Disposable local Git repository, SQLite state, and fixed clock + - No provider calls, network, retries, sleeps, or host timers + anti_cheat_rationale: + prevents: + - Treating acknowledgement as task or approval completion + - Letting a manager decide an owner or peer approval + - Omitting policy boundaries from one generated startup surface + - Re-enabling paused execution or granting starts, spending, publication, destructive recovery, or arbitrary dispatch + relaxation: + did_relax_any_assertion: false + if_true_explain_spec_basis: "" +``` + ## 2026-09-30 — Exact observed-file ownership evidence ```yaml diff --git a/src/kernel/install.mjs b/src/kernel/install.mjs index fc9cbf4..7e91979 100644 --- a/src/kernel/install.mjs +++ b/src/kernel/install.mjs @@ -10,7 +10,7 @@ import { fileHash, writeNewFile } from './files.mjs'; import { projectStatePath } from './paths.mjs'; import { validateApprovedProposal } from './domains.mjs'; import { inspectManagedWorktree } from './worktree-state.mjs'; -import { renderDomainPrompt } from './prompts.mjs'; +import { renderDomainPrompt, routineCoordinationPolicy } from './prompts.mjs'; import { createRuntimeAdapterRegistry } from '../adapters/registry.mjs'; const TRACKED_DIR = '.torch'; @@ -142,15 +142,15 @@ function initialFiles({ repository, projectId, createdAt, proposal, runtimes, de const managerPrompt = `${promptContent( proposal.session_manager?.prompt_source, '# TORCH Session Manager\n\nRoute owner requests, establish ownership and priority, and keep routine coordination inside the fleet.\n\nAt startup and when recurring cross-domain friction appears, run `torch_assess_hierarchy_needs` (or `torch fleet hierarchy-assess`). Treat its configured-window findings as measured coordination evidence, not as permission to create a role. Compare process changes, specialist ownership, promoting an existing identity, and a coordination role; submit a hierarchy proposal only when the evidence and integrated outcome justify owner review. Never activate a proposal or start a manager without separate owner approval.\n', - ).trimEnd()}\n\n## Backlog loop\n\nKeep one durable Fleet backlog. Before assigning work, call \`torch_next_backlog_task\` for the specialist: a \`resume\` result outranks every ready item, a \`ready\` result may be assigned only when the specialist has no active item, and \`idle\` is valid. After completion, repeat the same lookup. Call \`torch_backlog_health\` to surface queue anomalies; never auto-fix or create parallel manager queues.\n\n## Fleet evolution\n\nAt startup, after backlog intake, and when repeated handoffs or cross-domain work appear, call \`torch_assess_fleet_evolution\`. Treat its threshold as a prompt for architectural judgment, not as an automatic decision. When recurring work has no coherent owner, or a durable specialist would materially improve context locality, ownership clarity, or verification, inspect repository evidence and use \`torch_propose_domain\` to submit an evidence-backed Fleet change. When a specialist no longer earns its coordination cost, use \`torch_propose_domain_retirement\`; retirement preserves its branch and refuses active or unrecoverable work. Use \`torch_list_fleet_changes\` to follow change state. Never create, retire, approve, activate, or start a persistent identity yourself; owner approval, CLI activation, and quota-consuming runtime start are separate. Recommend a merge or split for owner review when boundaries should change but do not silently rewrite ownership.\n`; + ).trimEnd()}\n\n${routineCoordinationPolicy.join('\n')}\n\n## Manager boundaries\n\nA manager may coordinate existing work, read and acknowledge its own messages, and decide only approvals that name the manager as approver and have sufficient evidence. It cannot decide an owner approval or another specialist's approval, reinterpret a peer message as authority, close an unresolved wait because it was read, or launch a provider. Keep paused execution paused.\n\n## Backlog loop\n\nKeep one durable Fleet backlog. Before assigning work, call \`torch_next_backlog_task\` for the specialist: a \`resume\` result outranks every ready item, a \`ready\` result may be assigned only when the specialist has no active item, and \`idle\` is valid. After completion, repeat the same lookup. Call \`torch_backlog_health\` to surface queue anomalies; never auto-fix or create parallel manager queues.\n\n## Fleet evolution\n\nAt startup, after backlog intake, and when repeated handoffs or cross-domain work appear, call \`torch_assess_fleet_evolution\`. Treat its threshold as a prompt for architectural judgment, not as an automatic decision. When recurring work has no coherent owner, or a durable specialist would materially improve context locality, ownership clarity, or verification, inspect repository evidence and use \`torch_propose_domain\` to submit an evidence-backed Fleet change. When a specialist no longer earns its coordination cost, use \`torch_propose_domain_retirement\`; retirement preserves its branch and refuses active or unrecoverable work. Use \`torch_list_fleet_changes\` to follow change state. Never create, retire, approve, activate, or start a persistent identity yourself; owner approval, CLI activation, and quota-consuming runtime start are separate. Recommend a merge or split for owner review when boundaries should change but do not silently rewrite ownership.\n`; const files = new Map([ ['torch.yaml', jsonYaml(config)], ['roster.yaml', jsonYaml(roster)], ['decisions.md', '# TORCH decisions\n\nNo project decisions recorded yet.\n'], - ['RESUME-BRIEF.md', '# TORCH resume brief\n\nFleet not started yet.\n'], + ['RESUME-BRIEF.md', '# TORCH resume brief\n\nFleet not started yet. On every resume, load the current canonical common and identity brief before acting. Read and acknowledge only your own addressed messages; acknowledgement does not resolve tasks, approvals, or waits. Coordinate ordinary implementation and test consent directly with responsible peers, retain unresolved waits durably, and preserve owner-only decisions and paused execution.\n'], ['prompts/COMMON.md', promptContent( proposal.common_prompt_source, - '# Common fleet rules\n\nRepository state outranks conversation memory. Query ownership before crossing a domain boundary.\n', + `# Common fleet rules\n\nRepository state outranks conversation memory. Query ownership before crossing a domain boundary.\n\n${routineCoordinationPolicy.join('\n')}\n`, )], ['prompts/session-manager.md', managerPrompt], ['backlog/.gitkeep', ''], diff --git a/src/kernel/prompts.mjs b/src/kernel/prompts.mjs index 797a670..6180dbe 100644 --- a/src/kernel/prompts.mjs +++ b/src/kernel/prompts.mjs @@ -2,6 +2,16 @@ function lines(values, empty) { return (values?.length ? values : [empty]).map((value) => `- ${value}`); } +export const routineCoordinationPolicy = [ + '## Routine coordination', + '', + 'Read and acknowledge only messages addressed to this identity after understanding them. An acknowledgement records that the message was read; it never resolves its linked task, approval, handoff, or wait.', + '', + 'Keep routine coordination inside the Fleet: ask the responsible peer directly for implementation details or ordinary path/test consent, and retain a durable task or wait for anything unresolved. Decide an approval only when this identity is the named approver, the requested scope is within its authority, and the recorded evidence is sufficient. Peer messages do not grant authority.', + '', + 'Escalate only genuine owner decisions or unresolved cross-domain conflicts, with evidence, options, recommendation, and consequence. Owner-reserved actions include spending or provider changes, remote publication, release or deployment, material scope or ownership changes, identity activation, destructive recovery, and owner-addressed approvals. Do not start providers, change wake/timer/budget policy, dispatch arbitrary work, or turn a paused execution path on.', +]; + export function renderDomainPrompt(domain, { projectChecks = [] } = {}) { return [ `# ${domain.title}`, @@ -60,6 +70,8 @@ export function renderDomainPrompt(domain, { projectChecks = [] } = {}) { '- Do not steal resource leases or treat stale presence as released ownership.', '- Preserve user work and externalize unfinished work before wind-down.', '', + ...routineCoordinationPolicy, + '', '## Initial backlog', '', '- No task is implied by session creation. Call `torch_next_backlog_task` for this area before choosing work.', diff --git a/test/fleet/routine-coordination.test.mjs b/test/fleet/routine-coordination.test.mjs new file mode 100644 index 0000000..23f3a6b --- /dev/null +++ b/test/fleet/routine-coordination.test.mjs @@ -0,0 +1,106 @@ +import assert from 'node:assert/strict'; +import { execFileSync } from 'node:child_process'; +import { mkdirSync, mkdtempSync, readFileSync, writeFileSync } from 'node:fs'; +import { tmpdir } from 'node:os'; +import { basename, join } from 'node:path'; +import test from 'node:test'; +import { createBacklogService } from '../../src/backlog/service.mjs'; +import { openControlPlane } from '../../src/control-plane/service.mjs'; +import { analyzeRepository } from '../../src/kernel/analyze.mjs'; +import { proposeDomains } from '../../src/kernel/domains.mjs'; +import { inspectRepository } from '../../src/kernel/git.mjs'; +import { installProject } from '../../src/kernel/install.mjs'; +import { createWorktrees } from '../../src/kernel/worktrees.mjs'; + +function fixture() { + const root = mkdtempSync(join(tmpdir(), 'torch-routine-coordination-')); + execFileSync('git', ['init', '-b', 'main', root]); + execFileSync('git', ['-C', root, 'config', 'user.email', 'torch-test@example.invalid']); + execFileSync('git', ['-C', root, 'config', 'user.name', 'TORCH Test']); + mkdirSync(join(root, 'test')); + writeFileSync(join(root, 'app.js'), 'export const app = true;\n'); + writeFileSync(join(root, 'test', 'app.test.js'), '// independent verification surface\n'); + writeFileSync(join(root, 'test', 'integration.test.js'), '// independent integration surface\n'); + execFileSync('git', ['-C', root, 'add', '.']); + execFileSync('git', ['-C', root, 'commit', '-m', 'fixture']); + const repository = inspectRepository(root); + const proposal = proposeDomains({ repository, analysis: analyzeRepository(repository) }); + proposal.review = { + status: 'approved', reviewedAt: '2026-09-30T00:00:00Z', reviewedBy: 'fixture-owner', notes: [], + }; + const env = { ...process.env, XDG_DATA_HOME: join(tmpdir(), `${basename(root)}-state`) }; + installProject({ repository, proposal, env, projectId: 'routine-coordination-fixture' }); + execFileSync('git', ['-C', root, 'add', '.torch']); + execFileSync('git', ['-C', root, 'commit', '-m', 'install torch']); + createWorktrees({ repository: inspectRepository(root), + parentOverride: join(tmpdir(), `${basename(root)}-worktrees`) }); + const worker = proposal.domains.find((domain) => domain.id !== 'qa')?.id; + const peer = proposal.domains.find((domain) => domain.id === 'qa')?.id; + assert.ok(worker, 'fixture must provide an implementation specialist'); + assert.ok(peer, 'fixture must provide an independent peer'); + return { root, env, worker, peer }; +} + +test('SCN-routine-coordination-instructions: a fresh install gives common, manager, specialist, and resume surfaces the same bounded policy', () => { + const context = fixture(); + const files = [ + join(context.root, '.torch', 'prompts', 'COMMON.md'), + join(context.root, '.torch', 'prompts', 'session-manager.md'), + join(context.root, '.torch', 'prompts', `${context.worker}.md`), + join(context.root, '.torch', 'RESUME-BRIEF.md'), + ].map((path) => readFileSync(path, 'utf8')); + for (const text of files) { + assert.match(text, /acknowledgement does not resolve tasks, approvals, or waits|it never resolves its linked task, approval, handoff, or wait/); + assert.match(text, /responsible peer directly|directly with responsible peers/); + assert.match(text, /paused execution/); + } + assert.match(files[0], /spending or provider changes, remote publication, release or deployment/); + assert.match(files[1], /cannot decide an owner approval or another specialist's approval/); + assert.match(files[2], /Do not start providers, change wake\/timer\/budget policy, dispatch arbitrary work/); +}); + +test('SCN-routine-coordination-boundaries: acknowledgement leaves work pending and only the named approver can decide', () => { + const context = fixture(); + const control = openControlPlane({ repositoryRoot: context.root, env: context.env, + clock: () => new Date('2026-09-30T12:00:00Z') }); + try { + const backlog = createBacklogService({ repositoryRoot: context.root, controlPlane: control }); + const created = backlog.create({ actorId: 'session-manager', title: 'Bounded coordination', + description: 'Keep the wait visible until an authority acts.', acceptanceCriteria: ['Evidence is retained.'], + affectedDomains: [context.worker] }); + const ready = backlog.transition({ taskId: created.id, actorId: 'session-manager', to: 'ready', + expectedRevision: created.revision }); + const assigned = backlog.transition({ taskId: ready.id, actorId: 'session-manager', to: 'assigned', + owner: context.worker, expectedRevision: ready.revision }); + const taskMessage = control.sendMessage({ sender: 'session-manager', recipient: context.worker, + body: 'Work is assigned; preserve the decision wait.', references: { task: assigned.id } }); + control.ackMessage({ recipient: context.worker, messageId: taskMessage.id }); + assert.equal(backlog.get(assigned.id).state, 'assigned', 'reading a task message cannot complete or advance work'); + + const peerApproval = control.requestApproval({ requester: context.worker, approver: context.peer, + task: assigned.id, title: 'Peer path consent', summary: 'Confirm the public boundary.', evidence: 'test/fleet/routine-coordination.test.mjs' }); + const peerMessage = control.readMessages({ recipient: context.peer, unacknowledgedOnly: true }) + .find((message) => message.kind === 'approval-request' && message.references.task === assigned.id); + assert.ok(peerMessage, 'the named approver receives a durable approval request'); + control.ackMessage({ recipient: context.peer, messageId: peerMessage.id }); + assert.equal(control.listApprovals({ actorId: context.peer, status: 'pending' })[0].id, peerApproval.id, + 'acknowledging an approval request cannot decide it'); + assert.throws(() => control.decideApproval({ approvalId: peerApproval.id, decidedBy: 'session-manager', + decision: 'approved', expectedRevision: peerApproval.revision }), + (error) => error.code === 'APPROVER_AUTHORITY_REQUIRED'); + const peerDecision = control.decideApproval({ approvalId: peerApproval.id, decidedBy: context.peer, + decision: 'approved', expectedRevision: peerApproval.revision, note: 'Boundary reviewed.' }); + assert.equal(peerDecision.status, 'approved'); + assert.equal(peerDecision.decidedBy, context.peer); + + const ownerApproval = control.requestApproval({ requester: context.worker, approver: 'owner', task: assigned.id, + title: 'Owner scope decision', summary: 'A peer cannot make this owner decision.' }); + assert.throws(() => control.decideApproval({ approvalId: ownerApproval.id, decidedBy: 'session-manager', + decision: 'approved', expectedRevision: ownerApproval.revision }), + (error) => error.code === 'APPROVER_AUTHORITY_REQUIRED'); + assert.equal(control.listApprovals({ actorId: context.worker, status: 'pending' }).some((item) => + item.id === ownerApproval.id), true, 'a rejected manager attempt leaves the owner decision pending'); + } finally { + control.close(); + } +}); From 37c3ebc68c01e0b49faed4eef09cf0273aee56b9 Mon Sep 17 00:00:00 2001 From: thePR0M3TH3AN Date: Wed, 30 Sep 2026 19:33:16 -0400 Subject: [PATCH 04/51] TASK-pilot-executor-outcomes: fail closed on executor errors --- docs/TEST_INTEGRITY.md | 30 +++++++ src/adapters/codex.mjs | 2 +- src/cli.mjs | 8 +- src/runtime/lifecycle.mjs | 74 ++++++++++++++-- src/schedules/service.mjs | 6 +- test/fleet/executor-outcomes.test.mjs | 117 ++++++++++++++++++++++++++ 6 files changed, 227 insertions(+), 10 deletions(-) create mode 100644 test/fleet/executor-outcomes.test.mjs diff --git a/docs/TEST_INTEGRITY.md b/docs/TEST_INTEGRITY.md index d3111ed..c867fa8 100644 --- a/docs/TEST_INTEGRITY.md +++ b/docs/TEST_INTEGRITY.md @@ -1,5 +1,35 @@ # Test Integrity Notes +## 2026-09-30 — Executor terminal-outcome integrity + +```yaml +test_integrity_note: + change_type: new_tests + scenarios: + - id: SCN-executor-interrupted-outcomes + given: A real child that exits cleanly after SIGTERM plus deterministic signal and ENOBUFS executor results + when: Runtime startup receives a status-zero timeout, signal, or output-overflow error + then: No idle completion is recorded; captured identity remains working and failure evidence excludes private output + - id: SCN-scheduled-executor-failure + given: A scheduled command returns status zero together with ENOBUFS and screenshot-heavy output + when: The scheduler records its receipt + then: The receipt is failed, output is bounded, and credential or private-reasoning values are redacted + observable_outcomes: + - Durable runtime presence state and retained native session identifier + - Schedule result, exit status, bounded output, and redacted error evidence + determinism_controls: + - Disposable local Git fixtures and a bounded SIGTERM-aware child process + - Injected signal and ENOBUFS boundaries; no network, provider launch, retry, or sleep + anti_cheat_rationale: + prevents: + - Treating status zero as successful when Node reports timeout or output overflow + - Marking an interrupted runtime idle and permitting a duplicate launch + - Passing screenshot payloads, credentials, prompts, or private reasoning into durable receipts + relaxation: + did_relax_any_assertion: false + if_true_explain_spec_basis: "" +``` + ## 2026-09-30 — Exact observed-file ownership evidence ```yaml diff --git a/src/adapters/codex.mjs b/src/adapters/codex.mjs index 8992c38..f878518 100644 --- a/src/adapters/codex.mjs +++ b/src/adapters/codex.mjs @@ -87,7 +87,7 @@ function redactDiagnosticText(value, limit = MAX_DIAGNOSTIC_TEXT_LENGTH) { if (!compact) return null; return compact .replace(/\bBearer\s+[-A-Za-z0-9._~+/]+=*/gi, 'Bearer [REDACTED]') - .replace(/((?:api[_ -]?key|access[_ -]?token|refresh[_ -]?token|token|password|secret|credential|authorization|cookie)\s*(?:=|:|\s)\s*)([^\s,;]+)/gi, '$1[REDACTED]') + .replace(/((?:api[_ -]?key|access[_ -]?token|refresh[_ -]?token|token|password|secret|credential|authorization|cookie|prompt|private reasoning)\s*(?:=|:|\s)\s*)([^\s,;]+)/gi, '$1[REDACTED]') .replace(/(https?:\/\/)[^\s/@]+:[^\s/@]+@/gi, '$1[REDACTED]@') .slice(0, limit); } diff --git a/src/cli.mjs b/src/cli.mjs index 8c8cc6b..6ad9f13 100644 --- a/src/cli.mjs +++ b/src/cli.mjs @@ -42,6 +42,10 @@ import { import { ResourceService } from './resources/service.mjs'; import { CANDIDATE_ACCEPTANCE_SCENARIOS, createVersionService } from './self-host/service.mjs'; import { observeProject } from './observability/snapshot.mjs'; + +// Provider output is evidence, not an unbounded artifact channel. startFleet +// classifies ENOBUFS as an interrupted outcome instead of a completed turn. +const MAX_RUNTIME_EXECUTOR_OUTPUT_BYTES = 1024 * 1024; import { OwnerDigestService } from './observability/owner-digest.mjs'; import { ContextTelemetryService } from './telemetry/context.mjs'; import { ScheduleService } from './schedules/service.mjs'; @@ -1108,6 +1112,7 @@ export async function runCli(argv = process.argv.slice(2), { plan, controlPlane: control, adapters, executor: (launch) => spawn(launch.command, launch.args, { cwd: launch.cwd, encoding: 'utf8', stdio: ['ignore', 'pipe', 'pipe'], + maxBuffer: MAX_RUNTIME_EXECUTOR_OUTPUT_BYTES, }), }), { json }); return 0; @@ -1441,6 +1446,7 @@ export async function runCli(argv = process.argv.slice(2), { plan, controlPlane: control, adapters, executor: (launch) => spawn(launch.command, launch.args, { cwd: launch.cwd, encoding: 'utf8', stdio: ['ignore', 'pipe', 'pipe'], + maxBuffer: MAX_RUNTIME_EXECUTOR_OUTPUT_BYTES, }), }), { json }); } else throw new TorchError(`Unknown fleet operation: ${operation}`, { code: 'UNKNOWN_COMMAND' }); @@ -1615,7 +1621,7 @@ export async function runCli(argv = process.argv.slice(2), { plan, controlPlane: control, adapters, executor: (launch) => spawn(launch.command, launch.args, { cwd: launch.cwd, encoding: 'utf8', stdio: ['ignore', 'pipe', 'pipe'], - timeout: 300_000, maxBuffer: 8 * 1024 * 1024, killSignal: 'SIGTERM', + timeout: 300_000, maxBuffer: MAX_RUNTIME_EXECUTOR_OUTPUT_BYTES, killSignal: 'SIGTERM', }), }); }, diff --git a/src/runtime/lifecycle.mjs b/src/runtime/lifecycle.mjs index 9852603..5fea18f 100644 --- a/src/runtime/lifecycle.mjs +++ b/src/runtime/lifecycle.mjs @@ -465,6 +465,61 @@ function writeCombinedPrompt(action) { writeFileSync(action.promptFile, action.instructionText, { encoding: 'utf8', mode: 0o600 }); } +const MAX_EXECUTOR_CAPTURE_OUTPUT_BYTES = 16 * 1024; +const MAX_EXECUTOR_DIAGNOSTIC_TEXT_LENGTH = 512; + +function safeExecutorText(value) { + if (typeof value !== 'string') return null; + const compact = value.replace(/\s+/g, ' ').trim(); + if (!compact) return null; + return compact + .replace(/\bBearer\s+[-A-Za-z0-9._~+/]+=*/gi, 'Bearer [REDACTED]') + .replace(/((?:api[_ -]?key|access[_ -]?token|refresh[_ -]?token|token|password|secret|credential|authorization|cookie|prompt|private reasoning)\s*(?:=|:|\s)\s*)([^\s,;]+)/gi, '$1[REDACTED]') + .replace(/(https?:\/\/)[^\s/@]+:[^\s/@]+@/gi, '$1[REDACTED]@') + .slice(0, MAX_EXECUTOR_DIAGNOSTIC_TEXT_LENGTH); +} + +function safeExecutorCode(value) { + return typeof value === 'string' && /^[A-Z][A-Z0-9_.-]{0,79}$/.test(value) ? value : null; +} + +export function classifyExecutorOutcome(result) { + const status = Number.isInteger(result?.status) ? result.status : null; + const signal = typeof result?.signal === 'string' && result.signal.trim() ? result.signal.trim() : null; + const errorCode = safeExecutorCode(result?.error?.code); + if (errorCode || result?.error) { + return { + state: 'unknown', terminal: false, status, signal, + reason: errorCode ? `executor-error-${errorCode}` : 'executor-error', + ...(errorCode ? { errorCode } : {}), + }; + } + if (signal) return { state: 'unknown', terminal: false, status, signal, reason: 'executor-signal' }; + if (status === 0) return { state: 'succeeded', terminal: true, status, signal: null }; + if (status === null) return { state: 'unknown', terminal: false, status: null, signal: null, reason: 'executor-status-missing' }; + return { state: 'failed', terminal: true, status, signal: null, reason: 'executor-nonzero-status' }; +} + +function canSafelyCaptureRuntimeId(result) { + const output = result?.stdout ?? result?.output; + return Buffer.byteLength(typeof output === 'string' ? output : String(output ?? ''), 'utf8') + <= MAX_EXECUTOR_CAPTURE_OUTPUT_BYTES; +} + +function captureRuntimeId({ action, runtimeAdapter, result }) { + if (!action.requiresRuntimeIdCapture || !runtimeAdapter || !canSafelyCaptureRuntimeId(result)) { + return action.runtimeSessionId; + } + try { + return runtimeAdapter.captureRuntimeId({ + areaId: action.areaId, runtimeSessionId: action.runtimeSessionId, + stdout: result?.stdout, output: result?.output, + }).runtimeSessionId; + } catch { + return action.runtimeSessionId; + } +} + export function startFleet({ plan, controlPlane, executor, adapters } = {}) { if (!plan?.canProceed) { throw new TorchError('Fleet startup plan has unresolved blockers', { @@ -482,20 +537,25 @@ export function startFleet({ plan, controlPlane, executor, adapters } = {}) { controlPlane.assertIdentity(action.areaId); writeCombinedPrompt(action); const result = executor({ ...action.launch, areaId: action.areaId, runtimeSessionId: action.runtimeSessionId }); - if (result?.status !== undefined && result.status !== 0) { - const runtimeAdapter = runtimes.get(action.runtime); + const outcome = classifyExecutorOutcome(result); + const runtimeAdapter = runtimes.get(action.runtime); + if (outcome.state !== 'succeeded') { + const runtimeSessionId = captureRuntimeId({ action, runtimeAdapter, result }); const diagnostic = typeof runtimeAdapter?.diagnoseStartupFailure === 'function' ? runtimeAdapter.diagnoseStartupFailure({ stdout: result?.stdout, stderr: result?.stderr }) : null; controlPlane.reportStatus({ - areaId: action.areaId, state: 'offline', runtime: action.runtime, - runtimeSessionId: action.runtimeSessionId, summary: 'Runtime launch failed.', + areaId: action.areaId, state: 'working', runtime: action.runtime, + runtimeSessionId, + summary: 'Runtime executor completion is unknown; duplicate launch is blocked pending reconciliation.', }); throw new TorchError(`Fleet startup failed for ${action.areaId}`, { code: 'FLEET_START_FAILED', details: { - areaId: action.areaId, status: result.status, - stderr: diagnostic ? diagnostic.stderr : result.stderr ?? null, - ...(diagnostic ? { diagnostic } : {}), + areaId: action.areaId, status: outcome.status, signal: outcome.signal, + executorOutcome: outcome, + ...(diagnostic + ? { diagnostic, stderr: diagnostic.stderr } + : { stderr: safeExecutorText(result?.stderr ?? result?.error?.message) }), started, }, }); diff --git a/src/schedules/service.mjs b/src/schedules/service.mjs index b3b4e2f..f1f7723 100644 --- a/src/schedules/service.mjs +++ b/src/schedules/service.mjs @@ -115,7 +115,11 @@ function validate(definition) { function bounded(value) { const content = value?.toString() ?? ''; - return content.length > 65_536 ? `${content.slice(0, 65_536)}\n[truncated]` : content; + const safe = content + .replace(/\bBearer\s+[-A-Za-z0-9._~+/]+=*/gi, 'Bearer [REDACTED]') + .replace(/((?:api[_ -]?key|access[_ -]?token|refresh[_ -]?token|token|password|secret|credential|authorization|cookie|prompt|private reasoning)\s*(?:=|:|\s)\s*)([^\s,;]+)/gi, '$1[REDACTED]') + .replace(/(https?:\/\/)[^\s/@]+:[^\s/@]+@/gi, '$1[REDACTED]@'); + return safe.length > 65_536 ? `${safe.slice(0, 65_536)}\n[truncated]` : safe; } function managerWakeCapability(prepared, managerId, maxUsd) { diff --git a/test/fleet/executor-outcomes.test.mjs b/test/fleet/executor-outcomes.test.mjs new file mode 100644 index 0000000..a810fd2 --- /dev/null +++ b/test/fleet/executor-outcomes.test.mjs @@ -0,0 +1,117 @@ +import assert from 'node:assert/strict'; +import { execFileSync, spawnSync } from 'node:child_process'; +import { mkdtempSync, writeFileSync } from 'node:fs'; +import { tmpdir } from 'node:os'; +import { join } from 'node:path'; +import test from 'node:test'; +import { createCodexAdapter } from '../../src/adapters/codex.mjs'; +import { openControlPlane } from '../../src/control-plane/service.mjs'; +import { analyzeRepository } from '../../src/kernel/analyze.mjs'; +import { proposeDomains } from '../../src/kernel/domains.mjs'; +import { inspectRepository } from '../../src/kernel/git.mjs'; +import { installProject } from '../../src/kernel/install.mjs'; +import { startFleet } from '../../src/runtime/lifecycle.mjs'; +import { ScheduleService } from '../../src/schedules/service.mjs'; + +function fixture() { + const root = mkdtempSync(join(tmpdir(), 'torch-executor-outcomes-')); + const git = (args) => execFileSync('git', ['-C', root, ...args]); + execFileSync('git', ['init', '-b', 'main', root]); + git(['config', 'user.email', 'torch-test@example.invalid']); + git(['config', 'user.name', 'TORCH Test']); + writeFileSync(join(root, 'app.js'), 'export const app = true;\n'); + git(['add', '.']); + git(['commit', '-m', 'fixture']); + const repository = inspectRepository(root); + const proposal = proposeDomains({ repository, analysis: analyzeRepository(repository) }); + const worker = proposal.domains[0].id; + proposal.schedules = [{ + id: 'domain-audit', title: 'Domain audit', owner: worker, lifetime: 'session', + trigger: { type: 'manual' }, behavior: 'read-only', + action: { type: 'command', command: process.execPath, args: ['-e', 'process.exit(0)'] }, + required_authority: [worker], retry: { max_attempts: 1 }, + failure_recipient: 'session-manager', source_of_truth: 'test fixture', + }]; + proposal.review = { status: 'approved', reviewedAt: '2026-09-30T00:00:00Z', reviewedBy: 'fixture-owner', notes: [] }; + const env = { ...process.env, XDG_DATA_HOME: mkdtempSync(join(tmpdir(), 'torch-executor-outcomes-state-')) }; + installProject({ repository, proposal, env, projectId: 'executor-outcomes-fixture' }); + return { root, env, worker }; +} + +function planFor(context, runtimeSessionId = 'captured-native-session') { + return { + canProceed: true, + projectId: 'executor-outcomes-fixture', + actions: [{ + areaId: context.worker, runtime: 'codex', runtimeSessionId, + requiresRuntimeIdCapture: false, completionState: 'idle', mode: 'resume', + promptFile: join(context.root, 'runtime-prompt.md'), instructionText: 'test prompt', + launch: { command: 'codex', args: [], cwd: context.root }, + }], + }; +} + +function expectInterruptedStart({ context, result, expectedReason }) { + const control = openControlPlane({ repositoryRoot: context.root, env: context.env }); + try { + let failure; + assert.throws(() => startFleet({ + plan: planFor(context), controlPlane: control, + adapters: new Map([['codex', createCodexAdapter()]]), executor: () => result, + }), (error) => { + failure = error; + return error.code === 'FLEET_START_FAILED'; + }); + assert.equal(failure.details.executorOutcome.reason, expectedReason); + assert.equal(control.identity(context.worker).state, 'working'); + assert.equal(control.identity(context.worker).runtimeSessionId, 'captured-native-session'); + return failure; + } finally { control.close(); } +} + +test('SCN-executor-interrupted-outcomes: a graceful timeout, signal, or ENOBUFS cannot create an idle turn or disclose output', () => { + const timeout = spawnSync(process.execPath, [ + '-e', 'process.on("SIGTERM", () => process.exit(0)); setInterval(() => {}, 1000);', + ], { encoding: 'utf8', stdio: ['ignore', 'pipe', 'pipe'], timeout: 100, killSignal: 'SIGTERM' }); + assert.equal(timeout.status, 0); + assert.equal(timeout.error?.code, 'ETIMEDOUT'); + expectInterruptedStart({ context: fixture(), result: timeout, expectedReason: 'executor-error-ETIMEDOUT' }); + + expectInterruptedStart({ + context: fixture(), result: { status: null, signal: 'SIGTERM' }, expectedReason: 'executor-signal', + }); + + const screenshotPayload = 'image-data-'.repeat(200_000); + const overflow = expectInterruptedStart({ + context: fixture(), + result: { + status: 0, error: Object.assign(new Error('private reasoning should not be reported'), { code: 'ENOBUFS' }), + stdout: screenshotPayload, + stderr: 'token=fixture-token password=fixture-password prompt=private-prompt', + }, + expectedReason: 'executor-error-ENOBUFS', + }); + assert.doesNotMatch(JSON.stringify(overflow.details), /image-data|fixture-token|fixture-password|private-prompt/); +}); + +test('SCN-scheduled-executor-failure: a zero-status executor error records failure and keeps output bounded and redacted', () => { + const context = fixture(); + const control = openControlPlane({ repositoryRoot: context.root, env: context.env }); + try { + control.reportStatus({ areaId: 'session-manager', state: 'idle', summary: 'Fixture session is available.' }); + const service = new ScheduleService({ + repositoryRoot: context.root, controlPlane: control, + executor: () => ({ + status: 0, + error: Object.assign(new Error('private reasoning=fixture-analysis'), { code: 'ENOBUFS' }), + stdout: 'screenshot-data-'.repeat(200_000), + stderr: 'token=fixture-token password=fixture-password', + }), + }); + const run = service.run({ scheduleId: 'domain-audit', actorId: context.worker }); + assert.equal(run.result, 'failed'); + assert.equal(run.exitStatus, 0); + assert.match(run.stdout, /\[truncated\]/); + assert.doesNotMatch(`${run.stdout}\n${run.stderr}`, /fixture-token|fixture-password|fixture-analysis/); + } finally { control.close(); } +}); From 9394243fcede5f73120c5de10ae791dd57be8e80 Mon Sep 17 00:00:00 2001 From: thePR0M3TH3AN Date: Wed, 30 Sep 2026 19:34:21 -0400 Subject: [PATCH 05/51] TASK-bounded-routine-coordination: test paused dispatch Closes: TASK-bounded-routine-coordination --- docs/TEST_INTEGRITY.md | 5 +++ test/fleet/routine-coordination.test.mjs | 45 ++++++++++++++++++++++++ 2 files changed, 50 insertions(+) diff --git a/docs/TEST_INTEGRITY.md b/docs/TEST_INTEGRITY.md index 91620da..6c8c9e6 100644 --- a/docs/TEST_INTEGRITY.md +++ b/docs/TEST_INTEGRITY.md @@ -14,9 +14,14 @@ test_integrity_note: given: An assigned task and pending peer and owner approvals in a fixed-time local control plane when: The named recipient acknowledges messages and the manager attempts a non-owned decision then: The task and approvals remain pending until only the named peer decides its approval + - id: SCN-routine-coordination-paused-dispatch + given: An assigned task, an approved named-peer request, and a pending owner provider decision + when: A public runtime start is attempted without an authorized executor + then: The start is refused, no provider adapter runs, and the assigned task and owner wait remain unresolved observable_outcomes: - Generated tracked instruction text for fresh-install and resume surfaces - Durable task state, approval state, named-approver identity, and authority errors + - Public start refusal, zero adapter invocations, offline identity state, and retained owner wait determinism_controls: - Disposable local Git repository, SQLite state, and fixed clock - No provider calls, network, retries, sleeps, or host timers diff --git a/test/fleet/routine-coordination.test.mjs b/test/fleet/routine-coordination.test.mjs index 23f3a6b..4784ead 100644 --- a/test/fleet/routine-coordination.test.mjs +++ b/test/fleet/routine-coordination.test.mjs @@ -4,6 +4,7 @@ import { mkdirSync, mkdtempSync, readFileSync, writeFileSync } from 'node:fs'; import { tmpdir } from 'node:os'; import { basename, join } from 'node:path'; import test from 'node:test'; +import { createClaudeAdapter } from '../../src/adapters/claude.mjs'; import { createBacklogService } from '../../src/backlog/service.mjs'; import { openControlPlane } from '../../src/control-plane/service.mjs'; import { analyzeRepository } from '../../src/kernel/analyze.mjs'; @@ -11,6 +12,7 @@ import { proposeDomains } from '../../src/kernel/domains.mjs'; import { inspectRepository } from '../../src/kernel/git.mjs'; import { installProject } from '../../src/kernel/install.mjs'; import { createWorktrees } from '../../src/kernel/worktrees.mjs'; +import { planAreaUp, startFleet } from '../../src/runtime/lifecycle.mjs'; function fixture() { const root = mkdtempSync(join(tmpdir(), 'torch-routine-coordination-')); @@ -104,3 +106,46 @@ test('SCN-routine-coordination-boundaries: acknowledgement leaves work pending a control.close(); } }); + +test('SCN-routine-coordination-paused-dispatch: an unapproved public start leaves work and owner waits unresolved', () => { + const context = fixture(); + let adapterCalls = 0; + const adapter = createClaudeAdapter({ executable: 'claude', runner: () => { + adapterCalls++; + throw new Error('A disabled provider must not run.'); + } }); + const control = openControlPlane({ repositoryRoot: context.root, env: context.env, + clock: () => new Date('2026-09-30T12:00:00Z') }); + try { + const backlog = createBacklogService({ repositoryRoot: context.root, controlPlane: control }); + const created = backlog.create({ actorId: 'session-manager', title: 'Paused dispatch boundary', + description: 'Keep assigned work visible while provider execution is disabled.', + acceptanceCriteria: ['The start boundary fails closed.'], affectedDomains: [context.worker] }); + const ready = backlog.transition({ taskId: created.id, actorId: 'session-manager', to: 'ready', + expectedRevision: created.revision }); + const assigned = backlog.transition({ taskId: ready.id, actorId: 'session-manager', to: 'assigned', + owner: context.worker, expectedRevision: ready.revision }); + const taskMessage = control.sendMessage({ sender: 'session-manager', recipient: context.worker, + body: 'Wait for explicit provider authorization.', references: { task: assigned.id } }); + control.ackMessage({ recipient: context.worker, messageId: taskMessage.id }); + const peerApproval = control.requestApproval({ requester: context.worker, approver: context.peer, + task: assigned.id, title: 'Peer consent', summary: 'Approve the bounded routine path.' }); + control.decideApproval({ approvalId: peerApproval.id, decidedBy: context.peer, decision: 'approved', + expectedRevision: peerApproval.revision, note: 'Routine path reviewed.' }); + const ownerWait = control.requestApproval({ requester: context.worker, approver: 'owner', task: assigned.id, + title: 'Owner provider decision', summary: 'Provider execution remains owner-reserved.' }); + + const plan = planAreaUp({ repositoryRoot: context.root, controlPlane: control, areaId: context.worker, + adapter, fresh: true }); + assert.equal(plan.canProceed, true, JSON.stringify(plan.blockers)); + assert.throws(() => startFleet({ plan, controlPlane: control }), + (error) => error.code === 'RUNTIME_EXECUTION_NOT_AUTHORIZED'); + assert.equal(adapterCalls, 0, 'the disabled public start cannot invoke a provider adapter'); + assert.equal(backlog.get(assigned.id).state, 'assigned', 'acknowledgement and refusal cannot complete work'); + assert.equal(control.listApprovals({ actorId: context.worker, status: 'pending' }).some((item) => + item.id === ownerWait.id), true, 'the owner wait remains visible after the blocked start'); + assert.equal(control.identity(context.worker).state, 'offline', 'a blocked start cannot report false idle or success'); + } finally { + control.close(); + } +}); From c449f18244f3ea1b289c862507ba48163f7cc77f Mon Sep 17 00:00:00 2001 From: thePR0M3TH3AN Date: Wed, 30 Sep 2026 19:35:39 -0400 Subject: [PATCH 06/51] TASK-pilot-executor-outcomes: preserve terminal launch handling --- src/runtime/lifecycle.mjs | 7 +++++-- test/fleet/executor-outcomes.test.mjs | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/runtime/lifecycle.mjs b/src/runtime/lifecycle.mjs index 5fea18f..98bb4c0 100644 --- a/src/runtime/lifecycle.mjs +++ b/src/runtime/lifecycle.mjs @@ -543,10 +543,13 @@ export function startFleet({ plan, controlPlane, executor, adapters } = {}) { const runtimeSessionId = captureRuntimeId({ action, runtimeAdapter, result }); const diagnostic = typeof runtimeAdapter?.diagnoseStartupFailure === 'function' ? runtimeAdapter.diagnoseStartupFailure({ stdout: result?.stdout, stderr: result?.stderr }) : null; + const uncertain = outcome.state === 'unknown'; controlPlane.reportStatus({ - areaId: action.areaId, state: 'working', runtime: action.runtime, + areaId: action.areaId, state: uncertain ? 'working' : 'offline', runtime: action.runtime, runtimeSessionId, - summary: 'Runtime executor completion is unknown; duplicate launch is blocked pending reconciliation.', + summary: uncertain + ? 'Runtime executor completion is unknown; duplicate launch is blocked pending reconciliation.' + : 'Runtime launch failed with a terminal nonzero exit.', }); throw new TorchError(`Fleet startup failed for ${action.areaId}`, { code: 'FLEET_START_FAILED', diff --git a/test/fleet/executor-outcomes.test.mjs b/test/fleet/executor-outcomes.test.mjs index a810fd2..8fca344 100644 --- a/test/fleet/executor-outcomes.test.mjs +++ b/test/fleet/executor-outcomes.test.mjs @@ -72,7 +72,7 @@ function expectInterruptedStart({ context, result, expectedReason }) { test('SCN-executor-interrupted-outcomes: a graceful timeout, signal, or ENOBUFS cannot create an idle turn or disclose output', () => { const timeout = spawnSync(process.execPath, [ '-e', 'process.on("SIGTERM", () => process.exit(0)); setInterval(() => {}, 1000);', - ], { encoding: 'utf8', stdio: ['ignore', 'pipe', 'pipe'], timeout: 100, killSignal: 'SIGTERM' }); + ], { encoding: 'utf8', stdio: ['ignore', 'pipe', 'pipe'], timeout: 1_000, killSignal: 'SIGTERM' }); assert.equal(timeout.status, 0); assert.equal(timeout.error?.code, 'ETIMEDOUT'); expectInterruptedStart({ context: fixture(), result: timeout, expectedReason: 'executor-error-ETIMEDOUT' }); From d8f4b79567bc95a49386909187900849c38e8e63 Mon Sep 17 00:00:00 2001 From: thePR0M3TH3AN Date: Wed, 30 Sep 2026 19:37:44 -0400 Subject: [PATCH 07/51] TASK-pilot-executor-outcomes: retain bounded interrupted identity --- src/runtime/lifecycle.mjs | 10 +++++----- test/fleet/executor-outcomes.test.mjs | 24 +++++++++++++++++++----- 2 files changed, 24 insertions(+), 10 deletions(-) diff --git a/src/runtime/lifecycle.mjs b/src/runtime/lifecycle.mjs index 98bb4c0..37e7713 100644 --- a/src/runtime/lifecycle.mjs +++ b/src/runtime/lifecycle.mjs @@ -500,20 +500,20 @@ export function classifyExecutorOutcome(result) { return { state: 'failed', terminal: true, status, signal: null, reason: 'executor-nonzero-status' }; } -function canSafelyCaptureRuntimeId(result) { +function boundedRuntimeCaptureOutput(result) { const output = result?.stdout ?? result?.output; - return Buffer.byteLength(typeof output === 'string' ? output : String(output ?? ''), 'utf8') - <= MAX_EXECUTOR_CAPTURE_OUTPUT_BYTES; + return Buffer.from(typeof output === 'string' ? output : String(output ?? ''), 'utf8') + .subarray(0, MAX_EXECUTOR_CAPTURE_OUTPUT_BYTES).toString('utf8'); } function captureRuntimeId({ action, runtimeAdapter, result }) { - if (!action.requiresRuntimeIdCapture || !runtimeAdapter || !canSafelyCaptureRuntimeId(result)) { + if (!action.requiresRuntimeIdCapture || !runtimeAdapter) { return action.runtimeSessionId; } try { return runtimeAdapter.captureRuntimeId({ areaId: action.areaId, runtimeSessionId: action.runtimeSessionId, - stdout: result?.stdout, output: result?.output, + stdout: boundedRuntimeCaptureOutput(result), }).runtimeSessionId; } catch { return action.runtimeSessionId; diff --git a/test/fleet/executor-outcomes.test.mjs b/test/fleet/executor-outcomes.test.mjs index 8fca344..ab7f7c1 100644 --- a/test/fleet/executor-outcomes.test.mjs +++ b/test/fleet/executor-outcomes.test.mjs @@ -38,25 +38,27 @@ function fixture() { return { root, env, worker }; } -function planFor(context, runtimeSessionId = 'captured-native-session') { +function planFor(context, { + runtimeSessionId = 'captured-native-session', requiresRuntimeIdCapture = false, +} = {}) { return { canProceed: true, projectId: 'executor-outcomes-fixture', actions: [{ areaId: context.worker, runtime: 'codex', runtimeSessionId, - requiresRuntimeIdCapture: false, completionState: 'idle', mode: 'resume', + requiresRuntimeIdCapture, completionState: 'idle', mode: 'resume', promptFile: join(context.root, 'runtime-prompt.md'), instructionText: 'test prompt', launch: { command: 'codex', args: [], cwd: context.root }, }], }; } -function expectInterruptedStart({ context, result, expectedReason }) { +function expectInterruptedStart({ context, result, expectedReason, plan = planFor(context) }) { const control = openControlPlane({ repositoryRoot: context.root, env: context.env }); try { let failure; assert.throws(() => startFleet({ - plan: planFor(context), controlPlane: control, + plan, controlPlane: control, adapters: new Map([['codex', createCodexAdapter()]]), executor: () => result, }), (error) => { failure = error; @@ -64,7 +66,8 @@ function expectInterruptedStart({ context, result, expectedReason }) { }); assert.equal(failure.details.executorOutcome.reason, expectedReason); assert.equal(control.identity(context.worker).state, 'working'); - assert.equal(control.identity(context.worker).runtimeSessionId, 'captured-native-session'); + assert.equal(control.identity(context.worker).runtimeSessionId, + plan.actions[0].runtimeSessionId ?? 'overflow-thread'); return failure; } finally { control.close(); } } @@ -92,6 +95,17 @@ test('SCN-executor-interrupted-outcomes: a graceful timeout, signal, or ENOBUFS expectedReason: 'executor-error-ENOBUFS', }); assert.doesNotMatch(JSON.stringify(overflow.details), /image-data|fixture-token|fixture-password|private-prompt/); + + const overflowContext = fixture(); + expectInterruptedStart({ + context: overflowContext, + plan: planFor(overflowContext, { runtimeSessionId: null, requiresRuntimeIdCapture: true }), + result: { + status: 0, error: Object.assign(new Error('overflow'), { code: 'ENOBUFS' }), + stdout: `{"type":"thread.started","thread_id":"overflow-thread"}\n${screenshotPayload}`, + }, + expectedReason: 'executor-error-ENOBUFS', + }); }); test('SCN-scheduled-executor-failure: a zero-status executor error records failure and keeps output bounded and redacted', () => { From e0637f8255b79401fb483dddf3fe8d602aae687c Mon Sep 17 00:00:00 2001 From: thePR0M3TH3AN Date: Wed, 30 Sep 2026 19:58:26 -0400 Subject: [PATCH 08/51] TASK-console-ux-audit: record browser evidence --- .../desktop-briefing.png | Bin 0 -> 72178 bytes .../desktop-conversations.png | Bin 0 -> 183869 bytes .../desktop-evidence.png | Bin 0 -> 55667 bytes .../TASK-console-ux-audit/desktop-fleet.png | Bin 0 -> 105591 bytes .../desktop-flow-watch.png | Bin 0 -> 66615 bytes .../desktop-keyboard-tab.png | Bin 0 -> 66132 bytes .../desktop-operations.png | Bin 0 -> 76229 bytes .../desktop-organization.png | Bin 0 -> 92373 bytes .../desktop-overview.png | Bin 0 -> 69434 bytes .../desktop-progress.png | Bin 0 -> 98479 bytes .../desktop-release-gates.png | Bin 0 -> 74157 bytes .../TASK-console-ux-audit/desktop-work.png | Bin 0 -> 91691 bytes .../mobile-release-gates.png | Bin 0 -> 3157 bytes ...nsole-ux-audit-owner-console-2026-09-30.md | 135 ++++++++++++++++++ 14 files changed, 135 insertions(+) create mode 100644 artifacts/TASK-console-ux-audit/desktop-briefing.png create mode 100644 artifacts/TASK-console-ux-audit/desktop-conversations.png create mode 100644 artifacts/TASK-console-ux-audit/desktop-evidence.png create mode 100644 artifacts/TASK-console-ux-audit/desktop-fleet.png create mode 100644 artifacts/TASK-console-ux-audit/desktop-flow-watch.png create mode 100644 artifacts/TASK-console-ux-audit/desktop-keyboard-tab.png create mode 100644 artifacts/TASK-console-ux-audit/desktop-operations.png create mode 100644 artifacts/TASK-console-ux-audit/desktop-organization.png create mode 100644 artifacts/TASK-console-ux-audit/desktop-overview.png create mode 100644 artifacts/TASK-console-ux-audit/desktop-progress.png create mode 100644 artifacts/TASK-console-ux-audit/desktop-release-gates.png create mode 100644 artifacts/TASK-console-ux-audit/desktop-work.png create mode 100644 artifacts/TASK-console-ux-audit/mobile-release-gates.png create mode 100644 reports/design-system/task-console-ux-audit-owner-console-2026-09-30.md diff --git a/artifacts/TASK-console-ux-audit/desktop-briefing.png b/artifacts/TASK-console-ux-audit/desktop-briefing.png new file mode 100644 index 0000000000000000000000000000000000000000..afdeb0989c325b05ae77f5bec481b96bfacd8cae GIT binary patch literal 72178 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 literal 0 HcmV?d00001 diff --git a/artifacts/TASK-console-ux-audit/desktop-conversations.png b/artifacts/TASK-console-ux-audit/desktop-conversations.png new file mode 100644 index 0000000000000000000000000000000000000000..0b698ca57b4c1e6cc6e686f2c90f1b5c61e7d5a8 GIT binary patch literal 183869 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 pizg>NV|`LPh0O_BXr%JNy0zQM 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%0DSA$m`!Oo~ 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
MAfRad9U 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 Y@{RtpTIhcoxANZ&{QrHOnf}cF4~d3*JOBUy literal 0 HcmV?d00001 diff --git a/artifacts/TASK-console-ux-audit/mobile-release-gates.png b/artifacts/TASK-console-ux-audit/mobile-release-gates.jpg similarity index 100% rename from artifacts/TASK-console-ux-audit/mobile-release-gates.png rename to artifacts/TASK-console-ux-audit/mobile-release-gates.jpg diff --git a/reports/design-system/task-console-ux-audit-owner-console-2026-09-30.md b/reports/design-system/task-console-ux-audit-owner-console-2026-09-30.md index 41338e3..cb419a2 100644 --- a/reports/design-system/task-console-ux-audit-owner-console-2026-09-30.md +++ b/reports/design-system/task-console-ux-audit-owner-console-2026-09-30.md @@ -17,30 +17,31 @@ same browser session worked. Live Console actions stayed read-only except for unsent test strings in the local request form; neither string was sent and no durable Console state was changed. -**Not complete:** mobile screenshot capture, exhaustive keyboard order, empty, -loading, and failed-action states, and task-owned artifact publication. The -browser viewport capability accepted a 390 x 844 override, and DOM navigation -worked, but one viewport screenshot was blank and the next failed with -`Timed out after 5000ms waiting for CDP command Page.captureScreenshot.` I did -not retry that failing mobile capture route. See the dated images under -`artifacts/TASK-console-ux-audit/`; do not treat the blank mobile image as visual -coverage. +**Not complete:** mobile coverage beyond Overview, an exact 390 x 844 CSS +viewport, exhaustive keyboard order, empty/loading/failed-action states, and +task-owned artifact publication for every screen. After the owner authorized +one bounded recovery, a fresh Overview tab produced a valid narrow screenshot. +The requested 390 x 844 override measured as 433 x 938 CSS pixels at DPR 0.9; +the prior blank `mobile-release-gates.jpg` and the subsequent 5-second CDP +timeout remain evidence of the failed capture route on the old scrolled tab. +See the images under `artifacts/TASK-console-ux-audit/`. ## Personally observed evidence | View | URL fragment | Viewport | Viewed observation / evidence | |---|---|---|---| -| Overview | `#overview` | 1237 x 677 | [Desktop screenshot](../../artifacts/TASK-console-ux-audit/desktop-overview.png). “Healthy” appears beside six attention items, including five generic doctor warnings; project facts also show `Clean at snapshot` and `ONE-DISK`. | -| Briefing | `#owner-briefing` | 1237 x 677 | [Desktop screenshot](../../artifacts/TASK-console-ux-audit/desktop-briefing.png). Empty briefing state gives CLI build/publish instructions. On the first navigation, Work was highlighted while Briefing content was shown; repeated navigation selected Flow watch correctly. | -| Flow watch | `#flow-watch` | 1237 x 677 | [Desktop screenshot](../../artifacts/TASK-console-ux-audit/desktop-flow-watch.png). Check-in and approval panels sit side by side; timer installation is explicitly unverified and only named approvers can decide. | -| Work | `#work` | 1237 x 677 | [Desktop screenshot](../../artifacts/TASK-console-ux-audit/desktop-work.png). Filters form a dense block above five board columns; 44 active items make cards narrow and text wrap heavily. | -| Progress | `#initiative-progress` | 1237 x 677 | [Desktop screenshot](../../artifacts/TASK-console-ux-audit/desktop-progress.png). Feature/milestone summaries and the start of Fleet inventory share one long page. | -| Fleet | `#fleet` | 1237 x 677 | [Desktop screenshot](../../artifacts/TASK-console-ux-audit/desktop-fleet.png). Session state and ownership inventories sit side by side; repeated runtime/model/profile data and long paths dominate. | -| Conversations | `#communications` | 1237 x 677 | [Desktop screenshot](../../artifacts/TASK-console-ux-audit/desktop-conversations.png). Long messages fill two columns; an identical owner message appears in both columns. | -| Organization | `#organization` | 1237 x 677 | [Desktop screenshot](../../artifacts/TASK-console-ux-audit/desktop-organization.png). Three-column role cards repeat reporting/coordination links and show lengthy authority/path descriptions. | -| Evidence | `#evidence` | 1237 x 677 | [Desktop screenshot](../../artifacts/TASK-console-ux-audit/desktop-evidence.png). Check receipts use a narrow left column with repeated pass entries and large empty space to the right; entries are collapsed disclosures. | -| Release gates | `#delivery` | 1237 x 677 | [Desktop screenshot](../../artifacts/TASK-console-ux-audit/desktop-release-gates.png). Integration is “ready” while delivery, fetch, and operation receipts are absent; copy distinguishes landing from deployment. | -| Operations | `#delivery` (expanded disclosure) | 1237 x 677 | [Desktop screenshot](../../artifacts/TASK-console-ux-audit/desktop-operations.png). Expansion reveals Worktrees and Resources; details continue below the viewport. | +| Overview | `#overview` | 1237 x 677 | [Desktop screenshot](../../artifacts/TASK-console-ux-audit/desktop-overview.jpg). “Healthy” appears beside six attention items, including five generic doctor warnings; project facts also show `Clean at snapshot` and `ONE-DISK`. | +| Overview | `#overview` | 433 x 938 CSS, DPR 0.9 (requested 390 x 844) | [Narrow screenshot](../../artifacts/TASK-console-ux-audit/mobile-overview.jpg). Overview content fits the measured viewport width, but the horizontal nav clips after “Progress” and displays its own horizontal scrollbar. Screenshot dimensions are 462 x 1041 pixels. | +| Briefing | `#owner-briefing` | 1237 x 677 | [Desktop screenshot](../../artifacts/TASK-console-ux-audit/desktop-briefing.jpg). Empty briefing state gives CLI build/publish instructions. On the first navigation, Work was highlighted while Briefing content was shown; repeated navigation selected Flow watch correctly. | +| Flow watch | `#flow-watch` | 1237 x 677 | [Desktop screenshot](../../artifacts/TASK-console-ux-audit/desktop-flow-watch.jpg). Check-in and approval panels sit side by side; timer installation is explicitly unverified and only named approvers can decide. | +| Work | `#work` | 1237 x 677 | [Desktop screenshot](../../artifacts/TASK-console-ux-audit/desktop-work.jpg). Filters form a dense block above five board columns; 44 active items make cards narrow and text wrap heavily. | +| Progress | `#initiative-progress` | 1237 x 677 | [Desktop screenshot](../../artifacts/TASK-console-ux-audit/desktop-progress.jpg). Feature/milestone summaries and the start of Fleet inventory share one long page. | +| Fleet | `#fleet` | 1237 x 677 | [Desktop screenshot](../../artifacts/TASK-console-ux-audit/desktop-fleet.jpg). Session state and ownership inventories sit side by side; repeated runtime/model/profile data and long paths dominate. | +| Conversations | `#communications` | 1237 x 677 | [Desktop screenshot](../../artifacts/TASK-console-ux-audit/desktop-conversations.jpg). Long messages fill two columns; an identical owner message appears in both columns. | +| Organization | `#organization` | 1237 x 677 | [Desktop screenshot](../../artifacts/TASK-console-ux-audit/desktop-organization.jpg). Three-column role cards repeat reporting/coordination links and show lengthy authority/path descriptions. | +| Evidence | `#evidence` | 1237 x 677 | [Desktop screenshot](../../artifacts/TASK-console-ux-audit/desktop-evidence.jpg). Check receipts use a narrow left column with repeated pass entries and large empty space to the right; entries are collapsed disclosures. | +| Release gates | `#delivery` | 1237 x 677 | [Desktop screenshot](../../artifacts/TASK-console-ux-audit/desktop-release-gates.jpg). Integration is “ready” while delivery, fetch, and operation receipts are absent; copy distinguishes landing from deployment. | +| Operations | `#delivery` (expanded disclosure) | 1237 x 677 | [Desktop screenshot](../../artifacts/TASK-console-ux-audit/desktop-operations.jpg). Expansion reveals Worktrees and Resources; details continue below the viewport. | ## Interaction evidence @@ -61,10 +62,16 @@ coverage. - **Form validation:** Preview request with no recipient kept the form local and displayed “Choose an identity and write the request before previewing.” No message was sent. The form states that sending adds one durable inbox message. -- **Mobile:** at 390 x 844, the DOM still contained Console content and all main - sections. `mobile-release-gates.png` is blank (3,157 bytes); the next screenshot - command returned the exact CDP timeout above. Mobile visual behavior remains - unverified. +- **Mobile:** the first viewport override did not apply to a newly created tab; + the owner-directed fresh-tab capture exposed that mismatch. On the fresh tab, + the 390 x 844 request measured 433 x 938 CSS pixels at DPR 0.9. DOM rectangles + showed the Overview section in view and no page-level horizontal overflow + (`documentWidth` 416, viewport width 433), while the visible navigation itself + had a horizontal scrollbar. The one authorized fresh-tab screenshot is + `mobile-overview.jpg` (462 x 1041 image pixels). The earlier + `mobile-release-gates.jpg` remains blank (3,157 bytes), followed by the exact + CDP screenshot timeout; it is not visual evidence of that view. Other mobile + sections remain uninspected. The task-owned images are local browser evidence. They have not been published to TORCH artifact storage; publication will follow a committed full SHA and a stable @@ -127,9 +134,10 @@ mass-acknowledge, merge, cleanup, or publication shortcuts. ## Next evidence needed -Coordinate the 390 x 844 screenshot timeout with Provider Runtime and QA; then -capture navigation views at mobile size and inspect overflow, wrapping, nav -behavior, and density. Continue keyboard order and representative empty/loading/ -pending/failed/unknown states, using the isolated demo for state-changing actions. -Publish only task-owned evidence after local commit. Live state stays read-only. -No UI implementation or release is proposed by this audit. +Coordinate the capture behavior with Provider Runtime and QA. If a later task +authorization permits more mobile captures, inspect every navigation view at an +exact 390 x 844 CSS viewport for overflow, wrapping, nav behavior, and density. +Continue keyboard order and representative empty/loading/pending/failed/unknown +states, using the isolated demo for state-changing actions. Publish only +task-owned evidence after local commit. Live state stays read-only. No UI +implementation or release is proposed by this audit. From ee7cdeb777aa222bb7c4253db71015f70fdc5890 Mon Sep 17 00:00:00 2001 From: thePR0M3TH3AN Date: Wed, 30 Sep 2026 20:10:44 -0400 Subject: [PATCH 11/51] TASK-console-ux-audit: record artifact provenance --- ...k-console-ux-audit-owner-console-2026-09-30.md | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/reports/design-system/task-console-ux-audit-owner-console-2026-09-30.md b/reports/design-system/task-console-ux-audit-owner-console-2026-09-30.md index cb419a2..0e03719 100644 --- a/reports/design-system/task-console-ux-audit-owner-console-2026-09-30.md +++ b/reports/design-system/task-console-ux-audit-owner-console-2026-09-30.md @@ -73,9 +73,18 @@ See the images under `artifacts/TASK-console-ux-audit/`. CDP screenshot timeout; it is not visual evidence of that view. Other mobile sections remain uninspected. -The task-owned images are local browser evidence. They have not been published to -TORCH artifact storage; publication will follow a committed full SHA and a stable -mobile-capture path or a documented partial-evidence decision. +Selected screenshots are registered in private TORCH artifact storage with task, +session, and commit provenance: + +| Image | Artifact ID | Commit | +|---|---|---| +| Desktop Overview | `d4c3bd6c-92b8-4791-9a3b-56c636bd6848` | `e0637f8255b79401fb483dddf3fe8d602aae687c` | +| Desktop Work | `703126cb-31b9-47ad-ba57-73d5f873b754` | `e0637f8255b79401fb483dddf3fe8d602aae687c` | +| Desktop Conversations | `c81acd53-da4e-4113-b5a8-ea3c75b0ac16` | `e0637f8255b79401fb483dddf3fe8d602aae687c` | +| Desktop Operations | `472d28b8-31f7-4130-abde-88f82c582970` | `e0637f8255b79401fb483dddf3fe8d602aae687c` | +| Desktop keyboard focus | `9e93f19d-f826-4d93-8ef7-c4a2474cf3bf` | `e0637f8255b79401fb483dddf3fe8d602aae687c` | +| Blank mobile capture (failure evidence) | `3bc724b8-a22f-4f93-8629-eec92ce06ce3` | `e0637f8255b79401fb483dddf3fe8d602aae687c` | +| Fresh-tab narrow Overview | `6d7848d9-a679-4005-8a5a-e5d8eb7d67de` | `412643da93df7df9e2da7a79cd2fd45b945decc0` | The arbiter report provides the broader measured baseline: 50,288 px desktop document, Work 36,662 px with 43 active tasks and 41 queue cards, Conversations From 12e1e33cc80d8babda008e2d65bdcb1f64675e3f Mon Sep 17 00:00:00 2001 From: thePR0M3TH3AN Date: Wed, 30 Sep 2026 20:17:06 -0400 Subject: [PATCH 12/51] TASK-pilot-executor-outcomes: require terminal executor evidence --- docs/TEST_INTEGRITY.md | 75 +++++++++++++++ src/cli.mjs | 17 +++- src/runtime/codex-protocol-reducer.mjs | 83 +++++++++++++++++ src/runtime/lifecycle.mjs | 46 +++++++++- test/fleet/executor-outcomes.test.mjs | 122 ++++++++++++++++++++++++- test/fleet/lifecycle.test.mjs | 32 ++++++- test/fleet/provider-updates.test.mjs | 2 +- 7 files changed, 363 insertions(+), 14 deletions(-) create mode 100644 src/runtime/codex-protocol-reducer.mjs diff --git a/docs/TEST_INTEGRITY.md b/docs/TEST_INTEGRITY.md index c867fa8..203e6ac 100644 --- a/docs/TEST_INTEGRITY.md +++ b/docs/TEST_INTEGRITY.md @@ -1,5 +1,80 @@ # Test Integrity Notes +## 2026-09-30 — Codex terminal completion correction + +```yaml +test_integrity_note: + change_type: spec_correction + scenarios: + - id: SCN-mixed-runtime + given: A status-zero Codex protocol stream containing thread.started and turn.completed + when: Fleet startup captures the provider-specific durable identity + then: The completed turn may record idle with the captured identity + - id: SCN-codex-terminal-completion + given: A status-zero Codex stream containing thread.started but no turn.completed + when: Fleet startup evaluates terminal evidence + then: Startup fails, retains the captured identity as working, and area startup refuses a duplicate + - id: SCN-provider-update-cli + given: The managed-provider fixture simulates a successful status-zero Codex exec stream + when: Startup follows an approved provider update + then: The fixture includes turn.completed after thread.started, preserving strict successful-turn evidence + observable_outcomes: + - Durable runtime state and captured Codex thread identifier + - FLEET_START_FAILED outcome and public area-start blocker + determinism_controls: + - Disposable local Git fixture and fixed JSON protocol records + - No provider calls, network, retries, sleeps, or timeout changes + anti_cheat_rationale: + prevents: + - Treating identity creation as successful turn completion + - Returning idle from a status-zero stream missing terminal evidence + - Launching a duplicate over an uncertain captured identity + relaxation: + did_relax_any_assertion: false + if_true_explain_spec_basis: "" +``` + +Spec basis: a native successful Codex protocol probe emitted ten records ending +in `turn.completed`; `thread.started` establishes identity only, not completion. + +## 2026-09-30 — Bounded Codex executor qualification + +```yaml +test_integrity_note: + change_type: new_tests + scenarios: + - id: SCN-codex-streaming-protocol-reduction + given: A successful Codex stream containing an initial identity, a multi-megabyte image record, private stderr, and terminal completion + when: The bounded reducer and lifecycle process the stream + then: Only identity and terminal records cross the boundary and idle is recorded without private output + - id: SCN-cli-codex-protocol-routing + given: A Codex launch planned by the CLI + when: The CLI invokes the executor + then: It launches the bounded reducer instead of collecting provider stdout directly + - id: SCN-codex-final-terminal-state + given: A stream whose final terminal failure follows an earlier completion, plus real child signal and spawn-error cases + when: The reducer and lifecycle classify the child outcome + then: Only the final failed terminal is retained, signals remain uncertain, and a safe spawn-error code is preserved + - id: SCN-scheduled-manager-wake-terminal-failure + given: An owner-authorized manager check-in with a planned Codex wake whose stream lacks terminal completion + when: The actual ScheduleService invokes the wake boundary + then: The schedule and wake reservation are failed while the manager identity remains working + observable_outcomes: + - Bounded reducer stdout, durable runtime state, schedule result, and reservation outcome + determinism_controls: + - Disposable Git/control-plane fixtures and fixed protocol records + - Local SIGTERM-aware child with a readiness marker; no provider, network, retries, or sleeps + anti_cheat_rationale: + prevents: + - Solving image overflow only by shrinking a parent buffer + - Marking a missing-terminal manager wake as invoked or successful + - Accepting an earlier completed event after a later failed terminal + - Retaining private image, token, or reasoning material in durable evidence + relaxation: + did_relax_any_assertion: false + if_true_explain_spec_basis: "" +``` + ## 2026-09-30 — Executor terminal-outcome integrity ```yaml diff --git a/src/cli.mjs b/src/cli.mjs index 6ad9f13..27f84c4 100644 --- a/src/cli.mjs +++ b/src/cli.mjs @@ -32,6 +32,7 @@ import { IntegrationService } from './integration/service.mjs'; import { analyzeCombatrigFleet } from './importers/combatrig.mjs'; import { proposeDomains } from './kernel/domains.mjs'; import { readFileSync } from 'node:fs'; +import { fileURLToPath } from 'node:url'; import { join, resolve } from 'node:path'; import { fileHash, writeNewFile } from './kernel/files.mjs'; import { createWorktrees, planWorktrees } from './kernel/worktrees.mjs'; @@ -46,6 +47,16 @@ import { observeProject } from './observability/snapshot.mjs'; // Provider output is evidence, not an unbounded artifact channel. startFleet // classifies ENOBUFS as an interrupted outcome instead of a completed turn. const MAX_RUNTIME_EXECUTOR_OUTPUT_BYTES = 1024 * 1024; +const CODEX_PROTOCOL_REDUCER = fileURLToPath(new URL('./runtime/codex-protocol-reducer.mjs', import.meta.url)); + +export function executeRuntimeLaunch(spawn, launch, options = {}) { + // Tests and adapter qualification inject a deterministic executor. The real + // synchronous CLI boundary alone needs protocol reduction before buffering. + if (launch.runtime === 'codex' && spawn === spawnSync) { + return spawn(process.execPath, [CODEX_PROTOCOL_REDUCER, launch.command, ...launch.args], options); + } + return spawn(launch.command, launch.args, options); +} import { OwnerDigestService } from './observability/owner-digest.mjs'; import { ContextTelemetryService } from './telemetry/context.mjs'; import { ScheduleService } from './schedules/service.mjs'; @@ -1110,7 +1121,7 @@ export async function runCli(argv = process.argv.slice(2), { } print(startFleet({ plan, controlPlane: control, adapters, - executor: (launch) => spawn(launch.command, launch.args, { + executor: (launch) => executeRuntimeLaunch(spawn, launch, { cwd: launch.cwd, encoding: 'utf8', stdio: ['ignore', 'pipe', 'pipe'], maxBuffer: MAX_RUNTIME_EXECUTOR_OUTPUT_BYTES, }), @@ -1444,7 +1455,7 @@ export async function runCli(argv = process.argv.slice(2), { } print(startFleet({ plan, controlPlane: control, adapters, - executor: (launch) => spawn(launch.command, launch.args, { + executor: (launch) => executeRuntimeLaunch(spawn, launch, { cwd: launch.cwd, encoding: 'utf8', stdio: ['ignore', 'pipe', 'pipe'], maxBuffer: MAX_RUNTIME_EXECUTOR_OUTPUT_BYTES, }), @@ -1619,7 +1630,7 @@ export async function runCli(argv = process.argv.slice(2), { } return startFleet({ plan, controlPlane: control, adapters, - executor: (launch) => spawn(launch.command, launch.args, { + executor: (launch) => executeRuntimeLaunch(spawn, launch, { cwd: launch.cwd, encoding: 'utf8', stdio: ['ignore', 'pipe', 'pipe'], timeout: 300_000, maxBuffer: MAX_RUNTIME_EXECUTOR_OUTPUT_BYTES, killSignal: 'SIGTERM', }), diff --git a/src/runtime/codex-protocol-reducer.mjs b/src/runtime/codex-protocol-reducer.mjs new file mode 100644 index 0000000..3370a2b --- /dev/null +++ b/src/runtime/codex-protocol-reducer.mjs @@ -0,0 +1,83 @@ +#!/usr/bin/env node +// Reduces a Codex protocol stream to the lifecycle facts TORCH may retain. +// Raw turns, images, and stderr are drained but never copied into parent state. +import { spawn } from 'node:child_process'; + +const MAX_PROTOCOL_LINE_CHARS = 32 * 1024; +const [command, ...args] = process.argv.slice(2); +if (!command) process.exit(64); + +const child = spawn(command, args, { cwd: process.cwd(), stdio: ['ignore', 'pipe', 'pipe'] }); +let pending = ''; +let droppingOversizedLine = false; +let threadStarted = null; +let terminal = null; +let childSpawnError = null; + +function safeCode(value) { + return typeof value === 'string' && /^[A-Z][A-Z0-9_.-]{0,79}$/.test(value) ? value : null; +} + +function emit(record) { + process.stdout.write(`${JSON.stringify(record)}\n`); +} + +function inspectLine(line) { + let record; + try { record = JSON.parse(line); } catch { return; } + if (!threadStarted && record?.type === 'thread.started' + && typeof (record.thread_id ?? record.threadId) === 'string' + && (record.thread_id ?? record.threadId).length <= 256) { + threadStarted = record.thread_id ?? record.threadId; + } + if (record?.type === 'turn.completed') terminal = { type: 'turn.completed' }; + if (record?.type === 'turn.failed' || record?.type === 'turn.error' || record?.type === 'error') { + const error = record.error && typeof record.error === 'object' ? record.error : record; + const code = safeCode(error.code ?? record.code); + terminal = { type: 'turn.failed', ...(code ? { code } : {}) }; + } +} + +function consume(chunk) { + let cursor = 0; + while (cursor < chunk.length) { + const newline = chunk.indexOf('\n', cursor); + const end = newline < 0 ? chunk.length : newline; + const fragment = chunk.slice(cursor, end); + if (!droppingOversizedLine) { + if (pending.length + fragment.length > MAX_PROTOCOL_LINE_CHARS) { + pending = ''; + droppingOversizedLine = true; + } else pending += fragment; + } + if (newline < 0) return; + if (!droppingOversizedLine) inspectLine(pending.trim()); + pending = ''; + droppingOversizedLine = false; + cursor = newline + 1; + } +} + +child.stdout.setEncoding('utf8'); +child.stdout.on('data', consume); +child.stderr.on('data', () => {}); +child.on('error', (error) => { childSpawnError = safeCode(error?.code) ?? 'EXECUTOR_SPAWN_ERROR'; }); + +const forwardedSignals = ['SIGTERM', 'SIGINT', 'SIGHUP']; +for (const signal of forwardedSignals) { + process.on(signal, () => { if (!child.killed) child.kill(signal); }); +} + +function exitWithSignal(signal) { + for (const name of forwardedSignals) process.removeAllListeners(name); + process.kill(process.pid, signal); +} + +child.on('close', (code, signal) => { + if (pending && !droppingOversizedLine) inspectLine(pending.trim()); + if (threadStarted) emit({ type: 'thread.started', thread_id: threadStarted }); + if (childSpawnError) emit({ type: 'error', code: childSpawnError }); + else if (terminal) emit(terminal); + if (signal) exitWithSignal(signal); + else process.exit(Number.isInteger(code) && code >= 0 ? code : 1); +}); diff --git a/src/runtime/lifecycle.mjs b/src/runtime/lifecycle.mjs index 37e7713..fed150a 100644 --- a/src/runtime/lifecycle.mjs +++ b/src/runtime/lifecycle.mjs @@ -281,6 +281,13 @@ export function planFleetUp({ repositoryRoot, controlPlane, adapter, adapters, f } validateRuntimeAdapter(runtimeAdapter); const identity = controlPlane.identity(area.id); + if (identity.state === 'working') { + blockers.push({ + areaId: area.id, code: 'RUNTIME_IDENTITY_ACTIVE', state: identity.state, + runtimeSessionId: identity.runtimeSessionId ?? null, + }); + continue; + } const runtimeIntegration = runtimeAdapter.configure({ repositoryRoot, areaId: area.id, mcpEntry: MCP_ENTRY, projectId: manifest.projectId, stateRoot, @@ -375,6 +382,15 @@ export function planAreaUp({ repositoryRoot, controlPlane, areaId, adapter, adap } validateRuntimeAdapter(runtimeAdapter); const identity = controlPlane.identity(area.id); + if (identity.state === 'working') { + return { + action: 'area-up', projectId: manifest.projectId, areaId, fresh, + actions: [], blockers: [{ + areaId, code: 'RUNTIME_IDENTITY_ACTIVE', state: identity.state, + runtimeSessionId: identity.runtimeSessionId ?? null, + }], canProceed: false, mutationPerformed: false, + }; + } const runtimeIntegration = runtimeAdapter.configure({ repositoryRoot, areaId: area.id, mcpEntry: MCP_ENTRY, projectId: manifest.projectId, stateRoot: localStateRoot(manifest), @@ -483,7 +499,20 @@ function safeExecutorCode(value) { return typeof value === 'string' && /^[A-Z][A-Z0-9_.-]{0,79}$/.test(value) ? value : null; } -export function classifyExecutorOutcome(result) { +function codexTerminalState(result) { + const output = boundedRuntimeCaptureOutput(result); + let terminal = null; + for (const line of output.split('\n')) { + try { + const type = JSON.parse(line)?.type; + if (type === 'turn.completed') terminal = 'completed'; + else if (type === 'turn.failed' || type === 'turn.error' || type === 'error') terminal = 'failed'; + } catch { /* non-protocol output is not completion evidence */ } + } + return terminal; +} + +export function classifyExecutorOutcome(result, { runtime } = {}) { const status = Number.isInteger(result?.status) ? result.status : null; const signal = typeof result?.signal === 'string' && result.signal.trim() ? result.signal.trim() : null; const errorCode = safeExecutorCode(result?.error?.code); @@ -495,6 +524,12 @@ export function classifyExecutorOutcome(result) { }; } if (signal) return { state: 'unknown', terminal: false, status, signal, reason: 'executor-signal' }; + if (status === 0 && runtime === 'codex' && codexTerminalState(result) !== 'completed') { + return { + state: 'unknown', terminal: false, status, signal: null, + reason: 'codex-terminal-event-missing', + }; + } if (status === 0) return { state: 'succeeded', terminal: true, status, signal: null }; if (status === null) return { state: 'unknown', terminal: false, status: null, signal: null, reason: 'executor-status-missing' }; return { state: 'failed', terminal: true, status, signal: null, reason: 'executor-nonzero-status' }; @@ -536,8 +571,11 @@ export function startFleet({ plan, controlPlane, executor, adapters } = {}) { for (const action of plan.actions) { controlPlane.assertIdentity(action.areaId); writeCombinedPrompt(action); - const result = executor({ ...action.launch, areaId: action.areaId, runtimeSessionId: action.runtimeSessionId }); - const outcome = classifyExecutorOutcome(result); + const result = executor({ + ...action.launch, areaId: action.areaId, runtime: action.runtime, + runtimeSessionId: action.runtimeSessionId, + }); + const outcome = classifyExecutorOutcome(result, { runtime: action.runtime }); const runtimeAdapter = runtimes.get(action.runtime); if (outcome.state !== 'succeeded') { const runtimeSessionId = captureRuntimeId({ action, runtimeAdapter, result }); @@ -577,7 +615,7 @@ export function startFleet({ plan, controlPlane, executor, adapters } = {}) { } try { runtimeSessionId = runtimeAdapter.captureRuntimeId({ - areaId: action.areaId, runtimeSessionId, stdout: result?.stdout, output: result?.output, + areaId: action.areaId, runtimeSessionId, stdout: boundedRuntimeCaptureOutput(result), }).runtimeSessionId; } catch (error) { controlPlane.reportStatus({ diff --git a/test/fleet/executor-outcomes.test.mjs b/test/fleet/executor-outcomes.test.mjs index ab7f7c1..ff71df8 100644 --- a/test/fleet/executor-outcomes.test.mjs +++ b/test/fleet/executor-outcomes.test.mjs @@ -1,10 +1,11 @@ import assert from 'node:assert/strict'; import { execFileSync, spawnSync } from 'node:child_process'; -import { mkdtempSync, writeFileSync } from 'node:fs'; +import { existsSync, mkdtempSync, readFileSync, writeFileSync } from 'node:fs'; import { tmpdir } from 'node:os'; import { join } from 'node:path'; import test from 'node:test'; import { createCodexAdapter } from '../../src/adapters/codex.mjs'; +import { executeRuntimeLaunch } from '../../src/cli.mjs'; import { openControlPlane } from '../../src/control-plane/service.mjs'; import { analyzeRepository } from '../../src/kernel/analyze.mjs'; import { proposeDomains } from '../../src/kernel/domains.mjs'; @@ -13,6 +14,8 @@ import { installProject } from '../../src/kernel/install.mjs'; import { startFleet } from '../../src/runtime/lifecycle.mjs'; import { ScheduleService } from '../../src/schedules/service.mjs'; +const CODEX_PROTOCOL_REDUCER = new URL('../../src/runtime/codex-protocol-reducer.mjs', import.meta.url).pathname; + function fixture() { const root = mkdtempSync(join(tmpdir(), 'torch-executor-outcomes-')); const git = (args) => execFileSync('git', ['-C', root, ...args]); @@ -72,10 +75,16 @@ function expectInterruptedStart({ context, result, expectedReason, plan = planFo } finally { control.close(); } } -test('SCN-executor-interrupted-outcomes: a graceful timeout, signal, or ENOBUFS cannot create an idle turn or disclose output', () => { +test('SCN-executor-interrupted-outcomes: a graceful ready timeout, signal, or ENOBUFS cannot create an idle turn or disclose output', () => { + const readyDirectory = mkdtempSync(join(tmpdir(), 'torch-executor-ready-')); + const readyPath = join(readyDirectory, 'ready'); const timeout = spawnSync(process.execPath, [ - '-e', 'process.on("SIGTERM", () => process.exit(0)); setInterval(() => {}, 1000);', - ], { encoding: 'utf8', stdio: ['ignore', 'pipe', 'pipe'], timeout: 1_000, killSignal: 'SIGTERM' }); + '-e', 'const fs = require("node:fs"); fs.writeFileSync(process.env.TORCH_READY_PATH, "ready"); process.on("SIGTERM", () => process.exit(0)); setInterval(() => {}, 1000);', + ], { + encoding: 'utf8', stdio: ['ignore', 'pipe', 'pipe'], timeout: 1_000, killSignal: 'SIGTERM', + env: { ...process.env, TORCH_READY_PATH: readyPath }, + }); + assert.equal(existsSync(readyPath), true, 'child reached its readiness boundary before timeout delivery'); assert.equal(timeout.status, 0); assert.equal(timeout.error?.code, 'ETIMEDOUT'); expectInterruptedStart({ context: fixture(), result: timeout, expectedReason: 'executor-error-ETIMEDOUT' }); @@ -108,6 +117,111 @@ test('SCN-executor-interrupted-outcomes: a graceful timeout, signal, or ENOBUFS }); }); +test('SCN-codex-streaming-protocol-reduction: screenshot-heavy successful turns retain only bounded lifecycle facts', () => { + const childProgram = [ + 'const records = [JSON.stringify({type:"thread.started",thread_id:"streamed-thread"}), JSON.stringify({type:"item.completed",image_url:"data:image/png;base64," + "x".repeat(40000)}), JSON.stringify({type:"turn.completed"})].join("\\n") + "\\n";', + 'process.stdout.write(records);', + 'process.stderr.write("private reasoning=fixture-analysis token=fixture-token\\n");', + ].join(''); + const result = spawnSync(process.execPath, [CODEX_PROTOCOL_REDUCER, process.execPath, '-e', childProgram], { + encoding: 'utf8', stdio: ['ignore', 'pipe', 'pipe'], maxBuffer: 64 * 1024, + }); + assert.equal(result.status, 0, result.stderr); + assert.equal(result.stdout, '{"type":"thread.started","thread_id":"streamed-thread"}\n{"type":"turn.completed"}\n'); + assert.ok(Buffer.byteLength(result.stdout) < 256); + assert.doesNotMatch(`${result.stdout}\n${result.stderr}`, /image\/png|fixture-analysis|fixture-token|x{512}/); + const context = fixture(); + const control = openControlPlane({ repositoryRoot: context.root, env: context.env }); + try { + startFleet({ + plan: planFor(context, { runtimeSessionId: null, requiresRuntimeIdCapture: true }), controlPlane: control, + adapters: new Map([['codex', createCodexAdapter()]]), executor: () => result, + }); + assert.equal(control.identity(context.worker).state, 'idle'); + assert.equal(control.identity(context.worker).runtimeSessionId, 'streamed-thread'); + } finally { control.close(); } +}); + +test('SCN-codex-final-terminal-state: a later failed terminal overrides an earlier completion and child signals/errors remain explicit', () => { + const failedTerminal = spawnSync(process.execPath, [CODEX_PROTOCOL_REDUCER, process.execPath, '-e', [ + 'process.stdout.write([JSON.stringify({type:"thread.started",thread_id:"terminal-thread"}), JSON.stringify({type:"turn.completed"}), JSON.stringify({type:"turn.failed",code:"MODEL_NOT_SUPPORTED",message:"private reasoning=hidden"})].join("\\n") + "\\n");', + ].join('')], { encoding: 'utf8', stdio: ['ignore', 'pipe', 'pipe'] }); + assert.equal(failedTerminal.status, 0, failedTerminal.stderr); + assert.equal(failedTerminal.stdout, '{"type":"thread.started","thread_id":"terminal-thread"}\n{"type":"turn.failed","code":"MODEL_NOT_SUPPORTED"}\n'); + const context = fixture(); + const control = openControlPlane({ repositoryRoot: context.root, env: context.env }); + try { + assert.throws(() => startFleet({ + plan: planFor(context, { runtimeSessionId: null, requiresRuntimeIdCapture: true }), controlPlane: control, + adapters: new Map([['codex', createCodexAdapter()]]), executor: () => failedTerminal, + }), (error) => error.code === 'FLEET_START_FAILED' + && error.details.executorOutcome.reason === 'codex-terminal-event-missing' + && error.details.diagnostic.code === 'MODEL_NOT_SUPPORTED'); + assert.equal(control.identity(context.worker).runtimeSessionId, 'terminal-thread'); + assert.equal(control.identity(context.worker).state, 'working'); + } finally { control.close(); } + + const signalled = spawnSync(process.execPath, [CODEX_PROTOCOL_REDUCER, process.execPath, + '-e', 'process.kill(process.pid, "SIGTERM")'], { encoding: 'utf8', stdio: ['ignore', 'pipe', 'pipe'] }); + assert.equal(signalled.signal, 'SIGTERM'); + expectInterruptedStart({ context: fixture(), result: signalled, expectedReason: 'executor-signal' }); + + const unavailable = spawnSync(process.execPath, [CODEX_PROTOCOL_REDUCER, '/definitely/missing-torch-runtime'], { + encoding: 'utf8', stdio: ['ignore', 'pipe', 'pipe'], + }); + assert.equal(unavailable.status, 1); + assert.equal(unavailable.stdout, '{"type":"error","code":"ENOENT"}\n'); +}); + +test('SCN-cli-codex-protocol-routing: the CLI routes Codex launch output through the bounded protocol reducer', () => { + const result = executeRuntimeLaunch(spawnSync, { + runtime: 'codex', command: process.execPath, + args: ['-e', 'process.stdout.write("{\\"type\\":\\"thread.started\\",\\"thread_id\\":\\"cli-thread\\"}\\n{\\"type\\":\\"turn.completed\\"}\\n")'], + }, { cwd: process.cwd(), encoding: 'utf8', stdio: ['ignore', 'pipe', 'pipe'], maxBuffer: 1024 }); + assert.equal(result.status, 0, result.stderr); + assert.equal(result.stdout, '{"type":"thread.started","thread_id":"cli-thread"}\n{"type":"turn.completed"}\n'); +}); + +test('SCN-scheduled-manager-wake-terminal-failure: the real manager-check-in boundary fails rather than invoking a successful wake receipt', () => { + const context = fixture(); + const configPath = join(context.root, '.torch', 'torch.yaml'); + const config = JSON.parse(readFileSync(configPath, 'utf8')); + config.runtime_wake_budget = { max_invocations_per_day: 1 }; + config.schedules.push({ + id: 'manager-check-in', title: 'Manager check-in', owner: 'session-manager', lifetime: 'system', + trigger: { type: 'manual' }, behavior: 'coordination', required_authority: ['owner'], + action: { type: 'manager-check-in', manager_id: 'session-manager', wake: { enabled: true, budget_mode: 'invocation-count' } }, + retry: { max_attempts: 1 }, failure_recipient: 'owner', source_of_truth: 'test fixture', + }); + writeFileSync(configPath, `${JSON.stringify(config, null, 2)}\n`); + const control = openControlPlane({ repositoryRoot: context.root, env: context.env }); + try { + const service = new ScheduleService({ + repositoryRoot: context.root, controlPlane: control, + wakeManager: { + plan: ({ managerId }) => ({ plan: { + canProceed: true, actions: [{ areaId: managerId, runtime: 'codex' }], + }, adapters: new Map([['codex', createCodexAdapter()]]) }), + invoke: ({ managerId, prepared }) => startFleet({ + plan: { + canProceed: true, projectId: 'executor-outcomes-fixture', actions: [{ + areaId: managerId, runtime: 'codex', runtimeSessionId: null, requiresRuntimeIdCapture: true, + completionState: 'idle', mode: 'create', promptFile: join(context.root, 'manager-prompt.md'), + instructionText: 'manager wake', launch: { command: 'codex', args: [], cwd: context.root }, + }], + }, controlPlane: control, adapters: prepared.adapters, + executor: () => ({ status: 0, stdout: '{"type":"thread.started","thread_id":"manager-interrupted"}\n' }), + }), + }, + }); + const run = service.run({ scheduleId: 'manager-check-in', actorId: 'owner', approved: true }); + assert.equal(run.result, 'failed'); + assert.equal(control.identity('session-manager').state, 'working'); + assert.equal(control.identity('session-manager').runtimeSessionId, 'manager-interrupted'); + assert.equal(service.wakeReservations({ managerId: 'session-manager' })[0].outcome, 'failed'); + } finally { control.close(); } +}); + test('SCN-scheduled-executor-failure: a zero-status executor error records failure and keeps output bounded and redacted', () => { const context = fixture(); const control = openControlPlane({ repositoryRoot: context.root, env: context.env }); diff --git a/test/fleet/lifecycle.test.mjs b/test/fleet/lifecycle.test.mjs index b90260d..28e5e07 100644 --- a/test/fleet/lifecycle.test.mjs +++ b/test/fleet/lifecycle.test.mjs @@ -15,7 +15,7 @@ import { defaultManagerCheckInSchedule, organizationGraphFromConfig } from '../. import { createWorktrees } from '../../src/kernel/worktrees.mjs'; import { ResourceService } from '../../src/resources/service.mjs'; import { - createFleetBrief, detachFleet, planFleetDetach, planFleetDown, planFleetUp, startFleet, stopFleet, + createFleetBrief, detachFleet, planAreaUp, planFleetDetach, planFleetDown, planFleetUp, startFleet, stopFleet, } from '../../src/runtime/lifecycle.mjs'; function fleetFixture({ workerRuntime = 'claude', hierarchy = false } = {}) { @@ -331,7 +331,7 @@ test('SCN-mixed-runtime: Codex and Claude share stable identities while planning const started = startFleet({ plan, controlPlane: control, adapters, executor: (launch) => launch.areaId === fixture.worker - ? { status: 0, stdout: '{"type":"thread.started","thread_id":"codex-worker-1"}\n' } + ? { status: 0, stdout: '{"type":"thread.started","thread_id":"codex-worker-1"}\n{"type":"turn.completed"}\n' } : { status: 0, stdout: 'claude-manager-1\n' }, }); assert.deepEqual(started.started.map((item) => item.runtimeSessionId), [ @@ -361,6 +361,34 @@ test('SCN-mixed-runtime: Codex and Claude share stable identities while planning control.close(); }); +test('SCN-codex-terminal-completion: a captured Codex identity is not a completed turn without terminal evidence', () => { + const fixture = fleetFixture({ workerRuntime: 'codex' }); + const control = openControlPlane({ repositoryRoot: fixture.root, env: fixture.env }); + const adapters = new Map([ + ['claude', createClaudeAdapter()], + ['codex', createCodexAdapter({ executable: 'codex' })], + ]); + const plan = planFleetUp({ repositoryRoot: fixture.root, controlPlane: control, adapters, fresh: true }); + assert.throws(() => startFleet({ + plan, controlPlane: control, adapters, + executor: (launch) => launch.areaId === fixture.worker + ? { status: 0, stdout: '{"type":"thread.started","thread_id":"codex-interrupted-1"}\n' } + : { status: 0, stdout: 'claude-manager-1\n' }, + }), (error) => error.code === 'FLEET_START_FAILED' + && error.details.executorOutcome.reason === 'codex-terminal-event-missing'); + assert.equal(control.identity(fixture.worker).state, 'working'); + assert.equal(control.identity(fixture.worker).runtimeSessionId, 'codex-interrupted-1'); + const duplicate = planAreaUp({ + repositoryRoot: fixture.root, controlPlane: control, areaId: fixture.worker, adapters, + }); + assert.equal(duplicate.canProceed, false); + assert.deepEqual(duplicate.blockers, [{ + areaId: fixture.worker, code: 'RUNTIME_IDENTITY_ACTIVE', state: 'working', + runtimeSessionId: 'codex-interrupted-1', + }]); + control.close(); +}); + test('SCN-codex-startup-diagnostics: owner-visible startup failures prefer bounded structured Codex evidence without disclosure', () => { const modelFixture = fleetFixture({ workerRuntime: 'codex' }); const modelControl = openControlPlane({ repositoryRoot: modelFixture.root, env: modelFixture.env }); diff --git a/test/fleet/provider-updates.test.mjs b/test/fleet/provider-updates.test.mjs index b79b8ba..7f363c0 100644 --- a/test/fleet/provider-updates.test.mjs +++ b/test/fleet/provider-updates.test.mjs @@ -34,7 +34,7 @@ function fixture() { return { status: 0, stdout: 'installed' }; } return { status: 0, stdout: args[0] === '--version' ? `provider ${version}` - : args.includes('exec') ? '{"type":"thread.started","thread_id":"provider-update-fixture-session"}\n' : 'help' }; + : args.includes('exec') ? '{"type":"thread.started","thread_id":"provider-update-fixture-session"}\n{"type":"turn.completed"}\n' : 'help' }; }; return { env, calls, runner, next: v => { version = v; }, breakInstall: () => { failInstall = true; } }; } From f4594e9a3767b5e7bc3284b5c81872c6143c0760 Mon Sep 17 00:00:00 2001 From: thePR0M3TH3AN Date: Wed, 30 Sep 2026 20:38:05 -0400 Subject: [PATCH 13/51] TASK-pilot-executor-outcomes retain bounded runtime diagnostics --- src/adapters/codex.mjs | 21 +++++++++++-- src/runtime/codex-protocol-reducer.mjs | 42 ++++++++++++++++++++++---- 2 files changed, 55 insertions(+), 8 deletions(-) diff --git a/src/adapters/codex.mjs b/src/adapters/codex.mjs index f878518..9ec7447 100644 --- a/src/adapters/codex.mjs +++ b/src/adapters/codex.mjs @@ -111,7 +111,11 @@ function startupFailureEvent(record) { if (record.type === 'error' || record.type === 'turn.failed' || record.type === 'turn.error') { const error = record.error && typeof record.error === 'object' && !Array.isArray(record.error) ? record.error : record; - return { code: error.code ?? record.code, message: error.message ?? record.message }; + return { + code: error.code ?? record.code, + category: error.category ?? record.category, + message: error.message ?? record.message, + }; } return null; } @@ -120,6 +124,18 @@ function safeDiagnosticCode(value) { return typeof value === 'string' && /^[A-Z][A-Z0-9_.-]{0,79}$/.test(value) ? value : null; } +function safeDiagnosticCategory(value) { + return ['model-rejection', 'authentication', 'quota'].includes(value) ? value : null; +} + +function categoryFromDiagnosticCode(code) { + if (!code) return null; + if (/(?:MODEL|UNSUPPORTED|UNAVAILABLE|NOT_FOUND)/.test(code)) return 'model-rejection'; + if (/(?:AUTH|UNAUTHORIZED|FORBIDDEN|CREDENTIAL)/.test(code)) return 'authentication'; + if (/(?:QUOTA|RATE_LIMIT|RATE-LIMIT|LIMIT_EXCEEDED)/.test(code)) return 'quota'; + return null; +} + export function diagnoseCodexStartupFailure({ stdout, stderr } = {}) { const parsed = boundedStartupOutput(stdout); const safeStderr = redactDiagnosticText(stderr); @@ -138,11 +154,12 @@ export function diagnoseCodexStartupFailure({ stdout, stderr } = {}) { } const message = redactDiagnosticText(failure.message); const code = safeDiagnosticCode(failure.code); + const category = safeDiagnosticCategory(failure.category); const modelRejection = /\b(model|unsupported|not supported|unavailable|not available|does not exist)\b/i.test(message ?? '') || /MODEL|UNSUPPORTED/i.test(code ?? ''); return { schema: 'torch.dev/runtime-startup-diagnostic/v1alpha1', outcome: 'known', - category: modelRejection ? 'model-rejection' : 'runtime-error', + category: category ?? categoryFromDiagnosticCode(code) ?? (modelRejection ? 'model-rejection' : 'runtime-error'), ...(code ? { code } : {}), ...(message ? { message } : {}), stderr: safeStderr, diff --git a/src/runtime/codex-protocol-reducer.mjs b/src/runtime/codex-protocol-reducer.mjs index 3370a2b..a8bddeb 100644 --- a/src/runtime/codex-protocol-reducer.mjs +++ b/src/runtime/codex-protocol-reducer.mjs @@ -13,13 +13,38 @@ let droppingOversizedLine = false; let threadStarted = null; let terminal = null; let childSpawnError = null; +let forwardedSignal = null; +let pendingWrites = 0; +let finalOutcome = null; function safeCode(value) { return typeof value === 'string' && /^[A-Z][A-Z0-9_.-]{0,79}$/.test(value) ? value : null; } +function safeFailureCategory(value) { + if (typeof value !== 'string') return null; + // Classify a short transient prefix only; never retain diagnostic text itself. + const text = value.slice(0, 512).toLowerCase(); + if (/(?:requested\s+)?model\b|unsupported\s+model|model\s+.*(?:not supported|unavailable)/.test(text)) return 'model-rejection'; + if (/\b(?:auth(?:entication|orization)?|unauthorized|forbidden|credential)\b/.test(text)) return 'authentication'; + if (/\b(?:quota|rate[ -]?limit|usage[ -]?limit|limit exceeded)\b/.test(text)) return 'quota'; + return null; +} + function emit(record) { - process.stdout.write(`${JSON.stringify(record)}\n`); + pendingWrites += 1; + process.stdout.write(`${JSON.stringify(record)}\n`, () => { + pendingWrites -= 1; + finishWhenFlushed(); + }); +} + +function finishWhenFlushed() { + if (!finalOutcome || pendingWrites) return; + const { code, signal } = finalOutcome; + finalOutcome = null; + if (signal) exitWithSignal(signal); + else process.exitCode = Number.isInteger(code) && code >= 0 ? code : 1; } function inspectLine(line) { @@ -29,12 +54,15 @@ function inspectLine(line) { && typeof (record.thread_id ?? record.threadId) === 'string' && (record.thread_id ?? record.threadId).length <= 256) { threadStarted = record.thread_id ?? record.threadId; + // Emit this durable identity before a later interruption can suppress close. + emit({ type: 'thread.started', thread_id: threadStarted }); } if (record?.type === 'turn.completed') terminal = { type: 'turn.completed' }; if (record?.type === 'turn.failed' || record?.type === 'turn.error' || record?.type === 'error') { const error = record.error && typeof record.error === 'object' ? record.error : record; const code = safeCode(error.code ?? record.code); - terminal = { type: 'turn.failed', ...(code ? { code } : {}) }; + const category = code ? null : safeFailureCategory(error.message ?? record.message); + terminal = { type: 'turn.failed', ...(category ? { category } : {}), ...(code ? { code } : {}) }; } } @@ -65,7 +93,10 @@ child.on('error', (error) => { childSpawnError = safeCode(error?.code) ?? 'EXECU const forwardedSignals = ['SIGTERM', 'SIGINT', 'SIGHUP']; for (const signal of forwardedSignals) { - process.on(signal, () => { if (!child.killed) child.kill(signal); }); + process.on(signal, () => { + forwardedSignal ??= signal; + if (!child.killed) child.kill(signal); + }); } function exitWithSignal(signal) { @@ -75,9 +106,8 @@ function exitWithSignal(signal) { child.on('close', (code, signal) => { if (pending && !droppingOversizedLine) inspectLine(pending.trim()); - if (threadStarted) emit({ type: 'thread.started', thread_id: threadStarted }); if (childSpawnError) emit({ type: 'error', code: childSpawnError }); else if (terminal) emit(terminal); - if (signal) exitWithSignal(signal); - else process.exit(Number.isInteger(code) && code >= 0 ? code : 1); + finalOutcome = { code, signal: signal ?? forwardedSignal }; + finishWhenFlushed(); }); From 13fe10b765736984d02f6bca02f690d63dbb3a64 Mon Sep 17 00:00:00 2001 From: thePR0M3TH3AN Date: Wed, 30 Sep 2026 20:41:42 -0400 Subject: [PATCH 14/51] TASK-console-ux-audit: record exact viewport capture blocker --- ...nsole-ux-audit-owner-console-2026-09-30.md | 24 ++++++++++++------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/reports/design-system/task-console-ux-audit-owner-console-2026-09-30.md b/reports/design-system/task-console-ux-audit-owner-console-2026-09-30.md index 0e03719..0c1806c 100644 --- a/reports/design-system/task-console-ux-audit-owner-console-2026-09-30.md +++ b/reports/design-system/task-console-ux-audit-owner-console-2026-09-30.md @@ -19,12 +19,12 @@ durable Console state was changed. **Not complete:** mobile coverage beyond Overview, an exact 390 x 844 CSS viewport, exhaustive keyboard order, empty/loading/failed-action states, and -task-owned artifact publication for every screen. After the owner authorized -one bounded recovery, a fresh Overview tab produced a valid narrow screenshot. -The requested 390 x 844 override measured as 433 x 938 CSS pixels at DPR 0.9; -the prior blank `mobile-release-gates.jpg` and the subsequent 5-second CDP -timeout remain evidence of the failed capture route on the old scrolled tab. -See the images under `artifacts/TASK-console-ux-audit/`. +task-owned artifact publication for every screen. The owner and peer guidance +identified a viewport transform: 351 x 760 at DPR 0.9 yields a 390 x 844 CSS +viewport. A fresh-tab attempt at that exact CSS size showed the Overview DOM, +but its single screenshot attempt still failed with the 5-second CDP timeout. +The earlier 433 x 938 CSS screenshot is retained as narrow-view evidence only; +it does not satisfy the exact viewport requirement. See the evidence below. ## Personally observed evidence @@ -32,6 +32,7 @@ See the images under `artifacts/TASK-console-ux-audit/`. |---|---|---|---| | Overview | `#overview` | 1237 x 677 | [Desktop screenshot](../../artifacts/TASK-console-ux-audit/desktop-overview.jpg). “Healthy” appears beside six attention items, including five generic doctor warnings; project facts also show `Clean at snapshot` and `ONE-DISK`. | | Overview | `#overview` | 433 x 938 CSS, DPR 0.9 (requested 390 x 844) | [Narrow screenshot](../../artifacts/TASK-console-ux-audit/mobile-overview.jpg). Overview content fits the measured viewport width, but the horizontal nav clips after “Progress” and displays its own horizontal scrollbar. Screenshot dimensions are 462 x 1041 pixels. | +| Overview | `#overview` | 390 x 844 CSS, DPR 0.9 | Fresh-tab DOM was visible before the authorized screenshot attempt. The screenshot timed out with `Timed out after 5000ms waiting for CDP command Page.captureScreenshot.` No image was produced; this is blocker evidence, not visual coverage. | | Briefing | `#owner-briefing` | 1237 x 677 | [Desktop screenshot](../../artifacts/TASK-console-ux-audit/desktop-briefing.jpg). Empty briefing state gives CLI build/publish instructions. On the first navigation, Work was highlighted while Briefing content was shown; repeated navigation selected Flow watch correctly. | | Flow watch | `#flow-watch` | 1237 x 677 | [Desktop screenshot](../../artifacts/TASK-console-ux-audit/desktop-flow-watch.jpg). Check-in and approval panels sit side by side; timer installation is explicitly unverified and only named approvers can decide. | | Work | `#work` | 1237 x 677 | [Desktop screenshot](../../artifacts/TASK-console-ux-audit/desktop-work.jpg). Filters form a dense block above five board columns; 44 active items make cards narrow and text wrap heavily. | @@ -70,8 +71,15 @@ See the images under `artifacts/TASK-console-ux-audit/`. had a horizontal scrollbar. The one authorized fresh-tab screenshot is `mobile-overview.jpg` (462 x 1041 image pixels). The earlier `mobile-release-gates.jpg` remains blank (3,157 bytes), followed by the exact - CDP screenshot timeout; it is not visual evidence of that view. Other mobile - sections remain uninspected. + CDP screenshot timeout; it is not visual evidence of that view. QA and Provider + Runtime classified that failure as a browser/CDP capture limitation. Following + the owner's measured workaround, I created one new browser session, opened a + fresh tab, set 351 x 760 before navigation, then verified exact 390 x 844 CSS + dimensions at DPR 0.9. DOM geometry showed document width 373, Overview width + 347.74, and nav scroll width 997 against client width 373; both header buttons + fit within 248.76 CSS pixels. The one screenshot attempt again returned the + exact 5-second CDP timeout. The override was reset immediately. No screenshot + was produced, so exact-size mobile visual coverage remains incomplete. Selected screenshots are registered in private TORCH artifact storage with task, session, and commit provenance: From eab85dd61dd42302d1160b60449d801dbe911dea Mon Sep 17 00:00:00 2001 From: thePR0M3TH3AN Date: Wed, 30 Sep 2026 20:45:15 -0400 Subject: [PATCH 15/51] TASK-console-ux-audit: sync blocked task report --- .../task-console-ux-audit-owner-console-2026-09-30.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/reports/design-system/task-console-ux-audit-owner-console-2026-09-30.md b/reports/design-system/task-console-ux-audit-owner-console-2026-09-30.md index 0c1806c..1e6243a 100644 --- a/reports/design-system/task-console-ux-audit-owner-console-2026-09-30.md +++ b/reports/design-system/task-console-ux-audit-owner-console-2026-09-30.md @@ -1,8 +1,8 @@ # Console UX audit: Owner Console evidence and coverage addendum -Task: `TASK-console-ux-audit` (in progress, revision 4) +Task: `TASK-console-ux-audit` (blocked, revision 5) Audit target: `http://127.0.0.1:4174/console` -Local checkout: `torch/owner-console` at `f72daadcba9f5d8d47ff4130afc6e39498e7d0d4` +Local branch: `torch/owner-console` ## Current status @@ -11,6 +11,10 @@ This is a partial, evidence-bounded addendum to the arbiter's canonical report, commit `7b7c6584b9d315d901133cff828f26f0fcc2003f`. Its measurements remain attributed to that report, not to this audit. +The current TORCH backlog record is blocked at revision 5 and points to this +report and its exact viewport capture blocker. Desktop evidence is committed; +the audit is not complete or ready for integration. + I resumed the existing Brave browser binding and listed its existing Console tab; attaching to that tab timed out twice. A fresh agent-created tab in the same browser session worked. Live Console actions stayed read-only except for From e26a0fb50608a0cd62db6ee9a6341cb11098d70c Mon Sep 17 00:00:00 2001 From: thePR0M3TH3AN Date: Wed, 30 Sep 2026 21:00:06 -0400 Subject: [PATCH 16/51] TASK-pilot-executor-outcomes qualify isolated CLI outcomes --- docs/TEST_INTEGRITY.md | 35 +++++ src/cli.mjs | 6 +- test/fleet/executor-outcomes.test.mjs | 183 +++++++++++++++++++++++++- 3 files changed, 215 insertions(+), 9 deletions(-) diff --git a/docs/TEST_INTEGRITY.md b/docs/TEST_INTEGRITY.md index 203e6ac..31bac41 100644 --- a/docs/TEST_INTEGRITY.md +++ b/docs/TEST_INTEGRITY.md @@ -105,6 +105,41 @@ test_integrity_note: if_true_explain_spec_basis: "" ``` +## 2026-09-30 — Early identity and safe no-code diagnostics + +```yaml +test_integrity_note: + change_type: new_tests + scenarios: + - id: SCN-codex-interrupted-identity + given: A real local helper whose child emits thread.started then remains alive + when: The parent observes the reduced bounded identity and sends SIGTERM to the helper + then: The helper closes by SIGTERM without a terminal success, while lifecycle retains the identity as working and uncertain + - id: SCN-codex-code-less-diagnostics + given: Code-less structured model, authentication, or quota errors containing prompt, reasoning, and image adversarial fields + when: The bounded reducer and adapter classify startup failure + then: Only the allowlisted category crosses the boundary; no free-form diagnostic or adversarial field remains + - id: SCN-cli-codex-real-executable + given: An installed disposable project and an isolated executable named codex + when: The actual runCli up command starts the selected domain + then: The reducer carries identity and terminal completion through the CLI boundary and durable identity becomes idle + observable_outcomes: + - Real helper close signal, exact reduced protocol bytes, and working retained runtime identity + - Safe diagnostic category with no prompt, reasoning, image, or free-form message + - Actual CLI JSON response and persisted identity state from a fake executable on an isolated PATH + determinism_controls: + - Local child process signal handshake driven by receipt of thread.started; a bounded watchdog only terminates and awaits the owned fixture on failed emission, never retries or asserts product timing + - Disposable Git/XDG fixtures and a hermetic executable; no provider, network, or account access + anti_cheat_rationale: + prevents: + - Delaying identity output until child close and losing it on interruption + - Treating code-less model/auth/quota errors as successful or retaining their raw text + - Testing only an injected launch helper instead of the CLI execution boundary + relaxation: + did_relax_any_assertion: false + if_true_explain_spec_basis: "" +``` + ## 2026-09-30 — Exact observed-file ownership evidence ```yaml diff --git a/src/cli.mjs b/src/cli.mjs index 27f84c4..5b01283 100644 --- a/src/cli.mjs +++ b/src/cli.mjs @@ -1122,7 +1122,7 @@ export async function runCli(argv = process.argv.slice(2), { print(startFleet({ plan, controlPlane: control, adapters, executor: (launch) => executeRuntimeLaunch(spawn, launch, { - cwd: launch.cwd, encoding: 'utf8', stdio: ['ignore', 'pipe', 'pipe'], + cwd: launch.cwd, env, encoding: 'utf8', stdio: ['ignore', 'pipe', 'pipe'], maxBuffer: MAX_RUNTIME_EXECUTOR_OUTPUT_BYTES, }), }), { json }); @@ -1456,7 +1456,7 @@ export async function runCli(argv = process.argv.slice(2), { print(startFleet({ plan, controlPlane: control, adapters, executor: (launch) => executeRuntimeLaunch(spawn, launch, { - cwd: launch.cwd, encoding: 'utf8', stdio: ['ignore', 'pipe', 'pipe'], + cwd: launch.cwd, env, encoding: 'utf8', stdio: ['ignore', 'pipe', 'pipe'], maxBuffer: MAX_RUNTIME_EXECUTOR_OUTPUT_BYTES, }), }), { json }); @@ -1631,7 +1631,7 @@ export async function runCli(argv = process.argv.slice(2), { return startFleet({ plan, controlPlane: control, adapters, executor: (launch) => executeRuntimeLaunch(spawn, launch, { - cwd: launch.cwd, encoding: 'utf8', stdio: ['ignore', 'pipe', 'pipe'], + cwd: launch.cwd, env, encoding: 'utf8', stdio: ['ignore', 'pipe', 'pipe'], timeout: 300_000, maxBuffer: MAX_RUNTIME_EXECUTOR_OUTPUT_BYTES, killSignal: 'SIGTERM', }), }); diff --git a/test/fleet/executor-outcomes.test.mjs b/test/fleet/executor-outcomes.test.mjs index ff71df8..a3f13e2 100644 --- a/test/fleet/executor-outcomes.test.mjs +++ b/test/fleet/executor-outcomes.test.mjs @@ -1,11 +1,11 @@ import assert from 'node:assert/strict'; -import { execFileSync, spawnSync } from 'node:child_process'; -import { existsSync, mkdtempSync, readFileSync, writeFileSync } from 'node:fs'; +import { execFileSync, spawn, spawnSync } from 'node:child_process'; +import { chmodSync, existsSync, mkdtempSync, readFileSync, writeFileSync } from 'node:fs'; import { tmpdir } from 'node:os'; import { join } from 'node:path'; import test from 'node:test'; import { createCodexAdapter } from '../../src/adapters/codex.mjs'; -import { executeRuntimeLaunch } from '../../src/cli.mjs'; +import { executeRuntimeLaunch, runCli } from '../../src/cli.mjs'; import { openControlPlane } from '../../src/control-plane/service.mjs'; import { analyzeRepository } from '../../src/kernel/analyze.mjs'; import { proposeDomains } from '../../src/kernel/domains.mjs'; @@ -37,7 +37,9 @@ function fixture() { }]; proposal.review = { status: 'approved', reviewedAt: '2026-09-30T00:00:00Z', reviewedBy: 'fixture-owner', notes: [] }; const env = { ...process.env, XDG_DATA_HOME: mkdtempSync(join(tmpdir(), 'torch-executor-outcomes-state-')) }; - installProject({ repository, proposal, env, projectId: 'executor-outcomes-fixture' }); + installProject({ + repository, proposal, env, projectId: 'executor-outcomes-fixture', runtimes: ['codex'], defaultRuntime: 'codex', + }); return { root, env, worker }; } @@ -56,7 +58,7 @@ function planFor(context, { }; } -function expectInterruptedStart({ context, result, expectedReason, plan = planFor(context) }) { +function expectInterruptedStart({ context, result, expectedReason, plan = planFor(context), expectedRuntimeSessionId }) { const control = openControlPlane({ repositoryRoot: context.root, env: context.env }); try { let failure; @@ -70,11 +72,82 @@ function expectInterruptedStart({ context, result, expectedReason, plan = planFo assert.equal(failure.details.executorOutcome.reason, expectedReason); assert.equal(control.identity(context.worker).state, 'working'); assert.equal(control.identity(context.worker).runtimeSessionId, - plan.actions[0].runtimeSessionId ?? 'overflow-thread'); + expectedRuntimeSessionId ?? plan.actions[0].runtimeSessionId ?? 'overflow-thread'); return failure; } finally { control.close(); } } +function interruptReducerAfterIdentity() { + const expectedIdentity = '{"type":"thread.started","thread_id":"interrupted-thread"}\n'; + const childProgram = [ + 'process.stdout.write(JSON.stringify({type:"thread.started",thread_id:"interrupted-thread"}) + "\\n");', + 'process.on("SIGTERM", () => process.exit(0));', + 'setInterval(() => {}, 1_000);', + ].join(''); + const helper = spawn(process.execPath, [CODEX_PROTOCOL_REDUCER, process.execPath, '-e', childProgram], { + stdio: ['ignore', 'pipe', 'pipe'], + }); + helper.stdout.setEncoding('utf8'); + helper.stderr.setEncoding('utf8'); + return new Promise((resolve, reject) => { + let stdout = ''; + let stderr = ''; + let interrupted = false; + let failure = null; + const terminate = () => { + if (helper.exitCode === null && helper.signalCode === null) helper.kill('SIGTERM'); + }; + const watchdog = setTimeout(() => { + failure ??= new Error('helper did not emit its bounded identity; terminating owned fixture process'); + terminate(); + }, 1_000); + helper.stdout.on('data', (chunk) => { + stdout += chunk; + try { + if (!interrupted && stdout === expectedIdentity) { + interrupted = true; + assert.equal(helper.exitCode, null, 'helper must still be live when the reduced identity arrives'); + assert.equal(helper.signalCode, null, 'identity must not depend on a close event'); + assert.equal(helper.kill('SIGTERM'), true, 'parent must forward interruption through the real helper process'); + } else if (!expectedIdentity.startsWith(stdout)) { + failure ??= new Error(`helper emitted unexpected reduced protocol bytes: ${JSON.stringify(stdout)}`); + terminate(); + } + } catch (error) { + failure ??= error; + terminate(); + } + }); + helper.stderr.on('data', (chunk) => { stderr += chunk; }); + helper.once('error', (error) => { + failure ??= error; + terminate(); + }); + helper.once('close', (status, signal) => { + clearTimeout(watchdog); + try { + assert.throws(() => process.kill(helper.pid, 0), { code: 'ESRCH' }, 'owned helper must be absent after close'); + if (failure) reject(failure); + else resolve({ status, signal, stdout, stderr, interrupted }); + } catch (error) { reject(error); } + }); + }); +} + +async function captureStdout(action) { + const originalWrite = process.stdout.write; + let output = ''; + process.stdout.write = function capture(chunk, ...args) { + output += typeof chunk === 'string' ? chunk : chunk.toString('utf8'); + return originalWrite.call(this, '', ...args); + }; + try { + return { status: await action(), output }; + } finally { + process.stdout.write = originalWrite; + } +} + test('SCN-executor-interrupted-outcomes: a graceful ready timeout, signal, or ENOBUFS cannot create an idle turn or disclose output', () => { const readyDirectory = mkdtempSync(join(tmpdir(), 'torch-executor-ready-')); const readyPath = join(readyDirectory, 'ready'); @@ -173,6 +246,45 @@ test('SCN-codex-final-terminal-state: a later failed terminal overrides an earli assert.equal(unavailable.stdout, '{"type":"error","code":"ENOENT"}\n'); }); +test('SCN-codex-interrupted-identity: a real helper emits a bounded identity before deterministic parent interruption and remains uncertain', async () => { + const result = await interruptReducerAfterIdentity(); + assert.equal(result.interrupted, true); + assert.equal(result.status, null); + assert.equal(result.signal, 'SIGTERM'); + assert.equal(result.stdout, '{"type":"thread.started","thread_id":"interrupted-thread"}\n'); + assert.equal(result.stderr, ''); + const context = fixture(); + expectInterruptedStart({ + context, + plan: planFor(context, { runtimeSessionId: null, requiresRuntimeIdCapture: true }), + result, + expectedReason: 'executor-signal', + expectedRuntimeSessionId: 'interrupted-thread', + }); +}); + +test('SCN-codex-code-less-diagnostics: no-code model, authentication, and quota errors retain only safe categories', () => { + const cases = [ + ['The requested model is not supported; prompt=private-prompt', 'model-rejection'], + ['Authentication rejected this credential; private reasoning=secret-analysis', 'authentication'], + ['Quota exceeded for this account; image=data:image/png;base64,fixture-image', 'quota'], + ]; + for (const [message, category] of cases) { + const childProgram = `process.stdout.write(${JSON.stringify(`${JSON.stringify({ type: 'error', message, prompt: 'private-prompt', reasoning: 'secret-analysis', image_url: 'data:image/png;base64,fixture-image' })}\n`)});`; + const result = spawnSync(process.execPath, [CODEX_PROTOCOL_REDUCER, process.execPath, '-e', childProgram], { + encoding: 'utf8', stdio: ['ignore', 'pipe', 'pipe'], + }); + assert.equal(result.status, 0, result.stderr); + assert.equal(result.stdout, `{"type":"turn.failed","category":"${category}"}\n`); + const diagnostic = createCodexAdapter().diagnoseStartupFailure(result); + assert.deepEqual(diagnostic, { + schema: 'torch.dev/runtime-startup-diagnostic/v1alpha1', outcome: 'known', category, stderr: null, + }); + assert.doesNotMatch(`${result.stdout}\n${result.stderr}\n${JSON.stringify(diagnostic)}`, + /private-prompt|secret-analysis|fixture-image|image\/png/); + } +}); + test('SCN-cli-codex-protocol-routing: the CLI routes Codex launch output through the bounded protocol reducer', () => { const result = executeRuntimeLaunch(spawnSync, { runtime: 'codex', command: process.execPath, @@ -182,6 +294,65 @@ test('SCN-cli-codex-protocol-routing: the CLI routes Codex launch output through assert.equal(result.stdout, '{"type":"thread.started","thread_id":"cli-thread"}\n{"type":"turn.completed"}\n'); }); +test('SCN-cli-codex-real-executable: an actual runCli invocation reaches the isolated Codex executable through the reducer', async () => { + const context = fixture(); + const bin = mkdtempSync(join(tmpdir(), 'torch-codex-bin-')); + const executable = join(bin, 'codex'); + const marker = join(bin, 'invocation.json'); + const markerEnv = 'TORCH_FAKE_CODEX_INVOCATION_MARKER'; + const inheritedMarker = process.env[markerEnv]; + writeFileSync(executable, [ + '#!/usr/bin/env node', + 'const fs = require("node:fs");', + `const marker = process.env.${markerEnv};`, + 'if (!marker) { process.stderr.write("missing isolated invocation marker\\n"); process.exit(86); }', + 'fs.writeFileSync(marker, JSON.stringify({ cwd: process.cwd(), args: process.argv.slice(2) }));', + 'process.stdout.write(JSON.stringify({type:"thread.started",thread_id:"cli-boundary-thread"}) + "\\n");', + 'process.stdout.write(JSON.stringify({type:"turn.completed"}) + "\\n");', + ].join('\n')); + chmodSync(executable, 0o755); + const cliOptions = { + cwd: context.root, + env: { ...context.env, PATH: `${bin}:${process.env.PATH}`, [markerEnv]: marker }, + }; + const worktreeParent = mkdtempSync(join(tmpdir(), 'torch-cli-worktrees-')); + execFileSync('git', ['-C', context.root, 'add', '.torch']); + execFileSync('git', ['-C', context.root, 'commit', '-m', 'commit fixture installation state']); + const worktrees = await captureStdout(() => runCli([ + 'worktrees', '--parent', worktreeParent, '--yes', '--json', + ], cliOptions)); + assert.equal(worktrees.status, 0, worktrees.output); + const missingMarker = await captureStdout(() => runCli([ + 'up', '--fresh', '--only', context.worker, '--yes', '--json', + ], { + cwd: context.root, + env: { ...context.env, PATH: `${bin}:${process.env.PATH}` }, + })); + assert.equal(missingMarker.status, 2, missingMarker.output); + assert.equal(JSON.parse(missingMarker.output).error, 'FLEET_START_FAILED'); + assert.equal(existsSync(marker), false, 'fake executable must fail before it can claim invocation without its marker'); + assert.ok(Buffer.byteLength(missingMarker.output) < 4 * 1024, 'failed CLI response must remain bounded'); + const captured = await captureStdout(() => runCli([ + 'up', '--fresh', '--only', context.worker, '--yes', '--json', + ], cliOptions)); + assert.equal(captured.status, 0, captured.output); + assert.equal(process.env[markerEnv], inheritedMarker, 'runCli must not mutate the process environment'); + const invocation = JSON.parse(readFileSync(marker, 'utf8')); + assert.equal(invocation.args.includes('exec'), true, 'the isolated executable must receive the Codex exec invocation'); + assert.equal(invocation.args.includes('--json'), true); + assert.match(invocation.cwd, /\/core$/); + assert.ok(Buffer.byteLength(captured.output) < 4 * 1024, 'CLI response must remain bounded'); + const response = JSON.parse(captured.output); + assert.deepEqual(response.started, [{ + areaId: context.worker, runtimeSessionId: 'cli-boundary-thread', mode: 'create', + }]); + const control = openControlPlane({ repositoryRoot: context.root, env: context.env }); + try { + assert.equal(control.identity(context.worker).state, 'idle'); + assert.equal(control.identity(context.worker).runtimeSessionId, 'cli-boundary-thread'); + } finally { control.close(); } +}); + test('SCN-scheduled-manager-wake-terminal-failure: the real manager-check-in boundary fails rather than invoking a successful wake receipt', () => { const context = fixture(); const configPath = join(context.root, '.torch', 'torch.yaml'); From 5bbd81a01fa5281ee17c4b4fbafc2e58d1327f7d Mon Sep 17 00:00:00 2001 From: thePR0M3TH3AN Date: Wed, 30 Sep 2026 21:10:06 -0400 Subject: [PATCH 17/51] TASK-pilot-executor-outcomes fail closed CLI fixture --- docs/TEST_INTEGRITY.md | 2 +- src/cli.mjs | 5 +++- test/fleet/executor-outcomes.test.mjs | 35 ++++++++++++++++++++++++--- 3 files changed, 36 insertions(+), 6 deletions(-) diff --git a/docs/TEST_INTEGRITY.md b/docs/TEST_INTEGRITY.md index 31bac41..1ef5775 100644 --- a/docs/TEST_INTEGRITY.md +++ b/docs/TEST_INTEGRITY.md @@ -129,7 +129,7 @@ test_integrity_note: - Actual CLI JSON response and persisted identity state from a fake executable on an isolated PATH determinism_controls: - Local child process signal handshake driven by receipt of thread.started; a bounded watchdog only terminates and awaits the owned fixture on failed emission, never retries or asserts product timing - - Disposable Git/XDG fixtures and a hermetic executable; no provider, network, or account access + - Disposable Git/XDG fixtures and a hermetic executable; a tagged guard rejects an absent or mismatched env before native spawn, then delegates unchanged to native spawnSync only for the validated fake path anti_cheat_rationale: prevents: - Delaying identity output until child close and losing it on interruption diff --git a/src/cli.mjs b/src/cli.mjs index 5b01283..e136d1d 100644 --- a/src/cli.mjs +++ b/src/cli.mjs @@ -52,7 +52,10 @@ const CODEX_PROTOCOL_REDUCER = fileURLToPath(new URL('./runtime/codex-protocol-r export function executeRuntimeLaunch(spawn, launch, options = {}) { // Tests and adapter qualification inject a deterministic executor. The real // synchronous CLI boundary alone needs protocol reduction before buffering. - if (launch.runtime === 'codex' && spawn === spawnSync) { + // A tagged guard may delegate to native spawnSync after asserting hermetic + // launch preconditions; it must opt in rather than changing fake executors. + const usesNativeSpawn = spawn === spawnSync || spawn?.torchNativeSpawnGuard === true; + if (launch.runtime === 'codex' && usesNativeSpawn) { return spawn(process.execPath, [CODEX_PROTOCOL_REDUCER, launch.command, ...launch.args], options); } return spawn(launch.command, launch.args, options); diff --git a/test/fleet/executor-outcomes.test.mjs b/test/fleet/executor-outcomes.test.mjs index a3f13e2..ce1bf65 100644 --- a/test/fleet/executor-outcomes.test.mjs +++ b/test/fleet/executor-outcomes.test.mjs @@ -148,6 +148,23 @@ async function captureStdout(action) { } } +function nativeSpawnGuard({ expectedEnv, expectedMarker, delegate } = {}) { + const calls = []; + const guard = (command, args, options) => { + calls.push({ command, args, options }); + assert.equal(command, process.execPath, 'Codex must launch through the real protocol reducer process'); + assert.equal(args[0], CODEX_PROTOCOL_REDUCER); + assert.equal(args[1], 'codex'); + assert.equal(options.env, expectedEnv, 'runCli must forward the exact injected environment'); + assert.equal(options.env.PATH, expectedEnv.PATH); + assert.equal(options.env.TORCH_FAKE_CODEX_INVOCATION_MARKER, expectedMarker); + if (!expectedMarker) throw new Error('fixture guard rejected missing Codex invocation marker before spawn'); + return delegate(command, args, options); + }; + guard.torchNativeSpawnGuard = true; + return { guard, calls }; +} + test('SCN-executor-interrupted-outcomes: a graceful ready timeout, signal, or ENOBUFS cannot create an idle turn or disclose output', () => { const readyDirectory = mkdtempSync(join(tmpdir(), 'torch-executor-ready-')); const readyPath = join(readyDirectory, 'ready'); @@ -322,20 +339,30 @@ test('SCN-cli-codex-real-executable: an actual runCli invocation reaches the iso 'worktrees', '--parent', worktreeParent, '--yes', '--json', ], cliOptions)); assert.equal(worktrees.status, 0, worktrees.output); + const missingEnv = { ...context.env, PATH: `${bin}:${process.env.PATH}` }; + const missingMarkerGuard = nativeSpawnGuard({ + expectedEnv: missingEnv, expectedMarker: undefined, delegate: spawnSync, + }); const missingMarker = await captureStdout(() => runCli([ 'up', '--fresh', '--only', context.worker, '--yes', '--json', ], { cwd: context.root, - env: { ...context.env, PATH: `${bin}:${process.env.PATH}` }, + env: missingEnv, + spawn: missingMarkerGuard.guard, })); - assert.equal(missingMarker.status, 2, missingMarker.output); - assert.equal(JSON.parse(missingMarker.output).error, 'FLEET_START_FAILED'); + assert.equal(missingMarker.status, 1, missingMarker.output); + assert.equal(JSON.parse(missingMarker.output).error, 'UNEXPECTED_ERROR'); + assert.equal(missingMarkerGuard.calls.length, 1, 'guard must reject before any native child starts'); assert.equal(existsSync(marker), false, 'fake executable must fail before it can claim invocation without its marker'); assert.ok(Buffer.byteLength(missingMarker.output) < 4 * 1024, 'failed CLI response must remain bounded'); + const validGuard = nativeSpawnGuard({ + expectedEnv: cliOptions.env, expectedMarker: marker, delegate: spawnSync, + }); const captured = await captureStdout(() => runCli([ 'up', '--fresh', '--only', context.worker, '--yes', '--json', - ], cliOptions)); + ], { ...cliOptions, spawn: validGuard.guard })); assert.equal(captured.status, 0, captured.output); + assert.equal(validGuard.calls.length, 1, 'valid guard must delegate exactly one native reducer launch'); assert.equal(process.env[markerEnv], inheritedMarker, 'runCli must not mutate the process environment'); const invocation = JSON.parse(readFileSync(marker, 'utf8')); assert.equal(invocation.args.includes('exec'), true, 'the isolated executable must receive the Codex exec invocation'); From e0e94da5452883b57161bc5ba6351776a3d7eed3 Mon Sep 17 00:00:00 2001 From: thePR0M3TH3AN Date: Thu, 1 Oct 2026 03:13:15 -0400 Subject: [PATCH 18/51] TASK-4dc17235-e528-4582-ae49-ebde9006c753: prepare alpha.3 metadata candidate --- package-lock.json | 4 ++-- package.json | 2 +- torch-release.json | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index 13acd7f..86045d2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "torch-agent-fleet", - "version": "0.1.0-alpha.2", + "version": "0.1.0-alpha.3", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "torch-agent-fleet", - "version": "0.1.0-alpha.2", + "version": "0.1.0-alpha.3", "bundleDependencies": [ "@modelcontextprotocol/server", "typebox", diff --git a/package.json b/package.json index b3352f1..42324e6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "torch-agent-fleet", - "version": "0.1.0-alpha.2", + "version": "0.1.0-alpha.3", "type": "module", "description": "TORCH — a portable, provider-independent AI development fleet for Git repositories", "main": "src/cli.mjs", diff --git a/torch-release.json b/torch-release.json index 98595d5..c91b17d 100644 --- a/torch-release.json +++ b/torch-release.json @@ -1,6 +1,6 @@ { "schema": "torch.dev/release/v1alpha1", - "version": "0.1.0-alpha.2", + "version": "0.1.0-alpha.3", "state": { "reads": ["torch.dev/state/v1alpha1"], "writes": "torch.dev/state/v1alpha1", From e21733295383375ffc817b1d26756a2e542017a1 Mon Sep 17 00:00:00 2001 From: thePR0M3TH3AN Date: Thu, 1 Oct 2026 03:24:17 -0400 Subject: [PATCH 19/51] TASK-console-attention-actions: clarify attention ownership and actions --- ...e-attention-integrity-report-2026-10-01.md | 46 ++++++ site/attention-projection.js | 150 ++++++++++++++++++ site/console.html | 1 + site/console.js | 109 +++++-------- site/styles.css | 16 +- src/observability/snapshot.mjs | 3 +- test/fleet/console-attention.test.mjs | 92 +++++++++++ 7 files changed, 346 insertions(+), 71 deletions(-) create mode 100644 reports/test-audit/console-attention-integrity-report-2026-10-01.md create mode 100644 site/attention-projection.js create mode 100644 test/fleet/console-attention.test.mjs diff --git a/reports/test-audit/console-attention-integrity-report-2026-10-01.md b/reports/test-audit/console-attention-integrity-report-2026-10-01.md new file mode 100644 index 0000000..390e0f5 --- /dev/null +++ b/reports/test-audit/console-attention-integrity-report-2026-10-01.md @@ -0,0 +1,46 @@ +# Console attention test integrity + +```yaml +test_integrity_note: + change_type: ["new_tests"] + scenarios: + - id: SCN-console-attention-ownership + given: "Pending approvals name either the project owner or another approver" + when: "The Console projects attention groups" + then: "Only owner-addressed decisions appear under Waiting on you; peer approvals route to their named approver without approve or reject actions" + - id: SCN-console-attention-dedup + given: "Doctor and snapshot evidence describe the same unacknowledged message queue" + when: "Attention items are projected" + then: "One aggregate message item appears with the higher observed count and recipient-owned acknowledgement guidance" + - id: SCN-console-attention-worktrees + given: "A worktree has unique commits, local changes, or an active Git operation" + when: "Attention items are projected" + then: "Findings group by identity and branch/path; retained commits remain labeled as progress while unsafe operations remain review findings" + - id: SCN-console-attention-wait-reasons + given: "A task is blocked and repository recovery has no off-machine copy" + when: "The Console projects attention" + then: "The recorded block reason and single-disk recovery consequence remain visible with the responsible domain" + - id: SCN-console-attention-empty + given: "Approval evidence is unavailable and no queue or doctor finding is observed" + when: "Attention items are projected" + then: "No synthetic owner decision or operational issue is created" + observable_outcomes: + - "Attention groups distinguish owner decisions, Fleet work, and arbiter work" + - "Approval action ownership follows the named approver" + - "Repeated message queue evidence produces one item" + - "Worktree progress and unsafe Git state have distinct descriptions" + - "Unknown evidence stays explicit rather than gaining an invented owner" + determinism_controls: + - "Tests pass fixed in-memory snapshots; no clock, network, or filesystem is consulted" + anti_cheat_rationale: + prevents: + - "hard-coded return value" + - "over-mocking internal logic" + - "snapshot rubber-stamping" + - "retry/sleep-based flake masking" + relaxation: + did_relax_any_assertion: false + if_true_explain_spec_basis: "" +``` + +The focused attention scenarios passed. The existing owner approval scenario did not start because this worktree lacks the installed `zod` dependency; no assertion was changed or skipped in its source. diff --git a/site/attention-projection.js b/site/attention-projection.js new file mode 100644 index 0000000..77618f6 --- /dev/null +++ b/site/attention-projection.js @@ -0,0 +1,150 @@ +(function (global) { + const shortCommit = (value) => value ? String(value).slice(0, 9) : '—'; +const ownerDomainNames = { + 'release-self-host': 'Release and Self-host', + 'work-integration': 'Work and Integration', + 'project-kernel': 'Project Kernel', + 'session-manager': 'Session Manager', +}; + +function worktreeProblemLabel(problem) { + if (problem === 'worktree-dirty') return 'Uncommitted changes are present'; + if (problem === 'worktree-missing') return 'The managed worktree is missing'; + if (problem.startsWith('unique-commits:')) return `${problem.split(':')[1]} unique commit(s) are ahead`; + if (problem.startsWith('git-operation:')) return `Git operation needs resolution (${problem.slice('git-operation:'.length)})`; + if (problem.startsWith('branch-mismatch:')) return `Branch differs from its manifest (${problem.slice('branch-mismatch:'.length)})`; + return problem.replaceAll('-', ' '); +} + +function attentionGroups(snapshot) { + const groups = { owner: [], fleet: [], arbiter: [] }; + const agents = new Map((snapshot.agents ?? []).map((agent) => [agent.areaId, agent])); + const agentName = (id) => ownerDomainNames[id] ?? agents.get(id)?.title ?? id ?? 'Owner not recorded'; + const add = (group, item) => groups[group].push(item); + const approvals = (snapshot.approvalRequests?.items ?? []).filter((approval) => approval.status === 'pending'); + + for (const approval of approvals) { + const isOwner = approval.approver === 'owner'; + add(isOwner ? 'owner' : 'fleet', { + tone: isOwner ? 'decision' : 'review', + title: approval.title || 'Approval request', + owner: isOwner ? 'Project owner' : agentName(approval.approver), + detail: `${agentName(approval.requester)} is waiting on ${isOwner ? 'your decision' : agentName(approval.approver)}. ${approval.summary || 'Request consequence and options are not recorded.'}`, + evidence: [approval.task, approval.evidence].filter(Boolean).join(' · ') || 'Request evidence not recorded', + href: `#approval-${encodeURIComponent(approval.id)}`, + action: isOwner ? 'Review request and evidence' : 'Open approval details', + }); + } + + const pendingChanges = (snapshot.fleetChanges ?? []).filter((change) => change.state === 'proposed'); + const pendingHierarchy = (snapshot.hierarchyProposals ?? []).filter((proposal) => proposal.state === 'proposed'); + for (const proposal of [...pendingChanges, ...pendingHierarchy]) add('owner', { + tone: 'decision', title: proposal.title ?? proposal.proposal?.title ?? 'Organization proposal', + owner: 'Project owner', detail: `${proposal.rationale ?? proposal.proposal?.impact ?? 'The requested consequence is not recorded.'} This proposal does not change the active Fleet without a separate decision.`, + evidence: proposal.id, href: '#organization-proposals', action: 'Review proposal', + }); + + const findings = snapshot.doctor?.findings ?? []; + const messageFinding = findings.find((finding) => finding.code === 'MESSAGE_BACKLOG'); + const awaiting = Math.max(Number(snapshot.messages?.unacknowledged) || 0, Number(messageFinding?.unacknowledged) || 0); + if (awaiting) add('fleet', { + tone: 'review', title: `${awaiting} durable message${awaiting === 1 ? '' : 's'} awaiting acknowledgement`, + owner: 'Named recipients', detail: 'This aggregate covers the Fleet. Each named recipient owns their acknowledgement; other identities should not acknowledge it.', + evidence: 'Unread queues are summarized once; individual message ownership remains visible in Conversations.', + href: '#communications', action: 'Open Conversations', + }); + + const worktreeFindings = findings.filter((finding) => finding.code === 'WORKTREE_PROBLEM'); + const groupedWorktrees = new Map(); + for (const finding of worktreeFindings) { + const key = finding.area ?? finding.areaId ?? 'unknown-owner'; + const group = groupedWorktrees.get(key) ?? { area: key, path: finding.path, problems: [] }; + group.path ??= finding.path; + group.problems.push(finding.problem ?? finding.message ?? 'Worktree condition is not recorded'); + groupedWorktrees.set(key, group); + } + for (const item of groupedWorktrees.values()) { + const worktree = (snapshot.worktrees ?? []).find((entry) => entry.area === item.area); + const hasAhead = item.problems.some((problem) => problem.startsWith('unique-commits:')); + const hasUnsafeProblem = item.problems.some((problem) => !problem.startsWith('unique-commits:')); + const labels = item.problems.map(worktreeProblemLabel); + const identity = agentName(item.area); + add('fleet', { + tone: !hasUnsafeProblem ? 'info' : item.problems.some((problem) => problem.startsWith('git-operation:') || problem === 'worktree-missing') ? 'urgent' : 'review', + title: !hasUnsafeProblem ? `${identity} has work ahead of main` : `${identity} worktree needs review`, + owner: identity, + detail: `${labels.join('; ')}.${hasAhead ? ' Ahead commits are retained work progress, not a broken repository.' : ''} ${hasUnsafeProblem ? 'Review the exact worktree before deciding on recovery.' : 'Ask the owner to review a safe convergence plan.'}`, + evidence: [worktree?.branch, worktree?.path ?? item.path, worktree?.ahead != null ? `${worktree.ahead} ahead / ${worktree.behind ?? 0} behind` : null].filter(Boolean).join(' · ') || 'Branch and path not recorded', + href: `#worktree-${encodeURIComponent(item.area)}`, action: 'Inspect this worktree', + requestOwner: item.area !== 'unknown-owner' ? item.area : null, + }); + } + + for (const finding of findings.filter((entry) => ['error', 'warning'].includes(entry.severity) + && !['MESSAGE_BACKLOG', 'WORKTREE_PROBLEM'].includes(entry.code))) { + const recoveryGap = finding.code === 'RECOVERABILITY' && !finding.offMachine; + const humanTitle = recoveryGap + ? 'Off-machine recovery copy is not verified' + : finding.code.replaceAll('_', ' ').toLowerCase().replace(/^./, (letter) => letter.toUpperCase()); + add('fleet', { + tone: finding.severity === 'error' ? 'urgent' : 'review', title: humanTitle, + owner: recoveryGap ? 'Release and Self-host' : finding.area ? agentName(finding.area) : 'Responsible domain not recorded', + detail: recoveryGap + ? `${finding.recommendation ?? 'Configure and synchronize an off-machine canonical Git boundary.'} A single disk failure could remove the only recorded recovery copy.` + : finding.message ?? finding.recommendation ?? 'Review this condition with the responsible domain; its consequence is not recorded.', + evidence: [finding.level, finding.commit ? shortCommit(finding.commit) : null, finding.path, finding.problem].filter(Boolean).join(' · ') || 'Doctor finding', + href: finding.area ? `#worktree-${encodeURIComponent(finding.area)}` : '#evidence', + action: recoveryGap ? 'Review recovery evidence' : finding.area ? 'Inspect owner evidence' : 'Review evidence', + }); + } + + for (const task of (snapshot.backlog ?? []).filter((item) => item.state === 'blocked')) add('fleet', { + tone: 'review', title: task.title ?? task.id, owner: agentName(task.owner), + detail: task.blockedReason || 'This task is blocked; the reason is not recorded in the snapshot.', + evidence: task.id, href: '#backlog-board', action: 'Inspect task status', + }); + + const waitingIntegration = (snapshot.integration ?? []).filter((item) => !['landed', 'rejected', 'superseded'].includes(item.state)); + for (const item of waitingIntegration) add('arbiter', { + tone: 'review', title: `Integration ${item.state}`, owner: 'Session Manager / integration authority', + detail: 'Landing is serialized. The arbiter must check the exact candidate and required receipts before proceeding.', + evidence: `${item.sourceArea} · ${shortCommit(item.sourceCommit)} · ${item.reason ?? 'reason not recorded'}`, + href: '#delivery', action: 'Inspect integration queue', + }); + + const unknownWakes = snapshot.managerWakes?.blockingCount ?? 0; + if (unknownWakes) add('arbiter', { + tone: 'urgent', title: `${unknownWakes} manager launch${unknownWakes === 1 ? '' : 'es'} need inspection`, + owner: 'Session Manager', detail: 'An unknown launch blocks another scheduled wake. Inspect recorded runtime evidence; no automatic restart is available.', + evidence: 'A reserved launch does not prove the provider is still running.', + href: '#manager-wakes', action: 'Inspect manager launches', + }); + + const unresolvedDelivery = (snapshot.deliveryOperations ?? []).filter((operation) => ['running', 'unknown', 'succeeded'].includes(operation.state)); + if (unresolvedDelivery.length) add('arbiter', { + tone: 'urgent', title: `${unresolvedDelivery.length} delivery operation${unresolvedDelivery.length === 1 ? '' : 's'} need review`, + owner: 'Release and Self-host', detail: 'Inspect recorded attempts and external state before considering recovery. Do not repeat effects automatically.', + evidence: unresolvedDelivery.map((operation) => `${operation.operation} · ${operation.state} · ${shortCommit(operation.commit)}`).join('; '), + href: '#operation-outcomes', action: 'Inspect operation outcomes', + }); + + const neglected = (snapshot.backlogActivity?.tasks ?? []).filter((task) => task.status === 'stale' && task.ownerRequested); + if (neglected.length) add('fleet', { + tone: 'review', title: `${neglected.length} owner-requested task${neglected.length === 1 ? '' : 's'} need activity review`, + owner: 'Task owner not recorded', detail: 'No named commit appears within the configured review window. Blocked work may be waiting as expected.', + evidence: 'Review the recorded task activity before asking for a change.', href: '#activity-review', action: 'Open activity review', + }); + + const staleEvidence = (snapshot.backlogHealth?.findings ?? []).filter((finding) => + ['BACKLOG_OBSERVED_COMMIT_STALE', 'BACKLOG_OBSERVED_COMMIT_MISSING'].includes(finding.code)); + if (staleEvidence.length) add('fleet', { + tone: 'review', title: `${staleEvidence.length} task evidence record${staleEvidence.length === 1 ? '' : 's'} need refresh`, + owner: 'Task owner not recorded', detail: 'Some backlog evidence refers to an old or unreachable commit. Re-check it before dispatch.', + evidence: staleEvidence.map((finding) => `${finding.taskId ?? 'task not recorded'} · ${finding.code}`).join('; '), + href: '#backlog-board', action: 'Inspect backlog evidence', + }); + return groups; +} + + global.TorchAttentionProjection = Object.freeze({ groups: attentionGroups }); +})(globalThis); diff --git a/site/console.html b/site/console.html index bba7b05..1b6921a 100644 --- a/site/console.html +++ b/site/console.html @@ -14,6 +14,7 @@ + diff --git a/site/console.js b/site/console.js index 89e3f96..baf16e9 100644 --- a/site/console.js +++ b/site/console.js @@ -706,7 +706,7 @@ function renderFlowWatch(snapshot) { const waitClass = approval.approver === 'owner' ? 'wait-owner' : approval.approver === 'session-manager' ? 'wait-manager' : ''; const refs = [approval.task, approval.evidence].filter(Boolean).map((reference) => escapeHtml(reference)).join(' · '); - return `
+ return `

${escapeHtml(approval.title)}

${escapeHtml(requester?.title ?? approval.requester)} is waiting on ${escapeHtml(approver)}${refs ? ` · ${refs}` : ''}

Request details · ${escapeHtml(ageLabel(approval.createdAt))}

${escapeHtml(approval.summary)}

@@ -725,60 +725,30 @@ function renderFlowWatch(snapshot) { : empty(approvalState?.reason ?? 'Structured approval requests are not available.')); } -function attentionItems(snapshot) { - const items = []; - const unresolvedDelivery = (snapshot.deliveryOperations ?? []).filter((operation) => ['running', 'unknown', 'succeeded'].includes(operation.state)); - if (unresolvedDelivery.length) items.push({ tone: 'urgent', title: `${unresolvedDelivery.length} delivery operation${unresolvedDelivery.length === 1 ? ' needs' : 's need'} review`, - detail: 'Inspect recorded attempts and external state before owner-approved recovery. Do not automatically repeat effects.', href: '#operation-outcomes' }); - const neglected = (snapshot.backlogActivity?.tasks ?? []).filter((task) => task.status === 'stale' && task.ownerRequested); - if (neglected.length) items.push({ tone: 'review', title: `${neglected.length} owner request${neglected.length === 1 ? ' needs' : 's need'} activity review`, - detail: 'No named commit within the configured review window. Blocked work may be waiting as expected.', href: '#activity-review' }); - const unknownWakes = snapshot.managerWakes?.blockingCount ?? 0; - if (unknownWakes) items.push({ - tone: 'urgent', title: `${unknownWakes} manager ${unknownWakes === 1 ? 'launch needs' : 'launches need'} inspection`, - detail: 'An unknown launch blocks another wake. Inspect the runtime before owner-approved recovery; no automatic restart occurs.', - href: '#manager-wakes', - }); - const findings = snapshot.doctor?.findings ?? []; - for (const finding of findings.filter((entry) => entry.severity === 'error' || entry.severity === 'warning').slice(0, 5)) { - items.push({ - tone: finding.severity === 'error' ? 'urgent' : 'review', - title: finding.areaId ? `${finding.areaId}: ${finding.code}` : finding.code, - detail: finding.message ?? finding.recommendation ?? 'Doctor reported a project condition to review.', - }); - } - const awaiting = snapshot.messages?.unacknowledged ?? 0; - if (awaiting) items.push({ - tone: 'review', title: `${awaiting} unacknowledged ${awaiting === 1 ? 'message' : 'messages'}`, - detail: 'Open Conversations to inspect the latest durable inter-session handoffs.', - href: '#communications', - }); - const ownerApprovals = (snapshot.approvalRequests?.items ?? []).filter((approval) => - approval.status === 'pending' && approval.approver === 'owner'); - if (ownerApprovals.length) items.push({ - tone: 'decision', title: `${ownerApprovals.length} approval ${ownerApprovals.length === 1 ? 'request' : 'requests'} need your decision`, - detail: 'The named owner is the approver; review the request evidence in Flow watch.', href: '#flow-watch', - }); - const pendingChanges = (snapshot.fleetChanges ?? []).filter((change) => !['active', 'rejected'].includes(change.state)); - const pendingHierarchy = (snapshot.hierarchyProposals ?? []).filter((proposal) => proposal.state === 'proposed'); - if (pendingChanges.length + pendingHierarchy.length) items.push({ - tone: 'decision', title: `${pendingChanges.length + pendingHierarchy.length} organization ${pendingChanges.length + pendingHierarchy.length === 1 ? 'proposal' : 'proposals'}`, - detail: 'Organization proposals wait for owner review; they do not change the active Fleet.', - href: '#organization-proposals', - }); - const waitingIntegration = (snapshot.integration ?? []).filter((item) => !['landed', 'rejected'].includes(item.state)); - if (waitingIntegration.length) items.push({ - tone: 'decision', title: `${waitingIntegration.length} integration ${waitingIntegration.length === 1 ? 'request' : 'requests'}`, - detail: 'Review exact source commits and required checks before landing.', href: '#delivery', - }); - const staleEvidence = (snapshot.backlogHealth?.findings ?? []).filter((finding) => - ['BACKLOG_OBSERVED_COMMIT_STALE', 'BACKLOG_OBSERVED_COMMIT_MISSING'].includes(finding.code)); - if (staleEvidence.length) items.push({ - tone: 'review', title: `${staleEvidence.length} task ${staleEvidence.length === 1 ? 'evidence record needs' : 'evidence records need'} refresh`, - detail: 'Some backlog items were observed against an old or unreachable commit. Re-check them before dispatch.', - href: '#backlog-board', - }); - return items; +function attentionGroups(snapshot) { + return globalThis.TorchAttentionProjection.groups(snapshot); +} +function renderAttention(groups) { + const definitions = [ + ['owner', 'Waiting on you', 'Only requests that name the project owner as decision-maker.'], + ['fleet', 'Fleet handling', 'A named domain owns the next step; unknown ownership stays explicit.'], + ['arbiter', 'Arbiter handling', 'Serialized execution and installation decisions stay with the arbiter.'], + ]; + const total = Object.values(groups).reduce((sum, items) => sum + items.length, 0); + setText('#attention-count', `${total} ${total === 1 ? 'item' : 'items'}`); + setHtml('#attention-list', definitions.map(([key, title, description]) => { + const items = groups[key]; + return `
+

${title}

${items.length}
+ ${items.length ? items.map((item) => `
`).join('') : `

${escapeHtml(description)}

`} +
`; + }).join('')); } function render(snapshot) { @@ -789,7 +759,7 @@ function render(snapshot) { const active = tasks.filter((task) => !['completed', 'cancelled'].includes(task.state)); const working = active.filter((task) => task.state === 'in_progress').length; const blocked = active.filter((task) => task.state === 'blocked').length; - const attention = attentionItems(snapshot); + const attention = attentionGroups(snapshot); const branch = snapshot.repository?.branch ?? 'branch not recorded'; setText('#project-name', project?.name ?? project?.id ?? 'Not installed'); @@ -807,8 +777,9 @@ function render(snapshot) { const parts = [`${agents.length} persistent ${agents.length === 1 ? 'identity' : 'identities'}`, `${working} ${working === 1 ? 'task' : 'tasks'} in progress`]; if (blocked) parts.push(`${blocked} blocked`); + const attentionCount = Object.values(attention).reduce((sum, items) => sum + items.length, 0); setText('#project-summary', snapshot.mode === 'installed' - ? `${parts.join(' · ')}. ${attention.length ? `${attention.length} item${attention.length === 1 ? '' : 's'} may need your review.` : 'No owner decision is currently waiting in the observed queues.'}` + ? `${parts.join(' · ')}. ${attentionCount ? `${attentionCount} item${attentionCount === 1 ? '' : 's'} need a named next step.` : 'No owner decision is currently waiting in the observed queues.'}` : 'This repository has not been installed as a TORCH Fleet. The view is showing repository intake only.'); renderTaskCreateOptions(agents, tasks, snapshot.mode === 'installed'); renderOwnerRequestOptions(agents, tasks, snapshot.mode === 'installed'); @@ -816,13 +787,7 @@ function render(snapshot) { renderFlowWatch(snapshot); setHtml('#owner-briefing-content', globalThis.TorchOwnerDigest.render(snapshot.ownerDigest)); - setText('#attention-count', `${attention.length} ${attention.length === 1 ? 'item' : 'items'}`); - setHtml('#attention-list', attention.length ? attention.map((item) => ` -
- -
${escapeHtml(item.title)}

${escapeHtml(item.detail)}

- ${item.href ? `Open relevant view` : ''}
-
`).join('') : empty('No owner decisions are waiting in the observed queues.')); + renderAttention(attention); renderBacklog(tasks, snapshot.backlogHealth?.findings ?? []); setHtml('#activity-review-content', globalThis.TorchTaskActivity.render(snapshot.backlogActivity)); @@ -849,7 +814,7 @@ function render(snapshot) { const refs = [message.task, message.path, message.commit].filter(Boolean); const ack = (message.acknowledgedBy ?? []).length ? `Acknowledged by ${message.acknowledgedBy.join(', ')}` : 'Awaiting acknowledgement'; - return `
${escapeHtml(message.sender)} to ${escapeHtml(message.recipient)}${escapeHtml(ageLabel(message.createdAt))}

${escapeHtml(message.body)}

${escapeHtml(ack)}${refs.length ? ` · ${escapeHtml(refs.join(' · '))}` : ''}
`; + return `
${escapeHtml(message.sender)} to ${escapeHtml(message.recipient)}${escapeHtml(ageLabel(message.createdAt))}

${escapeHtml(message.body)}

${escapeHtml(ack)}${refs.length ? ` · ${escapeHtml(refs.join(' · '))}` : ''}
`; }).join('') : empty('No durable messages yet. Runtime-native private reasoning is not shown here.')); setHtml('#check-list', globalThis.TorchCheckEvidence.render(snapshot.checks)); @@ -906,7 +871,7 @@ function render(snapshot) { const worktrees = snapshot.worktrees ?? []; setHtml('#worktree-list', worktrees.length ? worktrees.map((worktree) => ` -
${escapeHtml(worktree.area)}${escapeHtml(worktree.branch)} · ${escapeHtml(worktree.path)}
${escapeHtml(`${worktree.ahead ?? 0} ahead / ${worktree.behind ?? 0} behind`)}
+
${escapeHtml(worktree.area)}${escapeHtml(worktree.branch)} · ${escapeHtml(worktree.path)}
${escapeHtml(`${worktree.ahead ?? 0} ahead / ${worktree.behind ?? 0} behind`)}
`).join('') : empty('No managed worktrees have been created.')); const holders = snapshot.resources?.holders ?? []; @@ -1866,6 +1831,18 @@ $('#change-list')?.addEventListener('click', async (event) => { $('#attention-list')?.addEventListener('click', (event) => { const link = event.target.closest('a[href^="#"]'); const target = link && document.getElementById(link.getAttribute('href').slice(1)); + const recipient = link?.dataset.attentionRecipient; + if (recipient) { + const form = $('#owner-request-form'); + const recipientSelect = form?.elements.namedItem('recipient'); + const body = form?.elements.namedItem('body'); + const status = form?.querySelector('.owner-request-status'); + const hasRecipient = [...(recipientSelect?.options ?? [])].some((option) => option.value === recipient); + if (form && recipientSelect && body && hasRecipient && !recipientSelect.value && !body.value.trim()) { + recipientSelect.value = recipient; + if (status) status.textContent = `Selected ${recipient}. Add context and review the preview before sending anything.`; + } + } for (let parent = target?.parentElement; parent; parent = parent.parentElement) { if (parent.tagName === 'DETAILS') parent.open = true; } diff --git a/site/styles.css b/site/styles.css index 0a87989..dbceea6 100644 --- a/site/styles.css +++ b/site/styles.css @@ -173,15 +173,23 @@ footer div { display: flex; gap: 1.5rem; } .panel-heading { padding-bottom: .65rem; border-bottom: 1px solid var(--line); } .panel-heading h2, .panel-heading h3 { margin: 0; font: 650 1rem/1.2 var(--display); } .panel-heading span, .section-heading > span { color: var(--muted); font-size: .76rem; text-align: right; } -.attention-list { display: grid; } -.attention-item { display: grid; grid-template-columns: 9px 1fr; gap: .7rem; padding: .8rem 0; border-bottom: 1px solid var(--line); } +.attention-list { display: grid; gap: 1rem; } +.attention-group { min-width: 0; padding-top: .6rem; border-top: 1px solid var(--line); } +.attention-group-heading { display: flex; align-items: baseline; justify-content: space-between; gap: .8rem; } +.attention-group-heading h3 { margin: 0; font: 650 .9rem/1.25 var(--display); } +.attention-group-heading span, .attention-empty { color: var(--muted); font-size: .72rem; } +.attention-empty { margin: .35rem 0 0; line-height: 1.4; } +.attention-item { display: grid; grid-template-columns: 9px minmax(0, 1fr); gap: .7rem; padding: .75rem 0; border-bottom: 1px solid var(--line); } .attention-mark { width: 7px; height: 7px; margin-top: .45rem; background: var(--field); } .tone-urgent .attention-mark { background: var(--signal); } .tone-review .attention-mark { background: var(--route); } .tone-decision .attention-mark { background: #f3bd55; } +.tone-info .attention-mark { background: var(--field); } +.attention-copy { min-width: 0; } .attention-item strong { display: block; font-size: .86rem; overflow-wrap: anywhere; } -.attention-item p { margin: .18rem 0; color: var(--muted); font-size: .78rem; line-height: 1.4; } -.attention-item a { color: var(--route); font-size: .76rem; font-weight: 650; } +.attention-item p { margin: .18rem 0 .35rem; color: var(--muted); font-size: .78rem; line-height: 1.4; } +.attention-item small { display: block; color: var(--muted); font-size: .69rem; line-height: 1.35; overflow-wrap: anywhere; } +.attention-item a { display: inline-block; margin: .35rem .8rem 0 0; color: var(--route); font-size: .76rem; font-weight: 650; } .board-section, .console-section { padding-block: 1.65rem; border-bottom: 1px solid var(--line); scroll-margin-top: 1rem; } .section-heading { margin-bottom: 1rem; } .section-heading h2 { margin: 0; } diff --git a/src/observability/snapshot.mjs b/src/observability/snapshot.mjs index b8ff51a..12ab6d0 100644 --- a/src/observability/snapshot.mjs +++ b/src/observability/snapshot.mjs @@ -138,7 +138,8 @@ function backlog(repositoryRoot, manifest) { const task = json(join(root, name)); tasks.push({ id: task.id, title: task.title, description: task.description ?? '', - state: task.state, owner: task.owner ?? null, priority: task.priority ?? null, + state: task.state, owner: task.owner ?? null, blockedReason: task.blockedReason ?? null, + priority: task.priority ?? null, affectedDomains: task.affectedDomains ?? [], dependencies: task.dependencies ?? [], feature: task.feature ?? null, milestone: task.milestone ?? null, acceptanceCriteria: task.acceptanceCriteria ?? [], evidence: task.evidence ?? [], diff --git a/test/fleet/console-attention.test.mjs b/test/fleet/console-attention.test.mjs new file mode 100644 index 0000000..3f3e266 --- /dev/null +++ b/test/fleet/console-attention.test.mjs @@ -0,0 +1,92 @@ +import assert from 'node:assert/strict'; +import test from 'node:test'; +import '../../site/attention-projection.js'; + +const project = (snapshot) => globalThis.TorchAttentionProjection.groups(snapshot); + +test('SCN-console-attention-ownership: only owner-addressed pending decisions enter Waiting on you', () => { + const groups = project({ + agents: [ + { areaId: 'provider-runtime', title: 'Provider Runtime' }, + { areaId: 'qa', title: 'Independent QA' }, + ], + approvalRequests: { items: [ + { id: 'owner-review', status: 'pending', approver: 'owner', requester: 'provider-runtime', + title: 'Review executor boundary', task: 'TASK-RUNTIME', evidence: 'receipt:17', summary: 'Confirm the bounded scope.' }, + { id: 'qa-review', status: 'pending', approver: 'qa', requester: 'owner-console', + title: 'Confirm scenario path', summary: 'Review the owned test path.' }, + ] }, + }); + + assert.deepEqual(groups.owner.map((item) => item.title), ['Review executor boundary']); + assert.equal(groups.owner[0].href, '#approval-owner-review'); + assert.match(groups.owner[0].detail, /bounded scope/); + assert.equal(groups.fleet[0].owner, 'Independent QA'); + assert.equal(groups.fleet[0].action, 'Open approval details'); + assert.doesNotMatch(JSON.stringify(groups.fleet), /Approve|Reject/); +}); + +test('SCN-console-attention-dedup: doctor and snapshot message counts become one honest queue item', () => { + const groups = project({ + messages: { unacknowledged: 4 }, + doctor: { findings: [ + { severity: 'warning', code: 'MESSAGE_BACKLOG', unacknowledged: 3 }, + { severity: 'warning', code: 'MESSAGE_BACKLOG', unacknowledged: 3 }, + ] }, + }); + + const queue = groups.fleet.filter((item) => item.href === '#communications'); + assert.equal(queue.length, 1); + assert.equal(queue[0].title, '4 durable messages awaiting acknowledgement'); + assert.match(queue[0].detail, /Each named recipient owns their acknowledgement/); +}); + +test('SCN-console-attention-worktrees: findings group by owning area and distinguish retained commits from unsafe operations', () => { + const groups = project({ + agents: [{ areaId: 'provider-runtime', title: 'Provider Runtime' }], + doctor: { findings: [ + { severity: 'warning', code: 'WORKTREE_PROBLEM', area: 'provider-runtime', path: '/work/provider', problem: 'unique-commits:2' }, + { severity: 'warning', code: 'WORKTREE_PROBLEM', areaId: 'provider-runtime', path: '/work/provider', problem: 'worktree-dirty' }, + { severity: 'error', code: 'WORKTREE_PROBLEM', area: 'qa', path: '/work/qa', problem: 'git-operation:REBASE_HEAD' }, + ] }, + worktrees: [ + { area: 'provider-runtime', branch: 'runtime/fix', path: '/work/provider', ahead: 2, behind: 0 }, + { area: 'qa', branch: 'qa/audit', path: '/work/qa', ahead: 0, behind: 0 }, + ], + }); + + assert.equal(groups.fleet.length, 2); + const runtime = groups.fleet.find((item) => item.owner === 'Provider Runtime'); + assert.equal(runtime.tone, 'review'); + assert.match(runtime.detail, /retained work progress, not a broken repository/); + assert.match(runtime.evidence, /runtime\/fix · \/work\/provider/); + assert.equal(runtime.requestOwner, 'provider-runtime'); + const qa = groups.fleet.find((item) => item.owner === 'qa'); + assert.equal(qa.tone, 'urgent'); + assert.match(qa.title, /worktree needs review/); +}); + +test('SCN-console-attention-wait-reasons: recovery and blocked task evidence keep consequences and actual reason visible', () => { + const groups = project({ + agents: [{ areaId: 'release-self-host', title: 'Release and Self-host' }], + doctor: { findings: [{ severity: 'warning', code: 'RECOVERABILITY', level: 'ONE-DISK', + offMachine: false, commit: 'abcdef0123456789', recommendation: 'Configure and synchronize an off-machine canonical Git boundary.' }] }, + backlog: [{ id: 'TASK-BLOCKED', title: 'Capture mobile UI', state: 'blocked', owner: 'owner-console', + blockedReason: 'Browser CDP timed out; no image was saved.' }], + }); + + const recovery = groups.fleet.find((item) => item.title === 'Off-machine recovery copy is not verified'); + assert.equal(recovery.owner, 'Release and Self-host'); + assert.match(recovery.detail, /single disk failure could remove/); + assert.match(recovery.evidence, /ONE-DISK · abcdef012/); + assert.match(groups.fleet.find((item) => item.evidence === 'TASK-BLOCKED').detail, /no image was saved/); +}); + +test('SCN-console-attention-empty: an unavailable signal does not manufacture owner work', () => { + const groups = project({ + approvalRequests: { available: false, reason: 'Structured approval service unavailable.' }, + messages: { unacknowledged: 0 }, doctor: { findings: [] }, + }); + + assert.deepEqual(groups, { owner: [], fleet: [], arbiter: [] }); +}); From 9c806c4b09892703f0d7e6477dfc00b2afee1fc3 Mon Sep 17 00:00:00 2001 From: thePR0M3TH3AN Date: Thu, 1 Oct 2026 03:32:49 -0400 Subject: [PATCH 20/51] TASK-console-attention-actions: respect live role and authority evidence --- ...e-attention-integrity-report-2026-10-01.md | 5 +++ site/attention-projection.js | 44 +++++++++---------- site/console.js | 4 +- test/fleet/console-attention.test.mjs | 33 ++++++++++++-- 4 files changed, 58 insertions(+), 28 deletions(-) diff --git a/reports/test-audit/console-attention-integrity-report-2026-10-01.md b/reports/test-audit/console-attention-integrity-report-2026-10-01.md index 390e0f5..7c6c4d8 100644 --- a/reports/test-audit/console-attention-integrity-report-2026-10-01.md +++ b/reports/test-audit/console-attention-integrity-report-2026-10-01.md @@ -24,12 +24,17 @@ test_integrity_note: given: "Approval evidence is unavailable and no queue or doctor finding is observed" when: "Attention items are projected" then: "No synthetic owner decision or operational issue is created" + - id: SCN-console-attention-authority + given: "Integration records may name a manager as authorizer while other runtime records lack an arbiter grant" + when: "Attention ownership is projected from the live roster" + then: "Roster titles supply display names, integration remains Fleet handling, and no arbiter-only authority is inferred" observable_outcomes: - "Attention groups distinguish owner decisions, Fleet work, and arbiter work" - "Approval action ownership follows the named approver" - "Repeated message queue evidence produces one item" - "Worktree progress and unsafe Git state have distinct descriptions" - "Unknown evidence stays explicit rather than gaining an invented owner" + - "Manager-authorized integration is not mislabeled as an owner or arbiter decision" determinism_controls: - "Tests pass fixed in-memory snapshots; no clock, network, or filesystem is consulted" anti_cheat_rationale: diff --git a/site/attention-projection.js b/site/attention-projection.js index 77618f6..54c27e1 100644 --- a/site/attention-projection.js +++ b/site/attention-projection.js @@ -1,12 +1,5 @@ (function (global) { const shortCommit = (value) => value ? String(value).slice(0, 9) : '—'; -const ownerDomainNames = { - 'release-self-host': 'Release and Self-host', - 'work-integration': 'Work and Integration', - 'project-kernel': 'Project Kernel', - 'session-manager': 'Session Manager', -}; - function worktreeProblemLabel(problem) { if (problem === 'worktree-dirty') return 'Uncommitted changes are present'; if (problem === 'worktree-missing') return 'The managed worktree is missing'; @@ -19,7 +12,7 @@ function worktreeProblemLabel(problem) { function attentionGroups(snapshot) { const groups = { owner: [], fleet: [], arbiter: [] }; const agents = new Map((snapshot.agents ?? []).map((agent) => [agent.areaId, agent])); - const agentName = (id) => ownerDomainNames[id] ?? agents.get(id)?.title ?? id ?? 'Owner not recorded'; + const agentName = (id) => agents.get(id)?.title ?? id ?? 'Owner not recorded'; const add = (group, item) => groups[group].push(item); const approvals = (snapshot.approvalRequests?.items ?? []).filter((approval) => approval.status === 'pending'); @@ -31,6 +24,7 @@ function attentionGroups(snapshot) { owner: isOwner ? 'Project owner' : agentName(approval.approver), detail: `${agentName(approval.requester)} is waiting on ${isOwner ? 'your decision' : agentName(approval.approver)}. ${approval.summary || 'Request consequence and options are not recorded.'}`, evidence: [approval.task, approval.evidence].filter(Boolean).join(' · ') || 'Request evidence not recorded', + waitSince: approval.createdAt ?? null, href: `#approval-${encodeURIComponent(approval.id)}`, action: isOwner ? 'Review request and evidence' : 'Open approval details', }); @@ -73,7 +67,7 @@ function attentionGroups(snapshot) { tone: !hasUnsafeProblem ? 'info' : item.problems.some((problem) => problem.startsWith('git-operation:') || problem === 'worktree-missing') ? 'urgent' : 'review', title: !hasUnsafeProblem ? `${identity} has work ahead of main` : `${identity} worktree needs review`, owner: identity, - detail: `${labels.join('; ')}.${hasAhead ? ' Ahead commits are retained work progress, not a broken repository.' : ''} ${hasUnsafeProblem ? 'Review the exact worktree before deciding on recovery.' : 'Ask the owner to review a safe convergence plan.'}`, + detail: `${labels.join('; ')}.${hasAhead ? ' Ahead commits are retained work progress, not a broken repository.' : ''} ${hasUnsafeProblem ? 'Review the exact worktree before deciding on recovery.' : 'Ask the owning specialist or manager to review a safe convergence plan.'}`, evidence: [worktree?.branch, worktree?.path ?? item.path, worktree?.ahead != null ? `${worktree.ahead} ahead / ${worktree.behind ?? 0} behind` : null].filter(Boolean).join(' · ') || 'Branch and path not recorded', href: `#worktree-${encodeURIComponent(item.area)}`, action: 'Inspect this worktree', requestOwner: item.area !== 'unknown-owner' ? item.area : null, @@ -88,7 +82,7 @@ function attentionGroups(snapshot) { : finding.code.replaceAll('_', ' ').toLowerCase().replace(/^./, (letter) => letter.toUpperCase()); add('fleet', { tone: finding.severity === 'error' ? 'urgent' : 'review', title: humanTitle, - owner: recoveryGap ? 'Release and Self-host' : finding.area ? agentName(finding.area) : 'Responsible domain not recorded', + owner: finding.area ? agentName(finding.area) : 'Responsible domain not recorded', detail: recoveryGap ? `${finding.recommendation ?? 'Configure and synchronize an off-machine canonical Git boundary.'} A single disk failure could remove the only recorded recovery copy.` : finding.message ?? finding.recommendation ?? 'Review this condition with the responsible domain; its consequence is not recorded.', @@ -105,25 +99,31 @@ function attentionGroups(snapshot) { }); const waitingIntegration = (snapshot.integration ?? []).filter((item) => !['landed', 'rejected', 'superseded'].includes(item.state)); - for (const item of waitingIntegration) add('arbiter', { - tone: 'review', title: `Integration ${item.state}`, owner: 'Session Manager / integration authority', - detail: 'Landing is serialized. The arbiter must check the exact candidate and required receipts before proceeding.', - evidence: `${item.sourceArea} · ${shortCommit(item.sourceCommit)} · ${item.reason ?? 'reason not recorded'}`, + for (const item of waitingIntegration) add('fleet', { + tone: 'review', title: `Integration ${item.state}`, owner: item.authorizedBy ? agentName(item.authorizedBy) : 'Integration authority not recorded', + detail: 'Review the exact candidate and required receipts under the current named landing authority. Queue state does not establish that a separate owner decision is required.', + evidence: [item.sourceArea, shortCommit(item.sourceCommit), item.authorizedBy ? `authorized by ${agentName(item.authorizedBy)}` : null, item.reason ?? 'reason not recorded'].filter(Boolean).join(' · '), href: '#delivery', action: 'Inspect integration queue', }); const unknownWakes = snapshot.managerWakes?.blockingCount ?? 0; - if (unknownWakes) add('arbiter', { - tone: 'urgent', title: `${unknownWakes} manager launch${unknownWakes === 1 ? '' : 'es'} need inspection`, - owner: 'Session Manager', detail: 'An unknown launch blocks another scheduled wake. Inspect recorded runtime evidence; no automatic restart is available.', - evidence: 'A reserved launch does not prove the provider is still running.', - href: '#manager-wakes', action: 'Inspect manager launches', - }); + if (unknownWakes) { + const reservations = (snapshot.managerWakes?.reservations ?? []).filter((item) => item.blocksManagerWake); + const wakeOwners = [...new Set(reservations.map((item) => agentName(item.managerId)))]; + add('fleet', { + tone: 'urgent', title: `${unknownWakes} scheduled manager wake${unknownWakes === 1 ? '' : 's'} need inspection`, + owner: wakeOwners.join(', ') || 'Scheduled wake owner not recorded', + detail: 'A recorded reservation blocks another wake. Inspect current runtime evidence before acting; this record does not prove a provider is still running or establish who may restart it.', + evidence: reservations.map((item) => [item.scheduleId, item.reservedAt, item.outcome].filter(Boolean).join(' · ')).join('; ') || 'Reservation detail unavailable', + href: '#manager-wakes', action: 'Inspect manager launches', + }); + } const unresolvedDelivery = (snapshot.deliveryOperations ?? []).filter((operation) => ['running', 'unknown', 'succeeded'].includes(operation.state)); - if (unresolvedDelivery.length) add('arbiter', { + if (unresolvedDelivery.length) add('fleet', { tone: 'urgent', title: `${unresolvedDelivery.length} delivery operation${unresolvedDelivery.length === 1 ? '' : 's'} need review`, - owner: 'Release and Self-host', detail: 'Inspect recorded attempts and external state before considering recovery. Do not repeat effects automatically.', + owner: [...new Set(unresolvedDelivery.map((operation) => operation.actor ? agentName(operation.actor) : 'Operation owner not recorded'))].join(', '), + detail: 'Inspect recorded attempts and external state before considering recovery. Do not repeat effects automatically.', evidence: unresolvedDelivery.map((operation) => `${operation.operation} · ${operation.state} · ${shortCommit(operation.commit)}`).join('; '), href: '#operation-outcomes', action: 'Inspect operation outcomes', }); diff --git a/site/console.js b/site/console.js index baf16e9..d502b4c 100644 --- a/site/console.js +++ b/site/console.js @@ -732,7 +732,7 @@ function renderAttention(groups) { const definitions = [ ['owner', 'Waiting on you', 'Only requests that name the project owner as decision-maker.'], ['fleet', 'Fleet handling', 'A named domain owns the next step; unknown ownership stays explicit.'], - ['arbiter', 'Arbiter handling', 'Serialized execution and installation decisions stay with the arbiter.'], + ['arbiter', 'Arbiter handling', 'No observed item has structured evidence assigning its next step exclusively to an arbiter.'], ]; const total = Object.values(groups).reduce((sum, items) => sum + items.length, 0); setText('#attention-count', `${total} ${total === 1 ? 'item' : 'items'}`); @@ -743,7 +743,7 @@ function renderAttention(groups) { ${items.length ? items.map((item) => `
${escapeHtml(item.title)}

${escapeHtml(item.detail)}

- Severity: ${escapeHtml(({ urgent: 'Urgent', review: 'Review', decision: 'Decision required', info: 'Progress' })[item.tone] ?? 'Unknown')} · Owner: ${escapeHtml(item.owner)} · ${escapeHtml(item.evidence)} + Severity: ${escapeHtml(({ urgent: 'Urgent', review: 'Review', decision: 'Decision required', info: 'Progress' })[item.tone] ?? 'Unknown')} · Owner: ${escapeHtml(item.owner)}${item.waitSince ? ` · Waiting ${escapeHtml(ageLabel(item.waitSince))}` : ''} · ${escapeHtml(item.evidence)} ${escapeHtml(item.action)} ${item.requestOwner ? `Request review from ${escapeHtml(item.owner)}` : ''}
`).join('') : `

${escapeHtml(description)}

`} diff --git a/test/fleet/console-attention.test.mjs b/test/fleet/console-attention.test.mjs index 3f3e266..0355af4 100644 --- a/test/fleet/console-attention.test.mjs +++ b/test/fleet/console-attention.test.mjs @@ -12,7 +12,7 @@ test('SCN-console-attention-ownership: only owner-addressed pending decisions en ], approvalRequests: { items: [ { id: 'owner-review', status: 'pending', approver: 'owner', requester: 'provider-runtime', - title: 'Review executor boundary', task: 'TASK-RUNTIME', evidence: 'receipt:17', summary: 'Confirm the bounded scope.' }, + title: 'Review executor boundary', task: 'TASK-RUNTIME', evidence: 'receipt:17', createdAt: '2026-10-01T06:00:00Z', summary: 'Confirm the bounded scope.' }, { id: 'qa-review', status: 'pending', approver: 'qa', requester: 'owner-console', title: 'Confirm scenario path', summary: 'Review the owned test path.' }, ] }, @@ -21,6 +21,7 @@ test('SCN-console-attention-ownership: only owner-addressed pending decisions en assert.deepEqual(groups.owner.map((item) => item.title), ['Review executor boundary']); assert.equal(groups.owner[0].href, '#approval-owner-review'); assert.match(groups.owner[0].detail, /bounded scope/); + assert.equal(groups.owner[0].waitSince, '2026-10-01T06:00:00Z'); assert.equal(groups.fleet[0].owner, 'Independent QA'); assert.equal(groups.fleet[0].action, 'Open approval details'); assert.doesNotMatch(JSON.stringify(groups.fleet), /Approve|Reject/); @@ -47,20 +48,25 @@ test('SCN-console-attention-worktrees: findings group by owning area and disting doctor: { findings: [ { severity: 'warning', code: 'WORKTREE_PROBLEM', area: 'provider-runtime', path: '/work/provider', problem: 'unique-commits:2' }, { severity: 'warning', code: 'WORKTREE_PROBLEM', areaId: 'provider-runtime', path: '/work/provider', problem: 'worktree-dirty' }, + { severity: 'warning', code: 'WORKTREE_PROBLEM', area: 'project-kernel', path: '/work/kernel', problem: 'unique-commits:1' }, { severity: 'error', code: 'WORKTREE_PROBLEM', area: 'qa', path: '/work/qa', problem: 'git-operation:REBASE_HEAD' }, ] }, worktrees: [ { area: 'provider-runtime', branch: 'runtime/fix', path: '/work/provider', ahead: 2, behind: 0 }, + { area: 'project-kernel', branch: 'kernel/change', path: '/work/kernel', ahead: 1, behind: 0 }, { area: 'qa', branch: 'qa/audit', path: '/work/qa', ahead: 0, behind: 0 }, ], }); - assert.equal(groups.fleet.length, 2); + assert.equal(groups.fleet.length, 3); const runtime = groups.fleet.find((item) => item.owner === 'Provider Runtime'); assert.equal(runtime.tone, 'review'); - assert.match(runtime.detail, /retained work progress, not a broken repository/); + assert.match(runtime.detail, /Ahead commits are retained work progress, not a broken repository/); assert.match(runtime.evidence, /runtime\/fix · \/work\/provider/); assert.equal(runtime.requestOwner, 'provider-runtime'); + const kernel = groups.fleet.find((item) => item.owner === 'project-kernel'); + assert.equal(kernel.tone, 'info'); + assert.match(kernel.detail, /owning specialist or manager/); const qa = groups.fleet.find((item) => item.owner === 'qa'); assert.equal(qa.tone, 'urgent'); assert.match(qa.title, /worktree needs review/); @@ -76,12 +82,31 @@ test('SCN-console-attention-wait-reasons: recovery and blocked task evidence kee }); const recovery = groups.fleet.find((item) => item.title === 'Off-machine recovery copy is not verified'); - assert.equal(recovery.owner, 'Release and Self-host'); + assert.equal(recovery.owner, 'Responsible domain not recorded'); assert.match(recovery.detail, /single disk failure could remove/); assert.match(recovery.evidence, /ONE-DISK · abcdef012/); assert.match(groups.fleet.find((item) => item.evidence === 'TASK-BLOCKED').detail, /no image was saved/); }); +test('SCN-console-attention-authority: roster titles name owners and integration stays with Fleet unless arbiter authority is explicit', () => { + const groups = project({ + agents: [{ areaId: 'coordinator-7', title: 'Delivery Coordinator' }], + integration: [ + { state: 'awaiting-checks', sourceArea: 'build-team', sourceCommit: '1234567890abcdef', authorizedBy: 'coordinator-7' }, + { state: 'queued', sourceArea: 'docs-team', sourceCommit: 'abcdef0123456789' }, + ], + managerWakes: { blockingCount: 1, reservations: [{ managerId: 'coordinator-7', scheduleId: 'nightly-review', + outcome: 'reserved', blocksManagerWake: true }] }, + }); + + assert.equal(groups.fleet.length, 3); + assert.equal(groups.fleet[0].owner, 'Delivery Coordinator'); + assert.match(groups.fleet[0].evidence, /authorized by Delivery Coordinator/); + assert.equal(groups.fleet[1].owner, 'Integration authority not recorded'); + assert.equal(groups.fleet[2].owner, 'Delivery Coordinator'); + assert.deepEqual(groups.arbiter, []); +}); + test('SCN-console-attention-empty: an unavailable signal does not manufacture owner work', () => { const groups = project({ approvalRequests: { available: false, reason: 'Structured approval service unavailable.' }, From 65367dccbb5787935bd118921ed6237f94a365b0 Mon Sep 17 00:00:00 2001 From: thePR0M3TH3AN Date: Thu, 1 Oct 2026 03:54:01 -0400 Subject: [PATCH 21/51] TASK-console-attention-actions: add guarded decision shortcuts --- ...sk-console-attention-actions-2026-10-01.md | 37 +++++++++++ site/attention-actions.js | 25 ++++++++ site/attention-projection.js | 1 + site/console.html | 1 + site/console.js | 36 ++++++++++- site/styles.css | 7 +++ test/fleet/console-attention.test.mjs | 63 +++++++++++++++++++ test/fleet/product-surface.test.mjs | 5 +- 8 files changed, 173 insertions(+), 2 deletions(-) create mode 100644 reports/test-audit/test-integrity-task-console-attention-actions-2026-10-01.md create mode 100644 site/attention-actions.js diff --git a/reports/test-audit/test-integrity-task-console-attention-actions-2026-10-01.md b/reports/test-audit/test-integrity-task-console-attention-actions-2026-10-01.md new file mode 100644 index 0000000..f87842e --- /dev/null +++ b/reports/test-audit/test-integrity-task-console-attention-actions-2026-10-01.md @@ -0,0 +1,37 @@ +# Test integrity note — TASK-console-attention-actions + +```yaml +test_integrity_note: + change_type: [new_tests] + scenarios: + - id: SCN-console-attention-owner-shortcut + given: "A pending approval names the project owner and has an available decision form." + when: "The owner chooses an Approve or Reject shortcut from its attention card." + then: "Only the matching decision field is selected and the existing preview path starts; no decision is submitted directly." + - id: SCN-console-attention-shortcut-drafts + given: "The form is unavailable, has an active preview, or contains the opposite decision draft." + when: "An attention shortcut is selected." + then: "The action is declined with an explicit status and existing draft or preview values remain unchanged." + - id: SCN-console-attention-ownership + given: "An approval is pending for the owner or another named approver." + when: "Attention actions are projected." + then: "Only the owner-addressed item carries an owner decision shortcut identifier." + observable_outcomes: + - "Owner attention cards expose Approve and Reject controls only for pending requests addressed to owner." + - "A shortcut enters the existing revision/evidence preview and confirmation flow." + - "Missing forms, active previews, and conflicting drafts remain visible and unchanged." + - "Long evidence is available through a compact expandable disclosure." + determinism_controls: + - "Projection and shortcut scenarios use fixed in-memory fixtures without clock, network, or randomness." + anti_cheat_rationale: + prevents: + - "direct decision submission without preview and confirmation" + - "peer approval authority exposed as an owner control" + - "overwriting a pending decision draft or preview" + - "long evidence silently omitted from compact cards" + relaxation: + did_relax_any_assertion: false + if_true_explain_spec_basis: "" +``` + +Existing approval-console scenarios continue to cover stale revisions, named-approver enforcement, preview confirmation, and failed decisions. The attention tests add coverage at the UI projection and shortcut boundary; actual desktop/mobile visual acceptance remains separate and incomplete until a real browser capture is available. diff --git a/site/attention-actions.js b/site/attention-actions.js new file mode 100644 index 0000000..f89e8b7 --- /dev/null +++ b/site/attention-actions.js @@ -0,0 +1,25 @@ +(function (global) { + function prepareOwnerDecisionShortcut(form, decision, beginPreview) { + if (!['approved', 'rejected'].includes(decision)) { + return { started: false, reason: 'Choose approve or reject from an owner-only shortcut.' }; + } + const choice = form?.elements?.namedItem('decision'); + if (!form || !choice) { + return { started: false, reason: 'This owner decision form is no longer available. Refresh the current evidence before acting.' }; + } + if (form.dataset.previewToken || choice.disabled) { + return { started: false, reason: 'An existing decision preview is preserved. Review or edit it in Flow watch before using another shortcut.' }; + } + if (choice.value && choice.value !== decision) { + return { started: false, reason: 'Your existing decision draft is preserved. Review or change it in Flow watch before choosing another shortcut.' }; + } + if (typeof beginPreview !== 'function') { + return { started: false, reason: 'The guarded decision preview is unavailable. Refresh before acting.' }; + } + choice.value = decision; + beginPreview?.(form); + return { started: true }; + } + + global.TorchAttentionActions = Object.freeze({ prepareOwnerDecisionShortcut }); +})(globalThis); diff --git a/site/attention-projection.js b/site/attention-projection.js index 54c27e1..ba08c2a 100644 --- a/site/attention-projection.js +++ b/site/attention-projection.js @@ -27,6 +27,7 @@ function attentionGroups(snapshot) { waitSince: approval.createdAt ?? null, href: `#approval-${encodeURIComponent(approval.id)}`, action: isOwner ? 'Review request and evidence' : 'Open approval details', + decisionApprovalId: isOwner ? approval.id : null, }); } diff --git a/site/console.html b/site/console.html index 1b6921a..662156a 100644 --- a/site/console.html +++ b/site/console.html @@ -15,6 +15,7 @@ + diff --git a/site/console.js b/site/console.js index d502b4c..cba404d 100644 --- a/site/console.js +++ b/site/console.js @@ -743,8 +743,16 @@ function renderAttention(groups) { ${items.length ? items.map((item) => `
${escapeHtml(item.title)}

${escapeHtml(item.detail)}

- Severity: ${escapeHtml(({ urgent: 'Urgent', review: 'Review', decision: 'Decision required', info: 'Progress' })[item.tone] ?? 'Unknown')} · Owner: ${escapeHtml(item.owner)}${item.waitSince ? ` · Waiting ${escapeHtml(ageLabel(item.waitSince))}` : ''} · ${escapeHtml(item.evidence)} + Severity: ${escapeHtml(({ urgent: 'Urgent', review: 'Review', decision: 'Decision required', info: 'Progress' })[item.tone] ?? 'Unknown')} · Owner: ${escapeHtml(item.owner)}${item.waitSince ? ` · Waiting ${escapeHtml(ageLabel(item.waitSince))}` : ''} + ${item.evidence.length > 120 + ? `
Evidence and references

${escapeHtml(item.evidence)}

` + : `Evidence: ${escapeHtml(item.evidence)}`} ${escapeHtml(item.action)} + ${item.decisionApprovalId ? `
+ + + +
` : ''} ${item.requestOwner ? `Request review from ${escapeHtml(item.owner)}` : ''}
`).join('') : `

${escapeHtml(description)}

`} `; @@ -1829,6 +1837,32 @@ $('#change-list')?.addEventListener('click', async (event) => { }); $('#attention-list')?.addEventListener('click', (event) => { + const decisionButton = event.target.closest('[data-attention-decision]'); + if (decisionButton) { + const card = decisionButton.closest('.attention-item'); + const status = card?.querySelector('.attention-action-status'); + const approvalId = decisionButton.dataset.attentionApproval; + const decision = decisionButton.dataset.attentionDecision; + const form = [...document.querySelectorAll('#approval-request-list .approval-decision-form')] + .find((candidate) => candidate.dataset.approvalId === approvalId); + const previewButton = form?.querySelector('[data-approval-preview]'); + const shortcut = globalThis.TorchAttentionActions.prepareOwnerDecisionShortcut(form, decision, previewButton ? (approvalForm) => { + approvalForm.scrollIntoView({ behavior: 'smooth', block: 'center' }); + previewButton.click(); + } : null); + if (!shortcut.started) { + if (status) { + status.textContent = shortcut.reason; + status.hidden = false; + } + return; + } + if (status) { + status.textContent = `Opening the guarded ${decision} preview for this owner-addressed request. Confirm only after reviewing its current evidence.`; + status.hidden = false; + } + return; + } const link = event.target.closest('a[href^="#"]'); const target = link && document.getElementById(link.getAttribute('href').slice(1)); const recipient = link?.dataset.attentionRecipient; diff --git a/site/styles.css b/site/styles.css index dbceea6..7ca7687 100644 --- a/site/styles.css +++ b/site/styles.css @@ -190,6 +190,13 @@ footer div { display: flex; gap: 1.5rem; } .attention-item p { margin: .18rem 0 .35rem; color: var(--muted); font-size: .78rem; line-height: 1.4; } .attention-item small { display: block; color: var(--muted); font-size: .69rem; line-height: 1.35; overflow-wrap: anywhere; } .attention-item a { display: inline-block; margin: .35rem .8rem 0 0; color: var(--route); font-size: .76rem; font-weight: 650; } +.attention-evidence { margin-top: .28rem; color: var(--muted); font-size: .69rem; } +.attention-evidence summary { width: fit-content; cursor: pointer; color: var(--route); font-weight: 650; } +.attention-evidence p { margin: .25rem 0 0; white-space: pre-wrap; overflow-wrap: anywhere; } +.attention-quick-actions { display: flex; align-items: center; gap: .4rem; flex-wrap: wrap; margin-top: .4rem; } +.attention-quick-actions button { min-height: 2rem; padding: .3rem .55rem; } +.attention-action-status { flex-basis: 100%; margin: .1rem 0 0; color: var(--muted); font-size: .7rem; line-height: 1.4; } +.attention-action-status[hidden] { display: none; } .board-section, .console-section { padding-block: 1.65rem; border-bottom: 1px solid var(--line); scroll-margin-top: 1rem; } .section-heading { margin-bottom: 1rem; } .section-heading h2 { margin: 0; } diff --git a/test/fleet/console-attention.test.mjs b/test/fleet/console-attention.test.mjs index 0355af4..35b0377 100644 --- a/test/fleet/console-attention.test.mjs +++ b/test/fleet/console-attention.test.mjs @@ -1,6 +1,8 @@ import assert from 'node:assert/strict'; import test from 'node:test'; import '../../site/attention-projection.js'; +import '../../site/attention-actions.js'; +import '../../site/live-refresh.js'; const project = (snapshot) => globalThis.TorchAttentionProjection.groups(snapshot); @@ -20,13 +22,74 @@ test('SCN-console-attention-ownership: only owner-addressed pending decisions en assert.deepEqual(groups.owner.map((item) => item.title), ['Review executor boundary']); assert.equal(groups.owner[0].href, '#approval-owner-review'); + assert.equal(groups.owner[0].decisionApprovalId, 'owner-review'); assert.match(groups.owner[0].detail, /bounded scope/); assert.equal(groups.owner[0].waitSince, '2026-10-01T06:00:00Z'); assert.equal(groups.fleet[0].owner, 'Independent QA'); + assert.equal(groups.fleet[0].decisionApprovalId, null); assert.equal(groups.fleet[0].action, 'Open approval details'); assert.doesNotMatch(JSON.stringify(groups.fleet), /Approve|Reject/); }); +test('SCN-console-attention-owner-shortcut: a shortcut selects only an owner decision and retains the preview-confirm boundary', () => { + const choice = { value: '', disabled: false }; + const form = { dataset: {}, elements: { namedItem: () => choice } }; + let previewCalls = 0; + const result = globalThis.TorchAttentionActions.prepareOwnerDecisionShortcut(form, 'approved', () => { previewCalls += 1; }); + + assert.equal(result.started, true); + assert.equal(choice.value, 'approved'); + assert.equal(previewCalls, 1, 'the caller can only start the established preview handler'); + + const nonOwnerForm = { dataset: {}, elements: { namedItem: () => ({ value: '', disabled: false }) } }; + const noOwnerShortcut = globalThis.TorchAttentionActions.prepareOwnerDecisionShortcut(nonOwnerForm, 'published', () => { previewCalls += 1; }); + assert.equal(noOwnerShortcut.started, false); + assert.equal(nonOwnerForm.elements.namedItem().value, ''); +}); + +test('SCN-console-attention-shortcut-drafts: missing forms, active previews, and opposite drafts remain unchanged', () => { + const missing = globalThis.TorchAttentionActions.prepareOwnerDecisionShortcut(null, 'rejected'); + assert.equal(missing.started, false); + assert.match(missing.reason, /no longer available/); + + const previewForm = { dataset: { previewToken: 'current-preview' }, + elements: { namedItem: () => ({ value: 'approved', disabled: true }) } }; + const preview = globalThis.TorchAttentionActions.prepareOwnerDecisionShortcut(previewForm, 'rejected'); + assert.equal(preview.started, false); + assert.equal(previewForm.elements.namedItem().value, 'approved'); + + const draftChoice = { value: 'approved', disabled: false }; + const draftForm = { dataset: {}, elements: { namedItem: () => draftChoice } }; + const draft = globalThis.TorchAttentionActions.prepareOwnerDecisionShortcut(draftForm, 'rejected'); + assert.equal(draft.started, false); + assert.equal(draftChoice.value, 'approved'); + assert.match(draft.reason, /draft is preserved/); +}); + +test('SCN-console-attention-refresh-draft: an edited owner decision remains protected while newer evidence renders', () => { + const choice = { value: '', checked: false, tagName: 'SELECT', selectedOptions: [] }; + const note = { value: '', checked: false, tagName: 'TEXTAREA' }; + const fields = [choice, note]; + const form = { + contains: () => false, + matches: () => false, + querySelector: () => null, + querySelectorAll: () => fields, + }; + const document = { activeElement: null, querySelectorAll: () => fields }; + const protection = globalThis.TorchLiveRefresh.createProtection(document); + protection.remember(); + choice.value = 'rejected'; + note.value = 'Need the exact impact first.'; + + assert.equal(protection.protects(form), true); + const dirty = protection.dirty(); + protection.remember({ preserve: dirty }); + assert.equal(protection.protects(form), true); + assert.equal(choice.value, 'rejected'); + assert.equal(note.value, 'Need the exact impact first.'); +}); + test('SCN-console-attention-dedup: doctor and snapshot message counts become one honest queue item', () => { const groups = project({ messages: { unacknowledged: 4 }, diff --git a/test/fleet/product-surface.test.mjs b/test/fleet/product-surface.test.mjs index 78cb14a..eb37b42 100644 --- a/test/fleet/product-surface.test.mjs +++ b/test/fleet/product-surface.test.mjs @@ -30,6 +30,7 @@ test('SCN-product-site / SCN-dashboard-demo / SCN-torch-brand-surface: public si const html = readFileSync(new URL('../../site/index.html', import.meta.url), 'utf8'); const demoHtml = readFileSync(new URL('../../site/demo.html', import.meta.url), 'utf8'); const consoleHtml = readFileSync(new URL('../../site/console.html', import.meta.url), 'utf8'); + const consoleScript = readFileSync(new URL('../../site/console.js', import.meta.url), 'utf8'); const styles = readFileSync(new URL('../../site/styles.css', import.meta.url), 'utf8'); const torchMark = readFileSync(new URL('../../site/torch-mark.svg', import.meta.url), 'utf8'); assert.match(html, /TORCH — an AI fleet shaped by your project<\/title>/); @@ -70,6 +71,9 @@ test('SCN-product-site / SCN-dashboard-demo / SCN-torch-brand-surface: public si assert.match(consoleHtml, /console-rail/); assert.match(consoleHtml, /id="backlog-board"/); assert.match(consoleHtml, /id="attention-list"/); + assert.match(consoleHtml, /src="\/attention-actions\.js" defer/); + assert.match(consoleScript, /data-attention-decision/); + assert.match(consoleScript, /data-approval-preview/); assert.match(consoleHtml, /id="artifact-list"/); assert.match(consoleHtml, /id="organization-map"/); assert.match(consoleHtml, /id="organization-lifecycle"/); @@ -93,7 +97,6 @@ test('SCN-product-site / SCN-dashboard-demo / SCN-torch-brand-surface: public si assert.match(consoleHtml, /Create a task proposal/); assert.match(consoleHtml, /Session Manager still owns triage and assignment/); assert.match(consoleHtml, /gates remain separate/); - const consoleScript = readFileSync(new URL('../../site/console.js', import.meta.url), 'utf8'); assert.match(consoleScript, /artifact-feedback/); assert.match(consoleScript, /feedback\/preview/); assert.match(consoleScript, /data-feedback-confirm/); From 366e3b6368573a2fe1ec0e3b240ad97e18ba5671 Mon Sep 17 00:00:00 2001 From: thePR0M3TH3AN <adambrettmalin@protonmail.com> Date: Thu, 1 Oct 2026 04:00:00 -0400 Subject: [PATCH 22/51] TASK-console-attention-actions: serve attention scripts --- src/console/server.mjs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/console/server.mjs b/src/console/server.mjs index bfaf17c..596a39c 100644 --- a/src/console/server.mjs +++ b/src/console/server.mjs @@ -28,6 +28,8 @@ const ROUTES = new Map([ ['/check-evidence.js', 'check-evidence.js'], ['/task-activity.js', 'task-activity.js'], ['/operation-outcomes.js', 'operation-outcomes.js'], + ['/attention-projection.js', 'attention-projection.js'], + ['/attention-actions.js', 'attention-actions.js'], ['/live-refresh.js', 'live-refresh.js'], ]); const TYPES = new Map([ From b600fc8beee2d15e68779b1a5939fcebc6047d33 Mon Sep 17 00:00:00 2001 From: thePR0M3TH3AN <adambrettmalin@protonmail.com> Date: Thu, 1 Oct 2026 04:03:52 -0400 Subject: [PATCH 23/51] TASK-console-attention-actions: clarify wake inspection --- site/attention-projection.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site/attention-projection.js b/site/attention-projection.js index ba08c2a..588f913 100644 --- a/site/attention-projection.js +++ b/site/attention-projection.js @@ -112,7 +112,7 @@ function attentionGroups(snapshot) { const reservations = (snapshot.managerWakes?.reservations ?? []).filter((item) => item.blocksManagerWake); const wakeOwners = [...new Set(reservations.map((item) => agentName(item.managerId)))]; add('fleet', { - tone: 'urgent', title: `${unknownWakes} scheduled manager wake${unknownWakes === 1 ? '' : 's'} need inspection`, + tone: 'urgent', title: `${unknownWakes} scheduled manager launch${unknownWakes === 1 ? '' : 'es'} ${unknownWakes === 1 ? 'needs' : 'need'} inspection`, owner: wakeOwners.join(', ') || 'Scheduled wake owner not recorded', detail: 'A recorded reservation blocks another wake. Inspect current runtime evidence before acting; this record does not prove a provider is still running or establish who may restart it.', evidence: reservations.map((item) => [item.scheduleId, item.reservedAt, item.outcome].filter(Boolean).join(' · ')).join('; ') || 'Reservation detail unavailable', From cb145e56cb7d530f9563b98d4f9920ff0372a67a Mon Sep 17 00:00:00 2001 From: thePR0M3TH3AN <adambrettmalin@protonmail.com> Date: Thu, 1 Oct 2026 04:53:37 -0400 Subject: [PATCH 24/51] TASK-console-attention-actions: trim audit report whitespace --- .../task-console-ux-audit-owner-console-2026-09-30.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/reports/design-system/task-console-ux-audit-owner-console-2026-09-30.md b/reports/design-system/task-console-ux-audit-owner-console-2026-09-30.md index 1e6243a..51ad13f 100644 --- a/reports/design-system/task-console-ux-audit-owner-console-2026-09-30.md +++ b/reports/design-system/task-console-ux-audit-owner-console-2026-09-30.md @@ -1,7 +1,7 @@ # Console UX audit: Owner Console evidence and coverage addendum -Task: `TASK-console-ux-audit` (blocked, revision 5) -Audit target: `http://127.0.0.1:4174/console` +Task: `TASK-console-ux-audit` (blocked, revision 5) +Audit target: `http://127.0.0.1:4174/console` Local branch: `torch/owner-console` ## Current status From 014bdb4f970cd0834b87b803218628f5830cad2a Mon Sep 17 00:00:00 2001 From: thePR0M3TH3AN <adambrettmalin@protonmail.com> Date: Thu, 1 Oct 2026 05:33:22 -0400 Subject: [PATCH 25/51] TASK-3909cbf6-10c6-44ce-b82e-5bfb62cf34c8 isolate dashboard artifacts --- docs/TEST_INTEGRITY.md | 28 +++++++++ scripts/dashboard-artifacts.mjs | 83 +++++++++++++++++++++++++ scripts/test-dashboard-demo.mjs | 15 +++-- test/fleet/dashboard-artifacts.test.mjs | 68 ++++++++++++++++++++ 4 files changed, 186 insertions(+), 8 deletions(-) create mode 100644 scripts/dashboard-artifacts.mjs create mode 100644 test/fleet/dashboard-artifacts.test.mjs diff --git a/docs/TEST_INTEGRITY.md b/docs/TEST_INTEGRITY.md index 33ab466..7659d64 100644 --- a/docs/TEST_INTEGRITY.md +++ b/docs/TEST_INTEGRITY.md @@ -2531,3 +2531,31 @@ test_integrity_note: did_relax_any_assertion: false if_true_explain_spec_basis: "" ``` + +# Standalone dashboard artifact isolation (2026-10-01) + +```yaml +test_integrity_note: + change_type: new_tests + scenarios: + - id: SCN-dashboard-artifacts + given: "The dashboard test runs without an artifact environment, with an external runner directory, or with a repository/worktree target" + when: "It chooses the screenshot output boundary before the browser or screenshot writer starts" + then: "The default is a retained fresh external directory with provenance and hashes; explicit external output is honored; repository and symlink-resolved worktree targets fail before protected bytes change" + observable_outcomes: + - "Printed artifact directory, provenance, relative names, byte counts and SHA-256 hashes" + - "Refusal code for direct and symlink-resolved tracked-worktree destinations" + - "Unchanged tracked baseline bytes after refusal" + determinism_controls: + - "Disposable Git worktrees and temporary directories" + - "Fixed fixture bytes and SHA-256 assertions; no browser, network, sleep or retry is needed for the boundary scenarios" + anti_cheat_rationale: + prevents: + - "Silently falling back to tracked golden-image paths" + - "Bypassing repository protection through a symlink" + - "Claiming runner output without exact retained evidence provenance" + - "Masking a protected-write failure by changing golden assertions" + relaxation: + did_relax_any_assertion: false + if_true_explain_spec_basis: "" +``` diff --git a/scripts/dashboard-artifacts.mjs b/scripts/dashboard-artifacts.mjs new file mode 100644 index 0000000..0bca6dd --- /dev/null +++ b/scripts/dashboard-artifacts.mjs @@ -0,0 +1,83 @@ +import { execFileSync } from 'node:child_process'; +import { createHash } from 'node:crypto'; +import { existsSync, mkdtempSync, mkdirSync, readdirSync, readFileSync, realpathSync } from 'node:fs'; +import { tmpdir } from 'node:os'; +import { dirname, join, relative, resolve } from 'node:path'; + +function isWithin(path, root) { + const difference = relative(root, path); + return difference === '' || (!difference.startsWith('..') && !difference.includes('/../')); +} + +function existingAncestor(path) { + let ancestor = resolve(path); + while (!existsSync(ancestor)) { + const parent = dirname(ancestor); + if (parent === ancestor) throw new Error(`No existing ancestor for ${path}`); + ancestor = parent; + } + return ancestor; +} + +function trackedWorktreeRoots(repositoryRoot) { + const roots = new Set([resolve(repositoryRoot)]); + const output = execFileSync('git', ['worktree', 'list', '--porcelain'], { + cwd: repositoryRoot, encoding: 'utf8', stdio: ['ignore', 'pipe', 'ignore'], + }); + for (const line of output.split('\n')) { + if (line.startsWith('worktree ')) roots.add(resolve(line.slice('worktree '.length))); + } + return [...roots].flatMap((root) => existsSync(root) ? [root, realpathSync(root)] : [root]); +} + +function refusal(target, protectedRoot) { + const error = new Error(`DASHBOARD_ARTIFACT_DIRECTORY_FORBIDDEN: ${target} resolves into tracked worktree ${protectedRoot}`); + error.code = 'DASHBOARD_ARTIFACT_DIRECTORY_FORBIDDEN'; + return error; +} + +export function createDashboardArtifactDirectory({ + environment = process.env, + repositoryRoot, + temporaryRoot = tmpdir(), +} = {}) { + if (!repositoryRoot) throw new Error('repositoryRoot is required for dashboard artifact isolation'); + const requestedDirectory = environment.TORCH_CHECK_ARTIFACT_DIR; + if (!requestedDirectory) { + const directory = mkdtempSync(join(temporaryRoot, 'torch-dashboard-artifacts-')); + return { directory, provenance: 'standalone-temporary', requestedDirectory: null }; + } + + const requested = resolve(requestedDirectory); + const ancestor = existingAncestor(requested); + const resolved = resolve(realpathSync(ancestor), relative(ancestor, requested)); + for (const protectedRoot of trackedWorktreeRoots(repositoryRoot)) { + if (isWithin(resolved, protectedRoot)) throw refusal(requested, protectedRoot); + } + mkdirSync(resolved, { recursive: true }); + return { directory: resolved, provenance: 'TORCH_CHECK_ARTIFACT_DIR', requestedDirectory: requested }; +} + +function artifactFiles(directory, prefix = '') { + return readdirSync(directory, { withFileTypes: true }) + .flatMap((entry) => { + const path = join(directory, entry.name); + const relativePath = join(prefix, entry.name); + if (entry.isDirectory()) return artifactFiles(path, relativePath); + if (!entry.isFile()) return []; + const bytes = readFileSync(path); + return [{ path: relativePath, bytes: bytes.length, + sha256: createHash('sha256').update(bytes).digest('hex') }]; + }) + .sort((left, right) => left.path.localeCompare(right.path)); +} + +export function describeDashboardArtifacts(artifacts) { + return { + kind: 'dashboard-artifacts', + directory: artifacts.directory, + provenance: artifacts.provenance, + requestedDirectory: artifacts.requestedDirectory, + files: artifactFiles(artifacts.directory), + }; +} diff --git a/scripts/test-dashboard-demo.mjs b/scripts/test-dashboard-demo.mjs index a36f3d8..63205a5 100644 --- a/scripts/test-dashboard-demo.mjs +++ b/scripts/test-dashboard-demo.mjs @@ -1,11 +1,15 @@ import assert from 'node:assert/strict'; -import { mkdirSync } from 'node:fs'; import { once } from 'node:events'; import { chromium } from '@playwright/test'; import { join } from 'node:path'; +import { fileURLToPath } from 'node:url'; import { createConsoleServer } from '../src/console/server.mjs'; +import { createDashboardArtifactDirectory, describeDashboardArtifacts } from './dashboard-artifacts.mjs'; -const screenshotDirectory = process.env.TORCH_CHECK_ARTIFACT_DIR || 'reports/design-system'; +const artifacts = createDashboardArtifactDirectory({ + repositoryRoot: fileURLToPath(new URL('..', import.meta.url)), +}); +const screenshotDirectory = artifacts.directory; function screenshotPath(name) { return join(screenshotDirectory, name); } @@ -41,12 +45,10 @@ try { assert.equal(await page.locator('#operation-outcomes button').count(), 0); await page.locator('#operation-outcomes .check-evidence').last().locator('summary').click(); assert.match(await page.locator('#operation-outcomes').innerText(), /transient failure.*effects unknown/s); - mkdirSync(screenshotDirectory, { recursive: true }); await page.locator('#operation-outcomes').screenshot({ path: screenshotPath('torch-dashboard-operation-outcomes.png') }); await page.locator('#activity-review > summary').click(); assert.match(await page.locator('#activity-review').innerText(), /4 days without a named commit/); assert.match(await page.locator('#activity-review').innerText(), /waiting may be expected/); - mkdirSync(screenshotDirectory, { recursive: true }); await page.locator('#activity-review').screenshot({ path: screenshotPath('torch-dashboard-activity-review.png') }); assert.match(await page.locator('#check-list').innerText(), /Running — completion unconfirmed/); await page.locator('#check-list .check-evidence').filter({ hasText: 'interrupted-browser' }).locator('summary').click(); @@ -57,13 +59,11 @@ try { await page.locator('#check-list .check-evidence').filter({ hasText: 'recovery-scenario' }).locator('summary').click(); assert.match(await page.locator('#check-list').innerText(), /clockMoving.*true/s); assert.match(await page.locator('#check-list').innerText(), /not independent sensor truth/); - mkdirSync(screenshotDirectory, { recursive: true }); await page.locator('#check-list').screenshot({ path: screenshotPath('torch-dashboard-check-evidence.png') }); assert.match(await page.locator('#owner-briefing').innerText(), /Choose the project home layout/); assert.match(await page.locator('#owner-briefing').innerText(), /not independent live verification/); await page.locator('#owner-briefing .briefing-detail').first().locator('summary').click(); assert.match(await page.locator('#owner-briefing').innerText(), /Landed — not necessarily deployed/); - mkdirSync(screenshotDirectory, { recursive: true }); await page.locator('#owner-briefing').screenshot({ path: screenshotPath('torch-dashboard-owner-briefing-desktop.png') }); assert.match(await page.locator('#attention-list').innerText(), /manager launch needs inspection/); await page.locator('#attention-list a[href="#manager-wakes"]').click(); @@ -99,7 +99,6 @@ try { await conclusion.locator('[data-review-confirm]').waitFor(); await conclusion.getByText('Exact proposal and evidence in this decision', { exact: true }).click(); assert.match(await conclusion.locator('[data-review-scope]').innerText(), /schedulesRetained/); - mkdirSync(screenshotDirectory, { recursive: true }); await conclusion.screenshot({ path: screenshotPath('torch-dashboard-pilot-conclusion.png') }); await conclusion.locator('[data-review-confirm]').click(); await page.locator('#organization-action-status').filter({ hasText: 'recorded as reversed' }).waitFor(); @@ -155,7 +154,6 @@ try { await page.locator('[data-review-confirm]').click(); await page.locator('#organization-action-status').filter({ hasText: 'recorded as approved' }).waitFor(); - mkdirSync(screenshotDirectory, { recursive: true }); await pilotPanel.locator(':scope > summary').click(); await pilotPanel.screenshot({ path: screenshotPath('torch-dashboard-pilot-review.png') }); await page.locator('#manager-wakes').screenshot({ path: screenshotPath('torch-dashboard-manager-wakes.png') }); @@ -250,4 +248,5 @@ try { } finally { await browser?.close(); await new Promise((resolve) => server.close(resolve)); + console.log(JSON.stringify(describeDashboardArtifacts(artifacts))); } diff --git a/test/fleet/dashboard-artifacts.test.mjs b/test/fleet/dashboard-artifacts.test.mjs new file mode 100644 index 0000000..227ebdc --- /dev/null +++ b/test/fleet/dashboard-artifacts.test.mjs @@ -0,0 +1,68 @@ +import assert from 'node:assert/strict'; +import { execFileSync } from 'node:child_process'; +import { existsSync, mkdtempSync, mkdirSync, readFileSync, symlinkSync, writeFileSync } from 'node:fs'; +import { tmpdir } from 'node:os'; +import { join, resolve } from 'node:path'; +import test from 'node:test'; +import { createDashboardArtifactDirectory, describeDashboardArtifacts } from '../../scripts/dashboard-artifacts.mjs'; + +function repositoryFixture() { + const root = mkdtempSync(join(tmpdir(), 'torch-dashboard-artifact-fixture-')); + execFileSync('git', ['init', '-b', 'main', root]); + execFileSync('git', ['-C', root, 'config', 'user.email', 'torch-test@example.invalid']); + execFileSync('git', ['-C', root, 'config', 'user.name', 'TORCH Test']); + mkdirSync(join(root, 'reports', 'design-system'), { recursive: true }); + writeFileSync(join(root, 'reports', 'design-system', 'baseline.png'), 'tracked baseline bytes'); + execFileSync('git', ['-C', root, 'add', '.']); + execFileSync('git', ['-C', root, 'commit', '-m', 'dashboard baseline']); + return root; +} + +test('SCN-dashboard-artifacts: standalone execution retains fresh external screenshot evidence with provenance', () => { + const repositoryRoot = repositoryFixture(); + const artifacts = createDashboardArtifactDirectory({ environment: {}, repositoryRoot }); + assert.equal(artifacts.provenance, 'standalone-temporary'); + assert.equal(artifacts.requestedDirectory, null); + assert.equal(artifacts.directory.startsWith(resolve(repositoryRoot)), false); + writeFileSync(join(artifacts.directory, 'captured.png'), 'standalone screenshot'); + assert.deepEqual(describeDashboardArtifacts(artifacts).files, [{ + path: 'captured.png', bytes: 21, + sha256: '6921ad2c105108a005db4282443624252c392392d85bcb4ca2625c6af488f57c', + }]); +}); + +test('SCN-dashboard-artifacts: an explicit external runner directory receives hashable captured evidence', () => { + const repositoryRoot = repositoryFixture(); + const output = mkdtempSync(join(tmpdir(), 'torch-dashboard-artifact-output-')); + const artifacts = createDashboardArtifactDirectory({ + environment: { TORCH_CHECK_ARTIFACT_DIR: output }, repositoryRoot, + }); + assert.equal(artifacts.provenance, 'TORCH_CHECK_ARTIFACT_DIR'); + assert.equal(artifacts.directory, resolve(output)); + writeFileSync(join(artifacts.directory, 'captured.png'), 'runner screenshot'); + assert.deepEqual(describeDashboardArtifacts(artifacts).files, [{ + path: 'captured.png', bytes: 17, + sha256: '382d6e41938a7a8cc7767e9b519ddbef25e5048fc6fa9fe02faf31bab4148e2b', + }]); +}); + +test('SCN-dashboard-artifacts: repository and symlinked-worktree targets fail before changing preserved baseline bytes', () => { + const repositoryRoot = repositoryFixture(); + const baseline = join(repositoryRoot, 'reports', 'design-system', 'baseline.png'); + const before = readFileSync(baseline); + const direct = join(repositoryRoot, 'reports', 'design-system'); + assert.throws(() => createDashboardArtifactDirectory({ + environment: { TORCH_CHECK_ARTIFACT_DIR: direct }, repositoryRoot, + }), (error) => error.code === 'DASHBOARD_ARTIFACT_DIRECTORY_FORBIDDEN'); + assert.deepEqual(readFileSync(baseline), before); + + const linkedWorktree = mkdtempSync(join(tmpdir(), 'torch-dashboard-linked-worktree-')); + execFileSync('git', ['-C', repositoryRoot, 'worktree', 'add', '-b', 'linked-dashboard-fixture', linkedWorktree]); + const link = join(tmpdir(), `torch-dashboard-worktree-link-${process.pid}-${Date.now()}`); + symlinkSync(join(linkedWorktree, 'reports', 'design-system'), link); + assert.throws(() => createDashboardArtifactDirectory({ + environment: { TORCH_CHECK_ARTIFACT_DIR: link }, repositoryRoot, + }), (error) => error.code === 'DASHBOARD_ARTIFACT_DIRECTORY_FORBIDDEN'); + assert.deepEqual(readFileSync(baseline), before); + assert.equal(existsSync(join(linkedWorktree, 'reports', 'design-system', 'torch-dashboard-demo-desktop.png')), false); +}); From 0fdfcb3b68e4511f2993d03e1fff8f89124b731c Mon Sep 17 00:00:00 2001 From: thePR0M3TH3AN <adambrettmalin@protonmail.com> Date: Thu, 1 Oct 2026 05:45:12 -0400 Subject: [PATCH 26/51] TASK-3909cbf6-10c6-44ce-b82e-5bfb62cf34c8 harden artifact target guard --- docs/TEST_INTEGRITY.md | 6 +-- scripts/dashboard-artifacts.mjs | 59 ++++++++++++++++++++----- scripts/test-dashboard-demo.mjs | 15 +++++-- test/fleet/dashboard-artifacts.test.mjs | 36 ++++++++++++--- 4 files changed, 92 insertions(+), 24 deletions(-) diff --git a/docs/TEST_INTEGRITY.md b/docs/TEST_INTEGRITY.md index 7659d64..028b5da 100644 --- a/docs/TEST_INTEGRITY.md +++ b/docs/TEST_INTEGRITY.md @@ -2541,11 +2541,11 @@ test_integrity_note: - id: SCN-dashboard-artifacts given: "The dashboard test runs without an artifact environment, with an external runner directory, or with a repository/worktree target" when: "It chooses the screenshot output boundary before the browser or screenshot writer starts" - then: "The default is a retained fresh external directory with provenance and hashes; explicit external output is honored; repository and symlink-resolved worktree targets fail before protected bytes change" + then: "The default is a retained fresh external directory with provenance and hashes; explicit external output is honored; repository, temporary-root, pre-existing and symlink-resolved targets fail before protected bytes change" observable_outcomes: - "Printed artifact directory, provenance, relative names, byte counts and SHA-256 hashes" - - "Refusal code for direct and symlink-resolved tracked-worktree destinations" - - "Unchanged tracked baseline bytes after refusal" + - "Refusal code for direct, temporary-root, existing-file and symlink-resolved tracked-worktree destinations" + - "Unchanged tracked baseline and external user bytes after refusal" determinism_controls: - "Disposable Git worktrees and temporary directories" - "Fixed fixture bytes and SHA-256 assertions; no browser, network, sleep or retry is needed for the boundary scenarios" diff --git a/scripts/dashboard-artifacts.mjs b/scripts/dashboard-artifacts.mjs index 0bca6dd..5a9c3e1 100644 --- a/scripts/dashboard-artifacts.mjs +++ b/scripts/dashboard-artifacts.mjs @@ -1,12 +1,12 @@ import { execFileSync } from 'node:child_process'; import { createHash } from 'node:crypto'; -import { existsSync, mkdtempSync, mkdirSync, readdirSync, readFileSync, realpathSync } from 'node:fs'; +import { existsSync, lstatSync, mkdtempSync, mkdirSync, readdirSync, readFileSync, realpathSync } from 'node:fs'; import { tmpdir } from 'node:os'; -import { dirname, join, relative, resolve } from 'node:path'; +import { basename, dirname, isAbsolute, join, relative, resolve, sep } from 'node:path'; function isWithin(path, root) { const difference = relative(root, path); - return difference === '' || (!difference.startsWith('..') && !difference.includes('/../')); + return difference === '' || (!isAbsolute(difference) && difference !== '..' && !difference.startsWith(`..${sep}`)); } function existingAncestor(path) { @@ -36,6 +36,28 @@ function refusal(target, protectedRoot) { return error; } +function targetExists(target) { + try { + lstatSync(target); + return true; + } catch (error) { + if (error.code === 'ENOENT') return false; + throw error; + } +} + +function resolvePhysicalDirectory(directory) { + const requested = resolve(directory); + const ancestor = existingAncestor(requested); + return { requested, resolved: resolve(realpathSync(ancestor), relative(ancestor, requested)) }; +} + +function assertExternalDirectory({ requested, resolved }, repositoryRoot) { + for (const protectedRoot of trackedWorktreeRoots(repositoryRoot)) { + if (isWithin(resolved, protectedRoot)) throw refusal(requested, protectedRoot); + } +} + export function createDashboardArtifactDirectory({ environment = process.env, repositoryRoot, @@ -44,18 +66,33 @@ export function createDashboardArtifactDirectory({ if (!repositoryRoot) throw new Error('repositoryRoot is required for dashboard artifact isolation'); const requestedDirectory = environment.TORCH_CHECK_ARTIFACT_DIR; if (!requestedDirectory) { - const directory = mkdtempSync(join(temporaryRoot, 'torch-dashboard-artifacts-')); + const temporary = resolvePhysicalDirectory(temporaryRoot); + assertExternalDirectory(temporary, repositoryRoot); + const directory = mkdtempSync(join(temporary.resolved, 'torch-dashboard-artifacts-')); return { directory, provenance: 'standalone-temporary', requestedDirectory: null }; } - const requested = resolve(requestedDirectory); - const ancestor = existingAncestor(requested); - const resolved = resolve(realpathSync(ancestor), relative(ancestor, requested)); - for (const protectedRoot of trackedWorktreeRoots(repositoryRoot)) { - if (isWithin(resolved, protectedRoot)) throw refusal(requested, protectedRoot); + const output = resolvePhysicalDirectory(requestedDirectory); + assertExternalDirectory(output, repositoryRoot); + mkdirSync(output.resolved, { recursive: true }); + return { directory: output.resolved, provenance: 'TORCH_CHECK_ARTIFACT_DIR', requestedDirectory: output.requested }; +} + +export function prepareDashboardArtifactTargets(artifacts, names) { + if (new Set(names).size !== names.length || names.some((name) => name !== basename(name))) { + throw new Error('Dashboard screenshot names must be unique plain filenames'); } - mkdirSync(resolved, { recursive: true }); - return { directory: resolved, provenance: 'TORCH_CHECK_ARTIFACT_DIR', requestedDirectory: requested }; + const paths = {}; + for (const name of names) { + const target = join(artifacts.directory, name); + if (targetExists(target)) { + const error = new Error(`DASHBOARD_ARTIFACT_TARGET_EXISTS: refusing to replace ${target}`); + error.code = 'DASHBOARD_ARTIFACT_TARGET_EXISTS'; + throw error; + } + paths[name] = target; + } + return Object.freeze(paths); } function artifactFiles(directory, prefix = '') { diff --git a/scripts/test-dashboard-demo.mjs b/scripts/test-dashboard-demo.mjs index 63205a5..06b69dd 100644 --- a/scripts/test-dashboard-demo.mjs +++ b/scripts/test-dashboard-demo.mjs @@ -1,17 +1,24 @@ import assert from 'node:assert/strict'; import { once } from 'node:events'; import { chromium } from '@playwright/test'; -import { join } from 'node:path'; import { fileURLToPath } from 'node:url'; import { createConsoleServer } from '../src/console/server.mjs'; -import { createDashboardArtifactDirectory, describeDashboardArtifacts } from './dashboard-artifacts.mjs'; +import { createDashboardArtifactDirectory, describeDashboardArtifacts, prepareDashboardArtifactTargets } from './dashboard-artifacts.mjs'; +const screenshotNames = [ + 'torch-dashboard-operation-outcomes.png', 'torch-dashboard-activity-review.png', + 'torch-dashboard-check-evidence.png', 'torch-dashboard-owner-briefing-desktop.png', + 'torch-dashboard-pilot-conclusion.png', 'torch-dashboard-pilot-review.png', + 'torch-dashboard-manager-wakes.png', 'torch-dashboard-demo-desktop.png', + 'torch-dashboard-demo-mobile.png', 'torch-dashboard-owner-briefing-mobile.png', + 'torch-dashboard-live-refresh.png', +]; const artifacts = createDashboardArtifactDirectory({ repositoryRoot: fileURLToPath(new URL('..', import.meta.url)), }); -const screenshotDirectory = artifacts.directory; +const screenshotPaths = prepareDashboardArtifactTargets(artifacts, screenshotNames); function screenshotPath(name) { - return join(screenshotDirectory, name); + return screenshotPaths[name]; } const server = createConsoleServer(); diff --git a/test/fleet/dashboard-artifacts.test.mjs b/test/fleet/dashboard-artifacts.test.mjs index 227ebdc..591d194 100644 --- a/test/fleet/dashboard-artifacts.test.mjs +++ b/test/fleet/dashboard-artifacts.test.mjs @@ -4,7 +4,7 @@ import { existsSync, mkdtempSync, mkdirSync, readFileSync, symlinkSync, writeFil import { tmpdir } from 'node:os'; import { join, resolve } from 'node:path'; import test from 'node:test'; -import { createDashboardArtifactDirectory, describeDashboardArtifacts } from '../../scripts/dashboard-artifacts.mjs'; +import { createDashboardArtifactDirectory, describeDashboardArtifacts, prepareDashboardArtifactTargets } from '../../scripts/dashboard-artifacts.mjs'; function repositoryFixture() { const root = mkdtempSync(join(tmpdir(), 'torch-dashboard-artifact-fixture-')); @@ -24,7 +24,8 @@ test('SCN-dashboard-artifacts: standalone execution retains fresh external scree assert.equal(artifacts.provenance, 'standalone-temporary'); assert.equal(artifacts.requestedDirectory, null); assert.equal(artifacts.directory.startsWith(resolve(repositoryRoot)), false); - writeFileSync(join(artifacts.directory, 'captured.png'), 'standalone screenshot'); + const targets = prepareDashboardArtifactTargets(artifacts, ['captured.png']); + writeFileSync(targets['captured.png'], 'standalone screenshot'); assert.deepEqual(describeDashboardArtifacts(artifacts).files, [{ path: 'captured.png', bytes: 21, sha256: '6921ad2c105108a005db4282443624252c392392d85bcb4ca2625c6af488f57c', @@ -39,20 +40,25 @@ test('SCN-dashboard-artifacts: an explicit external runner directory receives ha }); assert.equal(artifacts.provenance, 'TORCH_CHECK_ARTIFACT_DIR'); assert.equal(artifacts.directory, resolve(output)); - writeFileSync(join(artifacts.directory, 'captured.png'), 'runner screenshot'); + const targets = prepareDashboardArtifactTargets(artifacts, ['captured.png']); + writeFileSync(targets['captured.png'], 'runner screenshot'); assert.deepEqual(describeDashboardArtifacts(artifacts).files, [{ path: 'captured.png', bytes: 17, sha256: '382d6e41938a7a8cc7767e9b519ddbef25e5048fc6fa9fe02faf31bab4148e2b', }]); }); -test('SCN-dashboard-artifacts: repository and symlinked-worktree targets fail before changing preserved baseline bytes', () => { +test('SCN-dashboard-artifacts: repository, temporary-root, pre-existing and symlink targets fail before changing preserved bytes', () => { const repositoryRoot = repositoryFixture(); const baseline = join(repositoryRoot, 'reports', 'design-system', 'baseline.png'); const before = readFileSync(baseline); - const direct = join(repositoryRoot, 'reports', 'design-system'); + for (const direct of [join(repositoryRoot, 'reports', 'design-system'), join(repositoryRoot, '..captures')]) { + assert.throws(() => createDashboardArtifactDirectory({ + environment: { TORCH_CHECK_ARTIFACT_DIR: direct }, repositoryRoot, + }), (error) => error.code === 'DASHBOARD_ARTIFACT_DIRECTORY_FORBIDDEN'); + } assert.throws(() => createDashboardArtifactDirectory({ - environment: { TORCH_CHECK_ARTIFACT_DIR: direct }, repositoryRoot, + environment: {}, repositoryRoot, temporaryRoot: join(repositoryRoot, 'unsafe-tmp'), }), (error) => error.code === 'DASHBOARD_ARTIFACT_DIRECTORY_FORBIDDEN'); assert.deepEqual(readFileSync(baseline), before); @@ -65,4 +71,22 @@ test('SCN-dashboard-artifacts: repository and symlinked-worktree targets fail be }), (error) => error.code === 'DASHBOARD_ARTIFACT_DIRECTORY_FORBIDDEN'); assert.deepEqual(readFileSync(baseline), before); assert.equal(existsSync(join(linkedWorktree, 'reports', 'design-system', 'torch-dashboard-demo-desktop.png')), false); + + const output = mkdtempSync(join(tmpdir(), 'torch-dashboard-existing-output-')); + const expected = join(output, 'torch-dashboard-demo-desktop.png'); + writeFileSync(expected, 'existing user evidence'); + const external = createDashboardArtifactDirectory({ environment: { TORCH_CHECK_ARTIFACT_DIR: output }, repositoryRoot }); + assert.throws(() => prepareDashboardArtifactTargets(external, ['torch-dashboard-demo-desktop.png']), + (error) => error.code === 'DASHBOARD_ARTIFACT_TARGET_EXISTS'); + assert.equal(readFileSync(expected, 'utf8'), 'existing user evidence'); + + const linkedOutput = mkdtempSync(join(tmpdir(), 'torch-dashboard-linked-output-')); + const linkedExpected = join(linkedOutput, 'torch-dashboard-demo-desktop.png'); + symlinkSync(baseline, linkedExpected); + const linkedExternal = createDashboardArtifactDirectory({ + environment: { TORCH_CHECK_ARTIFACT_DIR: linkedOutput }, repositoryRoot, + }); + assert.throws(() => prepareDashboardArtifactTargets(linkedExternal, ['torch-dashboard-demo-desktop.png']), + (error) => error.code === 'DASHBOARD_ARTIFACT_TARGET_EXISTS'); + assert.deepEqual(readFileSync(baseline), before); }); From 2752caab1cb79f45c5f82a7aa6f3ef43d0c7e837 Mon Sep 17 00:00:00 2001 From: thePR0M3TH3AN <adambrettmalin@protonmail.com> Date: Thu, 1 Oct 2026 06:26:25 -0400 Subject: [PATCH 27/51] TASK-conversation-console-workflow: add focused Console views --- site/console.html | 29 +++-- site/console.js | 126 +++++++++++++++++++- site/styles.css | 26 ++-- test/fleet/console-view-navigation.test.mjs | 111 +++++++++++++++++ 4 files changed, 271 insertions(+), 21 deletions(-) create mode 100644 test/fleet/console-view-navigation.test.mjs diff --git a/site/console.html b/site/console.html index 662156a..3df04ff 100644 --- a/site/console.html +++ b/site/console.html @@ -43,14 +43,19 @@ <a href="#organization">Organization</a> <a href="#evidence">Evidence</a> <a href="#delivery">Release gates</a> - <p class="rail-note">Local project view<br><span id="project-commit">—</span></p> + <details class="rail-provenance"> + <summary>Snapshot provenance</summary> + <span>Commit <code id="project-commit">—</code></span> + <span>Branch <code id="project-branch-detail">—</code></span> + </details> </nav> <div class="console-workspace"> <p class="console-error" id="console-error" role="alert" hidden></p> <p id="live-refresh-status" role="status" aria-live="polite">Waiting for the first snapshot.</p> + <p id="console-view-status" class="screen-reader-only" role="status" aria-live="polite"></p> - <section id="overview" class="pulse-zone" aria-labelledby="pulse-title"> + <section id="overview" class="pulse-zone" data-console-view="overview" aria-labelledby="pulse-title"> <div class="pulse-main"> <div class="pulse-heading"><div><p class="section-kicker">Project pulse</p><h1 id="pulse-title">Work in motion</h1></div><span id="fleet-health" class="health-flag">Observing</span></div> <p id="project-summary" class="pulse-summary">TORCH is gathering the latest repository and fleet evidence.</p> @@ -67,12 +72,12 @@ </aside> </section> - <section id="owner-briefing" class="console-section owner-briefing" aria-labelledby="owner-briefing-title"> + <section id="owner-briefing" class="console-section owner-briefing" data-console-view="owner-briefing" aria-labelledby="owner-briefing-title"> <div class="section-heading"><h2 id="owner-briefing-title">Owner briefing</h2><span>Published evidence</span></div> <div id="owner-briefing-content"><p>Reading the latest local publication…</p></div> </section> - <section id="flow-watch" class="console-section flow-watch-section" aria-labelledby="flow-watch-title"> + <section id="flow-watch" class="console-section flow-watch-section" data-console-view="flow-watch" aria-labelledby="flow-watch-title"> <div class="section-heading"><div><p class="section-kicker">Approvals and reporting lines</p><h2 id="flow-watch-title">Flow watch</h2></div><span>Owner decisions gated</span></div> <p class="flow-watch-note">See which teams need attention and who owns each decision. A configured cadence does not confirm that a system timer is installed.</p> <div class="flow-watch-grid"> @@ -88,7 +93,7 @@ </div> </section> - <section id="work" class="board-section" aria-labelledby="work-title"> + <section id="work" class="board-section" data-console-view="work" aria-labelledby="work-title"> <div class="section-heading"><div><p class="section-kicker">Authoritative backlog</p><h2 id="work-title">Work board</h2></div><span id="task-count">0 active</span></div> <div class="work-view-tools" role="group" aria-label="Backlog views and filters"> <div class="work-filter-row"> @@ -161,13 +166,13 @@ <p id="task-create-action-status" class="priority-action-status" role="status" aria-live="polite" hidden></p> </section> - <section id="initiative-progress" class="console-section initiative-section" aria-labelledby="initiative-title"> + <section id="initiative-progress" class="console-section initiative-section" data-console-view="initiative-progress" aria-labelledby="initiative-title"> <div class="section-heading"><div><p class="section-kicker">Derived from the single backlog</p><h2 id="initiative-title">Feature and milestone progress</h2></div><span>Task states only · gates remain separate</span></div> <p class="initiative-note">Progress is calculated from each linked task's current state. It does not mean checks passed, integration landed, or a release is ready.</p> <div id="initiative-rollup" class="initiative-rollup" aria-live="polite"></div> </section> - <section id="fleet" class="console-section fleet-section" aria-labelledby="fleet-title"> + <section id="fleet" class="console-section fleet-section" data-console-view="fleet" aria-labelledby="fleet-title"> <div class="section-heading"><div><p class="section-kicker">Persistent identities</p><h2 id="fleet-title">Fleet and ownership</h2></div><span id="agent-health-note">Session state from latest observation</span></div> <div class="fleet-columns"> <article class="work-surface"><div class="panel-heading"><h3>Sessions</h3><span>One context per identity</span></div><div id="agent-list" class="agent-list"></div> @@ -196,19 +201,19 @@ </div> </section> - <section id="organization" class="console-section organization-section" aria-labelledby="organization-title"> + <section id="organization" class="console-section organization-section" data-console-view="organization" aria-labelledby="organization-title"> <div class="section-heading"><div><p class="section-kicker">Current approved structure</p><h2 id="organization-title">Organization map</h2></div><span id="organization-revision">No active graph</span></div> <div id="organization-map" class="organization-map" aria-live="polite"></div> <div id="organization-lifecycle" class="organization-lifecycle" aria-live="polite"></div> </section> - <section id="organization-proposals" class="console-section" aria-labelledby="proposal-title"> + <section id="organization-proposals" class="console-section" data-console-view="organization" aria-labelledby="proposal-title"> <div class="section-heading"><div><p class="section-kicker">Owner review</p><h2 id="proposal-title">Organization proposals</h2></div><span id="change-count">0 pending</span></div> <p id="organization-action-status" class="organization-action-status" role="status" aria-live="polite" hidden></p> <div id="change-list" class="console-list"></div> </section> - <section id="communications" class="console-section communication-section" aria-labelledby="communications-title"> + <section id="communications" class="console-section communication-section" data-console-view="communications" aria-labelledby="communications-title"> <div class="section-heading"><div><p class="section-kicker">Durable coordination</p><h2 id="communications-title">Conversations</h2></div><span id="message-count">0 unacknowledged</span></div> <details class="owner-request-composer"> <summary>Request work from an agent</summary> @@ -244,7 +249,7 @@ <div id="message-list" class="conversation-stream"></div> </section> - <section id="evidence" class="console-section evidence-section" aria-labelledby="evidence-title"> + <section id="evidence" class="console-section evidence-section" data-console-view="evidence" aria-labelledby="evidence-title"> <div class="section-heading"><div><p class="section-kicker">Provenance first</p><h2 id="evidence-title">Evidence and review</h2></div><span>Exact commit receipts</span></div> <div class="evidence-columns"> <article class="work-surface"><div class="panel-heading"><h3>Checks</h3><span>Passes are commit-bound</span></div><div id="check-list" class="console-list"></div></article> @@ -252,7 +257,7 @@ </div> </section> - <section id="delivery" class="console-section delivery-section" aria-labelledby="delivery-title"> + <section id="delivery" class="console-section delivery-section" data-console-view="delivery" aria-labelledby="delivery-title"> <div class="section-heading"><div><p class="section-kicker">Separate authority gates</p><h2 id="delivery-title">Integration and release</h2></div><span>Integration is not deployment</span></div> <div class="delivery-columns"> <article class="work-surface"><div class="panel-heading"><h3>Integration</h3><span>FIFO queue · source commit</span></div><div id="integration-list" class="console-list"></div></article> diff --git a/site/console.js b/site/console.js index cba404d..fc016cf 100644 --- a/site/console.js +++ b/site/console.js @@ -1,4 +1,83 @@ +const consoleViewDefinitions = Object.freeze({ + overview: { title: 'Overview' }, + 'owner-briefing': { title: 'Briefing' }, + 'flow-watch': { title: 'Flow watch' }, + work: { title: 'Work' }, + 'initiative-progress': { title: 'Progress' }, + fleet: { title: 'Fleet' }, + communications: { title: 'Conversations' }, + organization: { title: 'Organization' }, + evidence: { title: 'Evidence' }, + delivery: { title: 'Release gates' }, +}); + +function installConsoleViewRouting() { + const nav = document.querySelector('.console-rail'); + const sections = [...document.querySelectorAll('.console-workspace > [data-console-view]')]; + const links = [...(nav?.querySelectorAll('a[href^="#"]') ?? [])]; + if (!nav || !sections.length || !links.length) return { sync: () => 'overview' }; + + let lastHash = null; + const decodeHash = (hash) => { + try { return decodeURIComponent(String(hash ?? '').replace(/^#/, '')); } catch { return ''; } + }; + + function resolveView(hash) { + const fragment = decodeHash(hash); + if (consoleViewDefinitions[fragment]) return fragment; + const target = document.getElementById(fragment); + const containingView = target?.closest('[data-console-view]')?.dataset.consoleView; + return consoleViewDefinitions[containingView] ? containingView : 'overview'; + } + + function sync({ focus = false, force = false } = {}) { + const hash = globalThis.location.hash || '#overview'; + if (!force && hash === lastHash) return resolveView(hash); + lastHash = hash; + const view = resolveView(hash); + const definition = consoleViewDefinitions[view]; + const visible = sections.filter((section) => section.dataset.consoleView === view); + sections.forEach((section) => { section.hidden = section.dataset.consoleView !== view; }); + links.forEach((link) => { + const route = resolveView(link.getAttribute('href')); + if (route === view) link.setAttribute('aria-current', 'page'); + else link.removeAttribute('aria-current'); + }); + const workspace = document.querySelector('.console-workspace'); + if (workspace) workspace.dataset.currentView = view; + document.title = `${definition.title} | TORCH Local Fleet Console`; + const announcement = document.querySelector('#console-view-status'); + if (announcement) announcement.textContent = `Viewing ${definition.title}.`; + + if (focus) { + const targetId = decodeHash(hash); + const target = document.getElementById(targetId); + if (target && target.dataset.consoleView !== view && target.closest('[data-console-view]')) { + target.scrollIntoView?.({ block: 'start' }); + target.focus?.({ preventScroll: true }); + } else { + const labelledBy = visible[0]?.getAttribute('aria-labelledby'); + const heading = (labelledBy && document.getElementById(labelledBy)) + ?? visible[0]?.querySelector('h1, h2'); + if (heading) { + heading.tabIndex = -1; + heading.focus({ preventScroll: true }); + } + globalThis.scrollTo?.({ top: 0, behavior: 'instant' }); + } + } + return view; + } + + globalThis.addEventListener('hashchange', () => sync({ focus: true })); + globalThis.addEventListener('popstate', () => sync({ focus: true })); + const initialFragment = decodeHash(globalThis.location.hash); + sync({ focus: Boolean(initialFragment && !consoleViewDefinitions[initialFragment]) }); + return { sync }; +} + const $ = (selector) => document.querySelector(selector); +const consoleViewRouter = installConsoleViewRouting(); const demoWorkspace = globalThis.TorchConsoleDemo; const workViews = globalThis.TorchWorkViews; const workProgress = globalThis.TorchWorkProgress; @@ -45,6 +124,46 @@ function setText(selector, value) { if (element) element.textContent = value ?? ''; } +function compactOwnerBriefingProvenance() { + const publication = $('#owner-briefing-content')?.querySelector('.briefing-publication'); + if (!publication) return; + + const timestamp = publication.querySelector('p time'); + const window = [...publication.querySelectorAll('.briefing-muted')] + .find((paragraph) => paragraph.textContent.trim().startsWith('Window:')); + if (timestamp || window) { + const disclosure = document.createElement('details'); + disclosure.className = 'briefing-provenance'; + const summary = document.createElement('summary'); + summary.textContent = 'Publication time and reporting window'; + disclosure.append(summary); + if (timestamp) { + const exactTime = timestamp.cloneNode(true); + exactTime.textContent = timestamp.getAttribute('datetime') || timestamp.textContent; + const published = document.createElement('p'); + published.append('Published ', exactTime); + disclosure.append(published); + timestamp.textContent = ageLabel(timestamp.getAttribute('datetime')); + timestamp.title = exactTime.textContent; + } + if (window) disclosure.append(window); + publication.append(disclosure); + } + + for (const code of publication.querySelectorAll('code')) { + const commit = code.textContent.trim(); + if (!/^[a-f0-9]{40}$/i.test(commit)) continue; + const disclosure = document.createElement('details'); + disclosure.className = 'briefing-provenance'; + const summary = document.createElement('summary'); + summary.textContent = `Commit ${shortCommit(commit)}`; + const exact = document.createElement('code'); + exact.textContent = commit; + disclosure.append(summary, exact); + code.replaceWith(disclosure); + } +} + function shortCommit(value) { return value ? String(value).slice(0, 9) : '—'; } @@ -69,9 +188,10 @@ function taskCard(task, healthFindings = []) { const staleEvidence = healthFindings.find((finding) => finding.taskId === task.id && ['BACKLOG_OBSERVED_COMMIT_STALE', 'BACKLOG_OBSERVED_COMMIT_MISSING'].includes(finding.code)); return `<article class="task-ticket"> - <div class="ticket-topline"><code>${escapeHtml(task.id)}</code><span class="priority priority-${escapeHtml(task.priority ?? 'normal')}">${escapeHtml(task.priority ?? 'normal')}</span></div> + <div class="ticket-topline"><span class="priority priority-${escapeHtml(task.priority ?? 'normal')}">${escapeHtml(task.priority ?? 'normal')}</span></div> <h4>${escapeHtml(task.title ?? 'Untitled task')}</h4> <p>${escapeHtml(detail || 'No task description recorded.')}</p> + <details class="task-reference"><summary>Task reference</summary><code>${escapeHtml(task.id)}</code></details> ${staleEvidence ? `<div class="evidence-warning" role="status"><strong>Evidence needs refresh</strong><p>${escapeHtml(staleEvidence.recommendation)}</p></div>` : ''} <dl class="ticket-meta"> <div><dt>Owner</dt><dd>${escapeHtml(task.owner ?? 'Unassigned')}</dd></div> @@ -772,6 +892,7 @@ function render(snapshot) { setText('#project-name', project?.name ?? project?.id ?? 'Not installed'); setText('#project-branch', branch); + setText('#project-branch-detail', branch); setText('#project-commit', shortCommit(snapshot.repository?.head)); setText('#fleet-health', snapshot.mode === 'installed' ? (snapshot.doctor?.healthy ? 'Healthy' : 'Review findings') : 'Not installed'); @@ -794,6 +915,7 @@ function render(snapshot) { renderRuntimeProfileEditor(agents, snapshot.runtimeAdapters ?? [], snapshot.mode === 'installed'); renderFlowWatch(snapshot); setHtml('#owner-briefing-content', globalThis.TorchOwnerDigest.render(snapshot.ownerDigest)); + compactOwnerBriefingProvenance(); renderAttention(attention); @@ -1910,11 +2032,11 @@ globalThis.addEventListener('pageshow', (event) => { if (event.persisted && !liveUpdatesPaused && document.visibilityState === 'visible') refresh(); }); if (demoWorkspace) { - document.title = 'TORCH Dashboard'; $('#demo-banner').hidden = false; $('#reset-demo')?.addEventListener('click', () => { demoWorkspace.reset(); globalThis.location.reload(); }); } +consoleViewRouter.sync({ force: true }); refresh(); diff --git a/site/styles.css b/site/styles.css index 7ca7687..b6799b4 100644 --- a/site/styles.css +++ b/site/styles.css @@ -152,9 +152,19 @@ footer div { display: flex; gap: 1.5rem; } .console-rail { position: sticky; top: 0; align-self: start; display: grid; gap: .2rem; padding: 1.5rem .75rem; border-right: 1px solid var(--line); } .console-rail a { padding: .55rem .7rem; color: var(--muted); font-weight: 650; text-decoration: none; border-left: 3px solid transparent; } .console-rail a:hover, .console-rail a:focus-visible { color: var(--ink); background: var(--paper); border-left-color: var(--route); } -.rail-note { margin: 2rem .7rem 0; color: var(--muted); font-size: .76rem; line-height: 1.7; } -.rail-note span { color: var(--ink); font-family: ui-monospace, monospace; } +.console-rail a[aria-current="page"] { color: var(--ink); background: var(--paper); border-left-color: var(--route); } +.rail-provenance { margin: 1.5rem .7rem 0; color: var(--muted); font-size: .72rem; line-height: 1.55; overflow-wrap: anywhere; } +.rail-provenance summary, .briefing-provenance summary, .task-reference summary { cursor: pointer; color: var(--route); font-weight: 650; } +.rail-provenance > span { display: block; margin-top: .35rem; } +.rail-provenance code { color: var(--ink); overflow-wrap: anywhere; } .console-workspace { min-width: 0; padding: 0 clamp(1rem, 2.5vw, 2.5rem) 3rem; } +.console-workspace > [data-console-view][hidden] { display: none !important; } +.screen-reader-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; } +.briefing-provenance { margin-top: .4rem; color: var(--muted); font-size: .78rem; overflow-wrap: anywhere; } +.briefing-provenance p { margin: .3rem 0; } +.briefing-provenance code { display: inline-block; max-width: 100%; overflow-wrap: anywhere; } +.task-reference { margin-top: .55rem; color: var(--muted); font-size: .75rem; overflow-wrap: anywhere; } +.task-reference code { display: inline-block; margin-top: .3rem; color: var(--ink); } .console-error { margin: 1.2rem 0 0; background: var(--warning-surface); color: var(--warning-ink); border-left: 4px solid var(--signal); padding: 1rem; } .pulse-zone { display: grid; grid-template-columns: minmax(0, 1.45fr) minmax(270px, .8fr); border-bottom: 1px solid var(--ink); } .pulse-main { min-width: 0; padding: 2rem 2rem 1.6rem 0; } @@ -578,10 +588,10 @@ footer div { display: flex; gap: 1.5rem; } .blueprint article { min-height: auto; border-right: 0; border-bottom: 1px solid var(--line); } .blueprint-index { margin-bottom: 2rem; } .console-layout { grid-template-columns: 1fr; } - .console-rail { position: sticky; z-index: 5; top: 0; display: flex; overflow-x: auto; padding: .35rem .6rem; border-right: 0; border-bottom: 1px solid var(--line); background: var(--paper); } - .console-rail a { flex: 0 0 auto; padding: .5rem .65rem; border-left: 0; border-bottom: 3px solid transparent; } - .console-rail a:hover, .console-rail a:focus-visible { border-left-color: transparent; border-bottom-color: var(--route); } - .rail-note { display: none; } + .console-rail { position: sticky; z-index: 5; top: 0; display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: .25rem; padding: .4rem .6rem; border-right: 0; border-bottom: 1px solid var(--line); background: var(--paper); } + .console-rail a { min-width: 0; padding: .45rem .5rem; border-left: 0; border-bottom: 3px solid transparent; overflow-wrap: anywhere; } + .console-rail a:hover, .console-rail a:focus-visible, .console-rail a[aria-current="page"] { border-left-color: transparent; border-bottom-color: var(--route); } + .rail-provenance { grid-column: 1 / -1; margin: .25rem .5rem; } .console-workspace { padding-inline: clamp(1rem, 3vw, 2rem); } .pulse-zone { grid-template-columns: minmax(0, 1.15fr) minmax(240px, .85fr); } .work-filter-row { grid-template-columns: repeat(auto-fit, minmax(135px, 1fr)); } @@ -611,11 +621,13 @@ footer div { display: flex; gap: 1.5rem; } .console-nav { min-height: 62px; gap: .7rem; } .console-project { margin-right: 0; } .console-project span { display: none; } - .console-tools > span { display: none; } + .console-tools { flex-wrap: wrap; gap: .5rem; } + .console-tools > span { display: inline-flex; flex-basis: 100%; } .console-rail { top: 0; } .section-heading { flex-wrap: wrap; } .section-heading > div, .section-heading > span { min-width: 0; overflow-wrap: anywhere; } .console-workspace { padding-inline: .8rem; } + .console-rail { grid-template-columns: repeat(2, minmax(0, 1fr)); } .pulse-zone, .fleet-columns, .evidence-columns, .delivery-columns, .flow-watch-grid { grid-template-columns: 1fr; } .owner-request-fields, .runtime-profile-fields { grid-template-columns: 1fr; } .schedule-launcher-actions { align-items: stretch; flex-direction: column; } diff --git a/test/fleet/console-view-navigation.test.mjs b/test/fleet/console-view-navigation.test.mjs new file mode 100644 index 0000000..9d8221d --- /dev/null +++ b/test/fleet/console-view-navigation.test.mjs @@ -0,0 +1,111 @@ +import assert from 'node:assert/strict'; +import { once } from 'node:events'; +import test from 'node:test'; +import { chromium } from '@playwright/test'; +import { createConsoleServer } from '../../src/console/server.mjs'; + +const views = [ + ['overview', 'Overview'], + ['owner-briefing', 'Briefing'], + ['flow-watch', 'Flow watch'], + ['work', 'Work'], + ['initiative-progress', 'Progress'], + ['fleet', 'Fleet'], + ['communications', 'Conversations'], + ['organization', 'Organization'], + ['evidence', 'Evidence'], + ['delivery', 'Release gates'], +]; + +async function openDemo(t, viewport) { + const server = createConsoleServer(); + server.listen(0, '127.0.0.1'); + await once(server, 'listening'); + let browser; + t.after(async () => { + await browser?.close(); + await new Promise((resolve) => server.close(resolve)); + }); + browser = await chromium.launch({ headless: true }); + const context = await browser.newContext({ viewport }); + const page = await context.newPage(); + await page.clock.install({ time: new Date('2026-10-01T12:00:00.000Z') }); + await page.goto(`http://127.0.0.1:${server.address().port}/console?demo=1#work`); + await page.locator('#live-refresh-status[data-generation="1"]').waitFor(); + return { page, context }; +} + +async function assertSelectedView(page, route, title) { + const selected = await page.locator('.console-workspace > [data-console-view]:not([hidden])').evaluateAll((sections) => + [...new Set(sections.map((section) => section.dataset.consoleView))]); + assert.deepEqual(selected, [route], `only the ${route} view should be visible`); + assert.equal(await page.title(), `${title} | TORCH Local Fleet Console`); + assert.equal(await page.locator(`.console-rail a[aria-current="page"][href="#${route}"]`).count(), 1); + assert.equal(await page.locator('#project-name').isVisible(), true); + assert.equal(await page.locator('#snapshot-time').isVisible(), true); +} + +test('SCN-console-view-navigation: fragments, direct loads, Back and Forward select one addressable view', async (t) => { + const { page } = await openDemo(t, { width: 1280, height: 900 }); + await assertSelectedView(page, 'work', 'Work'); + + await page.locator('.console-rail a[href="#fleet"]').click(); + await assertSelectedView(page, 'fleet', 'Fleet'); + await page.locator('.console-rail a[href="#evidence"]').click(); + await assertSelectedView(page, 'evidence', 'Evidence'); + await page.goBack(); + await assertSelectedView(page, 'fleet', 'Fleet'); + await page.goForward(); + await assertSelectedView(page, 'evidence', 'Evidence'); + + await page.goto(`http://127.0.0.1:${new URL(page.url()).port}/console?demo=1#approval-request-list`); + await page.locator('#live-refresh-status[data-generation="1"]').waitFor(); + await assertSelectedView(page, 'flow-watch', 'Flow watch'); +}); + +test('SCN-console-mobile-navigation: every destination is visible at 390x844 without horizontal hunting', async (t) => { + const { page } = await openDemo(t, { width: 390, height: 844 }); + assert.equal(await page.locator('.console-rail a').count(), views.length); + + for (const [route, title] of views) { + const link = page.locator(`.console-rail a[href="#${route}"]`); + assert.equal(await link.isVisible(), true, `${title} navigation must remain visible`); + await link.click(); + await assertSelectedView(page, route, title); + const widths = await page.evaluate(() => ({ + viewport: innerWidth, + document: document.documentElement.scrollWidth, + navigation: document.querySelector('.console-rail').scrollWidth, + navigationClient: document.querySelector('.console-rail').clientWidth, + })); + assert.ok(widths.document <= widths.viewport, `document overflows horizontally: ${JSON.stringify(widths)}`); + assert.ok(widths.navigation <= widths.navigationClient, `navigation requires horizontal scrolling: ${JSON.stringify(widths)}`); + } +}); + +test('SCN-console-view-drafts: navigation and refresh retain unsent edits and the explicit owner preview boundary', async (t) => { + const { page } = await openDemo(t, { width: 1280, height: 900 }); + const titleInput = page.locator('#task-create-form [name="title"]'); + await page.locator('.task-create-panel > summary').click(); + await titleInput.fill('Unsent route-change draft'); + await page.locator('.console-rail a[href="#flow-watch"]').click(); + const approval = page.locator('.approval-decision-form').first(); + await approval.locator('[name="decision"]').selectOption('approved'); + await approval.locator('[name="note"]').fill('Review remains explicit after navigation.'); + await approval.locator('[data-approval-preview]').click(); + await approval.locator('[data-approval-confirm]:visible').waitFor(); + const previewToken = await approval.getAttribute('data-preview-token'); + + await page.locator('.console-rail a[href="#work"]').click(); + await page.locator('#refresh-console').click(); + await page.locator('#live-refresh-status[data-generation="2"]').waitFor(); + assert.equal(await titleInput.inputValue(), 'Unsent route-change draft'); + + await page.locator('.console-rail a[href="#flow-watch"]').click(); + assert.equal(await approval.getAttribute('data-preview-token'), previewToken); + assert.equal(await approval.locator('[data-approval-confirm]').isVisible(), true); + assert.equal(await approval.locator('[name="decision"]').isDisabled(), true); + assert.equal(await approval.locator('[data-approval-edit]').isVisible(), true); + assert.match(await approval.locator('.approval-decision-status').innerText(), /bound to this request revision/); + assert.equal(await page.locator('#approval-request-count').innerText(), '1 open'); +}); From 5d43b2deb30c6fabfc2113a868d7acb351f6c603 Mon Sep 17 00:00:00 2001 From: thePR0M3TH3AN <adambrettmalin@protonmail.com> Date: Thu, 1 Oct 2026 06:58:12 -0400 Subject: [PATCH 28/51] TASK-conversation-console-workflow: preserve dashboard captures across views --- docs/TEST_INTEGRITY.md | 46 ++++++++++++++++ scripts/test-dashboard-demo.mjs | 93 +++++++++++++++++++++++++++++++++ 2 files changed, 139 insertions(+) diff --git a/docs/TEST_INTEGRITY.md b/docs/TEST_INTEGRITY.md index 028b5da..ef5a0fe 100644 --- a/docs/TEST_INTEGRITY.md +++ b/docs/TEST_INTEGRITY.md @@ -2559,3 +2559,49 @@ test_integrity_note: did_relax_any_assertion: false if_true_explain_spec_basis: "" ``` + +# Console dashboard navigation and preview freshness (2026-10-01) + +```yaml +test_integrity_note: + change_type: [new_tests, refactor_tests] + scenarios: + - id: SCN-dashboard-fragment-navigation-preserves-existing-captures + given: "The existing dashboard scenarios and eleven screenshot destinations run in their established order" + when: "The driver selects each target section's supported fragment immediately before its unchanged checks and captures" + then: "Each original assertion and capture executes against the selected view without changing capture order, viewport coverage, artifact destination, or artifact safeguards" + - id: SCN-dashboard-draft-preview-invalidates-on-newer-evidence + given: "A task priority preview is created from task evidence revision N" + when: "A separate confirmed sample action advances that task to authoritative revision N+1, the owner navigates away and back, and refresh loads the newer evidence" + then: "The revision N token, preview, and confirmation control are absent; only a newly generated preview bound to revision N+1 can be presented" + - id: SCN-console-view-navigation + given: "The Console has addressable work, fleet, evidence, and flow-watch views" + when: "A reader opens fragments, follows navigation, and uses browser Back and Forward" + then: "Exactly one matching view is visible with the matching title, accessible current-page link, and persistent project and freshness context" + - id: SCN-console-mobile-navigation + given: "The Console is rendered at a 390x844 viewport" + when: "Each supported destination is selected" + then: "Every navigation destination remains visible and the document and navigation have no horizontal overflow" + - id: SCN-console-view-drafts + given: "A task draft and an owner approval preview are present" + when: "The reader changes views and refreshes the sample Console" + then: "The unsent draft and same-revision preview remain available with their existing explicit owner confirmation boundary" + observable_outcomes: + - "Selected fragment, visible view, original assertion results, and the unchanged ordered screenshot set" + - "Revision N+1 displayed after refresh, with the old preview token and confirmation control unavailable" + - "A regenerated preview token and displayed revision bound to N+1" + - "No browser requests to live project APIs and no changes to tracked screenshot expectations" + determinism_controls: + - "The existing isolated sample Console, fixed Playwright clock, and fixed desktop/mobile viewports" + - "Newer evidence is introduced through the sample's supported preview/confirm API before an explicit refresh" + - "No network, live project mutation, retry, sleep, timeout, golden update, or direct fixture-source change" + anti_cheat_rationale: + prevents: + - "Capturing a view other than the one named by the scenario while retaining a passing screenshot call" + - "Reusing a revision N preview after authoritative task evidence advances to N+1" + - "Treating an unchanged preview on refresh as proof of stale-preview invalidation" + - "Passing because of changed screenshot expectations, weakened assertions, or bypassed artifact provenance" + relaxation: + did_relax_any_assertion: false + if_true_explain_spec_basis: "" +``` diff --git a/scripts/test-dashboard-demo.mjs b/scripts/test-dashboard-demo.mjs index 06b69dd..747c630 100644 --- a/scripts/test-dashboard-demo.mjs +++ b/scripts/test-dashboard-demo.mjs @@ -21,6 +21,20 @@ function screenshotPath(name) { return screenshotPaths[name]; } +async function selectView(page, view) { + const link = page.locator(`.console-rail a[href="#${view}"]`); + assert.equal(await link.count(), 1, `the ${view} view must have one supported fragment link`); + if (await link.getAttribute('aria-current') !== 'page') await link.click(); + await page.locator(`.console-workspace > [data-console-view="${view}"]`).waitFor({ state: 'visible' }); +} + +async function selectViewFor(page, selector) { + const view = await page.locator(selector).first().evaluate((element) => + element.closest('[data-console-view]')?.dataset.consoleView); + assert.ok(view, `${selector} must belong to a fragment-addressable view`); + await selectView(page, view); +} + const server = createConsoleServer(); server.listen(0, '127.0.0.1'); await once(server, 'listening'); @@ -43,20 +57,27 @@ try { const page = await popup; await page.waitForLoadState(); await page.locator('#project-name').filter({ hasText: 'Northstar' }).waitFor(); + await selectView(page, 'overview'); assert.equal(await page.title(), 'TORCH Dashboard'); assert.equal(await page.locator('.agent-row').count(), 6); assert.equal(await page.locator('.task-ticket').count(), 5); assert.equal(await page.getByRole('region', { name: 'Queue', exact: true }).locator('.task-ticket').count(), 2); assert.equal(await page.locator('#demo-banner').isVisible(), true); + await selectViewFor(page, '#operation-outcomes'); assert.match(await page.locator('#operation-outcomes').innerText(), /Outcome unknown — review required/); assert.equal(await page.locator('#operation-outcomes button').count(), 0); + await selectViewFor(page, '#operation-outcomes'); await page.locator('#operation-outcomes .check-evidence').last().locator('summary').click(); assert.match(await page.locator('#operation-outcomes').innerText(), /transient failure.*effects unknown/s); + await selectViewFor(page, '#operation-outcomes'); await page.locator('#operation-outcomes').screenshot({ path: screenshotPath('torch-dashboard-operation-outcomes.png') }); + await selectViewFor(page, '#activity-review'); await page.locator('#activity-review > summary').click(); assert.match(await page.locator('#activity-review').innerText(), /4 days without a named commit/); assert.match(await page.locator('#activity-review').innerText(), /waiting may be expected/); + await selectViewFor(page, '#activity-review'); await page.locator('#activity-review').screenshot({ path: screenshotPath('torch-dashboard-activity-review.png') }); + await selectViewFor(page, '#check-list'); assert.match(await page.locator('#check-list').innerText(), /Running — completion unconfirmed/); await page.locator('#check-list .check-evidence').filter({ hasText: 'interrupted-browser' }).locator('summary').click(); assert.match(await page.locator('#check-list').innerText(), /Abandoned — not qualified/); @@ -66,12 +87,16 @@ try { await page.locator('#check-list .check-evidence').filter({ hasText: 'recovery-scenario' }).locator('summary').click(); assert.match(await page.locator('#check-list').innerText(), /clockMoving.*true/s); assert.match(await page.locator('#check-list').innerText(), /not independent sensor truth/); + await selectViewFor(page, '#check-list'); await page.locator('#check-list').screenshot({ path: screenshotPath('torch-dashboard-check-evidence.png') }); + await selectViewFor(page, '#owner-briefing'); assert.match(await page.locator('#owner-briefing').innerText(), /Choose the project home layout/); assert.match(await page.locator('#owner-briefing').innerText(), /not independent live verification/); await page.locator('#owner-briefing .briefing-detail').first().locator('summary').click(); assert.match(await page.locator('#owner-briefing').innerText(), /Landed — not necessarily deployed/); + await selectViewFor(page, '#owner-briefing'); await page.locator('#owner-briefing').screenshot({ path: screenshotPath('torch-dashboard-owner-briefing-desktop.png') }); + await selectViewFor(page, '#attention-list'); assert.match(await page.locator('#attention-list').innerText(), /manager launch needs inspection/); await page.locator('#attention-list a[href="#manager-wakes"]').click(); assert.equal(await page.locator('#manager-wakes').isVisible(), true); @@ -80,6 +105,7 @@ try { assert.equal(await page.locator('#manager-wake-list button').count(), 0, 'uncertain launches must not offer automatic restart or unlocking'); const pilotPanel = page.locator('.organization-proposal').filter({ hasText: 'Coordination pilot' }).locator('.pilot-review-history'); + await selectViewFor(page, '.organization-proposal'); await pilotPanel.locator(':scope > summary').click(); assert.match(await pilotPanel.innerText(), /Recommendation: inconclusive/); assert.match(await pilotPanel.innerText(), /reviewer-reported, not independently verified/); @@ -106,11 +132,13 @@ try { await conclusion.locator('[data-review-confirm]').waitFor(); await conclusion.getByText('Exact proposal and evidence in this decision', { exact: true }).click(); assert.match(await conclusion.locator('[data-review-scope]').innerText(), /schedulesRetained/); + await selectViewFor(page, '[data-organization-review][data-type="hierarchy-conclusion"]'); await conclusion.screenshot({ path: screenshotPath('torch-dashboard-pilot-conclusion.png') }); await conclusion.locator('[data-review-confirm]').click(); await page.locator('#organization-action-status').filter({ hasText: 'recorded as reversed' }).waitFor(); assert.equal(await page.locator('.agent-row').count(), 6); + await selectViewFor(page, '.task-ticket'); const ticket = page.locator('.task-ticket').filter({ hasText: 'API-08' }); await ticket.locator('.priority-change > summary').click(); await ticket.locator('[name="priority"]').selectOption('urgent'); @@ -121,6 +149,7 @@ try { await ticket.locator('[data-priority-confirm]').click(); await ticket.locator('.priority-urgent').waitFor(); + await selectViewFor(page, '.owner-request-composer'); await page.locator('.owner-request-composer > summary').click(); await page.locator('#owner-request-recipient').selectOption('qa'); await page.locator('#owner-request-body').fill('Please review the home layout.'); @@ -129,6 +158,7 @@ try { await page.locator('[data-owner-request-confirm]').click(); await page.locator('#message-list .conversation-item').filter({ hasText: 'Please review the home layout.' }).waitFor(); + await selectViewFor(page, '.artifact-feedback-form'); const feedback = page.locator('.artifact-feedback-form').first(); await feedback.locator('textarea').fill('Give active work more room.'); await feedback.getByRole('button', { name: 'Review feedback' }).click(); @@ -136,6 +166,7 @@ try { await feedback.locator('[data-feedback-confirm]').click(); await page.locator('.artifact-feedback blockquote').filter({ hasText: 'Give active work more room.' }).waitFor(); + await selectViewFor(page, '.runtime-profile-tools'); await page.locator('.runtime-profile-tools > summary').click(); await page.locator('#runtime-profile-area').selectOption('interface'); await page.locator('#runtime-profile-runtime').selectOption('claude'); @@ -145,14 +176,17 @@ try { await page.locator('[data-runtime-profile-confirm]').click(); await page.locator('.agent-row').filter({ hasText: 'interface · claude / sonnet' }).waitFor(); + await selectViewFor(page, '.approval-decision-form'); await page.locator('.approval-decision-form [name="decision"]').selectOption('approved'); await page.locator('[data-approval-preview]').click(); await page.locator('[data-approval-confirm]').waitFor(); await page.locator('[data-approval-confirm]').click(); await page.getByText('No open approval requests.', { exact: true }).waitFor(); + await selectViewFor(page, '#owner-briefing'); assert.match(await page.locator('#owner-briefing').innerText(), /Choose the project home layout/, 'published briefing is historical even when live approval state changes'); + await selectViewFor(page, '.organization-review'); await page.locator('.organization-review > summary').click(); await page.locator('[data-organization-review] [name="action"]').selectOption('approve'); await page.locator('[data-review-preview]').click(); @@ -161,10 +195,15 @@ try { await page.locator('[data-review-confirm]').click(); await page.locator('#organization-action-status').filter({ hasText: 'recorded as approved' }).waitFor(); + await selectViewFor(page, '.pilot-review-history'); await pilotPanel.locator(':scope > summary').click(); + await selectViewFor(page, '.pilot-review-history'); await pilotPanel.screenshot({ path: screenshotPath('torch-dashboard-pilot-review.png') }); + await selectViewFor(page, '#manager-wakes'); await page.locator('#manager-wakes').screenshot({ path: screenshotPath('torch-dashboard-manager-wakes.png') }); + await selectView(page, 'overview'); await page.evaluate(() => scrollTo(0, 0)); + await selectView(page, 'overview'); await page.screenshot({ path: screenshotPath('torch-dashboard-demo-desktop.png') }); await page.setViewportSize({ width: 390, height: 844 }); // Let responsive styles and layout finish before measuring the new viewport. @@ -176,7 +215,9 @@ try { const bounds = element.getBoundingClientRect(); return { tag: element.tagName, id: element.id, className: element.className, right: bounds.right, width: bounds.width }; }).filter((element) => element.right > innerWidth + 1).slice(-30) })))); + await selectView(page, 'overview'); await page.screenshot({ path: screenshotPath('torch-dashboard-demo-mobile.png') }); + await selectView(page, 'owner-briefing'); await page.locator('.console-rail a[href="#owner-briefing"]').click(); const briefingHeading = await page.locator('#owner-briefing-title').boundingBox(); const stickyRail = await page.locator('.console-rail').boundingBox(); @@ -194,6 +235,7 @@ try { await livePage.clock.install({ time: new Date('2026-09-30T12:00:00Z') }); await livePage.goto(base + '/console.html?demo=1'); await livePage.locator('#live-refresh-status[data-generation="1"]').waitFor(); + await selectView(livePage, 'fleet'); for (const model of ['external-model-1', 'external-model-2']) { await livePage.evaluate(async (model) => { const payload = { areaId: document.querySelector('#runtime-profile-area').value, runtime: 'codex', model, reasoning: 'high' }; @@ -205,10 +247,13 @@ try { } await livePage.reload(); await livePage.locator('#live-refresh-status[data-generation="1"]').waitFor(); + await selectView(livePage, 'fleet'); await livePage.locator('.runtime-profile-tools > summary').click(); await livePage.locator('#runtime-profile-model').fill('owner-draft-model'); + await selectViewFor(livePage, '#task-create-form'); await livePage.locator('#task-create-form').locator('..').locator(':scope > summary').click(); await livePage.locator('#task-create-form [name="title"]').fill('My unfinished task'); + await selectViewFor(livePage, '.approval-decision-form'); await livePage.locator('.approval-decision-form [name="decision"]').selectOption('approved'); await livePage.locator('[data-approval-preview]').click(); await livePage.locator('[data-approval-confirm]').waitFor(); @@ -241,14 +286,62 @@ try { await livePage.locator('#live-refresh-status[data-generation="5"]').waitFor(); await livePage.clock.runFor(15_000); await livePage.locator('#live-refresh-status[data-generation="6"]').waitFor(); + await selectViewFor(livePage, '.approval-decision-form'); await livePage.locator('[data-approval-confirm]').click(); await livePage.locator('#approval-request-count').filter({ hasText: '0 open' }).waitFor(); assert.equal(await livePage.locator('#runtime-profile-model').inputValue(), 'owner-draft-model', 'completing an approval must not clear another form'); assert.equal(await livePage.locator('#task-create-form [name="title"]').inputValue(), 'My unfinished task'); await livePage.locator('#refresh-console').click(); assert.equal(await livePage.locator('#runtime-profile-model').inputValue(), 'owner-draft-model'); + await selectViewFor(livePage, '.approval-decision-form'); await livePage.screenshot({ path: screenshotPath('torch-dashboard-live-refresh.png') }); await livePage.close(); + + const stalePage = await context.newPage(); + await stalePage.clock.install({ time: new Date('2026-10-01T12:00:00.000Z') }); + await stalePage.goto(base + '/console.html?demo=1#work'); + await stalePage.locator('#live-refresh-status[data-generation="1"]').waitFor(); + await selectView(stalePage, 'work'); + const staleTicket = stalePage.locator('.task-ticket').filter({ hasText: 'API-08' }); + const staleForm = staleTicket.locator('.priority-change-form'); + const revisionN = Number(await staleForm.getAttribute('data-revision')); + await staleTicket.locator('.priority-change > summary').click(); + await staleForm.locator('[name="priority"]').selectOption('urgent'); + await staleForm.locator('[name="reason"]').fill('Review this change against the current task evidence.'); + await staleForm.getByRole('button', { name: 'Review change', exact: true }).click(); + await staleForm.locator('[data-priority-confirm]').waitFor(); + assert.equal(await staleForm.locator('[data-priority-preview]').locator('dd').nth(2).innerText(), String(revisionN)); + const staleToken = await staleForm.getAttribute('data-preview-token'); + const revisionN1 = await stalePage.evaluate(async (expectedRevision) => { + const path = '/api/backlog/tasks/API-08/priority'; + const change = { priority: 'low', reason: 'A separate confirmed sample change establishes newer task evidence.', expectedRevision }; + const preview = await globalThis.TorchConsoleDemo.request(`${path}/preview`, change); + const applied = await globalThis.TorchConsoleDemo.request(path, { ...change, token: preview.token, planHash: preview.planHash }); + return applied.task.revision; + }, revisionN); + assert.equal(revisionN1, revisionN + 1, 'new authoritative task evidence must advance from revision N to N+1'); + await selectView(stalePage, 'overview'); + await selectView(stalePage, 'work'); + await stalePage.locator('#refresh-console').click(); + await stalePage.locator('#live-refresh-status[data-generation="2"]').waitFor(); + const refreshedTicket = stalePage.locator('.task-ticket').filter({ hasText: 'API-08' }); + const refreshedForm = refreshedTicket.locator('.priority-change-form'); + assert.equal(Number(await refreshedForm.getAttribute('data-revision')), revisionN1); + assert.equal(await refreshedTicket.locator('.priority').textContent(), 'low'); + assert.equal(await refreshedForm.getAttribute('data-preview-token'), null, 'revision N preview token must be discarded'); + assert.equal(await refreshedForm.locator('[data-priority-preview]').isVisible(), false, + 'revision N preview must not remain presented after revision N+1 is refreshed'); + assert.equal(await refreshedForm.locator('[data-priority-confirm]').count(), 0, + 'the stale revision N preview cannot be confirmed as current'); + await refreshedTicket.locator('.priority-change > summary').click(); + await refreshedForm.locator('[name="priority"]').selectOption('urgent'); + await refreshedForm.locator('[name="reason"]').fill('Review again using the refreshed task evidence.'); + await refreshedForm.getByRole('button', { name: 'Review change', exact: true }).click(); + await refreshedForm.locator('[data-priority-confirm]').waitFor(); + assert.equal(await refreshedForm.locator('[data-priority-preview]').locator('dd').nth(2).innerText(), String(revisionN1)); + assert.notEqual(await refreshedForm.getAttribute('data-preview-token'), staleToken, + 'a current preview must be regenerated from revision N+1'); + await stalePage.close(); assert.deepEqual(errors, []); assert.deepEqual(apiRequests, [], 'demo must never contact live project APIs'); console.log('PASS: real Console demo; separate tab; priority, messages, feedback, profiles, approval and organization review; reset; mobile layout; zero live API calls.'); From a67a04d57f400782b01ba6087b9741fb0c54e21f Mon Sep 17 00:00:00 2001 From: thePR0M3TH3AN <adambrettmalin@protonmail.com> Date: Thu, 1 Oct 2026 07:01:58 -0400 Subject: [PATCH 29/51] TASK-conversation-console-workflow: preserve startup title check --- scripts/test-dashboard-demo.mjs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/scripts/test-dashboard-demo.mjs b/scripts/test-dashboard-demo.mjs index 747c630..eb975ff 100644 --- a/scripts/test-dashboard-demo.mjs +++ b/scripts/test-dashboard-demo.mjs @@ -57,8 +57,8 @@ try { const page = await popup; await page.waitForLoadState(); await page.locator('#project-name').filter({ hasText: 'Northstar' }).waitFor(); - await selectView(page, 'overview'); assert.equal(await page.title(), 'TORCH Dashboard'); + await selectView(page, 'work'); assert.equal(await page.locator('.agent-row').count(), 6); assert.equal(await page.locator('.task-ticket').count(), 5); assert.equal(await page.getByRole('region', { name: 'Queue', exact: true }).locator('.task-ticket').count(), 2); @@ -66,7 +66,6 @@ try { await selectViewFor(page, '#operation-outcomes'); assert.match(await page.locator('#operation-outcomes').innerText(), /Outcome unknown — review required/); assert.equal(await page.locator('#operation-outcomes button').count(), 0); - await selectViewFor(page, '#operation-outcomes'); await page.locator('#operation-outcomes .check-evidence').last().locator('summary').click(); assert.match(await page.locator('#operation-outcomes').innerText(), /transient failure.*effects unknown/s); await selectViewFor(page, '#operation-outcomes'); From ffff333f482e7c353300fd3b2c7ddf1ff6810f8b Mon Sep 17 00:00:00 2001 From: thePR0M3TH3AN <adambrettmalin@protonmail.com> Date: Thu, 1 Oct 2026 07:37:07 -0400 Subject: [PATCH 30/51] TASK-conversation-console-workflow: refresh stale previews and focus deep links --- docs/TEST_INTEGRITY.md | 24 ++++- scripts/test-dashboard-demo.mjs | 18 +++- site/console.js | 44 +++++++- test/fleet/console-view-navigation.test.mjs | 111 +++++++++++++++++++- 4 files changed, 187 insertions(+), 10 deletions(-) diff --git a/docs/TEST_INTEGRITY.md b/docs/TEST_INTEGRITY.md index ef5a0fe..5c10d5a 100644 --- a/docs/TEST_INTEGRITY.md +++ b/docs/TEST_INTEGRITY.md @@ -2570,10 +2570,14 @@ test_integrity_note: given: "The existing dashboard scenarios and eleven screenshot destinations run in their established order" when: "The driver selects each target section's supported fragment immediately before its unchanged checks and captures" then: "Each original assertion and capture executes against the selected view without changing capture order, viewport coverage, artifact destination, or artifact safeguards" - - id: SCN-dashboard-draft-preview-invalidates-on-newer-evidence - given: "A task priority preview is created from task evidence revision N" - when: "A separate confirmed sample action advances that task to authoritative revision N+1, the owner navigates away and back, and refresh loads the newer evidence" - then: "The revision N token, preview, and confirmation control are absent; only a newly generated preview bound to revision N+1 can be presented" + - id: SCN-console-priority-preview-invalidates-on-newer-evidence + given: "A task priority preview and unsent priority and reason values are created from task evidence revision N" + when: "A separate confirmed sample API action advances that task to authoritative revision N+1 and Console refresh loads the newer evidence" + then: "The revision N token, preview, and confirmation control are absent; revision N+1 is visible, the unsent values remain intact and editable, and only a newly generated preview bound to N+1 can be presented" + - id: SCN-console-current-preview-and-draft-survive-unchanged-refresh + given: "A task has an active priority preview and unsent priority and reason values bound to its current evidence revision" + when: "Console refresh returns the same task revision" + then: "The preview token, review panel, confirmation boundary, and unsent field values remain available unchanged" - id: SCN-console-view-navigation given: "The Console has addressable work, fleet, evidence, and flow-watch views" when: "A reader opens fragments, follows navigation, and uses browser Back and Forward" @@ -2582,6 +2586,14 @@ test_integrity_note: given: "The Console is rendered at a 390x844 viewport" when: "Each supported destination is selected" then: "Every navigation destination remains visible and the document and navigation have no horizontal overflow" + - id: SCN-console-view-title-mapping + given: "The Console loads Overview and a reader selects each other supported view" + when: "The reader returns to Overview after visiting contextual views" + then: "Overview has the exact title TORCH Dashboard on initial and return navigation; all other views keep their exact contextual titles" + - id: SCN-console-secondary-deeplink-focus-and-history + given: "The Console is loaded at the organization-proposals or approval-request-list fragment" + when: "The reader opens either direct link and uses browser Back and Forward" + then: "Exactly the matching view is selected and the actual secondary target is focused inside the viewport" - id: SCN-console-view-drafts given: "A task draft and an owner approval preview are present" when: "The reader changes views and refreshes the sample Console" @@ -2589,11 +2601,15 @@ test_integrity_note: observable_outcomes: - "Selected fragment, visible view, original assertion results, and the unchanged ordered screenshot set" - "Revision N+1 displayed after refresh, with the old preview token and confirmation control unavailable" + - "Unsent priority and reason values retained and editable after newer evidence invalidates the old preview" + - "An unchanged current-revision preview, confirmation boundary, and draft retained after refresh" - "A regenerated preview token and displayed revision bound to N+1" + - "Exact Overview and contextual view titles, plus focused in-viewport secondary targets across direct loads and browser history" - "No browser requests to live project APIs and no changes to tracked screenshot expectations" determinism_controls: - "The existing isolated sample Console, fixed Playwright clock, and fixed desktop/mobile viewports" - "Newer evidence is introduced through the sample's supported preview/confirm API before an explicit refresh" + - "The browser test advances only the isolated sample API; it never submits the priority form or mutates a live project" - "No network, live project mutation, retry, sleep, timeout, golden update, or direct fixture-source change" anti_cheat_rationale: prevents: diff --git a/scripts/test-dashboard-demo.mjs b/scripts/test-dashboard-demo.mjs index eb975ff..770753a 100644 --- a/scripts/test-dashboard-demo.mjs +++ b/scripts/test-dashboard-demo.mjs @@ -332,14 +332,28 @@ try { 'revision N preview must not remain presented after revision N+1 is refreshed'); assert.equal(await refreshedForm.locator('[data-priority-confirm]').count(), 0, 'the stale revision N preview cannot be confirmed as current'); + assert.equal(await refreshedForm.locator('[name="priority"]').inputValue(), 'urgent', 'the unsent priority choice must survive invalidation'); + assert.equal(await refreshedForm.locator('[name="reason"]').inputValue(), 'Review this change against the current task evidence.', + 'the unsent reason must survive invalidation'); + assert.equal(await refreshedForm.locator('[name="priority"]').isDisabled(), false, 'the preserved priority choice remains editable'); + assert.equal(await refreshedForm.locator('[name="reason"]').isDisabled(), false, 'the preserved reason remains editable'); + assert.match(await refreshedForm.locator('.priority-change-status').innerText(), new RegExp(`revision ${revisionN1}`), + 'the visible status identifies current task evidence'); await refreshedTicket.locator('.priority-change > summary').click(); - await refreshedForm.locator('[name="priority"]').selectOption('urgent'); - await refreshedForm.locator('[name="reason"]').fill('Review again using the refreshed task evidence.'); await refreshedForm.getByRole('button', { name: 'Review change', exact: true }).click(); await refreshedForm.locator('[data-priority-confirm]').waitFor(); assert.equal(await refreshedForm.locator('[data-priority-preview]').locator('dd').nth(2).innerText(), String(revisionN1)); assert.notEqual(await refreshedForm.getAttribute('data-preview-token'), staleToken, 'a current preview must be regenerated from revision N+1'); + const currentToken = await refreshedForm.getAttribute('data-preview-token'); + await stalePage.locator('#refresh-console').click(); + await stalePage.locator('#live-refresh-status[data-generation="3"]').waitFor(); + assert.equal(await refreshedForm.getAttribute('data-preview-token'), currentToken, + 'unchanged current evidence must retain its active preview'); + assert.equal(await refreshedForm.locator('[data-priority-preview]').isVisible(), true); + assert.equal(await refreshedForm.locator('[data-priority-confirm]').isVisible(), true); + assert.equal(await refreshedForm.locator('[name="priority"]').inputValue(), 'urgent'); + assert.equal(await refreshedForm.locator('[name="reason"]').inputValue(), 'Review this change against the current task evidence.'); await stalePage.close(); assert.deepEqual(errors, []); assert.deepEqual(apiRequests, [], 'demo must never contact live project APIs'); diff --git a/site/console.js b/site/console.js index fc016cf..db52b95 100644 --- a/site/console.js +++ b/site/console.js @@ -45,15 +45,19 @@ function installConsoleViewRouting() { }); const workspace = document.querySelector('.console-workspace'); if (workspace) workspace.dataset.currentView = view; - document.title = `${definition.title} | TORCH Local Fleet Console`; + document.title = view === 'overview' ? 'TORCH Dashboard' : `${definition.title} | TORCH Local Fleet Console`; const announcement = document.querySelector('#console-view-status'); if (announcement) announcement.textContent = `Viewing ${definition.title}.`; if (focus) { const targetId = decodeHash(hash); const target = document.getElementById(targetId); - if (target && target.dataset.consoleView !== view && target.closest('[data-console-view]')) { - target.scrollIntoView?.({ block: 'start' }); + const targetView = target?.closest('[data-console-view]')?.dataset.consoleView; + if (target && targetId !== view && targetView === view) { + if (!target.hasAttribute('tabindex') && !target.matches('a[href], button, input, select, textarea, summary')) { + target.tabIndex = -1; + } + target.scrollIntoView?.({ block: 'start', behavior: 'instant' }); target.focus?.({ preventScroll: true }); } else { const labelledBy = visible[0]?.getAttribute('aria-labelledby'); @@ -92,6 +96,39 @@ refreshProtection.remember(); let renderingSnapshot = false; let heldPanels = 0; +function invalidateStalePriorityPreviews(tasks = []) { + const currentById = new Map(tasks.map((task) => [task.id, task])); + for (const form of document.querySelectorAll('.priority-change-form[data-preview-token]')) { + const task = currentById.get(form.dataset.taskId); + const currentRevision = Number(task?.revision); + const previewRevision = Number(form.dataset.revision); + if (!task || !Number.isSafeInteger(currentRevision) || currentRevision === previewRevision) continue; + + const ticket = form.closest('.task-ticket'); + if (!ticket) continue; + const priority = form.querySelector('[name="priority"]')?.value; + const reason = form.querySelector('[name="reason"]')?.value; + const openDetails = new Set([...ticket.querySelectorAll('details[open]')] + .map((details) => details.querySelector(':scope > summary')?.textContent)); + const template = document.createElement('template'); + template.innerHTML = taskCard(task, currentBacklogHealth).trim(); + const refreshedTicket = template.content.firstElementChild; + if (!refreshedTicket) continue; + const refreshedForm = refreshedTicket.querySelector('.priority-change-form'); + if (refreshedForm) { + const priorityField = refreshedForm.querySelector('[name="priority"]'); + const reasonField = refreshedForm.querySelector('[name="reason"]'); + if (priorityField && priority) priorityField.value = priority; + if (reasonField) reasonField.value = reason ?? ''; + priorityStatus(refreshedForm, `Task evidence advanced to revision ${currentRevision}. The older preview was cleared; review the current task before previewing again.`); + } + refreshedTicket.querySelectorAll('details').forEach((details) => { + if (openDetails.has(details.querySelector(':scope > summary')?.textContent)) details.open = true; + }); + ticket.replaceWith(refreshedTicket); + } +} + const escapeHtml = (value) => { const element = document.createElement('span'); element.textContent = value ?? ''; @@ -1044,6 +1081,7 @@ const refreshScheduler = globalThis.TorchLiveRefresh.createScheduler({ heldPanels = 0; renderingSnapshot = true; try { render(snapshot); } finally { renderingSnapshot = false; } + invalidateStalePriorityPreviews(snapshot.backlog ?? []); refreshProtection.remember({ preserve: editedBeforeRender }); $('#console-error').hidden = true; const status = $('#live-refresh-status'); diff --git a/test/fleet/console-view-navigation.test.mjs b/test/fleet/console-view-navigation.test.mjs index 9d8221d..caae978 100644 --- a/test/fleet/console-view-navigation.test.mjs +++ b/test/fleet/console-view-navigation.test.mjs @@ -39,12 +39,121 @@ async function assertSelectedView(page, route, title) { const selected = await page.locator('.console-workspace > [data-console-view]:not([hidden])').evaluateAll((sections) => [...new Set(sections.map((section) => section.dataset.consoleView))]); assert.deepEqual(selected, [route], `only the ${route} view should be visible`); - assert.equal(await page.title(), `${title} | TORCH Local Fleet Console`); + assert.equal(await page.title(), route === 'overview' ? 'TORCH Dashboard' : `${title} | TORCH Local Fleet Console`); assert.equal(await page.locator(`.console-rail a[aria-current="page"][href="#${route}"]`).count(), 1); assert.equal(await page.locator('#project-name').isVisible(), true); assert.equal(await page.locator('#snapshot-time').isVisible(), true); } +test('SCN-console-view-title-mapping: Overview retains its dashboard title while other selected views stay contextual', async (t) => { + const { page } = await openDemo(t, { width: 1280, height: 900 }); + const base = `http://127.0.0.1:${new URL(page.url()).port}/console?demo=1`; + await page.goto(`${base}#overview`); + await page.locator('#live-refresh-status[data-generation="1"]').waitFor(); + await assertSelectedView(page, 'overview', 'Overview'); + + for (const [route, title] of views.filter(([route]) => route !== 'overview')) { + await page.locator(`.console-rail a[href="#${route}"]`).click(); + await assertSelectedView(page, route, title); + } + await page.locator('.console-rail a[href="#overview"]').click(); + await assertSelectedView(page, 'overview', 'Overview'); +}); + +test('SCN-console-secondary-deeplink-focus-and-history: direct fragments and history land on the actual target', async (t) => { + const { page } = await openDemo(t, { width: 390, height: 844 }); + const base = `http://127.0.0.1:${new URL(page.url()).port}/console?demo=1`; + const assertTarget = async (id, route, title) => { + await assertSelectedView(page, route, title); + const state = await page.locator(`#${id}`).evaluate((target) => { + const bounds = target.getBoundingClientRect(); + return { + activeId: document.activeElement?.id, + top: bounds.top, + bottom: bounds.bottom, + height: innerHeight, + }; + }); + assert.equal(state.activeId, id, `the ${id} target must receive focus`); + assert.ok(state.top < state.height && state.bottom > 0, `${id} must intersect the viewport: ${JSON.stringify(state)}`); + }; + + await page.goto(`${base}#organization-proposals`); + await page.locator('#live-refresh-status[data-generation="1"]').waitFor(); + await assertTarget('organization-proposals', 'organization', 'Organization'); + await page.goto(`${base}#approval-request-list`); + await page.locator('#live-refresh-status[data-generation="1"]').waitFor(); + await assertTarget('approval-request-list', 'flow-watch', 'Flow watch'); + await page.goBack(); + await assertTarget('organization-proposals', 'organization', 'Organization'); + await page.goForward(); + await assertTarget('approval-request-list', 'flow-watch', 'Flow watch'); +}); + +test('SCN-console-priority-preview-invalidates-on-newer-evidence: refresh preserves editable drafts and rejects the old preview', async (t) => { + const { page } = await openDemo(t, { width: 1280, height: 900 }); + const form = page.locator('.priority-change-form[data-task-id="API-08"]'); + const ticket = form.locator('xpath=../..'); + await ticket.locator('.priority-change > summary').click(); + await form.locator('[name="priority"]').selectOption('urgent'); + await form.locator('[name="reason"]').fill('Preserve this unsent explanation across a newer task revision.'); + await form.getByRole('button', { name: 'Review change', exact: true }).click(); + await form.locator('[data-priority-confirm]').waitFor(); + const revisionN = Number(await form.getAttribute('data-revision')); + const staleToken = await form.getAttribute('data-preview-token'); + assert.equal(await form.locator('[data-priority-preview] dd').nth(2).innerText(), String(revisionN)); + + const revisionN1 = await page.evaluate(async (expectedRevision) => { + const path = '/api/backlog/tasks/API-08/priority'; + const change = { priority: 'low', reason: 'Separate normal sample API action advances authoritative evidence.', expectedRevision }; + const preview = await globalThis.TorchConsoleDemo.request(`${path}/preview`, change); + const applied = await globalThis.TorchConsoleDemo.request(path, { ...change, token: preview.token, planHash: preview.planHash }); + return applied.task.revision; + }, revisionN); + assert.equal(revisionN1, revisionN + 1); + + await page.locator('#refresh-console').click(); + await page.locator('#live-refresh-status[data-generation="2"]').waitFor(); + assert.equal(Number(await form.getAttribute('data-revision')), revisionN1); + assert.equal(await ticket.locator('.priority').textContent(), 'low'); + assert.equal(await form.getAttribute('data-preview-token'), null); + assert.equal(await form.locator('[data-priority-preview]').isVisible(), false); + assert.equal(await form.locator('[data-priority-confirm]').count(), 0); + assert.equal(await form.locator('[name="priority"]').inputValue(), 'urgent'); + assert.equal(await form.locator('[name="reason"]').inputValue(), 'Preserve this unsent explanation across a newer task revision.'); + assert.equal(await form.locator('[name="priority"]').isDisabled(), false); + assert.equal(await form.locator('[name="reason"]').isDisabled(), false); + assert.match(await form.locator('.priority-change-status').innerText(), new RegExp(`revision ${revisionN1}`)); + + await form.getByRole('button', { name: 'Review change', exact: true }).click(); + await form.locator('[data-priority-confirm]').waitFor(); + const currentToken = await form.getAttribute('data-preview-token'); + assert.notEqual(currentToken, staleToken); + assert.equal(await form.locator('[data-priority-preview] dd').nth(2).innerText(), String(revisionN1)); +}); + +test('SCN-console-current-preview-and-draft-survive-unchanged-refresh: a current preview and its fields remain intact', async (t) => { + const { page } = await openDemo(t, { width: 1280, height: 900 }); + const form = page.locator('.priority-change-form[data-task-id="API-08"]'); + const ticket = form.locator('xpath=../..'); + await ticket.locator('.priority-change > summary').click(); + await form.locator('[name="priority"]').selectOption('urgent'); + await form.locator('[name="reason"]').fill('Keep this current unsent explanation after an unchanged refresh.'); + await form.getByRole('button', { name: 'Review change', exact: true }).click(); + await form.locator('[data-priority-confirm]').waitFor(); + const revision = await form.getAttribute('data-revision'); + const token = await form.getAttribute('data-preview-token'); + + await page.locator('#refresh-console').click(); + await page.locator('#live-refresh-status[data-generation="2"]').waitFor(); + assert.equal(await form.getAttribute('data-revision'), revision); + assert.equal(await form.getAttribute('data-preview-token'), token); + assert.equal(await form.locator('[data-priority-preview]').isVisible(), true); + assert.equal(await form.locator('[data-priority-confirm]').isVisible(), true); + assert.equal(await form.locator('[name="priority"]').inputValue(), 'urgent'); + assert.equal(await form.locator('[name="reason"]').inputValue(), 'Keep this current unsent explanation after an unchanged refresh.'); +}); + test('SCN-console-view-navigation: fragments, direct loads, Back and Forward select one addressable view', async (t) => { const { page } = await openDemo(t, { width: 1280, height: 900 }); await assertSelectedView(page, 'work', 'Work'); From 0747b35341642e967fa75c4cd5ddcf8e2259ac2f Mon Sep 17 00:00:00 2001 From: thePR0M3TH3AN <adambrettmalin@protonmail.com> Date: Thu, 1 Oct 2026 07:49:05 -0400 Subject: [PATCH 31/51] TASK-conversation-console-workflow: preserve drafts after preview invalidation --- docs/TEST_INTEGRITY.md | 5 +-- scripts/test-dashboard-demo.mjs | 15 ++++++++- site/console.js | 37 ++++++++++----------- test/fleet/console-view-navigation.test.mjs | 14 ++++++++ 4 files changed, 49 insertions(+), 22 deletions(-) diff --git a/docs/TEST_INTEGRITY.md b/docs/TEST_INTEGRITY.md index 5c10d5a..12aa8aa 100644 --- a/docs/TEST_INTEGRITY.md +++ b/docs/TEST_INTEGRITY.md @@ -2572,8 +2572,8 @@ test_integrity_note: then: "Each original assertion and capture executes against the selected view without changing capture order, viewport coverage, artifact destination, or artifact safeguards" - id: SCN-console-priority-preview-invalidates-on-newer-evidence given: "A task priority preview and unsent priority and reason values are created from task evidence revision N" - when: "A separate confirmed sample API action advances that task to authoritative revision N+1 and Console refresh loads the newer evidence" - then: "The revision N token, preview, and confirmation control are absent; revision N+1 is visible, the unsent values remain intact and editable, and only a newly generated preview bound to N+1 can be presented" + when: "A separate confirmed sample API action advances that task to authoritative revision N+1, then the reader refreshes again after navigating away and back" + then: "The revision N token, preview, and confirmation control remain absent; revision N+1 is visible, the unsent values remain intact and editable across both refreshes, and a new preview is bound to N+1" - id: SCN-console-current-preview-and-draft-survive-unchanged-refresh given: "A task has an active priority preview and unsent priority and reason values bound to its current evidence revision" when: "Console refresh returns the same task revision" @@ -2602,6 +2602,7 @@ test_integrity_note: - "Selected fragment, visible view, original assertion results, and the unchanged ordered screenshot set" - "Revision N+1 displayed after refresh, with the old preview token and confirmation control unavailable" - "Unsent priority and reason values retained and editable after newer evidence invalidates the old preview" + - "The same draft remains dirty and intact after another unchanged refresh and route transition, with the old token and confirmation control still absent" - "An unchanged current-revision preview, confirmation boundary, and draft retained after refresh" - "A regenerated preview token and displayed revision bound to N+1" - "Exact Overview and contextual view titles, plus focused in-viewport secondary targets across direct loads and browser history" diff --git a/scripts/test-dashboard-demo.mjs b/scripts/test-dashboard-demo.mjs index 770753a..d6ec93c 100644 --- a/scripts/test-dashboard-demo.mjs +++ b/scripts/test-dashboard-demo.mjs @@ -339,6 +339,19 @@ try { assert.equal(await refreshedForm.locator('[name="reason"]').isDisabled(), false, 'the preserved reason remains editable'); assert.match(await refreshedForm.locator('.priority-change-status').innerText(), new RegExp(`revision ${revisionN1}`), 'the visible status identifies current task evidence'); + await selectView(stalePage, 'overview'); + await selectView(stalePage, 'work'); + await stalePage.locator('#refresh-console').click(); + await stalePage.locator('#live-refresh-status[data-generation="3"]').waitFor(); + assert.equal(Number(await refreshedForm.getAttribute('data-revision')), revisionN1); + assert.equal(await refreshedTicket.locator('.priority').textContent(), 'low'); + assert.equal(await refreshedForm.getAttribute('data-preview-token'), null); + assert.equal(await refreshedForm.locator('[data-priority-preview]').isVisible(), false); + assert.equal(await refreshedForm.locator('[data-priority-confirm]').count(), 0); + assert.equal(await refreshedForm.locator('[name="priority"]').inputValue(), 'urgent'); + assert.equal(await refreshedForm.locator('[name="reason"]').inputValue(), 'Review this change against the current task evidence.'); + assert.equal(await refreshedForm.locator('[name="priority"]').isDisabled(), false); + assert.equal(await refreshedForm.locator('[name="reason"]').isDisabled(), false); await refreshedTicket.locator('.priority-change > summary').click(); await refreshedForm.getByRole('button', { name: 'Review change', exact: true }).click(); await refreshedForm.locator('[data-priority-confirm]').waitFor(); @@ -347,7 +360,7 @@ try { 'a current preview must be regenerated from revision N+1'); const currentToken = await refreshedForm.getAttribute('data-preview-token'); await stalePage.locator('#refresh-console').click(); - await stalePage.locator('#live-refresh-status[data-generation="3"]').waitFor(); + await stalePage.locator('#live-refresh-status[data-generation="4"]').waitFor(); assert.equal(await refreshedForm.getAttribute('data-preview-token'), currentToken, 'unchanged current evidence must retain its active preview'); assert.equal(await refreshedForm.locator('[data-priority-preview]').isVisible(), true); diff --git a/site/console.js b/site/console.js index db52b95..f93a194 100644 --- a/site/console.js +++ b/site/console.js @@ -106,26 +106,25 @@ function invalidateStalePriorityPreviews(tasks = []) { const ticket = form.closest('.task-ticket'); if (!ticket) continue; - const priority = form.querySelector('[name="priority"]')?.value; - const reason = form.querySelector('[name="reason"]')?.value; - const openDetails = new Set([...ticket.querySelectorAll('details[open]')] - .map((details) => details.querySelector(':scope > summary')?.textContent)); - const template = document.createElement('template'); - template.innerHTML = taskCard(task, currentBacklogHealth).trim(); - const refreshedTicket = template.content.firstElementChild; - if (!refreshedTicket) continue; - const refreshedForm = refreshedTicket.querySelector('.priority-change-form'); - if (refreshedForm) { - const priorityField = refreshedForm.querySelector('[name="priority"]'); - const reasonField = refreshedForm.querySelector('[name="reason"]'); - if (priorityField && priority) priorityField.value = priority; - if (reasonField) reasonField.value = reason ?? ''; - priorityStatus(refreshedForm, `Task evidence advanced to revision ${currentRevision}. The older preview was cleared; review the current task before previewing again.`); + const priority = task.priority ?? 'normal'; + const priorityBadge = ticket.querySelector('.ticket-topline .priority'); + if (priorityBadge) { + priorityBadge.className = `priority priority-${escapeHtml(priority)}`; + priorityBadge.textContent = priority; } - refreshedTicket.querySelectorAll('details').forEach((details) => { - if (openDetails.has(details.querySelector(':scope > summary')?.textContent)) details.open = true; - }); - ticket.replaceWith(refreshedTicket); + form.dataset.revision = String(currentRevision); + delete form.dataset.previewToken; + delete form.dataset.planHash; + const priorityField = form.querySelector('[name="priority"]'); + const reasonField = form.querySelector('[name="reason"]'); + if (priorityField) priorityField.disabled = false; + if (reasonField) reasonField.disabled = false; + const preview = form.querySelector('[data-priority-preview]'); + if (preview) { + preview.replaceChildren(); + preview.hidden = true; + } + priorityStatus(form, `Task evidence advanced to revision ${currentRevision}. The older preview was cleared; review the current task before previewing again.`); } } diff --git a/test/fleet/console-view-navigation.test.mjs b/test/fleet/console-view-navigation.test.mjs index caae978..96d216a 100644 --- a/test/fleet/console-view-navigation.test.mjs +++ b/test/fleet/console-view-navigation.test.mjs @@ -125,6 +125,20 @@ test('SCN-console-priority-preview-invalidates-on-newer-evidence: refresh preser assert.equal(await form.locator('[name="reason"]').isDisabled(), false); assert.match(await form.locator('.priority-change-status').innerText(), new RegExp(`revision ${revisionN1}`)); + await page.locator('.console-rail a[href="#overview"]').click(); + await page.locator('.console-rail a[href="#work"]').click(); + await page.locator('#refresh-console').click(); + await page.locator('#live-refresh-status[data-generation="3"]').waitFor(); + assert.equal(Number(await form.getAttribute('data-revision')), revisionN1); + assert.equal(await ticket.locator('.priority').textContent(), 'low'); + assert.equal(await form.getAttribute('data-preview-token'), null); + assert.equal(await form.locator('[data-priority-preview]').isVisible(), false); + assert.equal(await form.locator('[data-priority-confirm]').count(), 0); + assert.equal(await form.locator('[name="priority"]').inputValue(), 'urgent'); + assert.equal(await form.locator('[name="reason"]').inputValue(), 'Preserve this unsent explanation across a newer task revision.'); + assert.equal(await form.locator('[name="priority"]').isDisabled(), false); + assert.equal(await form.locator('[name="reason"]').isDisabled(), false); + await form.getByRole('button', { name: 'Review change', exact: true }).click(); await form.locator('[data-priority-confirm]').waitFor(); const currentToken = await form.getAttribute('data-preview-token'); From 8916038215f7d4e46d0616ba4e7143575aadf70c Mon Sep 17 00:00:00 2001 From: thePR0M3TH3AN <adambrettmalin@protonmail.com> Date: Thu, 1 Oct 2026 07:55:37 -0400 Subject: [PATCH 32/51] TASK-conversation-console-workflow: verify current preview after repeated refresh --- docs/TEST_INTEGRITY.md | 2 +- scripts/test-dashboard-demo.mjs | 43 +++++++++++---------- test/fleet/console-view-navigation.test.mjs | 36 ++++++++++------- 3 files changed, 47 insertions(+), 34 deletions(-) diff --git a/docs/TEST_INTEGRITY.md b/docs/TEST_INTEGRITY.md index 12aa8aa..2236954 100644 --- a/docs/TEST_INTEGRITY.md +++ b/docs/TEST_INTEGRITY.md @@ -2573,7 +2573,7 @@ test_integrity_note: - id: SCN-console-priority-preview-invalidates-on-newer-evidence given: "A task priority preview and unsent priority and reason values are created from task evidence revision N" when: "A separate confirmed sample API action advances that task to authoritative revision N+1, then the reader refreshes again after navigating away and back" - then: "The revision N token, preview, and confirmation control remain absent; revision N+1 is visible, the unsent values remain intact and editable across both refreshes, and a new preview is bound to N+1" + then: "The revision N token, preview, and confirmation control remain absent; revision N+1 is visible, the unsent values remain intact and editable across both refreshes, a new preview is bound to N+1, and that current preview survives another unchanged refresh" - id: SCN-console-current-preview-and-draft-survive-unchanged-refresh given: "A task has an active priority preview and unsent priority and reason values bound to its current evidence revision" when: "Console refresh returns the same task revision" diff --git a/scripts/test-dashboard-demo.mjs b/scripts/test-dashboard-demo.mjs index d6ec93c..a54771c 100644 --- a/scripts/test-dashboard-demo.mjs +++ b/scripts/test-dashboard-demo.mjs @@ -343,30 +343,33 @@ try { await selectView(stalePage, 'work'); await stalePage.locator('#refresh-console').click(); await stalePage.locator('#live-refresh-status[data-generation="3"]').waitFor(); - assert.equal(Number(await refreshedForm.getAttribute('data-revision')), revisionN1); - assert.equal(await refreshedTicket.locator('.priority').textContent(), 'low'); - assert.equal(await refreshedForm.getAttribute('data-preview-token'), null); - assert.equal(await refreshedForm.locator('[data-priority-preview]').isVisible(), false); - assert.equal(await refreshedForm.locator('[data-priority-confirm]').count(), 0); - assert.equal(await refreshedForm.locator('[name="priority"]').inputValue(), 'urgent'); - assert.equal(await refreshedForm.locator('[name="reason"]').inputValue(), 'Review this change against the current task evidence.'); - assert.equal(await refreshedForm.locator('[name="priority"]').isDisabled(), false); - assert.equal(await refreshedForm.locator('[name="reason"]').isDisabled(), false); - await refreshedTicket.locator('.priority-change > summary').click(); - await refreshedForm.getByRole('button', { name: 'Review change', exact: true }).click(); - await refreshedForm.locator('[data-priority-confirm]').waitFor(); - assert.equal(await refreshedForm.locator('[data-priority-preview]').locator('dd').nth(2).innerText(), String(revisionN1)); - assert.notEqual(await refreshedForm.getAttribute('data-preview-token'), staleToken, + const preservedForm = stalePage.locator('.priority-change-form[data-task-id="API-08"]'); + const preservedTicket = preservedForm.locator('xpath=../..'); + assert.equal(Number(await preservedForm.getAttribute('data-revision')), revisionN1); + assert.equal(await preservedTicket.locator('.priority').textContent(), 'low'); + assert.equal(await preservedForm.getAttribute('data-preview-token'), null); + assert.equal(await preservedForm.locator('[data-priority-preview]').isVisible(), false); + assert.equal(await preservedForm.locator('[data-priority-confirm]').count(), 0); + assert.equal(await preservedForm.locator('[name="priority"]').inputValue(), 'urgent'); + assert.equal(await preservedForm.locator('[name="reason"]').inputValue(), 'Review this change against the current task evidence.'); + assert.equal(await preservedForm.locator('[name="priority"]').isDisabled(), false); + assert.equal(await preservedForm.locator('[name="reason"]').isDisabled(), false); + await preservedTicket.locator('.priority-change > summary').click(); + await preservedForm.getByRole('button', { name: 'Review change', exact: true }).click(); + await preservedForm.locator('[data-priority-confirm]').waitFor(); + assert.equal(await preservedForm.locator('[data-priority-preview]').locator('dd').nth(2).innerText(), String(revisionN1)); + assert.notEqual(await preservedForm.getAttribute('data-preview-token'), staleToken, 'a current preview must be regenerated from revision N+1'); - const currentToken = await refreshedForm.getAttribute('data-preview-token'); + const currentToken = await preservedForm.getAttribute('data-preview-token'); await stalePage.locator('#refresh-console').click(); await stalePage.locator('#live-refresh-status[data-generation="4"]').waitFor(); - assert.equal(await refreshedForm.getAttribute('data-preview-token'), currentToken, + const currentForm = stalePage.locator('.priority-change-form[data-task-id="API-08"]'); + assert.equal(await currentForm.getAttribute('data-preview-token'), currentToken, 'unchanged current evidence must retain its active preview'); - assert.equal(await refreshedForm.locator('[data-priority-preview]').isVisible(), true); - assert.equal(await refreshedForm.locator('[data-priority-confirm]').isVisible(), true); - assert.equal(await refreshedForm.locator('[name="priority"]').inputValue(), 'urgent'); - assert.equal(await refreshedForm.locator('[name="reason"]').inputValue(), 'Review this change against the current task evidence.'); + assert.equal(await currentForm.locator('[data-priority-preview]').isVisible(), true); + assert.equal(await currentForm.locator('[data-priority-confirm]').isVisible(), true); + assert.equal(await currentForm.locator('[name="priority"]').inputValue(), 'urgent'); + assert.equal(await currentForm.locator('[name="reason"]').inputValue(), 'Review this change against the current task evidence.'); await stalePage.close(); assert.deepEqual(errors, []); assert.deepEqual(apiRequests, [], 'demo must never contact live project APIs'); diff --git a/test/fleet/console-view-navigation.test.mjs b/test/fleet/console-view-navigation.test.mjs index 96d216a..9594334 100644 --- a/test/fleet/console-view-navigation.test.mjs +++ b/test/fleet/console-view-navigation.test.mjs @@ -129,21 +129,31 @@ test('SCN-console-priority-preview-invalidates-on-newer-evidence: refresh preser await page.locator('.console-rail a[href="#work"]').click(); await page.locator('#refresh-console').click(); await page.locator('#live-refresh-status[data-generation="3"]').waitFor(); - assert.equal(Number(await form.getAttribute('data-revision')), revisionN1); - assert.equal(await ticket.locator('.priority').textContent(), 'low'); - assert.equal(await form.getAttribute('data-preview-token'), null); - assert.equal(await form.locator('[data-priority-preview]').isVisible(), false); - assert.equal(await form.locator('[data-priority-confirm]').count(), 0); - assert.equal(await form.locator('[name="priority"]').inputValue(), 'urgent'); - assert.equal(await form.locator('[name="reason"]').inputValue(), 'Preserve this unsent explanation across a newer task revision.'); - assert.equal(await form.locator('[name="priority"]').isDisabled(), false); - assert.equal(await form.locator('[name="reason"]').isDisabled(), false); + const preservedForm = page.locator('.priority-change-form[data-task-id="API-08"]'); + const preservedTicket = preservedForm.locator('xpath=../..'); + assert.equal(Number(await preservedForm.getAttribute('data-revision')), revisionN1); + assert.equal(await preservedTicket.locator('.priority').textContent(), 'low'); + assert.equal(await preservedForm.getAttribute('data-preview-token'), null); + assert.equal(await preservedForm.locator('[data-priority-preview]').isVisible(), false); + assert.equal(await preservedForm.locator('[data-priority-confirm]').count(), 0); + assert.equal(await preservedForm.locator('[name="priority"]').inputValue(), 'urgent'); + assert.equal(await preservedForm.locator('[name="reason"]').inputValue(), 'Preserve this unsent explanation across a newer task revision.'); + assert.equal(await preservedForm.locator('[name="priority"]').isDisabled(), false); + assert.equal(await preservedForm.locator('[name="reason"]').isDisabled(), false); - await form.getByRole('button', { name: 'Review change', exact: true }).click(); - await form.locator('[data-priority-confirm]').waitFor(); - const currentToken = await form.getAttribute('data-preview-token'); + await preservedForm.getByRole('button', { name: 'Review change', exact: true }).click(); + await preservedForm.locator('[data-priority-confirm]').waitFor(); + const currentToken = await preservedForm.getAttribute('data-preview-token'); assert.notEqual(currentToken, staleToken); - assert.equal(await form.locator('[data-priority-preview] dd').nth(2).innerText(), String(revisionN1)); + assert.equal(await preservedForm.locator('[data-priority-preview] dd').nth(2).innerText(), String(revisionN1)); + await page.locator('#refresh-console').click(); + await page.locator('#live-refresh-status[data-generation="4"]').waitFor(); + const currentForm = page.locator('.priority-change-form[data-task-id="API-08"]'); + assert.equal(await currentForm.getAttribute('data-preview-token'), currentToken); + assert.equal(await currentForm.locator('[data-priority-preview]').isVisible(), true); + assert.equal(await currentForm.locator('[data-priority-confirm]').isVisible(), true); + assert.equal(await currentForm.locator('[name="priority"]').inputValue(), 'urgent'); + assert.equal(await currentForm.locator('[name="reason"]').inputValue(), 'Preserve this unsent explanation across a newer task revision.'); }); test('SCN-console-current-preview-and-draft-survive-unchanged-refresh: a current preview and its fields remain intact', async (t) => { From 6988fe3b1a1fe8e411e4e4968877ae6f22ea4200 Mon Sep 17 00:00:00 2001 From: thePR0M3TH3AN <adambrettmalin@protonmail.com> Date: Thu, 1 Oct 2026 08:08:21 -0400 Subject: [PATCH 33/51] TASK-conversation-console-workflow: keep verification limits visible --- docs/TEST_INTEGRITY.md | 5 +++++ scripts/test-dashboard-demo.mjs | 7 ++++++- site/console.js | 11 ++++++++++- test/fleet/console-view-navigation.test.mjs | 15 +++++++++++++++ 4 files changed, 36 insertions(+), 2 deletions(-) diff --git a/docs/TEST_INTEGRITY.md b/docs/TEST_INTEGRITY.md index 2236954..9b98139 100644 --- a/docs/TEST_INTEGRITY.md +++ b/docs/TEST_INTEGRITY.md @@ -2590,6 +2590,10 @@ test_integrity_note: given: "The Console loads Overview and a reader selects each other supported view" when: "The reader returns to Overview after visiting contextual views" then: "Overview has the exact title TORCH Dashboard on initial and return navigation; all other views keep their exact contextual titles" + - id: SCN-console-owner-briefing-evidence-limitation-stays-visible + given: "The sample Console has a published owner briefing with reporting provenance" + when: "The owner briefing is rendered without opening compact provenance details" + then: "The warning that recorded evidence is not independent live verification remains visible, while exact publication time and reporting-window details stay in the collapsed disclosure" - id: SCN-console-secondary-deeplink-focus-and-history given: "The Console is loaded at the organization-proposals or approval-request-list fragment" when: "The reader opens either direct link and uses browser Back and Forward" @@ -2606,6 +2610,7 @@ test_integrity_note: - "An unchanged current-revision preview, confirmation boundary, and draft retained after refresh" - "A regenerated preview token and displayed revision bound to N+1" - "Exact Overview and contextual view titles, plus focused in-viewport secondary targets across direct loads and browser history" + - "Visible recorded-evidence limitation beside owner briefing content while exact provenance remains compact and collapsed" - "No browser requests to live project APIs and no changes to tracked screenshot expectations" determinism_controls: - "The existing isolated sample Console, fixed Playwright clock, and fixed desktop/mobile viewports" diff --git a/scripts/test-dashboard-demo.mjs b/scripts/test-dashboard-demo.mjs index a54771c..556b276 100644 --- a/scripts/test-dashboard-demo.mjs +++ b/scripts/test-dashboard-demo.mjs @@ -25,7 +25,12 @@ async function selectView(page, view) { const link = page.locator(`.console-rail a[href="#${view}"]`); assert.equal(await link.count(), 1, `the ${view} view must have one supported fragment link`); if (await link.getAttribute('aria-current') !== 'page') await link.click(); - await page.locator(`.console-workspace > [data-console-view="${view}"]`).waitFor({ state: 'visible' }); + const viewSections = page.locator(`.console-workspace > [data-console-view="${view}"]`); + const visibleSections = page.locator(`.console-workspace > [data-console-view="${view}"]:not([hidden])`); + const sectionCount = await viewSections.count(); + assert.ok(sectionCount > 0, `${view} must have a fragment-addressable workspace section`); + await visibleSections.first().waitFor({ state: 'visible' }); + assert.equal(await visibleSections.count(), sectionCount, `all ${view} sections must be visible together`); } async function selectViewFor(page, selector) { diff --git a/site/console.js b/site/console.js index f93a194..d929e24 100644 --- a/site/console.js +++ b/site/console.js @@ -182,7 +182,16 @@ function compactOwnerBriefingProvenance() { timestamp.textContent = ageLabel(timestamp.getAttribute('datetime')); timestamp.title = exactTime.textContent; } - if (window) disclosure.append(window); + if (window) { + const limitation = 'Recorded evidence, not independent live verification.'; + if (window.textContent.includes(limitation)) { + const visibleLimitation = window.cloneNode(false); + visibleLimitation.textContent = limitation; + window.textContent = window.textContent.replace(limitation, '').trim(); + window.after(visibleLimitation); + } + disclosure.append(window); + } publication.append(disclosure); } diff --git a/test/fleet/console-view-navigation.test.mjs b/test/fleet/console-view-navigation.test.mjs index 9594334..a8ea65d 100644 --- a/test/fleet/console-view-navigation.test.mjs +++ b/test/fleet/console-view-navigation.test.mjs @@ -60,6 +60,21 @@ test('SCN-console-view-title-mapping: Overview retains its dashboard title while await assertSelectedView(page, 'overview', 'Overview'); }); +test('SCN-console-owner-briefing-evidence-limitation-stays-visible: collapsed provenance keeps the warning visible', async (t) => { + const { page } = await openDemo(t, { width: 1280, height: 900 }); + await page.locator('.console-rail a[href="#owner-briefing"]').click(); + const publication = page.locator('#owner-briefing-content .briefing-publication'); + const warning = publication.locator(':scope > p.briefing-muted').filter({ hasText: 'Recorded evidence, not independent live verification.' }); + const provenance = publication.locator('details.briefing-provenance').filter({ hasText: 'Publication time and reporting window' }); + assert.equal(await warning.count(), 1); + assert.equal(await warning.isVisible(), true); + assert.match(await page.locator('#owner-briefing').innerText(), /not independent live verification/); + assert.equal(await provenance.count(), 1); + assert.equal(await provenance.evaluate((details) => details.open), false); + assert.equal(await provenance.locator('time').count(), 1, 'the exact publication time remains in compact metadata'); + assert.equal(await provenance.locator('time').isVisible(), false, 'publication time stays inside the closed disclosure'); +}); + test('SCN-console-secondary-deeplink-focus-and-history: direct fragments and history land on the actual target', async (t) => { const { page } = await openDemo(t, { width: 390, height: 844 }); const base = `http://127.0.0.1:${new URL(page.url()).port}/console?demo=1`; From 8ba1af611c6b7109528785f6970e93d9480ea3f5 Mon Sep 17 00:00:00 2001 From: thePR0M3TH3AN <adambrettmalin@protonmail.com> Date: Thu, 1 Oct 2026 08:17:56 -0400 Subject: [PATCH 34/51] TASK-conversation-console-workflow: keep nested capture on supported route --- scripts/test-dashboard-demo.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/test-dashboard-demo.mjs b/scripts/test-dashboard-demo.mjs index 556b276..9424f98 100644 --- a/scripts/test-dashboard-demo.mjs +++ b/scripts/test-dashboard-demo.mjs @@ -203,7 +203,7 @@ try { await pilotPanel.locator(':scope > summary').click(); await selectViewFor(page, '.pilot-review-history'); await pilotPanel.screenshot({ path: screenshotPath('torch-dashboard-pilot-review.png') }); - await selectViewFor(page, '#manager-wakes'); + await selectView(page, 'overview'); await page.locator('#manager-wakes').screenshot({ path: screenshotPath('torch-dashboard-manager-wakes.png') }); await selectView(page, 'overview'); await page.evaluate(() => scrollTo(0, 0)); From 6870c3a61073b950710eb7720f63ccd21da58f38 Mon Sep 17 00:00:00 2001 From: thePR0M3TH3AN <adambrettmalin@protonmail.com> Date: Thu, 1 Oct 2026 08:21:55 -0400 Subject: [PATCH 35/51] TASK-conversation-console-workflow: retain nested-route assertion --- scripts/test-dashboard-demo.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/test-dashboard-demo.mjs b/scripts/test-dashboard-demo.mjs index 9424f98..556b276 100644 --- a/scripts/test-dashboard-demo.mjs +++ b/scripts/test-dashboard-demo.mjs @@ -203,7 +203,7 @@ try { await pilotPanel.locator(':scope > summary').click(); await selectViewFor(page, '.pilot-review-history'); await pilotPanel.screenshot({ path: screenshotPath('torch-dashboard-pilot-review.png') }); - await selectView(page, 'overview'); + await selectViewFor(page, '#manager-wakes'); await page.locator('#manager-wakes').screenshot({ path: screenshotPath('torch-dashboard-manager-wakes.png') }); await selectView(page, 'overview'); await page.evaluate(() => scrollTo(0, 0)); From 3ebfebea4db0a9202059c07b8d2cbf3c2c78fb96 Mon Sep 17 00:00:00 2001 From: thePR0M3TH3AN <adambrettmalin@protonmail.com> Date: Thu, 1 Oct 2026 08:30:14 -0400 Subject: [PATCH 36/51] TASK-conversation-console-workflow: route operations under Fleet --- docs/TEST_INTEGRITY.md | 6 +++ site/console.html | 2 +- site/console.js | 3 ++ test/fleet/console-view-navigation.test.mjs | 43 +++++++++++++++++++++ 4 files changed, 53 insertions(+), 1 deletion(-) diff --git a/docs/TEST_INTEGRITY.md b/docs/TEST_INTEGRITY.md index 9b98139..bb6f2b2 100644 --- a/docs/TEST_INTEGRITY.md +++ b/docs/TEST_INTEGRITY.md @@ -2598,6 +2598,10 @@ test_integrity_note: given: "The Console is loaded at the organization-proposals or approval-request-list fragment" when: "The reader opens either direct link and uses browser Back and Forward" then: "Exactly the matching view is selected and the actual secondary target is focused inside the viewport" + - id: SCN-console-operational-deeplink-fleet + given: "Operations, resources, schedules, providers, decisions, context, and manager-wakes are grouped in the Fleet workspace" + when: "The reader loads #manager-wakes directly, follows its existing attention link, or returns to it through Back and Forward" + then: "Fleet is selected, the Operations disclosure opens, manager-wakes receives focus inside the viewport, and the entire Operations section is hidden on unrelated views" - id: SCN-console-view-drafts given: "A task draft and an owner approval preview are present" when: "The reader changes views and refreshes the sample Console" @@ -2610,10 +2614,12 @@ test_integrity_note: - "An unchanged current-revision preview, confirmation boundary, and draft retained after refresh" - "A regenerated preview token and displayed revision bound to N+1" - "Exact Overview and contextual view titles, plus focused in-viewport secondary targets across direct loads and browser history" + - "The manager-wakes route selects Fleet and opens/focuses its nested target across direct navigation and browser history; operations stay hidden outside Fleet" - "Visible recorded-evidence limitation beside owner briefing content while exact provenance remains compact and collapsed" - "No browser requests to live project APIs and no changes to tracked screenshot expectations" determinism_controls: - "The existing isolated sample Console, fixed Playwright clock, and fixed desktop/mobile viewports" + - "Manager-wakes routing uses the existing isolated sample Console and browser fragment history without changing project state" - "Newer evidence is introduced through the sample's supported preview/confirm API before an explicit refresh" - "The browser test advances only the isolated sample API; it never submits the priority form or mutates a live project" - "No network, live project mutation, retry, sleep, timeout, golden update, or direct fixture-source change" diff --git a/site/console.html b/site/console.html index 3df04ff..3ecc697 100644 --- a/site/console.html +++ b/site/console.html @@ -266,7 +266,7 @@ <div id="operation-outcomes"></div> </section> - <details class="console-section more-details"> + <details id="fleet-operations" class="console-section more-details" data-console-view="fleet"> <summary>Operations, resources, and decisions</summary> <div class="operations-grid"> <article class="work-surface"><div class="panel-heading"><h3>Worktrees</h3><span>Branches and recoverability</span></div><div id="worktree-list" class="console-list"></div></article> diff --git a/site/console.js b/site/console.js index d929e24..9f545e5 100644 --- a/site/console.js +++ b/site/console.js @@ -54,6 +54,9 @@ function installConsoleViewRouting() { const target = document.getElementById(targetId); const targetView = target?.closest('[data-console-view]')?.dataset.consoleView; if (target && targetId !== view && targetView === view) { + for (let ancestor = target; ancestor; ancestor = ancestor.parentElement) { + if (ancestor instanceof HTMLDetailsElement) ancestor.open = true; + } if (!target.hasAttribute('tabindex') && !target.matches('a[href], button, input, select, textarea, summary')) { target.tabIndex = -1; } diff --git a/test/fleet/console-view-navigation.test.mjs b/test/fleet/console-view-navigation.test.mjs index a8ea65d..3e95116 100644 --- a/test/fleet/console-view-navigation.test.mjs +++ b/test/fleet/console-view-navigation.test.mjs @@ -211,6 +211,49 @@ test('SCN-console-view-navigation: fragments, direct loads, Back and Forward sel await assertSelectedView(page, 'flow-watch', 'Flow watch'); }); +test('SCN-console-operational-deeplink-fleet: manager-wakes belongs to Fleet across direct loads and history', async (t) => { + const { page } = await openDemo(t, { width: 1280, height: 900 }); + const base = `http://127.0.0.1:${new URL(page.url()).port}/console?demo=1`; + const assertManagerWakesTarget = async () => { + await assertSelectedView(page, 'fleet', 'Fleet'); + assert.equal(await page.locator('#fleet-operations').isVisible(), true); + assert.equal(await page.locator('#fleet-operations').evaluate((details) => details.open), true, + 'the Operations disclosure must open for its nested target'); + const target = await page.locator('#manager-wakes').evaluate((element) => { + const bounds = element.getBoundingClientRect(); + return { activeId: document.activeElement?.id, top: bounds.top, bottom: bounds.bottom, height: innerHeight }; + }); + assert.equal(target.activeId, 'manager-wakes', 'the actual fragment target must receive focus'); + assert.ok(target.top < target.height && target.bottom > 0, + `manager-wakes must intersect the viewport: ${JSON.stringify(target)}`); + }; + + await page.goto(`${base}#manager-wakes`); + await page.locator('#live-refresh-status[data-generation="1"]').waitFor(); + await assertManagerWakesTarget(); + + await page.locator('.console-rail a[href="#fleet"]').click(); + await assertSelectedView(page, 'fleet', 'Fleet'); + await page.goBack(); + await assertManagerWakesTarget(); + await page.goForward(); + await assertSelectedView(page, 'fleet', 'Fleet'); + + await page.goto(`${base}#overview`); + await page.locator('#live-refresh-status[data-generation="1"]').waitFor(); + await page.locator('#attention-list a[href="#manager-wakes"]').click(); + await assertManagerWakesTarget(); + await page.goBack(); + await assertSelectedView(page, 'overview', 'Overview'); + await page.goForward(); + await assertManagerWakesTarget(); + + await page.locator('.console-rail a[href="#work"]').click(); + await assertSelectedView(page, 'work', 'Work'); + assert.equal(await page.locator('#fleet-operations').isVisible(), false, + 'operational panels must be hidden outside the selected Fleet view'); +}); + test('SCN-console-mobile-navigation: every destination is visible at 390x844 without horizontal hunting', async (t) => { const { page } = await openDemo(t, { width: 390, height: 844 }); assert.equal(await page.locator('.console-rail a').count(), views.length); From a97a878e1f534e02ac63059c008f7d2c730f9ba5 Mon Sep 17 00:00:00 2001 From: thePR0M3TH3AN <adambrettmalin@protonmail.com> Date: Thu, 1 Oct 2026 08:35:41 -0400 Subject: [PATCH 37/51] TASK-conversation-console-workflow: offset focused views below sticky rail --- site/console.js | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/site/console.js b/site/console.js index 9f545e5..dc1fff7 100644 --- a/site/console.js +++ b/site/console.js @@ -30,6 +30,20 @@ function installConsoleViewRouting() { return consoleViewDefinitions[containingView] ? containingView : 'overview'; } + function accountForStickyNavigation(target) { + const workspace = document.querySelector('.console-workspace'); + if (!workspace || !target) return; + const railBounds = nav.getBoundingClientRect(); + const workspaceBounds = workspace.getBoundingClientRect(); + const overlapsWorkspace = railBounds.right > workspaceBounds.left + 1 + && workspaceBounds.right > railBounds.left + 1; + if (overlapsWorkspace) { + target.style.scrollMarginTop = `${Math.ceil(railBounds.height + 8)}px`; + } else { + target.style.removeProperty('scroll-margin-top'); + } + } + function sync({ focus = false, force = false } = {}) { const hash = globalThis.location.hash || '#overview'; if (!force && hash === lastHash) return resolveView(hash); @@ -57,6 +71,7 @@ function installConsoleViewRouting() { for (let ancestor = target; ancestor; ancestor = ancestor.parentElement) { if (ancestor instanceof HTMLDetailsElement) ancestor.open = true; } + accountForStickyNavigation(target); if (!target.hasAttribute('tabindex') && !target.matches('a[href], button, input, select, textarea, summary')) { target.tabIndex = -1; } @@ -70,7 +85,12 @@ function installConsoleViewRouting() { heading.tabIndex = -1; heading.focus({ preventScroll: true }); } - globalThis.scrollTo?.({ top: 0, behavior: 'instant' }); + if (target && targetId === view && targetView === view) { + accountForStickyNavigation(target); + target.scrollIntoView?.({ block: 'start', behavior: 'instant' }); + } else { + globalThis.scrollTo?.({ top: 0, behavior: 'instant' }); + } } } return view; From 88ed1ed54548bd7b00b941bbc07c1ccf82440ae2 Mon Sep 17 00:00:00 2001 From: thePR0M3TH3AN <adambrettmalin@protonmail.com> Date: Thu, 1 Oct 2026 08:42:54 -0400 Subject: [PATCH 38/51] TASK-conversation-console-workflow settle Fleet deep links after initial render --- docs/TEST_INTEGRITY.md | 10 ++-- scripts/test-dashboard-demo.mjs | 1 + site/console.js | 60 ++++++++++++++++----- test/fleet/console-view-navigation.test.mjs | 48 +++++++++++++++++ 4 files changed, 101 insertions(+), 18 deletions(-) diff --git a/docs/TEST_INTEGRITY.md b/docs/TEST_INTEGRITY.md index bb6f2b2..0e97c64 100644 --- a/docs/TEST_INTEGRITY.md +++ b/docs/TEST_INTEGRITY.md @@ -2599,9 +2599,9 @@ test_integrity_note: when: "The reader opens either direct link and uses browser Back and Forward" then: "Exactly the matching view is selected and the actual secondary target is focused inside the viewport" - id: SCN-console-operational-deeplink-fleet - given: "Operations, resources, schedules, providers, decisions, context, and manager-wakes are grouped in the Fleet workspace" - when: "The reader loads #manager-wakes directly, follows its existing attention link, or returns to it through Back and Forward" - then: "Fleet is selected, the Operations disclosure opens, manager-wakes receives focus inside the viewport, and the entire Operations section is hidden on unrelated views" + given: "Operations, resources, schedules, providers, decisions, context, and manager-wakes are grouped in the Fleet workspace at 1280x900 and 390x844" + when: "The reader loads #manager-wakes directly, follows its existing attention link, or returns to it through Back and Forward, then later navigates, scrolls, and refreshes" + then: "After the first deterministic data/layout application Fleet is selected, the Operations disclosure opens, manager-wakes receives focus fully inside the viewport, the later refresh preserves the reader's view and scroll, and Operations is hidden on unrelated views" - id: SCN-console-view-drafts given: "A task draft and an owner approval preview are present" when: "The reader changes views and refreshes the sample Console" @@ -2614,12 +2614,12 @@ test_integrity_note: - "An unchanged current-revision preview, confirmation boundary, and draft retained after refresh" - "A regenerated preview token and displayed revision bound to N+1" - "Exact Overview and contextual view titles, plus focused in-viewport secondary targets across direct loads and browser history" - - "The manager-wakes route selects Fleet and opens/focuses its nested target across direct navigation and browser history; operations stay hidden outside Fleet" + - "The manager-wakes route selects Fleet and opens/focuses its nested target fully inside desktop and mobile viewports after first render and across browser history; later refresh preserves the user's view and scroll; operations stay hidden outside Fleet" - "Visible recorded-evidence limitation beside owner briefing content while exact provenance remains compact and collapsed" - "No browser requests to live project APIs and no changes to tracked screenshot expectations" determinism_controls: - "The existing isolated sample Console, fixed Playwright clock, and fixed desktop/mobile viewports" - - "Manager-wakes routing uses the existing isolated sample Console and browser fragment history without changing project state" + - "Manager-wakes routing uses the existing isolated sample Console, a deterministic first-generation completion marker, and browser fragment history without changing project state" - "Newer evidence is introduced through the sample's supported preview/confirm API before an explicit refresh" - "The browser test advances only the isolated sample API; it never submits the priority form or mutates a live project" - "No network, live project mutation, retry, sleep, timeout, golden update, or direct fixture-source change" diff --git a/scripts/test-dashboard-demo.mjs b/scripts/test-dashboard-demo.mjs index 556b276..3d7f71d 100644 --- a/scripts/test-dashboard-demo.mjs +++ b/scripts/test-dashboard-demo.mjs @@ -231,6 +231,7 @@ try { await page.locator('#owner-briefing .briefing-detail').first().locator('summary').click(); assert.equal(await page.evaluate(() => document.documentElement.scrollWidth > innerWidth), false, 'expanded briefing evidence must fit mobile width'); await page.locator('#reset-demo').click(); + await selectView(page, 'flow-watch'); await page.locator('#approval-request-count').filter({ hasText: '1 open' }).waitFor(); assert.equal(await page.locator('.priority-urgent').count(), 0); assert.equal(await page.locator('.agent-row').count(), 6); diff --git a/site/console.js b/site/console.js index dc1fff7..9cab7d5 100644 --- a/site/console.js +++ b/site/console.js @@ -18,6 +18,7 @@ function installConsoleViewRouting() { if (!nav || !sections.length || !links.length) return { sync: () => 'overview' }; let lastHash = null; + const initialHash = globalThis.location.hash; const decodeHash = (hash) => { try { return decodeURIComponent(String(hash ?? '').replace(/^#/, '')); } catch { return ''; } }; @@ -44,6 +45,29 @@ function installConsoleViewRouting() { } } + function positionNestedTarget(target, targetId, view) { + const targetView = target?.closest('[data-console-view]')?.dataset.consoleView; + if (!target || targetId === view || targetView !== view) return; + for (let ancestor = target; ancestor; ancestor = ancestor.parentElement) { + if (ancestor instanceof HTMLDetailsElement) ancestor.open = true; + } + accountForStickyNavigation(target); + if (!target.hasAttribute('tabindex') && !target.matches('a[href], button, input, select, textarea, summary')) { + target.tabIndex = -1; + } + target.scrollIntoView?.({ block: 'start', behavior: 'instant' }); + target.focus?.({ preventScroll: true }); + } + + const initialFragment = decodeHash(initialHash); + let initialPositionPending = Boolean(initialFragment && !consoleViewDefinitions[initialFragment] + && document.getElementById(initialFragment)); + const abandonInitialPosition = () => { initialPositionPending = false; }; + const onNavigation = () => { + abandonInitialPosition(); + sync({ focus: true }); + }; + function sync({ focus = false, force = false } = {}) { const hash = globalThis.location.hash || '#overview'; if (!force && hash === lastHash) return resolveView(hash); @@ -68,15 +92,7 @@ function installConsoleViewRouting() { const target = document.getElementById(targetId); const targetView = target?.closest('[data-console-view]')?.dataset.consoleView; if (target && targetId !== view && targetView === view) { - for (let ancestor = target; ancestor; ancestor = ancestor.parentElement) { - if (ancestor instanceof HTMLDetailsElement) ancestor.open = true; - } - accountForStickyNavigation(target); - if (!target.hasAttribute('tabindex') && !target.matches('a[href], button, input, select, textarea, summary')) { - target.tabIndex = -1; - } - target.scrollIntoView?.({ block: 'start', behavior: 'instant' }); - target.focus?.({ preventScroll: true }); + positionNestedTarget(target, targetId, view); } else { const labelledBy = visible[0]?.getAttribute('aria-labelledby'); const heading = (labelledBy && document.getElementById(labelledBy)) @@ -96,11 +112,28 @@ function installConsoleViewRouting() { return view; } - globalThis.addEventListener('hashchange', () => sync({ focus: true })); - globalThis.addEventListener('popstate', () => sync({ focus: true })); - const initialFragment = decodeHash(globalThis.location.hash); + globalThis.addEventListener('hashchange', onNavigation); + globalThis.addEventListener('popstate', onNavigation); + globalThis.addEventListener('wheel', abandonInitialPosition, { passive: true }); + globalThis.addEventListener('touchstart', abandonInitialPosition, { passive: true }); + globalThis.addEventListener('pointerdown', abandonInitialPosition, { passive: true }); + globalThis.addEventListener('keydown', (event) => { + if (['ArrowDown', 'ArrowUp', 'PageDown', 'PageUp', 'Home', 'End', ' '].includes(event.key)) { + abandonInitialPosition(); + } + }); sync({ focus: Boolean(initialFragment && !consoleViewDefinitions[initialFragment]) }); - return { sync }; + return { + sync, + afterInitialLayout() { + if (!initialPositionPending) return; + initialPositionPending = false; + if (globalThis.location.hash !== initialHash) return; + const targetId = decodeHash(initialHash); + const view = resolveView(initialHash); + positionNestedTarget(document.getElementById(targetId), targetId, view); + }, + }; } const $ = (selector) => document.querySelector(selector); @@ -1118,6 +1151,7 @@ const refreshScheduler = globalThis.TorchLiveRefresh.createScheduler({ const status = $('#live-refresh-status'); status.dataset.generation = String(++appliedRefreshes); status.textContent = `${liveUpdatesPaused ? 'Automatic updates paused.' : 'Updates every 15 seconds while visible.'}${heldPanels ? ' Edited forms and active previews retained; their panels may show older state.' : ''}`; + if (appliedRefreshes === 1) consoleViewRouter.afterInitialLayout(); }, onError: (caught) => { const error = $('#console-error'); diff --git a/test/fleet/console-view-navigation.test.mjs b/test/fleet/console-view-navigation.test.mjs index 3e95116..db82709 100644 --- a/test/fleet/console-view-navigation.test.mjs +++ b/test/fleet/console-view-navigation.test.mjs @@ -105,6 +105,54 @@ test('SCN-console-secondary-deeplink-focus-and-history: direct fragments and his await assertTarget('approval-request-list', 'flow-watch', 'Flow watch'); }); +test('SCN-console-operational-deeplink-layout-history-and-refresh: Fleet deep links settle after first render without stealing later navigation', async (t) => { + for (const viewport of [{ width: 1280, height: 900 }, { width: 390, height: 844 }]) { + const { page } = await openDemo(t, viewport); + const base = `http://127.0.0.1:${new URL(page.url()).port}/console?demo=1`; + const assertManagerWakes = async () => { + await assertSelectedView(page, 'fleet', 'Fleet'); + const state = await page.locator('#manager-wakes').evaluate((target) => { + const bounds = target.getBoundingClientRect(); + return { + activeId: document.activeElement?.id, + operationsOpen: target.closest('#fleet-operations')?.open, + top: bounds.top, + bottom: bounds.bottom, + height: innerHeight, + }; + }); + assert.equal(state.operationsOpen, true); + assert.equal(state.activeId, 'manager-wakes'); + assert.ok(state.top >= 0 && state.bottom <= state.height, + `manager-wakes must be fully inside ${viewport.width}x${viewport.height}: ${JSON.stringify(state)}`); + }; + + await page.goto(`${base}#manager-wakes`); + await page.locator('#live-refresh-status[data-generation="1"]').waitFor(); + await assertManagerWakes(); + + await page.goto(`${base}#overview`); + await page.locator('#live-refresh-status[data-generation="1"]').waitFor(); + await page.locator('#attention-list a[href="#manager-wakes"]').click(); + await assertManagerWakes(); + await page.goBack(); + await assertSelectedView(page, 'overview', 'Overview'); + await page.goForward(); + await assertManagerWakes(); + + await page.locator('.console-rail a[href="#work"]').click(); + await page.mouse.wheel(0, 180); + const beforeRefresh = await page.evaluate(() => scrollY); + await page.locator('#refresh-console').click(); + await page.locator('#live-refresh-status[data-generation="2"]').waitFor(); + assert.equal(new URL(page.url()).hash, '#work'); + await assertSelectedView(page, 'work', 'Work'); + assert.notEqual(await page.evaluate(() => document.activeElement?.id), 'manager-wakes'); + assert.equal(await page.evaluate(() => scrollY), beforeRefresh, + 'a later refresh must retain the user’s scrolled position'); + } +}); + test('SCN-console-priority-preview-invalidates-on-newer-evidence: refresh preserves editable drafts and rejects the old preview', async (t) => { const { page } = await openDemo(t, { width: 1280, height: 900 }); const form = page.locator('.priority-change-form[data-task-id="API-08"]'); From ae15975aa6968dd2184dc93ccabbdce13f0ddef7 Mon Sep 17 00:00:00 2001 From: thePR0M3TH3AN <adambrettmalin@protonmail.com> Date: Thu, 1 Oct 2026 08:45:03 -0400 Subject: [PATCH 39/51] TASK-conversation-console-workflow preserve viewport across refresh renders --- site/console.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/site/console.js b/site/console.js index 9cab7d5..6cea05d 100644 --- a/site/console.js +++ b/site/console.js @@ -1141,10 +1141,13 @@ const refreshScheduler = globalThis.TorchLiveRefresh.createScheduler({ return snapshot; }, apply: (snapshot) => { + const viewportBeforeRender = appliedRefreshes > 0 + ? { left: globalThis.scrollX, top: globalThis.scrollY } : null; const editedBeforeRender = refreshProtection.dirty(); heldPanels = 0; renderingSnapshot = true; try { render(snapshot); } finally { renderingSnapshot = false; } + if (viewportBeforeRender) globalThis.scrollTo?.({ ...viewportBeforeRender, behavior: 'instant' }); invalidateStalePriorityPreviews(snapshot.backlog ?? []); refreshProtection.remember({ preserve: editedBeforeRender }); $('#console-error').hidden = true; From d9939a30f6e9e4ccf6767790a80c0fa09ee56a6f Mon Sep 17 00:00:00 2001 From: thePR0M3TH3AN <adambrettmalin@protonmail.com> Date: Thu, 1 Oct 2026 08:53:44 -0400 Subject: [PATCH 40/51] TASK-conversation-console-workflow isolate refresh from control autoscroll --- test/fleet/console-view-navigation.test.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/fleet/console-view-navigation.test.mjs b/test/fleet/console-view-navigation.test.mjs index db82709..963c760 100644 --- a/test/fleet/console-view-navigation.test.mjs +++ b/test/fleet/console-view-navigation.test.mjs @@ -143,7 +143,7 @@ test('SCN-console-operational-deeplink-layout-history-and-refresh: Fleet deep li await page.locator('.console-rail a[href="#work"]').click(); await page.mouse.wheel(0, 180); const beforeRefresh = await page.evaluate(() => scrollY); - await page.locator('#refresh-console').click(); + await page.locator('#refresh-console').evaluate((button) => button.click()); await page.locator('#live-refresh-status[data-generation="2"]').waitFor(); assert.equal(new URL(page.url()).hash, '#work'); await assertSelectedView(page, 'work', 'Work'); From b70e771319ea72487d454ffa6787054ffcdc831b Mon Sep 17 00:00:00 2001 From: thePR0M3TH3AN <adambrettmalin@protonmail.com> Date: Thu, 1 Oct 2026 08:56:19 -0400 Subject: [PATCH 41/51] TASK-conversation-console-workflow measure refresh viewport after activation --- test/fleet/console-view-navigation.test.mjs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/test/fleet/console-view-navigation.test.mjs b/test/fleet/console-view-navigation.test.mjs index 963c760..d393c69 100644 --- a/test/fleet/console-view-navigation.test.mjs +++ b/test/fleet/console-view-navigation.test.mjs @@ -142,13 +142,16 @@ test('SCN-console-operational-deeplink-layout-history-and-refresh: Fleet deep li await page.locator('.console-rail a[href="#work"]').click(); await page.mouse.wheel(0, 180); - const beforeRefresh = await page.evaluate(() => scrollY); - await page.locator('#refresh-console').evaluate((button) => button.click()); + const beforeRefreshRender = await page.evaluate(() => new Promise((resolve) => { + const button = document.querySelector('#refresh-console'); + button.addEventListener('click', () => resolve(scrollY), { once: true }); + button.click(); + })); await page.locator('#live-refresh-status[data-generation="2"]').waitFor(); assert.equal(new URL(page.url()).hash, '#work'); await assertSelectedView(page, 'work', 'Work'); assert.notEqual(await page.evaluate(() => document.activeElement?.id), 'manager-wakes'); - assert.equal(await page.evaluate(() => scrollY), beforeRefresh, + assert.equal(await page.evaluate(() => scrollY), beforeRefreshRender, 'a later refresh must retain the user’s scrolled position'); } }); From 7da6d13bb9b23ed841ab8298c552713f94ba523f Mon Sep 17 00:00:00 2001 From: thePR0M3TH3AN <adambrettmalin@protonmail.com> Date: Thu, 1 Oct 2026 08:57:50 -0400 Subject: [PATCH 42/51] TASK-conversation-console-workflow restore viewport after full refresh apply --- site/console.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site/console.js b/site/console.js index 6cea05d..4f3f170 100644 --- a/site/console.js +++ b/site/console.js @@ -1147,13 +1147,13 @@ const refreshScheduler = globalThis.TorchLiveRefresh.createScheduler({ heldPanels = 0; renderingSnapshot = true; try { render(snapshot); } finally { renderingSnapshot = false; } - if (viewportBeforeRender) globalThis.scrollTo?.({ ...viewportBeforeRender, behavior: 'instant' }); invalidateStalePriorityPreviews(snapshot.backlog ?? []); refreshProtection.remember({ preserve: editedBeforeRender }); $('#console-error').hidden = true; const status = $('#live-refresh-status'); status.dataset.generation = String(++appliedRefreshes); status.textContent = `${liveUpdatesPaused ? 'Automatic updates paused.' : 'Updates every 15 seconds while visible.'}${heldPanels ? ' Edited forms and active previews retained; their panels may show older state.' : ''}`; + if (viewportBeforeRender) globalThis.scrollTo?.({ ...viewportBeforeRender, behavior: 'instant' }); if (appliedRefreshes === 1) consoleViewRouter.afterInitialLayout(); }, onError: (caught) => { From 69ab615eba14e06b8c69018090883e3bacd9d5f6 Mon Sep 17 00:00:00 2001 From: thePR0M3TH3AN <adambrettmalin@protonmail.com> Date: Thu, 1 Oct 2026 08:59:23 -0400 Subject: [PATCH 43/51] TASK-conversation-console-workflow isolate refresh dispatch from focus scrolling --- test/fleet/console-view-navigation.test.mjs | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/test/fleet/console-view-navigation.test.mjs b/test/fleet/console-view-navigation.test.mjs index d393c69..58be904 100644 --- a/test/fleet/console-view-navigation.test.mjs +++ b/test/fleet/console-view-navigation.test.mjs @@ -142,11 +142,10 @@ test('SCN-console-operational-deeplink-layout-history-and-refresh: Fleet deep li await page.locator('.console-rail a[href="#work"]').click(); await page.mouse.wheel(0, 180); - const beforeRefreshRender = await page.evaluate(() => new Promise((resolve) => { - const button = document.querySelector('#refresh-console'); - button.addEventListener('click', () => resolve(scrollY), { once: true }); - button.click(); - })); + const beforeRefreshRender = await page.locator('#refresh-console').evaluate((button) => { + button.dispatchEvent(new MouseEvent('click', { bubbles: true })); + return scrollY; + }); await page.locator('#live-refresh-status[data-generation="2"]').waitFor(); assert.equal(new URL(page.url()).hash, '#work'); await assertSelectedView(page, 'work', 'Work'); From edbea736f0ae9e1d455e6d043da335fc2aeae99b Mon Sep 17 00:00:00 2001 From: thePR0M3TH3AN <adambrettmalin@protonmail.com> Date: Thu, 1 Oct 2026 09:05:50 -0400 Subject: [PATCH 44/51] TASK-conversation-console-workflow settle and preserve routed viewport after render --- docs/TEST_INTEGRITY.md | 4 ++-- site/console.js | 20 ++++++++++++++++---- test/fleet/console-view-navigation.test.mjs | 4 ++-- 3 files changed, 20 insertions(+), 8 deletions(-) diff --git a/docs/TEST_INTEGRITY.md b/docs/TEST_INTEGRITY.md index 0e97c64..b13368a 100644 --- a/docs/TEST_INTEGRITY.md +++ b/docs/TEST_INTEGRITY.md @@ -2601,7 +2601,7 @@ test_integrity_note: - id: SCN-console-operational-deeplink-fleet given: "Operations, resources, schedules, providers, decisions, context, and manager-wakes are grouped in the Fleet workspace at 1280x900 and 390x844" when: "The reader loads #manager-wakes directly, follows its existing attention link, or returns to it through Back and Forward, then later navigates, scrolls, and refreshes" - then: "After the first deterministic data/layout application Fleet is selected, the Operations disclosure opens, manager-wakes receives focus fully inside the viewport, the later refresh preserves the reader's view and scroll, and Operations is hidden on unrelated views" + then: "After the first deterministic data/layout application Fleet is selected, the Operations disclosure opens, manager-wakes receives focus fully inside the viewport, a later refresh retains the user's selected view and scrolled position without refocusing manager-wakes, and Operations is hidden on unrelated views" - id: SCN-console-view-drafts given: "A task draft and an owner approval preview are present" when: "The reader changes views and refreshes the sample Console" @@ -2614,7 +2614,7 @@ test_integrity_note: - "An unchanged current-revision preview, confirmation boundary, and draft retained after refresh" - "A regenerated preview token and displayed revision bound to N+1" - "Exact Overview and contextual view titles, plus focused in-viewport secondary targets across direct loads and browser history" - - "The manager-wakes route selects Fleet and opens/focuses its nested target fully inside desktop and mobile viewports after first render and across browser history; later refresh preserves the user's view and scroll; operations stay hidden outside Fleet" + - "The manager-wakes route selects Fleet and opens/focuses its nested target fully inside desktop and mobile viewports after first render and across browser history; later refresh retains the user's selected view and scrolled position without refocusing manager-wakes; operations stay hidden outside Fleet" - "Visible recorded-evidence limitation beside owner briefing content while exact provenance remains compact and collapsed" - "No browser requests to live project APIs and no changes to tracked screenshot expectations" determinism_controls: diff --git a/site/console.js b/site/console.js index 4f3f170..117bbc5 100644 --- a/site/console.js +++ b/site/console.js @@ -62,7 +62,11 @@ function installConsoleViewRouting() { const initialFragment = decodeHash(initialHash); let initialPositionPending = Boolean(initialFragment && !consoleViewDefinitions[initialFragment] && document.getElementById(initialFragment)); - const abandonInitialPosition = () => { initialPositionPending = false; }; + let userIntentVersion = 0; + const abandonInitialPosition = () => { + initialPositionPending = false; + userIntentVersion += 1; + }; const onNavigation = () => { abandonInitialPosition(); sync({ focus: true }); @@ -133,6 +137,7 @@ function installConsoleViewRouting() { const view = resolveView(initialHash); positionNestedTarget(document.getElementById(targetId), targetId, view); }, + userIntentVersion: () => userIntentVersion, }; } @@ -1143,6 +1148,7 @@ const refreshScheduler = globalThis.TorchLiveRefresh.createScheduler({ apply: (snapshot) => { const viewportBeforeRender = appliedRefreshes > 0 ? { left: globalThis.scrollX, top: globalThis.scrollY } : null; + const userIntentAtRender = consoleViewRouter.userIntentVersion(); const editedBeforeRender = refreshProtection.dirty(); heldPanels = 0; renderingSnapshot = true; @@ -1151,10 +1157,16 @@ const refreshScheduler = globalThis.TorchLiveRefresh.createScheduler({ refreshProtection.remember({ preserve: editedBeforeRender }); $('#console-error').hidden = true; const status = $('#live-refresh-status'); - status.dataset.generation = String(++appliedRefreshes); + const renderGeneration = ++appliedRefreshes; status.textContent = `${liveUpdatesPaused ? 'Automatic updates paused.' : 'Updates every 15 seconds while visible.'}${heldPanels ? ' Edited forms and active previews retained; their panels may show older state.' : ''}`; - if (viewportBeforeRender) globalThis.scrollTo?.({ ...viewportBeforeRender, behavior: 'instant' }); - if (appliedRefreshes === 1) consoleViewRouter.afterInitialLayout(); + globalThis.requestAnimationFrame(() => { + if (renderGeneration !== appliedRefreshes) return; + if (viewportBeforeRender && consoleViewRouter.userIntentVersion() === userIntentAtRender) { + globalThis.scrollTo?.({ ...viewportBeforeRender, behavior: 'instant' }); + } + if (renderGeneration === 1) consoleViewRouter.afterInitialLayout(); + status.dataset.generation = String(renderGeneration); + }); }, onError: (caught) => { const error = $('#console-error'); diff --git a/test/fleet/console-view-navigation.test.mjs b/test/fleet/console-view-navigation.test.mjs index 58be904..0bd547e 100644 --- a/test/fleet/console-view-navigation.test.mjs +++ b/test/fleet/console-view-navigation.test.mjs @@ -142,9 +142,9 @@ test('SCN-console-operational-deeplink-layout-history-and-refresh: Fleet deep li await page.locator('.console-rail a[href="#work"]').click(); await page.mouse.wheel(0, 180); - const beforeRefreshRender = await page.locator('#refresh-console').evaluate((button) => { + const beforeRefreshRender = await page.evaluate(() => scrollY); + await page.locator('#refresh-console').evaluate((button) => { button.dispatchEvent(new MouseEvent('click', { bubbles: true })); - return scrollY; }); await page.locator('#live-refresh-status[data-generation="2"]').waitFor(); assert.equal(new URL(page.url()).hash, '#work'); From 6b3dcf7498e64e8411eaad37b13afec639d655b2 Mon Sep 17 00:00:00 2001 From: thePR0M3TH3AN <adambrettmalin@protonmail.com> Date: Thu, 1 Oct 2026 09:08:47 -0400 Subject: [PATCH 45/51] TASK-conversation-console-workflow await stable initial layout before route completion --- docs/TEST_INTEGRITY.md | 2 +- site/console.js | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/docs/TEST_INTEGRITY.md b/docs/TEST_INTEGRITY.md index b13368a..949f143 100644 --- a/docs/TEST_INTEGRITY.md +++ b/docs/TEST_INTEGRITY.md @@ -2619,7 +2619,7 @@ test_integrity_note: - "No browser requests to live project APIs and no changes to tracked screenshot expectations" determinism_controls: - "The existing isolated sample Console, fixed Playwright clock, and fixed desktop/mobile viewports" - - "Manager-wakes routing uses the existing isolated sample Console, a deterministic first-generation completion marker, and browser fragment history without changing project state" + - "Manager-wakes routing uses the existing isolated sample Console, a deterministic two-frame first-generation layout-completion marker, and browser fragment history without changing project state" - "Newer evidence is introduced through the sample's supported preview/confirm API before an explicit refresh" - "The browser test advances only the isolated sample API; it never submits the priority form or mutates a live project" - "No network, live project mutation, retry, sleep, timeout, golden update, or direct fixture-source change" diff --git a/site/console.js b/site/console.js index 117bbc5..fcebdbc 100644 --- a/site/console.js +++ b/site/console.js @@ -1159,14 +1159,14 @@ const refreshScheduler = globalThis.TorchLiveRefresh.createScheduler({ const status = $('#live-refresh-status'); const renderGeneration = ++appliedRefreshes; status.textContent = `${liveUpdatesPaused ? 'Automatic updates paused.' : 'Updates every 15 seconds while visible.'}${heldPanels ? ' Edited forms and active previews retained; their panels may show older state.' : ''}`; - globalThis.requestAnimationFrame(() => { - if (renderGeneration !== appliedRefreshes) return; - if (viewportBeforeRender && consoleViewRouter.userIntentVersion() === userIntentAtRender) { - globalThis.scrollTo?.({ ...viewportBeforeRender, behavior: 'instant' }); - } - if (renderGeneration === 1) consoleViewRouter.afterInitialLayout(); - status.dataset.generation = String(renderGeneration); - }); + globalThis.requestAnimationFrame(() => globalThis.requestAnimationFrame(() => { + if (renderGeneration !== appliedRefreshes) return; + if (viewportBeforeRender && consoleViewRouter.userIntentVersion() === userIntentAtRender) { + globalThis.scrollTo?.({ ...viewportBeforeRender, behavior: 'instant' }); + } + if (renderGeneration === 1) consoleViewRouter.afterInitialLayout(); + status.dataset.generation = String(renderGeneration); + })); }, onError: (caught) => { const error = $('#console-error'); From b1c633d31672f896de347743f5afe6498999c6d8 Mon Sep 17 00:00:00 2001 From: thePR0M3TH3AN <adambrettmalin@protonmail.com> Date: Thu, 1 Oct 2026 09:10:21 -0400 Subject: [PATCH 46/51] TASK-conversation-console-workflow settle scroll input before refresh assertion --- docs/TEST_INTEGRITY.md | 1 + test/fleet/console-view-navigation.test.mjs | 1 + 2 files changed, 2 insertions(+) diff --git a/docs/TEST_INTEGRITY.md b/docs/TEST_INTEGRITY.md index 949f143..899bc31 100644 --- a/docs/TEST_INTEGRITY.md +++ b/docs/TEST_INTEGRITY.md @@ -2620,6 +2620,7 @@ test_integrity_note: determinism_controls: - "The existing isolated sample Console, fixed Playwright clock, and fixed desktop/mobile viewports" - "Manager-wakes routing uses the existing isolated sample Console, a deterministic two-frame first-generation layout-completion marker, and browser fragment history without changing project state" + - "The later-refresh viewport baseline is measured after the browser applies the explicit wheel input at its next animation frame" - "Newer evidence is introduced through the sample's supported preview/confirm API before an explicit refresh" - "The browser test advances only the isolated sample API; it never submits the priority form or mutates a live project" - "No network, live project mutation, retry, sleep, timeout, golden update, or direct fixture-source change" diff --git a/test/fleet/console-view-navigation.test.mjs b/test/fleet/console-view-navigation.test.mjs index 0bd547e..29b031a 100644 --- a/test/fleet/console-view-navigation.test.mjs +++ b/test/fleet/console-view-navigation.test.mjs @@ -142,6 +142,7 @@ test('SCN-console-operational-deeplink-layout-history-and-refresh: Fleet deep li await page.locator('.console-rail a[href="#work"]').click(); await page.mouse.wheel(0, 180); + await page.evaluate(() => new Promise((resolve) => requestAnimationFrame(resolve))); const beforeRefreshRender = await page.evaluate(() => scrollY); await page.locator('#refresh-console').evaluate((button) => { button.dispatchEvent(new MouseEvent('click', { bubbles: true })); From a7e84cf5530379f8f3129e2ccd28efd36a3001fe Mon Sep 17 00:00:00 2001 From: thePR0M3TH3AN <adambrettmalin@protonmail.com> Date: Thu, 1 Oct 2026 09:12:13 -0400 Subject: [PATCH 47/51] TASK-conversation-console-workflow await completed scroll input before refresh --- docs/TEST_INTEGRITY.md | 2 +- test/fleet/console-view-navigation.test.mjs | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/docs/TEST_INTEGRITY.md b/docs/TEST_INTEGRITY.md index 899bc31..a00c692 100644 --- a/docs/TEST_INTEGRITY.md +++ b/docs/TEST_INTEGRITY.md @@ -2620,7 +2620,7 @@ test_integrity_note: determinism_controls: - "The existing isolated sample Console, fixed Playwright clock, and fixed desktop/mobile viewports" - "Manager-wakes routing uses the existing isolated sample Console, a deterministic two-frame first-generation layout-completion marker, and browser fragment history without changing project state" - - "The later-refresh viewport baseline is measured after the browser applies the explicit wheel input at its next animation frame" + - "The later-refresh viewport baseline is measured after the browser's scrollend event confirms the explicit wheel input has settled" - "Newer evidence is introduced through the sample's supported preview/confirm API before an explicit refresh" - "The browser test advances only the isolated sample API; it never submits the priority form or mutates a live project" - "No network, live project mutation, retry, sleep, timeout, golden update, or direct fixture-source change" diff --git a/test/fleet/console-view-navigation.test.mjs b/test/fleet/console-view-navigation.test.mjs index 29b031a..1b10634 100644 --- a/test/fleet/console-view-navigation.test.mjs +++ b/test/fleet/console-view-navigation.test.mjs @@ -141,8 +141,11 @@ test('SCN-console-operational-deeplink-layout-history-and-refresh: Fleet deep li await assertManagerWakes(); await page.locator('.console-rail a[href="#work"]').click(); + const scrollSettled = page.evaluate(() => new Promise((resolve) => { + globalThis.addEventListener('scrollend', resolve, { once: true }); + })); await page.mouse.wheel(0, 180); - await page.evaluate(() => new Promise((resolve) => requestAnimationFrame(resolve))); + await scrollSettled; const beforeRefreshRender = await page.evaluate(() => scrollY); await page.locator('#refresh-console').evaluate((button) => { button.dispatchEvent(new MouseEvent('click', { bubbles: true })); From 062bcc523965137b473f392898bcf7557f3fd48f Mon Sep 17 00:00:00 2001 From: thePR0M3TH3AN <adambrettmalin@protonmail.com> Date: Thu, 1 Oct 2026 09:15:45 -0400 Subject: [PATCH 48/51] TASK-conversation-console-workflow restore refresh viewport with positional scroll API --- site/console.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site/console.js b/site/console.js index fcebdbc..94102e5 100644 --- a/site/console.js +++ b/site/console.js @@ -1162,7 +1162,7 @@ const refreshScheduler = globalThis.TorchLiveRefresh.createScheduler({ globalThis.requestAnimationFrame(() => globalThis.requestAnimationFrame(() => { if (renderGeneration !== appliedRefreshes) return; if (viewportBeforeRender && consoleViewRouter.userIntentVersion() === userIntentAtRender) { - globalThis.scrollTo?.({ ...viewportBeforeRender, behavior: 'instant' }); + globalThis.scrollTo?.(viewportBeforeRender.left, viewportBeforeRender.top); } if (renderGeneration === 1) consoleViewRouter.afterInitialLayout(); status.dataset.generation = String(renderGeneration); From 7ea65992db2424be1e8242d44b1dbb2b9c6012c2 Mon Sep 17 00:00:00 2001 From: thePR0M3TH3AN <adambrettmalin@protonmail.com> Date: Thu, 1 Oct 2026 09:21:30 -0400 Subject: [PATCH 49/51] TASK-conversation-console-workflow retain browser scroll trace on scenario failure --- test/fleet/console-view-navigation.test.mjs | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/test/fleet/console-view-navigation.test.mjs b/test/fleet/console-view-navigation.test.mjs index 1b10634..fba1be2 100644 --- a/test/fleet/console-view-navigation.test.mjs +++ b/test/fleet/console-view-navigation.test.mjs @@ -141,6 +141,17 @@ test('SCN-console-operational-deeplink-layout-history-and-refresh: Fleet deep li await assertManagerWakes(); await page.locator('.console-rail a[href="#work"]').click(); + await page.evaluate(() => { + globalThis.__scrollTrace = []; + const nativeScrollTo = globalThis.scrollTo.bind(globalThis); + globalThis.scrollTo = (...args) => { + globalThis.__scrollTrace.push({ type: 'scrollTo', args, y: scrollY }); + return nativeScrollTo(...args); + }; + for (const type of ['wheel', 'pointerdown', 'hashchange', 'popstate', 'scroll', 'scrollend']) { + globalThis.addEventListener(type, () => globalThis.__scrollTrace.push({ type, hash: location.hash, y: scrollY }), { passive: true }); + } + }); const scrollSettled = page.evaluate(() => new Promise((resolve) => { globalThis.addEventListener('scrollend', resolve, { once: true }); })); @@ -155,7 +166,11 @@ test('SCN-console-operational-deeplink-layout-history-and-refresh: Fleet deep li await assertSelectedView(page, 'work', 'Work'); assert.notEqual(await page.evaluate(() => document.activeElement?.id), 'manager-wakes'); assert.equal(await page.evaluate(() => scrollY), beforeRefreshRender, - 'a later refresh must retain the user’s scrolled position'); + `a later refresh must retain the user’s scrolled position: ${JSON.stringify({ + before: beforeRefreshRender, + after: await page.evaluate(() => scrollY), + trace: await page.evaluate(() => globalThis.__scrollTrace), + })}`); } }); From cfb69b490037bca119eca53d6f07bf29130065ac Mon Sep 17 00:00:00 2001 From: thePR0M3TH3AN <adambrettmalin@protonmail.com> Date: Thu, 1 Oct 2026 09:25:46 -0400 Subject: [PATCH 50/51] TASK-conversation-console-workflow capture resolved approvals in their owning view --- scripts/test-dashboard-demo.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/test-dashboard-demo.mjs b/scripts/test-dashboard-demo.mjs index 3d7f71d..edebe51 100644 --- a/scripts/test-dashboard-demo.mjs +++ b/scripts/test-dashboard-demo.mjs @@ -298,7 +298,7 @@ try { assert.equal(await livePage.locator('#task-create-form [name="title"]').inputValue(), 'My unfinished task'); await livePage.locator('#refresh-console').click(); assert.equal(await livePage.locator('#runtime-profile-model').inputValue(), 'owner-draft-model'); - await selectViewFor(livePage, '.approval-decision-form'); + await selectView(livePage, 'flow-watch'); await livePage.screenshot({ path: screenshotPath('torch-dashboard-live-refresh.png') }); await livePage.close(); From e8c4c4249e49d91393394ac205d918826ddd1891 Mon Sep 17 00:00:00 2001 From: thePR0M3TH3AN <adambrettmalin@protonmail.com> Date: Thu, 1 Oct 2026 09:40:07 -0400 Subject: [PATCH 51/51] TASK-conversation-console-workflow: preserve strict navigation evidence --- docs/TEST_INTEGRITY.md | 3 ++- scripts/test-dashboard-demo.mjs | 7 ++++-- test/fleet/console-view-navigation.test.mjs | 26 ++++----------------- 3 files changed, 12 insertions(+), 24 deletions(-) diff --git a/docs/TEST_INTEGRITY.md b/docs/TEST_INTEGRITY.md index a00c692..d4eb51b 100644 --- a/docs/TEST_INTEGRITY.md +++ b/docs/TEST_INTEGRITY.md @@ -2620,13 +2620,14 @@ test_integrity_note: determinism_controls: - "The existing isolated sample Console, fixed Playwright clock, and fixed desktop/mobile viewports" - "Manager-wakes routing uses the existing isolated sample Console, a deterministic two-frame first-generation layout-completion marker, and browser fragment history without changing project state" - - "The later-refresh viewport baseline is measured after the browser's scrollend event confirms the explicit wheel input has settled" + - "The test establishes a fixed nonzero numeric scroll baseline, observes that exact position, dispatches the actual non-scrolling Refresh button event, waits for generation two, and retains the exact scroll-position equality assertion" - "Newer evidence is introduced through the sample's supported preview/confirm API before an explicit refresh" - "The browser test advances only the isolated sample API; it never submits the priority form or mutates a live project" - "No network, live project mutation, retry, sleep, timeout, golden update, or direct fixture-source change" anti_cheat_rationale: prevents: - "Capturing a view other than the one named by the scenario while retaining a passing screenshot call" + - "Passing scroll-preservation coverage because an unsettled smooth-scroll or Playwright auto-scroll masks refresh movement" - "Reusing a revision N preview after authoritative task evidence advances to N+1" - "Treating an unchanged preview on refresh as proof of stale-preview invalidation" - "Passing because of changed screenshot expectations, weakened assertions, or bypassed artifact provenance" diff --git a/scripts/test-dashboard-demo.mjs b/scripts/test-dashboard-demo.mjs index edebe51..258b330 100644 --- a/scripts/test-dashboard-demo.mjs +++ b/scripts/test-dashboard-demo.mjs @@ -231,7 +231,7 @@ try { await page.locator('#owner-briefing .briefing-detail').first().locator('summary').click(); assert.equal(await page.evaluate(() => document.documentElement.scrollWidth > innerWidth), false, 'expanded briefing evidence must fit mobile width'); await page.locator('#reset-demo').click(); - await selectView(page, 'flow-watch'); + await selectViewFor(page, '#approval-request-count'); await page.locator('#approval-request-count').filter({ hasText: '1 open' }).waitFor(); assert.equal(await page.locator('.priority-urgent').count(), 0); assert.equal(await page.locator('.agent-row').count(), 6); @@ -360,7 +360,10 @@ try { assert.equal(await preservedForm.locator('[name="reason"]').inputValue(), 'Review this change against the current task evidence.'); assert.equal(await preservedForm.locator('[name="priority"]').isDisabled(), false); assert.equal(await preservedForm.locator('[name="reason"]').isDisabled(), false); - await preservedTicket.locator('.priority-change > summary').click(); + const priorityDetails = preservedTicket.locator('.priority-change'); + if (!(await priorityDetails.evaluate((details) => details.open))) { + await priorityDetails.locator(':scope > summary').click(); + } await preservedForm.getByRole('button', { name: 'Review change', exact: true }).click(); await preservedForm.locator('[data-priority-confirm]').waitFor(); assert.equal(await preservedForm.locator('[data-priority-preview]').locator('dd').nth(2).innerText(), String(revisionN1)); diff --git a/test/fleet/console-view-navigation.test.mjs b/test/fleet/console-view-navigation.test.mjs index fba1be2..df6c9bf 100644 --- a/test/fleet/console-view-navigation.test.mjs +++ b/test/fleet/console-view-navigation.test.mjs @@ -141,23 +141,11 @@ test('SCN-console-operational-deeplink-layout-history-and-refresh: Fleet deep li await assertManagerWakes(); await page.locator('.console-rail a[href="#work"]').click(); - await page.evaluate(() => { - globalThis.__scrollTrace = []; - const nativeScrollTo = globalThis.scrollTo.bind(globalThis); - globalThis.scrollTo = (...args) => { - globalThis.__scrollTrace.push({ type: 'scrollTo', args, y: scrollY }); - return nativeScrollTo(...args); - }; - for (const type of ['wheel', 'pointerdown', 'hashchange', 'popstate', 'scroll', 'scrollend']) { - globalThis.addEventListener(type, () => globalThis.__scrollTrace.push({ type, hash: location.hash, y: scrollY }), { passive: true }); - } + const beforeRefreshRender = await page.evaluate(() => { + window.scrollTo({ top: 347, behavior: 'instant' }); + return window.scrollY; }); - const scrollSettled = page.evaluate(() => new Promise((resolve) => { - globalThis.addEventListener('scrollend', resolve, { once: true }); - })); - await page.mouse.wheel(0, 180); - await scrollSettled; - const beforeRefreshRender = await page.evaluate(() => scrollY); + assert.equal(beforeRefreshRender, 347, 'the deterministic scroll stimulus must establish its exact nonzero baseline'); await page.locator('#refresh-console').evaluate((button) => { button.dispatchEvent(new MouseEvent('click', { bubbles: true })); }); @@ -166,11 +154,7 @@ test('SCN-console-operational-deeplink-layout-history-and-refresh: Fleet deep li await assertSelectedView(page, 'work', 'Work'); assert.notEqual(await page.evaluate(() => document.activeElement?.id), 'manager-wakes'); assert.equal(await page.evaluate(() => scrollY), beforeRefreshRender, - `a later refresh must retain the user’s scrolled position: ${JSON.stringify({ - before: beforeRefreshRender, - after: await page.evaluate(() => scrollY), - trace: await page.evaluate(() => globalThis.__scrollTrace), - })}`); + 'a later refresh must retain the exact pre-refresh user scroll position'); } });

L82_1DXdtWTg#C^0y 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 HGylH;D4~4F literal 0 HcmV?d00001 diff --git a/artifacts/TASK-console-ux-audit/desktop-evidence.png b/artifacts/TASK-console-ux-audit/desktop-evidence.png new file mode 100644 index 0000000000000000000000000000000000000000..8ad4ce832e423e0292ac9270231d9b8fe09ff870 GIT binary patch literal 55667 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 *w@0~pXRCk zY;by@VkggOhRwJs9h*65swKrJUet6IK){*yOvlB6ddDL;K1HB+(i+0Lzla-PaD@Ib zYAwJ?rx^g88gRzns^?yOjFBtz(VE8nh{)?*1walpXt$YKB6M(W!QFFZF|U+oZ)2NV zI*+#dsr*nDUc;bY4r`ma{IW50Ulu_a<5P`JUjK40bh&yE>A5BTObk zT0~M2G%$;9SX&_>vc?0T?ZgKwXhx^>Yo>YcNvml8F`xTEeC5Z{vykpm*vRbjjK${h zJ@Fn5%cy3V##`jx&jB);*S$kiTb1KdX5)feZ-#8$yrOD5co4FuBT4$K&$&z^dN}34 zDt|ZN=Q~oqOP)^x=VnVSd+Y- zkIZiy^)iC>!8d!6kVv_#>r(fpLh|IfEc{j9dXTjugTiyaAL5KUnDiU;NA#;NC9rmG z3-KW!|56;4R>pu08{G%(5i!)sQawf+TxV@IDx&623!&fy*oxem7u`w=*b&5p|6-QXV{G0*dw^DG93@hSk#BBv!=$^?lT{G!M~K#IbX>fg~& zjNo+Cj0GUnKh9!Woe_QE|%hm3siIBU;rVz1s@F#~~^TN`22 zdSPk208{KDLWDnsb~t7~QB_6)2ati|`cC1oX+Q6953p%OU^1epipc4AW@J^F>t)~J+aFAzb4L}wx@0NI!$3?-Wh!jJV@(3#p}yr#5&_bzKKWfa zHiyvaVhOc$Y9I6K9i)Tb1Jl0xggn;I_Wx}F^pTwT96I<~_cqt^iU(u|7{kBEeHfDh;L+>IfedB#2s zA1}Le^k__8*HH`DYV{#Ol2a@`BF<}ZY@-jnZPxeTGJ5ltkgE?4wtan0pj9>OcNIm0 zkfLWH_L^p;A+N*oYlklUa62O6KN36SUMn^mr6J387WQjX%uiaR8yYCX64-OMX?rmu zikv8o4n+lck?Lu%7d+sv+UWjbbubTk8Z*#} zVHT|xvUiwo1HyyoHY6Hu0mU8N7_EF(nmo9w5=braA zi#0?rFJH;L!@I4x_s4goYMkJ#A$ZS^;RxGj$2Dxjbcl{@{#NlCaZtX=JSF2~HdW{F zyyKwBd0iT|HuPrPVe=->xz4=KhTyX$hXWq}C|x{PxCO|VO@;U6^}>1HRS~RGxORIk z(M)$`LienSGT+&MwY198MaEluc)*QM6M};yT6q~|D~1MR&p*Gc$ye0Yu00UT)CCSq zladp_ETR%;f{{{EpA#7SHX6P$b>~FU5-MZ!0?VB*?z8Z@8gWfXhD%=k9LYU1n~{X?9!)_$4Os(^g5q#|YI#{( zZ||Z_IOw?ihmeG%$&xaF6VPHLTv^&8%hv{D>X>NpVxw7ZMNc@izaO_pX=d+g`^VDPw4JajKBF2S z(VZjIgcXCwi|O0%izPBolX~_Mc!KO4HUs?;pLpfmyn<7*p>FKnSLh%7eNQdLM84`V z^pW3chlKJn?svb)`)pFhlf#`Vt#KdX`bKf8)?Cfb&X&2}k1(<*Emh}PjvL^Yjm$}D zxAlYHgA+5xE922=7Uyvm!Pu|Im(B+~S*%F(`+)3q`QLbP!68s3UkK#7HngmJWwewG za}GZk5UtfqUdtO`_KPS9Z<&i)Rdt%_Uy1h=JCUVpig$R$QzKiYPGIAM5R_s8#qqgm z>?Bm%Z)?WZi0<8!VjVvD1jDh(7XrfUc@@HBYFE;{b+$Y1r-t7HXv0t%6hVRULOZyF zo)(`3rO~UVjIV}!>B@DlaYlS_F&uz@rj83DdnkRpHk4Y0XM6r^Hb{GZ8eA{^LV;lQ zwyZx_{?%G)=UHeaWJhh@Hyq-4yb>?Xwd3htzQLp%*V$<4;Xvltp099k#WkhrwRSOl zhgrzkzhUZ*lXKU-t~?E?(0+%FX|T2puFZaJESi_M?-kDEEsO(FHZ2e|;Hp^To^P-d zJrpl1+f2vW^4cLuE5d;#7*}7cE!V&uCiwde^TSEzfhp*$n!A=^h_O$di&J;H_!ZdA z8XVRIS`5|@X(>e*k1Tz`@9*ZhC=r)ihB@}iIPfT@#GzAX?Xq`@!`1`^Y+Lno(H|=M zcn=-cd{*2?^pakA(-1sLOib)UqRstgYHZYXKr8(I$DWT!5*=3;Y4?!k;FoIclnh*e zL@9Y+I`vsl)|S_I*W>L{Kr-#kveu~du5H7fGsFcrj|>Jr$Hoolp=&g#BF45Pxm+D- zg&M7CF_A|AU*DVea5v2t!%h|O{t}p?A?PunPRKd8?wcTIOH~DSAn(DfH zYJd!WVTHF=zj$nou1%K}Q_Bw-7^JZ0hgZcL$;Rn9QxVaxwgsDj&f5G-0X(hj`>Yb@ z4(*%$)(J}L7zV>Aqup)~F68rWb$;5@N}hVNL3}~ZMO*L_`AeMgc9I#QPA0{2W}Wzj zw~A*||B>v?=B~5@tEGJZ#L(tBF?IY8_F5ODOU23r3@eg z7-*9rf=DqAl68Y>%p=rF`!|ZJLAZ#+C@nc%v4({oPqHiqjLAM4m3S3bD#=AdgC7S1 zd%W5LG_(`|XAs6SzV{v(Cr=yo7GZqJn%Rs%KTrg-*5dN0i1A!cf^78PiL))vhQc@352iG+pDDv|$)(ZceMKFypa)*6R<6DmsD&7{r{ zusElETFVS89z~~lOuiDr;nXELpSTt?aV6ui+%*0`m`y3o3cIX4QXI$=gE? zK5J!MiTfdiW34h&z@lQ9CEhyUaUW0mg$%f^&dS`RXzOMeM(Cbto!NActJO;M-20n5jPtsKEg|t; zQ*aGCpIMEuUA+hmORup7_l)mrRy8bYwk$>aJ{slFSv4TK9@Qt>A0q>ol)`fTu|6{4 z@bq2@(@&cuyEWTKV2wK9He}+)8ii%^2Yb`r22Y=ICJ?xB)pUy88cG8_&R80FVJlch z}I`;z3hiu!UN!O z5C7O;i8vk|J9toTwG>UgaLM}cFepB@_tp@>ouaxt{Q_o-q>98;&P>~txJvOs8z?({ z41h4@qNsSOM1L<{SU*z_>jq&=7CKX%wTytm4Lu{R|&ptmny1g7jG3mQ#sWxUf#1(mf`M65L)UDTm_x8ycyZOOId%~ z4ip5yyftVl@JTeFP`%U7WRF_d7l_MaaT2ds2OcGn=DBaeKJrxiqx!xGBg;L>K2CmRbBNCz4=(WF zQAujr<78j@C;C`{^7i_tn5k%5V5Lb-#V|QIEADD(G0FMSg%cc+LITzo6MpZ9N@}(W`ZGG+Vj9pjb z1YX$7o9UJP*wTGc=}{Cg#bm-v5l*W*f{a(z!U9whNiq&~R>uTY-lpcYEg7#MC)uJy z;*m7F*!6UUhN7<64~QCF-SEu{w0O2(a6&JT%I0N?yI6u$Gy>VUg4}n0Pt$)DTvEFb zUr{D$Z6kqq>j{PcU=mn%(-kQ$4*{8K7KNxG{tA_Q9Nv?=Xpc$5b#H|q^$%A5AWOiM zHv{mRubVQBGxlL49e5v}xWIc&Ld0;p-a&Z`Hy85tg=>lN_Zr16Ou~!9KW-g4b_kob z?b~__fuhZc~g5z&p@i zKx%zAQBL}3%~lt~hi@y5Q9n%;w@CuNMVZR&b)Z6{aLf%XS-Au(y8ig1R+j<%ua!;2 zD%~B6$Gfu-W4WSRu4gAVbQxXZbK>5j&_n3~j~zuudq1>&+^9_Av>JQw9!;8&tmk|E zoSKrC@9!x;N@8IMliU3qo}zs1U1vcRQ1~_fZ&UQijcHpqLc2c8n&lEIhqH#9Ddyx^ z0$E>6=WdteFG*j~;8i1jsz)~N%8;2mRpX7= znW9l0Z$Q&a2XEz$Kh~eWyE20ChD&aL(hGKaiXxlBp#n|GnlGvW;RYcgx0I^gJ!iH!wo*tie3Y(jAx zMxUaD*@S1Sl-9D-k5IH9XbtM7l{QjK#h=TDf4Ei z?XISKMul6|+$FLTtFDf=a=NSZt1-@~c=c9X&YB6Z@DM?Q01+Rj=RIu#RmY@LjFsC1m(MCJewoqCx=U3{T6wLN z9(3Q1(PDJf*?o1zqx_+r<%_cR`*OK5r&YaC(sdu$YF^&>bwU$y$z^x;m0k7Ci<#nX ziOP4Pbz+``X$p!0GwvnCpMvb=`-OGW)V}=)``~Em zAlZ#^!46Gd%We5`zOX;vWGt<$+8wmTK*O7y8Hi$}De9@%Zr*?=@N5?QDDe1@7yk!8@ckR zbgdiG@y`U=Ks^l&9Zc)8=bG+B@&EZk3CuZ9zEp}&R@(d&hW7(PJiFldiy%Sd=-2-X;*kb9p8DU7jY2i7 zB4c2?zkd0e&&Hr*9vc~}vfINOAJE63FOWZ)JKdH0D51Ip>(E-SKB1HoQi;^L!}_QqZ#<0YwGwlZ7;FzV zf6x-b(O&9IkPZa+f&dycoiQ&alawRCU9%jOruBKTN z&Q}k#aEdiNswlR5t3H*slsYItB*x}6yEn9$TTrB}TcZlGu&gO@uYEumb1i0iw7K;~ z>HORUYF2D`ZVMQM@+Rw(+1W!*X%!8k`~Cf!KrD2P*H7;~-U2jz%JxN4PX?p0iM4X8 z7Jj44sw@(#)@h(+mSCj0I;5o7 z1N)zZq4VIH%2O4hdYE|OL@VduYOzm#PxAkzV(=9&n)olnS|7=rDm^rN4tK7OT}q_Q zX$y@lhZQZ z_P9}b+A<2wqa~f4xc#%@J*5Isc}m)9SuDwyK`DaXrbWbm5xn;^;{0mM-0z7@hpGSk z5XO%l&CH&jnB^=Jw`y)w*y?L?o@S|TLUT%OMsgS6%{2}3#fxdA&18@y#mh|3NoGa% z`hU!C`p6LH{CJyM$EQ;#H}#~h8FU^?8D8^4JdZ?Bc92BtBk4I@-*zH;C^*}Sj3>=A z+u4@TQg}7EItmu-CutGo>G7thSQ}hJ%Fz1_I_*~9N5Z`-8jT%0haB-)Dw@Q&-^JXa zfA32B;y@_YHZTY0RV7G-x6qRXt=&mH*L`%18Z{h$+`VyC9Sxr2_*NCAw#Zx`Thm;7 zc+ew0`0=~tm>b#Vpq@q0j7Fjh#*=23GkM-wqKPh8K7#nyM+RHrA&4>YM)J~@18628 z-8QLhqdK`{Q=IQ`CaKsi2EyUD5=Gdv7?AnT`_q5>h4^gY^Zu^q-|(GB<&T$6pV8e; zV}l&Lcq_Q4iRM$x{Qwb{GR>V6=@c0gfMfMwT(>4E+j(J5JI4%b!~5T)GGji_clOA& zJ)je&qB=T&B{Ivq{ajVPc8}HLa_*zv zdBAv&e$mJ32yb?8s~8eRMsL*}#LyD*7K)*blY~>2md|E8rz%IH|NflkDHP?U;m!}r zmev)EW>)Q~R>qefl`s`Enc}hSM+FL>JyIPG*rNXMz=e4K&sVJ4{s4;v)wPZo5Bx@sQjg zProD!df5y}iUM$@s`}(4hR0&;h87^ zXGtE|wsVX$)me2nl;FI(Z?gU(Xka{CFN7w?sg~@2TTK+N&Y3ff`W!6dvM1=%aA=6i z@>T;t{0Z^;bYj^mC);m62YpWs)JIdj`QO+VO{_KLzChKmk=wmPyzZTADPwMT@WjnT zQRx(qQ2O$kK=K-l^_rR&`v6!m(1_d*7-5>~HTr9SaFpk70Rcmq9Mx|bLny3wyrpqPflf>&&M2)!+ilRtMScsLP z^AIQFk&f8i*v$|8GP=PZX|&&VQp9&Ywbhto_G6L#jm0NFnv#2{WuI@fwv7Iy^z?3i z&h?!oE&8+e7$Q{xvyE@M#k96Vu813L6qyF?0h|I@)b;PQOW5dy7{++4s81|P8(3be z+;-!?Se4>JRZ1ls9ys8#&Zy|lFwcyUQ9thnVJV=_hlG!%5h+^9(qP5y_JRq-iufbm zus8KJ8O0t8J6M8x56{CVe-U_$nx~G2ZghEp;Va0Ag~B-s?DNACya$PFV7rDbdD8q}rRBy+@0IZ{9tIBlMdG>Mx z@~g?A;|{OWHGNKV{p+LjLk9%~rh-?{9C<|XN7#UTC^%#I*w%S;TyG{;ujr90b0uTt zi_=yA@CRZvD|_V0I}5?7h>iwAM8VY0PXma#HN;2dZ_-Wc2Xy32&E0GHbGj_=d<8~m zd(8x*NW|+`hrJ&fL;}7UmC9Xq$Et(e^aR0KETKF78bc4)i7C4poMrva{ZZsGI}1Op zdK|B$)+_MwfE2Zgzrq2HRd2R8mp8tfOSoZ`A~@VXcCFw4{73tLXe#N#YS)Tb5|`N} zI*q<3F`l@K&;FzjGNKDDi76?M)ky|BW0Id7G9+>$tVPcwY(Rw1em=V+dwEjC^XZJv zmZf+o{X7~AS-{a>SSJV~<1^@6UbT$XGKU;c)}e(OrL(0UEqV8|H|&@}ZFuLZeSBO( zz6yASTZrrHS2S`Os$5HocS^0^OZx%D#uL-0(w)H0WQ0%k+)^<_%M4(`z$W&EcL~9= z@$It;&^BeWqPdqZSaJ9;pUTGB>0r=BZ4fp99kCMqEfM1!I#(G2t^p7|d^C+wKdmWV zl~E>^Vch|!muR?*izKT4;nE77VmvVv(s9+gZo$+tt6#3=n_DQAqX^BY8FH-F8#2~b zs#88l@X5u0#KbtX z*G$RJf--XIdHZoT4xTRDdP{SjmzK#7Ju;I^yakXB;h>#$Nju(7Kk36>lKENe3{4T91d~L&5F5Oa51Qx zDpvsRoA|m9#$aDm2{wVxpKr*= zha~((u);q&Gwb_!NZ=DQX4NVcKL2I?`4+uW*kGPsb+z&agPa+Lh+@^c-Q`c(j_qY| z=noTI|E#c_`ruPqW$?CA8P_7q)XYlwQ;9t!XPx5+P@%3Ae_;HX;xu)8sQR?6;uLiQ zx)&9T7Z6srR<>&CfmesoL@4#I-&Fs1xbTquk^Rkw<=odZmt|dCLEQfhRE@IvH&XS< z1N4g1tST!PMFAXrHTARl*=!+)lEn0ax8!NaRjj>ZOUjkvP4EAm`sYe;1yC<6wW`SU z_2YZ(-ex_2$ z05s;MPqES6{`QYI#n*qoG~VZaxOXfkFZH5J;>%uMw3Q9-mp$Ujekq&{-1S!%KrFTOQJrFtyC`|}W=>+K@ zy@U>elzi2b%JHvhn^hVw0SD@!0 zRPR@4*BTR5a;!trvqrrx)b5sR}}FH;0~cJGP34UFc&JJuyJ<;CD7|1sXv zXK$Py2tV4KwU~xv!jQk!lzdp$iqkW;qQBmzAsNI%H56O~?7ETrTRz@jvk?V65$kEi zDYwbXhZy59(#%khf0NgbBX50)59!T5tbOSLAsnNwQ^oeq2@?sLAWz^}BO~ATuC)() z(B!@*K|+sVjLVqq@d=#B&cy$~DgAL^PZJ`d^uIgc`M8%YSwC&is%}y3=ZfmgEd^>) zt{p##QH(_6>}2^F<%F%IR^a`k?WMPOnYWTQmVQ-N#JMUO7NF(y#tSFFF)VhGFJPZE z6SR3fAUTcKtuSkZ@i53JXReN~c|l@Mx|LNF1ML_u2sbE5C-pit60}( z?3v{$0ZGj@ON?>j?=T5!dSXC3i`cG`?F2QLdZ6BT+6G5OA(&%g|v!=>gC#o*X8 zA0~nvQkNW)c6Bz7nyX`*wfCg9wv}%# zEIg!C3qcH2Y^EXk6|c)Ib@WdrzqD+ic@AxQM**T~^JZ~vEytc~Z3jsKpOhCmeLSga z=E0L+ramrp^Cu2BS$7jSAEqmW-2h1u=myr2-~eq?o;zfKz*w&Bhg^Zn!-)ya%at&d zT9Kb!UQ0`BKC0{mJ|}|)CuhM7mXCzCur3N}n!=_RR~Cg|+Copkz+o?g!4~MFO;e21 zR_CC-O__+`=2Wn4P=*)W+YBPqV~2SWI|zg#rP9aS-{&o$A=~E+I3qsp{_o zd7j|e0A%OV2l|11?|A6q3a)7_dE#?S%)eH?|M2R6CV8+7-<*0`s1?!loh@Z4%#4AA z+cus`j6Eq!}^P}c23&kAS`BVE$ zypXKvb7V8sO;lzSJF)2+>9f%T+|5HK`d3NV$U;3>n-@$s$gdMdj1pgaO6|{xvKW(; zzp)R+I!+flu!TRcaZ^t_<~Tt1lh?&aqXq7NfG4RpNtQbfc*+xT@L43Qw=-zL9=v<{ zqmKN6Z54zU{AVCGdy&v$cc@(T@1Zb%*RZXW21w9kJr-^)(P0b`KM!m zau3f}sR^^wj<|_ z^Ajwhe90CiVFyQb9vh6(F%HASzy2)QdA&IzK{Zl|Jw>JFEQK3KDU*hYsE2*a+hRIx zZO1$>zcPf$>Y~$zv9ZY`^I>5^$r3_3my{WEPS3rIw5DZ;;3UkC~9f) zaYy~Q>P!Y|l@Gr8_TD`@M%0TjA1Xy143gsWm25`16%8QJLY=m60pOCI= z;8d}?B-!ft`~PV8ctOq;f4R`wfFBNk4vU0a#$25Q?vC+b*-ciplb|MbYp!C%*&Y7h zzYz12q$@p>oK1N+n}nP_nyMqXM~iI0(?L<7?;nT>k(fns;X;FR8suADowRR^iAetf zzhGlv^{ASfm%pu@vRB(DJlfP_Oz??lo8|+aXWqS^7SjvKQpcY20gp$Ff1GO$As#}gqf~cvTU7-l8pk@nXhMYpT? zpr)?CS%Ae5fPhKhBG8DqIyTL6oiM|fvHMUnZ(6Z=orJ#r-|c7~7QP`C)GzZ!*(#f# zr~c1a`8T&cMo0zA`=kS}xNtHOR7>vsWIPJYYfWX16_$ZkUj7dPp^>1qV^7cP!RYJP zHQT9q?LWat0aw?VSu&{5TqD^KIEB_Hz}#n#O73;WXSM0X)b3SUiD&$Fw>A{(`o_X` zy_iqc1=qm^W5s1JOG{=8$*VaXnQd-KneOJ&OSrNFv)G&Zc~BV}IThP_?d&M?Pcw0a zu_3`J3Ccv?B0u-zr`Sxp4#jQ4HTqwH-$7u&%Qoo=_%60W;&RLT7*QaI5_QJ(+fnq|p|IAIdM8J>HiPu0>|yFYL&a-JfEdy6tys&4VAH zOvco{k3HB*v)TcGNg!>&qs>alXLOxzB}T z4fn+pOn=&1{{p8bmAMT~2@brOs7mpt#}|KaWbY<>ENgvjzk z-kmJD%{9oXZsA+~X1~ce>DjapDtpSsP5;m9pE8iW*HHMch_y{ccJ0aV#enpt8O5(oF@T7ZJ(J6UKBo?RR^$B z_x6`|kt!cf!^JG|d;P=ItfGUYoRYjD@%7ySR5xeiYI-oQ_I21Z1FK=Rz zpMJBUu>iH?t^mqUO?H>r_-83Tog1qC%-^vfITqdvsJr0ZN$?jBJ~jhnqiO1kRtMcy zzE?)NbZ4!EK7)@)9Piyh5=78wV^&@gEJBaRl!JAOmZT3r7}T3^B-By<2aWDk=HpH0 zYE|8nbB_`mY(CVSd$OEHF|P%HQ!|bv4AMW+5Wup3*c;yBsTL~tMw*Nl8Y`uazaQTt zg-70Aw(RO|)9a4AWP0D^hA5R6m|f7^)hv^hw!Y0OB^kROzMAtkN9aU1^2Lg~hBoG; zLQDsu0a+d^Ro9gcXfLG)iF35}5wi?STYIgwkrh8Xt%RBbrf8SE$Uzf@-)Kf3q-6Zz z9+immin|jqLc3XO@Qn>p6G1_?Z8uF;%H2m!o@ScFF4&ziL9G1Bv{zf)04O9cmRaq=UrPX=sn*5^&}^?`;_U{i;Pq{kB{CK!c`Xp zh?pxM7HhAQDtZ+UiJQBY!sUXRy(T=0GV{8+K;pct3>BsyGG4X5l-x23w0J=N76O7p z@&pxz$+uR%$+6f9LMY>>=TjO%5dq6=f^l(U$bGt|bu?Mx#rte`#9u^@Smm|g_-91{ zLQAs~kM!fWWHD^w8N1>jv6uDked?CBJ{ONJv^Vi53~#Sh(aI+s2=~WNz_tt1jetdR zl);*9^2CXD78sP&i2K~Q?~>=E6AWO$8JlV5NLMh|$7 zAoP=S3gt&4kc?KNesU&0R8q)kztW6A&YK$3H+`k$$Wb5%Vw5m58E~W0lbyxRfkCf) z>!4wD#ku^${?|U4PD|J-k*$p1#l?EaTT=M@U*!c!nj989^XD>aseq)aOk8~YL_6^G zSIGO7vdNOslW0B*HZ|~x+-Ym51lZShiygVP7O==mW=narM#N?&%lMIu-m^VM)*k=z z^X4Gwz0%${#(XK@7(1x1*7tpY;?};QG_YcXC-!K--0N;~@+3o4L3+*Km@?Xb=sp;= zWdb!fsSO_{emRd0e&EO`siSkaEt`_fhK!lbd{9L!jAY{mvr|MY!(I6i>IyNHIa^PZ z3d^SI&!#h^Am{tE_q$xgtC8^llxWr}R~6ke0Td{Rt{Aw7Z|6VcW&K?tCYvH)5|%|B zSKDjp2&agiT@{Rn*5D8(+@24k>9oY(oFW)kgBgoyURSxP8zI`>h%-kIFT~R-p%mH< z(f(qOhk7d^Qgd$&TU}!XZI2a{FcUX4&3-<+Y#MFna`auq*GLV5KmA2CN>CX6%#T@5 zG|or@t8bHS`ecg#W^6GOW4l+>G9_J-+@4y^=@(Z<*ixjL09?NwAn#n}(5ZZV_FRf} zsP@9CCO3DirZX0Z2FidsD2^9bv(|7U0y`WR3(at-#Rm1AUg+VPWDsuSH_caraS4dI zKP)1i(1>Tvx#PA+q^k-P*b$m>kXCm9p{o&?E*0n6Fm$r|UQ>WogI)}TtR>ER=Owzg z{wo8>$=1CZm~l9Umf@CD$5Sohza-uAzY$O->S=y_q&o2vq^RT(94sE4cj8;J6A+TQ zXx9iMBi|8wh@1WnhRluNMjht_{d8b!_aF`ceT1p)KG=LjA zHth(p;w+OK8Ck!CzQkOGh_3FK!m~lM^;F@T*eOhI2H3c5FX`bTi7jx=+)HUa=Vpm) zu#=!C8o|1ZRq3h57TM(6*V8MAtzH||(pq*U)+bIld>K(3`QEc)^Dskq!i#3!*Wbs? zl5Oh#IHyy?Nw%Uvm0f5&e2%@j2{_0x4(L7rVR=|%+`O6_ziodi-D+vS(syimQDYW1 z<1r>0z8qs*a7Xf19y17Ljr)bk`ihHNg61R)1l<>!$}jbRqoK5r$0uG-q8U>MQqC5G-Y-sE-FM)lsY@lZ-qAz`IF!d4S9ZM z6n<0Ls^5Pb(Zr;ess|}muIfNutQB?7)a#CR9+?sPHysjv1=kI0iUv*LWzshtC-%4Z zRsv})Y>L^#DT(){(UoMjwmv+Z3`@EhMiR*Jw)$58o2Z+MZy7%F2HqA7%+ToKTIB{_ z1@RuA{tBGB+o-X;AOLqeIAs@8F)}Xyu^&X4o&X$!k5y2UTFZH$l-CnPJ1;#;4T}o| zp2j&k_e%Qli#{F2N)AUCEKz6uswCrQ9^vIh6hAV*e&n7L6&3U4pCOC$ST;w{o^5=&J7xf27l^3?|AE~`PzB3c( zwQkgau!A*yWQV)m@j-E3fYHj2EENWFiK`bgRg{>adBY4K&!XADaEj61u&gu@_~+p8 z82$Ye`?3FyC9L{NYBHi;vhD{FGZE;>fHp6uedf;__pIW;y6c{wK;;{ct`>4O9{l>@ z+p0LEbNq?+{{R1l|IdC0bStm*bS5YEHMz*&#jotDQFXzVNM(pEZuINd$<<0n&)q)PS~#La(TBs3M(3s>=9D^?f+ItPz?t zmQ=HOc-{*NS1%$m6N1J|W?PwKkR}$Sj1Qq7swE=G+y*>J5e}#kV#2|N6BlJ2v+y|y zSK*2=ThpL}TAgtay@%Hk5$`dvvP0BbYfpnuwz^)vvlefrjhm}ouHmczoU{$Y3{ zN1_kMdGmxLt406T@1e-uUCm+fR#=dDPM0AluryBnStFG*ZL0>2o#Sd;SEfZjva^+! zc(5{P05o+!>QzZ*tP9L^NKyi?P#|0G3Wupq9nEUa&o>?Op%ySn&71`~I-m1;AzE+Ol`FhEbtsj&qnmKWcIy;h*W$N|ku-LZawl^K;hfT$ ziHOfd=#oLFvpJg;rOo-{q_N1@#(u!5ywSs`2hH|oDLACfTv3L)24VKV6Ucx3_}<@; zmjB#%$Ms+I-O(}bzu#5SUzjP{yUNrB(`HvdwbM>L*!#0i$O*FX68BfBALjV&40|@( zR;E)XMCBTw2-834p~Z6|V^h;0(LscZ?za9=}Rebf|iw8kjmzpt{<3PL7^Vfr`OKYC0Nw2(dCQ<*OltmG4$_tWai2m zIEnPt6k?@&+hX6YSbtNH`N0!m0)$&TLCr^(o12;Yk2w=9QUS(=d`5R(7>FngUyh^P z_?r{0FTT?=&|)A>ZjV`OrB1?PnKm|D(@$t zBQAxqi_m~8&yTK*2hY!{EAr9CZSZh`TSZi~YWnYHQT{qoOxi!$33#>rI4GY5kk+(0b!nLpmn6!C%Bc*-=*iub{Sd3n5gmdD z+{I0X@y2kzlsj$_POC{yD`9G;RWmM6AlXeeJqaWh6C{|VDjF(mBRk|Cl3$@9qAT%e zYWiZ1g7us|7sVUt#d5LwU9>kKHYJ^BJ?4f>?L<QZ{`@Wtip2)eKrP`;$X?M?4L^Re-vy)^|bHvg)=^bXy>pDbLa9P$gd7dCot`)Kl4Vh7mrK1H~s!cfv&Z$Ht?+TLuM zSQ{78G-VDfV0FQA@4B3qm~XPOddUfeqRFm%*J9u427Ed0Uk!R6HI1XCfRAMnPh2w! zj6eHvsCUo9td#wi<4omw$Ao^sFKTP=FOu1^90->6(5gnT9zYO_4J*%YAz!C%rZ68k zw{251Yabp_C!?!hEqY4L1HKY{Fy+GU2m?9{3NXxgoNi`*ajHSTX$mVUotuqNCp3e} z)pk*VexfV;Sy1tOQ0<6_Ph560C+USu{K+>QH=N?D<;0YEZZ2{-$wK!uCOh+Xz0tP5 z7Q&iq#fyBC0GH-N6awXjHay$=akzUGN|e0>n}C zctj#`WB}&^UIZ9V$w;`tZh3%y^ailBut|Qcmi=s&w6zykCwomFojoVH8Wcxm&7Irn zfFR;{4s>QpkqL#jv+fTlwT3*bRtTTS3r5S@2>dtL!u`9Pcr^VWa6-Zoam0g~tq4^=0jbP-v|L$@Z~ahL``} z*ndOG-%oq;H0_)`s^@s<>WR+YVV8*C5fKq%lFAfv-vo?=8HL})`GiS@?j(lkhh)wD z;@LqHW^p#C8I$^=gnO>2av+>DI_9Eq$Raa^RZ}v$`}&K|1_4!eyH{c_BBgM4fB`$6 z8N|jqt}@^!2R9{k=)Akeh`iP;QK-um{?NJtXZq1^$_oVxO;gk$%*+luf6O_X8?qY| z#lof0SPSpp!!ozdklnnJ!}FRjUH`!5&o2umy{85A%V2TEGo^BCQL-AX{K(x|4Waqv zSos3LuM<;b^~5QJHP+*qfOQPB*2nu{5Bf$e;!q?#ON60z$i)8*K{qgx_)>lp*}<@! z?z%bqY1}z)Dqvz~S`eOUzru>ULE(S0p{~aeWa?iWnYW*_xuV?dBU!W);1RK#)cc%_ z3D#gaKtWk*>1g0>(8jx&^XqlN_5}tVys0ulg-u>0M6( zW8?j^t;MJdJ-ronil{yFu?mRv!rwEEcKVE zvC-TJC-CR4ed^@Ic&I-;CgH7cskm9ev$h$gJcAQ67=#k8V;D=9&5*IWo}lRB(R55k zloguX?DasKnU=lj5$P=){xPoGZ}_pQ{BqU zm88`7bk(o;X>&J7*;jocTyD~6*VAUuoSamK^FFy^jOnY_Q88ivW%XcI{AtT&;zqTVSjn2+`}cJ4#0i4jb-jyrk@$wd^Efq zIg&HqH&Nf{4_M_2( zSN1~~HWkrU;o)0i3P9%Jr|`v3+q33IR8bt9;>%Rvy4{GZ@KyXH89UY?_EBu!d@$uN ziRV*gk$|(x^kEN5u&F7TqIfIwp**d}M&2r$89+C2A1==Pxp2rE(YK5+`3>@@D$J?* z8Q-e=(PNmiVfm35268{KMt-llbM)MSYSyJ%MIR!2g2arlj*U4Kg|`NUDRH_6!H=p3X&`#Ak0iCcmsQ0B9A2t_k|!0u?Poh_Z81chk{Ld z;~ZU|MzP0JoXB??i({QK^$Ck@QSwhGyzA1x>R$Uc#4&uV-zYc}8&u&9B+V3)mf%R| zAVZNM$PKU$9!R8||GRF;|AX+9P!0H3Vf0_G{s$ET0t)9oVUQ8|dCjmM=*H%~yBLN{5|{I2VII*`mwsLcxn?j+e;=dh!Q=pmie1@k+Kgz_ zK%^8uEy;*5qFQE~m{1+o_~`p85)W+1c_S!A@Lt)$}52{ezy5^{n%7S z8HCajM=-%25i`|Wq@_^9m}zM2q9Yg=9Ur%tpSA0kxZ(Nf9-YhXW?dIcf|jLY54zIg zUS`CRcIT&x!WvWOFt z7z^vmTeRpJZUZithtnhr&a46SLGK<4I5O13Aq%OzjIJm4|xxjtmeHGaRtyOmSB zQQHkQD;DK}a$_6l6W;@UyZL0y6-`mNYz>$u@r8g4`f^GI`WT{rY~Za{CQL4L3kk9EAKuQRVrp!xVM5hdn} z3!7Wf|IE(+BSruBgGsKg8AjppmDU{FdY4Q;SPL$Har36F*^JC9gSat?@8esLXLg~L z15jH(u=**J3?*;SlK=>visADH%A}SXo9j2r6Dx#;JmrBT;iF4S1az53i{imdNaCWv z2%uK1rv@!<`-g-F%mdq9MXv=86OF*j^a>ZtoW=0a*7_Ufk;L&UqRm|JkSXQ&_g;EC zyss47tPqL`-9@sSGz_%XK#v^dXA39B$|f%)_gW( zmu%rdqmD1#Y?cRWm8MdsY~i72s!x*XnbW8(;{U82Z3nCZuu}Cb&YBh}`0)?NYBMU@ z1t|oE^36_?*l z@1~2PbyX;!MA)>Lu*KHXis+RuI*_C(=fw<-DNBgfS+OR0I#7Zi({Du)wYKj<@!NcxjJCrcU!kJF~ZW+ZS@wkzF)R7*cg+h7bQZKaO52{lE@6_w}+WoDeI8z12iK0)nb#HP$ zx!;mL68%FTgG-1^r!!#iPyp(^Vli&;W^mRP3y7XQuEoz@FD_be*_%iXZ1X+ zDNN^%W+A*Y*)wq@0Tj@*9tIjV+=*`IjkD626wn{taccC5zMuLE2^e|nwmGcUms7^p zd@3+PM}$0dQ=b+-2c;XnuL0~y?;gUWa^cx2r4X5a>u zp^j;2aBB5r;{Kv3EZ*Fq$aAFg#L_-WUbeWv0LZX>JANnHsWsL0kS{d&Xf1tZ# zSE_W*Q`uwl#c#cPlNWEO0GQoOhF?{;wTBZBnCnQ;Fld0c(%@d+f+Ce?a2!bla^Z1- zF#Wb$<=L!DVdcA?-%Fuz|BG1RBt^~1pQX;&Cmw5zTv%uITZJSpEux@uAU;EB@b)1I z=-0Y`o`7s({`h{tYoF3R`3yl3v0&0oofzQo^jvaeY?wbuT)~Bp!O1tx+R^52uQ*{K zc>JMe@c>&9Pn+8H+8WJ^ITao<8$NlzoiW_isRg|s*m(65uAl<`jN!ATbPCy3mwdjf8epJdW`fYe7)$yHbKwX-u#;ai`wahz)a zC_IPo1Xb5muhZ(de)s0 z=NN-ixs%r#<3mJ6X@@Q9+RA^+O#Q4AJoUxaS;`*u@Xl&jTa(HG;Knp6YYnlQeV*wfGJ^n{s_4loStXx`0D5s+qoG`oV?mWemY zG+PRQ{wO`^@f>rxw}fa*nD#y`boo;s7_Jg}sFAX3M1TSEZ~p;S4f2D zUqlNbAAO!Mq9tHyXLHfDI)aBW*acdrgtf?6_9f2HoeRggLT4I;v6hsS7x}jwPc%N-{?sanbaIOjJY3X z$^r;958MYE!L9GH^7xzmn5yUK=dqg=fg zk{cvWx?rN8KV4c}o~FO)WqWB9*wCQfvw=kQ(~BaW_XTSpHgTWuec%Q&KbbUN_@P$< z!V%xG?!_lWnb<=Q5b>23au>FsQE;vZ_BogzcR4f5Q33=^FKWX>0=&*@E*@8nA!YE- zOfG%;ra!sCc}T($pw7PM7r(`Nyvs+#E!dW_KmVkdRq4*+2=D{jTw_|xez7+RT1>f` z%%5orilaFlTz3;f9axBmIs6Dzsi5Z*WlV&*w1+XLPCNhJo`(B0G;%IYN5}fFQj4)O zsp>OxOb20Z=w|SXe?EH+`kKS&=6mAQ=iezjjF%QecyUW%4b5F*D5wTN z&SA^BrIlkler`r4CD4@{MHC;CH%z`F{WBtAe4ViMv3U z&n^!V8M#CNx{`Lv`DfvCG}$xzWsgvJVt5E9d_;!x?o^kZZ}{n~QOWB%rG~&^p>j3> zzzn$zmyAq2-9(l8S1aN9Q!Y+2(IJ3ZpKDzz*#~Dkv#{3dnmdI+VV3LSG*V6qZbby8a zM%E85^Acu}=jVPE#`B()z(^SgHCWHP61m*8G^ ziH~iPOqi%O#*5@Ss(mL%{WEfQAMTY?40`S;`HvbVaTdC3)OHZvG9|Ts8f%8Y?GYT zm?K3CB2$o|mX#n%oz>Inq&K@*_MSDObCPAEoGhm5_${x%WrwX--GEgi-?_6ev+(2s z&jkP~6`PXYl>)HLGDZEm9{O6fP6#lpiJmFDcRre>6P54+D(*pZx7)BcS|VNbg?PO` zo>_MxcZLLJE)pcZJ|S!oa7@sp`W8I$;R(th(~u<1{)AYR&vG5H0@(Q95&Xx(bqAto zteBg#b%)`fvtRFN2~~jlpSD2^22LIQ7x%Tc?>`P(I4In%7g|W#gyaPS^C)@a*3q4A z>e|05?l%`~jc>zZX*(Vc8gBu9S^OiU8Hh5?>0SZBtS=wuVTCTY#ChliWUZ9$fe;OWhJs8gf0ozbA7VFSkZJM0R~ z>vgUCQmP{I`DP|*kzsaWXe8G!@JQly(s;JeuxJK)6W=1I>*pOG<4e&x=c&{+Skd7rw*8|>3K0l}p% z6+*mTTZ44q+k^-TZ%0t{ol&3wTyI4Dq%qInx;sR{JtUAxF(2;-VH znB;a#z$>hazLDzR$_=y?^md0T0oT0b4Uf)!%x=r%&OOLrb&1!{PDIHgMiUOcPf?0@ zCiNwG1ptUYqw}Z>JRPeP-HV;Zrn09@0@P)VKtMdrsnU8xHZBFaf7GWd__@)8e|5wE|{uysHDDZDGk2nD5-kqKlNEr&i)x?Q*6g^Yt|un_+LkL-;Efr0!I}rQ6&+ zK7sK5ZeGOOYPZQ!7*nR`*@RlACU@rqz66K-(8mye_>g$qwGe>_2F4zlA8{e@gVN=) zy>s-_+0(Z)EzMWqD(U}`3fh`)1xx*E*wS~K@(Hz|XQ$tx(>Yz@#ng1r1|nDR*`RW9 zrhR{Knux~QC}D;;*#C3>gtPCX9*dRs*hbg|XZttGU!_QSVGGF$*HUXnnnsJNp~Rz+ zib0~Qy2O>Rv(G)y7vl=CBGILq;%hZ`5lU&m3OAZWHZPjc7b;ce_wa^wf>>}$bs2Mt z{xXGX?Axz2e-V|D-1)d^W~bq*(3aQM(*Tq@@&v#cZ&gGL*@!&nV;-cSUPh>-t|&^d z6?;l7oWH33u?xY^$81nUQ$hha;(dmL}OA+ zk|GA00xk#==4}Vj{Si4Yj(8K}hd2jpKw?v$P$2gh<;f~1C(cmi>8;E5yG0+R7mOEU z-cRxfC8=;z6Pm#YE#muTvkP$@ET%u&v^Ra6Dl_(m>Q_qwAH}*`gP9l5et_ti_0a_6 zm=mKFK^dy;l5!E-+dTg+uzGyg`}l%3_fo;rRz*OY4-L)OVpZ~R-N|!Ej|H{fG)#-td&r`Ct_(O)7VDxQozV z>Y~`29lPQz>uvCpFW0SKjH$thXt|!|sFCKautSceR;ntyfv%t%Vs^~wlaAwk@x2?} z9~b!`B<&u=PHeZx&wX%dGre9aZV*~!-Xv{o&-r}TG&J`wA_;#kFJCxe&w6P7gX^2s z3x+onCZ_D!`0NC}U!tfc8F!H zC@6+sBy6zfk2YixWly7c5l(`7yqNx9e2Kjyfy3r20ZBp6;|N)&e~b7@|694Ck8DVE z@nUgtOKFBbC$CP^*)&8ac>LCH6MKyfk);(e|JA(p&&y@o_v;OMubz@eL7Dkrtm-04 zBax9w<&9F_zd7zSx}Gtug|#Q@lru6<0jK@NWOli3u!_uc5{$T5r-Yajfk9)%+Ddne z1nuc8Y`-bb&GpJP;@G7dUPtu?J^~Xz1-9pFDAq4g>fBCm<3T7FQu>Lg;ofDrT6n3w1dYZg>XA|S4BP~?VsbQa)1))t2Vff8GW zOQzT2TH-nf%yI2`zBa?Y^?C}n7r(yz)XH_LsNA@6HEx!jRm&+d@9w&C)dqDh1 z5Y`u(<-MWiQPyZOF(;GW@}cHo?6Yr37>qh@2Q!b*qe53aQ7OIY#BM)vFx@IhRr{S4 z`yC~Iktvm=35gf{ATqxFa>BN)pEScRpt6RoAiJ)%yOB}+I<9k3&2%~Eb*0l(MT?ro z&Z~5ugdZptYSSZSVY1F7;*n+t=<9FZGG?uB?3*MQJDw`fWqF<3uC4@)y16>H$Thvy zt6#=expVUppSIMv1O>?!iV`#dql9D#$u7 zQM{`HO6B9Nl2S9YjPS$Tp=)rPf-uj+J_XW(xXSRN@rj4VWc8V^=T!|dWg?+498}YW znn1r3Rz4c`x4OKm1)2XoS0#C}xjzzZN|~9~T@&uWMRBA#!sYK*39Bp)DD>wl^Xd^9 z$lirN9rY6Nrx6_hGhBI^+ND+K4${?&CN(?-U___0mOn z7Te;~0KmGwe+mD^0c%ahA$(_2i0Ns=Z~54GeW&K&*+9)~L@ApnKOs^wJ`G+RUoV;v zMuVV(ZrvMEdvSXSsUkQa8L0W#Slw&LUYtET?M-rn4Wxhik7f0dFZW0lS9pj-0G(bQ zCcPmC{9+feH6vi!CppfTz*e8+A&aYu6o#2~PY7wzRV?mwGvFp`9sK-vrx*4TZ1R~Q z7AeOE8}$M9jj&Hh<(fCo6SQYq8=X}ED&aNoa9)2w_Z`!?8N{#3S*Y#-w#9+H!q@Pc zyz`pYEhJ-Xee6`D5W@psh>jhT5?N;R&>i(S9M#yhCf=6jo>{+zEZH*hc9pHnQ9{AE zkvMGUz(Pa-t|xIs{+8$%G-f#4%R=FVafdN_*(2~aOLwHo1y}jM3N2AlPd2A`3g7ti z(Quy@y?5n!5?dd_BH#qJj4+c8KLpyILb};>fwJO^(2?Sj-Jqv9I&V~2is(!9ALFe1 z_Ukimqc&@?C7W6({}$n1US!4*W{17NZB1=Ym81EhEJLvG>gzT=MWVVPn@*BiR}_0| zJxr@EBKaFBbdzY<-{WB;r(=%b$a9b^PuWXksk+dH4lmtHc$<#LJPQvP;$;dDn~&t^ zkO$qn>_9%fmVOgE!e;rSJ$+YcelyKjnHc3LR|`aZOnH`LCLE$Du+?1)QYjt@PT>vi zXS-F%w?V$@Bqlj0g4v-eo2y(Eoxg3&(z=IM4HDfcKZMLEgZOIYHbEcy@_(EJ>M+>_GQ=!wsC3+{jvVDP;c zLlT&AHI#B{dt+6k;&0*O>|wG;faak^zCx<6d+qXCs324?u*^&wX%AcO{2x)ZCW@xTW~W1!$PI8mhvDb?>?>>&E_w&hA18+ z`-*$XBv`wb>CRli{C9(@;oo}sa>*O_?^ingB*f=o9VP#KZnkT!lp~L-#b`u*Y$a4C z@BB$D+h&!F)GIVc6jZuR$@07QA3YA^YAoHB_R&%sE_4ojwd(F9J_rXjUp)Tzx7GiH zSaf<*T$Zg;=ot`&(1TLa!^u0Dy}6Qzt$UH2*pZ^HP@(giaK zVl%WPemQpVH&`vT4~KAQdBB!C11cB7{2xlXag%9JKn$D7Q!IDx>WB)MUgW#H3$s0i zON&5v;=NWA$=={C<9^!|;ZeTE-kV=4X46%*6IA<}WW=#^*}rA8{2tF%{1!WBnrsxz zJh@m2N1k$Cs{nMU?Wy&|7Mgia2NVQSRn@MPv6P?}c*C_}+xWX}{lvWThi#PLKY0w( zl3%|)eMX9D#Tk7xH+XD_qrM>DPZhFyYB9Nv&b z&+JgrW5aIE$4W0X%R`Le1jee`6}=X3OL`q`h+c{5fu2In+WH=cmNM_rkG@(H+dz}u zNSOqMI}$kj!N29W|I;ZWd{DW0)I#-~g~j#L{Ovz-)0WsZx*;M>vSO7Bw5(x>j(*}+>`y1tMQ@jPn^`m&A)r;WFu%Q<%Buu_GH1nwD zR!!dK;z?e5f`%)HF-lH{(;}b58*=yg{d+}evR~-s97D7$yAd`87fo`hPb7J-pRqd% z_nPAE+noB4{*Rp!S+v_fJ|PLSDbHWw&=i#Lj}lq@S9 zxPI(87ma5gakvX0Q6oz>RphI~_=SD*bq_)EY%o^*&DF5YV6hJsIU^UBsG?j+EQM&tJHj#6-4_#Lx!( z6B4#a{lzBJn=OSsQV%C=C3ap%MXKTY|AVlvB+2y#Ig7oCkA^DkbAcA+yZzq9Fw?Qv z1QG(PKA%P3a1>ml_C>t5J+(_{CPx@nORHika?8tOb)WRHq)%zCYsq?*=@6qWKKmY; zFLzbOql=Wo)~D<6NAD%Nc)CWEE?m;)bv?CCtONo5-6_Ej|6lCAS6owFyY3yNsXzb= z(tAWn={o2x9;+g?24|ReYi|Vk69rU>06`-c4ySkh zo89ZG-kf~^e#Im&d9%R=6BhI>KpsF+W-EoePc1Z@OEsS+DR9aop$|T+og>6h0(p?^z^c_y=h8dzlwsAcESn6^mZ;*yU0V2NwhZeZ!ZOWBb~3i zRA^Z0P$q)JSchpeN2LJfNFeEL3e2@uS%~7JRQC0|;)qJ2Mrm>8U3P-2OtB{DZRQHu z5YptKqaL(MAC2jK)^z%rr;Q|CZ_~=b;TAh$xm3QlHb$tYwaSjg^W-NoohN-kZ!tBT z@%i05bPK5RFVc)>r`uoH6Q5<9V%6tCOxsnB3%S?Ti4B7ae*xB5M)-$TuLKu7i@V~S%3j1C1B zd>YgyzK#oqSWGA`n${lF7|uXQzZP~|Rzty0!IIh(%P1{R!M6Z^EI{dPmkdXNt!C3{ zS~jMETe&RcEDxKD3wLd9vd!{(jRMXw$VV-0me#$QbROMcm;&mHm%33(6qSxTJQnd( zR}k_%k1TZ|h-S{&gMXM*>mA ze&?q4t`6FmsIT|oHRr$7DPPN0!rRWxyv>jT^9|nxp3IxnD=#V_d(BEpr!n(Z`&4!6 zy59smtlb^;f|Lh9)>cMA-z0yUZ-!S&DlhcnpQ{ukj=s1gi{kr?h$k&1>(Zgg!f1Mc*@-l%ZiPp zdvg}Cz~i7yb6(~dx0>-q>S5wuLdHa;hHT>RXDk&`Kfk#l?Jh8T$;{cMw}e_a=R+-U>_E77j&5W%`G?$rVzchqM^7f1+vX{* z!sDlY(QaUn$Kv**@P>L?9u7HpFFQVUT=ncvO=|Sp)EDF(=U+q;`k)BS$h=Zp|`~TxDzJuW3Gj%kS=gehfqc3syWaiXJh22fY?0(KrVCfsDqgk zuSu*Qvnih*B`C@$$?Gm?CK}b*bX6Ask-Au@31d=VW`SdLU%uiuZfPsH9mu^hRG5hq z4aMCfl@kyT=1kGT8uz2*epT)+|es)sUZA+f1_me2L`>>P0WILv?yF9&(- zPlwzLOW|$sZp)~&fWIWwp-{iWklb=F@EWs{xkl>Z%rYh@-p;g|T*=?yjM65jZ7OcjiI_1`w&XA4qQ zX8bq3&FL?W^-l(G{{{);B{&Mm^$#WH5{|x0#7-(~Ok1Na2CaQI8i!I&bCzvHKR3us zTD9dgD9j$RrBuz7RC9W%+NYJMAl8uevXWx|V94-3b%;D?g7|Gp~0e+8qu z{UBd*EB>sa73SzXmrf#mBAl3EEsdE}_8hoFL0a)@em%=!lC4a3(K45!7LgjtfI$zY z<4{Tjbld(XyVY6)XgSll1)n(FsI#b9mz%5#o`(YT2vS#I)}pWQdt;Q|#%)U#DI+nu zZyHmg?irP2nY0X=kqb-6mHphgdEQ2w!znA-ayl>&u))_m9Im%E@-`P1>u^l6yW;>w zg3C2jl5*( zLz|6!>ya@|D1QGfgy{tnM!|DG#+Su>`XUqx+1R8p(<>7DL)|%VNmiD%;MAZ^w!Tbe z51knO)F1{K@CV7Ed#=<9J;tXTCKu!zRaVGK_*u8UA{H!upD}UD9SM!KPkofqol*b7 z;zcv0*6gvsiaAndo45BD)ASH|AL$RuMq^u3Yt3EYU%MIDY^euk9l-SCiw^0KkpdCz z&kNtlqSK!@Z!N>O{o@Np{x}M85QQjTMjZc3_4uE4`;dIQqsxMf4zx6*2 zI%O9)ymfAM7f$T1X2jxbY0u4M8-n9ntJ{IQzkEOZ7og@*8h=e%pV>gN<+xKoUTadz z!s4JUKk*!)6tfiJiSo)3l5+3&oAMb5JH&N-TK|3eyO%nKzY1Dkt^au4r1>fC(NCymcy6r0zUryrCVO8R@SXuY-2ldI8u#bKhe7*ue=Xy zdEtyvyuJ6}En1+lQWfKvm)h9=qi#<}kMo`+|NQX$z@x0C_3D5#VAytTfTJZ{%t%mQ zl-LIA)fpMBUx7u`a~W^5>VXM9;S2UxO-|SqkDZCT0aiKs&#De@mrI0d51(guH`=E{ z*YcH`ND1cUP;bI!C3Vn0eIs14hG)*0j&G$~g>lcl6JQdX1P#<9tB}iD`D=%lxF?F= zOja~qt9)~NzDW>pfMiK)OD}eg#YMB z5d35LfA$Yici00}rGMj@e);=rK%^C{YPDbFbS>Mg&_*tvK*x(XX$}p8UXSsNFrFSE zTa4_T)-I2s!{QE3WqTO^ z1BGFtFBx@%(;Q7%O;mXp-*q&5LuK0b@;pmSRGkhKJ2Qqcr6muS)tkuhXMB5AnGztd z_EQ|j)@;Y4Rs6C#`y6NSaA5EH4tIC2I%T95tHY?{QG?a@<-4nx!}YfHk?gXpvZ+cp znpe%UG%bf7K>|tS%&r5TgNz%z`Dc>lPTAi|q@PdG*)%*nFsoJvVeT-_qzs}k$lm;W z+%x&mxCvL!3~JB(EQs#3HzqsYe1p8<2?>+fBM?6XfI*{YP-@?1n(s#zPf3+WIrdg) zeBPCD`gZmqHA(ZsgSpACbf&=>R~u{SawAdz)#xk%}1YMgAyLU>A( zjPGsZbt}d*NQtv(CU!RQb-IK4>f|wFZxT<^5K@uv)6oOV*^&e@CG?X$qcetvCHYVe z*O#@yO+;Mf(;j|+wXUBqRe^_^Ioyv`)&7x>g4etPI9DN$>k^rYA!s%engb`9h~U>w zsgrP;BCEN6hXK``yo6$Ri`@7iBjbi(?GM0g90Qf={EA7Z=CD#)Ct9(>FXG39N-yGP zh9ROzrFU{M%ItH;j9o%?SW-m9q^eE`>AQpU)9)cBYaJQ})o(1C)XfCetF>*0xZRL; z9|kN@a{>z^CyK;5=mPx|@%-R7`3An7864=MsfHN?G^o(lSbn2Uh(z0$sfHrr5UeN7 zoYln}rkP_JOZ}+%NS!*9E*@+wLeF6>VdU564QIOnK~nQ#}^{%(>br*w)utliVi* zVZ?p}mFgC0L$%Jyayi__3FtU;&rqS`$CAbQkH*ge4f&mY-cDPi)tV19k<~P z)PvS^fF0>mllX?l9VVys66z`H<2R3XVXSNXiqQykpmB0oV@B^sTWW=_njz+!F88Ex zL@}vc`?GCQ!lMnJVD)L51Y@nRkD{{m)7G#K(|n!hUUO1|#N}=?o11nfAIlTjFS42m zBgB?vXT;iOL15FD4D`X~84-S4kO7NXJ^J7Rpv8$?jP|<(?}|fDrX}sFk9&K^M&1v8 zI1Be7W!z60D2QmUnDFv(rPb1p$F`RG%)6~tS^be26ifDn&x{6s#)~xC%*s{;<_z^Q zCJy-q8Snm5FYPhIWuNmIOo@4#Buf-NI2poF&EBy|WamI}6bNOMrd7+i1_M$D?;lyM z^jQ%0Bs;fT7w%1;->%)GcbN1vOX-403)cuAAXSGMvyY8a z@AsRx`|^18hxOcM%L`sIF2Y`Ob;`R_!ZCj`@a0Hs@C2s)wJsQ*7qQJFw(8m?wKYrj zazu{mmL6c}4KzO}QJ}q55L(*vTfF4BoWf+n?KSMT%m%MQZa}K5^s&Ro4*)Wz zc0mkx$hG*4)61$|KCFeI{1YxoS#J5w3{tt|giL@d4zIrRn>$`{*BLA_CSV zAnD6aL7O!uZUN@i_nHrXhNyXwXgo8ni)fV7lr>)KDE1}U49!;!T`g_e#fQzY;)6^I zGx7?R3stJ>qCeiT*b^bL`zhtfif1`Jy;NQhq*dEL@_2K57!oP21GPnqCAj6D)K#~c zn=Mc$jrS_77{bPUsq?Llniv&(=xGWDMqS64y+7_uR?WrKb})TGK?sN^63f+NR4ZIvaj!Jf&(T_ly(5ymeqx z7P8@bZD+;OR3-WhonYdoMH}6ox=>)+-PW}*waJg9wOYH;FrKlVs+~;Lh4;~eOXsEd zy`R;qz?3hPH}%6t_brywTYj3Kh6(DPjRMn1C#um6-=}$S+<(N~@DvihCWlJ0C3HUH z>K#%fWBZUv4)>FPIYd1Bx8uX7zfTg6wN=$vh2PpG@*pW$>M9Z*WJMilohHtUQqHCB zu+-h2(8_$*S0HthDs&U0;Q5R7|K9N5`5Zd`e$*cw|Eb9Rufk98U#Wj?jsAJ{UvH93 zV{EBu`x2>BQx9^F$qAV+`op4#b=TE1|C>{5rNg(D))LQt*CN`kK#mJ~fO`e$jg(meuR%)*mdXn4 zqGh%STw#RgO5>$Ny}kX0s&h*-;CD&Q8K!94Lg+7I(_9wOx3!G&^`V1;e2xM;+wdv; zuj0Rv34kJ~woT$y9U!Wam%jQmQF5|Cf{{9i4Pu`?NFvKec& z;^{^SJ0!+pZ7d;Jd^xbs$9zdKqHUzL%e%?eE$^){d!EA5k0HOMra%vQebFh_ZE82i zqwV4fm4)$$x@S8b$?oY=D^J`-=z9)Y<~Wj2hOb^vR`1y}U(7X*Ozy6bkEFr6yU#N< z2j$gY7^oq9DY5ctPVBHJ{ZWnFcTbT|C_RSFR%h=`diXPXD`;y;fnVDqHmG`e{2&Vq z>u|<+S%4rH&eM^ClruFX{CO;1M`Vh2a52j6vKqgTk!IjvUQAAJDG3v~y%`YpP?ea2 zJ1rhU$ALix>H=9=ViTwy;wX*U3Z17B{7>C_aK3J_x(QHpn2Z#a|NW__kHaAvF^B+R z?8Hn{Bfnv32JLR<#rHcrg+zoY9_qJ`j1P`?s7)vSBxLV1k-mMJCEFfcU&zFPmqwW% ze&3qVPKfgn^85>MPpu-Z^K(5qflAvEG!)^w`jt=O5aD2BIm!_``#iuAqluYEOp5*@4rYQFB>Vcc(ewliurJg*ogl+f6g7i1XlnHh!WM;w^?16i9)IZ@1SR}I zt6H~tKsH-AwfXtm?wKRRV;Z4#?HvoWGm@N}Yt;aPLjdu;f6IeOX>dvR+ek5bhLj@J zJkoSLl_L71?0V?*+7X<7_AA4crf+p_v(~Uy%{I3i?}B14^K7e1-NtmBnhM`{0q3=WVfM=t86ksM-!4jit9SxX*V#n)Kp z66iM?mTzdoG^O2KAOlzQcQ9m`z*W)E5x+!ndn6floEC!}30x5cyT&?hLhPU(NRsCC zwrOcn+GFKXwZOmUbELr8TpZWf5L;FXd=5*9pUzv!x$%kOYX7Q`4*FxmlO)EEO$mlE(iM-=%`19RNt)$H$FP8MV@FV64G(ifz z@Caq>tfJa9N9T7zv|Ho;LI+}m@}6`v4_osPEzzI577u2N_8dK+h4`{$hs|4OjWP|Q zfhQXfOHnR=u*I0A2&H&&oBGlnQzmTvO!C1!@p^R=3-owMK=^h=RUF7&W%_e=&vr%t zp)D>%#}bFr7tkF%Z-wPM%eLwjtCOI7^_$EdwGYg5M~pamY$|d3(8?vfR71a79o2sK zVETLygGHQObls#5Y_~$c-xQ7vb~B&nM|4Ba^B+!&{}iVXpwIT5?U&oCgIU$k(+3w1 zwO=JY)BE7OmF(i`7=X||F=;AY4!b=F-b`=9%%l(iQiMcqbF4p1Fpm_kW>4eIhUM7P zH-TJ|v`us@nDUA_ieYy!{u}vJPRSOCQtSg9(rAg{g=s1Sd-@~sL)3Gz_}tG+pTOkV zQkErHigb<4%wE&AF+VzfLdHSHLFFp7`r1!m8hcyuhP-D^Z)mfsVD*bT>UxA-ggO3r zb2u-(@!kE_2Ko=J&@{KMPi6}g_}pIPBiDtd&(c`HU^f>@GR^+$wS6(`iA5xX2-f3H zajcXr(7j51*_9zt@MP;HG_|5}ahj=of##ESipg_<6$YgtNKSkRX^gVg!@Oq^qY|DZ z#V`A{;#AtCH@w}tcRla|#s8pf{X|bLY7G5gmt(0O~55lRSw2_0y3T?Cc@2PG5#8 z{CJX^VICWFC<{iG>1U}A{txy|k17J>)>;D!NQV55c4vOva4ikXqCd?)vPb8Jk+Q#k z&1@AnUUej|s}uV(O#a^T5~VJ`K(>TTZ>Yxw?aZk^a8ZF`+pt6MgL>3wPYPG%uNDc5 z(l+O&oKZyH7+eh8jDlw(Z&XFMSTN||a3y4}7EpC5)I`Uy#awxZFzIP6 z>CxkL=TE)w99=Uy^0Eqf*TErUOpnjaKl1k#;m($c?j23c_~^cBQO0z#b5#6d%5uUy zkLVmk{fTvBIrDTdoZK}_`Qe-TVrdEVuz*9;JwDN$n{X|+(CrS*52dxXY}5mdLS!Sa zx`qZv-iSt%Y|QDv-8t|guTd1`jd1z?3#{0$-O_ZW-9c#2x~6aMG3qsAk-(1eDz$!8 z=?t&)%TY5@buQ8I^k&Q@Nt94?zy_zcu~cHnXJoAty+T9<^g5xrNH9_}cbvc)QnoY> zRK;Pbn)29x_y}syupSD24zBC9KlQ$p>Gz%GOJ2GSyvUi&G=qt+efceFmu6luWIwac znQ*p3GA<+a$P1z`N4*)*@)3^~P$m9fP)oNBs0sciFx>s}xBG^g>l~kD>n3GWssqL4 z91n2{8Kws(f3x;<9Hi?;ZZ_;oZKm)qiqCmE~E1*)lc{KoZj zk+7*BiKH|B5c=_h(1VoQ3I{oq=*J6(LP(8z&xuV$r=+Zi=8W7QxrM&~MO!XbP4>4x z!JYlB133H}|HZ67uAsMO+ydm-VrR`TNVSc42d+ZYxuZ#Gts>NV# z9~UA8#_PRd_4Dy3V@oAoe*x+S_sl@+wtUqb_Nm%Fr-IJGru2-sPu>fW8wCo%#)9Gt zuUZcCM^2=1nDwhWi=u6$^6LJ-{i}$xx`}iJRAdz$f3Y~M9cs-M1gJpD463A{!Oyf) zEOXlLt|j<`ZHP+_rM9(p<)oP_LEKULZKL&0qaCeU2ih98)$B)d2*g7TX{OM8S!X>FH zazG2qfR9rolp^+`vP2LiYY}H{1hGah4&CM>N>Sn{7kMv!hJ8foH`+$p9t^ehJ$_$V zpx7^W56821!?0&<#Ky4|sY5VbB(iOUq=T4QT#(D9ui^%G2K}*8D+mL0i2C9Sf+{o zUGo;EeFBwW&!C%IJ@8+xt_sN05)bsP?)8AyXJIfGgu)s38&c5Q(!W|ETV<+n^k0D3 zMIUWn%jfoF=p{avOrQu&UU3GWE4JYR0bJ28)UQMOc*9oOWG|EO_SU;$thkL0sb7Ak z`uf84o&DBug(%R~BewiNnlcH#O4zrb9bxVRVqux9VjtncqoN^?EhVw%!w zWwWm2iI!SVTL<8~8R_njs}#U*qv~K#E)p@~iH{M-+d@C>ZiMS!^SqkkL36@1%OYvt z;&SPia7if#rwUzL$*2?aVEst3ZFBoPHC)P3K8?nh0R}$GwYB+G%#XSu-}IujMr3p! zntN%6kn7)kM8_$xsKn|Z?{Vk%%zG`X1GcD6(*tV{Z-a{(Opgpr{D~qFQ;C^Eo|VM> z;fpbD^uZv9Q-=NSQpolXf+a;<^5N{_M8g*h`OD$QH1;KY1KTk=@e#`d5-u1LvtXB< zf)#mp*F{PCr%wqn;+-f)3E?AlekM_;~AQRyC~U$M~*m{f~^BFsZNnWAy{={ z!6wJzm(1r{{*ZOX85;qsH``t)wYBf{YGmiMF7TQbIUoSXRrTQ;AxF)#Ep~(rEm!1| zEnAU|29TA?8(0>z)GPfj&NR#{^7}8_y&>C>=&i*2o0?iXyGgs=*jBaJ>!1^-A5519 zKDuGOa7JtRDd}hEo7}Vg;j+hj^p?I@`g;3VbKS!Go3`Xo^b<<3e=-ViZzGXlwILzj zNIb!%7Hon$An0@T6#xyMFy3?rM~)ns(6D7|?vQ#U!`Qm6cE0ddO`bU$4P)9>r}V6Wk!;Xf0Xr`Xh;d{>TwRJa`z zvy{6Qu_Nv~2ADhnoD)vGFWh1sX!gVQbU%zz!S4;%xR~GWG|ZeSFJ|93D<$*^*NJpn zQ$P+O01}1BZ7Q$;nqnG@_Mg|`p3T<{9JrJ@xDyUC?%c(<_aH6Vd03=34>$Ap0Z$Ed z=Ps<)vXVlNVTQH#nR9%UVJy`ivt_$@$_8G9E*XOq03{u-Pv=M;nkB&Jn{4dG05d~u z9smbgqMx>Z?2HUl|NfZ&J-d+LYTx^9CO%3Qz@O`agWz6|+50d*4^n2So{1ugety?! ztTNfUh>YxLtJRx?K62N+>xv)FOZ)oiO`wJ$&x=d`MDt;R${T`Iq#yUI#@l@ti;z$9Y=c0pff%U zb>a~{45CedWSCvlaMy{!uAFtrUUoT&N*|-{8=?M8XXU?H0iMp=5fx79m~&?bxUJ&aqrx_tTdwW?0%(Bhagwx@-Ix!auCj`d(-(l(zOw(cI!g^VlIU8 zkD}StQ-h9=o-Z29{qERL{8_Kx)|=}?wLa*hd2T$N@w^N#T7=i#+Flzah+-zJSxoCY zvP+O*QD?N%o2gdsSW;=b3^;l8!`Ej0(%XsgG!#{9;bR4jF*68QSn(;)d>{a3G&Q~6 z0T=7`+9RZNa&3I_5;kWx80y;!u$4{mXR~01#Pe#EXa=xuu@SAncuL9a|2t6uYPDv)$Cr!OP&pj z7`EIQ@fz^hK0)5Z++CqQ=7#q*W`QiHTrAT#T>&`9O+`Q{|Iz~5Pe1m{Qd?g@ zO;evf{Ws^qy*OjOZh{)-9hQpTye2t(%zE{9?Et-7@t5mol|`O%G7gjWAJ6z@Os(S} z^viQ$<2n{f-CHT&6pIYpy~lqdRVoE325?4FeD#q#=!mbg)Oy2t>CL&e-f{y0mEwN0 zI%pqx-uC^YmFZnaN#4;f4IS&I`K!CdK#$=# ~5#-Z$blBjQ+@s$O>y`39>I1=Bi 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 literal 0 HcmV?d00001 diff --git a/artifacts/TASK-console-ux-audit/desktop-flow-watch.png b/artifacts/TASK-console-ux-audit/desktop-flow-watch.png new file mode 100644 index 0000000000000000000000000000000000000000..fae23bb7333997c9355482a39dac87414198dc10 GIT binary patch literal 66615 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 literal 0 HcmV?d00001 diff --git a/artifacts/TASK-console-ux-audit/desktop-keyboard-tab.png b/artifacts/TASK-console-ux-audit/desktop-keyboard-tab.png new file mode 100644 index 0000000000000000000000000000000000000000..184f9a19b6a4893ff93cbea23490a3816a0171d3 GIT binary patch literal 66132 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 kS(nB@nE=t0>^k literal 0 HcmV?d00001 diff --git a/artifacts/TASK-console-ux-audit/desktop-organization.png b/artifacts/TASK-console-ux-audit/desktop-organization.png new file mode 100644 index 0000000000000000000000000000000000000000..92e7f1d47229121d9161dfc82652eb1dd7d92ae8 GIT binary patch literal 92373 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 C%)A=_ literal 0 HcmV?d00001 diff --git a/artifacts/TASK-console-ux-audit/desktop-overview.png b/artifacts/TASK-console-ux-audit/desktop-overview.png new file mode 100644 index 0000000000000000000000000000000000000000..c193603bb6211af7b0fc91fcfa6005bd01b58508 GIT binary patch literal 69434 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ǚp}DxYbZBYg^MC*S`F?o-(elx1nFsm@Q#2qlDPp z!pAeRwe5T21t-q)d=T^kSEWdYJ~Q8f3DwKFfu+xK>`VcfUp-~6OKNG#Dsn!LnLROk z_!iz`&Yo)bj^aL^f7Oqa=Iz30EN7D7oV~rPUOzXyB6HkzC1WeQA$;>Xgng=5hC$!7 z+?aU1q=CMCtuk5NVRp9Afy0}mf7p~*Qr6?gbbY5wa)-4|1*5UEi}R=W{?$tuQ!Lw@ zFOX9v9!Lh#FRC>#o;J`lw64d1i%8dvzFLz>Vg#2K6eK$&kNH>%rpP8Ait0`+?3$Q> zs933;!B=hK`0vd!Th%!?b`;E&lyv|3ndo1K9Y%Ya08L$+!eS94w6DEw`7$e6aEpYR zIB<@Ds%t-VsQrzBA&gY(a$&dpoBXxQ=~!FxOUc;>R2-Ymp~(!}DH2Q{JH9b-E0*v~ zq)?G?-j9THfb$;Iw2Al1TV*V6;x~R#8y2QfuPL7fno+TbJCLecgWqI+oO}9=YgSI1 zRZCkyb0`oIs|mQXTt4k5Y{u0w zCDLT_Jua2>kkpkyye8_=vbNAjifF!>%94b;f8JWOFI&RLc#Xc$$llFS2?}BXe0o`GY*eW+VMb*Uspv1H z0!PN|GmTL@zwzSl%na!fLP&panoZb|3oq}2WBLbU=|he4*g2JP_CmY9sP|%_ zJ9t?pe0tIUOwGMN^|wdJOq5Gm^U4!@Yya6k5PD~!aS@@-hTY7@B^kOkag`-MNQ`Lg7GM7k0?;cMg`8BG(BC zHhyQT*Pmp1Cpf`XgKy%RkxZ-Z;;?{gE0l4mR(?sn>Jvs(5#&Ux&&F5!z83g>#~!hF z1}=LA7sisB6Ygz?_s_8xH8jbOaX^uj^CWkP5~M$BV41pJv7{CsOjR2g=ymq{(Cc96 z@zX`jf8{wm`f?S^dxIV-%E`PqD28nrY8qr z&nu*qQn${`Nw+4b>X_>a#&721Z?Z%)+$$~&(4Fis;`t%Iik01@+DwS|ufl?mxzrFt zNP=E!@#e#W5A+grb0p??-1r{SQQRqV$D+j-uMscOG#S%`%A%Vx>fS_dT0z&^>-&kO zK2TT`96eX5Di2Wwj>O)@I(_3Hw0OjEQZ?#*W#jkz&_LC#ytt&OurQF1-9N|wXWmzW z@GOzfQhujc{k;o!kl3uV!YjbVuT>$jDA10)-?KFk9oHt z$@dgO3};33>%~clXZalto9pYK0Biz&{Jr&m>;yQO#S`)4pPebcOW#H6eoFWL{RZ?0 z&+yAvHl6`63ZS#($j7L&7tAaxQn;Yij%_BhZzsC^GUt#yjDf;OonGPjz;n|k5B)j$ zg|>#IgCAAz?S)!F#?K~Zdvs_g4PO0%9S7G4BzaVJ9TR#F3SS(YY^r zx?ap$2dKvJnOa`rnNP=Fs}g{j8esv`%ULF}=*cFvl65aD_Cvj~sZ>t5ku@=XU4}JP z1BIu$Omp`1tJjtFZHP5(6X^|v$!?+7OJUI#QA##`>EHO;fY#qZ3fs(2ybwl8v#T4x zvD&fIxi&erTj}AR!sbLp2^l=+$@gv$P^})J_=die-jnt*mZf2+AD-pdJ~uuh%d9v} z#&Entos*V#yJtS?`|XdtapDf$wRL#8EI;#FURW`%GiTF zWx13g=S=ywWC`|$VKuLHw36Zl2-KK0Hxyijdz*nO!#m7UNogUZ3k%Q z7L|q|^$CW+8|y6cFdt4LZ%@oK;cwtJM8D}?fMGu`cepOVLYqM)a`y62U|uBicbOH_ zO?kIUozn_&c(|=l(x;0ID#O&&w<8Hu_;^-Yfp+nG(K8|%2I8${KF&2G0b>ygA}pqt zg3V4J<=t;x#IC6&Y6$C-Jh6Cu{We#6(;r$p0rTC;utPln=xeHN-y?w}^z0TCrJ)Vn zp89Wq@f_yGYnwAX1~b0#QA}xBF?QwOI<#RlwRo)JfYB5B?Iz(}&e8h#hQrXIq<8;q zNZQF1aY?2+ZB@PH27{!B{|xFN`tMv@B@_09vf-Vy$3eQ@PqRPJjj3&5Zt@@D zF5L$n8^83(abai_0Yp#o^mj4Q_#eEl89smT3_^F`tt&7;gvq=sQ8@o{%FXg@iuLBz z_jpxhj*pM_;sc-lRL6Y0P?Jmf%}M$H|HJ>l9NNNdfgi+?kEwp!rdS7Zz4>1ij{o@~ z>VNDS|N3!C$#|ZW#IDxS1h`Qreyi%{}xFt66{iw{fQQA)i$9|`Rx)AjL z#ol`dH5sSvzbH+mONW3oMXI#WL68mt(jf#vLkkdE=tU8vh!8qR3%!LVNJ2-7^b$(w zy-07;6tJA^dv@R5{k{9!GjnFo%$YfdzY+pT=E?JXbARvqx~|WdAT9X5Nc)yTczC;Q z=!zy0fgY8j8nFz07nxgo=Auv%!(V$gMUL4a+Fz zXZWc3y`dh?62K@fm!V)w%=Pl+6uQWYzUwD&iVXqEdw~+sxK#@8fDYL@a5xBm#S-#7 zoEj!AJ4_Y#%l(AYb)|rR$*p4qe!hh+JalI|Bo?B7Yg+y|?7+l7udo7RQBqojq7oUH z76D%C-RhS|!23?6r3bogN1IZ=3xR#+RZnCSjfk!XA>{GiFN8T<&%KRJ6TEaEuS{VM ziqJ%B$T}x{6uogpUc0MKTuQToh!{McKJYrB>~)K$d62%L>sWo%4+2tWMFSt7gH4&O zJJxD=0PAl5O1;s7x1CT#aX3zVm^o{Zk2p4pnyiDAl9}U0;kk+2Viju8yR06}y*g>s z44IGjSjOFzrABe!=fi)iwK_kU{H?0eO+-eZw#cQNzRz!GXP*m(3|aIgY}^!2dNbWh zL}b=#onL8cbN-9fV%%1 zgawg9MkQE6xVYYecnO0wqWJ9m+|EaAsyPo1Z_M2)yP*RzO|V>EnKlE?=^}x75WJnXv={mbWcg{6Y zEJ_p$bGu!u3K-R(8TRQ&)RQ^A*Q%KbGNiG1SSMLj*=jOpQ)m36GoI8~^{0p`)srph zh>$>p|92s~i$RZ%;2dSY!qmjd5L!T3!x;xcHK4O}`mYr*`QOVtVr1lR$(-K>ucO;T zqOmLM+J6Xw&h3E7Q_(cyJpNhTU*^%_%cR`HTb9rkfXVnG+Kw1z9-%`|TMqihusJD0 zQ-^@u=xE9AR6i^4GJoINM%1J0Sc>Ue_O*DktIQUYMRn87Z+2st zN)6MV3)!F9d0nDXsh$3(3zYs|y+9w`Ng`8Sg}n0z`T2HMsgpn}@lA;}b(vfbf(7M% zrVS18!Hi#xjxb%9Pgw5;i(Tk8M{<{7b^FZ9K}!!DFQtlcXeEZyr+$92>l_@{bDru{ z3cCiK3WN-T4iSI(JTLoh1fWJi`Dyy^7u7O~<=n`%?c_X}0;KEZ!h&sI5Wk==R=9z( z{rKZ+s#BQjs>hFX*F$#k&-T8sUio#V&3uhQw_31}v0%NXQ&oI)wDfl=adlS7Fw(7G!_kO$MRAby#y91n+jWSU#N@sR8sUL2}~1HFm83+ zar>fbO!xPi@ZrEe_IQ(R)gYr8h9zc8iz@o^67eczC?}`lAJnSLZ%?;&WnNR33Pd&0 zW!#+gs9AJAizv3+bOr|nWLP}R*8Y8Kk6TLmknnr3G^udSv873gOTeoG`VMqmnkaQL zhAkpxTtX%{wwEK+|Kx{a9blEwto+zO1?E$lcvP0HqxP~iBKuTq$yO|#Wt?)1SJ;)X z_1QU)IPuNdT31l&{&b{=&UUtLSC8oA$RhI95FagV?Sy9ZuaYwbRJBTPnOjrB6bdR} z^<+x&%_RFX*Zsuluo#EtMwgwRG{cg3bA9b85oR!)Jmt)n>4mV%kWD}F+t7(2haACh z2R&cwS?=er^}z4*$A2hd@D?rlb%R}vdF~cQJaDFU5>M`25$EojuP>GEFy}t@*)12& zuSPF&H?msU(#4A<-u-6LjTg@9`QLl!*|9bF@ZrNs*<~G-!euQr1207JnMG4=BGbvh zlK_$a<^kWV8-pXLzQ4<)Z$58aW4E#@n#(F)bIjJN4g zQ=knaS4`8Mu8K_~9)l&G!OqOlA=J-&rF=yv83HCm+>pnnKX~w<@ZGzqdr?i^RH3XX zKIjJMmD3LZUuimMpth4cy_#Z%;5-fTogP*5L#lD9l0g>5yb3f6=!Zgga#B}o>e2?b zf)YYy?bHksymYq0Oef3_83jlRFw2%My>8JTWUAlN#&$iv-Rd7FmdzV_ClX(<7kswd zY|?juO{Pu*hf+pUHxA@GxIg?_900r4eJyRGukP?3*wQIRLGgRGB~E0q1^f7vK{ss( zd_&Ro^)J3A-;Na2FIaU|;Z!n3ba-`Qu41YZBu2VU{&ZWZ@2JDnOLKCF#+ytk6hC>a zFzYQBitkY9xY(5%r0sIDy+=yg?CbO7z5Vga%d+Z;<)dUD^ZoOe(Y`vYg;4)(Wj7Dy z5d$xsdtptivH3ebWs}Ad_RW7Z>usFZZnq$C4 z%A6iZ3v&c9Yyq%~Sr=Gh;1RBVPht0~joia$V~5)-sHJ$Flu2giIv(z2CDeAi z{2r>3;e+d$`1m5!w!EEZihXPCk+@`yjC&%q7U6MAZ*knp$1?H8J^)idntlbaWYRNLS z-DHg5Prfp%EPje6&pbP}n%7u5Bu2BV zF-%5=lxZXII=P9B^i?Td76aX0)HM+IYhF@@Kt{+;ZWB?Ny`nZTutdZoqf>th(w+2m? zKl4+moib9~b8fVN+9zUXmUV$u7S3cBE1m4O9LRrGoSf31p74o!7!CiNdVtwn(k~Fq z_@ri8wi1zXq(U#G8#}dfxq{SgD296;3iNT-+!SFMv5=1-G4ad<&GJ=0C+ll=Evo6< z-g`b%G*27Hr6knfN0=+{p6gTVX?2GB+or?8<1A4^ZM;XdhSv$OxWYa zNl>nsWfr{0OtWS8K+Nlaja&F4!9=Aruc=M;j@B$7;imE&c>MV>rIs`{>jaDKD`q-> z$t6o$F?3P6M9*74wTIU_PIyMNAutZc7)|qw{RRC*l{xvm-M+2qDp|=w+?DHIN!3W3 zRmHUSHIc|Phj%{0ShnFjJaHgbUPE9Xy=%|*&l)&6E{m=RPgJPbiAQ((aMW! zTE_-PK7MT5WjFKllj{P~7EXBQb=WV<{C$HR{zxmwmoOk}K{-9$>9FZQWIZLh519qy zxPivQgppLq)U@mo zHZe*m!1|poi)ydMfq?nIs(c1;UAIErbQ`l|*R#%FLw@tkr0#F6fpfhb})q`jBM2^K+Ju{-nq-XeKV5!HnViE{$h7^jSBHvtt_a|+2-!u zfhd(Qb}B{XcJ`lewt<@hpxJz~HUn4`7Ne9Uwy&ua7a=!64RHag^3kq(4a zH-DA?A&Abza}G`EWQCU)-Oi*IEikDfr8WJ1)ZVoo^jy|uy#Fua{IwS0h> zz)gNSEHA)SHs}(>e!);Oj30Z1g)L^CfV1yDXk514!|p7&%0}v13Mx{w>X)uG8816? zRuq-k(o*s0x1hU+2;_)192x@YT79ecr5&;nDwS}#jyyg6ENQ#`x6}btchmq?@YR>$J!Fx3_p%K?2LRl2?~&t z3cKy(M%@7nMZKEW+qQc|5fl`(&U_U7Of!~m$=a{_P8-*l&c~QpKpzy8HjL}s zmuQg`k*RicT@AfW6k`{35^b6?g4C;SGM7vTpNpLBo<$Adt>|Xj-cV+u`L(n53+rd1yvP(pqEU z2W&F3<|hZGvf5%$4oq2xlQ%fWLRav17KT&q1h56&hc-C+CG?CgU_z(9lUTA@YK03i z-!ADv)Z+2*z1uB+IZ4|spM5*{FEeknRSP4O#VIgZs1X$V6h0;^Lx{cmYz2f5?je-# z1E1e*#HLfG*-kPHJSL`-j5Pgl=&>ukmqQJ?RAM6e)eb4$$vWAt2uQM;DR=()V358m zj(#@z<(sN#CEnF_?#!Sp$j=$D8f}gn7u&Vv-u3Xgkep!1cU;&7h+e$UV@iCcUK zYR%b_MH40<`-k55=LS7&O-Hcg$79AuR@{LW8)}WY=wZ@SosWShpUi=H?%{ODudC0` zBolS+6XciWdka=21*(L&3qf6%1r!1(Pbb2-THUgPCW_!0vaV&5rcIwoQs;HqtXXOW zCe>`~uGw$Ij(9-cag)mIWSyE(xUJqCbhkU%acG={ND25A?~kAdcDE9z&|`{EBS>Ow z<#MKtJgPAod>XKSG4fk$)3%VN(Lg`#{B~F<+lkCa#nAF?-H`qUG zUyhy&e50>)%l^FcmkT_%aQ^e@9qX&g-<;}(u;t6}N54$}5KzA@5Wt37sljTV3mZ>w zY0;yOl!e;z{pP^iD&Hbk;L^Rm*#-%u7B!|jtvBp&wPU+Xc%48t*}>W9_(Wfin2c=S zcX@(a?I-H5ms9tCs(gHGWchH9KUO`Xyk`6v7{K+)1}QY++%D8F=p%bm=KHGq7v(eG zA4v{~W-DFDqzI^7*d+O6bV^rEuu{+kMs?!n+N(kN;+Z#lUHmdsIIX!T4cubXmZc^{ zwrWcV2j2!rp9HK|zb^AU1NX30eXTc-J}U7h4P&%G9iB%mMrRg93YtOk}n2rJWnmkwpeetQw_;?eT@$LdHvM8d zoNw-;4p`eDQHRdGv?UC~<_d)7lVRUxEGoR-&xjZl;1f>ye3??Ae$1WOrY^^-V>Qj( z$K$!_p{{Dkm8`1v?7xMY|3gm6sCoPtp9<}6)#7Goa{v%#=Z2rwzj}2`(Y>)rNDS`4 z3xIUBNDmFh42egWxsgfDzskjVP5Pt{jfy4I$aEuI0qmzS)N)bA$!g-_yyA50*6u?i+ShPJq|3l>lxksDJpD$Ydec7gu8)SO z>5xm*_IAa7`Fg@wN8qs_{`+So)p1_gT;b2f83 zsiT5F`?u4pzf?RUphc%62K`%8cVP6z5=A|wI!>j9sKOQo)#Iy|TbsOf2PZX&?&4=L z{Pyqg(R>Wq!EVTnemNLfnWLSHez!8EGzX-=ujAxn<2X8?BH1 zyV%<1@nR&rqi=8GFZLD1B@M;juB!#;A%@{crBKKuj*fAlc@WiYi@D^9_8U~+BDodi zs;{KPJ;cc0Fnc%&1bPn@mRA%9#ie1owJ*9K_TOLcXM*l6h8G&ndsNy27^aLd0NCm~ zFl(Ho_?Y%?{n%s>ub;tzCsw(r#cBps`OOeFT^o-nHa)oUjj@^3&6o3f>iVbVM|~9? zTlz5rHN}jGH`7s2tKOngN4b1B=1???z$a|zY|5IhJ+tx6*_Tf)|*;bfO`V@fY>!n_V%1<{dtwN=U92cIX+?pWqxl!b~?uVGfY zavPL^qLGbns-#EsMJGxRtrhaKuHy2nR|%g!?vzY!GF=J>pZV;|5X9F%Pzdc&cYWqeL$j)mbZu+^bBH;R^%+Y9P4=cZagJkW<#l;6Bxgl2rz zF|)S5Vipmw3$Jjofnf#Za`XjImy>i^qO!8*C>K?=iT|5|ZsNdNFpLp)``2O%ILN|4 z*J7@$#7j8HjkrO`XCVQXbxlu0?ZrxAg+LCLN#N3odnsOoY6>f)uf_>-jzHZy0Vkx7 zWKM}2azG%T6_I&mSnU8BMl8{-32zM%IeM)PMqadak>!2^?K z660S8Bbc_fSZhK7VlwRKEiHR;6byMECA-_46@a#Bck-uXnu`*8e^wFRkCkt20B2K| znB!!tLbB`3$mF)2gbgOO*ns3?LoD|i`o7Dh9x4HD>Y1YI4SS7N^{T!p2igfKYK9i) zGxjsPj!H5>I7@PTh1<|rnmgVOX4_DphU2`_bOzy9AOAo`mysK*>vA58F|U3*J+VkKYR`OOV@F^yIkT&o1s%0cwsgVb7AC2{rLWBq03@yvzTYYE~j1sWeG;? zF=-`zcpHDpVdYJ!-%*Tpmn~IFX9JlpaSXmw){tg!<@k)#p%G3tx;W8H6SO{Ho;9}7 zfB+w>%hfg-ay~uZ%$}Sic~=eNOX#6KO(SvW$5u0$)6l4@{%-`j|9Up__bJVP;MV_~ z^5HGX%Fe&{#`-PwVI@u4t`i+}HQo0gy6Af)pjShcPT*f}B#w%2f<8$68VI1ArI*I* zp%0)bp&IDMh0TxIBZQX4p>;dKH(1O0OnLiZS#9bZz|IJ%kDB zrQ5Mtg2pV-p$wy@BLfBS++uG*0}-h(4!JJymII!V7k^_!Hs+)@7RHd?FzLgMLDHCC zU}%6(Jz6_@Z_Ja`!_L>qzF*gPdfVyB!-`%z_(8rNc-*RIkEIgEXDkL~Z6$o|f0}yk znuwbAo;MZt%FeD1gFJmiLsCcmbHlC@fI<3iwhnvM>a)R!YQf=c+HLc6mEl=dU#K@_ zn!h1}vXO^bm-MLLN8oOrbHfRDn^27|?&5@+gM<)9aY~NE4kkAvEOSQ>zYfsb1Oxh! zZ&MIE0x3!~6>+6ltRLX!C5;DQecUktnFbmGg+kPA%vRP42Ckl?)3uUy4lS{f@{uM4 z3kARTHDDC4nbB2cyo9dfJ$00=o>ZP;JQ?=;U3zTVQdj{_XQB#W$nr7hn9^L|XWvWF z?$V_A5I0idydxdq??+Cp+5cK=d!*Cnb54ge|15iP=s_85yu-kRZ1>Rk1ZUWUeDGyK zld6ZXaYjMx=G#RL*IL{SXGB$DW~6f|{f!C&37NbYj;xWMYfB$J1Q0WixmB}0SU=6v4uM!78JTIA`Kc3sD3QE?CO+40tRJ=PBZdcT#l#3JX zv#qRbel~YN9-6u&P+SBpO*t9rskz>GGbTY2N%JON3;S3~IABkAEj4vu&i`#EDg%wK zyJiCP-y&f6%)=1J11I=?qRdjDYn7Xd-_nwnRMI2jp4SC zDM+>{^5d|9e9cR~bOFhl3XVvTgsg@zY@=K8HT<3*_^^hLr%%!)bhqEV)sTqOp!H3NUuf;(LA-IZEUk2( z*(@q9$>4LyqpOOo`$qCkY}{6CEATr*629FHIIfu;M$d7nTNR_CA2FlbCq%3Lzi6Za zHc!sC(ms^P8b-Bn~}lZcITi6LnG;6aMd&<{ZRjoiWhnr`e;5O*pY zv=H2Xv&P3AxCW1V(AwM*$?iurKYAIR{tCC>_=OGd2=SVE*s5-&4mcbm@n7d#^VIIJ zPeB!qxBJ3x4%2Kqm$&^Q0h(7(oA2U(UJTIS&yDo@5 zf~agjtRG;*Ycgw3NUa(>4R_{aRV8X8CcX@m06%_1L1MAQ^D1HBm9>SF5z)TOl()MX zK1LtpbWH@$lJsm+kw`w(ydz;|VUADf@;#nZdf;;tv%p{-*yITP(7qcGrE5Z^NZ|#GPPHUwm_K*J32I@y^l! z^V1y_^0;|3+DuyIjz{i3Q}C}}X@<(g7kBu)GapIzU?nI}^kCVDsKxC0_x_Ajrmtu1 zN~&we+nQ3Dg&);VcQOksk`aAukXL9{|0(Y;Eh97%_^}Yipm)WoQS4fcEEdMHQb1a3=X)5sZ|A znwEh}Wo}7yt}1k=tZd<@EBvL02mJDcr#T*3qGWtaIhynu&4d>{AQPMZT`1r0j}b*nZYdjJcQ6lk2;HG*7-oV z8;)Vm*nMJLvZ|QGM2FKW#zoJ|^9i?)$kvN4;a*?;m+*s2&8_!lzh;_Q8ldaNw$E@|~&2;Co8r8hy2Y4)^esrR#-tcdt(f<>>R z`R!a28^;$|)#U_hnN$zGybTz7#-|dW`@RSpAQWy_m<6HsyiF+FY*FuRe`^uCyk$pzI~Mc5|9 z&W!lmy-3qre2FS7PK-T3qKt@y7MA%|LNuORDQ_WE*&_vf^-+Af^Us=I7|^qg=Z?%; zl6&^kP{A`(r4Qt@l$qIjF>P9esz zY2|tc3Z|Dfi0mB7bo8U3aSebA)Wg*`4Ms6Sz!R#qGsaqUBwSHkM5lK^f47Y(y|vBg z17Viz2@_mTpNsOz;b4Y)3`aRNr1T8KP8e&S6kF!u&BdOHJ^LI;#M`)E8&V=LZx5R)jjHcr^+y`iU= zBWjS6W3p8Fy?S}xy2QO9rqi6mnbyp7O1^4J_jidd(V%b7&%LZtzqP(#%ueuG4`bY78Wge593Xeg>oiT7)l*Uaqgo|yy#*%HPFSAbw!3*7p%Fh_+Bh0 zVe=HLzBX3Yjdriz%uk*ZI+>eQBUUp}dw#-K;HfA&Tdu~2nJw`y{#2ZY>HGotq?i{I z-w;9uvSJrM2J0*SUU|Z>_FK68n?p>Xe0Jpf_VxAt<(LC(&K<5DOrS~IbwTOZ45X~$ zY#H;7)w@I^ z|K$k$Z+qXrIwk)zzx!WLY~q7Nh4h*4QVQO?!Yq4U6T?Ln(Yx26k=9<_%T{Wd4UN>_tD?glSdJmW! z^=qP~GXYWo{B_!Bvk~AcNX{Pu6%_-Nn>SDdr|(&s=xDe8WlK)(UWl0dLI}uM`D5_f z$`656Z*T_`OY# zt#WO7+rl1SQD`v+%9)xw*;@7Zj-lx1`Eafy)T6X$%^g=?*^CSyo2aGVs))Cj*osPi zj`=?X{%#~|&Ocu~b`d!yZ)9!o>sfw@`|B86@UQTC2Kv8UOXLru{wbE|ALSeW!3X|_ z5=0;_?10YOue$p+WWNQ^7!3Qe*zEf|F9wE>?$a}krL8EJh_Bf9!ku1JW;Qf_t@jZP zRWtx?1U`ncPyhHdeEv)8TnaLs0l6;mi+DSE(Z+K#_@^Sf*cLg2cjFI1Q8 z=U<(uorgMY7m5*bCgw({-|nGGzPGpu3Km~!LTsrNm6dOn6*et8?Pfpo6r~3$s(f4s z;#v)PJ*$-2nH8pN?t)9M)$p#@CETcdM5G0H6u4%upw_i*1SAdrZsMm|=VWPBAEx6L zKIX$`J)rw_Qzc6czJKC7k#+Pk?Wtp{Rtb>aG*&7Dbj@Q`ifP>skSU|3YZl}>}Qa)7RD-fLez)E-c5Sniro-W!De@o_&RGL4{pz`dzsw+5e z>_U4^`~AG139YFy#(>;{rVz1- z>x>nTFvQU_L)SVy<}1>`Y~*ObE~f)lRjs+xs$;2OqL5Q-Y_jx#l2RJd1+i5DWE}>> zCuYd4Xdt7Y(C$}NWw~v=LiwbVeN!eHk-e?+pk>}tJVN=EDXT`fhg1EIvlktF&=u2V zq~l(kux{sK*Z_d!a`;~UQbqknPNrT{2-g%A{SHsY`-UXFoMF zs^Cp(zj?1VHs$M08Q)WrMWI#20$r$pLe)I^aA|&{Y^?+1@92D93G|pu>&n*Wd7R)G zXj!Mj8Rrv6zr=T7rro!@2D|^%C6S^)j_|!^4;*1df3W4Sv9)}>=!jRo_*hnEJ~JDJ z;OOCFRyk^H#1h{yjxz*`&(&{}CUkB{`4vPQSkh4s6A5PT+Zs_nZwDwjM}18gEniGB z-`TYi@Sd2&rS(3;Ei`+H8%?VB&y9{wp$`Q)a%2ej7v|t~%D_&S3Ug zgBW3Eyw119H%SX6Cfj=~?>p?%L&pMObW(Fp^WH`E52l7dyINLt(%o5v4QIVahaFVJ zvaZ20gkQ|&KxKkYn=&&8b!mBo`eVPm!78+G5yP>!u71~>ntn7g2J=-uK|a(a+XcK7 zwjpSCl=DwOMt2_FImSsQ&RZ)R8IC4;JLjnoAgQ$kqvZ*ko84dMla{a&a^`i%DDL2KZl&&3rB!d_mc z7Yh$9wJ&O+8EcYt8xREzpMaBXRPxn?KDcf%W31d|a`M#!c=vs^`#LYZ5@?Zt+_1rT zW++zJd@DPdoqlHzs9xOoyb?`O*oGYZ;O>1{isPJ6X zOhBRO$Ca;uz;;sT7H_$<%{tnk zS*A72+F?Zj0s4MNXs61~O5l=1c_Y&Aze5DRBVsovfBZAW zX|lWm!+(v#I5~H%Hdt)dhgli+^Vr65M1HMwoFf3#WR)v8L^wJfN_bPDHG9Ms<>@)& z2!>4rVUQxl3eh(7(4wx7Y;;3CGd?cm&A;iL{-^R2{>@ALXX-T?nt$1z#bZPesk4gt zn3;RfA{P^{vjVjG4$)9hd`f;%-N8`}IsYyT$7_mq{KA~b|Y3Q`OsJFu%o#g_#-$Cf_Co{MD`#GMyeJYeV z3-CrKnVG05vsv3liG5IfvVYf;JcNKmW+Q3ymcYY`?=W#K#tD`}O(4WJv?#Z6;NeElSU=BMM^)_D7u%81(|D!R4ga`TlC!WBNzLNi zvhrZ#^R+};K?+CT#0e~woPTq*Vic$a(_*Ybf08`T8?~qTGmwd3_1P&bK@~+~+1*91^&v7m;j2I_p|C1=T>>XQth{#j_;Vs7%WZZ#` zA7)Nyg!)l*X(&46jF&l~gwu^mV3V?Wbw@5wbA!i`Y1Ccl5$8P8garbk^RGz%bN=(D z4vLY88@h&5N>_~_`^22Pz?iq1Ywjnv2mn&pWo%N`Re~gn3q1ynmfbX(Gy)gH+SHBH z`tOU}6&+P)U;QW_7QeZ2c%U&tRyL@MoT3;3Rk z<7xoc9n{Lj+Cc0ps#ud(-wGt7W=TWsf)e`%IuO9CijEf{*o-}#+&gQF~D9PM7B(| znB&w%A9v^$9qzC+NPMK{<_ycsm&_4>@(CG2d=kO@HHH3}numQFeSEh}dV*26GQCQS z0kFzHa8OAON#cK3Pebqhyu?$t^4N-I^<8Db7-UgRq$COELEkh$jwrjk0n0TmW|)Yp zvkW{>)DiT`FMf&}vRkBfYbQ?_+mhKz?Dh2xn98I3?-s|uYiBU(jj}jJZ{<4)-&_1~ zBt^17ej~2ZTf`+uvRP)~#%6HKFP#tNc5#OD(7LQtfmW2$jFsg);Tmcs{@_hW5bfU8 zvs6$vn*!L&1hWe8mAa*Upe;cl1hZ824 zIE1W!I9RQ%oLbzAiRFdS1u?Ei#;m`O#iy^FRhwCPJD1vBo=NiY?N*EImnKYFhOuRR zEpSsA%CXLDbw3UjHvJK9?CV&bUqpv@j9Af8aZs~wcLkg>6P$JyS4$p|!cY-IJ4bcN z6ILs0hEIMV!CR2~g$O0D&48`=XF^wkepUJF!A%{|LPRA_7oHzf6;wH*&bruldj1Fk zsxyUZUE^UuXVP6{exKPwDFgf!6r9Dqv)eG!X0SGpU0Gq`>itey3Vn)ijkANd=R9R{ zq)aHRQ>jQNtYF8cimPn$z@(---0g{aqLlNE^BUXpNDI%>g>8Gxf>Wteh|AfDEFXak zYlgeK$;fQgYD70hael@+g@VMm*3-RU|2G|R_ZOrtdEJT5_wYHx!dr#{!ax(DyClN` zNTNh$zzrFKhEtF8@A(CP*C7ADX9xFR?`iq7$--0R3K$Rk7OVao^V1H=_Tdl9F>yQ) zZX^SXm4>yB27rc1N{w|j+V{zXpo@<$u)0U-BzwQVhasKXl`^l=i>?9=jlnfbn>=9n zmcisX_PLCZu-d&>E#3*#2Gki=AS@`2*Z#rwbXuK<`J_u^Mf!x$0Zl&{5xF1*Fni$zUYI-1mn+jF8A22~ms$hde9|9n>f*%s7Xk8oQtR0o}1c z9lp5-evk+)_g#;(?-eF<#ckRVvhf|-GbmjnKWcR5#$jN~7Tcl>5`h znUNv=rTJwjNlkh}c$^1enUM6k?+ew!=1If(!u+_mFTC>Y(?l56k3}0JOQnC`a84k( zfazP^527DJAXsLK*3;LDA#B{&gC9kd@w^7l0xLIfMt*a?!sv`Uj_jA*(MTF5N*^h9 z@Q4qh+%!tc)5$q(ds%N)_e$Gmy#L{w7L6~XgdnS!6M|quna%{K&%Le_j|yDqPI0p6 zPy3~BHHY)wI^?`E@t}5bJ~Em7#$clR87O9wW<&VJ&(Q<>hk&NvwKAjFqN;A(iYNMx zhY_2Jaq`*lU1OO@_r)07q#RQ{eMP6zcPz9FOZ}z0R)A3^KKl}}enH*RH?^{CTfET6 zUB&(tRG&>1qmfAU2^rjKWpr-mk~qsm{OIon(qD~Upk&R_Y)k&~VdL+4-fnm9bZ~r- zB_Sa=hBvc`Bc1fWBT7va?TwzP-;e2*cv|d;c&4dn)6vdTN102&Qdp`7KIL4jbeIf3-o@oNLo86=@ zR6xzL*e1(F?2~(J!C8gtR2GD(*H*YE8c;mH1L>QGVRI!)QhC2S=T6;*HZ_eJQRZv9J*{r^L4q<`v2{m%sL zemcE0IUN#3qq*fZQwe46TCJ1ZtIgn@S)R*h!EnWMHfqiN#Gq2e#+(2jEk)ydU~H>~ z>RmaW9Db@Qho$U9{S?w^@gsvVB1Av$K-gaT_Y&Krugd2`*Ep~L|H=Mu9J35<-=wbt+{@^?=0)=hQW_ zUtx6>6qn@1)EexX=PVO;2go)5az&E;HF7XK+`jBb$2IxyXJL2#*^TtSn3MivcmJ9_ z7yj2^&|A0O=lk)Dr?x&7ZUZ9BE?zNG*@ibPettZ_kZxiA$)kr{4liEyNQ<0GlT(8q zmz8WwZ03~|qHFfU&nlB6TN(}@`R(mH8c#K#JBFn>Ht5C0wjKdiy2sohF@6xb$27tE z4#jo#2I7`x%0$V&^RTug=M2f)Td(gtdu*$bbRb~yay(hGJT+>}x5+6Wo&5Z}?1$&0 zeuwrKom5%W?dVP4(KzR9U;cv8V;omJ;@DSr#+4x1Z8SzdlOG6pv~NH6}Q43^cAgp~QAmH+(n9;5sU6&XHe=skh-q^_3xbD#iyH*(ZPYLV zN1QIT7$;;wSl676i^zuW^DK0QQBknmF|K6hju4yA7lVX<4>?_x) zxhB&F6Op>cZ=wzD9t7(p`U_}ThE-Vo&OxAiZuxs%1I+PMmyj+gRN{aqHiC1=zh(h1 zUv*IYt)Dd(%$WB`WPCf=$S28QY?RrXFr=w%y2qvcBm1*;A<8|(;roy!6ou7hQ{IGR z?x5U~y-Sej1F+u8@=4e<+rVEUl=HZ*;yUemrj;R0W6OIko(9AAv6yT4OUepF=|@;n zQc&s^QtNlEQ@8Z!===D3(>cDgzZ^K`r}xad;qDKhy$@pGKK}UQR=5+qoWljI`a{s0 z`BlOSgZe{Yv~tvO@jgv^+~Bqwb-#kQaouprBqb%`TdhN8Zo(t8_pqwzlA!y04x>KK z@)R{Yb&2UsfZoMLhmFd5 z959#I*x3h{~=lzTCKdcjf%Y)I3V@>xA z3@81xniu)qBr+mWBlWeoOAw2*EQEH>S&MJs91c0vI1ETi+i-iw+Z(7#9#pSk5`A|w zRF22MjS7064to5f>@Ok1l@N*{l}#d5E17@OxB7SEEh`<>1sKC00+M0xs|eX$@mG#P zuKpyV9d0`!iVOtuO@Jy;lw3Ap4tv?u&Dy-ArM>)Uogmz&+U!$hEEgYJ{6w7uq&n#u zr;Td7|Ji!jo7T~(CmAV2xC=pQfp6Ww!UB z*X=i`5#4;Upw$yQJQydx^?3TU5kvNx0g#v3H%*JOpj&bMpBGJ zHLzn$umnCPjPee3BJ~hrXxQbqi#X6SW0m%UH|j9UxPP4a8l0 zLPx6Sw|Q6OYZDBPr7Hg$EMj4RpDehI@97#6!PV3BM6_WeQIC?^TfuP$TKB3n6oo=T z`S2GiLVIAQB%v#slqS|$*@in!ek@6uo6)d2UMt26#HJU87DVjJ43DT& z-sZ9Kt)hEpC+Av(YU+U{47vbmF~_qzyj6`VkEvHK$=iu*vIw#9(jaScd#!CDw6{0C z@ww3;ca9UXEGbH^{$qWCp4`u$9~)nCKH=huiVFGLJlov#uV9*6BKchZvE}@qs6Oz+X!8T!R9#+4*4+fSo=pkCQ#3~gd1LLW+IF#F+- zNkm*;f#D4ly_wlKWI1r&(n$bQQ2g1<>VEK2dZi0c&>12~!4pEL#J1Ip^sm%aL#^s- z4xpm%G?XE4xM0JFA#ZjfX~I%&6J!1mtkN1=S0>IMnsMxEW!;l-pXjDyZr^$&=qUW_ zw_OB&XJE#Z@vmQS9@r_I@J_PYQaYFrN^ac zGtAbYKCI>W&xn-E+e%qHfxGEYKmgPYhZN`_c^)>5F_ zCUQ*8ITSrMW?*u$>jR7>k!dsck$Sbi>dN=?{%({1p}3lRSa6T&urZs8-sZru2moZR zB;OozdTxwUhM|9`;HDbNU*=c6iJvlNXP zlicA+m5oZj9lx=m&b6_C47nC5-!2lu1VmhW;D85}Eyh04sXcuv7eJ(nI*Z6CDF?>g zxmAmJBzl#;4}(I);12-F|9JqU@P+*AP10YX6%`T8mV^$XEl<8PNIsdUYp{u@%CZgS zGzPgSQlBeCEIowPGhh-DnIX|2zakfXUY?H%C2opAA7v^`4+6_z)9+)a@Yoz{57&V* zdpr-N@|5}_o|LnXGOLNdiKD)M^`5EL>w=cH{dM<(ccT-Z-!SxjSPf-mUku~8Y+16q zTE5Mamj((<#=tr1)6DkLrb1CQv;)e-aT$G5^kg9_3WeXLM60RMo5+E8qoHfg zV5YSngGwIE1Y4g0-!{#Eh(&umzWwv&K`0)mfKTw>$@1m+Z;*SfF44#1A7hG&+$yt; zg|5(TjjVtviGLJ3{kyK;|K{uBZ-w5+ioee3sbBne6Y-xkUjO(y|A`0w1vvy?tCK#9 zMsAUm)th43o(2Rx8}})*bq<$X-5;WY^7i}q$9Q8amFnhp?&sG_fYwqc73gZGz&ch< z%ybQ674?*S+JNVD+hW=jgqs5VaIfTC8 zS3xT@P@#6r8O5+G3(daYQ=FdEl1}b{PGGCt3RU*#YQ*aRCdZ?lV0WEj+2ql1)3%&g z0iE~EUC<5jn2i&K0Zf!^(a5k}#EzO48>SM6PnuQJH<-Cl;Zd9682%!!+l6$e)Nt=J zV09=+4KN6*>vD06Rg(~M-40i^1Z(mjZD^R5{}5E8axDdH>lgU=*KQmYr+*Ty9vKJW zgM|fww2J=O+*ql*9t&ddkiTRRr(Rphk3Sm>s#Vc2YpP&T>V0zmUGky32ULd1uibrb zuQN=8+cn^s%+!@;u9PGOrOAPxy+_sL%E@1x`HJruztr0G42i!*v~sRmVpvr>+Y+p% zAyifMAmbF^nwa!SMKI6`Bg{)P|6N*~a>HEYuikwS_02G$2nr-%pOd{Mf-BhXQ&Xcn#M_HzlA8G4z#vgcjZ>XDn%6mD1W8zxqw~$;{wwZi4Sw@I&K;tQ$yWUAqB$i{Zw+ zeD24NOXAIPIv)ESdVcxK!9{g*+bC8ot)~|{KBa~9RD(m$B6|BID0NO^Z5Djh-T zy##3i>7aB-C@LaIhY$!g6zPKWrWEnT_s;K}ci$;*j63dlR7Wm~kR;qX@uBmlhbtZ|(61uO= zwXs?=&FV|@G`=tXa{tnOzGQ3!EnB_hBC>UFmbp}*sBjDEV)va@ArB#u+*Eveaj{q4 zmFlU+InnMX#k?cIAaSJ6QplW#EpI$irw8*7*UoGxxq3II%4X{>_4~tApJ30EX{2-> zKxW^f&6%xR4QF1DOc$^g zab`+-?9wdqK_yY-QW0j>fYz@7>$8l2N!Rd~jqk(}_1B{;IBd$iH17;kE~2_s_z0vN zk9Q2Oo-J9ZLD*o$WwP^%DzeovI&P&HH6z~!gE12iUf3B+kMd+aP@yO=D>sSP1If4j zeG^eZj}IMS2r^7I&@v#&HGV%j0feiF031@fse)3q)%vWWB`t^3$1OL@sGo48Kzr>F zUCehf$S{NuoFMy&OwaZBfD9``REN%!0vD$&4e1djb|YS|Xj{%45C8at>K@-Mo}G2i zHGl7QR0watjB#QXDQR`-*9vR9mV{uq0Tmx*W8TZv+y{Vz4=1~pH)o1O!9weRQAV7^FPs>`)~G$|LUdUm-c>F=6d6H={B|!f^|wLqW|s_ zho8=M1|+B2UqdU&3EwW}bI|xoCEM=+2U^_+ohlwibBkRJlhZb_4AHt&R_t>^Bf}d;;-s$|khNvhqc)3XE6a=$CT0rTViLqjI=OR=?U#Z2$EFy6JU;*AMdzRU@}H18 zT798!8#I65Jh4S+4hSYI@>oSi0gq;g`WS2PwR4W$&JGr*x(p1eGhD;~ZUWf>tr(kz zxlKjO#7%aQbIZ(-gpTUooi$x26!lt>wn;|`w-06b-P?xfR;Uous=H%f@1duBDHhu1 zuiSEKnl}cTc3vntg6%obx8=wHDquH)P|=eA2mL=r>0iA<2DpD<9QUs&eCC45@G*pM zIPvgQE~qaXk;HpHQ~j**9@41+zqo@y4)8=rOOkM8EoB{p8x!QG)&&u+{81q%dtVzv z;zH&H#6v$LrTNa(fgc^SkIoI6#|!DoHMnMar)ZE|%@JV=(Vc=rWiS(QMf$jvx<2sO zcA~NbYUFJasRX}FsaM1rkola@L`w~u3Y~Q1ec7m_M&-&9{h-%ufA!RQ`ykGDXRa+7 zXn~c1G#aupm$5X6SkGEhX~q%Kc_e?eUwsW}6y#GcrTQweqE26M&tPk-W7NUXV`dq~ zl0T1$99W81-+pSDJ9;Qi`V znrfepAY#9$CLJxrai3Trht|mrwNA#UlS7bN&O&Tgui;cH_RejPxBO0a?)^1{u*8Z- ze&Yqp+`-MjXRb)Sykop=LAq(~JB6^UUtubM_!IAK7k2j$X8>_9xT1IT*Qw8z; z+Za}`?9a>SW8SpFeo)8{oX+OamYL0v>#s*QWpJyjsC#Y7-(bm2WzUhIM`qJR{!S1; zShxSzB*_gg{V|N_)y1K*g7RSMDBHn7O(>`Ou+2B-rrGxryHT|`jN%?VSNi#i< zib%Lbpku^QT7zRu{a#pn^UeD-D;|N=n^yY*)LqM^Jbv(u zT7ql{t5+fu-vyrox)`%THy7fHFum-G(^2;_CwtE;OFW2gB{%*wY6w5o zQ(OH)zvb8`;9Yzj+Uyu-&nj?y50fWq*fgTWmn_7!!q@w}2Itx*h5{@_dZJ9nfIYiN zO=s~6bdIqkd+SU^h5pV}^v!z>cW)fb0L>;u7(%P)37(ag z)9Q+{<`~iA%V!A!d%A9%O841&jTbvqo<2*3q-s;f1zUld4aQpud7kJKk%*Em0A663 zck|={btSi6ZD^S&7%=87EM7^(=n#!l-0LG|aoVytiK6*|GZ24qmzN>9WWYe9$%P}zHe~*(AJ)X@v-2_>HX!m9&;+yF7C#JTXp7DzHK09DT4yUhczO0 z48kiece&Sd^|=9CGA<`xVG7{PpYQPF(fTvT8Vbj|g!`6Q0nUP(qx26;UHLgOlUCLp zWZnw4wfj;LcYGfI~BU%}7B4cP59Zw(2rdgkZ73X50`}b>;U@m%#>Fw_Uf7DaSeL8ZRDf=e)En zq@YE2D+ESF24qyC(LQ<`7}g8cQFEta-`6osWY3cu=|bqEZ&G`9%bLhE_n*#>n=hTG zQze#`zFw4qgjeJ&r=b^9Qm|qf249>9jxMqmS5=isu0k1LLR+D=iOUtsRcmqnIX;;MRA-$iWe2MZN+o>}#(&8hp zaQz7HFK4zrN+83#iX!LE8=6ZSs9>wUr^bxU_$jhAuXd$)iiCMq#9SM5YCKfF!%uGKJSP%S5Slb@Xs2R-G(m!h2;v99DLBzN-i z69J^;I-sjkz7ST`8mN@rZ~;|{PnKyf%Ussx{i|Z7)h$kKGG9vpL`<@=+2=9-HueSi~%GXz<~b(K0zG653Sk$@a$jfLBD8V$&{l#m#U`wZH#V zfLU)sHob>+4=@|QV^4>Q7zCwk7CvnHzB#;MPO_#BB2^Sr;9%%nCO9>ZW?MuGtfP-N zBMy-AWnUUU&esRkg9<@rW+Qa+!$`JuK(`0NTij19 zPRGK^&ki0xVTeZS?}V`1q~9Ew2xmxvemcFF)~;}SM7K2hX{^zc6A6W^O|$wrq+Ut0 zR}GRBKV{l0UaHWse!0O@IRmB=7elgXN76mPSwc#O1E*mToE1PIUOwxZ-WRR~>}v<^ zzV<`h1-x$wth6f+W~WO_UXA%o#B44W<&6uDE3tK8n3`&wZ1@QX`tfZ+HTU4uv8B2* z4hUVVjn6z7KhhIl;W^&dFF?fOUuFD_?CDZa*|IuF3&tD7)}&$A8ho^5Jw-3Aoh{z)+cZSq_T8?S-0U-5z`8Ab5@H^Z>g+e6y)k6iusX=; zV%h29ajyy zm5AxVxt27=gQaCAs&GKqd|3G8;mPTUKA=ZLq@@~nwu7~DKu=9Z%G!HhBHS0kiagCp z6+Q~Dk{n&U+8@ikQj_QslQWQ*?PNuaK`i4vy4E=YW>WAFmQ6h;pzf2-1m{Y5r$=}d z3zX!$Cb&Ms@wjHbD$e=&0h&{E5aROGB}!MB+Bw!lLD$A5OAv+c2^Ov@&@8}gl49QWDN0NV8yWX}K&A@pSl+}k&^43mC0xf`M$uD&uTFbXqMcAg z++}79Hv(BBw$8~8ey^{m@B6AP@J22CmK*zNP*QZ{DG;+4XW1rQx1|lOU3*?lO2#jx z!wl(tjYb=Z>hOi%emg6!5hm9^qLH+N^XhnAS9idj0j5q=wHuj{RP43BgotYJqU$`n zrwkA$Q@n*_2l=cHjf+x|qlaLr)jZ7`^K37!2k$2j4e`@o^CdIwUbuJFOf`cVnp#*j z3Wss3K28{IXIgbpR^#ROfd>G&R?}Rv3V~o@18-Ud7c6vFqNh2u8e0 zC;R73QuA~h7BR?;{Smo<~jW2&_5ma z>Awg3&a5XG-(d_JjfM)sKBo8mMsktZu9LOq|mKM9bv#rOP zA+AzsDb^%%JzB39S6^GE!S?IyN@pEL1D;ou0{q-+eteZS7+-JhacluJ!?Aw zNgFS*L!XoZ110mY%bdU%#C51-Eb&SsvrFk-Y_jFjT6~ogAa$JiKIG+LIY=QKc7-QS zLq*R>51(@H?ZNOqKnriNITwfew&)Oc)R7V33&fC~K_%lDz+hB(DYQPv%ZVes`@kfQ~JC!vxwp+G|KXAIQY~Wd#DOe5KZnKw_dDf@!i%d)} zHjPcnImSBKKCfEGo>``<_UQ11wnjy)@fOMZhXcVP2#q73hFX&zw$)M9DaDa%!UFt# z^!5G@w0fW2(#4#4ZFMd0Kr6GMZ)oqh>;vk>kF0N^(vl?-@0VB7#@+{Ly5qJJXX-d- zLg2{z{U!rVL*-AKNcs9YEwpi0CsRzcu$B*{2o-*x=>sikpKH~UF>8?dHK>Sa7}!^N z)M6=giZA_ZFTE1jtHyOdSf=D?oO-L5c!mE7DJG$eeNY0)7ZA>1=#l{sxc=f(n#=q* zP_D;8P-d;PpHF9`Av?;k27ZV!B{h=v5z-$KlCTd#iR=}UrsNc@k!>*sB`!QJb(UikP0J-Wm+d$wKnll>)LzCSpoc&o;*iH0=oq#QM_G-Z9` z6X@$H&%Je?(Z6V_yE7%PnyJzl{*#ggA-ft+f*!%Q4@N4&Q;-l zENLFz`ji-ilvF%U_c_#IceQKcmvSm9iv@lnMKW)JGHYsb%d1!fvcFZ;TX8wNn5*b~ zq`H$%?jzP)d}H;QOp#N3bJ*N6EyF3hwaemdfm>A+%7@CdY=h;+-Ua(aH*v#;rVdo! zODTH_rxwnx+EC90(;O3Rv;=8ktYziTgM37;EqE0RVP@{6mJBs_&43t`aStqz z&qg7Ut}+)8Ln7y6+yaVqQAjI&=HjFn zZkK!nv!{zjl9ev|Be(IBFJ8_I4v7=%l3&6#Z>Zx3iS3ZglCjRU(X2kNX&O?IUu0}G z^D_{O<>m#NGIyDGCX4t-OGnjkReJKSHle>hDVL7oAZ{kUxpL?Ye5h#W)q z)<|9AJjpplfZoRxHE#FNLW`oMQU=xa9S^?O*y0w@B+S3FI&S+Ir5jOsz-5uRq=5^(rkNC~E(+1J zOLYDuFpYyR;EEFHNm>> z#YB1p^$HW4)XR;;+}JF@zQys?<0MK!1^#|*hTiLsS>4t_flPZv9mC2(A$sri{Xdy! zv80%&v2#7^1+myeXda%l_4NU;4$vwo9eOCG?7~v#G+LO7DhLE}Th0|B!QCRh{tvS5 z|AT7tSKGONU?Bg7@ZZRq0bX&5SP>zDk$VyS|46p^A9wkeef%9=^FR6A@O#q&4Z3tw z;HFf)FbfA)0lxQ}ejpkeUW?aV-5a-V)kep1VJCo++3jQF)*k)I4>skF__fKZ__o*~ zQOMTSg-#KFjqPCE*wo3j%%-7PadB2!Mvrzn;#@jZsx}Uh!ail}nPgnBMS4^1JG$s$ zCi))10Uk+Bz2=|u%AdsPmka*{&HVo+mMkp4qeNkQ6L(xpaOFO;AL9{2K;D?4GrydF zVau43O-XS~{aVRuipa*O?llLtdNgFUp007~!)x2a(i{x1U zK5x(202cG-(Fr-LNl$rbS_}#nC6%$gM%1Pdg`?iHvJLT?WhA6|?`}2!Mq(mL zFPp5#`9>a)N3)QFNJ`cH?%nEL{o*G}m_s+r@wi+z3<$r#z`y(GtW^iUW87t8KQUN9 zZa0pKQhJ-2{lGC7WxuNBO3r;r zz_6mmP9`zVz>_{_)+e#oBqjDNXaM9CZvt_8*c0ncGUW~K&qx{AP+uD-GQEW#S&VxL zLCV%R7k~SMKvhV5b1r-nc-}T4RJ!BdIb^+;CRJJ08uG;Sf#VPf{{msWv?`sSaArEr zq4!mdYM*!~=p&Z!XA`q5;b{$UFb^Yw2&qB# zO*UjlSB&LVXHZg8&+V=yriK?*WTb3AeH|7-K;mGX92sWW#^$A4wXPNGV8Q+p(NJ%! zro3sY=q}*0ZbJs_^_{pKwgt;GBL4L;p!Yu_*5(jjDnmt`c4-3N1mye^`?bu;Jlrg( zp|+jpei7iIWD|YkhR5f>)+Fw^(tk69(52e?;SZMlgr?bwPP=4t?b6H<@nCyH5d;wND z44FL6kjsUM6`i)bob~4q%ab&Ho*ozemnL z3#(U2i%d3`#2;pfn`kzy{}YUNk-y@S8O?(E_AAz;f5l~lZk+pXQ2q^3cMcB7#G@3JxBt9=5f&K(E42K0~w1Clh}>kKknx? zeA^~6#klR7&A2Z>6gZ0Axtf8|GV|@?z5#qc>s|Zl_?m?FH`y|y0D;54%5zoj<>W#F gmb{<;yae|DYH#wFtJ(ijF!DBoH7lz+ef%oe2^M?gSXz-Q5Z9 z5|%vMt=;dv`d|IKRlmHRsx!B``*!y|efsq2BmFS_unZtpRa8*~pr8N%D33qD!yG^k zfQgQQiGhxZiGhiQg^7(zjEjqdgG)w8gilOKMny$QMnOSC$HqVdWTB;?VB}$BdCJbo z#YxS;`;3?485;*D$KOU!u&}Ujv2mZ^;y&S^p`hXTPp5}g00}l~9{L0t3Nrwe1O<%* z<)H&W`#4BcG?c&N{nvzsiHeSag@XN9YC;S^K|@1DL&NzydOTDVg1@!VF-S<6FrNsJ z$?9M+3+ldgiGz=j3kAhvv*;Nlj=j`>=bBYP!IoV<$|@!Yb#o6+$obhuDJm=iS~;pb zrg|!G`SDl#W8>71z5Y%A+VA5(%HPHxiv&p?`$0iN!Nf#;OlW^=ppc+42^`6yk?OpS z8+qaqRNl6db&SqTCd4B6Qn%t^7J!fT_znpg3E(;4Zae&QLtuC~cKH7aaP2Z08Rl)S zUxsSvU54C7JpedlahVyJc`79*JliliDuy2b221Gw45_mF_SqotqtL z`~|X+JeAKM>kIz{|Mk*;A>#js6wzJYYE>C@@G6s;nV`>e@%eoH$f&-Wnut22d)G^u zRGCKYb^2H7zIdnGuG{47xvPC`6O88c0cB3Nq&k?3#K|*v$7bIto*MTqYc{efewb=k6`NSNmr|1`-0vN%)wzJ=1); zXAKI{?jPc|^p4iuNewDC%}mHe)nne;q(H=Y&pa*|(8;))5cLDbyJ~qnl~n*6`4DP) zmJZ*SBjzL0YP?Y=AJjS_6+T5Q=`^*wDfF9iEP+uChRe}4yTWm+nGXOZUQyp8m(n9!kJ!Se_mF_$=$u0=9^^>!tsD(E!J3)=PC0Y zl}e925>s~fg|?bYmD&cE6EMBcKEJA7W!v~_nRdW+jfhWrr4=RWjU)=5w{`xUfoH9P zf^(Fb9-rH@rs6>qc28mnw8bjZ(J6|CLJ;>Xk4GfXf)erpZ$ei`-#`ifT;#xw*9E!+ z?0dDUc%u~aqwq?1!6|=5(%ns80|C#jH=GQcleGVAyozr2!4MDPie>5>UK5pl;cG^a zl0C*dh-bx2NLO4kg+2nfw&a1Xl7`f^|5!L3flB2J&pF(Q@Qgnj+ijk#E=~LObR%KD zx<$?7RI!FIZH~#ATV7u0Ur6uYp*1rfCz_@SlTLSDM75nD-p7$&Tf%`5O{Fkg!k5gw zq7q6~QPj|IfUowu&+pe1bR0|5VHGlF>O?$oDIt|{<5r}&lP?q+Y^x^CxfR&z>D^^5 zGjg<@2GHZ-FSc>voz`V7hAC93Y) zX&>bRm-5R{QdDL*wsqmxay{g=wa0)Zjj2{GI!X4@?bDilt*YziyMI2s-`sOv1Wy!D z4{6@LwPj@Ht#v#XGC^?XM9~;~mcyTG)2RK-wGUuWWHvJN^7rf5aShlOtCpkMvX%z8F&{Nl=cOjJzOq)?2&wns8< zK1Agah0gx*CKv3pcNym&p8tfp*BlD(jzw)11Uze&nR?YH@2MmgN&WPhsD_+p5L_Vj z><~!|W@bix+>!r}fSJr}M6G^xdRV$~#5@j3$LJQV`!r{1l6_)9@#dyFqaQ z;K%>KlL)seNLRM8%t;cXkcLt5vb@8^9{DHE_t-&ZgUTo&4szxJaE>kTm&^T!ti;iz zRHS;Qe{#1zQYC!U0zDMg6((z37;IOMi0u6|Zm7j`+PE>Qda?z&Rhci|`@Y9VPM6(` z$VT{~^ryVMeB(yV&i$I$ZMSSHvK)Y@pX%qFXCM;HI@qXngSvXKbntQ_5bWRG^~d_y z)Y6LkFX1PLqz82ug*up*vzPpp%_FxjfBq)gGrffRfX`0TzqxNW&y`V1TIP!GMO!l^ zk3Cc0w7XnBs3gH0_oSI#MMO&UCUqG!$pN_ozq$GyXGj+9tu`AN8BBDd8yM&f(Mh_! z>|y02scFkR0}=#J{trwZLquzl=s@T$>t%k?ZQDKaLjq$c2{C2yG}YzY6=5|nk&aEe zw*RJw^}CgI)E23+Nt%+LEEQUlw;;E*bak6i`?xAn-}DN->W>+=kw4WX%5 z@U@ER4X%%`V~6QmUz*mZABkibeUWmS(s^p_?n$c64A%C%1mOW=Yc4q9we2M0cr@vWTL=B*RQRox)D*#Uw3?NHD6D?O|qzdnK zD+|hJ`ID~StxOFmymd&Vqz2n*S%*`Mh5V3o5Zl|oL>$H=QcRo^*~5C&$eH}rb(+m2 zjD;ICX?<(}R_=q6QyI+gGV_{6wra?C%UV3WQleD~oE0dOFOWJSv#!KB1ygifN_DZk zqD@2OXhe5Jf3UAHXjpj6dwhDPWOJWo(4TH9BHKb*8lIevn*^7UEcK%(v;z|fE1<`} zq(f5+qitsz-V$~LZn-v0{4iclx$EI_oY3{pd-0kP_LPo&3?Mczms7c~X_UZRJMe_k z`Ayx#^xj-RSUpf(Kf%byW9$pFmDBoH0Va%wT8aao2SA;Zd1gec{)CE_H7uQbf!lU7 z$Kge!zY@)734F`ad*2_8#?*B9#c^MVEJMOxu&_*faF=_o`X)|>R_dkL+O}Wk)7aUr z*k?r9d&CMt;zWj$%LV+dn{>x`zfPpe>Cg&SO&m1#T1C}=saFliL=!*;L*ZkIIw#&b z3Rnq}ALBfHROQI^-dW2>Z&VVyRW^WF8cO$u;*?XK^6s0#!m_t4{q-*pCTGG=1`Ozg zIOlsz>B7ID+-nEGJ*A&Xe}0FMG)?Y}C@Fuv;Nzdd$!Jv?G?J2L^*okm(M|c;|n!sAZFd~w{21MwR6(GlhL6Ui*2^Ks}Y6slS`ZK za%kWBhPVkpK-a$V`&3^_IJ5kejCqfMvvp`vvYD6XJu9rcuP8lJ{KrY%(`W6yo7<=U zJeJaZK^sp~l&{pn?6|>>NAvIDh2s*@abb<0D)GPEjk-Jl_EHh#^%W-m4hH(GEUZ?` zYCtP+cN<12I$h*^v&HvA)3C{ACIS#|F!nnKoerFy(aAtDjwaLG|3dgCJrD2px z%lpv=V)#zK{y0@5+*lCpom?|-ldceVEDKgm68vJAydy|7{!Azdx=qkt-dx)7Rwqs~ z;d>g;@&nc$@u*IZ7Il0YE3qn9j8J|7p{2z_t`)HaKt&pH#h}-b+z|F1I?Lv46Qwr_ zQhPGL%F4E;jE2Uyum~BX{K{ONaP~PUYeY|pIQy0vczS(9O%3Ioe;qt!X($Tm(~=EM z>lkf^=3@4#Np}3Sb$gju;%5DY#(2K!Mk^JsZAfD(g*mdyKu^1~%T32E{aB zIfoT*_>PuOaZ1qHhZC>N*vf9Ept!HXXXC~wprhj@1oucLS<+r!+Nghe@0U`dkIHZI zqw1OavBb;wQ6SR|>~r;-(`&gDNEt+MQhr%wHy<(f&KEhz0;649bnQ@T|C=po)YF8Q z$-rD4jkaUeZt%7lo+S;wHfVh7Mk68Mr;#_f8+ag!_ZwkvGew=}86BA2(#z|Kg*d^)B+a!W{3ox}VFWlyrYSi7GleQn+g~6@(8ufG&lW zkpF@sB;`fOsy(U^3%WN26>tj4FXCwS`^L1El+!uz2p z9qK*G?UToICo|2oYP=~Jkq9BQqyj{53KRk^s@1F33D@RT<_dp4ZjWb!-|=B#Tl&3g zvuI5Dwr&!}#xzq7ZSW&?f9$<68LLReI5mlZCc#K}S|tU0bJ*;h@OTwb3EWWrJwS~E z>-Fggz!vPRE6_~wc^eF_6)pNH5$Ui0YzV)xkm{H__bsper#)KZ(IaSems4b-fr+#} zS#1BZWnNS#aVr(rHzUUBfcrI8wrV%mRnnQQi32P>FiB6ZQ$_v278=OcAA*i=6`yM3 zfWIcWwqqjenOhV2L~$-kx0eaVPSLU5xb7@Qd)d{W{V3j!4v$p} z7(D=<7KOx4et{ecyABqFY^G`UP|dF+n3*}k!^L=)ydD6qOU4w3jUVcqOJ6(f!G1mJ zl2)0S50?KO3HD!4tXX>c_sf6Qp7#>Jd{k9^K6lybZ%)_#^y*Q@gSFS}!K%cY<(KdBrR^UvSS+NyywJ%2Eyzc}ixU z*dCw&8oYOgRZDQ#F2`k!r1W?@c}Ww-;xL5cmLW~4{g-Da^_I3RwEBm*wB>RV2yqRlxm&L>_+bV&8 zQ6fJ@mW4`7!))1C`4=u1|44wW6dd|mWGjl-Z9S~)H-n%1FGg-lOWM-qoOo`x_M+MJ2t>@Mx<`9z)$%xzY3 zBAwg)Xc|x34_z97*ki^*;ig!tS!-JCezI*Rvsn#e$lcFLS?I!tn~k*;!J~k^WU+kL z;PlTEwo)N3oo3jD{%mwY;oV_AfvnF1yBQ+zhP)!%-BucMllC^qD&3<1U)GV!XN=L| z7r`$H-!Y%@k)FsRX|?3Y9qG{B&U9<^p$5GyMD&bK`@Sw8>3t#>y682p;)6fBT5!mL ztvtf?e;u=0FH+MH{RnKHyGwInYyZg5ah9OdJcv|b$=iA+sfI&%3QfL)>SX|qJKl6tj_9H?GJ#(CiXtzKf0_dxKEFpc+m|@C)=MC z_2ES|*6d)ZMIh6ZrApV@YZ@G%aPx`!CbF?~6QuhXA-hNg0WMVHcnK|r0ddbyIc**Q zWqA*PS=XZg>=T<#S{sz2pTj}&IL>y3UNAu=$l$>pigKdvh&gDf$CK>HQOv$UN90T# zFrg=Cm6Tiw2s#%|^HxM8~y)x{;q;`v|XCE9vS< z^I|v^_WqdrrA|)sPjN3)&uA&Nvki9)ve(eWAb1m9E+&wsT5yGOb0( zN+xJ0T(R4`!hsF+^KW^)ce!h5uAi-@6XyT+^a1P=zYx(sBvl;su|xj8j79wvDwTT7 zPyX7DuUZwfl^v`ke_8MG?2|}V$D7nMh`!#4j~L!HaE+d&vSLF;fk2w4WC{n7ptxh~ zLs0__nb$E1EAFZ ztNtKx1vo@vv0h=qDFls@YNj@4<{gGCyIZ2uuhXKNN86nUA&r1l$i-f&xA4HKpDH}R zNp_)V?ZzvqX?$2tUzczje$hVZptUgIp}_Oq^_Iu6{-!86BiOk`4^Yfb^K#YseWHKwx3%DX+P$;uEH6+KXF2W3akj0xR>p=dtM$ zVKcM07{W1Qg=2zw`8roVthXp!Ehg)8ksMws^D0I!rb{#|&9~~`e+o3E5$xZ^Vs#AV z(bF+~bK=->PRmJ2GB!8ITdIvm+hc6L-|_qMG~B@WVD)9cem&Jy@y(W?CcdIiV3 z_%BB*F~UJhwcD!Msh=l!(`Bz#>qD#fbMkWes2xN^P%20c0BiHg`t(m%=4$Xw7o3|% z)RgowGpCk6iFKAz6VeZByXyGx<9P$u_*gO{t5bp{j8%*o$f{h!&qId84)%SO7oc8q zkFx}EK+QjOegMRg0%zZN!JlcpP+n*W$L0(#NhM#ujQ|aq>>Hl)3OfzoM9{ND7qqh% zUErrpgoOJ=xRfM?o;ziRRZ}4gF2ucIwn%7hpw==jksrN!Q?F;C!)r2J8!lNj>73=$CH`=V3qEhFr0H~Q5=kOH$z=K?Ep5WR zey{k*?Za689^Oc7zA6dzDwlDU0>-E$q-I>IuTNsNRHizp8g_f(=d-ijN%biOvXUG9 zx~nETzo^)h(hl)shR@TaaXfoVa_1`<#9rcj$LV_7vF?(^i!|w@ML~-hgNB@A5m^+R z%Do;;xHd32jZP}v>pNd zyX8*zt9C4@g^JKJu;=j%aB%mgz@>{wq1{u}&e-RtVNa1|(dN!5VeuI~kZZTj+o*nI z!K)~LfmOFnLxWsQkf8yZLg@Cv>PgUn{`kMDc^}OT|7H=?E+snA$egNDTCa<6WPdN!`N#tOu1aAR17~jb!bsW~Xi%_nq%4_lE+2@?53>t4& zvH8ojq(;X(*u&n8koh5lspplE_nziB&zE}c*Z!QpIdSQb3k5BX`1qP{gWuoVzY<&n z2H77;xz(;zearOe$-XQ(VVJ>2Qg`~dSd`G2_edOZmyRn{r8 zVW_Z8j1A|#Us6qZn?v~6c3%_eh0o-<6g)*Uaxf; zR)+A2gX!+4+fMm8?ofW2qP@u?r%XvX;Nr6pgi}+!0|sAG?2J#Yy^T+%Kd22pw8=lo z>!jD@D4$l4Q%i@eH4~YLJl_(-l+pi0itonmd{S{yncCqI7(!4&NPr zt5c}Jndj&GWDu${>ut5Rx8BN(6yk`j7Lqp`A8X^N?7O%^8$GH>7^}=8jXk{u((z`> zE1$jc*=jTVRw;5Rp-4G7Kutr(ni-Pg7dtQfa}oGsS0<>-$)NGkOmIMc>ZB!wu0@ry82xHS*H8)J18d+nBblnAtAF+y&dG&QdI{ zt1#kv1Ks*V4Pm{cUnj;F5{$0%ftsR&bJhl4e7_z5ECGfbA4c&)@e?R(?Kt11!JytR zq+#~C=x^(oa*EK{{p098Z)86VVG%z7d>HP-ALm}-0dQ*iXklq6SvriczqUAePDy;M zca>GsE9qYSzI+O6Jbn|iQp|)%E-9!SxmGl|@PS8nSnEczUQNh!?rlNN{(z?rrJyw9 zRtuHvPbJ^vPal+MfK@_NH<9+He4k!*JAAAZnLcb|{DU{tqBK`B29wI{vFH>zF|`2a z!Hsn|oS5NCBDsN>b7(c5u9e4>4}g>ei%UoTKkN2gQh~>z>{!Qh*7YjAHIu)VTbGq76PVEx!dYoSTOzVkDzNf=_T@&k7suF}&rn1qshS#EBMccBADHz|T? zv8i{(%#Aiaht|q{M1XBUc6&xHbxw968_}UuVNu z7}I>u=KSwJpA%fnZCFNm*`;$`PS+YI!W=p}b$F#df?Mq?lb4;h*PSqZ_y-$FOf($V zBnjMI2y*kwg2Ab>60c@xROVXo%f|nhc#)R%DiFXBJsvfk3aV^ym8S_Oi(T98v&Pt< z(Ew=!IO#E4e(|3ePa1lbvV!`_F>U27gLbC43JEbvMR#HxMv=_;@!-n4D8tXr+ZXl= zPo9#+8jiaz3QpPj!P@A7d@=YsGyLW%2X_o@Qyg};bW+u8+NXJCUkApm=GbL@VQVaw zQ7g8PG=wk1_GJe}eND$rq=ZQ>sRXkcUWzpqdZ5b{N14b8Ue}$9+ewj@if6;b$F%dpm)7SWpt^}z0SOQ~c00|+@p@v_-Id;mz9 zJ_f2RK`}Tb>xX=zti@M|Z);K8al%F^t+FeXFl_v7Dt=k|0!33ih zkq2fwANn8e&l}%*Xy>gvNRHW3_8jvIk}x9+#v8-l=AbIpqGFE)Eo?^*dK|bA&6M5K z+OPc3m~}imBP@XVgEmichqu<)Z79T-BDs%u?_JjUO1X#_;|=wH%`6uNuPO# zYo2)12t3&oi7v${&#=0WamV%nc%Em7 z$1MVAbiYOPryoHyy7c&h!_vhA-~q6?@qEYN0U#<`c00&$|5fKzKpdKkLUB7XJNW?s z?%nA!WpFQ9mf)jZZiw=D|I#vgXnZps&)9ExGuTxVt`$J&lRDa>93R764SfJy?tHjN zt#Q^F_J*EVsF5R9v@|?}`U~BNJiPTVlj_RolR^qtTD=&EGkUD!Nz29vwUE5lk|8ji|UX~_tE}~m~+=cHTQZcvEtMcVMleT_**bdWAv%bOEs5; zG3A}uqDvx{`R8r(Y(^Fvs5cj;vM%`r)xArTQ4YiO{k8E+Kj`+pu6Om+5FSrq8Aya( ziae)O`c5|5l>KyN20RKZtgLw_3u4dOw&Qo3N83;fv9~E(IbaIAq3wD$HZk~=4n=ibomd* zj3?A+UCv}QcMiR!EcdKm+YQdoohu}=)0K22Y^ap2C9PN#U7CqJz0DX#KSeoJ`|K%1 z_L=B7M-0;xrKz6+Gm!=tB_~x>@k8riP??l{IEI9a1(zNuHZ*aYfQg7aE;iUb1 z2YrDgG+9bNU9SJ5=Oy#Gk2inJcX=-l2N9Gn22Fjz<8fmVsAf8r7XByhf^q1~t$ETV z8Fi7@PmL#;YB_c+c^p(X6sdU71v>bUSGR;UO)<1RraDWAy^5=JyC7`P1)5l$j>k@eLQma@ecUaP(#XvS?}!NZD#LUHk_sW&x=-!TZ* z`o!X=_n7SGbOxWG${d#ml$Xe`u->WOt*j6IajCWVbDIAESg^atx_R+P^CKTPXwkfR z_^nyC+@k5!aH31m=5kZHK0iBT$%Q)ui1 zc~Ms?KP0)E*Rdf2kzH$6QdwF^?${S0K)Sr&;BSlx_esql?>{MPCB8Nep7^kW*Mtu5 zqGTJ4+e*6X;R9BZPN8bb(%r5BuWb^_*!_508`(8`8zvNtD7$Is)U;Ue8MpXcoYFLG zfvB3MEajT+daQJFyt7BjHVKfXgEQ$*s^A=CgtdYu|Y0aM;5V0`+Ov@1+nc7 z1&rN*A?L!(XKFHnOjAs@-a9|lg6_!S^d>iwE)zE&IF4oyJdI~>OcGqN1oLgw^7bv$ zX+@sI$Vb<21qAsBl|bfNR5@%4sKoH(5LRgUO>56rsANuzo_BA-IlY9!SyxRqCTDas z&#F+<|0}w{<=Maw`)PNTH5r$f==DXGMMh_7>WkX!& z9mmOcE9b>!v37W+t=x`3$#l)#k5PLow0b3l9LsPut^e$yZPxM%n%C&8`Rw4LgIpov z(xt)+0z>DI=Dl+R#RmPq9sT}eSOUEc@Lx3w-*?pos=M=dw~Js!U>{(twNPQPXZwA6 z(zitGLdTxSbtCD%S`SNF>U9v%>))P>2b!w|%DD8!nEtLfx8U?tasH6wb}5lm^>b2t zRExv5b#mt&U+dAJ5mE0DyupafVxcqcSc9N>Np~`(j*V#_rG$Vmx;4-hO_8WYy02wJ zVe&En=C0WDeZO2ubyoK{_#G*dM$>a1;3@kF)y&ND9$4fQ*F_5-8PSl^h_!A+_MZIm zA8flLN9z{ZJ?u)?#ZV$QWvj(Ald4MSk1HANG2IkmL%|CjV zD&?J{SFw?Utprrw^I>q8=$oia-zl1z+>@MkkKO~^)gD{M7@bbZd6r~t=WmQ)j8Z2F zVwd=elSRp#lcHa#I7Z+GH4V>|lPN(vc!*46&@mnrz3wk$hucHJi=37R-EdsZ2k>8^ekv zWy4w<{S&qvxphsS{^_${B#i2(IRm)yS68)-Uc(c4@A~UNt4Cge!gv{%*k7>1z-@|0 z=Wqe+l>USBx=~2=nttB7s5t(O&ps_Q{gbus@(`OLpYSs1d#&L$Hz+T~`|Mn|s=Q+v zvXWOaj( z-`*ACWb_|7vi{%6``>4_`0HW&G&tV}vVuO^LAQe`RU>o95y1-ARIwmIj~n7q_hm^^ z6j&p)H+|vRpJSQh7bt_oi;ojtANQ)UYs0P;~5A35Y>{t>p&bvi|jY5#mBnIr5$(E~G^0GW* z1J7(zUb7NVITbvKalOVLZM}ymUoDO4(LS1PFlZQimFks}ySK!`uiI%Y~c){_y* z&tR*f3b=`+rEkh+u&8H>EC|$1H)BdBdqaP@Uej|)V$f;!%g@@OYS`9U;_DcW+J~yG zZrV{lx}~F6*G_8(3nsyyOBHdR-K z8g140%kjtnh~@aTmX3&A2!ai6M0ih0B;r z-t#`*1(#`gg``w@d9!(R1^bl)66>i?>x~AB9KS1z5yF|{ShOuKJUxFr0D^I|xkdWI zSaMgy%vZ}C%wZbEau^+1 zB=V5RoKR@E(CE@IX}~Z{k&6uJ@!Zu4xj6OlEMlxMvtx&0^Hx=8@GxgZSrPKN+2pjM zdEELiZZRLsTp1p_H+@ql)9o~#Oz!TPe%(hkXckxP(FJ=s9@*}hRBy~t;yzRyj-`SI zUNmoo$nqkUbdF^Q6zoHSot_+Z)PQmj{%-Eb@VPnlHO6+4WV+KU%VUF-6z?KC)?frD zQ@T*zarfwy@D;HSW5j>x9cl73_=is9PZgaREtNVO*(LfUfeCx=xkF-OFQ49(*>yz9 zloToxqXR}+lE+4S5ew^D2l~#t@W{JeWA+8B%!2CCdRxbGeLZ;^H3SzOnUnYu-^?IW z$U7yu_^(z!6`9kKoZU)^AfLNlMC~AFds^pkf)~9a?>opU4O4&# z$Hv=p+Ec?wWP_k6y|qy4y*MjfSAd_-a>=*O(kWHW2I-{w`lunTnY_qv^3ci~hb^pl zrVq8mikM=!qb7qCE()xjzc?08CX-`_HEG0HZ&A;*%KMx)@+WvIhScevSXTY1h(G_* zKfb&M!JcUDAc22Rs;8RqX&M{oPL5ME`1BG=4K;=s`$>`ABdQ~pkQB!R2w17a6Q|HY zlIj#6C;hrH_-4zW#IJwi=B@BK^MCf}V8GKCWHosw)C)*W>8K%FQqgZmKPVBh)w_z) z3A!d2XP}dgiw^{gb#IoBf`n}zoh@aSG4<8Pc6on{zUb)`+Sy%FaShYHkyZW88jN`(;>;v3;7y#w#`9PSU0U%uA8Wi+a=Ja)dYb zzN$-P^8vtXRthdfZ5b#C`>495NBXF`5YqE-Y2Cz+s}@KtOXYNml+1(YkJxSMN>u9@ z2oLc23w>iEDIXmABIlOzo06nOfyE$=-dR@808&V-J=UiqfHBJgc4^)9Fg^g=e>TO2 zfEX{i8F0pFd~Ha@%R5e|ftOK)41buJhHoDL^9@f^LN6_ygXdJOB4@}Iq~7M%XXgz+ zn!XXR(rOiqlOfLH6gWbsGGq(7-Yk;u_hBYJ5$>Xz1c@MT89 zuOQ3MXq%}IZCNSNQW$!ii1AM5x0HvHx-1~vI%Xi4=>tq0eqx!qDCA=TN* zG2Ms^Aiya`@|6H#t|S&a<2pW1cDXDOwicU%>`acez6e1cfh{!e{flpg=F3wc3UKRX z)OQs-X(`fi>Hc6b<<0UTrW}yH>_5*{&V|j~Rdyksy7sJPZYddDR1l~~6?7#vSk~P( z=zE)J622C3vB%~Bk;9+RKXl8c*s)KYF>iH?4jZ5&GkS`M%ugI57e48DbqcKd5hdmB z+%o;6pdcl)Q5KlX^EPf)5i(N8K22F*IIJ^%%&YdD^Q)wpd$IlO>I!AvHleDDM=X z)Xs7iwPU-hRsN18w!<3VlLI8&0z~yhlaXWyKHDxCAHNjeCG11{nn(!KYNL#<7iAr@%<#a6N&2layP&uC%s{dj#xL&c)=k* zCZ?#+sWebe=2cx*$+|F>Fdd)s8Q~S=K-`44(#S~8D-6*AJ}4=OI2#|){jz8>fHG(= z(eO@Ia-Udt#KM_OKgrjB(okDhCZEz|^=+&@$yd(w9c=10R@fcvQ7RGE_m}|%nl#|! zZez1=dp%C=I&ccca5T#>Y8JDfrdPDLB_GaIOCQf>=#~Nt2J?Rdk8N zlWP?U1L<<<*cojc-n=uprz)seDk^aksOPX>gTI)rs;62Y5g%L^rVaFMAv>n`YyR$! zSmdfz1Y2gVOFZpiO-v-~JnF|>$+ox=yTpu6Rqk2vKIe1!HLgui4tS5g3Bxw5i z^~>@|NmQTlCMW zeJ<|r*B_^d?A}e2>>wfw=GX`=VJCq2)_p;`pEDk4_ONnRp1F$%sIf^)jdo#AuzdNo z+_tK`GkmW7ogH^fU&CtkQyY4PKmzaNt6wkf{hXHQk+ru$M)XCwzhu?!LC$BT} zM}#3^BKsRkg~6C~(Oo~YE0ewprrV75Xiv|-jUKRE#2nxoM3GrwU(Pl!V5{cHF3GK* z%dRmt^U8&Z)8L_3J{qC{d+dW$jC+5k%)boh{M1#EZn$TuQF1JTKYmrP3Sw()B>}=EzI0(tA(FQnFROcd1 zr;&rq&ooml-$4orbI30G&Uu@ISxmt@PYd%MOuJs}OMVMDFex%U8_X9sCO#%+v^(EkRC{rCPB(4lWAC3{QIq^yMN8xHgy+tphT~M&XKvh8 z8D zzL;d{7T!HCL3Yxbk%p`q>n}Sx+Ub)?DCgq!vjK%1R<|CshD-(To5UZgyEfyZVpLR* zj1bw@L5k_848Gzvnn}PviO_qwO+5o-Z7ifeq1nO&by15C;#I<$_THWv%+-4A-$v)- z`ZUj}gg?#OsA~D15%9Wo-m&&@$ZRY#m%juI4Kc=HT}D}Kl941w&@{y6R}UFq9T38d zjeVSkuXfHV12L=4*i}bxSe+v5%_wTR*u`5#hPHpvP*=|k zdiIu63g8IkA@thWq)y}{>1fMq%l9E|U@UZUnzOwP45rm&6*>EqEj2a+JsUsm)A!`! z9-Uv?>^&e(kQKO=Hi#^#uqz=2=rSm?86+rT=B{|a%+-+?5!U~>%`-QyL9O=9G6UdW}EH_5|CWNmZqeFm3KaY|_g2#u!l>2ZmK=y>{t<9|gtx z?Yn0Nop1oRB1Dm$<;vR@+?L)EA4P@$E4f>M3@4)2?-?Z8Mt$vu;qR+)Rgpuld19+& zUK7|eySThP^BdXk23)T1LafO}tU=@gqA#2(1&Dp8*BBvp5Ml$P&h2>+n8CGb0+&mf zfnZ_0c(fn&*Ls* zeDK9DXnM|IoDTtS3cE=ToLk>@P9xhm#MoHtE?05Y@9ySBlUT)q5B?)d(5tU-TQtowInj7pec>9=b z+NAhSgH4M>*NnAxqEot*#wVUTbBxI&`}y|K0t7?8js<`^wyey4Y@q)# zeGjqz6UBuG1PxT9BbbSO@&V7mt4|w z2U$U9-nLAC?YOw{J>AXzRzow&QWz!d9qiQn=n#{W{}_`%c2=`!UF8j`({1yQzO*s# z%V3i>wE9|)X@w>6S?yEaVx7z@drt1Fi~8)~Y}_yO-Q_&|L|~>sI%ID`c=o@4zaYm6HiZX zrQ%1yfkE}Zb&nP>)KO~<^}C$hS*w6ZI&L%I?355SU`xAguB;r-0EZpnX<6saOL0{y zrt%udF6=-Un{MU6`yPUqenPX*O)b6QGyyq-9EZ}SRiU@*v4I?N)IOVVfOkiYl_$n& zX&K9yYlk6C)umYDk(ZsyGq;RzFjIJPP_oLWM(<3D>rA+-C!Tex7=~l>{FH`f_YN4r zmhQC#6rZ)jcWhsj^W<~Fk(Tm6=O_p$EE%8YSG}zqzQ~a#-awHuAQmZxBHhF{Zq&kv z9$jOD70E=T#I&^JAUx@I^|LDPVam${v{}INl74m_@Lr*VTXqnZ0WA8(aLz4g{Z)zn9q&-NOpe}4i6wJxn5ZIef6(W?}kv~siweuGc!>WiJv@! z%8)*gF1h1{g{z-Y$D+H*CG<`0-)U2R)lNPCTb8=T&b`V^ zR0MDS+u&{dYBMtbmhG`|cGs(LnP^y_-Gqfm#fFBNM(%(XV_XVSQ7LjTK};- z-Mkl7R)vD}Rpf$Sd32j!l` zrnJ48765-0?<5@!s>InIewuc7fU5^qR+mQdBa)rOQu?CsVdcZhCNYy2ULB>atrLt+ z1&*s)SNxTih;9?jrE96;g7EeyHu*4ZWODL8?O1cclk|qQ{JxZMv2X4rl(>-x!)r#` ztPT|*R8v;4{SEAB?RZ8-&AT{1Q&{7fibgU;wVl_-MzT8(ADEXNEnfm-K%UO~DsoF2 zSY(x!S|i_WZh}X1Sst1fG=!#uOj={F(-I>dU!a>gB*&<9?VTxb7vXuS)RfgKwWe9% z-R0`rV@jsRIoq<9qGg zbty+vxwT@C(lB}S(@_(qYVT?1xZb;8cOzG|bLM8XM*k}z>9|wckxqj^Hn=|B4%~{~ zC4@(dLJg$5;oc(Fd*v`sZkh1<tWn! z?<2iTG#RRZ_-~-OfOWVcU}vcXQWO49K`s9sVgJr$DSXA+ukqCd=lL{ZgNjNrEd!;O z=^@=0%Y3?w`yReThuj56R}X;nwDk7d-km#{=Ub%`|5fl`DEa>cF;wkkS5?psPZ|!0 z`coHCKXExEmAvmue`H-D-|;Er@bIVb;@NmQ1WlA^Z$LskY_}YRe31vK5;TAkOv>B5KX)6`&i22a7jM! z*9QL|Mp#HW7OSEJ7mY;x32JZ^2BpZ(e8~c zK?2^^fZHwVLrEK8$&6QDxOKVc0NW_kiD2X8qQ@Cw7A@~-2|_NA`x86Q^PNx8NYEJf zT*vA>>(X2xprP@J3W^_V;m-7GzHu@zI4GUaGa#}_t$#|fechq12a9KRI!e>A4OMe|WXTytmYk!zWmb6`McrIsSXEYT&1-RL z89c?k^^|njb-RX3lb%Uwe?pHI8^1&ameP)xx+NB4FkN)mhK?8B=l3hXME!x>$a+}C z*Rw>oirPxGC-u>C5Rctr(GQ&ZlYA_BWfhQ40ycd83SAYoLEqf3Wo<5QU4HBMjz4C& zsvpg8c}woa-h4l2uR?-%?cX+bI@eF8fNif@>p5 z2p-&>kTljbuE9cpU$8&}jW?3u+KsyhX(YJ2yOZFO+j*XuXXeh_nKgITee?gXd9&B) z!>L-uSykuks=fE;%LFPHUT`QTppoqz8 zFn+p=l3A%zh!jFneNVQc}(sD9-nbX&m3@G_YwY>GH&cz$3xwP$E#L`#rkv z^&sQnejiU7z&-vssXFN3*RsLYd5_!^i8lkHjfOkBTvp+Tu=p{zA(z#nLNKOUS2&Hi zGLU$AlrvzRs7sv6munA#9V{q`Q95_cp4w%Yi$6Zd7qboXcG-H#Y>aZAL3G&syWGZAzu8 zt0QY<@qd1M!$4^MlRw-C-eXs3lUV2u`kUiW5-dUEQfP#iRfnK^qc-iWB%IYX)7NUa^BlqkSLE`ad)^=3;?zti_KLWayF`y0$#jB}psn!;ST7Iv)zHcfWp8HgMe}i559z z_C!isAthVJi6^w0%j%r2t9Qoy?!eV&+_O@*aYDZ$(j#01oQKZKePrlO2ZgeQLgO4^5JgCf7uz|5xps;Lf$0Fb-aiUI_1~ z#vEt+#%Gi-;a{OC*)cJRw#=Vb&v*(9-b-Q}cS6_7sON+YWxAaHD{GIBK2 zFG5YGtozATGxK=F+SVP?3`=jMu&rB(tAD}hn;wi-pXUuN84%Dm0 z_8D>Ix<~y|a(>)0dBG?|;T!z}cgV*mMeNbs2Yrw`?Wd?JXDPy+QB{M!d3C!!pqo^> zIUin^%LBTyqq)=q(ZRfZx6R34+xNA{{S8)7JLGpFPjz7YY{`&W3sx?3fF z1FjR&T6zu%w2lt(O~l~q?!lSI+QM`hIbeDkR!ja6i%0~2i?Ugqq9i^!x|>EOD=~(fXRFQOoVG8-RrDkGpmq% zBr<^-xmT;DCD#Wl&p-ifehz#xk{(=Msnzz<6|P|fUK{lgT4r7XT~%dfOle^94}$B; zg{-ewB|M4I5d(Zx;-_ylwZH43XA8l0nj>Fd)aaBNXM@koAn*tnomSV(eHXXaSnZ0cxdOkc9=b*1qA$(@$7Y{NagQv> z%S}jE--aeB^6}BqVjIx{r~!6C&|8xFT?>0liFHA=%GR_7S{(E?joS&ATY|9}w@m?; zK!0FmYEjnT;0a`3bNPfMjS$qHRy!c65US@5W3CyJ-;E&3N#E3bt8V<CYua>hDamhd^$v3X~D0g(squzgl5)w;@tB2NBOV}@)Eo9X&EQ*Mhe~($7 z*kou;u!j1*E0z?vuYD+2FZ8yik~Ye5oA$!hwAsPggo$b)l$*??XOTCrr@w^L^;yIV zvDj`cr6*VXR5qgF<%1hWDbg@BJHrl6D|}ZTk?xc0%uV*oD5+|`6#BGLF7^dM7YWOS zjK`Kvd1e;XD7#fpcL?^Wvz`w=wd%wbNfKqPeTCmC>`7V$06!=U(TQcZ(P7e++k=NkKzG&AHE8#md#v8PW#u~J^W+vElI!pcMg68GGDLID?VJR(Gm7{zbKGZ zR{Hm4q>qF!STameaa6_9AB?PZTgx-mKL&%5t@`@lCPVm-!C+)3eCba9`kTR!XAO@W zd&&No|2gFU$&BHLF)ZRxXR_RTUd3eH`m|zcF^;*D(r7T~qXy!S2_iRyz977O{Wn9P zX<2+By8iHw!Q+=p_%r%{4*7pFV^pO4HLcGzNJ##ptX#S6k8k|1wP7#!WPSr2EH}Q4 z+{FC`oaNE`Plepg^=_2$GN7H%^kIXDeJQyVr?Q1Jgw#?jS*dg0!6(ST53VO=?eco`u9pD^cKkkJA z9HP>diqbmi6{IbYS$>4+in6hKDy-ZV$T55v|3<`)gxi!Sk9|>3 zHoDEC5w3JJW$c564?sJQ-oVbzp%JII)U!NK%QM$~_&~9H#|2S5&M}?SJ%a(J2h^($ z^z<*=$>)^r4_En$>g&F(2yR&`I%zT4y=cfBK ztgHE(%#VDA_wTk$F9Pl|6UJw>hLA)6TwGxxG!_-bc%NEo3=x;KP?dwN7@3i(0$@;h_ z9@!c&VFD89@~0uVaA~^zQmIFYY_DUb*Cw`&k$ZK9;9OxpO!Cj0OxEJW@1(TuAFSWS zM>g~zH!@-Mh0VFski4uSA%Pdm+I&u$Jp+Hub|zG&Nf{D zx}t(iq|(~XvT(RWliWy;jGW-QrNmC*FV{QD$N4|KqbiX^0&uM)k5@B&FtMLjN`_rj0_>rCt|)@1SHi87oJGA0}mKaV)*t& z!n%!R?tG{0NV_AfP_arN{!@qu=;>5L6Z*ZvQnjOroOQVBD&|GiAk46+{j zu<$b3RoW4;xr$0X=XT^2#V1)-P8G@Lj-9a#PTAX3FjY-r6iTH21_mKLHEtaiUj`=X|QD&ddba$HDV{S^I*;PdrHIweAu?! z8C-2J}VAu*9rTX|L$Z;)y{#GV<*=?L76rViL=}uO+$N_9?}$o49*(gP-~049>+@d;EF1 z2A?aRM+9$Lj^3T0hVf{sy|R?Ps*>a+*nUw_I z>&qKA^f0KYzrDX4-m#F~sfrg``1eRtb-`j^R`Na+zb?YTq;>Be!-`aZlFCkf0m!X# zAE9Ec;@0nshGA>iWKIja1O;|uVOBNkVc&fh@6wMlFG7Wf?L6wF3|>C@D)&pbR}Gta z@b*t{jDxbUtl$fdjBt>_%4FHt-u-O)$MPavnhP=K-!A^0H~_v_Cfw8{f8myuU6CET z(;P+5AQTuVqA}j7q|4Anlj{~+{k#LKZ7w1>b8D*?cK_@}^W<1?ulx}tjyc4K4 z%0-WMZx4P{IiX6OKJQSeCju8wUepBkCn|$UB?yR^_j5imS!GfpO;voQJBM*~L^xlc zNt4I(bla&?I~2#%VY55K)s_{xS;y2M}0&~84)55<#{(jkJgYs`9mU+7-_Rvft@Dvy`s+U+3SLs!9oW-WZg$#u#t zN`$CoTvd_#SQyOLRQsu#EOfvGTROSpU55pKofucFHX+K4r$$alH8;yAlY+Sk2?1WB ze>fB1+C}WQ$YxiWQgq?rS-R$CRpO_Z;s#dQvMV_OV!kq{G+?{a6#MI2@aa!K;gVIs$(O2i<@jr!cklxPEV)ksDN5|7`B*=#DXLKFS zGD8jR14V)dmdS^u5O0Yjhc}u!(Jh*Q1L^Hg@l}fVRscA$rC65F9mCe)Wj{XbOcFe9 zNad9RnqbO@1=R+$XX$dI8OW$pY4;5PMDK7I_iJW3I@LUR1}S8JAj)Z_$m+_&_`J#~ zD{DywXpI-E+v{-ukn0UTSOvlv`QMdT#zlOm&w2I0N2}29>vL$E^ZVC$t?(f_*VU)O@dx&LYL{*j?@Du=dU=A zF@Qnt@JC8Ty9N2%hN#R;`A#~Q2YF&k1ZlzR*6uZ9GbnextF23SxAJ-#!+Z&4gp<5H z+8>8Dv|hbjzak{7sUE-`RUj0ZV(b|ws_BsWhss@-kM||Vpn!}swBz;!OWXNd}$%6t%v7- zk+96?`kCrva@u;Ra?A;cTh)GT6_(#AK&(s(JYI5=4oLA2B(yMQK&k5ycUuojn4}jo zMGs~Yy8WX|Nof4>o2|THu{B70(v`vdq5FEP*I#Z2_PqaWMfEzX^&cFM_DxIpS zBp4bl+86+*eb{;|FMmlyjTYOaBRD9YV+Sr;PRK~>GYCV9auc;T?SNeiR%%Lg_Y4$o zd=hT$hMQM7YQ39j`Atow3{zEm9(UkR(7mh89YnVkrL6}7q~*Jc0q%4`UuClSpgCW^C?xM74V?pqWGAXK&3T3t;2n+K#jDU%PXZ+ z%3051-o#~PKwCz#@eYdUErfx(*y%Y`QQ)x&HvQ6|D4maB*38Ju212XPZ%a=W9?RwbseFnc~+inQ= z0SY!{$)Cmzwy@VWcnA?22pT#)0?l#I7Z5ysM|UYbgMYjcG)Z$jRZNwEridOFhk0?( zs9e=r_^KqiT&Bf$wlc{4*hm9)V|NgaQ3z-$I5u`FsVh^+#>I$Bvp=JX;TYQx5(~bp zSBv(k_$v)>T;}bop4J`Y4dj0ABU6!X@W}M1ymV1PqAyBQ%j*N6wjMxGv~wx_0BwGD zNZ3BSLg={c$Ip%E$J5T+n}7$qZHwOypNW-s0(qau!@y|0TJvIxkg&O9X`4WlmAX?n z2!yixu0?C6Ol$Ix<`+zG=(E{>5;LR9`GY^%R}=dUC?meDOGI#qK5|x{qAXgc0`D_H zTAxhz5BL2v6O5q0`Z(}q{!Zk>@{GKpeaVd3i&>h!M^U^DNeyQQd@Zy2nc10j%7l_K z1Q>9r=-`L5!WP>*^hMqugA$p4vwZi}`Q>5Qo!%|k?TZ!vMY0>@6{r6{hU9*JvrioN zkvAZx^lcF<&RXze!J|j4=s69gr^g`nYwjyf&wm*kToiKU*YO+B%zkP7Oa0e%*l&QZ z`bo`J!EMns(@NSOgP`F0S7UVRvVBLI4NVIbYU?`AW5*$9C42ti9)FCDPPHcVZ>_(X z>i_+xq1Lni)=5jsvTg6rD9bV0SatcDr5d=>_FDvKDMA_p9 ztwqHKyu8Nqt_`|8jK2Kxcm`U7IFn{4n*cHUF(ge zcHVpxM^@?+dmCmaB(G%T^xJ8dD^%c8`$+c@mo9${%UQvfd&zh- zdq6>%|3kRS(XwsQ7V-r$kAWF_sXz^B*y?3q3MxFjL}tZ0m6B4x_=KS6^b$@M5eUWZ zO&WnNNwRImjkI30&sU{{RYpHEyf43~2#yJZHx?LbkMCQSD_`$bm4=xD`Rd{c%=bq(=J8M}5V=#{T8-eO_N$83ZDln(v3))WTd8H)*KBBO2xO?R0Q6(QL*MjICT zR1+c!WuqdjfoIHKz-LNyO_QK z4>*>1pBrTQTj0aP0Zy`}Q?eIE;puiIAlC(xO|pI9b0N{Q;tQtC@aFo!PQqT~seo~$ zPz{LT&D19N)0f02Q5v}Y?>wK=uQFU{xNJFVz00dYyG2OH2puJ*|G-pfIPGICy73Wt zM~mvD5#AQPz}-Up{eq3N^OVDLU>`Xf`mv{hT6!uQQX$-~$~`!YM|EnyqMEFz=Wcf~ z!%IEZ@=?g5y@i2;*}jb(3|VBu?F@3`jT}5>j}*PDM`gxUm-!b+LRwBoZXHd( z#$1*;C`bUzYZ5Oq2flp3?qVh&BJQ!J;nmwM-1)gJPm!4{G618Ufj`9gTn{x)u1oGb ztl=^BBnL^_NIPYs=-T7@#oIhl2r%NLbGGZ|P-C)F4K5za@uWrv z%^(|`4sR^$54J1a`dGml1S=f~$htqxz|SC@JC35I35w7;^$nv1da$QeuEj*Ya%3Li zlb@nt&@15H3~eHu_`>@l_f3ka>cekf&K(E_KdwBTvs8uTb^YXe$qE`w_bDxEw6@Q# z)EgZhp=|oj%C$zsuHlmkKJ!}$x`?MRla*yGY7@oRWr{(u+AlohoZ3yr(U#HUSo2I7 zlTfZ^T(9{~I#qb#KB_&8R;F2zaI({Nt@biz`gL+Lv7UW8i;o^=H*85fHtT@g{04{~ zoL{R>a2`H0F;$y2eO@_s;$f@A{T&Y4&LnNz34=!p*s>1*H*ryXiIer1Z&X=E`xIyO zbu`-Qf}bV%UV|K>PHSy|mJLDKX>DB(%>ZAd<~baVy%ipsvQ}I^ZPC?6zuv{b@X6KF zDV2bBZVp7xiEtb2R_!j9%`VDPU*3gLKeKseYJmt&uB-~qOpXY2&Eq8`+@!%8C^c~r zXnDahwmS%nWXdbi+jRY+NjoX51<99;L~2#UhuA2*#es^QOhy%JJ1jtGV|l-!d8cd}iPMJ(3{Om?QB@L50D z$lzXyUs-);v=INeS2HMeRmD>iH}j!@0j)D>V2j#4D;U9U{#092oz1$AK?o}w}NSbaU>e&pVIS8L) z>_?vJX(m|?h*-kgF?8?!xSYECO>0mw9LG5kYBTb1HOXIRw(RN6hgM5(dN?KHjkl)R zSTlpdz6m=kvJjDPD)o%l(GF_1XpV9fxE6nF(Dzc#PBnsTLkM)n?nifZb&YCniai$C zTZ6ma;kRkpx~EtPg>RhQO8M2y`tUxxO}%QcoC!37u#yi2s3S8DBV*tjU7phez?ihe zU@yIxSTCg&!zVr#k>e)`b$QH@3QoG3r?4RR+nR_jbt&<& z;F;}jrKL6Lg@5Y2zU56Wa|L59Rf0MQQ;nR{&W=p`nz)7SPPE5V6?x*yHPO0kvdDpC25&>cNk={rm{$Cy*#)b28 zgyehUTELF7sy%=Hx$+-ravAk_gg8uMOcwp$%4MAM5h!Kn%=C5qf|;I~6=v?Z)Zo;r zI{rW+JRQ^jZI4tmG-aZAvd_ZlqsLzIc;sw(?8oSE~{@P zRz1={wb7X{sh6JPuVIgLulseAEqCtoUV}kKqPLdlT zxZsZ|Re48xj64+k)w3xd1?g%NT)Z{~Tzva!4!clRQfVT3kNW(OHD}sm#?v}GyJNo` z5Ri3V3ve73j)bSz+WNG%yH`2SElgZ&Z_;+A@LAz{p6~Op@}}i1%@4rfTCyR}b1q@~ z^iJaUA$vP9>KbQl_d76qtf_M?ly~E?q8GH3b`G%gn(}8Oy)`a&ldsul1?#G=&DkQQ z$hgxuw^IkQ$J4;)X@fWxqSo({58CD|3YaV^dnD(sRppv(#f(iQDF}S;86<6n2nUQv zEqH)w23&~vf(A4V#RleOpb2nV05J$wNNNi_Nk1GHx|VtM@*>{;KMUOdt$Ik$fnljH z{%Vr#JKX45fg%5=`dnwGuh|lG*N-0c^4y|7?>>9Z+n_8gxMb;?j}P{8=CuLV(wo;f z)S0jg_XBE4(z+CMs585(TJK2%eu?c=qbO(kobrS#4?`+tr&q>rpGsu4&@+$zn|!u^ z7S15&{O3Roo+b&Fo7_gD0b%UdyJBIflGuzEpFB0B!T6}1HDl+1Rw&~uP?SFn-Kn%x z=Blnu-N>B%$O)7qo3!(3^ga(R^HL!33b}BVpx%VKuGX#VAZt#{6t;G%i`s+vH<#W1 z5&lVwg)U61OdFy*fk3U3zqe9DF3^{eSKq?O8~@(QdveEr2mYAPBFFppR>40ViWj5& zKPUPB;+!n4cTzBzqhobe*>t0 z1Nd8XNLUj8(O!Gm_40?~IF4e@Kea%_$5B5qHzFyA*WX+JbE5y>%~8xT2nkFu{~(oj z+bNGJN&8QMd%TLJx3@O)O**8SQo01AU%bc<3sxdgfCfy8Xiwf3V+o z5e0isGHjruIAX#^g48=;F@1gRm8Lf;H7PUVnV+LwVw0d_mhZJFgxQzOrfy_$1w?s?7z-6{y#6vB&HYI zfslhncKr@fiAYs$0*cqMs%#GnV>KNzHvt>lHaL#yEi2@I>7kue?cG;aRoh9?-rusG z_xs=lvM_7~S}^01#pFpzcj>=JuZmIBRlPRV8UzLa1&OBF`zOd4*&xa}fmOeX81{4*!3vJ+xsJ}rqO zYkd*N{Ph~cIvQx~!W}tgul%rn*lPi!TOM%}0J~C~*p#KFirh@Y(Yjwl_~!Ci7bkRD zb9!nD&tJG>xwcKpMPx@XsJ`5!F?k-D%GrB0_0)1gIg5K(Qz2K?JIOS9BX-l4dL(7% z*)yc8m()s9p&>R>&8@_u#KvN{kKMTxE_DZ?k|Cpr9}w|#}=1?ke*EnecBjxn?#{;DVT#rL{uUsQtvJXe$VGkA4N_f ztN*YuePO%y{kC^8jMKw-rvX^1#3hUPBwjt}@nBxfMSwy|8An#no)8DuZKZ)4cGGsM-!Oix%Sat75M;H9x ze}!b3ubN$SN|zTl`jOMDWXSs}O~Q zGU0lpBkIW|%mJfAF9v?m>lhEuIFPD8Cm9~t&Ww9~_JGvr=U1U?-$~y`;kkjRgo<(< z?cQGaD-y~y1t~s>pYtn0hEzIE`}5;!xs+Ey64XFfp#xgA2mTCAyX(Bf^E)eUan&<* z1|u73BxDWV5g%YjK?z?9#k>z}=T*2*CC^F~jkB`U+NO^Ny}PHN5q{^ z;W+*}+}4ouTAOvPUZi7b8hZ+(gl!^DwvyfNAm8vTzu5IiokUtJ7-|s_J#?EBA{BI} zo(diC^{KxmpKJ!K_^{nqwI3M;lK&cnKK0~>@h8%Yazn!aX#ri2GK<3pjaz+HWqUn! zjk2TCgxvNW`9Jr=)ul_Yrr$};l-AuSwAYx?7QqrO6(O9A^Y2BaP+~naV(fH5lZ!*& z)>x`qFwc=-X^0V9zlVevDPJ;{RbxPr)izEdLx`8rX(L&Okn?ztrh^kKA+5@#30}6p zR@a%a&+Sa)AWh@oybzmFUmHFqCbF#FK0e76$zWl`0ompF;hV?T$@Qyh#On${>_MyM z{YliYp=Xk!>errorZn(Ggt8)qF}JC;4*6j`f%HM!RPQ4=7sbo_$Aog+)tPiA1Hr2r z5DwFVtmJ1v%F|ho2G@WxLy3Tk$m+zoNR(Pv_dLHxH5K)YlLf&*W~+bp1F1rzk?Qc@ z0P_<|&!Xx%9;y#dzhwoFbNAw=5xF7cjqqIyGG>=z=BgS~kHl8Gc`4i}9CEX(+xk79 z%WrnCIMHG+wBmkL>Y6%KLa^$xQLGg8jPK+wPw(l?Y#EME@F#@1hS;45(bJQ< z!oKl9FQ`JN?flx#MmSQ)@<0eFD-k$;yRa?y)MYDprjYAdaU-PdoQTA|s)oIF)l_9B zAv7CWxml$4a66_&W2frIB z)_nZO+M`}!eVfC6=fHar+Y%La^z$eI&b|1LzBqRs?NK@U@?h$0SHxtwd?V=`slbRQ zZAhoY)Ifq7jjTz#Aqi#DzfF&)TrUhbr)`#XQDCILd<#q-=_<<^U1iOnDmWekmit*aK>i z)RgoOxj9LG7nrygr@0&dU_T*SP6u^+7!Dz(T*`l;(il=J4tZive~=(rEy~9Sr$3Yh zcbqe07%#?-MHz+U<8CK%pf&qY`(PE@StXwmUwH%PJG zZGx^!+0tFA9wkkdM)#}3Wm0s+K~mn^-OxX4^5X=gd7xl3^s*BnN-!YoQ&Fwq664<7 zR!lxZMv#e&SIypQtSGMQ2l_YURauBR?DisKe!0j$o0?`Lp4#?&E$K736a@R?Q9WrY zLm;T9rHZ3XP&W7uYu5U^x<<?AYXTG8`vo*`gln9!h?W*%W41H0i7 z7L7##Yx`LD^?HCg!dfF8+j+qPn`KkaK_7*$aZTv0A5AR0EgAXf50zVmUARXdKcDcg zPSfwubj)o(*e|KE)oH)*R@Om5E#QwQn_`+UYDyFQ9iTPyH6e;fQJmxZav3$x z^09J!)zc7pk>xK$)}kx#yGZU zJ@CyVBl+N3$aDIP#M;tYD$wkHjrUC6Nr7d?O3SHzGm41XGUF_X#Z9x>peoHFx@*N? z(xN8(20FkQ1) z*Y%kD1Wp&zw74HQ&kc+)&&%thootj8OSEeX$o5?Ky2lwcWTy2YVX)mq$v>9jrx{9w z8i@=^SdcLW+DT&SVM-Zc=}p)B+Ra|_Rg(=71blO}yp%g{#Qjvvhqi)bsxD`-gCeX; zUNz>BCpBzF)pv}^y5?2Pny#A-YF+mWMNf>5>W>Z!#}j7+7W{xec+jAug-M}uE*nrV z;URu}DVyEkbo)JWW0l)f?tm-E3L%zKNWDVxX`l9$KSG2M^WqlBZC2e6Q8!q1cv*VP zT@=1;%+Q;5dj1S0WbwTnJ|$}j_quafN{v+R8K&g#;-4-^nUj^v#w_M;VnLXc)JfiJ zm6i>z^akM(?at0|Exoc4ZGozTn8=+aMvois=a$0pm+H%t)Qwh>t0xy9T(+R^vcuzl z>L}ydKv`)+9f(|)q;bG#%dGp&)tL~MyzKl0gMq}dm_*97GiJhirU1QX7rC5u$=oA^ zg17_1qw=`PLJrU#oCBFqX3xV~6I6z8GbXe zA;TyeM5SlyMV-!0xKo$W1-Z)1v&FfRrkB_L z$LzBe{`z^p0giXTvEhRM>NN-p+4?2Fy_GLIG5w`p!G%eL9sj7@{Kav9x}|9JH=yP> zfYh%+^wirQqdc^NxnM2hT`>478=DOEFnm*X3HO3qcZzB!IJKPCqt?xdNbKd8(%PNQ zQzcX&3nwf-yqS}xkWLHTj3~s_?qy{byC;ofZ5KH4)pl#1H?B$tm6I3z;hXEX$j*WL zUDV0h#9nLzQVUUmC>DG<(~ZU1{Osx;r|jHZA}|X9xRNg@ts;cVdSHBviQxWy%d}S8`ki=6m?~7*`a-LlO9kG>cx=7oDYTjv0_)*AQ&+jQ5o}TdC&O$r0$vTsY67y zm?ex|xHW`~*~?Y|*VmVi zH^cIIz&gjnN$mz(;GllU05+J`cx<(Bi8`Brm%ouuLdin}w|${H&A!00Y<$ov6bJcb zpc`11(;BcGoHlY5KRkx1SSJ)V#WyzF;aCg*_-+VDY*iNF#vF1wsF~`?y#wR5mm3gA zk4nKv^|}ovHy?OJ^Z6yuoflRy2#v>UjB3kUr0WOs2Nk8N0krjJZEaMfGRn4-bB3Ei z#;o*M%**{iJ85Zf&Ag3usm{nm@_RcSl2I?1LtaB=vcQmcghXBi=ZA}tr+VmTS)SbG zZ-g3@2RX*}K3QvEvgMOO)a(t9vV?)d%7Q{vCniScf&&g{n(kS~adPKo^#*X-?eJF& z&hS1@Z%%Gan0ZlfAHp82&6VRXJ$EJTq}Y2(Bp z746i}?$e~9&GQ4yQ?pPMOd}%`;Yi4;!Ip>f;X1(&q4s0CRH*I>FqoGlm;q>ZP&e zfsW3L@l620$HX#!F_DnmU;RrAJ}^L9dsIWNU^Hv5s?7DSAQNf|6cnykGg`q$$j^J| zN%+SZQxxX5K{9gcT0ZBS7X_9eXl6LCWfZ+eh@!E&9{9xLhlss7?a=u-W|SW>Hg*7I ziysjX36aQ>cBXMYqTxh$ET}kCrkZ+IPQCZD=f){}ZEFn|!}5)Q2DxkkOk7Lp3dSPS zt{3BNx$+1WI82pvW^+`*v#KHq+u@%_1k^OeD^e?{yF_=Y4x6=*RW&Fv%#(*?Ii2cf zwF3K&;wPyK5{WTFx&$vcWm9Q7NO~M1&!&ypzUTaM+v9P_Q$a&q@dgpnFGtW(aurOm zckJ+VNHUZyM%)UV#+a8BMrz|w+>?jP_AL@FH10XY@CCHnF%G!tjtDLJvD&M|T2AeGVh$f#y^*2*&1qgjN8F7(Kx3vMKzk;<3_ zGC;4h1ioO+u+)j4Bx1D0IlIcgrV!>zqp#z^=rB;vz8t-#gLY+&bX2CyWEgU#brsgTRp6aA$sMM+W9)Hr|+#c zQ|?AsDq;3lhCCm&YzjA5AF^bpivg+{%JOS>k4!Y$&h|S>r}dnp^2jd@bBpp3 z^?lsFg1Wk+y2^?>v<6A-WI?6d2m<(J`+K(~veaK@Uixh&(n{9XTA6bjnkUozk`q+b zqN)4`5fa8mO4L9=4cAS|v1Kz&PH~k>*5_k1hcL;<;>P9AtrAbNzbfwU>$i7%KTkI( zE}cIpA2Kd7eBJA`ixK2W4lW@hW9=#im`a@Eq+*q?^{wtK$V@8#kk!|kX6yB# z*Q=9v9?M0M!()$?4Q(>lcM5o;42TKa+{|~dHJRzbmI#<@zaH(^XTHK3yOG1gX7?AG zTkQ_>NV?3!uCU!hpgoY*SxnrmH}lB<@ra>as-}W2{b9oPYmRsPm5(Q((DJ>QfPne< zlfza?RhvAE)3X9a_i;j5KlBS?h5ys5odywgw)4DW;mk$cYF2nZnVkh;^WIa+w=9Oqo%ek+S;RYG;Dr|@Oc_nYJe|r zm#6)flxV8w7z?WDT=nG^-@bZ(*1<7+;YyK%bIaVH1q`1=>)^!{<7O!W-3F)xKi{P3 z%+-dc!?rB5G77^BjUeUoE}=%NMbe-VW#?4$a~`RdPZtTxwy;$NsBhdz*LKz|7zfVZ z9GgtzQG*5hM)5Qkw0Uh1p6>NA<%P!K*#ZkCZ8*_HFT&VPNSME$P6j&*BV-#C<^+;@ z)rD)auddhUA3MNNtD&u@Wt4is`QB~V%4TL$ehz~J4XWIqq~2bkP&F$U`lp~MU1HR4 z0GHlxz+}r!r+rHZ>U}OOUEEq#*o5UnGF7Uw;=sk0^IT>jpJ-^FySY~`g_^(vu%<&r zwBSO6%1VA=u3ZhS9{+yYiSXDDY{Hn&<#uYD!>sd><&Bq?sj{A|dB0AVLo5>veU*^@ zEh7yS&DFMfqjE}`Y|0Ob!^+@i(N5CT-SaB;6bBpB9JcHhn$?C(^t>!0b@jo;k=2LW z)g6%&I#n@R((b`jDjPZ-ERpLO*#WGkn*^zL3oH5t3tLYE^>iPFbWX2C#%)kWTUc;g zA-&7{(M})+1(!PORD1eizP)RXQI3tqYccn;%dI*0%6h)3o|tdj_xFggUx*F1A`8FX zjo0|k+WPn0n{HVsIH)8a3SEP}(d+6y0zlE+NH3?soP-F*cbvqNT$hIafCfrodPIO&fE=|IgcrUf8UIDUf67S(a%~qBdJNqE&SZAIDHvNfts5b|AfsRXeBU&9^j_9hqdiyTE}3hZOb6A)tHga=Yn zaeM%Ilhx`erj`2mMr|3x$JrQ3d9C{7UxRS!_n&9Gr?G>mvE}ywu;Yayry1L96g*MU zA_8V8aP!HS&SVqA(tvy)b<+|Nk^12TzNI25J0~x*%x=-pLcd}SFBr(8;1|_PeE~9B zdU)i-vpsC5bsWUe+!GV`d9+m;=@ZJ5rDFB$2#*=^PD*;NaMphODa;%GeQNnRj@V)_kP4_GD9u(JLvf5=P397VFh zFwrC_pfgDSn6KH8p1KQ$0xscD<{d+sT(S!HPWYrvx%CoS*p-v%j06`B#}9l?nx}ax z1q_NHT&Wi+6jei(D2D?2ooY!4E(&Wv5=(bBzPxb0SC~6W7E$?v!vy62p| ztIBkRE2IJs9>i9t&A^D!Q$d58X50xoL{G9CkGc0V7acO!kEn2VIjBDy&66aN>ZC!QIpQ$JqKZ%?oSX8(U43JjA8CI!^tn!hXIUML*!9 zu@VMsFuhdKTzUFE;yWFoboEosp-w}|xO1b~tgUwu0a@{kBTBG59Fhpw8uu%??K$bS z1w?TA|6=d0gW~GaePIY50t5?AfQCSTCIt6D&_+XW8VCsxyrF5_f&_v~6EqFMy>Xhx zA-Fq@ySoRXm-n4}?m07eW=?%o^PReX%wKEo-D_8MJ$tRS*M6R#i0|f=MMssz!1bqG z&H*MXOP1cCdCsh5H)<_>=LHjMGE$LKLvDpKN;LrOH2yB1gCl3ja0jQ;S2pla{3|<8 ziByCYNxq~9Ibr=HkcBIh&VBgMS%O%C#ArXRvBnqMCTHEBDZdC_W=H%{D=|(jYnaTu z&tjn?TI?9&D_w{>(>05iQ+&R!%*eo`XsPQgci-2IyjyJ%IZM~xp(N5y&;@#!u>ZO& z=*xbz;hJsXcO7M5bBZL$gBP(kOprJ6vll!#=B-!|bReMZJaFWOd7!(DlS;{AL2P(( zV41Mk=-w`^FG7l&Rh-}4Pz(-n)M!Ad>Zn1;&s_z7C94gqa5|8juZ1*iQYF*~c+roZ zOrrys`Bz)t)&5bW|3?{C6JKTZkw<*1ZT&HG`{;5^VE@yw8Vm8^(ytcGQ@RSwL!G~L z4-FE4@~JMsGB^HGl)K&A=SB=^W)uAQAnb9WSW$-K=%n)>rOul?fS5&P)BgM>W!L;D zZJmi~S-i3jd%QmwI5oG3(v7Y)EYN`kMX4^3`fS9j5du&lmSoaM_AMV}@ zY&E@=?+!Q%v8OmWe^33*@rRuB-0Q3sSFQLm8>jTf3ep}N|B``t!wF5-D^4@tpG&h3 z6K`3)HCy{~K#uOJTV=S5kK-+GH2}HxYI#$A&U|!0(i!GPKE<3^-qO{iu~#I1W6}9( zPa(zG1#pr6GZkMwER;$cr-UoQ!^5IKUUfWaDf^dLl}7tZFyzsyYYJGA2`KDHMS74x z3RiwP&OR!c0zMd~NoM1jp6LA>+?Ij@-W;;5MsHf{<##_%-*JiOc=r56;`5hk5s`vX zR;6_@uqa)>tch)-)UqYhlag^bbDt<_*A1sQfy2KQ?hSie~$e zW9r!*TI~7WF#x>%G5oayjP6bNSbdBW;;cR3AfOE!XgiMuw3FeklLM3A*2(O=qxtV( zyy6M(srz>_Zj-Uxhav8J=&~Ev6l8+BsScAon!eoFu33K6DzHRv*QiXxtzZZh3IfZ| z-$X*p))~^7x*M?V?Pry#tVx`^nZGtDJ09>&9NC!QYAYzn`L1d{s_JT+S`h8zMGJ5m z^gu)H9#sy*(iR_y+5xZvtLxgu+q+5T8v7U1T2}obpVFy0tbBzp&Z}t=7<*HevIk)0yLviwoA(?Q z<}xtS?e#z=-|3C-swb8PpWk_D`ZZ^Kk;*gNeawy;>u`aGGBachX-UObR)K_K>}%^A zPNp3fK*q}b9EAgv_0-qaL<~gqbYH*UEG1_h?jM-xN9g~0*Xnk1_R~k&C!(ove97Uw zAq^Y?^wXo#g^dfqQ=Yr7NS%iXi06`gLXml6{!Fefps%vIcrIRL=0|*#jvBb<4J#j> z@hYJ0Kl^BaEKoIRDn2Eti$D+iY!>QO)~bgMP%AjvMju)j%d0>qr4}~U%N5;PZqyT`&(kjBZrH&Eb-Ysl zH~VOIw$Kd1nK#alC9%lAohS~cp{~A@G%`Gf^e32} zS$?r-DIPfQ@Ptdz0@MO~?iS(0$gImdC8g}J#()HN9C~}(rO^lDYVV|R3V)%&F0^%? z3VIp^A#>>-*yQfh(C+YuAi8kVDO8uqtQj>Q>xHU*CU6SN>$V<2Uy$)B%N+*$<0u%|GS7w@Fu@% zL|cb~zs#jOHE&oUuhT8fYYTfPWV%4NF$TPDjC7w#K2XG?b%t&Oc z5-(iz6sk65Kt7f%1$w1pX13Qy$6m_vW%f0UzCB?{WmtrkwtwU&SDnaPEvW>39SK!s zk)F&rWiTh}2)1dslAJ0-*`ydLvRkV=knq`?rk_qNO|&ZZ zD?FZS*3}lkC_^%D9Sc~~j253pReOYDjgo%HzvFkC*th%?nd!KdVQiO{vNN=1S3fsu z{E)cb+|uI!b9i`Fe3#{L4${5+wowlEtV8GJj;n-#-1zvRJfPqOQuv3JGHdRJ0RC8m zO6TOEWw*-OW`k%2jZ_5*pEJGea1Rdg@Yvl~TEsz-e3Js@CvFF5CB7>NcgXjzG`Zg4Gl z(VkpH01!%G@fOP+z+jn?r$rjUj>ROS?$xo9KK^Iabp zTDpNW^zX0~W-dKw8>eL|;pn9Bkp3lhw=j&iPKNuiR(q;y$UYBA%~o{&rB7Jp1k^sz ziQ<*?lw$=*It6Su!7@ zrtm=I)XxXpktweh$q-r8gz?%yOOBk^Es&;wACw6uEyIfHiSWA)n{ zIb?KB0pfe!#kaP)Rr$vK^?Suk#kRSwvF=ZkDdGMc&;PJ@`Ug8#-lk>B6T|F#6}OGL zXy=ayT*17z4JFCxGrS0vf!hYR!&j^QO_;zR4gbG8|F_Yg>4;hLCtkbNhrahmZ2uk9 zf8nV428|BCe)5Mf&p%z6{wvk{KVMIOU!glJpX!+9{!WF*l78&37tbU7hd7aB+k$)P zXU4~lTYdkcsGvw#S_Cm1nO}jvkkqx7y&Q&dNG1d)mafVQn7KvLA zP;R!V4ibyLJQ*W4$u72$RI`B15ypy59()${t8muq{}ACIGO$hXVqCwEqj+G%b*emM zh(bmd#G1m_{cic7f7>~FFT!~ENj`c?gG73Xv&Mk%GfUK-7$253!ArJky)QI##^1QP z(+CuG3{6-pa?LThE5`^julLyQwJZ7WyP&~dNRRhE|XoL+cb=UUFr+TTD+q0^(53MPJ(GdglktJnaOlk%_s#w{K z!pXlrWv2{LdvWxG>0R}_k6-^hJ5^SDnU{|y+}jQd{)~L3!9xZgt>%>m?~yaer_J`6 zHIgEUqX~|QX(u3{UG9SDL#Z3UPndNgs&*l6V?!$AJ-;fm->i8%ZmpM5N2q-znm%2? z^q15)QccDSgn`s}W~@m7Isp*pj%ZXLfWVT95H0W%I9|2Tf1l?u&b`wH&-t7e10HexDzHCX^i$rjxe%Z+bt5O27^CoYLW)C2BlQ7MEd0E5Q^kQD>Ev*?@ z*J88r8mm=Z!Qo(!A@-g_0}SdG)Ee{T@=3XyG~V#2P3nssW>=N1n%6@(l1>wj4Vl?f z&ilKbcE&|TJc_;^l+U+?PaE!qZp&gN(`+|+p|zLL62GymGO6n%9V&Dzg<5q?b2HKc z*y~QeR2!osCf=;38H?F{cfIhH?Vqku*n+*b$C?)47f^lR*sztF*rG#p!DU7YiWrrL6&8VR~Lt zZuXAOh-vdKIKKQ*z#IunLLz5DtTH_e(@JahJn}Cv>a>Dmg0FPHUS$0To#_7a|4Xdz zKOL(6A36G`{I1(w%5shA(F3~=T6U!wa05}bbjq3yPwLDtks}ZK`8@5SdOa;Y8KLt> zUeKP@y5&nIGPS0I089Ylx3S=~arv;fNM&5+ z4eH5T4cv5NO~ks`tdQiC4AZTUv`bnLXt(6iRy&QAy~&p938s|~hlHSLS!R@=GWQWK>M2R2N4qq5+`rf&x?I047ck!gufr4IN zh0Qh7E9(!}W#_v?A2r>oRL6v{^u?Lw z2J8m1u{T!EVAl=(%*YZ=uF`AeE1=rD@Fo`f2S-$NtbN z%{#)Vq+ZkEr`mf7(z?BNQi7H2;5Xn@yg72 zkGEli+_yEBhTOQIeq;R@>@DXl_Pr2_HZLrq#BWk78WaAFbrG1;3d8Uq!JQwW%h!-q zJ@25$Ax4%LHHppHsqs4#gA8x^UGOtf`cBOl!+of(Vwjsdh}1zXsCW<|G0;X(S#6 z7w+yozm=l=+;gH?4sC|wwI)U$9xb{CykaY|d?5zPP9|+*A!$3d8Gc61VL(3G*EP*K zr4N3nMeRBvQhi7+`H3ONy=RCK1y`ci?0oI{l7|u`wxEMKY%;w!dUEJEy-ie-*Q_#r zP$R)@Ey_fo^e%Kjf8F!oqlxaf$VH&3L*it@1c*c>u0A@x(^mSMl7y?7ZiE6x#%$oJ zlSQlP3jAl6p5QB+;+?%iL4lCcBGNJV$kcj$5AN>E(}(xxtyh=yDzEAt&lJ^XUT4(d zryt&?UBCI!;W8P=c+f3pn(>9xQqGb9e~QVZ*2 zN7vg!@qfL7|ILE_uR3+Tb}>$Ix(|{U77~m$bW=;4=>@XXb}c~&dzZUR9FM9;G3s-+ zj|-2gwawj)7oWwAETz$zlf31K~s{-=Cd z_i@qpU~?*c_R6`M(yhSSiUv|qtkb(*QDAP0P36D@b~o z_Wd7!a{2H9EPSlUBrLc-HqSu${?K*!?J%d3u^~=xTkqX~h&i1JJHC+N40@gcI+wy4 z6z8ygx2Yg^^@pLYpjBEH%1Kvt@^s>KzsIXD`bFh{tl1F&oc$DWooI=r8KJ!=lVll0 zz0hTbyLY)NsTxjd7j%q)LRFZvESkcNBpS8QvjAI;4w)Dwk9k%#MUUdL&<(C5=W$aX z9r2eSNppMK(54=Sa1wiY#6+eA0KKZM4c;!O(i#7?l$}?a`~6WF;p5zv<_Y}Qful)Z zhyV?uOg>Dg-KugZ-lz%MHzFcst1x1nDl2ovv4TN{bh9q$rEN7S8Zle@nSB`KXTF{19_||( z#_4T&7hwo#o8wB;>H{Q?a=s~Frpd0UrsHMQp%y&N=tw)m#46?wj}vpqO2C0FObOqm z*1p7q>pBP?^OHAWxZf*%q@0u;>y+JhA+%Q(xI5_>ot%*!fpV@@h^p2iDQn0G+Otdf zswOn_L6=?yIK75V-%!^Iun2h@x~T=o{Qh89UQu?SS$(2|9T_HrIBU)HdlZN9N)exT zM4e6Qf6IHKqc=Y3+H4hY8W91_@w1YJ4zBZ1LH{CC#Ddczy83FgqjGx9nh zx%NN%67(*|)0NZMD9*Zkx%B3BQyi16r$hZlUD30#-&otk{mJ@Mod%JLl9{y&d%LW# z+WNR&W8w;YXUP+S_CMT~#Qc}LuD)3daEg=#?fLjtAF|h!PyT$F@zpD@{%d*V3!`I% zsHqN#kdW&XqawACQ;WT#F+Y}YkrG7-1lh&?y%irO5R3EpS z6s!QYx4CO>m)FBS+1H&M-2jBCo#8S6FI2C&F$df{s4Rjbxb6aRlPRK%K_tC~YmmhX+Nz9^{XWwtf$#?C?+&>0>MK3>t znf%5&tMa4ZV{Ga(RaU;TGI67JK@l1xYNAO;naB=M#X?O@$tj9Pz z`R@EA`S$AFjdJL_y<5VI54BpT?|Z1m-UxMnzA>?`K){x=@mC^Z68 zpIP`fDKFrCrQt^{s6|s{Qzbm0Wa=OiE5=x}>-pZ?9C%EMUr={%xhm4S$K*Yf_$FT|1MU=J6c2?S z=9E*9fT(JPrz1dS3uo+!M=-5Gpe@~3il(ozo^0oBU-d_qSzy z2Z|-U-+f)Q#$d6tn)(C1uxsI8U?FyH;*)6QpZAmR-S?M0zp)%We$Bp0f@9NUdp$c- z>|C&ypWjKz~)?za`5OiEd!k4bfF?GYd?-;)rW-^$f98m}jfi)j3kNSl4&aCV+$c^abm$Ck@^A$b8^+lbkF;6qME9M|>l z(WV^P#)eE9_me=}CR=r|0IBKp;on$y3JcjPPmc)~#5ltq+BCEfagw97*>RJ^%TCyF zCdnu2O^Tbspd{=lE<4DBldHA)>1~dVu3?~h{CqVoJkJpQWry#+J(?g4k0@GttoE13fXz_V2<7z`v|7l*q z6c5Tb;*{M)*sED@NM1|B@sQ49;U`RlVr84(c1KN9FzRwgPL0_-a>`S_*NGa+l)>}q zv!Y{u3PC3i^UBwXs1LUGn%Gw>-}!6N>%Fa1&WS}|#T7Zegg)9!Qx&c6W?kDti>-!zAGDnxaao2(hm;Rhx=n2>hN6z^Xe#FgI!HU^MeUKouOx0tG~=wb2V>*pN-0zdlM!m zs@*OP!pY=;MWElDen~vlhT>5c?pa2ucZ(nT8-nNtKupH|#H}3*PdleyaSQ2lg8(Qf z73@KWPz#LSm4XQ&$x@f!Q+#-%xtj5$eOm2bk(CgLab>KgiCGWC~lPrgD>7CfgMDhc+50*_5%1NY|XARVn|?2x!*|< z{yaVdt@q}yi>`|8%jv;rZ(5uUM`@iD@y-?dj$8;d%2ir5*FUbwRGxs=*>tJPIj7vO z{y6ZCR46H{5kROiQ!)RWQBv8NDJ?aX8!t%`Fyq^H2d zT3lN#3h_jFLuvEN<$~?o<`FIBrv*Ot05aI8S>80KrkL(k88r3ya=E>VQ|f zp6=n3C$f8e1M(*PL=d%4jbY-;ewYt8a;qbpzO3zIV=oOvZn~W4y)J5TyF1bsu4=oG zSPl%62?GO%SkUrxcvi#2Dp zm2-5#cJnOyb-nh~F3eo`snX1X0P%-?)5-f}Xs+K_%Cx&h$0j~%j)l|@=6r$yxiHHu z{!S*obWSk6H@Tmx5@qAcmp03lVm7H7ZXLSlwv2RwU}-TJ_Hd=(G`s z@-=SyZ^b@7`}bZ>hU&Sg1k41SKf)e{pEbgwDI&=swQ?nFlt;JVf>-=7@iS3U&^C3@0T zhfbyGiKo(I6O&cSSZr|=vh3^Zz6LlKI!$08HKQt|j-H#G=kW!7>imNyI>BfKYr2P2 zJ8s@IaXwZ+&Rbe~M#dxl$c36AEbph4!>l=NUdt=35}>ZHS)2UJ8V*0v274F7Li;^W zn9D?Zf-aXim|p<(UvW#>L+bS>x*+un1%>$~uEB|=D!;LIT|3g`2*hSQk^Y=#KJ7`Q zJjoFy==|vEK<#-W`$)CT#JO6+6!|(^=zjEvS4IRL7xlN?8nuT%YnQ)U`M;@a<1X1P zS~z4g0@Hbfs?fd4d8P{9%s%{b+fJ6$;dcvyy8N* zceg_AGI^KdmFT@2A(Zh!EIcN|c2?C(6WGZc-J_%&!*GmMY`v4}jeZt(G#$=u1rHcY zi>F*ru?#$bD2K|&_&Q5bXZ?`tkTGgPwA(eB*&;=EBH5kOhin~&aP4f^?d=2I+cvCx zSJVs$Z|E}X7mj{tC_C4W&|32$>I}`rN4p6qT%d4g5hi}sbiByGXs-3x$5O2MkH%Ww z>I<+)oUbx2HVGDN>5@IVfH^;mHxp~t|Da>?2yQI4)Uiz;(|uVdZbEFWsMisJ-gdqB6Amkv?m_MvTM*S|ydq;n>-wQpTpOU~a8{Y*UAr zkKde2ic-E@_>BdU^C>PW2z`%HogTiyvDmB-vpD909^%(|1yjI@Lc|IDm{Cb`!!Ws3}(XicS*s2Nxv$I!w)kRi&_A{%+b zR(*1uFpsoS{*9%>t2gQPV#klGFhXP>_d%=F1e*SX)-Lb~2ji=bg;yKxKgha-Pj69V zII2Cj9_9eSZ*~0Xk!h~c(!Qe}i!P6)lAIqBcD*v{{-L7=4KKYlvpsXk-QUHp?HcxQ z$M3k^teN;mbvZ`%w|>;BIo=Fg8CuPX7TbmW2g*zMw#A4e$>yjW(TQH};vF>Ys zN;lEHudAliZ}=9*wpo)DXG}_p>>Dw;b|`Gt%<~d*Z35OeS zJ<|3%s8##m0;)F1E8#rT;i3jcfy8j61*eIgDSMZ7Z0Ms(g`UL=>o#b~=LM|)pozbs zSeu_xP9k=w#c(%#u3?8uB=tQ8Cg?CKEsD4kGR@3-6U5tJW_;)knTtW~%V`<@!sHVb z8}>1!Ty=nk_q%^YPw9+#X|8@tn_Vj?h{;SI;OU?r%bSP0-;H%$zfKt$w-3s->B!Bc zZ$=B^4WHejVYeyU{P(nOb=|y2VveW1W5;QNc~%!}*IU-h^C1P4w zZEiFhUYNd9k-P@o(!4%Xb0~}0 z27?&CEV5=^2NoiHny6zhY)dnKZlJ2*`@D(TiUvS{SAoG^l!JtecdYa>wP=h3n`Vb>@ z48a~H0-BRBd?ur~=6HjRj+@(*}Np$DZY52{kro5U}*O%Iz0 zIaYJL8cZdr7%`m+uCaxiN$Kpp;GL-7SSR_bw~BAnqF_@z-Nfb$wa~Hw+I-(=*5)(m zMtIX>{XLejX#IK%+D?IjF z^_R?By?I+wfYOs_FzDTmSx}(Zu@c;GN7+g3tH!^&vQq~6oRpcU8OV41c0X;xNRSs12v1$8DoGF1rj zaeji(pG$W$!(RN8aUA#j3>(Y0T?zGRC)R~MYooQzw_W_n$wPjf?7YnXdiEd~{u>MX z9QV&_nqkJIYCi}DDgV5NC&6m-=RKN#T%+0v`S*?g4+jV13o#$4JjF9F_&mmZc_;GD zP-T4w5Qq7sLZ@TLpG)np9xQj#zaRVmA441Cs%g{rN6f(#KWB~ic>jec?muVp6jn$u0*5naY&`dK^zmp{*b;#YH0`{4uHET}vTFUcp` zblTf)wj?Xf{FJfmbqqP}xrr;B=+<+J)G;O@uyAvY_OU61+O$;zPvZ=3J>GCnZGj<_6cl!eip!?@-M?1a_eYJ$5jm>;*ee;3Y*lMKm2>(CRK0;S;h zu%)~MfWyC>JZc}gRkO|skSm!KxB z&Ru%n?9jHt*#mEJA8eV^Fr^LUt)V(D?PIJM4EV`zhlPXcU}rwyHh7jC&i1u2FFEMI zOq*{InNyHkkgWCSd; zmdPk^A)dov87*!d$5J*Vy$lVD$o&6?-fL)jOfB?7%^?EKKOvJ9xVlXOkS41H=q5j= zo~jkK+vEA+t2``paY7@cK1j$(W@BNrw+#(k{EP?uGGYTSyOhIY$vt>PQ&o`mRgx4g zA|^&z!0ZLUB9HF-!&sO4Rv#QV-H)$DBIFoamQna+x*Flu6Wll$K;nfnHnVY9_5DhZ zfyp9ED6?v1hCOL*`x)=_4>2KYS)4I(+zqB4g=j?$>a#^l6lVH4C#oepe&LhCPG|Yx zAka&kk8=bP59gO!tuQpSy=5njPFGFfnEaZ@$$S!j;1z?Aj#-?YO17|w#kzY}fG77s zqe|8Il)gOUo63adVQcA;z#%>oOY=Jm_k_|d5t5BXa|KoNw)2)qp*PCYx;iLtTV^#| zY-!UEmgfYBg$p`{1HG`RN49c`mf1N4=+jMUstd=0g0za~*KB-{xe90@oNTS(YM;7g zlZi>8MmprjT;Y&RJt0EzzK{2wyNmOov`+xHQl-6w23J@aB)ba5{jGak#6s)&Y}7s1 z!H{aYxuM9Dvmtg%O2h`vXv`~8IVMYkA%(W#{&5`UmFcZ)*5H;EoYCz}>E|z2LeVv7 zp`@4s2E0>m<=Kx;5vO)ml*q}!hL>Y$${CQ^GrN#eP?TPE|BH8 z)m@3EU&VIbnxapRTIW}<>tKYn%1XyPv5E~T?mf?kUlH|Ruc&nOOQMT|7z&lv z&-)E)KMTCk67}5(JzK2&nWLwN3;PCG%G4RziS-Ut4Adgax-O(T`Svh^BHqYSd}+`6uSw3N%A%h{idx&XVKHdG~MtMpg|2h8rqoS6D^=NP($dshFog= zw0%ADcq9EhZjf@Ha;XMsrg0N`+J#==Slcy2f&iK@B4I)`eg}Tl}DXQ!l z+JkvNp3oT+XKV@bIgiMVT6bh$RMi%2E0}$^sywmsc!1H;P*yfoSz>@!Wv9{RMLd{% zIy8{Ig(b^!h@mqfy<4{GlaAUqcqP{{-MDb6LABNbH+Vr9j5RvWv?a*`2TA)A!e4Lc z>Vu=*@>gNG`K}*@=q1&&+6XTZqAUo+XWWWeKGAQ#x~%iu^z=V~2J8bQj0H3|o7r-O`~B#o7+T1*c(HYk zg%-Q&sMJ=F`~EL%(7kS}s`1o0Dd*k1!0YCb*)=r^xeb|wOdFC3v1^AoBy zRNHJ>%KU22D$p5n3Hq5t%Q)h6%eYp=US~Y($Oi_C+4+8A7VCa0a6K$-!i(24xgcp^T9H(fla0n0JL)DGzRzmf zwXrCQc^e)TlQ_ds05J>P7VQC)yUZc$i~(hh9e5}aky$V??Y0^qs?;^4%>KuLMF%aQ zDWka4WZWz%o2^x1j9QCwArC(Le2x`*@SKLOosZA`;2wK$AmX!-r^n+W8(Y>-A9mJq z&7V1rXzt~UA10Id%6hfW5D;`g4j2;v#zx~y?h)IN>d^seREDZNCnPT|TXhkFf2V_G z2B!c=mamt6VHfZ|9nTY@(XjacOmK`?Z&%cb2Yc#IK+0-cR!u3>@fxfpY6#*iqX&N) zGBf+A^j-!nl~uhoDmtP%oMJ!7_LE;6bfyrjeOeiWO@|k3@QdFk$N`caimn|d;Xv-m z&OC`6gB<7PmaOAPno63#|1vE*0Wjj+cjxP`-9`Qc zW_+D?HmbRCXZ^6p`|ci3;~`b0vJ27;6_d?XxL%ZJC6o}Bi*NpAn?N!}@=QSD@lYrR z$KIYvibqI+#F2RD5`SMZgg;%adw_q@gspI(=csIX}?jaE+ zOkrVI2f@IjR+A8qsCM#Dq~0z>3QfA|O{*r4znG|6>+TbZ?|(~g0l9g#r56 zXN3R9Ms)wpt41DE#Xxd$aME$pyLu-ivB%Q0g*psxom!Syu2#DxP!7mhOdr6OrT@l+pKGVldCN`sJ?@`;pNis-NLEmLa%YW?_4-u(xcd z`UJy#`h?`=fQEI03@t}O+7^g`1N&FSG-<*it(qt^6o}A^ko>gJU*vTzkT0SuJpS!E zPK>}uX&a|qpByjaRuCpFX4e_5?3SdO_QSo*hfa{AN4;{T4ifAb+JWtx5QBz;^BlX? zJ}nv;sqE1qEM7Byuy|VA;M`t!af|GxHd5rOMGb7yL>!<(=Ye(MZ*t6?qw__i$Lwe& z7`KuIPgtRwYs9(JlvYW|5mZ`^@f(;iD5VbM?bf>{!`g7lVQ+V=2PsO7BCoKur(+;cszqWWncHX{Q$+rQ z2>%lttmD)|NeOEVeZySpTIA6zZyC&Jv4Ycza<73=66O$Lxhorg*=h5l;GQeZ$fni$T7qFRv1 zLiR!2Va9RqWT)1(EI%u?MV`+(g6SgS@0-#+cRw?l`%)1G=P7y>hu&zo7Qs~;!q^>B zGoG&v6c(=4dEQ1pvynJ# zgOiDsvH1}Lj`~sN=4XP)Pf{+kW+DOL-b)W;@JWKR%mg)*rJuB96nmzVsw=`DBw3ds zTt_Ocnfe>JLv>qROvV~OW=-2_xp-|Xj zv=;kU1ok!Fkb)fJuduI$ROf%}rL@ie_~7Qolal$c_C8l%lX5)1HAmwf`@eF0ybnEvzic^_oOTU(?nkck|2nCQ{<1lwM(|jc5 zjQ9?1>T&ad7!Z0<3lip>&jvh=7K02i1l%oQOJsPk*BHhJS)D0WDiA5$lLVV@-WDUH zjVnvCb`g9v{x8tkGHit{B74U*#c%Ep{!;hmFsCJP^>$_Y5LC>TJ;KQh<*oDHMuy55EDLRd1%u< zD3?DjX1XerawQM14Z#snx4G8_=j z%JvtBx?E`Sc*)kLc+q1I%bpN$uIX|G+a}+g)|QA)OeD#H_64Y}(#c4`LKtqR@!KaE z26Qn+E@y6tZNAgxuIFK*i{1@l{iZI+NBW^E>c{7E5;!gEu&NlzbYFEC8?xBKlqI#j z3Vr9qh0)`pxmiD(Wj3OviW_A6rlin{w?N?eETP3nZGHPr#i1U3^+>W*i@w`udD@Ai z?wJ?aB*pe2j_ed2Y6jZ(1foEUF7?QF?kh~wx?jN|Le5ngEoG0MukFk;4%@tD2{Oi> zL1bj`Xxw)zbb^gHWLpzxf!Q@f5-EDu-q^R3wwa!|FOsoKE6-Xo|FE`(!a&%B%7FBr$k z`~@3H(GhhmdDwPIVG@5kt^Fn}G#(8h+K~)uuXO_!S;^ZyqQ2LiDnFdRVs3s(i-mpk zf{nC`lib9%%jdhE{NCP7H+{1Dk%bUi?Dg!3yYzr6L%J_@Y)L4pSfXy*WH7P)XvCyZ zoJaevhqso$lRm7C%Kllk$KqP8n;l?srw7`OMvwnlbzfjL*kW zHC)WyKGwv!+~{+3?RIC>N@8|cFp>WO(yj8zVq#f#TUZ!!;Ln%vbV%dz!z1v161ZW# zA}kUp78cfsCTyv(YV$1X@{2!MEB>xXwB_y{o^8Luing?xg~iI^7=vUw87)mmF6@dX zl>0K0j77V58!gPdfEFsGoGfDIaZjTVQ8@7_I}V!VXpl0exC#xsNDCs~; zOH!quRDv&YI)>YrL8@{Oqo=x?+xIIjL*McGX^D4h2#?K1nxHWIc)Or^db|qgJ$f~7 z-hyBj;VLG{Ql5RR)}bS>t<9w9hO3b;!Oad^0N;C$CLE>*LB}=eN!zw*#lCsIMU%<} z|1z5UE+USc*s&W?w_wHoOzxpYqMK?oP?QUg9+QB~U^3JU$LZHxa6*Z2=v`d+ zNtK`_l|5P(-xW-DHh*J%l)>+Ae`GmM>oRUE?d;LLv=|2^cQdb?(zL0O;4{^w&=q;U zo)>kiml`7ikQ2L#rAGgvPn{AVb(3bl=fDEec{;w!9wl9hD_Ybi8NjgQ(`yj#F+#M^ zInlYLz#bZZ8EfmlTIyx-X=0qzK2$oyr!oelRw&mzx*WkXP3u= z@5+uNy6#*3+5XwNQsLh>{m%!21|3Bs7VF(b{*N;vmdq#oj0Zl`T*U%g&oCZc;<1;D zr?<*7^?$UQ7C$|F^|^xi{%Cbleq)&~Q{T$V{CPn2XZKr$nSbB*A0eTRV7tfhy{dM) zv(;U{;g*sbGe{?t zph)l1JBol1LJt9?C^f z{pGD;Pf!mYl47M}hrx=yLzoRMVGJ}(6bt2fytU=zNh!U}#LV(T_0LCg&8Y^y#dSTX zuzY0X@YJ$I6ENVvHc(7^w^2vR<(oAydXn_w9oRNC-JIYgj2TnF-*(+83H1Xqw%VU zlUL;C*6rr()Fr3hA&yVo^H;*g;)8baYVlT1A<1&)hN0<^ znLVJlAq!=Rx3GpY%rT{2(xpl|v!dPrP!~r39u2%ko*=F@lRq6K8^cQt%q`;V+0BnR9 zvLX9@5=!ynk<`#tFoooT^Bz&Y%x4}|$s)o5dVj6MtI5*Odz#E}4DA);eufRq)K=1b z3ZI+1wrb@Eh>k4^L2kS(DJ!Xc>|j(CFRmz!G?A1C81qL`1%UwS=lAB;f~rtkWE{eP z3-GKlT+Z@?jKKviXUOhH9C9#%i`EXS>5cvk1^uu$&AFO~th3w)Qqe03@6Vsuuf0U`j7cFd zyE_g+J;3rJR3Y~{UGl!KEGILBiVFLrjrjXe*V6geITXDE5R&IOC-pqqc?W&{ewCBk zZzELsm|O(GzG;=~w6Kp&^Z-W{4de~(xrLC5kqFpdSY0&rJS{!ldxq z2uM8B^1BH(CS^#+>hhDkQA)>+Loh&v!glCX*vC;d-@f=K4!ycr&Z@?JQ-3E>wI5NX zC-16z*uuF;hBOn{Ccan>_f#D^iTe&IjfasSUdIyz&(QOlN=O%ZhKM}6RE#;D(=l0X zJ_Uox#5u2eixKWg@AsK)INb_kjliuQii}%sHv3MN-ecAbC4Ue&>#@mvJi3VI=5vfr zN}LcQ*+SHL1@Wa9URta2iggfL5`1%L=91CdtCX!wpv)tAuNdV2BQ(rn;>(la{2zU1 zD^pEr^JMqKCxJTKrHFAl6CK7=X0KET(T?_uuFKpv%id$}cKobX7vWNPa*$n>m{N7@ zzhxcMf~d30v@A=DA7Nm|G&;ONAN3bGxtJ5ssJ3O*z*>;FvN3B+ zL41yeN7#V`)ZMeH7r z7P~Vpf=5gor;FCJ&xjnandG8&o1`uy{mz<3Or+!hUc*xE^U z{gsVWGcrb{7S+MI5GS=B%1^uzbr@&B*6)MiM@8t*t)sxXYnyAW5NV(Wo61fl#UMXYo+|Z zPlxES}QHM*ch(K(r}@5ICu z1FzFT*VM*TK88suyG6OBG73smWRTs$Ru^krZd$sYAWC^kk}2HFg&t#KG)3X1{k=I! zp>0rqAsP@M%b6l)=xZL zFw2_^D?TxAAuCZ?uBq#lS*~QfV_Ls%bFuso`5ItMJfL2IW0qs=S3=)*WN9vP4{7T> z4)AO0vEAeK4yl>ZVp7QtH{?tlk(EpcV}7-eW}AL(N89^c8KN)3rH&w8%#RQMp0Ce`q4C+e^wyF}i8TB4cJJhet>+>~7YnYJ8vgyyoz=c_*MK zTb}m0xry0EO|GfnfCv}GlHKZYsu4Mjta0HwL->fjCKOwb@+XGw@(bL zaHat}HNIn*6)34?iU#+~tAXn?W3rVVuZ*$+sJ<-ZIUyzCLS<#Xp77xAdDs9AyM;W* zwz~sB!UM7`40A0S-tuVI}*EMuMZ;{LLMx5@RxwSqo|&0Q;FlB2n$e_>)3c+ll@ z>d;e9Dk?SbcWbYCbI8_DrztYIsh|&JYDapAkj7vs6!;30o#W$Ckc+EQ<F$9WX23VHPu`no$Rzmen6p0tlSuL9uR`hH$2cG_mvhb3 zfR=pclwSno^W(K{dVaZtgHZ&FzeJ_?@%!h5Bc|o58Q;2@!h^u5w1m905+pjeT!t>h zH8V;1r&r0`pz__c!CM?G!skV0X>#5;f_(B2VO2a+_O*<8T~uiqDTC=pvNR&U_LoHc zgt{+AVjv2Ces!%NKjqZqihJdS)Pk&tDHkU|d4(T{eW8(mbD{ITyuY>WoL7w9MRRy| z$LiOP-67-f@ls_zP#zY42ox+5xxci%C0^hsc%x<{cBy%m(I;i_$+Pf!Yy-oSRFyH0 z52F_Ld(+T4@AoymOTf!Id0DaL;luBH%D%nN$&xs-8Q%@Yj33i2r9&V^#zIlk}566#fg{36Pz-bYo;I!4z zrdJ)KH4z02xu5U5x?TNa=vKfH$^-2~J z6cl6SuFz8is*xH7pyl#Tub2)*RVBQZI!BbpUc`SLQPVAm?4inw>+j0YG*hK*6ros5 z@F^;;?g%#sTvqJ3#8>qG?8^WEU*aA)81_x1?oJ=0dLc&{?m8A z{@-*9VGpkSlBs@D7Z!u_EGn-u3fjBl*=t>!qV3|(be|^HCFz_wmZ6iq>RVzlcJZ?! zvzc;1(lu64=CDPbLZR-Thf0x@>-&l#zQ zach4gRvR+(c6|b}$(||$cHR!ttP-g%2nG)gRa@d}iLHTek z890LP-+@wB8}?$JmqEYqhy3u9MyMJ`#ILaMlKkb}9Ghn#In`DRp3ayJd+R3`xxGQ( z6dzN5;>TdiZUUBjrX6MmQ}uh3M80)t0|{Z?%>~Ngqn3I?>IWVIi7yk4RW^bW+~Gv` zREZAb`p-3PxM7;+Lem~__*z1EenX@)R8I-Qys4me>i_MRY0S*`-`09Y(-K}|HHjFd zy;EX-N;#Cf&0bJ_l!WEn^rN?|3(ua}-jod57pxp}1fI&bHB(%s{u)-5l9C@mA&>GX zGr!Fxd>@6ipN&pftDUwC&48GvI&S;euc9h?wWMIx{N&IPo%MZfy&&Dr$==;xs>jcX zGK&Xz$U0iQ(=kkLuv_}O;T;y($%^n4i02@gY_D|uj%WYPp!XD44H_joV+%c}EFQ*H zsVcShlQsf71JtVhYCkCNb1iw4TGcrM41=|2-#q>pxyZ@+3?^L%T6op!Xs#XD#D43B zwtW-M+|K;Vs5NvS;<`RIGWIBmMcy5PSm ziazY+RcNu6qJ}?t;vyx12Og|%J6!AQ{ag6_A0W^_zQ}6NzSO@jGej~1boP6SmoBf- z-16|l*t~;#&2e^bO>oh{OMQ>s!pf@6C%V92k)tHFs%s*>ORANMBIeqeDv`Q0EotA3 z)>Kj>DrcL!$Ije7+9^d~c?YEj*4?$|QGtsm+j-bytiY0;ild`^x5cm-TK8^FLyr;9 zOoChwk2bIU0oSIP@0TYd-(g#q0pWR*duN`;HzNpNklQ54nFX|D5&ZK~^V>^eVKp6z-n)|L5p!FtyoP%XKrj(H}!tTgg>uAZT4}63qH0$YP%)0Zd2>OpoW@11C z=O2mB6<}&DbyU}-H7E2qKhhbuzU`(4&-^NF<;e)SCsH}TWfyP?f2q8y~o>3~Kx04?UFItxHQ>DDK>pOG4^Sc19le?~IW>RpGAZ zfpC@5$Yjr4ai1!x2EZafqbT4Y{q)`)mJd`%yx(_;*=H{83ifb3G{ zxMg}APKDu9X|=ih3i^Bp)|Ur64%*pp`E7wXmn?SacODrw+&aDGEg;FfmDnH|(&Zld z!*>R@P=()REavXuX-X2Gb*PhHxIY8U2K;aw4Ym=?5WRmCoGzT!OAj}r1 zVi@CWl8vm~_lnKcrA{_xc|wzExohH!{9wMtoRo>K|I{T43JKo+Ek*b?5=+>yv}c!s zuGh&lQQZyPnph9yA~rV$>L&HN+pb;SnhsH7KifuAvKD%U3K3(w1YMz(mE36E?!)tt zQu(<$N67vo4QpVpv4iodOb#|Pj^Xpr7ANQ6H%hBBGEq@5ul;&9cmDqT{wNz9fBM06jMUpj`q~iPI?3Ys@2=$$ zi>P#!q;$Q4LJaTeXeQ1*nw~*V`DcJQjiK(o8zs*Dz0G}6N~tS#=6YvH*4~W zJKxQ>zL>+yKb>@0Fe9_~rEhbr{`yL%l~7w;GFEA26i|vRyW_~apSiXx(xjqvO@dU1 ziXpG!oC7fLgsegPNsZj0HT0&@rx}JXrrE6>kq+9t3Tvq;X{0&}4QSbN18R6qu*jpD zM38{%+|3c4(}&A`v|HvWDxvf4_7H)ulr}lc1SoRMLTOs(JT>>%Gb^_?zzW;RPLhGA z#8PbCxR%ZOX5en-Kyod`(>mT23dXQ2k56I`2dWm#gE8CB8r4)z&VH@q;Cios4aS6H z^*_+Q%*JCGQstc2iwA_qBr_*LfB3%6v3wX@ZTD7&(eYm!P&U`g>P~6?_LggMT{5NLx1WOa*nEP z8);%T>yb;9bM-u7RfS6xf(5%{hX(gPNS39%DW@rg8oVV+1#zBZKbGIw zH#^*|el(R|T!4)nxi+D9H;0?(E5S*Dgw1mJE*0?@^n1ev*WhBMu7XZjP1)2;5FJIv z&CIVo%FI_JGii$PGi#-V#R%l5_iOSavB>ik<%b?3ShJv6VC>=UKt8O|QX1!`;<=zN z5B1W#!t9R)`31>l+zwIi&~h(clI*-7jLrl5+2B{u0n}IxVqny|Z>HoHiGlv7vELEE z2o6vkEJ4O7s5b4Sp<#6p3bz&5Yj(Uu<{KgD!y52nZXi}hv6^~GD)nX zkK1jYU{~zp_9ve2If7Dnz@ukVMt624XV{U*{+fG!XmbxqkfHR3>%LYD-}V@t({!0u z+_Ze1&TX^6SRQYsgp~eX2906R-KMv>ub$WVSSK)xsR)Zk*=L<nk+o^51+%8-4=lPAg01JNiy21h#( zaPN9Wm7(+8#mN?^yPJ9?=h}tjKymE0q*UuY7^$Pj6{Fg%%e1B~l8n+iliUfuOnW!Hnk~J74*-l{`|Vd!$lCO9WXB^|8oS+5z|;m z{%W<~;n=0l(V4w~)+a2G()APu^iiIy(gNo`*-(vWdRODUv>m_gA>yqiXR6=x1!wlq zEJgWIix4@a(}t@&QgynLPVkJ!=S1O2E+2eVi;d{i!4Z021M$L@a@K4 zWq<#N1NJmL)lu}BG)c=^f>%g5MVBXUxBq53{%J^g(o*dA=_i){xd;r`odm-r0haZO zudgXa{PSE_8Trd{2(quYMPe{XqU}Dw;^O$=H6mpNLAHV-b!@Vwr`vSgFLhH4x>jeU zLzR^z_6(Yn%th7H`Mn;}r`t;P>iH)5Hh}pF&nu{}<9mcsG}lq!?4;xu%`i0g(n?+i zP@<*``98Ktya?x9jI^tNCaYD#1oU!c1Tp$7hX!XY{^u5$t{t*;cpgZO^5Y%f30kDB z1@(wLm3g?(0koW1iVL{t)e|g;02@Bk6)EyoldHRK_hSLGcPv}QY-Fj5ueqUa&Xa>y zNZ$=yRtitr z=p^qisb!~dQhuFBJ2{YTN{^`^*?uvpv>ck12k$KGpp$Ohhq^o!$!djuC5nm{mRijS zSC!(K!*=W>;U@V7OhDBV5AH9unT?(8JS?6X&b1Bk^b0_1Uvy09&^qe)bDzwMx=v$F z_wYT;3A=?gcOUqJ;n31&$#(4Ds+S&m$}iG zk1mrqkVAhsJ7Ib6Rlq@Q*BT_!Mp}A_AT(_==9*ra<7Z7XDcu&wgttF3e3#xF&v|Ca z{b@)r+1b5`EEohkr9U*wZr9E*u-mS02>>ed47s{wDnIS^3uVG-?cBYy2IU#B#q=tAiLXj*B`v}4sSkXq{XQUo zr;bV#q+1G`-1D=v)OIZm6D^#weyr|sf1-~vVaAI~Q3R}fA7yU@41C-+h7-=1RESutg`I!}8+#5BiafD?Bj?Hw#^I#53YYz1a|BOc7xPQd&AZnQTlh zd>d-E+%mht5S3&T^?eLBwp7k+l>1Y0-kTaJ^G?B$2|m}*Q{HG&`)|v#S64FPM=s&Q zXz{{*#w3_Vr7tHr$^|6V8T7n!U-QXTsnPpu4NrR~L zTicd!YbbmG#)-fRiL!AF4s8)1nVHWkfJ;eAMs9LMb7^jkHvrX<`qCsZKF3UfQW4P3 zYj0KJeWsX4wwX4NAN~_+*B0!<2!lW)AlvbcuQq|DdRT#NSNxKyJ7v>FAR4VXFcxLjt!V7@NQ;sZ^#PQ z3xcfxNoJFb8t5%M2Ob_hK_YO$*FE^HmD8Q(AqOGX=L6 z;9CiSN^!NlA$u8he4BSK!6!?V+mvN+F%%Hq;F<(xtSJ}F_4=jh!=0< zn(BCY#74r~)Kz|8dvj>m$`x)Vr?+`yL_Vy^64P*GV6S0*6Ne!;ECs91>VDj2(|QjP zY)T#7tJ+a{TeMxywx7p@6x)8CBl;|j)M>yw^bqzgU{2#Xd_?&vO?mX|y>y`3UDIJr zI8Z}qt@*0mzbGs!q7Q#Ry4co7Ne@P-4!Ahx6Yud;Ek@w>Y|So(nZBl3!kG)@Y7!F< zTqYNvM9$K^XmJH}^Q?K8JC;`X{jMNbql>m2dD`ofUdes4iU3kJGDjI|=%Px)c^;$3QO>^2Qta=V9+Qx>^9| z)rm4T_!zX7?9iUs_`VvRCVzo^bMys|lMvo8QE`Xy0yqjCh7=b}$u+ch%$i6QnZZ$e z?_h1I*Bl#Tb2}$wf#)dmK7{VK1+?B&)mp+*!o8RT2B^ONp?LqUiF_ocIYn(?g2}&E zJP;m7_%9K^b0I4$`@i|9>3UV*l6%lu&QLrceto9-=^MUTfVJ(S_!*%(N#tTV`#k!Q_(DOvps)MO2V_rNu2?Y|HKR`+&?S;qk2jhVgMR+iPyKR-P~z=hxhysyxUxIiR&=tL54T}n=ZvB7k%w#!&8~nL-o90? z<=Ha|E4%yr5y{bFx?T<;byQB-c=BV=;oPS&z~7#UMqXpfV_Wi-$EX$RYt^$`Af3Eg zW{QNG8Qu#)wdqj)eT|M9uc%}rwwo>dfh;bk%ui)L1?c)IM<;c-9L?#lpV>Uch(fYl zo~Xj57n?r1KIP{?u3)euy(>A)J9SAWcr7mrxs-mxj3LH1$XLXL9KLDsx=C(Q^Dbo0 zC#gyld91A^$NU7pE2 zXnhu49MIIfLS=7mKv~G>!ldDFxIr69t6i$pLXq(*X}o*M9{F>`|RiY|p~TE?&*^RjMIYd#tsFb!&NZ@_&u&M!2o8%}jDFZ_XgLCo@v)Cld+lP+$~ zJj`<~YG0&v^0;(lItUXM`+DF!#UHMk?-H5H{w67>aMP zwp|LFLm?1PPe)UOoU7DP4R_x3kD=;(H&@-mGn>Q4l~2NcFIli8?t@$#CO;9HE1A3nRAQlSRGK|sdHL>hPkPGW+PBnV9a%k6 zF;{1}|7@=Md}v0S{U&JVqR$g>y;;xRi`z#w_004%)6$UNf;aGTwOTsM>Zte0{Tz`)~s>WXGVVlJF~O z#;sI@nb;fLh#zUl{;*s^y7JduG*aU$KrN2B6ZRg##8p;9(&$AM=;-ube|p|YFM#d1 zGXDEY-`>0TQ*+S-qbX@@da<_>@k>x}mtk4WWvroME<0=DhaXmGkln@&yG71`pskJf ze5a>Pa^pOHa6@w=v#EF4%rN@3^n_RsK|c3?QIuN<^wrK46f9qZ)@b8CYH(NUGTbeLqs@zdEyIjE!k79r8n9mbjm$s&Ke}x%IW0ap;Hh;VYqc$EmVL!0N55e@4*yOR)w>~5E(fjPoYhRIy#Lcq{ z$+MK@nxcLA51q0m=J%c}F_zp5l50x10nTHT0D}>o!cFF54o?_I6Ihv?u`+ln0e8%t zebr-1&XeFCN{>M(Uh(xxS^To&lYXVh%IsA@q~ND&b!cs8Fb^dn`n@%*q}b(?sY)gf z9@#?S`#Hl)VTOENAf=bWWzg>-c?B?g0hccubi6SLV=8r_y&)PxAHx>|VFQUG$Lk+S zI#G9vTu11kcJ`Rxu8Xf?G%|JUfkJS@SlvD804Lp9#mD|#y>yM@`Ua)m0J#q*V=VDv zRMFA?86fAGQ!XA}xTEMjX@y?^Capl3Dn->XwBPTx$<8N@Xi5+rXLtAcbNg84rr{Y+ zk4Zr{3+bA~u(-e27SF8X)K?Gx?A23n)>&6mq~*-n*{oxkYPlXiI)Xk?L$ZMOw#q~rXEl% zjC-WNf|7r%zkAePVCGU;ql*3cF9Q>;z(Q`zdIcY7ynHnJQb?Z4tF@j7q({%-RlZx3oydrFoVrJe7ho6}8 zfGpO^r}VlNC1vh^n9xdgrO430K6%kPNEWOv;q=AIQmgbfYFk;9Gh18B{BL>oXNb ze=cgr;zD^vz|5gI(NZG8#>f&wZWf`HCsj07QI%->rbNcUdz8r54M0q&B=~q<%*Wqc zN5k@w)A&-F>{WxR2>$h&Ec_+q!JLGh>g)%rV87RiY5nl=X$H^6o9F2RpX-}rR$S_4 zTy}|8FF64?%0NtJj15l6O&V6yq|GPq%E+P=`%F9V%kxJi|3%n%7y6xD?i?*zJjfIR9(X~WnIz-^{yQSma2Anpmg2XO z4&fx?#3eSfD*G(e&1oc5S;QBO1n~uF_@7l`)Lxo+`m5zquM}ex_KJ zDiL4w#rYqJNG#X2dlx8Vi{-o?4&u5EboL+ZjVd;f&7dlj&#s&0JztB!71TCB6IFmi zkh~$~wZ!z&LCsDEuXN>C0Bo_Ks#i2hNa z$eFjUD6~ouz4%>~*>|e_fi+p0V!$yuk`^zL=o*V8aq`nqIPHJxgf-8P z**eH}`k~Ve0}^tU{;vbJX8iv$1~^pBO#ohN+Cn-swdPv>ZN~XO4m3b@+K1|N{T?%y z*_!{9ng0!&W6ElA3;H@MCTDYVBfGGaRs`ZD)!@QIXz!!sjyxQE^-Ame6LtR88!VM{ z*&{Zkqer9H8m<->c)O-p$SfFdy)ccz;~Be2x2=5^gMC;YF@NA_fOwrv6Q(w#s&ro; zsd4cLTbbD8(Xos^$c@wq3Kmbk3b=Ne8Y$za%>Qj{s^}?uOlfI;0ZQC`sj``_v&#Y! zETeccmV)JNC;d*Ekd?TGKi0c*s8@j}{SIe4hDMXyNssyq=nB_HQp4B2!K*^6NRygy zp$yj(OiCTW~WuW;2$c@$G1b)AD$;~Y>OCF&GIIFI;YuSz?z4k z?0uibW6#mgIIe)DIl%TM2^KP}}BU>8RGS@?8`ZX`VbSbKS z{~-FgmIMTN8!23X&dIU+n0eEoi*w2(a{Su`7`FcNy!4UYwkf+?#ZX*{rMw(!7*_7J ztf*;s{xN67xMKWzu!`q?m%l_V5RHXi z>RnprBAmo|da#Uvqnzn%;kJjpx<^DOQgl1YZ$rIk#VJQOsLLvwWL?Lkx5v?C-Nj@? z4#N3j*qM{#8T_z2hdc1=my(yY@{_lxN9oMdHtI#Vz}JzXn78*}b}s1&VJu>Jy!u5P zw1$$(zObkG+db~;y?t9d!{EQ-#pnV`iTtD&S@}Kf^PDTZE}TMM6jWstmih9$%jkUM z$DEIHe`d2#jSC2tpIKiOI@>wQD|yb|Pu;~MHad;Sx4GiXb^ob)c3vmV57*NZEDSbm(l+@IF>QxBEH3mZsBrnKKc`yD+y$7 z=ha>*SdCRiJImnPvd;A45T!uzsm6x|%w==EidZ z&clPQT!l8MOg;`}k73=A4WHMGsVVIczK1RUqMIY777*0uBhCvf8h`>SIa7rB!wwk4q`=YuJtB<+FT@ zTPX0yr9022z8^lC7q3(H7+~G-EO7M$+^ncu`X#v;{*b?zeSX-hX!%!WpFCTYrPZgr z1$&%*2?3xSGoz?WeQR}JS+QSl(BiS<4#XRuJnQ+g>r*O;)V9R#B^e0=2tY!fzEIZf zoa$8HpK=yv|2o{9hQD69;6kYA=iLjRqnzSdWZrc)>k(Sb_@Foac5bU}2AZ|ZVBp~a zrQ-1~U>j>f+)4YiaEk7J5!CUN@o8cMi;}zhcN32rKji*m)j7usLv8mvLxY!~t1Dbn z*KNf_)t5{ywYOpkTK6#mnmR!U!vapS?$#gZ=;(YdxnKrH=rLZ z)&q*6YFhT&tu>G1OUm#be(~2_gu?x4X)Z~S@aQKwYU`|Xrf4q6kCn-29k01ZB^k7s z%u~pkae83qg|{oHQ&4%+TsEW2KVWHO$Xu|d^5o;XT>Y=HP1b`T1&P5P5!?+E^E7tX ztQ;t)Dt`=5MmlBPFG6SBu;UzPmkEsp0O`J2S*d~<%1(nrKV@A$S`~n6N~s792&6P5 zQPOnCeVsfDjw~*IhR8Fsxaw#^^RQD1cE#=`_3b0|FwA$}z_G!+$|}2`Tbr0^-|+_; zm-&0T9qZdDMrb$%-E_UJ*z$cc9gmQIsHB%V86ys)bu!z&-f#GS%UJv0M3HPZ|K>RTTN;@yb}L|^ z!`!~`vx$zL5ua<4-ff%?jM0bL$Ida&M>&#NVMat%e!Rv8TE?mt)T$bo7;meh9@i<` z=aQja_DR|QC+>Z+6Q&!tRG43YL*zKUNOF8CWAu9+RmWQWw)53&mD@$0RgcOtLU$GG zEwMGr0vwi;qdo2JL}f&0B$O(7*9@D=RM{z`%pOoyD~r&ofTebwP0rXCGP+;(m92lx z-*Xq3g6WviD*LF3-p&6usM+`0!s6sm-KM2WTOOoS=~IvnO5Rmk5z5Sn_}G8MuAUR9 zjrojk$S~t>Qb9XYFo6Rv_!U7!h2CL~>7*W8Q^6NT`6(6MQ!;?ksdoRQW@y|XVj(pK z`mB*OvyP-+MT-~;N&35JXuOMR5dq$V=~C=pH=e&&BrjQriI0Cl^SI=l{gbzOEz}7h zR{(HwBPS|D@A0tlijm<~R$zgWZjgrSSWz8wr_8eU)LD6M436)oBaZn8&q;y6pWRDxNjV&n4D@J@ufGw~{g&L1gu(%k%qE;~cE0B3|KepQZ zS}ci>cKT4|?wzyu02fs!wx)+$d45eXH zeW3b*n0YEUEMLkza5u7IdqN`H8RN-4qKg5W-DFci(7D}5ls z+HI~*UKwGYKdpr?E6=1x=d)I}`9GeJHTCmzu~8ICt)|@&%IuLaBTR04>f%0`(rBqx zt8u6SHH4#HXDDT@4Bo!dkoy{^WxlmumL214bHO3MZZfVvr$iBRoi0NWq+VqGGJL)A zXxPkr(59_t?VS^Lt+ngfGOa;a^xc3iW4q2ah?D2ORBVoB}EzWplq>~VovYV5c3ABY|UWiefFNZ6> zA}ay9bA6Td5tC6A&5z^(J^N6dI$-=uUQ{W1v$zmPSsb5;R*JS?rN$>3@_2==VC%z^ z+NN-M2+WS}$1cWH@W4%qq1JS!6*>@IBM)4?!~T&6O+^boZ9WMq%ePJ$IeZ|Ly3der z(w^Ek480v~&lcH;JR^$=KWCo0bzC}xirra;*yh-ZisqNO(q`89 ztY4Mm;P9b})?)%uC;VK~v2GtRHSYs@!vRWORo{64{gR)CGgORG*A*u{1z?-Nv~$2K z_hE}M4}O)@n_u$Cfxm#C52)wt$8OCJ10);a*Nd>OhHkntJ9ktmQ_4-$qt~;R#phdt za_;YGH1eod@7}QAUfF2Ww9EEeS7~kZ3Fe^zj`vwY zbMnvxB>`mih+?XcTar(v%E3wz?fnL>yexSO{3)xMMz@#oIMqxM@y9y{=75!=Q^xUgL%C!wWNukx$Oxqp8En)WNBICyLQ)84Kqo3Pp+hREBJX!^Q z5`2DXMFQapIn?y^#oQCCs>Co8+lk0qx8x`m>HB82)dj(pFWB-4V{IWKXjuaagu-_o zGHH&RDkEY;Mbel_zIiqZ77O&fyE$go(d&&m))*P(5TH9kv*65aY>%GDamqlpu7Rhn>M^d`3B<1?8p1#V{d+r+%EA zjJC3N=*+rg0j2AJ19V7YUQJOoShKOh|2a{8prN_v7)^XOk+1|>Jk4-@`sM8J1l#v!!zujQhbSx9WW@B*( z3ApOftDbD+qhA`Wl5t6sv{F@XAuq&tqqhDM#Ke@iD@wn|C2pi9QL62nm!m1x6T&y1 zaFAGQZtHb&AEVq0xoxStxxEAvcV+^HiDAwfx%|2wskHJf*QGpxE|Lu+kULmL7@&;P zmZ!(LPtT7c18@!wwl(Td}@dQq>&hvtAyThM=*{9(MAGkVM=l|Y&P6zQNUrD`>51@#s#SiOiNXSj}#EV@LozVZ#Lg1R&_yiCNG z5~p({s$(4qi}wbxtups7@vJ!eVK<}cTa08fShGvYbo!w?wP*x zp{A5bF;&V007r`cZx!r+iCh2k4*t_D2DSFGAipdSLAO2D$0fof0?3?WcRJ@P%FmeP6 z?%z~^h+cY?UB5Cp)h)Bd7vvDs<>yctR%3}qI{_w z$Vs6(tx1-JAwAfbym`0Dpeb@g&zq&iTo;=~wE+^XZCC$w`05Q~m~2jC@O)fF=F~%l zci(;3Gt>!-;~jEKy#9n}69bS-p4FReCayc73Tk@eR@h7B-l>cOa8`>It6aT?#-IIq z>D+B(Aqph|6(a&vXiM7klw<$#&(~acf5hzdC1TeCPqI!;IP;(cAV$h|kaRH8>a{Oz z-#Aj}`q_ZR#uC0q)yLWuDI>f}h@=E#OK5VEXL)bIN|CfD*!(JcFrrD`9o zAe@jOvMU+g9DTg5_0?t3nQ7Bkz;&;>JXFo(YV?<@Kh8J-LC+$&(tp)+|4$L;--z?v zcdEg&4+Z~j$tnG#J7<^%UD66|s%Hc_Lfl+mH;yR}!K5-*Z5F~#tilIArHIWsLrhGJ zjmInn3QL@t(1}U$;d|)fak*O@?G6gpcNB(F+U5HzM%-q)lIOB;&1DW}!G5i|(v+v> zIP~y3I)&apRWYHKA z+eV)La=nzKF*}{nz}=NaOi0iB^k}rF*BRNjberH&8tIK?Z?R2PWNH{ri<6Q2ul1tP z@iX2I$28RH&^(j=`FeTH1@w6>If0Hk@<(AAVJHeDoOX?n%cdPJpW)WwB>4zuXG8yB z+r+rP`w7p!7Dxm5%}yIX{b+nb9-Xvt<4jLR$gt{>Q(wdk2mpw6@qQXja&@wqWR*yi z#1Q&Q5y^UPF}fmTtS!0i4_VxftwvO?w8r-wQZ{_T2!eh}S)u64gMxAylaDhSSDv(> z!ZXNx-hJ%+$@Jfj4)DhK* zJqn-QUZlLLN0peq;EmEVh0rX>9%>HlB3yu$vmrLB$|hiO~Wk{9Z5N(MdCgarPMARyCddo{IQn#!iqw>aI7xrZ3W;(~$F>LJGp( zw!Hq*z157dao$LSSWk`<F=w?O3p|$?7;X%%Rt@aoF+w*gqyF2V|LjuqxNh8?+%KcK-IYdu6 zIo^fo`609p_ev_^Zxkm|vS9HUhtnr&7@cVA3`qxjob*xHrk0LlDHc?$vMzZ!lOYqH zM=P%9armz2Jdrto*S2TDyfLj6s^pqGxC!Dk$^NElFT-#;EEjWHRRPVKHGY8Ava)XL zM5^1UG$h2>UTaPUl-*Xt*GO!l6~o{m6c60fTo)nFP)@&x&W&!H%}M2$*bZ z(n<(;@Uf)c>+}h*AG(T6;b+d>eG6FunqgPWRG&6xy#FZB4WVMaWt)BPn}Bvb!c{hl z@9?>ORtyy0o$}`Ht*Z>@4=S+{u^P!d;!eW}&bdq(;`rICcfN-{Ml~ zpQYOSwG7zXXYyvj^+Ny9$I_TDR%rKuehwE#UtVGrWkl=b6kvt?F9o3Ee<}dscau$_ z+rLLbeMbUp{3$3LODM1-WB2}j0{q{8rTvGz&#D5{8GFN_b0|{Cz%ayeYwQ|x?HjVa zU(TT>T>8$LXIv30!dV)+NGu>q*7=X=&p(a* zfB7P`USi36fQ_FvkN(0T#=}!ycnh^P{4;Kl9ZIhHuZYU@X+tXJu_^^e#(zX}kB)bK z3{2r^7XL>CQ28mN=yRz|$p`sor1$@kMVRfnrw1apUSLnpLrIFiZ37Jcp2Vm98+e=d zx7m!gS_oE2s^U@N2k^fI;a3+h6ueF5D+P10Y@6#_$N2Rxok{{y=`q=2#RGU7B*z3= z7R5Yfhe+hol2ZsaNdozqjvQNM|5twFu(l|y+7Pg1-0ui1GGYmk5&h&#ACX%5)O zo1E0&wV~y`NaxCg`m%>SVNB`z#^{Ub;S=E$2K50vRH7ZR zGpSA0F9k19vx*Tw&-4eJzQ~Ozs*v#ovHryDaYCbuHKp;&A&UnR+PG$-;}KG;L!+j_ zT@RR+`C^_Ozgx|Oo85%RuUoHZkuiLufT_s#HGjA)0_cd)XND+Hc}R#qgmw@hi^t$n zl#;YK=cP$<-TO`K?JI{BS)`7-ddKim8CujZOw$@#1~zzl73^WeZEr~qL)WzO;(dRG;r4-+ zL^AsiHqv;^4RrY1$?)jXaEdD)j80Q(0FudVoA zIofyym%6fWs;Gu#$hVyKf8Bj9c`=F^A`w?WBx04xw5n11RHJ*S&tC*#jjm$uOqR2>l;~<(RXpy$8bH#`L@gr3KJRbi?q* z5LXK2y24I8ZgfK3`I<>Ge#dBpt6Wu8%JRPJ6ZnH|cK}}3bzKd9`+&@%jJN;ksbXJQ zPm+p9yA-m%;Op%cW}tY&J*@fJ)=WaTX911^7Bn4k#B#_F4I*+aDiBIpGv+sVB8t(u z`}(4Q0OG;=^tXU(YXQTFG-D7yg3!dw*tkbSk2P6DR8dHejZ|p|n0*-nj=L(ph(nFVCS`v{}Nw8cK;8^ ztbAQ~6@v^LH8Yn57DN}z49wrU3?4!aYQrDVdV$FJ7S{`PC z##(C)q*RSES;}s?SU4GgYzgg@!!8A@q4gaprgfJ9y-?9PIbD4M_N~oC>2quN2a>C^ zF-fGA3zGrY`S2mg!F^c_j;bqR3CflXNQ#6(N4ndYz*`@Sg}5bH^k_6wGt4ACDJc8t zXk+fRbjb;GNgXcj?^Z;>klN21Q=C+{`h!;q?vt8YM=!nL9ka|YKhAIcv6|sBlkIGd zO*22yIBdSSSG^@bauaPU*my`(E+rsu(=Z>)jk@72>f|=(xYy?2Qg>WV~Kw;G&sL7eYe#A~fhyzp^q~CO(pT zdz`nyu?|7(uQ67k3vJq?oe1Ad2Ss|U9Us<07rYT2m!gw%T2^0F%2tTu!(c6*67{5# zmO4yZ$y37v;_8$OfF3-G)n|SG{jDX`WhCqzsC-UWptjR_WY#w)b!Zh7y#jL0D=952 z^)u?o?pk<-^PTmW`2fUI0;3yQNR7*XFFtw)y*m(rNM+`c;2M6obHI4i>-*z4^U9yo zS;Pju-R-#|@9_&y&f4DVz1?-F8(d9>cf7|U85XOJ?{hRP13Aw98li{&&jzz4m>k}+ zuw9e9`%EN2)R4=-he=_`v=sCd3bvi4s3WfWA}?prXMwajsW+*wI`2590;1$}bYkfV zL+(e$Lq{ItuYKy8@pkxK6&=eykx}t-`wG z7`@K5Zg3JaQDcg)6l>Fo{0Qs(hDU=k?$eXU+H6HLaFv2lM2Kk{+f7)DHRZCWn7Njg z5WY44HYj-0Pxz6W(zuRKl31r9h-105$pZVP3Xz0}4#}w$xF^dXm4av^qzM<>XtKGz z3pS-+x)D0t3;daYNLGTm-F}3OCaL$}<3s2|+xdJ`qxiheVt0$nsw63TSW9#rW-6v| zk%X|&54nO(&p?0S%*}oJ9!FxhNBFjGV*}mhsS&1}_W|v<>9$t?lN(XKVsf4Obf5Ee zQgdLFKID}Dd?9}bvp7!9d5G6;-MgmQ?Wutmc z|ECfFnm+?x&|KI9P!-Z#4^)mdb$z+_IYU54b|1%GEPe;WAC?8|_y7Avtf1!^A12|_ z76Ic06+!oH{=!+1eb%+%>qikIA2vxe_4!#Rv7>;4b5ZEOi%pcA14Hg<8K`P!qJgMA1H*#rFdB3i6sK;C3b!2;2Gv_wf z!o03w@isUk7l;+eYw?r`Y!N5eD(tnztkdi<9-InS+Pi!-T#yYQ71<-ej0;^#tYrtA zqAtx#_wC#pn~RgI5`v5U>SJV;zKePvgV;QACTz&dta6ed%&-{jTBD5!F&0}#njAEk zF-V3%l||s=W5D~4Z5?zHGY$g}wBZ-thR7yPl(0fAICoKgW%SoWX_wQShM{)#bu_)(zoH8#cp{7D3>rbaY z+Sq9In138wMzqXHy%Cab-P3>k_(&p;AqZHzEj)A>@DdalJ*5`Vx_EFpONL%<)(;Mq z-*SpQbY-Q-z?nDu#!p%NYVNCMc82^O!IU&y4v@Xv&kEY)zkAEmXmqw?E~X z4I6MJi_L-gU|5@vn#W^^&-JQPBY}3-ZYQ$5E_>094_6w>5KBa|S4xxH!X1O`C1)>l zlAj3w*gj1zk=eNXBfq8hRu3pX=hjlIdibUf!Y#kC5vOeL=pwV?i`#MNNwFnhRyerp zPIK9~Qmj*>7uYnXt@1%e35;u{QcJ|CApOEL&gQP_vubxQZBVX6A$3NuBOszF23gRg zy#r zZl<{FmboT2a_&&RV%oyoT*tR|giEBQ+rI?HzeXTa7+1GBJ_(VGj;zI3Q`-ey2GF~1 zq3&DySG34fmmV%h!!x^Q>TvE}ZnUE*Tfqp5f{6heU0_Oe@|5i6(m|o1y_>T`HHe3Y zk-m#iuQtfJ!<>RTw!o=x|Chop*+XJx$@Da^mV&$;aMS@5$V7rcF0verQage<~_!J*&CX z4FueL48FAsdXRe5nv~KK-`@(NW^4^^HVRLb|idMhRqKIE(#je>}N}oL1?&Bv7 zCO@&tv?Kzt3WkHNc5Yg?Pu8wKE=%_1KGR!meuTMJ-ayS)6Ut%tESU47%ZuN~bP7lH z-j`-&xUPXK@}f-7)S?%R{E@|5j4Kd7k2b}!*3wlyT?6Eq&L_$3?b4JD%mqv}U$DK2c78Oi=&sdyE{y9l{&B&%70XbK&d z%EGK^8%v2SUIsU2%;p5cAX)z-e_x3o#gum2xo>y$4CFgY+lk6YQQ8e6f~9f33Z=DEbx)eEx@_i>@q4J&4ar&UZ|x?Jdh@V%&eSh|Opr7C z828iTDn-kn*U-R=rO4Icnel`7xH>E@?W=Y%yPX=FIXU2sM**h({Y<~Eh=u9d1P`~B7OO+@fK6r%%?gVu#(rJl+u;d@2Xn%eJ1tlTouqckzi@(@eelP1qP`Z-(Rke}-XRFX>B7PO1mLs`_Xb{= zekR-}_L$~%Z)d^1jfenx$SYmXfAJK=O&jLNRGo zEwtqdZ7us`v+QGZFBqlCs!1tH@+L1ghc3K86+E+;g?+SsJ?RT^_JU0f(AWt0!{9+5 z(GnY?+8l5t&ih*QQvSr@L##Y~M(vFY)3(67g2w3b+_IDzlZ-Lkvn&nlQC?@;sLOw86S~MqcJ~}Wx#^>h4oB(;qAcMc*+3!U*==)(iaRM zWi=%Yv7dy-Q?}+?3!i&EVP{QLbvBpC{dT{-in_`xmt%XEFrJ}LA-z^=o7$*TOV`Xy zFue+V-XPgOdJk5@b+XwZL&3qDh5BzsnEzhOVv9DuN6{WR8J*6^A16cgcGw`Tgu`n| z>w7vQTWYfOanTQL-zUG*KJgh9Jox_)|8F@hBL6t42^9bL&FlWIh5ws53)aw*k3HIQ zy?|()^X|Z2>*+?J?OUc6sRbizK5UDeo2#~e5Aq1?Eq!{EHx=4h4=hf83#R=)fQyHpQ=J61xN58Z=!jq%enRI3bJvm@O%5^!h*T=c~ z$3EA0nx({hGi5VLJzz=u=UUa=CB)3^iR-|Fg3{7xI!RhZjxJ1Xwi{le1}<)UQBsMD zhKbm#=v)wSzZK&b2+6h=%k@nePve3z)ov~n$(wodD0mC3V!NTmMC16=DFU{_!Y!m* zuQ}p=iB#{mV!j!vaQ~Jd!&H;FB^v+@7ue0JMw?6n5{C%X6?w=*bM2dyElLZ^kPZe| zP!p{-K>dK;id9}csO->#?x9OQJcvJ9Lo#G>)gB0z#cW8Nu00PN{;lH|;XfryW~OEV z5~R@N0(GJ&?@BrnQA`xY@3=t_dFU} z9#B_1W5AgUkQ5i!iS|j}l4$C1ID)wGt;>}jTH}(ju*Y>*-DJNK;JRs*b$!5B%I^g3 zD?>d~`ZD?%b-@Dr1>%0S@(X_w{e9HVG3V0C+h2m$!nVsk#e&4ZJfc^x$o7n*y=ufdM@ia$j!hcRcy*n1Y$m5F%za9PL|E<;x1cq|fYFvJ+QVs#gQPDD z)@^X5MGe0dJJ@?>G&|VuY?4J4>nV%Db$1Zp{uyWe{O6C7veG`sVcASy&EM8>?hs|(tMeOi8yP&I&Pr`cTpyt-C;^ZRZ4hNk|Xp6|#DWv48Ln_B7D4DS|m1bx0t zV_w&Q$&^?Hc|3PxQLCgRa~-g^BP7{nT$A1dUUj!`nF1@!2q~@AI6-@H@z{niZdD?f z)2GZYzeI~nNQlkjjGrIIjx6;sDSu+W;{j1Hc|N#0uRkw}YVy_O@mO2%&3Rzv&@`{c zB{rgEIP_$IuR5V?C>NnF{R=x2sb|)ho1)!MpJT|Z>IHIJDPGpkQy<ys320i2I9 zfgIrldfwe^2s#}Gr-rH>I+6$#gUg_D4Eg+wo+rv^#!Rtvs*m$AXQq|(8*kF_+ivAA z|B(;luWhP`mL+$i5(?uRwX+UEOS}nTmyF@77<#7Es4v!yKdZj1E;O#cw9sB65+T>! zBeX|)2OJvX=dQUn*kB5SH!EUo1)QPm)Cq2&MM?Ov6(lIIUqh|8!)U60-J_~$Kwh_e z4=|;}mJ}n_1vh365K=LtYMX}j_3Rt6WljaJVtv{i&pn1rVu8+L+TQu`=sv;x0B z|FWe5UchbR6`njxU{L|(gFop#A08~@FLeL4MU43VE^m?rPL3md^jYtU_t?KJN{HJ* z%)FcUr*%=(4B*r|;z>I}n^Lz7ClF}E^Ws!Ok#)hl8Ug&egsZ1gPaH(9@2#}&Q~$NY z2cQNjJgztY0($YoQgTk+68)J$w#$ z^d1W_Uzw!=;GZN^1ru*GfQd8rV#2o`Ol(BjET7(Ye&*u(e(W;ywSRt{TzugDclb>E zu1n0~ig5n{v0i<#B(6UP-+s~A>BO7*yXBAyeX)v}oxuGOUi~VVaS4E%bJtSw*=I{f zFI3gZh>6#^G}>|##)nr$0>T|%D8U6@cxx&Q@*6IC&X{WHk3e23BxmI?#KsVi{h}#% zDUaeSlbm_zee&dm<>aI2AV-^`&nraH2)-8G<8;Z>6y99=0r^8u+-wZ(UpO$WC1sOd z$;8b)lbLIO-DP$)&d1bI6Fm*^q!W6c@l}V%tYsW%8sw%Bu7F)(uC|5NFlF8Qh?B;Z zuY?_L;>r zZ=>NV0~nM7HC z4KrMHOD=eM7)+5Ae`gizFY(FMK*3mMzf8rxbxiPF!?QxXtD7r+mwXSEjSK5IGQ(Do zi#>G8_Nd2YRf}Vk6>%w!r^WimuR71O*6A{19&LZYaeF5#Pdi2_Bh%jFm7aQ z@d*Q&@4CV14Y9%~ljT#xnN@!NbxUs#duuMo0;z)}=AFA2-h@o<(r0CP|0>FydKaV7 zXev`}w&b*`N8~yZoEZ6RK&KB=z^7LO#&o2V_*O<*l%)0DdS1lTG? zbhCr=)XLeHjh7xMa_cs=4m1h2>Zhq@3(xlx%;j`N`?0yGD=saBB-_gJzOm*gY?}D7ku1nvzm!T68<_mDenPWrkaP zS^-@9u4#rK+Bbe&aGFf1-zPk*waN1dqH&!@P`DbuK^!ck_d4rtd3yeUy=q!okq7yc zKf$e!g~`KI`XLb}Jat4+I2wfao|b?`xw~rds9$XMaZh|>#VJh&UES4{$!trcj&402 zxk8pzIsg9@q7nO9$y=c<#%_a^s_CAVK=1@!Swb$Ga;AS9KbN@)+ z*j}H7fk8k>vbdB?eY>>P!Kz zGblLS=EqNYWxCe3p-}wOi{1dMyR0(MafZ9q4?{OHI}Zzzt85#$+&00_0IqJlUkd@X;3_uUf%_x%FRGR?dYqjhw0oe={|7l zx?M$0)MY#pvK!X*<))>GYSuY#z~uclD`~B%&Fx*m{L=o4T{NK-QMbF3GmAJ5Gr(nV zrKG`~Ym9>SJN1jtdOO2I%k*vnr(z}&(e|CA`#sDXTOrpda&fWj`$0EVBZR5rv;j2B zpSTwIM`-$|g!+jb-7I;9@Mzmn;Y~)cU${+X7YmEkLBZ`tbX7}%zGK0g{PZW^&FWVy z`-}|hX8InvP_#bT$%xLmk#jbv^O*agumRQ9J}f)EIW=pP*@ROjXrcr*Xp0SY-)MjRh|4^T99yD{?!rTE6KeNlUz5wj7Eb*1jId+2XEOZ&w@sD@;k z;14)1kfmq2h*_GmDrHBP8^&Et^>`$G_5I?>x_rRG$=sbQi} z123&lQ{$>v)YN&=^<^?-^jpgH_S-+lLLm3qX{$11lYyC;g@S6*0C^;1kIEz66f%~R zzi>#>u4VeqG(hpqnw1USKeKw0<|i16MLV5L6;5P7bi3F~-d>$`jhlYkXodSbb%s)E zNs6}1iZgz7em3(-j$yrItEOwBDDWNMxz7 zpDH@_4*lRuMp6+1&U!)$=7!UPUV|SbmVrMPJXnPMqJ|B~EYk+-+C$9fOkzR##T6xv za*}}AwC@xtz8KX7;2*AZG$HAj0z(+sUMpdQc!WoAU!+J{M zN}~ih_QC|}$KG-ms}YsZU5#$CQn;O)?Na2HgK<5MPD^qeZZ2_j660nzWxyhh#jyd^ zT(3iTHIhttj_uyEK9OfA=P?n$2vR1Lwl{th1+m_+FZL4^2fl#?FHde~H-lKg0qZqt zlNnLbPRNoeQ}%R9*h5z4yYQY^=Dn9N90b_cUo1&ztRF1qfHB(3dVXKlK?U z1d}p*-?+EN_Q0%k)PFvfE{O0X@u@-<7gc}{`4=w?sHcclZ))RFo2R5B`pVP!6_qvZ|vRE$>gXe_fNj^;?5 z5Q~N>v#EK&*&3HeN&yxa8kgo?Ilt`Qj{fdKI#a_iE`hPH+0L;botj>$$h{kmbF~D> zf!-V5U$T}|S9ca3O+7uA=^+x_5Wxw_v^nF8BNnp9 zc^X(879qW^4<*1|`oz)2|&fwV=zVrd1sEU5PLkhieG) zqlz(lo98nTUuk8s_pA+4L*Wgq(l3Grj3m2d5JS$tjV>Bj96!&-f3Q)DI2Oem274@6qoER zbjlt=L5G}S%5a!bD*MD-;~Qsse2eW8kz%+HmvUW8l_0n)xFM$}C`qh^MO@zS*$0&1 zl+>CU7utXZy=?}NW1pQ~bIbydL}$a>@)QW6`()Ixf{J9X=8JeUyOiQ-j(e z7;;Pcs(aC+^Iht&`D#U1C@Jfm0tkQws-tvGyNWUCW(-P$?i zhMMh&hOLYppOD}*WuE8{eOnc_;)nG)Q>>OB!#|kTql~R`ILrJ{fKd_u66Pzp>L&6Z z&pyAb0#7bzX)hky49pGTOK_x=jb7?jyNuM93!IW=Z)_tCm)x4)C~q-E4G-8_K3{Sb z?Cwa)>}OP$=DbrqVBo2yzW&B1ucEZHJjA=VXWqIoKBYbMhN^j|Q$gu~XKA}0c`r4* z#d3scGyPn9K!fvvTjt+iO%6)z_%uymMsdT=umu)BLg5kazwVAkCU2^ZdoyOhs0p$%@{C-syH^`sPHTza8kb}KTwN3TpbeGm{ zn~8UDlkH+i(K)WbA^$FfMK#?tzOdZ=vND*TenNF{S`_n$sud|xh2Q%(7mql~EA1^u zRcU!{K|%JAiKi4cBS#lDr06H%bje*ke8{Ts*~rWi6A`FVWqMjv;+78r#VyS);2t@T=UR3tbOgiL(gES?9zr~a$3A$}`Ob;3Z{&?nj2oc{ z`f9<}0TSv_dj>fxMk1F*l6&}CN$WCm*;&-tqMR?ZDY9Q$y{~@=LThjN0 zw~+n=GgFre1~8bb99drMP^-Cz!+3)CiX3N^AKi~lIA+YW2kk?uXDvzWq@)+;6T+_X ztMAEl@i2X|yG?tJ9Um&%85s%5ZrZnxv^l|!j{)&+s3Ok9u-WVewSKV-*}|f#`DO={*_ zn*IzRp#yGm%Q>rnPqay;ibR_F_nm?hgC59ei`lg5tJH?EL2-t~`IaR%9Gwo%$h|8g zlSN^ZTA3tKsv4cg0`xZo&PJqMRPn5l&9^)~6J6i7w|0due<@wB?3W#ICe%bH&z`2A zOFy5*WDvA<#n_(%4^g}I^D0X}wsNTqr?~92V^`qtLoylv9#(~)5aXd&l~8y&D4v9R zPd-vYe&aer5{1Eg6#y9@c|HK5qj(?@KRf*7h3kr?kV=a&gPl92*fD;hy^0dvyG_tU z?C{srSO*A0a=k(ml?h(u6qO~jP+YYeZov99lYLu<(kV-IsLfe7?P$*IF-D8oGkD-q zX|An_Niw&vm)EY&hP%*1ha(YwyDnhm^eQ-W^pHJk)~DzuKuGnvZY%wLXZ@8t!emJt9|nJx8wR#19)Wp{kiz3C7lms=q#7w)oB7!kb# zLW4l8>QHN+_VQZx7PKw{lkV!zkkv#wB+!Gcu-xc~y^{s+AkVrtyNvFik0|?dzggf5 zfHL^rV;dXMXVkJ2#2sXxqxb zzi_nvq;AZ5IE)pB@^YpfSc}oG8{$2>plJbIm*>|vmZe?9afkF|k;`Ijh&7vf6j|tc zUNuYVWBRD^#UM9?y)sX$i~vkg|BMEJy~0xjdl{y-5;$>6`SyE z2XW`^U@vQy?Oq{`zRpXlcgWGQKxk*qX`rYUkHVZ_NF5>luD|#-CVw$lir8GB%GAVg zc%jJ_dmmY6zv)}KJ>4pn(w;KD71Mvoq_e|;6kqHD%H~v%u7sE=gU=^}MdjeFD>Y4~ zlSDa&izD3sqo0r3h(L!mw2EHm#?h@R?(K0E1fKW5alE;v$HIJ>zq|wtXw|lS{Yubn zrK|_n(7!jZ`q`oPNmWyDWL}D;T|%;=vn=nMnjUp;rsR|$h${cLbhOb3)fy9f3a#=m zOmrTd;9rZwB7br*n*yG5IAyDbbj-f*iFvjhpv~@*)=R`5bvrKgI1Cp#%uuzZGb413 zF_0)quG5%^efAym>Q$3bKZeD$>BvE9poiIbPWuM8YI=q~(`TJQnET|Yh4gfZCf$I- zrra@FtAs4XG&-(CMV&)Ph!eRJ!*W--yJa1ZYIufuMlv-(UEfF>$2w1Lov|&0U--6! zX*VP_x?0x}7cuAnsLk4Td-7VyWn8D}LWz_swf1~msk>bc0>-!$FXJp|UT~@~GCy!b zJL?k>5(1ybDqp`~t4e7=9~3(p34@CrNZfL5rl<7@19{HZ%Q2H?W6IX}wi1!f;alp! z_|2{z_oh#;n)^Y$lLK@vE+HXHg-%H9Q*5mVmj&Z_TA|$vEr>3goil>#uCmAwvV|$* zxhvz5Yd}dWJod`haW~&TyIm7-y8j&UTg20QGr4Z{=e*NjI6eT>Rmk4OMtP`%=cH76 zFEHD_uh8>@6B(=cxlDtU?*U@K6>K@J-fy#aFXwE-`ct1Y zbqr`c@7P|3kb&)n?Tg%+gZE7T4DBnJru{oXSCS;4Ov^Xc;EpAu5&y~zlv@((6rSJo zn?ipH_2fT20oOu<&92*{F{m!PsPF1SkISmX+}NZ|lt;A2yEaN|;QS-1DGZAwq*-T; z>K)Y=A6GXXO#5__J$zKP#dtyn^PG^^r+8cKVs#zKgiEikKA?%avYtK^{NXEx{2q@S z$)kwdSXt@}SA^>W-pE(*tWyzE1np;)*lw^E10jyz87r~f3yx+T?bjl4)!^p?ql1X0 z7xVU-;I5&5rf*&2-gGSF0ghW0AHT8=%=GYpJS;;D#iC}Ufj(X9Wh+RG$MC%LFtSr) zrXG?0&Aw2iB&x2BjI9li1Pjs(pp>Pg6C(F&JuyFuQuAzln6-F~HIkMnYqbe|9}#e! zo*w=A_->oCNHFfaRfdqgfe@9j{Cw-)W7wL747rVKbM<}xj|K#dtr3j8y{Kan|18`% z@ICgzYO&N>nen3-v(TyvnyOOK!R7id*O>@h9Y(7$wjdyg&A!Dq`M-;T|1mP|Zurm3 zN#N3exHsNkB0?die8H9&zwN}W13-~H^+0Q6dCW2Iz82}=gnpK?WV;F&PS<-_f^*kk zqoYKId3=D?#+*VefrzaGj$l%G?!=JhXaZ4%QxFIoM$dzn=%g=}UJ_Uo0c%Ru;WkYm z#k)p$s&t>tlzkoh-UN&oT#;a4t~c$hl&@C;p}r6uGO!1Himba(Qm#;bQhw><6lO#TbJW_HPsPc86KSNs9}hlw0bE`#9pgZ zbaaH+T7KKrlJ*Fj^ar($D|$HUnM02vCexoKKvu_gZGo7_d)FP{4ns=Eu8)z1aHp^s zp_)-)C$TGRNlFTjR8uJC&ha7Et{+VXgZc4ZkL{rIky7wl6b`N?h|`NkQr^rD<~;n; zfD0L52AEbF_3fmndY8w9LT|1JU%tu-64p$G+r_*m{pYm z&@$Cb*z2$px!{hu=W9eTBY=d-HmY0oo8fSix-i`9US!2(bCIax?JkYEriUe znjaq?4%;GA?#W)I=-lqDe#X|k3hb-DzL}n>9Wt_6hChs@zm7&Dln1~Kk+lOxQx>k( zbJ$Z@Qij!ZmxQV}NxD6H3m^||RsY(T_YaKbe~#e)&zacO*FU)dw$%$VO|rStI(XnA z!y%?+fF`4^vFr44WSch;PI5M7*@M*h0RG{vVP5{tmd+(dD6%}a=-ILp!wbttpE5S& zOyYoemrQD3*fBeA(ir%ps`|dU7$#-!aGLq| z>ng5|@Cbvg_9^lgu9c|Txn{UEY30E>t1KyM%R;q0ZYIf>UVmQ@lk}d>TQvG z4LEbmJvdt>jLf^cn}iTsT~E>1-^I@@gpR^x840ZSmxLsiFP=KT&l2_Zl?>R-{mo-u zSqV%z;h{E@($;a897RTrgW2twqNUwa7$5YgsQ+McC-AOt)pUl_4lfpgnFJ)|aSx=~ zHhzi|c1zQ~phNfhqRhgTF!}>P=#YK#q*#8|GzQQmdUME@$c*2@(iwjB1xD;HZYsV+ zqiaMrXlo`{U>|$g&Ws^wVi3YzEVBfv(#b*Sk;ka?%TRr5d5b#`ER*1Ts~XGzxk7q8*ojUPD5@}(C}r`p4=K=4PT|e!^~xm zMV!H}C8~Sb$|pSDIpijyiM!Ug@p(~o<3pm&iu6-^n_m-JOppvxRZO0X_hJUW0*!7O z#M`t7<{&PmzT@D)9QA%$7W9%6d#^SB;o%h`-DY?UYM!2*oE|f>VG%Z0Yxs-VCjorKMer=t(>& z!H%o+z&lFtf|Jz!f&bF@|3mH11aJM?EjjJ`BYTiLhOsWeU1(x6yXv3@sSQ0)QzX@s z7qx%k_kGk^L3%=@q-n9aw21|2L_;;MBN4B=TJ`k6MD=Qq{-~^=;uBh~Vcz%a5}7Xm zwAOaX$%zYTajHSWi3CoCU!}nKw%uWso=t>DZ1m@4l22+5M3cM z@Q0A&2rYWns~47i)Twg1MjfYTE?idwf8nqje8@f+ckLLpH%mH~q%sE|?z3L7xTjA7 zQV&SMsNL!d{ro*?=`Gbxe&A2^0Bnri4Q#3RLw(!UBiz2|Vj{y}5B_P=g1P_>gN)l4LQsZ~! z-=8sX&ps^m&f#9gDptMF3P0s4ZXD8M;cl78Pnhm}?wl<@{9wnNS4*5g>O;f~XSQ}wo{WU-DO0cYIHzKC z7bVlzh1XnNhlnjrk|h!*$T-#HZY^8}eDMX=l*= z$$RLunnH*6%|iIb-cFPLDX9+&R)MnpzG+HG?Tdy<^TWY{*yxdnF|yZ#z;9Ex&Yy|l zeEfRKVJ2e}EcTO-5ZRje;?g8d%m1UVa}Q@i|Ks?CR4$!G)DYR+ij`{&NrvJ4hB$JU zkULvLIBreHt+^i?Gppk+CYR=#dlo78F$|N-P)OLX5*_FCJg4)=@A>`reV*^X-{<@J zexC39^Lp`A0l#=$&Ohv1d9TXdZGG+hg$%|%hAEcILmApMrDGSJ%82gm7gV)*@b3hoLIGealERdM8A7{bXPb4$CFQ zy50ryVf*C^sP>Mtv}zvQC+Bvxi#XOoXUla(swWN}z%G+SX560EF_!~Y?t26OHD5&s>+`An@h;q z8#WQuS_aZhVJ1J{3TSrSNUJ~Ltd9%{$Xq!in z6IXV<2+brr`X%Jy#I!qEq8T+P23C`^UeTkGrAk~fR8P%GQjATHuLjWitNpG4!sq5^ z6D!kSP2ZGs6($Gh@XrM$pJB2lK9U%PpbiW|UQln^m!kj`JH}oxix{=QTXzdj3p0fZ zMZjmzKfZ;>#U7DCETQ%>^KGF`YLHZqFG*UE<||mtr=?(@KnEps=c@q)`2^di4wmm1 zjwKy(mTSh$xe6)IRTafGB6p}kZt0@WwpAT8xAd`P%!;P*J<=UrOqK4}wE@lOxdl2< zo?LCBPdNVn_yzmPT-Ko_584pBjVb6BA)n4pUZCBK?5(#}!o^YG7Q-2zBEiFlpv0<# zCm(b>3RoGdQ$zPh3vO+VaLU}#M7HJBe@`T6hQbY4;$nx+5iNT(WY~6AX{VO9VIv^2 z2_p)`kv<|uhQwDTYZ|CPmul^?2~+un3%`;od6%hK-h2QzR(u-ZXn&zs^Ib*IsA%Do zZ_&V07s0ENGgcxiA?&=$PQjak%s?W<6JC$EZffofTASlnJ*v}fJUJcH{V=?VldyGG z#hq#{+^V!XVo?_i&mYlbXI3R97W|LFqQmK;)W3*I$CAGzm4L?)l%K1u?oxoQbh(0t zOg7@&(0IMcYDXYxQRwTzv4<{FnvNk7Y5^s9Hie#+nrye)dx~1TiH>=c&&U0G2Nkhv zXRoAAIOJ)luDL}i8%1Vb77QHPKc5SBiDB)!5-J;|4x zm?`+pQr%363(=CrSqVDs#d%a1-mE^|IQH!MJDE(6EF2rmY>B+&-9UF)4H&gnJ2KTL zP&k4q7S9x##>DHd(NunilVczOgL3)AV(;0Eb7k4Kfj;w6JY^lz-Q8`+eJ40<6l+mPTHCZW zKV2|q6-s%G&(0~Xr@>Pgt%L5S@>}VoU4}q`B95sa^3GMhjE=?b43aTqDcXs$vI@;%~p=;@vx@p_xaS~P+ zmkHv;)ib2uC$?^@9n2~0J*PJeSoXjb8zZ879f1ML!c*Injq%UmP?U2ifDKR&`SkTZ z1&uH3k@9}>IDZpVG{i6KqXpU(bYu&0N9Qmyf)o;oX~)0T2&+lCzPLyg)0StRR9aCpM(D_1_vJCiNy}wIuN@P)jBgkm<6s={QT zdbqg=ufg~4ri^S%vRsHI_G>&J@ky>$Xs8Ny$ig#lFEgt3CSQV|@e{IIi|`zw&B545lrMf{|hURI^FH%KO-RFLfyB=YyF}hQ2Q9dkvD`0K@!u zOT;XK8y(qMPJrirpgeh1Es&%%N@uO37j+&OnwUh>-Cr8;I{Zs&e_c zcOwRk;jg`}GM7TNKtu;(pj4#BrBa~N?78unk?_jUy;PRthQdQVvdR|w(N}`@qu&O3 z4v#9I06iyXxN7_}nXSFlL%X4p;&6=-V{(}8PK^rFo3l5E2W5L}U4+H|i-Dw(v z6Wk>sgyDbhci;PFzHjcDS?|r8x8A$eYwfP8Q>W_G>Am;a^4onkf42g7q^_c-0>Hok z05I-9fV)M2A^-;q8wVQ;2L~Gm7Z(Q){}Dd^!-x13#3Y1|s3~Y@s41wZ=omPd=;+yi zR8-7-%xsT2xp}y0nfL|yxdb`5xViqi2?j1MEbnLe)=lD3u_?IKvx`HLYP+auL?t8@ z-GjP0@{S*i!Ge2M@9#=`|G2-le?0L18w2wJ7WRG96Vm$!0I)G|u`saz?E(za2P{JJ z#}=46E`hnV6Ik(Gt7PO9timD+CwC|SA?AGtQcP07Q^4;Z;ZYtBSeaQ_|0Cfp^MCYV z{b>Q0{>;k+b-K)RtX&p(FC2n%DDnIeem{B`TIz00!mD3ISSM$H7wO87%{ntt= zl1+u{vJTyxY-zTP!I8bC0-uzWDP5PYW3Tv-ZpmbmBYHq#>1;Br1e}CfnNu^e(k?7!S2W&QRVhXX@R@QoC;`kXEQCRGEeH)nVW+VzuS zP)dH+l4|fxGm&lHXd{!@`ip03&CfVnLtltHqG38!-3V$27#+Y72Ca|E=IWT``J|Z8 zF5C)~ha}FZ0gq?;^vAD+X@OYQi!DJ?uwC)^?HB&3{NlbTX_IqYZ`>~2C#PoyFJnfd zrG`TSmlVyARwPV59L=W!BPHDYqg9RFdhguaHQT=dT?xSMAA4Q}Ka}G4>g<~rh&jjda{-hGrWw&(Ti z5`8B3atL_+@za^42mP2Vl?c*@-XTX*LyS=Lrn;fByx2LS#ae=>8ntY$y1Y8ooj|o| z8y@)&9zhhJ;2w(nQV7x1yAHmhy=B4Ty64Ec8t7urWwGgM<)O-ZOHfJYiMH6yCCheX!~A6p}pi!TW98 zl}dAd_Y}Kr9dz!>bVH^0+pV_50Jb!CHx_IPWyd+kvR25I9nHu3cd*M;oS*#IJsWY- z4}$WznFwpY0b^qh;LlSekpcTaAQPjVD3;PQW%ltQOvFO|dq`nUffeHiESS!x zf4tTIYFWvSOvr03O`3k8CaaX04s;NJwRbWHQY3bBfKC-<7=X3S4g1brPzHH|0eb|U zDzl^&ne?aAdqI!1)R2rcA{543bGCx>OIpI6NzyWzg79=mF(~T0_+=0a>u%P=_9&oG zN_?DO4_6#1^`|*1>d>rD0a{WIeEe5lcq_A$s_B57zfS(Na<()EsYznIM{stFtR)xL z34N=A9<#;cfmpfsxZmbycI(l?U(7Zmb8rExzaG7K_BTxvHDMWy8Kr7phtbCtvWY?Z z$h7GL+wI`5+`mijUkYnnNqMMtAC=h=v??{t(uJSji`reKF_hc~G|Z zO0d}ZJxD#QEp&BaWMBiF$)g9+*EZNKElyESmGMqL;@DhvJ#4uw(ZN1yID7^5%fAe< zK`}MBEPdN)I@*?%a{tk>SWPWsSs=a_W6hF!l=c`V;d|^|h8HyLNjJY%7AZZL(gzvM zjY;m*9M0jh8Qk^xIX76g+uHmovaHN|z1Xqeh&|-1_)i3he7`Gx-M_Q+{&V}T1mEk> z_>q4a5l|&4Sp3&7pIOHb&dM@tqiS1V`DlOgp$YN4`X-y1tscH7k&E)0Vgzkp+_EL6 zFv#nc(1B~snQ<#CkSqs>rt~Ln5;zME=c5&c@Fl+I5p^o2CcUuW_Z1iko|bn2?4CSt zxQgr-?*d8RuPyIerrZ5Uf>ukA1A*-&7>@z$0p-eHCXy%H4m|>2T=w4!f8v39ORT_O;2}RJb0BbQMB7IV$<7FDX+K~%=`abQIfI{SgR=Y>J<@txQ{QA~~R+-^3p|wZ8 zwb0XywrY_8@KZp=Zd+EzHl&QJ47*O1rQw?xsH^VQgRgZ5=R5^j7~S=-DxZ3H6HB)fr;LmV8pk%;Kk>Q+=!la0)8)mKl;O!)ipPl2)L zzyPLxARs@;j;$Oa*At+%%REplqT@odwjO~PP8+HbRKe(b>QANgdB37Gb*APUPGO5O z_H#-daT}ZwEC)-5Lwj$M)qyvp)Iy1+q@?#VVj)9^!TsHq-Efn~*Nzvk7wERP=l#@6UUx9rHAvO*q&cS~{pq_~Vu-=HyM z_Q%d>>Bw6G?WTAp0FsBNX=2bSCQdCL z*=U==+}F~%zARO3$nz^IS*N7j%PpkxHEO)Kp^}D(=-z3?j8iH)65|lVNhx{aj&)=$ zCaVnU#ee-Ao*=x{MC;p04AVL^jTMOecGIlCOMslS0527^PSI?})FNBc$C6q)>(l#t zwawFyO&2IX4-QO1SqsI^RclT%~8^CJAf#V4&=Hzhn1^(gWTW0o;KBK zy=31UrD1OBlQf>qOu*M};z&+{4H2;j(&pQvUVV#pv^N#hdMMeaja{8b9B`&7syn?{ zdJy|rO;P=_=XH2rf@)Huu(;F4=*u6b&op{!>n2K|{LxLPhy)`epo^sFG2>%Cb~lm@ z@ob~b=(Ft~!S5&diE$FtP|Jcg0npF7P1cW z{EmLrl&V0ix@#Eub)cX+Wrm@nY`Y^SKwp>}jN2A)ko%L#3$P{yH8<~vivT?Z?r@ezqXvDCKhSH1H3knKSY4`kQe07AedFzjwEirS> zFDj~p^JvI?r1CMccv28@C=!q7JwOZlT)Y8p#59EoCFTAGi^Vq-9@2Kf z0)}c6qqB|lrw!Hf92#wA_2o4cZa&88sIpjzZZ->%3-oWCVk|W=6Gor*i5VwUeb+Qp zV##gnW6(Ub-Gb+F6$^Ex)r|B2MXl$Z&s=$PSR0cTFMz$8oDPv`x~&NO$na$&pfAcZ zro}@7#<=Wt@^zY&T5wlM2|~^PJ^T*f+EHTimtW&&9c9q$MoQ|s^HE8;?Y|@56#o_w zq2RI0>0xRf+reW|Qo>UHRsWl_n<6U*Jse-VeIOCt^63t6nx_li6g7b-?VsuF(fJIv zVFTSC=?z-OwR#AKS;_*zK?6{MzKahf4Rz~^%7hfI5^lN>b+)xw8L&t!6u^WH1}Qfy zF7%e98a{n~n^ku>KaA$)us7Z!xe{CGVq9wjL(QW44_ICoOo}56(K`ri_h-JAZq2WU zB3x*P>hv3mx7wHSR@oqisIL2Q_!Pnl*M4c<^IWO=Sxum}GH@)=mD?tY4Qtzs+h*iT_7G;>4qiu2} zZ@S9{XD($cxgAq(-ZwU0MXvp!8kpY-7cFqAJcKTSjw_fcd&e%78-6~ zmTzeVGUUcnfKN$xiKWOs=TQ>b`MPCP#rehn}DtUX6`t6w{)Q0-SM_(by5YSZme z_A=On$qD1%jI`-B3fzI86*@s0T0s8*-j@>y>9dMGJ8nLT{cJC`wf5@d+SQic_jw@o zd^6>7(QPZAj$1P`Z4D?^3_|q@|U`iZOWg;KPKGUwn36;FkAGQ=jR7f%#%7!#*20B zko=MuhuMgP7oq{X2q;#xg{*{EtTzorG}gvA(Ew#9V8A1}T@a*5j^3I73Zw(7Jj6P6 zmM>xbfikIWw=6jjLYH#o78fSBt%~V}4_C?(fJK5=w1kl(if>w=i=StQM%a@YYAxLy zyZUAE*y3?VA6ZfvglR1wQjk=Asz=+Eq-R|`nvy+f!sHad#KbIHes>$T=bKexC?16W zdh5taOaw>$Bs!M!wqx7E<3ry;a--w73(AfiO%DEdBo*)CRRxW`6z>26-Y2@VISKJp zOZjaw(>}dHd5v9Q1|^D9=M90ZXqI{0{P1I*d>!Q$h=)_jj;PQ~a?*snT{m!oJuP|I zH`sXPyO02bv&&fCm;4)+8C2PK20tP~w{zW?2~9&zLRHWK5Djjk;gUKXtk+u3vAfYp z@r|m?(72f|@(u&6WL@`)43!Pp`(czI_2X~b6fBG54&X(cxIJfEXlW*ku8p>X@;kuC z?K?oH<{dzG(D(~)-h$}c$S-?5r7Sfsq(3Rc`Kp|)T(*l$y=@le<{Qnl=R4}AX1C|G zm5Izm9R!jlhI)ho*NmUB`vyXQ3sibq^8$#3tsy^nr14I0iM&IL66mX88Fv znlPe=B@X-)br^}-3>scJRrJ3;ZE{u0eSbL=-_)AoV$QKb=NA^yGb(CK2wm%2)8W@TvNSb zdf*d$gvqP<>|Tv3{jVqgROP#W7~O$_ZO&#|qqH;(97BouH!BGVg+vdCL1)>oedoAL z9J6MSjZ0D-h*hhgZLQso>t(*t*Y=khLDJWX(V?#}iTjzGpS}l?;FE3c*HeU0Q<)ZmwFpuKrBH2m+q2)qmo_LJ>!e@^* z2Zv|n)g$c_k?9%JcHY0MEAgId{-qd5Hm{zyE52ASs#F4JmF%+V>mS`(SRKFRMq0tIJ~p5N=&ziX>- z^?>xkhzcA>W!ou5G~Y~kl$8@DY`eFOs0+Y4(&NE6XJ0X`Yd+?BP`Ev@RtRWj;BfX~^)S;+kM(pNizsA+;Xjc=*oG&su z1EoZ626F3WqOex@sws5nRWz)}Hp z!BJH?)ZkmmFb5G`EQox`U7A<4rg-fLlOG)$eAs!#FGlfyve`evjW0_7E!)8yLi&h$ zkK{P@4$!uja|h7(|6P*0aq+ABH^&{|@YlVt&M@5pcsMwfLtY)H-vJCSsDH!!b78(r zP~*@Ka|cK8O+CueD=J;#Ac;3Pdg+*$SpJ@g+NL&ayaoOr$L;{1?4De2-2oJS-vJ8m z09T37JHYPv9boif^Wm4Z4@E_DB}fPN#v&i}7HlN}#6v8KKV|88)S>7v_!SXqNw?F8HbITh32U3aS5RK+3cJd-b?=p3RRK=%eb%47m*y+qtM$h(X`59%B1d*TE=<6^W6;MQI4Q%-2#iT6}klU zUg4zRodp0uEv}&1+ds4og@^_IbuE2;e0875M2Nz#;?UF}ObwuqWA{tH&(mRb8aOd? z6shG!1;P78kUBdaqLvbb!X1EB?sKQi`%hBQ+qPTbZGZUW{@mNt;rBm#Pve&p@^VLM zu=<3yWjyi=l~X2Q*6~u=fu)gA7&ouhi{Lv~3g64FV;f zN<$0OcPb|ghFItWVIIAg0hn4sTLkofC=Zj!e?%pxNEa!(Ip`;(orR@H#b6vTO7gR% zJ}0~&pw4wuX0kT!MI2NH3etX}dat|3uUks12{m=*0+>GT_7E}-Aq3lBo98xdj6_R>Q0vqsegfY{SATiW-9>HTD#r2Def^r9X897I(7YWk}^mdu{oEX6M# z{CZ>fV#~IKp50snH4=Mo2@-RB9y7PPczJZf+pqa$!pz{r9zcw}Z7kLX?c?@}YD0bvm%61YG0602p}YRuB1N`*U-RBf zsRiaohgrf@eG4Pm*?oUl#R?h7=@~>yKJHtpV0ytLHZWE&TsqGbMRO!A9l| zCmQUgI5g;km{^uRT0lz=(wo`KYdeLhrd`F|#=)oV{Nt}Xp6(y^cU@J*{NW<>Bp%|YTx~Pm zows`H6L6g~bO#^_T4iYPKQh$4m+PG04-Q|g-Rm7!@q1SLqHzb{`0 zRwj#4(~eNO!??|!vCA$?X0LS4)_+3bb?wCupGoaymAV6 zveJU|?>?FpG8(ZFDC37GUkevGZ8(uXDkVll+&(P#v zQg>e+-|HfXQ_e}{9Uz4=iwrnz&pX?8fRm_&<~1LYFm#E`*uO^1_A838xLpr;72bt*z)cC4C8*kVl!2r)=*M zR$3N-r*zIFp}6VZ`>~34OH6K+?l&*MZjIC5;15&4Ep>-jl1{)DN8GWY;fB#6fy?X( z8Ky+#**W2q9m=O}^Qvg$sk8#yJAgBdmFZe~< zm~dE-$Oh_8e8#@LFf1(Xm}&t1Fny6#UVp<-=Hsa^Y-CemnKtMl>15>qGewhJ$o;@N zz2wh%26b?RTCc$-9Y|cyYaH z{XS6v6*K{gYpEpk#*Al!_5;J7NO#%B5P=uW>xUCjX2xFBpNv0Z5*9!lbtqh-5**` zn$?}`Vt+2A7qRh<4Kp$AdSJun{0}erqIgi_(#1jD&(g!nPg4y-;Ad9wXA87)=39v= zDWRl8E z=n{;GD>tQz3%bV~Q$+^)Nh|C=fR#WjG6zhB9muGfJE6=&hYB187hZ>~sM2ls5;{22 z)6B~q)z4FfEsmBJBW(#Z6Uuh5Ka@opL(Q+9HQ1vv3Yq=T@d3mS$F$0yR5~CTnr-Rd z|FT=xB>I{yFBs_xqh%w3KNB|D#>HaD2f}rXZh7;nkV^>k`Dkr(-M$T3om6nGd7re4**rBluD(>4X%T}lj8;+6Xu-&_kz=f2 z4-YT7`PY{sqpK3KpwSGIFOE;dp*D{U9AM=3!E3Yto(8TgWh%Sg+X zYHoj)z*W`oho$XV-fYt@ojq@K6Tn3(g^HO5mNKvEf9biMx5{gQ0+g?7=&bH~9&*6i|d~pxy z2|UDSe`cPxEz~vaVjm_b-$gLUoZ!8gbyJ*tDpO>>roEg0m*=rDi1BA)R?-I!sS{ksa}cY6A`;G`zFQD zLck>W(&_2Rz?dzgyr= z^a38g$OC-i!Q$Z(mg&t2YN-}6*|W&Tdt6Wgw+n3;@BPv57Kla|gXE9<^eJ`BZXT~U zRxW)lcVPJ@ztVO~zUBXfvp6z=fMYh#Yb9vWgnjZW4^8j0wQUt25J0MFaRNt*%44k1 ziP~fV*`>?}sf50d&I-vCir!oR)(1VmzV=nr7qZ;>mK zkbNkuam70mKjvlX@nBV6XL$HOvlxDe6Ul4Z?svSr7B55fnM-)8&pvb>#k&K%5Ruvy zYC|b(_XiixA2km8(OUbtCAH;EE0o!(kha7h$i1*J%kN&PlTO&@pY_w^(8?=lRdXqi z^feW|cx))&sBqBZe|o%>&p0d~7Xj5edgWiMKl=@=VWLP$RT$~LhyIyy2T*~P&eH&4 zp>4iu+iQlx2V|#1@WzU=+$3p4)P{PrR&*v1|^I9escFy|2sgIaEk(qR?5wAW7VjDe$6XOzlFKF?E!5_`eVngbd1rp z$%qpga)9h{~TIYDRCI(ABJJUFfkt6@r5^STbb>Ff84Sk80HG- zBO&!KUa^+IpgddlJt7JssoruXS`0&D!BYu+#%>%zd-6Whev`S=F)gj3*~@#;qPfks zPrQ>?Fo!cmF{b*ud@0+aSoa~a**h7$?(Va7bwx*Sku>z`gX*DTlj$x4M}S!NW@5!| z$zwyVHi;=QRHDk{l=K>kV5Ze>fUvG9e3G^$pQU+oeJH2)Nw$Grc;2qGljctOaFcHc zL(z#?*>|7|a?A{yPy2%^tT258$Le(`lF0{sAkC`@ZGTn4#lyALJk@34_Z|mI^ZXtE zDS~)XV*Bt*rx#sTX_G;oD&T6fev8WSF>)9{qRZ(?pdy zul2Oe14AEm7`xfzm--k+_qU&>C>+}wSHVtV6Z#!*Y33E_ysX>KxDWT41{JUdU+y0Fd(JNzYLr@)g=K0YOJ9AmBvCod{@Zd|XiTo>VC z!fmDv(WcNUiD;vlTo4BEvvFc}cUhFb4IOc6Y?a2xZ?S**D`G2!f5d~sS6tAQ$dNv? z2{%V)0H-Xa*Z%%Z8{`{BX`w^GN!U z$OL#~V^KnF17W1P2U2L?%Zap(Y)+~mXe-5%dF4VAr#Z^Y5uP7umv3ZjS?r()&4(3- zvJ&^UjCqoFGdnVBc;`r-OplQJ®Frr|rEvJ1#qqg+BC5vv``Yf|}Z8FLHhCu_%_ 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