Skip to content

fix(audit): @NonSkippableComposable is not a lambda-memoization exception (4.3.2) - #12

Merged
hamen merged 3 commits into
mainfrom
fix/ssm-nonskippable-lambda-exception-4.3.2
Jul 7, 2026
Merged

fix(audit): @NonSkippableComposable is not a lambda-memoization exception (4.3.2)#12
hamen merged 3 commits into
mainfrom
fix/ssm-nonskippable-lambda-exception-4.3.2

Conversation

@hamen

@hamen hamen commented Jul 7, 2026

Copy link
Copy Markdown
Owner

What

One-line correctness patch. The 4.3.1 sweep removed @NonSkippableComposable from the lambda-memoization exceptions everywhere except a single caveat sentence in scoring.md — it read "opt-out path", so the string-match sweep dodged it.

Why

@NonSkippableComposable opts a composable out of skipping; it does not disable lambda memoization. Under Strong Skipping the compiler still memoizes lambdas inside a @NonSkippableComposable body — only @DontMemoize (or SSM-off) leaves a lambda unmemoized. Listing @NonSkippableComposable here could still bless the exact no-op manual-remember the false-lead guard forbids. This was the round-3 blocker; this patch closes the last instance.

Change

  • jetpack-compose-audit/references/scoring.md — the "Strong Skipping caveat" sentence now names only @DontMemoize, with an explicit note on why @NonSkippableComposable doesn't belong.
  • Both skills → 4.3.2 (lockstep).

Validation

bin/ci ✅. Grep confirms no remaining @NonSkippableComposable in any lambda-memoization exception (only in legitimate skippability opt-out rules).

🤖 Generated with Claude Code

https://claude.ai/code/session_016ysskXsKpwEbs1n9CX1ScY

…tion (4.3.2)

The 4.3.1 sweep removed @NonSkippableComposable from every lambda-memoization
exception except one caveat sentence in scoring.md — it read "opt-out path", so the
string match skipped it. @NonSkippableComposable opts a *composable* out of skipping
but does not disable *lambda memoization*; only @DontMemoize (or SSM-off) does.
Now consistent across scoring.md.

Both skills -> 4.3.2 (kept in lockstep).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016ysskXsKpwEbs1n9CX1ScY
@hamen

hamen commented Jul 7, 2026

Copy link
Copy Markdown
Owner Author
🟢 Codex review (automated cross-review)

Blocker
None.

Should-fix
CHANGELOG.md:20, docs/release-notes-4.3.0.md:27, and docs/release-notes-4.3.1.md:23 / :25 still describe @NonSkippableComposable as a path where manual callback remember can matter. That preserves the same false lambda-memoization exception this PR is meant to remove, and README.md still links readers to the 4.3.1 notes. The scoring change itself is correct: Android’s Strong Skipping docs separate @NonSkippableComposable as a composable skippability opt-out, while @DontMemoize is the lambda memoization opt-out. (developer.android.com)

Nit
None. git diff --check is clean.

via pr-review-relay · author: claude

@hamen

hamen commented Jul 7, 2026

Copy link
Copy Markdown
Owner Author
🔵 Cursor review (automated cross-review)

PR #12 Review — fix(audit): @NonSkippableComposable is not a lambda-memoization exception (4.3.2)

Verdict: The substantive fix is correct and closes the last operational bug from the 4.3.1 sweep. No blockers. One doc-consistency gap worth fixing before merge.


Blocker

None.

The change in scoring.md is technically right: @NonSkippableComposable opts the composable out of skipping; @DontMemoize (or SSM-off) is what disables lambda memoization. That matches the rest of the file (lines 109, 176, 195) and compose-agent/references/performance.md (lines 117, 166), which already list only @DontMemoize. evals.json case 13 expectation (line 174) is also aligned.


Should-fix

Stale incorrect guidance in docs/release-notes-4.3.1.md

Lines 23–25 still say the only lambda-memoization exception is SSM-off or @DontMemoize / @NonSkippableComposable. That was the 4.3.1 bug this PR fixes. release-notes-4.3.0.md already uses a “corrected in 4.3.1” footnote pattern; 4.3.1 release notes should get the same for 4.3.2, or a pointer to the 4.3.2 patch. Without that, readers (or agents loading release notes) can still pick up the wrong rule.


Nit

  • compose-agent version bump with no skill content change — intentional lockstep; fine, and documented in CHANGELOG.
  • No docs/release-notes-4.3.2.md — acceptable for a one-line patch; README/CHANGELOG cover it. Optional for consistency with 4.3.0/4.3.1.
  • CHANGELOG 4.3.1 entry (line 20) still describes the incomplete fix — fine as historical record; 4.3.2 entry explains the follow-up.
  • Eval gap: case 13 doesn’t exercise a @NonSkippableComposable + manual-remember callback scenario; not required for this patch, but would lock the regression in.

Summary: Ship the scoring.md fix as-is; add a correction footnote to release-notes-4.3.1.md (or a minimal 4.3.2 release note) so the suite has no remaining authoritative doc that pairs @NonSkippableComposable with lambda-memoization opt-out.

via pr-review-relay · author: claude

@hamen

hamen commented Jul 7, 2026

Copy link
Copy Markdown
Owner Author
🟠 Antigravity review (automated cross-review)

Looks good to me! The PR correctly fixes the lambda memoization caveat under Strong Skipping Mode in scoring.md, and all version bumps and changelog updates are consistent.

via pr-review-relay · author: claude

hamen and others added 2 commits July 7, 2026 08:53
Cursor should-fix: docs/release-notes-4.3.1.md still paired @NonSkippableComposable
with the lambda-memoization exception — the exact error this patch fixes. Corrected
to @DontMemoize only, with a "corrected in 4.3.2" note.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016ysskXsKpwEbs1n9CX1ScY
release-notes-4.3.0.md line 27 still paired @NonSkippableComposable with the
lambda-memoization exception (historical false-lead bullet). Corrected to
@DontMemoize only, with a note. Completes the suite-wide sweep — no authoritative
doc now lists @NonSkippableComposable as a lambda-memoization opt-out.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016ysskXsKpwEbs1n9CX1ScY
@hamen
hamen merged commit 89a5f54 into main Jul 7, 2026
1 check passed
@hamen
hamen deleted the fix/ssm-nonskippable-lambda-exception-4.3.2 branch July 7, 2026 06:54
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