rememberstack 0.1.0__py3-none-any.whl

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 (186) hide show
  1. rememberstack/__init__.py +9 -0
  2. rememberstack/adapters/__init__.py +42 -0
  3. rememberstack/adapters/codex_writer.py +221 -0
  4. rememberstack/adapters/markitdown_converter.py +42 -0
  5. rememberstack/adapters/openrouter.py +136 -0
  6. rememberstack/adapters/selfhost/__init__.py +54 -0
  7. rememberstack/adapters/selfhost/forget.py +66 -0
  8. rememberstack/adapters/selfhost/git.py +374 -0
  9. rememberstack/adapters/selfhost/lance.py +328 -0
  10. rememberstack/adapters/selfhost/minio.py +279 -0
  11. rememberstack/adapters/selfhost/mounts.py +249 -0
  12. rememberstack/adapters/selfhost/object_store.py +130 -0
  13. rememberstack/adapters/selfhost/projection.py +80 -0
  14. rememberstack/adapters/selfhost/queue.py +137 -0
  15. rememberstack/adapters/selfhost/telemetry.py +45 -0
  16. rememberstack/adapters/selfhost/watcher.py +70 -0
  17. rememberstack/adapters/testing/__init__.py +15 -0
  18. rememberstack/adapters/testing/cost_meter.py +13 -0
  19. rememberstack/adapters/testing/model_provider.py +83 -0
  20. rememberstack/adapters/testing/queue.py +43 -0
  21. rememberstack/adapters/testing/telemetry.py +22 -0
  22. rememberstack/client.py +19 -0
  23. rememberstack/core/__init__.py +127 -0
  24. rememberstack/core/blockizer.py +189 -0
  25. rememberstack/core/chunker.py +216 -0
  26. rememberstack/core/consumption_skill.py +275 -0
  27. rememberstack/core/conversion.py +76 -0
  28. rememberstack/core/core_manifest.py +598 -0
  29. rememberstack/core/extension_packs.py +124 -0
  30. rememberstack/core/forget.py +17 -0
  31. rememberstack/core/knowledge_authored.py +276 -0
  32. rememberstack/core/knowledge_compile.py +215 -0
  33. rememberstack/core/knowledge_fact_sheet.py +210 -0
  34. rememberstack/core/knowledge_hashing.py +68 -0
  35. rememberstack/core/knowledge_planner.py +64 -0
  36. rememberstack/core/knowledge_writer.py +175 -0
  37. rememberstack/core/ranking.py +200 -0
  38. rememberstack/core/recipe_linter.py +149 -0
  39. rememberstack/core/section_snap.py +209 -0
  40. rememberstack/core/storage_routing.py +27 -0
  41. rememberstack/eval/__init__.py +53 -0
  42. rememberstack/eval/consumption.py +141 -0
  43. rememberstack/eval/contradiction.py +184 -0
  44. rememberstack/eval/harness.py +136 -0
  45. rememberstack/eval/lifecycle.py +400 -0
  46. rememberstack/eval/operational_scale.py +49 -0
  47. rememberstack/eval/resolution.py +255 -0
  48. rememberstack/eval/retrieval_spikes.py +50 -0
  49. rememberstack/eval/skeleton.py +231 -0
  50. rememberstack/llm/__init__.py +1 -0
  51. rememberstack/model/__init__.py +589 -0
  52. rememberstack/model/adjudication.py +100 -0
  53. rememberstack/model/auth.py +27 -0
  54. rememberstack/model/blocks.py +30 -0
  55. rememberstack/model/chunks.py +190 -0
  56. rememberstack/model/claims.py +162 -0
  57. rememberstack/model/client.py +98 -0
  58. rememberstack/model/clustering.py +54 -0
  59. rememberstack/model/component_version.py +124 -0
  60. rememberstack/model/consumption.py +88 -0
  61. rememberstack/model/conversion.py +31 -0
  62. rememberstack/model/deployment.py +53 -0
  63. rememberstack/model/documents.py +168 -0
  64. rememberstack/model/envelope.py +513 -0
  65. rememberstack/model/evaluation.py +72 -0
  66. rememberstack/model/forget.py +143 -0
  67. rememberstack/model/git.py +13 -0
  68. rememberstack/model/knowledge.py +840 -0
  69. rememberstack/model/knowledge_authored.py +325 -0
  70. rememberstack/model/knowledge_planner.py +431 -0
  71. rememberstack/model/lifecycle.py +42 -0
  72. rememberstack/model/model_provider.py +78 -0
  73. rememberstack/model/mounts.py +24 -0
  74. rememberstack/model/object_store.py +21 -0
  75. rememberstack/model/operational_scale.py +59 -0
  76. rememberstack/model/operations.py +153 -0
  77. rememberstack/model/processing.py +228 -0
  78. rememberstack/model/queue.py +73 -0
  79. rememberstack/model/recipes.py +83 -0
  80. rememberstack/model/relations.py +79 -0
  81. rememberstack/model/resolution.py +83 -0
  82. rememberstack/model/retrieval_spikes.py +62 -0
  83. rememberstack/model/sections.py +120 -0
  84. rememberstack/model/telemetry.py +30 -0
  85. rememberstack/ports/__init__.py +29 -0
  86. rememberstack/ports/auth.py +16 -0
  87. rememberstack/ports/connector.py +23 -0
  88. rememberstack/ports/cost_meter.py +17 -0
  89. rememberstack/ports/forget.py +20 -0
  90. rememberstack/ports/git.py +20 -0
  91. rememberstack/ports/model_provider.py +28 -0
  92. rememberstack/ports/mounts.py +16 -0
  93. rememberstack/ports/object_store.py +27 -0
  94. rememberstack/ports/p1_index.py +92 -0
  95. rememberstack/ports/purge.py +93 -0
  96. rememberstack/ports/queue.py +23 -0
  97. rememberstack/ports/telemetry.py +21 -0
  98. rememberstack/profiles/__init__.py +22 -0
  99. rememberstack/profiles/selfhost.py +324 -0
  100. rememberstack/profiles/selfhost_forget.py +158 -0
  101. rememberstack/profiles/selfhost_operations.py +95 -0
  102. rememberstack/py.typed +1 -0
  103. rememberstack/spine/__init__.py +93 -0
  104. rememberstack/spine/admission.py +26 -0
  105. rememberstack/spine/backfill.py +168 -0
  106. rememberstack/spine/catalog_contract.py +742 -0
  107. rememberstack/spine/chunk_catalog.py +237 -0
  108. rememberstack/spine/claim_catalog.py +298 -0
  109. rememberstack/spine/clustering.py +740 -0
  110. rememberstack/spine/component_versions.py +208 -0
  111. rememberstack/spine/consumption.py +81 -0
  112. rememberstack/spine/deployment_bootstrap.py +445 -0
  113. rememberstack/spine/document_catalog.py +621 -0
  114. rememberstack/spine/entity_registry.py +205 -0
  115. rememberstack/spine/extension_packs.py +220 -0
  116. rememberstack/spine/fact_catalog.py +571 -0
  117. rememberstack/spine/forget.py +1753 -0
  118. rememberstack/spine/knowledge.py +5467 -0
  119. rememberstack/spine/lifecycle.py +1071 -0
  120. rememberstack/spine/migrations/__init__.py +1 -0
  121. rememberstack/spine/migrations/_helpers.py +153 -0
  122. rememberstack/spine/migrations/env.py +58 -0
  123. rememberstack/spine/migrations/script.py.mako +27 -0
  124. rememberstack/spine/migrations/versions/__init__.py +1 -0
  125. rememberstack/spine/migrations/versions/p0_02_0001_extensions_enums.py +189 -0
  126. rememberstack/spine/migrations/versions/p0_02_0002_infrastructure_registries.py +321 -0
  127. rememberstack/spine/migrations/versions/p0_02_0003_entities_evaluation_e0_e1.py +631 -0
  128. rememberstack/spine/migrations/versions/p0_02_0004_claims_facts_evidence.py +411 -0
  129. rememberstack/spine/migrations/versions/p0_02_0005_projection_knowledge_retrieval.py +391 -0
  130. rememberstack/spine/migrations/versions/p0_02_0006_partitions_views.py +158 -0
  131. rememberstack/spine/migrations/versions/p2_06_0007_invalidated_outcome.py +26 -0
  132. rememberstack/spine/migrations/versions/p3_01_0008_document_version_target.py +58 -0
  133. rememberstack/spine/migrations/versions/p3_05_0009_reconcile_stage.py +27 -0
  134. rememberstack/spine/migrations/versions/p3_07_0010_lifecycle_eval_suite.py +25 -0
  135. rememberstack/spine/migrations/versions/p4_01_0011_survivor_view_rewrite.py +57 -0
  136. rememberstack/spine/migrations/versions/p6_02_0012_knowledge_compile_recovery.py +58 -0
  137. rememberstack/spine/migrations/versions/p6_04_0013_knowledge_writer_ledger.py +46 -0
  138. rememberstack/spine/migrations/versions/p6_05_0014_knowledge_planner_runtime.py +217 -0
  139. rememberstack/spine/migrations/versions/p6_06_0015_authored_dispatch_runtime.py +38 -0
  140. rememberstack/spine/migrations/versions/p7_02_0016_operational_eval_suite.py +19 -0
  141. rememberstack/spine/migrations/versions/p7_05_0017_hard_forget.py +55 -0
  142. rememberstack/spine/observation_adjudication.py +778 -0
  143. rememberstack/spine/operations.py +298 -0
  144. rememberstack/spine/projection.py +662 -0
  145. rememberstack/spine/recipes.py +276 -0
  146. rememberstack/spine/resolver.py +763 -0
  147. rememberstack/spine/review.py +650 -0
  148. rememberstack/spine/settings.py +22 -0
  149. rememberstack/spine/supersession.py +510 -0
  150. rememberstack/spine/sync.py +128 -0
  151. rememberstack/spine/work_ledger.py +816 -0
  152. rememberstack/surfaces/__init__.py +110 -0
  153. rememberstack/surfaces/cli.py +447 -0
  154. rememberstack/surfaces/consumption_skill.py +87 -0
  155. rememberstack/surfaces/graph_queries.py +698 -0
  156. rememberstack/surfaces/http_api.py +377 -0
  157. rememberstack/surfaces/mcp.py +67 -0
  158. rememberstack/surfaces/query_engine.py +1591 -0
  159. rememberstack/surfaces/recipe_executor.py +185 -0
  160. rememberstack/surfaces/recipe_surface.py +219 -0
  161. rememberstack/surfaces/remote_mcp.py +133 -0
  162. rememberstack/surfaces/sdk.py +324 -0
  163. rememberstack/workers/__init__.py +155 -0
  164. rememberstack/workers/base.py +312 -0
  165. rememberstack/workers/e0.py +577 -0
  166. rememberstack/workers/e1.py +425 -0
  167. rememberstack/workers/e2.py +525 -0
  168. rememberstack/workers/e3.py +434 -0
  169. rememberstack/workers/forget.py +299 -0
  170. rememberstack/workers/knowledge_authored.py +146 -0
  171. rememberstack/workers/knowledge_driver.py +735 -0
  172. rememberstack/workers/knowledge_fact_sheet.py +123 -0
  173. rememberstack/workers/knowledge_planner.py +325 -0
  174. rememberstack/workers/knowledge_writer.py +393 -0
  175. rememberstack/workers/operations.py +42 -0
  176. rememberstack/workers/p1.py +234 -0
  177. rememberstack/workers/p2.py +513 -0
  178. rememberstack/workers/p2_analytics.py +276 -0
  179. rememberstack/workers/p3.py +673 -0
  180. rememberstack/workers/reconcile.py +485 -0
  181. rememberstack/workers/sync.py +168 -0
  182. rememberstack-0.1.0.dist-info/METADATA +213 -0
  183. rememberstack-0.1.0.dist-info/RECORD +186 -0
  184. rememberstack-0.1.0.dist-info/WHEEL +4 -0
  185. rememberstack-0.1.0.dist-info/entry_points.txt +2 -0
  186. rememberstack-0.1.0.dist-info/licenses/LICENSE +201 -0
@@ -0,0 +1,143 @@
1
+ """Typed D74 hard-forget manifests, progress, and boundary failures."""
2
+
3
+ from enum import StrEnum
4
+ import hashlib
5
+ import json
6
+ from typing import Annotated
7
+ from typing import Self
8
+ from typing import TypeAlias
9
+ from uuid import UUID
10
+
11
+ from pydantic import BaseModel
12
+ from pydantic import ConfigDict
13
+ from pydantic import Field
14
+ from pydantic import model_validator
15
+ from pydantic import StringConstraints
16
+
17
+ from rememberstack.model.object_store import ObjectKey
18
+ from rememberstack.model.queue import UTCDateTime
19
+
20
+ Sha256: TypeAlias = Annotated[
21
+ str, StringConstraints(pattern=r"^[0-9a-f]{64}$", strict=True)
22
+ ]
23
+
24
+
25
+ class ForgetManifestStatus(StrEnum):
26
+ """Exact values of the binding PostgreSQL ``forget_manifest_status`` enum."""
27
+
28
+ PREPARING = "preparing"
29
+ ACCEPTED = "accepted"
30
+ COMPLETE = "complete"
31
+
32
+
33
+ class ForgetManifest(BaseModel):
34
+ """One immutable, content-free lineage-erasure manifest (D74)."""
35
+
36
+ model_config = ConfigDict(frozen=True, extra="forbid")
37
+
38
+ schema_version: int = Field(default=1, ge=1, le=1)
39
+ forget_id: UUID
40
+ deployment_id: UUID
41
+ doc_id: UUID
42
+ requested_at: UTCDateTime
43
+ source_identity_hash: Sha256 | None = None
44
+ content_hashes: tuple[Sha256, ...] = ()
45
+ chunk_ids: tuple[UUID, ...] = ()
46
+ claim_ids: tuple[UUID, ...] = ()
47
+ mention_ids: tuple[UUID, ...] = ()
48
+ resolved_entity_ids: tuple[UUID, ...] = ()
49
+ fact_ids: tuple[UUID, ...] = ()
50
+ entity_ids: tuple[UUID, ...] = ()
51
+ object_keys: tuple[ObjectKey, ...] = ()
52
+ projection_prefixes: tuple[ObjectKey, ...] = ()
53
+ k_artifact_ids: tuple[UUID, ...] = ()
54
+
55
+ @model_validator(mode="after")
56
+ def require_canonical_sets(self) -> Self:
57
+ """Require every tuple-set to be sorted and duplicate-free for stable bytes."""
58
+ fields = (
59
+ "content_hashes",
60
+ "chunk_ids",
61
+ "claim_ids",
62
+ "mention_ids",
63
+ "resolved_entity_ids",
64
+ "fact_ids",
65
+ "entity_ids",
66
+ "object_keys",
67
+ "projection_prefixes",
68
+ "k_artifact_ids",
69
+ )
70
+ for field in fields:
71
+ values = getattr(self, field)
72
+ rendered = tuple(_sort_value(value=value) for value in values)
73
+ if rendered != tuple(sorted(set(rendered))):
74
+ raise ValueError(f"{field} must be sorted and duplicate-free")
75
+ return self
76
+
77
+ def canonical_bytes(self) -> bytes:
78
+ """Render stable portable bytes used by the append idempotency contract."""
79
+ payload = self.model_dump(mode="json")
80
+ return json.dumps(
81
+ payload, ensure_ascii=False, separators=(",", ":"), sort_keys=True
82
+ ).encode("utf-8")
83
+
84
+ def sha256(self) -> str:
85
+ """Return the lowercase SHA-256 of the canonical manifest bytes."""
86
+ return hashlib.sha256(self.canonical_bytes()).hexdigest()
87
+
88
+
89
+ class ForgetManifestRecord(BaseModel):
90
+ """Local PostgreSQL materialization and verification progress for one manifest."""
91
+
92
+ model_config = ConfigDict(frozen=True, extra="forbid")
93
+
94
+ forget_id: UUID
95
+ deployment_id: UUID
96
+ doc_id: UUID
97
+ manifest: ForgetManifest | None
98
+ manifest_hash: Sha256 | None
99
+ status: ForgetManifestStatus
100
+ prepared_at: UTCDateTime
101
+ accepted_at: UTCDateTime | None
102
+ completed_at: UTCDateTime | None
103
+ last_verified_at: UTCDateTime | None
104
+
105
+
106
+ class ForgetError(RuntimeError):
107
+ """Base class for a known hard-forget boundary failure."""
108
+
109
+
110
+ class ForgetInProgressError(ForgetError):
111
+ """A public or ordinary-work call reached a deployment under the D74 barrier."""
112
+
113
+
114
+ class ForgetManifestConflictError(ForgetError):
115
+ """One forget identity was reused with different immutable manifest bytes."""
116
+
117
+
118
+ class ForgetManifestNotFoundError(ForgetError):
119
+ """The requested deployment-owned forget manifest does not exist."""
120
+
121
+
122
+ class ForgetTargetNotFoundError(ForgetError):
123
+ """The requested deployment does not own the target document lineage."""
124
+
125
+
126
+ class ForgetRedactionRequiredError(ForgetError):
127
+ """Owner-controlled K paths still cite the target and must be redacted first."""
128
+
129
+ def __init__(self, *, paths: tuple[str, ...]) -> None:
130
+ """Retain the exact sorted blocking repository paths for the caller."""
131
+ super().__init__("owner redaction is required before hard-forget acceptance")
132
+ self.paths = paths
133
+
134
+
135
+ class ForgottenSourceError(ForgetError):
136
+ """An ingest matched an irreversible source-identity or content guard."""
137
+
138
+
139
+ def _sort_value(*, value: object) -> str:
140
+ """Render one manifest set member to its canonical lexical sort key."""
141
+ if isinstance(value, ObjectKey):
142
+ return value.root
143
+ return str(value)
@@ -0,0 +1,13 @@
1
+ """Shared value identifying a checked-out or published Plane-K revision."""
2
+
3
+ from typing import Annotated
4
+
5
+ from pydantic import ConfigDict
6
+ from pydantic import Field
7
+ from pydantic import RootModel
8
+
9
+
10
+ class KRevision(RootModel[Annotated[str, Field(min_length=1)]]):
11
+ """Opaque git revision returned by the narrow Plane-K remote seam."""
12
+
13
+ model_config = ConfigDict(frozen=True)