Overview
Tool / Contract Summary
jhf-loom is the live Helpifyr ECM runtime. The repository owns the Loom stack
definition, runtime contracts, repo-owned validation scripts, and documentation
for the live Alfresco CE service on the owner-supplied runtime host.
When You Need Loom
Use jhf-loom when the Helpifyr stack needs one governed place for:
- human document access through Share
- repository/API-based content retrieval and update
- metadata and version-controlled document handling
- search-backed readback and transform-backed renditions
Do not use jhf-loom as the owner for identity, ingress, or shared Fabric
governance truth.
Business Value
Loom gives the Helpifyr stack one governed place for:
- content storage
- metadata updates
- version-aware content handling
- Share-based human access
- repository/API-based machine access
- search-backed retrieval
- transform-backed document renditions
Current Verified State
The following are live and verified now:
- runtime:
Alfresco Community Edition 26.1 - hostname:
<internal-runtime-redacted> - canonical human path: Share behind proxy-SSO
- canonical machine path: repository/API behind the same trusted ingress
- repo-owned live smoke and resilience validators are green
Available Now
- repo-owned compose runtime for DB, broker, transform, search, repo, and Share
- runtime contracts in
config/runtime/* - runtime port binding contract in
config/runtime/runtime-port-bindings-contract.json - Fabric consumer posture in
config/fabric/* - public Share and repository surfaces through the trusted ingress path
- repo-owned verify paths for smoke, restart, and cold start
- canonical docs platform v1.6 base family rooted at:
README.mddocs/OVERVIEW.mddocs/INSTALL.mddocs/CONFIGURATION.mddocs/OPERATIONS.mddocs/TROUBLESHOOTING.mddocs/RELEASE_NOTES.mddocs_manifest.yml
Optional / Extended
- direct Alfresco-to-Keycloak integration remains non-canonical
- domain and boundary docs describe policy and model posture, but they do not claim a custom deployed content model exists in the live runtime
Planned / Not in Current Scope
- new Fabric-produced shared contract families from Loom
- new repo-owned workflow workers outside the Alfresco platform services
- new custom content model rollout beyond the documented domain vocabulary
Public Surfaces
https://<internal-runtime-redacted>/https://<internal-runtime-redacted>/share/https://<internal-runtime-redacted>/alfresco/
Repo-owned host-loopback defaults are documented in
docs/RUNTIME_PORT_BINDINGS.md: jhf-loom-repo defaults to 28081 and
jhf-loom-share defaults to 28082. These defaults are not public edge
routes; public ingress remains owned by JaddaHelpifyr/jhf-openclaw-env.
Ownership Boundary
Machine-readable boundary contract:
- repo-boundary-contract.json (
config/runtime/repo-boundary-contract.json) - validator:
python scripts/validate_repo_boundary_contract.py
jhf-loom owns:
- the Loom compose/runtime definition
- Alfresco repository, Share, search, transform, DB, and broker stack posture
- repo-owned runtime validators and operator runbooks
- ECM-specific contracts and evidence docs in this repository
- final stored document truth, immutable dossier files, and evidence bundles after admission
jhf-loom does not own:
- shared governance or docs contracts in Fabric
- ingress, DNS, TLS, and public edge routing
- identity provider truth or SSO ownership
- publisher or materialized public docs ownership
- workflow approval decisions, business closeout truth, or submission authority
Producer-/Consumer-Zuordnung
Producer boundary:
- no shared Fabric truth is produced here today
Consumer boundary:
- Loom consumes Fabric-owned docs standard, matrix, registry, families, schemas, JARVIS, and admission surfaces read-only
- Loom consumes identity from
jhf-heddle - Loom consumes ingress/TLS/DNS from
jhf-openclaw-env
Bootstrap document SoT seam:
- downstream repos may reference Loom document identifiers, URIs, signatures, and evidence handles
- downstream repos must not create a second final-document archive or immutable-evidence truth beside Loom
- Fabric remains the admission/gate/closeout truth even when Loom is the final persisted document truth
Lifecycle Status
- runtime state:
live - public path state:
live - SSO state:
proxy-sso-live - repo maturity:
active-runtime-with-boundary-docs
Readiness / Drift / Monitoring
- search is mandatory for green readiness
- no partial-green state is allowed while search is red
- current host drift must still be tracked if Docker marks
jhf-loom-searchunhealthy while functional probes remain green
Verify Path
For a repo-owned verification pass, run:
python scripts/validate_docs_inventory_rollout.py
python scripts/validate_docs_platform_v1_6.py
python scripts/validate_repo_baseline.py
For runtime/operator checks, continue with the command-first paths documented in
docs/TROUBLESHOOTING.md and docs/OPERATIONS.md.
Release Eligibility Posture
- Public release-surface admission is bounded by
contracts/admission/release_surface_inventory_v1.json. - Current repository history posture is tracked in
contracts/admission/repository_publication_history_posture_v1.json. - Active owner blocker:
JaddaHelpifyr/jhf-loom#281. jhf-loomremainspending_history_scan; this slice prepares and tests public release surfaces only and does not authorize publication.- Repo-owned history evidence now runs through
python scripts/verify_repository_history_posture.pyand currently provesfiltered_publication_required. - Canonical Gitea history remains private or internal; a future public candidate uses filtered publication from exact
mainand never rewrites canonical history. - The owner decision is recorded in
docs/FILTERED_PUBLICATION_DECISION.md.
License: AGPLv3.
Helpifyr: https://helpifyr.com