Browser lifecycle verification

August 14, 2026 · View on GitHub

The deterministic browser fixture loads the production lib/client.js bundle and supplies a stateful in-memory Remote. It is a Client lifecycle check, not a substitute for the proposal's required credentialed Harness-model run.

Deterministic scenario

Serve the repository root, open examples/taskboard/browser-fixture.html, and exercise DSH-6:

  1. Open the backlog task and choose Approve for work / 批准开工.
  2. The fixture worker claims the task, publishes todo progress, records a verification comment, and submits in_review.
  3. Choose Return for rework / 退回修改, enter a concrete reason, and confirm.
  4. The same deterministic worker path claims it again and records a second verification comment in in_review.
  5. Choose Accept / 验收完成 and verify that the task is done and the acceptance action disappears.

The 2026-08-14 QA run used the in-app browser against the built bundle and observed:

{
  "firstReview": true,
  "humanReturnComment": true,
  "verificationCommentCount": 2,
  "secondReview": true,
  "humanAcceptance": true,
  "finalStatus": "done"
}

The final candidate was rerun after adding plugin-owned revision long polling. Without a manual refresh, DSH-6 advanced from version 4 to version 11, displayed both worker verification comments and the required human rework comment, then exposed only Reopen after explicit acceptance. No Client watch error appeared.

The same fixture also verifies native Session navigation: a Workspace-backed task exposes Open in new session / 在新会话中打开, and the Taskboard page closes only after the controller accepts the native Session handoff.

Credentialed release gate

Release acceptance still requires installing the exact candidate tarball in a real Harness profile and repeating the lifecycle with an actual configured model, real Workspace/development cwd, durable Session messages, Goal/todo progress, model permissions, and explicit human acceptance. Record the model route, candidate tarball hash, Session id, task id, claim id, claimed revision, verification command, and final task revision without recording credentials or private prompt data.