You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Stabilize required-file upload regression coverage after Task link save
Status: blocked for coordinated release — Tester PASS and PM ACCEPTED; exact commit 7564688 is in local main ancestry, held and unpushed; no shipped/deployed claim
Tags: bug, frontend, testing, P1
Depends on: #217 preview/deployment/post-deployment identity gate for coordinated publication
Blocks: None
Next owner: Orchestrator after #217 release/identity PASS, for safe coordinated push; then On-Call
Resume condition: #217 completes its HUMAN preview, ordinary main/OIDC deployment, terminal On-Call result, and HUMAN identity verification; then publish the exact accepted #216 content through the safe coordinated release lineage.
Scope
At main commit 7d77632, the real-server regression journey in backend/e2e/canonical-task-workflow-behavior.spec.js waits for the versioned Task-link PUT response and immediately calls Playwright setInputFiles. The existing frontend contract intentionally keeps the Task mutation busy through the authoritative refresh: it renders Saving Task link… and disables the required-file input. The early Playwright call can therefore change the browser file value without starting POST /work/api/files.
Make the smallest test-only synchronization and diagnostic change. The regression test must wait for observable authoritative completion of the existing link-save flow (success feedback/refresh and an enabled file input, or equivalent authoritative UI evidence) before setting the file. It must also assert that the file input is disabled while the link mutation is pending and that the upload POST starts only after the link save has settled.
A focused local real-server probe is required during implementation: with the unchanged production code and the corrected wait, the required file must upload successfully and render in the Task panel. If that probe fails after the correct wait, stop and re-groom this issue for a production defect; do not paper over it in the test.
Preserve versioned link saving, authoritative refresh, mutation ownership/focus behavior, required-file completion gating, synthetic-only fixtures, and the existing no-shim/public-data boundaries.
Acceptance Criteria
The committed diff is limited to the canonical regression test and narrowly necessary test diagnostics/helpers; no production frontend, backend runtime, infrastructure, AWS, or provider files are changed.
The test proves the pending contract: after link blur starts the PUT, Saving Task link… is observable, the required-file input is disabled, and no POST /work/api/files is attempted.
The test waits for the existing authoritative success/refresh state, then proves the file input is enabled, exactly one POST /work/api/files succeeds, the file row appears, and required-file completion becomes enabled.
The existing version assertion, conflict/recovery path, durable completion, reload persistence, and browser-error checks remain passing.
Evidence is synthetic and local only. No AWS/provider calls, infrastructure edits, deployment, production writes, compatibility shim, alternate route, or production behavior change is introduced.
Tester captures and inspects screenshots for the pending-disabled and saved/uploaded states under .tmp/screenshots/issue-216/; the screenshots must show no error page, overlap, or missing state.
Before handoff, the final worktree is clean and the handoff records the exact final-tree fingerprint command and output.
Test Scenarios
Scenario: Pending Task-link save gates the file control
Given: A synthetic required-file Task is open in the canonical real-server Task panel.
When: The operator fills the required link and blurs it while observing the link PUT.
Then: The PUT contains the expected version and returns 200; while the mutation is pending, Saving Task link… is visible, the file input is disabled, and no file-upload POST occurs.
Scenario: Authoritative refresh unlocks the upload
Given: The link PUT has returned 200 and the existing authoritative Task refresh has completed.
When: The test confirms the success feedback/enabled input and selects one synthetic file.
Then: Exactly one POST /work/api/files returns the expected success status, the file appears in .task-file-item, and Mark done is enabled without unexpected browser errors.
Scenario: Existing proof lifecycle remains intact
Given: The file and link are present.
When: The test exercises the existing synthetic conflict, retry, completion, reload, and persistence path.
Then: Version checks, conflict feedback, completion, and reloaded proof state remain correct.
Out of Scope
Any change to production frontend/src/ or backend/src/ behavior.
Replacing the existing mutation-busy, disabled-input, authoritative-refresh, focus, or completion-gating contract.
New API routes, upload semantics, retries, polling, delays, sleeps, compatibility shims, aliases, or dual-read/write behavior.
Real accounts, AWS/providers, infrastructure/templates, deployment, production data, or source repositories.
Broad unrelated E2E cleanup or changes to the Home, Docs, or other portal surfaces.
Dependencies
None. The source diagnosis and required production contract are present at 7d77632.
The Software Engineer must work in an isolated worktree and must not commit until Tester PASS and PM acceptance.
Required verification commands:
node --test frontend/test/work-detail-surface.test.mjs
npm run test:frontend:unit
npm --prefix backend run typecheck
npm --prefix backend test
CI= DATAOPS_E2E_SERVER_PORT=45162 npx playwright test backend/e2e/canonical-task-workflow-behavior.spec.js --grep "Required proof saves one versioned link, file, conflict, and durable completion" --retries=0 --reporter=line
npm --prefix backend run test:e2e
git diff --check
Final-tree fingerprint requirement:
test -z "$(git status --porcelain=v1 --untracked-files=all)"&& git diff --exit-code && git diff --cached --exit-code && git rev-parse HEAD && git ls-tree -r --full-tree HEAD | sha256sum
The handoff must include the empty status/diff result, commit SHA, and tree SHA-256.
Stabilize required-file upload regression coverage after Task link save
Status: blocked for coordinated release — Tester PASS and PM ACCEPTED; exact commit 7564688 is in local main ancestry, held and unpushed; no shipped/deployed claim
Tags:
bug,frontend,testing,P1Depends on: #217 preview/deployment/post-deployment identity gate for coordinated publication
Blocks: None
Next owner: Orchestrator after #217 release/identity PASS, for safe coordinated push; then On-Call
Resume condition: #217 completes its HUMAN preview, ordinary main/OIDC deployment, terminal On-Call result, and HUMAN identity verification; then publish the exact accepted #216 content through the safe coordinated release lineage.
Scope
At
maincommit7d77632, the real-server regression journey inbackend/e2e/canonical-task-workflow-behavior.spec.jswaits for the versioned Task-link PUT response and immediately calls PlaywrightsetInputFiles. The existing frontend contract intentionally keeps the Task mutation busy through the authoritative refresh: it rendersSaving Task link…and disables the required-file input. The early Playwright call can therefore change the browser file value without startingPOST /work/api/files.Make the smallest test-only synchronization and diagnostic change. The regression test must wait for observable authoritative completion of the existing link-save flow (success feedback/refresh and an enabled file input, or equivalent authoritative UI evidence) before setting the file. It must also assert that the file input is disabled while the link mutation is pending and that the upload POST starts only after the link save has settled.
A focused local real-server probe is required during implementation: with the unchanged production code and the corrected wait, the required file must upload successfully and render in the Task panel. If that probe fails after the correct wait, stop and re-groom this issue for a production defect; do not paper over it in the test.
Preserve versioned link saving, authoritative refresh, mutation ownership/focus behavior, required-file completion gating, synthetic-only fixtures, and the existing no-shim/public-data boundaries.
Acceptance Criteria
Saving Task link…is observable, the required-file input is disabled, and noPOST /work/api/filesis attempted.POST /work/api/filessucceeds, the file row appears, and required-file completion becomes enabled..tmp/screenshots/issue-216/; the screenshots must show no error page, overlap, or missing state.Test Scenarios
Scenario: Pending Task-link save gates the file control
Given: A synthetic required-file Task is open in the canonical real-server Task panel.
When: The operator fills the required link and blurs it while observing the link PUT.
Then: The PUT contains the expected version and returns 200; while the mutation is pending,
Saving Task link…is visible, the file input is disabled, and no file-upload POST occurs.Scenario: Authoritative refresh unlocks the upload
Given: The link PUT has returned 200 and the existing authoritative Task refresh has completed.
When: The test confirms the success feedback/enabled input and selects one synthetic file.
Then: Exactly one
POST /work/api/filesreturns the expected success status, the file appears in.task-file-item, andMark doneis enabled without unexpected browser errors.Scenario: Existing proof lifecycle remains intact
Given: The file and link are present.
When: The test exercises the existing synthetic conflict, retry, completion, reload, and persistence path.
Then: Version checks, conflict feedback, completion, and reloaded proof state remain correct.
Out of Scope
frontend/src/orbackend/src/behavior.Dependencies
7d77632.