@empressaio/atom-contract 1.11.0 → 1.12.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.
@@ -0,0 +1,86 @@
1
+ import { z } from "zod";
2
+ import { REASONING_CHAIN_OBSERVED_SCHEMA } from "../reasoning-chain.js";
3
+ import { BUILDING_FOOTPRINT_ABSENCE_SCHEMA, BUILDING_FOOTPRINT_SOURCE_TIER_SCHEMA, FOOTPRINT_GEOMETRY_SCHEMA, PARCEL_NODE_ID_PATTERN, PROPERTY_ACCESS_POLICY_SCHEMA, PROPERTY_ATOM_TIER, PROPERTY_DEFAULT_ACCESS_POLICY, PROPERTY_QUALITY_GATE_FIELDS, PROPERTY_READ_CONTRACT_SCHEMA, SITE_LAYER_PROVENANCE_FIELDS, SITE_LAYER_VERIFIED_ABSENCE_SCHEMA, } from "./common.js";
4
+ export const BUILDING_FOOTPRINT_SCHEMA = z
5
+ .object({
6
+ entityType: z.literal("building-footprint"),
7
+ atomDid: z
8
+ .string()
9
+ .min(1)
10
+ .refine((val) => /^bfoot_[0-9a-f]{16}$/.test(val), {
11
+ message: "atomDid must be in format bfoot_<16-hex-chars>",
12
+ }),
13
+ parcelNodeId: z
14
+ .string()
15
+ .min(1)
16
+ .refine((val) => PARCEL_NODE_ID_PATTERN.test(val), {
17
+ message: "parcelNodeId must match {county_fips}:{prop_id}",
18
+ }),
19
+ footprintId: z.string().min(1),
20
+ reasoningChain: REASONING_CHAIN_OBSERVED_SCHEMA,
21
+ sourceTier: BUILDING_FOOTPRINT_SOURCE_TIER_SCHEMA,
22
+ footprintGeometry: FOOTPRINT_GEOMETRY_SCHEMA.optional(),
23
+ absence: BUILDING_FOOTPRINT_ABSENCE_SCHEMA.optional(),
24
+ verifiedAbsence: SITE_LAYER_VERIFIED_ABSENCE_SCHEMA.optional(),
25
+ accessPolicy: PROPERTY_ACCESS_POLICY_SCHEMA,
26
+ ...PROPERTY_QUALITY_GATE_FIELDS,
27
+ ...SITE_LAYER_PROVENANCE_FIELDS,
28
+ structureRole: z.enum(["primary", "accessory", "unknown"]).optional(),
29
+ atomTier: z.literal(PROPERTY_ATOM_TIER),
30
+ readContract: PROPERTY_READ_CONTRACT_SCHEMA.optional(),
31
+ })
32
+ .superRefine((data, ctx) => {
33
+ const hasGeometry = data.footprintGeometry !== undefined;
34
+ const hasAbsence = data.absence !== undefined;
35
+ const isAbsentTier = data.sourceTier === "absent";
36
+ if (hasGeometry && hasAbsence) {
37
+ ctx.addIssue({
38
+ code: z.ZodIssueCode.custom,
39
+ message: "footprintGeometry and absence are mutually exclusive",
40
+ path: ["footprintGeometry"],
41
+ });
42
+ }
43
+ if (hasGeometry && isAbsentTier) {
44
+ ctx.addIssue({
45
+ code: z.ZodIssueCode.custom,
46
+ message: "sourceTier absent must not carry footprintGeometry",
47
+ path: ["sourceTier"],
48
+ });
49
+ }
50
+ if (isAbsentTier) {
51
+ if (!data.verifiedAbsence) {
52
+ ctx.addIssue({
53
+ code: z.ZodIssueCode.custom,
54
+ message: "sourceTier absent requires verifiedAbsence (evaluated + provenanceScope)",
55
+ path: ["verifiedAbsence"],
56
+ });
57
+ }
58
+ }
59
+ else if (!hasGeometry && !hasAbsence) {
60
+ ctx.addIssue({
61
+ code: z.ZodIssueCode.custom,
62
+ message: "building-footprint requires footprintGeometry OR per-parcel absence when sourceTier is not absent",
63
+ path: ["footprintGeometry"],
64
+ });
65
+ }
66
+ if (data.sourceTier === "ml-derived") {
67
+ if (data.accessPolicy !== PROPERTY_DEFAULT_ACCESS_POLICY) {
68
+ ctx.addIssue({
69
+ code: z.ZodIssueCode.custom,
70
+ message: "ml-derived building-footprint must use accessPolicy public-free",
71
+ path: ["accessPolicy"],
72
+ });
73
+ }
74
+ if (!/ODC-By/i.test(data.sourceCitation)) {
75
+ ctx.addIssue({
76
+ code: z.ZodIssueCode.custom,
77
+ message: "ml-derived building-footprint requires ODC-By attribution in sourceCitation",
78
+ path: ["sourceCitation"],
79
+ });
80
+ }
81
+ }
82
+ });
83
+ export function createBuildingFootprint(input) {
84
+ return BUILDING_FOOTPRINT_SCHEMA.parse(input);
85
+ }
86
+ //# sourceMappingURL=building-footprint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"building-footprint.js","sourceRoot":"","sources":["../../src/property/building-footprint.ts"],"names":[],"mappings":"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"}
@@ -512,4 +512,166 @@ export declare const PROPERTY_READ_CONTRACT_SCHEMA: z.ZodReadonly<z.ZodObject<{
512
512
  }> | undefined;
513
513
  }>>;
514
514
  export type PropertyReadContract = ReasoningReadContract;
515
+ /** WGS84 [lng, lat] vertex — shared GeoJSON primitive. */
516
+ export type GeoCoord = readonly [number, number];
517
+ export declare const GEO_COORD_SCHEMA: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
518
+ export declare const GEOJSON_POLYGON_SCHEMA: z.ZodObject<{
519
+ type: z.ZodLiteral<"Polygon">;
520
+ coordinates: z.ZodArray<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>, "many">, "many">;
521
+ }, "strip", z.ZodTypeAny, {
522
+ type: "Polygon";
523
+ coordinates: [number, number][][];
524
+ }, {
525
+ type: "Polygon";
526
+ coordinates: [number, number][][];
527
+ }>;
528
+ export declare const GEOJSON_MULTI_POLYGON_SCHEMA: z.ZodObject<{
529
+ type: z.ZodLiteral<"MultiPolygon">;
530
+ coordinates: z.ZodArray<z.ZodArray<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>, "many">, "many">, "many">;
531
+ }, "strip", z.ZodTypeAny, {
532
+ type: "MultiPolygon";
533
+ coordinates: [number, number][][][];
534
+ }, {
535
+ type: "MultiPolygon";
536
+ coordinates: [number, number][][][];
537
+ }>;
538
+ export declare const GEOJSON_LINE_STRING_SCHEMA: z.ZodObject<{
539
+ type: z.ZodLiteral<"LineString">;
540
+ coordinates: z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>, "many">;
541
+ }, "strip", z.ZodTypeAny, {
542
+ type: "LineString";
543
+ coordinates: [number, number][];
544
+ }, {
545
+ type: "LineString";
546
+ coordinates: [number, number][];
547
+ }>;
548
+ export declare const FOOTPRINT_GEOMETRY_SCHEMA: z.ZodUnion<[z.ZodObject<{
549
+ type: z.ZodLiteral<"Polygon">;
550
+ coordinates: z.ZodArray<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>, "many">, "many">;
551
+ }, "strip", z.ZodTypeAny, {
552
+ type: "Polygon";
553
+ coordinates: [number, number][][];
554
+ }, {
555
+ type: "Polygon";
556
+ coordinates: [number, number][][];
557
+ }>, z.ZodObject<{
558
+ type: z.ZodLiteral<"MultiPolygon">;
559
+ coordinates: z.ZodArray<z.ZodArray<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>, "many">, "many">, "many">;
560
+ }, "strip", z.ZodTypeAny, {
561
+ type: "MultiPolygon";
562
+ coordinates: [number, number][][][];
563
+ }, {
564
+ type: "MultiPolygon";
565
+ coordinates: [number, number][][][];
566
+ }>]>;
567
+ export type FootprintGeometry = z.infer<typeof FOOTPRINT_GEOMETRY_SCHEMA>;
568
+ export declare const EASEMENT_GEOMETRY_SCHEMA: z.ZodUnion<[z.ZodObject<{
569
+ type: z.ZodLiteral<"Polygon">;
570
+ coordinates: z.ZodArray<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>, "many">, "many">;
571
+ }, "strip", z.ZodTypeAny, {
572
+ type: "Polygon";
573
+ coordinates: [number, number][][];
574
+ }, {
575
+ type: "Polygon";
576
+ coordinates: [number, number][][];
577
+ }>, z.ZodObject<{
578
+ type: z.ZodLiteral<"MultiPolygon">;
579
+ coordinates: z.ZodArray<z.ZodArray<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>, "many">, "many">, "many">;
580
+ }, "strip", z.ZodTypeAny, {
581
+ type: "MultiPolygon";
582
+ coordinates: [number, number][][][];
583
+ }, {
584
+ type: "MultiPolygon";
585
+ coordinates: [number, number][][][];
586
+ }>, z.ZodObject<{
587
+ type: z.ZodLiteral<"LineString">;
588
+ coordinates: z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>, "many">;
589
+ }, "strip", z.ZodTypeAny, {
590
+ type: "LineString";
591
+ coordinates: [number, number][];
592
+ }, {
593
+ type: "LineString";
594
+ coordinates: [number, number][];
595
+ }>]>;
596
+ export type EasementGeometry = z.infer<typeof EASEMENT_GEOMETRY_SCHEMA>;
597
+ /**
598
+ * ADR-028 verified absence pair for site-layer honest absence (ADR-029 ruling 1).
599
+ * `evaluated: true` MUST carry a non-empty `provenanceScope`.
600
+ */
601
+ export declare const SITE_LAYER_VERIFIED_ABSENCE_SCHEMA: z.ZodObject<{
602
+ evaluated: z.ZodLiteral<true>;
603
+ provenanceScope: z.ZodArray<z.ZodString, "many">;
604
+ }, "strict", z.ZodTypeAny, {
605
+ evaluated: true;
606
+ provenanceScope: string[];
607
+ }, {
608
+ evaluated: true;
609
+ provenanceScope: string[];
610
+ }>;
611
+ export type SiteLayerVerifiedAbsence = z.infer<typeof SITE_LAYER_VERIFIED_ABSENCE_SCHEMA>;
612
+ /**
613
+ * County-coverage absence row anchor: `{county_fips}:_county_coverage`.
614
+ * One row per county when no footprint/easement source is published; referenced at serve time.
615
+ */
616
+ export declare const COUNTY_COVERAGE_PARCEL_NODE_SUFFIX: "_county_coverage";
617
+ export declare function countyCoverageParcelNodeId(countyFips: string): string;
618
+ export type SiteLayerVerificationStatus = "machine" | "human" | "unsurveyed";
619
+ export declare const SITE_LAYER_VERIFICATION_STATUSES: ReadonlyArray<SiteLayerVerificationStatus>;
620
+ export declare const SITE_LAYER_VERIFICATION_STATUS_SCHEMA: z.ZodEnum<["machine", "human", "unsurveyed"]>;
621
+ /** Shared provenance gate fields for ADR-029 site-layer atoms. */
622
+ export declare const SITE_LAYER_PROVENANCE_FIELDS: {
623
+ readonly sourceVintage: z.ZodOptional<z.ZodString>;
624
+ readonly verificationStatus: z.ZodEnum<["machine", "human", "unsurveyed"]>;
625
+ readonly sourceAdapter: z.ZodString;
626
+ readonly evaluatedAt: z.ZodString;
627
+ };
628
+ export type BuildingFootprintSourceTier = "cad-authoritative" | "ml-derived" | "absent";
629
+ export declare const BUILDING_FOOTPRINT_SOURCE_TIER_SCHEMA: z.ZodEnum<["cad-authoritative", "ml-derived", "absent"]>;
630
+ /** Per-parcel absence when a source exists but yields no feature for the parcel. */
631
+ export declare const BUILDING_FOOTPRINT_ABSENCE_KIND: "no-footprint-feature";
632
+ export declare const BUILDING_FOOTPRINT_ABSENCE_SCHEMA: z.ZodObject<{
633
+ kind: z.ZodLiteral<"no-footprint-feature">;
634
+ reason: z.ZodString;
635
+ }, "strip", z.ZodTypeAny, {
636
+ kind: "no-footprint-feature";
637
+ reason: string;
638
+ }, {
639
+ kind: "no-footprint-feature";
640
+ reason: string;
641
+ }>;
642
+ export type BuildingFootprintAbsence = z.infer<typeof BUILDING_FOOTPRINT_ABSENCE_SCHEMA>;
643
+ export type UtilityEasementSourceTier = "plat-gis-authoritative" | "county-gis" | "record-extracted" | "absent";
644
+ export declare const UTILITY_EASEMENT_SOURCE_TIER_SCHEMA: z.ZodEnum<["plat-gis-authoritative", "county-gis", "record-extracted", "absent"]>;
645
+ export type UtilityEasementClass = "utility" | "drainage" | "ingress-egress" | "combined" | "unknown";
646
+ export declare const UTILITY_EASEMENT_CLASS_SCHEMA: z.ZodEnum<["utility", "drainage", "ingress-egress", "combined", "unknown"]>;
647
+ export declare const UTILITY_EASEMENT_ABSENCE_KIND: "no-easement-feature";
648
+ export declare const UTILITY_EASEMENT_ABSENCE_SCHEMA: z.ZodObject<{
649
+ kind: z.ZodLiteral<"no-easement-feature">;
650
+ reason: z.ZodString;
651
+ }, "strip", z.ZodTypeAny, {
652
+ kind: "no-easement-feature";
653
+ reason: string;
654
+ }, {
655
+ kind: "no-easement-feature";
656
+ reason: string;
657
+ }>;
658
+ export type UtilityEasementAbsence = z.infer<typeof UTILITY_EASEMENT_ABSENCE_SCHEMA>;
659
+ /** Recording pointer when plat/GIS attributes carry book/page metadata. */
660
+ export declare const EASEMENT_RECORDING_REF_SCHEMA: z.ZodObject<{
661
+ county: z.ZodString;
662
+ book: z.ZodOptional<z.ZodString>;
663
+ page: z.ZodOptional<z.ZodString>;
664
+ instrumentNumber: z.ZodOptional<z.ZodString>;
665
+ }, "strict", z.ZodTypeAny, {
666
+ county: string;
667
+ book?: string | undefined;
668
+ page?: string | undefined;
669
+ instrumentNumber?: string | undefined;
670
+ }, {
671
+ county: string;
672
+ book?: string | undefined;
673
+ page?: string | undefined;
674
+ instrumentNumber?: string | undefined;
675
+ }>;
676
+ export type EasementRecordingRef = z.infer<typeof EASEMENT_RECORDING_REF_SCHEMA>;
515
677
  //# sourceMappingURL=common.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/property/common.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEzD,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAEL,KAAK,qBAAqB,EAC3B,MAAM,oCAAoC,CAAC;AAE5C,4DAA4D;AAC5D,eAAO,MAAM,sBAAsB,QAA4B,CAAC;AAEhE,+EAA+E;AAC/E,eAAO,MAAM,oBAAoB,QAAqB,CAAC;AAEvD,eAAO,MAAM,kBAAkB,EAAE,QAAiB,CAAC;AAEnD,eAAO,MAAM,8BAA8B,EAAE,YAA4B,CAAC;AAE1E,eAAO,MAAM,6BAA6B,mGAAuB,CAAC;AAElE,qEAAqE;AACrE,eAAO,MAAM,4BAA4B;;;;CAI/B,CAAC;AAEX,+DAA+D;AAC/D,eAAO,MAAM,mBAAmB,EAAG,iBAA0B,CAAC;AAE9D,eAAO,MAAM,qBAAqB;;;;;;;;;EAGhC,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAElE,8EAA8E;AAC9E,eAAO,MAAM,oBAAoB,EAAG,kBAA2B,CAAC;AAEhE,eAAO,MAAM,sBAAsB;;;;;;;;;EAGjC,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEpE,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,QAAQ,GAAG,UAAU,CAAC;AAEhE,eAAO,MAAM,0BAA0B,EAAE,aAAa,CAAC,iBAAiB,CAIvE,CAAC;AAEF,eAAO,MAAM,0BAA0B,4CAIrC,CAAC;AAEH;;;GAGG;AACH,MAAM,WAAW,2BAA2B;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,iBAAiB,CAAC;CAC/B;AAED,eAAO,MAAM,qCAAqC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAGhD,CAAC;AAEH,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAMjC,CAAC;AAEZ,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAC;AAErF,kFAAkF;AAClF,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAAiC,CAAC;AAE5E,MAAM,MAAM,oBAAoB,GAAG,qBAAqB,CAAC"}
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/property/common.ts"],"names":[],"mappings":"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"}
@@ -65,4 +65,95 @@ export const SETBACK_FIELD_PROVENANCE_SCHEMA = z
65
65
  .strict();
66
66
  /** Optional read-contract snapshot on write; calibrated axis resolves at READ. */
67
67
  export const PROPERTY_READ_CONTRACT_SCHEMA = REASONING_READ_CONTRACT_SCHEMA;
68
+ export const GEO_COORD_SCHEMA = z.tuple([z.number(), z.number()]);
69
+ export const GEOJSON_POLYGON_SCHEMA = z.object({
70
+ type: z.literal("Polygon"),
71
+ coordinates: z.array(z.array(GEO_COORD_SCHEMA).min(4)),
72
+ });
73
+ export const GEOJSON_MULTI_POLYGON_SCHEMA = z.object({
74
+ type: z.literal("MultiPolygon"),
75
+ coordinates: z.array(z.array(z.array(GEO_COORD_SCHEMA).min(4)).min(1)),
76
+ });
77
+ export const GEOJSON_LINE_STRING_SCHEMA = z.object({
78
+ type: z.literal("LineString"),
79
+ coordinates: z.array(GEO_COORD_SCHEMA).min(2),
80
+ });
81
+ export const FOOTPRINT_GEOMETRY_SCHEMA = z.union([
82
+ GEOJSON_POLYGON_SCHEMA,
83
+ GEOJSON_MULTI_POLYGON_SCHEMA,
84
+ ]);
85
+ export const EASEMENT_GEOMETRY_SCHEMA = z.union([
86
+ GEOJSON_POLYGON_SCHEMA,
87
+ GEOJSON_MULTI_POLYGON_SCHEMA,
88
+ GEOJSON_LINE_STRING_SCHEMA,
89
+ ]);
90
+ /**
91
+ * ADR-028 verified absence pair for site-layer honest absence (ADR-029 ruling 1).
92
+ * `evaluated: true` MUST carry a non-empty `provenanceScope`.
93
+ */
94
+ export const SITE_LAYER_VERIFIED_ABSENCE_SCHEMA = z
95
+ .object({
96
+ evaluated: z.literal(true),
97
+ provenanceScope: z.array(z.string().min(1)).min(1),
98
+ })
99
+ .strict();
100
+ /**
101
+ * County-coverage absence row anchor: `{county_fips}:_county_coverage`.
102
+ * One row per county when no footprint/easement source is published; referenced at serve time.
103
+ */
104
+ export const COUNTY_COVERAGE_PARCEL_NODE_SUFFIX = "_county_coverage";
105
+ export function countyCoverageParcelNodeId(countyFips) {
106
+ return `${countyFips}:${COUNTY_COVERAGE_PARCEL_NODE_SUFFIX}`;
107
+ }
108
+ export const SITE_LAYER_VERIFICATION_STATUSES = ["machine", "human", "unsurveyed"];
109
+ export const SITE_LAYER_VERIFICATION_STATUS_SCHEMA = z.enum([
110
+ "machine",
111
+ "human",
112
+ "unsurveyed",
113
+ ]);
114
+ /** Shared provenance gate fields for ADR-029 site-layer atoms. */
115
+ export const SITE_LAYER_PROVENANCE_FIELDS = {
116
+ sourceVintage: z.string().min(1).optional(),
117
+ verificationStatus: SITE_LAYER_VERIFICATION_STATUS_SCHEMA,
118
+ sourceAdapter: z.string().min(1),
119
+ evaluatedAt: z.string().min(1),
120
+ };
121
+ export const BUILDING_FOOTPRINT_SOURCE_TIER_SCHEMA = z.enum([
122
+ "cad-authoritative",
123
+ "ml-derived",
124
+ "absent",
125
+ ]);
126
+ /** Per-parcel absence when a source exists but yields no feature for the parcel. */
127
+ export const BUILDING_FOOTPRINT_ABSENCE_KIND = "no-footprint-feature";
128
+ export const BUILDING_FOOTPRINT_ABSENCE_SCHEMA = z.object({
129
+ kind: z.literal(BUILDING_FOOTPRINT_ABSENCE_KIND),
130
+ reason: z.string().min(1),
131
+ });
132
+ export const UTILITY_EASEMENT_SOURCE_TIER_SCHEMA = z.enum([
133
+ "plat-gis-authoritative",
134
+ "county-gis",
135
+ "record-extracted",
136
+ "absent",
137
+ ]);
138
+ export const UTILITY_EASEMENT_CLASS_SCHEMA = z.enum([
139
+ "utility",
140
+ "drainage",
141
+ "ingress-egress",
142
+ "combined",
143
+ "unknown",
144
+ ]);
145
+ export const UTILITY_EASEMENT_ABSENCE_KIND = "no-easement-feature";
146
+ export const UTILITY_EASEMENT_ABSENCE_SCHEMA = z.object({
147
+ kind: z.literal(UTILITY_EASEMENT_ABSENCE_KIND),
148
+ reason: z.string().min(1),
149
+ });
150
+ /** Recording pointer when plat/GIS attributes carry book/page metadata. */
151
+ export const EASEMENT_RECORDING_REF_SCHEMA = z
152
+ .object({
153
+ county: z.string().min(1),
154
+ book: z.string().min(1).optional(),
155
+ page: z.string().min(1).optional(),
156
+ instrumentNumber: z.string().min(1).optional(),
157
+ })
158
+ .strict();
68
159
  //# sourceMappingURL=common.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/property/common.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EACL,yBAAyB,GAE1B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,8BAA8B,GAE/B,MAAM,oCAAoC,CAAC;AAE5C,4DAA4D;AAC5D,MAAM,CAAC,MAAM,sBAAsB,GAAG,yBAAyB,CAAC;AAEhE,+EAA+E;AAC/E,MAAM,CAAC,MAAM,oBAAoB,GAAG,kBAAkB,CAAC;AAEvD,MAAM,CAAC,MAAM,kBAAkB,GAAa,MAAM,CAAC;AAEnD,MAAM,CAAC,MAAM,8BAA8B,GAAiB,aAAa,CAAC;AAE1E,MAAM,CAAC,MAAM,6BAA6B,GAAG,oBAAoB,CAAC;AAElE,qEAAqE;AACrE,MAAM,CAAC,MAAM,4BAA4B,GAAG;IAC1C,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACjC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CAC1B,CAAC;AAEX,+DAA+D;AAC/D,MAAM,CAAC,MAAM,mBAAmB,GAAG,iBAA0B,CAAC;AAE9D,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC;IACpC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CAC1B,CAAC,CAAC;AAIH,8EAA8E;AAC9E,MAAM,CAAC,MAAM,oBAAoB,GAAG,kBAA2B,CAAC;AAEhE,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC;IACrC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CAC1B,CAAC,CAAC;AAMH,MAAM,CAAC,MAAM,0BAA0B,GAAqC;IAC1E,OAAO;IACP,QAAQ;IACR,UAAU;CACX,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,IAAI,CAAC;IAC/C,OAAO;IACP,QAAQ;IACR,UAAU;CACX,CAAC,CAAC;AAWH,MAAM,CAAC,MAAM,qCAAqC,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5D,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,UAAU,EAAE,yBAAyB;CACtC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAAC;KAC7C,MAAM,CAAC;IACN,KAAK,EAAE,qCAAqC,CAAC,QAAQ,EAAE;IACvD,IAAI,EAAE,qCAAqC,CAAC,QAAQ,EAAE;IACtD,IAAI,EAAE,qCAAqC,CAAC,QAAQ,EAAE;CACvD,CAAC;KACD,MAAM,EAAE,CAAC;AAIZ,kFAAkF;AAClF,MAAM,CAAC,MAAM,6BAA6B,GAAG,8BAA8B,CAAC"}
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/property/common.ts"],"names":[],"mappings":"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"}
@@ -4,10 +4,12 @@
4
4
  * Parcel ids are real Central-TX node anchors for grading notes.
5
5
  */
6
6
  import type { BuildableEnvelopeAtomInstance } from "./buildable-envelope.js";
7
+ import type { BuildingFootprintAtomInstance } from "./building-footprint.js";
7
8
  import type { ParcelTerrainModelAtomInstance } from "./parcel-terrain-model.js";
8
9
  import type { SetbackRuleAtomInstance } from "./setback-rule.js";
9
10
  import type { ZoningFactAtomInstance } from "./zoning-fact.js";
10
11
  import type { RoadNodeAtomInstance } from "./road-node.js";
12
+ import type { UtilityEasementAtomInstance } from "./utility-easement.js";
11
13
  /**
12
14
  * Hays County (48209) — parcel 48209:156346, RS district from city GIS stamp.
13
15
  * WDLL 3.3 zoning FACT probe.
@@ -144,4 +146,86 @@ export declare const NEGATIVE_TERRAIN_NO_DEM_REF: {
144
146
  * R1 road-node WDLL 3 probe (named Bastrop road, centerline + assumed ROW).
145
147
  */
146
148
  export declare const BASTROP_SPRING_STREET_ROAD_FIXTURE: RoadNodeAtomInstance;
149
+ /**
150
+ * Bastrop County (48021) — ML-derived building footprint on parcel 48021:27303.
151
+ * ADR-029 T3 probe — ODC-By attribution mandatory for ml-derived tier.
152
+ */
153
+ export declare const BASTROP_ML_FOOTPRINT_FIXTURE: BuildingFootprintAtomInstance;
154
+ /**
155
+ * Bastrop County county-coverage footprint absence — hybrid absence ruling 1.
156
+ * One row referenced at serve time when no county footprint source is published.
157
+ */
158
+ export declare const BASTROP_COUNTY_FOOTPRINT_ABSENCE_FIXTURE: BuildingFootprintAtomInstance;
159
+ /** Per-parcel absence when ML source exists but spatial join finds no feature. */
160
+ export declare const BASTROP_PARCEL_FOOTPRINT_ABSENCE_FIXTURE: BuildingFootprintAtomInstance;
161
+ /**
162
+ * City of Bastrop Easements_/43 — utility easement on parcel 48021:27303.
163
+ * Phase 2b municipal GIS rail (148 features in city limits).
164
+ */
165
+ export declare const BASTROP_CITY_EASEMENT_FIXTURE: UtilityEasementAtomInstance;
166
+ /** County-coverage easement absence for Bastrop County. */
167
+ export declare const BASTROP_COUNTY_EASEMENT_ABSENCE_FIXTURE: UtilityEasementAtomInstance;
168
+ /** Negative — ml-derived without ODC-By in sourceCitation. */
169
+ export declare const NEGATIVE_FOOTPRINT_ML_NO_ODC_BY: {
170
+ entityType: "building-footprint";
171
+ atomDid: string;
172
+ parcelNodeId: string;
173
+ footprintId: string;
174
+ reasoningChain: {
175
+ reasoningKind: "observed";
176
+ };
177
+ sourceTier: "ml-derived";
178
+ footprintGeometry: {
179
+ type: "Polygon";
180
+ coordinates: number[][][];
181
+ };
182
+ accessPolicy: "public-free";
183
+ sourceCitation: string;
184
+ extractedAt: string;
185
+ verificationStatus: "machine";
186
+ sourceAdapter: string;
187
+ evaluatedAt: string;
188
+ atomTier: "data";
189
+ };
190
+ /** Negative — sourceTier absent without verifiedAbsence. */
191
+ export declare const NEGATIVE_FOOTPRINT_ABSENT_NO_VERIFIED: {
192
+ entityType: "building-footprint";
193
+ atomDid: string;
194
+ parcelNodeId: string;
195
+ footprintId: string;
196
+ reasoningChain: {
197
+ reasoningKind: "observed";
198
+ };
199
+ sourceTier: "absent";
200
+ accessPolicy: "public-free";
201
+ sourceCitation: string;
202
+ extractedAt: string;
203
+ verificationStatus: "machine";
204
+ sourceAdapter: string;
205
+ evaluatedAt: string;
206
+ atomTier: "data";
207
+ };
208
+ /** Negative — utility-easement with non-public accessPolicy. */
209
+ export declare const NEGATIVE_EASEMENT_NON_PUBLIC_POLICY: {
210
+ entityType: "utility-easement";
211
+ atomDid: string;
212
+ parcelNodeId: string;
213
+ easementId: string;
214
+ reasoningChain: {
215
+ reasoningKind: "observed";
216
+ };
217
+ easementClass: "utility";
218
+ sourceTier: "plat-gis-authoritative";
219
+ easementGeometry: {
220
+ type: "LineString";
221
+ coordinates: number[][];
222
+ };
223
+ accessPolicy: "public-paid";
224
+ sourceCitation: string;
225
+ extractedAt: string;
226
+ verificationStatus: "machine";
227
+ sourceAdapter: string;
228
+ evaluatedAt: string;
229
+ atomTier: "data";
230
+ };
147
231
  //# sourceMappingURL=fixtures.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fixtures.d.ts","sourceRoot":"","sources":["../../src/property/fixtures.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AAE7E,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,2BAA2B,CAAC;AAKhF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAkB3D;;;GAGG;AACH,eAAO,MAAM,wBAAwB,EAAE,sBAuBtC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,8BAA8B,EAAE,sBA+B5C,CAAC;AAEF,yFAAyF;AACzF,eAAO,MAAM,0BAA0B,EAAE,uBAgDxC,CAAC;AAEF,oEAAoE;AACpE,eAAO,MAAM,kCAAkC,EAAE,uBAmBhD,CAAC;AAEF,mFAAmF;AACnF,eAAO,MAAM,6BAA6B,EAAE,uBAuB3C,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,+BAA+B,EAAE,6BAgD7C,CAAC;AAEF,+EAA+E;AAC/E,eAAO,MAAM,qCAAqC;;;;;;;;;;;;;;;;CAcjD,CAAC;AAEF,gDAAgD;AAChD,eAAO,MAAM,+BAA+B;;;;;;;uBAOnB,EAAE;;;;;;CAM1B,CAAC;AAEF,wDAAwD;AACxD,eAAO,MAAM,oCAAoC;;;;;;;;;;;;;;;;CAWhD,CAAC;AAEF,6DAA6D;AAC7D,eAAO,MAAM,oCAAoC;;;;;;;;;;;;;;;;;;;CAiBhD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,8BAA8B,EAAE,8BA6F5C,CAAC;AAEF,8CAA8C;AAC9C,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsCvC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,kCAAkC,EAAE,oBAuEhD,CAAC"}
1
+ {"version":3,"file":"fixtures.d.ts","sourceRoot":"","sources":["../../src/property/fixtures.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AAE7E,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AAC7E,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,2BAA2B,CAAC;AAKhF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAE3D,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAkBzE;;;GAGG;AACH,eAAO,MAAM,wBAAwB,EAAE,sBAuBtC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,8BAA8B,EAAE,sBA+B5C,CAAC;AAEF,yFAAyF;AACzF,eAAO,MAAM,0BAA0B,EAAE,uBAgDxC,CAAC;AAEF,oEAAoE;AACpE,eAAO,MAAM,kCAAkC,EAAE,uBAmBhD,CAAC;AAEF,mFAAmF;AACnF,eAAO,MAAM,6BAA6B,EAAE,uBAuB3C,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,+BAA+B,EAAE,6BAgD7C,CAAC;AAEF,+EAA+E;AAC/E,eAAO,MAAM,qCAAqC;;;;;;;;;;;;;;;;CAcjD,CAAC;AAEF,gDAAgD;AAChD,eAAO,MAAM,+BAA+B;;;;;;;uBAOnB,EAAE;;;;;;CAM1B,CAAC;AAEF,wDAAwD;AACxD,eAAO,MAAM,oCAAoC;;;;;;;;;;;;;;;;CAWhD,CAAC;AAEF,6DAA6D;AAC7D,eAAO,MAAM,oCAAoC;;;;;;;;;;;;;;;;;;;CAiBhD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,8BAA8B,EAAE,8BA6F5C,CAAC;AAEF,8CAA8C;AAC9C,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsCvC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,kCAAkC,EAAE,oBAuEhD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,4BAA4B,EAAE,6BA6B1C,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,wCAAwC,EAAE,6BAsBtD,CAAC;AAEF,kFAAkF;AAClF,eAAO,MAAM,wCAAwC,EAAE,6BAoBtD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,6BAA6B,EAAE,2BAyB3C,CAAC;AAEF,2DAA2D;AAC3D,eAAO,MAAM,uCAAuC,EAAE,2BAsBrD,CAAC;AAEF,8DAA8D;AAC9D,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;CA0B3C,CAAC;AAEF,4DAA4D;AAC5D,eAAO,MAAM,qCAAqC;;;;;;;;;;;;;;;;CAcjD,CAAC;AAEF,gEAAgE;AAChE,eAAO,MAAM,mCAAmC;;;;;;;;;;;;;;;;;;;;;CAsB/C,CAAC"}