docs: Added docs/s07-uat.md to close S07 with imported acceptance-run e…
- "docs/s07-uat.md" - ".gsd/milestones/M001/slices/S07/tasks/T01-SUMMARY.md" GSD-Task: S07/T01
This commit is contained in:
@@ -1,6 +1,18 @@
|
||||
# S07: Daily-loop UAT artifact closure
|
||||
|
||||
**Goal:** TBD
|
||||
**Goal:** Publish the executed daily-loop UAT closure artifact proving one seeded job stays coherent across /jobs, the job workspace, /reminders, and /dashboard using the existing S06 acceptance runner.
|
||||
**Demo:** After this: The overview-surface/browser validation is captured as a real executed UAT artifact instead of a placeholder, proving the same job behaves coherently across table, dashboard, reminders, and workspace entry.
|
||||
|
||||
## Tasks
|
||||
- [x] **T01: Added docs/s07-uat.md to close S07 with imported acceptance-run evidence for the seeded daily-loop job.** — Why: Give S07 its own UAT closure document that reuses the S06 acceptance runner as the evidence source and frames the daily-loop proof across /jobs → workspace → reminders → dashboard while preserving the manual-send and Gmail-continuity notes. Do: review docs/s06-acceptance-run.md and scripts/s06-acceptance-run.sh for generated/manual seams; create docs/s07-uat.md with sections for surfaces, job identity, manual-send boundary evidence, Gmail continuity status, rerun commands, and artifact links; note that evidence is imported from the acceptance run rather than duplicated. Done when docs/s07-uat.md exists with the sections above and references the seeded job (S06 Acceptance Backend Engineer) and acceptance artifact.
|
||||
- Estimate: 45m
|
||||
- Files: docs/s07-uat.md, docs/s06-acceptance-run.md
|
||||
- Verify: test -s docs/s07-uat.md && grep -q "S06 Acceptance Backend Engineer" docs/s07-uat.md
|
||||
- [ ] **T02: Re-run acceptance flow and record browser evidence + manual-send boundary** — Why: Refresh the live acceptance evidence and capture the manual-send boundary plus Gmail continuity status for S07. Do: run `bash scripts/s06-preflight.sh`; run `bash scripts/s06-acceptance-run.sh` (with AUTH_TOKEN if needed) to regenerate docs/s06-acceptance-run.md and artifacts; confirm the seeded job identity and cross-surface observations, and extract artifact links (logs, trace, timeline, screenshots/debug bundle); update docs/s07-uat.md with the latest evidence, explicitly stating the manual-send boundary (GET followup-draft seen, no POST send-followup) and the Gmail continuity limitation observed in this run. Failure modes: backend/API down → note preflight failure; auth/token missing → use runner fallback guidance; browser/assertion failures → capture log paths; malformed artifact paths → rerun and repair links. Negative checks: ensure acceptance run did not issue send-followup, and Gmail refresh absence is recorded, not implied passing. Done when both docs are updated with current run evidence and links.
|
||||
- Estimate: 1h
|
||||
- Files: scripts/s06-preflight.sh, scripts/s06-acceptance-run.sh, docs/s06-acceptance-run.md, docs/s07-uat.md
|
||||
- Verify: bash scripts/s06-preflight.sh && bash scripts/s06-acceptance-run.sh && test -s docs/s06-acceptance-run.md && grep -q "manual-send boundary" docs/s07-uat.md
|
||||
- [ ] **T03: Re-run focused daily-loop UI tests and fold results into UAT doc** — Why: Anchor the S07 UAT closure to the existing focused UI regressions that encode the cross-surface contract. Do: from job-tracker-ui/, run `CI=true npm test -- --runInBand --watch=false src/daily-control-loop.test.tsx src/workflow-trust-signals.test.tsx`; capture pass/fail summaries and note any flake; update docs/s07-uat.md with the test command, date/time, and results so the UAT doc cites both live run evidence and deterministic regression coverage. Failure modes: missing node modules → npm install; test failures → log failing test output and blockers in the doc. Negative tests: ensure the doc notes what happens if these tests fail (e.g., stop claiming UAT closure). Done when tests pass and docs/s07-uat.md reflects the run and command used.
|
||||
- Estimate: 40m
|
||||
- Files: job-tracker-ui/src/daily-control-loop.test.tsx, job-tracker-ui/src/workflow-trust-signals.test.tsx, docs/s07-uat.md
|
||||
- Verify: CI=true npm --prefix job-tracker-ui test -- --runInBand --watch=false src/daily-control-loop.test.tsx src/workflow-trust-signals.test.tsx && grep -q "UI regression results" docs/s07-uat.md
|
||||
|
||||
@@ -0,0 +1,122 @@
|
||||
# S07 Research — Daily-loop UAT artifact closure
|
||||
|
||||
## Summary
|
||||
|
||||
This is **light/targeted** work, not a new subsystem. S06 already built the hard part: a repeatable localhost preflight + seed + acceptance runner, a deterministic acceptance fixture, and a live evidence doc at `docs/s06-acceptance-run.md`. S07’s missing artifact is the **planner-facing research artifact for this slice**, and the product-facing gap is narrower: convert the existing live rerun evidence into a durable **executed daily-loop UAT closure artifact** that explicitly proves one seeded job behaves coherently across `/jobs`, workspace entry, `/reminders`, and `/dashboard`.
|
||||
|
||||
The codebase already has the acceptance data and most of the evidence:
|
||||
|
||||
- `scripts/s06-acceptance-data.sh` seeds the deterministic fixture (`S06 Acceptance Labs` / `S06 Acceptance Backend Engineer`) through the live API and prints the expected workflow/readiness/reminder outputs.
|
||||
- `scripts/s06-acceptance-run.sh` runs preflight + seeding + one focused UI regression and rewrites the generated section of `docs/s06-acceptance-run.md` while **preserving** the guided browser section between `<!-- acceptance-run:browser:start -->` markers.
|
||||
- `docs/s06-acceptance-run.md` already contains the real browser observations, debug-bundle paths, trace path, timeline path, and the explicit manual-send / Gmail-continuity limitations from the latest live run.
|
||||
- `job-tracker-ui/src/daily-control-loop.test.tsx` and `job-tracker-ui/src/workflow-trust-signals.test.tsx` already encode the cross-surface contract that the same workflow signal should route `/jobs`, `/dashboard`, and `/reminders` into the same workspace semantics.
|
||||
|
||||
So the natural S07 move is **not** to invent new acceptance data or new routing logic. It is to package the existing live run into the milestone’s final UAT closure shape and make the evidence chain easy to rerun and audit.
|
||||
|
||||
## Requirement Focus
|
||||
|
||||
Active requirements this slice supports:
|
||||
|
||||
- **R008** — keep follow-up/reply assistance manual. S06 already captured the live manual-send proof; S07 must preserve that evidence in the final UAT closure artifact and avoid weakening the claim.
|
||||
- **R009** — keep the loop individual-first. The seeded fixture and the `/jobs -> workspace -> /reminders -> /dashboard` proof are all single-job, single-user checks; S07 should keep the UAT narrative framed around one person managing one role end to end.
|
||||
|
||||
Validated requirements this slice is effectively re-demonstrating in executed-UAT form:
|
||||
|
||||
- **R005 / R006 / R007 / R010** — the same job must appear and behave coherently across the overview surfaces and the individual workspace.
|
||||
|
||||
## Skills Discovered
|
||||
|
||||
Installed skills already directly relevant; no additional skill install is needed.
|
||||
|
||||
- `agent-browser` — relevant for the executed browser/UAT pass. Two rules matter here:
|
||||
- **navigate → snapshot → interact → re-snapshot** after DOM/navigation changes, because refs become stale after page changes.
|
||||
- use explicit verification/diff evidence rather than prose-only confirmation.
|
||||
- `test` — relevant because S07 should continue to anchor the closure artifact to the existing focused UI regressions instead of expanding scope to a broad suite.
|
||||
- `react-best-practices` / `aspnet-core` exist, but S07 does not look like a React or backend architecture change first; it is mostly artifact/evidence closure on top of established behavior.
|
||||
|
||||
## Recommendation
|
||||
|
||||
Treat S07 as an **artifact-closure slice**, not a feature slice.
|
||||
|
||||
Build/prove in this order:
|
||||
|
||||
1. **Reuse the S06 acceptance fixture and runner as the source of truth.** Do not create a second seeded job, second seed script, or second acceptance data contract.
|
||||
2. **Add or refresh one final S07-owned UAT artifact** that references the latest executed run and records the exact browser evidence for:
|
||||
- `/jobs` row signals
|
||||
- workspace entry for that same job
|
||||
- `/reminders` visibility and action routing
|
||||
- `/dashboard` visibility/analytics presence
|
||||
- manual-send boundary still holding
|
||||
- Gmail continuity status reported honestly
|
||||
3. **Keep the shell-generated/live-browser split.** `scripts/s06-acceptance-run.sh` already has a good seam: generated shell summary vs preserved guided-browser section. Reuse that pattern instead of hand-editing a monolithic markdown file.
|
||||
4. **Lean on the existing focused UI tests as regression proof**, then use browser assertions/debug artifacts for the final live executed proof.
|
||||
|
||||
The simplest successful version of S07 is likely one of these:
|
||||
|
||||
- extend the existing S06 artifact flow so the executed browser observations become the final S07/UAT closure evidence, or
|
||||
- create a small S07-specific wrapper/doc that imports the current run metadata from `docs/s06-acceptance-run.md` and adds a final closure-oriented summary without duplicating the seeding/runtime logic.
|
||||
|
||||
## Implementation Landscape
|
||||
|
||||
### Files that already matter
|
||||
|
||||
- `docs/s06-acceptance-run.md`
|
||||
- Current live evidence artifact.
|
||||
- Already contains the exact observations S07 needs: `/jobs`, workspace, `/reminders`, `/dashboard`, trace/timeline/debug paths, manual-send proof, and the honest Gmail limitation.
|
||||
- Important detail: it is partially generated and partially hand-preserved.
|
||||
|
||||
- `scripts/s06-acceptance-run.sh`
|
||||
- Orchestrates preflight, seed, focused UI regression, and doc refresh.
|
||||
- Preserves the browser-observation block between `<!-- acceptance-run:browser:start -->` markers.
|
||||
- Natural seam if S07 wants a rerunnable final artifact instead of a one-off markdown edit.
|
||||
|
||||
- `scripts/s06-acceptance-data.sh`
|
||||
- Owns the deterministic fixture values and the expected follow-up/readiness state.
|
||||
- If S07 references concrete labels or expected reminder badges, those should come from here rather than being duplicated by hand.
|
||||
|
||||
- `.gsd/milestones/M001/slices/S06/S06-UAT.md`
|
||||
- Already defines the manual test cases and pass criteria for the live acceptance rerun.
|
||||
- Good source material for a final “executed results” closure artifact, but it is still a test-plan style document, not the final closure proof itself.
|
||||
|
||||
- `job-tracker-ui/src/daily-control-loop.test.tsx`
|
||||
- Best compact contract test for this slice’s user-facing claim.
|
||||
- Proves `/jobs`, `/dashboard`, and `/reminders` route into the shared workspace flow.
|
||||
|
||||
- `job-tracker-ui/src/workflow-trust-signals.test.tsx`
|
||||
- Lower-level routing/readiness contract proof.
|
||||
- Especially useful if S07 work changes route/query-param handling or the wording of action buttons.
|
||||
|
||||
### Natural seams for task breakdown
|
||||
|
||||
1. **Artifact-shape task**
|
||||
- Decide whether S07 owns a new doc or reuses `docs/s06-acceptance-run.md` as the canonical executed artifact.
|
||||
- Keep the generated/manual split if touching the runner.
|
||||
|
||||
2. **Browser-evidence task**
|
||||
- Re-run the live browser flow and capture explicit assertions/screenshots/debug bundles for the four overview/workspace surfaces.
|
||||
- Record the same job identity consistently across all surfaces.
|
||||
|
||||
3. **Regression/verification task**
|
||||
- Re-run the focused frontend tests and the acceptance runner so the final artifact is backed by both live execution and deterministic regression output.
|
||||
|
||||
## Constraints / Gotchas
|
||||
|
||||
- **Do not over-claim Gmail continuity.** S06 explicitly recorded that seeded correspondence was visible but `POST /api/gmail/refresh-linked-threads` did not fire in the local run. S07 should preserve that honesty unless the environment actually exposes connected Gmail state.
|
||||
- **Do not break the deterministic fixture.** `scripts/s06-acceptance-data.sh` depends on backdated `followUpAt` and correspondence timestamps to keep the fixture in `follow-up` / `Waiting 14d` state.
|
||||
- **Do not replace the manual-send proof with looser prose.** The strongest current evidence is concrete network behavior: `GET .../followup-draft` seen, no `POST .../send-followup` during draft review/regeneration.
|
||||
- **Avoid duplicating fixture constants.** Company/job labels, dates, and expected reminder state already live in the seed script and UAT doc.
|
||||
|
||||
## Verification
|
||||
|
||||
Minimum verification stack for S07 planning/execution:
|
||||
|
||||
- `bash scripts/s06-preflight.sh`
|
||||
- `bash scripts/s06-acceptance-run.sh`
|
||||
- `test -s docs/s06-acceptance-run.md`
|
||||
- from `job-tracker-ui/`: `CI=true npm test -- --runInBand --watch=false src/daily-control-loop.test.tsx src/workflow-trust-signals.test.tsx`
|
||||
|
||||
For the live browser part, prefer explicit assertions/evidence capture over prose-only checks. The final executed artifact should point to screenshot/debug-bundle/trace/timeline outputs and state exactly which surface each artifact proves.
|
||||
|
||||
## Planner Takeaway
|
||||
|
||||
This slice should be planned as **documentation/evidence closure on top of S06’s existing live-run machinery**. The risky work is already done. The planner should avoid new backend or UI feature work unless the rerun shows a real gap. The likely deliverable is a small, deterministic extension of the current acceptance-run artifact flow that turns S06’s live observations into the final S07 executed UAT closure for the daily loop.
|
||||
@@ -0,0 +1,22 @@
|
||||
---
|
||||
estimated_steps: 1
|
||||
estimated_files: 2
|
||||
skills_used: []
|
||||
---
|
||||
|
||||
# T01: Shape S07 UAT doc around acceptance-run evidence seam
|
||||
|
||||
Why: Give S07 its own UAT closure document that reuses the S06 acceptance runner as the evidence source and frames the daily-loop proof across /jobs → workspace → reminders → dashboard while preserving the manual-send and Gmail-continuity notes. Do: review docs/s06-acceptance-run.md and scripts/s06-acceptance-run.sh for generated/manual seams; create docs/s07-uat.md with sections for surfaces, job identity, manual-send boundary evidence, Gmail continuity status, rerun commands, and artifact links; note that evidence is imported from the acceptance run rather than duplicated. Done when docs/s07-uat.md exists with the sections above and references the seeded job (S06 Acceptance Backend Engineer) and acceptance artifact.
|
||||
|
||||
## Inputs
|
||||
|
||||
- ``docs/s06-acceptance-run.md``
|
||||
- ``scripts/s06-acceptance-run.sh``
|
||||
|
||||
## Expected Output
|
||||
|
||||
- ``docs/s07-uat.md``
|
||||
|
||||
## Verification
|
||||
|
||||
test -s docs/s07-uat.md && grep -q "S06 Acceptance Backend Engineer" docs/s07-uat.md
|
||||
@@ -0,0 +1,76 @@
|
||||
---
|
||||
id: T01
|
||||
parent: S07
|
||||
milestone: M001
|
||||
provides: []
|
||||
requires: []
|
||||
affects: []
|
||||
key_files: ["docs/s07-uat.md", ".gsd/milestones/M001/slices/S07/tasks/T01-SUMMARY.md"]
|
||||
key_decisions: ["Reused docs/s06-acceptance-run.md as the canonical execution artifact and positioned docs/s07-uat.md as an imported-evidence closure document instead of duplicating generated run output."]
|
||||
patterns_established: []
|
||||
drill_down_paths: []
|
||||
observability_surfaces: []
|
||||
duration: ""
|
||||
verification_result: "Verified the task-plan must-have by confirming docs/s07-uat.md exists, is non-empty, and contains the seeded job identity string S06 Acceptance Backend Engineer."
|
||||
completed_at: 2026-03-27T08:36:36.287Z
|
||||
blocker_discovered: false
|
||||
---
|
||||
|
||||
# T01: Added docs/s07-uat.md to close S07 with imported acceptance-run evidence for the seeded daily-loop job.
|
||||
|
||||
> Added docs/s07-uat.md to close S07 with imported acceptance-run evidence for the seeded daily-loop job.
|
||||
|
||||
## What Happened
|
||||
---
|
||||
id: T01
|
||||
parent: S07
|
||||
milestone: M001
|
||||
key_files:
|
||||
- docs/s07-uat.md
|
||||
- .gsd/milestones/M001/slices/S07/tasks/T01-SUMMARY.md
|
||||
key_decisions:
|
||||
- Reused docs/s06-acceptance-run.md as the canonical execution artifact and positioned docs/s07-uat.md as an imported-evidence closure document instead of duplicating generated run output.
|
||||
duration: ""
|
||||
verification_result: passed
|
||||
completed_at: 2026-03-27T08:36:36.289Z
|
||||
blocker_discovered: false
|
||||
---
|
||||
|
||||
# T01: Added docs/s07-uat.md to close S07 with imported acceptance-run evidence for the seeded daily-loop job.
|
||||
|
||||
**Added docs/s07-uat.md to close S07 with imported acceptance-run evidence for the seeded daily-loop job.**
|
||||
|
||||
## What Happened
|
||||
|
||||
Reviewed the S07 task contract together with docs/s06-acceptance-run.md and scripts/s06-acceptance-run.sh to confirm the runner-generated/manual seam. Created docs/s07-uat.md as a slice-specific closure artifact that references the canonical S06 acceptance run instead of duplicating it, names the seeded job S06 Acceptance Backend Engineer, summarizes the /jobs → workspace → /reminders → /dashboard coherence proof, preserves the manual-send boundary evidence, records the Gmail continuity limitation explicitly, and includes rerun commands plus artifact links.
|
||||
|
||||
## Verification
|
||||
|
||||
Verified the task-plan must-have by confirming docs/s07-uat.md exists, is non-empty, and contains the seeded job identity string S06 Acceptance Backend Engineer.
|
||||
|
||||
## Verification Evidence
|
||||
|
||||
| # | Command | Exit Code | Verdict | Duration |
|
||||
|---|---------|-----------|---------|----------|
|
||||
| 1 | `test -s /home/pi/development/JobTracker/.gsd/worktrees/M001/docs/s07-uat.md && grep -q "S06 Acceptance Backend Engineer" /home/pi/development/JobTracker/.gsd/worktrees/M001/docs/s07-uat.md` | 0 | ✅ pass | 1ms |
|
||||
|
||||
|
||||
## Deviations
|
||||
|
||||
None.
|
||||
|
||||
## Known Issues
|
||||
|
||||
None.
|
||||
|
||||
## Files Created/Modified
|
||||
|
||||
- `docs/s07-uat.md`
|
||||
- `.gsd/milestones/M001/slices/S07/tasks/T01-SUMMARY.md`
|
||||
|
||||
|
||||
## Deviations
|
||||
None.
|
||||
|
||||
## Known Issues
|
||||
None.
|
||||
@@ -0,0 +1,25 @@
|
||||
---
|
||||
estimated_steps: 1
|
||||
estimated_files: 4
|
||||
skills_used: []
|
||||
---
|
||||
|
||||
# T02: Re-run acceptance flow and record browser evidence + manual-send boundary
|
||||
|
||||
Why: Refresh the live acceptance evidence and capture the manual-send boundary plus Gmail continuity status for S07. Do: run `bash scripts/s06-preflight.sh`; run `bash scripts/s06-acceptance-run.sh` (with AUTH_TOKEN if needed) to regenerate docs/s06-acceptance-run.md and artifacts; confirm the seeded job identity and cross-surface observations, and extract artifact links (logs, trace, timeline, screenshots/debug bundle); update docs/s07-uat.md with the latest evidence, explicitly stating the manual-send boundary (GET followup-draft seen, no POST send-followup) and the Gmail continuity limitation observed in this run. Failure modes: backend/API down → note preflight failure; auth/token missing → use runner fallback guidance; browser/assertion failures → capture log paths; malformed artifact paths → rerun and repair links. Negative checks: ensure acceptance run did not issue send-followup, and Gmail refresh absence is recorded, not implied passing. Done when both docs are updated with current run evidence and links.
|
||||
|
||||
## Inputs
|
||||
|
||||
- ``scripts/s06-preflight.sh``
|
||||
- ``scripts/s06-acceptance-run.sh``
|
||||
- ``docs/s07-uat.md``
|
||||
|
||||
## Expected Output
|
||||
|
||||
- ``docs/s06-acceptance-run.md``
|
||||
- ``docs/s07-uat.md``
|
||||
- ``docs/artifacts/s06-acceptance/logs/``
|
||||
|
||||
## Verification
|
||||
|
||||
bash scripts/s06-preflight.sh && bash scripts/s06-acceptance-run.sh && test -s docs/s06-acceptance-run.md && grep -q "manual-send boundary" docs/s07-uat.md
|
||||
@@ -0,0 +1,23 @@
|
||||
---
|
||||
estimated_steps: 1
|
||||
estimated_files: 3
|
||||
skills_used: []
|
||||
---
|
||||
|
||||
# T03: Re-run focused daily-loop UI tests and fold results into UAT doc
|
||||
|
||||
Why: Anchor the S07 UAT closure to the existing focused UI regressions that encode the cross-surface contract. Do: from job-tracker-ui/, run `CI=true npm test -- --runInBand --watch=false src/daily-control-loop.test.tsx src/workflow-trust-signals.test.tsx`; capture pass/fail summaries and note any flake; update docs/s07-uat.md with the test command, date/time, and results so the UAT doc cites both live run evidence and deterministic regression coverage. Failure modes: missing node modules → npm install; test failures → log failing test output and blockers in the doc. Negative tests: ensure the doc notes what happens if these tests fail (e.g., stop claiming UAT closure). Done when tests pass and docs/s07-uat.md reflects the run and command used.
|
||||
|
||||
## Inputs
|
||||
|
||||
- ``job-tracker-ui/src/daily-control-loop.test.tsx``
|
||||
- ``job-tracker-ui/src/workflow-trust-signals.test.tsx``
|
||||
- ``docs/s07-uat.md``
|
||||
|
||||
## Expected Output
|
||||
|
||||
- ``docs/s07-uat.md``
|
||||
|
||||
## Verification
|
||||
|
||||
CI=true npm --prefix job-tracker-ui test -- --runInBand --watch=false src/daily-control-loop.test.tsx src/workflow-trust-signals.test.tsx && grep -q "UI regression results" docs/s07-uat.md
|
||||
Reference in New Issue
Block a user