verilore 0.11.0__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 (271) hide show
  1. verilore-0.11.0/LICENSE +51 -0
  2. verilore-0.11.0/NOTICE +4 -0
  3. verilore-0.11.0/PKG-INFO +118 -0
  4. verilore-0.11.0/README.md +351 -0
  5. verilore-0.11.0/docs/pypi.md +55 -0
  6. verilore-0.11.0/pyproject.toml +199 -0
  7. verilore-0.11.0/setup.cfg +4 -0
  8. verilore-0.11.0/tests/test_adjudication_program_runner.py +107 -0
  9. verilore-0.11.0/tests/test_adr_supersession_declarations.py +529 -0
  10. verilore-0.11.0/tests/test_adversarial_supersession.py +44 -0
  11. verilore-0.11.0/tests/test_agency_readiness.py +28 -0
  12. verilore-0.11.0/tests/test_api.py +265 -0
  13. verilore-0.11.0/tests/test_api_contract.py +308 -0
  14. verilore-0.11.0/tests/test_benchmark_ground_truth.py +92 -0
  15. verilore-0.11.0/tests/test_check_versioning_migration_head.py +164 -0
  16. verilore-0.11.0/tests/test_chunk_boundaries.py +57 -0
  17. verilore-0.11.0/tests/test_chunker.py +45 -0
  18. verilore-0.11.0/tests/test_chunking_guarantees.py +121 -0
  19. verilore-0.11.0/tests/test_ci_model_provisioning.py +213 -0
  20. verilore-0.11.0/tests/test_claim_embedding_cache.py +381 -0
  21. verilore-0.11.0/tests/test_claim_rejection_message.py +134 -0
  22. verilore-0.11.0/tests/test_claim_state.py +257 -0
  23. verilore-0.11.0/tests/test_claims_block_state.py +142 -0
  24. verilore-0.11.0/tests/test_cli_corpus_reset_and_prune.py +253 -0
  25. verilore-0.11.0/tests/test_cli_errors_format.py +340 -0
  26. verilore-0.11.0/tests/test_cli_json_contract.py +212 -0
  27. verilore-0.11.0/tests/test_cli_memory_in_process.py +155 -0
  28. verilore-0.11.0/tests/test_confidence.py +84 -0
  29. verilore-0.11.0/tests/test_conflict_hint_coverage.py +277 -0
  30. verilore-0.11.0/tests/test_context_budget.py +104 -0
  31. verilore-0.11.0/tests/test_context_product.py +344 -0
  32. verilore-0.11.0/tests/test_corpus_create_403.py +122 -0
  33. verilore-0.11.0/tests/test_corpus_isolation.py +345 -0
  34. verilore-0.11.0/tests/test_corpus_scope.py +367 -0
  35. verilore-0.11.0/tests/test_credential_management.py +1551 -0
  36. verilore-0.11.0/tests/test_cross_document_supersession.py +324 -0
  37. verilore-0.11.0/tests/test_decision_provider_contract.py +57 -0
  38. verilore-0.11.0/tests/test_default_corpus_is_writable.py +193 -0
  39. verilore-0.11.0/tests/test_deployment_profiles_and_lifecycle.py +1524 -0
  40. verilore-0.11.0/tests/test_embedder.py +137 -0
  41. verilore-0.11.0/tests/test_embedder_backend_equivalence.py +200 -0
  42. verilore-0.11.0/tests/test_enforcement_e2e.py +1289 -0
  43. verilore-0.11.0/tests/test_error_and_log_hygiene.py +272 -0
  44. verilore-0.11.0/tests/test_error_taxonomy.py +191 -0
  45. verilore-0.11.0/tests/test_eval_reproducibility.py +24 -0
  46. verilore-0.11.0/tests/test_evaluation.py +159 -0
  47. verilore-0.11.0/tests/test_evidence_gate_tied_to_head.py +141 -0
  48. verilore-0.11.0/tests/test_feed_adapters.py +269 -0
  49. verilore-0.11.0/tests/test_feed_cursor.py +23 -0
  50. verilore-0.11.0/tests/test_feed_integration.py +340 -0
  51. verilore-0.11.0/tests/test_file_path_inputs_resolve_through_roots.py +148 -0
  52. verilore-0.11.0/tests/test_five_minute_path.py +1359 -0
  53. verilore-0.11.0/tests/test_flight_recorder_accuracy.py +313 -0
  54. verilore-0.11.0/tests/test_fresh_corpus_and_lexical_ingest.py +139 -0
  55. verilore-0.11.0/tests/test_grounding.py +282 -0
  56. verilore-0.11.0/tests/test_health_endpoints.py +137 -0
  57. verilore-0.11.0/tests/test_history_lineage.py +65 -0
  58. verilore-0.11.0/tests/test_history_lineage_and_ingest_speed.py +543 -0
  59. verilore-0.11.0/tests/test_hnsw_small_corpus_recall.py +253 -0
  60. verilore-0.11.0/tests/test_ingest_repo_in_process.py +113 -0
  61. verilore-0.11.0/tests/test_ingestion_and_ranking_regressions.py +599 -0
  62. verilore-0.11.0/tests/test_ingestion_lifecycle.py +398 -0
  63. verilore-0.11.0/tests/test_ingestion_reports_what_it_stored.py +198 -0
  64. verilore-0.11.0/tests/test_ingestion_statistics.py +624 -0
  65. verilore-0.11.0/tests/test_integration_adapter.py +122 -0
  66. verilore-0.11.0/tests/test_integration_brand_kit_scenario.py +360 -0
  67. verilore-0.11.0/tests/test_integration_guide_examples.py +99 -0
  68. verilore-0.11.0/tests/test_laptop_setup.py +287 -0
  69. verilore-0.11.0/tests/test_lazy_chunk_embeddings.py +283 -0
  70. verilore-0.11.0/tests/test_lexical_mode.py +432 -0
  71. verilore-0.11.0/tests/test_linux_wsl_guided_remediation.py +152 -0
  72. verilore-0.11.0/tests/test_local_postgres_secrets.py +93 -0
  73. verilore-0.11.0/tests/test_local_postgres_ux.py +639 -0
  74. verilore-0.11.0/tests/test_markdown_claim_extraction.py +245 -0
  75. verilore-0.11.0/tests/test_marketing_reference_integration.py +611 -0
  76. verilore-0.11.0/tests/test_mcp_client_docs.py +124 -0
  77. verilore-0.11.0/tests/test_mcp_revalidate_and_verified_writes.py +140 -0
  78. verilore-0.11.0/tests/test_mcp_server.py +133 -0
  79. verilore-0.11.0/tests/test_memory_adjudication.py +88 -0
  80. verilore-0.11.0/tests/test_memory_benchmark.py +664 -0
  81. verilore-0.11.0/tests/test_memory_benchmark_interfaces.py +362 -0
  82. verilore-0.11.0/tests/test_memory_benchmark_labels.py +467 -0
  83. verilore-0.11.0/tests/test_memory_client.py +666 -0
  84. verilore-0.11.0/tests/test_memory_core.py +664 -0
  85. verilore-0.11.0/tests/test_memory_decision_benchmark.py +33 -0
  86. verilore-0.11.0/tests/test_memory_decision_dataset.py +38 -0
  87. verilore-0.11.0/tests/test_memory_decision_jev.py +107 -0
  88. verilore-0.11.0/tests/test_memory_evaluation_lab.py +15 -0
  89. verilore-0.11.0/tests/test_memory_heldout_labels.py +307 -0
  90. verilore-0.11.0/tests/test_memory_http.py +289 -0
  91. verilore-0.11.0/tests/test_memory_ingestion.py +341 -0
  92. verilore-0.11.0/tests/test_memory_load_equivalence.py +187 -0
  93. verilore-0.11.0/tests/test_memory_mcp.py +205 -0
  94. verilore-0.11.0/tests/test_memory_multiple_evidence.py +436 -0
  95. verilore-0.11.0/tests/test_memory_pack.py +482 -0
  96. verilore-0.11.0/tests/test_memory_pack_performance.py +266 -0
  97. verilore-0.11.0/tests/test_memory_proof.py +282 -0
  98. verilore-0.11.0/tests/test_memory_public.py +862 -0
  99. verilore-0.11.0/tests/test_memory_query.py +739 -0
  100. verilore-0.11.0/tests/test_memory_query_adapters.py +264 -0
  101. verilore-0.11.0/tests/test_memory_query_interfaces.py +162 -0
  102. verilore-0.11.0/tests/test_memory_question_labels.py +230 -0
  103. verilore-0.11.0/tests/test_memory_reasoning.py +161 -0
  104. verilore-0.11.0/tests/test_memory_receipt.py +342 -0
  105. verilore-0.11.0/tests/test_memory_remember_mcp.py +342 -0
  106. verilore-0.11.0/tests/test_memory_roles.py +63 -0
  107. verilore-0.11.0/tests/test_memory_snapshot_seal.py +181 -0
  108. verilore-0.11.0/tests/test_memory_stdio.py +55 -0
  109. verilore-0.11.0/tests/test_migration_contract.py +121 -0
  110. verilore-0.11.0/tests/test_model_free_package.py +214 -0
  111. verilore-0.11.0/tests/test_operator_cli.py +236 -0
  112. verilore-0.11.0/tests/test_package_imports.py +53 -0
  113. verilore-0.11.0/tests/test_paragraph_dilution_and_coverage.py +261 -0
  114. verilore-0.11.0/tests/test_parser.py +36 -0
  115. verilore-0.11.0/tests/test_path_prefix.py +456 -0
  116. verilore-0.11.0/tests/test_platform_guided_remediation.py +178 -0
  117. verilore-0.11.0/tests/test_proof_cli.py +609 -0
  118. verilore-0.11.0/tests/test_prose_extraction_honesty.py +198 -0
  119. verilore-0.11.0/tests/test_prose_extraction_parity.py +42 -0
  120. verilore-0.11.0/tests/test_provider_conformance.py +329 -0
  121. verilore-0.11.0/tests/test_publish_workflow.py +120 -0
  122. verilore-0.11.0/tests/test_quality_gate.py +106 -0
  123. verilore-0.11.0/tests/test_query_log.py +197 -0
  124. verilore-0.11.0/tests/test_query_withholds.py +150 -0
  125. verilore-0.11.0/tests/test_ranking_authority_tiebreak.py +181 -0
  126. verilore-0.11.0/tests/test_receipt_surfaces.py +184 -0
  127. verilore-0.11.0/tests/test_release_packaging.py +343 -0
  128. verilore-0.11.0/tests/test_remember_decisions.py +598 -0
  129. verilore-0.11.0/tests/test_remember_file_respects_ingest_roots.py +106 -0
  130. verilore-0.11.0/tests/test_repository_docs_ingest_cleanly.py +189 -0
  131. verilore-0.11.0/tests/test_reranker.py +87 -0
  132. verilore-0.11.0/tests/test_retrieval_match_status.py +190 -0
  133. verilore-0.11.0/tests/test_revalidate.py +293 -0
  134. verilore-0.11.0/tests/test_runtime_equivalence.py +648 -0
  135. verilore-0.11.0/tests/test_runtime_lifecycle.py +597 -0
  136. verilore-0.11.0/tests/test_scope_forgery.py +481 -0
  137. verilore-0.11.0/tests/test_scope_token_loud_mismatch.py +435 -0
  138. verilore-0.11.0/tests/test_score_cap_and_compound_ambiguity.py +131 -0
  139. verilore-0.11.0/tests/test_sdk.py +160 -0
  140. verilore-0.11.0/tests/test_sdk_error_envelope.py +63 -0
  141. verilore-0.11.0/tests/test_sdk_retry.py +256 -0
  142. verilore-0.11.0/tests/test_search_semantics.py +353 -0
  143. verilore-0.11.0/tests/test_security.py +178 -0
  144. verilore-0.11.0/tests/test_serve_cli.py +156 -0
  145. verilore-0.11.0/tests/test_shared_core_enforces_adapter_policies.py +120 -0
  146. verilore-0.11.0/tests/test_similarity.py +143 -0
  147. verilore-0.11.0/tests/test_skip_gate_and_runner_evidence.py +484 -0
  148. verilore-0.11.0/tests/test_source_formats.py +85 -0
  149. verilore-0.11.0/tests/test_stable_claim_keys.py +243 -0
  150. verilore-0.11.0/tests/test_stale_fact_benchmark.py +41 -0
  151. verilore-0.11.0/tests/test_supersession_ordering.py +138 -0
  152. verilore-0.11.0/tests/test_supersession_table_and_history_regressions.py +339 -0
  153. verilore-0.11.0/tests/test_surface_equivalence.py +243 -0
  154. verilore-0.11.0/tests/test_sync_connection_reuse.py +269 -0
  155. verilore-0.11.0/tests/test_table_row_ranking.py +217 -0
  156. verilore-0.11.0/tests/test_tenant_connection_isolation.py +270 -0
  157. verilore-0.11.0/tests/test_tenant_control_effectiveness.py +452 -0
  158. verilore-0.11.0/tests/test_tenant_isolation.py +826 -0
  159. verilore-0.11.0/tests/test_unparseable_frontmatter_reported.py +149 -0
  160. verilore-0.11.0/tests/test_unsearchable_documents.py +189 -0
  161. verilore-0.11.0/tests/test_verifiable_memory_release.py +204 -0
  162. verilore-0.11.0/tests/test_wheel_contents.py +167 -0
  163. verilore-0.11.0/tests/test_withholding.py +344 -0
  164. verilore-0.11.0/verilore/__init__.py +93 -0
  165. verilore-0.11.0/verilore/api/__init__.py +0 -0
  166. verilore-0.11.0/verilore/api/dependencies.py +33 -0
  167. verilore-0.11.0/verilore/api/errors.py +52 -0
  168. verilore-0.11.0/verilore/api/main.py +627 -0
  169. verilore-0.11.0/verilore/api/models/memory.py +320 -0
  170. verilore-0.11.0/verilore/api/models/remember.py +173 -0
  171. verilore-0.11.0/verilore/api/models/schemas.py +491 -0
  172. verilore-0.11.0/verilore/api/routers/__init__.py +0 -0
  173. verilore-0.11.0/verilore/api/routers/context.py +129 -0
  174. verilore-0.11.0/verilore/api/routers/corpora.py +156 -0
  175. verilore-0.11.0/verilore/api/routers/ingest.py +85 -0
  176. verilore-0.11.0/verilore/api/routers/memory.py +352 -0
  177. verilore-0.11.0/verilore/api/routers/query.py +449 -0
  178. verilore-0.11.0/verilore/api/routers/search.py +102 -0
  179. verilore-0.11.0/verilore/api/runtime.py +801 -0
  180. verilore-0.11.0/verilore/api/services/__init__.py +24 -0
  181. verilore-0.11.0/verilore/api/services/authz.py +707 -0
  182. verilore-0.11.0/verilore/api/services/benchmark.py +304 -0
  183. verilore-0.11.0/verilore/api/services/chunker.py +69 -0
  184. verilore-0.11.0/verilore/api/services/claim_embeddings.py +315 -0
  185. verilore-0.11.0/verilore/api/services/confidence.py +143 -0
  186. verilore-0.11.0/verilore/api/services/context_packer.py +640 -0
  187. verilore-0.11.0/verilore/api/services/context_service.py +184 -0
  188. verilore-0.11.0/verilore/api/services/corpora.py +347 -0
  189. verilore-0.11.0/verilore/api/services/db.py +258 -0
  190. verilore-0.11.0/verilore/api/services/embedder.py +512 -0
  191. verilore-0.11.0/verilore/api/services/evaluation.py +122 -0
  192. verilore-0.11.0/verilore/api/services/ingest_paths.py +114 -0
  193. verilore-0.11.0/verilore/api/services/ingestion.py +1158 -0
  194. verilore-0.11.0/verilore/api/services/llm.py +161 -0
  195. verilore-0.11.0/verilore/api/services/llm_service.py +30 -0
  196. verilore-0.11.0/verilore/api/services/markdown_claims.py +1264 -0
  197. verilore-0.11.0/verilore/api/services/memory.py +1726 -0
  198. verilore-0.11.0/verilore/api/services/memory_adjudication.py +214 -0
  199. verilore-0.11.0/verilore/api/services/memory_benchmark.py +1531 -0
  200. verilore-0.11.0/verilore/api/services/memory_decision_benchmark.py +131 -0
  201. verilore-0.11.0/verilore/api/services/memory_decision_dataset.py +152 -0
  202. verilore-0.11.0/verilore/api/services/memory_decision_spike.py +276 -0
  203. verilore-0.11.0/verilore/api/services/memory_evaluation_lab.py +172 -0
  204. verilore-0.11.0/verilore/api/services/memory_feed.py +212 -0
  205. verilore-0.11.0/verilore/api/services/memory_public.py +752 -0
  206. verilore-0.11.0/verilore/api/services/memory_query.py +791 -0
  207. verilore-0.11.0/verilore/api/services/memory_query_benchmark.py +1275 -0
  208. verilore-0.11.0/verilore/api/services/memory_reasoning.py +338 -0
  209. verilore-0.11.0/verilore/api/services/memory_relevance.py +893 -0
  210. verilore-0.11.0/verilore/api/services/observability.py +72 -0
  211. verilore-0.11.0/verilore/api/services/parser.py +624 -0
  212. verilore-0.11.0/verilore/api/services/posture.py +384 -0
  213. verilore-0.11.0/verilore/api/services/quality_gate.py +136 -0
  214. verilore-0.11.0/verilore/api/services/query_log.py +281 -0
  215. verilore-0.11.0/verilore/api/services/rehydrate.py +237 -0
  216. verilore-0.11.0/verilore/api/services/related.py +22 -0
  217. verilore-0.11.0/verilore/api/services/remember.py +714 -0
  218. verilore-0.11.0/verilore/api/services/repository.py +496 -0
  219. verilore-0.11.0/verilore/api/services/reranker.py +69 -0
  220. verilore-0.11.0/verilore/api/services/resources.py +128 -0
  221. verilore-0.11.0/verilore/api/services/retrieval.py +394 -0
  222. verilore-0.11.0/verilore/api/services/retrieval_mode.py +49 -0
  223. verilore-0.11.0/verilore/api/services/revalidate.py +612 -0
  224. verilore-0.11.0/verilore/api/services/similarity.py +121 -0
  225. verilore-0.11.0/verilore/api/services/source_formats.py +349 -0
  226. verilore-0.11.0/verilore/api/services/telemetry.py +132 -0
  227. verilore-0.11.0/verilore/api/services/timeline.py +36 -0
  228. verilore-0.11.0/verilore/cli/__init__.py +0 -0
  229. verilore-0.11.0/verilore/cli/config.py +149 -0
  230. verilore-0.11.0/verilore/cli/doctor.py +423 -0
  231. verilore-0.11.0/verilore/cli/errors.py +408 -0
  232. verilore-0.11.0/verilore/cli/main.py +2882 -0
  233. verilore-0.11.0/verilore/cli/memory.py +287 -0
  234. verilore-0.11.0/verilore/cli/postgres.py +922 -0
  235. verilore-0.11.0/verilore/cli/render.py +446 -0
  236. verilore-0.11.0/verilore/cli/runtime.py +136 -0
  237. verilore-0.11.0/verilore/errors.py +544 -0
  238. verilore-0.11.0/verilore/mcp_server.py +695 -0
  239. verilore-0.11.0/verilore/migrations/__init__.py +36 -0
  240. verilore-0.11.0/verilore/migrations/alembic.ini +41 -0
  241. verilore-0.11.0/verilore/migrations/env.py +70 -0
  242. verilore-0.11.0/verilore/migrations/versions/001_initial_schema.py +167 -0
  243. verilore-0.11.0/verilore/migrations/versions/002_corpora.py +72 -0
  244. verilore-0.11.0/verilore/migrations/versions/003_manifest_corpus.py +39 -0
  245. verilore-0.11.0/verilore/migrations/versions/004_memory.py +288 -0
  246. verilore-0.11.0/verilore/migrations/versions/005_multiple_evidence.py +60 -0
  247. verilore-0.11.0/verilore/migrations/versions/006_snapshot_membership_seal.py +94 -0
  248. verilore-0.11.0/verilore/migrations/versions/007_claim_embedding_cache.py +66 -0
  249. verilore-0.11.0/verilore/migrations/versions/008_tenant_scoped_access.py +156 -0
  250. verilore-0.11.0/verilore/migrations/versions/009_permission_granularity_and_erasure.py +285 -0
  251. verilore-0.11.0/verilore/migrations/versions/010_bind_unrestricted_scope.py +244 -0
  252. verilore-0.11.0/verilore/migrations/versions/011_cross_document_supersession.py +148 -0
  253. verilore-0.11.0/verilore/migrations/versions/012_claim_embedding_hnsw.py +71 -0
  254. verilore-0.11.0/verilore/migrations/versions/013_info_state_and_extraction_mode.py +27 -0
  255. verilore-0.11.0/verilore/migrations/versions/014_scope_token_hardening.py +160 -0
  256. verilore-0.11.0/verilore/migrations/versions/015_rls_scope_enforcement.py +200 -0
  257. verilore-0.11.0/verilore/migrations/versions/016_hoist_scope_initplan.py +95 -0
  258. verilore-0.11.0/verilore/pack.py +470 -0
  259. verilore-0.11.0/verilore/proof.py +493 -0
  260. verilore-0.11.0/verilore/proof_cli.py +551 -0
  261. verilore-0.11.0/verilore/receipt.py +567 -0
  262. verilore-0.11.0/verilore/runtime.py +44 -0
  263. verilore-0.11.0/verilore/sdk.py +1588 -0
  264. verilore-0.11.0/verilore.egg-info/PKG-INFO +118 -0
  265. verilore-0.11.0/verilore.egg-info/SOURCES.txt +269 -0
  266. verilore-0.11.0/verilore.egg-info/dependency_links.txt +1 -0
  267. verilore-0.11.0/verilore.egg-info/entry_points.txt +4 -0
  268. verilore-0.11.0/verilore.egg-info/requires.txt +37 -0
  269. verilore-0.11.0/verilore.egg-info/top_level.txt +3 -0
  270. verilore-0.11.0/verilore_errors.py +14 -0
  271. verilore-0.11.0/verilore_sdk.py +14 -0
@@ -0,0 +1,51 @@
1
+ Apache License
2
+ Version 2.0, January 2004
3
+ http://www.apache.org/licenses/
4
+
5
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6
+
7
+ 1. Definitions.
8
+
9
+ "License" shall mean the terms and conditions for use, reproduction,
10
+ and distribution as defined by Sections 1 through 9 of this document.
11
+
12
+ "Licensor" shall mean the copyright owner or entity authorized by
13
+ the copyright owner that is granting the License.
14
+
15
+ "Legal Entity" shall mean the union of the acting entity and all
16
+ other entities that control, are controlled by, or are under common
17
+ control with that acting entity. For the purposes of this definition,
18
+ "control" means (i) the power, direct or indirect, to cause the
19
+ direction or management of such entity, whether by contract or
20
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
21
+ outstanding shares, or (iii) beneficial ownership of such entity.
22
+
23
+ "You" (or "Your") shall mean an individual or legal entity
24
+ exercising rights granted by this License.
25
+
26
+ "Source" form shall mean the preferred form for making modifications,
27
+ including but not limited to software source code, documentation
28
+ source, and configuration files.
29
+
30
+ "Object" form shall mean any form resulting from mechanical
31
+ transformation or translation of a Source form, including but
32
+ not limited to compiled object code, generated documentation,
33
+ and conversions to other media types.
34
+
35
+ "Work" shall mean the licensor's work, whether in Source or Object
36
+ form, made available to the public under the terms of this License.
37
+
38
+ "Derivative Works" shall mean any work, whether in Source or Object
39
+ form, that is based on the Work and for which the copyright
40
+ ownership is exercisable by at least one of the authors of the Work.
41
+ For the purposes of this definition, "Derivative Works" shall not
42
+ include any work that is a copy of the Work.
43
+
44
+ "Notices" shall mean any document that is included with the Work
45
+ to the extent required by applicable law or in accordance with
46
+ the terms of this License, for the purpose of informing recipients
47
+ of the existence and location of specific licenses, notices, and
48
+ warranties required by law or in accordance with the terms of this
49
+ License.
50
+
51
+ "Annual
verilore-0.11.0/NOTICE ADDED
@@ -0,0 +1,4 @@
1
+ Verilore (formerly Mind Palace)
2
+ Copyright 2026 Raunak Dey
3
+
4
+ Licensed under the Apache License, Version 2.0.
@@ -0,0 +1,118 @@
1
+ Metadata-Version: 2.4
2
+ Name: verilore
3
+ Version: 0.11.0
4
+ Summary: Versioned, evidence-backed memory for AI apps: every answer cites its source and the time it was true.
5
+ Author: Raunak Dey
6
+ License-Expression: Apache-2.0
7
+ Project-URL: Homepage, https://github.com/raunakdey-07/verilore
8
+ Project-URL: Repository, https://github.com/raunakdey-07/verilore
9
+ Project-URL: Documentation, https://github.com/raunakdey-07/verilore/blob/main/docs/integration/guide.md
10
+ Project-URL: Changelog, https://github.com/raunakdey-07/verilore/blob/main/CHANGELOG.md
11
+ Project-URL: Issues, https://github.com/raunakdey-07/verilore/issues
12
+ Keywords: memory,rag,llm,provenance,pgvector,mcp,ai-agents
13
+ Classifier: Development Status :: 4 - Beta
14
+ Classifier: Intended Audience :: Developers
15
+ Classifier: Framework :: FastAPI
16
+ Classifier: Programming Language :: Python :: 3
17
+ Classifier: Programming Language :: Python :: 3 :: Only
18
+ Classifier: Programming Language :: Python :: 3.11
19
+ Classifier: Programming Language :: Python :: 3.12
20
+ Classifier: Programming Language :: Python :: 3.13
21
+ Classifier: Programming Language :: Python :: 3.14
22
+ Classifier: Topic :: Software Development :: Libraries
23
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
24
+ Classifier: Operating System :: POSIX :: Linux
25
+ Classifier: Operating System :: MacOS
26
+ Requires-Python: <3.15,>=3.11
27
+ Description-Content-Type: text/markdown
28
+ License-File: LICENSE
29
+ License-File: NOTICE
30
+ Requires-Dist: fastapi>=0.110.0
31
+ Requires-Dist: uvicorn>=0.27.0
32
+ Requires-Dist: sqlalchemy[asyncio]>=2.0.0
33
+ Requires-Dist: asyncpg>=0.30.0
34
+ Requires-Dist: pydantic>=2.0.0
35
+ Requires-Dist: python-frontmatter>=1.1.0
36
+ Requires-Dist: alembic>=1.13.0
37
+ Requires-Dist: onnxruntime>=1.17.0
38
+ Requires-Dist: tokenizers>=0.15.0
39
+ Requires-Dist: huggingface-hub>=0.23.0
40
+ Requires-Dist: httpx>=0.27.0
41
+ Requires-Dist: prometheus-fastapi-instrumentator>=7.0.0
42
+ Requires-Dist: pyyaml>=6.0
43
+ Requires-Dist: langchain-text-splitters>=1.0.0
44
+ Requires-Dist: typer>=0.9.0
45
+ Requires-Dist: psycopg2-binary>=2.9.0
46
+ Requires-Dist: pgvector>=0.3.0
47
+ Requires-Dist: mcp>=2.1.0
48
+ Provides-Extra: cli
49
+ Provides-Extra: mcp
50
+ Requires-Dist: mcp>=2.1.0; extra == "mcp"
51
+ Provides-Extra: migrations
52
+ Requires-Dist: alembic>=1.13.0; extra == "migrations"
53
+ Requires-Dist: psycopg2-binary>=2.9.0; extra == "migrations"
54
+ Requires-Dist: pgvector>=0.3.0; extra == "migrations"
55
+ Provides-Extra: torch
56
+ Requires-Dist: sentence-transformers>=2.5.0; extra == "torch"
57
+ Provides-Extra: dev
58
+ Requires-Dist: pytest>=7.0.0; extra == "dev"
59
+ Requires-Dist: pytest-asyncio>=0.23.0; extra == "dev"
60
+ Requires-Dist: black>=24.0.0; extra == "dev"
61
+ Requires-Dist: flake8>=7.0.0; extra == "dev"
62
+ Dynamic: license-file
63
+
64
+ # Verilore
65
+
66
+ Memory for AI applications that remembers what changed, what was true when, and
67
+ why to believe the recorded state. Add Verilore to an application, record a fact,
68
+ and get back an answer with its source, the time it was true, and the exact
69
+ characters that support it. Export a receipt and verify it on a machine that has
70
+ never heard of Verilore.
71
+
72
+ ## Install
73
+
74
+ ```bash
75
+ uv tool install --python 3.13 verilore
76
+ # or, with a Python from 3.11 to 3.14:
77
+ pipx install verilore
78
+ ```
79
+
80
+ Verilore runs on macOS and Linux, and on Windows through WSL 2, with Python 3.11
81
+ to 3.14 (3.13 at most on an Intel Mac). uv downloads 3.13 if you do not have it,
82
+ which also covers a system whose own Python is newer, such as Fedora 45's 3.15
83
+ (Fedora's uv downloads only when asked: run `uv python install 3.13` first).
84
+ It needs PostgreSQL 15 or newer with pgvector: with Podman or Docker installed,
85
+ `verilore init` starts one for you, and to use one you already run, pass
86
+ `verilore init --database-url ...`.
87
+ [Your system](https://github.com/raunakdey-07/verilore/blob/main/docs/quickstart.md#your-system)
88
+ says how to get uv and Podman on each.
89
+
90
+ ## Quickstart
91
+
92
+ ```bash
93
+ verilore init
94
+ verilore ingest-repo ./docs --corpus project
95
+ verilore recall "What is the primary datastore?" --corpus project
96
+ verilore explain "What is the primary datastore?" --corpus project
97
+ ```
98
+
99
+ `init` sets up the database and records it for every later command, so nothing
100
+ needs exporting. Something wrong? Run `verilore doctor`.
101
+
102
+ From Python:
103
+
104
+ ```python
105
+ from verilore import Verilore
106
+
107
+ client = Verilore("default")
108
+ client.remember("Support answers within one business day.", key="support.sla")
109
+ memory = client.recall("What is the support SLA?").current_memories[0]
110
+ print(f"{memory.claim} [{memory.status}]")
111
+ ```
112
+
113
+ ## Links
114
+
115
+ - [README](https://github.com/raunakdey-07/verilore#readme): what it is, and what it refuses to do
116
+ - [Integration guide](https://github.com/raunakdey-07/verilore/blob/main/docs/integration/guide.md): wiring it into an app
117
+ - [Changelog](https://github.com/raunakdey-07/verilore/blob/main/CHANGELOG.md)
118
+ - [License: Apache-2.0](https://github.com/raunakdey-07/verilore/blob/main/LICENSE)
@@ -0,0 +1,351 @@
1
+ # Verilore
2
+
3
+ [![Release](https://img.shields.io/github/v/release/raunakdey-07/verilore)](https://github.com/raunakdey-07/verilore/releases)
4
+ [![CI](https://img.shields.io/github/actions/workflow/status/raunakdey-07/verilore/ci.yml?branch=main&label=CI)](https://github.com/raunakdey-07/verilore/actions/workflows/ci.yml)
5
+ [![License](https://img.shields.io/badge/license-Apache%202.0-blue)](LICENSE)
6
+
7
+ Verilore was called Mind Palace until v0.10.0.
8
+
9
+ [Current release: v0.11.0](docs/release-map.md) · [Changelog](CHANGELOG.md)
10
+
11
+
12
+ **Memory for AI applications that remembers what changed, what was true when, and
13
+ why to believe the recorded state.**
14
+
15
+ Add Verilore to an application, record a fact, and get back an answer with its
16
+ source, the time it was true, and the exact characters that support it. Export a
17
+ receipt and verify it on a machine that has never heard of Verilore.
18
+
19
+ ```text
20
+ remember a statement becomes memory, with evidence
21
+ recall an answer, its source, and the time it was true
22
+ explain the characters that support it, and what replaced it
23
+ history the supersession chain, oldest first
24
+ receipt what was returned, plus the digest of the whole response
25
+ verify offline: no database, no model, no network
26
+ ```
27
+
28
+ Run `verilore` with no arguments and it prints the first three commands, in
29
+ the order a newcomer needs them.
30
+
31
+ ---
32
+
33
+ ## Quickstart
34
+
35
+ For wiring Verilore into a coding agent so it tracks your project's decisions and
36
+ runbooks. CI runs these commands against a built wheel (`scripts/cleanroom_quickstart.py`),
37
+ and its `Laptop path on Podman` job runs the first three on a machine with no
38
+ database and nothing exported.
39
+
40
+ Lines starting with `$ ` are the commands CI runs; type them without the `$ `.
41
+
42
+ ```bash
43
+ # Install the command from PyPI. Verilore runs on Python 3.11 to 3.14; uv downloads
44
+ # 3.13 if you do not have it (Fedora's uv downloads only when asked: run
45
+ # `uv python install 3.13` first). macOS, Ubuntu, WSL, Debian, Fedora, Arch:
46
+ # docs/quickstart.md#your-system says how to get uv and Podman on each.
47
+ uv tool install --python 3.13 verilore
48
+ # or, with a Python from 3.11 to 3.14: pipx install verilore
49
+
50
+ # The whole local setup. With Podman or Docker installed, init starts a local
51
+ # PostgreSQL (the first run downloads its image once), applies the schema,
52
+ # creates your first corpus and records the database for every later command.
53
+ # Run it again any time; it changes nothing.
54
+ $ verilore init
55
+
56
+ # Ingest a plain ADR. No frontmatter, no `claims:` block: headings, list items and
57
+ # `Key: Value` lines become claims, each quoted from the file it came from.
58
+ # docs/adr/001-datastore.md is the worked example; point this at your own.
59
+ $ verilore ingest-repo ./docs/adr --corpus project
60
+
61
+ # Recall. An ambiguous answer prints the claims it could not separate, with ids.
62
+ $ verilore recall "What is the primary datastore?" --corpus project
63
+
64
+ # Record what replaces it. `--topic-key` retires what is live under that key, across
65
+ # files: the new statement is a different document from the old one.
66
+ $ verilore remember "The primary datastore is PostgreSQL 16." \
67
+ --corpus project --key architecture.datastore --topic-key architecture.datastore
68
+
69
+ # What is true now, and what it displaced.
70
+ $ verilore recall "What is the primary datastore?" --corpus project
71
+ $ verilore history "" --corpus project
72
+
73
+ # Verify the answer offline: no database, no model, no network.
74
+ $ verilore receipt "What is the primary datastore?" --corpus project -o receipt.json
75
+ $ verilore verify receipt.json
76
+ ```
77
+
78
+ Nothing needs exporting. `init` records the database in `~/.verilore/config.toml`
79
+ (mode 0600), and every command and `verilore-mcp` read it; an exported
80
+ `DATABASE_URL` still wins. The container it creates is `verilore-postgres`,
81
+ listening on 127.0.0.1:5432 only, with its data in the `verilore-pgdata` volume,
82
+ so removing the container loses no memory. To use a PostgreSQL you already run,
83
+ `verilore init --database-url ...` once; see
84
+ [Running against your own PostgreSQL](docs/deployment.md#running-against-your-own-postgresql).
85
+ Local mode needs no secrets; a server deployment still takes them from the
86
+ environment.
87
+
88
+ Working on Verilore itself? Install from a clone instead, then run the same commands:
89
+
90
+ ```bash
91
+ git clone https://github.com/raunakdey-07/verilore.git && cd verilore
92
+ uv venv --python 3.13 && . .venv/bin/activate && uv pip install -e '.[cli,mcp]'
93
+ ```
94
+
95
+ The first `recall` builds an ONNX session: about 1.4 s, then 0.3 s. A background
96
+ runtime holds it and the connection pool warm after that;
97
+ `verilore runtime status` says whether one is up. `VERILORE_RUNTIME=0` turns
98
+ it off, and `VERILORE_LEXICAL=1` turns the model off.
99
+
100
+ Something wrong? Run `verilore doctor`.
101
+
102
+ `pip install -e '.[cli,mcp]'` resolved 79 distributions totalling 216 MB, of which
103
+ the three embedding packages are 79 MB (measured before `psycopg2-binary` and
104
+ `pgvector`, two small packages, became core dependencies so `init` can migrate). `sentence-transformers` and torch are the
105
+ `[torch]` extra and add about 1.35 GB. The extra is not needed for recall, and the
106
+ two backends return the same vectors -- measured minimum cosine 0.99999833 -- so it
107
+ buys a different import time and nothing else. The one thing that does need it is
108
+ `rerank=true` on the REST search endpoint, which asks for the cross-encoder
109
+ reranker; on the default stack that raises, because returning unreranked results
110
+ under a rerank request would be a lie. `verilore search` and every other command
111
+ leave it off.
112
+
113
+ Your agent gets the same commands over MCP, with the same `match_status` and
114
+ `candidates` on the answer and the same `supersedes_claim_id` on the write, which
115
+ takes an id prefix or a phrase from the claim's own text. A document can say so
116
+ itself: `supersedes: 0001.md` in its frontmatter. Point the client at
117
+ `verilore-mcp`: it uses the database `init` recorded unless the client's config
118
+ sets `DATABASE_URL`, and `VERILORE_INGEST_ROOTS` limits the directories it may
119
+ read. The JSON for OpenCode, Zed and Claude Code is in [connecting an agent](docs/mcp.md).
120
+
121
+ `recall` and `remember` also report a `query_id`. Grade a wrong answer; it appends
122
+ to `~/.verilore/logs/queries.jsonl` and changes nothing else.
123
+
124
+ ```bash
125
+ verilore feedback <query_id> --verdict wrong --note "meant the cache"
126
+ verilore feedback-summary
127
+ ```
128
+
129
+ ## Managing corpora and credentials
130
+
131
+ - `verilore ingest-repo <path> --delete-removed` retires documents whose source file is gone.
132
+ - `verilore corpus reset <name> --yes` erases and re-initialises one corpus, with its grants intact.
133
+ - `verilore corpus delete <name> --yes` removes a corpus entirely.
134
+ - `verilore posture` reports whether the database role actually enforces row-level security.
135
+ - `verilore credential issue|list|grant|ungrant|revoke` manages access without changing a secret.
136
+
137
+ ## Out-of-the-box Linux and WSL2
138
+
139
+ On Linux and WSL2, `verilore init` starts a stopped container of ours, or creates
140
+ `verilore-postgres` when nothing is running, with Podman or Docker; a remote
141
+ database is never touched. When it cannot, it says why and what to do instead of
142
+ a generic error: the install command for your distribution when there is no
143
+ container engine, the engine's own error when the container will not start, and
144
+ `--database-url` when port 5432 belongs to a program that is not PostgreSQL.
145
+ Connection and authentication failures print the specific remediation (start the
146
+ service, fix the password) instead of a traceback. `pytest` auto-detects a local
147
+ development Postgres, so the suite runs with no `DATABASE_URL`.
148
+
149
+ ## Documents and claims
150
+
151
+ `remember` is for facts you have in hand. A directory of Markdown you already have
152
+ goes through `verilore ingest-repo ./docs`, and there are two ways for a document
153
+ to become memory.
154
+
155
+ **Plain Markdown needs no annotation.** A heading path scopes what follows it, and
156
+ the claims under it are its list items, its numbered entries and its `Key: Value`
157
+ lines. Every one is quoted back from the file it came from, so the evidence is the
158
+ document's own bytes:
159
+
160
+ ```markdown
161
+ # ADR 001: primary datastore
162
+
163
+ - The primary datastore is PostgreSQL 15.
164
+ - Writes go through the repository layer.
165
+
166
+ ## Status
167
+
168
+ Status: Accepted
169
+ ```
170
+
171
+ **A `claims:` block is the authoring interface** when you want to name the keys
172
+ yourself. It says what to remember, and the evidence quote must appear **verbatim**
173
+ in the body:
174
+
175
+ ```markdown
176
+ ---
177
+ title: Deployment architecture
178
+ claims:
179
+ - key: architecture.datastore
180
+ value: PostgreSQL
181
+ claim: The primary datastore is PostgreSQL.
182
+ evidence: The primary datastore is PostgreSQL.
183
+ ---
184
+
185
+ # Deployment architecture
186
+
187
+ The primary datastore is PostgreSQL. It runs in three availability zones.
188
+ ```
189
+
190
+ A `claims:` block wins outright: if a document has one, the structural reader does
191
+ not run on it. An author's key is a decision, and the tool does not second-guess it.
192
+
193
+ What is extracted is never inferred. Nothing is summarised, reworded or merged; a
194
+ claim is a line that was in the file, and its evidence is a character range of the
195
+ archived chunk. See [docs/authoring.md](docs/authoring.md) for the exact-quote rule
196
+ and both rejections with their messages.
197
+
198
+ From Python, with no server and no subprocess:
199
+
200
+ ```python
201
+ from verilore import Verilore
202
+
203
+ client = Verilore("default")
204
+ client.remember("Support answers within one business day.", key="support.sla")
205
+ memory = client.recall("What is the support SLA?").current_memories[0]
206
+ print(f"{memory.claim} [{memory.status}]")
207
+ ```
208
+
209
+ ## What it does not do
210
+
211
+ - **It does not decide what is true.** It records what was written, attributed.
212
+ Correctness of the original source is never established — only its provenance.
213
+ - **It does not infer claims.** Every claim is a line from a document (a list
214
+ item, a `Key: Value` line, or, in a document with no list items, a rule-like
215
+ sentence) or a statement you gave it, quoted back unchanged.
216
+ - **It is not a vector store.** Retrieval is one stage of a pipeline that ends in
217
+ provenance, not the product.
218
+ - **It does not authenticate its own history.** A receipt proves internal
219
+ consistency. Trust requires an anchor you pinned yourself, outside this system.
220
+ - **A draft section of an approved document is searchable.** Search and the
221
+ other chunk routes skip draft, rejected and superseded documents, but not a
222
+ `## Brainstorm` section inside an approved one (#138).
223
+ - **No token budgets.** The `budget` argument is a character count of the JSON
224
+ response, not a token count.
225
+ - **No metadata filters.** Scoping is by corpus and `path_prefix`.
226
+ - **No single-claim deletion.** Withdrawal is a new `rejected` version of the
227
+ same key; the archive is append-only.
228
+ - **No comparative benchmark result.** No number in this repository is evidence
229
+ of generalisation.
230
+ - **Prose without rule-like sentences produces no claims.** A document with no
231
+ list items and no must/never/always/should sentences is stored as text only,
232
+ and the ingest warns `prose_not_extracted` (#158).
233
+ - **Without the model, a text-only document is found by keyword only.** Under
234
+ `VERILORE_LEXICAL=1`, or when the model is not installed (the ingest then warns
235
+ `embedding_unavailable`), its text is stored without a vector until
236
+ `verilore reindex` adds one (#173).
237
+ - **A supersession retires one claim.** `--supersedes` names it, or `--topic-key`
238
+ retires whatever is live under that key, and either works across files. Where two
239
+ documents disagree under one key and neither is retired, recall reports the
240
+ disagreement rather than picking one.
241
+ - **A `claims:` block is YAML, and YAML is strict.** A backtick, a colon-space or
242
+ a leading `@` in an evidence quote discards the whole block. Quote the value.
243
+ The ingest now says `frontmatter_unparseable` instead of `no_claims_declared`.
244
+ - **An agent can write memory, and that is a risk.** `memory_remember` is one
245
+ of 17 MCP tools and the first that writes. Without `file=` the evidence for the
246
+ claim is the statement itself, so it proves what the agent was told and not that
247
+ it is true ([why, and the review it needs](docs/authoring.md#memory_remember)).
248
+ - **The install is 216 MB, not gigabytes**, unless you ask. Every latency and size
249
+ figure recorded up to v0.9.1 measured a `sentence-transformers` import, because
250
+ that was the default then; those figures describe the opt-in `[torch]` stack, not
251
+ what you get now. See [the install](#quickstart) for both sizes and what the extra
252
+ is for.
253
+ - **`--as-of` queries need a timestamp you actually wrote at.** Memory is stamped
254
+ when it is recorded, so a time-travel query dated before the write returns
255
+ nothing. There is no backdating.
256
+ - **Retrieval quality is measured on small frozen sets**, not on your corpus.
257
+ See [evaluation](docs/evaluation/) for what was actually measured, including
258
+ the questions the current system gets wrong.
259
+
260
+ ## What is measured
261
+
262
+ Two held-out numbers, and neither is superseded by the other:
263
+
264
+ | benchmark | result | what it is |
265
+ |---|---|---|
266
+ | M006.75 frozen held-out | **45/60 (75.0%)** exact on current source | the frozen benchmark, safety invariants at 60/60 |
267
+ | independently authored, 157 questions | **131/157 (83.4%)** | a generalisation figure, and a known limitation |
268
+
269
+ Both are reported because reporting only the better one would be the dishonest
270
+ choice. v0.9.0 changed no benchmark input, policy, evaluator semantic,
271
+ tokenizer or threshold, and that is measured: all 60 canonical per-question
272
+ decisions are identical to `v0.8.0`. [The reproducibility report](docs/evaluation/m00675-reproducibility.md)
273
+ records one discrepancy that release found and did not paper over.
274
+
275
+ ## Head-to-head stale-fact benchmark
276
+
277
+ A reproducible comparison between Verilore and a plain top-k chunk RAG baseline
278
+ using the same ONNX embedding model. Run with:
279
+
280
+ ```
281
+ DATABASE_URL=postgresql://mpadmin:secret@localhost:5432/verilore python scripts/benchmark_stale_facts.py
282
+ ```
283
+
284
+ The script ingests a multi-evolution ADR and spec corpus, runs Verilore and
285
+ three RAG baselines (plain top-k, recency-reranked, metadata-filtered) over
286
+ 33 questions across supersession, spec updates, half-absent compounds, and cached
287
+ answer revalidation, and prints a comparison table.
288
+
289
+ Latest run (illustrative; re-run to reproduce):
290
+
291
+ | metric | verilore | plain_rag | rag_recency | rag_metadata |
292
+ |---|---:|---:|---:|---:|
293
+ | authoritative_top1_accuracy | 0.939 | 0.303 | 0.424 | 0.939 |
294
+ | stale_contamination_rate | 0.000 | 0.970 | 0.758 | 0.000 |
295
+ | compound_completeness | 1.000 | 0.000 | 0.167 | 1.000 |
296
+ | abstention_accuracy | 1.000 | 0.500 | 0.500 | 0.500 |
297
+ | cached_revalidation_accuracy | 1.000 | 0.000 | 0.000 | 0.000 |
298
+
299
+ The corpus and questions were written by this project's author, so the table
300
+ is a regression check, not evidence of comparative quality.
301
+
302
+ ## Reading order
303
+
304
+ Four documents, and then stop.
305
+
306
+ | | | |
307
+ |---|---|---|
308
+ | 1 | This file | what it is, and what it refuses to do |
309
+ | 2 | [Quickstart](docs/quickstart.md) | the commands, expanded; every `$ ` line in it runs in CI |
310
+ | 3 | [Integration guide](docs/integration/guide.md) | wiring Verilore into an app |
311
+ | 4 | [Authoring memory](docs/authoring.md) | how to write a document that answers |
312
+
313
+ ## Everything else — later
314
+
315
+ | | |
316
+ |---|---|
317
+ | [Local runtime and model-free mode](docs/runtime.md) | the warm process, and running with no model |
318
+ | [Deployment and authentication](docs/deployment.md) | health, observability, credentials, multi-tenancy |
319
+ | [Security](docs/security.md) | threat model, credential handling, what is logged |
320
+ | [Errors](docs/errors.md) | every code the CLI and API return |
321
+ | [Deletion and erasure](docs/deletion-and-erasure.md) | removing a person's data |
322
+ | [Operational memory feed](docs/feed.md) | ordering, cursors, consistency |
323
+ | [Providers](docs/providers.md) | LLM and embedding providers |
324
+ | [Architecture and the memory model](docs/architecture/) | how the layers fit; why memory beyond RAG |
325
+ | [Surfaces](docs/quickstart.md#the-full-walkthrough) | CLI, SDK, REST, MCP, and what each can reach |
326
+ | [Status](docs/STATUS.md) | what is measured, what is outstanding |
327
+ | [Changelog](CHANGELOG.md) | every release, and every fix |
328
+ | [Release map](docs/release-map.md) | milestone to version |
329
+ | [Evaluation](docs/evaluation/) | the frozen benchmarks, and their results |
330
+ | [Progress](docs/archive/PROGRESS.md) | one line per phase; [full history](docs/archive/internal/progress-history.md) |
331
+ | [Examples](examples/) | the product in one file: [decision memory](examples/decision-memory/), [project log](examples/project-log/) |
332
+ | [Withdrawn](docs/archive/withdrawn/README.md) | material deliberately removed, and why |
333
+
334
+ ## Contributing
335
+
336
+ ```bash
337
+ uv venv --python 3.13 && . .venv/bin/activate
338
+ uv pip install -e '.[cli,mcp,dev]'
339
+ pytest -q
340
+ ```
341
+
342
+ The suite needs PostgreSQL with pgvector: `verilore init` starts one, or from the
343
+ checkout `docker compose up -d postgresql` starts the one in `docker-compose.yml`.
344
+ It will not run against an unreachable database — it fails instead of skipping
345
+ everything.
346
+ [CONTRIBUTING.md](CONTRIBUTING.md) has the rest, and [SECURITY.md](SECURITY.md)
347
+ says how to report a vulnerability privately.
348
+
349
+ ## License
350
+
351
+ Apache 2.0. See [LICENSE](LICENSE).
@@ -0,0 +1,55 @@
1
+ # Verilore
2
+
3
+ Memory for AI applications that remembers what changed, what was true when, and
4
+ why to believe the recorded state. Add Verilore to an application, record a fact,
5
+ and get back an answer with its source, the time it was true, and the exact
6
+ characters that support it. Export a receipt and verify it on a machine that has
7
+ never heard of Verilore.
8
+
9
+ ## Install
10
+
11
+ ```bash
12
+ uv tool install --python 3.13 verilore
13
+ # or, with a Python from 3.11 to 3.14:
14
+ pipx install verilore
15
+ ```
16
+
17
+ Verilore runs on macOS and Linux, and on Windows through WSL 2, with Python 3.11
18
+ to 3.14 (3.13 at most on an Intel Mac). uv downloads 3.13 if you do not have it,
19
+ which also covers a system whose own Python is newer, such as Fedora 45's 3.15
20
+ (Fedora's uv downloads only when asked: run `uv python install 3.13` first).
21
+ It needs PostgreSQL 15 or newer with pgvector: with Podman or Docker installed,
22
+ `verilore init` starts one for you, and to use one you already run, pass
23
+ `verilore init --database-url ...`.
24
+ [Your system](https://github.com/raunakdey-07/verilore/blob/main/docs/quickstart.md#your-system)
25
+ says how to get uv and Podman on each.
26
+
27
+ ## Quickstart
28
+
29
+ ```bash
30
+ verilore init
31
+ verilore ingest-repo ./docs --corpus project
32
+ verilore recall "What is the primary datastore?" --corpus project
33
+ verilore explain "What is the primary datastore?" --corpus project
34
+ ```
35
+
36
+ `init` sets up the database and records it for every later command, so nothing
37
+ needs exporting. Something wrong? Run `verilore doctor`.
38
+
39
+ From Python:
40
+
41
+ ```python
42
+ from verilore import Verilore
43
+
44
+ client = Verilore("default")
45
+ client.remember("Support answers within one business day.", key="support.sla")
46
+ memory = client.recall("What is the support SLA?").current_memories[0]
47
+ print(f"{memory.claim} [{memory.status}]")
48
+ ```
49
+
50
+ ## Links
51
+
52
+ - [README](https://github.com/raunakdey-07/verilore#readme): what it is, and what it refuses to do
53
+ - [Integration guide](https://github.com/raunakdey-07/verilore/blob/main/docs/integration/guide.md): wiring it into an app
54
+ - [Changelog](https://github.com/raunakdey-07/verilore/blob/main/CHANGELOG.md)
55
+ - [License: Apache-2.0](https://github.com/raunakdey-07/verilore/blob/main/LICENSE)