Workaround for merging PR stack #40 - #45
Merged
Merged
Conversation
Adapt Eduardo Bart's C application support from PR #32 to the revised Application contract. Keep exclusive movable engine ownership, native progress, fallible validation/execution, and typed missing/corrupt checkpoint errors. Add a reference wallet engine, host binaries, and tests through the actual ABI. Source: #32 Source-Commit: 0fa1755
Let file-backed applications load genesis only when setup needs its initial snapshot. Completed setup remains a no-op after the original genesis file is gone. Expose run_command for custom parsers so the C host shares command-task panic projection and the existing bootstrap error policy. Remove the external engine's arbitrary payload ceiling and align checkpoint deletion documentation with database-reference removal before garbage collection. BREAKING CHANGE: genesis factories passed to run_main, run_command, dispatch, and setup return Result<A, AppError>. Wrap infallible constructors in Ok(...).
Exercise mixed outputs through a test ABI that reuses its payload buffer, including a full-width nonzero voucher value. Restore the external archive CI smoke check and libclang dependency, and clarify bridge discovery and cross-target determinism responsibilities. Validation: workspace check, strict Clippy, formatting, 718 host tests, and external archive build plus CLI smoke check passed.
Catch application snapshot-path panics at both HTTP handlers and invoke the host terminal-abort policy. Classify deterministic application bootstrap I/O failures as terminal while keeping operational I/O restartable and genesis construction lazy. Validate both snapshot routes with subprocess SIGABRT tests and extend the exit-code table with terminal and retryable bootstrap cases.
Recognize --help and -h before treating the argument as a dump path. Pin successful help output and an untouched working directory in a CLI regression test, and remove the unused tracing dependency from the generic host.
Read the stable method payload bound from the linked engine, return count and clock together, and let the sequencer discard self-contained checkpoint directories with ordinary filesystem deletion. Remove the duplicated payload-limit build setting and cleanup-only Application type parameters. Update the reference ABI implementation, file/directory independence tests, build instructions, and protocol guide. Keep engine-dependent output, layout, conformance, and linking work documented as follow-ups. BREAKING CHANGE: Application implementations replace MAX_METHOD_PAYLOAD_BYTES with max_method_payload_bytes() and remove delete_dump. Native archives export application_engine_max_method_payload_bytes and application_engine_progress with ApplicationEngineProgress instead of scalar progress getters and a deletion hook. External builds require only the archive and header settings. Validation: 722 host tests passed, with one existing ignored doctest; workspace check, strict Clippy, formatting, C11/C++17 header checks, and external archive build plus CLI smoke check passed.
Validate history claims before inclusive canonical pagination and capture snapshot history identity with the artifact lease. Preserve existing HTTP and WebSocket behavior for the coordinated consumer cutover. Cover recovery replacement, coherent reads, rebuilt history bases, deep backlogs, and lease metadata. Record the accepted snapshot-to-tip workflow and remaining API work.
Use one current application sequence with mandatory offsets and atomic recovery suffix replacement. Publish complete era baselines and derive immutable batch snapshot acceptance directly from L1 facts. Serve restorable HTTP archives and require versioned canonical WS claims. Update SDK, recovery exports, watchdog metadata, tests, and architecture documentation.
Exercise nonempty HTTP restore, concurrent catch-up, live replication, and recovery rebootstrap through the consumer API. Preserve Lua module paths in doctor and correct benchmark fee defaults uncovered during validation. Record pinned emulator 0.20 canonical-machine gates and an exact-revision ABBA latency comparison. Native engine conformance and deployment latency remain separate integration gates.
Expose era-pinned historical L1 pages and coherent history metadata for application projections. Record preserved-prefix cuts atomically with recovery and expose generation compatibility through HTTP and the Rust SDK. Cover projection restore, historical replay, missed recoveries, and subscription races. Document manual recovery readiness and separate downstream adoption from API merge criteria.
stephenctw
approved these changes
Sep 22, 2026
This was referenced Sep 22, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Contains all commits from PR stack #40: #36, #38, #39, #42, #43, #44.