Skip to content
Merged
Show file tree
Hide file tree
Changes from 41 commits
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
c847198
ci: check the IR is internally consistent, not just well-shaped
jlucaso1 Jul 28, 2026
2180744
enums: resolve the ones WA composes instead of declares
jlucaso1 Jul 28, 2026
2e92004
enums: use ? for the unbound-operand path clippy flagged
jlucaso1 Jul 28, 2026
df8f19f
notif: read the three action shapes that were deferred, and state the…
jlucaso1 Jul 28, 2026
861094c
fetch: pin what the bootloader yielded, not just what it produced
jlucaso1 Jul 28, 2026
d8eee2d
review: report unknown field types, keep the pins on an empty run, fo…
jlucaso1 Jul 28, 2026
0ce3a14
review: ratchet the baseline, widen the linter's reach, and fix three…
jlucaso1 Jul 28, 2026
bb3de9f
fix: gate the bootloader lock update with the feature its function li…
jlucaso1 Jul 28, 2026
04fbd20
review: pin only wasm handles, accumulate them, and refuse a rebound …
jlucaso1 Jul 28, 2026
b199dd2
review: keep the bootloader map within one release, and check WAM's e…
jlucaso1 Jul 28, 2026
d1fb4c8
review: accumulate the handle map on the productive path too
jlucaso1 Jul 28, 2026
031a442
review: close the guard, scope and catalog gaps the last round left open
jlucaso1 Jul 28, 2026
57a9693
review: bound the callback recursion, scope parameters, and check wha…
jlucaso1 Jul 28, 2026
7fd3716
review: version-scope the cache handles, close two shadow holes, tigh…
jlucaso1 Jul 28, 2026
7cfe9e5
review: keep spans with the buffer they index, and bind every paramet…
jlucaso1 Jul 28, 2026
273032a
review: pin every aliasing handle, refuse a shadowed callee, require …
jlucaso1 Jul 28, 2026
59d05d6
review: stop the linter crashing on the malformed IR it exists to catch
jlucaso1 Jul 28, 2026
d74959e
review: keep the lockfile inside the CDN allowlist, and stop refusing…
jlucaso1 Jul 28, 2026
2712fd5
review: baseline unresolved enums by identity, not by total
jlucaso1 Jul 28, 2026
065daa9
review: prefer the callee the caller bound, and check three more IR s…
jlucaso1 Jul 28, 2026
4f5a70d
review: pre-register hoisted bindings, and check five more IR shapes
jlucaso1 Jul 28, 2026
1e75bd3
review: rebind the context on the other expansion path, and fix the p…
jlucaso1 Jul 28, 2026
dd0e6a8
review: key unresolved enums by semantic path, and hoist var bindings…
jlucaso1 Jul 28, 2026
ab0f020
review: keep parameter-local writes local, and let scoping give the l…
jlucaso1 Jul 28, 2026
9afdbf7
review: cross-reference appstate collections, and close two gaps in t…
jlucaso1 Jul 28, 2026
9f456e6
review: keep a destructured shadow lexical, and drop a rebound handle…
jlucaso1 Jul 28, 2026
37f53f9
review: model the mutation extends performs, and tombstone rejected h…
jlucaso1 Jul 28, 2026
62af5ac
test: cover all three loop-header forms, not just for-of
jlucaso1 Jul 28, 2026
b5dd0c2
review: build the tombstone from pre-filter ids, and hoist only what …
jlucaso1 Jul 28, 2026
41c9d58
review: restrict exports to the module object, and reconcile aliases …
jlucaso1 Jul 28, 2026
d3c92e0
review: give every lexical construct a scope, and stop the linter cra…
jlucaso1 Jul 28, 2026
33ac176
review: pin the proto path the IR actually writes, and count unresolv…
jlucaso1 Jul 28, 2026
4a30b73
review: one lexical collector for all four scopes, and scalar fallbac…
jlucaso1 Jul 28, 2026
c9e1f2b
review: resolve the value payload against the proto, and tombstone th…
jlucaso1 Jul 28, 2026
c09ba9e
review: stop rejecting a legal enum alias, and check the payload fiel…
jlucaso1 Jul 29, 2026
ee948bc
review: read loop and switch headers in the enclosing scope
jlucaso1 Jul 29, 2026
1987c5a
review: read a mapped collection from either ternary branch
jlucaso1 Jul 29, 2026
ab74276
review: require the export receiver to be unshadowed at the assignment
jlucaso1 Jul 29, 2026
7c1d92c
review: unwrap the paren, widen the receiver shadow, watch every exte…
jlucaso1 Jul 29, 2026
ef41dfd
review: mirror the receiver filter into arrows, and refuse a contradi…
jlucaso1 Jul 29, 2026
322fd44
review: filter each mapped-child candidate before falling back
jlucaso1 Jul 29, 2026
4e7d5c5
review: search nested branches for the mapped call, and pin accessor …
jlucaso1 Jul 29, 2026
fc2f43e
review: catch a mutating extends anywhere, honour the TDZ, reconcile …
jlucaso1 Jul 29, 2026
f80ea56
lint: record the flattened discriminated shapes instead of certifying…
jlucaso1 Jul 29, 2026
7c837fa
lint: count the flattening per extra entry, at its measured value
jlucaso1 Jul 29, 2026
e332de1
review: pin the flattening by identity, and refuse two more ambiguous…
jlucaso1 Jul 29, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,15 @@ jobs:
pip install --quiet jsonschema
python scripts/validate-schemas.py generated

# The schemas check SHAPE; this checks that the document is usable. A
# consumer generating code from the IR — in any language — has to trust
# that an enum names its values, a byte pin matches its length, a union
# has alternatives. Those are invariants JSON Schema cannot express, and
# the counted states are held to a baseline so a constraint that starts
# slipping through shows up as a rise rather than as silence.
- name: Check IR internal consistency
run: python scripts/lint-ir.py generated

# Reproducibility gate: restore the *exact* bundle set generated/ was built from
# (from the durable release store, verified against the committed lockfile) and
# regenerate in --check mode. Proves every committed generated/ is byte-for-byte
Expand Down
1 change: 1 addition & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 5 additions & 2 deletions crates/wa-codegen/src/notif_export.rs
Original file line number Diff line number Diff line change
Expand Up @@ -383,6 +383,8 @@ fn emit_action_tables(notifications: &[NotificationDef]) -> String {
l.push_str(" pub name: &'static str,\n");
l.push_str(" pub wire_tag: &'static str,\n");
l.push_str(" pub fields: &'static [NotifActionField],\n");
l.push_str(" /// Whether every branch producing this action carries the list.\n");
l.push_str(" pub required: bool,\n");
l.push_str("}\n\n");
l.push_str("/// One arm of a notification's payload action union.\n");
l.push_str("#[derive(Debug, Clone, Copy)]\n");
Expand Down Expand Up @@ -450,10 +452,11 @@ fn emit_action_tables(notifications: &[NotificationDef]) -> String {
.iter()
.map(|c| {
format!(
"NotifActionChild {{ name: {}, wire_tag: {}, fields: {} }}",
"NotifActionChild {{ name: {}, wire_tag: {}, fields: {}, required: {} }}",
rust_lit(&c.name),
rust_lit(&c.wire_tag),
field_list(&c.fields)
field_list(&c.fields),
c.required
)
})
.collect();
Expand Down
1 change: 1 addition & 0 deletions crates/wa-enums/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ description = "Native tooling: oxc AST extraction of WhatsApp Web's $InternalEnu
oxc_allocator = { workspace = true }
oxc_ast = { workspace = true }
oxc_ast_visit = { workspace = true }
oxc_syntax = { workspace = true }
wa-ir = { workspace = true }
wa-oxc = { workspace = true }
wa-transform = { workspace = true }
Loading
Loading