Orion Handoff
Carry bounded task context between local sessions. A producer records what it observed; another session selects the intended task and reviews what remains uncertain. Handoff data never grants permission to execute the next step.
Version 0.1.0. MIT licensed. The installed CLI is the supported interface; internal Python imports are not a public API.
Install and select an isolated store
Use CPython 3.11 or 3.13 on Linux x86_64 and a supported local filesystem. Validation covers WSL2 with an ext4-backed store. Native Windows, Windows-mounted stores, network filesystems and cross-host writers are unsupported. Exact interpreter and artifact proof belongs in the release receipt.
python3 -m venv .venv
.venv/bin/python -m pip install orion-handoff==0.1.0
.venv/bin/orion-handoff --json --version
.venv/bin/orion-handoff --store /absolute/owned/scratch/handoff-demo --json init
Select an existing writable parent and a new store path. Every stateful invocation requires --store or the new ORION_HANDOFF_STORE environment variable. There is no implicit home, and the private tool's ORION_HANDOFF_HOME is ignored. Package installation creates no store, hook, service or harness pointer.
For a complete wheel-only walkthrough with a synthetic generator and recovery checks, read the guide.
A two-session walkthrough
In the producer session, review examples/record-input.json. It is synthetic and has fixed historical times; supply actual observation times for a new demonstration. A new timestamp does not reverify an old result.
.venv/bin/orion-handoff --store /absolute/owned/scratch/handoff-demo --json record --input - < examples/record-input.json
In another session:
.venv/bin/orion-handoff --store /absolute/owned/scratch/handoff-demo --json pickup --task sample-task-alpha
.venv/bin/orion-handoff --store /absolute/owned/scratch/handoff-demo --json list --task sample-task-alpha
.venv/bin/orion-handoff --store /absolute/owned/scratch/handoff-demo --json show FULL_RECORD_ID
Task keys are explicit opaque identities. A project-resume selection needs exactly one current task; two tasks remain ambiguous even if one is newer, stale or done. Pickup with no selector returns provisional context without reading any records.
To revise a task, send a complete new input with predecessor set to its current record ID. All existing records remain immutable. A competing update returns conflict; inspect and reconcile rather than automatically overwriting it. Marking context stale or done is a successor record, not a PM task transition.
Read results honestly
JSON reports task match, structural integrity, context recency, recorded acceptance and disposition separately. context_available remains unverified. inspect_only has a selected record but no usable continuation. Missing, ambiguous or invalid context stays provisional; there is no fallback to an older baseline.
Every result states authority: none. References, actor labels, acceptance claims, evidence and next steps are recorded data. References are never opened or fetched. Freshness describes the supplied observation time, not current source compatibility or permission. The core performs no network requests, subprocess actions, session/history reads or integration with another tool's private store.
| Exit | Meaning |
|---|---|
| 0 | Named operation established; no execution authority. |
| 2 | Usage/configuration error. |
| 10 | Matched context needs inspection. |
| 11 | Missing or ambiguous requested context. |
| 65 | Invalid submitted input; no record committed. |
| 69 | Store/platform/I/O unavailable. |
| 73 | Busy, predecessor conflict or ID collision. |
| 74 | Integrity/compatibility/budget failure or unknown commit. Inspect before retry. |
Limits and recovery
Inputs and records are at most 64 KiB, the body at most 16 KiB, and a store retains at most 512 committed records. Reads are bounded and reject invalid stores rather than report partial selection as healthy. There is no automatic deletion, archive, import, migration or current-task pointer. A malformed committed record blocks selected pickup until an operator recovers the store.
Locks coordinate cooperative local clients. This is not authentication or protection from malicious same-user processes. Process-interruption tests do not establish physical power-loss behavior on every filesystem.
Read the operator runbook for stopped-writer backup, exact-store restore, unknown commits and retention. Uninstall preserves the store. The first version's recovery uses the exact artifact and matching backup; no prior public version exists to downgrade to.
Contracts and development
The core has no runtime dependencies outside the Python standard library. PM, browser, phone, Remote Hands and vendor harness integrations are separate packages. An optional future starter profile needs exact component pins and its own combined proof. Releasing this package does not migrate an installed estate.
MIT. Copyright 2026 Dan Mercede.
Metadata
Release files for orion-handoff 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| orion_handoff-0.1.0.tar.gz | 41.1 kB | With provenance | Details for orion_handoff-0.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| orion_handoff-0.1.0-py3-none-any.whl | Python 3 | none | any | Details for orion_handoff-0.1.0-py3-none-any.whl |
Total release size: 55.8 kB
Release files / orion_handoff-0.1.0.tar.gz
| Download URL | orion_handoff-0.1.0.tar.gz |
|---|---|
| Size | 41.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6e8e090121dd0daadff518be686e39440e1be572ef62ae8eca2df1ffc2b67261
|
|
BLAKE2b-256 checksum How to use checksums |
2f8e0c3b197c9d85d33a907cdf3a1d99f46f94135a187424cee956daaff3df1a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 18, 2026.
Transparency logRelease files / orion_handoff-0.1.0-py3-none-any.whl
| Download URL | orion_handoff-0.1.0-py3-none-any.whl |
|---|---|
| Size | 14.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e1f3e1e43839cfd2896cfc553bef9366867c1cf50bce1e4d4762cdbec9977e41
|
|
BLAKE2b-256 checksum How to use checksums |
81a2c8d0dab87013c3fbf1306f4793125e4a711ae5c185101bf4267164600fa9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 18, 2026.
Transparency logSecurity for orion-handoff 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
Both files in this release have been uploaded with provenance metadata.
Attestation for orion_handoff-0.1.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 18, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.