Compatibility
This compatibility page is generated from canonical repo-owned source material in JaddaHelpifyr/jhf-openclaw-env.
Compatibility Sources
docs/OSS_INVENTORY.mddocs/STACK_RUNTIME_CONTRACT.mddocs/OPENCLAW_RUNTIME_VERSION_FLOOR.md
Derived from Stack OSS Runtime Materialization
Stack OSS Runtime Materialization
This document defines the canonical runtime inventory and drift-verifier lane
for env-owned OSS versions on <internal-runtime-redacted>.
Every inventory component carries license, license_class, and
license_evidence_url. Until component-specific legal evidence is reviewed,
the only valid posture is NOASSERTION with unknown_blocked; inventory
discovery never infers or approves a third-party license.
A component can leave that posture only with a component-specific
license_evidence_url and an allow-listed, applicable
fabric_policy_decision_ref. The current decision allow-list is
helpifyr-fabric#1540 (runtime-reference/distribution model) and
helpifyr-fabric#1541 (managed-hosting/service channel); adding another
decision is a separately reviewed Fabric-policy change, never an inventory-only
edit.
Scope
The current repo-owned discoverability slice for Fabric consumer scans is
tracked in jhf-openclaw-env#1426.
Issue references: jhf-openclaw-env#1426, jhf-openclaw-env#209, jhf-openclaw-env#214, jhf-openclaw-env#251, jhf-openclaw-env#313, follow-up refresh jhf-openclaw-env#1528
License-metadata follow-through: jhf-openclaw-env#2569, parent
jhf-beam#617, and legal umbrella helpifyr-fabric#1543.
Env-owned/runtime-owned in this repository:
- Docker Engine
- Docker Compose
- containerd
- runc
- adguard (
adguard/adguardhome:v0.107.74) - caddy (
caddy:2.8.4) - portainer (
portainer/portainer-ce:2.39.1) - MinIO scanner truth token (
minio:2025.9.7) - Valkey (
valkey/valkey:7.2.11-alpine)
Ingress/platform upgrade consumers enforced by this repository:
wikijs-proxy-nginx(Fabric platform ingress family, validated through machine-readable readback/compatibility contracts and fail-closed verifiers)
Canonical upgrade/materialization mirrors for the OpenClaw runtime pin:
- primary runtime pin:
deploy/compose/jhf-openclaw-env.stack.yml - secondary/runtime-shadow pin:
deploy/compose/jhf-openclaw-env-wave9-secondary-73.stack.yml - scanner truth mirror:
deploy/compose/compose.oss-version-truth.yml - operator canary path:
scripts/host_openclaw_gateway_canary.sh
Canonical contracts:
- config/contracts/openclaw_stack_oss_runtime_materialization.v1.json (
config/contracts/openclaw_stack_oss_runtime_materialization.v1.json) - config/contracts/openclaw_fabric_tool_oss_directory_runtime.v1.json (
config/contracts/openclaw_fabric_tool_oss_directory_runtime.v1.json) - maintenance/oss-inventory.json (
maintenance/oss-inventory.json) - maintenance/oss-version-truth.json (
maintenance/oss-version-truth.json) - maintenance/openclaw-2026.6.8-host172-pin-prep.json (
maintenance/openclaw-2026.6.8-host172-pin-prep.json) - maintenance/oss-upgrade-governance.json (
maintenance/oss-upgrade-governance.json) - maintenance/oss-upgrade-readback-policy.json (
maintenance/oss-upgrade-readback-policy.json)
Canonical machine-readable source paths for Fabric consumer scans:
config/contracts/openclaw_stack_oss_runtime_materialization.v1.jsonconfig/contracts/openclaw_fabric_tool_oss_directory_runtime.v1.jsonmaintenance/oss-inventory.jsonmaintenance/oss-version-truth.jsonmaintenance/openclaw-2026.6.8-host172-pin-prep.jsonmaintenance/oss-upgrade-governance.jsonmaintenance/oss-upgrade-readback-policy.json
Canonical verifiers:
- scripts/verify_stack_oss_runtime_materialization.py (
scripts/verify_stack_oss_runtime_materialization.py) - scripts/verify_fabric_tool_oss_directory_runtime.py (
scripts/verify_fabric_tool_oss_directory_runtime.py) - scripts/verify_oss_inventory_version_truth.py (
scripts/verify_oss_inventory_version_truth.py) - scripts/verify_oss_upgrade_fail_closed.py (
scripts/verify_oss_upgrade_fail_closed.py) - scripts/verify_openclaw_2026_6_8_host172_pin_prep.py (
scripts/verify_openclaw_2026_6_8_host172_pin_prep.py)
Fabric upstream contract references consumed by this owner repo:
helpifyr-fabric/contracts/platform/platform_version_truth.jsonhelpifyr-fabric/contracts/platform/platform_projection_catalog.jsonhelpifyr-fabric/contracts/platform/platform_oss_upgrade_governance_v1.jsonhelpifyr-fabric/contracts/platform/platform_oss_upgrade_compatibility_matrix_v1.jsonhelpifyr-fabric/contracts/platform/platform_oss_upgrade_evidence_contract_v1.jsonhelpifyr-fabric/contracts/platform/helpifyr_stack_module_identity_v1.jsonhelpifyr-fabric/contracts/platform/stack_tool_oss_inventory_directory.json
Acceptance Contract
Repo and live runtime are healthy when all are true:
- env-owned compose truth stays pinned (no
latest/unknown) in:deploy/compose/compose.oss-version-truth.ymldeploy/compose/jhf-openclaw-env.stack.yml
- docs truth in:
- docs/STACK_RUNTIME_CONTRACT.md (
docs/STACK_RUNTIME_CONTRACT.md) - docs/ENV_BASELINE.md (
docs/ENV_BASELINE.md) matches the contract.
- docs/STACK_RUNTIME_CONTRACT.md (
- live host readback confirms:
- host runtime versions match contract
- env-owned containers use pinned images
- env-owned compose labels materialize from canonical compose/workdir paths.
Floating tags for non-env projects are recorded as observations and must not be misclassified as env-owned drift.
For upgrade-readiness and inventory-truth release gates, this repository provides a strict fail-closed mode that also fails when tracked non-env floating tags are still present.
For the Beam/Fabric directory followthrough lane, live runtime health also
requires that GET /api/v1/platform/tool-oss-inventory-directory keeps the
owner-followthrough classifier fields (owner_followthrough_count,
owner_followthrough_issue_refs, workspace_observation_gap_count) present
while the current canonical readback for jhf-openclaw-env remains fully
ready:
summary_status=readyblocked_tool_count=0consumer_contract_gap_count=0- the
jhf-openclaw-enventry staysstatus=readyandblocking_scope=ready
That preserves Beam's ability to distinguish future owner followthrough from repo-owned consumer drift without forcing this repo to keep reporting an already-resolved blocked posture.
Upgrade Materialization Path
The env-owned upgrade path is only considered reproducible when the same version truth is mirrored across all owner surfaces:
- update the primary runtime pin in
deploy/compose/jhf-openclaw-env.stack.yml - update the secondary/runtime-shadow pin in
deploy/compose/jhf-openclaw-env-wave9-secondary-73.stack.yml - keep scanner truth aligned in
deploy/compose/compose.oss-version-truth.yml - keep the operator canary default aligned in
scripts/host_openclaw_gateway_canary.sh - rerun repo verifier, then live verifier, then post-push live verifier
This prevents “docs say upgraded, host is upgraded, but secondary/canary truth still points at an old image” drift.
Candidate-Only Host172 Pin Prep
Issue reference: jhf-openclaw-env#973
The current env-owned rollout truth is pinned to ghcr.io/openclaw/openclaw:2026.6.8.
The file
maintenance/openclaw-2026.6.8-host172-pin-prep.json (maintenance/openclaw-2026.6.8-host172-pin-prep.json)
is a candidate-only preparation artifact for the later Host172 move to
ghcr.io/openclaw/openclaw:2026.6.8.
It must stay fail-closed:
host172_rollout_executed=falsehost172_rollout_ready_now=false- human go-live gate remains mandatory
- no claim that
2026.6.8is already the live Host172 image
Prep verification:
python scripts/verify_openclaw_2026_6_8_host172_pin_prep.pypython scripts/verify_openclaw_2026_6_8_host172_pin_prep.py --live-via-ssh <internal-runtime-redacted><internal-runtime-redacted>
Verify Path
Repo checks:
python scripts/verify_oss_inventory_version_truth.pypython scripts/verify_oss_upgrade_fail_closed.py --validate-onlypython scripts/verify_stack_oss_runtime_materialization.pypython scripts/verify_fabric_tool_oss_directory_runtime.py --mode repopython infrastructure/validate_environment_contracts.pypython infrastructure/validate_module_features_registry.py
Live verify:
python scripts/verify_stack_oss_runtime_materialization.py --live-via-ssh <internal-runtime-redacted><internal-runtime-redacted> --output runtime/evidence/issue209.stack_oss_runtime_materialization.live.json
Strict fail-closed readiness gate (#214):
python scripts/verify_stack_oss_runtime_materialization.py --live-via-ssh <internal-runtime-redacted><internal-runtime-redacted> --fail-on-non-env-floating --output runtime/evidence/issue214.stack_oss_runtime_materialization.strict.live.json
Fail-closed dry-run proofs (#251):
python scripts/verify_oss_upgrade_fail_closed.py --simulate-missing target_versionpython scripts/verify_oss_upgrade_fail_closed.py --simulate-missing compatibility_verdictpython scripts/verify_oss_upgrade_fail_closed.py --simulate-missing readbackpython scripts/verify_oss_upgrade_fail_closed.py --simulate-missing latest_only_drift
Upgrade-path canary:
bash scripts/host_openclaw_gateway_canary.sh ghcr.io/openclaw/openclaw:2026.6.8 openclaw --version
Post-push live verify (same command, new evidence path):
python scripts/verify_stack_oss_runtime_materialization.py --live-via-ssh <internal-runtime-redacted><internal-runtime-redacted> --output runtime/evidence/issue209.stack_oss_runtime_materialization.postpush.json
Post-push strict fail-closed verify (#214):
python scripts/verify_stack_oss_runtime_materialization.py --live-via-ssh <internal-runtime-redacted><internal-runtime-redacted> --fail-on-non-env-floating --output runtime/evidence/issue214.stack_oss_runtime_materialization.strict.postpush.json
Fabric directory followthrough live verify (#313):
python scripts/verify_fabric_tool_oss_directory_runtime.py --output runtime/evidence/issue313.fabric_tool_oss_directory_runtime.live.json
Fabric directory followthrough post-push verify (#313):
python scripts/verify_fabric_tool_oss_directory_runtime.py --output runtime/evidence/issue313.fabric_tool_oss_directory_runtime.postpush.json
License: AGPLv3 Project: https://helpifyr.com