devcontour-harness 0.1.0-alpha.13 → 0.1.0-alpha.18
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 +48 -2
- package/docs/architecture.md +77 -3
- package/docs/contracts.md +100 -0
- package/docs/quickstart.md +1 -1
- package/docs/release-notes/0.1.0-alpha.14.md +69 -0
- package/docs/release-notes/0.1.0-alpha.15.md +62 -0
- package/docs/release-notes/0.1.0-alpha.16.md +36 -0
- package/docs/release-notes/0.1.0-alpha.17.md +86 -0
- package/docs/release-notes/0.1.0-alpha.18.md +48 -0
- package/docs/review-probes.md +9 -3
- package/docs/review-protocol.md +9 -0
- package/docs/upgrade.md +16 -14
- package/lib/agents/cli-adapter.js +14 -10
- package/lib/agents/review-probe.d.ts +9 -0
- package/lib/agents/review-probe.js +23 -1
- package/lib/agents/schemas.d.ts +206 -0
- package/lib/agents/schemas.js +37 -1
- package/lib/agents/usage.d.ts +22 -0
- package/lib/agents/usage.js +112 -6
- package/lib/contracts/checks.d.ts +119 -0
- package/lib/contracts/checks.js +64 -1
- package/lib/contracts/cli.d.ts +30 -0
- package/lib/contracts/diagnosis.d.ts +3 -1
- package/lib/contracts/diagnosis.js +2 -0
- package/lib/contracts/events.d.ts +12 -0
- package/lib/contracts/execution.d.ts +109 -5
- package/lib/contracts/execution.js +58 -0
- package/lib/contracts/failure.d.ts +17 -3
- package/lib/contracts/failure.js +4 -2
- package/lib/contracts/published.d.ts +67 -1
- package/lib/contracts/repair-policy.d.ts +7 -0
- package/lib/contracts/repair-policy.js +17 -0
- package/lib/contracts/review.d.ts +12 -0
- package/lib/contracts/review.js +19 -0
- package/lib/control/harness.d.ts +2 -2
- package/lib/control/harness.js +2 -1
- package/lib/control/recovery.d.ts +26 -1
- package/lib/engine/engine.d.ts +41 -14
- package/lib/engine/engine.js +92 -8
- package/lib/engine/failure.d.ts +1 -1
- package/lib/engine/failure.js +1 -1
- package/lib/engine/property-recovery.d.ts +1 -0
- package/lib/engine/property-recovery.js +4 -1
- package/lib/engine/repair.d.ts +26 -0
- package/lib/engine/repair.js +83 -1
- package/lib/engine/runner.d.ts +7 -0
- package/lib/engine/runner.js +207 -34
- package/lib/explain/state.js +4 -2
- package/lib/index.d.ts +6 -4
- package/lib/index.js +6 -4
- package/lib/projections/stop.d.ts +1 -1
- package/lib/projections/stop.js +16 -0
- package/lib/storage/document.d.ts +48 -8
- package/lib/verification/acceptance.js +2 -1
- package/lib/verification/already-satisfied.d.ts +44 -0
- package/lib/verification/already-satisfied.js +49 -0
- package/lib/verification/checks.d.ts +28 -0
- package/lib/verification/checks.js +270 -22
- package/lib/verification/corpus.d.ts +50 -0
- package/lib/verification/gate-scope.d.ts +36 -0
- package/lib/verification/gate-scope.js +97 -0
- package/lib/verification/gates-at.d.ts +67 -0
- package/lib/verification/gates-at.js +173 -0
- package/lib/verification/gates.d.ts +5 -0
- package/lib/verification/gates.js +20 -5
- package/lib/verification/property.d.ts +9 -0
- package/lib/verification/property.js +11 -2
- package/lib/verification/self-check.js +12 -12
- package/package.json +1 -1
- package/schemas/contract-document.schema.json +161 -0
- package/schemas/execution-document.schema.json +134 -0
- package/schemas/run-event.schema.json +4 -0
- package/schemas/stop-diagnosis.schema.json +2 -0
|
@@ -24,7 +24,7 @@ export declare const workStatusSchema: z.ZodEnum<{
|
|
|
24
24
|
done: "done";
|
|
25
25
|
}>;
|
|
26
26
|
export type WorkStatus = (typeof workStatuses)[number];
|
|
27
|
-
export declare const failureKinds: readonly ["provider-auth", "environment", "timeout", "stale-base", "empty-result", "scope-violation", "gate", "review", "review-protocol", "merge", "cancelled", "budget", "unknown"];
|
|
27
|
+
export declare const failureKinds: readonly ["provider-auth", "environment", "timeout", "stale-base", "empty-result", "unfinished", "scope-violation", "gate", "review", "review-protocol", "merge", "cancelled", "budget", "needs-lead", "unknown"];
|
|
28
28
|
export declare const failureKindSchema: z.ZodEnum<{
|
|
29
29
|
gate: "gate";
|
|
30
30
|
unknown: "unknown";
|
|
@@ -35,10 +35,12 @@ export declare const failureKindSchema: z.ZodEnum<{
|
|
|
35
35
|
"provider-auth": "provider-auth";
|
|
36
36
|
"stale-base": "stale-base";
|
|
37
37
|
"empty-result": "empty-result";
|
|
38
|
+
unfinished: "unfinished";
|
|
38
39
|
"scope-violation": "scope-violation";
|
|
39
40
|
"review-protocol": "review-protocol";
|
|
40
41
|
merge: "merge";
|
|
41
42
|
budget: "budget";
|
|
43
|
+
"needs-lead": "needs-lead";
|
|
42
44
|
}>;
|
|
43
45
|
export type FailureKind = (typeof failureKinds)[number];
|
|
44
46
|
/** Техническое согласование, привязанное к digest проверенного предложения. */
|
|
@@ -230,11 +232,11 @@ export declare const reviewInspectionSchema: z.ZodObject<{
|
|
|
230
232
|
runId: z.ZodString;
|
|
231
233
|
status: z.ZodNullable<z.ZodString>;
|
|
232
234
|
reason: z.ZodEnum<{
|
|
235
|
+
unfinished: "unfinished";
|
|
233
236
|
"not-started": "not-started";
|
|
234
237
|
"legacy-unconfirmed": "legacy-unconfirmed";
|
|
235
238
|
"foreign-scope": "foreign-scope";
|
|
236
239
|
"unknown-status": "unknown-status";
|
|
237
|
-
unfinished: "unfinished";
|
|
238
240
|
abandoned: "abandoned";
|
|
239
241
|
}>;
|
|
240
242
|
}, z.core.$strict>>>;
|
|
@@ -327,11 +329,11 @@ export declare const evidenceRecordSchema: z.ZodObject<{
|
|
|
327
329
|
runId: z.ZodString;
|
|
328
330
|
status: z.ZodNullable<z.ZodString>;
|
|
329
331
|
reason: z.ZodEnum<{
|
|
332
|
+
unfinished: "unfinished";
|
|
330
333
|
"not-started": "not-started";
|
|
331
334
|
"legacy-unconfirmed": "legacy-unconfirmed";
|
|
332
335
|
"foreign-scope": "foreign-scope";
|
|
333
336
|
"unknown-status": "unknown-status";
|
|
334
|
-
unfinished: "unfinished";
|
|
335
337
|
abandoned: "abandoned";
|
|
336
338
|
}>;
|
|
337
339
|
}, z.core.$strict>>>;
|
|
@@ -464,6 +466,19 @@ export declare const evidenceRecordSchema: z.ZodObject<{
|
|
|
464
466
|
coverage: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
465
467
|
}, z.core.$strict>>;
|
|
466
468
|
checks: z.ZodOptional<z.ZodString>;
|
|
469
|
+
alreadySatisfied: z.ZodOptional<z.ZodObject<{
|
|
470
|
+
gates: z.ZodArray<z.ZodString>;
|
|
471
|
+
evidence: z.ZodString;
|
|
472
|
+
basis: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
473
|
+
kind: z.ZodLiteral<"contract">;
|
|
474
|
+
gates: z.ZodArray<z.ZodString>;
|
|
475
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
476
|
+
kind: z.ZodLiteral<"dependency">;
|
|
477
|
+
workId: z.ZodString;
|
|
478
|
+
sha: z.ZodString;
|
|
479
|
+
paths: z.ZodArray<z.ZodString>;
|
|
480
|
+
}, z.core.$strict>], "kind">>;
|
|
481
|
+
}, z.core.$strict>>;
|
|
467
482
|
}, z.core.$strict>;
|
|
468
483
|
export type EvidenceRecord = z.infer<typeof evidenceRecordSchema>;
|
|
469
484
|
/** Снимок зависимости, против которого шла попытка. */
|
|
@@ -553,10 +568,12 @@ export declare const continuationSchema: z.ZodObject<{
|
|
|
553
568
|
"provider-auth": "provider-auth";
|
|
554
569
|
"stale-base": "stale-base";
|
|
555
570
|
"empty-result": "empty-result";
|
|
571
|
+
unfinished: "unfinished";
|
|
556
572
|
"scope-violation": "scope-violation";
|
|
557
573
|
"review-protocol": "review-protocol";
|
|
558
574
|
merge: "merge";
|
|
559
575
|
budget: "budget";
|
|
576
|
+
"needs-lead": "needs-lead";
|
|
560
577
|
}>>;
|
|
561
578
|
respecified: z.ZodOptional<z.ZodBoolean>;
|
|
562
579
|
applied: z.ZodBoolean;
|
|
@@ -636,10 +653,12 @@ export declare const attemptStateSchema: z.ZodObject<{
|
|
|
636
653
|
"provider-auth": "provider-auth";
|
|
637
654
|
"stale-base": "stale-base";
|
|
638
655
|
"empty-result": "empty-result";
|
|
656
|
+
unfinished: "unfinished";
|
|
639
657
|
"scope-violation": "scope-violation";
|
|
640
658
|
"review-protocol": "review-protocol";
|
|
641
659
|
merge: "merge";
|
|
642
660
|
budget: "budget";
|
|
661
|
+
"needs-lead": "needs-lead";
|
|
643
662
|
}>>;
|
|
644
663
|
failureFingerprint: z.ZodOptional<z.ZodString>;
|
|
645
664
|
requiredGates: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
@@ -711,6 +730,12 @@ export declare const attemptStateSchema: z.ZodObject<{
|
|
|
711
730
|
}, z.core.$strict>>>;
|
|
712
731
|
properties: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
713
732
|
unboundProperties: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
733
|
+
interrupted: z.ZodOptional<z.ZodLiteral<"shutdown">>;
|
|
734
|
+
inputClasses: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
735
|
+
classified: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
736
|
+
property: z.ZodString;
|
|
737
|
+
inputClass: z.ZodString;
|
|
738
|
+
}, z.core.$strict>>>;
|
|
714
739
|
episodeBasis: z.ZodOptional<z.ZodString>;
|
|
715
740
|
implementationBasis: z.ZodOptional<z.ZodString>;
|
|
716
741
|
reusedFrom: z.ZodOptional<z.ZodObject<{
|
|
@@ -740,10 +765,12 @@ export declare const attemptStateSchema: z.ZodObject<{
|
|
|
740
765
|
"provider-auth": "provider-auth";
|
|
741
766
|
"stale-base": "stale-base";
|
|
742
767
|
"empty-result": "empty-result";
|
|
768
|
+
unfinished: "unfinished";
|
|
743
769
|
"scope-violation": "scope-violation";
|
|
744
770
|
"review-protocol": "review-protocol";
|
|
745
771
|
merge: "merge";
|
|
746
772
|
budget: "budget";
|
|
773
|
+
"needs-lead": "needs-lead";
|
|
747
774
|
}>>;
|
|
748
775
|
respecified: z.ZodOptional<z.ZodBoolean>;
|
|
749
776
|
applied: z.ZodBoolean;
|
|
@@ -863,11 +890,11 @@ export declare const attemptStateSchema: z.ZodObject<{
|
|
|
863
890
|
runId: z.ZodString;
|
|
864
891
|
status: z.ZodNullable<z.ZodString>;
|
|
865
892
|
reason: z.ZodEnum<{
|
|
893
|
+
unfinished: "unfinished";
|
|
866
894
|
"not-started": "not-started";
|
|
867
895
|
"legacy-unconfirmed": "legacy-unconfirmed";
|
|
868
896
|
"foreign-scope": "foreign-scope";
|
|
869
897
|
"unknown-status": "unknown-status";
|
|
870
|
-
unfinished: "unfinished";
|
|
871
898
|
abandoned: "abandoned";
|
|
872
899
|
}>;
|
|
873
900
|
}, z.core.$strict>>>;
|
|
@@ -1000,6 +1027,19 @@ export declare const attemptStateSchema: z.ZodObject<{
|
|
|
1000
1027
|
coverage: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
1001
1028
|
}, z.core.$strict>>;
|
|
1002
1029
|
checks: z.ZodOptional<z.ZodString>;
|
|
1030
|
+
alreadySatisfied: z.ZodOptional<z.ZodObject<{
|
|
1031
|
+
gates: z.ZodArray<z.ZodString>;
|
|
1032
|
+
evidence: z.ZodString;
|
|
1033
|
+
basis: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
1034
|
+
kind: z.ZodLiteral<"contract">;
|
|
1035
|
+
gates: z.ZodArray<z.ZodString>;
|
|
1036
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
1037
|
+
kind: z.ZodLiteral<"dependency">;
|
|
1038
|
+
workId: z.ZodString;
|
|
1039
|
+
sha: z.ZodString;
|
|
1040
|
+
paths: z.ZodArray<z.ZodString>;
|
|
1041
|
+
}, z.core.$strict>], "kind">>;
|
|
1042
|
+
}, z.core.$strict>>;
|
|
1003
1043
|
}, z.core.$strict>>;
|
|
1004
1044
|
}, z.core.$strict>;
|
|
1005
1045
|
export type AttemptState = z.infer<typeof attemptStateSchema>;
|
|
@@ -1156,10 +1196,12 @@ export declare const workStateSchema: z.ZodObject<{
|
|
|
1156
1196
|
"provider-auth": "provider-auth";
|
|
1157
1197
|
"stale-base": "stale-base";
|
|
1158
1198
|
"empty-result": "empty-result";
|
|
1199
|
+
unfinished: "unfinished";
|
|
1159
1200
|
"scope-violation": "scope-violation";
|
|
1160
1201
|
"review-protocol": "review-protocol";
|
|
1161
1202
|
merge: "merge";
|
|
1162
1203
|
budget: "budget";
|
|
1204
|
+
"needs-lead": "needs-lead";
|
|
1163
1205
|
}>>;
|
|
1164
1206
|
failureFingerprint: z.ZodOptional<z.ZodString>;
|
|
1165
1207
|
approvedAt: z.ZodOptional<z.ZodISODateTime>;
|
|
@@ -1309,6 +1351,7 @@ export declare const workStateSchema: z.ZodObject<{
|
|
|
1309
1351
|
}, z.core.$strict>>;
|
|
1310
1352
|
version: z.ZodNumber;
|
|
1311
1353
|
}, z.core.$strict>>>;
|
|
1354
|
+
neutralFailures: z.ZodOptional<z.ZodNumber>;
|
|
1312
1355
|
}, z.core.$strict>;
|
|
1313
1356
|
export type WorkState = z.infer<typeof workStateSchema>;
|
|
1314
1357
|
export declare const graphStateSchema: z.ZodObject<{
|
|
@@ -1429,10 +1472,12 @@ export declare const controlStateSchema: z.ZodObject<{
|
|
|
1429
1472
|
"provider-auth": "provider-auth";
|
|
1430
1473
|
"stale-base": "stale-base";
|
|
1431
1474
|
"empty-result": "empty-result";
|
|
1475
|
+
unfinished: "unfinished";
|
|
1432
1476
|
"scope-violation": "scope-violation";
|
|
1433
1477
|
"review-protocol": "review-protocol";
|
|
1434
1478
|
merge: "merge";
|
|
1435
1479
|
budget: "budget";
|
|
1480
|
+
"needs-lead": "needs-lead";
|
|
1436
1481
|
}>>>;
|
|
1437
1482
|
waits: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
1438
1483
|
kind: z.ZodEnum<{
|
|
@@ -1799,6 +1844,7 @@ export declare const reproductionRecordSchema: z.ZodObject<{
|
|
|
1799
1844
|
property: z.ZodNullable<z.ZodString>;
|
|
1800
1845
|
inputHash: z.ZodString;
|
|
1801
1846
|
input: z.ZodString;
|
|
1847
|
+
inputClass: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
1802
1848
|
expected: z.ZodNullable<z.ZodString>;
|
|
1803
1849
|
actual: z.ZodNullable<z.ZodString>;
|
|
1804
1850
|
command: z.ZodNullable<z.ZodArray<z.ZodString>>;
|
|
@@ -1821,6 +1867,7 @@ export declare const reproductionRegistrySchema: z.ZodObject<{
|
|
|
1821
1867
|
property: z.ZodNullable<z.ZodString>;
|
|
1822
1868
|
inputHash: z.ZodString;
|
|
1823
1869
|
input: z.ZodString;
|
|
1870
|
+
inputClass: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
1824
1871
|
expected: z.ZodNullable<z.ZodString>;
|
|
1825
1872
|
actual: z.ZodNullable<z.ZodString>;
|
|
1826
1873
|
command: z.ZodNullable<z.ZodArray<z.ZodString>>;
|
|
@@ -2289,6 +2336,34 @@ export declare const localSchemas: {
|
|
|
2289
2336
|
environment: z.ZodString;
|
|
2290
2337
|
}, z.core.$strict>>;
|
|
2291
2338
|
}, z.core.$strict>;
|
|
2339
|
+
gates: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
2340
|
+
verification: z.ZodOptional<z.ZodEnum<{
|
|
2341
|
+
property: "property";
|
|
2342
|
+
reference: "reference";
|
|
2343
|
+
}>>;
|
|
2344
|
+
reference: z.ZodOptional<z.ZodObject<{
|
|
2345
|
+
oracle: z.ZodObject<{
|
|
2346
|
+
description: z.ZodString;
|
|
2347
|
+
limits: z.ZodString;
|
|
2348
|
+
}, z.core.$strict>;
|
|
2349
|
+
crossChecks: z.ZodArray<z.ZodObject<{
|
|
2350
|
+
family: z.ZodString;
|
|
2351
|
+
against: z.ZodString;
|
|
2352
|
+
matches: z.ZodNumber;
|
|
2353
|
+
total: z.ZodNumber;
|
|
2354
|
+
artifacts: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
2355
|
+
}, z.core.$strict>>;
|
|
2356
|
+
sets: z.ZodArray<z.ZodObject<{
|
|
2357
|
+
gate: z.ZodString;
|
|
2358
|
+
artifacts: z.ZodArray<z.ZodString>;
|
|
2359
|
+
minCases: z.ZodNumber;
|
|
2360
|
+
families: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
2361
|
+
id: z.ZodString;
|
|
2362
|
+
minCases: z.ZodNumber;
|
|
2363
|
+
}, z.core.$strict>>>;
|
|
2364
|
+
}, z.core.$strict>>;
|
|
2365
|
+
gaps: z.ZodString;
|
|
2366
|
+
}, z.core.$strict>>;
|
|
2292
2367
|
hard: z.ZodDefault<z.ZodBoolean>;
|
|
2293
2368
|
feasibility: z.ZodOptional<z.ZodObject<{
|
|
2294
2369
|
spike: z.ZodString;
|
|
@@ -2353,6 +2428,7 @@ export declare const localSchemas: {
|
|
|
2353
2428
|
property: z.ZodNullable<z.ZodString>;
|
|
2354
2429
|
inputHash: z.ZodString;
|
|
2355
2430
|
input: z.ZodString;
|
|
2431
|
+
inputClass: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
2356
2432
|
expected: z.ZodNullable<z.ZodString>;
|
|
2357
2433
|
actual: z.ZodNullable<z.ZodString>;
|
|
2358
2434
|
command: z.ZodNullable<z.ZodArray<z.ZodString>>;
|
|
@@ -2655,10 +2731,12 @@ export declare const executionDocumentSchema: z.ZodObject<{
|
|
|
2655
2731
|
"provider-auth": "provider-auth";
|
|
2656
2732
|
"stale-base": "stale-base";
|
|
2657
2733
|
"empty-result": "empty-result";
|
|
2734
|
+
unfinished: "unfinished";
|
|
2658
2735
|
"scope-violation": "scope-violation";
|
|
2659
2736
|
"review-protocol": "review-protocol";
|
|
2660
2737
|
merge: "merge";
|
|
2661
2738
|
budget: "budget";
|
|
2739
|
+
"needs-lead": "needs-lead";
|
|
2662
2740
|
}>>;
|
|
2663
2741
|
failureFingerprint: z.ZodOptional<z.ZodString>;
|
|
2664
2742
|
approvedAt: z.ZodOptional<z.ZodISODateTime>;
|
|
@@ -2808,6 +2886,7 @@ export declare const executionDocumentSchema: z.ZodObject<{
|
|
|
2808
2886
|
}, z.core.$strict>>;
|
|
2809
2887
|
version: z.ZodNumber;
|
|
2810
2888
|
}, z.core.$strict>>>;
|
|
2889
|
+
neutralFailures: z.ZodOptional<z.ZodNumber>;
|
|
2811
2890
|
}, z.core.$strict>>;
|
|
2812
2891
|
attempts: z.ZodArray<z.ZodObject<{
|
|
2813
2892
|
id: z.ZodString;
|
|
@@ -2868,10 +2947,12 @@ export declare const executionDocumentSchema: z.ZodObject<{
|
|
|
2868
2947
|
"provider-auth": "provider-auth";
|
|
2869
2948
|
"stale-base": "stale-base";
|
|
2870
2949
|
"empty-result": "empty-result";
|
|
2950
|
+
unfinished: "unfinished";
|
|
2871
2951
|
"scope-violation": "scope-violation";
|
|
2872
2952
|
"review-protocol": "review-protocol";
|
|
2873
2953
|
merge: "merge";
|
|
2874
2954
|
budget: "budget";
|
|
2955
|
+
"needs-lead": "needs-lead";
|
|
2875
2956
|
}>>;
|
|
2876
2957
|
failureFingerprint: z.ZodOptional<z.ZodString>;
|
|
2877
2958
|
requiredGates: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
@@ -2943,6 +3024,12 @@ export declare const executionDocumentSchema: z.ZodObject<{
|
|
|
2943
3024
|
}, z.core.$strict>>>;
|
|
2944
3025
|
properties: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
2945
3026
|
unboundProperties: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
3027
|
+
interrupted: z.ZodOptional<z.ZodLiteral<"shutdown">>;
|
|
3028
|
+
inputClasses: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
3029
|
+
classified: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
3030
|
+
property: z.ZodString;
|
|
3031
|
+
inputClass: z.ZodString;
|
|
3032
|
+
}, z.core.$strict>>>;
|
|
2946
3033
|
episodeBasis: z.ZodOptional<z.ZodString>;
|
|
2947
3034
|
implementationBasis: z.ZodOptional<z.ZodString>;
|
|
2948
3035
|
reusedFrom: z.ZodOptional<z.ZodObject<{
|
|
@@ -2972,10 +3059,12 @@ export declare const executionDocumentSchema: z.ZodObject<{
|
|
|
2972
3059
|
"provider-auth": "provider-auth";
|
|
2973
3060
|
"stale-base": "stale-base";
|
|
2974
3061
|
"empty-result": "empty-result";
|
|
3062
|
+
unfinished: "unfinished";
|
|
2975
3063
|
"scope-violation": "scope-violation";
|
|
2976
3064
|
"review-protocol": "review-protocol";
|
|
2977
3065
|
merge: "merge";
|
|
2978
3066
|
budget: "budget";
|
|
3067
|
+
"needs-lead": "needs-lead";
|
|
2979
3068
|
}>>;
|
|
2980
3069
|
respecified: z.ZodOptional<z.ZodBoolean>;
|
|
2981
3070
|
applied: z.ZodBoolean;
|
|
@@ -3095,11 +3184,11 @@ export declare const executionDocumentSchema: z.ZodObject<{
|
|
|
3095
3184
|
runId: z.ZodString;
|
|
3096
3185
|
status: z.ZodNullable<z.ZodString>;
|
|
3097
3186
|
reason: z.ZodEnum<{
|
|
3187
|
+
unfinished: "unfinished";
|
|
3098
3188
|
"not-started": "not-started";
|
|
3099
3189
|
"legacy-unconfirmed": "legacy-unconfirmed";
|
|
3100
3190
|
"foreign-scope": "foreign-scope";
|
|
3101
3191
|
"unknown-status": "unknown-status";
|
|
3102
|
-
unfinished: "unfinished";
|
|
3103
3192
|
abandoned: "abandoned";
|
|
3104
3193
|
}>;
|
|
3105
3194
|
}, z.core.$strict>>>;
|
|
@@ -3232,6 +3321,19 @@ export declare const executionDocumentSchema: z.ZodObject<{
|
|
|
3232
3321
|
coverage: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
3233
3322
|
}, z.core.$strict>>;
|
|
3234
3323
|
checks: z.ZodOptional<z.ZodString>;
|
|
3324
|
+
alreadySatisfied: z.ZodOptional<z.ZodObject<{
|
|
3325
|
+
gates: z.ZodArray<z.ZodString>;
|
|
3326
|
+
evidence: z.ZodString;
|
|
3327
|
+
basis: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
3328
|
+
kind: z.ZodLiteral<"contract">;
|
|
3329
|
+
gates: z.ZodArray<z.ZodString>;
|
|
3330
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
3331
|
+
kind: z.ZodLiteral<"dependency">;
|
|
3332
|
+
workId: z.ZodString;
|
|
3333
|
+
sha: z.ZodString;
|
|
3334
|
+
paths: z.ZodArray<z.ZodString>;
|
|
3335
|
+
}, z.core.$strict>], "kind">>;
|
|
3336
|
+
}, z.core.$strict>>;
|
|
3235
3337
|
}, z.core.$strict>>;
|
|
3236
3338
|
}, z.core.$strict>>;
|
|
3237
3339
|
verifications: z.ZodDefault<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
@@ -3382,10 +3484,12 @@ export declare const executionDocumentSchema: z.ZodObject<{
|
|
|
3382
3484
|
"provider-auth": "provider-auth";
|
|
3383
3485
|
"stale-base": "stale-base";
|
|
3384
3486
|
"empty-result": "empty-result";
|
|
3487
|
+
unfinished: "unfinished";
|
|
3385
3488
|
"scope-violation": "scope-violation";
|
|
3386
3489
|
"review-protocol": "review-protocol";
|
|
3387
3490
|
merge: "merge";
|
|
3388
3491
|
budget: "budget";
|
|
3492
|
+
"needs-lead": "needs-lead";
|
|
3389
3493
|
}>>>;
|
|
3390
3494
|
waits: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
3391
3495
|
kind: z.ZodEnum<{
|
|
@@ -36,6 +36,8 @@ export const failureKinds = [
|
|
|
36
36
|
'timeout',
|
|
37
37
|
'stale-base',
|
|
38
38
|
'empty-result',
|
|
39
|
+
/** Исполнитель сообщил `completed: false`: работа не доделана, черновик сохранён. */
|
|
40
|
+
'unfinished',
|
|
39
41
|
'scope-violation',
|
|
40
42
|
'gate',
|
|
41
43
|
'review',
|
|
@@ -44,6 +46,11 @@ export const failureKinds = [
|
|
|
44
46
|
'merge',
|
|
45
47
|
'cancelled',
|
|
46
48
|
'budget',
|
|
49
|
+
/**
|
|
50
|
+
* Исполнитель не изменил ни файла, а основания считать работу уже
|
|
51
|
+
* сделанной механически нет: решение — за ведущим, не повтор.
|
|
52
|
+
*/
|
|
53
|
+
'needs-lead',
|
|
47
54
|
'unknown',
|
|
48
55
|
];
|
|
49
56
|
export const failureKindSchema = z.enum(failureKinds);
|
|
@@ -249,6 +256,32 @@ export const evidenceRecordSchema = z.strictObject({
|
|
|
249
256
|
property: propertyEvidenceSchema.optional(),
|
|
250
257
|
/** Действующая версия проверок, под которой получено evidence. */
|
|
251
258
|
checks: digestSchema.optional(),
|
|
259
|
+
/**
|
|
260
|
+
* Ревью попытки без изменений подтвердило, что приёмка уже выполнена на
|
|
261
|
+
* базе: gates, на которые сослался reviewer, и его основание.
|
|
262
|
+
*/
|
|
263
|
+
alreadySatisfied: z
|
|
264
|
+
.strictObject({
|
|
265
|
+
gates: z.array(z.string().min(1).max(200)).min(1).max(20),
|
|
266
|
+
evidence: z.string().min(1).max(4000),
|
|
267
|
+
/** Механическое основание, найденное controller (`alreadySatisfiedVerdict`). */
|
|
268
|
+
basis: z
|
|
269
|
+
.discriminatedUnion('kind', [
|
|
270
|
+
z.strictObject({
|
|
271
|
+
kind: z.literal('contract'),
|
|
272
|
+
gates: z.array(z.string().min(1).max(200)).min(1).max(30),
|
|
273
|
+
}),
|
|
274
|
+
z.strictObject({
|
|
275
|
+
kind: z.literal('dependency'),
|
|
276
|
+
workId: idSchema,
|
|
277
|
+
/** Кандидат зависимости, изменивший область записи. */
|
|
278
|
+
sha: gitShaSchema,
|
|
279
|
+
paths: z.array(z.string().min(1).max(1000)).min(1).max(50),
|
|
280
|
+
}),
|
|
281
|
+
])
|
|
282
|
+
.optional(),
|
|
283
|
+
})
|
|
284
|
+
.optional(),
|
|
252
285
|
});
|
|
253
286
|
/* ------------------------------------------------------------------ */
|
|
254
287
|
/* Попытка */
|
|
@@ -363,6 +396,23 @@ export const attemptStateSchema = z.strictObject({
|
|
|
363
396
|
dependencyFreshness: z.array(freshnessSchema).optional(),
|
|
364
397
|
properties: z.array(z.string()).optional(),
|
|
365
398
|
unboundProperties: z.array(z.string()).optional(),
|
|
399
|
+
/**
|
|
400
|
+
* Попытку прервала штатная остановка controller: работа не исполнена до
|
|
401
|
+
* конца, но и не отклонена — поручение вернулось в очередь, следующая
|
|
402
|
+
* попытка продолжает с её кандидата или черновика.
|
|
403
|
+
*/
|
|
404
|
+
interrupted: z.literal('shutdown').optional(),
|
|
405
|
+
/** Классы входов, названные отклонившим ревью (`reproduction.inputClass`). */
|
|
406
|
+
inputClasses: z.array(z.string().max(500)).max(20).optional(),
|
|
407
|
+
/**
|
|
408
|
+
* Пары «необъявленное свойство или критерий — класс входов» блокирующих
|
|
409
|
+
* находок отклонившего ревью: по ним `acceptanceGap` узнаёт один и тот же
|
|
410
|
+
* дефект в разных попытках.
|
|
411
|
+
*/
|
|
412
|
+
classified: z
|
|
413
|
+
.array(z.strictObject({ property: z.string().max(200), inputClass: z.string().max(500) }))
|
|
414
|
+
.max(20)
|
|
415
|
+
.optional(),
|
|
366
416
|
episodeBasis: digestSchema.optional(),
|
|
367
417
|
implementationBasis: digestSchema.optional(),
|
|
368
418
|
reusedFrom: z
|
|
@@ -501,6 +551,12 @@ export const workStateSchema = z.strictObject({
|
|
|
501
551
|
checkVersion: checkVersionSchema.optional(),
|
|
502
552
|
recovery: propertyRecoverySchema.optional(),
|
|
503
553
|
recoveryHistory: z.array(propertyRecoverySchema).optional(),
|
|
554
|
+
/**
|
|
555
|
+
* Отказы окружения, провайдера и истёкшего владения после начала работы:
|
|
556
|
+
* попытку они не засчитывают, но ограничены своим пределом
|
|
557
|
+
* (`MAX_NEUTRAL_FAILURES`); сброс — вместе со сбросом попыток.
|
|
558
|
+
*/
|
|
559
|
+
neutralFailures: z.number().int().min(0).optional(),
|
|
504
560
|
});
|
|
505
561
|
export const graphStateSchema = z.strictObject({
|
|
506
562
|
id: idSchema,
|
|
@@ -852,6 +908,8 @@ export const reproductionRecordSchema = z.strictObject({
|
|
|
852
908
|
property: z.string().max(200).nullable(),
|
|
853
909
|
inputHash: digestSchema,
|
|
854
910
|
input: z.string().min(1).max(8000),
|
|
911
|
+
/** Класс входов, названный reviewer; у записей прежних версий нет. */
|
|
912
|
+
inputClass: z.string().max(500).nullable().optional(),
|
|
855
913
|
expected: z.string().max(2000).nullable(),
|
|
856
914
|
actual: z.string().max(2000).nullable(),
|
|
857
915
|
command: z.array(z.string()).max(64).nullable(),
|
|
@@ -9,21 +9,35 @@ export declare class TaskFailure extends Error {
|
|
|
9
9
|
/**
|
|
10
10
|
* Свойства, с которыми связан отказ: `bound` — объявленные задачей
|
|
11
11
|
* property ID, `unbound` — названные проверкой или ревьюером, но не
|
|
12
|
-
* объявленные (только для разбора, счётчик эпизода они не выбирают)
|
|
12
|
+
* объявленные (только для разбора, счётчик эпизода они не выбирают);
|
|
13
|
+
* `classes` — классы входов, названные ревьюером; `pairs` — свойство и
|
|
14
|
+
* класс одной находки.
|
|
13
15
|
*/
|
|
14
16
|
readonly properties?: {
|
|
15
17
|
bound: string[];
|
|
16
18
|
unbound: string[];
|
|
19
|
+
classes?: string[];
|
|
20
|
+
pairs?: {
|
|
21
|
+
property: string;
|
|
22
|
+
inputClass: string;
|
|
23
|
+
}[];
|
|
17
24
|
} | undefined;
|
|
18
25
|
constructor(kind: FailureKind, message: string,
|
|
19
26
|
/**
|
|
20
27
|
* Свойства, с которыми связан отказ: `bound` — объявленные задачей
|
|
21
28
|
* property ID, `unbound` — названные проверкой или ревьюером, но не
|
|
22
|
-
* объявленные (только для разбора, счётчик эпизода они не выбирают)
|
|
29
|
+
* объявленные (только для разбора, счётчик эпизода они не выбирают);
|
|
30
|
+
* `classes` — классы входов, названные ревьюером; `pairs` — свойство и
|
|
31
|
+
* класс одной находки.
|
|
23
32
|
*/
|
|
24
33
|
properties?: {
|
|
25
34
|
bound: string[];
|
|
26
35
|
unbound: string[];
|
|
36
|
+
classes?: string[];
|
|
37
|
+
pairs?: {
|
|
38
|
+
property: string;
|
|
39
|
+
inputClass: string;
|
|
40
|
+
}[];
|
|
27
41
|
} | undefined);
|
|
28
42
|
}
|
|
29
43
|
/**
|
|
@@ -35,4 +49,4 @@ export declare class TaskFailure extends Error {
|
|
|
35
49
|
* повторов не сработал бы ни разу.
|
|
36
50
|
*/
|
|
37
51
|
export declare function failureFingerprint(kind: FailureKind, message: string): string;
|
|
38
|
-
export { repairPolicy, type RepairRule } from './repair-policy.ts';
|
|
52
|
+
export { MAX_NEUTRAL_FAILURES, repairPolicy, type RepairRule } from './repair-policy.ts';
|
package/lib/contracts/failure.js
CHANGED
|
@@ -11,7 +11,9 @@ export class TaskFailure extends Error {
|
|
|
11
11
|
/**
|
|
12
12
|
* Свойства, с которыми связан отказ: `bound` — объявленные задачей
|
|
13
13
|
* property ID, `unbound` — названные проверкой или ревьюером, но не
|
|
14
|
-
* объявленные (только для разбора, счётчик эпизода они не выбирают)
|
|
14
|
+
* объявленные (только для разбора, счётчик эпизода они не выбирают);
|
|
15
|
+
* `classes` — классы входов, названные ревьюером; `pairs` — свойство и
|
|
16
|
+
* класс одной находки.
|
|
15
17
|
*/
|
|
16
18
|
properties) {
|
|
17
19
|
super(message);
|
|
@@ -50,4 +52,4 @@ export function failureFingerprint(kind, message) {
|
|
|
50
52
|
.digest('hex')
|
|
51
53
|
.slice(0, 16);
|
|
52
54
|
}
|
|
53
|
-
export { repairPolicy } from "./repair-policy.js";
|
|
55
|
+
export { MAX_NEUTRAL_FAILURES, repairPolicy } from "./repair-policy.js";
|