Skip to content

Third-pass audit — remediation status

Disposition of every finding in code-review-third-pass-2026-06-29.md, the audit driving branch fix/audit-remediation-2026-06. Each row is Fixed (a landed FIX), Postponed (reclassified as design work in audit-backlog.md), or Open (not yet started — a remaining FIX-track cluster or a P1 needing its own design).

Legend: ✅ Fixed · 🅿️ Postponed (design backlog) · ⏳ Open

# Finding Sev Disposition
1 Snapshot.Clone shares mutable process Properties across instances 🔴 P1 ✅ FIX-016 — clone properties per template + per instance (mechanical, no data-flow ADR needed)
2 GExpression.Evaluate nil-derefs a (nil, nil) result 🟠 P2 ✅ FIX-010
3 SignalEventDefinition.GetItemList misnamed 🟠 P2 ✅ FIX-011
4 EventDefCloner never satisfied 🟠 P2 ✅ FIX-011
5 RegisterProcess godoc claims idempotent dedup 🟠 P2 ✅ FIX-013 (§1.1)
6 Parallel-start event gateway without a key double-instantiates 🟠 P2 ✅ SRD-033 (was 🅿️ AB-001 — landed ADR-005 v.4 §2.12.5(7) validation)
7 Register/Unregister TOCTOU can orphan a live starter 🟠 P2 ✅ FIX-013 (§1.4)
8 Run stays Started on starter-registration failure 🟠 P2 ✅ FIX-013 (§1.2)
9 WithRenderer rejects a second renderer of the same impl type 🟠 P2 ✅ SRD-034 (was 🅿️ AB-002 — dedup by ID() only, M3)
10 UserTask.Exec ignores context — goroutine leak 🟠 P2 ✅ SRD-034 (was 🅿️ AB-002 — UserTask wait-node redesign, M2b)
11 memrepo can evict an Active instance after terminal→Active re-save 🟠 P2 ✅ SRD-078 (FR-9)
12 bpmncommon.Error.Structure() nil-derefs; NewError accepts nil 🟠 P2 ✅ FIX-010
13 govulncheck scans only the root module 🟠 P2 ✅ FIX-015 (1.1)
14 scope.namesFrom omits a /-keyed root scope 🟡 P3 ✅ FIX-014 (1.4)
15 Array.Insert off-by-one: cannot insert at index == len 🟡 P3 ✅ FIX-014 (1.1)
16 Array.Clone resets the iteration cursor to 0 🟡 P3 ✅ FIX-014 (1.2)
17 Array.Delete/DeleteT skip the notification when emptying 🟡 P3 ✅ FIX-014 (1.3)
18 Unspecified-direction gateway doesn't enforce merge-or-split 🟡 P3 🅿️ AB-003
19 Default-flow routing relies on pointer identity 🟡 P3 ✅ FIX-014 (1.5)
20 errs.M format verbs with no args in track.go 🟡 P3 ✅ FIX-014 (1.6)
21 Cyclic timer fires N+1 times for a cycle count of N 🟡 P3 ✅ FIX-012
22 Starter reconcile aborts mid-loop, leaving the hub partial 🟡 P3 ✅ FIX-013 (§1.3)
23 DeriveKey accepts a present-but-nil value as a key part 🟡 P3 ✅ FIX-014 (1.7)
24 clocktest.Advance allows moving the clock backwards 🟡 P3 ✅ FIX-014 (1.8)
25 Message.Clone drops BaseElement documentation 🟡 P3 ✅ FIX-014 (1.9)
26 memmetrics.seriesKey uses %v, distinct sets collide 🟡 P3 ✅ FIX-014 (1.10)
27 memtrace.liveSpan mutates span state without synchronization 🟡 P3 ✅ FIX-014 (1.11)
28 test/test-all/test_race lack -count=1 🟡 P3 ✅ FIX-015 (1.2)
29 .golangci.yml tests: false disables govet on _test.go 🟡 P3 ✅ FIX-015 (1.3)
30 depguard rule will block the runtime server binary 🟡 P3 🅿️ AB-004
31 make clear errors on a clean checkout 🟡 P3 ✅ FIX-015 (1.4)

Tally

  • ✅ Fixed — 29 (FIX-010: #2, #12 · FIX-011: #3, #4 · FIX-012: #21 · FIX-013: #5, #7, #8, #22 · FIX-014: #14–17, #19, #20, #23–27 · FIX-015: #13, #28, #29, #31 · FIX-016: #1 · SRD-033: #6 · SRD-034: #9, #10 · SRD-078: #11).
  • 🅿️ Postponed — 2 across 2 backlog entries (AB-003: #18 · AB-004: #30). See audit-backlog.md.
  • ⏳ Open — 0.

All landed FIX docs are Accepted in docs/fix/. Earlier audits (architecture-audit-2026-06-11, code-review-codex-second-pass-2026-06-29) were remediated by the prior FIX-001…009 series.