evorthon-data-harness 1.0.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (331) hide show
  1. evorthon_data_harness-1.0.2/.claude/settings.json +1 -0
  2. evorthon_data_harness-1.0.2/.gitattributes +1 -0
  3. evorthon_data_harness-1.0.2/.github/agents/evorthon-data-harness-builder.agent.md +3 -0
  4. evorthon_data_harness-1.0.2/.github/agents/evorthon-data-harness-reviewer.agent.md +3 -0
  5. evorthon_data_harness-1.0.2/.github/copilot-instructions.md +3 -0
  6. evorthon_data_harness-1.0.2/.github/prompts/autobuild-approved-item.prompt.md +1 -0
  7. evorthon_data_harness-1.0.2/.github/prompts/koine-advise-on-fault-review.prompt.md +1 -0
  8. evorthon_data_harness-1.0.2/.github/prompts/koine-advise-on-fault.prompt.md +1 -0
  9. evorthon_data_harness-1.0.2/.github/prompts/koine-build-data-platform-review.prompt.md +1 -0
  10. evorthon_data_harness-1.0.2/.github/prompts/koine-build-data-platform.prompt.md +1 -0
  11. evorthon_data_harness-1.0.2/.github/prompts/koine-design-data-platform-review.prompt.md +1 -0
  12. evorthon_data_harness-1.0.2/.github/prompts/koine-design-data-platform.prompt.md +1 -0
  13. evorthon_data_harness-1.0.2/.github/prompts/koine-discover-greenfield-capabilities-review.prompt.md +1 -0
  14. evorthon_data_harness-1.0.2/.github/prompts/koine-discover-greenfield-capabilities.prompt.md +1 -0
  15. evorthon_data_harness-1.0.2/.github/prompts/koine-execute-plan.prompt.md +1 -0
  16. evorthon_data_harness-1.0.2/.github/prompts/koine-frame-platform-outcome-review.prompt.md +1 -0
  17. evorthon_data_harness-1.0.2/.github/prompts/koine-frame-platform-outcome.prompt.md +1 -0
  18. evorthon_data_harness-1.0.2/.github/prompts/koine-intake-use-case-review.prompt.md +1 -0
  19. evorthon_data_harness-1.0.2/.github/prompts/koine-intake-use-case.prompt.md +1 -0
  20. evorthon_data_harness-1.0.2/.github/prompts/koine-plan-first.prompt.md +1 -0
  21. evorthon_data_harness-1.0.2/.github/prompts/koine-setup-data-platform-review.prompt.md +1 -0
  22. evorthon_data_harness-1.0.2/.github/prompts/koine-setup-data-platform.prompt.md +1 -0
  23. evorthon_data_harness-1.0.2/.github/prompts/koine-trace-current-estate-review.prompt.md +1 -0
  24. evorthon_data_harness-1.0.2/.github/prompts/koine-trace-current-estate.prompt.md +1 -0
  25. evorthon_data_harness-1.0.2/.github/prompts/koine-verify-data-platform-review.prompt.md +1 -0
  26. evorthon_data_harness-1.0.2/.github/prompts/koine-verify-data-platform.prompt.md +1 -0
  27. evorthon_data_harness-1.0.2/.github/skills/advise-on-fault/SKILL.md +1 -0
  28. evorthon_data_harness-1.0.2/.github/skills/build-data-platform/SKILL.md +1 -0
  29. evorthon_data_harness-1.0.2/.github/skills/design-data-platform/SKILL.md +1 -0
  30. evorthon_data_harness-1.0.2/.github/skills/discover-greenfield-capabilities/SKILL.md +1 -0
  31. evorthon_data_harness-1.0.2/.github/skills/frame-platform-outcome/SKILL.md +1 -0
  32. evorthon_data_harness-1.0.2/.github/skills/intake-use-case/SKILL.md +1 -0
  33. evorthon_data_harness-1.0.2/.github/skills/setup-data-platform/SKILL.md +1 -0
  34. evorthon_data_harness-1.0.2/.github/skills/trace-current-estate/SKILL.md +1 -0
  35. evorthon_data_harness-1.0.2/.github/skills/verify-data-platform/SKILL.md +1 -0
  36. evorthon_data_harness-1.0.2/.github/workflows/ci.yml +38 -0
  37. evorthon_data_harness-1.0.2/.github/workflows/release.yml +89 -0
  38. evorthon_data_harness-1.0.2/.gitignore +7 -0
  39. evorthon_data_harness-1.0.2/ADOPTION-GUIDE.md +99 -0
  40. evorthon_data_harness-1.0.2/AGENTS.md +5 -0
  41. evorthon_data_harness-1.0.2/LICENSE +15 -0
  42. evorthon_data_harness-1.0.2/PKG-INFO +189 -0
  43. evorthon_data_harness-1.0.2/PUBLIC-INVENTORY.json +1329 -0
  44. evorthon_data_harness-1.0.2/PUBLIC-LEAKAGE-POLICY.json +10 -0
  45. evorthon_data_harness-1.0.2/README.md +166 -0
  46. evorthon_data_harness-1.0.2/SKILL-CATALOGUE.md +15 -0
  47. evorthon_data_harness-1.0.2/adapters/autobuild/README.md +9 -0
  48. evorthon_data_harness-1.0.2/adapters/autobuild/contract.md +61 -0
  49. evorthon_data_harness-1.0.2/adapters/ergasterion/README.md +9 -0
  50. evorthon_data_harness-1.0.2/adapters/ergasterion/contract.md +197 -0
  51. evorthon_data_harness-1.0.2/adapters/pinax/README.md +15 -0
  52. evorthon_data_harness-1.0.2/adapters/pinax/contract.md +107 -0
  53. evorthon_data_harness-1.0.2/context/INDEX.md +6 -0
  54. evorthon_data_harness-1.0.2/context/instance-context.md +6 -0
  55. evorthon_data_harness-1.0.2/context/platform-principles.md +3 -0
  56. evorthon_data_harness-1.0.2/context/tool-boundaries.md +3 -0
  57. evorthon_data_harness-1.0.2/context/verification-principles.md +3 -0
  58. evorthon_data_harness-1.0.2/docs/INDEX.md +11 -0
  59. evorthon_data_harness-1.0.2/docs/architecture/INDEX.md +13 -0
  60. evorthon_data_harness-1.0.2/docs/architecture/solution-architecture.d2 +119 -0
  61. evorthon_data_harness-1.0.2/docs/architecture/solution-architecture.md +123 -0
  62. evorthon_data_harness-1.0.2/docs/architecture/solution-architecture.svg +48 -0
  63. evorthon_data_harness-1.0.2/docs/dependency-contracts.md +27 -0
  64. evorthon_data_harness-1.0.2/docs/product/INDEX.md +7 -0
  65. evorthon_data_harness-1.0.2/docs/product/capability-status.md +30 -0
  66. evorthon_data_harness-1.0.2/docs/product/incident-containment.md +97 -0
  67. evorthon_data_harness-1.0.2/docs/product/readme-claim-registry.toml +527 -0
  68. evorthon_data_harness-1.0.2/docs/verification/README.md +37 -0
  69. evorthon_data_harness-1.0.2/docs/verification/environment-adapters.md +148 -0
  70. evorthon_data_harness-1.0.2/docs/verification/schemas/verification-domain.schema.json +2983 -0
  71. evorthon_data_harness-1.0.2/docs/verification/schemas/verification-serialization.json +801 -0
  72. evorthon_data_harness-1.0.2/engagements/CONVENTION.md +3 -0
  73. evorthon_data_harness-1.0.2/engagements/INDEX.md +3 -0
  74. evorthon_data_harness-1.0.2/engagements/README.md +3 -0
  75. evorthon_data_harness-1.0.2/examples/INDEX.md +5 -0
  76. evorthon_data_harness-1.0.2/examples/greenfield/renewable-asset-observability/capability-discovery.md +19 -0
  77. evorthon_data_harness-1.0.2/examples/greenfield/renewable-asset-observability/implementation-plan.md +34 -0
  78. evorthon_data_harness-1.0.2/examples/greenfield/renewable-asset-observability/outcome-brief.md +33 -0
  79. evorthon_data_harness-1.0.2/examples/greenfield/renewable-asset-observability/platform-design.md +32 -0
  80. evorthon_data_harness-1.0.2/examples/greenfield/renewable-asset-observability/verification-record.md +39 -0
  81. evorthon_data_harness-1.0.2/examples/modernisation/customer-service-reporting/current-estate-map.md +34 -0
  82. evorthon_data_harness-1.0.2/examples/modernisation/customer-service-reporting/implementation-plan.md +34 -0
  83. evorthon_data_harness-1.0.2/examples/modernisation/customer-service-reporting/outcome-brief.md +33 -0
  84. evorthon_data_harness-1.0.2/examples/modernisation/customer-service-reporting/platform-design.md +33 -0
  85. evorthon_data_harness-1.0.2/examples/modernisation/customer-service-reporting/verification-record.md +39 -0
  86. evorthon_data_harness-1.0.2/koine/INDEX.md +12 -0
  87. evorthon_data_harness-1.0.2/koine/method/INDEX.md +9 -0
  88. evorthon_data_harness-1.0.2/koine/method/artefact-first-intake.md +32 -0
  89. evorthon_data_harness-1.0.2/koine/method/build-pipeline.md +3 -0
  90. evorthon_data_harness-1.0.2/koine/method/engagement-lifecycle.md +5 -0
  91. evorthon_data_harness-1.0.2/koine/method/evidence-and-knowledge.md +3 -0
  92. evorthon_data_harness-1.0.2/koine/method/feedback-loop.md +3 -0
  93. evorthon_data_harness-1.0.2/koine/method/intent-readiness.md +16 -0
  94. evorthon_data_harness-1.0.2/koine/method/overview.md +3 -0
  95. evorthon_data_harness-1.0.2/koine/prompts/generators/advise-on-fault.md +37 -0
  96. evorthon_data_harness-1.0.2/koine/prompts/generators/build-data-platform.md +3 -0
  97. evorthon_data_harness-1.0.2/koine/prompts/generators/design-data-platform.md +3 -0
  98. evorthon_data_harness-1.0.2/koine/prompts/generators/discover-greenfield-capabilities.md +3 -0
  99. evorthon_data_harness-1.0.2/koine/prompts/generators/frame-platform-outcome.md +3 -0
  100. evorthon_data_harness-1.0.2/koine/prompts/generators/intake-use-case.md +49 -0
  101. evorthon_data_harness-1.0.2/koine/prompts/generators/setup-data-platform.md +3 -0
  102. evorthon_data_harness-1.0.2/koine/prompts/generators/trace-current-estate.md +3 -0
  103. evorthon_data_harness-1.0.2/koine/prompts/generators/verify-data-platform.md +3 -0
  104. evorthon_data_harness-1.0.2/koine/prompts/reviewers/advise-on-fault-reviewer.md +13 -0
  105. evorthon_data_harness-1.0.2/koine/prompts/reviewers/build-data-platform-reviewer.md +3 -0
  106. evorthon_data_harness-1.0.2/koine/prompts/reviewers/design-data-platform-reviewer.md +3 -0
  107. evorthon_data_harness-1.0.2/koine/prompts/reviewers/discover-greenfield-capabilities-reviewer.md +3 -0
  108. evorthon_data_harness-1.0.2/koine/prompts/reviewers/frame-platform-outcome-reviewer.md +3 -0
  109. evorthon_data_harness-1.0.2/koine/prompts/reviewers/intake-use-case-reviewer.md +19 -0
  110. evorthon_data_harness-1.0.2/koine/prompts/reviewers/setup-data-platform-reviewer.md +3 -0
  111. evorthon_data_harness-1.0.2/koine/prompts/reviewers/trace-current-estate-reviewer.md +3 -0
  112. evorthon_data_harness-1.0.2/koine/prompts/reviewers/verify-data-platform-reviewer.md +3 -0
  113. evorthon_data_harness-1.0.2/koine/skills/advising-on-a-fault/SKILL.md +5 -0
  114. evorthon_data_harness-1.0.2/koine/skills/building-data-platform/SKILL.md +3 -0
  115. evorthon_data_harness-1.0.2/koine/skills/designing-data-platform/SKILL.md +3 -0
  116. evorthon_data_harness-1.0.2/koine/skills/discovering-greenfield-capabilities/SKILL.md +7 -0
  117. evorthon_data_harness-1.0.2/koine/skills/framing-platform-outcome/SKILL.md +3 -0
  118. evorthon_data_harness-1.0.2/koine/skills/intaking-use-case/SKILL.md +5 -0
  119. evorthon_data_harness-1.0.2/koine/skills/setting-up-data-platform/SKILL.md +3 -0
  120. evorthon_data_harness-1.0.2/koine/skills/tracing-current-estate/SKILL.md +4 -0
  121. evorthon_data_harness-1.0.2/koine/skills/verifying-data-platform/SKILL.md +3 -0
  122. evorthon_data_harness-1.0.2/koine/templates/capability-discovery.md +14 -0
  123. evorthon_data_harness-1.0.2/koine/templates/current-estate-map.md +18 -0
  124. evorthon_data_harness-1.0.2/koine/templates/implementation-plan.md +19 -0
  125. evorthon_data_harness-1.0.2/koine/templates/instance-context.md +9 -0
  126. evorthon_data_harness-1.0.2/koine/templates/outcome-brief.md +18 -0
  127. evorthon_data_harness-1.0.2/koine/templates/platform-design.md +18 -0
  128. evorthon_data_harness-1.0.2/koine/templates/use-case-intake.md +255 -0
  129. evorthon_data_harness-1.0.2/koine/templates/verification-record.md +12 -0
  130. evorthon_data_harness-1.0.2/pyproject.toml +52 -0
  131. evorthon_data_harness-1.0.2/scripts/check_public_candidate.py +117 -0
  132. evorthon_data_harness-1.0.2/scripts/check_readme_claim_registry.py +204 -0
  133. evorthon_data_harness-1.0.2/scripts/generate_verification_schemas.py +32 -0
  134. evorthon_data_harness-1.0.2/scripts/render_architecture.py +186 -0
  135. evorthon_data_harness-1.0.2/scripts/run_tests.py +439 -0
  136. evorthon_data_harness-1.0.2/src/evorthon_data/__init__.py +5 -0
  137. evorthon_data_harness-1.0.2/src/evorthon_data/boundary_patterns.py +353 -0
  138. evorthon_data_harness-1.0.2/src/evorthon_data/cli.py +551 -0
  139. evorthon_data_harness-1.0.2/src/evorthon_data/composition.py +3103 -0
  140. evorthon_data_harness-1.0.2/src/evorthon_data/delivery/__init__.py +100 -0
  141. evorthon_data_harness-1.0.2/src/evorthon_data/delivery/autobuild.py +365 -0
  142. evorthon_data_harness-1.0.2/src/evorthon_data/delivery/declaration_draft.py +931 -0
  143. evorthon_data_harness-1.0.2/src/evorthon_data/delivery/ergasterion.py +886 -0
  144. evorthon_data_harness-1.0.2/src/evorthon_data/delivery/pinax.py +1168 -0
  145. evorthon_data_harness-1.0.2/src/evorthon_data/dependencies.py +16 -0
  146. evorthon_data_harness-1.0.2/src/evorthon_data/engagement/__init__.py +128 -0
  147. evorthon_data_harness-1.0.2/src/evorthon_data/engagement/aggregate.py +882 -0
  148. evorthon_data_harness-1.0.2/src/evorthon_data/engagement/stages.py +11 -0
  149. evorthon_data_harness-1.0.2/src/evorthon_data/engagement/use_case.py +1696 -0
  150. evorthon_data_harness-1.0.2/src/evorthon_data/engagement/versions.py +313 -0
  151. evorthon_data_harness-1.0.2/src/evorthon_data/koine_projection.py +183 -0
  152. evorthon_data_harness-1.0.2/src/evorthon_data/koine_session.py +2688 -0
  153. evorthon_data_harness-1.0.2/src/evorthon_data/lifecycle.py +749 -0
  154. evorthon_data_harness-1.0.2/src/evorthon_data/presentation/__init__.py +34 -0
  155. evorthon_data_harness-1.0.2/src/evorthon_data/presentation/use_case.py +138 -0
  156. evorthon_data_harness-1.0.2/src/evorthon_data/public_boundary.py +681 -0
  157. evorthon_data_harness-1.0.2/src/evorthon_data/pytest_reporter.py +68 -0
  158. evorthon_data_harness-1.0.2/src/evorthon_data/readiness/__init__.py +58 -0
  159. evorthon_data_harness-1.0.2/src/evorthon_data/readiness/projection.py +793 -0
  160. evorthon_data_harness-1.0.2/src/evorthon_data/runtime_adapters.py +40 -0
  161. evorthon_data_harness-1.0.2/src/evorthon_data/security/__init__.py +31 -0
  162. evorthon_data_harness-1.0.2/src/evorthon_data/security/model_egress.py +328 -0
  163. evorthon_data_harness-1.0.2/src/evorthon_data/stages.py +11 -0
  164. evorthon_data_harness-1.0.2/src/evorthon_data/synthetic/__init__.py +58 -0
  165. evorthon_data_harness-1.0.2/src/evorthon_data/synthetic/generator.py +924 -0
  166. evorthon_data_harness-1.0.2/src/evorthon_data/synthetic/request.py +179 -0
  167. evorthon_data_harness-1.0.2/src/evorthon_data/verification/__init__.py +8 -0
  168. evorthon_data_harness-1.0.2/src/evorthon_data/verification/adapters/__init__.py +87 -0
  169. evorthon_data_harness-1.0.2/src/evorthon_data/verification/adapters/conformance.py +784 -0
  170. evorthon_data_harness-1.0.2/src/evorthon_data/verification/adapters/declaration.py +126 -0
  171. evorthon_data_harness-1.0.2/src/evorthon_data/verification/adapters/fixtures.py +374 -0
  172. evorthon_data_harness-1.0.2/src/evorthon_data/verification/adapters/material.py +95 -0
  173. evorthon_data_harness-1.0.2/src/evorthon_data/verification/adapters/memory.py +123 -0
  174. evorthon_data_harness-1.0.2/src/evorthon_data/verification/core/__init__.py +56 -0
  175. evorthon_data_harness-1.0.2/src/evorthon_data/verification/core/canonical.py +716 -0
  176. evorthon_data_harness-1.0.2/src/evorthon_data/verification/core/fault.py +726 -0
  177. evorthon_data_harness-1.0.2/src/evorthon_data/verification/core/localisation.py +605 -0
  178. evorthon_data_harness-1.0.2/src/evorthon_data/verification/core/reconciliation.py +1617 -0
  179. evorthon_data_harness-1.0.2/src/evorthon_data/verification/domain/__init__.py +150 -0
  180. evorthon_data_harness-1.0.2/src/evorthon_data/verification/domain/contracts.py +919 -0
  181. evorthon_data_harness-1.0.2/src/evorthon_data/verification/enforcement/__init__.py +85 -0
  182. evorthon_data_harness-1.0.2/src/evorthon_data/verification/enforcement/privacy.py +448 -0
  183. evorthon_data_harness-1.0.2/src/evorthon_data/verification/enforcement/schema.py +188 -0
  184. evorthon_data_harness-1.0.2/src/evorthon_data/verification/enforcement/serialization.py +206 -0
  185. evorthon_data_harness-1.0.2/src/evorthon_data/verification/enforcement/validation.py +1566 -0
  186. evorthon_data_harness-1.0.2/src/evorthon_data/verification/ports/__init__.py +38 -0
  187. evorthon_data_harness-1.0.2/src/evorthon_data/verification/ports/contracts.py +187 -0
  188. evorthon_data_harness-1.0.2/src/evorthon_data/verification/presentation/__init__.py +144 -0
  189. evorthon_data_harness-1.0.2/src/evorthon_data/verification/presentation/remediation.py +354 -0
  190. evorthon_data_harness-1.0.2/src/evorthon_data/verification/presentation/report.py +492 -0
  191. evorthon_data_harness-1.0.2/src/evorthon_data/verification/workflows/__init__.py +214 -0
  192. evorthon_data_harness-1.0.2/src/evorthon_data/verification/workflows/adviser.py +560 -0
  193. evorthon_data_harness-1.0.2/src/evorthon_data/verification/workflows/delivery_contract.py +1005 -0
  194. evorthon_data_harness-1.0.2/src/evorthon_data/verification/workflows/diagnosis.py +134 -0
  195. evorthon_data_harness-1.0.2/src/evorthon_data/verification/workflows/intake.py +567 -0
  196. evorthon_data_harness-1.0.2/src/evorthon_data/verification/workflows/reconciliation.py +221 -0
  197. evorthon_data_harness-1.0.2/src/evorthon_data/verification/workflows/remediation.py +717 -0
  198. evorthon_data_harness-1.0.2/src/evorthon_data/verification/workflows/replay.py +321 -0
  199. evorthon_data_harness-1.0.2/tests/architecture/test_dependency_direction.py +312 -0
  200. evorthon_data_harness-1.0.2/tests/architecture/test_runtime_adapters_are_thin.py +9 -0
  201. evorthon_data_harness-1.0.2/tests/conftest.py +1 -0
  202. evorthon_data_harness-1.0.2/tests/fixtures/adapters/candidate.json +5 -0
  203. evorthon_data_harness-1.0.2/tests/fixtures/adapters/declared-outputs/conformance-case/v1.json +12 -0
  204. evorthon_data_harness-1.0.2/tests/fixtures/adapters/evidence/conformance-checkpoint-note/v1.content +1 -0
  205. evorthon_data_harness-1.0.2/tests/fixtures/adapters/evidence/conformance-checkpoint-note/v1.record.json +6 -0
  206. evorthon_data_harness-1.0.2/tests/fixtures/adapters/evidence/conformance-lineage-note/v1.content +1 -0
  207. evorthon_data_harness-1.0.2/tests/fixtures/adapters/evidence/conformance-lineage-note/v1.record.json +6 -0
  208. evorthon_data_harness-1.0.2/tests/fixtures/adapters/provenance.json +23 -0
  209. evorthon_data_harness-1.0.2/tests/fixtures/canonical/digests.json +99 -0
  210. evorthon_data_harness-1.0.2/tests/fixtures/canonical/provenance.json +37 -0
  211. evorthon_data_harness-1.0.2/tests/fixtures/canonical/vectors/base-row-stream.canonical +4 -0
  212. evorthon_data_harness-1.0.2/tests/fixtures/canonical/vectors/case-record.canonical +1 -0
  213. evorthon_data_harness-1.0.2/tests/fixtures/canonical/vectors/decimal-scale-four.canonical +4 -0
  214. evorthon_data_harness-1.0.2/tests/fixtures/canonical/vectors/duplicate-rows.canonical +4 -0
  215. evorthon_data_harness-1.0.2/tests/fixtures/canonical/vectors/empty-zero-and-false.canonical +3 -0
  216. evorthon_data_harness-1.0.2/tests/fixtures/canonical/vectors/multiset-order.canonical +4 -0
  217. evorthon_data_harness-1.0.2/tests/fixtures/canonical/vectors/non-finite-tokens.canonical +5 -0
  218. evorthon_data_harness-1.0.2/tests/fixtures/canonical/vectors/null-values.canonical +3 -0
  219. evorthon_data_harness-1.0.2/tests/fixtures/canonical/vectors/ordering-ascending-nulls-last.canonical +5 -0
  220. evorthon_data_harness-1.0.2/tests/fixtures/canonical/vectors/ordering-descending-nulls-first.canonical +5 -0
  221. evorthon_data_harness-1.0.2/tests/fixtures/canonical/vectors/result-record.canonical +1 -0
  222. evorthon_data_harness-1.0.2/tests/fixtures/canonical/vectors/signed-zero-positive.canonical +4 -0
  223. evorthon_data_harness-1.0.2/tests/fixtures/canonical/vectors/signed-zero-preserved.canonical +4 -0
  224. evorthon_data_harness-1.0.2/tests/fixtures/canonical/vectors/timestamp-microseconds.canonical +4 -0
  225. evorthon_data_harness-1.0.2/tests/fixtures/canonical/vectors/timestamp-milliseconds.canonical +4 -0
  226. evorthon_data_harness-1.0.2/tests/fixtures/canonical/vectors/timestamp-seconds.canonical +3 -0
  227. evorthon_data_harness-1.0.2/tests/fixtures/canonical/vectors/unicode-nfc.canonical +3 -0
  228. evorthon_data_harness-1.0.2/tests/fixtures/canonical/vectors/unicode-nfd.canonical +3 -0
  229. evorthon_data_harness-1.0.2/tests/fixtures/deep/declared/eng-installed-verification/adapters.json +13 -0
  230. evorthon_data_harness-1.0.2/tests/fixtures/deep/declared/eng-installed-verification/case.json +397 -0
  231. evorthon_data_harness-1.0.2/tests/fixtures/deep/declared/eng-installed-verification/material.json +139 -0
  232. evorthon_data_harness-1.0.2/tests/fixtures/deep/declared/environment-owned-material/candidate.json +5 -0
  233. evorthon_data_harness-1.0.2/tests/fixtures/deep/declared/environment-owned-material/declared-outputs/conformance-case/v1.json +12 -0
  234. evorthon_data_harness-1.0.2/tests/fixtures/deep/declared/environment-owned-material/declared-outputs/reconciliation-case/v1.json +12 -0
  235. evorthon_data_harness-1.0.2/tests/fixtures/deep/declared/environment-owned-material/evidence/conformance-checkpoint-note/v1.content +1 -0
  236. evorthon_data_harness-1.0.2/tests/fixtures/deep/declared/environment-owned-material/evidence/conformance-checkpoint-note/v1.record.json +6 -0
  237. evorthon_data_harness-1.0.2/tests/fixtures/deep/declared/environment-owned-material/evidence/conformance-lineage-note/v1.content +1 -0
  238. evorthon_data_harness-1.0.2/tests/fixtures/deep/declared/environment-owned-material/evidence/conformance-lineage-note/v1.record.json +6 -0
  239. evorthon_data_harness-1.0.2/tests/fixtures/deep/declared/environment-owned-material/evidence/parity-evidence/v1.content +1 -0
  240. evorthon_data_harness-1.0.2/tests/fixtures/deep/declared/environment-owned-material/evidence/parity-evidence/v1.record.json +6 -0
  241. evorthon_data_harness-1.0.2/tests/fixtures/deep/provenance.json +85 -0
  242. evorthon_data_harness-1.0.2/tests/fixtures/intake/exported-job-credential.txt +13 -0
  243. evorthon_data_harness-1.0.2/tests/fixtures/intake/order-data-dictionary.md +44 -0
  244. evorthon_data_harness-1.0.2/tests/fixtures/intake/orders-extract.csv +6 -0
  245. evorthon_data_harness-1.0.2/tests/fixtures/intake/provenance.json +20 -0
  246. evorthon_data_harness-1.0.2/tests/fixtures/intake/settled-orders.sql +21 -0
  247. evorthon_data_harness-1.0.2/tests/fixtures/proofs/customer-service-reporting/declared/adviser/scripted-replies.json +30 -0
  248. evorthon_data_harness-1.0.2/tests/fixtures/proofs/customer-service-reporting/declared/candidate/aggregate.json +144 -0
  249. evorthon_data_harness-1.0.2/tests/fixtures/proofs/customer-service-reporting/declared/candidate/calculation.json +144 -0
  250. evorthon_data_harness-1.0.2/tests/fixtures/proofs/customer-service-reporting/declared/candidate/corrected.json +144 -0
  251. evorthon_data_harness-1.0.2/tests/fixtures/proofs/customer-service-reporting/declared/candidate/effective-date.json +144 -0
  252. evorthon_data_harness-1.0.2/tests/fixtures/proofs/customer-service-reporting/declared/candidate/key.json +184 -0
  253. evorthon_data_harness-1.0.2/tests/fixtures/proofs/customer-service-reporting/declared/candidate/population.json +96 -0
  254. evorthon_data_harness-1.0.2/tests/fixtures/proofs/customer-service-reporting/declared/expected/publication-day-one.json +71 -0
  255. evorthon_data_harness-1.0.2/tests/fixtures/proofs/customer-service-reporting/declared/expected/publication-day-two.json +71 -0
  256. evorthon_data_harness-1.0.2/tests/fixtures/proofs/customer-service-reporting/declared/generation/service-case-extract-seed.csv +3 -0
  257. evorthon_data_harness-1.0.2/tests/fixtures/proofs/customer-service-reporting/declared/inputs/service-case-extract.json +45 -0
  258. evorthon_data_harness-1.0.2/tests/fixtures/proofs/customer-service-reporting/declared/lineage/service-report-lineage.json +35 -0
  259. evorthon_data_harness-1.0.2/tests/fixtures/proofs/customer-service-reporting/declared/reference/service-channel-reference.json +48 -0
  260. evorthon_data_harness-1.0.2/tests/fixtures/proofs/customer-service-reporting/declared/reference/service-team-lookup.json +37 -0
  261. evorthon_data_harness-1.0.2/tests/fixtures/proofs/customer-service-reporting/declared/remediation/human-selection.json +18 -0
  262. evorthon_data_harness-1.0.2/tests/fixtures/proofs/customer-service-reporting/provenance.json +123 -0
  263. evorthon_data_harness-1.0.2/tests/fixtures/proofs/renewable-asset-observability/declared/adviser/scripted-replies.json +15 -0
  264. evorthon_data_harness-1.0.2/tests/fixtures/proofs/renewable-asset-observability/declared/candidate/corrected.json +174 -0
  265. evorthon_data_harness-1.0.2/tests/fixtures/proofs/renewable-asset-observability/declared/candidate/interface.json +174 -0
  266. evorthon_data_harness-1.0.2/tests/fixtures/proofs/renewable-asset-observability/declared/candidate/invariant.json +174 -0
  267. evorthon_data_harness-1.0.2/tests/fixtures/proofs/renewable-asset-observability/declared/candidate/operational.json +174 -0
  268. evorthon_data_harness-1.0.2/tests/fixtures/proofs/renewable-asset-observability/declared/candidate/reference.json +174 -0
  269. evorthon_data_harness-1.0.2/tests/fixtures/proofs/renewable-asset-observability/declared/candidate/transformation.json +174 -0
  270. evorthon_data_harness-1.0.2/tests/fixtures/proofs/renewable-asset-observability/declared/contract/clause-requirements.json +54 -0
  271. evorthon_data_harness-1.0.2/tests/fixtures/proofs/renewable-asset-observability/declared/expected/performance-view-day-one.json +73 -0
  272. evorthon_data_harness-1.0.2/tests/fixtures/proofs/renewable-asset-observability/declared/expected/performance-view-day-two.json +73 -0
  273. evorthon_data_harness-1.0.2/tests/fixtures/proofs/renewable-asset-observability/declared/generation/asset-telemetry-seed.csv +3 -0
  274. evorthon_data_harness-1.0.2/tests/fixtures/proofs/renewable-asset-observability/declared/inputs/asset-telemetry-extract.json +45 -0
  275. evorthon_data_harness-1.0.2/tests/fixtures/proofs/renewable-asset-observability/declared/lineage/asset-performance-lineage.json +35 -0
  276. evorthon_data_harness-1.0.2/tests/fixtures/proofs/renewable-asset-observability/declared/reference/asset-register-reference.json +33 -0
  277. evorthon_data_harness-1.0.2/tests/fixtures/proofs/renewable-asset-observability/declared/reference/turbine-technology-lookup.json +31 -0
  278. evorthon_data_harness-1.0.2/tests/fixtures/proofs/renewable-asset-observability/declared/remediation/human-selection.json +18 -0
  279. evorthon_data_harness-1.0.2/tests/fixtures/proofs/renewable-asset-observability/provenance.json +132 -0
  280. evorthon_data_harness-1.0.2/tests/fixtures/synthetic/constraints/customer-orders.json +59 -0
  281. evorthon_data_harness-1.0.2/tests/fixtures/synthetic/constraints/region-reference.json +49 -0
  282. evorthon_data_harness-1.0.2/tests/fixtures/synthetic/provenance.json +18 -0
  283. evorthon_data_harness-1.0.2/tests/pack/test_links_and_indexes.py +65 -0
  284. evorthon_data_harness-1.0.2/tests/pack/test_skill_pairings.py +34 -0
  285. evorthon_data_harness-1.0.2/tests/pack/test_two_engagement_modes.py +243 -0
  286. evorthon_data_harness-1.0.2/tests/packaging/test_wheel_dependencies.py +88 -0
  287. evorthon_data_harness-1.0.2/tests/product/declaration_draft_support.py +267 -0
  288. evorthon_data_harness-1.0.2/tests/product/proof_lifecycle.py +885 -0
  289. evorthon_data_harness-1.0.2/tests/product/test_autobuild_route.py +470 -0
  290. evorthon_data_harness-1.0.2/tests/product/test_boundary_patterns.py +852 -0
  291. evorthon_data_harness-1.0.2/tests/product/test_cli_remediation.py +1463 -0
  292. evorthon_data_harness-1.0.2/tests/product/test_cli_use_case.py +965 -0
  293. evorthon_data_harness-1.0.2/tests/product/test_cli_verification.py +1021 -0
  294. evorthon_data_harness-1.0.2/tests/product/test_declaration_draft.py +710 -0
  295. evorthon_data_harness-1.0.2/tests/product/test_declaration_draft_live.py +395 -0
  296. evorthon_data_harness-1.0.2/tests/product/test_deep_harness.py +968 -0
  297. evorthon_data_harness-1.0.2/tests/product/test_dependencies_diagnose.py +44 -0
  298. evorthon_data_harness-1.0.2/tests/product/test_engagement_lifecycle.py +270 -0
  299. evorthon_data_harness-1.0.2/tests/product/test_ergasterion_route.py +779 -0
  300. evorthon_data_harness-1.0.2/tests/product/test_ergasterion_route_live.py +281 -0
  301. evorthon_data_harness-1.0.2/tests/product/test_koine_delivery_contract.py +708 -0
  302. evorthon_data_harness-1.0.2/tests/product/test_koine_session.py +1497 -0
  303. evorthon_data_harness-1.0.2/tests/product/test_lifecycle.py +1126 -0
  304. evorthon_data_harness-1.0.2/tests/product/test_model_egress.py +297 -0
  305. evorthon_data_harness-1.0.2/tests/product/test_pinax_projection.py +1191 -0
  306. evorthon_data_harness-1.0.2/tests/product/test_proof_customer_service.py +1395 -0
  307. evorthon_data_harness-1.0.2/tests/product/test_proof_renewable_asset.py +1678 -0
  308. evorthon_data_harness-1.0.2/tests/product/test_readiness_projection.py +905 -0
  309. evorthon_data_harness-1.0.2/tests/product/test_readme_claim_registry.py +372 -0
  310. evorthon_data_harness-1.0.2/tests/product/test_synthetic_generator.py +582 -0
  311. evorthon_data_harness-1.0.2/tests/product/test_use_case_aggregate.py +2326 -0
  312. evorthon_data_harness-1.0.2/tests/product/test_use_case_versions.py +663 -0
  313. evorthon_data_harness-1.0.2/tests/test_deep_sentinel.py +13 -0
  314. evorthon_data_harness-1.0.2/tests/test_sentinel.py +4 -0
  315. evorthon_data_harness-1.0.2/tests/verification/test_adapter_conformance.py +433 -0
  316. evorthon_data_harness-1.0.2/tests/verification/test_adapter_kit.py +296 -0
  317. evorthon_data_harness-1.0.2/tests/verification/test_canonical_identity.py +1325 -0
  318. evorthon_data_harness-1.0.2/tests/verification/test_checkpoint_replay.py +342 -0
  319. evorthon_data_harness-1.0.2/tests/verification/test_contract_engine.py +635 -0
  320. evorthon_data_harness-1.0.2/tests/verification/test_diagnosis_workflow.py +157 -0
  321. evorthon_data_harness-1.0.2/tests/verification/test_diagnostic_adviser.py +1162 -0
  322. evorthon_data_harness-1.0.2/tests/verification/test_domain_contracts.py +674 -0
  323. evorthon_data_harness-1.0.2/tests/verification/test_fault_packet.py +1116 -0
  324. evorthon_data_harness-1.0.2/tests/verification/test_intake_workflow.py +613 -0
  325. evorthon_data_harness-1.0.2/tests/verification/test_lineage_localisation.py +650 -0
  326. evorthon_data_harness-1.0.2/tests/verification/test_privacy_gate.py +407 -0
  327. evorthon_data_harness-1.0.2/tests/verification/test_reconciliation.py +1327 -0
  328. evorthon_data_harness-1.0.2/tests/verification/test_reconciliation_workflow.py +261 -0
  329. evorthon_data_harness-1.0.2/tests/verification/test_remediation_workflow.py +580 -0
  330. evorthon_data_harness-1.0.2/tests/verification/test_schema_enforcement.py +983 -0
  331. evorthon_data_harness-1.0.2/uv.lock +802 -0
@@ -0,0 +1 @@
1
+ {"hooks": {}, "plugins": []}
@@ -0,0 +1 @@
1
+ * text=auto eol=lf
@@ -0,0 +1,3 @@
1
+ # Evorthon Data Harness builder
2
+
3
+ Read `../../AGENTS.md`; execute only an approved change contract and use canonical Koine generators.
@@ -0,0 +1,3 @@
1
+ # Evorthon Data Harness reviewer
2
+
3
+ Read `../../AGENTS.md`; independently challenge an artefact through its canonical paired Koine reviewer.
@@ -0,0 +1,3 @@
1
+ # Evorthon Data Harness Copilot instructions
2
+
3
+ Read `../AGENTS.md`. Use `prompts/` and `skills/` only as discovery pointers to canonical Koine prompt owners.
@@ -0,0 +1 @@
1
+ Read `../../adapters/autobuild/contract.md`; execute only a ready, approved item.
@@ -0,0 +1 @@
1
+ Read `../../koine/prompts/reviewers/advise-on-fault-reviewer.md`.
@@ -0,0 +1 @@
1
+ Read `../../koine/prompts/generators/advise-on-fault.md`.
@@ -0,0 +1 @@
1
+ Read `../../koine/prompts/reviewers/build-data-platform-reviewer.md`.
@@ -0,0 +1 @@
1
+ Read `../../koine/prompts/generators/build-data-platform.md`.
@@ -0,0 +1 @@
1
+ Read `../../koine/prompts/reviewers/design-data-platform-reviewer.md`.
@@ -0,0 +1 @@
1
+ Read `../../koine/prompts/generators/design-data-platform.md`.
@@ -0,0 +1 @@
1
+ Read `../../koine/prompts/reviewers/discover-greenfield-capabilities-reviewer.md`.
@@ -0,0 +1 @@
1
+ Read `../../koine/prompts/generators/discover-greenfield-capabilities.md`.
@@ -0,0 +1 @@
1
+ Read `../../koine/method/build-pipeline.md` before executing approved work.
@@ -0,0 +1 @@
1
+ Read `../../koine/prompts/reviewers/frame-platform-outcome-reviewer.md`.
@@ -0,0 +1 @@
1
+ Read `../../koine/prompts/generators/frame-platform-outcome.md`.
@@ -0,0 +1 @@
1
+ Read `../../koine/prompts/reviewers/intake-use-case-reviewer.md`.
@@ -0,0 +1 @@
1
+ Read `../../koine/prompts/generators/intake-use-case.md`.
@@ -0,0 +1 @@
1
+ Read `../../koine/method/intent-readiness.md` before proposing work.
@@ -0,0 +1 @@
1
+ Read `../../koine/prompts/reviewers/setup-data-platform-reviewer.md`.
@@ -0,0 +1 @@
1
+ Read `../../koine/prompts/generators/setup-data-platform.md`.
@@ -0,0 +1 @@
1
+ Read `../../koine/prompts/reviewers/trace-current-estate-reviewer.md`.
@@ -0,0 +1 @@
1
+ Read `../../koine/prompts/generators/trace-current-estate.md`.
@@ -0,0 +1 @@
1
+ Read `../../koine/prompts/reviewers/verify-data-platform-reviewer.md`.
@@ -0,0 +1 @@
1
+ Read `../../koine/prompts/generators/verify-data-platform.md`.
@@ -0,0 +1 @@
1
+ Read `../../../koine/skills/advising-on-a-fault/SKILL.md`.
@@ -0,0 +1 @@
1
+ Read `../../../koine/skills/building-data-platform/SKILL.md`.
@@ -0,0 +1 @@
1
+ Read `../../../koine/skills/designing-data-platform/SKILL.md`.
@@ -0,0 +1 @@
1
+ Read `../../../koine/skills/discovering-greenfield-capabilities/SKILL.md`.
@@ -0,0 +1 @@
1
+ Read `../../../koine/skills/framing-platform-outcome/SKILL.md`.
@@ -0,0 +1 @@
1
+ Read `../../../koine/skills/intaking-use-case/SKILL.md`.
@@ -0,0 +1 @@
1
+ Read `../../../koine/skills/setting-up-data-platform/SKILL.md`.
@@ -0,0 +1 @@
1
+ Read `../../../koine/skills/tracing-current-estate/SKILL.md`.
@@ -0,0 +1 @@
1
+ Read `../../../koine/skills/verifying-data-platform/SKILL.md`.
@@ -0,0 +1,38 @@
1
+ name: repository-check
2
+ on: [push, pull_request]
3
+ jobs:
4
+ fast:
5
+ runs-on: ubuntu-latest
6
+ steps:
7
+ - uses: actions/checkout@v4
8
+ - uses: actions/setup-python@v5
9
+ with: {python-version-file: pyproject.toml}
10
+ - uses: astral-sh/setup-uv@v5
11
+ - name: Validate the checked-out tree
12
+ shell: bash
13
+ run: |
14
+ # A published candidate carries a finalized inventory, so the candidate
15
+ # branch takes no provisional allowance. Only an unpublished candidate
16
+ # still holds a provisional inventory, and it is not what CI checks out.
17
+ if [ -f PUBLIC-INVENTORY.json ] && [ -f PUBLIC-LEAKAGE-POLICY.json ]; then
18
+ python scripts/check_public_candidate.py
19
+ else
20
+ uv run --locked --group dev python scripts/run_tests.py --lane fast
21
+ fi
22
+ vectors:
23
+ strategy:
24
+ fail-fast: false
25
+ matrix:
26
+ os: [ubuntu-latest, macos-latest, windows-latest]
27
+ runs-on: ${{ matrix.os }}
28
+ steps:
29
+ - uses: actions/checkout@v4
30
+ - uses: actions/setup-python@v5
31
+ with: {python-version-file: pyproject.toml}
32
+ - uses: astral-sh/setup-uv@v5
33
+ - name: Compare the committed canonical vectors
34
+ shell: bash
35
+ run: uv run --locked --group dev python scripts/run_tests.py --lane fast tests/verification/test_canonical_identity.py
36
+ - name: Run the fast lane
37
+ shell: bash
38
+ run: uv run --locked --group dev python scripts/run_tests.py --lane fast
@@ -0,0 +1,89 @@
1
+ name: Publish the reviewed distributions
2
+
3
+ # This workflow uploads the distributions a person has already reviewed and
4
+ # attached to a tagged publication. It builds nothing of its own, and it stops
5
+ # before uploading anything whose digest disagrees with the digests published
6
+ # beside it.
7
+
8
+ on:
9
+ workflow_dispatch:
10
+ inputs:
11
+ release_tag:
12
+ description: The tag whose attached distributions are published, in the form vX.Y.Z
13
+ required: true
14
+ type: string
15
+
16
+ concurrency:
17
+ group: pypi-publish
18
+ cancel-in-progress: false
19
+
20
+ permissions:
21
+ contents: read
22
+
23
+ jobs:
24
+ publish:
25
+ name: Publish to the package index
26
+ runs-on: ubuntu-latest
27
+ environment:
28
+ name: pypi
29
+ url: https://pypi.org/project/evorthon-data-harness/
30
+ permissions:
31
+ contents: read
32
+ id-token: write
33
+
34
+ steps:
35
+ - name: Download the distributions the tag carries
36
+ env:
37
+ GH_TOKEN: ${{ github.token }}
38
+ RELEASE_TAG: ${{ inputs.release_tag }}
39
+ REPOSITORY: ${{ github.repository }}
40
+ shell: bash
41
+ run: |
42
+ set -euo pipefail
43
+ if [[ ! "$RELEASE_TAG" =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
44
+ echo "release_tag must use the form vX.Y.Z" >&2
45
+ exit 1
46
+ fi
47
+
48
+ mkdir -p assets
49
+ gh api "repos/$REPOSITORY/releases/tags/$RELEASE_TAG" --jq '.assets[] | [.name, .url] | @tsv' > catalogue.tsv
50
+ while IFS=$'\t' read -r name address; do
51
+ case "$name" in
52
+ evorthon_data_harness-*.whl|evorthon_data_harness-*.tar.gz|SHA256SUMS)
53
+ gh api -H "Accept: application/octet-stream" "$address" > "assets/$name"
54
+ ;;
55
+ esac
56
+ done < catalogue.tsv
57
+
58
+ - name: Verify the downloaded distributions against the published digests
59
+ shell: bash
60
+ run: |
61
+ set -euo pipefail
62
+ mkdir -p dist
63
+ cd assets
64
+ shopt -s nullglob
65
+
66
+ test -f SHA256SUMS
67
+ wheels=(evorthon_data_harness-*.whl)
68
+ sdists=(evorthon_data_harness-*.tar.gz)
69
+ test "${#wheels[@]}" -eq 1
70
+ test "${#sdists[@]}" -eq 1
71
+ packages=("${wheels[0]}" "${sdists[0]}")
72
+
73
+ listed=$(awk '{ name = $2; sub(/^[*]/, "", name); print name }' SHA256SUMS | sort)
74
+ expected=$({ echo "${wheels[0]}"; echo "${sdists[0]}"; } | sort)
75
+ test "$(wc -l < SHA256SUMS)" -eq 2
76
+ test "$listed" = "$expected"
77
+ sha256sum --check --strict SHA256SUMS
78
+
79
+ cp -- "${packages[@]}" "$GITHUB_WORKSPACE/dist/"
80
+
81
+ # The published v1 line of the trusted-publishing action, pinned by commit.
82
+ - name: Publish the verified distributions
83
+ uses: pypa/gh-action-pypi-publish@dc37677b2e1c63e2034f94d8a5b11f265b73ba33
84
+ with:
85
+ packages-dir: dist
86
+ verify-metadata: true
87
+ skip-existing: false
88
+ attestations: true
89
+ print-hash: true
@@ -0,0 +1,7 @@
1
+ .venv/
2
+ __pycache__/
3
+ *.py[cod]
4
+ .pytest_cache/
5
+ artifacts/
6
+ work/
7
+ .claude/settings.local.json
@@ -0,0 +1,99 @@
1
+ # Adopting Evorthon Data Harness
2
+ <!-- evorthon-implements: EVD-README-032 -->
3
+
4
+ Start with a report, dataset or consumer view whose success you can describe and check. Gather the material that explains it and involve the people who can decide what should change.
5
+
6
+ Evorthon Data Harness provides a specialist AI coworker, delivery records and Python tools for recording and verifying the work. Adapters connect it to separately released delivery tools. The adopting team supplies platform access, model authorization and the people who accept the result.
7
+
8
+ ## Work through an example
9
+
10
+ Choose the [customer service reporting example](examples/modernisation/customer-service-reporting/outcome-brief.md) for an existing estate, or the [renewable asset example](examples/greenfield/renewable-asset-observability/outcome-brief.md) for a new platform. Both use synthetic data and named fictional decision owners.
11
+
12
+ Read the outcome brief first, then follow the records in that example's directory through discovery, design, implementation planning and verification. Use them to understand what a completed record contains before adapting the [templates](koine/templates/) to your own work.
13
+
14
+ ## Prepare the first use case
15
+
16
+ 1. Name the consumer and the output they need. Record how often they need it, what success means and who can accept delivery.
17
+ 2. Gather existing schemas, data extracts, transformations, reports, schedules and catalogue exports. Facts recorded from them retain their source and whether they are extracted, inferred or confirmed.
18
+ 3. Define the output's fields, what each row represents and its identifying keys. These are the minimum facts needed to assess a segment of processing for build readiness.
19
+ 4. Name the people responsible for source evidence, technical decisions, policies and acceptance. Record unresolved questions and constraints alongside the outcome.
20
+
21
+ For modernisation, document the current estate and the behaviour that must continue. For greenfield delivery, do not simply skip discovery: document required capabilities and constraints in a reviewed capability-discovery record. Both routes then produce a platform design, implementation plan, delivery contract and verification record.
22
+
23
+ Missing data can be filled with labelled synthetic datasets. Readiness is calculated per segment, so another segment's missing facts need not stop ready work. Acceptance records show what was covered, what evidence was used and what remains outside the accepted version.
24
+
25
+ ## Use the coworker and delivery tools
26
+
27
+ The [Koine coworker pack](koine/INDEX.md) provides prompts and templates for the delivery conversation. A generation prompt drafts a record; a separate reviewer challenges it. People resolve the findings and approve the decisions.
28
+
29
+ Pinax holds work state and dependencies, while Ergasterion generates outputs from suitable contracts. Eligible, approved work can run through build and review cycles in AutoBuild. The [dependency contracts](docs/dependency-contracts.md) describe how Evorthon Data Harness connects to those separately released tools.
30
+
31
+ Use Python 3.11 or later in a virtual environment. From the root of a repository checkout, install the package and its delivery tools:
32
+
33
+ ```text
34
+ python -m pip install ".[delivery]"
35
+ ```
36
+
37
+ Inspect the available commands and delivery dependencies:
38
+
39
+ ```text
40
+ evorthon-data-harness diagnose
41
+ evorthon-data-harness use-case --help
42
+ evorthon-data-harness verification --help
43
+ ```
44
+
45
+ ## Model access
46
+
47
+ Every model call passes through an authorization gateway. A call requires current, unrevoked authorization issued by your environment for the case, purpose, route, destination and exact fields. It also names the data class, retention policy and evidence policy.
48
+
49
+ A provider credential alone does not authorize sending material. The people responsible for model access control both the authorization and the provider account. They can inspect the permitted fields before use.
50
+
51
+ ### Intake
52
+
53
+ The generator call carries the use-case identity, engagement mode, open questions, confirmed answers and admitted artefact references. Each reference includes its identity, version, digest, handling classification and logical location within the source.
54
+
55
+ It may also carry a bounded sample of artefact text, limited by a declared number of rows and characters. Text crosses only when its handling classification is permitted by the authorization's field scope. A small artefact may fit entirely within those limits.
56
+
57
+ For higher classifications, the round uses the digest and recorded facts without sending artefact text. Each round reports the amount sent for each artefact or the reason its text was withheld.
58
+
59
+ ### Independent review
60
+
61
+ The review call carries recorded facts, their provenance, and artefact identities and digests. It carries no artefact text at any classification.
62
+
63
+ ### Diagnostic advice
64
+
65
+ The diagnostic adviser receives declared text fields and evidence identities from a fault packet that has passed the privacy check. It receives no raw rows, keys, field values or approved case text.
66
+
67
+ The reply is stored as an inert advice record for a person to read. The product does not execute, apply or forward the reply.
68
+
69
+ ### Source references and connection details
70
+
71
+ A logical locator names an artefact and a position within it. Connection details belong in your environment's configuration. The record refuses a locator containing any of these machine-location forms:
72
+
73
+ - an address under any scheme
74
+ - a path from the root of a machine
75
+ - a lettered volume
76
+ - a share host
77
+ - a written home directory
78
+ - a climb out of where it starts
79
+ - a path written with a machine path's separator
80
+
81
+ The same forms are refused in fault packets and tracker notes. The record admits a locator that reads like a dotted server name followed by a path or a port, or like a connection string. The intake round reports a warning on it.
82
+
83
+ These forms need human review because a dotted name cannot be told from an ordinary written name by the pattern check. The warning leaves the locator admitted. Keep actual connection details in environment configuration.
84
+
85
+ Credential-shaped patterns are refused before an artefact is admitted. These checks recognise declared patterns; they do not establish that arbitrary text contains no sensitive information. Review the material and authorize only the fields and samples suitable for your model provider.
86
+
87
+ ## Connect your environment
88
+
89
+ Two adapter contracts connect verification to your material: one reads stored evidence and one produces candidate outputs. The adopting team implements the code that accesses its platform. Reference adapters can read values held in memory or material in a directory you select.
90
+
91
+ Each adapter declares its capabilities and the evidence supporting its answers. A conformance suite checks those declarations against the contract, including unsupported capabilities, missing assurance inputs, invalid values, machine locations and credential patterns.
92
+
93
+ Access, capture, credentials, signing, retention and certification belong to your environment. The [environment-adapter contract](docs/verification/environment-adapters.md) describes the interfaces and their conformance checks.
94
+
95
+ ## Verify and accept
96
+
97
+ Agree the comparison rules and expected results before the run. The [verification engine](docs/verification/README.md) compares candidate outputs against frozen evidence and reports confirmed differences and evidence gaps.
98
+
99
+ A named person decides whether the result is acceptable, including when evidence is synthetic or incomplete. Keep live organisational evidence, review records, credentials and operational work state in your team's environment.
@@ -0,0 +1,5 @@
1
+ # Evorthon Data Harness
2
+
3
+ Use the canonical Koine co-worker and its paired reviewers with the supplied synthetic examples.
4
+
5
+ The [D2 model](docs/architecture/solution-architecture.d2) is the sole owner of component routes and ownership mapping. Its Markdown and SVG are mechanically generated readable projections.
@@ -0,0 +1,15 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Georgios Antikatzidis
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND.
@@ -0,0 +1,189 @@
1
+ Metadata-Version: 2.5
2
+ Name: evorthon-data-harness
3
+ Version: 1.0.2
4
+ Summary: Data engineering harness for modernising an existing estate or building a new platform
5
+ Project-URL: Documentation, https://github.com/antikas/evorthon-data-harness#readme
6
+ Project-URL: Issues, https://github.com/antikas/evorthon-data-harness/issues
7
+ Project-URL: Repository, https://github.com/antikas/evorthon-data-harness
8
+ License: MIT
9
+ License-File: LICENSE
10
+ Classifier: Intended Audience :: Developers
11
+ Classifier: Operating System :: OS Independent
12
+ Classifier: Programming Language :: Python :: 3
13
+ Classifier: Topic :: Software Development :: Quality Assurance
14
+ Requires-Python: >=3.11
15
+ Provides-Extra: delivery
16
+ Requires-Dist: autobuild-factory>=0.5.0; extra == 'delivery'
17
+ Requires-Dist: ergasterion-factory>=0.6.1; extra == 'delivery'
18
+ Requires-Dist: pinax-tracker>=0.1.3; extra == 'delivery'
19
+ Provides-Extra: test
20
+ Requires-Dist: pytest-timeout<3,>=2; extra == 'test'
21
+ Requires-Dist: pytest<9,>=8; extra == 'test'
22
+ Description-Content-Type: text/markdown
23
+
24
+ # Evorthon Data Harness
25
+
26
+ Delivering a data platform means carrying business definitions, design decisions and evidence from discovery through engineering to acceptance. When that work is split across documents and tools, teams spend time reconstructing what was agreed and how to check it.
27
+ <!-- evorthon-claim: EVD-README-036 -->
28
+
29
+ Evorthon Data Harness is a **data engineering harness**: software and a specialist AI coworker that help a team turn a business outcome into reviewed, built and verified data products. It supports both modernising an existing estate and building a new platform.
30
+ <!-- evorthon-claim: EVD-README-037 -->
31
+
32
+ People set the outcome, scope, policies and acceptance rules. Evorthon Data Harness records those decisions, carries them through delivery and retains the evidence for a named person to accept the result.
33
+ <!-- evorthon-claim: EVD-README-038 -->
34
+
35
+ ## Delivery example
36
+
37
+ The included [customer service reporting example](examples/modernisation/customer-service-reporting/outcome-brief.md) starts with service leaders needing a daily view by 09:00. It uses synthetic case, interaction and workforce data, preserving the existing cutoff and metric definitions.
38
+ <!-- evorthon-claim: EVD-README-002 -->
39
+
40
+ Its agreed checks detect missing keys, changed totals and populations that fail to reconcile. The example requires two successful synthetic daily publications before its named sponsor accepts delivery.
41
+ <!-- evorthon-claim: EVD-README-003 -->
42
+
43
+ The engagement follows these stages:
44
+ <!-- evorthon-claim: EVD-README-040 -->
45
+
46
+ 1. Record the business outcome, measurable success criteria, scope and decision owners.
47
+ <!-- evorthon-claim: EVD-README-004 -->
48
+ 2. Establish the starting point: the current estate for modernisation, or required capabilities and constraints for a new platform.
49
+ <!-- evorthon-claim: EVD-README-005 -->
50
+ 3. Design the platform and operating model, including the transition and delivery increments.
51
+ <!-- evorthon-claim: EVD-README-006 -->
52
+ 4. Turn the accepted design into tracked work with dependencies and approval points.
53
+ <!-- evorthon-claim: EVD-README-007 -->
54
+ 5. Build in bounded increments. Suitable contracts can generate repeatable outputs from the same approved inputs.
55
+ <!-- evorthon-claim: EVD-README-008 -->
56
+ 6. Configure and run verification, including expected results, failure cases and checkpoints that help locate differences.
57
+ <!-- evorthon-claim: EVD-README-009 -->
58
+ 7. Present the results, review findings and remaining uncertainty to the people responsible for acceptance.
59
+ <!-- evorthon-claim: EVD-README-010 -->
60
+
61
+ The agreed decisions and constraints form a delivery contract that the coworker, tools and reviewers use throughout the work.
62
+ <!-- evorthon-claim: EVD-README-041 -->
63
+
64
+ ## Two delivery modes
65
+
66
+ ### Modernise an existing estate
67
+
68
+ For modernisation, the coworker examines existing processing, data, interfaces and controls. The team identifies behaviour that must continue and agrees a transition in separately accepted increments.
69
+ <!-- evorthon-claim: EVD-README-011 -->
70
+
71
+ ### Build a greenfield platform
72
+
73
+ For greenfield delivery, the team starts with required outcomes, capabilities, constraints and operating needs. The [renewable asset example](examples/greenfield/renewable-asset-observability/outcome-brief.md) follows this route, using approved scenarios to check a new platform.
74
+ <!-- evorthon-claim: EVD-README-012 -->
75
+
76
+ ## Delivery workflow
77
+
78
+ An engagement records who owns the business outcome, source evidence, technical decisions and final acceptance. Those people review the decisions before work enters delivery.
79
+ <!-- evorthon-claim: EVD-README-013 -->
80
+
81
+ Each consumer outcome has a use-case record containing its outputs, inputs, reference data, processing steps, scenarios and versions. An engagement can contain several use cases, each split into packages of build work.
82
+ <!-- evorthon-claim: EVD-README-043 -->
83
+
84
+ The specialist coworker helps gather requirements, draft delivery records and link decisions to evidence. Each generation step has a separate review. The supplied prompts and templates define this role, called the Koine data coworker.
85
+ <!-- evorthon-claim: EVD-README-014 -->
86
+
87
+ Intake starts with existing schemas, extracts, transformations, reports and schedules. Recorded facts identify their source and location, who extracted them, and whether they are extracted, inferred or confirmed. The coworker asks about gaps left by that material.
88
+ <!-- evorthon-claim: EVD-README-044 -->
89
+
90
+ Model calls require authorization from the adopting environment. Intake may send a bounded sample of permitted artefact text; independent review receives recorded facts and references. Diagnostic advice remains text for a person to assess. The [adoption guide](ADOPTION-GUIDE.md#model-access) explains each route and its limits.
91
+ <!-- evorthon-claim: EVD-README-050 -->
92
+
93
+ Readiness is calculated for each span of processing, called a segment. Its output definition must specify fields, what one row represents and identifying keys. Other missing facts receive labelled substitutes or tracked follow-up work, allowing ready segments to proceed.
94
+ <!-- evorthon-claim: EVD-README-045 -->
95
+
96
+ The work tracker holds dependencies, readiness, claims and completion. Evorthon Data Harness uses the separately released Pinax tracker for this shared operational record.
97
+ <!-- evorthon-claim: EVD-README-015 -->
98
+
99
+ Pinax shares state changes through Git. It reads shared state before claiming work and refuses a claim that loses a race with another worker.
100
+ <!-- evorthon-claim: EVD-README-046 -->
101
+
102
+ Two further tools support delivery: Ergasterion generates outputs from suitable contracts, and AutoBuild runs eligible work through build and review cycles. Evorthon Data Harness connects to their released packages through narrow adapters.
103
+ <!-- evorthon-claim: EVD-README-016 -->
104
+
105
+ Verification begins when the team defines success, evidence ownership and failure conditions. The product provides the comparison engine; platform delivery includes the contracts, checks and environment adapters needed to use it.
106
+ <!-- evorthon-claim: EVD-README-017 -->
107
+
108
+ A named person accepts delivery with its check results and review findings attached. A model cannot accept its own work.
109
+ <!-- evorthon-claim: EVD-README-018 -->
110
+
111
+ Acceptance can cover one segment. The version records included outputs, scenarios, data provenance and excluded work. An accepted intermediate product can then serve another use case.
112
+ <!-- evorthon-claim: EVD-README-047 -->
113
+
114
+ ## Verification
115
+
116
+ A verification case freezes the inputs, reference data, expected outputs, comparison rules and available checkpoints for a run. The responsible people can read and change those rules before running the case.
117
+ <!-- evorthon-claim: EVD-README-019 -->
118
+
119
+ Where data is missing, the team can generate synthetic datasets with recorded seeds and constraints. Cases, results and acceptance records retain that label. Passing synthetic checks establishes progress against those scenarios; demonstrating parity with real data requires real evidence.
120
+ <!-- evorthon-claim: EVD-README-048 -->
121
+
122
+ The engine runs the candidate against frozen evidence, compares actual and expected outputs, and reports the earliest confirmed difference. Gaps between checkpoints remain explicitly unknown. Routine verification works without a live legacy system.
123
+ <!-- evorthon-claim: EVD-README-020 -->
124
+
125
+ Portable verification records hold identifiers, fingerprints, counts and approved summaries. The adopting environment owns raw data access, credentials, storage, signing, retention and certification.
126
+ <!-- evorthon-claim: EVD-README-021 -->
127
+
128
+ A failed comparison produces a fault record naming the affected checkpoint and supporting evidence. A diagnostic adviser may propose a correction. It cannot change tolerances, replace evidence, execute work or accept the outcome.
129
+ <!-- evorthon-claim: EVD-README-022 -->
130
+
131
+ ## Checks and acceptance
132
+
133
+ - People set and can inspect the outcome, scope, policies, tolerances and acceptance rules.
134
+ <!-- evorthon-claim: EVD-README-023 -->
135
+ - Generation and review are separate. A named authority resolves or accepts review findings.
136
+ <!-- evorthon-claim: EVD-README-024 -->
137
+ - Approved work enters the tracker before execution, with an explicit scope.
138
+ <!-- evorthon-claim: EVD-README-025 -->
139
+ - Tests cover successful cases and deliberate failures to check that defects are detected.
140
+ <!-- evorthon-claim: EVD-README-026 -->
141
+ - Verification reports evidence gaps and uncertainty for human acceptance.
142
+ <!-- evorthon-claim: EVD-README-027 -->
143
+ - Readiness, provenance and assurance inform decisions. People may accept synthetic or incomplete evidence. Integrity checks refuse contradictory records, mismatched evidence digests, stored credentials, actors of the wrong kind and changes to immutable records.
144
+ <!-- evorthon-claim: EVD-README-049 -->
145
+
146
+ Comparison results come from deterministic checks against the case's declared rules.
147
+ <!-- evorthon-claim: EVD-README-042 -->
148
+
149
+ ## Scope and limits
150
+
151
+ Evorthon Data Harness is specific to data-platform delivery.
152
+ <!-- evorthon-claim: EVD-README-028 -->
153
+
154
+ The adopting team chooses its cloud, processing engine, storage and target architecture.
155
+ <!-- evorthon-claim: EVD-README-029 -->
156
+
157
+ Platform engineers, data owners, security teams and operators remain responsible for their decisions and the delivered platform.
158
+ <!-- evorthon-claim: EVD-README-030 -->
159
+
160
+ Live connections, credentials, protected data and certified evidence stores remain under the adopting environment's control. Connecting them requires environment-owned adapters. The synthetic examples provide no certification of a live platform.
161
+ <!-- evorthon-claim: EVD-README-031 -->
162
+
163
+ ## For engineers
164
+
165
+ Start with the [adoption guide](ADOPTION-GUIDE.md) and a [worked example](examples/INDEX.md). The [architecture record](docs/architecture/solution-architecture.md) explains component responsibilities. The [coworker pack](koine/INDEX.md) contains the method, prompts and templates.
166
+ <!-- evorthon-claim: EVD-README-032 -->
167
+
168
+ The Python package requires Python 3.11 or later. Optional delivery dependencies provide the tracker, generator and build runner; their declared minimum versions follow the interfaces this product uses.
169
+ <!-- evorthon-claim: EVD-README-033 -->
170
+
171
+ Use `evorthon-data-harness diagnose` to inspect installed delivery capabilities. To run the repository's fast checks with [uv](https://docs.astral.sh/uv/):
172
+ <!-- evorthon-claim: EVD-README-034 -->
173
+
174
+ ```text
175
+ uv run --locked --group dev python scripts/run_tests.py --lane fast
176
+ ```
177
+
178
+ To check that a downloaded public copy matches its published file list, run:
179
+ <!-- evorthon-claim: EVD-README-035 -->
180
+
181
+ ```text
182
+ python scripts/check_public_candidate.py
183
+ ```
184
+
185
+ Implementation and test references are checked for consistency.
186
+ <!-- evorthon-claim: EVD-README-039 -->
187
+
188
+ See [capabilities and evidence](docs/product/capability-status.md) for implementation and test references.
189
+ <!-- evorthon-claim: EVD-README-001 -->