Skip to content

[AI:Finding] F20260711-E601BBF5: Expired-lock reap in LocalIdempotencyGuard is a silent recovery — no logger, no WARN when a dead instance's lock is stolen - #48

Merged
dzykovic merged 1 commit into
masterfrom
ai/findings/F20260711-E601BBF5
Aug 6, 2026
Merged

[AI:Finding] F20260711-E601BBF5: Expired-lock reap in LocalIdempotencyGuard is a silent recovery — no logger, no WARN when a dead instance's lock is stolen#48
dzykovic merged 1 commit into
masterfrom
ai/findings/F20260711-E601BBF5

Conversation

@dzykovic

@dzykovic dzykovic commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

Finding F20260711-E601BBF5

Type: finding | Priority: 4 | Source: resilience-boundaries#FINDING-001

Assumption

Severity: medium
Priority: 4
Files Affected: 2

Pattern: Bounded self-healing, never silent recovery (resilience-boundaries §"Every recovery path … must be bounded by TTL/attempt budget AND logged with what was recovered and why"). This is the exact silent-recovery case the v5 observability mandate forbids (intelligence/rules/typescript.md §REQUIRED "every catch-and-continue / fallback path taken MUST warn with the reason"; migration.md observability BLOCKER gate).
Domain


Automated by AI Automation Pipeline. PR shape (plan / catch-up / rejected)
is set by the composer at the top of this body; current lifecycle state is
tracked via the PR label (ai:processing, ai:in-review, ai:ready-to-merge,
ai:failed, ai:rejected) and the PR comments — not this description.

Copilot AI lite review requested due to automatic review settings August 6, 2026 22:28

@dzykovic dzykovic left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[AI-REVIEWER] PASS (high) — records-only planning PR, premise verified directly against master: LocalIdempotencyGuard's constructor takes only dbPath, acquire ignores its _ctx, the bulk DELETE of expired rows runs with no log line, and entry.ts:133 is the exact wiring point. The task's implementation analysis is notably precise: the bulk delete makes the same-key expired branch practically unreachable, so the WARN must capture reaped completed=0 rows BEFORE the delete — correct and exactly the kind of detail that prevents a useless fix. Correctly scoped out-of-scope twin (local-storage-bundle.ts acquire) keeps the change one-commit revertible. The finding applies the repo's own bounded-self-healing principle: recovery stays TTL-bounded, it just becomes observable.

@dzykovic
dzykovic merged commit 0341766 into master Aug 6, 2026
1 check passed
@dzykovic
dzykovic deleted the ai/findings/F20260711-E601BBF5 branch August 6, 2026 22:31

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Records and starts work on finding F20260711-E601BBF5 by adding an implementation task spec and moving the finding into an active (“in-progress”) state.

Changes:

  • Added task T20260711-AFBAE9C0 documenting the planned logging/observability changes for LocalIdempotencyGuard expired-lock reaping.
  • Updated finding F20260711-E601BBF5 status to in-progress and added started_at timestamp.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.

File Description
.operator/data/tasks/T20260711-AFBAE9C0.md New task/spec describing the intended code changes and acceptance criteria for logging expired-lock reaps.
.operator/data/findings/F20260711-E601BBF5.md Marks the finding as in-progress and records the start timestamp.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants