Skip to content

feat(corpus): land httparse, json_lite, state_machine wasm fixtures (v1.0.3 PR-Q)#121

Merged
avrabe merged 1 commit into
mainfrom
release/v1.0.3-pr-q-corpus
May 17, 2026
Merged

feat(corpus): land httparse, json_lite, state_machine wasm fixtures (v1.0.3 PR-Q)#121
avrabe merged 1 commit into
mainfrom
release/v1.0.3-pr-q-corpus

Conversation

@avrabe
Copy link
Copy Markdown
Contributor

@avrabe avrabe commented May 17, 2026

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

…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 avrabe merged commit 0cb2dbd into main May 17, 2026
9 of 19 checks passed
@avrabe avrabe deleted the release/v1.0.3-pr-q-corpus branch May 17, 2026 05:07
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).
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