@empressaio/atom-contract 1.11.0 → 1.13.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.
- package/CHANGELOG.md +73 -0
- package/README.md +13 -2
- package/dist/conformance/common.d.ts +1 -1
- package/dist/conformance/common.js +1 -1
- package/dist/property/building-footprint.d.ts +649 -0
- package/dist/property/building-footprint.d.ts.map +1 -0
- package/dist/property/building-footprint.js +86 -0
- package/dist/property/building-footprint.js.map +1 -0
- package/dist/property/common.d.ts +248 -0
- package/dist/property/common.d.ts.map +1 -1
- package/dist/property/common.js +148 -0
- package/dist/property/common.js.map +1 -1
- package/dist/property/fixtures.d.ts +239 -0
- package/dist/property/fixtures.d.ts.map +1 -1
- package/dist/property/fixtures.js +483 -0
- package/dist/property/fixtures.js.map +1 -1
- package/dist/property/index.d.ts +3 -0
- package/dist/property/index.d.ts.map +1 -1
- package/dist/property/index.js +3 -0
- package/dist/property/index.js.map +1 -1
- package/dist/property/parcel-node.d.ts +710 -0
- package/dist/property/parcel-node.d.ts.map +1 -0
- package/dist/property/parcel-node.js +156 -0
- package/dist/property/parcel-node.js.map +1 -0
- package/dist/property/road-node.d.ts +2 -5
- package/dist/property/road-node.d.ts.map +1 -1
- package/dist/property/road-node.js +1 -2
- package/dist/property/road-node.js.map +1 -1
- package/dist/property/setback-rule.d.ts +16 -16
- package/dist/property/utility-easement.d.ts +724 -0
- package/dist/property/utility-easement.d.ts.map +1 -0
- package/dist/property/utility-easement.js +81 -0
- package/dist/property/utility-easement.js.map +1 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,79 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to `@empressaio/atom-contract` (formerly `@hauska/atom-contract`) are documented here.
|
|
4
4
|
|
|
5
|
+
## [1.13.0] - 2026-08-08
|
|
6
|
+
|
|
7
|
+
Additive minor — `parcel-node`, the Rail 1 parcel identity and geometry-provenance
|
|
8
|
+
anchor. MCP has advertised this entity type on the property chain since the chain
|
|
9
|
+
shipped, with no producer behind it; this lands the shape so the engine can write it.
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
|
|
13
|
+
- **`parcel-node`** on `./property` — observed parcel ANCHOR atom
|
|
14
|
+
(`reasoningKind: observed`, uniform `public-free`). Carries parcel identity
|
|
15
|
+
(`parcelNodeId`, `countyFips`, `keyKind`, per-key-provenance `externalKeys`),
|
|
16
|
+
ring provenance (`geometrySourceTier: txgio-stratmap | county-arcgis-override |
|
|
17
|
+
absent`, `sourceVintage`, `divergenceObservationCount`), and load state
|
|
18
|
+
(`geometryLoaded`).
|
|
19
|
+
- **Geometry by reference, never by value.** `geometryStoreRef` is a typed pointer
|
|
20
|
+
`{ store: "txgio_parcel", countyFips, propId }` into the single geometry truth
|
|
21
|
+
frame (Geometry Law rule 1, `_decisions/2026-08-07_envelope_saga_close_and_geometry_law`).
|
|
22
|
+
The schema is `.strict()` on that pointer, so an inlined ring is a parse error —
|
|
23
|
+
the atom cannot become a second source of geometry truth.
|
|
24
|
+
- **First-class typed absence**, matching the `building-footprint` /
|
|
25
|
+
`utility-easement` pattern: county-level `verifiedAbsence` (mandatory non-empty
|
|
26
|
+
`provenanceScope`, fail-closed when `geometrySourceTier: absent`) on the
|
|
27
|
+
`{fips}:_county_coverage` anchor, plus per-parcel `absence` kinds
|
|
28
|
+
`no-parcel-geometry`, `geometry-incomplete` (MultiPolygon truncation finding),
|
|
29
|
+
and `parcel-key-unresolved`. Absence and a resolved pointer are mutually
|
|
30
|
+
exclusive; `geometryLoaded` must agree with the pointer.
|
|
31
|
+
- `PARCEL_KEY_KIND_SCHEMA` (`prop_id | geo_id_crosswalk`) — records which key the
|
|
32
|
+
second `parcelNodeId` token carries for crosswalk counties. Identity metadata,
|
|
33
|
+
not the join-quality rate (which stays a manifest/roster metric, not atomized).
|
|
34
|
+
- `parcelNodeAtomDid`, `PARCEL_NODE_ATOM_DID_PATTERN` — preserves the already
|
|
35
|
+
published MCP form `did:hauska:parcel-node:{parcelNodeId}`; the schema rejects
|
|
36
|
+
an `atomDid` that does not embed its own `parcelNodeId`.
|
|
37
|
+
- Fixtures: Bastrop loaded parcel, Travis crosswalk-key parcel, county-coverage
|
|
38
|
+
verified absence, per-parcel absence, MultiPolygon-incomplete finding, and six
|
|
39
|
+
negative fixtures.
|
|
40
|
+
- `PROPERTY_CONFORMANCE_TARGET_VERSION = "1.13.0"`.
|
|
41
|
+
|
|
42
|
+
### Explicitly NOT in 1.13.0
|
|
43
|
+
|
|
44
|
+
- Parcel ring geometry as atom payload — rejected; `txgio_parcel` stays the one
|
|
45
|
+
ring per parcel.
|
|
46
|
+
- Any change to `parcelNodeId` shape or the MCP `parcel_node_id` parameter —
|
|
47
|
+
re-keying was rejected (2,269 call sites, published tool parameter, DIDs embed
|
|
48
|
+
the key).
|
|
49
|
+
- A new relationship layer — `atom_links` already ships.
|
|
50
|
+
- `cad-parcel-roll`, `land-use-fact`, `parcel-owner-facet`, `flood-hazard-fact`,
|
|
51
|
+
`soil-survey-fact` — later rails in the same spec.
|
|
52
|
+
- `buildable-envelope.absence` — still queued.
|
|
53
|
+
|
|
54
|
+
## [1.12.0] - 2026-08-05
|
|
55
|
+
|
|
56
|
+
Additive minor — building footprint and utility easement site-layer atoms (ADR-029 / T3).
|
|
57
|
+
|
|
58
|
+
### Added
|
|
59
|
+
|
|
60
|
+
- **`building-footprint`** on `./property` — observed improvement geometry atom
|
|
61
|
+
(`reasoningKind: observed`); `sourceTier: cad-authoritative | ml-derived | absent`;
|
|
62
|
+
GeoJSON `Polygon`/`MultiPolygon`; hybrid honest absence (county-coverage
|
|
63
|
+
`verifiedAbsence` row + per-parcel `no-footprint-feature`); ml-derived tier
|
|
64
|
+
mandatory `public-free` + ODC-By in `sourceCitation` (master ruling 2026-08-05).
|
|
65
|
+
- **`utility-easement`** on `./property` — observed GIS easement geometry;
|
|
66
|
+
`easementClass`, `sourceTier: plat-gis-authoritative | county-gis |
|
|
67
|
+
record-extracted | absent`; uniform `public-free`; optional `linkedInstrumentDid`
|
|
68
|
+
bridge to ADR-020.
|
|
69
|
+
- Shared site-layer helpers: `SITE_LAYER_VERIFIED_ABSENCE_SCHEMA`,
|
|
70
|
+
`countyCoverageParcelNodeId`, GeoJSON geometry schemas, Bastrop T3 fixtures.
|
|
71
|
+
- `PROPERTY_CONFORMANCE_TARGET_VERSION = "1.12.0"`.
|
|
72
|
+
|
|
73
|
+
### Explicitly NOT in 1.12.0
|
|
74
|
+
|
|
75
|
+
- ADR-021 `utility-easement` resolver basis enum (deferred post-registration pilot).
|
|
76
|
+
- ADR-012 renderer `focus` mode obligation (deferred post-pilot).
|
|
77
|
+
|
|
5
78
|
## [1.11.0] - 2026-07-25
|
|
6
79
|
|
|
7
80
|
Additive minor — road spine node atom (27c WDLL 3 / depth-engine R1).
|
package/README.md
CHANGED
|
@@ -279,8 +279,9 @@ import {
|
|
|
279
279
|
## Property reasoning atom kinds (master WDLL 3.2–3.6)
|
|
280
280
|
|
|
281
281
|
Parcel buildable-answer chain atoms ship on the `./property` subpath
|
|
282
|
-
(v1.9.0): `zoning-fact`, `setback-rule`, `buildable-envelope
|
|
283
|
-
|
|
282
|
+
(v1.9.0+): `parcel-node`, `zoning-fact`, `setback-rule`, `buildable-envelope`,
|
|
283
|
+
`parcel-terrain-model`, `road-node`, `building-footprint`, `utility-easement`.
|
|
284
|
+
All are data-tier (`atomTier: "data"`) and default to `public-free`
|
|
284
285
|
accessPolicy when undeclared on the registration.
|
|
285
286
|
|
|
286
287
|
**Calibrated confidence at READ (I-E):** instances MAY carry a
|
|
@@ -306,9 +307,19 @@ import {
|
|
|
306
307
|
|
|
307
308
|
| `entityType` | `reasoningKind` | Key fields |
|
|
308
309
|
|---|---|---|
|
|
310
|
+
| `parcel-node` | `observed` | `keyKind`, `geometryStoreRef` pointer (never the ring) OR `absence`/`verifiedAbsence` |
|
|
309
311
|
| `zoning-fact` | `observed` | `district` OR `absence.no-zoning-stamp` |
|
|
310
312
|
| `setback-rule` | `observed` | `front`/`side`/`rear`, typed `sourceCodeAtomRef`, `matchBasis` |
|
|
311
313
|
| `buildable-envelope` | `derived` | `buildable-envelope-inset-v1`, input refs to fact + rule + geometry |
|
|
314
|
+
| `parcel-terrain-model` | `derived` | `parcel-terrain-mesh-ifc-v1`, format-keyed artifacts |
|
|
315
|
+
| `road-node` | `observed` | `{fips}:road:{osm_way_id}`, centerline + assumed ROW |
|
|
316
|
+
| `building-footprint` | `observed` | `footprintGeometry` OR `absence`/`verifiedAbsence`; `sourceTier` |
|
|
317
|
+
| `utility-easement` | `observed` | `easementGeometry`, `easementClass`, `public-free` always |
|
|
318
|
+
|
|
319
|
+
`parcel-node` is the Rail 1 anchor every other property rail keys on. It records
|
|
320
|
+
parcel identity and ring PROVENANCE; the ring itself stays in `txgio_parcel`, the
|
|
321
|
+
one geometry truth frame (Geometry Law rule 1). `geometryStoreRef` is a strict
|
|
322
|
+
pointer, so an inlined ring fails to parse.
|
|
312
323
|
|
|
313
324
|
ICC royalties on code citations accrue via core `ObligationAtomInstance`
|
|
314
325
|
rows — no standalone `SourceAttribution` type.
|
|
@@ -22,7 +22,7 @@ export type ReasoningConformanceTargetVersion = typeof REASONING_CONFORMANCE_TAR
|
|
|
22
22
|
/**
|
|
23
23
|
* Pin property atom kind adopters to this semver (master WDLL 3.2–3.6).
|
|
24
24
|
*/
|
|
25
|
-
export declare const PROPERTY_CONFORMANCE_TARGET_VERSION: "1.
|
|
25
|
+
export declare const PROPERTY_CONFORMANCE_TARGET_VERSION: "1.13.0";
|
|
26
26
|
export type PropertyConformanceTargetVersion = typeof PROPERTY_CONFORMANCE_TARGET_VERSION;
|
|
27
27
|
/** Data-level atoms carry signed history; app-level workflow containers skip it. */
|
|
28
28
|
export type AtomTier = "data" | "app";
|
|
@@ -19,7 +19,7 @@ export const REASONING_CONFORMANCE_TARGET_VERSION = "1.8.0";
|
|
|
19
19
|
/**
|
|
20
20
|
* Pin property atom kind adopters to this semver (master WDLL 3.2–3.6).
|
|
21
21
|
*/
|
|
22
|
-
export const PROPERTY_CONFORMANCE_TARGET_VERSION = "1.
|
|
22
|
+
export const PROPERTY_CONFORMANCE_TARGET_VERSION = "1.13.0";
|
|
23
23
|
export const ATOM_TIER_VALUES = ["data", "app"];
|
|
24
24
|
export const ACCESS_POLICY_VALUES = [
|
|
25
25
|
"public-free",
|