Repository navigation
feat(protocol): update WhatsApp snapshot and compact codegen - #1827
Conversation
|
Caution Review failedThe pull request is closed.
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. |
[High impact] No blocking code issue was found in this re-review; the PR’s stated validation and performance gates remain separate merge requirements.
|
There was a problem hiding this comment.
All reported issues were addressed across 13 files
Reply with feedback, questions, or to request a fix.
Re-trigger cubic
There was a problem hiding this comment.
All reported issues were addressed across 2 files (changes from recent commits).
Reply with feedback, questions, or to request a fix.
Re-trigger cubic
There was a problem hiding this comment.
0 issues found across 1 file (changes from recent commits).
Confidence score: 5/5
- Automated review surfaced no issues in the provided summaries.
- No files require special attention.
Requires human review: Auto-approval blocked by 5 unresolved issues from previous reviews.
Re-trigger cubic
📦 Binary size report
Heavy diagnostics were omitted from this gate-only measurement. The size gate uses the linked binary measurements above. 🚨 Per-PR size budget exceeded (Δ stripped ≤ 64.00 KiB, Δ .text ≤ 32.00 KiB):
The Baseline: |
Merging this PR will improve performance by 78.25%3 warnings
Performance Changes
Tip Curious why performance improved? Comment Comparing Footnotes
|
There was a problem hiding this comment.
All reported issues were addressed across 83 files (changes from recent commits).
Reply with feedback, questions, or to request a fix.
Re-trigger cubic
There was a problem hiding this comment.
0 issues found across 10 files (changes from recent commits).
Confidence score: 5/5
- Automated review surfaced no issues in the provided summaries.
- No files require special attention.
Requires human review: Auto-approval blocked by 5 unresolved issues from previous reviews.
Re-trigger cubic
There was a problem hiding this comment.
All reported issues were addressed across 7 files (changes from recent commits).
Reply with feedback, questions, or to request a fix.
Re-trigger cubic
There was a problem hiding this comment.
0 issues found across 1 file (changes from recent commits).
Confidence score: 5/5
- Automated review surfaced no issues in the provided summaries.
- No files require special attention.
Requires human review: Regenerates WhatsApp protocol artifacts from a new whatspec pin and changes group-history, CREATE, LINK/UNLINK, and IQ error handling; unresolved dismissed findings on fixture requalification and evidence reproducibility leave decisive claims unverified.
Re-trigger cubic
There was a problem hiding this comment.
All reported issues were addressed across 8 files (changes from recent commits).
Reply with feedback, questions, or to request a fix.
Re-trigger cubic
There was a problem hiding this comment.
All reported issues were addressed across 5 files (changes from recent commits).
Reply with feedback, questions, or to request a fix.
Re-trigger cubic
There was a problem hiding this comment.
0 issues found across 1 file (changes from recent commits).
Confidence score: 5/5
- Automated review surfaced no issues in the provided summaries.
- No files require special attention.
Requires human review: Regenerates WhatsApp protocol artifacts from an open whatspec PR pin and changes group-history, IQ error, and group-normalization behavior; decisive factors are the unmerged pin and unresolved qualification evidence.
Re-trigger cubic
There was a problem hiding this comment.
0 issues found across 16 files (changes from recent commits).
Confidence score: 5/5
- Automated review surfaced no issues in the provided summaries.
- No files require special attention.
Requires human review: Regenerates WhatsApp 2.3000.1052559453 protocol artifacts from the merged whatspec pin, but keeps group-history window and IQ error-contract behavior changes and unresolved qualification evidence.
Re-trigger cubic
There was a problem hiding this comment.
0 issues found across 25 files (changes from recent commits).
Confidence score: 5/5
- Automated review surfaced no issues in the provided summaries.
- No files require special attention.
Requires human review: Regenerates WhatsApp 2.3000.1052559453 protocol artifacts from a pinned whatspec rev with broad tests; group-history, group-notification, and IQ error-contract behavior changes and unresolved performance qualification remain for human sign-off.
Re-trigger cubic
There was a problem hiding this comment.
0 issues found across 1 file (changes from recent commits).
Confidence score: 5/5
- Automated review surfaced no issues in the provided summaries.
- No files require special attention.
Requires human review: Regenerates WhatsApp protocol artifacts from a new pinned whatspec rev; group-history retrieval, group-notification/error contracts and runtime performance change, and the delta only canonicalizes the oracle, so human sign-off is required.
Re-trigger cubic
|
@codex review |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
Codex Review: Didn't find any major issues. Nice work! Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
Update WhatsApp from
2.3000.1047483476to2.3000.1052559453using whatspec IR 4.5.0, and reduce the source and fixture cost of future upgrades. Pin integrated whatspec main commitae3880925bacd23863cc30ec480c9f82bfd869f1, merged by oxidezap/whatspec#65. Its complete tree is identical to the qualified headafa3e343; the upstream dependency is resolved.The cleanup reduces this upgrade's source-tree growth from 1,332,237 to 57,146 bytes (95.7%) and the PR from 102 to 92 files. The one-time WAM representation rewrite increases gross patch churn, detailed below.
5d114fc5756c40cbe15fd221c0f40896e02087aec2cdfb5a30dd39887a9c25d5. Payloads, reads, warnings and case order are retained; a mutation regression rejects changed observations, invalid references or lost cases.CALL_SITESvalue was compared equal to9ecd1fb5using the existing derived equality, including every event/code/field/site/module/partiality/write kind. The data and public types are unchanged.Audit against baseline
0d1373a8, with9ecd1fb5as the pre-cleanup checkpoint:The upgrade's source-tree growth is 95.7% lower: 1,275,091 bytes removed from the current tree. This does not measure Git pack size, runtime memory or binary size. The first WAM representation migration rewrites existing rows, so this PR's gross patch churn increases even though net lines and the final source tree shrink. Future captures use the compact emitter directly; this is a one-time representation migration. Earlier committed bytes remain in Git history; no history rewrite or force-push was used. Identical historical blobs may already have been deduplicated by Git.
Future upgrades reuse the current fixture paths, shared outcome table and test executor. They do not copy a complete prior snapshot or add task chronology to product sources. The operational capture lock retains immutable upstream evidence and archive URLs/digests; regular tests and generation can use the pinned local IR without network. No whatspec changes were needed for this cleanup.
Reproduce:
Local validation: 151 generator tests, 86 group tests, 21 catalog tests plus the one-off full old/new parity equality comparison, deterministic regeneration, capture reproduction and all-target generator/catalog Clippy passed. The capture digest regression also passed with serde_json/preserve_order enabled; object keys are explicitly canonicalized. The independent original-JS harness still reproduces 64 actions, 29 envelopes, 13 CREATE and 204 normalization cases, rejecting eight IR mutations. The main CI job passed 7,908 tests (41 skipped), 18 focused persistence tests and doctests. Remaining CI/reviews are being validated on
c6b27efc1d56625829f9c0caa0228b66377af177; results from earlier heads are historical. No authenticated WhatsApp session was exercised.Binary-size qualification before cleanup was stripped +60.25 KiB and text +59.31 KiB against
0d1373a8with identical rustc; most growth was protobufs (waproto+51,186 B). The existingsize-increase-okpolicy applies; global budgets are unchanged. Source compaction is not a binary-size or performance claim.Performance qualification remains separate and unresolved. Pre-cleanup CodSpeed run 6ae6e99f reported connect_to_ready 175.6 → 206.1 ms modeled CPU (-14.77% reported efficiency), with different hardware and significant excluded syscall time. A slower profile included ~21.4 ms of prekey/session and AppState key-share work absent from a faster upgraded sample; causality and production latency are not established. Pulling the exact image
ghcr.io/whiskeysockets-devtools/bartender@sha256:9f3a49dd9f944414fbda50571bba5f66f2ab6fdc48001e6803d4c09a1042c78ereturned registry DENIED; no image or container was obtained. Existing credentials lack read:packages, and the authorized CI workflow has no paired walltime comparison input. No credentials were expanded, denied access retried, alternate image used, alert waived or threshold changed. Controlled base/head walltime on an already-authorized executor remains required.Current-head CodSpeed run 6ae728b523410ee24cdcd569 completed SUCCESS at
c6b27efc1d56625829f9c0caa0228b66377af177: zero regressions, four improvements and 940 unchanged comparisons. connect_to_ready is 176.543 ms modeled CPU versus 175.633 ms in the base, classified unchanged; 549 syscalls and 9.564 s of syscall time are excluded. The four walltime improvements crossed different hardware and are not attributed to this patch. The historic 206–208 ms observation did not recur in this run; this does not establish causality or controlled production latency. No threshold, archive state or alert acknowledgment changed. The source-size reductions above are measured independently of performance.The first all-feature job (124839539048) failed because GitHub reported that the hosted runner lost communication during the build; its build step has no completion and the log blob is unavailable. The single isolated retry job 124851629256 passed the build, Clippy and every shareable-feature test. No code, resources or validation criteria were changed for the retry.
Keep draft pending final-head validation, human review and controlled performance qualification. No core merge, release or deployment.
Reproduce the one-off complete WAM representation comparison
This checks the migration without retaining a second catalog snapshot in the repository or adding network-dependent tests. In a checkout containing ancestor
9ecd1fb51a7227cccd5f87d931399e87bb9791e2, extract its source toplugins/wam-catalog/tests/migration/before.rs:Temporarily create
plugins/wam-catalog/tests/compare_parity.rs:Run
cargo nextest run -p whatsapp-rust-wam-catalog --features parity --test compare_parity, then discard only these temporary comparison files. The permanent catalog tests and current generated metadata remain; no previous snapshot is added to normal tests.File-by-file inventory and disposition (104 path identities, including both sides of two original renames)
Compared with pre-cleanup
9ecd1fb5. Lines and bytes are complete file sizes, not patch counts. Paths that were already absent at that checkpoint show zero.CG/meanstools/whatspec-codegen/;GR/meanswacore/src/stanza/groups/.K: Keep consumed output or focused regression. P: Keep historical public API and identity guards. G: Keep generator/lock and drift guards. D: Keep permanent compact-upgrade instructions. W: Compact WAM representation; identical typed metadata. O: Share outcomes; preserve all 204 cases and canonical digest. T: One table/executor; preserve assertions. L: Keep compact operational source lock. H: Remove unconsumed baseline duplicate. R: Remove task report; summary retained here. U: Remove redundant unused evidence. X: Replace obsolete standalone oracle with current complete matrix.
Cargo.lockagent_docs/codegen.mdplugins/wam-catalog/src/call_sites.rsplugins/wam-catalog/src/generated.rsplugins/wam-catalog/src/lib.rsplugins/wam-catalog/src/tests.rsplugins/wam-catalog/src/unlisted.rssrc/appstate_known_verbs.rssrc/features/group_history.rsCG/Cargo.tomlCG/fixtures/accept_group_add.jsonCG/fixtures/capture-group-normalization.cjsCG/fixtures/contextual_iq.jsonCG/fixtures/group_actions_oracle.jsonCG/fixtures/group_create_oracle.jsonCG/fixtures/group_envelope.jsonCG/fixtures/group_envelope_oracle.jsonCG/fixtures/group_link.jsonCG/fixtures/group_link_evidence.jsonCG/fixtures/group_link_oracle.jsonCG/fixtures/group_normalization_oracle.jsonCG/fixtures/group_qualification_review.jsonCG/fixtures/group_unlink.jsonCG/fixtures/group_unlink_evidence.jsonCG/fixtures/group_unlink_oracle.jsonCG/fixtures/groups/versions/2.3000.1047483476/group_actions_oracle.jsonCG/fixtures/groups/versions/2.3000.1047483476/group_create_oracle.jsonCG/fixtures/groups/versions/2.3000.1047483476/group_envelope.jsonCG/fixtures/groups/versions/2.3000.1047483476/group_envelope_oracle.jsonCG/fixtures/groups/versions/2.3000.1047483476/group_link.jsonCG/fixtures/groups/versions/2.3000.1047483476/group_link_evidence.jsonCG/fixtures/groups/versions/2.3000.1047483476/group_link_oracle.jsonCG/fixtures/groups/versions/2.3000.1047483476/group_unlink.jsonCG/fixtures/groups/versions/2.3000.1047483476/group_unlink_evidence.jsonCG/fixtures/groups/versions/2.3000.1047483476/group_unlink_oracle.jsonCG/fixtures/mex-retained-shapes.jsonCG/fixtures/snapshot-upgrade-1052559453.evidence.jsonCG/fixtures/wam-retained-fields.jsonCG/fixtures/wam-retained-variants.jsonCG/iq-contextual.lock.jsonCG/src/emit/abprops.rsCG/src/emit/community_create.rsCG/src/emit/group_actions_conformance.rsCG/src/emit/group_create_conformance.rsCG/src/emit/group_envelope_conformance.rsCG/src/emit/group_envelope_normalization.rsCG/src/emit/group_link_normalization.rsCG/src/emit/group_normalization.rsCG/src/emit/iq_conformance.rsCG/src/emit/iq_contextual.rsCG/src/emit/iq_pilots.rsCG/src/emit/iq_targets.rsCG/src/emit/mex.rsCG/src/emit/wam.rsCG/src/ir.rsCG/src/main.rsCG/src/source.rsCG/tests/committed_artifacts.rsCG/tests/fixtures/community_create.jsonCG/whatspec.lock.jsonwacore/appstate/src/schemas.rswacore/src/companion_reg.rswacore/src/history_sync.rswacore/src/iq/abprops.rswacore/src/iq/community_create.rswacore/src/iq/contextual.rswacore/src/iq/join_shapes.rswacore/src/iq/mex_operations.rswacore/src/iq/mex_operations_unlisted.rswacore/src/iq/pilot_conformance.rswacore/src/iq/pilots.rswacore/src/iq/props.rswacore/src/iq/targets.rswacore/src/proto_helpers.rswacore/src/stanza/groups.rsGR/actions_conformance.rsGR/actions_normalized.rsGR/actions_oracle_projection.rsGR/create_conformance.rsGR/create_normalized.rsGR/envelope_conformance.rsGR/envelope_generated.rsGR/link_generated.rsGR/link_normalized.rsGR/normalization_conformance.rsGR/normalization_warning.rsGR/normalized.rsGR/normalized_notification.rsGR/unlink_generated.rswacore/src/stanza/wire_tags.rswacore/src/types/wire_enums.rswacore/src/version/generated.rswacore/tests/abprops_retained.rswacore/tests/context_info.rswacore/tests/mex_retained.rswacore/tests/props_stream_memory.rswaproto/build.rswaproto/build_support/emission.rswaproto/build_support/wallpaper.rswaproto/src/whatsapp.descwaproto/src/whatsapp.desc.sha256waproto/src/whatsapp.protowaproto/tests/generated_api.rswaproto/tests/retained_schema.rs