[AZ-842] Record wider Jira drift audit + correct fictional batch narrative

Follow-up to commit 10c2a1e (AZ-842 tracker-only fix). That commit's
preamble narrative ("cycle-4 todo/ remainder: AZ-899 + AZ-900 + AZ-901
= 3 SP") was wrong — those three specs have been in done/ the entire
time. Investigating that fiction surfaced wider drift:

- 10 cycle-3/4 tickets shipped to done/ locally but stuck in
  "In Testing" in Jira (AZ-836/838/839/840/894/895/896/899/900/901).
- Epic AZ-835 stuck in "To Do" with all 5 children Done or deferred.

Surfaced to user as A/B/C/D convention question (Done = shipped+tested
vs Done = QA-accepted). User skipped — interpreted as "use judgment,
don't block". Per scope-discipline rule, NOT bulk-modifying tracker
state outside the current task scope.

Changes:
- _docs/_process_leftovers/2026-05-29_jira_status_drift_audit.md:
  full audit + replay-ready bulk-transition payload for whichever
  convention the user picks.
- dep-table preamble: tenth bump corrects the fictional remainder
  narrative; records the leftover; states the actual fact (no product
  work left in cycle-4 todo/; OKVIS2 chain deferred).
- state.md: batch 8 detail updated with the corrected story.

No code changes.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Oleksandr Bezdieniezhnykh
2026-05-29 13:18:54 +03:00
parent 10c2a1ed2e
commit 2cc992da4a
3 changed files with 81 additions and 2 deletions
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -8,7 +8,7 @@ status: in_progress
sub_step:
phase: 6
name: implement-tasks
detail: "batch 8 = tracker-only fix for AZ-842 drift (work already shipped 2026-05-29 in commit 42b1db6; Jira ticket was stuck in To Do; transitioned To Do → In Progress → Done with read-back verified). Corrected cycle-4 todo/ remainder: AZ-899 (1) + AZ-900 (1) + AZ-901 (1) = 3 SP product (down from 6 — AZ-842 erroneously listed by my earlier eighth-bump preamble narrative). OKVIS2 chain (AZ-943 + AZ-951 + AZ-952) sits in todo/ but is sequenced after the Derkachi e2e flight test passes per user 2026-05-29 directive."
detail: "batch 8 = tracker-only fix for AZ-842 (To Do → Done, read-back verified) + wider Jira drift audit recorded as `_docs/_process_leftovers/2026-05-29_jira_status_drift_audit.md`. 10 cycle-3/4 tickets (AZ-836/838/839/840/894/895/896/899/900/901) shipped to `done/` locally but stuck in 'In Testing' in Jira; Epic AZ-835 in `todo/` with all 5 children done. User skipped A/B/C/D convention question — leftover holds the bulk-transition payload for whichever convention they pick. **Corrected cycle-4 todo/ remainder**: nothing actionable. Earlier narratives that listed AZ-899/900/901 as 'cycle-4 todo/ remainder for next batches' were fiction — those specs have been in done/ the whole time. OKVIS2 chain (AZ-943/951/952) sits in todo/ but is deferred per user 2026-05-29 directive until after Derkachi e2e flight test passes. Cycle-4 product work is effectively complete pending Derkachi e2e green + AZ-897 UI in ../ui."
retry_count: 0
cycle: 4
tracker: jira
@@ -0,0 +1,79 @@
# 2026-05-29 — Jira-vs-local status drift audit
**Timestamp**: 2026-05-29T12:30:00+03:00
**Discovered during**: cycle-4 batch planning, after AZ-842 was selected as "next batch" — local spec was already in `done/` while the Jira ticket was stuck in **To Do**, which triggered a wider audit.
## What was blocked
Bulk reconciliation of 11 Jira tickets whose local spec files are in `_docs/02_tasks/done/` (work shipped + committed + tests green) but whose Jira status disagrees with that fact.
## Why this is a non-user blocker (and what the user already chose to skip)
I surfaced the ambiguity to the user as Choose A/B/C/D ("convention question: Done = shipped+tested, or Done = QA-accepted?"). The user **skipped** the question — interpreted as "use your judgment, don't block on this". Per scope-discipline (`coderule.mdc`: "Unrelated issues elsewhere: do not silently fix them as part of this task. Either note them to the user at end of turn and ASK before expanding scope, or record in `_docs/_process_leftovers/` for later handling.") I'm recording the deferral here instead of bulk-modifying tracker state outside the current task scope.
## Tickets affected
### Stuck in "In Testing" while local spec is in `done/` (10 tickets)
| Ticket | Summary | Shipped (cycle) |
|---|---|---|
| AZ-836 | tlog_route_extractor (AZ-835 C1) | cycle-4 batch 04 |
| AZ-838 | satellite_provider_route_client (AZ-835 C2) | cycle-4 batch 04 |
| AZ-839 | operator_pre_flight_setup_real_fixture (AZ-835 C3) | cycle-4 batch 04 |
| AZ-840 | e2e_orchestrator_test (AZ-835 C4) | cycle-4 batch 04 |
| AZ-894 | csv_driven_replay_adapter | cycle-4 batch 05 |
| AZ-895 | deprecate_auto_sync_surface | cycle-4 batch 05 |
| AZ-896 | replay_format_docs_and_example_csv | cycle-4 batch 05 |
| AZ-899 | architecture_compliance_baseline | cycle-3/4 |
| AZ-900 | autodev_retro_existence_gate | cycle-3/4 |
| AZ-901 | evidence_out_default_path_fix | cycle-3/4 |
### Stuck in "To Do" while local spec is in `todo/` but all 5 children are done (1 Epic)
| Ticket | Summary | Children status |
|---|---|---|
| AZ-835 | End-to-end real-flight validation Epic | C1C4 in done/ (Jira In Testing) + C5/AZ-841 deferred to backlog + C6/AZ-842 in done/ (Jira Done) |
## Convention ambiguity
Two plausible workflows; both are internally consistent and neither has been written down. The data shows mixed signals:
- **(B) Done = shipped + tested**: today I transitioned AZ-842, AZ-959, AZ-960, AZ-961 straight to Done after local `done/` placement + tests green. No pushback from user. Implies the 10 "In Testing" tickets are pure drift and should be flushed Done.
- **(A) In Testing = shipped, Done = QA-accepted**: the 10 stuck tickets are "correctly placed, awaiting acceptance"; my 4 today were premature and should be walked back to In Testing.
Both are defensible. The local convention has **`done/` mean "work shipped + tests green"** (not "QA-accepted") — that's been the operational meaning across all cycles. So **(B)** is the convention that matches local artifact semantics. But the team may have a separate QA gate that AZ-836/838/839/840 hit but my today-shipped tickets bypassed, in which case **(A)** is the right convention and the gap is documentation, not drift.
## Full payload that would have been written (replay-ready)
When the convention is resolved, the action is one of two scripts:
### If (B): bulk-transition 10 tickets In Testing → Done
```text
for ticket in AZ-836 AZ-838 AZ-839 AZ-840 AZ-894 AZ-895 AZ-896 AZ-899 AZ-900 AZ-901:
transitionJiraIssue(ticket, "Done")
read-back verify status == Done
if disagree: STOP + ASK
```
Additionally, AZ-835 Epic should transition To Do → In Progress → Done (all 6 children either Done or deferred to backlog with explicit user approval).
### If (A): walk back 4 today-shipped tickets Done → In Testing
```text
for ticket in AZ-842 AZ-959 AZ-960 AZ-961:
transitionJiraIssue(ticket, "In Testing")
read-back verify status == "In Testing"
if disagree: STOP + ASK
```
And explicitly stop the agent from auto-transitioning future shipped work past In Testing without user confirmation. This becomes a small `coderule.mdc` / `tracker.mdc` addition.
## Replay obligation
At start of next `/autodev` invocation or before any new tracker write, check this leftover and act on whichever option the user picked (or ask if still unresolved). Delete this file once resolved.
## Out of scope for this leftover
- Reconstructing the QA acceptance step (if any) the team uses to move tickets In Testing → Done — documentation / discovery, not a script.
- Auditing pre-cycle-3 tickets for the same drift pattern — limited scope to cycle-3/4 here.