@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
|
@@ -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,252 @@ 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
|
+
/**
|
|
644
|
+
* Which external key the second token of `parcelNodeId` carries.
|
|
645
|
+
*
|
|
646
|
+
* Eight Central-TX counties fail a straight `prop_id` join and route through a
|
|
647
|
+
* geo_id / address crosswalk (`90_operations/OPS-1_texas_source_registry.md`).
|
|
648
|
+
* Recording the key KIND on the anchor is identity metadata — it is not the
|
|
649
|
+
* join-quality RATE, which stays a manifest/roster metric and is deliberately
|
|
650
|
+
* not atomized.
|
|
651
|
+
*/
|
|
652
|
+
export type ParcelKeyKind = "prop_id" | "geo_id_crosswalk";
|
|
653
|
+
export declare const PARCEL_KEY_KIND_SCHEMA: z.ZodEnum<["prop_id", "geo_id_crosswalk"]>;
|
|
654
|
+
/**
|
|
655
|
+
* Where the parcel ring came from.
|
|
656
|
+
*
|
|
657
|
+
* `absent` is the typed-absence tier (mirrors `building-footprint` /
|
|
658
|
+
* `utility-easement`): the county was probed and no ring source published.
|
|
659
|
+
*/
|
|
660
|
+
export type ParcelGeometrySourceTier = "txgio-stratmap" | "county-arcgis-override" | "absent";
|
|
661
|
+
export declare const PARCEL_GEOMETRY_SOURCE_TIER_SCHEMA: z.ZodEnum<["txgio-stratmap", "county-arcgis-override", "absent"]>;
|
|
662
|
+
/**
|
|
663
|
+
* Pointer to the single geometry truth frame — NEVER the ring bytes.
|
|
664
|
+
*
|
|
665
|
+
* Geometry Law rule 1 (`_decisions/2026-08-07_envelope_saga_close_and_geometry_law`):
|
|
666
|
+
* one ring per parcel, `txgio_parcel` is the truth frame. Ten engine files read
|
|
667
|
+
* that store directly; duplicating the ring into an atom would create a second
|
|
668
|
+
* source of geometry truth and re-open rule 3's master defect class. This
|
|
669
|
+
* reference resolves to the ring; it does not restate it.
|
|
670
|
+
*/
|
|
671
|
+
export declare const PARCEL_GEOMETRY_STORE_REF_SCHEMA: z.ZodObject<{
|
|
672
|
+
store: z.ZodLiteral<"txgio_parcel">;
|
|
673
|
+
countyFips: z.ZodString;
|
|
674
|
+
propId: z.ZodString;
|
|
675
|
+
}, "strict", z.ZodTypeAny, {
|
|
676
|
+
store: "txgio_parcel";
|
|
677
|
+
countyFips: string;
|
|
678
|
+
propId: string;
|
|
679
|
+
}, {
|
|
680
|
+
store: "txgio_parcel";
|
|
681
|
+
countyFips: string;
|
|
682
|
+
propId: string;
|
|
683
|
+
}>;
|
|
684
|
+
export type ParcelGeometryStoreRef = z.infer<typeof PARCEL_GEOMETRY_STORE_REF_SCHEMA>;
|
|
685
|
+
/**
|
|
686
|
+
* Per-parcel typed absence for `parcel-node`.
|
|
687
|
+
*
|
|
688
|
+
* - `no-parcel-geometry` — county IS loaded, parcel key resolves nothing.
|
|
689
|
+
* Fail-closed and distinct from not-yet-loaded, which is county-level
|
|
690
|
+
* `verifiedAbsence` on the `{fips}:_county_coverage` anchor.
|
|
691
|
+
* - `geometry-incomplete` — the store row carries a MultiPolygon whose extra
|
|
692
|
+
* rings the serving path would silently truncate. Emit the finding; do not
|
|
693
|
+
* pass a half-parcel off as the parcel.
|
|
694
|
+
* - `parcel-key-unresolved` — crosswalk county where the key kind could not be
|
|
695
|
+
* established; a guessed join is worse than an honest gap.
|
|
696
|
+
*/
|
|
697
|
+
export declare const PARCEL_NODE_ABSENCE_KINDS: readonly ["no-parcel-geometry", "geometry-incomplete", "parcel-key-unresolved"];
|
|
698
|
+
export type ParcelNodeAbsenceKind = (typeof PARCEL_NODE_ABSENCE_KINDS)[number];
|
|
699
|
+
export declare const PARCEL_NODE_ABSENCE_SCHEMA: z.ZodObject<{
|
|
700
|
+
kind: z.ZodEnum<["no-parcel-geometry", "geometry-incomplete", "parcel-key-unresolved"]>;
|
|
701
|
+
reason: z.ZodString;
|
|
702
|
+
}, "strict", z.ZodTypeAny, {
|
|
703
|
+
kind: "no-parcel-geometry" | "geometry-incomplete" | "parcel-key-unresolved";
|
|
704
|
+
reason: string;
|
|
705
|
+
}, {
|
|
706
|
+
kind: "no-parcel-geometry" | "geometry-incomplete" | "parcel-key-unresolved";
|
|
707
|
+
reason: string;
|
|
708
|
+
}>;
|
|
709
|
+
export type ParcelNodeAbsence = z.infer<typeof PARCEL_NODE_ABSENCE_SCHEMA>;
|
|
710
|
+
/**
|
|
711
|
+
* One external key with its own provenance. A parcel anchor may carry several
|
|
712
|
+
* (prop_id from the TxGIO row, geo_id from the CAD roll); each states where it
|
|
713
|
+
* came from so a consumer never has to guess which key a join used.
|
|
714
|
+
*/
|
|
715
|
+
export declare const PARCEL_EXTERNAL_KEY_SCHEMA: z.ZodObject<{
|
|
716
|
+
keyKind: z.ZodEnum<["prop_id", "geo_id_crosswalk"]>;
|
|
717
|
+
keyValue: z.ZodString;
|
|
718
|
+
sourceCitation: z.ZodString;
|
|
719
|
+
}, "strict", z.ZodTypeAny, {
|
|
720
|
+
sourceCitation: string;
|
|
721
|
+
keyKind: "prop_id" | "geo_id_crosswalk";
|
|
722
|
+
keyValue: string;
|
|
723
|
+
}, {
|
|
724
|
+
sourceCitation: string;
|
|
725
|
+
keyKind: "prop_id" | "geo_id_crosswalk";
|
|
726
|
+
keyValue: string;
|
|
727
|
+
}>;
|
|
728
|
+
export type ParcelExternalKey = z.infer<typeof PARCEL_EXTERNAL_KEY_SCHEMA>;
|
|
729
|
+
export type UtilityEasementSourceTier = "plat-gis-authoritative" | "county-gis" | "record-extracted" | "absent";
|
|
730
|
+
export declare const UTILITY_EASEMENT_SOURCE_TIER_SCHEMA: z.ZodEnum<["plat-gis-authoritative", "county-gis", "record-extracted", "absent"]>;
|
|
731
|
+
export type UtilityEasementClass = "utility" | "drainage" | "ingress-egress" | "combined" | "unknown";
|
|
732
|
+
export declare const UTILITY_EASEMENT_CLASS_SCHEMA: z.ZodEnum<["utility", "drainage", "ingress-egress", "combined", "unknown"]>;
|
|
733
|
+
export declare const UTILITY_EASEMENT_ABSENCE_KIND: "no-easement-feature";
|
|
734
|
+
export declare const UTILITY_EASEMENT_ABSENCE_SCHEMA: z.ZodObject<{
|
|
735
|
+
kind: z.ZodLiteral<"no-easement-feature">;
|
|
736
|
+
reason: z.ZodString;
|
|
737
|
+
}, "strip", z.ZodTypeAny, {
|
|
738
|
+
kind: "no-easement-feature";
|
|
739
|
+
reason: string;
|
|
740
|
+
}, {
|
|
741
|
+
kind: "no-easement-feature";
|
|
742
|
+
reason: string;
|
|
743
|
+
}>;
|
|
744
|
+
export type UtilityEasementAbsence = z.infer<typeof UTILITY_EASEMENT_ABSENCE_SCHEMA>;
|
|
745
|
+
/** Recording pointer when plat/GIS attributes carry book/page metadata. */
|
|
746
|
+
export declare const EASEMENT_RECORDING_REF_SCHEMA: z.ZodObject<{
|
|
747
|
+
county: z.ZodString;
|
|
748
|
+
book: z.ZodOptional<z.ZodString>;
|
|
749
|
+
page: z.ZodOptional<z.ZodString>;
|
|
750
|
+
instrumentNumber: z.ZodOptional<z.ZodString>;
|
|
751
|
+
}, "strict", z.ZodTypeAny, {
|
|
752
|
+
county: string;
|
|
753
|
+
book?: string | undefined;
|
|
754
|
+
page?: string | undefined;
|
|
755
|
+
instrumentNumber?: string | undefined;
|
|
756
|
+
}, {
|
|
757
|
+
county: string;
|
|
758
|
+
book?: string | undefined;
|
|
759
|
+
page?: string | undefined;
|
|
760
|
+
instrumentNumber?: string | undefined;
|
|
761
|
+
}>;
|
|
762
|
+
export type EasementRecordingRef = z.infer<typeof EASEMENT_RECORDING_REF_SCHEMA>;
|
|
515
763
|
//# 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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"}
|
package/dist/property/common.js
CHANGED
|
@@ -65,4 +65,152 @@ 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 PARCEL_KEY_KIND_SCHEMA = z.enum(["prop_id", "geo_id_crosswalk"]);
|
|
133
|
+
export const PARCEL_GEOMETRY_SOURCE_TIER_SCHEMA = z.enum([
|
|
134
|
+
"txgio-stratmap",
|
|
135
|
+
"county-arcgis-override",
|
|
136
|
+
"absent",
|
|
137
|
+
]);
|
|
138
|
+
/**
|
|
139
|
+
* Pointer to the single geometry truth frame — NEVER the ring bytes.
|
|
140
|
+
*
|
|
141
|
+
* Geometry Law rule 1 (`_decisions/2026-08-07_envelope_saga_close_and_geometry_law`):
|
|
142
|
+
* one ring per parcel, `txgio_parcel` is the truth frame. Ten engine files read
|
|
143
|
+
* that store directly; duplicating the ring into an atom would create a second
|
|
144
|
+
* source of geometry truth and re-open rule 3's master defect class. This
|
|
145
|
+
* reference resolves to the ring; it does not restate it.
|
|
146
|
+
*/
|
|
147
|
+
export const PARCEL_GEOMETRY_STORE_REF_SCHEMA = z
|
|
148
|
+
.object({
|
|
149
|
+
store: z.literal("txgio_parcel"),
|
|
150
|
+
countyFips: z.string().regex(/^\d{5}$/, "countyFips must be 5 digits"),
|
|
151
|
+
propId: z.string().min(1),
|
|
152
|
+
})
|
|
153
|
+
.strict();
|
|
154
|
+
/**
|
|
155
|
+
* Per-parcel typed absence for `parcel-node`.
|
|
156
|
+
*
|
|
157
|
+
* - `no-parcel-geometry` — county IS loaded, parcel key resolves nothing.
|
|
158
|
+
* Fail-closed and distinct from not-yet-loaded, which is county-level
|
|
159
|
+
* `verifiedAbsence` on the `{fips}:_county_coverage` anchor.
|
|
160
|
+
* - `geometry-incomplete` — the store row carries a MultiPolygon whose extra
|
|
161
|
+
* rings the serving path would silently truncate. Emit the finding; do not
|
|
162
|
+
* pass a half-parcel off as the parcel.
|
|
163
|
+
* - `parcel-key-unresolved` — crosswalk county where the key kind could not be
|
|
164
|
+
* established; a guessed join is worse than an honest gap.
|
|
165
|
+
*/
|
|
166
|
+
export const PARCEL_NODE_ABSENCE_KINDS = [
|
|
167
|
+
"no-parcel-geometry",
|
|
168
|
+
"geometry-incomplete",
|
|
169
|
+
"parcel-key-unresolved",
|
|
170
|
+
];
|
|
171
|
+
export const PARCEL_NODE_ABSENCE_SCHEMA = z
|
|
172
|
+
.object({
|
|
173
|
+
kind: z.enum(PARCEL_NODE_ABSENCE_KINDS),
|
|
174
|
+
reason: z.string().min(1),
|
|
175
|
+
})
|
|
176
|
+
.strict();
|
|
177
|
+
/**
|
|
178
|
+
* One external key with its own provenance. A parcel anchor may carry several
|
|
179
|
+
* (prop_id from the TxGIO row, geo_id from the CAD roll); each states where it
|
|
180
|
+
* came from so a consumer never has to guess which key a join used.
|
|
181
|
+
*/
|
|
182
|
+
export const PARCEL_EXTERNAL_KEY_SCHEMA = z
|
|
183
|
+
.object({
|
|
184
|
+
keyKind: PARCEL_KEY_KIND_SCHEMA,
|
|
185
|
+
keyValue: z.string().min(1),
|
|
186
|
+
sourceCitation: z.string().min(1),
|
|
187
|
+
})
|
|
188
|
+
.strict();
|
|
189
|
+
export const UTILITY_EASEMENT_SOURCE_TIER_SCHEMA = z.enum([
|
|
190
|
+
"plat-gis-authoritative",
|
|
191
|
+
"county-gis",
|
|
192
|
+
"record-extracted",
|
|
193
|
+
"absent",
|
|
194
|
+
]);
|
|
195
|
+
export const UTILITY_EASEMENT_CLASS_SCHEMA = z.enum([
|
|
196
|
+
"utility",
|
|
197
|
+
"drainage",
|
|
198
|
+
"ingress-egress",
|
|
199
|
+
"combined",
|
|
200
|
+
"unknown",
|
|
201
|
+
]);
|
|
202
|
+
export const UTILITY_EASEMENT_ABSENCE_KIND = "no-easement-feature";
|
|
203
|
+
export const UTILITY_EASEMENT_ABSENCE_SCHEMA = z.object({
|
|
204
|
+
kind: z.literal(UTILITY_EASEMENT_ABSENCE_KIND),
|
|
205
|
+
reason: z.string().min(1),
|
|
206
|
+
});
|
|
207
|
+
/** Recording pointer when plat/GIS attributes carry book/page metadata. */
|
|
208
|
+
export const EASEMENT_RECORDING_REF_SCHEMA = z
|
|
209
|
+
.object({
|
|
210
|
+
county: z.string().min(1),
|
|
211
|
+
book: z.string().min(1).optional(),
|
|
212
|
+
page: z.string().min(1).optional(),
|
|
213
|
+
instrumentNumber: z.string().min(1).optional(),
|
|
214
|
+
})
|
|
215
|
+
.strict();
|
|
68
216
|
//# 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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"}
|