docs: update planning artifacts for platform challenge handling
Desktop Client Build / Resolve Build Metadata (push) Successful in 32s
Backend CI / Backend (push) Failing after 8m13s
Desktop Client Build / Build Desktop Client (push) Successful in 24m4s
Desktop Client Build / Publish Client Artifacts to NAS (push) Successful in 32s

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-14 22:01:54 +08:00
parent aa9ce6f23e
commit 3cb15ab5a3
3 changed files with 137 additions and 1 deletions
+42 -1
View File
@@ -4,7 +4,7 @@
Continue the desktop AI monitoring implementation by first adding a client-side local scheduler with durable queueing and adaptive execution policy, then adding a reusable hidden Playwright CDP execution layer that attaches to Electron Chromium and reuses existing account partitions.
## Current Phase
Phase 60
Phase 68
## Phases
### Phase 1: Progress Verification
@@ -419,6 +419,42 @@ Phase 60
- [x] Remove temporary visual artifacts and record results
- **Status:** complete
### Phase 63: Human-Verification Failure Reproduction
- [x] Trace account-level challenge classification, same-model failover, task admission, and desktop notifications
- [x] Add deterministic regression coverage for challenge failover, single-account cancellation, and system alerts
- [x] Confirm the tests reproduce the current incorrect behavior
- **Status:** complete
### Phase 64: Account Failover, Cancellation, And Alerts
- [x] Keep challenge blocking scoped to the failed account when another same-model account is usable
- [x] Cancel all later tasks for the model when no alternate usable account remains
- [x] Show a system notification for every client/platform error while preserving in-app diagnostics
- **Status:** complete
### Phase 65: Verification And Delivery
- [x] Run focused desktop/server regression tests and type/build checks
- [x] Confirm no challenge path can silently continue on the failed account
- [x] Record final behavior, changed files, and residual live-verification limits
- **Status:** complete
### Phase 66: Local Queue Challenge Reproduction
- [x] Trace monitor scheduler activation, local queue cancellation, and server task invalidation after a challenge
- [x] Build a deterministic failing test with two queued same-platform tasks and one usable account
- [x] Confirm the later task is currently represented as another failure instead of cancellation
- **Status:** complete
### Phase 67: Platform Circuit Breaker
- [x] Immediately block the challenged platform when no alternate account remains
- [x] Remove/cancel queued and deferred local tasks for that platform before adapter execution
- [x] Keep other platforms running and preserve same-platform failover when another account is usable
- **Status:** complete
### Phase 68: Circuit-Breaker Verification
- [x] Run focused scheduler/runtime tests, full desktop tests, typecheck, build, and server checks
- [x] Verify the screenshot sequence cannot recur in the deterministic harness
- [x] Record final behavior and any live-environment caveat
- **Status:** complete
## Key Questions
1. How should the desktop client defer and locally optimize monitor-task execution without violating one-task-per-platform serialism?
2. What is the smallest durable local cache that allows same-day resume while safely dropping stale next-day monitor tasks?
@@ -481,6 +517,11 @@ Phase 60
## Errors Encountered
| Error | Attempt | Resolution |
|-------|---------|------------|
| Runtime invalidation payload included unsupported `platform` field | 1 | Remove the redundant field; account ID and message already identify the health event |
| Server regression still expected old literal skip reason and 10 SQL args | 1 | Update assertions to the new parameterized skip reason/cancellation payload and 11 args |
| Authorization bulk-cancellation patch context did not match the existing SQL argument block | 1 | Split the server change into smaller exact-context patches |
| zsh no-match on optional Vitest config glob | 1 | Use `rg --files` or explicit paths instead of a shell glob |
| Planning-file patch context did not match the existing error table | 1 | Re-read the exact section and apply a narrower patch |
| None yet | 1 | N/A |
| `make sqlc-generate` failed because `sqlc.yaml` points to `../../migrations/`, which resolves to `server/internal/migrations` | 1 | Fix schema path to repository-relative `../../../migrations/` and then generate code |
| `make lint` initially failed on several `errcheck` and one `ineffassign` warning | 1 | Fixed transaction defers, the middleware test Redis set call, and the dead increment in `article_service.go` |