underwrite 0.1.0__tar.gz → 0.1.1__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 (251) hide show
  1. {underwrite-0.1.0 → underwrite-0.1.1}/PKG-INFO +115 -65
  2. {underwrite-0.1.0 → underwrite-0.1.1}/README.md +114 -64
  3. {underwrite-0.1.0 → underwrite-0.1.1}/pyproject.toml +1 -1
  4. {underwrite-0.1.0 → underwrite-0.1.1}/pyproject.toml.orig +1 -1
  5. {underwrite-0.1.0 → underwrite-0.1.1}/LICENSE +0 -0
  6. {underwrite-0.1.0 → underwrite-0.1.1}/NOTICE +0 -0
  7. {underwrite-0.1.0 → underwrite-0.1.1}/contracts/acceptance_decision.v1.schema.json +0 -0
  8. {underwrite-0.1.0 → underwrite-0.1.1}/contracts/acceptance_decision.v2.schema.json +0 -0
  9. {underwrite-0.1.0 → underwrite-0.1.1}/contracts/acceptance_error.v1.schema.json +0 -0
  10. {underwrite-0.1.0 → underwrite-0.1.1}/contracts/artifact_case.v1.schema.json +0 -0
  11. {underwrite-0.1.0 → underwrite-0.1.1}/contracts/artifact_inspection.v1.schema.json +0 -0
  12. {underwrite-0.1.0 → underwrite-0.1.1}/contracts/artifact_inspection_error.v1.schema.json +0 -0
  13. {underwrite-0.1.0 → underwrite-0.1.1}/contracts/baseline_record.v1.schema.json +0 -0
  14. {underwrite-0.1.0 → underwrite-0.1.1}/contracts/binary_run_audit.v1.schema.json +0 -0
  15. {underwrite-0.1.0 → underwrite-0.1.1}/contracts/binary_run_inventory.v1.schema.json +0 -0
  16. {underwrite-0.1.0 → underwrite-0.1.1}/contracts/boundary_allowlist.v1.schema.json +0 -0
  17. {underwrite-0.1.0 → underwrite-0.1.1}/contracts/capabilities.v1.schema.json +0 -0
  18. {underwrite-0.1.0 → underwrite-0.1.1}/contracts/change_candidate.v1.schema.json +0 -0
  19. {underwrite-0.1.0 → underwrite-0.1.1}/contracts/cli_result.v1.schema.json +0 -0
  20. {underwrite-0.1.0 → underwrite-0.1.1}/contracts/common_result_inspection.v1.schema.json +0 -0
  21. {underwrite-0.1.0 → underwrite-0.1.1}/contracts/common_result_inspection_actions.v1.schema.json +0 -0
  22. {underwrite-0.1.0 → underwrite-0.1.1}/contracts/declared_claims.v1.schema.json +0 -0
  23. {underwrite-0.1.0 → underwrite-0.1.1}/contracts/declared_claims.v2.schema.json +0 -0
  24. {underwrite-0.1.0 → underwrite-0.1.1}/contracts/declared_comparison.v1.schema.json +0 -0
  25. {underwrite-0.1.0 → underwrite-0.1.1}/contracts/declared_comparison_case.v1.schema.json +0 -0
  26. {underwrite-0.1.0 → underwrite-0.1.1}/contracts/deepeval_accounting.v1.schema.json +0 -0
  27. {underwrite-0.1.0 → underwrite-0.1.1}/contracts/deepeval_accounting.v2.schema.json +0 -0
  28. {underwrite-0.1.0 → underwrite-0.1.1}/contracts/deepeval_bound_record.v1.schema.json +0 -0
  29. {underwrite-0.1.0 → underwrite-0.1.1}/contracts/deepeval_metric_bindings.v1.schema.json +0 -0
  30. {underwrite-0.1.0 → underwrite-0.1.1}/contracts/deepeval_record.v1.schema.json +0 -0
  31. {underwrite-0.1.0 → underwrite-0.1.1}/contracts/deepeval_record.v2.schema.json +0 -0
  32. {underwrite-0.1.0 → underwrite-0.1.1}/contracts/evidence_error.v1.schema.json +0 -0
  33. {underwrite-0.1.0 → underwrite-0.1.1}/contracts/evidence_result.v1.schema.json +0 -0
  34. {underwrite-0.1.0 → underwrite-0.1.1}/contracts/exemptions.v1.schema.json +0 -0
  35. {underwrite-0.1.0 → underwrite-0.1.1}/contracts/gate_rules.v1.schema.json +0 -0
  36. {underwrite-0.1.0 → underwrite-0.1.1}/contracts/langfuse_accounting.v1.schema.json +0 -0
  37. {underwrite-0.1.0 → underwrite-0.1.1}/contracts/langfuse_record.v1.schema.json +0 -0
  38. {underwrite-0.1.0 → underwrite-0.1.1}/contracts/langfuse_row_index.v1.schema.json +0 -0
  39. {underwrite-0.1.0 → underwrite-0.1.1}/contracts/measurement_error.v1.schema.json +0 -0
  40. {underwrite-0.1.0 → underwrite-0.1.1}/contracts/measurement_policy.v2.schema.json +0 -0
  41. {underwrite-0.1.0 → underwrite-0.1.1}/contracts/measurement_policy.v3.schema.json +0 -0
  42. {underwrite-0.1.0 → underwrite-0.1.1}/contracts/measurement_record.v1.schema.json +0 -0
  43. {underwrite-0.1.0 → underwrite-0.1.1}/contracts/measurement_replay.v1.schema.json +0 -0
  44. {underwrite-0.1.0 → underwrite-0.1.1}/contracts/measurement_semantics.v1.schema.json +0 -0
  45. {underwrite-0.1.0 → underwrite-0.1.1}/contracts/metric_definition.v1.schema.json +0 -0
  46. {underwrite-0.1.0 → underwrite-0.1.1}/contracts/observation.v1.schema.json +0 -0
  47. {underwrite-0.1.0 → underwrite-0.1.1}/contracts/paired_binary_evidence.v1.schema.json +0 -0
  48. {underwrite-0.1.0 → underwrite-0.1.1}/contracts/paired_binary_input.v1.schema.json +0 -0
  49. {underwrite-0.1.0 → underwrite-0.1.1}/contracts/paired_binary_policy.v1.schema.json +0 -0
  50. {underwrite-0.1.0 → underwrite-0.1.1}/contracts/paired_handoff_review.v1.schema.json +0 -0
  51. {underwrite-0.1.0 → underwrite-0.1.1}/contracts/paired_review.v1.schema.json +0 -0
  52. {underwrite-0.1.0 → underwrite-0.1.1}/contracts/paired_review_context.v1.schema.json +0 -0
  53. {underwrite-0.1.0 → underwrite-0.1.1}/contracts/promptfoo_accounting.v1.schema.json +0 -0
  54. {underwrite-0.1.0 → underwrite-0.1.1}/contracts/promptfoo_record.v1.schema.json +0 -0
  55. {underwrite-0.1.0 → underwrite-0.1.1}/contracts/promptfoo_row_index.v1.schema.json +0 -0
  56. {underwrite-0.1.0 → underwrite-0.1.1}/contracts/read.v1.schema.json +0 -0
  57. {underwrite-0.1.0 → underwrite-0.1.1}/contracts/read.v2.schema.json +0 -0
  58. {underwrite-0.1.0 → underwrite-0.1.1}/contracts/record_catalog.v1.schema.json +0 -0
  59. {underwrite-0.1.0 → underwrite-0.1.1}/contracts/record_document.v1.schema.json +0 -0
  60. {underwrite-0.1.0 → underwrite-0.1.1}/contracts/record_error.v1.schema.json +0 -0
  61. {underwrite-0.1.0 → underwrite-0.1.1}/contracts/record_spec.v1.schema.json +0 -0
  62. {underwrite-0.1.0 → underwrite-0.1.1}/contracts/record_verification.v1.schema.json +0 -0
  63. {underwrite-0.1.0 → underwrite-0.1.1}/contracts/record_view.v1.schema.json +0 -0
  64. {underwrite-0.1.0 → underwrite-0.1.1}/contracts/release_case.v1.schema.json +0 -0
  65. {underwrite-0.1.0 → underwrite-0.1.1}/contracts/release_inspection.v1.schema.json +0 -0
  66. {underwrite-0.1.0 → underwrite-0.1.1}/contracts/release_inspection_error.v1.schema.json +0 -0
  67. {underwrite-0.1.0 → underwrite-0.1.1}/contracts/result_record.v1.schema.json +0 -0
  68. {underwrite-0.1.0 → underwrite-0.1.1}/contracts/statistical_seed.v1.schema.json +0 -0
  69. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/__init__.py +0 -0
  70. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/_contracts/acceptance_decision.v1.schema.json +0 -0
  71. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/_contracts/acceptance_decision.v2.schema.json +0 -0
  72. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/_contracts/acceptance_error.v1.schema.json +0 -0
  73. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/_contracts/artifact_case.v1.schema.json +0 -0
  74. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/_contracts/artifact_inspection.v1.schema.json +0 -0
  75. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/_contracts/artifact_inspection_error.v1.schema.json +0 -0
  76. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/_contracts/baseline_record.v1.schema.json +0 -0
  77. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/_contracts/binary_run_audit.v1.schema.json +0 -0
  78. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/_contracts/binary_run_inventory.v1.schema.json +0 -0
  79. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/_contracts/boundary_allowlist.v1.schema.json +0 -0
  80. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/_contracts/capabilities.v1.schema.json +0 -0
  81. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/_contracts/change_candidate.v1.schema.json +0 -0
  82. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/_contracts/cli_result.v1.schema.json +0 -0
  83. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/_contracts/common_result_inspection.v1.schema.json +0 -0
  84. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/_contracts/common_result_inspection_actions.v1.schema.json +0 -0
  85. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/_contracts/declared_claims.v1.schema.json +0 -0
  86. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/_contracts/declared_claims.v2.schema.json +0 -0
  87. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/_contracts/declared_comparison.v1.schema.json +0 -0
  88. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/_contracts/declared_comparison_case.v1.schema.json +0 -0
  89. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/_contracts/deepeval_accounting.v1.schema.json +0 -0
  90. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/_contracts/deepeval_accounting.v2.schema.json +0 -0
  91. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/_contracts/deepeval_bound_record.v1.schema.json +0 -0
  92. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/_contracts/deepeval_metric_bindings.v1.schema.json +0 -0
  93. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/_contracts/deepeval_record.v1.schema.json +0 -0
  94. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/_contracts/deepeval_record.v2.schema.json +0 -0
  95. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/_contracts/evidence_error.v1.schema.json +0 -0
  96. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/_contracts/evidence_result.v1.schema.json +0 -0
  97. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/_contracts/exemptions.v1.schema.json +0 -0
  98. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/_contracts/gate_rules.v1.schema.json +0 -0
  99. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/_contracts/langfuse_accounting.v1.schema.json +0 -0
  100. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/_contracts/langfuse_record.v1.schema.json +0 -0
  101. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/_contracts/langfuse_row_index.v1.schema.json +0 -0
  102. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/_contracts/measurement_error.v1.schema.json +0 -0
  103. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/_contracts/measurement_policy.v2.schema.json +0 -0
  104. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/_contracts/measurement_policy.v3.schema.json +0 -0
  105. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/_contracts/measurement_record.v1.schema.json +0 -0
  106. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/_contracts/measurement_replay.v1.schema.json +0 -0
  107. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/_contracts/measurement_semantics.v1.schema.json +0 -0
  108. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/_contracts/metric_definition.v1.schema.json +0 -0
  109. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/_contracts/observation.v1.schema.json +0 -0
  110. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/_contracts/paired_binary_evidence.v1.schema.json +0 -0
  111. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/_contracts/paired_binary_input.v1.schema.json +0 -0
  112. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/_contracts/paired_binary_policy.v1.schema.json +0 -0
  113. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/_contracts/paired_handoff_review.v1.schema.json +0 -0
  114. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/_contracts/paired_review.v1.schema.json +0 -0
  115. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/_contracts/paired_review_context.v1.schema.json +0 -0
  116. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/_contracts/promptfoo_accounting.v1.schema.json +0 -0
  117. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/_contracts/promptfoo_record.v1.schema.json +0 -0
  118. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/_contracts/promptfoo_row_index.v1.schema.json +0 -0
  119. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/_contracts/read.v1.schema.json +0 -0
  120. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/_contracts/read.v2.schema.json +0 -0
  121. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/_contracts/record_catalog.v1.schema.json +0 -0
  122. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/_contracts/record_document.v1.schema.json +0 -0
  123. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/_contracts/record_error.v1.schema.json +0 -0
  124. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/_contracts/record_spec.v1.schema.json +0 -0
  125. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/_contracts/record_verification.v1.schema.json +0 -0
  126. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/_contracts/record_view.v1.schema.json +0 -0
  127. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/_contracts/release_case.v1.schema.json +0 -0
  128. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/_contracts/release_inspection.v1.schema.json +0 -0
  129. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/_contracts/release_inspection_error.v1.schema.json +0 -0
  130. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/_contracts/result_record.v1.schema.json +0 -0
  131. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/_contracts/statistical_seed.v1.schema.json +0 -0
  132. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/_fileio.py +0 -0
  133. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/_json.py +0 -0
  134. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/acceptance/__init__.py +0 -0
  135. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/acceptance/claims.py +0 -0
  136. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/acceptance/classify.py +0 -0
  137. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/acceptance/decision.py +0 -0
  138. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/acceptance/incident.py +0 -0
  139. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/acceptance/lifecycle.py +0 -0
  140. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/adjudication/__init__.py +0 -0
  141. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/cli/__init__.py +0 -0
  142. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/cli/accept.py +0 -0
  143. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/cli/audit_baseline.py +0 -0
  144. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/cli/audit_counts.py +0 -0
  145. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/cli/audit_deepeval.py +0 -0
  146. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/cli/audit_langfuse.py +0 -0
  147. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/cli/audit_promptfoo.py +0 -0
  148. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/cli/audit_run.py +0 -0
  149. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/cli/boundary.py +0 -0
  150. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/cli/capabilities.py +0 -0
  151. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/cli/commands.py +0 -0
  152. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/cli/compare_declarations.py +0 -0
  153. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/cli/evidence.py +0 -0
  154. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/cli/gate_rules.py +0 -0
  155. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/cli/handoff_limits.py +0 -0
  156. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/cli/handoff_review.py +0 -0
  157. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/cli/inspect_result.py +0 -0
  158. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/cli/inspection.py +0 -0
  159. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/cli/instrument.py +0 -0
  160. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/cli/legacy_input.py +0 -0
  161. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/cli/local_json.py +0 -0
  162. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/cli/main.py +0 -0
  163. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/cli/measure.py +0 -0
  164. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/cli/measurement_flow.py +0 -0
  165. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/cli/pair_binary.py +0 -0
  166. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/cli/prepare_event_policy.py +0 -0
  167. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/cli/project_baseline.py +0 -0
  168. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/cli/record_baseline.py +0 -0
  169. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/cli/record_capture.py +0 -0
  170. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/cli/record_deepeval.py +0 -0
  171. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/cli/record_deepeval_bound.py +0 -0
  172. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/cli/record_langfuse.py +0 -0
  173. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/cli/record_measure.py +0 -0
  174. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/cli/record_promptfoo.py +0 -0
  175. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/cli/records.py +0 -0
  176. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/cli/release.py +0 -0
  177. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/cli/render.py +0 -0
  178. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/cli/replay_measure.py +0 -0
  179. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/cli/review_pair.py +0 -0
  180. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/fleet/__init__.py +0 -0
  181. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/fleet/_pin_storage.py +0 -0
  182. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/fleet/drift.py +0 -0
  183. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/fleet/pins.py +0 -0
  184. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/instrument/__init__.py +0 -0
  185. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/instrument/evidence/__init__.py +0 -0
  186. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/instrument/evidence/_resampling.py +0 -0
  187. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/instrument/evidence/aa.py +0 -0
  188. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/instrument/evidence/accounting.py +0 -0
  189. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/instrument/evidence/common_result.py +0 -0
  190. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/instrument/evidence/controlled.py +0 -0
  191. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/instrument/evidence/declarations.py +0 -0
  192. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/instrument/evidence/deepeval_accounting.py +0 -0
  193. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/instrument/evidence/deepeval_binding.py +0 -0
  194. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/instrument/evidence/goppi_baseline.py +0 -0
  195. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/instrument/evidence/goppi_identity.py +0 -0
  196. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/instrument/evidence/goppi_p7_handoff.py +0 -0
  197. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/instrument/evidence/judge.py +0 -0
  198. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/instrument/evidence/langfuse_accounting.py +0 -0
  199. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/instrument/evidence/langfuse_row_index.py +0 -0
  200. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/instrument/evidence/paired.py +0 -0
  201. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/instrument/evidence/paired_binary.py +0 -0
  202. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/instrument/evidence/paired_review.py +0 -0
  203. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/instrument/evidence/retrieval.py +0 -0
  204. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/instrument/evidence/run_audit.py +0 -0
  205. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/instrument/evidence/selfcheck.py +0 -0
  206. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/instrument/evidence/split.py +0 -0
  207. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/instrument/ingest/__init__.py +0 -0
  208. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/instrument/ingest/accounting.py +0 -0
  209. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/instrument/ingest/application.py +0 -0
  210. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/instrument/ingest/codecs/__init__.py +0 -0
  211. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/instrument/ingest/codecs/_shape.py +0 -0
  212. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/instrument/ingest/codecs/deepeval.py +0 -0
  213. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/instrument/ingest/codecs/evidence_bundle.py +0 -0
  214. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/instrument/ingest/codecs/inspect.py +0 -0
  215. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/instrument/ingest/codecs/langfuse.py +0 -0
  216. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/instrument/ingest/codecs/openinference.py +0 -0
  217. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/instrument/ingest/codecs/otlp_json.py +0 -0
  218. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/instrument/ingest/codecs/promptfoo.py +0 -0
  219. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/instrument/ingest/deepeval_accounting.py +0 -0
  220. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/instrument/ingest/deepeval_binding.py +0 -0
  221. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/instrument/ingest/formats.py +0 -0
  222. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/instrument/ingest/goppi_baseline.py +0 -0
  223. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/instrument/ingest/goppi_p7_handoff.py +0 -0
  224. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/instrument/ingest/goppi_pilot.py +0 -0
  225. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/instrument/ingest/inspection.py +0 -0
  226. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/instrument/ingest/langfuse_accounting.py +0 -0
  227. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/instrument/ingest/local_capture.py +0 -0
  228. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/instrument/ingest/project.py +0 -0
  229. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/instrument/ingest/release.py +0 -0
  230. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/instrument/ingest/release_bindings.py +0 -0
  231. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/instrument/ingest/release_compose.py +0 -0
  232. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/instrument/ingest/schema.py +0 -0
  233. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/instrument/ingest/transport.py +0 -0
  234. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/measurement/__init__.py +0 -0
  235. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/measurement/availability.py +0 -0
  236. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/measurement/calibration.py +0 -0
  237. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/measurement/directional.py +0 -0
  238. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/measurement/eprocess.py +0 -0
  239. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/measurement/event_policy.py +0 -0
  240. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/measurement/event_read.py +0 -0
  241. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/measurement/jury.py +0 -0
  242. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/measurement/read.py +0 -0
  243. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/measurement/read_input.py +0 -0
  244. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/measurement/stratify.py +0 -0
  245. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/measurement_contract/__init__.py +0 -0
  246. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/measurement_contract/read.py +0 -0
  247. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/measurement_contract/semantics.py +0 -0
  248. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/service/__init__.py +0 -0
  249. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/service/_record_errors.py +0 -0
  250. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/service/_record_format.py +0 -0
  251. {underwrite-0.1.0 → underwrite-0.1.1}/src/underwrite/service/records.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: underwrite
3
- Version: 0.1.0
3
+ Version: 0.1.1
4
4
  Summary: Local evidence normalization, measurement, and acceptance checks
5
5
  License-Expression: Apache-2.0
6
6
  License-File: LICENSE
@@ -15,7 +15,7 @@ Description-Content-Type: text/markdown
15
15
 
16
16
  <div align="center">
17
17
 
18
- <h1><img src="assets/brand/underwrite-logo.png" alt="underwrite" width="640"></h1>
18
+ <h1><img src="https://raw.githubusercontent.com/ntts9990/underwrite/main/assets/brand/underwrite-logo.png" alt="underwrite" width="640"></h1>
19
19
 
20
20
  ### Know what your eval files actually support.
21
21
 
@@ -26,11 +26,11 @@ Find mismatches. Keep missing evidence visible. Know what to check next.
26
26
  [![CI](https://github.com/ntts9990/underwrite/actions/workflows/ci.yml/badge.svg)](https://github.com/ntts9990/underwrite/actions/workflows/ci.yml)
27
27
  [![PyPI](https://img.shields.io/pypi/v/underwrite)](https://pypi.org/project/underwrite/)
28
28
  [![Python 3.12+](https://img.shields.io/badge/Python-3.12%2B-blue)](https://pypi.org/project/underwrite/)
29
- [![License: Apache-2.0](https://img.shields.io/badge/license-Apache--2.0-blue)](LICENSE)
29
+ [![License: Apache-2.0](https://img.shields.io/badge/license-Apache--2.0-blue)](https://github.com/ntts9990/underwrite/blob/main/LICENSE)
30
30
 
31
31
  **[Try it](#quickstart)** · [Use with an agent](#agent-use) · [Supported formats](#supported-formats) · [Docs](#documentation)
32
32
 
33
- **English** · [한국어](README.ko.md)
33
+ **English** · [한국어](https://github.com/ntts9990/underwrite/blob/main/README.ko.md)
34
34
 
35
35
  </div>
36
36
 
@@ -50,29 +50,35 @@ quality score. No Docker, dashboard, or provider credentials are needed to
50
50
  inspect the supported local files.
51
51
 
52
52
  > [!NOTE]
53
- > **This README describes the `0.1.0` source tree and matching wheels.** The older
54
- > PyPI `0.0.1` lacks these workflows; use the source quickstart or matching
55
- > `0.1.0` app/core wheels. The older build's `pins refresh` needs a separate
56
- > caution; see [Published installation](#install).
53
+ > **This guide targets `underwrite==0.1.1`.** Its CLI and Python workflows work
54
+ > without a checkout. The older `0.0.1` artifacts lack these workflows and have
55
+ > a separate `pins refresh` caution; see [Install](#install).
57
56
 
58
57
  ## Quickstart
59
58
 
60
- Requires **Python 3.12+** and [uv](https://docs.astral.sh/uv/).
61
- This checkout is tested with CPython 3.12 on Linux and macOS. File-based CLI
62
- workflows require Unix/POSIX file APIs, including ordinary artifact reads.
59
+ Requires **Python 3.12+** and [uv](https://docs.astral.sh/uv/); the optional
60
+ synthetic download below uses `curl`.
61
+ File-based CLI workflows are tested with CPython 3.12 on Linux and macOS. They
62
+ require Unix/POSIX file APIs, including for ordinary artifact reads.
63
63
 
64
- **1. Check the file.** Run a bundled synthetic example—no API key or adjacent
65
- repository required:
64
+ **1. Install and check a file.** The app-only install resolves a compatible
65
+ `underwrite-core` automatically. Download the public synthetic example; no
66
+ checkout or API key is needed:
66
67
 
67
68
  ```sh
68
- git clone https://github.com/ntts9990/underwrite.git
69
- cd underwrite
70
- uv sync --frozen --all-groups
71
-
72
- uv run --frozen --no-sync underwrite audit-promptfoo \
73
- fixtures/examples/evidence/synthetic-promptfoo-count-mismatch.json --json
69
+ uv tool install 'underwrite==0.1.1'
70
+ underwrite capabilities --json
71
+ example_dir=$(mktemp -d)
72
+ curl -fsSLo "$example_dir/promptfoo.json" \
73
+ https://raw.githubusercontent.com/ntts9990/underwrite/cb913d39bce628b93dcd3b06fcc4ce36f9dc66af/fixtures/examples/evidence/synthetic-promptfoo-count-mismatch.json
74
+ underwrite audit-promptfoo "$example_dir/promptfoo.json" \
75
+ --version 0.123.0 --json
74
76
  ```
75
77
 
78
+ The same `uv tool install` command updates an older uv-managed `underwrite`
79
+ tool without `--force`. If your shell cannot find `underwrite`, run
80
+ `uv tool update-shell` and open a new shell.
81
+
76
82
  **2. Read the finding.** The producer summary declares **3 results**, including
77
83
  **1 failure**; the file contains **2 rows**, with **0 failure rows**. The command
78
84
  reports the difference without guessing which side is wrong. Selected fields
@@ -104,12 +110,21 @@ explicit. Exit `0` means the report was produced, not that the counts agree or
104
110
  the source's verdict was verified. To keep the input and analysis together,
105
111
  [save them in a local record](#keep-results-you-can-return-to).
106
112
 
113
+ For your own completed Promptfoo export, replace the example path and select its
114
+ supported source version. The synthetic download above is a constructed example,
115
+ not an unchanged producer export.
116
+
107
117
  <details>
108
118
  <summary><strong>Try the native measurement → acceptance workflow</strong></summary>
109
119
 
110
- From the same checkout, run the included synthetic binary-event example:
120
+ This example uses policies and fixtures in the GitHub checkout; they are not
121
+ included in the installed package. To run it, prepare a checkout first:
111
122
 
112
123
  ```sh
124
+ git clone https://github.com/ntts9990/underwrite.git
125
+ cd underwrite
126
+ uv sync --frozen --all-groups
127
+
113
128
  mkdir -p output
114
129
  uv run --frozen --no-sync underwrite ingest \
115
130
  --format underwrite.evidence-bundle --version v1 \
@@ -131,7 +146,7 @@ This measures a synthetic binary-event proportion, not general quality or latenc
131
146
  The `read.v2` uses an explicit `measurement_policy.v3`; calibration diagnostics do
132
147
  not vote on its verdict. The final classification is `screened`, requires human
133
148
  review, and keeps `merge_authorized` false. Repeat `--read` for each required claim.
134
- See [measurement meaning](AGENT_USAGE.md#measurement-meaning-and-migration).
149
+ See [measurement meaning](https://github.com/ntts9990/underwrite/blob/main/AGENT_USAGE.md#measurement-meaning-and-migration).
135
150
 
136
151
  </details>
137
152
 
@@ -165,12 +180,12 @@ inputs and results for later review.
165
180
 
166
181
  ## Agent use
167
182
 
168
- Give your coding agent the prepared checkout and an exported artifact. It can
183
+ Give your coding agent the installed CLI and a completed local export. It can
169
184
  discover the available routes, execute them, and use the JSON in its response:
170
185
 
171
186
  ```sh
172
- uv run --frozen --no-sync underwrite --help
173
- uv run --frozen --no-sync underwrite capabilities --json
187
+ underwrite --help
188
+ underwrite capabilities --json
174
189
  ```
175
190
 
176
191
  Python callers can use
@@ -180,16 +195,17 @@ interpreting any producer-specific field.
180
195
 
181
196
  Example task for an agent with terminal access:
182
197
 
183
- > Read `skills/underwrite-review/SKILL.md` in this checkout. Review
184
- > `fixtures/examples/evidence/synthetic-promptfoo-count-mismatch.json` as a
185
- > Promptfoo 0.123.0 export. Use `capabilities --json` and `audit-promptfoo`.
198
+ > Review `/absolute/path/to/completed-promptfoo-export.json` with the installed
199
+ > `underwrite` 0.1.1 CLI as a Promptfoo 0.123.0 export. Use `capabilities --json`
200
+ > and `audit-promptfoo --version 0.123.0`.
186
201
  > Report `declared_relation`, `producer_stats`, `row_tallies`, `raw_hash`,
187
202
  > `limitations`, and the next useful action. Do not rerun the producer or treat
188
203
  > exit `0` as agreement or approval.
189
204
 
190
- The optional [underwrite-review skill](skills/underwrite-review/SKILL.md) provides
191
- reusable guidance for Codex and Claude Code. [Setup and usage](AGENT_USAGE.md#optional-artifact-review-skill)
192
- are explicit: the skill does not install the CLI or add a background service.
205
+ The optional [underwrite-review skill](https://github.com/ntts9990/underwrite/blob/main/skills/underwrite-review/SKILL.md) provides
206
+ reusable guidance for Codex and Claude Code. [Setup and usage](https://github.com/ntts9990/underwrite/blob/main/AGENT_USAGE.md#optional-artifact-review-skill)
207
+ are explicit: the skill lives in the repository, not the PyPI package, and does
208
+ not install the CLI or add a background service.
193
209
  The same CLI and importable Python APIs are available to your own automation.
194
210
 
195
211
  ## Supported formats
@@ -199,23 +215,34 @@ export, or version offered by each producer. Select the version explicitly.
199
215
 
200
216
  | Your input | Supported profile | Start here |
201
217
  | --- | --- | --- |
202
- | **goppi** | Completed baseline exchange manifest v2; separate paired-handoff route | [`audit-baseline`](AGENT_USAGE.md#audit-a-completed-goppi-baseline-as-common-evidence) for descriptive common JSON · [`project-baseline`](AGENT_USAGE.md#project-a-completed-goppi-baseline-into-event-observations) for native measurement · [`review-handoff`](AGENT_USAGE.md#review-a-completed-paired-handoff-in-one-call) |
203
- | **Langfuse** | `4.35.0` server blob exports: observations-v2 and scores JSON arrays | [`audit-langfuse`](AGENT_USAGE.md#account-for-langfuse-score-kinds-and-associations), with an optional content-minimized row index |
204
- | **DeepEval** | Ordinary TestRun JSON, `4.1.1` or `4.2.8` | [`audit-deepeval`](AGENT_USAGE.md#account-for-deepeval-scores-and-evaluator-errors) |
205
- | **Promptfoo** | Eval output JSON, `0.123.0` or `0.124.1` | [`audit-promptfoo`](AGENT_USAGE.md#source-checkout-pilot-audit-promptfoo-counts) |
206
- | **External common result** | `evidence_result.v1` JSON from a producer | [`inspect-result`](AGENT_USAGE.md#inspect-an-external-common-result) for contract screening and availability counts, with optional evidence-item `next_action` and declared metric-binding counts |
218
+ | **goppi** | Completed baseline exchange manifest v2; separate paired-handoff route | [`audit-baseline`](https://github.com/ntts9990/underwrite/blob/main/AGENT_USAGE.md#audit-a-completed-goppi-baseline-as-common-evidence) for descriptive common JSON · [`project-baseline`](https://github.com/ntts9990/underwrite/blob/main/AGENT_USAGE.md#project-a-completed-goppi-baseline-into-event-observations) for native measurement · [`review-handoff`](https://github.com/ntts9990/underwrite/blob/main/AGENT_USAGE.md#review-a-completed-paired-handoff-in-one-call) |
219
+ | **Langfuse** | `4.35.0` server blob exports: observations-v2 and scores JSON arrays | [`audit-langfuse`](https://github.com/ntts9990/underwrite/blob/main/AGENT_USAGE.md#account-for-langfuse-score-kinds-and-associations), with an optional content-minimized row index |
220
+ | **DeepEval** | Ordinary TestRun JSON, `4.1.1` or `4.2.8` | [`audit-deepeval`](https://github.com/ntts9990/underwrite/blob/main/AGENT_USAGE.md#account-for-deepeval-scores-and-evaluator-errors) |
221
+ | **Promptfoo** | Eval output JSON, `0.123.0` or `0.124.1` | [`audit-promptfoo`](https://github.com/ntts9990/underwrite/blob/main/AGENT_USAGE.md#source-checkout-pilot-audit-promptfoo-counts) |
222
+ | **External common result** | `evidence_result.v1` JSON from a producer | [`inspect-result`](https://github.com/ntts9990/underwrite/blob/main/AGENT_USAGE.md#inspect-an-external-common-result) for contract screening and availability counts, with optional evidence-item `next_action` and declared metric-binding counts |
207
223
  | **Native evidence** | `underwrite.evidence-bundle` / `v1` | `ingest` → `measure` → `accept` |
208
224
  | **Inspect AI** | `inspect.eval-log` / `0.3.263` | `ingest` |
209
225
  | **OpenInference** | `openinference.traces` / `0.1.38` | `ingest` |
210
226
  | **OTLP JSON** | `otlp-json.traces` / `0.160.0` | `ingest` |
211
227
 
228
+ For completed exports already on your machine, the installed CLI accepts them
229
+ directly; select the exact producer profile you have:
230
+
231
+ ```sh
232
+ underwrite audit-promptfoo /path/to/promptfoo-output.json --version 0.124.1 --json
233
+ underwrite audit-deepeval /path/to/deepeval-test-run.json --version 4.2.8 --json
234
+ underwrite audit-langfuse --observations /path/to/observations.json \
235
+ --scores /path/to/scores.json --json
236
+ underwrite audit-baseline --exchange /path/to/goppi-baseline-exchange --json
237
+ ```
238
+
212
239
  DeepEval accounting defaults to `4.1.1`; select `--version 4.2.8` for that
213
240
  profile. For a reusable owner-asserted metric-name pack and common descriptive
214
- JSON, see the [DeepEval binding workflow](AGENT_USAGE.md#account-for-deepeval-scores-and-evaluator-errors).
241
+ JSON, see the [DeepEval binding workflow](https://github.com/ntts9990/underwrite/blob/main/AGENT_USAGE.md#account-for-deepeval-scores-and-evaluator-errors).
215
242
  Promptfoo accounting defaults to `0.123.0`; select `--version 0.124.1`
216
243
  for that profile. Langfuse's version identifies the server export, not its SDK.
217
- See [artifact requirements](AGENT_USAGE.md#get-the-right-producer-artifact) and
218
- [producer checks](EVIDENCE_REVIEW.md) for the tested scope and fixture origins.
244
+ See [artifact requirements](https://github.com/ntts9990/underwrite/blob/main/AGENT_USAGE.md#get-the-right-producer-artifact) and
245
+ [producer checks](https://github.com/ntts9990/underwrite/blob/main/EVIDENCE_REVIEW.md) for the tested scope and fixture origins.
219
246
 
220
247
  Generic `ingest` / `project` normalizes supported exports to an observation;
221
248
  external observations do not enter the current `measure` path. goppi uses its
@@ -232,16 +259,14 @@ not executed tool calls or an agent trajectory.
232
259
  ## Keep results you can return to
233
260
 
234
261
  Use `records` when you want the analysis and its selected source bytes retained
235
- together. For example, after the source quickstart:
262
+ together. For a completed local Promptfoo export:
236
263
 
237
264
  ```sh
238
- mkdir -p output
239
- uv run --frozen --no-sync underwrite records audit-promptfoo \
240
- fixtures/examples/evidence/synthetic-promptfoo-count-mismatch.json \
241
- --root output/review-store --id demo-001 --json
265
+ underwrite records audit-promptfoo /path/to/promptfoo-output.json \
266
+ --version 0.123.0 --root ./review-store --id review-001 --json
242
267
 
243
- uv run --frozen --no-sync underwrite records read-json \
244
- --root output/review-store --id demo-001 \
268
+ underwrite records read-json \
269
+ --root ./review-store --id review-001 \
245
270
  --name analysis/accounting.json --json
246
271
  ```
247
272
 
@@ -251,11 +276,11 @@ measurement, and `records replay-measure` recalculates it from verified saved
251
276
  inputs using the current engine, without executing the original producer.
252
277
  For an exact completed goppi baseline v2 directory, `records audit-baseline`
253
278
  captures its five files and the descriptive result together in one call; see
254
- [the goppi record workflow](STORAGE.md#retain-a-completed-goppi-baseline).
279
+ [the goppi record workflow](https://github.com/ntts9990/underwrite/blob/main/STORAGE.md#retain-a-completed-goppi-baseline).
255
280
 
256
281
  Records retain raw inputs, which may contain private content. Choose a private
257
- local POSIX filesystem and a backup strategy; this checkout's ignored `output/`
258
- is a demo location, not a backup. [Storage contracts and recovery](STORAGE.md).
282
+ local POSIX filesystem and a backup strategy; `./review-store` is only an example
283
+ location, not a backup. [Storage contracts and recovery](https://github.com/ntts9990/underwrite/blob/main/STORAGE.md).
259
284
 
260
285
  ## What the result means
261
286
 
@@ -274,19 +299,41 @@ probability, and a successful command is not approval to ship.
274
299
 
275
300
  ## Install
276
301
 
277
- For the workflows on this page, use the [source quickstart](#quickstart) or
278
- matching `0.1.0` app/core wheels. `uv sync` selects the workspace
279
- `underwrite-core`; locally built wheels must pair app and core from the same
280
- checkout.
281
-
282
- <details>
283
- <summary>Install the older published PyPI 0.0.1</summary>
302
+ Install the versioned app; its dependency resolves the compatible core. Use
303
+ `underwrite --help` and `underwrite capabilities --json` to see the installed
304
+ profiles:
284
305
 
285
306
  ```sh
286
- uv tool install 'underwrite==0.0.1'
307
+ uv tool install 'underwrite==0.1.1'
287
308
  underwrite --help
309
+ underwrite capabilities --json
288
310
  ```
289
311
 
312
+ The same `uv tool install` command updates an older uv-managed installation
313
+ without `--force`. If the executable is not on `PATH`, run `uv tool update-shell`
314
+ and open a new shell.
315
+
316
+ For the importable Python API, install into a Python 3.12 environment instead:
317
+
318
+ ```sh
319
+ uv venv --python 3.12 .venv
320
+ uv pip install --python .venv/bin/python 'underwrite==0.1.1'
321
+ .venv/bin/python - <<'PY'
322
+ from pathlib import Path
323
+ from underwrite.instrument.ingest.accounting import audit_promptfoo_file
324
+
325
+ result = audit_promptfoo_file(Path("/path/to/promptfoo-output.json"), version="0.123.0")
326
+ print(result["declared_relation"])
327
+ PY
328
+ ```
329
+
330
+ The installed distributions contain runtime code and schemas. The guide,
331
+ synthetic fixtures, optional agent skill, and contributor tools live in the
332
+ GitHub repository and require a checkout if you want to run those examples.
333
+
334
+ <details>
335
+ <summary>Historical 0.0.1 and its pin-manifest caution</summary>
336
+
290
337
  The older published [app](https://pypi.org/project/underwrite/0.0.1/) and
291
338
  [core](https://pypi.org/project/underwrite-core/0.0.1/) do not include the
292
339
  `0.1.0` measurement, accounting, records, handoff, or `capabilities` workflows.
@@ -309,7 +356,7 @@ Use `underwrite <command> --help` for options. Alongside the workflows above,
309
356
  a manifest with an expected hash, `check` examines release evidence linkage,
310
357
  `absence` checks population presence, `boundary scan` checks configured verdict
311
358
  vocabulary, and `drift check` / `pins refresh` work with supplied pin registries.
312
- [JSON contracts](contracts/) define each command family's results and errors.
359
+ [JSON contracts](https://github.com/ntts9990/underwrite/tree/main/contracts/) define each command family's results and errors.
313
360
 
314
361
  Legacy `absence` and `drift check` exemption files and `boundary scan` allowlists
315
362
  are bounded to 1 MiB, 64 JSON container levels, and 1024 policy entries each.
@@ -356,21 +403,24 @@ budget, and checks the fully serialized 1 MiB manifest before its first write.
356
403
 
357
404
  ## Documentation
358
405
 
406
+ These guides and examples are on GitHub, outside the runtime wheel. The installed
407
+ package includes the schemas needed for its CLI and Python APIs.
408
+
359
409
  | Explore | Guide |
360
410
  | --- | --- |
361
- | Run from an agent, choose inputs, interpret JSON | [Agent usage](AGENT_USAGE.md) |
362
- | Compare declarations, paired evidence, and goppi handoffs | [Evidence workflows](AGENT_USAGE.md#source-checkout-pilot-compare-declarations) |
363
- | Save, verify, retrieve, and recalculate | [Local records](STORAGE.md) |
364
- | Understand producer fixtures and tested boundaries | [Producer evidence](EVIDENCE_REVIEW.md) |
365
- | Extend the CLI and pure calculation core | [Contributing](CONTRIBUTING.md) · [Architecture rules](AGENTS.md) |
411
+ | Run from an agent, choose inputs, interpret JSON | [Agent usage](https://github.com/ntts9990/underwrite/blob/main/AGENT_USAGE.md) |
412
+ | Compare declarations, paired evidence, and goppi handoffs | [Evidence workflows](https://github.com/ntts9990/underwrite/blob/main/AGENT_USAGE.md#source-checkout-pilot-compare-declarations) |
413
+ | Save, verify, retrieve, and recalculate | [Local records](https://github.com/ntts9990/underwrite/blob/main/STORAGE.md) |
414
+ | Understand producer fixtures and tested boundaries | [Producer evidence](https://github.com/ntts9990/underwrite/blob/main/EVIDENCE_REVIEW.md) |
415
+ | Extend the CLI and pure calculation core | [Contributing](https://github.com/ntts9990/underwrite/blob/main/CONTRIBUTING.md) · [Architecture rules](https://github.com/ntts9990/underwrite/blob/main/AGENTS.md) |
366
416
 
367
417
  ## Contributing
368
418
 
369
419
  Bring a reproducible artifact, a concrete workflow, or a fix.
370
420
  [Open an issue](https://github.com/ntts9990/underwrite/issues) with the producer
371
421
  version and expected result; share only sanitized examples. See
372
- [CONTRIBUTING.md](CONTRIBUTING.md) for local preflight and PR checks, and
373
- [SECURITY.md](SECURITY.md) for private vulnerability reports.
422
+ [CONTRIBUTING.md](https://github.com/ntts9990/underwrite/blob/main/CONTRIBUTING.md) for local preflight and PR checks, and
423
+ [SECURITY.md](https://github.com/ntts9990/underwrite/blob/main/SECURITY.md) for private vulnerability reports.
374
424
 
375
425
  <details>
376
426
  <summary>Maintainers: future PyPI releases</summary>
@@ -392,5 +442,5 @@ and [PyPI Trusted Publisher guide](https://docs.pypi.org/trusted-publishers/usin
392
442
 
393
443
  ## License
394
444
 
395
- [Apache-2.0](LICENSE). [LICENSING.md](LICENSING.md) records the adapted policy
445
+ [Apache-2.0](https://github.com/ntts9990/underwrite/blob/main/LICENSE). [LICENSING.md](https://github.com/ntts9990/underwrite/blob/main/LICENSING.md) records the adapted policy
396
446
  templates' CC licenses.