Skip to content

Sealed dumps: always-on v2 fingerprint (policy + runtime)#58

Merged
ababic merged 2 commits into
mainfrom
cursor/dumpling-seal-b93b
May 3, 2026
Merged

Sealed dumps: always-on v2 fingerprint (policy + runtime)#58
ababic merged 2 commits into
mainfrom
cursor/dumpling-seal-b93b

Conversation

@ababic

@ababic ababic commented May 3, 2026

Copy link
Copy Markdown
Owner

Summary

Rebased onto current main. Sealed dumps are always on (no CLI flags).

Behaviour

  • Output: Every successful run that writes SQL (not --check) prefixes output with:
    -- dumpling-seal: v=2 version=<semver> profile=<standard|hardened> sha256=<64 hex>
  • Fingerprint (sha256): Canonical JSON includes Dumpling version, security profile, resolved policy (rules, filters, column cases, sensitive columns, output scan, salt), plus runtime fields: --format, sorted --include-table / --exclude-table, and PRNG seed override (--seed / DUMPLING_SEED) in standard profile only (null in hardened where seeds are ignored at runtime).
  • Input: If the first line is a seal and it matches, the rest of the file is copied through unchanged. If it looks like a seal but does not match (you changed config or flags), that line is stripped and the dump is re-anonymised so output does not accumulate duplicate seals.
  • --strict-coverage still errors when a matching seal would skip CREATE TABLE scanning.
  • --check: No seal line written (no output file).

Commits

  1. Initial seal feature (rebased onto main after ci: bump actions/checkout, setup-python, artifacts, Pages to Node 24 majors #57).
  2. Always-on seal v2 + runtime options in hash + stale-seal stripping.

Tests

cargo fmt, cargo clippy --all-targets --all-features, cargo test --all-targets --all-features.

Slack Thread

Open in Web Open in Cursor 

cursoragent and others added 2 commits May 3, 2026 17:32
Add --emit-seal-line to prefix output with a SQL comment encoding format
version, Dumpling semver, security profile, and SHA-256 of canonical
resolved policy JSON.

Add --trust-sealed-dumps to pass the remainder of the file through
unchanged when the first line matches the current binary, profile, and
fingerprint. Reject --strict-coverage with a matching seal (no CREATE
TABLE scan). Document in README and add an integration test.

Co-authored-by: Andy Babic <ababic@users.noreply.github.com>
- Remove --emit-seal-line and --trust-sealed-dumps; seal is written on
  every non-check output and matching seals always enable passthrough
- Bump seal payload to v=2; hash includes policy plus runtime params
  (format, sorted include/exclude patterns, PRNG seed override in standard)
- Strip a non-matching leading seal so re-runs after config/flag changes
  do not duplicate seal lines
- Add prng_seed_override_for_fingerprint() for seal vs hardened behavior

Co-authored-by: Andy Babic <ababic@users.noreply.github.com>
@cursor cursor Bot force-pushed the cursor/dumpling-seal-b93b branch from a0fd5bd to 80da65a Compare May 3, 2026 17:37
@cursor cursor Bot changed the title Sealed dumps: policy fingerprint + version markers Sealed dumps: always-on v2 fingerprint (policy + runtime) May 3, 2026
@ababic ababic marked this pull request as ready for review May 3, 2026 20:26
@ababic ababic merged commit 3ab1abd into main May 3, 2026
10 checks passed
@ababic ababic deleted the cursor/dumpling-seal-b93b branch May 3, 2026 20:26
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.

2 participants