feat(corpus): land httparse, json_lite, state_machine wasm fixtures (v1.0.3 PR-Q)#121
Merged
Conversation
…v1.0.3 PR-Q)
Third attempt at PR-Q (prior agent attempts in v1.0.0 and v1.0.1 stalled
on external dep fetches). This attempt uses ONLY locally-authored Rust
sources with no external dependencies — no httparse / nom / serde
crates pulled.
## What ships
Three real Rust wasm modules under tests/corpus/, each with a
counterpart source crate at tests/corpus/rust-examples/<name>/:
tests/corpus/httparse.wasm 4766 bytes (242 LOC Rust source)
tests/corpus/json_lite.wasm 3510 bytes (251 LOC source)
tests/corpus/state_machine.wasm 1655 bytes (256 LOC source)
Each:
- Validates via 'wasm-tools validate' (silent OK on all 3).
- Is plausibly-sized for a measurement harness row (1-5 KB).
- Has no external crate dependencies — pure no_std Rust over &[u8].
- Mirrors the spirit of its name without being an exact reimpl:
httparse: byte-at-a-time HTTP/1.1 request line + header parser
json_lite: minimal JSON tokenizer over a &[u8] slice
state_machine: 4-state FSM (Idle/Running/Paused/Done)
## Workspace structure
tests/corpus/rust-examples/ becomes a Cargo workspace with 3 members.
Workspace package metadata uses [workspace.package] inheritance. Build:
cd tests/corpus/rust-examples
cargo build --release --target wasm32-unknown-unknown
Each member is a cdylib that exports a single C-ABI entry point
(parse / tokenize / step). The .wasm files are committed already-built
so consumers don't need wasm32-unknown-unknown installed to run the
harness.
## Why these specific shapes
The measurement harness expects fixtures named httparse / json_lite /
state_machine / etc. These were the previously-n/a rows in
docs/measurements/v0.9.0-corpus-baseline.md. Three of them now have
real numbers; the remaining (nom_numbers, loom self-build, calculator)
stay deferred.
Trace: REQ-15
avrabe
added a commit
that referenced
this pull request
May 17, 2026
…ap) (#124) Five-track sprint. Three landed via agents in worktrees, one direct-work, one deferred when its agent died. Merged: #120 Track 4: close SG-3..6 lifecycle gaps #121 Track 1 (PR-Q): real corpus fixtures (3rd attempt — success) #122 Track 2: ægraph MVP (acyclic e-graph substrate) #123 Track 5: issue triage + roadmap doc Issues closed via the roadmap: #45 Rocq foundation (already shipped) #47 StackSignature::compose associativity (proven) #50 Crocus-style ISLE verification (already in verify_rules.rs) #75 P3 async callback trampolines (duplicate of #70) Deferred to v1.0.4: Track 3: verifier table-resolver teaching (agent died) ægraph rewrite engine + per-rule proofs KEEP issues #48 #68 #70 #71 Lifecycle gaps: 4 → 0 (track 4 closed all remaining).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Third attempt at PR-Q (v1.0.0 and v1.0.1 agents stalled on external dep fetches). All-Rust, no-deps sources for 3 fixtures + their built .wasm files (4766 / 3510 / 1655 bytes). Each validates via wasm-tools. Removes 3 of the 6 previously-n/a rows from the measurement harness.
🤖 Generated with Claude Code