mirror of
https://github.com/azaion/annotations.git
synced 2026-06-21 10:31:06 +00:00
[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 (commit90d48cf) and verification (commitd7d1c0e) 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:
@@ -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.
|
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 |
|
| Task | Title | 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` |
|
| [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 |
|
||||||
| 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` |
|
| [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 AZ-561 and AZ-562 touch disjoint files and were implemented as a single batch.
|
||||||
|
|
||||||
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.
|
|
||||||
|
|
||||||
## Tracker Status
|
## 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.
|
||||||
|
|||||||
+3
-3
@@ -1,13 +1,13 @@
|
|||||||
# Refactor: gate JWKS HTTPS requirement on `ASPNETCORE_ENVIRONMENT=E2ETest`
|
# 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
|
**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.
|
**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
|
**Complexity**: 1 point
|
||||||
**Dependencies**: None
|
**Dependencies**: None
|
||||||
**Component**: `06_platform` → Auth (`src/Auth/JwtExtensions.cs`)
|
**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`)
|
**Tracker**: AZ-561
|
||||||
**Epic**: pending — `01-testability-refactoring`
|
**Epic**: AZ-560 — `01-testability-refactoring (annotations)`
|
||||||
|
|
||||||
## Problem
|
## Problem
|
||||||
|
|
||||||
+3
-3
@@ -1,13 +1,13 @@
|
|||||||
# Refactor: resolve RabbitMQ broker host via DNS in `FailsafeProducer`
|
# 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
|
**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.
|
**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
|
**Complexity**: 2 points
|
||||||
**Dependencies**: None
|
**Dependencies**: None
|
||||||
**Component**: `02_annotations-realtime-sync` → `FailsafeProducer` (`src/Services/FailsafeProducer.cs`)
|
**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`)
|
**Tracker**: AZ-562
|
||||||
**Epic**: pending — `01-testability-refactoring`
|
**Epic**: AZ-560 — `01-testability-refactoring (annotations)`
|
||||||
|
|
||||||
## Problem
|
## Problem
|
||||||
|
|
||||||
@@ -3,7 +3,7 @@
|
|||||||
## Current Step
|
## Current Step
|
||||||
flow: existing-code
|
flow: existing-code
|
||||||
step: 5
|
step: 5
|
||||||
name: Refactor Backlog Triage
|
name: Decompose Tests
|
||||||
status: not_started
|
status: not_started
|
||||||
sub_step:
|
sub_step:
|
||||||
phase: 0
|
phase: 0
|
||||||
@@ -11,7 +11,7 @@ sub_step:
|
|||||||
detail: ""
|
detail: ""
|
||||||
retry_count: 0
|
retry_count: 0
|
||||||
cycle: 1
|
cycle: 1
|
||||||
tracker: local
|
tracker: jira
|
||||||
|
|
||||||
## Completed Steps
|
## Completed Steps
|
||||||
- step: 1
|
- 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.
|
|
||||||
Reference in New Issue
Block a user