8000 docs(bench): manual shape sweeps and recursive controls (Refs #841) by adityamukho · Pull Request #860 · project-minigraf/minigraf · GitHub
[go: up one dir, main page]

Skip to content

docs(bench): manual shape sweeps and recursive controls (Refs #841) - #860

Merged
adityamukho merged 1 commit into
v3from
bench/841-shape-sweeps
Nov 5, 2026
Merged

adityamukho merged 1 commit into
v3from
bench/841-shape-sweeps

Conversation

@adityamukho
@adityamukho adityamukho commented 8000 Nov 5, 2026
Copy link
Copy Markdown
Collaborator

Related #841. Draft for review; not for merge without explicit approval.

What this adds

  • docs/benchmarks/841-shape-sweeps/README.md: the X06 report for core revision 5a0ff549271084018c7d4e6050658e64e7e6432e, plus PROTOCOL.md and SET-UUID-RESULTS.md.
  • scripts/shape-sweep/: a standalone harness (Python controllers, analysis and tests, plus a native Rust runner with its own workspace and lock).
  • evidence.tar.gz + SHA256SUMS: a 5.7 MB sanitized archive containing 7,869 text artifacts, the exact source inputs, the execution manifest and fixture/binary hashes.
  • Shared docs updated: CLAUDE, README, ROADMAP, CHANGELOG, TEST_COVERAGE, BENCHMARKS, and the X06 row in bench-coverage-v3.

No production code, public API, nightly route or Rust test-inventory change.

Results (every slot has a disposition)

Series Planned Measured Other
Public sort/window/set/UUID 2,820 slots / 188 cases 2,700 20 timeout and 40 deferred (four capped 10m window batches); 60 deferred (four set fixtures rejected with WAL-003)
Capped-window retry (3×1) 12 12 —
Recursive controls 2,640 2,355 80 INT-020 errors on the 1,000-edge chain; 15 attribute-scan timeouts; 190 deferred
Pin/FactLog churn 48 cases × 544 generations 48 —
Charged query memory 204 204 —

Main findings:

  • Recursive controls
    • Attribute scans instead of bound-value AVET probes are 2.9–30× slower on committed data.
    • Disabling the small ancestor alternative makes pending k=1 trees 5.2× and 34× slower.
    • Baseline path counters are nonzero in exactly the affected cases.
    • The cache and static-order controls stay within about ±7% (pooled medians).
  • Churn
    • One held reader keeps every page later checkpoints free; the oldest pin decides what is kept.
    • After release, pages are reused, the file stops growing and never shrinks.
    • Checkpoint cost changes by −0.04 to +0.17 ms.
  • Query memory
    • Committed ascending sort charges nothing.
    • A descending :limit holds offset + limit rows.
    • Windows charge by their largest partition. Incompatible window orders hold the whole input, the largest charge in the sweep at 1.49 GB.
  • Limit boundary: with a literal argument, the default limit of 1,000 rounds answers recursive chains of at most 500 edges. Magic-set demand shares the rules' stratum, so a chain takes about two rounds per edge (checked locally: 500 passes, 501 fails).

Verification

  • The extracted archive passes a SHA-256 check of every file. evidence.py, analyze.py ratios and analyze.py churn were rerun on it, and all output matches the summaries written during the runs.
  • The committed harness is hash-identical to the reviewed harness ("B") that drove the later stages. The measured binaries come from the earlier source ("A"); both source sets are in the archive.
  • Harness Python tests: 10 pass. Native harness: 7 pass (run on the bench host before measurement).
  • A privacy scan found no host addresses, hostnames, CPU model or home paths. Absolute paths are normalized in 36 files.
  • A Claude review checked every number against the evidence. All eight findings it raised are fixed, including the round-count arithmetic for the 1,000-edge chain.

Nightly candidates are proposals only; none is added.

🤖 Generated with Claude Code

https://claude.ai/code/session_01H2a7QoYX6tc5G3sKVzvLjD

…841)

Adds the X06 manual shape-sweep report for core revision 5a0ff54 on v3:
sort/window, set and UUID shapes (188 cases), a capped-window retry, matched
recursive controls with baseline path counters, 544-generation pin/FactLog
churn and charged query memory. Every rejected, capped, limit-error and
deferred slot keeps its disposition. The standalone harness in
scripts/shape-sweep/ and a sanitized evidence archive (SHA256SUMS) allow
every table to be regenerated.

No production code, public API, nightly route or Rust test inventory change.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01H2a7QoYX6tc5G3sKVzvLjD
@codecov
codecov Bot commented Nov 5, 2026
Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@adityamukho
adityamukho marked this pull request as ready for review November 5, 2026 18:35
@adityamukho
adityamukho merged commit 5d85c36 into v3 Nov 5, 2026
19 checks passed
@adityamukho
adityamukho deleted the bench/841-shape-sweeps branch November 5, 2026 18:35
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

0