contexta 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 (305) hide show
  1. contexta-0.1.1/.gitignore +15 -0
  2. contexta-0.1.1/CONTRIBUTING.md +337 -0
  3. contexta-0.1.1/LICENSE +21 -0
  4. contexta-0.1.1/PKG-INFO +234 -0
  5. contexta-0.1.1/README.md +185 -0
  6. contexta-0.1.1/SECURITY.md +60 -0
  7. contexta-0.1.1/docs/faq.md +71 -0
  8. contexta-0.1.1/docs/index.md +160 -0
  9. contexta-0.1.1/docs/ko/SECURITY.md +55 -0
  10. contexta-0.1.1/docs/ko/faq.md +71 -0
  11. contexta-0.1.1/docs/ko/index.md +154 -0
  12. contexta-0.1.1/docs/ko/operations.md +165 -0
  13. contexta-0.1.1/docs/ko/reference/api-reference.md +3178 -0
  14. contexta-0.1.1/docs/ko/reference/cli-reference.md +382 -0
  15. contexta-0.1.1/docs/ko/reference/http-reference.md +641 -0
  16. contexta-0.1.1/docs/ko/user-guide/adapters.md +172 -0
  17. contexta-0.1.1/docs/ko/user-guide/advanced.md +219 -0
  18. contexta-0.1.1/docs/ko/user-guide/batch-sample-deployment.md +199 -0
  19. contexta-0.1.1/docs/ko/user-guide/case-studies.md +585 -0
  20. contexta-0.1.1/docs/ko/user-guide/common-workflows.md +218 -0
  21. contexta-0.1.1/docs/ko/user-guide/core-concepts.md +330 -0
  22. contexta-0.1.1/docs/ko/user-guide/getting-started.md +136 -0
  23. contexta-0.1.1/docs/ko/user-guide/index.md +175 -0
  24. contexta-0.1.1/docs/ko/user-guide/key-features.md +139 -0
  25. contexta-0.1.1/docs/ko/user-guide/notebook.md +123 -0
  26. contexta-0.1.1/docs/ko/user-guide/testing.md +180 -0
  27. contexta-0.1.1/docs/ko/user-guide/tools-and-surfaces.md +267 -0
  28. contexta-0.1.1/docs/ko/what-is-ml-observability.md +916 -0
  29. contexta-0.1.1/docs/operations.md +165 -0
  30. contexta-0.1.1/docs/reference/api-reference.md +3344 -0
  31. contexta-0.1.1/docs/reference/cli-reference.md +383 -0
  32. contexta-0.1.1/docs/reference/http-reference.md +641 -0
  33. contexta-0.1.1/docs/user-guide/adapters.md +190 -0
  34. contexta-0.1.1/docs/user-guide/advanced.md +219 -0
  35. contexta-0.1.1/docs/user-guide/batch-sample-deployment.md +199 -0
  36. contexta-0.1.1/docs/user-guide/case-studies.md +675 -0
  37. contexta-0.1.1/docs/user-guide/common-workflows.md +218 -0
  38. contexta-0.1.1/docs/user-guide/core-concepts.md +332 -0
  39. contexta-0.1.1/docs/user-guide/getting-started.md +136 -0
  40. contexta-0.1.1/docs/user-guide/index.md +175 -0
  41. contexta-0.1.1/docs/user-guide/key-features.md +139 -0
  42. contexta-0.1.1/docs/user-guide/notebook.md +126 -0
  43. contexta-0.1.1/docs/user-guide/testing.md +180 -0
  44. contexta-0.1.1/docs/user-guide/tools-and-surfaces.md +267 -0
  45. contexta-0.1.1/docs/what-is-ml-observability.md +1323 -0
  46. contexta-0.1.1/examples/adapters/README.md +62 -0
  47. contexta-0.1.1/examples/adapters/mlflow_sink_demo.py +167 -0
  48. contexta-0.1.1/examples/adapters/otel_sink_demo.py +171 -0
  49. contexta-0.1.1/examples/adapters/stdout_sink_demo.py +99 -0
  50. contexta-0.1.1/examples/batch_sample/README.md +43 -0
  51. contexta-0.1.1/examples/batch_sample/batch_sample_demo.py +188 -0
  52. contexta-0.1.1/examples/case_studies/README.md +83 -0
  53. contexta-0.1.1/examples/case_studies/case01_scattered_experiments.py +297 -0
  54. contexta-0.1.1/examples/case_studies/case02_performance_regression.py +303 -0
  55. contexta-0.1.1/examples/case_studies/case03_silent_pipeline_failure.py +375 -0
  56. contexta-0.1.1/examples/case_studies/case04_deployment_traceability.py +385 -0
  57. contexta-0.1.1/examples/case_studies/case05_deployment_gate.py +286 -0
  58. contexta-0.1.1/examples/case_studies/case06_compliance_audit.py +325 -0
  59. contexta-0.1.1/examples/case_studies/case07_batch_job_monitoring.py +369 -0
  60. contexta-0.1.1/examples/case_studies/case08_upstream_contamination.py +331 -0
  61. contexta-0.1.1/examples/case_studies/case09_llm_per_prompt_evaluation.py +295 -0
  62. contexta-0.1.1/examples/case_studies/case10_rag_pipeline_decomposition.py +353 -0
  63. contexta-0.1.1/examples/case_studies/case11_project_history_onboarding.py +303 -0
  64. contexta-0.1.1/examples/case_studies/case12_delivery_quality_certificate.py +332 -0
  65. contexta-0.1.1/examples/pyproject.toml +29 -0
  66. contexta-0.1.1/examples/quickstart/.contexta/cnn-image-clf/metadata/ledger.db +0 -0
  67. contexta-0.1.1/examples/quickstart/.contexta/cnn-image-clf/records/indexes/record_type/degraded.jsonl +1 -0
  68. contexta-0.1.1/examples/quickstart/.contexta/cnn-image-clf/records/indexes/record_type/event.jsonl +2 -0
  69. contexta-0.1.1/examples/quickstart/.contexta/cnn-image-clf/records/indexes/record_type/metric.jsonl +72 -0
  70. contexta-0.1.1/examples/quickstart/.contexta/cnn-image-clf/records/indexes/run_ref/run__cnn-image-clf.cnn-v1.jsonl +75 -0
  71. contexta-0.1.1/examples/quickstart/.contexta/cnn-image-clf/records/indexes/stage_execution_ref/stage__cnn-image-clf.cnn-v1.evaluate.jsonl +4 -0
  72. contexta-0.1.1/examples/quickstart/.contexta/cnn-image-clf/records/indexes/stage_execution_ref/stage__cnn-image-clf.cnn-v1.preprocess.jsonl +2 -0
  73. contexta-0.1.1/examples/quickstart/.contexta/cnn-image-clf/records/indexes/stage_execution_ref/stage__cnn-image-clf.cnn-v1.train.jsonl +69 -0
  74. contexta-0.1.1/examples/quickstart/.contexta/cnn-image-clf/records/manifest.json +8 -0
  75. contexta-0.1.1/examples/quickstart/.contexta/cnn-image-clf/records/segments/segment-000001.jsonl +75 -0
  76. contexta-0.1.1/examples/quickstart/.contexta/wine-quality-clf/metadata/ledger.db +0 -0
  77. contexta-0.1.1/examples/quickstart/.contexta/wine-quality-clf/records/indexes/record_type/event.jsonl +2 -0
  78. contexta-0.1.1/examples/quickstart/.contexta/wine-quality-clf/records/indexes/record_type/metric.jsonl +20 -0
  79. contexta-0.1.1/examples/quickstart/.contexta/wine-quality-clf/records/indexes/run_ref/run__wine-quality-clf.rf-experiment.jsonl +11 -0
  80. contexta-0.1.1/examples/quickstart/.contexta/wine-quality-clf/records/indexes/run_ref/run__wine-quality-clf.svm-baseline.jsonl +11 -0
  81. contexta-0.1.1/examples/quickstart/.contexta/wine-quality-clf/records/indexes/stage_execution_ref/stage__wine-quality-clf.rf-experiment.evaluate.jsonl +4 -0
  82. contexta-0.1.1/examples/quickstart/.contexta/wine-quality-clf/records/indexes/stage_execution_ref/stage__wine-quality-clf.rf-experiment.preprocess.jsonl +1 -0
  83. contexta-0.1.1/examples/quickstart/.contexta/wine-quality-clf/records/indexes/stage_execution_ref/stage__wine-quality-clf.rf-experiment.train.jsonl +6 -0
  84. contexta-0.1.1/examples/quickstart/.contexta/wine-quality-clf/records/indexes/stage_execution_ref/stage__wine-quality-clf.svm-baseline.evaluate.jsonl +4 -0
  85. contexta-0.1.1/examples/quickstart/.contexta/wine-quality-clf/records/indexes/stage_execution_ref/stage__wine-quality-clf.svm-baseline.preprocess.jsonl +1 -0
  86. contexta-0.1.1/examples/quickstart/.contexta/wine-quality-clf/records/indexes/stage_execution_ref/stage__wine-quality-clf.svm-baseline.train.jsonl +6 -0
  87. contexta-0.1.1/examples/quickstart/.contexta/wine-quality-clf/records/manifest.json +8 -0
  88. contexta-0.1.1/examples/quickstart/.contexta/wine-quality-clf/records/segments/segment-000001.jsonl +22 -0
  89. contexta-0.1.1/examples/quickstart/README.md +174 -0
  90. contexta-0.1.1/examples/quickstart/qs01_sklearn_tabular.py +389 -0
  91. contexta-0.1.1/examples/quickstart/qs02_pytorch_cnn.py +472 -0
  92. contexta-0.1.1/examples/quickstart/qs03_bert_finetuning.py +531 -0
  93. contexta-0.1.1/examples/quickstart/qs04_llm_evaluation.py +519 -0
  94. contexta-0.1.1/examples/quickstart/runtime_capture_preview.py +75 -0
  95. contexta-0.1.1/examples/quickstart/verified_quickstart.py +129 -0
  96. contexta-0.1.1/examples/recovery/README.md +58 -0
  97. contexta-0.1.1/examples/recovery/artifact_transfer_demo.py +67 -0
  98. contexta-0.1.1/examples/recovery/backup_restore_verify.py +124 -0
  99. contexta-0.1.1/examples/recovery/replay_outbox_demo.py +76 -0
  100. contexta-0.1.1/pyproject.toml +117 -0
  101. contexta-0.1.1/src/contexta/__init__.py +6 -0
  102. contexta-0.1.1/src/contexta/__main__.py +7 -0
  103. contexta-0.1.1/src/contexta/adapters/__init__.py +17 -0
  104. contexta-0.1.1/src/contexta/adapters/dataframes/__init__.py +9 -0
  105. contexta-0.1.1/src/contexta/adapters/export/__init__.py +21 -0
  106. contexta-0.1.1/src/contexta/adapters/html/__init__.py +29 -0
  107. contexta-0.1.1/src/contexta/adapters/mlflow/__init__.py +12 -0
  108. contexta-0.1.1/src/contexta/adapters/mlflow/_sink.py +179 -0
  109. contexta-0.1.1/src/contexta/adapters/notebook/__init__.py +29 -0
  110. contexta-0.1.1/src/contexta/adapters/otel/__init__.py +12 -0
  111. contexta-0.1.1/src/contexta/adapters/otel/_sink.py +272 -0
  112. contexta-0.1.1/src/contexta/api/__init__.py +5 -0
  113. contexta-0.1.1/src/contexta/api/client.py +612 -0
  114. contexta-0.1.1/src/contexta/capture/__init__.py +32 -0
  115. contexta-0.1.1/src/contexta/capture/_service_utils.py +142 -0
  116. contexta-0.1.1/src/contexta/capture/artifacts.py +325 -0
  117. contexta-0.1.1/src/contexta/capture/dispatch.py +316 -0
  118. contexta-0.1.1/src/contexta/capture/events.py +104 -0
  119. contexta-0.1.1/src/contexta/capture/metrics.py +114 -0
  120. contexta-0.1.1/src/contexta/capture/models.py +389 -0
  121. contexta-0.1.1/src/contexta/capture/results.py +518 -0
  122. contexta-0.1.1/src/contexta/capture/sinks/__init__.py +20 -0
  123. contexta-0.1.1/src/contexta/capture/sinks/composite.py +114 -0
  124. contexta-0.1.1/src/contexta/capture/sinks/local.py +70 -0
  125. contexta-0.1.1/src/contexta/capture/sinks/memory.py +72 -0
  126. contexta-0.1.1/src/contexta/capture/sinks/protocol.py +212 -0
  127. contexta-0.1.1/src/contexta/capture/sinks/stdout.py +56 -0
  128. contexta-0.1.1/src/contexta/capture/traces.py +124 -0
  129. contexta-0.1.1/src/contexta/common/__init__.py +3 -0
  130. contexta-0.1.1/src/contexta/common/errors.py +172 -0
  131. contexta-0.1.1/src/contexta/common/io.py +132 -0
  132. contexta-0.1.1/src/contexta/common/results.py +296 -0
  133. contexta-0.1.1/src/contexta/common/time.py +49 -0
  134. contexta-0.1.1/src/contexta/config/__init__.py +89 -0
  135. contexta-0.1.1/src/contexta/config/bootstrap.py +63 -0
  136. contexta-0.1.1/src/contexta/config/env.py +239 -0
  137. contexta-0.1.1/src/contexta/config/loader.py +374 -0
  138. contexta-0.1.1/src/contexta/config/models.py +660 -0
  139. contexta-0.1.1/src/contexta/contract/__init__.py +149 -0
  140. contexta-0.1.1/src/contexta/contract/extensions.py +233 -0
  141. contexta-0.1.1/src/contexta/contract/models/__init__.py +86 -0
  142. contexta-0.1.1/src/contexta/contract/models/artifacts.py +268 -0
  143. contexta-0.1.1/src/contexta/contract/models/context.py +903 -0
  144. contexta-0.1.1/src/contexta/contract/models/lineage.py +210 -0
  145. contexta-0.1.1/src/contexta/contract/models/records.py +671 -0
  146. contexta-0.1.1/src/contexta/contract/refs.py +224 -0
  147. contexta-0.1.1/src/contexta/contract/registry.py +313 -0
  148. contexta-0.1.1/src/contexta/contract/serialization/__init__.py +57 -0
  149. contexta-0.1.1/src/contexta/contract/serialization/canonical.py +509 -0
  150. contexta-0.1.1/src/contexta/contract/validation/__init__.py +45 -0
  151. contexta-0.1.1/src/contexta/contract/validation/core.py +449 -0
  152. contexta-0.1.1/src/contexta/contract/validation/report.py +149 -0
  153. contexta-0.1.1/src/contexta/interpretation/__init__.py +178 -0
  154. contexta-0.1.1/src/contexta/interpretation/aggregation/__init__.py +14 -0
  155. contexta-0.1.1/src/contexta/interpretation/aggregation/models.py +85 -0
  156. contexta-0.1.1/src/contexta/interpretation/aggregation/service.py +208 -0
  157. contexta-0.1.1/src/contexta/interpretation/alert/__init__.py +12 -0
  158. contexta-0.1.1/src/contexta/interpretation/alert/models.py +52 -0
  159. contexta-0.1.1/src/contexta/interpretation/alert/service.py +162 -0
  160. contexta-0.1.1/src/contexta/interpretation/anomaly/__init__.py +12 -0
  161. contexta-0.1.1/src/contexta/interpretation/anomaly/models.py +37 -0
  162. contexta-0.1.1/src/contexta/interpretation/anomaly/service.py +266 -0
  163. contexta-0.1.1/src/contexta/interpretation/compare/__init__.py +33 -0
  164. contexta-0.1.1/src/contexta/interpretation/compare/models.py +176 -0
  165. contexta-0.1.1/src/contexta/interpretation/compare/service.py +555 -0
  166. contexta-0.1.1/src/contexta/interpretation/diagnostics/__init__.py +12 -0
  167. contexta-0.1.1/src/contexta/interpretation/diagnostics/models.py +46 -0
  168. contexta-0.1.1/src/contexta/interpretation/diagnostics/service.py +181 -0
  169. contexta-0.1.1/src/contexta/interpretation/lineage/__init__.py +12 -0
  170. contexta-0.1.1/src/contexta/interpretation/lineage/models.py +43 -0
  171. contexta-0.1.1/src/contexta/interpretation/lineage/service.py +194 -0
  172. contexta-0.1.1/src/contexta/interpretation/protocols.py +68 -0
  173. contexta-0.1.1/src/contexta/interpretation/provenance/__init__.py +12 -0
  174. contexta-0.1.1/src/contexta/interpretation/provenance/models.py +69 -0
  175. contexta-0.1.1/src/contexta/interpretation/provenance/service.py +211 -0
  176. contexta-0.1.1/src/contexta/interpretation/query/__init__.py +14 -0
  177. contexta-0.1.1/src/contexta/interpretation/query/filters.py +96 -0
  178. contexta-0.1.1/src/contexta/interpretation/query/models.py +53 -0
  179. contexta-0.1.1/src/contexta/interpretation/query/service.py +286 -0
  180. contexta-0.1.1/src/contexta/interpretation/reports/__init__.py +12 -0
  181. contexta-0.1.1/src/contexta/interpretation/reports/builder.py +303 -0
  182. contexta-0.1.1/src/contexta/interpretation/reports/models.py +106 -0
  183. contexta-0.1.1/src/contexta/interpretation/repositories/__init__.py +27 -0
  184. contexta-0.1.1/src/contexta/interpretation/repositories/composite.py +541 -0
  185. contexta-0.1.1/src/contexta/interpretation/trend/__init__.py +27 -0
  186. contexta-0.1.1/src/contexta/interpretation/trend/models.py +108 -0
  187. contexta-0.1.1/src/contexta/interpretation/trend/service.py +290 -0
  188. contexta-0.1.1/src/contexta/notebook/__init__.py +23 -0
  189. contexta-0.1.1/src/contexta/recovery/__init__.py +34 -0
  190. contexta-0.1.1/src/contexta/recovery/backup.py +151 -0
  191. contexta-0.1.1/src/contexta/recovery/models.py +256 -0
  192. contexta-0.1.1/src/contexta/recovery/replay.py +185 -0
  193. contexta-0.1.1/src/contexta/recovery/restore.py +140 -0
  194. contexta-0.1.1/src/contexta/runtime/__init__.py +5 -0
  195. contexta-0.1.1/src/contexta/runtime/scopes.py +560 -0
  196. contexta-0.1.1/src/contexta/runtime/session.py +1090 -0
  197. contexta-0.1.1/src/contexta/store/__init__.py +10 -0
  198. contexta-0.1.1/src/contexta/store/artifacts/__init__.py +89 -0
  199. contexta-0.1.1/src/contexta/store/artifacts/config.py +194 -0
  200. contexta-0.1.1/src/contexta/store/artifacts/export.py +84 -0
  201. contexta-0.1.1/src/contexta/store/artifacts/importing.py +212 -0
  202. contexta-0.1.1/src/contexta/store/artifacts/ingest.py +106 -0
  203. contexta-0.1.1/src/contexta/store/artifacts/models.py +411 -0
  204. contexta-0.1.1/src/contexta/store/artifacts/read.py +92 -0
  205. contexta-0.1.1/src/contexta/store/artifacts/repair.py +206 -0
  206. contexta-0.1.1/src/contexta/store/artifacts/retention.py +41 -0
  207. contexta-0.1.1/src/contexta/store/artifacts/verify.py +219 -0
  208. contexta-0.1.1/src/contexta/store/artifacts/write.py +661 -0
  209. contexta-0.1.1/src/contexta/store/metadata/__init__.py +56 -0
  210. contexta-0.1.1/src/contexta/store/metadata/adapters/__init__.py +6 -0
  211. contexta-0.1.1/src/contexta/store/metadata/adapters/frame.py +66 -0
  212. contexta-0.1.1/src/contexta/store/metadata/adapters/sql.py +40 -0
  213. contexta-0.1.1/src/contexta/store/metadata/config.py +139 -0
  214. contexta-0.1.1/src/contexta/store/metadata/integrity/__init__.py +15 -0
  215. contexta-0.1.1/src/contexta/store/metadata/integrity/repair.py +90 -0
  216. contexta-0.1.1/src/contexta/store/metadata/integrity/report.py +210 -0
  217. contexta-0.1.1/src/contexta/store/metadata/migrations/__init__.py +31 -0
  218. contexta-0.1.1/src/contexta/store/metadata/migrations/models.py +99 -0
  219. contexta-0.1.1/src/contexta/store/metadata/migrations/runner.py +334 -0
  220. contexta-0.1.1/src/contexta/store/metadata/repositories/__init__.py +23 -0
  221. contexta-0.1.1/src/contexta/store/metadata/repositories/_base.py +72 -0
  222. contexta-0.1.1/src/contexta/store/metadata/repositories/batches.py +79 -0
  223. contexta-0.1.1/src/contexta/store/metadata/repositories/deployments.py +80 -0
  224. contexta-0.1.1/src/contexta/store/metadata/repositories/environments.py +52 -0
  225. contexta-0.1.1/src/contexta/store/metadata/repositories/projects.py +40 -0
  226. contexta-0.1.1/src/contexta/store/metadata/repositories/provenance.py +58 -0
  227. contexta-0.1.1/src/contexta/store/metadata/repositories/relations.py +80 -0
  228. contexta-0.1.1/src/contexta/store/metadata/repositories/runs.py +56 -0
  229. contexta-0.1.1/src/contexta/store/metadata/repositories/samples.py +94 -0
  230. contexta-0.1.1/src/contexta/store/metadata/repositories/stages.py +55 -0
  231. contexta-0.1.1/src/contexta/store/metadata/snapshots.py +119 -0
  232. contexta-0.1.1/src/contexta/store/metadata/store.py +465 -0
  233. contexta-0.1.1/src/contexta/store/records/__init__.py +47 -0
  234. contexta-0.1.1/src/contexta/store/records/config.py +190 -0
  235. contexta-0.1.1/src/contexta/store/records/export.py +33 -0
  236. contexta-0.1.1/src/contexta/store/records/integrity.py +142 -0
  237. contexta-0.1.1/src/contexta/store/records/models.py +372 -0
  238. contexta-0.1.1/src/contexta/store/records/read.py +131 -0
  239. contexta-0.1.1/src/contexta/store/records/repair.py +171 -0
  240. contexta-0.1.1/src/contexta/store/records/replay.py +182 -0
  241. contexta-0.1.1/src/contexta/store/records/write.py +455 -0
  242. contexta-0.1.1/src/contexta/surfaces/__init__.py +8 -0
  243. contexta-0.1.1/src/contexta/surfaces/cli/__init__.py +5 -0
  244. contexta-0.1.1/src/contexta/surfaces/cli/main.py +846 -0
  245. contexta-0.1.1/src/contexta/surfaces/export/__init__.py +15 -0
  246. contexta-0.1.1/src/contexta/surfaces/export/csv.py +155 -0
  247. contexta-0.1.1/src/contexta/surfaces/html/__init__.py +21 -0
  248. contexta-0.1.1/src/contexta/surfaces/html/charts.py +67 -0
  249. contexta-0.1.1/src/contexta/surfaces/html/renderer.py +376 -0
  250. contexta-0.1.1/src/contexta/surfaces/html/templates.py +158 -0
  251. contexta-0.1.1/src/contexta/surfaces/http/__init__.py +21 -0
  252. contexta-0.1.1/src/contexta/surfaces/http/serializers.py +139 -0
  253. contexta-0.1.1/src/contexta/surfaces/http/server.py +476 -0
  254. contexta-0.1.1/src/contexta/surfaces/notebook/__init__.py +23 -0
  255. contexta-0.1.1/src/contexta/surfaces/notebook/rendering.py +377 -0
  256. contexta-0.1.1/src/contexta/surfaces/notebook/surface.py +81 -0
  257. contexta-0.1.1/tests/__init__.py +0 -0
  258. contexta-0.1.1/tests/adapters/test_imports.py +214 -0
  259. contexta-0.1.1/tests/adapters/test_mlflow_sink.py +402 -0
  260. contexta-0.1.1/tests/adapters/test_otel_sink.py +567 -0
  261. contexta-0.1.1/tests/api/__init__.py +0 -0
  262. contexta-0.1.1/tests/api/test_facade.py +204 -0
  263. contexta-0.1.1/tests/capture/__init__.py +0 -0
  264. contexta-0.1.1/tests/capture/test_event_metric.py +194 -0
  265. contexta-0.1.1/tests/capture/test_span_artifact.py +161 -0
  266. contexta-0.1.1/tests/conftest.py +328 -0
  267. contexta-0.1.1/tests/contract/__init__.py +0 -0
  268. contexta-0.1.1/tests/contract/test_artifact_models.py +228 -0
  269. contexta-0.1.1/tests/contract/test_context_models.py +392 -0
  270. contexta-0.1.1/tests/contract/test_record_models.py +276 -0
  271. contexta-0.1.1/tests/contract/test_refs.py +198 -0
  272. contexta-0.1.1/tests/contract/test_serialization.py +171 -0
  273. contexta-0.1.1/tests/contract/test_validation.py +223 -0
  274. contexta-0.1.1/tests/e2e/__init__.py +0 -0
  275. contexta-0.1.1/tests/e2e/test_capture_to_report.py +338 -0
  276. contexta-0.1.1/tests/e2e/test_quickstart_examples.py +47 -0
  277. contexta-0.1.1/tests/e2e/test_recovery_examples.py +45 -0
  278. contexta-0.1.1/tests/interpretation/__init__.py +0 -0
  279. contexta-0.1.1/tests/interpretation/conftest.py +274 -0
  280. contexta-0.1.1/tests/interpretation/test_diagnostics_lineage.py +199 -0
  281. contexta-0.1.1/tests/interpretation/test_query_compare.py +180 -0
  282. contexta-0.1.1/tests/interpretation/test_reports_surfaces.py +268 -0
  283. contexta-0.1.1/tests/interpretation/test_trend_anomaly.py +143 -0
  284. contexta-0.1.1/tests/notebook/test_smoke.py +109 -0
  285. contexta-0.1.1/tests/notebook/test_surface.py +77 -0
  286. contexta-0.1.1/tests/recovery/__init__.py +0 -0
  287. contexta-0.1.1/tests/recovery/test_backup_restore.py +244 -0
  288. contexta-0.1.1/tests/recovery/test_replay.py +152 -0
  289. contexta-0.1.1/tests/runtime/__init__.py +0 -0
  290. contexta-0.1.1/tests/runtime/test_scopes.py +307 -0
  291. contexta-0.1.1/tests/store/__init__.py +0 -0
  292. contexta-0.1.1/tests/store/artifacts/__init__.py +0 -0
  293. contexta-0.1.1/tests/store/artifacts/test_verify_transfer.py +158 -0
  294. contexta-0.1.1/tests/store/artifacts/test_write_read.py +153 -0
  295. contexta-0.1.1/tests/store/metadata/__init__.py +0 -0
  296. contexta-0.1.1/tests/store/metadata/test_integrity_migration.py +120 -0
  297. contexta-0.1.1/tests/store/metadata/test_repositories.py +391 -0
  298. contexta-0.1.1/tests/store/records/__init__.py +0 -0
  299. contexta-0.1.1/tests/store/records/test_append_replay.py +156 -0
  300. contexta-0.1.1/tests/store/records/test_integrity_repair.py +116 -0
  301. contexta-0.1.1/tests/surfaces/__init__.py +0 -0
  302. contexta-0.1.1/tests/surfaces/test_cli_maintenance.py +216 -0
  303. contexta-0.1.1/tests/surfaces/test_cli_query.py +199 -0
  304. contexta-0.1.1/tests/surfaces/test_http_json.py +252 -0
  305. contexta-0.1.1/tests/surfaces/test_http_ui.py +198 -0
@@ -0,0 +1,15 @@
1
+ # Python-generated files
2
+ __pycache__/
3
+ *.py[oc]
4
+ build/
5
+ dist/
6
+ wheels/
7
+ *.egg-info
8
+
9
+ # Virtual environments
10
+ .venv
11
+
12
+ # Local-only internal ops docs
13
+ OpsDoc/
14
+ .claude
15
+ .codex-meeting
@@ -0,0 +1,337 @@
1
+ # Contributing To Contexta
2
+
3
+ This guide explains how to work on `Contexta` in the current repository.
4
+
5
+ The most important rule is simple:
6
+
7
+ - contribute against the documented public product surface
8
+ - avoid turning internal implementation paths into accidental public contracts
9
+
10
+ ## Development Setup
11
+
12
+ Clone the repository and install the development environment:
13
+
14
+ ```powershell
15
+ uv sync --dev
16
+ ```
17
+
18
+ For ad-hoc local scripts and public examples in the source tree, use:
19
+
20
+ ```powershell
21
+ $env:PYTHONPATH = "src"
22
+ ```
23
+
24
+ Current prototype note:
25
+
26
+ - canonical public docs, package metadata, and CLI naming now use `Contexta` / `contexta`
27
+
28
+ ## Repository Layout
29
+
30
+ Key areas:
31
+
32
+ - `src/contexta/`
33
+ - product code
34
+ - `tests/`
35
+ - repository test suites
36
+ - `docs/`
37
+ - public documentation
38
+ - `examples/`
39
+ - executable public examples
40
+ ## Public Boundary Rules
41
+
42
+ Safe public targets for docs, examples, and new user-facing code:
43
+
44
+ - `contexta`
45
+ - `contexta.config`
46
+ - `contexta.contract`
47
+ - `contexta.capture`
48
+ - `contexta.store.metadata`
49
+ - `contexta.store.records`
50
+ - `contexta.store.artifacts`
51
+ - `contexta.interpretation`
52
+ - `contexta.recovery`
53
+
54
+ Do not introduce new examples or docs that anchor on:
55
+
56
+ - `contexta.api`
57
+ - `contexta.runtime`
58
+ - `contexta.common`
59
+ - `contexta.surfaces`
60
+
61
+ Those modules exist, but they are not the public contract we want contributors to normalize.
62
+
63
+ ## Documentation Rules
64
+
65
+ When editing public docs:
66
+
67
+ - use canonical product names first
68
+ - prefer task-oriented guidance over internal architecture narration
69
+ - point to executable examples whenever possible
70
+ - avoid promising behavior that is not already implemented or tested
71
+
72
+ Public docs should describe:
73
+
74
+ - stable product usage
75
+ - current prototype caveats when they matter
76
+
77
+ Public docs should not expose:
78
+
79
+ - WBS progress
80
+ - internal scratch notes
81
+ - accidental internal import paths as if they were supported APIs
82
+
83
+ ## Example Rules
84
+
85
+ Examples in `examples/` are part of the public documentation surface.
86
+
87
+ That means they should:
88
+
89
+ - use public imports only
90
+ - run from a normal repository checkout
91
+ - match the docs that point to them
92
+ - have regression coverage when practical
93
+
94
+ If you change:
95
+
96
+ - `examples/quickstart/`
97
+ - rerun `uv run pytest tests/e2e/test_quickstart_examples.py -q`
98
+ - `examples/recovery/`
99
+ - rerun `uv run pytest tests/e2e/test_recovery_examples.py -q`
100
+
101
+ ## Testing
102
+
103
+ The project uses `pytest`.
104
+
105
+ Broad validation:
106
+
107
+ ```powershell
108
+ uv run pytest -q
109
+ ```
110
+
111
+ Smaller targeted suites you will likely use often:
112
+
113
+ ```powershell
114
+ uv run pytest tests/e2e/test_quickstart_examples.py -q
115
+ uv run pytest tests/e2e/test_recovery_examples.py -q
116
+ uv run pytest tests/e2e/test_capture_to_report.py -q
117
+ ```
118
+
119
+ When choosing tests:
120
+
121
+ - run the smallest suite that proves your change
122
+ - expand to broader suites when public behavior moved
123
+ - keep examples and docs tied to executable evidence
124
+
125
+ ## Code And Change Style
126
+
127
+ When making code changes:
128
+
129
+ - preserve canonical naming in public-facing code paths
130
+ - prefer explicit, typed models over loose ad-hoc payload handling
131
+ - respect the separation between metadata, records, and artifacts as truth-owning planes
132
+ - keep recovery flows explicit about warnings, degradation, and loss notes
133
+
134
+ When making documentation changes:
135
+
136
+ - keep wording honest about prototype limitations
137
+ - update hubs and entry pages when new docs appear
138
+ - avoid leaving “planned” language behind once a page exists
139
+
140
+ ## Submitting Changes
141
+
142
+ Before you consider a change ready:
143
+
144
+ - confirm the changed docs or examples still match reality
145
+ - run the nearest relevant test suite
146
+ - check that new public examples avoid internal imports
147
+ - update adjacent navigation pages when you add a new public document
148
+
149
+ If you touch public behavior, consider whether these also need updates:
150
+
151
+ - `README.md`
152
+ - `docs/index.md`
153
+ - `docs/user-guide/index.md`
154
+ - reference pages
155
+ - examples
156
+
157
+ ## Versioning Policy
158
+
159
+ Contexta uses [Semantic Versioning](https://semver.org) with PEP 440 pre-release identifiers.
160
+
161
+ **Single source of truth:** `[project].version` in `pyproject.toml`.
162
+ `contexta.__version__` reads this at runtime via `importlib.metadata` — do not duplicate it.
163
+
164
+ ### Version scheme
165
+
166
+ | Version form | When to use |
167
+ |---|---|
168
+ | `0.MINOR.PATCH` | Current pre-1.0 series |
169
+ | `0.MINOR.0` | New public API surface; may include breaking changes (pre-1.0 convention) |
170
+ | `0.x.PATCH` | Bug fixes only, no breaking changes |
171
+ | `1.0.0` | Stable public API contract — requires full REL sign-off |
172
+
173
+ ### Pre-release identifiers (PEP 440)
174
+
175
+ | Identifier | Example | Use for |
176
+ |---|---|---|
177
+ | alpha | `0.2.0a1` | Early preview, incomplete features |
178
+ | beta | `0.2.0b1` | Feature complete, stabilizing |
179
+ | rc | `0.2.0rc1` | Release candidate, final validation |
180
+
181
+ ### Bumping the version
182
+
183
+ Use `uv version` to update `pyproject.toml` in one command:
184
+
185
+ ```powershell
186
+ uv version --bump patch # 0.1.0 -> 0.1.1
187
+ uv version --bump minor # 0.1.0 -> 0.2.0
188
+ uv version --bump minor --bump rc # 0.1.0 -> 0.2.0rc1
189
+ uv version 0.2.0 # set explicitly
190
+ ```
191
+
192
+ After bumping:
193
+
194
+ ```powershell
195
+ git add pyproject.toml
196
+ git commit -m "chore: bump version to $(uv version --short)"
197
+ git tag "v$(uv version --short)"
198
+ ```
199
+
200
+ ### Git tag convention
201
+
202
+ Tags use a `v` prefix: `v0.1.0`, `v0.2.0rc1`.
203
+ The release workflow (REL-026) triggers on `v*` tag pushes.
204
+
205
+ ## Release Process
206
+
207
+ This section describes how to cut a release. Steps 1–5 are the pre-release gate; steps 6–8 are the actual publish.
208
+
209
+ ### 1. Confirm the release gate passes
210
+
211
+ ```powershell
212
+ uv run pytest --tb=short -q
213
+ ```
214
+
215
+ All tests must pass (0 failures). Also confirm CI is green on `main`.
216
+
217
+ ### 2. Bump the version
218
+
219
+ ```powershell
220
+ uv version --bump minor # new features
221
+ uv version --bump patch # bug fixes only
222
+ uv version --bump minor --bump rc # release candidate
223
+ ```
224
+
225
+ Verify the bump:
226
+
227
+ ```powershell
228
+ uv version --short # prints the new version
229
+ ```
230
+
231
+ ### 3. Build and verify distributions
232
+
233
+ ```powershell
234
+ uv build
235
+ ```
236
+
237
+ Spot-check the wheel in a clean environment:
238
+
239
+ ```powershell
240
+ uv venv /tmp/ctx-release-check
241
+ /tmp/ctx-release-check/Scripts/pip install dist/contexta-*.whl --quiet
242
+ /tmp/ctx-release-check/Scripts/python -c "from contexta import __version__; print(__version__)"
243
+ /tmp/ctx-release-check/Scripts/contexta --help
244
+ ```
245
+
246
+ ### 4. Generate checksums
247
+
248
+ ```powershell
249
+ uv run python -c "
250
+ import hashlib, pathlib
251
+ for f in sorted(pathlib.Path('dist').glob('contexta-*')):
252
+ h = hashlib.sha256(f.read_bytes()).hexdigest()
253
+ print(f'{h} {f.name}')
254
+ "
255
+ ```
256
+
257
+ Paste the output into `.github/RELEASE_NOTES_v{VERSION}.md`.
258
+
259
+ ### 5. Commit and tag
260
+
261
+ ```powershell
262
+ git add pyproject.toml
263
+ git commit -m "chore: bump version to $(uv version --short)"
264
+ git tag "v$(uv version --short)"
265
+ ```
266
+
267
+ ### 6. Push the tag
268
+
269
+ ```powershell
270
+ git push origin main "v$(uv version --short)"
271
+ ```
272
+
273
+ Pushing the tag triggers the `release.yml` workflow (REL-026), which builds distributions and uploads them to the GitHub Release automatically.
274
+
275
+ ### 7. Create the GitHub Release
276
+
277
+ In GitHub: **Releases → Draft a new release**
278
+
279
+ - Tag: select the tag you just pushed (e.g. `v0.2.0`)
280
+ - Title: `Contexta {VERSION}`
281
+ - Body: paste the content of `.github/RELEASE_NOTES_v{VERSION}.md`
282
+ - Attach `dist/contexta-{VERSION}-py3-none-any.whl` and `dist/contexta-{VERSION}.tar.gz`
283
+ - For pre-releases (`rc`, `alpha`, `beta`): check **Set as a pre-release**
284
+
285
+ ### 8. Post-release
286
+
287
+ - Verify the release page looks correct
288
+ - Confirm PyPI upload succeeded (if applicable — see REL-025)
289
+ - Delete the local `/tmp/ctx-release-check` venv
290
+
291
+ ## CI Workflows
292
+
293
+ Four GitHub Actions workflows run on every push and pull request:
294
+
295
+ | Workflow | File | Runs on |
296
+ |---|---|---|
297
+ | CI | `.github/workflows/ci.yml` | push / PR → main, master |
298
+ | Test Matrix | `.github/workflows/test-matrix.yml` | push / PR → main, master + nightly |
299
+ | Packaging | `.github/workflows/packaging.yml` | push / PR → main, master |
300
+ | Docs and Examples | `.github/workflows/examples.yml` | push / PR → main, master |
301
+
302
+ **Release gate** — the command every workflow mirrors locally:
303
+
304
+ ```powershell
305
+ uv run pytest --tb=short -q
306
+ ```
307
+
308
+ All 544 tests must pass with 0 failures before any release.
309
+
310
+ ## Branch Protection (main)
311
+
312
+ The following checks are **required** before a PR can merge into `main`:
313
+
314
+ - `CI / Test (Python 3.14)` — full test suite + import smoke + CLI smoke
315
+ - `Packaging / Build wheel + sdist` — build succeeds, wheel contents are clean
316
+ - `Packaging / Install from wheel + smoke` — wheel installs and imports correctly in a clean venv
317
+
318
+ The following checks are **informational** (not blocking):
319
+
320
+ - `Test Matrix / pytest / Python 3.14 / ubuntu-latest`
321
+ - `Test Matrix / pytest / Python 3.14 / windows-latest`
322
+ - `Docs and Examples / Internal link check`
323
+ - `Docs and Examples / Quickstart examples`
324
+ - `Docs and Examples / Recovery examples`
325
+
326
+ To configure branch protection in GitHub:
327
+
328
+ 1. Go to **Settings → Branches → Add rule** for `main`
329
+ 2. Enable **Require status checks to pass before merging**
330
+ 3. Search for and add the three required check names above
331
+ 4. Enable **Require branches to be up to date before merging**
332
+
333
+ ## Where To Go Next
334
+
335
+ - product docs: [docs/index.md](./docs/index.md)
336
+ - user guide: [docs/user-guide/index.md](./docs/user-guide/index.md)
337
+ - examples: [examples/quickstart/README.md](./examples/quickstart/README.md), [examples/recovery/README.md](./examples/recovery/README.md)
contexta-0.1.1/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Kim
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, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,234 @@
1
+ Metadata-Version: 2.4
2
+ Name: contexta
3
+ Version: 0.1.1
4
+ Summary: Local-first observability for ML systems
5
+ Project-URL: Homepage, https://github.com/your-org/contexta
6
+ Project-URL: Documentation, https://your-org.github.io/contexta
7
+ Project-URL: Repository, https://github.com/your-org/contexta
8
+ Project-URL: Bug Tracker, https://github.com/your-org/contexta/issues
9
+ Author: Kim
10
+ License: MIT
11
+ License-File: LICENSE
12
+ Keywords: machine-learning,ml-observability,mlops,monitoring,observability
13
+ Classifier: Development Status :: 3 - Alpha
14
+ Classifier: Intended Audience :: Developers
15
+ Classifier: Intended Audience :: Science/Research
16
+ Classifier: License :: OSI Approved :: MIT License
17
+ Classifier: Programming Language :: Python :: 3
18
+ Classifier: Programming Language :: Python :: 3 :: Only
19
+ Classifier: Programming Language :: Python :: 3.14
20
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
21
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
22
+ Requires-Python: >=3.14
23
+ Requires-Dist: duckdb>=1.5.1
24
+ Provides-Extra: all-integrations
25
+ Requires-Dist: mlflow>=2.0; extra == 'all-integrations'
26
+ Requires-Dist: opentelemetry-api>=1.20; extra == 'all-integrations'
27
+ Requires-Dist: pandas>=2.0; extra == 'all-integrations'
28
+ Requires-Dist: polars>=0.20; extra == 'all-integrations'
29
+ Requires-Dist: scikit-learn>=1.6; extra == 'all-integrations'
30
+ Requires-Dist: torch>=2.5; extra == 'all-integrations'
31
+ Requires-Dist: transformers>=4.40; extra == 'all-integrations'
32
+ Provides-Extra: dataframes
33
+ Requires-Dist: pandas>=2.0; extra == 'dataframes'
34
+ Requires-Dist: polars>=0.20; extra == 'dataframes'
35
+ Provides-Extra: mlflow
36
+ Requires-Dist: mlflow>=2.0; extra == 'mlflow'
37
+ Provides-Extra: notebook
38
+ Requires-Dist: ipython>=8.0; extra == 'notebook'
39
+ Provides-Extra: otel
40
+ Requires-Dist: opentelemetry-api>=1.20; extra == 'otel'
41
+ Provides-Extra: sklearn
42
+ Requires-Dist: scikit-learn>=1.6; extra == 'sklearn'
43
+ Provides-Extra: torch
44
+ Requires-Dist: torch>=2.5; extra == 'torch'
45
+ Provides-Extra: transformers
46
+ Requires-Dist: torch>=2.5; extra == 'transformers'
47
+ Requires-Dist: transformers>=4.40; extra == 'transformers'
48
+ Description-Content-Type: text/markdown
49
+
50
+ <h1 align="center">Contexta</h1>
51
+
52
+ <p align="center">
53
+ <strong>Local-first observability for ML systems.</strong>
54
+ </p>
55
+
56
+ <p align="center">
57
+ <img src="https://img.shields.io/badge/python-3.14%2B-2563EB" alt="python 3.14+">
58
+ <img src="https://img.shields.io/badge/stack-Python%20%7C%20uv%20%7C%20pytest-1F2937" alt="project stack">
59
+ </p>
60
+
61
+ <p align="center">
62
+ <img src="https://img.shields.io/badge/status-prototype-D97706" alt="prototype status">
63
+ <img src="https://img.shields.io/badge/focus-local--first-0F766E" alt="local-first">
64
+ </p>
65
+
66
+ <p align="center">
67
+ <a href="https://github.com/eastlighting1/Contexta/actions/workflows/ci.yml"><img src="https://github.com/eastlighting1/Contexta/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
68
+ <a href="https://github.com/eastlighting1/Contexta/actions/workflows/test-matrix.yml"><img src="https://github.com/eastlighting1/Contexta/actions/workflows/test-matrix.yml/badge.svg" alt="Test Matrix"></a>
69
+ <a href="https://github.com/eastlighting1/Contexta/actions/workflows/examples.yml"><img src="https://github.com/eastlighting1/Contexta/actions/workflows/examples.yml/badge.svg" alt="Docs and Examples"></a>
70
+ <a href="https://github.com/eastlighting1/Contexta/actions/workflows/packaging.yml"><img src="https://github.com/eastlighting1/Contexta/actions/workflows/packaging.yml/badge.svg" alt="Packaging"></a>
71
+ </p>
72
+
73
+ <p align="center">
74
+ <a href="#quickstart">Quickstart</a> |
75
+ <a href="#product-surface">Product Surface</a> |
76
+ <a href="#documentation-map">Docs Map</a>
77
+ </p>
78
+
79
+ `Contexta` brings the six legacy library roles into one product surface. The intended developer experience is one canonical Python import root, one canonical CLI, one canonical workspace, and one consistent contract for writing, storing, querying, comparing, and recovering observability data.
80
+
81
+ > [!NOTE]
82
+ > `Contexta` is in a prototype-to-product transition. The canonical public identity is already `Contexta` and `contexta`, but some packaging and CLI alignment work is still in progress. This README uses the final product language first and calls out transitional behavior only where it matters.
83
+
84
+ ## Why Contexta
85
+
86
+ - **One product surface**
87
+ Start from `from contexta import Contexta` instead of stitching together separate package roots.
88
+ - **Canonical local workspace**
89
+ Keep metadata, records, artifacts, reports, and recovery state in a local `.contexta/` workspace.
90
+ - **Read-oriented investigation**
91
+ Query runs, compare outcomes, inspect diagnostics, follow lineage, and build reports from canonical data.
92
+ - **Recovery built in**
93
+ Replay, backup, restore, and artifact transfer are part of the product direction, not separate utilities.
94
+
95
+ ## Quickstart
96
+
97
+ The shortest fully verified prototype path is:
98
+
99
+ 1. Install the project in editable mode.
100
+ 2. Run the verified quickstart example.
101
+ 3. Inspect the generated report and workspace output.
102
+
103
+ ### 1. Install
104
+
105
+ For local development inside this repository:
106
+
107
+ ```powershell
108
+ uv sync --dev
109
+ ```
110
+
111
+ Or with `pip`:
112
+
113
+ ```powershell
114
+ python -m pip install -e .
115
+ ```
116
+
117
+ After installation, the canonical import is:
118
+
119
+ ```python
120
+ from contexta import Contexta
121
+ ```
122
+
123
+ ### 2. Run The Verified Quickstart Example
124
+
125
+ ```powershell
126
+ $env:PYTHONPATH = "src"
127
+ uv run python examples/quickstart/verified_quickstart.py
128
+ ```
129
+
130
+ The example source lives at [`examples/quickstart/verified_quickstart.py`](./examples/quickstart/verified_quickstart.py).
131
+
132
+ It creates a temporary workspace, writes minimal canonical data, queries the resulting run, and saves a markdown snapshot report.
133
+
134
+ ### 3. What This Confirms
135
+
136
+ - the `contexta` import path is live
137
+ - a canonical `.contexta/` workspace can be created locally
138
+ - canonical metadata and records can be written
139
+ - the unified facade can query that workspace and build a report
140
+ - the quickstart example is executable and regression-covered
141
+
142
+ ## Runtime Capture Preview
143
+
144
+ The runtime capture surface is already part of the product direction:
145
+
146
+ ```powershell
147
+ $env:PYTHONPATH = "src"
148
+ uv run python examples/quickstart/runtime_capture_preview.py
149
+ ```
150
+
151
+ The preview source lives at [`examples/quickstart/runtime_capture_preview.py`](./examples/quickstart/runtime_capture_preview.py).
152
+
153
+ The verified README quickstart intentionally uses the currently proven query/report path. The runtime capture preview is included separately so new users can see the scope API without over-promising the current onboarding workflow.
154
+
155
+ ## Product Surface
156
+
157
+ | Surface | Status | Role | When To Start Here |
158
+ | --- | --- | --- | --- |
159
+ | `Contexta` | Stable | Unified facade | Default starting point |
160
+ | `contexta.config` | Stable | Config models, profiles, env overrides | When you need explicit config control |
161
+ | `contexta.contract` | Stable | Canonical models, validation, serialization | When you work directly with schema-level types |
162
+ | `contexta.capture` | Stable | Runtime capture scopes and emissions | When facade-level capture is not enough |
163
+ | `contexta.store.metadata` | Stable | Metadata truth plane | Advanced store access |
164
+ | `contexta.store.records` | Stable | Record truth plane | Replay, scan, export, integrity workflows |
165
+ | `contexta.store.artifacts` | Stable | Artifact truth plane | Artifact ingest, verify, export, import |
166
+ | `contexta.interpretation` | Stable | Query, compare, diagnostics, lineage, reports | Read and investigation flows |
167
+ | `contexta.recovery` | Advanced | Replay, backup, restore | Operator and recovery work |
168
+
169
+ The internal namespaces `contexta.api`, `contexta.runtime`, `contexta.common`, and `contexta.surfaces` are not documented as public import targets.
170
+
171
+ ## Documentation Map
172
+
173
+ The public documentation set is being built in the following structure:
174
+
175
+ ### Core Entry Points
176
+
177
+ - `README.md`
178
+ - product overview, install, quickstart, migration note
179
+ - `docs/index.md`
180
+ - document hub
181
+
182
+ ### User Guide
183
+
184
+ - `docs/user-guide/index.md`
185
+ - `docs/user-guide/key-features.md`
186
+ - `docs/user-guide/tools-and-surfaces.md`
187
+ - `docs/user-guide/core-concepts.md`
188
+ - `docs/user-guide/getting-started.md`
189
+ - `docs/user-guide/common-workflows.md`
190
+ - `docs/user-guide/advanced.md`
191
+ - `docs/user-guide/testing.md`
192
+
193
+ ### Reference
194
+
195
+ - `docs/reference/api-reference.md`
196
+ - `docs/reference/cli-reference.md`
197
+ - `docs/reference/http-reference.md`
198
+
199
+ ### Operations And Contribution
200
+
201
+ - `docs/operations.md`
202
+ - `docs/faq.md`
203
+ - `CONTRIBUTING.md`
204
+
205
+ ### Examples
206
+
207
+ - `examples/quickstart/`
208
+ - verified quickstart and runtime capture preview
209
+ - `examples/recovery/`
210
+ - operator-oriented recovery workflows
211
+
212
+ ## Design Notes
213
+
214
+ The product direction is:
215
+
216
+ - local-first
217
+ - schema-first
218
+ - reproducibility-oriented
219
+ - explicit about degraded or incomplete states
220
+
221
+ Internally, `Contexta` keeps separate truth-owning planes for:
222
+
223
+ - metadata and relations
224
+ - records
225
+ - artifact bodies and bindings
226
+
227
+ and then builds query/report/recovery surfaces over those planes.
228
+
229
+ ## Current Caveats
230
+
231
+ - Some prototype-to-release packaging polish is still in progress.
232
+ - Source-tree example runs still commonly use `PYTHONPATH=src`.
233
+
234
+ These are release-alignment issues, not a change in the canonical product identity.