Expflow Python hook scaffold and read-only architecture schema discovery
Project description
Expflow
Expflow is a schema-governed, local-first workflow ownership and observability platform for projects where people, agents, and tools produce changing artifact trees.
Expflow records what changed, which evidence was trusted, which decisions remain durable, and which outputs can be inspected, regenerated, restored, or reused.
Current release: v1.0.0.
What Expflow Tracks
Expflow separates five concerns that are often blurred in automated work:
- material files before and after workflow activity;
- accepted authority sources for the work;
- attributed claims, decisions, conflicts, and review requests;
- workflow inputs, outputs, projections, regeneration attempts, equivalence evaluations, and reuse evidence;
- local security, migration, package, and proof evidence.
Material output does not imply semantic acceptance, workflow completion, or reuse permission. Expflow keeps those records separate.
Release Scope
Expflow v1.0.0 covers the local core surfaces implemented in this repository:
- four ordinary commands:
expflow init,expflow sync,expflow status, andexpflow restore; - local
.expflow/material storage with immutable object, node-revision, tree-revision, receipt, validation, change, and material-head records; - complete-tree sync, drift status, tree/node restore, scoped path selection, explicit identity directives, and digest-similarity proposals without silent identity preservation;
- project locks, operation-scoped staging, recoverable init/restore intents, stale-lock classification, causal tree/receipt head repair, restore recovery, and restored-tree digest verification;
- library runtimes for authority sources, semantic decisions, workflow boundaries, projections, regeneration/equivalence, structural reuse, security controls, migration evidence, and the native extension host;
- repository-contract checks for immutable architecture sources, schemas, examples, fixtures, registries, package boundaries, and end-to-end proof.
Quickstart
With the npm package available from the public registry:
npm install -g expflow
expflow init
expflow status
The npm package exposes the expflow CLI and TypeScript library exports. The Python package is a separate hook scaffold with read-only repository architecture discovery; it does not dispatch or execute hooks.
Installation
After verified registry publication, install the primary Expflow CLI and TypeScript package with:
npm install -g expflow
Install the Python hook scaffold separately with:
pip install expflow-hooks
expflow-hooks is not the primary Expflow CLI implementation. It exposes the limited Python hook/scaffold package and expflow_hooks import surface.
Workflow
- Run
expflow initto create local Expflow state. - Change files in the project tree.
- Run
expflow syncto record a complete material tree revision. - Run
expflow statusto inspect drift and recorded state. - Run
expflow restorewhen a recorded tree or node revision should be restored.
Gate C ownership/reproduction behavior and Gate D security/migration behavior are available through library runtimes rather than additional ordinary commands.
Commands
| Command | Purpose |
|---|---|
expflow init |
Initialize local Expflow project state. |
expflow sync |
Scan the working tree and commit a complete material tree revision. |
expflow status |
Report local drift and material project state. |
expflow restore |
Restore a recorded material tree or node revision. |
What Expflow Delegates
Expflow core intentionally does not implement every surrounding integration surface.
- Adapter inspection and reconciliation: belongs in separately versioned adapter packages.
- External revision cursors and idempotency: outside the core repository.
- Guerilla hook dispatch: compatibility reference only, not an Expflow core runtime.
- Network services, databases, and brokers: absent from the local core.
- Archive extraction and generated-code execution: blocked by the Gate D security posture.
- Pilots and empirical evaluation: future work outside the v1.0.0 core release.
Repository Map
docs/architecture/contains immutable architecture sources.docs/contains mutable implementation evidence, completion reports, release notes, review summaries, and orientation.schemas/andexamples/mirror the architecture schemas and examples for tooling.src/contains the TypeScript package, CLI, material runtime, Gate C library runtimes, Gate D security/migration runtimes, and contract tooling.python/expflow_hooks/contains the Python hook-package scaffold and repository-only schema discovery.tests/contains repository-contract, material-runtime, authority, Gate C ownership/reproduction, Gate D security/migration, package, and end-to-end proof tests.
For implementation status, see docs/CURRENT_STATUS_MATRIX.md. For contributor setup and validation commands, see README_DEV.md.
Validation
npm ci
npm run validate
python -m pip install -e ".[dev]"
python -m pytest
python -m build --wheel
python tests/contracts/verify_python_wheel.py
Documentation
- v1.0.0 GitHub release note
- v1 compatibility promise
- Release publishing checklist
- Current status matrix
- Developer guide
- Repository directory structure
- Security policy
License
Expflow is released under the MIT License.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file expflow_hooks-1.0.0.tar.gz.
File metadata
- Download URL: expflow_hooks-1.0.0.tar.gz
- Upload date:
- Size: 5.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f7dc9dfe5f53a6ae85aa062190dc61a229507c78d22cd2134a96e4ef466f3b29
|
|
| MD5 |
b4f1a520d79df8cbe7f870efdc2b1ba9
|
|
| BLAKE2b-256 |
c55f82e626ea2f67e6e6d1bd926b4afb7b890b6df1a541a8d8c33575aa2df6b3
|
Provenance
The following attestation bundles were made for expflow_hooks-1.0.0.tar.gz:
Publisher:
release.yml on paragon-ux/Expflow
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
expflow_hooks-1.0.0.tar.gz -
Subject digest:
f7dc9dfe5f53a6ae85aa062190dc61a229507c78d22cd2134a96e4ef466f3b29 - Sigstore transparency entry: 2193549185
- Sigstore integration time:
-
Permalink:
paragon-ux/Expflow@605d249f7e09adcaecc2a102f2fb874ef460a6fa -
Branch / Tag:
refs/tags/v1.0.0 - Owner: https://github.com/paragon-ux
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@605d249f7e09adcaecc2a102f2fb874ef460a6fa -
Trigger Event:
push
-
Statement type:
File details
Details for the file expflow_hooks-1.0.0-py3-none-any.whl.
File metadata
- Download URL: expflow_hooks-1.0.0-py3-none-any.whl
- Upload date:
- Size: 5.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c3a4aa3df87535cd8b90d0bdb8c250efed5dae51a154f9a796104b035f3adb97
|
|
| MD5 |
e9566cf65a7529174e067a90497b3b86
|
|
| BLAKE2b-256 |
32c36754e9d57e92aff7815da8b10de16cea2d47066f8a92298aa0baad51f7e1
|
Provenance
The following attestation bundles were made for expflow_hooks-1.0.0-py3-none-any.whl:
Publisher:
release.yml on paragon-ux/Expflow
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
expflow_hooks-1.0.0-py3-none-any.whl -
Subject digest:
c3a4aa3df87535cd8b90d0bdb8c250efed5dae51a154f9a796104b035f3adb97 - Sigstore transparency entry: 2193549190
- Sigstore integration time:
-
Permalink:
paragon-ux/Expflow@605d249f7e09adcaecc2a102f2fb874ef460a6fa -
Branch / Tag:
refs/tags/v1.0.0 - Owner: https://github.com/paragon-ux
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@605d249f7e09adcaecc2a102f2fb874ef460a6fa -
Trigger Event:
push
-
Statement type: