@miller-tech/uap 2.16.7 → 2.20.0
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/config/capacity-policy.json +33 -0
- package/config/model-profiles/qwen38.json +32 -33
- package/dist/.tsbuildinfo +1 -1
- package/dist/bin/cli.js +57 -0
- package/dist/bin/cli.js.map +1 -1
- package/dist/capacity/policy.d.ts +32 -1
- package/dist/capacity/policy.d.ts.map +1 -1
- package/dist/capacity/policy.js +123 -4
- package/dist/capacity/policy.js.map +1 -1
- package/dist/capacity/probe.d.ts +26 -0
- package/dist/capacity/probe.d.ts.map +1 -1
- package/dist/capacity/probe.js +84 -3
- package/dist/capacity/probe.js.map +1 -1
- package/dist/cli/inference.d.ts +4 -0
- package/dist/cli/inference.d.ts.map +1 -1
- package/dist/cli/inference.js +74 -8
- package/dist/cli/inference.js.map +1 -1
- package/dist/cli/merge-gate.d.ts +59 -0
- package/dist/cli/merge-gate.d.ts.map +1 -0
- package/dist/cli/merge-gate.js +238 -0
- package/dist/cli/merge-gate.js.map +1 -0
- package/dist/cli/merge-queue.d.ts +13 -0
- package/dist/cli/merge-queue.d.ts.map +1 -1
- package/dist/cli/merge-queue.js +48 -2
- package/dist/cli/merge-queue.js.map +1 -1
- package/dist/cli/mission.d.ts +25 -0
- package/dist/cli/mission.d.ts.map +1 -0
- package/dist/cli/mission.js +225 -0
- package/dist/cli/mission.js.map +1 -0
- package/dist/cli/orch.d.ts +27 -0
- package/dist/cli/orch.d.ts.map +1 -0
- package/dist/cli/orch.js +70 -0
- package/dist/cli/orch.js.map +1 -0
- package/dist/cli/systemd-services.d.ts.map +1 -1
- package/dist/cli/systemd-services.js +44 -0
- package/dist/cli/systemd-services.js.map +1 -1
- package/dist/delivery/merge-gate.d.ts +168 -0
- package/dist/delivery/merge-gate.d.ts.map +1 -0
- package/dist/delivery/merge-gate.js +309 -0
- package/dist/delivery/merge-gate.js.map +1 -0
- package/dist/inference/analysis.d.ts +69 -3
- package/dist/inference/analysis.d.ts.map +1 -1
- package/dist/inference/analysis.js +123 -7
- package/dist/inference/analysis.js.map +1 -1
- package/dist/inference/probe.d.ts +38 -1
- package/dist/inference/probe.d.ts.map +1 -1
- package/dist/inference/probe.js +303 -30
- package/dist/inference/probe.js.map +1 -1
- package/dist/inference/strata.d.ts +95 -0
- package/dist/inference/strata.d.ts.map +1 -0
- package/dist/inference/strata.js +167 -0
- package/dist/inference/strata.js.map +1 -0
- package/dist/mission/database.d.ts +29 -0
- package/dist/mission/database.d.ts.map +1 -0
- package/dist/mission/database.js +131 -0
- package/dist/mission/database.js.map +1 -0
- package/dist/mission/ledger.d.ts +109 -0
- package/dist/mission/ledger.d.ts.map +1 -0
- package/dist/mission/ledger.js +294 -0
- package/dist/mission/ledger.js.map +1 -0
- package/dist/mission/poll-cycle.d.ts +73 -0
- package/dist/mission/poll-cycle.d.ts.map +1 -0
- package/dist/mission/poll-cycle.js +100 -0
- package/dist/mission/poll-cycle.js.map +1 -0
- package/dist/mission/poll-executor.d.ts +91 -0
- package/dist/mission/poll-executor.d.ts.map +1 -0
- package/dist/mission/poll-executor.js +328 -0
- package/dist/mission/poll-executor.js.map +1 -0
- package/dist/models/types.d.ts.map +1 -1
- package/dist/models/types.js +33 -27
- package/dist/models/types.js.map +1 -1
- package/dist/self-tuning/profiles/qwen38.d.ts +13 -14
- package/dist/self-tuning/profiles/qwen38.d.ts.map +1 -1
- package/dist/self-tuning/profiles/qwen38.js +17 -18
- package/dist/self-tuning/profiles/qwen38.js.map +1 -1
- package/dist/types/mission.d.ts +80 -0
- package/dist/types/mission.d.ts.map +1 -0
- package/dist/types/mission.js +12 -0
- package/dist/types/mission.js.map +1 -0
- package/docs/architecture/adr/0003-mission-orchestrator.md +99 -0
- package/docs/architecture/adr/0004-deterministic-merge-gate.md +127 -0
- package/docs/architecture/adr/0005-ollama-compatible-surface.md +74 -0
- package/docs/guides/CAPACITY_POLICY.md +49 -0
- package/docs/guides/INFERENCE_HEALTH.md +65 -8
- package/docs/guides/MISSIONS.md +170 -0
- package/docs/guides/PROXY.md +50 -0
- package/docs/reports/2026-10-02-plane-admin-fail-closed.md +70 -0
- package/docs/reports/2026-10-02-plane-admin-protect-session.md +116 -0
- package/docs/visual/merge-gate.html +404 -0
- package/docs/visual/mission-orchestrator.html +472 -0
- package/package.json +2 -2
- package/src/policies/enforcers/__pycache__/_common.cpython-312.pyc +0 -0
- package/src/policies/enforcers/__pycache__/expert_review_required.cpython-312.pyc +0 -0
- package/src/policies/enforcers/__pycache__/quality_metrics_gate.cpython-312.pyc +0 -0
- package/src/policies/enforcers/plane_admin_protect.py +133 -0
- package/src/policies/schemas/policies/plane-admin-protect.md +55 -0
- package/templates/hooks/__pycache__/deliver_autoroute.cpython-312.pyc +0 -0
- package/templates/hooks/uap-policy-gate.sh +33 -0
- package/tools/agents/scripts/__pycache__/toolcall_path_normalizer.cpython-312.pyc +0 -0
- package/tools/agents/scripts/anthropic_proxy.py +1271 -89
- package/tools/agents/scripts/requirements-proxy.txt +1 -1
- package/tools/agents/tests/test_anthropic_proxy_streaming.py +171 -0
- package/tools/agents/tests/test_gate_failclosed_plane_admin.py +248 -0
- package/tools/agents/tests/test_ollama_compat.py +320 -0
- package/tools/agents/tests/test_plane_admin_protect.py +124 -0
- package/tools/agents/tests/test_stream_heartbeat.py +77 -0
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `uap mission` — the operator surface for the mission ledger.
|
|
3
|
+
*
|
|
4
|
+
* uap mission create "<goal>" --acceptance "<criteria>" [--launch] [--preset <id>]
|
|
5
|
+
* uap mission list [--status active|paused|delivered|failed]
|
|
6
|
+
* uap mission show <id>
|
|
7
|
+
* uap mission pause <id> | resume <id>
|
|
8
|
+
* uap mission replan <id> --acceptance "<new>" --reason "<why>"
|
|
9
|
+
* uap mission salvage [list|approve <id>|reject <id>]
|
|
10
|
+
* uap mission poll [--loop] [--interval N] — the orchestrator loop clock
|
|
11
|
+
*
|
|
12
|
+
* Missions are durable goals with FROZEN acceptance criteria; the poll loop
|
|
13
|
+
* drives them to completion. `--launch` starts the first deliver run
|
|
14
|
+
* immediately instead of waiting for the next poll.
|
|
15
|
+
*/
|
|
16
|
+
import chalk from 'chalk';
|
|
17
|
+
import { createMission, decideSalvage, getMission, listAcceptanceRevisions, listAttempts, listMissions, listSalvage, openMissionDb, replanAcceptance, setMissionStatus, } from '../mission/ledger.js';
|
|
18
|
+
import { runPollCycle } from '../mission/poll-executor.js';
|
|
19
|
+
import { orchPollCommand } from './orch.js';
|
|
20
|
+
const VALID_STATUSES = ['active', 'paused', 'delivered', 'failed'];
|
|
21
|
+
function dbFor(options) {
|
|
22
|
+
return openMissionDb(options.projectRoot ?? process.cwd());
|
|
23
|
+
}
|
|
24
|
+
function parseId(text) {
|
|
25
|
+
const n = parseInt(text, 10);
|
|
26
|
+
return Number.isFinite(n) && n > 0 ? n : null;
|
|
27
|
+
}
|
|
28
|
+
function friendlyMission(db, id) {
|
|
29
|
+
try {
|
|
30
|
+
return getMission(db, id);
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
const statusColor = {
|
|
37
|
+
active: chalk.green,
|
|
38
|
+
paused: chalk.yellow,
|
|
39
|
+
delivered: chalk.cyan,
|
|
40
|
+
failed: chalk.red,
|
|
41
|
+
};
|
|
42
|
+
async function createCmd(goal, options) {
|
|
43
|
+
const acceptance = (options.acceptance ?? '').trim();
|
|
44
|
+
if (!goal.trim() || !acceptance) {
|
|
45
|
+
console.log(chalk.yellow(' Usage: uap mission create "<goal>" --acceptance "<criteria>" [--preset <id>] [--launch]'));
|
|
46
|
+
process.exitCode = 1;
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
const projectRoot = options.projectRoot ?? process.cwd();
|
|
50
|
+
const db = dbFor(options);
|
|
51
|
+
const mission = createMission(db, {
|
|
52
|
+
goal: goal.trim(),
|
|
53
|
+
acceptance,
|
|
54
|
+
...(options.preset ? { presetId: options.preset } : {}),
|
|
55
|
+
});
|
|
56
|
+
console.log(chalk.green(` ✓ mission #${mission.id} created (acceptance frozen ${mission.acceptanceHash.slice(0, 12)}…)`));
|
|
57
|
+
if (options.launch) {
|
|
58
|
+
const reports = await runPollCycle(projectRoot, undefined, undefined, { missionIds: [mission.id] });
|
|
59
|
+
const mine = reports.find((r) => r.missionId === mission.id);
|
|
60
|
+
for (const note of mine?.notes ?? [])
|
|
61
|
+
console.log(chalk.dim(` ${note}`));
|
|
62
|
+
if (!mine) {
|
|
63
|
+
console.log(chalk.yellow(' (the daemon will launch it on the next poll cycle)'));
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
console.log(chalk.dim(' the orchestrator daemon launches it on the next poll (uap mission poll)'));
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
function listCmd(options) {
|
|
71
|
+
const db = dbFor(options);
|
|
72
|
+
const status = options.status && VALID_STATUSES.includes(options.status)
|
|
73
|
+
? options.status
|
|
74
|
+
: undefined;
|
|
75
|
+
const missions = listMissions(db, { status });
|
|
76
|
+
if (options.json) {
|
|
77
|
+
console.log(JSON.stringify(missions, null, 2));
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
if (missions.length === 0) {
|
|
81
|
+
console.log(chalk.dim(' No missions. Create one: uap mission create "<goal>" --acceptance "<criteria>"'));
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
console.log(chalk.bold('\n Missions\n'));
|
|
85
|
+
for (const m of missions) {
|
|
86
|
+
console.log(` #${m.id} ${statusColor[m.status](m.status)} ${chalk.dim(`run ${m.latestRunId ?? '—'} · launches ${m.launchCount} (${m.relaunchCount} resumes)`)}`);
|
|
87
|
+
console.log(` ${m.goal.slice(0, 110)}`);
|
|
88
|
+
}
|
|
89
|
+
console.log('');
|
|
90
|
+
}
|
|
91
|
+
function showCmd(idText, options) {
|
|
92
|
+
const id = parseId(idText);
|
|
93
|
+
const db = dbFor(options);
|
|
94
|
+
if (id === null) {
|
|
95
|
+
console.log(chalk.yellow(' Usage: uap mission show <id>'));
|
|
96
|
+
process.exitCode = 1;
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
const mission = friendlyMission(db, id);
|
|
100
|
+
if (!mission) {
|
|
101
|
+
console.log(chalk.yellow(` mission #${id} not found`));
|
|
102
|
+
process.exitCode = 1;
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
const attempts = listAttempts(db, id);
|
|
106
|
+
const salvage = listSalvage(db, { missionId: id });
|
|
107
|
+
const revisions = listAcceptanceRevisions(db, id);
|
|
108
|
+
if (options.json) {
|
|
109
|
+
console.log(JSON.stringify({ mission, attempts, salvage, revisions }, null, 2));
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
console.log(chalk.bold(`\n Mission #${mission.id} — ${statusColor[mission.status](mission.status)}\n`));
|
|
113
|
+
console.log(` ${chalk.bold('Goal')} ${mission.goal}`);
|
|
114
|
+
console.log(` ${chalk.bold('Acceptance')} ${mission.acceptance}`);
|
|
115
|
+
console.log(chalk.dim(` frozen ${mission.acceptanceHash.slice(0, 16)}… · created ${mission.createdAt.slice(0, 16)}`));
|
|
116
|
+
console.log(` ${chalk.bold('Run')} ${mission.latestRunId ?? '—'}`);
|
|
117
|
+
console.log(` ${chalk.bold('Launches')} ${mission.launchCount} (${mission.relaunchCount} resumes)`);
|
|
118
|
+
if (revisions.length > 0) {
|
|
119
|
+
console.log(` ${chalk.bold('Replans')} ${revisions.length} (prior hashes recorded)`);
|
|
120
|
+
}
|
|
121
|
+
if (attempts.length > 0) {
|
|
122
|
+
console.log(`\n ${chalk.bold('Attempts')}`);
|
|
123
|
+
for (const a of attempts) {
|
|
124
|
+
console.log(` ${a.outcome.padEnd(11)} ${chalk.dim(a.createdAt.slice(5, 16))} ${a.runId ?? ''} ${a.summary ?? ''}`.trimEnd());
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
if (salvage.length > 0) {
|
|
128
|
+
console.log(`\n ${chalk.bold('Salvage')}`);
|
|
129
|
+
for (const s of salvage) {
|
|
130
|
+
console.log(` #${s.id} ${s.status} ${chalk.dim(s.createdAt.slice(5, 16))}`);
|
|
131
|
+
console.log(chalk.dim(` ${s.proposal.slice(0, 120)}`));
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
console.log('');
|
|
135
|
+
}
|
|
136
|
+
function pauseResumeCmd(idText, status, options) {
|
|
137
|
+
const id = parseId(idText);
|
|
138
|
+
if (id === null) {
|
|
139
|
+
console.log(chalk.yellow(' Usage: uap mission pause <id> | uap mission resume <id>'));
|
|
140
|
+
process.exitCode = 1;
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
const db = dbFor(options);
|
|
144
|
+
const ok = setMissionStatus(db, id, status);
|
|
145
|
+
console.log(ok
|
|
146
|
+
? chalk.green(` ✓ mission #${id} ${status === 'paused' ? 'paused (the daemon will not touch it)' : 'resumed'}`)
|
|
147
|
+
: chalk.yellow(` mission #${id} not found`));
|
|
148
|
+
if (!ok)
|
|
149
|
+
process.exitCode = 1;
|
|
150
|
+
}
|
|
151
|
+
function replanCmd(idText, options) {
|
|
152
|
+
const id = parseId(idText);
|
|
153
|
+
const acceptance = (options.acceptance ?? '').trim();
|
|
154
|
+
const reason = (options.reason ?? '').trim();
|
|
155
|
+
if (id === null || !acceptance || !reason) {
|
|
156
|
+
console.log(chalk.yellow(' Usage: uap mission replan <id> --acceptance "<new>" --reason "<why>"'));
|
|
157
|
+
process.exitCode = 1;
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
const db = dbFor(options);
|
|
161
|
+
const mission = replanAcceptance(db, id, acceptance, reason);
|
|
162
|
+
console.log(chalk.green(` ✓ mission #${id} replanned (acceptance frozen ${mission.acceptanceHash.slice(0, 12)}…; prior recorded, run link reset)`));
|
|
163
|
+
}
|
|
164
|
+
function salvageCmd(text, options) {
|
|
165
|
+
const db = dbFor(options);
|
|
166
|
+
const sub = text.trim();
|
|
167
|
+
if (sub === '' || sub === 'list') {
|
|
168
|
+
const items = listSalvage(db, {
|
|
169
|
+
...(options.status ? { status: options.status } : {}),
|
|
170
|
+
});
|
|
171
|
+
if (items.length === 0) {
|
|
172
|
+
console.log(chalk.dim(' No salvage proposals.'));
|
|
173
|
+
return;
|
|
174
|
+
}
|
|
175
|
+
console.log(chalk.bold('\n Salvage proposals (approval-gated)\n'));
|
|
176
|
+
for (const s of items) {
|
|
177
|
+
const st = s.status === 'proposed' ? chalk.cyan('proposed') : s.status === 'approved' ? chalk.green('approved') : chalk.gray('rejected');
|
|
178
|
+
console.log(` #${s.id} ${st} ${chalk.dim(`mission #${s.missionId} · ${s.createdAt.slice(5, 16)}`)}`);
|
|
179
|
+
console.log(` ${s.proposal.slice(0, 130)}`);
|
|
180
|
+
}
|
|
181
|
+
console.log('');
|
|
182
|
+
return;
|
|
183
|
+
}
|
|
184
|
+
const verb = sub.split(/\s+/)[0];
|
|
185
|
+
const id = parseId(sub.split(/\s+/)[1] ?? '');
|
|
186
|
+
if ((verb !== 'approve' && verb !== 'reject') || id === null) {
|
|
187
|
+
console.log(chalk.yellow(' Usage: uap mission salvage list | approve <id> | reject <id>'));
|
|
188
|
+
process.exitCode = 1;
|
|
189
|
+
return;
|
|
190
|
+
}
|
|
191
|
+
const decided = decideSalvage(db, id, verb === 'approve' ? 'approved' : 'rejected');
|
|
192
|
+
console.log(chalk.green(` ✓ salvage #${id} ${decided.status}`));
|
|
193
|
+
}
|
|
194
|
+
export async function missionCommand(sub, text, options = {}) {
|
|
195
|
+
switch (sub) {
|
|
196
|
+
case 'create':
|
|
197
|
+
await createCmd(text, options);
|
|
198
|
+
break;
|
|
199
|
+
case 'list':
|
|
200
|
+
listCmd(options);
|
|
201
|
+
break;
|
|
202
|
+
case 'show':
|
|
203
|
+
showCmd(text, options);
|
|
204
|
+
break;
|
|
205
|
+
case 'pause':
|
|
206
|
+
pauseResumeCmd(text, 'paused', options);
|
|
207
|
+
break;
|
|
208
|
+
case 'resume':
|
|
209
|
+
pauseResumeCmd(text, 'active', options);
|
|
210
|
+
break;
|
|
211
|
+
case 'replan':
|
|
212
|
+
replanCmd(text, options);
|
|
213
|
+
break;
|
|
214
|
+
case 'salvage':
|
|
215
|
+
salvageCmd(text, options);
|
|
216
|
+
break;
|
|
217
|
+
case 'poll':
|
|
218
|
+
await orchPollCommand(options);
|
|
219
|
+
break;
|
|
220
|
+
default:
|
|
221
|
+
console.log(chalk.yellow(' Usage: uap mission create|list|show|pause|resume|replan|salvage|poll …'));
|
|
222
|
+
process.exitCode = 1;
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
//# sourceMappingURL=mission.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mission.js","sourceRoot":"","sources":["../../src/cli/mission.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `uap mission poll` — the orchestrator's loop clock (Choir's `orch poll`).
|
|
3
|
+
* (Also registered as the hidden alias `uap orch poll` — NOT the same as
|
|
4
|
+
* `uap orchestrator on|off`, which toggles the in-deliver blackboard
|
|
5
|
+
* orchestrator.)
|
|
6
|
+
*
|
|
7
|
+
* uap mission poll one poll cycle over active missions, then exit
|
|
8
|
+
* uap mission poll --loop keep polling (daemon mode; systemd runs this)
|
|
9
|
+
* uap mission poll --interval N seconds between cycles (default 300)
|
|
10
|
+
* uap mission poll --json machine-readable per-mission reports
|
|
11
|
+
*
|
|
12
|
+
* One cycle: discover runs → sync attempt ledger → decide (poll-cycle.ts) →
|
|
13
|
+
* act (supervise / launch / relaunch with backoff / close / salvage-propose).
|
|
14
|
+
* The cycle NEVER throws: a mission in a bad state produces a report note,
|
|
15
|
+
* not a dead daemon.
|
|
16
|
+
*/
|
|
17
|
+
export interface OrchOptions {
|
|
18
|
+
loop?: boolean;
|
|
19
|
+
interval?: string;
|
|
20
|
+
json?: boolean;
|
|
21
|
+
projectRoot?: string;
|
|
22
|
+
}
|
|
23
|
+
export declare const DEFAULT_POLL_INTERVAL_SECS = 300;
|
|
24
|
+
/** Clamp the --interval flag: finite and ≥ 10 s, else the default. PURE. */
|
|
25
|
+
export declare function clampPollIntervalSecs(raw: string | undefined): number;
|
|
26
|
+
export declare function orchPollCommand(options?: OrchOptions): Promise<void>;
|
|
27
|
+
//# sourceMappingURL=orch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orch.d.ts","sourceRoot":"","sources":["../../src/cli/orch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAMH,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,0BAA0B,MAAM,CAAC;AAE9C,4EAA4E;AAC5E,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAGrE;AASD,wBAAsB,eAAe,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAwC9E"}
|
package/dist/cli/orch.js
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `uap mission poll` — the orchestrator's loop clock (Choir's `orch poll`).
|
|
3
|
+
* (Also registered as the hidden alias `uap orch poll` — NOT the same as
|
|
4
|
+
* `uap orchestrator on|off`, which toggles the in-deliver blackboard
|
|
5
|
+
* orchestrator.)
|
|
6
|
+
*
|
|
7
|
+
* uap mission poll one poll cycle over active missions, then exit
|
|
8
|
+
* uap mission poll --loop keep polling (daemon mode; systemd runs this)
|
|
9
|
+
* uap mission poll --interval N seconds between cycles (default 300)
|
|
10
|
+
* uap mission poll --json machine-readable per-mission reports
|
|
11
|
+
*
|
|
12
|
+
* One cycle: discover runs → sync attempt ledger → decide (poll-cycle.ts) →
|
|
13
|
+
* act (supervise / launch / relaunch with backoff / close / salvage-propose).
|
|
14
|
+
* The cycle NEVER throws: a mission in a bad state produces a report note,
|
|
15
|
+
* not a dead daemon.
|
|
16
|
+
*/
|
|
17
|
+
import chalk from 'chalk';
|
|
18
|
+
import { runPollCycle } from '../mission/poll-executor.js';
|
|
19
|
+
export const DEFAULT_POLL_INTERVAL_SECS = 300;
|
|
20
|
+
/** Clamp the --interval flag: finite and ≥ 10 s, else the default. PURE. */
|
|
21
|
+
export function clampPollIntervalSecs(raw) {
|
|
22
|
+
const parsed = raw ? parseInt(raw, 10) : DEFAULT_POLL_INTERVAL_SECS;
|
|
23
|
+
return Number.isFinite(parsed) && parsed >= 10 ? parsed : DEFAULT_POLL_INTERVAL_SECS;
|
|
24
|
+
}
|
|
25
|
+
function printReport(report) {
|
|
26
|
+
console.log(` ${chalk.cyan(`mission #${report.missionId}`)} ${report.actions.length > 0 ? report.actions.join(', ') : 'no action'}`);
|
|
27
|
+
for (const note of report.notes)
|
|
28
|
+
console.log(chalk.dim(` ${note}`));
|
|
29
|
+
}
|
|
30
|
+
export async function orchPollCommand(options = {}) {
|
|
31
|
+
const projectRoot = options.projectRoot ?? process.cwd();
|
|
32
|
+
const intervalSecs = clampPollIntervalSecs(options.interval);
|
|
33
|
+
const cycle = async () => {
|
|
34
|
+
let reports;
|
|
35
|
+
try {
|
|
36
|
+
reports = await runPollCycle(projectRoot);
|
|
37
|
+
}
|
|
38
|
+
catch (e) {
|
|
39
|
+
// The cycle must never take the daemon down — a broken ledger or an
|
|
40
|
+
// unwritable project dir is a cycle error, not a process error.
|
|
41
|
+
console.error(chalk.red(`orch poll cycle failed: ${e instanceof Error ? e.message : String(e)}`));
|
|
42
|
+
return true;
|
|
43
|
+
}
|
|
44
|
+
if (options.json) {
|
|
45
|
+
console.log(JSON.stringify({ ts: new Date().toISOString(), missions: reports }, null, 2));
|
|
46
|
+
}
|
|
47
|
+
else if (reports.length > 0) {
|
|
48
|
+
console.log(chalk.bold(`\n orch poll — ${new Date().toISOString().slice(11, 19)}\n`));
|
|
49
|
+
for (const r of reports)
|
|
50
|
+
printReport(r);
|
|
51
|
+
console.log('');
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
console.log(chalk.dim(`orch poll ${new Date().toISOString().slice(11, 19)} — no active missions`));
|
|
55
|
+
}
|
|
56
|
+
return true;
|
|
57
|
+
};
|
|
58
|
+
if (!options.loop) {
|
|
59
|
+
await cycle();
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
// Daemon mode: sleep between cycles, forever. Each cycle is independent;
|
|
63
|
+
// a crash inside one is caught above, and systemd Restart=always covers
|
|
64
|
+
// anything that still escapes.
|
|
65
|
+
for (;;) {
|
|
66
|
+
await cycle();
|
|
67
|
+
await new Promise((r) => setTimeout(r, intervalSecs * 1000));
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=orch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orch.js","sourceRoot":"","sources":["../../src/cli/orch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAU3D,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAAG,CAAC;AAE9C,4EAA4E;AAC5E,MAAM,UAAU,qBAAqB,CAAC,GAAuB;IAC3D,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,0BAA0B,CAAC;IACpE,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,0BAA0B,CAAC;AACvF,CAAC;AAED,SAAS,WAAW,CAAC,MAAyB;IAC5C,OAAO,CAAC,GAAG,CACT,KAAK,KAAK,CAAC,IAAI,CAAC,YAAY,MAAM,CAAC,SAAS,EAAE,CAAC,KAAK,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAC1H,CAAC;IACF,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK;QAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,CAAC;AAC3E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,UAAuB,EAAE;IAC7D,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACzD,MAAM,YAAY,GAAG,qBAAqB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAE7D,MAAM,KAAK,GAAG,KAAK,IAAsB,EAAE;QACzC,IAAI,OAA4B,CAAC;QACjC,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,YAAY,CAAC,WAAW,CAAC,CAAC;QAC5C,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,oEAAoE;YACpE,gEAAgE;YAChE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,2BAA2B,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAClG,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CACT,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAC7E,CAAC;QACJ,CAAC;aAAM,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;YACvF,KAAK,MAAM,CAAC,IAAI,OAAO;gBAAE,WAAW,CAAC,CAAC,CAAC,CAAC;YACxC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,uBAAuB,CAAC,CAAC,CAAC;QACrG,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IAEF,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAClB,MAAM,KAAK,EAAE,CAAC;QACd,OAAO;IACT,CAAC;IAED,yEAAyE;IACzE,wEAAwE;IACxE,+BAA+B;IAC/B,SAAS,CAAC;QACR,MAAM,KAAK,EAAE,CAAC;QACd,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC,CAAC,CAAC;IAC/D,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"systemd-services.d.ts","sourceRoot":"","sources":["../../src/cli/systemd-services.ts"],"names":[],"mappings":"AA2BA,MAAM,WAAW,0BAA0B;IACzC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,yBAAyB;IACxC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;CAChB;AAkBD,wBAAgB,0BAA0B,CACxC,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,0BAA+B,GACvC,yBAAyB,
|
|
1
|
+
{"version":3,"file":"systemd-services.d.ts","sourceRoot":"","sources":["../../src/cli/systemd-services.ts"],"names":[],"mappings":"AA2BA,MAAM,WAAW,0BAA0B;IACzC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,yBAAyB;IACxC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;CAChB;AAkBD,wBAAgB,0BAA0B,CACxC,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,0BAA+B,GACvC,yBAAyB,CA6T3B;AAGD,4DAA4D;AAC5D,wBAAgB,YAAY,CAAC,OAAO,GAAE,MAAqB,GAAG,MAAM,CAEnE;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,MAAqB,GAAG,MAAM,GAAG,IAAI,CAQ1F;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC5B,OAAO,GAAE,MAAqB,GAC7B,MAAM,CAwBR"}
|
|
@@ -235,6 +235,50 @@ export function installSystemdUserServices(projectDir, options = {}) {
|
|
|
235
235
|
'LLAMA_LOG_FILE=llama-server.log',
|
|
236
236
|
'',
|
|
237
237
|
].join('\n'), installed, skipped, force);
|
|
238
|
+
// Orchestrator daemon — the loop clock over the mission ledger. Node and
|
|
239
|
+
// the CLI entrypoint are captured ABSOLUTE at install time: a systemd user
|
|
240
|
+
// unit's PATH does not include nvm, so `node`/`uap` lookups would fail.
|
|
241
|
+
//
|
|
242
|
+
// The `:-` defaults are deliberately UNQUOTED: inside a double-quoted
|
|
243
|
+
// assignment the enclosing quotes already make the expansion one word
|
|
244
|
+
// (spaces included), while single quotes would become LITERAL characters
|
|
245
|
+
// — `UAP_NODE="${X:-'/path'}"` yields a value starting with ' and the
|
|
246
|
+
// exec fails with 127 (observed live on first enable, 2026-10-03).
|
|
247
|
+
const orchScriptPath = join(scriptsDir, 'run-orch-poll-continuity.sh');
|
|
248
|
+
writeIfMissing(orchScriptPath, [
|
|
249
|
+
'#!/usr/bin/env bash',
|
|
250
|
+
'set -euo pipefail',
|
|
251
|
+
'',
|
|
252
|
+
'ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"',
|
|
253
|
+
`UAP_NODE="\${UAP_ORCH_NODE:-${process.execPath}}"`,
|
|
254
|
+
`UAP_CLI="\${UAP_ORCH_CLI:-${join(projectDir, 'dist', 'bin', 'cli.js')}}"`,
|
|
255
|
+
'',
|
|
256
|
+
'# The poll loop owns mission completion: every cycle re-decides what',
|
|
257
|
+
'# each active mission needs (supervise / launch / relaunch / salvage).',
|
|
258
|
+
'cd "$ROOT_DIR"',
|
|
259
|
+
'exec "$UAP_NODE" "$UAP_CLI" mission poll --loop --interval "${UAP_ORCH_POLL_INTERVAL:-300}"',
|
|
260
|
+
'',
|
|
261
|
+
].join('\n'), installed, skipped, force);
|
|
262
|
+
chmodSync(orchScriptPath, 0o755);
|
|
263
|
+
const orchServicePath = join(userServiceDir, 'uap-orchestrator.service');
|
|
264
|
+
writeIfMissing(orchServicePath, [
|
|
265
|
+
'[Unit]',
|
|
266
|
+
'Description=UAP Mission Orchestrator (durable goal loop clock)',
|
|
267
|
+
'After=network-online.target uap-anthropic-proxy.service',
|
|
268
|
+
'Wants=network-online.target',
|
|
269
|
+
'',
|
|
270
|
+
'[Service]',
|
|
271
|
+
'Type=simple',
|
|
272
|
+
`WorkingDirectory=${projectDir}`,
|
|
273
|
+
`ExecStart=${orchScriptPath}`,
|
|
274
|
+
'Restart=always',
|
|
275
|
+
'RestartSec=10',
|
|
276
|
+
'TimeoutStopSec=20',
|
|
277
|
+
'',
|
|
278
|
+
'[Install]',
|
|
279
|
+
'WantedBy=default.target',
|
|
280
|
+
'',
|
|
281
|
+
].join('\n'), installed, skipped, force);
|
|
238
282
|
return {
|
|
239
283
|
installed,
|
|
240
284
|
skipped,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"systemd-services.js","sourceRoot":"","sources":["../../src/cli/systemd-services.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"systemd-services.js","sourceRoot":"","sources":["../../src/cli/systemd-services.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Deterministic merge gate — the Choir-uplift PR 2 of 2.
|
|
3
|
+
*
|
|
4
|
+
* The mission orchestrator (PR 1 / ADR-0003) keeps a mission moving until a
|
|
5
|
+
* deliver run reports DONE against its frozen acceptance. But a *report* is a
|
|
6
|
+
* claim. The merge gate is the last deterministic check between that claim and
|
|
7
|
+
* master: before work tied to a mission lands, the gate re-derives the verdict
|
|
8
|
+
* from recorded evidence — never from the run's self-report, and never by
|
|
9
|
+
* parsing acceptance text out of an instruction string (ADR-0003's documented
|
|
10
|
+
* seam: `verifyAcceptanceHash`, the marker hash, and the attempt ledger).
|
|
11
|
+
*
|
|
12
|
+
* Four checks, all deterministic (no model calls — the acceptance judge ran
|
|
13
|
+
* inside deliver; the gate verifies its RECORDED outcome, it does not re-judge):
|
|
14
|
+
*
|
|
15
|
+
* 1. provenance — the marker hash on the PR matches the mission's
|
|
16
|
+
* CURRENT frozen acceptance (a replan after the PR
|
|
17
|
+
* was cut supersedes the criteria it was built to).
|
|
18
|
+
* 2. green-recompute — fresh run-state says delivered, the final recorded
|
|
19
|
+
* iteration passed its gates (acceptanceMet == 1
|
|
20
|
+
* when the judge ran), and no salvage proposal
|
|
21
|
+
* awaits a ruling.
|
|
22
|
+
* 3. sorry-delta — stub markers in ADDED lines of non-test files and
|
|
23
|
+
* apology/escape phrasing in the run's declared
|
|
24
|
+
* summaries. A completion riddled with "TODO" and
|
|
25
|
+
* "sorry, I couldn't" is not a completion.
|
|
26
|
+
* 4. axiom-honesty — the diff does not touch gate infrastructure
|
|
27
|
+
* (enforcers, hooks, baselines, CI, or this gate
|
|
28
|
+
* itself) without explicit acknowledgment. A PR may
|
|
29
|
+
* not weaken the gates that judge it.
|
|
30
|
+
*
|
|
31
|
+
* The gate has NO environment escape hatch by design: `UAP_*_GATE_OFF` and
|
|
32
|
+
* friends are deliberately not consulted here. The only acknowledgment is the
|
|
33
|
+
* operator-visible `allowGateInfra` flag (CLI `--allow-gate-infra`, or a
|
|
34
|
+
* `gate-infra` PR label when wired into the merge queue).
|
|
35
|
+
*/
|
|
36
|
+
import type { DeliverRunState } from './run-state.js';
|
|
37
|
+
export type MergeGateCheck = 'provenance' | 'green-recompute' | 'sorry-delta' | 'axiom-honesty';
|
|
38
|
+
/** One changed file: its path and ONLY the lines the diff ADDS (never the
|
|
39
|
+
* removed lines — deleting a TODO is progress, not a violation). Files that
|
|
40
|
+
* are deleted, renamed, or binary carry a path with empty `addedText` — the
|
|
41
|
+
* path itself is evidence for axiom-honesty. */
|
|
42
|
+
export interface ChangedFile {
|
|
43
|
+
path: string;
|
|
44
|
+
addedText: string;
|
|
45
|
+
}
|
|
46
|
+
/** The slice of run-state evidence the gate needs (seam-injected so tests and
|
|
47
|
+
* the merge queue can supply it without touching disk). */
|
|
48
|
+
export type GateRunState = Pick<DeliverRunState, 'status'> & {
|
|
49
|
+
history?: Array<{
|
|
50
|
+
passed: boolean;
|
|
51
|
+
acceptanceMet?: number;
|
|
52
|
+
}>;
|
|
53
|
+
phaseSummaries?: string[];
|
|
54
|
+
};
|
|
55
|
+
/**
|
|
56
|
+
* Tier-1 evidence: the gate-evidence artifact deliver records on success
|
|
57
|
+
* (`.uap/evidence/<candidateSha>.json`, uplift 1.4), binding every gate's
|
|
58
|
+
* exit code to the exact HEAD it proved. Production delivered runs persist
|
|
59
|
+
* WITHOUT a checkpoint (deliver clears it on success), so the artifact — not
|
|
60
|
+
* run-state history — is the seam that survives a real delivery.
|
|
61
|
+
*/
|
|
62
|
+
export interface GateEvidenceCheck {
|
|
63
|
+
/** Artifact exists for the sha being landed. */
|
|
64
|
+
present: boolean;
|
|
65
|
+
/** Every recorded gate exited 0. */
|
|
66
|
+
gatesAllZero: boolean;
|
|
67
|
+
/** No gate-affecting environment hatches were set when gates ran. */
|
|
68
|
+
hatchesEmpty: boolean;
|
|
69
|
+
/** The artifact's candidateSha equals the sha being landed. */
|
|
70
|
+
shaMatches: boolean;
|
|
71
|
+
/** The sha the artifact was requested for (for detail messages). */
|
|
72
|
+
expectedSha: string;
|
|
73
|
+
}
|
|
74
|
+
export interface MergeGateInputs {
|
|
75
|
+
missionId: number;
|
|
76
|
+
/** Current frozen acceptance hash slice (8 hex chars) from the ledger. */
|
|
77
|
+
acceptanceHash8: string;
|
|
78
|
+
/** Marker slice carried by the work's provenance (`[mission:#N:hash8]`).
|
|
79
|
+
* The merge queue extracts it from the PR body; the standalone CLI passes
|
|
80
|
+
* the ledger's own slice (the ledger tamper check is the runner's job). */
|
|
81
|
+
markerHash8?: string;
|
|
82
|
+
/** Ledger integrity: the stored acceptance text still hashes to the stored
|
|
83
|
+
* hash (verifyAcceptanceHash). False means the ledger was hand-edited. */
|
|
84
|
+
ledgerIntact: boolean;
|
|
85
|
+
runState: GateRunState | null;
|
|
86
|
+
/** Tier-1 evidence artifact state (null when the caller cannot check). */
|
|
87
|
+
evidence: GateEvidenceCheck | null;
|
|
88
|
+
/** pid corroboration (PR-1 provenance discipline): the run-state pid
|
|
89
|
+
* matches the pid the orchestrator spawned. Undefined when either side is
|
|
90
|
+
* unknown. */
|
|
91
|
+
pidCorroborated?: boolean;
|
|
92
|
+
/** Salvage proposals for this mission still awaiting a ruling. */
|
|
93
|
+
openSalvageCount: number;
|
|
94
|
+
changedFiles: ChangedFile[];
|
|
95
|
+
/** Explicit operator acknowledgment for deliberate gate-infra changes. */
|
|
96
|
+
allowGateInfra?: boolean;
|
|
97
|
+
}
|
|
98
|
+
export interface MergeGateFinding {
|
|
99
|
+
check: MergeGateCheck;
|
|
100
|
+
ok: boolean;
|
|
101
|
+
detail: string;
|
|
102
|
+
}
|
|
103
|
+
export interface MergeGateResult {
|
|
104
|
+
missionId: number;
|
|
105
|
+
pass: boolean;
|
|
106
|
+
findings: MergeGateFinding[];
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Stub markers in ADDED code. Applied to non-test, non-docs files: test
|
|
110
|
+
* suites legitimately stub seams (the house style injects stubs everywhere),
|
|
111
|
+
* and docs/ADRs legitimately quote the markers they describe. A `todo!()`
|
|
112
|
+
* left in production code is exactly the half-delivery this check exists to
|
|
113
|
+
* catch.
|
|
114
|
+
*/
|
|
115
|
+
export declare const STUB_PATTERNS: Array<{
|
|
116
|
+
label: string;
|
|
117
|
+
re: RegExp;
|
|
118
|
+
}>;
|
|
119
|
+
/** Apology / escape phrasing — the "sorry delta". Scanned in added lines of
|
|
120
|
+
* every changed file and in the run's declared summaries. */
|
|
121
|
+
export declare const SORRY_PATTERNS: Array<{
|
|
122
|
+
label: string;
|
|
123
|
+
re: RegExp;
|
|
124
|
+
}>;
|
|
125
|
+
/**
|
|
126
|
+
* Paths that ARE the gate system. A diff touching any of these without
|
|
127
|
+
* `allowGateInfra` fails axiom-honesty — including the merge gate, its
|
|
128
|
+
* evidence gatherer, and the ledger functions the provenance and
|
|
129
|
+
* green-recompute checks consume: a PR may not weaken (or rewrite) the checks
|
|
130
|
+
* that judge it.
|
|
131
|
+
*
|
|
132
|
+
* Deliberately hard-coded in source, not a config file: an externalized list
|
|
133
|
+
* could be edited by the very PR it judges, and any edit to THIS list trips
|
|
134
|
+
* axiom-honesty against the gate itself (the list protects itself by being
|
|
135
|
+
* the gate — architect review F6).
|
|
136
|
+
*/
|
|
137
|
+
export declare const GATE_INFRA_PREFIXES: string[];
|
|
138
|
+
/**
|
|
139
|
+
* PURE decision core. Every check runs and reports (a full finding list, not
|
|
140
|
+
* first-fail) so an operator sees every reason at once; `pass` is the AND of
|
|
141
|
+
* all findings.
|
|
142
|
+
*/
|
|
143
|
+
export declare function evaluateMergeGate(inputs: MergeGateInputs): MergeGateResult;
|
|
144
|
+
/**
|
|
145
|
+
* Extract the mission provenance marker from free text (a PR title or body).
|
|
146
|
+
* Prefix-pinned like the poll-executor's parser: the bracketed form must match
|
|
147
|
+
* exactly, so argv injection and partial collisions cannot forge linkage.
|
|
148
|
+
*/
|
|
149
|
+
export declare function missionMarkerOf(text: string): {
|
|
150
|
+
missionId: number;
|
|
151
|
+
hash8: string;
|
|
152
|
+
} | null;
|
|
153
|
+
/**
|
|
154
|
+
* Parse a unified diff into changed files with their ADDED lines. Accepts the
|
|
155
|
+
* output of `git diff --unified=0 <base>...HEAD` and `gh pr diff`. Pure — the
|
|
156
|
+
* command execution lives in the callers, tests exercise only this parser.
|
|
157
|
+
*
|
|
158
|
+
* Path coverage is the security property: DELETED files (`+++ /dev/null`),
|
|
159
|
+
* RENAMED files (no `+++` line at all), and BINARY files (no headers) must all
|
|
160
|
+
* reach the axiom-honesty prefix match — `git rm .codex/hooks/x.sh` is the
|
|
161
|
+
* purest form of weakening a gate, so the deleted path is captured from the
|
|
162
|
+
* `diff --git` / `--- a/` lines (security review P1, architect F1).
|
|
163
|
+
*
|
|
164
|
+
* An ADDED content line that itself starts with `+++` is not misread as a
|
|
165
|
+
* header: `+++` only opens a file when the previous line was its `---` pair.
|
|
166
|
+
*/
|
|
167
|
+
export declare function parseUnifiedDiff(diff: string): ChangedFile[];
|
|
168
|
+
//# sourceMappingURL=merge-gate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merge-gate.d.ts","sourceRoot":"","sources":["../../src/delivery/merge-gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEtD,MAAM,MAAM,cAAc,GAAG,YAAY,GAAG,iBAAiB,GAAG,aAAa,GAAG,eAAe,CAAC;AAEhG;;;iDAGiD;AACjD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;4DAC4D;AAC5D,MAAM,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,GAAG;IAC3D,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC7D,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,WAAW,iBAAiB;IAChC,gDAAgD;IAChD,OAAO,EAAE,OAAO,CAAC;IACjB,oCAAoC;IACpC,YAAY,EAAE,OAAO,CAAC;IACtB,qEAAqE;IACrE,YAAY,EAAE,OAAO,CAAC;IACtB,+DAA+D;IAC/D,UAAU,EAAE,OAAO,CAAC;IACpB,oEAAoE;IACpE,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,0EAA0E;IAC1E,eAAe,EAAE,MAAM,CAAC;IACxB;;gFAE4E;IAC5E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;+EAC2E;IAC3E,YAAY,EAAE,OAAO,CAAC;IACtB,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAC;IAC9B,0EAA0E;IAC1E,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACnC;;mBAEe;IACf,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,kEAAkE;IAClE,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,0EAA0E;IAC1E,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,cAAc,CAAC;IACtB,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,gBAAgB,EAAE,CAAC;CAC9B;AAED;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAU9D,CAAC;AAEF;8DAC8D;AAC9D,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAI/D,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,mBAAmB,UAa/B,CAAC;AA6BF;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,eAAe,GAAG,eAAe,CAiJ1E;AAWD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAGzF;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,EAAE,CAwD5D"}
|