Skip to content

Roadmap: origin-precision candidates for 0.3.2 - #88

Merged
dweekly merged 2 commits into
mainfrom
docs/roadmap-origin-precision
Sep 19, 2026
Merged

dweekly merged 2 commits into
mainfrom
docs/roadmap-origin-precision

Conversation

@dweekly

@dweekly dweekly commented Sep 19, 2026

Copy link
Copy Markdown
Owner

Plain English

Running luad 0.3.1 over a real OpenWrt-derived firmware corpus turned up two things worth fixing next, so this records them on the roadmap. No code changes.

  1. Stop hiding resolvable values behind control-flow-conflict. When luad hits a branch join or a loop, it marks the value control-flow-conflict, which a downstream tool cannot see through. Where the set of possible values is actually finite, luad should list them (alternatives) instead. The 0.3.1 loop fix made this sharper: it widens loop values to control-flow-conflict, and those are often the neighbours of a value a security pipeline needs. This blocks 99 of 175 unresolved argument origins that reach shell and file sinks.
  2. A silent cap of exactly 2000 on two "unknown reason" counts makes them useless for comparing one release to the next. Either lift it or say out loud when a count was truncated.

Both items have machine-testable acceptance criteria: a public fixture plus a re-measurement against the private corpus.

Detail

  • The concrete repro prototype for item 1 names an unreleased finding in a shipping product, so it stays in the consumer's private notes rather than this public repo. The roadmap item is written to be actionable from the luad behavior alone.
  • Item 2 (B-9): the cap is not in the origins.rs analysis constants; the item points the next maintainer at the export and records/dedup path.
  • Freshness date for ROADMAP.md bumped in the README doc index.

🤖 Generated with Claude Code

https://claude.ai/code/session_01FtirLUpUr9aWq57opQ3WVi

dweekly and others added 2 commits September 19, 2026 12:44
Two measured origin-analysis gaps found running luad 0.3.1 over a private
OpenWrt-derived Lua 5.1 LNUM32 firmware corpus as the fact engine under a
downstream security-analysis pipeline:

- Emit a bounded `alternatives` set instead of the opaque `control-flow-conflict`
  where the reaching set is finite. The 0.3.1 loop-widening fix (PR #85) widens
  loop-carried slots to `control-flow-conflict`, which blocks their resolvable
  sibling expressions downstream. `control-flow-conflict` sits behind 99 of 175
  unresolved sink-argument origins.
- Make the origin unknown-reason cap explicit (B-9): two unknown-reason totals
  saturate at exactly 2000 corpus-wide, a silent clamp that makes the counts
  unusable as a release-over-release measurement.

Both carry machine-testable acceptance criteria pairing a public fixture with a
re-measurement against the private corpus. Bumps the ROADMAP freshness date in
the README index.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FtirLUpUr9aWq57opQ3WVi
…irst

Codex review (P1): the exactly-2000 saturation was asserted as a silent luad
cap, but handle_origins serializes every call and export caps per-file via
max_facts_per_file with truncation surfaced through file_end.is_truncated. No
corpus-wide cap exists in luad, so the claim overstated a root cause the code
disagrees with. Reword to an observation whose first acceptance condition is
reproducing it across raw luad output and the consumer aggregation to find the
responsible layer.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FtirLUpUr9aWq57opQ3WVi
@dweekly
dweekly merged commit 0dbde56 into main Sep 19, 2026
13 checks passed
@dweekly
dweekly deleted the docs/roadmap-origin-precision branch September 19, 2026 19: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