Shared preset-backed automation core for the unu product family
Project description
unuforge
Shared preset-backed automation core for the unu product family.
What This Repo Owns
- preset schema and normalization
- the machine-facing CLI
- profile and action dispatch contracts
- host-adapter integration boundaries
What It Does Not Own
- product-specific manifests and release scripts
- product-specific business-domain logic
- host repository runtime internals
- portfolio governance responsibilities owned by
unuOS
For repo-local positioning and admission rules, see
docs/superpowers/specs/2026-03-20-unuforge-positioning-guardrails-design.md.
Source Of Truth
- this README for contributor-facing repo overview and verification entrypoints
docs/releasing.mdfor maintainer release and publishing requirementsdocs/release-policy.mdfor maintainer versioning, manual merge gate, and upgrade-notice policydocs/consumer-contract.mdfor the downstream consumer template and official sample consumer contractdocs/portfolio-adoption.mdfor the current downstream rollout statefixtures/presets/v2-sample.jsonfor the checked-in sample preset contract
Workspace Layout
src/unuforge/- CLI, runtime dispatch, host-adapter, and preset logictests/- unit, distribution, and stub-host contract testsfixtures/presets/- sample preset fixtures used by verification commandsscripts/- local distribution build helpersdocs/- release notes and design / implementation history
Human Entrypoints
- source-based local verification:
PYTHONPATH=src python3 -m unittest discover -s tests
- local CLI inspection:
PYTHONPATH=src python3 -m unuforge.cli --help
- local artifact build:
python3 scripts/build_distribution.py --out-dir dist --json
- optional installed-artifact check:
python3 -m pip install dist/unuforge-0.3.0-py3-none-any.whlunuforge --help
Published Release Contract
- official external install contract:
python3 -m pip install unuforge==0.3.0unuforge --help
- contributors should continue to use source-based execution from the repo checkout
- GitHub Releases remain the tagged source record with built artifacts attached
Machine Entrypoints
- current machine-facing contract example:
PYTHONPATH=src python3 -m unuforge.cli preset inspect --preset fixtures/presets/v2-sample.json --json
- additional machine-entrypoint examples:
PYTHONPATH=src python3 -m unuforge.cli profiles list --preset fixtures/presets/v2-sample.json --jsonPYTHONPATH=src:tests python3 -m unuforge.cli profiles run sample.profile --preset fixtures/presets/v2-sample.json --host-adapter stub_host --dry-run --json -- --flagPYTHONPATH=src:tests python3 -m unuforge.cli actions run promote --preset fixtures/presets/v2-sample.json --host-adapter stub_host --dry-run --json -- --with-web
Release Overview
Contributors should continue to use source-based execution from the repository checkout. The published PyPI version is the supported interface for external consumers, and GitHub Releases are the tagged source record with the built artifacts attached for that release.
Maintainer release steps and publishing requirements live in docs/releasing.md. The maintainer-facing versioning, manual merge gate, and upgrade-notice policy live in docs/release-policy.md. The downstream consumer template and official sample consumer contract live in docs/consumer-contract.md, and the current portfolio rollout state lives in docs/portfolio-adoption.md.
Verification
Gate level:L2Minimum local verification:PYTHONPATH=src python3 -m unittest discover -s tests
Standard pre-merge verification:PYTHONPATH=src python3 -m unittest discover -s testsPYTHONPATH=src python3 -m unittest tests.test_distribution -vpython3 scripts/build_distribution.py --out-dir dist --jsonPYTHONPATH=src python3 -m unuforge.cli preset inspect --preset fixtures/presets/v2-sample.json --jsonPYTHONPATH=src python3 -m unuforge.cli profiles list --preset fixtures/presets/v2-sample.json --jsonPYTHONPATH=src:tests python3 -m unuforge.cli profiles run sample.profile --preset fixtures/presets/v2-sample.json --host-adapter stub_host --dry-run --json -- --flagPYTHONPATH=src:tests python3 -m unuforge.cli actions run promote --preset fixtures/presets/v2-sample.json --host-adapter stub_host --dry-run --json -- --with-web
Release or consumer-contract verification:python3 scripts/verify_consumer_contracts.py --consumer all- by default this expects sibling checkouts at
../unudispatchand../unuidentity - if your local layout differs, set
UNUDISPATCH_REPO_ROOTandUNUIDENTITY_REPO_ROOT
The fixture/stub-host adapter used above lives in tests/stub_host.py and
exists only to validate the thin-core dispatch contract locally. The real
downstream contract check is python3 scripts/verify_consumer_contracts.py --consumer all, which exercises the official unudispatch, unuidentity, and
unuvault sample consumers documented in docs/consumer-contract.md.
By default that script expects sibling checkouts at ../unudispatch,
../unuidentity, and ../unuvault. If your local layout differs, set
UNUDISPATCH_REPO_ROOT, UNUIDENTITY_REPO_ROOT, and UNUVAULT_REPO_ROOT
before running it.
GitHub Actions now runs a blocking consumer-contract job that uses the same
consumer contract verification command against checked-out sample consumers.
That job requires a repository secret named CROSS_REPO_READ_TOKEN with
read-only access to unundoTeam/unudispatch, unundoTeam/unuidentity, and
unundoTeam/unuvault.
Because this private repo cannot currently enable GitHub required checks on the active plan, merge discipline still depends on the manual maintainer gate documented in docs/release-policy.md.
Manual Merge Gate
unundoTeam/unuforge currently cannot enforce GitHub required checks through
branch protection on its current plan, so main continues to use a manual
merge gate.
Before merge, all of the following must be true:
testis greenconsumer-contractis green- the checks are for the current PR head commit
- the author has completed self-review
- changes touching CLI, preset, host-adapter, distribution, or release shape have an explicit technical review conclusion on the PR
Do not merge when any required check is red, missing, stale, or still running.
Review Model
unuforge follows the portfolio review baseline:
- approved design for behavior, contract, or release-shape changes
- author self-review
- Codex automatic review by default
- passing automation gates before merge
Human review is optional and is mainly recommended for release flow, preset schema, and host-adapter contract changes.
Cross-Repo Dependencies
- downstream product repos consume
unuforgefor machine-entrypoint execution unuOSowns the shared portfolio automation, verification, and governance contract layer around this thin core- host repositories own execution-specific adapters while
unuforgestays focused on dispatch plumbing
Current Risks / Migration Status
Repo lifecycle:activeContract maturity:automation contract:portfolio-standardverification contract:adopted
- downstream rollout is still uneven across product repos even though
unuforgenow defines the canonical thin-core machine surface - the main risk is allowing
unuforgeto absorb product-specific behavior or governance responsibilities that belong elsewhere - the package install contract is now real, but contributors should still treat source-based execution from the repo checkout as the primary development path
Project details
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 unuforge-0.3.0.tar.gz.
File metadata
- Download URL: unuforge-0.3.0.tar.gz
- Upload date:
- Size: 19.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ce8c901a4b7496466500b5e5da3f5f485e3b93b8679ccf7b0df49316e5112d6b
|
|
| MD5 |
48ce9cb9f95c54c8ebc4bf9480850409
|
|
| BLAKE2b-256 |
26a09584ec97a975a00727a2914414e34798d9395af734ebf096b71074dcf8d6
|
Provenance
The following attestation bundles were made for unuforge-0.3.0.tar.gz:
Publisher:
release.yml on unundoTeam/unuforge
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
unuforge-0.3.0.tar.gz -
Subject digest:
ce8c901a4b7496466500b5e5da3f5f485e3b93b8679ccf7b0df49316e5112d6b - Sigstore transparency entry: 1155556940
- Sigstore integration time:
-
Permalink:
unundoTeam/unuforge@48d31d611f5166af98270bdbcd2fee054bde7146 -
Branch / Tag:
refs/tags/v0.3.0 - Owner: https://github.com/unundoTeam
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@48d31d611f5166af98270bdbcd2fee054bde7146 -
Trigger Event:
push
-
Statement type:
File details
Details for the file unuforge-0.3.0-py3-none-any.whl.
File metadata
- Download URL: unuforge-0.3.0-py3-none-any.whl
- Upload date:
- Size: 13.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3350e70c657090925fa4d21ed5be03148d0ec224dfcffb24e6387224ad656373
|
|
| MD5 |
1fa3850a90851225ad171d4cbf8342aa
|
|
| BLAKE2b-256 |
4f066fac222dd853abed676f3548e1000fbdd389477c41a4a8424b1ae40e2ed1
|
Provenance
The following attestation bundles were made for unuforge-0.3.0-py3-none-any.whl:
Publisher:
release.yml on unundoTeam/unuforge
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
unuforge-0.3.0-py3-none-any.whl -
Subject digest:
3350e70c657090925fa4d21ed5be03148d0ec224dfcffb24e6387224ad656373 - Sigstore transparency entry: 1155556947
- Sigstore integration time:
-
Permalink:
unundoTeam/unuforge@48d31d611f5166af98270bdbcd2fee054bde7146 -
Branch / Tag:
refs/tags/v0.3.0 - Owner: https://github.com/unundoTeam
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@48d31d611f5166af98270bdbcd2fee054bde7146 -
Trigger Event:
push
-
Statement type: