Overview
jhf-heddle Overview
jhf-heddle is the technical identity infrastructure layer for the Helpifyr SSO program.
It owns:
- Keycloak runtime and realm configuration
- OIDC/OAuth2 client registration patterns
- technical token and session surfaces
- canonical identity-claim language and SSO posture
- service-account and agent-identity technical setup
- health, drift, backup, restore, and rotation contracts
It does not own:
- business identities and business role truth
- final authorization policy decisions
- work ownership claims and leases
- a second user/role system outside the identity architecture
Bootstrap-specific identity seam:
jhf-spindleowns who a person is, whether the person is eligible, and which business role/profile is authoritativejhf-heddleowns how that upstream truth becomes technical claims, sessions, revocation posture, admitted OIDC client posture, and JML/access-projection hookshelpifyr-fabricowns policy admission, projection correlation, and deny-on-conflict posture- downstream repos may consume Heddle contracts and readbacks, but must not mint local replacement identity truth
Cross-repo role separation:
jhf-spindle: business identity and account binding source of truthjhf-heddle: IdP and technical auth infrastructurehelpifyr-fabric: policy decision, deny-on-conflict, audit correlationjhf-keystore: read-only consumer of the canonical claim language, never a local identity-truth ownerjhf-pattern: project and workspace business truth that must flow to consumers through Fabric rather than direct runtime reads
Implemented repository baseline:
- runtime bootstrap via
compose.yaml - environment contract via
.env.example - realm bootstrap via
config/keycloak/realms/helpifyr-template.json - downstream client template via
config/clients/client-template.yaml - Plane OSS client bootstrap via
config/clients/plane-openclaw-client-template.yaml - versioned claim contract via
config/identity/claim-vocabulary.v2.yaml - technical sync consumer template via
config/sync/technical-sync-consumer-template.yaml - Fabric Plane unified-access consumer template via
config/fabric/plane-unified-access-consumer.yaml - runbooks for bootstrap, backup/restore, and secret rotation
Verification surfaces:
scripts/verify-realm-export.ps1validates the repo-owned realm export baselinescripts/validate-technical-sync-surface.pyvalidates that the consumer/client templates stay import-only and deny-orientedscripts/validate-identity-claim-vocabulary.pyvalidates the canonical claim language, its spindle binding, and live Fabric identity contract posturescripts/verify-runtime-guardrails-v1.pyandscripts/verify-runtime-materialization-drift.pyare the canonical live execution paths against the owner-supplied runtime host
Release-eligibility posture:
- bounded public release surfaces are tracked in
contracts/admission/release_surface_inventory_v1.json - repository history admission remains pending in
contracts/admission/repository_publication_history_posture_v1.json - the non-destructive owner decision is documented in
docs/FILTERED_PUBLICATION_DECISION.md - active owner blocker:
JaddaHelpifyr/jhf-heddle#329 - operator-only host/runbook details remain explicit but excluded from the current public release-candidate set
- repo-owned history evidence now runs through
python scripts/verify_repository_history_posture.pyand currently provesfiltered_publication_required - the selected owner-side remediation is filtered publication from exact
main, not canonical history rewrite
Base docs family for the v1.6 docs platform rollout:
License: AGPLv3 Project: https://helpifyr.com