Regulated Execution Operations control-plane for profile-defined workflows bound to GovEngine and SCLite.
Project description
RExecOp
Regulated Execution Operations control-plane for profile-defined workflows, bound to GovEngine governance and SCLite auditable truth.
RExecOp (package name: rexecop) is the deterministic runner, orchestrator, and executor
for domain profiles. It plans and runs declared workflow steps, enforces operational lifecycle
mechanics, and projects completed work into SCLite-compatible artifacts — without becoming a
policy engine or a parallel truth layer.
Status
| Item | Value |
|---|---|
| Version | 0.2.4a0 |
| Maturity | alpha — operator evaluation with documented limits |
| Delivery | Alpha scope complete on main (see CHANGELOG) |
| Tests | 209 passed, 1 skipped (CI: ruff, mypy, public truth, boundary grep, secret scan, build, pytest) |
| PyPI | rexecop==0.2.4a0 |
| Dependencies | govengine>=0.15.0,<0.16, sclite-core>=1.0.1,<1.1 (see pyproject.toml) |
| Default posture | dry_run / read-only first; apply requires GovEngine allow |
Project sentence
RExecOp runs profile-defined operations under GovEngine admission and records auditable outcomes through SCLite — profiles own meaning, GovEngine owns governance, SCLite owns proof, RExecOp owns execution mechanics.
Stack position
One operation crosses all layers. GovEngine gates mutating work; SCLite validates the proof bundle RExecOp emits after execution.
Profiles (tecrax, fixtures)
intents, workflows, connector contracts, validation rules
|
v
RExecOp plan -> lifecycle FSM -> step execution -> profile validation
| \
| `--> GovEngine admission (mutating modes only)
| allowed | blocked | approval_required
v
RExecOp project runtime facts + GovEngine admission into SCLite artifact shapes
|
v
SCLite validate schemas, ticket binding, review_bundle (truth authority)
| Layer | Responsibility |
|---|---|
| Profiles | Intents, workflows, connector contracts, declarative validation rules |
| RExecOp | Runner: lifecycle, planning, step dispatch, pause/resume/retry, queue/lock; projects completed operations into SCLite bundles (does not decide policy) |
| GovEngine | Governance: admission and runner request/receipt contracts — does not execute steps or emit SCLite files |
| SCLite | Proof: auditable artifacts, scoped tickets, receipt-bounded evidence, review bundles |
Tecrax ships as the tecrax package (rexecop.profiles:tecrax).
Ravenclaw is legacy and out of scope for RExecOp.
What RExecOp includes now
- Deterministic operation state machine and
OperationPlanruntime artifact - GovEngine port: real
GovEngineClient+ bootstrap-onlyStaticGovEngineAdapter - SCLite port: full GovEngine-integration bundle emission (scoped ticket v0.3, kernel guard, review pass)
- Profile resolution by path or
rexecop.profilesentry point (tecrax) - Declarative profile validation rules (YAML, not hardcoded domain logic in core)
- Vertical slices: read-only
check_backup_status, applyrestart_zabbix_agent(mock + staginghttp_api) - Operational controls: approve, pause, resume, cancel, retry, rollback, queue, target lock, maintenance windows
- Runtime worker:
rexecop worker run,rexecop queue --drain,rexecop trigger(host-owned scheduling) - Connectors:
mock, config-drivenhttp_api(retry, pagination, error mapping),local_shell_readonly,ssh_readonly(temporary; bounded output + digests) - Execution contracts:
ExecutionRequest/ExecutionReceiptin workflowshared_state(schemav0.1) - GovEngine
PolicyEnginewhenenvironment.policy_packis set (plan + per-connector invoke gate) - Storage:
FileStore(default) or optionalSqliteStore(REXECOP_STORAGE/--storage) - Secrets port:
REXECOP_SECRET_*andREXECOP_SECRETS_FILE(no plaintext secrets in git or.rexecop/) - Operator CLI (
rexecop); runtime data under.rexecop/in the current working directory
What RExecOp does not include
- A policy engine (GovEngine is the governance authority)
- SCLite schema authority or long-term truth storage
- Domain profiles in core (no Tecrax/Ravenclaw operational logic in
src/rexecop) - Production cron/recurrence scheduler (host-owned worker + systemd/cron pattern only)
- Web UI or multi-tenant RBAC
- Unattended apply on critical infrastructure without operator and governance gates
Installation
Published alpha package:
python -m pip install "rexecop==0.2.4a0"
rexecop version
See docs/distribution.md for Tecrax extra, wheels, Git URL, and private index notes.
From source (development):
git clone https://github.com/rozmiarD/RExecOP.git
cd RExecOP
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
With the Tecrax profile package:
pip install -e ".[dev]" -e /path/to/tecrax
# or: pip install -e ".[dev,tecrax]" # when tecrax is installable from index
CI also checks out tecrax for integration tests.
Quick start
rexecop version
rexecop plan \
--profile tecrax \
--env examples/environments/small-public-unit-proxmox.example.yaml \
--intent check_backup_status \
--target all_critical_vms \
--mode dry_run
rexecop start --operation <operation-id>
rexecop status --operation <operation-id>
rexecop validate --operation <operation-id>
- With
tecraxinstalled,--profile tecraxresolves via entry point. - For offline tests without the external package, use
examples/profiles/tecrax-fixture/profile.yaml. - Staging
http_apitemplate:examples/environments/small-public-unit-proxmox.staging.example.yaml
Runtime artifacts live under .rexecop/ (gitignored): operations, evidence, SCLite bundles, receipt exports.
CLI commands
| Command | Purpose |
|---|---|
plan |
Create operation + plan; GovEngine gate for mutating modes |
approve |
Manual approval after approval_required |
start |
Execute workflow (queues when lock/capacity busy) |
pause / resume |
Pause only at pause_safe workflow steps |
cancel |
Abort before completion |
retry |
Operator retry when profile policy allows |
rollback |
Run explicit workflow rollback steps after failure |
validate |
Re-run declarative profile validation |
escalate |
Build operator escalation package |
queue |
Inspect FIFO run-now backlog; queue --drain processes pending starts |
worker run |
Poll queue and start approved operations (--once, --poll-interval, --watch-inbox) |
trigger |
Create operation from JSON stdin or CLI flags (webhook-friendly) |
status / history |
Operation state and evidence history |
version |
Package version |
Global option: --storage file|sqlite selects the runtime storage backend.
Development
pip install -e /path/to/tecrax -e ".[dev]"
python scripts/validate_public_truth.py
ruff check .
mypy src/rexecop
python -m build && python -m twine check dist/*
pytest
GitHub Actions runs on every push and pull request: install tecrax, public truth validation,
ruff, mypy, core boundary grep, secret scan, pytest, and a package-dry-run job (build +
twine check).
Documentation
| Document | Topic |
|---|---|
| docs/architecture.md | Layer boundaries and execution path |
| docs/operation-lifecycle.md | States, CLI orchestration, queue/lock |
| docs/operator-scheduler-pattern.md | Host-owned scheduling with worker/systemd |
| docs/govengine-integration.md | Governance port and apply gating |
| docs/sclite-integration.md | Artifact emission and authority model |
| docs/evidence-model.md | Internal events vs SCLite truth |
| docs/profile-contract.md | Profile layout and entry points |
| docs/connector-contract.md | http_api, secrets, error taxonomy |
| docs/execution-contract.md | ExecutionRequest/Receipt, bounded output |
| docs/environment-contract.md | Target, group, and connector semantics |
| docs/storage-backends.md | File vs SQLite boundaries |
| docs/safety-model.md | Hard safety rules and operator posture |
| docs/known-limitations.md | Alpha scope and explicit non-claims |
| docs/distribution.md | Wheels, Git install, private index |
| OPERATOR_LAB_RUNBOOK.md | Lab checklist and E2E walkthrough |
| OPERATOR_RUNBOOK.md | Installation, secrets, workflows, troubleshooting |
| CHANGELOG.md | Release history |
Related repositories
| Repository | Role |
|---|---|
| GovEngine | Governance kernel and admission contracts |
| SCLite | Auditable contract lifecycle and review bundles |
| tecrax | Tecrax domain profile and local-fixture package |
License
MIT — see 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 rexecop-0.2.4a0.tar.gz.
File metadata
- Download URL: rexecop-0.2.4a0.tar.gz
- Upload date:
- Size: 116.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a1bba12606fb3641989d8fd351c1dba885437054ba498656e675ccd46e923fdd
|
|
| MD5 |
7ea20299d995eaa8dba527b18773701d
|
|
| BLAKE2b-256 |
0a43fc8917e9f6b086c69bac385d1cff7d035250d43e9f15a69ba3ab794f6478
|
File details
Details for the file rexecop-0.2.4a0-py3-none-any.whl.
File metadata
- Download URL: rexecop-0.2.4a0-py3-none-any.whl
- Upload date:
- Size: 93.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e9de105309b98e4f55bcab1b4ab1b5d4de923c126d7b1407c456847caf475864
|
|
| MD5 |
ec565a7c29765e2ce946f3973a7cdb65
|
|
| BLAKE2b-256 |
7da9db5d625376a01d4cbe34c57891334995acfd62f4180e9a1a2759afe6c183
|