[AZ-560] [AZ-561] [AZ-562] Replay tracker leftovers for testability epic

Atlassian MCP came back online; per tracker.mdc Leftovers Mechanism
the deferred Jira writes for the testability refactor have been
replayed:

  - Epic AZ-560 created — 01-testability-refactoring (annotations)
  - Task AZ-561 created — JWKS HTTPS env gate (was C01, 1 pt)
  - Task AZ-562 created — RabbitMQ host DNS resolution (C02, 2 pt)

Both tasks linked to epic AZ-560 with status To Do and full
descriptions matching the in-tree task specs. The implementation
code (commit 90d48cf) and verification (commit d7d1c0e) predate
these tickets — the tickets are after-the-fact tracker hygiene.

File housekeeping:
  - Renamed _docs/02_tasks/done/01_*.md -> AZ-561_*.md and updated
    the Task / Tracker / Epic headers inside.
  - Renamed _docs/02_tasks/done/02_*.md -> AZ-562_*.md and updated
    the Task / Tracker / Epic headers inside.
  - _docs/02_tasks/_dependencies_table.md rewritten to reference
    the assigned Jira IDs and the completed-batch status.
  - _docs/_autodev_state.md: tracker mode flipped from `local` to
    `jira` now that all pending writes succeeded.
  - Deleted _docs/_process_leftovers/2026-05-14_testability-tracker.md
    (replay complete; nothing left to defer).

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Oleksandr Bezdieniezhnykh
2026-05-14 20:42:30 +03:00
parent d7d1c0ed6a
commit 637f41c51c
5 changed files with 15 additions and 85 deletions
+7 -9
View File
@@ -2,17 +2,15 @@
Tracks ordering and inter-task dependencies for all task specs in `_docs/02_tasks/todo/`. Updated by the decompose / refactor / new-task skills whenever a task is added or completed.
## Current Tasks (cycle 1 testability refactor)
## Completed — cycle 1, testability refactor (epic AZ-560)
| # | Task File | Component | Complexity | Depends on | Notes |
|---|-----------|-----------|-----------|------------|-------|
| 01 | `01_refactor_jwks_https_env_gate.md` | `06_platform` → Auth (`src/Auth/JwtExtensions.cs`) | 1 | None | C01 from `_docs/04_refactoring/01-testability-refactoring/list-of-changes.md` |
| 02 | `02_refactor_rabbitmq_host_dns_resolution.md` | `02_annotations-realtime-sync` (`src/Services/FailsafeProducer.cs`) | 2 | None | C02 from `_docs/04_refactoring/01-testability-refactoring/list-of-changes.md` |
| Task | Title | Component | Complexity | Depends on | Notes |
|------|-------|-----------|-----------|------------|-------|
| [AZ-561](https://denyspopov.atlassian.net/browse/AZ-561) | JWKS HTTPS env gate | `06_platform` → Auth (`src/Auth/JwtExtensions.cs`) | 1 | None | C01 from `_docs/04_refactoring/01-testability-refactoring/list-of-changes.md` — landed in commit 90d48cf |
| [AZ-562](https://denyspopov.atlassian.net/browse/AZ-562) | RabbitMQ host DNS resolution | `02_annotations-realtime-sync` (`src/Services/FailsafeProducer.cs`) | 2 | None | C02 from `_docs/04_refactoring/01-testability-refactoring/list-of-changes.md` — landed in commit 90d48cf |
## Independent Tasks
Tasks 01 and 02 touch disjoint files and have no inter-dependency. They may be implemented in parallel or in either order; the implement skill is free to batch them together.
Tasks AZ-561 and AZ-562 touch disjoint files and were implemented as a single batch.
## Tracker Status
`tracker: local` (per `_docs/_autodev_state.md`). Tracker writes are recorded in `_docs/_process_leftovers/2026-05-14_testability-tracker.md` for replay when Atlassian MCP is restored. On replay, each `PENDING_*` task ID in the file headers must be renamed to its assigned `AZ-NNNN` Jira issue key.
`tracker: jira` (per `_docs/_autodev_state.md`). All task headers carry their Jira issue key. The deferred-write leftover at `_docs/_process_leftovers/2026-05-14_testability-tracker.md` was replayed on 2026-05-14 and removed.
@@ -1,13 +1,13 @@
# Refactor: gate JWKS HTTPS requirement on `ASPNETCORE_ENVIRONMENT=E2ETest`
**Task**: PENDING_refactor_jwks_https_env_gate
**Task**: AZ-561_refactor_jwks_https_env_gate
**Name**: JWKS HTTPS env gate
**Description**: Gate the JWKS document retriever's `RequireHttps` flag on the ASP.NET Core environment name so the e2e test harness (which serves the mock issuer over plain HTTP on the test-only docker network) can fetch the public key set without weakening production HTTPS enforcement.
**Complexity**: 1 point
**Dependencies**: None
**Component**: `06_platform` → Auth (`src/Auth/JwtExtensions.cs`)
**Tracker**: pending (tracker MCP unavailable at task-creation time — see `_docs/_process_leftovers/2026-05-14_testability-tracker.md`)
**Epic**: pending`01-testability-refactoring`
**Tracker**: AZ-561
**Epic**: AZ-560`01-testability-refactoring (annotations)`
## Problem
@@ -1,13 +1,13 @@
# Refactor: resolve RabbitMQ broker host via DNS in `FailsafeProducer`
**Task**: PENDING_refactor_rabbitmq_host_dns_resolution
**Task**: AZ-562_refactor_rabbitmq_host_dns_resolution
**Name**: RabbitMQ host DNS resolution
**Description**: Replace `IPAddress.Parse(config.Host)` with a hostname-aware resolver (literal-IP shortcut + `Dns.GetHostAddressesAsync` fallback) so the `FailsafeProducer` outbox-drain loop can reach the broker when `RABBITMQ_HOST` is a DNS service name — which is the documented test configuration and the production-normal configuration for any container deployment.
**Complexity**: 2 points
**Dependencies**: None
**Component**: `02_annotations-realtime-sync``FailsafeProducer` (`src/Services/FailsafeProducer.cs`)
**Tracker**: pending (tracker MCP unavailable at task-creation time — see `_docs/_process_leftovers/2026-05-14_testability-tracker.md`)
**Epic**: pending`01-testability-refactoring`
**Tracker**: AZ-562
**Epic**: AZ-560`01-testability-refactoring (annotations)`
## Problem
+2 -2
View File
@@ -3,7 +3,7 @@
## Current Step
flow: existing-code
step: 5
name: Refactor Backlog Triage
name: Decompose Tests
status: not_started
sub_step:
phase: 0
@@ -11,7 +11,7 @@ sub_step:
detail: ""
retry_count: 0
cycle: 1
tracker: local
tracker: jira
## Completed Steps
- step: 1
@@ -1,68 +0,0 @@
# Deferred Tracker Writes — 2026-05-14 (testability refactor)
**Created**: 2026-05-14T19:15+03:00
**Trigger**: Atlassian MCP (Jira) reported `errored` status during `/autodev` Step 4 → refactor skill Phase 2c (Create Epic) and 2d (Task Decomposition).
**User decision**: skipped the structured tracker gate; autodev proceeded in `tracker: local` mode and recorded these deferred writes for replay.
**Replay target**: Jira at `denyspopov.atlassian.net`, project key `AZ`.
## Pending Writes
### 1. Epic — `01-testability-refactoring`
- **Type**: Epic
- **Summary**: `01-testability-refactoring` — gate JWKS HTTPS + fix RabbitMQ host resolution
- **Description**: Source of truth lives in `_docs/04_refactoring/01-testability-refactoring/list-of-changes.md`. This epic groups the two surgical changes needed to make the documented test suite (`_docs/02_document/tests/`) runnable against the SUT.
- **Story points**: 3 (sum of child tasks)
- **Project**: AZ
- **Target status**: To Do
### 2. Story / Task — JWKS HTTPS env gate (C01)
- **Type**: Story (or Task — match existing project convention)
- **Summary**: `[refactor] Gate JWKS HTTPS requirement on ASPNETCORE_ENVIRONMENT=E2ETest`
- **Description**: full body lives in `_docs/02_tasks/todo/01_refactor_jwks_https_env_gate.md` — copy verbatim into the Description field on replay.
- **Story points**: 1
- **Epic link**: the epic created in write 1
- **Project**: AZ
- **Target status**: To Do
- **Replay action**: after the ticket is created, rename the file to `_docs/02_tasks/todo/{AZ-NNNN}_refactor_jwks_https_env_gate.md` and update the `**Task**:` and `**Tracker**:` headers inside the file.
### 3. Story / Task — RabbitMQ host DNS resolution (C02)
- **Type**: Story (or Task — match existing project convention)
- **Summary**: `[refactor] Resolve RABBITMQ_HOST via DNS in FailsafeProducer`
- **Description**: full body lives in `_docs/02_tasks/todo/02_refactor_rabbitmq_host_dns_resolution.md` — copy verbatim into the Description field on replay.
- **Story points**: 2
- **Epic link**: the epic created in write 1
- **Project**: AZ
- **Target status**: To Do
- **Replay action**: after the ticket is created, rename the file to `_docs/02_tasks/todo/{AZ-NNNN}_refactor_rabbitmq_host_dns_resolution.md` and update the `**Task**:` and `**Tracker**:` headers inside the file.
## Replay Procedure
When Atlassian MCP is restored:
1. From the workspace root, invoke the autodev (or run leftovers replay manually):
- Create the epic per write 1.
- For each task write, create the issue with the documented Summary, Description (verbatim from the task file), Story points, and Epic link.
2. Update the task files in `_docs/02_tasks/todo/`:
- Rename each file to use the assigned `AZ-NNNN` key.
- Update the `**Task**:` header line.
- Update the `**Tracker**:` line from `pending` to the assigned ID.
- Update the `**Epic**:` line from `pending — 01-testability-refactoring` to the assigned epic ID.
3. Update `_docs/02_tasks/_dependencies_table.md` to reference the assigned IDs.
4. Update `_docs/_autodev_state.md`: change `tracker: local` to `tracker: jira` once all replays complete.
5. Delete this leftovers file.
## Blocker Reason
Atlassian MCP server is reporting `errored` per `/Users/obezdienie001/.cursor/projects/Users-obezdienie001-dev-azaion-suite-annotations/mcps/user-atlassian-mcp/STATUS.md`. Likely cause: auth token expired or MCP server restart pending. Resolution path: re-authenticate from Cursor Settings → MCP Servers → user-atlassian-mcp.
## Hard Gates Bypassed? — No
Per `tracker.mdc` Leftovers Mechanism, only **non-user-input** blockers may be deferred. The user-input gates that *cannot* be deferred (scope, approval, choice between alternatives, irreversible actions) were all answered before reaching this write step:
- C01 + C02 list-of-changes approved by user via the Phase 1 BLOCKING gate (option A).
- The tracker mode (local vs. Jira) was surfaced to the user; the user skipped the structured choice and let autodev continue with the information available, which the orchestrator interpreted as "proceed in local mode and record leftovers" — consistent with the user's prior explicit approval of the list-of-changes scope.
This file is appropriate for the leftovers mechanism — no user clarification is required to replay these writes; only the MCP being restored.