Repository navigation
Add interactive cleanup dashboard and Phase 15 evidence - #1
Merged
Merged
Conversation
Field work from the Phase 15 validation session against a real archive and a real account. Archive: tolerate the ZIP and YTD shapes an official export actually produces, instead of only the synthetic fixture shape. Session: open ordinary Google Chrome with the dedicated profile for the manual login, then reuse that profile through Playwright only to detect the account. The browser factory falls back to the `chrome` channel when the bundled Chromium is absent. The password is still never requested, captured or stored. Post page: poll for target, menu, dialog and confirmation evidence instead of reading the DOM once, and recognize the current X markup (`confirmationSheetDialog`, `caret`) plus the newer login and challenge URL shapes. Confirmation: list the exact items of the batch before asking for APAGAR, selected from the eligible set rather than the whole plan snapshot, so the owner authorizes what will actually run. Execution: select the next item before the pacing delay, and default to a 5 second interval between completed interactions. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The Phase 15 interrupt gate produced no evidence: the executor printed nothing between the confirmation and the final summary, the silence looked like a hang, and the second Ctrl+C that followed exits immediately by design without persisting anything. That left the run RUNNING, the batch RUNNING and an orphan `.executor.lock`, and the next resume would have asked for APAGAR before failing with EXECUTOR_LOCK_HELD. Progress: add a language-neutral execution feed reported after the durable boundary, so an operator can see the boundary a manual interrupt is meant to land on, plus the pacing interval between items. It carries no interaction content and can never fail a run. Lock: `diagnoseStaleLock` was dead code. `run` and `resume` now diagnose before recovery and before the destructive confirmation, so a live executor is never reconciled underneath and the owner never types the confirmation phrase into a command that cannot run. `status` reports the same diagnosis read-only. A stale file is removed only by the explicit `--release-stale-lock`, which re-diagnoses in the same call and refuses every state but STALE; removing it authorizes nothing, and APAGAR is still required. Recovery: reconcile an unclean stop in one transaction. Batches left RUNNING are closed as INTERRUPTED, the run becomes INTERRUPTED and the checkpoint reason is MANUAL_INTERRUPT. That reason is reconstructed at recovery, not observed at the signal, because the immediate exit persists nothing. A clean pause is untouched. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Persist the interrupt boundary before exit and require exact X page evidence before undoing reactions. This prevents an unsafe resume state and ambiguous real-account mutations.
Keep each batch behind its own account and item review while making progress and results easier to follow. Record the owner-run POST checks without personal data.
Shared CI runners can take over Vitest's 10-second default to launch Chromium. Give only browser setup hooks 30 seconds, matching their teardown hooks.
The POST and REPLY browser integration cases can exceed Vitest's five-second default on shared Windows runners. Keep the longer timeout scoped to those two cases.
Shared runners intermittently exceed the default five-second test limit when many Chromium suites start together. Limit workers to four and allow 30 seconds per test without changing production behavior.
Pull requests already validate feature branches. Run push CI only for main so two identical matrices do not compete for browser startup resources.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
APAGARconfirmation.Verification
npm run check: 47 test files, 213 tests, typecheck, lint, formatting, build.git diff --checkpassed.Release boundary
The repository remains private. This PR does not publish a package or authorize further destructive batches. Final owner approval for release is still pending.