Skip to content

Distributed architecture remediation — verified flaws F1–F9 #128

Description

@Hazzng

Tracking issue for the verified remediation of the distributed-architecture flaws (F1–F9) found in the design review and independently re-verified against current source (27-agent workflow: per-flaw investigation + adversarial refutation + lead synthesis).

  • Verified analysis: thoughts/shared/research/2026-06-13_distributed-flaws-verification.md
  • Original review: thoughts/shared/research/2026-06-10_distributed-design-review.md

All 14 fix issues are sub-issues of this epic. The two hard blockers are encoded as nested sub-issues (F3 under F1, F9d under F5); everything else is independent and can be worked in parallel.

Dependency tree

Epic #128
├── #129  F1  Poisoned publish (#cachePoisoned)        [High] ── blocks ▶ F3
│   └── #132  F3  Publish drainer                      [Med]  ◀ blocked by F1
├── #130 F2-L1 Abort exec on lease loss              [High]
├── #131 F2-L2 Epoch fence (sandboxes.version)       [High] ── shared epoch token ▶ F7, F9b
├── #133  F4  rwlockEnabled=false lock fallback        [High]
├── #134  F5  Redis circuit breaker                    [High] ── blocks ▶ F9d
│   └── #141 F9d Acquire fairness (jitter)            [Low]  ◀ blocked by F5
├── #135  F6  Hot CAS blob decoupled-tx                [Med]
├── #136  F7  Destroy tombstone + sandbox-gone guard   [Med]  ◀ coordinate epoch w/ F2-L2
├── #137  F8  Event-loop lag observability             [Low]
├── #138 F9a writeFile contentCache leak              [Low]
├── #139 F9b Boot assert IDLE_MS<TTL                  [Low]  ◀ class closure via F2-L2
├── #140 F9c Reaper straggler → ESESSIONCLOSING       [Low]
└── #142 F9e O(N) dir scans                           [Low]

Can-start-now matrix

Issue Severity Blocked by
#129 F1: Poisoned publish — guard publishVersionIfDirty with a #cachePoisoned flag High — (start now)
#130 F2-L1: Enforce lease loss — abort the exec on definitive lock loss High — (start now)
#131 F2-L2: Fence zombie writers — sandboxes.version epoch stamped into the script-tx High — (start now; coordinate epoch token)
#132 F3: Heal stranded replicas — durable background publish drainer Medium #129
#133 F4: rwlockEnabled=false — readers must take the legacy lock + reload guard High — (start now)
#134 F5: Redis circuit breaker — stop the 300s availability fuse High — (start now)
#135 F6: Hot CAS blob contention — decouple blob upsert into its own short tx Medium — (start now)
#136 F7: Destroy must reach warm replicas — tombstone + sandbox-gone reload guard Medium — (start now; coordinate epoch w/ F2-L2)
#137 F8: Event-loop lag observability — measure heartbeat-gap vs lease Low — (start now)
#138 F9a: writeFile leaks displaced inode's contentCache entry Low — (start now)
#139 F9b: Assert SESSION_IDLE_MS < VERSION_KEY_TTL at boot Low — (start now)
#140 F9c: Reaper vs straggler probe — surface ESESSIONCLOSING not 500 Low — (start now)
#141 F9d: Distributed acquire fairness — jitter + tunable retry Low #134
#142 F9e: O(N) directory scans — incremental byte counter + children map Low — (start now)

Suggested parallel PR batches

Cross-cutting clusters (see verification doc §3)

  • A — publish/commit/lease seam: F1, F2, F3 all converge on publishVersionIfDirty refusing to publish unverified state.
  • B — locks other invariants lean on: F4, F5, F9d.
  • C — coherence-encoding conflations: F7, F9b — both closed by the one durable epoch token from F2-L2.
  • D — observability & hygiene: F8, F9a, F9c, F9e.

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:distributedDistributed locking / caching / coherenceepicTracking issue for a cluster of work

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions