Feature plan: Step 1 · Step 2 · Step 3 · Step 4

Debug mode: enabled

Execution

  • Approved Steps 1–3; planning commit: 37594b14. Branch: feat/testing-self-approval.

  • Existing user modification to todo.txt is excluded from this work.

  • All three implementation stages completed; no effort study selected.

Stage 1 - Testing boundary

  • Changes: shared fresh marker/direct-loopback policy; ignored project-root marker; regression coverage.

  • Verification: PASS php tests/run.php TestingSelfApprovalTest (1 test); ordinary ./v3 start 18763 --quiet and WSL Chromium direct 127.0.0.1 request returned 200. Initial browser invocation used unavailable playwright; corrected to installed playwright-core.

  • Notes: actual connection is WSL Chromium to loopback-bound PHP development server; Windows-host forwarding remains pending. No marker created in the working checkout.

Stage 2 - One-click browser approval

  • Changes: current-account POST action with session token, exact Origin check, authenticated-session target, and marker/locality revalidation; Account Key button and existing feedback styling; immediate reload after seed approval. Reject alternate input fields. Local Host and proxy-header checks additionally keep public reverse-proxy paths out.

  • Verification: PASS 17 focused policy/account hooks/auth tests; PASS isolated HTTP browser workflow with members-only both disabled and enabled, desktop/mobile overflow checks, marker removal/re-enable, wrong method/token/origin/target, anonymous request, immediate authenticated member access, and harmless repeat.

  • Notes: seed/auth combined run passed 30/31; the failure expects obsolete profile copy This is your profile. It also fails with the pre-Stage-2 Application restored, confirming it predates this change. Existing template-hook tests emit undefined identityHint fixture warnings. Stage 1 commit: 1f86f805.

Stage 3 - Recovery and guidance

  • Changes: documented marker lifecycle and locality limits in the CLI reference; recorded UI copy review; recovery feedback points to the actual button. Browser regression forces artifact-refresh failure after seed persistence, performs the displayed CLI rebuild, and retries. Added weak lobby-session rejection and profile/lobby consistency checks.

  • Verification: PASS WSL HTTP browser recovery workflows with members-only enabled and disabled; immediate member status, CLI-equivalent reason, repeat, marker removal/re-enable, request protection, anonymous/weak session rejection, desktop/mobile layout. PASS 20 policy/account/auth/navigation tests. PASS PHP/JS syntax and diff whitespace checks. Desktop/mobile screenshots visually reviewed at /tmp/testing-self-approval-screens/. Existing approval-seed suite: 13/14 passed, including CLI, contention, persistence and repair; the sole baseline failure is recorded under Stage 2.

  • Notes: Stage 2 commit b7ca38b7; no new navigation or schema, so icon mappings/migrations are inapplicable. Production deployment is outside scope. Windows-host browser forwarding is pending; verified environment is WSL Chromium over direct 127.0.0.1, including ordinary launcher startup in Stage 1. Full suite not run; focused results are not a full-suite pass. Existing hook fixture warnings remain. User's todo.txt modification was not changed or committed.

Request disposition and handoff

  • Request: less friction and a flag file. Disposition: implemented approved marker approach with one Account Key action, verified through browser setup/authentication and repair/retry. Approval: Steps 1–3 approved. Outcome: create the ignored marker once per checkout; remove it to disable further approvals without a restart. The marker was not enabled in this working checkout.

  • Review state: implementation complete within the direct-localhost boundary; Windows-host forwarding unverified and one unrelated profile-copy regression remains. No merge or deployment performed.