@empressaio/atom-contract 1.13.0 → 1.15.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 +62 -1
- package/dist/conformance/common.d.ts +1 -1
- package/dist/conformance/common.js +1 -1
- package/dist/property/buildable-envelope.d.ts +182 -8
- package/dist/property/buildable-envelope.d.ts.map +1 -1
- package/dist/property/buildable-envelope.js +50 -26
- package/dist/property/buildable-envelope.js.map +1 -1
- package/dist/property/building-footprint.d.ts +28 -28
- package/dist/property/cad-parcel-roll.d.ts +710 -0
- package/dist/property/cad-parcel-roll.d.ts.map +1 -0
- package/dist/property/cad-parcel-roll.js +147 -0
- package/dist/property/cad-parcel-roll.js.map +1 -0
- package/dist/property/common.d.ts +80 -0
- package/dist/property/common.d.ts.map +1 -1
- package/dist/property/common.js +90 -0
- package/dist/property/common.js.map +1 -1
- package/dist/property/fixtures.d.ts +227 -0
- package/dist/property/fixtures.d.ts.map +1 -1
- package/dist/property/fixtures.js +440 -0
- package/dist/property/fixtures.js.map +1 -1
- package/dist/property/flood-hazard-fact.d.ts +610 -0
- package/dist/property/flood-hazard-fact.d.ts.map +1 -0
- package/dist/property/flood-hazard-fact.js +102 -0
- package/dist/property/flood-hazard-fact.js.map +1 -0
- 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/land-use-fact.d.ts +602 -0
- package/dist/property/land-use-fact.d.ts.map +1 -0
- package/dist/property/land-use-fact.js +87 -0
- package/dist/property/land-use-fact.js.map +1 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,67 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to `@empressaio/atom-contract` (formerly `@hauska/atom-contract`) are documented here.
|
|
4
4
|
|
|
5
|
+
## [1.15.0] - 2026-08-09
|
|
6
|
+
|
|
7
|
+
Additive minor — first-class typed absence for `buildable-envelope`, closing the
|
|
8
|
+
last property-family gap where honest declines lived only as engine-extension
|
|
9
|
+
fields (`warmVerifyDecline` / `warmVerifyDeclineCode`).
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
|
|
13
|
+
- **`buildable-envelope.absence`** — `{ kind, reason }` where `kind` is one of
|
|
14
|
+
the fourteen live decline codes lifted from Bastrop store population +
|
|
15
|
+
`bucketVerifyFailReasons` residual buckets. No invented taxonomy.
|
|
16
|
+
- **`buildable-envelope.verifiedAbsence`** — mandatory whenever `absence` is
|
|
17
|
+
present (`evaluated: true` + non-empty `provenanceScope`), same fail-closed
|
|
18
|
+
dialect as site-layer families. Decline envelopes require only a
|
|
19
|
+
zoning-fact input ref; positive envelopes still require the full
|
|
20
|
+
zoning-fact + setback-rule + geometry + front-edge chain.
|
|
21
|
+
- `BUILDABLE_ENVELOPE_ABSENCE_KINDS`, `BUILDABLE_ENVELOPE_ABSENCE_SCHEMA`,
|
|
22
|
+
`toBuildableEnvelopeAbsenceKind` (unknown producer strings collapse to
|
|
23
|
+
`other-verify-fail`).
|
|
24
|
+
- Fixtures and round-trip tests for every live kind; negative probes for
|
|
25
|
+
absence-without-verifiedAbsence and verifiedAbsence-without-absence.
|
|
26
|
+
- `PROPERTY_CONFORMANCE_TARGET_VERSION = "1.15.0"`.
|
|
27
|
+
|
|
28
|
+
### Explicitly NOT in 1.15.0
|
|
29
|
+
|
|
30
|
+
- Data migration of existing store rows that carry only
|
|
31
|
+
`warmVerifyDecline*` — readers stay dual-path; rewrite is a separate lane.
|
|
32
|
+
- Changes to envelope geometry / outcome fields (engine extensions unchanged).
|
|
33
|
+
- Any new decline codes beyond the lifted live set.
|
|
34
|
+
|
|
35
|
+
## [1.14.0] - 2026-08-08
|
|
36
|
+
|
|
37
|
+
Additive minor — three county-shape property rails with first-class typed absence:
|
|
38
|
+
`flood-hazard-fact`, `cad-parcel-roll`, and `land-use-fact`.
|
|
39
|
+
|
|
40
|
+
### Added
|
|
41
|
+
|
|
42
|
+
- **`flood-hazard-fact`** on `./property` — FEMA NFHL SFHA finding or honest
|
|
43
|
+
absence (`no-flood-coverage`). Present tier requires `inSpecialFloodHazardArea`;
|
|
44
|
+
outside-mapped parcels are present with SFHA false, not absence. `sourceTier:
|
|
45
|
+
fema-nfhl | absent`; county-level `verifiedAbsence` fail-closed when absent.
|
|
46
|
+
- **`cad-parcel-roll`** on `./property` — county appraisal roll row or honest
|
|
47
|
+
absence (`no-cad-row`, `join-hold`). Owner fields gated on
|
|
48
|
+
`joinPassedOwnerMatchGate`; wrong owner worse than missing. `sourceTier:
|
|
49
|
+
cad-authoritative | absent`; `sourceFile` required on present tier.
|
|
50
|
+
- **`land-use-fact`** on `./property` — CAD `property_use_code` or honest
|
|
51
|
+
absence (`no-land-use-code`, `no-cad-row`, `join-hold`). Writers read county
|
|
52
|
+
CAD only; Cotality land_use_code is dead.
|
|
53
|
+
- Shared helpers: `CAD_ROLL_SOURCE_TIER_SCHEMA`, `FLOOD_HAZARD_*`,
|
|
54
|
+
`LAND_USE_ABSENCE_SCHEMA`, `LAND_ACRES_SCHEMA`.
|
|
55
|
+
- Fixtures and negative probes for each rail.
|
|
56
|
+
- `PROPERTY_CONFORMANCE_TARGET_VERSION = "1.14.0"`.
|
|
57
|
+
|
|
58
|
+
### Explicitly NOT in 1.14.0
|
|
59
|
+
|
|
60
|
+
- `parcel-owner-facet` (owner facet) — specify-only; not published.
|
|
61
|
+
- `mud`, `rrc`, `pipeline`, `soil-survey-fact` — specify-only; not published.
|
|
62
|
+
- Parcel ring atoms or geometry on property atoms — Geometry Law unchanged.
|
|
63
|
+
- New relationship layer — `atom_links` already ships.
|
|
64
|
+
- Cotality sourcing tier — extinguished; never wired.
|
|
65
|
+
|
|
5
66
|
## [1.13.0] - 2026-08-08
|
|
6
67
|
|
|
7
68
|
Additive minor — `parcel-node`, the Rail 1 parcel identity and geometry-provenance
|
|
@@ -49,7 +110,7 @@ shipped, with no producer behind it; this lands the shape so the engine can writ
|
|
|
49
110
|
- A new relationship layer — `atom_links` already ships.
|
|
50
111
|
- `cad-parcel-roll`, `land-use-fact`, `parcel-owner-facet`, `flood-hazard-fact`,
|
|
51
112
|
`soil-survey-fact` — later rails in the same spec.
|
|
52
|
-
- `buildable-envelope.absence` —
|
|
113
|
+
- `buildable-envelope.absence` — shipped in 1.15.0.
|
|
53
114
|
|
|
54
115
|
## [1.12.0] - 2026-08-05
|
|
55
116
|
|
|
@@ -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.15.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.15.0";
|
|
23
23
|
export const ATOM_TIER_VALUES = ["data", "app"];
|
|
24
24
|
export const ACCESS_POLICY_VALUES = [
|
|
25
25
|
"public-free",
|
|
@@ -4,10 +4,23 @@ import type { AtomTier } from "../conformance/common.js";
|
|
|
4
4
|
import type { AtomInputRef } from "../reasoning-chain.js";
|
|
5
5
|
import type { ReasoningChain } from "../reasoning-chain.js";
|
|
6
6
|
import type { ReasoningReadContract } from "../read-contract/reasoning-axes.js";
|
|
7
|
+
import { type BuildableEnvelopeAbsence, type SiteLayerVerifiedAbsence } from "./common.js";
|
|
7
8
|
/** Canonical derivation method for buildable envelope inset (master 3.6). */
|
|
8
9
|
export declare const BUILDABLE_ENVELOPE_DERIVATION_METHOD: "buildable-envelope-inset-v1";
|
|
9
10
|
/**
|
|
10
|
-
* Buildable-envelope DERIVED atom — inputs cite fact + rule + reference fields
|
|
11
|
+
* Buildable-envelope DERIVED atom — inputs cite fact + rule + reference fields,
|
|
12
|
+
* OR carry typed absence when the warm/cascade path deliberately declines.
|
|
13
|
+
*
|
|
14
|
+
* Typed absence (1.15.0): when the engine refuses to compute an envelope it
|
|
15
|
+
* emits `absence` (kind = live decline code) plus `verifiedAbsence` with a
|
|
16
|
+
* non-empty `provenanceScope`. That is the same fail-closed dialect as the
|
|
17
|
+
* site-layer families (`sourceTier: absent` → `verifiedAbsence`), expressed
|
|
18
|
+
* for a derived atom that has no source tier.
|
|
19
|
+
*
|
|
20
|
+
* Positive envelopes still require zoning-fact + setback-rule + geometry +
|
|
21
|
+
* front-edge reference inputs. Decline envelopes require only a zoning-fact
|
|
22
|
+
* fact ref (setbacks and rings may not exist — fabricating them is exactly
|
|
23
|
+
* the silent-fabrication mode honest absence exists to prevent).
|
|
11
24
|
*
|
|
12
25
|
* No `labeling x district` multiply field. `calibratedConfidence` on
|
|
13
26
|
* {@link readContract} may be a placeholder asserted snapshot at write;
|
|
@@ -24,6 +37,13 @@ export interface BuildableEnvelopeAtomInstance {
|
|
|
24
37
|
derivationMethod: typeof BUILDABLE_ENVELOPE_DERIVATION_METHOD;
|
|
25
38
|
inputAtomRefs: AtomInputRef[];
|
|
26
39
|
};
|
|
40
|
+
/** Present when warm/cascade evaluation deliberately refused an envelope. */
|
|
41
|
+
absence?: BuildableEnvelopeAbsence;
|
|
42
|
+
/**
|
|
43
|
+
* Required whenever `absence` is present — documents that the decline was
|
|
44
|
+
* evaluated against named sources (fail-closed; empty scope is a parse error).
|
|
45
|
+
*/
|
|
46
|
+
verifiedAbsence?: SiteLayerVerifiedAbsence;
|
|
27
47
|
accessPolicy: AccessPolicy;
|
|
28
48
|
sourceCitation: string;
|
|
29
49
|
extractedAt: string;
|
|
@@ -31,7 +51,7 @@ export interface BuildableEnvelopeAtomInstance {
|
|
|
31
51
|
atomTier: AtomTier;
|
|
32
52
|
readContract?: ReasoningReadContract;
|
|
33
53
|
}
|
|
34
|
-
export declare const BUILDABLE_ENVELOPE_SCHEMA: z.ZodObject<{
|
|
54
|
+
export declare const BUILDABLE_ENVELOPE_SCHEMA: z.ZodEffects<z.ZodObject<{
|
|
35
55
|
atomTier: z.ZodLiteral<AtomTier>;
|
|
36
56
|
readContract: z.ZodOptional<z.ZodReadonly<z.ZodObject<{
|
|
37
57
|
axes: z.ZodReadonly<z.ZodObject<{
|
|
@@ -282,7 +302,7 @@ export declare const BUILDABLE_ENVELOPE_SCHEMA: z.ZodObject<{
|
|
|
282
302
|
entityType: z.ZodLiteral<"buildable-envelope">;
|
|
283
303
|
atomDid: z.ZodEffects<z.ZodString, string, string>;
|
|
284
304
|
parcelNodeId: z.ZodEffects<z.ZodString, string, string>;
|
|
285
|
-
reasoningChain: z.
|
|
305
|
+
reasoningChain: z.ZodObject<{
|
|
286
306
|
reasoningKind: z.ZodLiteral<"derived">;
|
|
287
307
|
derivationMethod: z.ZodString;
|
|
288
308
|
inputAtomRefs: z.ZodArray<z.ZodReadonly<z.ZodObject<{
|
|
@@ -319,7 +339,36 @@ export declare const BUILDABLE_ENVELOPE_SCHEMA: z.ZodObject<{
|
|
|
319
339
|
entityType?: string | undefined;
|
|
320
340
|
citationLabel?: string | undefined;
|
|
321
341
|
}>[];
|
|
322
|
-
}
|
|
342
|
+
}>;
|
|
343
|
+
absence: z.ZodOptional<z.ZodObject<{
|
|
344
|
+
kind: z.ZodEnum<["unzoned-no-district-basis", "no-district-on-record", "no-setback-row", "no-road-adjacency", "front-orientation-unresolved", "superseded-prop-id", "front-orientation", "road-classification-mismatch", "r32-per-edge-inset", "null-inset", "faces-answer", "geometry", "setback-edge-distance", "other-verify-fail"]>;
|
|
345
|
+
reason: z.ZodString;
|
|
346
|
+
}, "strict", z.ZodTypeAny, {
|
|
347
|
+
kind: "unzoned-no-district-basis" | "no-district-on-record" | "no-setback-row" | "no-road-adjacency" | "front-orientation-unresolved" | "superseded-prop-id" | "front-orientation" | "road-classification-mismatch" | "r32-per-edge-inset" | "null-inset" | "faces-answer" | "geometry" | "setback-edge-distance" | "other-verify-fail";
|
|
348
|
+
reason: string;
|
|
349
|
+
}, {
|
|
350
|
+
kind: "unzoned-no-district-basis" | "no-district-on-record" | "no-setback-row" | "no-road-adjacency" | "front-orientation-unresolved" | "superseded-prop-id" | "front-orientation" | "road-classification-mismatch" | "r32-per-edge-inset" | "null-inset" | "faces-answer" | "geometry" | "setback-edge-distance" | "other-verify-fail";
|
|
351
|
+
reason: string;
|
|
352
|
+
}>>;
|
|
353
|
+
verifiedAbsence: z.ZodOptional<z.ZodObject<{
|
|
354
|
+
evaluated: z.ZodLiteral<true>;
|
|
355
|
+
provenanceScope: z.ZodArray<z.ZodString, "many">;
|
|
356
|
+
}, "strict", z.ZodTypeAny, {
|
|
357
|
+
evaluated: true;
|
|
358
|
+
provenanceScope: string[];
|
|
359
|
+
}, {
|
|
360
|
+
evaluated: true;
|
|
361
|
+
provenanceScope: string[];
|
|
362
|
+
}>>;
|
|
363
|
+
accessPolicy: z.ZodEnum<["public-free", "public-paid", "platform-internal", "tenant-private", "tenant-shared"]>;
|
|
364
|
+
}, "strict", z.ZodTypeAny, {
|
|
365
|
+
accessPolicy: "public-free" | "public-paid" | "platform-internal" | "tenant-private" | "tenant-shared";
|
|
366
|
+
entityType: "buildable-envelope";
|
|
367
|
+
sourceCitation: string;
|
|
368
|
+
extractedAt: string;
|
|
369
|
+
atomDid: string;
|
|
370
|
+
parcelNodeId: string;
|
|
371
|
+
reasoningChain: {
|
|
323
372
|
reasoningKind: "derived";
|
|
324
373
|
derivationMethod: string;
|
|
325
374
|
inputAtomRefs: Readonly<{
|
|
@@ -328,7 +377,66 @@ export declare const BUILDABLE_ENVELOPE_SCHEMA: z.ZodObject<{
|
|
|
328
377
|
entityType?: string | undefined;
|
|
329
378
|
citationLabel?: string | undefined;
|
|
330
379
|
}>[];
|
|
331
|
-
}
|
|
380
|
+
};
|
|
381
|
+
atomTier: AtomTier;
|
|
382
|
+
asOf?: string | undefined;
|
|
383
|
+
readContract?: Readonly<{
|
|
384
|
+
axes: Readonly<{
|
|
385
|
+
calibratedConfidence: Readonly<{
|
|
386
|
+
estimate: number;
|
|
387
|
+
n: number;
|
|
388
|
+
intervalWidth: number;
|
|
389
|
+
provenance: "asserted" | "backtest" | "seed" | "live";
|
|
390
|
+
}>;
|
|
391
|
+
assertedConfidence: Readonly<{
|
|
392
|
+
estimate: number;
|
|
393
|
+
n: number;
|
|
394
|
+
intervalWidth: number;
|
|
395
|
+
provenance: "asserted" | "backtest" | "seed" | "live";
|
|
396
|
+
}>;
|
|
397
|
+
consequence: {
|
|
398
|
+
stratum: import("../read-contract/reasoning-axes.js").PropertyRiskStratum;
|
|
399
|
+
assertedAt: string;
|
|
400
|
+
kind: "property-risk";
|
|
401
|
+
basis: string;
|
|
402
|
+
auditRef?: string | undefined;
|
|
403
|
+
} | {
|
|
404
|
+
assertedAt: string;
|
|
405
|
+
kind: "not-applicable";
|
|
406
|
+
reason: string;
|
|
407
|
+
};
|
|
408
|
+
}>;
|
|
409
|
+
assembledAt: string;
|
|
410
|
+
modelAttribution?: Readonly<{
|
|
411
|
+
modelId: string;
|
|
412
|
+
modelVersion: string;
|
|
413
|
+
promptTemplateVersion: string;
|
|
414
|
+
contextTemplateVersion: string;
|
|
415
|
+
samplingParams: Readonly<z.objectOutputType<{
|
|
416
|
+
temperature: z.ZodOptional<z.ZodNumber>;
|
|
417
|
+
topP: z.ZodOptional<z.ZodNumber>;
|
|
418
|
+
maxTokens: z.ZodOptional<z.ZodNumber>;
|
|
419
|
+
seed: z.ZodOptional<z.ZodNumber>;
|
|
420
|
+
}, z.ZodUnknown, "strip">>;
|
|
421
|
+
retrievedAtomSetId: string;
|
|
422
|
+
}> | undefined;
|
|
423
|
+
}> | undefined;
|
|
424
|
+
absence?: {
|
|
425
|
+
kind: "unzoned-no-district-basis" | "no-district-on-record" | "no-setback-row" | "no-road-adjacency" | "front-orientation-unresolved" | "superseded-prop-id" | "front-orientation" | "road-classification-mismatch" | "r32-per-edge-inset" | "null-inset" | "faces-answer" | "geometry" | "setback-edge-distance" | "other-verify-fail";
|
|
426
|
+
reason: string;
|
|
427
|
+
} | undefined;
|
|
428
|
+
verifiedAbsence?: {
|
|
429
|
+
evaluated: true;
|
|
430
|
+
provenanceScope: string[];
|
|
431
|
+
} | undefined;
|
|
432
|
+
}, {
|
|
433
|
+
accessPolicy: "public-free" | "public-paid" | "platform-internal" | "tenant-private" | "tenant-shared";
|
|
434
|
+
entityType: "buildable-envelope";
|
|
435
|
+
sourceCitation: string;
|
|
436
|
+
extractedAt: string;
|
|
437
|
+
atomDid: string;
|
|
438
|
+
parcelNodeId: string;
|
|
439
|
+
reasoningChain: {
|
|
332
440
|
reasoningKind: "derived";
|
|
333
441
|
derivationMethod: string;
|
|
334
442
|
inputAtomRefs: Readonly<{
|
|
@@ -337,9 +445,59 @@ export declare const BUILDABLE_ENVELOPE_SCHEMA: z.ZodObject<{
|
|
|
337
445
|
entityType?: string | undefined;
|
|
338
446
|
citationLabel?: string | undefined;
|
|
339
447
|
}>[];
|
|
340
|
-
}
|
|
341
|
-
|
|
342
|
-
|
|
448
|
+
};
|
|
449
|
+
atomTier: AtomTier;
|
|
450
|
+
asOf?: string | undefined;
|
|
451
|
+
readContract?: Readonly<{
|
|
452
|
+
axes: Readonly<{
|
|
453
|
+
calibratedConfidence: Readonly<{
|
|
454
|
+
estimate: number;
|
|
455
|
+
n: number;
|
|
456
|
+
intervalWidth: number;
|
|
457
|
+
provenance: "asserted" | "backtest" | "seed" | "live";
|
|
458
|
+
}>;
|
|
459
|
+
assertedConfidence: Readonly<{
|
|
460
|
+
estimate: number;
|
|
461
|
+
n: number;
|
|
462
|
+
intervalWidth: number;
|
|
463
|
+
provenance: "asserted" | "backtest" | "seed" | "live";
|
|
464
|
+
}>;
|
|
465
|
+
consequence: {
|
|
466
|
+
stratum: import("../read-contract/reasoning-axes.js").PropertyRiskStratum;
|
|
467
|
+
assertedAt: string;
|
|
468
|
+
kind: "property-risk";
|
|
469
|
+
basis: string;
|
|
470
|
+
auditRef?: string | undefined;
|
|
471
|
+
} | {
|
|
472
|
+
assertedAt: string;
|
|
473
|
+
kind: "not-applicable";
|
|
474
|
+
reason: string;
|
|
475
|
+
};
|
|
476
|
+
}>;
|
|
477
|
+
assembledAt: string;
|
|
478
|
+
modelAttribution?: Readonly<{
|
|
479
|
+
modelId: string;
|
|
480
|
+
modelVersion: string;
|
|
481
|
+
promptTemplateVersion: string;
|
|
482
|
+
contextTemplateVersion: string;
|
|
483
|
+
samplingParams: Readonly<z.objectInputType<{
|
|
484
|
+
temperature: z.ZodOptional<z.ZodNumber>;
|
|
485
|
+
topP: z.ZodOptional<z.ZodNumber>;
|
|
486
|
+
maxTokens: z.ZodOptional<z.ZodNumber>;
|
|
487
|
+
seed: z.ZodOptional<z.ZodNumber>;
|
|
488
|
+
}, z.ZodUnknown, "strip">>;
|
|
489
|
+
retrievedAtomSetId: string;
|
|
490
|
+
}> | undefined;
|
|
491
|
+
}> | undefined;
|
|
492
|
+
absence?: {
|
|
493
|
+
kind: "unzoned-no-district-basis" | "no-district-on-record" | "no-setback-row" | "no-road-adjacency" | "front-orientation-unresolved" | "superseded-prop-id" | "front-orientation" | "road-classification-mismatch" | "r32-per-edge-inset" | "null-inset" | "faces-answer" | "geometry" | "setback-edge-distance" | "other-verify-fail";
|
|
494
|
+
reason: string;
|
|
495
|
+
} | undefined;
|
|
496
|
+
verifiedAbsence?: {
|
|
497
|
+
evaluated: true;
|
|
498
|
+
provenanceScope: string[];
|
|
499
|
+
} | undefined;
|
|
500
|
+
}>, {
|
|
343
501
|
accessPolicy: "public-free" | "public-paid" | "platform-internal" | "tenant-private" | "tenant-shared";
|
|
344
502
|
entityType: "buildable-envelope";
|
|
345
503
|
sourceCitation: string;
|
|
@@ -399,6 +557,14 @@ export declare const BUILDABLE_ENVELOPE_SCHEMA: z.ZodObject<{
|
|
|
399
557
|
retrievedAtomSetId: string;
|
|
400
558
|
}> | undefined;
|
|
401
559
|
}> | undefined;
|
|
560
|
+
absence?: {
|
|
561
|
+
kind: "unzoned-no-district-basis" | "no-district-on-record" | "no-setback-row" | "no-road-adjacency" | "front-orientation-unresolved" | "superseded-prop-id" | "front-orientation" | "road-classification-mismatch" | "r32-per-edge-inset" | "null-inset" | "faces-answer" | "geometry" | "setback-edge-distance" | "other-verify-fail";
|
|
562
|
+
reason: string;
|
|
563
|
+
} | undefined;
|
|
564
|
+
verifiedAbsence?: {
|
|
565
|
+
evaluated: true;
|
|
566
|
+
provenanceScope: string[];
|
|
567
|
+
} | undefined;
|
|
402
568
|
}, {
|
|
403
569
|
accessPolicy: "public-free" | "public-paid" | "platform-internal" | "tenant-private" | "tenant-shared";
|
|
404
570
|
entityType: "buildable-envelope";
|
|
@@ -459,6 +625,14 @@ export declare const BUILDABLE_ENVELOPE_SCHEMA: z.ZodObject<{
|
|
|
459
625
|
retrievedAtomSetId: string;
|
|
460
626
|
}> | undefined;
|
|
461
627
|
}> | undefined;
|
|
628
|
+
absence?: {
|
|
629
|
+
kind: "unzoned-no-district-basis" | "no-district-on-record" | "no-setback-row" | "no-road-adjacency" | "front-orientation-unresolved" | "superseded-prop-id" | "front-orientation" | "road-classification-mismatch" | "r32-per-edge-inset" | "null-inset" | "faces-answer" | "geometry" | "setback-edge-distance" | "other-verify-fail";
|
|
630
|
+
reason: string;
|
|
631
|
+
} | undefined;
|
|
632
|
+
verifiedAbsence?: {
|
|
633
|
+
evaluated: true;
|
|
634
|
+
provenanceScope: string[];
|
|
635
|
+
} | undefined;
|
|
462
636
|
}>;
|
|
463
637
|
export declare function createBuildableEnvelope(input: z.input<typeof BUILDABLE_ENVELOPE_SCHEMA>): BuildableEnvelopeAtomInstance;
|
|
464
638
|
//# sourceMappingURL=buildable-envelope.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildable-envelope.d.ts","sourceRoot":"","sources":["../../src/property/buildable-envelope.ts"],"names":[],"mappings":"AAAA,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;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"buildable-envelope.d.ts","sourceRoot":"","sources":["../../src/property/buildable-envelope.ts"],"names":[],"mappings":"AAAA,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;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAEhF,OAAO,EAQL,KAAK,wBAAwB,EAC7B,KAAK,wBAAwB,EAC9B,MAAM,aAAa,CAAC;AAErB,6EAA6E;AAC7E,eAAO,MAAM,oCAAoC,EAAG,6BAAsC,CAAC;AAE3F;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,WAAW,6BAA6B;IAC5C,UAAU,EAAE,oBAAoB,CAAC;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE;QAAE,aAAa,EAAE,SAAS,CAAA;KAAE,CAAC,GAAG;QACtE,gBAAgB,EAAE,OAAO,oCAAoC,CAAC;QAC9D,aAAa,EAAE,YAAY,EAAE,CAAC;KAC/B,CAAC;IACF,6EAA6E;IAC7E,OAAO,CAAC,EAAE,wBAAwB,CAAC;IACnC;;;OAGG;IACH,eAAe,CAAC,EAAE,wBAAwB,CAAC;IAC3C,YAAY,EAAE,YAAY,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,QAAQ,CAAC;IACnB,YAAY,CAAC,EAAE,qBAAqB,CAAC;CACtC;AAED,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2FlC,CAAC;AAEL,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,GAC/C,6BAA6B,CAE/B"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { REASONING_CHAIN_DERIVED_SCHEMA } from "../reasoning-chain.js";
|
|
3
|
-
import { PARCEL_NODE_ID_PATTERN, PROPERTY_ACCESS_POLICY_SCHEMA, PROPERTY_ATOM_TIER, PROPERTY_QUALITY_GATE_FIELDS, PROPERTY_READ_CONTRACT_SCHEMA, } from "./common.js";
|
|
3
|
+
import { BUILDABLE_ENVELOPE_ABSENCE_SCHEMA, PARCEL_NODE_ID_PATTERN, PROPERTY_ACCESS_POLICY_SCHEMA, PROPERTY_ATOM_TIER, PROPERTY_QUALITY_GATE_FIELDS, PROPERTY_READ_CONTRACT_SCHEMA, SITE_LAYER_VERIFIED_ABSENCE_SCHEMA, } from "./common.js";
|
|
4
4
|
/** Canonical derivation method for buildable envelope inset (master 3.6). */
|
|
5
5
|
export const BUILDABLE_ENVELOPE_DERIVATION_METHOD = "buildable-envelope-inset-v1";
|
|
6
6
|
export const BUILDABLE_ENVELOPE_SCHEMA = z
|
|
@@ -18,45 +18,69 @@ export const BUILDABLE_ENVELOPE_SCHEMA = z
|
|
|
18
18
|
.refine((val) => PARCEL_NODE_ID_PATTERN.test(val), {
|
|
19
19
|
message: "parcelNodeId must match {county_fips}:{prop_id}",
|
|
20
20
|
}),
|
|
21
|
-
reasoningChain: REASONING_CHAIN_DERIVED_SCHEMA
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
21
|
+
reasoningChain: REASONING_CHAIN_DERIVED_SCHEMA,
|
|
22
|
+
absence: BUILDABLE_ENVELOPE_ABSENCE_SCHEMA.optional(),
|
|
23
|
+
verifiedAbsence: SITE_LAYER_VERIFIED_ABSENCE_SCHEMA.optional(),
|
|
24
|
+
accessPolicy: PROPERTY_ACCESS_POLICY_SCHEMA,
|
|
25
|
+
...PROPERTY_QUALITY_GATE_FIELDS,
|
|
26
|
+
atomTier: z.literal(PROPERTY_ATOM_TIER),
|
|
27
|
+
readContract: PROPERTY_READ_CONTRACT_SCHEMA.optional(),
|
|
28
|
+
})
|
|
29
|
+
.strict()
|
|
30
|
+
.superRefine((data, ctx) => {
|
|
31
|
+
const chain = data.reasoningChain;
|
|
32
|
+
if (chain.derivationMethod !== BUILDABLE_ENVELOPE_DERIVATION_METHOD) {
|
|
33
|
+
ctx.addIssue({
|
|
34
|
+
code: z.ZodIssueCode.custom,
|
|
35
|
+
message: `derivationMethod must be ${BUILDABLE_ENVELOPE_DERIVATION_METHOD}`,
|
|
36
|
+
path: ["reasoningChain", "derivationMethod"],
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
const hasAbsence = data.absence !== undefined;
|
|
40
|
+
const hasVerifiedAbsence = data.verifiedAbsence !== undefined;
|
|
41
|
+
if (hasAbsence && !hasVerifiedAbsence) {
|
|
42
|
+
ctx.addIssue({
|
|
43
|
+
code: z.ZodIssueCode.custom,
|
|
44
|
+
message: "buildable-envelope absence requires verifiedAbsence (evaluated + provenanceScope)",
|
|
45
|
+
path: ["verifiedAbsence"],
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
if (!hasAbsence && hasVerifiedAbsence) {
|
|
49
|
+
ctx.addIssue({
|
|
50
|
+
code: z.ZodIssueCode.custom,
|
|
51
|
+
message: "verifiedAbsence on buildable-envelope requires per-parcel absence kind",
|
|
52
|
+
path: ["absence"],
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
const hasZoningFact = chain.inputAtomRefs.some((r) => r.role === "fact" && r.entityType === "zoning-fact");
|
|
56
|
+
if (!hasZoningFact) {
|
|
57
|
+
ctx.addIssue({
|
|
58
|
+
code: z.ZodIssueCode.custom,
|
|
59
|
+
message: "buildable-envelope requires a zoning-fact input ref",
|
|
60
|
+
path: ["reasoningChain", "inputAtomRefs"],
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
// Positive envelopes keep the full derivation chain. Decline envelopes
|
|
64
|
+
// may lack setback-rule and geometry refs — refusing to invent them.
|
|
65
|
+
if (!hasAbsence) {
|
|
30
66
|
const hasSetbackRule = chain.inputAtomRefs.some((r) => r.role === "rule" && r.entityType === "setback-rule");
|
|
31
67
|
const refFieldCount = chain.inputAtomRefs.filter((r) => r.role === "reference-field").length;
|
|
32
|
-
if (!hasZoningFact) {
|
|
33
|
-
ctx.addIssue({
|
|
34
|
-
code: z.ZodIssueCode.custom,
|
|
35
|
-
message: "buildable-envelope requires a zoning-fact input ref",
|
|
36
|
-
path: ["inputAtomRefs"],
|
|
37
|
-
});
|
|
38
|
-
}
|
|
39
68
|
if (!hasSetbackRule) {
|
|
40
69
|
ctx.addIssue({
|
|
41
70
|
code: z.ZodIssueCode.custom,
|
|
42
71
|
message: "buildable-envelope requires a setback-rule input ref",
|
|
43
|
-
path: ["inputAtomRefs"],
|
|
72
|
+
path: ["reasoningChain", "inputAtomRefs"],
|
|
44
73
|
});
|
|
45
74
|
}
|
|
46
75
|
if (refFieldCount < 2) {
|
|
47
76
|
ctx.addIssue({
|
|
48
77
|
code: z.ZodIssueCode.custom,
|
|
49
78
|
message: "buildable-envelope requires geometry + front-edge reference-field inputs",
|
|
50
|
-
path: ["inputAtomRefs"],
|
|
79
|
+
path: ["reasoningChain", "inputAtomRefs"],
|
|
51
80
|
});
|
|
52
81
|
}
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
...PROPERTY_QUALITY_GATE_FIELDS,
|
|
56
|
-
atomTier: z.literal(PROPERTY_ATOM_TIER),
|
|
57
|
-
readContract: PROPERTY_READ_CONTRACT_SCHEMA.optional(),
|
|
58
|
-
})
|
|
59
|
-
.strict();
|
|
82
|
+
}
|
|
83
|
+
});
|
|
60
84
|
export function createBuildableEnvelope(input) {
|
|
61
85
|
return BUILDABLE_ENVELOPE_SCHEMA.parse(input);
|
|
62
86
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildable-envelope.js","sourceRoot":"","sources":["../../src/property/buildable-envelope.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,OAAO,EAAE,8BAA8B,EAAE,MAAM,uBAAuB,CAAC;AAGvE,OAAO,EACL,sBAAsB,EACtB,6BAA6B,EAC7B,kBAAkB,EAClB,4BAA4B,EAC5B,6BAA6B,
|
|
1
|
+
{"version":3,"file":"buildable-envelope.js","sourceRoot":"","sources":["../../src/property/buildable-envelope.ts"],"names":[],"mappings":"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"}
|
|
@@ -402,13 +402,6 @@ export declare const BUILDING_FOOTPRINT_SCHEMA: z.ZodEffects<z.ZodObject<{
|
|
|
402
402
|
retrievedAtomSetId: string;
|
|
403
403
|
}> | undefined;
|
|
404
404
|
}> | undefined;
|
|
405
|
-
footprintGeometry?: {
|
|
406
|
-
type: "Polygon";
|
|
407
|
-
coordinates: [number, number][][];
|
|
408
|
-
} | {
|
|
409
|
-
type: "MultiPolygon";
|
|
410
|
-
coordinates: [number, number][][][];
|
|
411
|
-
} | undefined;
|
|
412
405
|
absence?: {
|
|
413
406
|
kind: "no-footprint-feature";
|
|
414
407
|
reason: string;
|
|
@@ -417,6 +410,13 @@ export declare const BUILDING_FOOTPRINT_SCHEMA: z.ZodEffects<z.ZodObject<{
|
|
|
417
410
|
evaluated: true;
|
|
418
411
|
provenanceScope: string[];
|
|
419
412
|
} | undefined;
|
|
413
|
+
footprintGeometry?: {
|
|
414
|
+
type: "Polygon";
|
|
415
|
+
coordinates: [number, number][][];
|
|
416
|
+
} | {
|
|
417
|
+
type: "MultiPolygon";
|
|
418
|
+
coordinates: [number, number][][][];
|
|
419
|
+
} | undefined;
|
|
420
420
|
structureRole?: "unknown" | "primary" | "accessory" | undefined;
|
|
421
421
|
sourceVintage?: string | undefined;
|
|
422
422
|
}, {
|
|
@@ -477,13 +477,6 @@ export declare const BUILDING_FOOTPRINT_SCHEMA: z.ZodEffects<z.ZodObject<{
|
|
|
477
477
|
retrievedAtomSetId: string;
|
|
478
478
|
}> | undefined;
|
|
479
479
|
}> | undefined;
|
|
480
|
-
footprintGeometry?: {
|
|
481
|
-
type: "Polygon";
|
|
482
|
-
coordinates: [number, number][][];
|
|
483
|
-
} | {
|
|
484
|
-
type: "MultiPolygon";
|
|
485
|
-
coordinates: [number, number][][][];
|
|
486
|
-
} | undefined;
|
|
487
480
|
absence?: {
|
|
488
481
|
kind: "no-footprint-feature";
|
|
489
482
|
reason: string;
|
|
@@ -492,6 +485,13 @@ export declare const BUILDING_FOOTPRINT_SCHEMA: z.ZodEffects<z.ZodObject<{
|
|
|
492
485
|
evaluated: true;
|
|
493
486
|
provenanceScope: string[];
|
|
494
487
|
} | undefined;
|
|
488
|
+
footprintGeometry?: {
|
|
489
|
+
type: "Polygon";
|
|
490
|
+
coordinates: [number, number][][];
|
|
491
|
+
} | {
|
|
492
|
+
type: "MultiPolygon";
|
|
493
|
+
coordinates: [number, number][][][];
|
|
494
|
+
} | undefined;
|
|
495
495
|
structureRole?: "unknown" | "primary" | "accessory" | undefined;
|
|
496
496
|
sourceVintage?: string | undefined;
|
|
497
497
|
}>, {
|
|
@@ -552,13 +552,6 @@ export declare const BUILDING_FOOTPRINT_SCHEMA: z.ZodEffects<z.ZodObject<{
|
|
|
552
552
|
retrievedAtomSetId: string;
|
|
553
553
|
}> | undefined;
|
|
554
554
|
}> | undefined;
|
|
555
|
-
footprintGeometry?: {
|
|
556
|
-
type: "Polygon";
|
|
557
|
-
coordinates: [number, number][][];
|
|
558
|
-
} | {
|
|
559
|
-
type: "MultiPolygon";
|
|
560
|
-
coordinates: [number, number][][][];
|
|
561
|
-
} | undefined;
|
|
562
555
|
absence?: {
|
|
563
556
|
kind: "no-footprint-feature";
|
|
564
557
|
reason: string;
|
|
@@ -567,6 +560,13 @@ export declare const BUILDING_FOOTPRINT_SCHEMA: z.ZodEffects<z.ZodObject<{
|
|
|
567
560
|
evaluated: true;
|
|
568
561
|
provenanceScope: string[];
|
|
569
562
|
} | undefined;
|
|
563
|
+
footprintGeometry?: {
|
|
564
|
+
type: "Polygon";
|
|
565
|
+
coordinates: [number, number][][];
|
|
566
|
+
} | {
|
|
567
|
+
type: "MultiPolygon";
|
|
568
|
+
coordinates: [number, number][][][];
|
|
569
|
+
} | undefined;
|
|
570
570
|
structureRole?: "unknown" | "primary" | "accessory" | undefined;
|
|
571
571
|
sourceVintage?: string | undefined;
|
|
572
572
|
}, {
|
|
@@ -627,13 +627,6 @@ export declare const BUILDING_FOOTPRINT_SCHEMA: z.ZodEffects<z.ZodObject<{
|
|
|
627
627
|
retrievedAtomSetId: string;
|
|
628
628
|
}> | undefined;
|
|
629
629
|
}> | undefined;
|
|
630
|
-
footprintGeometry?: {
|
|
631
|
-
type: "Polygon";
|
|
632
|
-
coordinates: [number, number][][];
|
|
633
|
-
} | {
|
|
634
|
-
type: "MultiPolygon";
|
|
635
|
-
coordinates: [number, number][][][];
|
|
636
|
-
} | undefined;
|
|
637
630
|
absence?: {
|
|
638
631
|
kind: "no-footprint-feature";
|
|
639
632
|
reason: string;
|
|
@@ -642,6 +635,13 @@ export declare const BUILDING_FOOTPRINT_SCHEMA: z.ZodEffects<z.ZodObject<{
|
|
|
642
635
|
evaluated: true;
|
|
643
636
|
provenanceScope: string[];
|
|
644
637
|
} | undefined;
|
|
638
|
+
footprintGeometry?: {
|
|
639
|
+
type: "Polygon";
|
|
640
|
+
coordinates: [number, number][][];
|
|
641
|
+
} | {
|
|
642
|
+
type: "MultiPolygon";
|
|
643
|
+
coordinates: [number, number][][][];
|
|
644
|
+
} | undefined;
|
|
645
645
|
structureRole?: "unknown" | "primary" | "accessory" | undefined;
|
|
646
646
|
sourceVintage?: string | undefined;
|
|
647
647
|
}>;
|