You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Establish the frozen Python-package foundation for immutable Harness deployments: a committed dependency lock, a non-editable wheel installation, and runtime-owned resources that work without a Harness Git checkout.
This issue is the first implementation unit under #361. It intentionally does not absorb the later helper-command migrations or deployment-bundle publication.
Current state
pyproject.toml declares lower-bounded dependencies, bin/setup-env.sh and CI install ".[dev]" editably, and runtime defaults locate config/WORKFLOW.md and ruleset JSON files by walking to the source-repository root.
Acceptance criteria
Commit a uv lockfile covering runtime and development dependencies across the supported Python range, including Python 3.13.
CI fails when pyproject.toml and the lockfile disagree.
Runtime-owned defaults (WORKFLOW.md and ruleset comparison/configuration JSON) are shipped as package resources and load without a Harness source checkout or .git.
Document and test a lock-enforced production installation that installs no development extras and installs Harness non-editably.
Build and install a wheel from clean source, then verify all five existing console entry points from outside the repository working tree.
Exercise package installation on Python 3.13 and the declared Python floor.
Demonstrate that a missing lock, stale lock, missing packaged resource, or dependency drift fails closed.
Keep bin/setup-env.sh as the editable development bootstrap and clearly distinguish it from production installation in README/setup documentation.
Deployment consumer
External infrastructure will verify and stage the resulting artifacts into a root-owned immutable release. Harness owns its Python package and runtime resources; external infrastructure owns host provisioning and service lifecycle.
Out of scope
Converting init-sandbox.sh, provision-ruleset.sh, scenario helpers, or launcher wrappers into packaged commands
Publishing the final release bundle or checksums
Systemd installation, host filesystem policy, activation, and rollback
Installing or pinning Node, Claude Code, GitHub CLI, BWS CLI, or uv on managed hosts
Summary
Establish the frozen Python-package foundation for immutable Harness deployments: a committed dependency lock, a non-editable wheel installation, and runtime-owned resources that work without a Harness Git checkout.
This issue is the first implementation unit under #361. It intentionally does not absorb the later helper-command migrations or deployment-bundle publication.
Current state
pyproject.tomldeclares lower-bounded dependencies,bin/setup-env.shand CI install".[dev]"editably, and runtime defaults locateconfig/WORKFLOW.mdand ruleset JSON files by walking to the source-repository root.Acceptance criteria
pyproject.tomland the lockfile disagree.WORKFLOW.mdand ruleset comparison/configuration JSON) are shipped as package resources and load without a Harness source checkout or.git.bin/setup-env.shas the editable development bootstrap and clearly distinguish it from production installation in README/setup documentation.Deployment consumer
External infrastructure will verify and stage the resulting artifacts into a root-owned immutable release. Harness owns its Python package and runtime resources; external infrastructure owns host provisioning and service lifecycle.
Out of scope
init-sandbox.sh,provision-ruleset.sh, scenario helpers, or launcher wrappers into packaged commandsParent: #361