tickmarkr 2.6.2 → 2.6.3
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 +2 -0
- package/dist/cli/commands/approve.d.ts +6 -3
- package/dist/cli/commands/approve.js +16 -4
- package/dist/cli/commands/doctor.d.ts +6 -2
- package/dist/cli/commands/fleet.js +46 -8
- package/dist/cli/commands/plan.js +13 -8
- package/dist/cli/commands/report.d.ts +2 -1
- package/dist/cli/commands/report.js +56 -6
- package/dist/cli/commands/status.js +19 -1
- package/dist/compile/native.js +7 -0
- package/dist/config/config.d.ts +17 -4
- package/dist/config/config.js +43 -6
- package/dist/config/fleet-overlay.d.ts +13 -3
- package/dist/config/fleet-overlay.js +12 -8
- package/dist/drivers/herdr.d.ts +12 -0
- package/dist/drivers/herdr.js +51 -0
- package/dist/drivers/orca.d.ts +9 -1
- package/dist/drivers/orca.js +29 -7
- package/dist/drivers/types.d.ts +2 -0
- package/dist/drivers/types.js +2 -2
- package/dist/gates/acceptance.d.ts +7 -0
- package/dist/gates/acceptance.js +27 -5
- package/dist/gates/baseline.d.ts +20 -1
- package/dist/gates/baseline.js +100 -20
- package/dist/gates/cache.d.ts +8 -0
- package/dist/gates/cache.js +12 -2
- package/dist/gates/llm.d.ts +6 -0
- package/dist/gates/llm.js +27 -8
- package/dist/gates/review.d.ts +6 -1
- package/dist/gates/review.js +122 -32
- package/dist/gates/run-gates.d.ts +54 -3
- package/dist/gates/run-gates.js +331 -45
- package/dist/gates/test-manifest.d.ts +42 -0
- package/dist/gates/test-manifest.js +69 -10
- package/dist/route/router.d.ts +12 -1
- package/dist/route/router.js +26 -9
- package/dist/run/consult.d.ts +3 -1
- package/dist/run/consult.js +4 -2
- package/dist/run/daemon.d.ts +2 -1
- package/dist/run/daemon.js +342 -77
- package/dist/run/interactive-seed.d.ts +4 -0
- package/dist/run/interactive-seed.js +35 -9
- package/dist/run/journal.d.ts +26 -0
- package/dist/run/journal.js +143 -15
- package/dist/run/lease.d.ts +13 -0
- package/dist/run/lease.js +45 -0
- package/dist/run/protocol.d.ts +15 -0
- package/dist/run/protocol.js +11 -1
- package/dist/run/receipt-resolver.d.ts +22 -0
- package/dist/run/receipt-resolver.js +40 -1
- package/dist/run/repair-selection.d.ts +11 -1
- package/dist/run/repair-selection.js +17 -9
- package/dist/run/wall-budget.d.ts +48 -0
- package/dist/run/wall-budget.js +280 -0
- package/dist/tui/cockpit/run-cockpit.js +2 -2
- package/dist/tui/cockpit/run-view.d.ts +2 -1
- package/dist/tui/cockpit/run-view.js +13 -9
- package/dist/tui/cockpit/setup-cockpit.d.ts +2 -0
- package/dist/tui/cockpit/setup-cockpit.js +4 -0
- package/package.json +2 -1
- package/schema/config.schema.json +8 -1
- package/skills/tickmarkr-loop/SKILL.md +7 -1
- package/skills/tickmarkr-overseer/scripts/classify-vitest-log.sh +4 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { CommandReceiptAttribution } from "../run/protocol.js";
|
|
2
|
-
import { type Assignment, type BillingChannel, type WorkerAdapter, type WorkerResult } from "../adapters/types.js";
|
|
2
|
+
import { type Assignment, type AuthHealth, type BillingChannel, type WorkerAdapter, type WorkerResult } from "../adapters/types.js";
|
|
3
3
|
import { type TickmarkrConfig } from "../config/config.js";
|
|
4
4
|
import { type GateName, type Task } from "../graph/schema.js";
|
|
5
5
|
import { type Baseline, type GateEvidenceOptions } from "./baseline.js";
|
|
@@ -60,18 +60,23 @@ export interface GateContext {
|
|
|
60
60
|
baseline: Baseline;
|
|
61
61
|
channels: BillingChannel[];
|
|
62
62
|
judgeChannels?: BillingChannel[];
|
|
63
|
+
/** OBS-1186: doctor's cached verdict — the observed identity of the configured judge seat. Absent ⇒ unknown (conservative deny). */
|
|
64
|
+
health?: Record<string, AuthHealth> | null;
|
|
63
65
|
adapters: WorkerAdapter[];
|
|
64
66
|
cfg: TickmarkrConfig;
|
|
65
67
|
via?: GateVia;
|
|
66
68
|
carriedFindings?: readonly StructuredFinding[];
|
|
67
69
|
/** Approval reason bound to this attempt; guidance, never criterion or closure authority. */
|
|
68
70
|
operatorContext?: string;
|
|
71
|
+
/** OBS-1151: this task's earlier parsed judgments, newest first (the journal's, so they survive resume). */
|
|
72
|
+
priorJudgments?: readonly PriorJudgment[];
|
|
69
73
|
excludeReviewers?: string[];
|
|
70
74
|
demotedReviewers?: Set<string>;
|
|
71
75
|
reviewNoVerdicts?: Map<string, string[]>;
|
|
72
76
|
recheck?: boolean;
|
|
73
|
-
/** Explicit worker funding requires fresh red measurements, never a gate waiver.
|
|
74
|
-
|
|
77
|
+
/** Explicit worker funding requires fresh red measurements, never a gate waiver. OBS-1106: so does
|
|
78
|
+
* a retry that landed nothing on a timeout-class red — its one fresh re-observation. */
|
|
79
|
+
cachedRedBypass?: "operator-rerun" | "timeout-fresh";
|
|
75
80
|
carriedAuthors?: readonly string[];
|
|
76
81
|
/** The attempt whose worker last wrote the gated checkout; a dirty-tree refusal stamps it on the
|
|
77
82
|
* preserve commit and its row. Absent (standalone verify, gate-only restores) preserves as "unknown". */
|
|
@@ -92,6 +97,52 @@ export interface GateContext {
|
|
|
92
97
|
* a command that already has `--` takes them directly. Every path is quoted — config flows into a shell.
|
|
93
98
|
*/
|
|
94
99
|
export declare function testCommandForFiles(testCmd: string, files: string[]): string;
|
|
100
|
+
/** OBS-635: a screen costing at least this share of the full suite runs the full suite instead. */
|
|
101
|
+
export declare const SCREEN_PROMOTION_RATIO = 0.75;
|
|
102
|
+
/**
|
|
103
|
+
* The screen's share of the full suite's cost, from the per-file durations the harness measured at
|
|
104
|
+
* baseline capture — never a worker's timing. Undefined (unknown) unless every selected file has a
|
|
105
|
+
* measured duration and the measured total is positive; unknown keeps the conservative screen path.
|
|
106
|
+
*/
|
|
107
|
+
export declare function screenCostRatio(baseline: Baseline, selected: readonly string[]): number | undefined;
|
|
108
|
+
/** A retry base no runner invocation parses. evaluateManifestedTest builds its stranded single-fork
|
|
109
|
+
* retry from the base it is handed, and one it cannot parse throws before any spawn — so this base
|
|
110
|
+
* disables that inner recovery: a worker-RPC-stranded re-observation comes back infra (the caller
|
|
111
|
+
* parks it as ambiguous) instead of launching a second execution. */
|
|
112
|
+
export declare const REOBSERVATION_RETRY_BASE = "tickmarkr-reobservation-refuses-stranded-retry";
|
|
113
|
+
/** OBS-1106 residual: ONE isolated re-observation of a timeout-shaped red's attributed failing files on
|
|
114
|
+
* the same checkout, narrowed exactly as a screen is. Never cached and never a verdict: the caller
|
|
115
|
+
* keeps the original red and reads this only to decide whether that red is chargeable. Exactly one
|
|
116
|
+
* execution — the bounded infra/host-starved retries and the stranded single-fork recovery are all
|
|
117
|
+
* refused, so a diagnostic never buys more. */
|
|
118
|
+
export declare function reobserveTestFiles(worktree: string, testCmd: string, baseline: Baseline, files: string[], artifactDir?: string): Promise<GateResult>;
|
|
119
|
+
/** OBS-1151: one parsed judgment as the journal keeps it — the judged commit, the seat, and per criterion
|
|
120
|
+
* its subject key, ruling and cited paths. Never a verdict to reuse: only a subject to compare against. */
|
|
121
|
+
export interface PriorJudgment {
|
|
122
|
+
commit: string;
|
|
123
|
+
judge?: string;
|
|
124
|
+
criteria: ReadonlyArray<{
|
|
125
|
+
id: string;
|
|
126
|
+
key: string;
|
|
127
|
+
met: boolean;
|
|
128
|
+
paths: readonly string[];
|
|
129
|
+
}>;
|
|
130
|
+
}
|
|
131
|
+
/** OBS-1151: a criterion's comparable subject — its canonical text, the task's declared bounds and the
|
|
132
|
+
* operator context. The cited files' blobs are compared separately, over the union of both citations. */
|
|
133
|
+
export declare function judgmentSubjectKey(task: Pick<Task, "files" | "outOfScope">, criterion: string, operatorContext?: string): string;
|
|
134
|
+
export interface JudgeContradiction {
|
|
135
|
+
id: string;
|
|
136
|
+
met: boolean;
|
|
137
|
+
priorMet: boolean;
|
|
138
|
+
priorCommit: string;
|
|
139
|
+
paths: string[];
|
|
140
|
+
}
|
|
141
|
+
/** OBS-1151: the criteria whose fresh ruling reverses the newest prior ruling on the same subject key whose
|
|
142
|
+
* cited paths hold the identical blob at both commits (older comparable priors are still found behind a
|
|
143
|
+
* newer prior on different blobs). A citation-less side or an
|
|
144
|
+
* unreadable blob is unknown, never identical — that criterion's fresh ruling is simply fresh. */
|
|
145
|
+
export declare function judgeContradictions(worktree: string, head: string, fresh: PriorJudgment["criteria"], priors: readonly PriorJudgment[]): Promise<JudgeContradiction[]>;
|
|
95
146
|
export declare function runGates(task: Task, ctx: GateContext): Promise<{
|
|
96
147
|
results: GateResult[];
|
|
97
148
|
commits: string[];
|