@mailwoman/corpus 4.9.0 → 4.11.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/README.md +79 -0
- package/out/src/adapters/ban/adapter.d.ts +6 -2
- package/out/src/adapters/ban/adapter.d.ts.map +1 -1
- package/out/src/adapters/ban/adapter.js +8 -4
- package/out/src/adapters/ban/adapter.js.map +1 -1
- package/out/src/adapters/openaddresses/adapter.d.ts +5 -2
- package/out/src/adapters/openaddresses/adapter.d.ts.map +1 -1
- package/out/src/adapters/openaddresses/adapter.js +2 -7
- package/out/src/adapters/openaddresses/adapter.js.map +1 -1
- package/out/src/build.d.ts +14 -0
- package/out/src/build.d.ts.map +1 -1
- package/out/src/build.js +25 -0
- package/out/src/build.js.map +1 -1
- package/out/src/format.d.ts +6 -71
- package/out/src/format.d.ts.map +1 -1
- package/out/src/format.js +6 -143
- package/out/src/format.js.map +1 -1
- package/out/src/license.d.ts +37 -0
- package/out/src/license.d.ts.map +1 -0
- package/out/src/license.js +46 -0
- package/out/src/license.js.map +1 -0
- package/out/src/synthesize-boundary-stress.d.ts +77 -0
- package/out/src/synthesize-boundary-stress.d.ts.map +1 -0
- package/out/src/synthesize-boundary-stress.js +449 -0
- package/out/src/synthesize-boundary-stress.js.map +1 -0
- package/out/src/synthesize-po-box.d.ts +3 -1
- package/out/src/synthesize-po-box.d.ts.map +1 -1
- package/out/src/synthesize-po-box.js +56 -3
- package/out/src/synthesize-po-box.js.map +1 -1
- package/package.json +4 -4
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @copyright Sister Software
|
|
3
|
+
* @license AGPL-3.0
|
|
4
|
+
* @author Teffen Ellis, et al.
|
|
5
|
+
*
|
|
6
|
+
* Corpus licensing — the single source of truth for the training-data license policy (#26).
|
|
7
|
+
*
|
|
8
|
+
* Posture (operator, 2026-06-19): **exclusion is a deliberate act, not a silent default.** The
|
|
9
|
+
* build INCLUDES every row an adapter yields (stamping its `license`); a build that needs a clean
|
|
10
|
+
* license set — e.g. the proprietary `@mailwoman/neural-weights-*` weights, which must not
|
|
11
|
+
* inherit a share-alike obligation — PURPOSELY excludes kinds via `buildCorpus({ excludeLicenses
|
|
12
|
+
* })` (CLI `--exclude-licenses` / `--exclude-share-alike`). Nothing is dropped on a license
|
|
13
|
+
* string unless the operator named it. This avoids the trap of silently dropping allowed data
|
|
14
|
+
* mis-stamped with a conservative license (e.g. BAN, which is dual-licensed Licence Ouverte OR
|
|
15
|
+
* ODbL — we elect Licence Ouverte; a default-deny on the old `ODbL` stamp would have wrongly
|
|
16
|
+
* dropped 48M allowed rows).
|
|
17
|
+
*
|
|
18
|
+
* Tier reference (#26): A = PD/CC0 (allowed); B = CC-BY / Licence Ouverte (allowed WITH attribution
|
|
19
|
+
* — the model card must carry it); C = share-alike (ODbL, CC-BY-SA, CC-SA) — exclude for a
|
|
20
|
+
* proprietary-weights build via `--exclude-share-alike`.
|
|
21
|
+
*/
|
|
22
|
+
/**
|
|
23
|
+
* Licenses that require share-alike / create a copyleft obligation on derived works (Tier C). The
|
|
24
|
+
* `--exclude-share-alike` convenience expands to this; `allowShareAlike: false` adapters also use
|
|
25
|
+
* it.
|
|
26
|
+
*/
|
|
27
|
+
export declare const SHARE_ALIKE_PATTERN: RegExp;
|
|
28
|
+
/**
|
|
29
|
+
* Compile a `--exclude-licenses` spec (comma-separated, e.g. `"ODbL,CC-BY-SA"`) into anchored,
|
|
30
|
+
* case-insensitive prefix patterns. Each entry matches a license string that STARTS with it, so
|
|
31
|
+
* `CC-BY-SA` catches `CC-BY-SA-3.0`, `CC-BY-SA-4.0`, etc. Regex metacharacters are escaped — the
|
|
32
|
+
* spec is a literal license prefix, not a user-supplied regex.
|
|
33
|
+
*/
|
|
34
|
+
export declare function compileLicenseExcludes(spec: string): RegExp[];
|
|
35
|
+
/** True iff `license` matches any of the exclude `patterns` (empty patterns → never excluded). */
|
|
36
|
+
export declare function licenseExcluded(license: string | undefined, patterns: readonly RegExp[]): boolean;
|
|
37
|
+
//# sourceMappingURL=license.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"license.d.ts","sourceRoot":"","sources":["../../src/license.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,QAAmD,CAAA;AAEnF;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAM7D;AAED,kGAAkG;AAClG,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,EAAE,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAGjG"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @copyright Sister Software
|
|
3
|
+
* @license AGPL-3.0
|
|
4
|
+
* @author Teffen Ellis, et al.
|
|
5
|
+
*
|
|
6
|
+
* Corpus licensing — the single source of truth for the training-data license policy (#26).
|
|
7
|
+
*
|
|
8
|
+
* Posture (operator, 2026-06-19): **exclusion is a deliberate act, not a silent default.** The
|
|
9
|
+
* build INCLUDES every row an adapter yields (stamping its `license`); a build that needs a clean
|
|
10
|
+
* license set — e.g. the proprietary `@mailwoman/neural-weights-*` weights, which must not
|
|
11
|
+
* inherit a share-alike obligation — PURPOSELY excludes kinds via `buildCorpus({ excludeLicenses
|
|
12
|
+
* })` (CLI `--exclude-licenses` / `--exclude-share-alike`). Nothing is dropped on a license
|
|
13
|
+
* string unless the operator named it. This avoids the trap of silently dropping allowed data
|
|
14
|
+
* mis-stamped with a conservative license (e.g. BAN, which is dual-licensed Licence Ouverte OR
|
|
15
|
+
* ODbL — we elect Licence Ouverte; a default-deny on the old `ODbL` stamp would have wrongly
|
|
16
|
+
* dropped 48M allowed rows).
|
|
17
|
+
*
|
|
18
|
+
* Tier reference (#26): A = PD/CC0 (allowed); B = CC-BY / Licence Ouverte (allowed WITH attribution
|
|
19
|
+
* — the model card must carry it); C = share-alike (ODbL, CC-BY-SA, CC-SA) — exclude for a
|
|
20
|
+
* proprietary-weights build via `--exclude-share-alike`.
|
|
21
|
+
*/
|
|
22
|
+
/**
|
|
23
|
+
* Licenses that require share-alike / create a copyleft obligation on derived works (Tier C). The
|
|
24
|
+
* `--exclude-share-alike` convenience expands to this; `allowShareAlike: false` adapters also use
|
|
25
|
+
* it.
|
|
26
|
+
*/
|
|
27
|
+
export const SHARE_ALIKE_PATTERN = /^ODbL|^Open Database License|^CC-BY-SA|^CC-SA/i;
|
|
28
|
+
/**
|
|
29
|
+
* Compile a `--exclude-licenses` spec (comma-separated, e.g. `"ODbL,CC-BY-SA"`) into anchored,
|
|
30
|
+
* case-insensitive prefix patterns. Each entry matches a license string that STARTS with it, so
|
|
31
|
+
* `CC-BY-SA` catches `CC-BY-SA-3.0`, `CC-BY-SA-4.0`, etc. Regex metacharacters are escaped — the
|
|
32
|
+
* spec is a literal license prefix, not a user-supplied regex.
|
|
33
|
+
*/
|
|
34
|
+
export function compileLicenseExcludes(spec) {
|
|
35
|
+
return spec
|
|
36
|
+
.split(",")
|
|
37
|
+
.map((s) => s.trim())
|
|
38
|
+
.filter(Boolean)
|
|
39
|
+
.map((s) => new RegExp("^" + s.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"), "i"));
|
|
40
|
+
}
|
|
41
|
+
/** True iff `license` matches any of the exclude `patterns` (empty patterns → never excluded). */
|
|
42
|
+
export function licenseExcluded(license, patterns) {
|
|
43
|
+
const l = license ?? "";
|
|
44
|
+
return patterns.some((p) => p.test(l));
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=license.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"license.js","sourceRoot":"","sources":["../../src/license.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,gDAAgD,CAAA;AAEnF;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAAC,IAAY;IAClD,OAAO,IAAI;SACT,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SACpB,MAAM,CAAC,OAAO,CAAC;SACf,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,CAAA;AAC9E,CAAC;AAED,kGAAkG;AAClG,MAAM,UAAU,eAAe,CAAC,OAA2B,EAAE,QAA2B;IACvF,MAAM,CAAC,GAAG,OAAO,IAAI,EAAE,CAAA;IACvB,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;AACvC,CAAC"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @copyright Sister Software
|
|
3
|
+
* @license AGPL-3.0
|
|
4
|
+
* @author Teffen Ellis, et al.
|
|
5
|
+
*
|
|
6
|
+
* Boundary-instability synthesizer (#375 — the highest-leverage parser lever). The failure taxonomy
|
|
7
|
+
*
|
|
8
|
+
* The within-token-punctuation decomposition (#702) found one failure FAMILY surfacing under many
|
|
9
|
+
* names: the model mis-places token boundaries between adjacent components when the boundary is
|
|
10
|
+
* ambiguous or unmarked. This generator emits diverse BIO-labeled rows that put the gold boundary
|
|
11
|
+
* exactly where the model wobbles, so a retrain learns the boundary from context, not the
|
|
12
|
+
* lexeme.
|
|
13
|
+
*
|
|
14
|
+
* The four token-aligned stress shapes, all in BASE LOCALES (US/FR/DE) so the shard never
|
|
15
|
+
* introduces tokens the base corpus lacks (the #511 base-consistency lint flagged an earlier
|
|
16
|
+
* AU-bearing draft: AU 4-digit postcodes collide with US house numbers, and AU localities are
|
|
17
|
+
* absent from the US/FR/DE base — a real contradiction). Each component is a whitespace-separated
|
|
18
|
+
* token run, so `alignRow` labels it cleanly:
|
|
19
|
+
*
|
|
20
|
+
* 1. `street-eats-affix` — multi-word street + suffix (`Country Club Rd` → street + street_suffix),
|
|
21
|
+
* the #1 wobble: the model keeps the suffix in the street.
|
|
22
|
+
* 2. `comma-less-city-state` — no comma between street / locality / region (`100 Main St Springfield
|
|
23
|
+
* IL 62701`), the #694 family: concatenated input loses the segmentation cue. US-only (US
|
|
24
|
+
* zips are base-consistent; the boundary is locale-agnostic).
|
|
25
|
+
* 3. `fr-prefix` — FR street-type prefix split from the name (`Rue Jean-Baptiste Lebas` →
|
|
26
|
+
* street_prefix
|
|
27
|
+
*
|
|
28
|
+
* - Street), postcode-first order.
|
|
29
|
+
* 4. `house-number-after-street` — FR/DE number-follows-street (`Neuve-des-Capucines 5` → street +
|
|
30
|
+
* house_number), the model absorbs the number into the street.
|
|
31
|
+
*
|
|
32
|
+
* Two BALANCING shapes (added 2026-06-18 after the v1.6.0 probes). The first pass at weight 1.0
|
|
33
|
+
* lifted the boundaries but over-fit a NARROW distribution — every row was a clean, full,
|
|
34
|
+
* structured address — so the model regressed on out-of-distribution real rows (held-out US
|
|
35
|
+
* locality 66.3→58.2%). These two widen the distribution the shard teaches over, per the
|
|
36
|
+
* diagnosis (scripts/eval/locality-regression-probe): 5. `bare-locality` — locality with NO
|
|
37
|
+
* street (`Public Library, Lisbon ND`, `75003 Paris`), the ship-blocker: 84% of the v1.6.0
|
|
38
|
+
* locality regression was DROPPED locality on bare "City, STATE" rows, because every other shape
|
|
39
|
+
* placed a street before the city. Bare / comma-less / postcode'd / venue-prefixed forms, US +
|
|
40
|
+
* FR. 6. `house-number-before-street` — the confounding mirror of #4 (same FR vocab, number
|
|
41
|
+
* BEFORE the street). A balanced before:after mix breaks the positional shortcut behind the #4
|
|
42
|
+
* order-bias.
|
|
43
|
+
*
|
|
44
|
+
* EXCLUDED: the region+postcode glue (`NY14201` — sub-token, no punctuation to split) and the
|
|
45
|
+
* AU/NZ/UK slash unit-convention (`4/2A` → unit+house_number). The slash labels cleanly (the
|
|
46
|
+
* tokenizer splits `/`) and is the worst within-token class — but it inherently requires non-base
|
|
47
|
+
* AU/NZ/UK locales, which contradict the US/FR/DE base (the lint catch). It belongs in a
|
|
48
|
+
* separately-scoped AU/NZ/UK boundary-coverage shard that ALSO adds AU base coverage, not in this
|
|
49
|
+
* base-locale shard. `synthesize-boundary-stress.test.ts` proves the alignments.
|
|
50
|
+
*/
|
|
51
|
+
import type { CanonicalRow } from "./types.js";
|
|
52
|
+
export type BoundaryStressTemplate = "street-eats-affix" | "comma-less-city-state" | "fr-prefix" | "house-number-after-street" | "bare-locality" | "house-number-before-street";
|
|
53
|
+
export interface BoundaryStressBaseTuple {
|
|
54
|
+
locality: string;
|
|
55
|
+
region: string;
|
|
56
|
+
postcode: string;
|
|
57
|
+
country: string;
|
|
58
|
+
}
|
|
59
|
+
export interface BoundaryStressSynthesisOpts {
|
|
60
|
+
random?: () => number;
|
|
61
|
+
/** Force a specific shape (tests + balanced shard composition). */
|
|
62
|
+
forceTemplate?: BoundaryStressTemplate;
|
|
63
|
+
}
|
|
64
|
+
export interface SynthesizedBoundaryStressRow {
|
|
65
|
+
raw: string;
|
|
66
|
+
components: CanonicalRow["components"];
|
|
67
|
+
locale: string;
|
|
68
|
+
template: BoundaryStressTemplate;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Synthesize one boundary-stress row. `base` is optional — when omitted, a locale-appropriate tuple
|
|
72
|
+
* is drawn from the internal pools (so the generator is self-contained; a build script can pass
|
|
73
|
+
* real tuples for scale + diversity). Every component value is a verbatim substring of `raw`, so
|
|
74
|
+
* `alignRow` locates + BIO-labels it.
|
|
75
|
+
*/
|
|
76
|
+
export declare function synthesizeBoundaryStressRow(base: BoundaryStressBaseTuple | undefined, opts?: BoundaryStressSynthesisOpts): SynthesizedBoundaryStressRow;
|
|
77
|
+
//# sourceMappingURL=synthesize-boundary-stress.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"synthesize-boundary-stress.d.ts","sourceRoot":"","sources":["../../src/synthesize-boundary-stress.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE9C,MAAM,MAAM,sBAAsB,GAC/B,mBAAmB,GACnB,uBAAuB,GACvB,WAAW,GACX,2BAA2B,GAG3B,eAAe,GACf,4BAA4B,CAAA;AAE/B,MAAM,WAAW,uBAAuB;IACvC,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,2BAA2B;IAC3C,MAAM,CAAC,EAAE,MAAM,MAAM,CAAA;IACrB,mEAAmE;IACnE,aAAa,CAAC,EAAE,sBAAsB,CAAA;CACtC;AAED,MAAM,WAAW,4BAA4B;IAC5C,GAAG,EAAE,MAAM,CAAA;IACX,UAAU,EAAE,YAAY,CAAC,YAAY,CAAC,CAAA;IACtC,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,sBAAsB,CAAA;CAChC;AAyRD;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAC1C,IAAI,EAAE,uBAAuB,GAAG,SAAS,EACzC,IAAI,GAAE,2BAAgC,GACpC,4BAA4B,CA4H9B"}
|
|
@@ -0,0 +1,449 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @copyright Sister Software
|
|
3
|
+
* @license AGPL-3.0
|
|
4
|
+
* @author Teffen Ellis, et al.
|
|
5
|
+
*
|
|
6
|
+
* Boundary-instability synthesizer (#375 — the highest-leverage parser lever). The failure taxonomy
|
|
7
|
+
*
|
|
8
|
+
* The within-token-punctuation decomposition (#702) found one failure FAMILY surfacing under many
|
|
9
|
+
* names: the model mis-places token boundaries between adjacent components when the boundary is
|
|
10
|
+
* ambiguous or unmarked. This generator emits diverse BIO-labeled rows that put the gold boundary
|
|
11
|
+
* exactly where the model wobbles, so a retrain learns the boundary from context, not the
|
|
12
|
+
* lexeme.
|
|
13
|
+
*
|
|
14
|
+
* The four token-aligned stress shapes, all in BASE LOCALES (US/FR/DE) so the shard never
|
|
15
|
+
* introduces tokens the base corpus lacks (the #511 base-consistency lint flagged an earlier
|
|
16
|
+
* AU-bearing draft: AU 4-digit postcodes collide with US house numbers, and AU localities are
|
|
17
|
+
* absent from the US/FR/DE base — a real contradiction). Each component is a whitespace-separated
|
|
18
|
+
* token run, so `alignRow` labels it cleanly:
|
|
19
|
+
*
|
|
20
|
+
* 1. `street-eats-affix` — multi-word street + suffix (`Country Club Rd` → street + street_suffix),
|
|
21
|
+
* the #1 wobble: the model keeps the suffix in the street.
|
|
22
|
+
* 2. `comma-less-city-state` — no comma between street / locality / region (`100 Main St Springfield
|
|
23
|
+
* IL 62701`), the #694 family: concatenated input loses the segmentation cue. US-only (US
|
|
24
|
+
* zips are base-consistent; the boundary is locale-agnostic).
|
|
25
|
+
* 3. `fr-prefix` — FR street-type prefix split from the name (`Rue Jean-Baptiste Lebas` →
|
|
26
|
+
* street_prefix
|
|
27
|
+
*
|
|
28
|
+
* - Street), postcode-first order.
|
|
29
|
+
* 4. `house-number-after-street` — FR/DE number-follows-street (`Neuve-des-Capucines 5` → street +
|
|
30
|
+
* house_number), the model absorbs the number into the street.
|
|
31
|
+
*
|
|
32
|
+
* Two BALANCING shapes (added 2026-06-18 after the v1.6.0 probes). The first pass at weight 1.0
|
|
33
|
+
* lifted the boundaries but over-fit a NARROW distribution — every row was a clean, full,
|
|
34
|
+
* structured address — so the model regressed on out-of-distribution real rows (held-out US
|
|
35
|
+
* locality 66.3→58.2%). These two widen the distribution the shard teaches over, per the
|
|
36
|
+
* diagnosis (scripts/eval/locality-regression-probe): 5. `bare-locality` — locality with NO
|
|
37
|
+
* street (`Public Library, Lisbon ND`, `75003 Paris`), the ship-blocker: 84% of the v1.6.0
|
|
38
|
+
* locality regression was DROPPED locality on bare "City, STATE" rows, because every other shape
|
|
39
|
+
* placed a street before the city. Bare / comma-less / postcode'd / venue-prefixed forms, US +
|
|
40
|
+
* FR. 6. `house-number-before-street` — the confounding mirror of #4 (same FR vocab, number
|
|
41
|
+
* BEFORE the street). A balanced before:after mix breaks the positional shortcut behind the #4
|
|
42
|
+
* order-bias.
|
|
43
|
+
*
|
|
44
|
+
* EXCLUDED: the region+postcode glue (`NY14201` — sub-token, no punctuation to split) and the
|
|
45
|
+
* AU/NZ/UK slash unit-convention (`4/2A` → unit+house_number). The slash labels cleanly (the
|
|
46
|
+
* tokenizer splits `/`) and is the worst within-token class — but it inherently requires non-base
|
|
47
|
+
* AU/NZ/UK locales, which contradict the US/FR/DE base (the lint catch). It belongs in a
|
|
48
|
+
* separately-scoped AU/NZ/UK boundary-coverage shard that ALSO adds AU base coverage, not in this
|
|
49
|
+
* base-locale shard. `synthesize-boundary-stress.test.ts` proves the alignments.
|
|
50
|
+
*/
|
|
51
|
+
function pick(arr, random) {
|
|
52
|
+
return arr[Math.floor(random() * arr.length)];
|
|
53
|
+
}
|
|
54
|
+
// Multi-word street names — the suffix boundary only bites when "Club" could be read as part of the
|
|
55
|
+
// name. Single-word names alone teach nothing about the suffix edge.
|
|
56
|
+
// Multi-word names are what make the suffix boundary BITE (the model must not read the trailing
|
|
57
|
+
// suffix word as part of the name). Kept diverse so the shard teaches the boundary, not the lexeme.
|
|
58
|
+
const MULTIWORD_STREETS = [
|
|
59
|
+
"Country Club",
|
|
60
|
+
"Martin Luther King",
|
|
61
|
+
"Forest Hill",
|
|
62
|
+
"Lake View",
|
|
63
|
+
"Spring Valley",
|
|
64
|
+
"Cedar Ridge",
|
|
65
|
+
"Old Mill",
|
|
66
|
+
"Sunset Park",
|
|
67
|
+
"Maple Grove",
|
|
68
|
+
"Stone Creek",
|
|
69
|
+
"Glen Cove",
|
|
70
|
+
"Pine Bluff",
|
|
71
|
+
"Fox Hollow",
|
|
72
|
+
"Briar Patch",
|
|
73
|
+
"West End",
|
|
74
|
+
"College Station",
|
|
75
|
+
"Quail Hollow",
|
|
76
|
+
"Eagle Ridge",
|
|
77
|
+
"Deer Run",
|
|
78
|
+
"Bear Creek",
|
|
79
|
+
"Willow Bend",
|
|
80
|
+
"Cypress Point",
|
|
81
|
+
"Laurel Oak",
|
|
82
|
+
"Magnolia Park",
|
|
83
|
+
"Cherry Hill",
|
|
84
|
+
"Walnut Grove",
|
|
85
|
+
"Birch Hollow",
|
|
86
|
+
"Aspen Grove",
|
|
87
|
+
"Juniper Ridge",
|
|
88
|
+
"Hidden Valley",
|
|
89
|
+
"Rolling Hills",
|
|
90
|
+
"Tanglewood",
|
|
91
|
+
"Meadow Brook",
|
|
92
|
+
"Clover Field",
|
|
93
|
+
"Sunrise Point",
|
|
94
|
+
"Harbor View",
|
|
95
|
+
"Bay Shore",
|
|
96
|
+
"Ocean Breeze",
|
|
97
|
+
"Mountain View",
|
|
98
|
+
"Valley Forge",
|
|
99
|
+
"Liberty Square",
|
|
100
|
+
"Washington Crossing",
|
|
101
|
+
"Kings Highway",
|
|
102
|
+
"Queens Gate",
|
|
103
|
+
"Princeton Junction",
|
|
104
|
+
];
|
|
105
|
+
const SINGLE_STREETS = [
|
|
106
|
+
"Main",
|
|
107
|
+
"Oak",
|
|
108
|
+
"Maple",
|
|
109
|
+
"Park",
|
|
110
|
+
"Washington",
|
|
111
|
+
"Lincoln",
|
|
112
|
+
"Church",
|
|
113
|
+
"River",
|
|
114
|
+
"Pine",
|
|
115
|
+
"Cedar",
|
|
116
|
+
"Elm",
|
|
117
|
+
"Jefferson",
|
|
118
|
+
"Madison",
|
|
119
|
+
"Adams",
|
|
120
|
+
"Jackson",
|
|
121
|
+
"Franklin",
|
|
122
|
+
"Highland",
|
|
123
|
+
"Sunset",
|
|
124
|
+
"Lakeview",
|
|
125
|
+
"Hillcrest",
|
|
126
|
+
"Cambridge",
|
|
127
|
+
"Devonshire",
|
|
128
|
+
"Sherwood",
|
|
129
|
+
"Kingston",
|
|
130
|
+
"Berkshire",
|
|
131
|
+
"Aberdeen",
|
|
132
|
+
"Belmont",
|
|
133
|
+
"Carlisle",
|
|
134
|
+
"Dover",
|
|
135
|
+
"Easton",
|
|
136
|
+
"Fairfax",
|
|
137
|
+
"Greenwood",
|
|
138
|
+
"1st",
|
|
139
|
+
"2nd",
|
|
140
|
+
"3rd",
|
|
141
|
+
"4th",
|
|
142
|
+
"5th",
|
|
143
|
+
"12th",
|
|
144
|
+
"42nd",
|
|
145
|
+
];
|
|
146
|
+
const SUFFIXES = [
|
|
147
|
+
"St",
|
|
148
|
+
"Street",
|
|
149
|
+
"Ave",
|
|
150
|
+
"Avenue",
|
|
151
|
+
"Rd",
|
|
152
|
+
"Road",
|
|
153
|
+
"Blvd",
|
|
154
|
+
"Boulevard",
|
|
155
|
+
"Ln",
|
|
156
|
+
"Lane",
|
|
157
|
+
"Dr",
|
|
158
|
+
"Drive",
|
|
159
|
+
"Pkwy",
|
|
160
|
+
"Parkway",
|
|
161
|
+
"Way",
|
|
162
|
+
"Ct",
|
|
163
|
+
"Court",
|
|
164
|
+
"Pl",
|
|
165
|
+
"Place",
|
|
166
|
+
"Cir",
|
|
167
|
+
"Circle",
|
|
168
|
+
"Ter",
|
|
169
|
+
"Terrace",
|
|
170
|
+
"Hwy",
|
|
171
|
+
"Trail",
|
|
172
|
+
"Loop",
|
|
173
|
+
"Cres",
|
|
174
|
+
"Crescent",
|
|
175
|
+
"Row",
|
|
176
|
+
"Walk",
|
|
177
|
+
];
|
|
178
|
+
const DIRECTIONALS = ["N", "S", "E", "W", "NE", "NW", "SE", "SW"];
|
|
179
|
+
// FR street-type prefixes + hyphenated honorific street names (the hyphen is incidental; the boundary
|
|
180
|
+
// stress is the prefix↔name split + the number-after-street order).
|
|
181
|
+
const FR_PREFIXES = [
|
|
182
|
+
"Rue",
|
|
183
|
+
"Avenue",
|
|
184
|
+
"Boulevard",
|
|
185
|
+
"Place",
|
|
186
|
+
"Impasse",
|
|
187
|
+
"Chemin",
|
|
188
|
+
"Quai",
|
|
189
|
+
"Cours",
|
|
190
|
+
"Allée",
|
|
191
|
+
"Passage",
|
|
192
|
+
"Square",
|
|
193
|
+
"Villa",
|
|
194
|
+
"Sentier",
|
|
195
|
+
"Promenade",
|
|
196
|
+
];
|
|
197
|
+
const FR_NAMES = [
|
|
198
|
+
"Jean-Baptiste Lebas",
|
|
199
|
+
"Neuve-des-Capucines",
|
|
200
|
+
"Charles-de-Gaulle",
|
|
201
|
+
"du Général-Leclerc",
|
|
202
|
+
"de la République",
|
|
203
|
+
"des Trois-Frères",
|
|
204
|
+
"Victor-Hugo",
|
|
205
|
+
"Jean-Jaurès",
|
|
206
|
+
"de l'Abreuvoir",
|
|
207
|
+
"Émile-Zola",
|
|
208
|
+
"Gambetta",
|
|
209
|
+
"Jean-Moulin",
|
|
210
|
+
"des Martyrs-de-la-Résistance",
|
|
211
|
+
"du Maréchal-Foch",
|
|
212
|
+
"Pierre-et-Marie-Curie",
|
|
213
|
+
"Antoine-de-Saint-Exupéry",
|
|
214
|
+
"de la Liberté",
|
|
215
|
+
"des Quatre-Vents",
|
|
216
|
+
"du Faubourg-Saint-Antoine",
|
|
217
|
+
"Saint-Honoré",
|
|
218
|
+
"de la Pompe",
|
|
219
|
+
"des Petits-Champs",
|
|
220
|
+
"Léon-Blum",
|
|
221
|
+
"Aristide-Briand",
|
|
222
|
+
];
|
|
223
|
+
// Org/venue prefixes for the bare-locality shape — the v1.6.0 locality drop hit org-PREFIXED real rows
|
|
224
|
+
// hardest ("LISBON PUBLIC LIBRARY, …, Lisbon ND"; "Alburg Health Center"). Teaching the locality WITH a
|
|
225
|
+
// leading venue keeps the model emitting it on facility-style addresses (NPPES/HRSA shapes). `venue` is a
|
|
226
|
+
// base ComponentTag.
|
|
227
|
+
//
|
|
228
|
+
// #511-LINTED 2026-06-18 (scripts/lint-venue-vocab — scan of nppes/hrsa/tiger/nad/wof-admin): every token
|
|
229
|
+
// here is venue-DOMINANT in the base, so the shard agrees with it. The first draft was naive — 9 terms
|
|
230
|
+
// were dropped because their tokens are dominantly street/locality and would CONTRADICT the base the way
|
|
231
|
+
// Madison-as-street did (#511): "Fire" 93% street, "Veterans" 94% street, "City" 68% locality, "Hall" 63%
|
|
232
|
+
// street, "Memorial"/"Hospital" 62-63% street, "Recreation" 79% street, "Town" 48% locality, "Library" 51%
|
|
233
|
+
// street, "County" 68% street, "Arts"/"Courthouse"/"Municipal" dependent_locality. Kept tokens: Clinic 98%,
|
|
234
|
+
// Practice 98%, Dental 100%, Health 99%, Medical 88%, Community 92%, Department 90%, Group 87%, Center 65%,
|
|
235
|
+
// School 70%, Public 89%, Elementary/Family 97% (all venue).
|
|
236
|
+
const VENUES = [
|
|
237
|
+
"Community Center",
|
|
238
|
+
"Health Center",
|
|
239
|
+
"Medical Center",
|
|
240
|
+
"Medical Clinic",
|
|
241
|
+
"Family Clinic",
|
|
242
|
+
"Community Clinic",
|
|
243
|
+
"Dental Clinic",
|
|
244
|
+
"Family Practice",
|
|
245
|
+
"Medical Practice",
|
|
246
|
+
"Dental Group",
|
|
247
|
+
"Medical Group",
|
|
248
|
+
"Health Department",
|
|
249
|
+
"Elementary School",
|
|
250
|
+
"Public School",
|
|
251
|
+
];
|
|
252
|
+
// Localities DERIVED from the base corpus (#511): every name here is verified locality-DOMINANT in the
|
|
253
|
+
// training data (B-locality ≫ I-street), so the shard agrees with the base instead of fighting it. The
|
|
254
|
+
// night's targeted scan caught the prior vocab (Madison, Portland, Springfield IL…) at 92–100% STREET
|
|
255
|
+
// in the base ("Madison Ave"), the "5th Avenue Theatre" #511 trap. See 2026-06-17-locality-vocab-fix.
|
|
256
|
+
const US_TUPLES = [
|
|
257
|
+
{ locality: "Albuquerque", region: "NM", postcode: "87102", country: "US" },
|
|
258
|
+
{ locality: "Indianapolis", region: "IN", postcode: "46203", country: "US" },
|
|
259
|
+
{ locality: "Sacramento", region: "CA", postcode: "95823", country: "US" },
|
|
260
|
+
{ locality: "Rochester", region: "NY", postcode: "14606", country: "US" },
|
|
261
|
+
{ locality: "Jacksonville", region: "FL", postcode: "32209", country: "US" },
|
|
262
|
+
{ locality: "Portsmouth", region: "VA", postcode: "23704", country: "US" },
|
|
263
|
+
{ locality: "Merced", region: "CA", postcode: "95340", country: "US" },
|
|
264
|
+
{ locality: "Miami", region: "FL", postcode: "33125", country: "US" },
|
|
265
|
+
{ locality: "Tampa", region: "FL", postcode: "33624", country: "US" },
|
|
266
|
+
{ locality: "Orlando", region: "FL", postcode: "32827", country: "US" },
|
|
267
|
+
{ locality: "Tulsa", region: "OK", postcode: "74133", country: "US" },
|
|
268
|
+
{ locality: "Louisville", region: "KY", postcode: "40203", country: "US" },
|
|
269
|
+
{ locality: "Nashville", region: "TN", postcode: "37207", country: "US" },
|
|
270
|
+
{ locality: "Spokane", region: "WA", postcode: "99202", country: "US" },
|
|
271
|
+
{ locality: "Akron", region: "OH", postcode: "44313", country: "US" },
|
|
272
|
+
{ locality: "Fairbanks", region: "AK", postcode: "99701", country: "US" },
|
|
273
|
+
{ locality: "Plano", region: "TX", postcode: "75024", country: "US" },
|
|
274
|
+
{ locality: "Shreveport", region: "LA", postcode: "71103", country: "US" },
|
|
275
|
+
{ locality: "Southfield", region: "MI", postcode: "48034", country: "US" },
|
|
276
|
+
{ locality: "Glendale", region: "CA", postcode: "91203", country: "US" },
|
|
277
|
+
{ locality: "Philadelphia", region: "PA", postcode: "19104", country: "US" },
|
|
278
|
+
{ locality: "Brooklyn", region: "NY", postcode: "11230", country: "US" },
|
|
279
|
+
{ locality: "Bronx", region: "NY", postcode: "10461", country: "US" },
|
|
280
|
+
{ locality: "Fairport", region: "NY", postcode: "14450", country: "US" },
|
|
281
|
+
{ locality: "Syracuse", region: "NE", postcode: "68446", country: "US" },
|
|
282
|
+
{ locality: "Marion", region: "AR", postcode: "72364", country: "US" },
|
|
283
|
+
{ locality: "Chicago", region: "IL", postcode: "60625", country: "US" },
|
|
284
|
+
{ locality: "Springfield", region: "MA", postcode: "01108", country: "US" },
|
|
285
|
+
];
|
|
286
|
+
// FR localities DERIVED from the FR (ban) shards specifically — where these famous cities are 95–99%
|
|
287
|
+
// locality-DOMINANT (Paris 515605/24789, Marseille 247014/1752, Lyon 106239/3114). NB: the all-shard
|
|
288
|
+
// scan falsely flagged them street-dominant by undersampling the FR block (parts 180–209) and mixing in
|
|
289
|
+
// US street-contexts; the FR-block scan is the honest distribution. Dept-diverse (28 depts), region
|
|
290
|
+
// empty (French addresses carry no region token; the generator's region-optional path handles it).
|
|
291
|
+
const FR_TUPLES = [
|
|
292
|
+
{ locality: "Paris", region: "", postcode: "75003", country: "FR" },
|
|
293
|
+
{ locality: "Marseille", region: "", postcode: "13016", country: "FR" },
|
|
294
|
+
{ locality: "Lyon", region: "", postcode: "69009", country: "FR" },
|
|
295
|
+
{ locality: "Perpignan", region: "", postcode: "66000", country: "FR" },
|
|
296
|
+
{ locality: "Toulon", region: "", postcode: "83100", country: "FR" },
|
|
297
|
+
{ locality: "Avignon", region: "", postcode: "84140", country: "FR" },
|
|
298
|
+
{ locality: "Poitiers", region: "", postcode: "86000", country: "FR" },
|
|
299
|
+
{ locality: "Arles", region: "", postcode: "13280", country: "FR" },
|
|
300
|
+
{ locality: "Annecy", region: "", postcode: "74940", country: "FR" },
|
|
301
|
+
{ locality: "Mulhouse", region: "", postcode: "68200", country: "FR" },
|
|
302
|
+
{ locality: "Carpentras", region: "", postcode: "84200", country: "FR" },
|
|
303
|
+
{ locality: "Antony", region: "", postcode: "92160", country: "FR" },
|
|
304
|
+
{ locality: "Sartrouville", region: "", postcode: "78500", country: "FR" },
|
|
305
|
+
{ locality: "Épinal", region: "", postcode: "88000", country: "FR" },
|
|
306
|
+
{ locality: "Meyzieu", region: "", postcode: "69330", country: "FR" },
|
|
307
|
+
{ locality: "Sens", region: "", postcode: "89100", country: "FR" },
|
|
308
|
+
{ locality: "Brunoy", region: "", postcode: "91800", country: "FR" },
|
|
309
|
+
{ locality: "Rambouillet", region: "", postcode: "78120", country: "FR" },
|
|
310
|
+
];
|
|
311
|
+
// NB: no DE_TUPLES — German cities are street-dominated too ("Berliner Straße"), and the base yielded
|
|
312
|
+
// zero locality-dominant DE towns in the scan, so house-number-after-street is FR-only here. DE's
|
|
313
|
+
// native-order number-after-street is covered by the dedicated synth-german shard.
|
|
314
|
+
const houseNumber = (random) => String(1 + Math.floor(random() * 4999));
|
|
315
|
+
const localeFor = { US: "en-US", FR: "fr-FR", DE: "de-DE" };
|
|
316
|
+
const ALL_TEMPLATES = [
|
|
317
|
+
"street-eats-affix",
|
|
318
|
+
"comma-less-city-state",
|
|
319
|
+
"fr-prefix",
|
|
320
|
+
"house-number-after-street",
|
|
321
|
+
"bare-locality",
|
|
322
|
+
"house-number-before-street",
|
|
323
|
+
];
|
|
324
|
+
/**
|
|
325
|
+
* Synthesize one boundary-stress row. `base` is optional — when omitted, a locale-appropriate tuple
|
|
326
|
+
* is drawn from the internal pools (so the generator is self-contained; a build script can pass
|
|
327
|
+
* real tuples for scale + diversity). Every component value is a verbatim substring of `raw`, so
|
|
328
|
+
* `alignRow` locates + BIO-labels it.
|
|
329
|
+
*/
|
|
330
|
+
export function synthesizeBoundaryStressRow(base, opts = {}) {
|
|
331
|
+
const random = opts.random ?? Math.random;
|
|
332
|
+
const template = opts.forceTemplate ?? pick(ALL_TEMPLATES, random);
|
|
333
|
+
if (template === "bare-locality") {
|
|
334
|
+
// The v1.6.0 ship-blocker fix: locality was DROPPED on bare/short "City, STATE" rows (84% of the
|
|
335
|
+
// regression) because every prior shape placed a street before the city, so the model learned "the
|
|
336
|
+
// city follows a street" and stopped emitting locality without one. Teach the locality with NO street,
|
|
337
|
+
// across the forms real data carries it — bare, comma-LESS, postcode'd, and venue/org-prefixed.
|
|
338
|
+
const b = base ?? (random() < 0.3 ? pick(FR_TUPLES, random) : pick(US_TUPLES, random));
|
|
339
|
+
const venue = random() < 0.45 ? pick(VENUES, random) : "";
|
|
340
|
+
// ~12% carry a trailing country token — the v1.7.1 country patch (DeepSeek 2026-06-18). The pure
|
|
341
|
+
// "City, STATE" bare rows carry NO country token, which cost ~4pp on us.country_homograph in v1.7.0;
|
|
342
|
+
// teaching "…, USA"/"…, France" recovers it as a single-variable additive without diluting locality.
|
|
343
|
+
const withCountry = random() < 0.12;
|
|
344
|
+
if (b.country === "FR") {
|
|
345
|
+
// FR carries no region token; "{postcode} {locality}" is the bare FR form.
|
|
346
|
+
const core = `${b.postcode} ${b.locality}${withCountry ? ", France" : ""}`;
|
|
347
|
+
return {
|
|
348
|
+
raw: venue ? `${venue}, ${core}` : core,
|
|
349
|
+
components: {
|
|
350
|
+
...(venue ? { venue } : {}),
|
|
351
|
+
postcode: b.postcode,
|
|
352
|
+
locality: b.locality,
|
|
353
|
+
...(withCountry ? { country: "France" } : {}),
|
|
354
|
+
},
|
|
355
|
+
locale: "fr-FR",
|
|
356
|
+
template,
|
|
357
|
+
};
|
|
358
|
+
}
|
|
359
|
+
const withZip = random() < 0.5;
|
|
360
|
+
const comma = random() < 0.6 ? "," : ""; // include the comma-LESS "City STATE" form too
|
|
361
|
+
// "United States" (United 98% / States 98% country in the base), NOT "USA" — the #511 lint found
|
|
362
|
+
// "USA" is locality-DOMINANT (75%, only 6% country) in the base; labeling it country would contradict.
|
|
363
|
+
const countryName = "United States";
|
|
364
|
+
const core = `${b.locality}${comma} ${b.region}${withZip ? ` ${b.postcode}` : ""}${withCountry ? `, ${countryName}` : ""}`;
|
|
365
|
+
return {
|
|
366
|
+
raw: venue ? `${venue}, ${core}` : core,
|
|
367
|
+
components: {
|
|
368
|
+
...(venue ? { venue } : {}),
|
|
369
|
+
locality: b.locality,
|
|
370
|
+
region: b.region,
|
|
371
|
+
...(withZip ? { postcode: b.postcode } : {}),
|
|
372
|
+
...(withCountry ? { country: countryName } : {}),
|
|
373
|
+
},
|
|
374
|
+
locale: "en-US",
|
|
375
|
+
template,
|
|
376
|
+
};
|
|
377
|
+
}
|
|
378
|
+
if (template === "fr-prefix" ||
|
|
379
|
+
template === "house-number-after-street" ||
|
|
380
|
+
template === "house-number-before-street") {
|
|
381
|
+
// FR-only (no base-consistent DE locality vocab; see the DE_TUPLES note above).
|
|
382
|
+
const b = base ?? pick(FR_TUPLES, random);
|
|
383
|
+
const name = pick(FR_NAMES, random);
|
|
384
|
+
const hn = houseNumber(random);
|
|
385
|
+
if (template === "house-number-before-street") {
|
|
386
|
+
// The confounding MIRROR of house-number-after-street: the SAME FR street vocab with the number
|
|
387
|
+
// BEFORE the name. A balanced before:after mix (the build/recipe sets the ratio, ~7:3 to keep US
|
|
388
|
+
// house_number 99.8% safe) teaches the model a street-adjacent number is a house_number by FORM,
|
|
389
|
+
// not position — the probe found v1.6.0 confidently absorbs the TRAILING number into street (I-street
|
|
390
|
+
// P=0.96), the order-bias.
|
|
391
|
+
const raw = `${hn} ${name}, ${b.postcode} ${b.locality}`;
|
|
392
|
+
return {
|
|
393
|
+
raw,
|
|
394
|
+
components: { house_number: hn, street: name, postcode: b.postcode, locality: b.locality },
|
|
395
|
+
locale: localeFor[b.country] ?? "fr-FR",
|
|
396
|
+
template,
|
|
397
|
+
};
|
|
398
|
+
}
|
|
399
|
+
if (template === "fr-prefix") {
|
|
400
|
+
const prefix = pick(FR_PREFIXES, random);
|
|
401
|
+
// "{hn} {prefix} {name}, {postcode} {locality}" — postcode-first, prefix split from the name.
|
|
402
|
+
const raw = `${hn} ${prefix} ${name}, ${b.postcode} ${b.locality}`;
|
|
403
|
+
return {
|
|
404
|
+
raw,
|
|
405
|
+
components: {
|
|
406
|
+
house_number: hn,
|
|
407
|
+
street_prefix: prefix,
|
|
408
|
+
street: name,
|
|
409
|
+
postcode: b.postcode,
|
|
410
|
+
locality: b.locality,
|
|
411
|
+
},
|
|
412
|
+
locale: localeFor[b.country] ?? "fr-FR",
|
|
413
|
+
template,
|
|
414
|
+
};
|
|
415
|
+
}
|
|
416
|
+
// house-number-after-street: "{name} {hn}, {postcode} {locality}" — number FOLLOWS the street.
|
|
417
|
+
const raw = `${name} ${hn}, ${b.postcode} ${b.locality}`;
|
|
418
|
+
return {
|
|
419
|
+
raw,
|
|
420
|
+
components: { street: name, house_number: hn, postcode: b.postcode, locality: b.locality },
|
|
421
|
+
locale: localeFor[b.country] ?? "fr-FR",
|
|
422
|
+
template,
|
|
423
|
+
};
|
|
424
|
+
}
|
|
425
|
+
// en-US street shapes (street-eats-affix + comma-less). US-only — US zips are base-consistent and
|
|
426
|
+
// the boundary these teach is locale-agnostic; no need to introduce a non-base locale.
|
|
427
|
+
const b = base ?? pick(US_TUPLES, random);
|
|
428
|
+
const hn = houseNumber(random);
|
|
429
|
+
const dir = random() < 0.4 ? pick(DIRECTIONALS, random) : "";
|
|
430
|
+
const name = random() < 0.7 ? pick(MULTIWORD_STREETS, random) : pick(SINGLE_STREETS, random);
|
|
431
|
+
const suffix = pick(SUFFIXES, random);
|
|
432
|
+
const streetCore = `${dir ? `${dir} ` : ""}${name} ${suffix}`;
|
|
433
|
+
const components = {
|
|
434
|
+
house_number: hn,
|
|
435
|
+
...(dir ? { street_prefix: dir } : {}),
|
|
436
|
+
street: name,
|
|
437
|
+
street_suffix: suffix,
|
|
438
|
+
locality: b.locality,
|
|
439
|
+
region: b.region,
|
|
440
|
+
postcode: b.postcode,
|
|
441
|
+
};
|
|
442
|
+
const raw = template === "comma-less-city-state"
|
|
443
|
+
? // no commas anywhere — the segmentation cue is gone
|
|
444
|
+
`${hn} ${streetCore} ${b.locality} ${b.region} ${b.postcode}`
|
|
445
|
+
: // standard delimited, multi-word street stresses the suffix boundary
|
|
446
|
+
`${hn} ${streetCore}, ${b.locality}, ${b.region} ${b.postcode}`;
|
|
447
|
+
return { raw, components, locale: localeFor[b.country] ?? "en-US", template };
|
|
448
|
+
}
|
|
449
|
+
//# sourceMappingURL=synthesize-boundary-stress.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"synthesize-boundary-stress.js","sourceRoot":"","sources":["../../src/synthesize-boundary-stress.ts"],"names":[],"mappings":"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"}
|