Skip to content

fix(api): refresh facade authority after compaction - #1234

Merged
DecisionNerd merged 5 commits into
mainfrom
fix/1231-compaction-facade-authority
Sep 10, 2026
Merged

DecisionNerd merged 5 commits into
mainfrom
fix/1231-compaction-facade-authority

Conversation

@DecisionNerd

@DecisionNerd DecisionNerd commented Sep 10, 2026 •

Copy link
Copy Markdown
Contributor

Compaction published a new generation while leaving the calling facade's private workspace and reader authorities at the old parent. The next SET failed, and a UUID-only refresh could republish stale data. This change prepares and installs the complete selected workspace, property/ordinal/adjacency authorities, catalog and bindings; active lazy streams retain the old workspace until their readers release it.

The Rust facade operation now requires mutable access, with thin Python/Node/CLI callers updated accordingly. Existing storage entrypoints keep their lifecycle behavior. The facade checks its expected parent, preserves writer/admission guards, and runs normal recovery after an authenticated own post-CURRENT error so an immediate exact retry finds the completed receipt. Current-format partial compaction remains an explicit refusal.

Validation covers CAS and actual adjacency-backed generation-owned publishing at 33/4,097 nodes, two logical routes and sharded construction; same-handle SET/CREATE/DELETE, null/removal semantics, non-reused IDs, lazy snapshots, reopen, exact query, export/full verify/clean import, and mixed exploratory/qualified-route SET/CREATE. Four subprocess cases distinguish crash recovery from same-facade continuation after returned errors before/after CURRENT. The populated UUID-cache/workspace-release test is selected into Windows and macOS CI.

Resource assertions preserve CAS sharing (192 KiB writes/1 MiB reads/eight copies/16 fsyncs) and separately bound existing generation-owned private copying (1 MiB writes/2 MiB reads/64 copies/128 fsyncs). Staged output and later Parquet payload stay within 1 MiB for these fixtures; reported logical compaction state stays within 4 KiB with zero reported spill. Compression is checked after compaction and later mutations. These are fixture component budgets, not universal process-RSS limits. Source-bound CPU, RSS, syscall I/O and sampled inode-allocation evidence is recorded in the storage assessment; the invalid baseline cannot support a complete-lifecycle speed comparison.

Local validation: 736 API unit tests; all 31 public-storage tests; five storage compaction tests; targeted immediate error-retry and mixed-route additions; workspace clippy with warnings denied; formatting, gate registry and make pre-push-fast. Required exact-head CI and native lanes must pass before merge. Independent review findings were verified and repaired; no outstanding local finding remains.

Closes #1231. Part of #1194; canonical publishing-contract gate #1221 remains open. The remaining exploratory edge-property owner case stays on reopened #1224, and same-name ontology promotion remains #1229. No compatibility or migration machinery is introduced.


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need. Autofix is disabled.

@coderabbitai

coderabbitai Bot commented Sep 10, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Advanced

Run ID: a4108b67-36b0-475e-901a-0a13177949fd

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Warning

Billing warning: we have not been able to collect payment for this subscription for more than 72 hours. Please update the payment method or pay any pending invoices in Billing to avoid service interruption.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions github-actions Bot added core Core source code changes documentation Improvements or additions to documentation ci-cd CI/CD configuration changes labels Sep 10, 2026
@DecisionNerd
DecisionNerd merged commit 1aea7a8 into main Sep 10, 2026
23 checks passed
@DecisionNerd
DecisionNerd deleted the fix/1231-compaction-facade-authority branch September 10, 2026 11:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci-cd CI/CD configuration changes core Core source code changes documentation Improvements or additions to documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

fix(api): refresh facade authority after delta compaction

1 participant