diff --git a/docs/TODO.md b/docs/TODO.md index c6d4e006..38cd3e3e 100644 --- a/docs/TODO.md +++ b/docs/TODO.md @@ -43,3 +43,11 @@ - 2026-10-19: client-reliability-3 ready for normal queue at607d5ce1: full426/426 files exit0 with60s/file bound;27 focused scenarios,14 reverted mutants rejected, lint11/11, build/artifact verification pass. Corrected Chromium/Firefox built-dist/native-observer smoke:0 obsolete starts/stale callbacks/page errors/external requests; hidden reveal and source-health visibility pass. Remaining: normal queue/durable landing/ancestry then close and dispatch landing/final evidence events. Actual playback fallback/live peers, active abort/URL cancellation, CPU/RSS and full Stage3 remain unverified/out of scope. - 2026-10-19: client-reliability-3 finished and closed after verified normal landing7d20a509 (submissione522efc1, gate exit0, unstable ancestry exit0). Full426/426 files,focused27/27,14 reverted mutants,lint11/11,build/artifact verification and native Chromium/Firefox controlled-IO smokes pass; obsolete starts1→0. Dispatch landing evidence sent; closure metadata/final report follow. Dispatch owns preview sync/rebuild after its resume; mailbox does not wake idle sessions. Actual media fallback/live peers/CPU-RSS, active abort/URL cancellation and whole Stage3 remain outside qualification; no new work without routing. + +## storage-cors + +- Parallel trial item1: reproduce CORS existing-origin preservation offline before routing fix; no cloud changes. + +## playback-qa + +- Parallel trial item1: local fallback qualification/regression; browser initially reserved to QA; product read-only. diff --git a/docs/agents/PROGRAM.md b/docs/agents/PROGRAM.md index e61b28d9..69b20bf7 100644 --- a/docs/agents/PROGRAM.md +++ b/docs/agents/PROGRAM.md @@ -13,6 +13,13 @@ Work through the existing TODO backlog and fix reproducible bugs that make the c ## Rulings log (newest first) +### 2026-10-20 — Bounded parallel trial, owner words relayed by interpreter + +> "id really like to stress test the multi agent process so if it needs more agents to get more done faster. do it" — owner, relayed by interpreter; not represented as typed by owner in dispatch. + +Interpreter requests executing dispatch plus up to3 workers now with disjoint worktrees/scopes. Routine launches are authorized; retain existing restricted-action limits. Trial measures acknowledged assignments, actual parallel evidence/checks, durable queued landings and contention, not process count. + + ### 2026-10-19 — Roster-only bootstrap gate (session manager call, VETOABLE) The first approved worker is assigned to the pre-existing profile-modal test hang. Normal roster-before-launch ordering otherwise invokes that same hanging full-suite gate before a worker can investigate. For this one administrative roster/brief commit only, dispatch will use a temporary queue configuration whose gate verifies the exact committed change contains only the expected area registration and documentation/backlog metadata, with product code, tests, and persistent gates unchanged. No product fix is covered by this exception. Preserve normal full gates for subsequent code. Record the actual gate result and disclose the unresolved unit failure. diff --git a/docs/agents/backlog/playback-qa-1.json b/docs/agents/backlog/playback-qa-1.json new file mode 100644 index 00000000..078fc023 --- /dev/null +++ b/docs/agents/backlog/playback-qa-1.json @@ -0,0 +1,9 @@ +{ + "id": "playback-qa-1", + "area": "playback-qa", + "status": "open", + "title": "Qualify local hosted-source fallback with independent regression and browser evidence", + "blockedOn": null, + "addedOn": "2026-10-20", + "filedAt": "0c1dd7e86be3e28edc96aca47f7753a98990dde0" +} diff --git a/docs/agents/backlog/storage-cors-1.json b/docs/agents/backlog/storage-cors-1.json new file mode 100644 index 00000000..fa59181f --- /dev/null +++ b/docs/agents/backlog/storage-cors-1.json @@ -0,0 +1,9 @@ +{ + "id": "storage-cors-1", + "area": "storage-cors", + "status": "open", + "title": "Reproduce existing-origin loss in bucket CORS provisioning using offline transport", + "blockedOn": null, + "addedOn": "2026-10-20", + "filedAt": "0c1dd7e86be3e28edc96aca47f7753a98990dde0" +} diff --git a/docs/agents/prompts/playback-qa.md b/docs/agents/prompts/playback-qa.md new file mode 100644 index 00000000..a870dfc6 --- /dev/null +++ b/docs/agents/prompts/playback-qa.md @@ -0,0 +1,13 @@ +# Area: Playback fallback QA (playback-qa) + +## Assignment: playback-qa-1 + +Independent regression/browser QA slice of pre-launch TODO34/performance-efficiency-plan Stage3 acceptance: dead hosted source falls back to viable torrent/mirror. Recent queued-probe fixes89ccb907/7d20a509 have controlled health lifecycle qualification but real playback fallback remains explicitly unverified. Existing webseed-playback.spec.ts uses public archive media and tolerates decode failure; do not modify or treat that as real offline success. + +Inspect actual playbackCoordinator/service and current test harness. Build a bounded local-only deterministic fallback scenario against actual orchestration: failed primary, alternate selected once, original magnet hash and hosted webseed preserved, terminal failure settles if both fail. Start scratch investigation; report fidelity of substituted IO. Prefer local decodable media if available; no downloading public samples or live peers. Browser is initially allocated to YOU: record ownership in .task, tell dispatch before opening and on release, clean only your own server/browser. Use your worktree/private port, never preview3000. Native Chromium+Firefox where available; no claim of real torrent/decoding unless measured. + +Own only new tests/e2e/fleet-playback-fallback.spec.ts or tests/fleet-playback-fallback.test.mjs plus docs/testing/playback-qa-* evidence/integrity and own backlog. Product JS and existing tests/helpers/config read-only. Propose retained regression approach before adding it; no app.js competing writer. Deliberately disable fallback in a temporary mutant in your own isolated tree and require failure, restore without committing product mutation. If actual product defect found, report exact trigger and minimal owner/file scope to dispatch; do not patch product. Scope stop after bounded QA result, retained valuable test if approved, evidence and durable normal landing. Full gate/build scheduling through dispatch; do not run full E2E suite in parallel with other gates. + +## Coordination and limits + +Send dispatch a read/next-action acknowledgement immediately, then claim your item and keep .task current. Record start/end UTC and time blocked by tools/browser/gates. Report exact SHA/commands/counts/unverified scope; mailbox on blocker, reproduced result, landing and final. Read RULE-CHANGES, PROGRAM, KNOWN_ISSUES, repo memory, and test-integrity before changes. New tests require failing mutants; no weakened expectations/retries/sleeps. Product/test fixes must be scoped from demonstrated evidence. No shared TEST_INTEGRITY.md or docs/TODO.md edits: keep uniquely prefixed integrity/evidence notes under docs/testing and ask dispatch to integrate status. Do not edit another area worktree or stop another process. Full-suite runs and product landings need dispatch resource coordination (one expensive gate at a time, unchanged normal landq). Focused offline checks can overlap. Commit named files via fleet tool; merge unstable, never rebase; normal queue/durable status+ancestry before close. No subagents initially. No deploy/push/spend/real-wallet/production-data/secrets/scheduler/kit changes. Preserve preview3000. Public network/real buckets/signers/peers forbidden in fixtures. diff --git a/docs/agents/prompts/storage-cors.md b/docs/agents/prompts/storage-cors.md new file mode 100644 index 00000000..ed435720 --- /dev/null +++ b/docs/agents/prompts/storage-cors.md @@ -0,0 +1,11 @@ +# Area: Storage CORS reliability (storage-cors) + +## Assignment: storage-cors-1 + +Bounded parallel trial: validate todo/TODO_2026-06-16_r2-followups.md CORS replace-not-merge report at current HEAD. Dispatch inspected ensureBucketCors in js/storage/s3-multipart.js: constructs PutBucketCors with requested origins only, no GetBucketCors. This is evidence for investigation, not proof every caller loses policy. Trace actual callers and required existing-origin behavior. Reproduce offline via real helper and fake S3 transport/SDK boundary: an existing origin/rule, adding a second origin, idempotent repeated call, missing config and read-failure cases. No cloud credentials/network/bucket mutation. + +First report smallest demonstrated loss plus proposed preservation semantics/files to dispatch before product changes. Inspect AWS command export in s3-client read-only. You own s3-multipart.js/s3-client.js and new tests/storage-cors-preservation.test.mjs only after fix routing; no R2/S3 upload service copies, app, signer or UI edits. Existing wildcard/method/header/non-origin rule semantics must not be guessed; read failure must not silently overwrite a policy. Do not add broad SDK/dependency upgrade. If stale/already fixed, close with evidence and propose next independent TODO. No browser initially. Relevant focused storage checks, lint, full normal gate/build after approved fix; ask dispatch before expensive runs. Integrity notes docs/testing/storage-cors-integrity.md. + +## Coordination and limits + +Send dispatch a read/next-action acknowledgement immediately, then claim your item and keep .task current. Record start/end UTC and time blocked by tools/browser/gates. Report exact SHA/commands/counts/unverified scope; mailbox on blocker, reproduced result, landing and final. Read RULE-CHANGES, PROGRAM, KNOWN_ISSUES, repo memory, and test-integrity before changes. New tests require failing mutants; no weakened expectations/retries/sleeps. Product/test fixes must be scoped from demonstrated evidence. No shared TEST_INTEGRITY.md or docs/TODO.md edits: keep uniquely prefixed integrity/evidence notes under docs/testing and ask dispatch to integrate status. Do not edit another area worktree or stop another process. Full-suite runs and product landings need dispatch resource coordination (one expensive gate at a time, unchanged normal landq). Focused offline checks can overlap. Commit named files via fleet tool; merge unstable, never rebase; normal queue/durable status+ancestry before close. No subagents initially. No deploy/push/spend/real-wallet/production-data/secrets/scheduler/kit changes. Preserve preview3000. Public network/real buckets/signers/peers forbidden in fixtures. diff --git a/fleet.config.json b/fleet.config.json index 8369cac5..78b2d6af 100644 --- a/fleet.config.json +++ b/fleet.config.json @@ -95,7 +95,9 @@ ], "doesNotOwn": [], "neighbours": [ - "client-reliability" + "client-reliability", + "storage-cors", + "playback-qa" ] }, { @@ -108,7 +110,12 @@ "tests/profile-modal-controller.test.mjs", "js/ui/profileModalController.js", "js/ui/profileModal/**", - "docs/agents/backlog/client-reliability-*.json" + "docs/agents/backlog/client-reliability-*.json", + "js/gridHealth.js", + "js/urlHealthObserver.js", + "js/ui/urlHealthController.js", + "tests/grid-health-lifecycle.test.mjs", + "tests/url-health-lifecycle.test.mjs" ], "doesNotOwn": [ "js/app.js", @@ -120,9 +127,66 @@ "tools/fleet/**", "css/**" ], + "neighbours": [ + "dispatch", + "playback-qa" + ] + }, + { + "id": "storage-cors", + "title": "Storage CORS reliability", + "role": "area", + "domain": "feature", + "provider": "codex", + "owns": [ + "js/storage/s3-multipart.js", + "js/storage/s3-client.js", + "tests/storage-cors-preservation.test.mjs", + "docs/agents/backlog/storage-cors-*.json", + "docs/testing/storage-cors-*.md" + ], + "doesNotOwn": [ + "js/app.js", + "js/app/**", + "js/gridHealth.js", + "js/urlHealthObserver.js", + "js/ui/urlHealthController.js", + "js/services/r2Service.js", + "js/services/s3UploadService.js", + "fleet.config.json", + "tools/fleet/**", + "TEST_INTEGRITY.md", + "docs/TODO.md" + ], "neighbours": [ "dispatch" ] + }, + { + "id": "playback-qa", + "title": "Playback fallback QA", + "role": "area", + "domain": "feature", + "provider": "codex", + "owns": [ + "tests/e2e/fleet-playback-fallback.spec.ts", + "tests/fleet-playback-fallback.test.mjs", + "docs/testing/playback-qa-*.md", + "docs/agents/backlog/playback-qa-*.json" + ], + "doesNotOwn": [ + "js/**", + "fleet.config.json", + "tools/fleet/**", + "playwright.config.ts", + "tests/e2e/helpers/**", + "TEST_INTEGRITY.md", + "docs/TODO.md" + ], + "neighbours": [ + "dispatch", + "client-reliability" + ] } ], "gates": { diff --git a/fleet/LOG.md b/fleet/LOG.md index c7106bf6..5a783dd4 100644 --- a/fleet/LOG.md +++ b/fleet/LOG.md @@ -62,3 +62,8 @@ - Interpreter checkpoint continues owner development direction; same single worker assigned item5 read-only active probe reproduction, prioritizing active URL media last-owner/shared-owner controls. No new worker or product fix scope yet. Dispatch will assess evidence and route smallest demonstrated defect; absent a defect choose next evidenced TODO. - MCP mailbox_read stalled; terminated its wait, global fleet mailbox read consumed the actual instruction successfully. CLI fallback used, no pane scraping/kit changes. Item4 dispatch evidence is durable3f627f5d, not still queued as earlier handoff wording said. Full/browser validation remains prior worker-derived; no repeat tests for administrative assignment. + +## 2026-10-20 — Parallel trial staffing + +- Owner parallel-trial approval relayed by interpreter and recorded verbatim in PROGRAM. Keep item5 client-reliability; add storage-cors-1 offline existing-origin preservation reproduction and playback-qa-1 independent local fallback qualification. Preflight public open PR count0. Inspection confirms helper constructs requested-origin-only PutBucketCors; QA gap documented in Stage3 and prior item4 report. Neither task assumes a new product defect. +- Three worker target, disjoint branches/worktrees/files. QA browser first; focused offline work overlaps; full suites/product gates coordinated one at a time. Measure pickup latency, real outputs, gate/browser/tool stalls and durable queue outcomes. No credentialed cloud/live peers/production activity. Launch pending roster landing. diff --git a/fleet/RULE-CHANGES.md b/fleet/RULE-CHANGES.md index 3207060e..74217760 100644 --- a/fleet/RULE-CHANGES.md +++ b/fleet/RULE-CHANGES.md @@ -9,6 +9,9 @@ a landing rule changes. ## 2026-10-20 +- Owner authorizes bounded parallel trial via interpreter: dispatch plus existing client-reliability and two new areas storage-cors/playback-qa. Separate worktrees/disjoint write ownership; no competing app/grid/URL writers. QA initially owns browser; one expensive full gate at a time coordinated through dispatch. Each worker sends read/next-action and timed contention/evidence events. No new external authority or scheduler changes. + + - client-reliability-5 assigned to existing worker: read-only active URL/torrent cancellation reproduction at current HEAD, starting active URL media last-owner/shared-owner controls. Evidence notes only; product/test changes need demonstrated defect and dispatch routing. Continue selecting bounded next actions under existing owner direction; no new routine approval required. No scheduler or external authority change.