Skip to content

epigov: live epistemic-hygiene runtime — CTEST runner + Bias/Calibration passports (hellgraph#53) - #331

Merged
mdheller merged 1 commit into
mainfrom
hygiene/runtime
Aug 3, 2026
Merged

epigov: live epistemic-hygiene runtime — CTEST runner + Bias/Calibration passports (hellgraph#53)#331
mdheller merged 1 commit into
mainfrom
hygiene/runtime

Conversation

@mdheller

@mdheller mdheller commented Aug 3, 2026

Copy link
Copy Markdown
Member

What

Turns the standard-rich / runtime-poor epistemic-hygiene layer into a live, teeth-verified producer — the follow-up item 1 named in the Crown constitution (hellgraph#52, ADR-0004). This is hellgraph#53.

tools/hygiene_runtime.py (deterministic; stdlib + jsonschema):

  • CTEST runner run_ctest()CountertestRunArtifact.
    • No falsifier / no counter-test obligation → epistemically_void (Crown T1 / SILENT Phase-0 gate, eik#2).
    • Affirming-the-consequent inference → confirmed_finding + rejection_code: REJECTED_AFFIRMING_THE_CONSEQUENT (Crown D1 = SILENT firewall's affirming-the-consequent guard, eik#3).
    • A counter-test that passes → refuted_finding (claim admitted).
  • Bias Passport produce_bias_passport() and Calibration Passport produce_calibration_passport()HygieneRunArtifact (hygiene_profile bias-passport / calibration-passport). A detection lacking a governed id is REJECTED before emission.
  • Id-namespace enforcement against the vendored governed map; every artifact sealed with a proof-artifact-spine SHA-256 receipt.

Teeth (make validate-hygiene-runtime, GitHub-hosted validate job)

--selftest proves both directions: id reconcile + drift rejection; all five set-1 biases resolve to governed ids; passports schema-conformant + sealed; ungoverned / id-less detections rejected; CTEST void / admit / D1 paths; non-conformant runner output rejected; determinism. 15/15 locally.

Schema evolution (additive — existing examples stay valid)

hygiene finding_type += cognitive_bias/logical_fallacy; optional finding_detector_id, hygiene_profile, calibration_state. countertest verdict += epistemically_void; optional rejection_code. The existing validate-epigov-artifacts job stays green.

Consume-not-fork

Vendors tools/epigov/detector-id-map.vendored.json — a byte-copy projection of the sociosphere canonical map (standards/epistemic-governance/), with source SHA-256s in _provenance. Teeth for the map itself live in sociosphere PR #554 (validate_detector_id_map.py). CTEST dispatch + Test-Obligation pattern reuse Noetica reasoner.ts CTEST_ROUTING / PR #570 and the SILENT firewall (eik #2/#3) by reference. See docs/epigov-hygiene-runtime.md for the bind-upward seat table.

Turns the standard-rich/runtime-poor Hygiene layer into a standing, teeth-verified
producer (hellgraph#53, seated under Crown ADR-0004 / hellgraph#52).

tools/hygiene_runtime.py (deterministic, stdlib + jsonschema):
- run_ctest(): CTEST runner producing CountertestRunArtifact. No falsifier /
  no counter-test obligation -> epistemically_void (Crown T1 / SILENT Phase-0,
  eik#2). Affirming-the-consequent -> confirmed + REJECTED_AFFIRMING_THE_CONSEQUENT
  (Crown D1 / firewall eik#3). Passing counter-test -> admitted.
- produce_bias_passport() / produce_calibration_passport(): emit HygieneRunArtifact
  passports; a detection lacking a governed id is REJECTED before emission.
- id-namespace enforcement against the vendored governed map; every artifact
  sealed with a proof-artifact-spine SHA-256 receipt.

Schemas evolved additively (existing examples stay valid): hygiene finding_type
+cognitive_bias/+logical_fallacy, optional finding_detector_id/hygiene_profile/
calibration_state; countertest verdict +epistemically_void, +rejection_code.

Vendors tools/epigov/detector-id-map.vendored.json (byte-copy projection of the
sociosphere canonical, with source SHA-256s; teeth for the map live in sociosphere
CI). Wired into make validate as validate-hygiene-runtime (GitHub-hosted). 15/15
selftest teeth pass; example artifacts + receipts committed. Consume-not-fork.
@mdheller
mdheller merged commit f6c858b into main Aug 3, 2026
11 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant