Skip to content

fix(v0.53.1): restore execute.ts mutation-count threading (squash-merge drop)#269

Merged
cunninghambe merged 1 commit into
mainfrom
fix/v0.53-restore-mutation-count-threading
May 16, 2026
Merged

fix(v0.53.1): restore execute.ts mutation-count threading (squash-merge drop)#269
cunninghambe merged 1 commit into
mainfrom
fix/v0.53-restore-mutation-count-threading

Conversation

@cunninghambe

Copy link
Copy Markdown
Owner

Summary

PR #268's squash merge dropped the execute.ts changes that wire `domMutationCount` from `MUTATION_OBSERVER_STOP_SCRIPT` through to `PostState`. `types.ts` (field declaration) and `state-change.ts` (classifier check) both landed correctly, but without execute.ts setting the field the classifier always sees `undefined` and falls through to legacy behavior.

Evidence

Spoonworks v0.53 validation run `xkyzfn64ao7w5yia4891my4p` (this morning):

```
By kind:
vulnerable_dependency_high: 4
missing_state_change: 1 ← still firing
```

Inspecting the cluster's postState:

```
mutWindowMs: 137 ← observer ran
domMutationCount: None ← field missing — execute.ts didn't set it
All postState keys: ['ariaSnapshot', 'consoleErrors', 'domErrorTextDetected',
'mutationObserverWindowMs', 'networkRequests', 'newPortalCount', 'title', 'url']
```

Fix

Re-applies the mutPayload extraction + childList mutation count + PostState assignment in execute.ts.

Expected impact

Next spoonworks run should drop the Remove-row cluster: 5 → 4 clusters, 4/4 = 100% precision.

🤖 Generated with Claude Code

PR #268's squash merge dropped the execute.ts changes that wire
domMutationCount from MUTATION_OBSERVER_STOP_SCRIPT through to PostState.
types.ts (field declaration) and state-change.ts (classifier check) both
landed correctly, but without execute.ts setting the field the classifier
always sees undefined and falls through to legacy behavior.

Spoonworks v0.53 validation (run xkyzfn64ao7w5yia4891my4p) confirmed:
postState had mutationObserverWindowMs=137 (observer ran) but no
domMutationCount field → missing_state_change FP persisted at 1/5
clusters.

This commit re-applies the mutPayload extraction + childList mutation
count + PostState assignment. No new tests needed (state-change.test.ts
already covers the classifier path).
@github-actions

Copy link
Copy Markdown

BugHunter Calibration | | 2026-05-16

Overall: tp=0 fp=0 fn=0 precision=1 recall=1 f1=0

BugKind Precision Recall F1 Status

@cunninghambe cunninghambe merged commit 8834bd5 into main May 16, 2026
2 checks passed
cunninghambe added a commit that referenced this pull request May 16, 2026
Spoonworks v0.53.1 validation (run si4uxdehzj5v6od6027pkt3o) emitted 4
clusters, all real `vulnerable_dependency_high`. The missing_state_change
FP that lingered in v0.52 cleared after PR #269 restored the execute.ts
mutation-count threading dropped by PR #268's squash merge.

Honest framing: includes the camofox cache failure caveat (3047/3338
tests completed). The 4 real-bug clusters were captured before the env
issue triggered `max_infra_failures`.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant