Files
LWLT-AIBOT/.project-docs/30-worklog/tasks/20260915-resolution-navigation-01a0858b.md
2026-09-15 14:24:20 +08:00

4.9 KiB

Read-only resolution navigation recovery

Scope and gate

  • Feature task; user authorizes fixing roster import Frame with ID 0 was removed.. Main thread only, no delegated agents.
  • Branch main; sole worktree /Users/andy/IdeaProjects/LWLT-AIBOT; base ede1d47c4710b4d8d6976bdb37baaf5c316ccd07; overlap Clear.
  • Preserve prior completed latest-roster-target task edits (task-service, reply contract, tests, task/evidence), unrelated .idea/, and the known current 0.5.184 release bytes. No concurrent worktree exists.
  • Own extension background resolution/error handling, focused regression tests, version synchronization, mapping/release documentation and release packaging. Canonical project memory remains read-only.
  • No real workbook import, ERP write, task replay, deployment, restart, external sending, commit or push.

Evidence and implementation plan

  • User screenshots show injection succeeded (334 ms), the following resolution action failed (1039 ms), and preflight was blocked at 0 ms. The catch-all labels resolution exceptions as preflight failures.
  • Workbook validation already succeeded for 20 rows. Supplementing an attachment does not directly reload ERP. A later keepalive recovery screenshot cannot establish the cause of this earlier navigation.
  • Retry only the observed top-frame removal error during read-only target resolution, at most once, while the same execution is still running before writing. Wait for two complete samples of the same approved top document within a bounded window, then inject fresh scripts and re-run unique lookup. Never replay saves or business-blocked lookups.
  • Preserve actual failure stage and safe action/step diagnostics, with a per-task snapshot of automatic recovery timing. Keep normal heartbeat logs quiet.
  • Add behavioral tests for retry limits, changed documents, execution/cancellation guards, ambiguity, permanent failures and stage reporting. Run required repository, type, control-plane, legacy, build and package/source verification.

Results

  • Extension 0.5.185 retries only a thrown top-frame removal during read-only resolution, once after two complete samples of the same approved document. The stable-document wait is bounded to 8 seconds and requires a non-empty Chrome documentId; fresh adapter injection and unique lookup still run. The same durable execution must remain running with no prior write boundary; missing/changed execution, cancellation, permissions, closed/unapproved tabs and persistent navigation stop recovery.
  • Resolution and route exceptions now keep their actual failure phase. A thrown resolution failure carries explicit read-only evidence and per-task attempt/step/recovery timing, compatible with the existing same-execution late no-write ingestion guard. Normal lookups and business no-match/ambiguity do not retry. Native saves still execute at most once and remain uncertain on frame loss.
  • Automatic recovery records the actual reload request timestamp and tab ID; failed queries project only safe status/codes/timestamps and same-tab evidence. Later keepalive updates cannot replace a stored task failure snapshot. Normal heartbeat logging remains quiet. This does not prove what initiated the user's earlier main-page destruction.
  • Added nine behavioral regressions (VM harness executing real background functions) covering injection and roundtrip failure, fresh document identity, wait bounds, cancellation/execution changes, permanent failures, actual timing phase, business ambiguity, diagnostic privacy and no save replay.
  • Type check, build and control-plane 245/245 passed. Final legacy/repository/package verification is recorded in the linked evidence. Checks use a byte-verified isolated source copy excluding secrets and pre-existing unrelated .idea/, .DS_Store and logs; original residue is preserved. Legacy HTTP tests use approved local loopback fixtures.
  • Main-thread read-only implementation review PASS: no generic scripting retry added, no route/save replay, no relaxed uniqueness or write boundary. Synchronized extension/platform versions, mapping, regression version assertions, current release gate and release manifest; prior 0.5.184 ZIP/manifest archived byte-for-byte. Existing latest-roster-target changes verified unchanged.
  • No real ERP execution, import, task replay, deployment, restart, commit or push. Production validation requires loading extension 0.5.185, publishing the platform minimum-version update and refreshing platform/ERP pages. This code recovers transient navigation; continued navigation or other page readiness failures still stop safely.
  • Verification evidence.

Promotion candidates

  • Promote the bounded pre-write resolution retry and actual-stage diagnostics after integration. Keep the cause of the original frame removal unconfirmed until contemporaneous recovery/navigation evidence is available. No canonical promotion in Feature mode.