wicked-crew 0.7.46 → 0.7.48
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/dist/api/capture.d.ts +2 -2
- package/dist/api/chat-citations.d.ts +10 -1
- package/dist/api/chat-citations.d.ts.map +1 -1
- package/dist/api/chat-citations.js +28 -0
- package/dist/api/chat-citations.js.map +1 -1
- package/dist/api/chat-scope.d.ts +4 -2
- package/dist/api/chat-scope.d.ts.map +1 -1
- package/dist/api/chat-scope.js +35 -3
- package/dist/api/chat-scope.js.map +1 -1
- package/dist/api/chat-transcripts.d.ts +23 -1
- package/dist/api/chat-transcripts.d.ts.map +1 -1
- package/dist/api/chat-transcripts.js +61 -6
- package/dist/api/chat-transcripts.js.map +1 -1
- package/dist/api/delivery-index.d.ts +21 -0
- package/dist/api/delivery-index.d.ts.map +1 -1
- package/dist/api/delivery-index.js +36 -0
- package/dist/api/delivery-index.js.map +1 -1
- package/dist/api/elicitation-cache.d.ts +12 -0
- package/dist/api/elicitation-cache.d.ts.map +1 -1
- package/dist/api/elicitation-cache.js +17 -1
- package/dist/api/elicitation-cache.js.map +1 -1
- package/dist/api/eval-sample.d.ts +12 -12
- package/dist/api/governance-steering.d.ts.map +1 -1
- package/dist/api/governance-steering.js +1 -0
- package/dist/api/governance-steering.js.map +1 -1
- package/dist/api/mcp.d.ts +4 -4
- package/dist/api/policy-landing.d.ts +55 -0
- package/dist/api/policy-landing.d.ts.map +1 -0
- package/dist/api/policy-landing.js +174 -0
- package/dist/api/policy-landing.js.map +1 -0
- package/dist/api/recording.d.ts +228 -0
- package/dist/api/recording.d.ts.map +1 -0
- package/dist/api/recording.js +1140 -0
- package/dist/api/recording.js.map +1 -0
- package/dist/api/routes.d.ts +42 -39
- package/dist/api/routes.d.ts.map +1 -1
- package/dist/api/routes.js +362 -107
- package/dist/api/routes.js.map +1 -1
- package/dist/api/run-timing-index.d.ts +17 -0
- package/dist/api/run-timing-index.d.ts.map +1 -1
- package/dist/api/run-timing-index.js +43 -1
- package/dist/api/run-timing-index.js.map +1 -1
- package/dist/api/server.d.ts +27 -0
- package/dist/api/server.d.ts.map +1 -1
- package/dist/api/server.js +168 -4
- package/dist/api/server.js.map +1 -1
- package/dist/api/testing.d.ts +4 -4
- package/dist/api/testing.d.ts.map +1 -1
- package/dist/api/testing.js +3 -0
- package/dist/api/testing.js.map +1 -1
- package/dist/api/watch-routes.d.ts +30 -0
- package/dist/api/watch-routes.d.ts.map +1 -0
- package/dist/api/watch-routes.js +104 -0
- package/dist/api/watch-routes.js.map +1 -0
- package/dist/campaigns/routes.d.ts +2 -2
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +20 -2
- package/dist/cli/index.js.map +1 -1
- package/dist/core/adapter.d.ts +52 -1
- package/dist/core/adapter.d.ts.map +1 -1
- package/dist/core/adapter.js +193 -5
- package/dist/core/adapter.js.map +1 -1
- package/dist/core/run-identity.js +1 -1
- package/dist/core/run-identity.js.map +1 -1
- package/dist/core/walkthrough-root.d.ts +21 -0
- package/dist/core/walkthrough-root.d.ts.map +1 -0
- package/dist/core/walkthrough-root.js +66 -0
- package/dist/core/walkthrough-root.js.map +1 -0
- package/dist/decisions/chat-recorder.d.ts +129 -0
- package/dist/decisions/chat-recorder.d.ts.map +1 -0
- package/dist/decisions/chat-recorder.js +367 -0
- package/dist/decisions/chat-recorder.js.map +1 -0
- package/dist/decisions/consider.d.ts +102 -0
- package/dist/decisions/consider.d.ts.map +1 -0
- package/dist/decisions/consider.js +207 -0
- package/dist/decisions/consider.js.map +1 -0
- package/dist/decisions/derive.d.ts +79 -0
- package/dist/decisions/derive.d.ts.map +1 -0
- package/dist/decisions/derive.js +282 -0
- package/dist/decisions/derive.js.map +1 -0
- package/dist/decisions/events.d.ts +25 -0
- package/dist/decisions/events.d.ts.map +1 -0
- package/dist/decisions/events.js +24 -0
- package/dist/decisions/events.js.map +1 -0
- package/dist/decisions/ingest.d.ts +51 -0
- package/dist/decisions/ingest.d.ts.map +1 -0
- package/dist/decisions/ingest.js +100 -0
- package/dist/decisions/ingest.js.map +1 -0
- package/dist/decisions/land.d.ts +100 -0
- package/dist/decisions/land.d.ts.map +1 -0
- package/dist/decisions/land.js +466 -0
- package/dist/decisions/land.js.map +1 -0
- package/dist/decisions/ledger.d.ts +60 -0
- package/dist/decisions/ledger.d.ts.map +1 -0
- package/dist/decisions/ledger.js +246 -0
- package/dist/decisions/ledger.js.map +1 -0
- package/dist/decisions/routes.d.ts +10 -0
- package/dist/decisions/routes.d.ts.map +1 -0
- package/dist/decisions/routes.js +141 -0
- package/dist/decisions/routes.js.map +1 -0
- package/dist/decisions/rules-text.d.ts +21 -0
- package/dist/decisions/rules-text.d.ts.map +1 -0
- package/dist/decisions/rules-text.js +50 -0
- package/dist/decisions/rules-text.js.map +1 -0
- package/dist/decisions/types.d.ts +120 -0
- package/dist/decisions/types.d.ts.map +1 -0
- package/dist/decisions/types.js +19 -0
- package/dist/decisions/types.js.map +1 -0
- package/dist/editors/csp.d.ts +31 -0
- package/dist/editors/csp.d.ts.map +1 -0
- package/dist/editors/csp.js +46 -0
- package/dist/editors/csp.js.map +1 -0
- package/dist/editors/pack-install.d.ts +28 -0
- package/dist/editors/pack-install.d.ts.map +1 -0
- package/dist/editors/pack-install.js +153 -0
- package/dist/editors/pack-install.js.map +1 -0
- package/dist/editors/registry.d.ts +142 -0
- package/dist/editors/registry.d.ts.map +1 -0
- package/dist/editors/registry.js +255 -0
- package/dist/editors/registry.js.map +1 -0
- package/dist/editors/routes.d.ts +46 -0
- package/dist/editors/routes.d.ts.map +1 -0
- package/dist/editors/routes.js +166 -0
- package/dist/editors/routes.js.map +1 -0
- package/dist/interactive/bridge-pool.d.ts +7 -2
- package/dist/interactive/bridge-pool.d.ts.map +1 -1
- package/dist/interactive/bridge-pool.js +6 -1
- package/dist/interactive/bridge-pool.js.map +1 -1
- package/dist/interactive/draft-events.d.ts.map +1 -1
- package/dist/interactive/draft-events.js +1 -0
- package/dist/interactive/draft-events.js.map +1 -1
- package/dist/interactive/theme-events.d.ts +119 -0
- package/dist/interactive/theme-events.d.ts.map +1 -0
- package/dist/interactive/theme-events.js +606 -0
- package/dist/interactive/theme-events.js.map +1 -0
- package/dist/projects/events.d.ts.map +1 -1
- package/dist/projects/events.js +2 -1
- package/dist/projects/events.js.map +1 -1
- package/dist/projects/routes.d.ts +2 -2
- package/dist/projects/state-home-preflight.d.ts.map +1 -1
- package/dist/projects/state-home-preflight.js +3 -0
- package/dist/projects/state-home-preflight.js.map +1 -1
- package/dist/projects/state-home-registry.d.ts.map +1 -1
- package/dist/projects/state-home-registry.js +2 -0
- package/dist/projects/state-home-registry.js.map +1 -1
- package/dist/projects/state-home.d.ts +6 -0
- package/dist/projects/state-home.d.ts.map +1 -1
- package/dist/projects/state-home.js +28 -1
- package/dist/projects/state-home.js.map +1 -1
- package/dist/qe/acceptance.d.ts +45 -4
- package/dist/qe/acceptance.d.ts.map +1 -1
- package/dist/qe/acceptance.js +93 -4
- package/dist/qe/acceptance.js.map +1 -1
- package/dist/qe/ledger.d.ts +20 -0
- package/dist/qe/ledger.d.ts.map +1 -1
- package/dist/qe/ledger.js +34 -0
- package/dist/qe/ledger.js.map +1 -1
- package/dist/qe/walkthrough-acceptance.d.ts +82 -0
- package/dist/qe/walkthrough-acceptance.d.ts.map +1 -0
- package/dist/qe/walkthrough-acceptance.js +248 -0
- package/dist/qe/walkthrough-acceptance.js.map +1 -0
- package/dist/skills/base-skill.d.ts.map +1 -1
- package/dist/skills/base-skill.js +3 -2
- package/dist/skills/base-skill.js.map +1 -1
- package/dist/skills/plugin-source.d.ts +19 -1
- package/dist/skills/plugin-source.d.ts.map +1 -1
- package/dist/skills/plugin-source.js +31 -2
- package/dist/skills/plugin-source.js.map +1 -1
- package/dist/skills/runtime.d.ts +11 -2
- package/dist/skills/runtime.d.ts.map +1 -1
- package/dist/skills/runtime.js +29 -1
- package/dist/skills/runtime.js.map +1 -1
- package/dist/skills/store.d.ts +14 -1
- package/dist/skills/store.d.ts.map +1 -1
- package/dist/skills/store.js +19 -5
- package/dist/skills/store.js.map +1 -1
- package/dist/standing-orders/routes.d.ts +22 -22
- package/dist/standing-orders/store.d.ts +10 -10
- package/dist/watch/checks/check-failed.d.ts +24 -0
- package/dist/watch/checks/check-failed.d.ts.map +1 -0
- package/dist/watch/checks/check-failed.js +56 -0
- package/dist/watch/checks/check-failed.js.map +1 -0
- package/dist/watch/checks/claim-vs-evidence.d.ts +30 -0
- package/dist/watch/checks/claim-vs-evidence.d.ts.map +1 -0
- package/dist/watch/checks/claim-vs-evidence.js +152 -0
- package/dist/watch/checks/claim-vs-evidence.js.map +1 -0
- package/dist/watch/checks/deliver-audit.d.ts +19 -0
- package/dist/watch/checks/deliver-audit.d.ts.map +1 -0
- package/dist/watch/checks/deliver-audit.js +129 -0
- package/dist/watch/checks/deliver-audit.js.map +1 -0
- package/dist/watch/checks/index.d.ts +8 -0
- package/dist/watch/checks/index.d.ts.map +1 -0
- package/dist/watch/checks/index.js +24 -0
- package/dist/watch/checks/index.js.map +1 -0
- package/dist/watch/checks/lag.d.ts +24 -0
- package/dist/watch/checks/lag.d.ts.map +1 -0
- package/dist/watch/checks/lag.js +55 -0
- package/dist/watch/checks/lag.js.map +1 -0
- package/dist/watch/checks/quiet-after-claim.d.ts +17 -0
- package/dist/watch/checks/quiet-after-claim.d.ts.map +1 -0
- package/dist/watch/checks/quiet-after-claim.js +89 -0
- package/dist/watch/checks/quiet-after-claim.js.map +1 -0
- package/dist/watch/checks/ungated.d.ts +12 -0
- package/dist/watch/checks/ungated.d.ts.map +1 -0
- package/dist/watch/checks/ungated.js +64 -0
- package/dist/watch/checks/ungated.js.map +1 -0
- package/dist/watch/checks/warned-rule.d.ts +26 -0
- package/dist/watch/checks/warned-rule.d.ts.map +1 -0
- package/dist/watch/checks/warned-rule.js +126 -0
- package/dist/watch/checks/warned-rule.js.map +1 -0
- package/dist/watch/emit.d.ts +122 -0
- package/dist/watch/emit.d.ts.map +1 -0
- package/dist/watch/emit.js +443 -0
- package/dist/watch/emit.js.map +1 -0
- package/dist/watch/events.d.ts +21 -0
- package/dist/watch/events.d.ts.map +1 -0
- package/dist/watch/events.js +21 -0
- package/dist/watch/events.js.map +1 -0
- package/dist/watch/keys.d.ts +15 -0
- package/dist/watch/keys.d.ts.map +1 -0
- package/dist/watch/keys.js +23 -0
- package/dist/watch/keys.js.map +1 -0
- package/dist/watch/lanes.d.ts +41 -0
- package/dist/watch/lanes.d.ts.map +1 -0
- package/dist/watch/lanes.js +73 -0
- package/dist/watch/lanes.js.map +1 -0
- package/dist/watch/loader.d.ts +47 -0
- package/dist/watch/loader.d.ts.map +1 -0
- package/dist/watch/loader.js +178 -0
- package/dist/watch/loader.js.map +1 -0
- package/dist/watch/registry.d.ts +166 -0
- package/dist/watch/registry.d.ts.map +1 -0
- package/dist/watch/registry.js +589 -0
- package/dist/watch/registry.js.map +1 -0
- package/dist/watch/ring.d.ts +32 -0
- package/dist/watch/ring.d.ts.map +1 -0
- package/dist/watch/ring.js +90 -0
- package/dist/watch/ring.js.map +1 -0
- package/dist/watch/router.d.ts +25 -0
- package/dist/watch/router.d.ts.map +1 -0
- package/dist/watch/router.js +87 -0
- package/dist/watch/router.js.map +1 -0
- package/dist/watch/sources.d.ts +42 -0
- package/dist/watch/sources.d.ts.map +1 -0
- package/dist/watch/sources.js +104 -0
- package/dist/watch/sources.js.map +1 -0
- package/dist/watch/types.d.ts +129 -0
- package/dist/watch/types.d.ts.map +1 -0
- package/dist/watch/types.js +6 -0
- package/dist/watch/types.js.map +1 -0
- package/endpoint-manifest.json +272 -1
- package/package.json +3 -2
- package/watch/entries/claim-vs-evidence.json +13 -0
- package/watch/entries/deliver-audit.json +17 -0
- package/watch/entries/quiet-after-claim.json +16 -0
- package/watch/entries/registry-check-failed.json +12 -0
- package/watch/entries/registry-lagging.json +12 -0
- package/watch/entries/risky-call.json +12 -0
- package/watch/entries/ungated.json +13 -0
- package/dist/api/demo.d.ts +0 -90
- package/dist/api/demo.d.ts.map +0 -1
- package/dist/api/demo.js +0 -492
- package/dist/api/demo.js.map +0 -1
|
@@ -61,12 +61,6 @@ export declare const CreateStandingOrderSchema: z.ZodObject<{
|
|
|
61
61
|
activeWhen: z.ZodEnum<["away", "always"]>;
|
|
62
62
|
}, "strict", z.ZodTypeAny, {
|
|
63
63
|
action: "hold" | "notify" | "approve";
|
|
64
|
-
scope: {
|
|
65
|
-
kind: "all";
|
|
66
|
-
} | {
|
|
67
|
-
kind: "project";
|
|
68
|
-
projectId: string;
|
|
69
|
-
};
|
|
70
64
|
trigger: {
|
|
71
65
|
kind: "gate";
|
|
72
66
|
phase: string;
|
|
@@ -76,15 +70,15 @@ export declare const CreateStandingOrderSchema: z.ZodObject<{
|
|
|
76
70
|
kind: "finding";
|
|
77
71
|
severity: "*" | "high" | "medium";
|
|
78
72
|
};
|
|
79
|
-
activeWhen: "away" | "always";
|
|
80
|
-
}, {
|
|
81
|
-
action: "hold" | "notify" | "approve";
|
|
82
73
|
scope: {
|
|
83
74
|
kind: "all";
|
|
84
75
|
} | {
|
|
85
76
|
kind: "project";
|
|
86
77
|
projectId: string;
|
|
87
78
|
};
|
|
79
|
+
activeWhen: "always" | "away";
|
|
80
|
+
}, {
|
|
81
|
+
action: "hold" | "notify" | "approve";
|
|
88
82
|
trigger: {
|
|
89
83
|
kind: "gate";
|
|
90
84
|
phase: string;
|
|
@@ -94,18 +88,18 @@ export declare const CreateStandingOrderSchema: z.ZodObject<{
|
|
|
94
88
|
kind: "finding";
|
|
95
89
|
severity: "*" | "high" | "medium";
|
|
96
90
|
};
|
|
97
|
-
activeWhen: "away" | "always";
|
|
98
|
-
}>;
|
|
99
|
-
}, "strict", z.ZodTypeAny, {
|
|
100
|
-
text: string;
|
|
101
|
-
rule: {
|
|
102
|
-
action: "hold" | "notify" | "approve";
|
|
103
91
|
scope: {
|
|
104
92
|
kind: "all";
|
|
105
93
|
} | {
|
|
106
94
|
kind: "project";
|
|
107
95
|
projectId: string;
|
|
108
96
|
};
|
|
97
|
+
activeWhen: "always" | "away";
|
|
98
|
+
}>;
|
|
99
|
+
}, "strict", z.ZodTypeAny, {
|
|
100
|
+
text: string;
|
|
101
|
+
rule: {
|
|
102
|
+
action: "hold" | "notify" | "approve";
|
|
109
103
|
trigger: {
|
|
110
104
|
kind: "gate";
|
|
111
105
|
phase: string;
|
|
@@ -115,18 +109,18 @@ export declare const CreateStandingOrderSchema: z.ZodObject<{
|
|
|
115
109
|
kind: "finding";
|
|
116
110
|
severity: "*" | "high" | "medium";
|
|
117
111
|
};
|
|
118
|
-
activeWhen: "away" | "always";
|
|
119
|
-
};
|
|
120
|
-
}, {
|
|
121
|
-
text: string;
|
|
122
|
-
rule: {
|
|
123
|
-
action: "hold" | "notify" | "approve";
|
|
124
112
|
scope: {
|
|
125
113
|
kind: "all";
|
|
126
114
|
} | {
|
|
127
115
|
kind: "project";
|
|
128
116
|
projectId: string;
|
|
129
117
|
};
|
|
118
|
+
activeWhen: "always" | "away";
|
|
119
|
+
};
|
|
120
|
+
}, {
|
|
121
|
+
text: string;
|
|
122
|
+
rule: {
|
|
123
|
+
action: "hold" | "notify" | "approve";
|
|
130
124
|
trigger: {
|
|
131
125
|
kind: "gate";
|
|
132
126
|
phase: string;
|
|
@@ -136,7 +130,13 @@ export declare const CreateStandingOrderSchema: z.ZodObject<{
|
|
|
136
130
|
kind: "finding";
|
|
137
131
|
severity: "*" | "high" | "medium";
|
|
138
132
|
};
|
|
139
|
-
|
|
133
|
+
scope: {
|
|
134
|
+
kind: "all";
|
|
135
|
+
} | {
|
|
136
|
+
kind: "project";
|
|
137
|
+
projectId: string;
|
|
138
|
+
};
|
|
139
|
+
activeWhen: "always" | "away";
|
|
140
140
|
};
|
|
141
141
|
}>;
|
|
142
142
|
export declare const ParseStandingOrderSchema: z.ZodObject<{
|
|
@@ -64,12 +64,6 @@ export declare const StandingOrderRuleSchema: z.ZodObject<{
|
|
|
64
64
|
activeWhen: z.ZodEnum<["away", "always"]>;
|
|
65
65
|
}, "strict", z.ZodTypeAny, {
|
|
66
66
|
action: "hold" | "notify" | "approve";
|
|
67
|
-
scope: {
|
|
68
|
-
kind: "all";
|
|
69
|
-
} | {
|
|
70
|
-
kind: "project";
|
|
71
|
-
projectId: string;
|
|
72
|
-
};
|
|
73
67
|
trigger: {
|
|
74
68
|
kind: "gate";
|
|
75
69
|
phase: string;
|
|
@@ -79,15 +73,15 @@ export declare const StandingOrderRuleSchema: z.ZodObject<{
|
|
|
79
73
|
kind: "finding";
|
|
80
74
|
severity: "*" | "high" | "medium";
|
|
81
75
|
};
|
|
82
|
-
activeWhen: "away" | "always";
|
|
83
|
-
}, {
|
|
84
|
-
action: "hold" | "notify" | "approve";
|
|
85
76
|
scope: {
|
|
86
77
|
kind: "all";
|
|
87
78
|
} | {
|
|
88
79
|
kind: "project";
|
|
89
80
|
projectId: string;
|
|
90
81
|
};
|
|
82
|
+
activeWhen: "always" | "away";
|
|
83
|
+
}, {
|
|
84
|
+
action: "hold" | "notify" | "approve";
|
|
91
85
|
trigger: {
|
|
92
86
|
kind: "gate";
|
|
93
87
|
phase: string;
|
|
@@ -97,7 +91,13 @@ export declare const StandingOrderRuleSchema: z.ZodObject<{
|
|
|
97
91
|
kind: "finding";
|
|
98
92
|
severity: "*" | "high" | "medium";
|
|
99
93
|
};
|
|
100
|
-
|
|
94
|
+
scope: {
|
|
95
|
+
kind: "all";
|
|
96
|
+
} | {
|
|
97
|
+
kind: "project";
|
|
98
|
+
projectId: string;
|
|
99
|
+
};
|
|
100
|
+
activeWhen: "always" | "away";
|
|
101
101
|
}>;
|
|
102
102
|
export type StandingOrderRule = z.infer<typeof StandingOrderRuleSchema>;
|
|
103
103
|
export interface StandingOrder {
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `deterministic:check_failed` — a check that keeps throwing or timing out (entry
|
|
3
|
+
* `registry-check-failed`, §4.3, §6).
|
|
4
|
+
*
|
|
5
|
+
* The deterministic lane reports every throw and every timeout as an internal key point. Past
|
|
6
|
+
* `failures` of one entry inside `window_minutes`, one run-less flag for that entry's episode. A
|
|
7
|
+
* failed check never emits "fine": its runs' coverage already says it did not check.
|
|
8
|
+
*/
|
|
9
|
+
import { z } from 'zod';
|
|
10
|
+
import type { WatchCheck } from '../types.js';
|
|
11
|
+
declare const Threshold: z.ZodObject<{
|
|
12
|
+
failures: z.ZodNumber;
|
|
13
|
+
window_minutes: z.ZodNumber;
|
|
14
|
+
}, "strict", z.ZodTypeAny, {
|
|
15
|
+
failures: number;
|
|
16
|
+
window_minutes: number;
|
|
17
|
+
}, {
|
|
18
|
+
failures: number;
|
|
19
|
+
window_minutes: number;
|
|
20
|
+
}>;
|
|
21
|
+
type Threshold = z.infer<typeof Threshold>;
|
|
22
|
+
export declare const checkFailedCheck: WatchCheck<Record<string, never>, Threshold>;
|
|
23
|
+
export {};
|
|
24
|
+
//# sourceMappingURL=check-failed.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-failed.d.ts","sourceRoot":"","sources":["../../../src/watch/checks/check-failed.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAe,UAAU,EAAE,MAAM,aAAa,CAAC;AAE3D,QAAA,MAAM,SAAS;;;;;;;;;EAKJ,CAAC;AACZ,KAAK,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,SAAS,CAAC,CAAC;AAO3C,eAAO,MAAM,gBAAgB,EAAE,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,SAAS,CAqCzE,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `deterministic:check_failed` — a check that keeps throwing or timing out (entry
|
|
3
|
+
* `registry-check-failed`, §4.3, §6).
|
|
4
|
+
*
|
|
5
|
+
* The deterministic lane reports every throw and every timeout as an internal key point. Past
|
|
6
|
+
* `failures` of one entry inside `window_minutes`, one run-less flag for that entry's episode. A
|
|
7
|
+
* failed check never emits "fine": its runs' coverage already says it did not check.
|
|
8
|
+
*/
|
|
9
|
+
import { z } from 'zod';
|
|
10
|
+
const Threshold = z
|
|
11
|
+
.object({
|
|
12
|
+
failures: z.number().int().min(1).max(1_000),
|
|
13
|
+
window_minutes: z.number().int().min(1).max(1_440),
|
|
14
|
+
})
|
|
15
|
+
.strict();
|
|
16
|
+
export const checkFailedCheck = {
|
|
17
|
+
name: 'deterministic:check_failed',
|
|
18
|
+
lane: 'deterministic',
|
|
19
|
+
paramsSchema: z.object({}).strict(),
|
|
20
|
+
thresholdSchema: Threshold,
|
|
21
|
+
evaluate(input, state, _params, t, ctx) {
|
|
22
|
+
const entryId = typeof input.event['entry_id'] === 'string' ? input.event['entry_id'] : null;
|
|
23
|
+
if (entryId === null)
|
|
24
|
+
return [];
|
|
25
|
+
const reason = input.event['reason'] === 'timeout' ? 'timed out' : 'failed';
|
|
26
|
+
const now = ctx.now();
|
|
27
|
+
const windowMs = t.window_minutes * 60_000;
|
|
28
|
+
const ep = state.bag.get(entryId) ?? { times: [], open: null };
|
|
29
|
+
state.bag.set(entryId, ep);
|
|
30
|
+
// A quiet window closes the episode AND clears its flag: the next burst is a new flag.
|
|
31
|
+
const out = [];
|
|
32
|
+
const last = ep.times[ep.times.length - 1];
|
|
33
|
+
if (ep.open !== null && last !== undefined && now - last > windowMs) {
|
|
34
|
+
out.push({ op: 'clear', subject: `check-failed:${entryId}:${ep.open}` });
|
|
35
|
+
ep.open = null;
|
|
36
|
+
}
|
|
37
|
+
ep.times = ep.times.filter((x) => now - x <= windowMs);
|
|
38
|
+
ep.times.push(now);
|
|
39
|
+
if (ep.open !== null || ep.times.length < t.failures)
|
|
40
|
+
return out;
|
|
41
|
+
ep.open = now;
|
|
42
|
+
return [
|
|
43
|
+
...out,
|
|
44
|
+
{
|
|
45
|
+
op: 'raise',
|
|
46
|
+
subject: `check-failed:${entryId}:${ep.open}`,
|
|
47
|
+
sentence: `The "${entryId}" check ${reason} ${ep.times.length} times in ${t.window_minutes} min, so it is not checking right now.`,
|
|
48
|
+
facts: { entry_id: entryId, failures: ep.times.length, last: reason },
|
|
49
|
+
re: 'registry.check_failed',
|
|
50
|
+
},
|
|
51
|
+
];
|
|
52
|
+
},
|
|
53
|
+
coverage: () => null,
|
|
54
|
+
describe: (t) => `When one check fails or times out ${t.failures} times within ${t.window_minutes} min`,
|
|
55
|
+
};
|
|
56
|
+
//# sourceMappingURL=check-failed.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-failed.js","sourceRoot":"","sources":["../../../src/watch/checks/check-failed.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `deterministic:claim_vs_evidence` (DES-trigger-registry §4.3 row 1, §4.4, §4.7; TR-W6).
|
|
3
|
+
*
|
|
4
|
+
* Reads only fields the engine computed — no regex over transcripts (laya's `RX_CLAIM` was a
|
|
5
|
+
* measurement baseline, not a detector). Two arms, because `evaluatorVerdict` is `null` for
|
|
6
|
+
* creator, neutral and tool units (B3):
|
|
7
|
+
*
|
|
8
|
+
* - **Evaluator arm.** `gateEvaluated.evaluatorVerdict === "PASS"` while the `repoChecksEvaluated`
|
|
9
|
+
* emitted just before that gate says `passed: false` → one HIGH finding: "Said it passed; its
|
|
10
|
+
* own checks failed (lint)". The join is the unit's `ord`; the attempt comes from the floor
|
|
11
|
+
* (N3: `gateEvaluated` carries no attempt). A floor is evidence for its OWN gate only: the gate
|
|
12
|
+
* consumes it, so a later gate with no fresh floor is never read against a stale one.
|
|
13
|
+
* - **Creator arm.** `repoChecksEvaluated{floor: "creator", passed: false}` → one MEDIUM finding:
|
|
14
|
+
* "Handed back as finished; its own checks failed (lint)". A creator that hands back output has
|
|
15
|
+
* claimed it is finished; the engine's creator floor failing is the structural contradiction.
|
|
16
|
+
*
|
|
17
|
+
* A floor that did not RUN (`outcome: "not_run"` — no write boundary could be armed) is not "its
|
|
18
|
+
* checks failed": neither arm speaks, and coverage says the checks could not run. A floor that hit
|
|
19
|
+
* its bound (`outcome: "timed_out"`) says "did not finish".
|
|
20
|
+
*
|
|
21
|
+
* Failing check names come from `repoChecksEvaluated.checks` (exit code, timeout or spawn error).
|
|
22
|
+
* Clearing (§4.7): a `gateEvaluated{combined: true}` for the unit means a later attempt passed —
|
|
23
|
+
* every finding this check holds open on that unit is cleared.
|
|
24
|
+
* Coverage: "not checked" when no floor ran for the run (the gate's `floorNote` says why).
|
|
25
|
+
*/
|
|
26
|
+
import type { WatchCheck } from '../types.js';
|
|
27
|
+
/** The checks that failed, by name: a non-zero exit, a timeout or a spawn error. */
|
|
28
|
+
export declare function failingCheckNames(checks: unknown): string[];
|
|
29
|
+
export declare const claimVsEvidenceCheck: WatchCheck<Record<string, never>, Record<string, never>>;
|
|
30
|
+
//# sourceMappingURL=claim-vs-evidence.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claim-vs-evidence.d.ts","sourceRoot":"","sources":["../../../src/watch/checks/claim-vs-evidence.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAGH,OAAO,KAAK,EAAe,UAAU,EAAE,MAAM,aAAa,CAAC;AA8B3D,oFAAoF;AACpF,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,EAAE,CAY3D;AAoBD,eAAO,MAAM,oBAAoB,EAAE,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAkFzF,CAAC"}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `deterministic:claim_vs_evidence` (DES-trigger-registry §4.3 row 1, §4.4, §4.7; TR-W6).
|
|
3
|
+
*
|
|
4
|
+
* Reads only fields the engine computed — no regex over transcripts (laya's `RX_CLAIM` was a
|
|
5
|
+
* measurement baseline, not a detector). Two arms, because `evaluatorVerdict` is `null` for
|
|
6
|
+
* creator, neutral and tool units (B3):
|
|
7
|
+
*
|
|
8
|
+
* - **Evaluator arm.** `gateEvaluated.evaluatorVerdict === "PASS"` while the `repoChecksEvaluated`
|
|
9
|
+
* emitted just before that gate says `passed: false` → one HIGH finding: "Said it passed; its
|
|
10
|
+
* own checks failed (lint)". The join is the unit's `ord`; the attempt comes from the floor
|
|
11
|
+
* (N3: `gateEvaluated` carries no attempt). A floor is evidence for its OWN gate only: the gate
|
|
12
|
+
* consumes it, so a later gate with no fresh floor is never read against a stale one.
|
|
13
|
+
* - **Creator arm.** `repoChecksEvaluated{floor: "creator", passed: false}` → one MEDIUM finding:
|
|
14
|
+
* "Handed back as finished; its own checks failed (lint)". A creator that hands back output has
|
|
15
|
+
* claimed it is finished; the engine's creator floor failing is the structural contradiction.
|
|
16
|
+
*
|
|
17
|
+
* A floor that did not RUN (`outcome: "not_run"` — no write boundary could be armed) is not "its
|
|
18
|
+
* checks failed": neither arm speaks, and coverage says the checks could not run. A floor that hit
|
|
19
|
+
* its bound (`outcome: "timed_out"`) says "did not finish".
|
|
20
|
+
*
|
|
21
|
+
* Failing check names come from `repoChecksEvaluated.checks` (exit code, timeout or spawn error).
|
|
22
|
+
* Clearing (§4.7): a `gateEvaluated{combined: true}` for the unit means a later attempt passed —
|
|
23
|
+
* every finding this check holds open on that unit is cleared.
|
|
24
|
+
* Coverage: "not checked" when no floor ran for the run (the gate's `floorNote` says why).
|
|
25
|
+
*/
|
|
26
|
+
import { z } from 'zod';
|
|
27
|
+
const num = (v) => (typeof v === 'number' && Number.isFinite(v) ? v : null);
|
|
28
|
+
const text = (v) => (typeof v === 'string' ? v : '');
|
|
29
|
+
/** The checks that failed, by name: a non-zero exit, a timeout or a spawn error. */
|
|
30
|
+
export function failingCheckNames(checks) {
|
|
31
|
+
if (!Array.isArray(checks))
|
|
32
|
+
return [];
|
|
33
|
+
const out = [];
|
|
34
|
+
for (const c of checks) {
|
|
35
|
+
if (typeof c !== 'object' || c === null)
|
|
36
|
+
continue;
|
|
37
|
+
const r = c;
|
|
38
|
+
const name = typeof r['name'] === 'string' && r['name'] !== '' ? r['name'] : 'check';
|
|
39
|
+
const exit = r['exitCode'];
|
|
40
|
+
const failed = (typeof exit === 'number' && exit !== 0) || r['timedOut'] === true || (typeof r['spawnError'] === 'string' && r['spawnError'] !== '');
|
|
41
|
+
if (failed && !out.includes(name))
|
|
42
|
+
out.push(name);
|
|
43
|
+
}
|
|
44
|
+
return out;
|
|
45
|
+
}
|
|
46
|
+
function named(failing) {
|
|
47
|
+
if (failing.length === 0)
|
|
48
|
+
return 'its checks';
|
|
49
|
+
const shown = failing.slice(0, 3).join(', ');
|
|
50
|
+
return failing.length > 3 ? `${shown}, +${failing.length - 3} more` : shown;
|
|
51
|
+
}
|
|
52
|
+
/** "its own checks failed (lint)" / "its own checks did not finish (test)". */
|
|
53
|
+
const evidence = (f) => `its own checks ${f.timedOut ? 'did not finish' : 'failed'} (${named(f.failing)})`;
|
|
54
|
+
function raise(bag, ord, out) {
|
|
55
|
+
if (bag.raised.has(out.subject))
|
|
56
|
+
return [];
|
|
57
|
+
bag.raised.add(out.subject);
|
|
58
|
+
const open = bag.open.get(ord) ?? new Set();
|
|
59
|
+
open.add(out.subject);
|
|
60
|
+
bag.open.set(ord, open);
|
|
61
|
+
return [out];
|
|
62
|
+
}
|
|
63
|
+
export const claimVsEvidenceCheck = {
|
|
64
|
+
name: 'deterministic:claim_vs_evidence',
|
|
65
|
+
lane: 'deterministic',
|
|
66
|
+
paramsSchema: z.object({}).strict(),
|
|
67
|
+
thresholdSchema: z.object({}).strict(),
|
|
68
|
+
evaluate(input, state) {
|
|
69
|
+
const bag = state.bag.get('claim') ??
|
|
70
|
+
{ pending: new Map(), floors: 0, notRun: 0, notRunNote: null, gates: 0, floorNote: null, raised: new Set(), open: new Map() };
|
|
71
|
+
state.bag.set('claim', bag);
|
|
72
|
+
const e = input.event;
|
|
73
|
+
const ord = num(e['ord']);
|
|
74
|
+
if (ord === null)
|
|
75
|
+
return [];
|
|
76
|
+
if (input.type === 'repoChecksEvaluated') {
|
|
77
|
+
const attempt = num(e['attempt']) ?? 0;
|
|
78
|
+
const passed = e['passed'] === true;
|
|
79
|
+
const outcome = text(e['outcome']);
|
|
80
|
+
const floor = text(e['floor']);
|
|
81
|
+
const ran = outcome !== 'not_run';
|
|
82
|
+
const current = { attempt, passed, ran, timedOut: outcome === 'timed_out', failing: failingCheckNames(e['checks']), floor };
|
|
83
|
+
bag.pending.set(ord, current);
|
|
84
|
+
if (!ran) {
|
|
85
|
+
bag.notRun++;
|
|
86
|
+
bag.notRunNote = text(e['sandboxError']) || text(e['detectError']) || bag.notRunNote;
|
|
87
|
+
return [];
|
|
88
|
+
}
|
|
89
|
+
bag.floors++;
|
|
90
|
+
if (floor !== 'creator' || passed)
|
|
91
|
+
return [];
|
|
92
|
+
return raise(bag, ord, {
|
|
93
|
+
op: 'raise',
|
|
94
|
+
subject: `${ord}:${attempt}:creator-floor-failed`,
|
|
95
|
+
kind: 'finding',
|
|
96
|
+
severity: 'medium',
|
|
97
|
+
sentence: `Handed back as finished; ${evidence(current)}.`,
|
|
98
|
+
facts: { arm: 'creator', floor, passed: false, failing: current.failing, timed_out: current.timedOut },
|
|
99
|
+
ord,
|
|
100
|
+
attempt,
|
|
101
|
+
re: `repoChecksEvaluated#${ord}:${attempt}`,
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
if (input.type !== 'gateEvaluated')
|
|
105
|
+
return [];
|
|
106
|
+
bag.gates++;
|
|
107
|
+
if (typeof e['floorNote'] === 'string' && e['floorNote'] !== '')
|
|
108
|
+
bag.floorNote = e['floorNote'];
|
|
109
|
+
// The floor emitted just before this gate is this gate's evidence — and no later gate's.
|
|
110
|
+
const floor = bag.pending.get(ord);
|
|
111
|
+
bag.pending.delete(ord);
|
|
112
|
+
if (e['combined'] === true) {
|
|
113
|
+
// A later attempt of this unit passed its gate: what this check held open on it is resolved.
|
|
114
|
+
const open = bag.open.get(ord);
|
|
115
|
+
if (open === undefined || open.size === 0)
|
|
116
|
+
return [];
|
|
117
|
+
bag.open.delete(ord);
|
|
118
|
+
return [...open].map((subject) => ({ op: 'clear', subject }));
|
|
119
|
+
}
|
|
120
|
+
const verdict = text(e['evaluatorVerdict']).trim().toUpperCase();
|
|
121
|
+
if (verdict !== 'PASS' || floor === undefined || !floor.ran || floor.passed)
|
|
122
|
+
return [];
|
|
123
|
+
return raise(bag, ord, {
|
|
124
|
+
op: 'raise',
|
|
125
|
+
subject: `${ord}:${floor.attempt}:evaluator-pass-vs-floor`,
|
|
126
|
+
kind: 'finding',
|
|
127
|
+
severity: 'high',
|
|
128
|
+
sentence: `Said it passed; ${evidence(floor)}.`,
|
|
129
|
+
facts: { arm: 'evaluator', verdict: 'PASS', floor: floor.floor, passed: false, failing: floor.failing, timed_out: floor.timedOut },
|
|
130
|
+
ord,
|
|
131
|
+
attempt: floor.attempt,
|
|
132
|
+
re: `gateEvaluated#${ord}`,
|
|
133
|
+
});
|
|
134
|
+
},
|
|
135
|
+
coverage(state) {
|
|
136
|
+
const bag = state.bag.get('claim');
|
|
137
|
+
if (bag !== undefined && bag.floors > 0)
|
|
138
|
+
return { state: 'checked' };
|
|
139
|
+
if (bag !== undefined && bag.notRun > 0) {
|
|
140
|
+
return { state: 'not_checked', reason: `the step's checks could not run${bag.notRunNote !== null && bag.notRunNote !== '' ? `: ${bag.notRunNote.slice(0, 160)}` : ''}` };
|
|
141
|
+
}
|
|
142
|
+
if (bag !== undefined && bag.gates > 0) {
|
|
143
|
+
return {
|
|
144
|
+
state: 'not_checked',
|
|
145
|
+
reason: bag.floorNote !== null ? `no deterministic floor ran: ${bag.floorNote.slice(0, 160)}` : 'no step ran its checks — nothing to read the verdict against',
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
return { state: 'not_checked', reason: 'no step has run its checks yet' };
|
|
149
|
+
},
|
|
150
|
+
describe: () => 'When a step is handed back as finished, or an evaluator says PASS, while the step\'s own checks failed',
|
|
151
|
+
};
|
|
152
|
+
//# sourceMappingURL=claim-vs-evidence.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claim-vs-evidence.js","sourceRoot":"","sources":["../../../src/watch/checks/claim-vs-evidence.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `deterministic:deliver_audit` — entry `deliver-audit` (DES-TRIGGER-REGISTRY-001 §4.3 row 3, TR-W5b).
|
|
3
|
+
*
|
|
4
|
+
* A sequence check over the engine's own facts, nothing parsed: the deliver unit's
|
|
5
|
+
* `deliverLiftEvaluated.outcome`, joined to the same (session, ord, attempt)'s next
|
|
6
|
+
* `repoChecksEvaluated`, with the unit's end (`unitOutputCaptured` or `gateEvaluated` for that ord)
|
|
7
|
+
* closing the window.
|
|
8
|
+
*
|
|
9
|
+
* - `lifted` and the unit ends with NO re-check for that attempt → FINDING high: the tree that ships
|
|
10
|
+
* was moved onto the remote tip and never re-verified. (A re-check that ran and FAILED is not a
|
|
11
|
+
* finding: the engine failed the unit and pushed nothing.) A re-check arriving later clears it.
|
|
12
|
+
* - `skipped` → flag medium at once: the lift could not be decided, so the tree that ships was not
|
|
13
|
+
* re-verified on the remote tip (the deliver script's own rebase stands).
|
|
14
|
+
* - `conflict` / `failed` → flag info: the engine already failed the unit; this only names it.
|
|
15
|
+
* - `unchanged` → nothing.
|
|
16
|
+
*/
|
|
17
|
+
import type { WatchCheck } from '../types.js';
|
|
18
|
+
export declare const deliverAuditCheck: WatchCheck<Record<string, never>, Record<string, never>>;
|
|
19
|
+
//# sourceMappingURL=deliver-audit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deliver-audit.d.ts","sourceRoot":"","sources":["../../../src/watch/checks/deliver-audit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,KAAK,EAAe,UAAU,EAAE,MAAM,aAAa,CAAC;AAiB3D,eAAO,MAAM,iBAAiB,EAAE,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAuGtF,CAAC"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `deterministic:deliver_audit` — entry `deliver-audit` (DES-TRIGGER-REGISTRY-001 §4.3 row 3, TR-W5b).
|
|
3
|
+
*
|
|
4
|
+
* A sequence check over the engine's own facts, nothing parsed: the deliver unit's
|
|
5
|
+
* `deliverLiftEvaluated.outcome`, joined to the same (session, ord, attempt)'s next
|
|
6
|
+
* `repoChecksEvaluated`, with the unit's end (`unitOutputCaptured` or `gateEvaluated` for that ord)
|
|
7
|
+
* closing the window.
|
|
8
|
+
*
|
|
9
|
+
* - `lifted` and the unit ends with NO re-check for that attempt → FINDING high: the tree that ships
|
|
10
|
+
* was moved onto the remote tip and never re-verified. (A re-check that ran and FAILED is not a
|
|
11
|
+
* finding: the engine failed the unit and pushed nothing.) A re-check arriving later clears it.
|
|
12
|
+
* - `skipped` → flag medium at once: the lift could not be decided, so the tree that ships was not
|
|
13
|
+
* re-verified on the remote tip (the deliver script's own rebase stands).
|
|
14
|
+
* - `conflict` / `failed` → flag info: the engine already failed the unit; this only names it.
|
|
15
|
+
* - `unchanged` → nothing.
|
|
16
|
+
*/
|
|
17
|
+
import { z } from 'zod';
|
|
18
|
+
const num = (v) => (typeof v === 'number' && Number.isFinite(v) ? v : null);
|
|
19
|
+
const keyOf = (ord, attempt) => `${ord}:${attempt}`;
|
|
20
|
+
export const deliverAuditCheck = {
|
|
21
|
+
name: 'deterministic:deliver_audit',
|
|
22
|
+
lane: 'deterministic',
|
|
23
|
+
paramsSchema: z.object({}).strict(),
|
|
24
|
+
thresholdSchema: z.object({}).strict(),
|
|
25
|
+
evaluate(input, state) {
|
|
26
|
+
const bag = state.bag.get('deliver') ?? { lifts: new Map(), outcomes: 0 };
|
|
27
|
+
state.bag.set('deliver', bag);
|
|
28
|
+
const e = input.event;
|
|
29
|
+
const ord = num(e['ord']);
|
|
30
|
+
const attempt = num(e['attempt']);
|
|
31
|
+
switch (input.type) {
|
|
32
|
+
case 'deliverLiftEvaluated': {
|
|
33
|
+
if (ord === null || attempt === null)
|
|
34
|
+
return [];
|
|
35
|
+
bag.outcomes++;
|
|
36
|
+
const outcome = typeof e['outcome'] === 'string' ? e['outcome'] : '';
|
|
37
|
+
const re = `deliverLiftEvaluated#${ord}:${attempt}`;
|
|
38
|
+
if (outcome === 'lifted') {
|
|
39
|
+
bag.lifts.set(keyOf(ord, attempt), { ord, attempt, rechecked: false, raised: false });
|
|
40
|
+
return [];
|
|
41
|
+
}
|
|
42
|
+
if (outcome === 'skipped') {
|
|
43
|
+
const note = typeof e['note'] === 'string' && e['note'] !== '' ? ` (${e['note'].slice(0, 160)})` : '';
|
|
44
|
+
return [
|
|
45
|
+
{
|
|
46
|
+
op: 'raise',
|
|
47
|
+
subject: `${ord}:${attempt}:lift-skipped`,
|
|
48
|
+
kind: 'flag',
|
|
49
|
+
severity: 'medium',
|
|
50
|
+
sentence: `The tree that ships was not re-checked on the newest main: the lift was skipped${note}.`,
|
|
51
|
+
facts: { outcome, base_ref: e['baseRef'] ?? null },
|
|
52
|
+
ord,
|
|
53
|
+
attempt,
|
|
54
|
+
re,
|
|
55
|
+
},
|
|
56
|
+
];
|
|
57
|
+
}
|
|
58
|
+
if (outcome === 'conflict' || outcome === 'failed') {
|
|
59
|
+
const conflicts = Array.isArray(e['conflicts']) ? e['conflicts'].filter((c) => typeof c === 'string').slice(0, 10) : [];
|
|
60
|
+
return [
|
|
61
|
+
{
|
|
62
|
+
op: 'raise',
|
|
63
|
+
subject: `${ord}:${attempt}:lift-${outcome}`,
|
|
64
|
+
kind: 'flag',
|
|
65
|
+
severity: 'info',
|
|
66
|
+
sentence: outcome === 'conflict'
|
|
67
|
+
? `Delivery stopped: the work would conflict with the newest main${conflicts.length > 0 ? ` in ${conflicts.length} file${conflicts.length === 1 ? '' : 's'}` : ''}. Nothing was pushed.`
|
|
68
|
+
: 'Delivery stopped: moving the work onto the newest main failed part-way. Nothing was pushed.',
|
|
69
|
+
facts: { outcome, conflicts },
|
|
70
|
+
ord,
|
|
71
|
+
attempt,
|
|
72
|
+
re,
|
|
73
|
+
},
|
|
74
|
+
];
|
|
75
|
+
}
|
|
76
|
+
return [];
|
|
77
|
+
}
|
|
78
|
+
case 'repoChecksEvaluated': {
|
|
79
|
+
if (ord === null || attempt === null)
|
|
80
|
+
return [];
|
|
81
|
+
const lift = bag.lifts.get(keyOf(ord, attempt));
|
|
82
|
+
if (lift === undefined)
|
|
83
|
+
return [];
|
|
84
|
+
lift.rechecked = true;
|
|
85
|
+
// A late re-check resolves a raised finding (passing or failing: either way it ran). Cleared
|
|
86
|
+
// unconditionally — a restart may hold the row open while this life never raised it; a
|
|
87
|
+
// clear naming no row is a no-op in the emitter.
|
|
88
|
+
lift.raised = false;
|
|
89
|
+
return [{ op: 'clear', subject: `${ord}:${attempt}:lift-unverified` }];
|
|
90
|
+
}
|
|
91
|
+
case 'unitOutputCaptured':
|
|
92
|
+
case 'gateEvaluated': {
|
|
93
|
+
if (ord === null)
|
|
94
|
+
return [];
|
|
95
|
+
const out = [];
|
|
96
|
+
for (const lift of bag.lifts.values()) {
|
|
97
|
+
if (lift.ord !== ord || lift.rechecked || lift.raised)
|
|
98
|
+
continue;
|
|
99
|
+
// `gateEvaluated` carries no attempt: it closes every open lift of its unit.
|
|
100
|
+
if (input.type === 'unitOutputCaptured' && attempt !== null && attempt !== lift.attempt)
|
|
101
|
+
continue;
|
|
102
|
+
lift.raised = true;
|
|
103
|
+
out.push({
|
|
104
|
+
op: 'raise',
|
|
105
|
+
subject: `${lift.ord}:${lift.attempt}:lift-unverified`,
|
|
106
|
+
kind: 'finding',
|
|
107
|
+
severity: 'high',
|
|
108
|
+
sentence: 'The work was moved onto the newest main before delivery, and the moved tree was never re-checked.',
|
|
109
|
+
facts: { outcome: 'lifted', rechecked: false },
|
|
110
|
+
ord: lift.ord,
|
|
111
|
+
attempt: lift.attempt,
|
|
112
|
+
re: `deliverLiftEvaluated#${lift.ord}:${lift.attempt}`,
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
return out;
|
|
116
|
+
}
|
|
117
|
+
default:
|
|
118
|
+
return [];
|
|
119
|
+
}
|
|
120
|
+
},
|
|
121
|
+
coverage(state) {
|
|
122
|
+
const bag = state.bag.get('deliver');
|
|
123
|
+
if (bag !== undefined && bag.outcomes > 0)
|
|
124
|
+
return { state: 'checked' };
|
|
125
|
+
return { state: 'not_checked', reason: 'nothing was delivered on this run yet' };
|
|
126
|
+
},
|
|
127
|
+
describe: () => 'When delivery moves the work onto the newest main and the moved tree is not re-checked, or the move is skipped, conflicts or fails',
|
|
128
|
+
};
|
|
129
|
+
//# sourceMappingURL=deliver-audit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deliver-audit.js","sourceRoot":"","sources":["../../../src/watch/checks/deliver-audit.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The check map (DES-TRIGGER-REGISTRY-001 §4.4): name → implementation, the ONE place a check is
|
|
3
|
+
* named. Each crew slice adds one line here (TR-W5b, W6, W7, W9), which is why they land in
|
|
4
|
+
* sequence. An entry naming a check that is not here is refused at load.
|
|
5
|
+
*/
|
|
6
|
+
import type { WatchCheck } from '../types.js';
|
|
7
|
+
export declare const SHIPPED_CHECKS: ReadonlyMap<string, WatchCheck>;
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/watch/checks/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAS9C,eAAO,MAAM,cAAc,EAAE,WAAW,CAAC,MAAM,EAAE,UAAU,CAUzD,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The check map (DES-TRIGGER-REGISTRY-001 §4.4): name → implementation, the ONE place a check is
|
|
3
|
+
* named. Each crew slice adds one line here (TR-W5b, W6, W7, W9), which is why they land in
|
|
4
|
+
* sequence. An entry naming a check that is not here is refused at load.
|
|
5
|
+
*/
|
|
6
|
+
import { checkFailedCheck } from './check-failed.js';
|
|
7
|
+
import { claimVsEvidenceCheck } from './claim-vs-evidence.js';
|
|
8
|
+
import { deliverAuditCheck } from './deliver-audit.js';
|
|
9
|
+
import { lagCheck } from './lag.js';
|
|
10
|
+
import { quietAfterClaimCheck } from './quiet-after-claim.js';
|
|
11
|
+
import { ungatedCheck } from './ungated.js';
|
|
12
|
+
import { warnedRuleCheck } from './warned-rule.js';
|
|
13
|
+
export const SHIPPED_CHECKS = new Map([
|
|
14
|
+
[lagCheck.name, lagCheck],
|
|
15
|
+
[checkFailedCheck.name, checkFailedCheck],
|
|
16
|
+
// TR-W5b
|
|
17
|
+
[deliverAuditCheck.name, deliverAuditCheck],
|
|
18
|
+
[ungatedCheck.name, ungatedCheck],
|
|
19
|
+
[quietAfterClaimCheck.name, quietAfterClaimCheck],
|
|
20
|
+
// TR-W6
|
|
21
|
+
[claimVsEvidenceCheck.name, claimVsEvidenceCheck],
|
|
22
|
+
[warnedRuleCheck.name, warnedRuleCheck],
|
|
23
|
+
]);
|
|
24
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/watch/checks/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnD,MAAM,CAAC,MAAM,cAAc,GAAoC,IAAI,GAAG,CAAqB;IACzF,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAiC,CAAC;IAClD,CAAC,gBAAgB,CAAC,IAAI,EAAE,gBAAyC,CAAC;IAClE,SAAS;IACT,CAAC,iBAAiB,CAAC,IAAI,EAAE,iBAA0C,CAAC;IACpE,CAAC,YAAY,CAAC,IAAI,EAAE,YAAqC,CAAC;IAC1D,CAAC,oBAAoB,CAAC,IAAI,EAAE,oBAA6C,CAAC;IAC1E,QAAQ;IACR,CAAC,oBAAoB,CAAC,IAAI,EAAE,oBAA6C,CAAC;IAC1E,CAAC,eAAe,CAAC,IAAI,EAAE,eAAwC,CAAC;CACjE,CAAC,CAAC"}
|