Add portable run receipts and deferred export - #73
Merged
Conversation
bigboateng
enabled auto-merge (squash)
August 20, 2026 08:32
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.
Why
Yield's append-only run journal contains the facts required for replay, but it
is not a portable or privacy-safe format for run health analysis, experiments,
or external reporting.
This change adds a deterministic observation layer without adding network work
to foreground skill execution.
What changes
yield.observation.v1RunReceiptschema.foreground return.
and experiment facts.
Receipt digests use canonical JSON. Reprojecting the same journal prefix
produces the same bytes and digest.
Safety and compatibility
The append-only run journal remains authoritative. Receipts and outbox state
are derived data and are never used during replay.
This change does not alter the
yield.v1SDK protocol or SDK APIs. Existingjournals are not rewritten, and legacy receipts omit facts that were not
recorded originally.
Foreground execution never performs export or network work. A sink failure
cannot change a skill result. Delivery is explicit, idempotent by receipt
digest, resumable after failure, and independent of delivery order.
Receipt objects are written with temporary files, synchronization, and atomic
installation. Per-digest locks prevent concurrent delivery of the same
receipt.
Privacy boundary
Receipts do not contain prompts, instructions, model responses, user answers,
command arguments, stdout, stderr, source contents, credentials, tokens,
environment values, or free-form failure details.
Raw values are represented by structured classifications or SHA-256 digests
where correlation is useful. Digests provide integrity and correlation, not
anonymization, and may still reveal low-entropy values through guessing.
Receipts contain only facts observed by the Yield supervisor. They do not
claim visibility into activity outside the Yield protocol.
CLI
The new surface includes:
yskill receiptyskill receipt materializeyskill outbox enqueueyskill outbox deliveryskill outbox statusyskill outbox retryyskill reportOutbox delivery uses an external executable. Yield sends one receipt on
standard input and does not include a built-in service or network adapter.
Scope
Yield provides evidence and experiment primitives. It does not select
experiment winners or grant authority to rewrite, install, merge, release, or
activate a proposal.
Garbage collection, automatic background scheduling, first-party network
sinks, receipt signatures, and causal experiment evaluation remain out of
scope.
Verification