Skip to content

auto-fix batch claude/friendly-maxwell-f34GI 2026-05-02#511

Merged
intendednull merged 5 commits into
mainfrom
claude/friendly-maxwell-f34GI
May 3, 2026
Merged

auto-fix batch claude/friendly-maxwell-f34GI 2026-05-02#511
intendednull merged 5 commits into
mainfrom
claude/friendly-maxwell-f34GI

Conversation

@intendednull
Copy link
Copy Markdown
Owner

Scheduled /resolving-issues sweep. Three small-scope fixes landed; five issues closed as already-fixed by master PR #507's commits within the last day; one new structural-deps meta-tracker issue filed; one skill edit pulled forward.

Fixes

Already-Fixed

Coordinator-direct close-pass during step 6 sweep — all 5 resolved by commits already on main via PR #507:

Parked

None this run.

Skill Evolution

Lessons Learned

  • Already-fixed sweep was very productive: 5 of 8 triage candidates ≈ 62% hit rate, all addressed by master PR auto-fix batch claude/friendly-maxwell-BjjKA (2026-05-02) #507's commits within 24h. Confirms the value of step 6 — running the sweep before any implementer dispatch saved ~5 dispatches' worth of cargo-lock contention for no-op work.
  • Structural-deps meta-tracker rule was lagging — five trackers had accumulated since prior runs without a meta-tracker, and the existing wording only triggered "on the 3rd filing." Skill edit (bb3aa73) closes that gap so future runs file retroactively when they spot the same shape.
  • Implementer scope-expansion was justified twice and flagged cleanly:
  • Three-implementer sequential pattern + SHA-watch pattern worked smoothly. No false alarms, no finalize-implementer dispatches. Two-signal arrival (SHA-advance + agent-completion) behaved per the existing skill guidance — both arrived per implementer, occasionally in different orders, and git status after each signal disambiguated cleanly.
  • One pre-existing failing-test claim from the [GEN-08] topological_sort() runs O(N) on every SyncRequest, then truncates to 500 #268 implementer (willow-state::tests_materialize::non_admin_set_profile_is_accepted) didn't reproduce on coordinator HEAD — likely a sandbox-side flake, not real rot. No follow-up filed. Worth noting that "implementer reports baseline failure" needs coordinator-side verification before filing a follow-up issue, otherwise we accumulate phantom rot tickets.

Test plan

Master-PR CI is the load-bearing gate. Locally each implementer ran:

  • cargo fmt --all -- --check
  • cargo clippy <scope> --all-targets -- -D warnings (native)
  • cargo clippy --target wasm32-unknown-unknown <scope> --all-targets -- -D warnings
  • cargo test <scope> (willow-client: 329 → 332 passed)
  • cargo check --target wasm32-unknown-unknown <scope>

CI gates to verify on this PR:


Generated by Claude Code

claude added 5 commits May 2, 2026 08:04
Pre-existing: `cargo clippy --target wasm32-unknown-unknown
-p willow-client --all-targets` failed with ~209 errors from test
modules pulling tokio/std::fs/etc. Production code is WASM-clean
(`--lib` passes); only `#[cfg(test)]` modules tripped.

Gate test modules with `#[cfg(all(test, not(target_arch = "wasm32")))]`
so the wasm-clippy `--all-targets` gate (per resolving-issues skill)
can run without false positives masking real wasm regressions.

The `test_client` / `test_client_on_hub` helpers are likewise tightened
to match `MemNetwork`'s existing native-only gate; they reference
`willow_network::mem::MemNetwork` which is already
`cfg(all(not(target_arch = "wasm32"), any(test, feature = "test-utils")))`,
so this is a correctness fix rather than a behavioural change.

No production-code change.

Refs #506
…04, #243)

Peer-supplied http(s):// URLs ending in image extensions auto-embed
as <img>. Without `referrerpolicy=no-referrer` the browser sends the
page URL via Referer, leaking channel/message context to whatever
host the peer chose. IP/UA leak via TCP/TLS is unavoidable once a
fetch occurs.

Brainstorm rejected `crossorigin=anonymous` — would activate CORS
mode and break most legitimate CDN images. Modern browsers strip
cookies via SameSite=Lax defaults, so the cookie-leak component is
already covered.

A user-preference gate (full disable / scheme allowlist) is left as
a follow-up (#243); this PR ships the minimum-scope, zero-UX-cost
mitigation.

Updated the existing browser test (`url_with_image_extension_embeds_inline`)
to mirror the new attribute and added an explicit assertion. wasm-pack /
Firefox / geckodriver aren't available in this sandbox so the browser
test wasn't executed; native `cargo test -p willow-web`, native +
wasm32 `cargo clippy -- -D warnings`, and `cargo fmt --check` all pass.

Refs #243
… (GEN-08, #268)

`topological_sort()` ran O(N) on every WireMessage::SyncRequest, then
truncated to 500. For a 50k-event server every sync request paid the
full sort + alloc cost. N+1 amplifier per peer.

Cache the materialized 500-event Vec on DagState; clear on every
successful try_insert_event (and the local-mutation siblings:
seed_genesis, build_event, the JoinRequest grant in listeners,
plus the server-switch sites in servers.rs that swap ds.managed).
Listener checks the cache, recomputes lazily on miss. Test helpers
that bypass the listener (replay_dag_into in multi_peer_sync /
trust_flow, the sync test in lib.rs) call invalidate_sync_reply_cache
explicitly so they don't leak stale defaults.

Brainstorm rejected caching on EventDag itself: willow-state's design
comment commits it to zero-I/O / pure / no-interior-mutability; cache
is a listener concern, belongs at the actor-state layer.

Long-term migration to heads-based sync (WorkerRequest::Sync { heads })
remains tracked under #65; this PR closes the per-request waste only.

Tests live in crates/client/src/tests/sync_reply_cache.rs:
- cached_reply_matches_topological_sort_prefix (semantic preservation)
- cache_invalidates_on_insert (invalidation correctness)
- cache_hit_returns_identical_vec (cache-hit smoke regression canary)

Refs #268
3rd-trigger rule for structural-deps meta-tracker was reactive — a
run could land in a queue with 5+ trackers and no meta-tracker, with
no clear instruction whether to consolidate or wait for the next
filing trigger. Spell out: when the sweep finds 3+ trackers without
a meta-tracker, file the meta-tracker as part of the sweep itself.
Pure metadata work, falls under the Coordinator-never-codes
exceptions (no source files touched).

Surfaced this run: 5 trackers (#246, #247, #249, #481, #485) existed
since prior runs; meta-tracker filed retroactively as #510.

Refs .claude/skills/resolving-issues/SKILL.md
@intendednull intendednull merged commit 4f00d5b into main May 3, 2026
8 checks passed
@intendednull intendednull deleted the claude/friendly-maxwell-f34GI branch May 3, 2026 08:56
intendednull pushed a commit that referenced this pull request May 3, 2026
Prior PR #511 lessons dismissed
`willow-state::tests_materialize::non_admin_set_profile_is_accepted` as
a sandbox-side flake. This run reproduced it cleanly on coordinator
HEAD post-PR #505 (which added the SetProfile membership gate) — the
"flake" was a real regression all along, just exposed once the gating
PR landed. Filed #565.

Strengthen the implementer-flagged-rot section: always re-verify on
coordinator HEAD; don't rely on a prior dismissal alone. Rot
accumulates between runs; a previously-flaky symptom can become a real
regression as PRs merge.

Refs auto-fix batch claude/friendly-maxwell-M5xB6.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

2 participants