geospec 0.1.0-beta.7 → 0.1.0-beta.8
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/agent/geospec-authoring/SKILL.md +11 -11
- package/agent/geospec-authoring/api-functions.md +1 -16
- package/agent/geospec-authoring/api-index.md +50 -46
- package/agent/geospec-authoring/api-types.md +188 -168
- package/agent/geospec-authoring/public-api-functions.md +29 -22
- package/agent/geospec-authoring/public-api-index.md +196 -183
- package/agent/geospec-authoring/public-api-types-2.md +188 -220
- package/agent/geospec-authoring/public-api-types-3.md +112 -99
- package/agent/geospec-authoring/public-api-types.md +236 -125
- package/agent/resources.js +12 -12
- package/agent/skills.json +2 -2
- package/dist/config/index.d.mts +1 -2
- package/dist/config/index.mjs +1 -1
- package/dist/config/types.d.mts +0 -3
- package/dist/config/validate.mjs +1 -1
- package/dist/mesh/index.d.mts +2 -2
- package/dist/model/index.d.mts +3 -3
- package/dist/model/index.mjs +1 -1
- package/dist/model/mesh-evidence-matchers.d.mts +12 -0
- package/dist/model/mesh-evidence-matchers.mjs +1 -0
- package/dist/model/native-model-loader.d.mts +8 -8
- package/dist/model/native-model-loader.mjs +1 -1
- package/dist/model/node/command-exporter.d.mts +31 -0
- package/dist/model/node/command-exporter.mjs +1 -0
- package/dist/model/node/index.d.mts +2 -0
- package/dist/model/node/index.mjs +1 -0
- package/dist/model/types.d.mts +111 -63
- package/dist/runner/collector.d.mts +0 -2
- package/dist/runner/node/index.d.mts +2 -0
- package/dist/runner/node/index.mjs +1 -0
- package/dist/runner/node/node-vm-filesystem.d.mts +22 -0
- package/dist/runner/node/node-vm-filesystem.mjs +1 -0
- package/dist/runner/pool/events.mjs +1 -0
- package/dist/runner/pool/pool-messages.d.mts +0 -10
- package/dist/runner/pool/pool.d.mts +36 -0
- package/dist/runner/pool/pool.mjs +1 -0
- package/dist/runner/pool/shard-planner.mjs +1 -0
- package/dist/runner/pool/shard-timings.d.mts +36 -0
- package/dist/runner/pool/transport.mjs +1 -0
- package/dist/runner/pool/worker-host.d.mts +36 -0
- package/dist/runner/pool/worker-host.mjs +1 -0
- package/dist/runner/run-geospec-module.mjs +1 -1
- package/dist/runner/types.d.mts +0 -4
- package/dist/runner/worker/index.d.mts +5 -2
- package/dist/runner/worker/index.mjs +1 -1
- package/dist/runner/worker/runner-types.d.mts +2 -14
- package/dist/runner/worker/serial-runner.mjs +1 -1
- package/package.json +14 -4
- package/dist/config/tau-project-artifact.d.mts +0 -54
- package/dist/config/tau-project-artifact.mjs +0 -3
- package/dist/model/export-intent.d.mts +0 -79
- package/dist/model/export-intent.mjs +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# geospec — Types (2)
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
61 top-level symbols. Signatures are verbatim typescript.
|
|
4
4
|
|
|
5
5
|
// Inline code-CAD model load options
|
|
6
6
|
LoadModelCodeOptions: {
|
|
@@ -12,13 +12,9 @@ LoadModelCodeOptions: {
|
|
|
12
12
|
rootDir?: never;
|
|
13
13
|
/** Geometry format to export. Defaults to `glb`. */
|
|
14
14
|
format?: GeoSpecModelFormat;
|
|
15
|
-
/** Explicit parameters passed to the
|
|
15
|
+
/** Explicit parameters passed to the exporter. */
|
|
16
16
|
parameters?: Record<string, unknown>;
|
|
17
|
-
/**
|
|
18
|
-
runtime?: GeoSpecRuntimeClient | GeoSpecRuntimeClientFactory;
|
|
19
|
-
/** Source-specific runtime adapters, e.g. host-provided GPL-isolated kernels. */
|
|
20
|
-
sourceAdapters?: readonly GeoSpecRuntimeSourceAdapter[];
|
|
21
|
-
/** Project root used by runtime integrations. */
|
|
17
|
+
/** Absolute project root passed to the exporter. */
|
|
22
18
|
projectPath?: string;
|
|
23
19
|
/** STEP reader strategy used for STEP exports. */
|
|
24
20
|
stepStreaming?: StepStreamingMode;
|
|
@@ -35,12 +31,11 @@ LoadModelCodeOptions: {
|
|
|
35
31
|
*/
|
|
36
32
|
workUnitLimit?: number;
|
|
37
33
|
/**
|
|
38
|
-
* Axis-aligned millimetre box the
|
|
39
|
-
* can be checked region by region. Only
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
* it never stands for the whole model.
|
|
34
|
+
* Axis-aligned millimetre box the exporter crops the model to before export, so a large mesh model
|
|
35
|
+
* can be checked region by region. Only an exporter that declares `region` honours it; any other
|
|
36
|
+
* exporter, or a crop the exporter cannot make, refuses with a typed diagnostic instead of loading
|
|
37
|
+
* the whole model. The cropped subject is a different subject: its load evidence records `region`,
|
|
38
|
+
* so a claim on it never stands for the whole model.
|
|
44
39
|
*/
|
|
45
40
|
region?: GeoSpecLoadRegion;
|
|
46
41
|
}
|
|
@@ -57,16 +52,10 @@ LoadModelCodeOptions: {
|
|
|
57
52
|
// Geometry format to export
|
|
58
53
|
format?: GeoSpecModelFormat
|
|
59
54
|
|
|
60
|
-
// Explicit parameters passed to the
|
|
55
|
+
// Explicit parameters passed to the exporter
|
|
61
56
|
parameters?: Record<string, unknown>
|
|
62
57
|
|
|
63
|
-
//
|
|
64
|
-
runtime?: GeoSpecRuntimeClient | GeoSpecRuntimeClientFactory
|
|
65
|
-
|
|
66
|
-
// Source-specific runtime adapters, e.g
|
|
67
|
-
sourceAdapters?: readonly GeoSpecRuntimeSourceAdapter[]
|
|
68
|
-
|
|
69
|
-
// Project root used by runtime integrations
|
|
58
|
+
// Absolute project root passed to the exporter
|
|
70
59
|
projectPath?: string
|
|
71
60
|
|
|
72
61
|
// STEP reader strategy used for STEP exports
|
|
@@ -84,7 +73,7 @@ LoadModelCodeOptions: {
|
|
|
84
73
|
// Default work-unit budget for every claim on this subject
|
|
85
74
|
workUnitLimit?: number
|
|
86
75
|
|
|
87
|
-
// Axis-aligned millimetre box the
|
|
76
|
+
// Axis-aligned millimetre box the exporter crops the model to before export, so a large mesh model can be checked region by region
|
|
88
77
|
region?: GeoSpecLoadRegion
|
|
89
78
|
|
|
90
79
|
// Filesystem-backed model load options
|
|
@@ -100,16 +89,12 @@ LoadModelFileOptions: {
|
|
|
100
89
|
* evidence.
|
|
101
90
|
*/
|
|
102
91
|
rootDir?: string;
|
|
103
|
-
/**
|
|
92
|
+
/** Absolute project root passed to the exporter. */
|
|
104
93
|
projectPath?: string;
|
|
105
94
|
/** Geometry format to export. Defaults to `glb`. */
|
|
106
95
|
format?: GeoSpecModelFormat;
|
|
107
|
-
/** Explicit parameters passed to the
|
|
96
|
+
/** Explicit parameters passed to the exporter. */
|
|
108
97
|
parameters?: Record<string, unknown>;
|
|
109
|
-
/** Runtime client or lazy runtime factory. */
|
|
110
|
-
runtime?: GeoSpecRuntimeClient | GeoSpecRuntimeClientFactory;
|
|
111
|
-
/** Source-specific runtime adapters, e.g. host-provided GPL-isolated kernels. */
|
|
112
|
-
sourceAdapters?: readonly GeoSpecRuntimeSourceAdapter[];
|
|
113
98
|
/** STEP reader strategy used for STEP exports. */
|
|
114
99
|
stepStreaming?: StepStreamingMode;
|
|
115
100
|
/** Whether STEP loading should also produce mesh evidence. Defaults to true. */
|
|
@@ -125,12 +110,11 @@ LoadModelFileOptions: {
|
|
|
125
110
|
*/
|
|
126
111
|
workUnitLimit?: number;
|
|
127
112
|
/**
|
|
128
|
-
* Axis-aligned millimetre box the
|
|
129
|
-
* can be checked region by region. Only
|
|
130
|
-
*
|
|
131
|
-
*
|
|
132
|
-
*
|
|
133
|
-
* it never stands for the whole model.
|
|
113
|
+
* Axis-aligned millimetre box the exporter crops the model to before export, so a large mesh model
|
|
114
|
+
* can be checked region by region. Only an exporter that declares `region` honours it; any other
|
|
115
|
+
* exporter, or a crop the exporter cannot make, refuses with a typed diagnostic instead of loading
|
|
116
|
+
* the whole model. The cropped subject is a different subject: its load evidence records `region`,
|
|
117
|
+
* so a claim on it never stands for the whole model.
|
|
134
118
|
*/
|
|
135
119
|
region?: GeoSpecLoadRegion;
|
|
136
120
|
}
|
|
@@ -141,21 +125,15 @@ LoadModelFileOptions: {
|
|
|
141
125
|
// Project-relative folder `file` resolves in, for a suite that loads from somewhere other than the project root
|
|
142
126
|
rootDir?: string
|
|
143
127
|
|
|
144
|
-
//
|
|
128
|
+
// Absolute project root passed to the exporter
|
|
145
129
|
projectPath?: string
|
|
146
130
|
|
|
147
131
|
// Geometry format to export
|
|
148
132
|
format?: GeoSpecModelFormat
|
|
149
133
|
|
|
150
|
-
// Explicit parameters passed to the
|
|
134
|
+
// Explicit parameters passed to the exporter
|
|
151
135
|
parameters?: Record<string, unknown>
|
|
152
136
|
|
|
153
|
-
// Runtime client or lazy runtime factory
|
|
154
|
-
runtime?: GeoSpecRuntimeClient | GeoSpecRuntimeClientFactory
|
|
155
|
-
|
|
156
|
-
// Source-specific runtime adapters, e.g
|
|
157
|
-
sourceAdapters?: readonly GeoSpecRuntimeSourceAdapter[]
|
|
158
|
-
|
|
159
137
|
// STEP reader strategy used for STEP exports
|
|
160
138
|
stepStreaming?: StepStreamingMode
|
|
161
139
|
|
|
@@ -171,7 +149,7 @@ LoadModelFileOptions: {
|
|
|
171
149
|
// Default work-unit budget for every claim on this subject
|
|
172
150
|
workUnitLimit?: number
|
|
173
151
|
|
|
174
|
-
// Axis-aligned millimetre box the
|
|
152
|
+
// Axis-aligned millimetre box the exporter crops the model to before export, so a large mesh model can be checked region by region
|
|
175
153
|
region?: GeoSpecLoadRegion
|
|
176
154
|
|
|
177
155
|
// Options accepted by {@link import ('./load-model.js').loadModel}
|
|
@@ -183,7 +161,7 @@ LoadModelOptions: LoadModelSourceOptions | LoadModelCodeOptions<Code> | LoadMode
|
|
|
183
161
|
// Geometry format to export
|
|
184
162
|
format?: GeoSpecModelFormat
|
|
185
163
|
|
|
186
|
-
// Explicit parameters passed to the
|
|
164
|
+
// Explicit parameters passed to the exporter
|
|
187
165
|
parameters?: Record<string, unknown>
|
|
188
166
|
|
|
189
167
|
// STEP reader strategy used for STEP exports
|
|
@@ -283,6 +261,38 @@ LoadModelSourceOptions: {
|
|
|
283
261
|
// Default work-unit budget for every claim on this subject
|
|
284
262
|
workUnitLimit?: number
|
|
285
263
|
|
|
264
|
+
// Options for {@link commandExporter}
|
|
265
|
+
CommandExporterOptions: {
|
|
266
|
+
readonly id: string;
|
|
267
|
+
/** File extensions without the dot, or `'*'`. */
|
|
268
|
+
readonly extensions: readonly string[];
|
|
269
|
+
/** Executable and leading arguments, such as `['python', 'export.py']`. */
|
|
270
|
+
readonly command: readonly string[];
|
|
271
|
+
/** What the command can do. Protocol 1 carries no inline sources, so `inlineSources` must not be set. */
|
|
272
|
+
readonly capabilities: GeoSpecExporterCapabilities;
|
|
273
|
+
/** Working directory of the command; defaults to the request's project root. */
|
|
274
|
+
readonly cwd?: string;
|
|
275
|
+
/** Extra environment variables, merged over this process's. */
|
|
276
|
+
readonly env?: Readonly<Record<string, string>>;
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
readonly id: string
|
|
280
|
+
|
|
281
|
+
// File extensions without the dot, or `'*'`
|
|
282
|
+
readonly extensions: readonly string[]
|
|
283
|
+
|
|
284
|
+
// Executable and leading arguments, such as `['python', 'export.py']`
|
|
285
|
+
readonly command: readonly string[]
|
|
286
|
+
|
|
287
|
+
// What the command can do
|
|
288
|
+
readonly capabilities: GeoSpecExporterCapabilities
|
|
289
|
+
|
|
290
|
+
// Working directory of the command
|
|
291
|
+
readonly cwd?: string
|
|
292
|
+
|
|
293
|
+
// Extra environment variables, merged over this process's
|
|
294
|
+
readonly env?: Readonly<Record<string, string>>
|
|
295
|
+
|
|
286
296
|
// Collects suites, tests, assertions, and async completion state for one GeoSpec module execution
|
|
287
297
|
GeoSpecCollector: {
|
|
288
298
|
tests: GeoSpecTestCase[];
|
|
@@ -316,17 +326,11 @@ GeoSpecCollector: {
|
|
|
316
326
|
|
|
317
327
|
// Per-module collector configuration
|
|
318
328
|
GeoSpecCollectorOptions: {
|
|
319
|
-
matcherWallBackstop?: number;
|
|
320
|
-
forensic?: boolean;
|
|
321
329
|
nativeAssertions: GeoSpecAssertionClientOptions;
|
|
322
330
|
/** Observes each selected test as it starts and settles, for host progress reporting. */
|
|
323
331
|
onTestEvent?: (event: GeoSpecTestEvent) => void;
|
|
324
332
|
}
|
|
325
333
|
|
|
326
|
-
matcherWallBackstop?: number
|
|
327
|
-
|
|
328
|
-
forensic?: boolean
|
|
329
|
-
|
|
330
334
|
nativeAssertions: GeoSpecAssertionClientOptions
|
|
331
335
|
|
|
332
336
|
// Observes each selected test as it starts and settles, for host progress reporting
|
|
@@ -538,10 +542,6 @@ RunGeoSpecModuleOptions: {
|
|
|
538
542
|
testNamePattern?: string | RegExp;
|
|
539
543
|
/** Timeout for async test callbacks, in milliseconds. */
|
|
540
544
|
testTimeout?: number;
|
|
541
|
-
/** Milliseconds. Non-verdict matcher infrastructure backstop. */
|
|
542
|
-
matcherWallBackstop?: number;
|
|
543
|
-
/** Emit structured forensic events for this run. */
|
|
544
|
-
forensic?: boolean;
|
|
545
545
|
/** Observes each selected test as it starts and settles, for host progress reporting. */
|
|
546
546
|
onTestEvent?: (event: GeoSpecTestEvent) => void;
|
|
547
547
|
/**
|
|
@@ -579,12 +579,6 @@ RunGeoSpecModuleOptions: {
|
|
|
579
579
|
// Timeout for async test callbacks, in milliseconds
|
|
580
580
|
testTimeout?: number
|
|
581
581
|
|
|
582
|
-
// Milliseconds
|
|
583
|
-
matcherWallBackstop?: number
|
|
584
|
-
|
|
585
|
-
// Emit structured forensic events for this run
|
|
586
|
-
forensic?: boolean
|
|
587
|
-
|
|
588
582
|
// Observes each selected test as it starts and settles, for host progress reporting
|
|
589
583
|
onTestEvent?: (event: GeoSpecTestEvent) => void
|
|
590
584
|
|
|
@@ -655,8 +649,8 @@ CreateGeoSpecNativeModelLoaderOptions: {
|
|
|
655
649
|
readonly format?: Extract<GeoSpecModelFormat, 'glb' | 'step' | 'stp'>;
|
|
656
650
|
readonly projectPath?: string;
|
|
657
651
|
readonly readSource?: GeoSpecNativeSourceReader;
|
|
658
|
-
|
|
659
|
-
readonly
|
|
652
|
+
/** Model exporters for source-kind files; the first whose `extensions` claim the file exports it. */
|
|
653
|
+
readonly exporters?: readonly GeoSpecModelExporter[];
|
|
660
654
|
/**
|
|
661
655
|
* Subject handles carried between the release scopes of loaders that share one engine, keyed by
|
|
662
656
|
* subjectHash. With a carrier, `releaseAll` keeps this scope's subjects for the next scope and
|
|
@@ -680,9 +674,8 @@ CreateGeoSpecNativeModelLoaderOptions: {
|
|
|
680
674
|
|
|
681
675
|
readonly readSource?: GeoSpecNativeSourceReader
|
|
682
676
|
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
readonly sourceAdapters?: readonly GeoSpecRuntimeSourceAdapter[]
|
|
677
|
+
// Model exporters for source-kind files
|
|
678
|
+
readonly exporters?: readonly GeoSpecModelExporter[]
|
|
686
679
|
|
|
687
680
|
// Subject handles carried between the release scopes of loaders that share one engine, keyed by subjectHash
|
|
688
681
|
readonly carried?: Map<string, unknown>
|
|
@@ -704,7 +697,7 @@ GeoSpecNativeLoadModelOptions: LoadModelOptions<Code> & {
|
|
|
704
697
|
// Geometry format to export
|
|
705
698
|
format?: GeoSpecModelFormat
|
|
706
699
|
|
|
707
|
-
// Explicit parameters passed to the
|
|
700
|
+
// Explicit parameters passed to the exporter
|
|
708
701
|
parameters?: Record<string, unknown>
|
|
709
702
|
|
|
710
703
|
// STEP reader strategy used for STEP exports
|
|
@@ -751,7 +744,7 @@ GeoSpecNativeModelEngine: GeoSpecNativeEngine & {
|
|
|
751
744
|
releaseSubject(request: Uint8Array<ArrayBuffer>): Uint8Array<ArrayBuffer>;
|
|
752
745
|
|
|
753
746
|
// Model loader injected into native VM runs
|
|
754
|
-
// Remarks: Direct `source` loads read their source again on every call and the engine digests those exact bytes; bytes equal to an admitted subject's reuse that subject by digest, length and descriptor, and edited bytes admit a new subject.
|
|
747
|
+
// Remarks: Direct `source` loads read their source again on every call and the engine digests those exact bytes; bytes equal to an admitted subject's reuse that subject by digest, length and descriptor, and edited bytes admit a new subject. Exported loads are coalesced per release scope (one run): a load whose file, inline code, project path, parameters, format, tolerances, region and ingest options equal an earlier successful load's reuses that admission without exporting or ingesting again. A file load is reused only while the exporter's `revision` still matches the earlier load's complete source revision; otherwise, or when every owner of the earlier admission has released it, the load exports afresh. Failures are never reused.
|
|
755
748
|
GeoSpecNativeModelLoader: <Code extends Record<string, string> = Record<string, string>>(options: GeoSpecNativeLoadModelOptions<Code>) => Promise<GeoSpecNativeModelSubject>
|
|
756
749
|
|
|
757
750
|
// Subject identity returned by native STEP/GLB admission
|
|
@@ -787,7 +780,7 @@ ManagedGeoSpecNativeModelLoader: GeoSpecNativeModelLoader & {
|
|
|
787
780
|
/**
|
|
788
781
|
* Drain registered admissions, including additions while drainage awaits,
|
|
789
782
|
* then release this scope's subjects (with a carrier: the previous scope's
|
|
790
|
-
* subjects this scope did not load again)
|
|
783
|
+
* subjects this scope did not load again), then close every exporter it exported through.
|
|
791
784
|
*
|
|
792
785
|
* Await the intended complete load chain before final release, and await
|
|
793
786
|
* this method before closing the caller-owned engine. Calls after it returns
|
|
@@ -811,16 +804,12 @@ GeoSpecPoolHostMessage: {
|
|
|
811
804
|
shard: GeoSpecPoolShard;
|
|
812
805
|
testNamePattern?: string;
|
|
813
806
|
testTimeout?: number;
|
|
814
|
-
matcherWallBackstop?: number;
|
|
815
|
-
forensic?: boolean;
|
|
816
807
|
} | {
|
|
817
808
|
/** List-only collection pass: register tests, run no bodies (R3 splitting). */
|
|
818
809
|
type: 'list-tests';
|
|
819
810
|
shardId: number;
|
|
820
811
|
file: string;
|
|
821
812
|
testTimeout?: number;
|
|
822
|
-
matcherWallBackstop?: number;
|
|
823
|
-
forensic?: boolean;
|
|
824
813
|
} | {
|
|
825
814
|
type: 'shutdown';
|
|
826
815
|
}
|
|
@@ -884,12 +873,6 @@ GeoSpecPoolWorkerMessage: {
|
|
|
884
873
|
type: 'file-start';
|
|
885
874
|
shardId: number;
|
|
886
875
|
file: string;
|
|
887
|
-
} | {
|
|
888
|
-
type: 'forensic';
|
|
889
|
-
shardId: number;
|
|
890
|
-
name: string;
|
|
891
|
-
value: number;
|
|
892
|
-
unit: 'milliseconds' | 'count';
|
|
893
876
|
} | {
|
|
894
877
|
type: 'tests-listed';
|
|
895
878
|
shardId: number;
|
|
@@ -918,25 +901,6 @@ GeoSpecPoolWorkerMessage: {
|
|
|
918
901
|
|
|
919
902
|
type: 'ready'
|
|
920
903
|
|
|
921
|
-
// One structured forensic measurement emitted by a runner
|
|
922
|
-
GeoSpecForensicEvent: {
|
|
923
|
-
type: 'forensic';
|
|
924
|
-
name: string;
|
|
925
|
-
value: number;
|
|
926
|
-
unit: 'milliseconds' | 'count';
|
|
927
|
-
shardId?: number;
|
|
928
|
-
}
|
|
929
|
-
|
|
930
|
-
type: 'forensic'
|
|
931
|
-
|
|
932
|
-
name: string
|
|
933
|
-
|
|
934
|
-
value: number
|
|
935
|
-
|
|
936
|
-
unit: 'milliseconds' | 'count'
|
|
937
|
-
|
|
938
|
-
shardId?: number
|
|
939
|
-
|
|
940
904
|
// Public GeoSpec runner lifecycle surface
|
|
941
905
|
GeoSpecRunner: {
|
|
942
906
|
/** Execute GeoSpec files and return a compact aggregate result. */
|
|
@@ -994,14 +958,14 @@ GeoSpecRunnerEvent: {
|
|
|
994
958
|
} | {
|
|
995
959
|
type: 'run-complete';
|
|
996
960
|
result: GeoSpecRunnerResult;
|
|
997
|
-
} |
|
|
961
|
+
} | {
|
|
998
962
|
type: 'abort';
|
|
999
963
|
reason?: string;
|
|
1000
964
|
} | {
|
|
1001
965
|
type: 'close';
|
|
1002
966
|
}
|
|
1003
967
|
|
|
1004
|
-
type: '
|
|
968
|
+
type: 'run-start'
|
|
1005
969
|
|
|
1006
970
|
// One GeoSpec test file executed by a worker-style runner
|
|
1007
971
|
GeoSpecRunnerFileResult: {
|
|
@@ -1113,16 +1077,12 @@ GeoSpecRunnerRunOptions: {
|
|
|
1113
1077
|
testNamePattern?: string | RegExp;
|
|
1114
1078
|
/** Timeout for each async test callback, in milliseconds. */
|
|
1115
1079
|
testTimeout?: number;
|
|
1116
|
-
/** Non-verdict matcher wall backstop. Milliseconds. */
|
|
1117
|
-
matcherWallBackstop?: number;
|
|
1118
1080
|
/**
|
|
1119
1081
|
* Engine work-unit budget for this run's claims, replacing the runner's
|
|
1120
1082
|
* `nativeAssertions.workUnitLimit`. A `loadModel` or `expectGeo` budget still
|
|
1121
1083
|
* wins for its own claims.
|
|
1122
1084
|
*/
|
|
1123
1085
|
workUnitLimit?: number;
|
|
1124
|
-
/** Emit structured forensic measurements for this run. */
|
|
1125
|
-
forensic?: boolean;
|
|
1126
1086
|
/**
|
|
1127
1087
|
* Stop after the first failing file (R1). Interactive fail-fast only —
|
|
1128
1088
|
* never the default for reward runs, which want the complete red set.
|
|
@@ -1139,18 +1099,137 @@ GeoSpecRunnerRunOptions: {
|
|
|
1139
1099
|
// Timeout for each async test callback, in milliseconds
|
|
1140
1100
|
testTimeout?: number
|
|
1141
1101
|
|
|
1142
|
-
// Non-verdict matcher wall backstop
|
|
1143
|
-
matcherWallBackstop?: number
|
|
1144
|
-
|
|
1145
1102
|
// Engine work-unit budget for this run's claims, replacing the runner's `nativeAssertions.workUnitLimit`
|
|
1146
1103
|
workUnitLimit?: number
|
|
1147
1104
|
|
|
1148
|
-
// Emit structured forensic measurements for this run
|
|
1149
|
-
forensic?: boolean
|
|
1150
|
-
|
|
1151
1105
|
// Stop after the first failing file (R1)
|
|
1152
1106
|
bail?: boolean
|
|
1153
1107
|
|
|
1108
|
+
// Everything the pool needs that differs between Node and the browser
|
|
1109
|
+
GeoSpecPoolOptions: {
|
|
1110
|
+
/** Spawn one worker running `startGeoSpecPoolWorkerHost`. */
|
|
1111
|
+
createWorker: () => GeoSpecPoolWorkerHandle | Promise<GeoSpecPoolWorkerHandle>;
|
|
1112
|
+
/** Optional one-time worker initialization performed after its ready signal. */
|
|
1113
|
+
initializeWorker?: (worker: GeoSpecPoolWorkerHandle) => Promise<void> | void;
|
|
1114
|
+
/** Wait for each native worker's cleanup acknowledgement before terminating it. */
|
|
1115
|
+
gracefulShutdown?: boolean;
|
|
1116
|
+
/** Worker count. Omit to let the caller's host auto-size before calling. */
|
|
1117
|
+
workers: number;
|
|
1118
|
+
/** Optional scheduling telemetry. Absent = declared order, no memory class. */
|
|
1119
|
+
timings?: ShardTimings;
|
|
1120
|
+
/** Per-shard non-verdict watchdog, milliseconds (R11). */
|
|
1121
|
+
shardTimeout?: number;
|
|
1122
|
+
/** Split files whose recorded duration exceeds this. Milliseconds. */
|
|
1123
|
+
splitThreshold?: number;
|
|
1124
|
+
}
|
|
1125
|
+
|
|
1126
|
+
// Spawn one worker running `startGeoSpecPoolWorkerHost`
|
|
1127
|
+
createWorker: () => GeoSpecPoolWorkerHandle | Promise<GeoSpecPoolWorkerHandle>
|
|
1128
|
+
|
|
1129
|
+
// Optional one-time worker initialization performed after its ready signal
|
|
1130
|
+
initializeWorker?: (worker: GeoSpecPoolWorkerHandle) => Promise<void> | void
|
|
1131
|
+
|
|
1132
|
+
// Wait for each native worker's cleanup acknowledgement before terminating it
|
|
1133
|
+
gracefulShutdown?: boolean
|
|
1134
|
+
|
|
1135
|
+
// Worker count
|
|
1136
|
+
workers: number
|
|
1137
|
+
|
|
1138
|
+
// Optional scheduling telemetry
|
|
1139
|
+
timings?: ShardTimings
|
|
1140
|
+
|
|
1141
|
+
// Per-shard non-verdict watchdog, milliseconds (R11)
|
|
1142
|
+
shardTimeout?: number
|
|
1143
|
+
|
|
1144
|
+
// Split files whose recorded duration exceeds this
|
|
1145
|
+
splitThreshold?: number
|
|
1146
|
+
|
|
1147
|
+
// One shard's recorded cost
|
|
1148
|
+
ShardTiming: {
|
|
1149
|
+
/** Wall duration of the last recorded run, in milliseconds. */
|
|
1150
|
+
durationMs: number;
|
|
1151
|
+
/** Highest RSS observed for this shard, in bytes. Monotonic. */
|
|
1152
|
+
peakRssBytes: number;
|
|
1153
|
+
}
|
|
1154
|
+
|
|
1155
|
+
// Wall duration of the last recorded run, in milliseconds
|
|
1156
|
+
durationMs: number
|
|
1157
|
+
|
|
1158
|
+
// Highest RSS observed for this shard, in bytes
|
|
1159
|
+
peakRssBytes: number
|
|
1160
|
+
|
|
1161
|
+
// A mutable timings table
|
|
1162
|
+
ShardTimings: {
|
|
1163
|
+
/** Merge one observation. Peak RSS only ever grows. */
|
|
1164
|
+
record(shard: string, timing: ShardTiming): void;
|
|
1165
|
+
/** The hint for one shard, or `undefined` when unknown. */
|
|
1166
|
+
read(shard: string): ShardTiming | undefined;
|
|
1167
|
+
/** Every recorded shard, sorted by descending duration (longest-first). */
|
|
1168
|
+
longestFirst(): string[];
|
|
1169
|
+
/** Persist the table. Failure is silent: telemetry never fails a run. */
|
|
1170
|
+
save(): void;
|
|
1171
|
+
}
|
|
1172
|
+
|
|
1173
|
+
// Merge one observation
|
|
1174
|
+
// ShardTimings.record (method)
|
|
1175
|
+
record(shard: string, timing: ShardTiming): void;
|
|
1176
|
+
|
|
1177
|
+
// The hint for one shard, or `undefined` when unknown
|
|
1178
|
+
// ShardTimings.read (method)
|
|
1179
|
+
read(shard: string): ShardTiming | undefined;
|
|
1180
|
+
|
|
1181
|
+
// Every recorded shard, sorted by descending duration (longest-first)
|
|
1182
|
+
// ShardTimings.longestFirst (method)
|
|
1183
|
+
longestFirst(): string[];
|
|
1184
|
+
|
|
1185
|
+
// Persist the table
|
|
1186
|
+
// ShardTimings.save (method)
|
|
1187
|
+
save(): void;
|
|
1188
|
+
|
|
1189
|
+
// Options accepted by {@link startGeoSpecPoolWorkerHost}
|
|
1190
|
+
GeoSpecPoolWorkerHostOptions: {
|
|
1191
|
+
/** Filesystem containing the project and test modules. */
|
|
1192
|
+
filesystem: GeoSpecRunnerOptions['filesystem'];
|
|
1193
|
+
/** Native assertion client shared with this worker's model admissions. */
|
|
1194
|
+
nativeAssertions: GeoSpecRunnerOptions['nativeAssertions'];
|
|
1195
|
+
/** Managed native admissions, released after every shard and collection pass and before shutdown. */
|
|
1196
|
+
nativeModelLoader: ManagedGeoSpecNativeModelLoader;
|
|
1197
|
+
/** Additional in-memory modules made available to the VM. */
|
|
1198
|
+
builtinModules?: GeoSpecRunnerOptions['builtinModules'];
|
|
1199
|
+
/** Post a message to the pool host. */
|
|
1200
|
+
postMessage: (message: GeoSpecPoolWorkerMessage) => void;
|
|
1201
|
+
/** Subscribe to pool-host messages. */
|
|
1202
|
+
onHostMessage: (listener: (message: GeoSpecPoolHostMessage) => void) => void;
|
|
1203
|
+
/** Sample this worker's resident memory in bytes (R15 telemetry); optional. */
|
|
1204
|
+
measureMemoryBytes?: () => number | undefined;
|
|
1205
|
+
/** Release platform resources on shutdown, after the native subjects are released. */
|
|
1206
|
+
onShutdown?: () => Promise<void> | void;
|
|
1207
|
+
}
|
|
1208
|
+
|
|
1209
|
+
// Filesystem containing the project and test modules
|
|
1210
|
+
filesystem: GeoSpecRunnerOptions['filesystem']
|
|
1211
|
+
|
|
1212
|
+
// Native assertion client shared with this worker's model admissions
|
|
1213
|
+
nativeAssertions: GeoSpecRunnerOptions['nativeAssertions']
|
|
1214
|
+
|
|
1215
|
+
// Managed native admissions, released after every shard and collection pass and before shutdown
|
|
1216
|
+
nativeModelLoader: ManagedGeoSpecNativeModelLoader
|
|
1217
|
+
|
|
1218
|
+
// Additional in-memory modules made available to the VM
|
|
1219
|
+
builtinModules?: GeoSpecRunnerOptions['builtinModules']
|
|
1220
|
+
|
|
1221
|
+
// Post a message to the pool host
|
|
1222
|
+
postMessage: (message: GeoSpecPoolWorkerMessage) => void
|
|
1223
|
+
|
|
1224
|
+
// Subscribe to pool-host messages
|
|
1225
|
+
onHostMessage: (listener: (message: GeoSpecPoolHostMessage) => void) => void
|
|
1226
|
+
|
|
1227
|
+
// Sample this worker's resident memory in bytes (R15 telemetry)
|
|
1228
|
+
measureMemoryBytes?: () => number | undefined
|
|
1229
|
+
|
|
1230
|
+
// Release platform resources on shutdown, after the native subjects are released
|
|
1231
|
+
onShutdown?: () => Promise<void> | void
|
|
1232
|
+
|
|
1154
1233
|
// Runner-independent native assertion client
|
|
1155
1234
|
GeoSpecAssertionClient: {
|
|
1156
1235
|
/**
|
|
@@ -1414,114 +1493,3 @@ GeoSpecPmiFaceAssociation: {
|
|
|
1414
1493
|
readonly occurrence: number | null
|
|
1415
1494
|
|
|
1416
1495
|
readonly publicFaceOrdinal: number
|
|
1417
|
-
|
|
1418
|
-
// One ordered role reference, including incomplete source/transfer evidence
|
|
1419
|
-
GeoSpecPmiShapeReference: {
|
|
1420
|
-
readonly sourceAspectId: number | null;
|
|
1421
|
-
readonly sourceUsageIds: readonly number[];
|
|
1422
|
-
readonly sourceItemIds: readonly number[];
|
|
1423
|
-
readonly requestedRoute: GeoSpecPmiField<readonly number[]>;
|
|
1424
|
-
readonly associations: GeoSpecPmiField<readonly GeoSpecPmiFaceAssociation[]>;
|
|
1425
|
-
}
|
|
1426
|
-
|
|
1427
|
-
readonly sourceAspectId: number | null
|
|
1428
|
-
|
|
1429
|
-
readonly sourceUsageIds: readonly number[]
|
|
1430
|
-
|
|
1431
|
-
readonly sourceItemIds: readonly number[]
|
|
1432
|
-
|
|
1433
|
-
readonly requestedRoute: GeoSpecPmiField<readonly number[]>
|
|
1434
|
-
|
|
1435
|
-
readonly associations: GeoSpecPmiField<readonly GeoSpecPmiFaceAssociation[]>
|
|
1436
|
-
|
|
1437
|
-
// Normalized authored limits
|
|
1438
|
-
GeoSpecPmiLimits: {
|
|
1439
|
-
readonly lowerMillimetres: string;
|
|
1440
|
-
readonly upperMillimetres: string;
|
|
1441
|
-
readonly basis: 'authored-limits' | 'nominal-plus-minus';
|
|
1442
|
-
}
|
|
1443
|
-
|
|
1444
|
-
readonly lowerMillimetres: string
|
|
1445
|
-
|
|
1446
|
-
readonly upperMillimetres: string
|
|
1447
|
-
|
|
1448
|
-
readonly basis: 'authored-limits' | 'nominal-plus-minus'
|
|
1449
|
-
|
|
1450
|
-
// Source record preserving semantic/presentation separation and ordered roles
|
|
1451
|
-
GeoSpecPmiRecord: {
|
|
1452
|
-
readonly sourceId: number;
|
|
1453
|
-
readonly family: 'dimension' | 'datum' | 'tolerance' | 'presentation';
|
|
1454
|
-
readonly channel: 'semantic' | 'presentation';
|
|
1455
|
-
readonly kind: string;
|
|
1456
|
-
readonly name: GeoSpecPmiField<string>;
|
|
1457
|
-
readonly first: readonly GeoSpecPmiShapeReference[];
|
|
1458
|
-
readonly second: readonly GeoSpecPmiShapeReference[];
|
|
1459
|
-
readonly numbers: GeoSpecPmiField<readonly GeoSpecPmiNumber[]>;
|
|
1460
|
-
readonly limits: GeoSpecPmiField<GeoSpecPmiLimits>;
|
|
1461
|
-
readonly interpretation: GeoSpecPmiField<string>;
|
|
1462
|
-
readonly raw: readonly GeoSpecPmiRawEntity[];
|
|
1463
|
-
}
|
|
1464
|
-
|
|
1465
|
-
readonly sourceId: number
|
|
1466
|
-
|
|
1467
|
-
readonly family: 'dimension' | 'datum' | 'tolerance' | 'presentation'
|
|
1468
|
-
|
|
1469
|
-
readonly channel: 'semantic' | 'presentation'
|
|
1470
|
-
|
|
1471
|
-
readonly kind: string
|
|
1472
|
-
|
|
1473
|
-
readonly name: GeoSpecPmiField<string>
|
|
1474
|
-
|
|
1475
|
-
readonly first: readonly GeoSpecPmiShapeReference[]
|
|
1476
|
-
|
|
1477
|
-
readonly second: readonly GeoSpecPmiShapeReference[]
|
|
1478
|
-
|
|
1479
|
-
readonly numbers: GeoSpecPmiField<readonly GeoSpecPmiNumber[]>
|
|
1480
|
-
|
|
1481
|
-
readonly limits: GeoSpecPmiField<GeoSpecPmiLimits>
|
|
1482
|
-
|
|
1483
|
-
readonly interpretation: GeoSpecPmiField<string>
|
|
1484
|
-
|
|
1485
|
-
readonly raw: readonly GeoSpecPmiRawEntity[]
|
|
1486
|
-
|
|
1487
|
-
// Positive-only inventory value inside the ordinary canonical query report
|
|
1488
|
-
GeoSpecPmiInventory: {
|
|
1489
|
-
readonly contract: 'geospec.pmi.inventory/v1';
|
|
1490
|
-
readonly status: 'semantic' | 'graphical-only' | 'empty';
|
|
1491
|
-
readonly fileSchema: string;
|
|
1492
|
-
readonly editionValidation: 'not-validated';
|
|
1493
|
-
readonly records: readonly GeoSpecPmiRecord[];
|
|
1494
|
-
}
|
|
1495
|
-
|
|
1496
|
-
readonly contract: 'geospec.pmi.inventory/v1'
|
|
1497
|
-
|
|
1498
|
-
readonly status: 'semantic' | 'graphical-only' | 'empty'
|
|
1499
|
-
|
|
1500
|
-
readonly fileSchema: string
|
|
1501
|
-
|
|
1502
|
-
readonly editionValidation: 'not-validated'
|
|
1503
|
-
|
|
1504
|
-
readonly records: readonly GeoSpecPmiRecord[]
|
|
1505
|
-
|
|
1506
|
-
// Strict inventory output limits
|
|
1507
|
-
GeoSpecPmiQueryPayload: {
|
|
1508
|
-
readonly maxRecords?: number;
|
|
1509
|
-
readonly maxOutputBytes?: number;
|
|
1510
|
-
}
|
|
1511
|
-
|
|
1512
|
-
readonly maxRecords?: number
|
|
1513
|
-
|
|
1514
|
-
readonly maxOutputBytes?: number
|
|
1515
|
-
|
|
1516
|
-
// Complete inventory value
|
|
1517
|
-
GeoSpecPmiQueryValue: {
|
|
1518
|
-
readonly inventory: GeoSpecPmiInventory;
|
|
1519
|
-
readonly subjectHash: string;
|
|
1520
|
-
readonly provenance: Readonly<Record<string, unknown>>;
|
|
1521
|
-
}
|
|
1522
|
-
|
|
1523
|
-
readonly inventory: GeoSpecPmiInventory
|
|
1524
|
-
|
|
1525
|
-
readonly subjectHash: string
|
|
1526
|
-
|
|
1527
|
-
readonly provenance: Readonly<Record<string, unknown>>
|