@empressaio/atom-contract 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (251) hide show
  1. package/CHANGELOG.md +360 -0
  2. package/README.md +379 -0
  3. package/dist/composition.d.ts +112 -0
  4. package/dist/composition.d.ts.map +1 -0
  5. package/dist/composition.js +80 -0
  6. package/dist/composition.js.map +1 -0
  7. package/dist/conformance/common.d.ts +21 -0
  8. package/dist/conformance/common.d.ts.map +1 -0
  9. package/dist/conformance/common.js +29 -0
  10. package/dist/conformance/common.js.map +1 -0
  11. package/dist/conformance/fixtures.d.ts +13 -0
  12. package/dist/conformance/fixtures.d.ts.map +1 -0
  13. package/dist/conformance/fixtures.js +63 -0
  14. package/dist/conformance/fixtures.js.map +1 -0
  15. package/dist/conformance/index.d.ts +11 -0
  16. package/dist/conformance/index.d.ts.map +1 -0
  17. package/dist/conformance/index.js +11 -0
  18. package/dist/conformance/index.js.map +1 -0
  19. package/dist/conformance/validate.d.ts +49 -0
  20. package/dist/conformance/validate.d.ts.map +1 -0
  21. package/dist/conformance/validate.js +138 -0
  22. package/dist/conformance/validate.js.map +1 -0
  23. package/dist/conformance/verify-chain.d.ts +25 -0
  24. package/dist/conformance/verify-chain.d.ts.map +1 -0
  25. package/dist/conformance/verify-chain.js +76 -0
  26. package/dist/conformance/verify-chain.js.map +1 -0
  27. package/dist/context.d.ts +134 -0
  28. package/dist/context.d.ts.map +1 -0
  29. package/dist/context.js +110 -0
  30. package/dist/context.js.map +1 -0
  31. package/dist/encumbrances/administrative-rule.d.ts +128 -0
  32. package/dist/encumbrances/administrative-rule.d.ts.map +1 -0
  33. package/dist/encumbrances/administrative-rule.js +18 -0
  34. package/dist/encumbrances/administrative-rule.js.map +1 -0
  35. package/dist/encumbrances/common.d.ts +153 -0
  36. package/dist/encumbrances/common.d.ts.map +1 -0
  37. package/dist/encumbrances/common.js +124 -0
  38. package/dist/encumbrances/common.js.map +1 -0
  39. package/dist/encumbrances/constraint-resolution.d.ts +169 -0
  40. package/dist/encumbrances/constraint-resolution.d.ts.map +1 -0
  41. package/dist/encumbrances/constraint-resolution.js +41 -0
  42. package/dist/encumbrances/constraint-resolution.js.map +1 -0
  43. package/dist/encumbrances/fixtures.d.ts +16 -0
  44. package/dist/encumbrances/fixtures.d.ts.map +1 -0
  45. package/dist/encumbrances/fixtures.js +107 -0
  46. package/dist/encumbrances/fixtures.js.map +1 -0
  47. package/dist/encumbrances/index.d.ts +15 -0
  48. package/dist/encumbrances/index.d.ts.map +1 -0
  49. package/dist/encumbrances/index.js +15 -0
  50. package/dist/encumbrances/index.js.map +1 -0
  51. package/dist/encumbrances/recorded-instrument.d.ts +131 -0
  52. package/dist/encumbrances/recorded-instrument.d.ts.map +1 -0
  53. package/dist/encumbrances/recorded-instrument.js +19 -0
  54. package/dist/encumbrances/recorded-instrument.js.map +1 -0
  55. package/dist/encumbrances/restriction-clause.d.ts +120 -0
  56. package/dist/encumbrances/restriction-clause.d.ts.map +1 -0
  57. package/dist/encumbrances/restriction-clause.js +17 -0
  58. package/dist/encumbrances/restriction-clause.js.map +1 -0
  59. package/dist/encumbrances/restriction-corpus.d.ts +44 -0
  60. package/dist/encumbrances/restriction-corpus.d.ts.map +1 -0
  61. package/dist/encumbrances/restriction-corpus.js +14 -0
  62. package/dist/encumbrances/restriction-corpus.js.map +1 -0
  63. package/dist/export/downloadable-atom.d.ts +133 -0
  64. package/dist/export/downloadable-atom.d.ts.map +1 -0
  65. package/dist/export/downloadable-atom.js +115 -0
  66. package/dist/export/downloadable-atom.js.map +1 -0
  67. package/dist/export/index.d.ts +6 -0
  68. package/dist/export/index.d.ts.map +1 -0
  69. package/dist/export/index.js +6 -0
  70. package/dist/export/index.js.map +1 -0
  71. package/dist/history.d.ts +124 -0
  72. package/dist/history.d.ts.map +1 -0
  73. package/dist/history.js +170 -0
  74. package/dist/history.js.map +1 -0
  75. package/dist/index.d.ts +29 -0
  76. package/dist/index.d.ts.map +1 -0
  77. package/dist/index.js +20 -0
  78. package/dist/index.js.map +1 -0
  79. package/dist/inline-reference.d.ts +60 -0
  80. package/dist/inline-reference.d.ts.map +1 -0
  81. package/dist/inline-reference.js +73 -0
  82. package/dist/inline-reference.js.map +1 -0
  83. package/dist/obligation.d.ts +131 -0
  84. package/dist/obligation.d.ts.map +1 -0
  85. package/dist/obligation.js +55 -0
  86. package/dist/obligation.js.map +1 -0
  87. package/dist/og/common.d.ts +253 -0
  88. package/dist/og/common.d.ts.map +1 -0
  89. package/dist/og/common.js +195 -0
  90. package/dist/og/common.js.map +1 -0
  91. package/dist/og/completion.d.ts +70 -0
  92. package/dist/og/completion.d.ts.map +1 -0
  93. package/dist/og/completion.js +22 -0
  94. package/dist/og/completion.js.map +1 -0
  95. package/dist/og/equipment-state.d.ts +55 -0
  96. package/dist/og/equipment-state.d.ts.map +1 -0
  97. package/dist/og/equipment-state.js +25 -0
  98. package/dist/og/equipment-state.js.map +1 -0
  99. package/dist/og/fixtures.d.ts +40 -0
  100. package/dist/og/fixtures.d.ts.map +1 -0
  101. package/dist/og/fixtures.js +255 -0
  102. package/dist/og/fixtures.js.map +1 -0
  103. package/dist/og/index.d.ts +23 -0
  104. package/dist/og/index.d.ts.map +1 -0
  105. package/dist/og/index.js +23 -0
  106. package/dist/og/index.js.map +1 -0
  107. package/dist/og/mineral-lease.d.ts +150 -0
  108. package/dist/og/mineral-lease.d.ts.map +1 -0
  109. package/dist/og/mineral-lease.js +24 -0
  110. package/dist/og/mineral-lease.js.map +1 -0
  111. package/dist/og/ownership-interest.d.ts +163 -0
  112. package/dist/og/ownership-interest.d.ts.map +1 -0
  113. package/dist/og/ownership-interest.js +36 -0
  114. package/dist/og/ownership-interest.js.map +1 -0
  115. package/dist/og/pad.d.ts +101 -0
  116. package/dist/og/pad.d.ts.map +1 -0
  117. package/dist/og/pad.js +19 -0
  118. package/dist/og/pad.js.map +1 -0
  119. package/dist/og/production-timeseries.d.ts +154 -0
  120. package/dist/og/production-timeseries.d.ts.map +1 -0
  121. package/dist/og/production-timeseries.js +37 -0
  122. package/dist/og/production-timeseries.js.map +1 -0
  123. package/dist/og/revenue-allocation-unit.d.ts +762 -0
  124. package/dist/og/revenue-allocation-unit.d.ts.map +1 -0
  125. package/dist/og/revenue-allocation-unit.js +105 -0
  126. package/dist/og/revenue-allocation-unit.js.map +1 -0
  127. package/dist/og/rrc-lease.d.ts +124 -0
  128. package/dist/og/rrc-lease.d.ts.map +1 -0
  129. package/dist/og/rrc-lease.js +29 -0
  130. package/dist/og/rrc-lease.js.map +1 -0
  131. package/dist/og/tract.d.ts +88 -0
  132. package/dist/og/tract.d.ts.map +1 -0
  133. package/dist/og/tract.js +30 -0
  134. package/dist/og/tract.js.map +1 -0
  135. package/dist/og/well.d.ts +201 -0
  136. package/dist/og/well.d.ts.map +1 -0
  137. package/dist/og/well.js +40 -0
  138. package/dist/og/well.js.map +1 -0
  139. package/dist/og/wellbore.d.ts +61 -0
  140. package/dist/og/wellbore.d.ts.map +1 -0
  141. package/dist/og/wellbore.js +25 -0
  142. package/dist/og/wellbore.js.map +1 -0
  143. package/dist/og/zone.d.ts +45 -0
  144. package/dist/og/zone.d.ts.map +1 -0
  145. package/dist/og/zone.js +16 -0
  146. package/dist/og/zone.js.map +1 -0
  147. package/dist/read-contract/common.d.ts +74 -0
  148. package/dist/read-contract/common.d.ts.map +1 -0
  149. package/dist/read-contract/common.js +54 -0
  150. package/dist/read-contract/common.js.map +1 -0
  151. package/dist/read-contract/consequence.d.ts +99 -0
  152. package/dist/read-contract/consequence.d.ts.map +1 -0
  153. package/dist/read-contract/consequence.js +46 -0
  154. package/dist/read-contract/consequence.js.map +1 -0
  155. package/dist/read-contract/fixtures.d.ts +8 -0
  156. package/dist/read-contract/fixtures.d.ts.map +1 -0
  157. package/dist/read-contract/fixtures.js +44 -0
  158. package/dist/read-contract/fixtures.js.map +1 -0
  159. package/dist/read-contract/index.d.ts +14 -0
  160. package/dist/read-contract/index.d.ts.map +1 -0
  161. package/dist/read-contract/index.js +14 -0
  162. package/dist/read-contract/index.js.map +1 -0
  163. package/dist/read-contract/model-attribution.d.ts +85 -0
  164. package/dist/read-contract/model-attribution.d.ts.map +1 -0
  165. package/dist/read-contract/model-attribution.js +30 -0
  166. package/dist/read-contract/model-attribution.js.map +1 -0
  167. package/dist/read-contract/read-contract.d.ts +455 -0
  168. package/dist/read-contract/read-contract.d.ts.map +1 -0
  169. package/dist/read-contract/read-contract.js +46 -0
  170. package/dist/read-contract/read-contract.js.map +1 -0
  171. package/dist/registration.d.ts +192 -0
  172. package/dist/registration.d.ts.map +1 -0
  173. package/dist/registration.js +15 -0
  174. package/dist/registration.js.map +1 -0
  175. package/dist/registry.d.ts +128 -0
  176. package/dist/registry.d.ts.map +1 -0
  177. package/dist/registry.js +122 -0
  178. package/dist/registry.js.map +1 -0
  179. package/dist/render.d.ts +30 -0
  180. package/dist/render.d.ts.map +1 -0
  181. package/dist/render.js +44 -0
  182. package/dist/render.js.map +1 -0
  183. package/dist/scope.d.ts +46 -0
  184. package/dist/scope.d.ts.map +1 -0
  185. package/dist/scope.js +17 -0
  186. package/dist/scope.js.map +1 -0
  187. package/dist/temporal/anticipatory-atom.d.ts +123 -0
  188. package/dist/temporal/anticipatory-atom.d.ts.map +1 -0
  189. package/dist/temporal/anticipatory-atom.js +124 -0
  190. package/dist/temporal/anticipatory-atom.js.map +1 -0
  191. package/dist/temporal/common.d.ts +47 -0
  192. package/dist/temporal/common.d.ts.map +1 -0
  193. package/dist/temporal/common.js +100 -0
  194. package/dist/temporal/common.js.map +1 -0
  195. package/dist/temporal/fixtures.d.ts +7 -0
  196. package/dist/temporal/fixtures.d.ts.map +1 -0
  197. package/dist/temporal/fixtures.js +21 -0
  198. package/dist/temporal/fixtures.js.map +1 -0
  199. package/dist/temporal/index.d.ts +13 -0
  200. package/dist/temporal/index.d.ts.map +1 -0
  201. package/dist/temporal/index.js +13 -0
  202. package/dist/temporal/index.js.map +1 -0
  203. package/dist/temporal/interval-query.d.ts +42 -0
  204. package/dist/temporal/interval-query.d.ts.map +1 -0
  205. package/dist/temporal/interval-query.js +49 -0
  206. package/dist/temporal/interval-query.js.map +1 -0
  207. package/dist/temporal/node-id.d.ts +112 -0
  208. package/dist/temporal/node-id.d.ts.map +1 -0
  209. package/dist/temporal/node-id.js +208 -0
  210. package/dist/temporal/node-id.js.map +1 -0
  211. package/dist/temporal/would-affect-edge.d.ts +66 -0
  212. package/dist/temporal/would-affect-edge.d.ts.map +1 -0
  213. package/dist/temporal/would-affect-edge.js +113 -0
  214. package/dist/temporal/would-affect-edge.js.map +1 -0
  215. package/dist/testing/index.d.ts +98 -0
  216. package/dist/testing/index.d.ts.map +1 -0
  217. package/dist/testing/index.js +225 -0
  218. package/dist/testing/index.js.map +1 -0
  219. package/dist/vda.d.ts +46 -0
  220. package/dist/vda.d.ts.map +1 -0
  221. package/dist/vda.js +42 -0
  222. package/dist/vda.js.map +1 -0
  223. package/dist/workspace/brief-run.d.ts +104 -0
  224. package/dist/workspace/brief-run.d.ts.map +1 -0
  225. package/dist/workspace/brief-run.js +32 -0
  226. package/dist/workspace/brief-run.js.map +1 -0
  227. package/dist/workspace/common.d.ts +42 -0
  228. package/dist/workspace/common.d.ts.map +1 -0
  229. package/dist/workspace/common.js +26 -0
  230. package/dist/workspace/common.js.map +1 -0
  231. package/dist/workspace/fixtures.d.ts +10 -0
  232. package/dist/workspace/fixtures.d.ts.map +1 -0
  233. package/dist/workspace/fixtures.js +93 -0
  234. package/dist/workspace/fixtures.js.map +1 -0
  235. package/dist/workspace/index.d.ts +13 -0
  236. package/dist/workspace/index.d.ts.map +1 -0
  237. package/dist/workspace/index.js +13 -0
  238. package/dist/workspace/index.js.map +1 -0
  239. package/dist/workspace/property-workspace.d.ts +148 -0
  240. package/dist/workspace/property-workspace.d.ts.map +1 -0
  241. package/dist/workspace/property-workspace.js +21 -0
  242. package/dist/workspace/property-workspace.js.map +1 -0
  243. package/dist/workspace/workspace-attachment.d.ts +99 -0
  244. package/dist/workspace/workspace-attachment.d.ts.map +1 -0
  245. package/dist/workspace/workspace-attachment.js +35 -0
  246. package/dist/workspace/workspace-attachment.js.map +1 -0
  247. package/dist/workspace/workspace-share-edge.d.ts +115 -0
  248. package/dist/workspace/workspace-share-edge.d.ts.map +1 -0
  249. package/dist/workspace/workspace-share-edge.js +22 -0
  250. package/dist/workspace/workspace-share-edge.js.map +1 -0
  251. package/package.json +107 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,360 @@
1
+ # Changelog
2
+
3
+ All notable changes to `@empressaio/atom-contract` (formerly `@hauska/atom-contract`) are documented here.
4
+
5
+ ## [1.7.0] - 2026-07-06
6
+
7
+ O&G ontology module (ADR-025) and package rename to Empressa branding. Additive
8
+ minor — no changes to existing unions, required fields, or exports. Consumers on
9
+ `^1.6` are unaffected until they import `./og` or adopt the new package name.
10
+
11
+ ### Added
12
+
13
+ - `@empressaio/atom-contract/og` subpath — O&G atom types per ADR-025:
14
+ - **Asset spine (operations lens):** `well`, `wellbore`, `completion`, `zone`,
15
+ `pad` with node prefixes `well_`, `wbore_`, `cmpl_`, `zone_`, `pad_`.
16
+ Legible-DID exception: `well_<api14>` embeds API-14 identity rather than
17
+ hashing.
18
+ - **Production:** `production-timeseries` (`prodts_` prefix) models the
19
+ reporting split (Texas oil at RRC lease level, gas at well level). Public
20
+ regulatory streams are `public-free`; operator telemetry streams are
21
+ `tenant-private`. `equipment-state` (`equip_` prefix) is operator-overlay
22
+ data (`tenant-private` by default).
23
+ - **Land leg:** `mineral-lease` (`mlease_` prefix), `rrc-lease` (`rrclease_`
24
+ prefix with legible DID `rrclease_<district>-<leaseNo>`), `tract`
25
+ (`tract_<county>-<abstract>` where abstract-keyed), `ownership-interest`
26
+ (`intr_` prefix, discriminated type with `interestType` field). Reconciles
27
+ with ADR-020: `mineral-lease.evidencedByInstrumentDids` links to
28
+ `recorded-instrument` atoms.
29
+ - **Revenue allocation (C1b, Herbert review applied 2026-07-06):**
30
+ `revenue-allocation-unit` (`unit_` prefix) — first-class object with two
31
+ source adapters (pooled-unit from recorded instruments, allocation-well
32
+ from RRC plat), discriminated by `basis` field. Tract participations carry
33
+ operator-asserted factors tagged with `allocationMethod` (stated-fraction,
34
+ acreage, lateral-length, take-points, acre-feet, oil-in-place, other) and
35
+ source — schema enforces no bare factors without method + source. Pooled
36
+ units carry sourceInstrumentDids, ratificationInstrumentDids, and per-tract
37
+ ratificationGaps (Opiela evidentiary pattern). Allocation wells carry
38
+ sourcePlatCid with per-tract take points and productive lateral footage.
39
+ DOI is derived (engine run); obtained operator DOIs linked by
40
+ `reconciles-with` edge.
41
+ - Zod schemas, TypeScript interfaces, sample fixtures, and recommended
42
+ render-mode/access-policy constants for all twelve types.
43
+ - **Core `obligation` type** (ships in main contract module, not `./og`):
44
+ domain-neutral from birth (Mox and O&G consume the same shape). Node prefix
45
+ `oblg_` registers with core prefix set. Status is engine-derived, never
46
+ hand-asserted; each derivation is a `procedure-execution` atom (ADR-013).
47
+ `./og` re-exports `obligation` for convenience.
48
+ - **Additive INSTRUMENT_TYPES extension** in `./encumbrances`: `oil-gas-lease`,
49
+ `mineral-deed`, `assignment`, `division-order` added to the ADR-020 union;
50
+ **recorded unit family (C1b)** added: `unit-designation`,
51
+ `declaration-of-pooling`, `ratification-of-unit`,
52
+ `amendment-of-unit-designation`, `release-of-unit`. Per ADR-025
53
+ reconciliation: the recorded mineral lease instrument is a
54
+ `recorded-instrument`, not a new recording type. Ratifications are
55
+ load-bearing (pooling often not binding until ratified).
56
+ - **Link vocabulary extension (C1b):** `reconciles-with` semantic edge
57
+ documented in `./og/common.ts` — links computed DOI decimals to obtained
58
+ operator DOI / signed division orders. Discrepancies surface as disputes,
59
+ never silent overwrites. Per ADR-025 Herbert review: "The DOI is derived,
60
+ never source."
61
+
62
+ ### Changed
63
+
64
+ - **Package renamed:** `@hauska/atom-contract` → `@empressaio/atom-contract`.
65
+ Branding decision per `_decisions/2026-07-06_branding_hauska_sdk_only.md`.
66
+ Existing `@hauska/atom-contract@^1.6` consumers stay green on the old name;
67
+ consumers adopt 1.7.0 by changing the package name alongside the version bump
68
+ they already need to import `./og`.
69
+ - README title and branding updated to Empressa throughout.
70
+
71
+ ### Consumer migration notes
72
+
73
+ - Pin `@empressaio/atom-contract@^1.7.0` and change package name in dependencies
74
+ when adopting O&G types.
75
+ - Import O&G contracts from `@empressaio/atom-contract/og`; main barrel and
76
+ other subpaths unchanged.
77
+ - `obligation` is exported from the main barrel (`@empressaio/atom-contract`)
78
+ as a core type; `./og` re-exports it for O&G consumers' convenience.
79
+ - Every O&G atom carries `WidthedConfidence`, `sourceCitation`, `extractedAt`,
80
+ `asOf?`, and `accessPolicy` per ADR-025's quality-gate discipline. At
81
+ activation the entire domain is uncalibrated (`provenance: "asserted"`).
82
+ - No publish to npm is included in this release; publish is staged for operator
83
+ manual execution.
84
+
85
+ ## [1.6.1] - 2026-07-05
86
+
87
+ Restores git provenance for the conformance + export modules (shipped in the
88
+ 1.5.0 tarball but untracked in git until PR #3); carries the 1.6.0
89
+ anticipatory-atom / would_affect / evt_ features. No API changes versus the
90
+ 1.5.0 tarball plus 1.6.0 temporal additions; provenance-only republish so
91
+ published tree equals git HEAD.
92
+
93
+ ## [1.6.0] - 2026-06-30
94
+
95
+ Temporal-Context Engine substrate (anticipatory atoms, would_affect edges,
96
+ evt_ node prefix). Additive release — no changes to `accessPolicy` or other
97
+ existing unions.
98
+
99
+ ### Added
100
+
101
+ - `@hauska/atom-contract/temporal` subpath:
102
+ - **Anticipatory event atoms** — `claim_type` prefix `anticipatory.<kind>`
103
+ (open sub-kind; unknown kinds fall back to base event-family behavior).
104
+ `valid_from` MAY be in the future (only atom type where this is
105
+ semantically correct). New deposits require `confidence.basis: "asserted"`.
106
+ `warnFutureValidFromOnNonAnticipatory()` flags future `valid_from` on
107
+ other claim types as a data-quality warning.
108
+ - **`WouldAffectEdge`** — structural `would_affect` edge from `evt_`
109
+ source to subject node (`parcel_`, `jurisdiction_`, etc.) with required
110
+ ISO 8601 `effectiveDate` and `immutable: true` discriminant. Effect
111
+ probability is not on this edge (derived atom, re-estimated over time).
112
+ - **`evt_` node-type prefix** — added to `NodeTypePrefix` registry.
113
+ `deriveEvtNodeId(source, externalId)` and `validateEvtNodeAnchor()`
114
+ enforce stable-ID discipline; unanchored manual IDs are rejected.
115
+ - **Interval query helpers** — `isAtomVisibleAtAsOf()` /
116
+ `filterAtomsForAsOf()` with explicit `includeAnticipatory` opt-in so
117
+ future-dated anticipatory atoms are not silently excluded.
118
+
119
+ ### Consumer migration notes
120
+
121
+ - Pin `@hauska/atom-contract@^1.6.0` when adopting TCE types (cc-agent-C,
122
+ cc-agent-E co-bump window).
123
+ - Import from `@hauska/atom-contract/temporal`; main barrel unchanged.
124
+
125
+ ## [1.5.0] - 2026-06-21
126
+
127
+ Calibrated Spine Wave 2 — migrate legacy scalar confidence on
128
+ `./encumbrances` and `./workspace` subpaths to `WidthedConfidence`.
129
+
130
+ ### Changed (breaking on subpaths)
131
+
132
+ - `./encumbrances` `QUALITY_GATE_FIELDS.confidence` — `number` →
133
+ `WidthedConfidence` (Zod: `WIDTHED_CONFIDENCE_SCHEMA`).
134
+ - `./encumbrances` atom instances (`restriction-clause`,
135
+ `administrative-rule`) and `constraint-resolution.rules[].confidence`
136
+ — same widthed shape; bare scalars fail schema validation.
137
+ - `./workspace` `BriefRun.confidence` — `number` → `WidthedConfidence`.
138
+
139
+ ### Added
140
+
141
+ - `createEncumbranceQualityConfidence()` — asserted quality-gate helper
142
+ for encumbrance extract deposits (`n: 0`, `intervalWidth: 1`,
143
+ `provenance: "asserted"`).
144
+ - `createBriefRunAssertedConfidence()` — same pattern for brief-run
145
+ deposits.
146
+ - Schema tests rejecting bare scalar confidence on encumbrance and
147
+ brief-run payloads.
148
+
149
+ ### Consumer migration notes
150
+
151
+ - Pin `@hauska/atom-contract@^1.5.0` when adopting widthed encumbrance
152
+ or workspace confidence fields.
153
+ - Replace `confidence: 0.92` with
154
+ `confidence: createEncumbranceQualityConfidence(0.92)` (or full
155
+ `createWidthedConfidence()` when `n`, width, and provenance are known).
156
+ - Co-bump with cortex-api encumbrance and brokerage workspace paths
157
+ (cc-agent-C) in the same release window.
158
+
159
+ ## [1.4.0] - 2026-06-21
160
+
161
+ Calibrated Spine Wave 1 read-contract substrate (F4 / F6 / K6).
162
+ Contract-only: types, Zod schemas, branded constructors, and fixtures.
163
+ No derived numbers are stored; consumers derive agreement and posteriors
164
+ at read time.
165
+
166
+ ### Added
167
+
168
+ - `@hauska/atom-contract/read-contract` subpath with:
169
+ - `WidthedConfidence` — estimate + `n` + `intervalWidth` +
170
+ `CalibrationProvenance` as one inseparable object; estimate is a
171
+ branded nominal type with no exported scalar confidence alias.
172
+ - `ThreeAxisConfidence` — `calibratedConfidence` (accuracy, earned),
173
+ `assertedConfidence` (source-quality, asserted), `consequence`
174
+ (severity stratum from ASCE 7 / IBC classification inputs).
175
+ - `ReadContract` — three-axis object plus optional
176
+ `ModelAttributionStamp` for ledger deposit provenance.
177
+ - `CalibrationProvenance` union: `asserted` | `backtest` | `seed` |
178
+ `live` (K6).
179
+ - `ModelAttributionStamp` — model id/version, prompt and context
180
+ template versions, sampling params, retrieved atom-set id (F3
181
+ ledger stamp shape; not persisted derived quantities).
182
+ - `LegacyEngineEnvelopeConfidence` — documented migration source
183
+ only; not a valid emission shape once F4 propagation lands.
184
+ - Zod schemas, `create*` factories, sample fixtures, and type-level
185
+ tests enforcing the no-scalar-accessor contract.
186
+
187
+ ### Consumer migration notes
188
+
189
+ - Pin `@hauska/atom-contract@^1.4.0` and import from
190
+ `@hauska/atom-contract/read-contract`.
191
+ - Replace bare `{ value, kind }` confidence emissions with
192
+ `ReadContract` / `ThreeAxisConfidence`; use
193
+ `createWidthedConfidence` — raw numbers fail the branded estimate
194
+ type.
195
+ - Co-bump required across MCP server, cortex-api, Cortex, extension,
196
+ and map once each surface is migrated (Wave 2 propagation).
197
+ - Main barrel unchanged; existing v1.3.0 consumers are unaffected
198
+ until they opt into the subpath.
199
+
200
+ ## [1.3.0] - 2026-05-28
201
+
202
+ Adds brokerage workspace packaging contracts for Property Workspace V1.
203
+ This release is contract-only: schemas, exported types, and fixtures for
204
+ downstream engine and legacy-design-tools integration.
205
+
206
+ ### Added
207
+
208
+ - `@hauska/atom-contract/workspace` subpath with Zod schemas, TS types,
209
+ and validators for `property-workspace`, `brief-run`,
210
+ `workspace-attachment`, and `workspace-share-edge`.
211
+ - Shared metadata schema (`did`, `createdAt`, `updatedAt`, `accessPolicy`)
212
+ and common user-reference schema for workspace payloads.
213
+ - Validation fixtures and schema conformance tests for all four new
214
+ contract entities.
215
+
216
+ ### Consumer migration notes
217
+
218
+ - Update dependency to `@hauska/atom-contract@^1.3.0`.
219
+ - Import workspace contracts from `@hauska/atom-contract/workspace`.
220
+ - Validate outbound/inbound workspace payloads against the new schemas
221
+ before passing entities to engine ingestion or legacy-design-tools APIs.
222
+ - Preserve the common metadata fields on all four entities. Existing
223
+ payloads missing `did`, `createdAt`, `updatedAt`, or `accessPolicy`
224
+ must be backfilled by consumers before validation succeeds.
225
+ - `workspace-attachment` now enforces kind-specific payload shape:
226
+ `note` requires `body`; `link|image|pdf` require `uri`.
227
+
228
+ ## [1.2.0] - 2026-05-26
229
+
230
+ Recorded private encumbrance atom types per ADR-020 and
231
+ `constraint-resolution` per ADR-021. Unblocks Cortex Phase 1
232
+ (cc-agent-C) and engine registry registration (cc-agent-E).
233
+
234
+ ### Added
235
+
236
+ - `@hauska/atom-contract/encumbrances` subpath — Zod schemas, TS
237
+ interfaces, sample fixtures, and recommended render-mode constants
238
+ for: `recorded-instrument`, `restriction-clause`, `restriction-corpus`,
239
+ `administrative-rule`, `constraint-resolution`.
240
+ - `ENCUMBRANCE_RENDER_MODES` / `ENCUMBRANCE_DEFAULT_RENDER_MODE` —
241
+ documents `focus` as the default for `restriction-clause` citation
242
+ surfaces.
243
+ - `ENCUMBRANCE_DEFAULT_ACCESS_POLICY` — atom-type defaults; all
244
+ encumbrance payloads reject `public-free` at validation time.
245
+
246
+ ### Changed
247
+
248
+ - `AccessPolicy` union gains `tenant-shared` (ADR-017; required by
249
+ ADR-020 `restriction-corpus` and HOA packs).
250
+ - `zod@^3.24.1` added as a direct dependency (schemas only; main barrel
251
+ unchanged).
252
+
253
+ ### Consumer impact
254
+
255
+ Non-breaking for existing v1.1.0 consumers on the main import path.
256
+ Encumbrance consumers pin `^1.2.0` and import
257
+ `@hauska/atom-contract/encumbrances`. Engine atom-registry registration
258
+ is a separate `@hauska-engine/atoms` bump (cc-agent-E dispatch).
259
+
260
+ ## [1.1.0] - 2026-05-19
261
+
262
+ Visibility partitioning. Wires the ADR-017 `accessPolicy` tier into
263
+ the contract so catalog and MCP surfaces can gate visibility without
264
+ inventing their own tagging scheme. Driver: the 2026-05-19 sprint's
265
+ partnership-first sourcing constraint — Smithville, Elgin, and Bastrop
266
+ County need to ingest as platform-internal until Sylvia closes
267
+ partnership, while Bastrop UDC ships public.
268
+
269
+ ### Shape decision
270
+
271
+ The dispatch offered two paths: reuse the ADR-017 `accessPolicy` model
272
+ or add a fresh boolean-ish `visibility` field. **Chose ADR-017**: the
273
+ four-value union (`public-free` / `public-paid` / `platform-internal`
274
+ / `tenant-private`) is documented, covers anticipated tenant- and
275
+ paid-tier cases without a second migration, and avoids ending up with
276
+ two overlapping concepts after ADR-017 lands properly.
277
+
278
+ ### Added
279
+
280
+ - `AccessPolicy` type — the four-value ADR-017 union — exported from
281
+ the package barrel.
282
+ - `AtomRegistration.accessPolicy?: AccessPolicy` — atom-type default
283
+ tier. Undeclared = `"public-free"`.
284
+ - `ContextSummary.accessPolicy?: AccessPolicy` — per-instance override.
285
+ Lets a mostly-public atom (e.g. `jurisdiction-corpus`) mark
286
+ individual instances `"platform-internal"` until partnership closes.
287
+ Per-instance value wins when both are present; otherwise fall back
288
+ to the registration default, then `"public-free"`.
289
+ - `AtomPromptDescription.accessPolicy: AccessPolicy` —
290
+ `registry.describeForPrompt()` normalizes the registration's
291
+ undeclared field to `"public-free"` so downstream visibility filters
292
+ can branch without nullish guards.
293
+ - `httpContextSummary` passes `accessPolicy` through from the server
294
+ response verbatim. Absent → `undefined`, so the per-instance /
295
+ registration / `"public-free"` fallback chain is preserved.
296
+
297
+ ### Consumer impact
298
+
299
+ No breaking changes. Existing v1.0.0 consumers pin `^1.0.0` and pick
300
+ up v1.1.0 automatically. Registrations that omit `accessPolicy`
301
+ continue to behave as before; downstream surfaces that do not consult
302
+ the field are unaffected.
303
+
304
+ ### Not changed
305
+
306
+ Render-mode stubs (per-mode React components) live in a sibling
307
+ package — this contract package ships the AtomMode union only, so
308
+ there are no render-mode stubs to update in this repo. The dispatch's
309
+ "flag in expanded mode for operator inspection" expectation belongs
310
+ on the eventual `<AtomShell>` consumer.
311
+
312
+ ## [1.0.0] - 2026-05-18
313
+
314
+ Initial public release. M2-C extraction of the workspace-private
315
+ `@workspace/empressa-atom` framework that lived at
316
+ `legacy-design-tools/lib/empressa-atom/`.
317
+
318
+ ### Added
319
+
320
+ - Atom registration contract (`AtomRegistration<TType, TSupported>`)
321
+ with literal-narrowed `entityType` and compile-time
322
+ `defaultMode ⊂ supportedModes` enforcement.
323
+ - Five-mode render union: `inline`, `compact`, `card`, `expanded`,
324
+ `focus`.
325
+ - `createAtomRegistry()` with `register`, `registerAny`, `resolve`,
326
+ `list`, `listByDomain`, `validate`, `describeForPrompt`.
327
+ - Multi-child composition declaration with `forwardRef` opt-out and
328
+ `resolveComposition` resolver.
329
+ - `ContextSummary` four-layer shape (`prose`, `typed`, `keyMetrics`,
330
+ `relatedAtoms`) plus `historyProvenance` and `scopeFiltered`.
331
+ - `Scope` object passed at the `contextSummary` call site
332
+ (`audience`, `requestor`, `asOf`, `permissions`).
333
+ - `httpContextSummary` helper: fetch-backed context loader with
334
+ scope-keyed TTL cache and `invalidate` / `clear` hooks.
335
+ - `EventAnchoringService` interface plus `PostgresEventAnchoringService`
336
+ with deterministic SHA-256 chain hash and per-entity advisory lock.
337
+ - `wrapForStorage` / `unwrapFromStorage` no-op envelope (VDA placeholder).
338
+ - Inline reference syntax `{{atom|type|id|label}}` with
339
+ `parseInlineReferences` and `serializeInlineReference`.
340
+ - `./testing` subpath: `createTestRegistry`, `createInMemoryEventService`,
341
+ `runAtomContractTests`.
342
+
343
+ ### Lineage
344
+
345
+ Substrate placement per doc_repo ADR-018 (atom contract substrate layer
346
+ placement and Hauska namespace, accepted 2026-05-18). Peer to
347
+ `@hauska-sdk/*` and `hauska-engine`; not part of Empressa product
348
+ surface area.
349
+
350
+ The package extracts the workspace-private framework verbatim. No
351
+ behavioral changes from the staged version; only:
352
+
353
+ - Package renamed from `@workspace/empressa-atom` to
354
+ `@hauska/atom-contract`.
355
+ - `@workspace/db` test-time dependency dropped (consumers inject their
356
+ own database).
357
+ - Postgres-backed integration tests refactored to the in-memory
358
+ `createInMemoryEventService` so the package's CI is self-contained;
359
+ postgres exercise of `PostgresEventAnchoringService` lives in
360
+ consumer packages.