tickmarkr 2.5.7 → 2.5.9
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/adapters/qwen.js +30 -3
- package/dist/cli/commands/approve.js +23 -4
- package/dist/cli/commands/beat.d.ts +2 -0
- package/dist/cli/commands/beat.js +28 -29
- package/dist/cli/commands/compile.js +18 -0
- package/dist/cli/commands/fleet.js +61 -53
- package/dist/cli/commands/plan.d.ts +5 -0
- package/dist/cli/commands/plan.js +28 -23
- package/dist/cli/commands/resume.js +1 -1
- package/dist/cli/commands/run.js +1 -1
- package/dist/cli/commands/verify.d.ts +4 -1
- package/dist/cli/commands/verify.js +16 -5
- package/dist/cli/help.d.ts +2 -0
- package/dist/cli/help.js +6 -4
- package/dist/compile/native.js +68 -7
- package/dist/compile/retired-literals.d.ts +22 -0
- package/dist/compile/retired-literals.js +271 -0
- package/dist/config/config.d.ts +41 -3
- package/dist/config/config.js +48 -17
- package/dist/config/fleet-overlay.js +47 -62
- package/dist/drivers/index.d.ts +4 -2
- package/dist/drivers/index.js +54 -6
- package/dist/gates/baseline.d.ts +65 -0
- package/dist/gates/baseline.js +163 -9
- package/dist/gates/review.d.ts +6 -4
- package/dist/gates/review.js +62 -21
- package/dist/gates/run-gates.d.ts +6 -1
- package/dist/gates/run-gates.js +25 -13
- package/dist/gates/test-manifest.d.ts +20 -1
- package/dist/gates/test-manifest.js +50 -22
- package/dist/gates/test-reporter.js +22 -1
- package/dist/graph/schema.d.ts +28 -0
- package/dist/graph/schema.js +13 -1
- package/dist/run/daemon.d.ts +19 -0
- package/dist/run/daemon.js +363 -118
- package/dist/run/journal.d.ts +54 -3
- package/dist/run/journal.js +142 -11
- package/dist/run/merge.d.ts +15 -2
- package/dist/run/merge.js +74 -11
- package/dist/run/protocol.d.ts +82 -0
- package/dist/run/protocol.js +35 -0
- package/dist/run/receipt-resolver.d.ts +18 -0
- package/dist/run/receipt-resolver.js +132 -0
- package/dist/run/repair-disposition.d.ts +41 -0
- package/dist/run/repair-disposition.js +77 -0
- package/dist/run/supervision.d.ts +14 -1
- package/dist/run/supervision.js +122 -24
- package/dist/tui/cockpit/evidence-view.d.ts +10 -1
- package/dist/tui/cockpit/evidence-view.js +37 -5
- package/dist/tui/cockpit/home-view.js +45 -30
- package/dist/tui/cockpit/live-store.d.ts +18 -0
- package/dist/tui/ink/fleet-app.d.ts +12 -22
- package/dist/tui/ink/fleet-app.js +520 -131
- package/package.json +1 -1
- package/schema/rungraph.schema.json +54 -0
- package/skills/tickmarkr-overseer/SKILL.md +168 -36
- package/skills/tickmarkr-overseer/scripts/watch-context.sh +14 -2
package/dist/graph/schema.d.ts
CHANGED
|
@@ -19,12 +19,22 @@ export declare const AcceptanceItemSchema: z.ZodUnion<readonly [z.ZodString, z.Z
|
|
|
19
19
|
oracle: z.ZodLiteral<"test">;
|
|
20
20
|
test: z.ZodString;
|
|
21
21
|
text: z.ZodOptional<z.ZodString>;
|
|
22
|
+
landing: z.ZodOptional<z.ZodString>;
|
|
22
23
|
}, z.core.$strip>, z.ZodObject<{
|
|
23
24
|
oracle: z.ZodLiteral<"judge">;
|
|
24
25
|
text: z.ZodString;
|
|
25
26
|
}, z.core.$strip>]>;
|
|
26
27
|
export type AcceptanceItem = z.infer<typeof AcceptanceItemSchema>;
|
|
27
28
|
export declare function renderAcceptanceItem(item: AcceptanceItem): string;
|
|
29
|
+
export declare const PinSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
30
|
+
kind: z.ZodLiteral<"literal">;
|
|
31
|
+
text: z.ZodString;
|
|
32
|
+
glob: z.ZodString;
|
|
33
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
34
|
+
kind: z.ZodLiteral<"fixture">;
|
|
35
|
+
paths: z.ZodArray<z.ZodString>;
|
|
36
|
+
}, z.core.$strip>], "kind">;
|
|
37
|
+
export type Pin = z.infer<typeof PinSchema>;
|
|
28
38
|
export declare const TaskSchema: z.ZodObject<{
|
|
29
39
|
id: z.ZodString;
|
|
30
40
|
title: z.ZodString;
|
|
@@ -52,6 +62,7 @@ export declare const TaskSchema: z.ZodObject<{
|
|
|
52
62
|
oracle: z.ZodLiteral<"test">;
|
|
53
63
|
test: z.ZodString;
|
|
54
64
|
text: z.ZodOptional<z.ZodString>;
|
|
65
|
+
landing: z.ZodOptional<z.ZodString>;
|
|
55
66
|
}, z.core.$strip>, z.ZodObject<{
|
|
56
67
|
oracle: z.ZodLiteral<"judge">;
|
|
57
68
|
text: z.ZodString;
|
|
@@ -61,6 +72,14 @@ export declare const TaskSchema: z.ZodObject<{
|
|
|
61
72
|
confidence: z.ZodOptional<z.ZodNumber>;
|
|
62
73
|
reason: z.ZodOptional<z.ZodString>;
|
|
63
74
|
}, z.core.$strip>>>;
|
|
75
|
+
pins: z.ZodOptional<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
76
|
+
kind: z.ZodLiteral<"literal">;
|
|
77
|
+
text: z.ZodString;
|
|
78
|
+
glob: z.ZodString;
|
|
79
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
80
|
+
kind: z.ZodLiteral<"fixture">;
|
|
81
|
+
paths: z.ZodArray<z.ZodString>;
|
|
82
|
+
}, z.core.$strip>], "kind">>>;
|
|
64
83
|
gates: z.ZodDefault<z.ZodArray<z.ZodEnum<{
|
|
65
84
|
build: "build";
|
|
66
85
|
test: "test";
|
|
@@ -144,6 +163,7 @@ export declare const RunGraphSchema: z.ZodObject<{
|
|
|
144
163
|
oracle: z.ZodLiteral<"test">;
|
|
145
164
|
test: z.ZodString;
|
|
146
165
|
text: z.ZodOptional<z.ZodString>;
|
|
166
|
+
landing: z.ZodOptional<z.ZodString>;
|
|
147
167
|
}, z.core.$strip>, z.ZodObject<{
|
|
148
168
|
oracle: z.ZodLiteral<"judge">;
|
|
149
169
|
text: z.ZodString;
|
|
@@ -153,6 +173,14 @@ export declare const RunGraphSchema: z.ZodObject<{
|
|
|
153
173
|
confidence: z.ZodOptional<z.ZodNumber>;
|
|
154
174
|
reason: z.ZodOptional<z.ZodString>;
|
|
155
175
|
}, z.core.$strip>>>;
|
|
176
|
+
pins: z.ZodOptional<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
177
|
+
kind: z.ZodLiteral<"literal">;
|
|
178
|
+
text: z.ZodString;
|
|
179
|
+
glob: z.ZodString;
|
|
180
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
181
|
+
kind: z.ZodLiteral<"fixture">;
|
|
182
|
+
paths: z.ZodArray<z.ZodString>;
|
|
183
|
+
}, z.core.$strip>], "kind">>>;
|
|
156
184
|
gates: z.ZodDefault<z.ZodArray<z.ZodEnum<{
|
|
157
185
|
build: "build";
|
|
158
186
|
test: "test";
|
package/dist/graph/schema.js
CHANGED
|
@@ -19,7 +19,9 @@ export const ORACLES = ["command", "test", "judge"];
|
|
|
19
19
|
export const AcceptanceItemSchema = z.union([
|
|
20
20
|
z.string().min(1),
|
|
21
21
|
z.object({ oracle: z.literal("command"), command: z.string().min(1), text: z.string().min(1).optional() }),
|
|
22
|
-
|
|
22
|
+
// v2.5.8 T8 (OBS-1064): landing = the collectable suite path a test criterion lands in, declared
|
|
23
|
+
// beside the verbatim title (never inside it). Optional; compile enforces the collectable glob.
|
|
24
|
+
z.object({ oracle: z.literal("test"), test: z.string().min(1), text: z.string().min(1).optional(), landing: z.string().min(1).optional() }),
|
|
23
25
|
z.object({ oracle: z.literal("judge"), text: z.string().min(1) }),
|
|
24
26
|
]);
|
|
25
27
|
// Shared text rendering of one acceptance item — every consumer (worker prompt, acceptance gate,
|
|
@@ -33,6 +35,15 @@ export function renderAcceptanceItem(item) {
|
|
|
33
35
|
return item.text ?? `test: ${item.test}`;
|
|
34
36
|
return item.text; // judge — bare text, byte-identical to a plain-string judge criterion
|
|
35
37
|
}
|
|
38
|
+
// v2.5.8 T7 (agreement C2): declared pin obligations — a LIMITED AUTHORING CONTRACT, not an assertion
|
|
39
|
+
// analyzer. literal = an exact text plus the glob it is pinned in (every matching file holding the text
|
|
40
|
+
// is obligated); fixture = a path set whose every matching file is itself obligated (byte-pinned output
|
|
41
|
+
// the change will move) and which carries no literal text. Declared here because z.object strips
|
|
42
|
+
// undeclared keys on every load.
|
|
43
|
+
export const PinSchema = z.discriminatedUnion("kind", [
|
|
44
|
+
z.object({ kind: z.literal("literal"), text: z.string().min(1), glob: z.string().min(1) }),
|
|
45
|
+
z.object({ kind: z.literal("fixture"), paths: z.array(z.string().min(1)).min(1) }),
|
|
46
|
+
]);
|
|
36
47
|
export const TaskSchema = z.object({
|
|
37
48
|
// ids land in git branch names and herdr pane names — branch-safe characters only, bounded
|
|
38
49
|
// length (refs hit filesystem limits), and never "--" (the task-branch separator, locked
|
|
@@ -59,6 +70,7 @@ export const TaskSchema = z.object({
|
|
|
59
70
|
reason: z.string().optional(),
|
|
60
71
|
}))
|
|
61
72
|
.optional(),
|
|
73
|
+
pins: z.array(PinSchema).optional(),
|
|
62
74
|
gates: z
|
|
63
75
|
.array(z.enum(GATE_NAMES))
|
|
64
76
|
.default(["build", "test", "lint", "evidence", "scope", "acceptance", "review"])
|
package/dist/run/daemon.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ import { type DriverChoice } from "../drivers/index.js";
|
|
|
4
4
|
import { type ExecutorDriver, type Slot } from "../drivers/types.js";
|
|
5
5
|
import { type Baseline } from "../gates/baseline.js";
|
|
6
6
|
import type { GateResult } from "../gates/types.js";
|
|
7
|
+
import { type RunGraph } from "../graph/schema.js";
|
|
7
8
|
import { Journal, type JournalEvent } from "./journal.js";
|
|
8
9
|
export declare function closeLiveSlot(liveSlots: Set<Slot>, driver: Pick<ExecutorDriver, "close">, slot: Slot): Promise<void>;
|
|
9
10
|
/** Optional authoritative transport receipt. Screen text can prove execution, never nonacceptance. */
|
|
@@ -58,6 +59,8 @@ export interface RunSummary {
|
|
|
58
59
|
pending: string[];
|
|
59
60
|
blocked: string[];
|
|
60
61
|
tipVerify?: "passed" | "failed";
|
|
62
|
+
/** additive beside the legacy tipVerify enum: HOW the close's latest verification cycle earned its verdict */
|
|
63
|
+
tipProof?: TipProof;
|
|
61
64
|
lastMergedTask?: string;
|
|
62
65
|
/** T14: did every approval this run accepted actually get enacted, or did the run end over one? */
|
|
63
66
|
approvalDisposition?: "complete" | "outstanding";
|
|
@@ -165,6 +168,21 @@ export declare function resetHarvestSilentMsForTests(): void;
|
|
|
165
168
|
export declare const HARVESTED_RESULT_SUMMARY = "harvested: the worktree carries committed work; the worker emitted no TICKMARKR_RESULT trailer";
|
|
166
169
|
/** T4 (OBS-266): identity of the command SET a tip verify ran — a changed command is a different verify. */
|
|
167
170
|
export declare function commandsHash(commands: Record<string, string>): string;
|
|
171
|
+
export interface TipProof {
|
|
172
|
+
kind: "fresh" | "reused" | "failed" | "incomplete";
|
|
173
|
+
/** the commit the cycle's start row spoke for */
|
|
174
|
+
tip?: string;
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* OBS-1077 close rider: what the engagement's LATEST verification cycle proved — its
|
|
178
|
+
* `tip-verify-start` row and what followed, never a commit comparison. Exactly one kind per close:
|
|
179
|
+
* fresh (every tip command ran AND passed), reused (an eligible cached cycle carried forward),
|
|
180
|
+
* failed, or incomplete (cancelled, cut short, mixed or undelimited). Nothing before the start row
|
|
181
|
+
* is read, so an unfinished cycle inherits nothing from an earlier green one.
|
|
182
|
+
*/
|
|
183
|
+
export declare function runEndTipProof(events: readonly JournalEvent[]): TipProof;
|
|
184
|
+
/** The close notification's statement of the proof — one clause per kind. */
|
|
185
|
+
export declare function formatTipProof(p: TipProof): string;
|
|
168
186
|
/**
|
|
169
187
|
* OBS-34's strict tip verify, but it stops re-paying for an unmoved tip (~334m corpus-wide; 69.5m in
|
|
170
188
|
* one park-heavy run whose 18 resume cycles merged nothing new). The verify journals the SHA it
|
|
@@ -194,4 +212,5 @@ export declare function liveSuiteCount(repoRoot: string): Promise<number>;
|
|
|
194
212
|
/** Test seam — exercise the production observer's total read bound with a small real tree. */
|
|
195
213
|
export declare function setObserveBudgetBytesForTests(bytes: number): void;
|
|
196
214
|
export declare function resetObserveBudgetBytesForTests(): void;
|
|
215
|
+
export declare function recordFatalRunEnd(journal: Journal, runId: string, branch: string, err: unknown, graph?: RunGraph, phase?: string): TipProof | undefined;
|
|
197
216
|
export declare function runDaemon(repoRoot: string, opts?: RunOptions): Promise<RunSummary>;
|