@senpi/runtime 3.0.72 → 3.0.74
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/cli/senpi-commands.d.ts.map +1 -1
- package/dist/cli/senpi-commands.js +6 -5
- package/dist/cli/senpi-commands.js.map +1 -1
- package/dist/deploy/deadlines.d.ts +61 -1
- package/dist/deploy/deadlines.d.ts.map +1 -1
- package/dist/deploy/deadlines.js +85 -2
- package/dist/deploy/deadlines.js.map +1 -1
- package/dist/deploy/funding.d.ts +38 -0
- package/dist/deploy/funding.d.ts.map +1 -1
- package/dist/deploy/funding.js +39 -0
- package/dist/deploy/funding.js.map +1 -1
- package/dist/deploy/job.d.ts.map +1 -1
- package/dist/deploy/job.js +7 -1
- package/dist/deploy/job.js.map +1 -1
- package/dist/deploy/messages.d.ts +603 -0
- package/dist/deploy/messages.d.ts.map +1 -0
- package/dist/deploy/messages.js +1388 -0
- package/dist/deploy/messages.js.map +1 -0
- package/dist/deploy/orchestrator.d.ts +8 -0
- package/dist/deploy/orchestrator.d.ts.map +1 -1
- package/dist/deploy/orchestrator.js +146 -1211
- package/dist/deploy/orchestrator.js.map +1 -1
- package/dist/deploy/package.d.ts +89 -0
- package/dist/deploy/package.d.ts.map +1 -1
- package/dist/deploy/package.js +213 -25
- package/dist/deploy/package.js.map +1 -1
- package/dist/deploy/proof-gate.d.ts +4 -0
- package/dist/deploy/proof-gate.d.ts.map +1 -1
- package/dist/deploy/proof-gate.js +4 -0
- package/dist/deploy/proof-gate.js.map +1 -1
- package/dist/deploy/recheck-commands.d.ts.map +1 -1
- package/dist/deploy/recheck-commands.js +21 -3
- package/dist/deploy/recheck-commands.js.map +1 -1
- package/dist/deploy/register.d.ts +2 -0
- package/dist/deploy/register.d.ts.map +1 -1
- package/dist/deploy/register.js +23 -6
- package/dist/deploy/register.js.map +1 -1
- package/dist/deploy/taxonomy.d.ts +19 -0
- package/dist/deploy/taxonomy.d.ts.map +1 -1
- package/dist/deploy/taxonomy.js +28 -0
- package/dist/deploy/taxonomy.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +230 -176
- package/dist/index.js.map +1 -1
- package/dist/runtime/env-resolve.d.ts +13 -0
- package/dist/runtime/env-resolve.d.ts.map +1 -1
- package/dist/runtime/env-resolve.js +14 -1
- package/dist/runtime/env-resolve.js.map +1 -1
- package/dist/runtime/runtime-schema.d.ts +100 -100
- package/dist/scanners/external/scaffold/preflight.py +39 -0
- package/dist/telemetry/metrics.d.ts +7 -0
- package/dist/telemetry/metrics.d.ts.map +1 -1
- package/dist/telemetry/metrics.js +7 -0
- package/dist/telemetry/metrics.js.map +1 -1
- package/dist/validate/codes.d.ts +10 -0
- package/dist/validate/codes.d.ts.map +1 -1
- package/dist/validate/codes.js +38 -1
- package/dist/validate/codes.js.map +1 -1
- package/dist/validate/live-stage.d.ts +8 -0
- package/dist/validate/live-stage.d.ts.map +1 -1
- package/dist/validate/live-stage.js +87 -18
- package/dist/validate/live-stage.js.map +1 -1
- package/dist/validate/package-gates-stage.d.ts +61 -0
- package/dist/validate/package-gates-stage.d.ts.map +1 -0
- package/dist/validate/package-gates-stage.js +215 -0
- package/dist/validate/package-gates-stage.js.map +1 -0
- package/dist/validate/run.d.ts +24 -1
- package/dist/validate/run.d.ts.map +1 -1
- package/dist/validate/run.js +51 -4
- package/dist/validate/run.js.map +1 -1
- package/dist/validate/taxonomy-finding.d.ts +22 -0
- package/dist/validate/taxonomy-finding.d.ts.map +1 -0
- package/dist/validate/taxonomy-finding.js +25 -0
- package/dist/validate/taxonomy-finding.js.map +1 -0
- package/dist/validate/universe-stage.d.ts.map +1 -1
- package/dist/validate/universe-stage.js +2 -20
- package/dist/validate/universe-stage.js.map +1 -1
- package/dist/validate/wallet-binding-stage.d.ts +44 -0
- package/dist/validate/wallet-binding-stage.d.ts.map +1 -0
- package/dist/validate/wallet-binding-stage.js +92 -0
- package/dist/validate/wallet-binding-stage.js.map +1 -0
- package/openclaw.plugin.json +1 -1
- package/package.json +1 -1
package/dist/deploy/package.js
CHANGED
|
@@ -8,15 +8,25 @@
|
|
|
8
8
|
* touches the network, the registry, or money.
|
|
9
9
|
*/
|
|
10
10
|
import { readFileSync, existsSync } from "node:fs";
|
|
11
|
-
import { basename, join, dirname, resolve } from "node:path";
|
|
11
|
+
import { basename, join, dirname, resolve, relative, isAbsolute } from "node:path";
|
|
12
12
|
import { parse as parseYaml } from "yaml";
|
|
13
|
+
import { ENV_VAR_PATTERN_SOURCE } from "../runtime/env-resolve.js";
|
|
13
14
|
import { pythonFloat } from "./python-float.js";
|
|
14
15
|
/** Platform cap on a strategy name; also the cap on a derived wallet/runtime id. */
|
|
15
16
|
const WALLET_NAME_MAX = 40;
|
|
16
17
|
/** Matches a whole-value `${TOKEN}` wallet binding in a flat package's runtime.yaml. */
|
|
17
18
|
const WALLET_TOKEN_RE = /^\$\{([A-Z0-9_]+)\}$/;
|
|
18
|
-
/**
|
|
19
|
-
|
|
19
|
+
/**
|
|
20
|
+
* Any surviving `${...}` after render — an unresolved placeholder must never reach the runtime.
|
|
21
|
+
*
|
|
22
|
+
* Built from the EXPANDER's own grammar ({@link ENV_VAR_PATTERN_SOURCE}) rather than a local
|
|
23
|
+
* approximation of it. This gate used to be `\$\{[A-Z0-9_]+\}`, which cannot match `:` or `-`, so
|
|
24
|
+
* `${SENPI_API_KEY:-x}` — a form `resolveEnvInString` expands — passed it silently and installed
|
|
25
|
+
* verbatim, handing the box's credentials to author-written scanner code as an ordinary input
|
|
26
|
+
* value. Sharing the grammar is what makes the gate's stated purpose true: anything left as
|
|
27
|
+
* `${...}` is a packaging bug and throws rather than reaching the runtime.
|
|
28
|
+
*/
|
|
29
|
+
const LEFTOVER_TOKEN_RE = new RegExp(ENV_VAR_PATTERN_SOURCE);
|
|
20
30
|
/** Port of deploy.py `_sanitize_strategy_name`: whitespace→'-', keep [A-Za-z0-9_-], trim '-', cap 40. */
|
|
21
31
|
export function sanitizeStrategyName(name) {
|
|
22
32
|
const collapsed = name
|
|
@@ -73,6 +83,12 @@ function assertIdentityRoundTrips(id, name, manifestPath) {
|
|
|
73
83
|
* a package that already has money in the ground. Same call the skills side made for the same
|
|
74
84
|
* reason: the rule lives in `_pkg.validate`, which `deploy.py` runs before every money verb, and
|
|
75
85
|
* never in `_pkg.load`, which `close.py` needs in order to tear a package down.
|
|
86
|
+
*
|
|
87
|
+
* `senpi validate` reports it too, at static depth (`E_VALIDATE_PACKAGE_ID_CASE`), rendering its
|
|
88
|
+
* fix from {@link lowercasePackageIdFix} so both surfaces name the identical edit. Note the ops
|
|
89
|
+
* ordering that creates: the redeploy loop is `validate → close → create`, so the finding fires
|
|
90
|
+
* before anything is closed and the id is lowercased on a package that may already own funded
|
|
91
|
+
* wallets. That is safe only because both stamp comparisons case-FOLD.
|
|
76
92
|
*/
|
|
77
93
|
export function nonLowercasePackageId(pkg) {
|
|
78
94
|
return pkg.id !== pkg.id.toLowerCase() ? pkg.id : null;
|
|
@@ -132,6 +148,7 @@ function readYamlMapping(path) {
|
|
|
132
148
|
*/
|
|
133
149
|
const readFundingShare = pythonFloat;
|
|
134
150
|
function readDeclaredInstances(rawInstances, dir, manifestPath) {
|
|
151
|
+
const seen = new Set();
|
|
135
152
|
return rawInstances.map((entry) => {
|
|
136
153
|
const name = String(entry.name ?? "");
|
|
137
154
|
const rel = String(entry.runtime ?? "");
|
|
@@ -139,6 +156,22 @@ function readDeclaredInstances(rawInstances, dir, manifestPath) {
|
|
|
139
156
|
if (!name || !rel || !walletEnv) {
|
|
140
157
|
throw new Error(`strategy.yaml instance entries need name, runtime, wallet_env (${manifestPath})`);
|
|
141
158
|
}
|
|
159
|
+
// A repeated name is not a cosmetic clash — it costs money twice over, and nothing downstream
|
|
160
|
+
// can recover from it. `planFunding` keys its amounts Map on this name, so two entries collapse
|
|
161
|
+
// into one and the preflight validates HALF the money that actually moves; both runs then read
|
|
162
|
+
// the same amount and issue two creates. At install both derive the same `<id>-<instance>`
|
|
163
|
+
// runtime id, so the second deletes the first's runtime and rebinds to its own wallet —
|
|
164
|
+
// leaving wallet #1 funded, live, and supervised by no runtime and no exit engine, with its
|
|
165
|
+
// install step reported `ok`. Refused in the loader, beside the sibling name rule above: unlike
|
|
166
|
+
// a mixed-case package id (which deploys coherently and only misstamps), there is no reading of
|
|
167
|
+
// a duplicated name any consumer can act on, so there is no recovery read to keep working.
|
|
168
|
+
if (seen.has(name)) {
|
|
169
|
+
throw new Error(`strategy.yaml declares instance "${name}" more than once (${manifestPath}). Instance ` +
|
|
170
|
+
`names must be unique within a package: the funding plan and the runtime id are both ` +
|
|
171
|
+
`keyed on this name, so a repeated one funds two wallets and then leaves one of them ` +
|
|
172
|
+
`with no runtime watching it. Give each instance its own name.`);
|
|
173
|
+
}
|
|
174
|
+
seen.add(name);
|
|
142
175
|
// An instance name has to survive `sanitizeStrategyName` UNCHANGED, because two different
|
|
143
176
|
// consumers disagree about it otherwise: the runtime registers the sanitized
|
|
144
177
|
// `<id>-<instance>`, while `close.py --instance <name>` looks the sleeve up under the RAW one.
|
|
@@ -152,6 +185,21 @@ function readDeclaredInstances(rawInstances, dir, manifestPath) {
|
|
|
152
185
|
`looks up the raw one, so a name that changes here cannot be closed by instance later.`);
|
|
153
186
|
}
|
|
154
187
|
const runtimeYamlPath = resolve(dir, rel);
|
|
188
|
+
// The user names ONE directory, and everything this deploy reads, funds and runs has to come
|
|
189
|
+
// from inside it. `resolve` + `existsSync` alone let `../../other/runtime.yaml` — or a bare
|
|
190
|
+
// absolute path, which has no `../` to notice — relocate every consumer at once: the pre-money
|
|
191
|
+
// gates would validate a foreign recipe, `checkPackageProof` would read a `.senpi-proof.json`
|
|
192
|
+
// recorded for a package nobody inspected (satisfying the funding gate), relative
|
|
193
|
+
// `scanners[].path` entrypoints would resolve and therefore EXECUTE from outside the package,
|
|
194
|
+
// and the refusals would print `openclaw senpi validate '<that outside dir>'` for the reader to
|
|
195
|
+
// run. One containment check upstream of all of them is the whole fix.
|
|
196
|
+
const inside = relative(dir, runtimeYamlPath);
|
|
197
|
+
if (inside.startsWith("..") || isAbsolute(inside)) {
|
|
198
|
+
throw new Error(`strategy.yaml instance "${name}" points at a runtime file outside the package: ` +
|
|
199
|
+
`"${rel}" resolves to ${runtimeYamlPath}, which is not under ${dir}. An instance's ` +
|
|
200
|
+
`runtime.yaml must live inside the package directory being deployed — move the file in, ` +
|
|
201
|
+
`or deploy the package that already contains it.`);
|
|
202
|
+
}
|
|
155
203
|
if (!existsSync(runtimeYamlPath)) {
|
|
156
204
|
throw new Error(`Instance "${name}" runtime file not found: ${runtimeYamlPath}`);
|
|
157
205
|
}
|
|
@@ -226,6 +274,59 @@ export function walletName(pkg, inst) {
|
|
|
226
274
|
export function readRuntimeYaml(inst) {
|
|
227
275
|
return readFileSync(inst.runtimeYamlPath, "utf8");
|
|
228
276
|
}
|
|
277
|
+
/** The `${TOKEN}` an instance's recipe must bind its wallet to, from the manifest's `wallet_env`. */
|
|
278
|
+
function expectedWalletBinding(inst) {
|
|
279
|
+
return `\${${inst.walletEnv}}`;
|
|
280
|
+
}
|
|
281
|
+
/**
|
|
282
|
+
* Instances whose recipe does not bind the wallet `strategy.yaml` says it binds.
|
|
283
|
+
*
|
|
284
|
+
* `wallet_env` is a promise the manifest makes on behalf of the recipe, and nothing used to check
|
|
285
|
+
* that the recipe keeps it. `renderRuntimeYaml` substitutes by string replacement, so a declared
|
|
286
|
+
* token that never appears substitutes NOTHING — silently, because the leftover-placeholder gate
|
|
287
|
+
* only looks for surviving `${...}` and a hardcoded address leaves none. A package declaring
|
|
288
|
+
* `wallet_env: UNUSED` beside a recipe pinning an address it chose therefore had `senpi deploy`
|
|
289
|
+
* create and fund a fresh wallet from the user's budget and then install the runtime — actions,
|
|
290
|
+
* DSL exit engine and all — against the OTHER address. The install step named the recipe's wallet,
|
|
291
|
+
* so the report read clean while the funded wallet sat with nothing watching it.
|
|
292
|
+
*
|
|
293
|
+
* Read from the PARSED recipe, not by searching its text: a token that appears anywhere at all
|
|
294
|
+
* satisfies a text search, substitutes harmlessly into some field nobody reads, and leaves the
|
|
295
|
+
* leftover gate with nothing to catch. Only `strategy.wallet` decides what the runtime binds.
|
|
296
|
+
*
|
|
297
|
+
* Flat packages cannot fault here and are not special-cased: `synthesizeFlatInstance` derives
|
|
298
|
+
* `walletEnv` from this very field, so the invariant holds by construction.
|
|
299
|
+
*
|
|
300
|
+
* Never throws. A recipe that will not parse is a fault the YAML-syntax gate already owns and
|
|
301
|
+
* words properly — restating it here in worse words helps nobody — and this check is called from
|
|
302
|
+
* places (validate's static depth, deploy's preflight) where taking the whole run down over one
|
|
303
|
+
* unreadable file would be the wrong answer.
|
|
304
|
+
*/
|
|
305
|
+
export function unboundWalletInstances(pkg) {
|
|
306
|
+
const faults = [];
|
|
307
|
+
for (const inst of pkg.instances) {
|
|
308
|
+
let declared;
|
|
309
|
+
try {
|
|
310
|
+
const parsed = parseYaml(readRuntimeYaml(inst));
|
|
311
|
+
const strategy = parsed?.strategy;
|
|
312
|
+
// A missing or non-mapping `strategy:` block is NOT skipped: it parses, so it can reach
|
|
313
|
+
// install, and it binds no wallet — which is exactly the fault this asks about. Only a file
|
|
314
|
+
// that will not parse at all is passed over, and that one cannot reach install because
|
|
315
|
+
// `renderRuntimeYaml` re-parses before it returns.
|
|
316
|
+
const wallet = strategy !== null && typeof strategy === "object" && !Array.isArray(strategy)
|
|
317
|
+
? strategy.wallet
|
|
318
|
+
: undefined;
|
|
319
|
+
declared = typeof wallet === "string" ? wallet.trim() : undefined;
|
|
320
|
+
}
|
|
321
|
+
catch {
|
|
322
|
+
continue;
|
|
323
|
+
}
|
|
324
|
+
const expected = expectedWalletBinding(inst);
|
|
325
|
+
if (declared !== expected)
|
|
326
|
+
faults.push({ instance: inst, declared, expected });
|
|
327
|
+
}
|
|
328
|
+
return faults;
|
|
329
|
+
}
|
|
229
330
|
/**
|
|
230
331
|
* Render an instance's runtime.yaml for install. Only the wallet token and (when
|
|
231
332
|
* supplied) the decision-model token are substituted; anything else left as
|
|
@@ -242,8 +343,52 @@ export function renderRuntimeYaml(inst, wallet, decisionModel) {
|
|
|
242
343
|
throw new Error(`Unresolved placeholder ${leftover[0]} in ${inst.runtimeYamlPath}. ` +
|
|
243
344
|
`Only \${${inst.walletEnv}}${decisionModel ? ` and \${${decisionModel.env}}` : ""} are substituted by deploy.`);
|
|
244
345
|
}
|
|
346
|
+
assertBindsFundedWallet(inst, text, wallet);
|
|
245
347
|
return text;
|
|
246
348
|
}
|
|
349
|
+
/**
|
|
350
|
+
* The last gate before install: does the recipe about to be installed bind the wallet this run
|
|
351
|
+
* actually funded?
|
|
352
|
+
*
|
|
353
|
+
* Not redundant with the pre-money check in the preflight, for a reason that is a property of this
|
|
354
|
+
* function: it RE-READS the file. Whatever any earlier gate inspected is not provably these bytes
|
|
355
|
+
* (`runtime.yaml` is read several times across one deploy, and nothing pins the file between
|
|
356
|
+
* them). This is the one point where the funded wallet and the exact text that will be installed
|
|
357
|
+
* are both in hand, so it is the only place the invariant can actually be asserted rather than
|
|
358
|
+
* approximated.
|
|
359
|
+
*
|
|
360
|
+
* Compares the PARSED value — the runtime binds what the YAML parses to, not what the text looks
|
|
361
|
+
* like — and folds case, because a wallet address is one margin account however it is spelled
|
|
362
|
+
* (`findByWallet` folds for the same reason). An exact compare here would refuse correct deploys
|
|
363
|
+
* and, since this throw lands on the money path, roll their funded wallets back.
|
|
364
|
+
*
|
|
365
|
+
* Fails CLOSED on a rendered recipe that will not parse. The runtime would reject it anyway; the
|
|
366
|
+
* difference is that refusing here happens before the wallet is handed to an install.
|
|
367
|
+
*/
|
|
368
|
+
function assertBindsFundedWallet(inst, rendered, wallet) {
|
|
369
|
+
let bound;
|
|
370
|
+
try {
|
|
371
|
+
const parsed = parseYaml(rendered);
|
|
372
|
+
const strategy = parsed?.strategy;
|
|
373
|
+
bound =
|
|
374
|
+
strategy !== null && typeof strategy === "object" && !Array.isArray(strategy)
|
|
375
|
+
? strategy.wallet
|
|
376
|
+
: undefined;
|
|
377
|
+
}
|
|
378
|
+
catch (err) {
|
|
379
|
+
throw new Error(`Rendered recipe for instance "${inst.name}" (${inst.runtimeYamlPath}) is not parseable as ` +
|
|
380
|
+
`YAML: ${err instanceof Error ? err.message : String(err)}. Nothing was installed on the ` +
|
|
381
|
+
`wallet this run funded — a recipe that cannot be read cannot be confirmed to bind it.`);
|
|
382
|
+
}
|
|
383
|
+
const boundText = typeof bound === "string" ? bound.trim() : "";
|
|
384
|
+
if (boundText.toLowerCase() === wallet.trim().toLowerCase())
|
|
385
|
+
return;
|
|
386
|
+
throw new Error(`Instance "${inst.name}" would install against ${boundText === "" ? "no wallet" : `wallet ${boundText}`}, ` +
|
|
387
|
+
`but this deploy funded ${wallet}. Its recipe (${inst.runtimeYamlPath}) must bind ` +
|
|
388
|
+
`strategy.wallet to \${${inst.walletEnv}} — the token strategy.yaml declares for it — so ` +
|
|
389
|
+
`deploy can substitute the wallet it created. As written, the money this run moved and the ` +
|
|
390
|
+
`account the strategy would trade are two different wallets.`);
|
|
391
|
+
}
|
|
247
392
|
/**
|
|
248
393
|
* True iff the instance ships a DSL exit block — `exit.dsl_preset`, or `exit.engine: dsl`.
|
|
249
394
|
*
|
|
@@ -252,7 +397,25 @@ export function renderRuntimeYaml(inst, wallet, decisionModel) {
|
|
|
252
397
|
* the taught path, so the same gate has to live here or the hole reopens on the direct-verb route.
|
|
253
398
|
*/
|
|
254
399
|
export function instanceHasDslExit(inst) {
|
|
255
|
-
|
|
400
|
+
return hasDslExitBlock(parseYaml(readRuntimeYaml(inst)));
|
|
401
|
+
}
|
|
402
|
+
/**
|
|
403
|
+
* True iff a PARSED recipe ships a DSL exit block — `exit.dsl_preset`, or `exit.engine: dsl`.
|
|
404
|
+
*
|
|
405
|
+
* Split from {@link instanceHasDslExit} so `senpi validate` can ask the same question of the config
|
|
406
|
+
* it has already parsed, rather than re-reading and re-parsing the file — and rather than growing a
|
|
407
|
+
* second predicate that could quietly disagree with this one about, say, `dsl_preset: true`. Same
|
|
408
|
+
* reason {@link isTruthyPreset} is exported for `runtime-descriptor.ts`.
|
|
409
|
+
*
|
|
410
|
+
* Takes `unknown` because its two callers hold different things: a `parseYaml` result here, and a
|
|
411
|
+
* schema-parsed `RuntimeConfig` in validate. Both are read the same way, and neither is trusted to
|
|
412
|
+
* have the shape — but note their INPUTS are not identical: validate resolves `${ENV}` before
|
|
413
|
+
* parsing (`recipe.ts`), deploy does not, so `exit: { engine: "${EXIT_ENGINE}" }` reads as `dsl`
|
|
414
|
+
* here only after substitution and as the literal token on the deploy path. Validate's reading is
|
|
415
|
+
* the more accurate one (that is what would install); the divergence is narrow and pre-existing,
|
|
416
|
+
* and this is the note that stops the next reader concluding the two can never disagree.
|
|
417
|
+
*/
|
|
418
|
+
export function hasDslExitBlock(parsed) {
|
|
256
419
|
const exit = parsed?.exit;
|
|
257
420
|
if (exit === null || typeof exit !== "object" || Array.isArray(exit))
|
|
258
421
|
return false;
|
|
@@ -290,6 +453,10 @@ export function isTruthyPreset(value) {
|
|
|
290
453
|
* The instances themselves, not their names: both refusals built from this name the re-check
|
|
291
454
|
* command for each offender, and that command takes a directory the instance carries. A name is not
|
|
292
455
|
* a path, and re-deriving the instance from its name at the refusal site is a lookup that can fail.
|
|
456
|
+
*
|
|
457
|
+
* `senpi validate` reports the same fault at static depth (`E_VALIDATE_NO_DSL_EXIT`, via
|
|
458
|
+
* {@link hasDslExitBlock} in `validate/package-gates-stage.ts`), so the re-check command these
|
|
459
|
+
* refusals emit agrees with them. Do not add a third reading of this fact.
|
|
293
460
|
*/
|
|
294
461
|
export function instancesWithoutDslExit(pkg) {
|
|
295
462
|
return pkg.instances.filter((inst) => !instanceHasDslExit(inst));
|
|
@@ -308,23 +475,43 @@ export function instancesWithoutDslExit(pkg) {
|
|
|
308
475
|
*
|
|
309
476
|
* The live-state twin of this is the observe step's all-disabled branch, which reads engine rows
|
|
310
477
|
* rather than YAML — the runtime API can genuinely disable a scanner after install.
|
|
478
|
+
*
|
|
479
|
+
* `senpi validate` reports the same key at static depth (`E_VALIDATE_SCANNER_ENABLED`, via
|
|
480
|
+
* {@link scannerEnabledEntries}), one finding per offending entry, so an author never first learns
|
|
481
|
+
* about it from the money path.
|
|
311
482
|
*/
|
|
312
483
|
export function scannersDeclaringEnabled(pkg) {
|
|
484
|
+
return pkg.instances.flatMap((inst) => scannerEnabledEntries(parseYaml(readRuntimeYaml(inst))).map((entry) => ({
|
|
485
|
+
instance: inst.name,
|
|
486
|
+
scanner: entry.scanner,
|
|
487
|
+
value: entry.value,
|
|
488
|
+
runtimeYamlPath: inst.runtimeYamlPath,
|
|
489
|
+
})));
|
|
490
|
+
}
|
|
491
|
+
/**
|
|
492
|
+
* Scanner entries in a PARSED recipe that declare an `enabled` key at all.
|
|
493
|
+
*
|
|
494
|
+
* The instance-free core of {@link scannersDeclaringEnabled}, so validate can ask it of a recipe
|
|
495
|
+
* that has no package around it yet — the mid-authoring case, where the fault is just as real and
|
|
496
|
+
* the author is exactly the person who should hear about it.
|
|
497
|
+
*/
|
|
498
|
+
export function scannerEnabledEntries(parsed) {
|
|
499
|
+
const scanners = parsed?.scanners;
|
|
500
|
+
if (!Array.isArray(scanners))
|
|
501
|
+
return [];
|
|
313
502
|
const found = [];
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
runtimeYamlPath: inst.runtimeYamlPath,
|
|
325
|
-
});
|
|
503
|
+
scanners.forEach((scanner, index) => {
|
|
504
|
+
// Key presence, not truthiness: a bare `enabled:` (null) is the same unsupported key.
|
|
505
|
+
if (scanner === null || typeof scanner !== "object" || !("enabled" in scanner))
|
|
506
|
+
return;
|
|
507
|
+
const entry = scanner;
|
|
508
|
+
const name = typeof entry.name === "string" ? entry.name : entry.id;
|
|
509
|
+
found.push({
|
|
510
|
+
scanner: typeof name === "string" && name.length > 0 ? name : `scanners[${index}]`,
|
|
511
|
+
index,
|
|
512
|
+
value: entry.enabled,
|
|
326
513
|
});
|
|
327
|
-
}
|
|
514
|
+
});
|
|
328
515
|
return found;
|
|
329
516
|
}
|
|
330
517
|
/**
|
|
@@ -334,17 +521,18 @@ export function scannersDeclaringEnabled(pkg) {
|
|
|
334
521
|
*/
|
|
335
522
|
export function describeScannerEnabledOffense(entry) {
|
|
336
523
|
return (`instance "${entry.instance}", scanner "${entry.scanner}": delete the line ` +
|
|
337
|
-
`\`${
|
|
524
|
+
`\`${renderScannerEnabledLine(entry.value)}\` from ${entry.runtimeYamlPath}`);
|
|
338
525
|
}
|
|
339
|
-
/**
|
|
340
|
-
|
|
526
|
+
/**
|
|
527
|
+
* The offending line as it appears in the YAML — a bare `enabled:` has no value to echo.
|
|
528
|
+
*
|
|
529
|
+
* Exported so validate's finding quotes the author's own line with the same rendering deploy's
|
|
530
|
+
* refusal uses. Two surfaces telling someone to delete "the line `enabled: false`" must agree on
|
|
531
|
+
* what that line says, or one of them is describing a line that is not in the file.
|
|
532
|
+
*/
|
|
533
|
+
export function renderScannerEnabledLine(value) {
|
|
341
534
|
return value === null || value === undefined ? "enabled:" : `enabled: ${JSON.stringify(value)}`;
|
|
342
535
|
}
|
|
343
|
-
/** The instance's `scanners:` list, or []. */
|
|
344
|
-
function readScannerEntries(inst) {
|
|
345
|
-
const parsed = parseYaml(readRuntimeYaml(inst));
|
|
346
|
-
return Array.isArray(parsed?.scanners) ? parsed.scanners : [];
|
|
347
|
-
}
|
|
348
536
|
/** True iff any action runs `decision_mode: llm` — those installs need a decision model. */
|
|
349
537
|
export function runtimeUsesLlmDecisions(runtimeYamlText) {
|
|
350
538
|
const parsed = parseYaml(runtimeYamlText);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package.js","sourceRoot":"","sources":["../../src/deploy/package.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"package.js","sourceRoot":"","sources":["../../src/deploy/package.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,6 +22,10 @@ export interface InstanceDirCollision {
|
|
|
22
22
|
* layer is the one that HAS the manifest and can see the collision, so it refuses here. Fail-closed
|
|
23
23
|
* on principle and free in practice: of the 103 packages in the shipped catalog, 21 are
|
|
24
24
|
* multi-instance and none shares a runtime directory.
|
|
25
|
+
*
|
|
26
|
+
* `senpi validate` calls this too, at static depth (`E_VALIDATE_INSTANCE_DIR_COLLISION`), scoped to
|
|
27
|
+
* the collision the validated recipe is IN — reporting a sibling pair the run never looked at would
|
|
28
|
+
* send an author to edit files outside the target.
|
|
25
29
|
*/
|
|
26
30
|
export declare function collidingInstanceDirs(pkg: DeployPackage): InstanceDirCollision[];
|
|
27
31
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proof-gate.d.ts","sourceRoot":"","sources":["../../src/deploy/proof-gate.ts"],"names":[],"mappings":"AA6BA,OAAO,EAA8B,KAAK,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAExG,OAAO,EAAmB,KAAK,cAAc,EAAE,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAGxF,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,aAAa,GAAG,YAAY,CAGlE;AAED,mFAAmF;AACnF,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,cAAc,EAAE,CAAC;CAC7B;AAED
|
|
1
|
+
{"version":3,"file":"proof-gate.d.ts","sourceRoot":"","sources":["../../src/deploy/proof-gate.ts"],"names":[],"mappings":"AA6BA,OAAO,EAA8B,KAAK,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAExG,OAAO,EAAmB,KAAK,cAAc,EAAE,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAGxF,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,aAAa,GAAG,YAAY,CAGlE;AAED,mFAAmF;AACnF,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,cAAc,EAAE,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,aAAa,GAAG,oBAAoB,EAAE,CAQhF;AA6BD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,gCAAgC,CAC9C,UAAU,EAAE,oBAAoB,EAAE,EAClC,GAAG,EAAE,aAAa,GACjB,MAAM,CAqCR;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb;AAgED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,EAAE,aAAa,GAAG,iBAAiB,CAwD7F;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,EAAE,aAAa,GAAG,MAAM,CAalF"}
|
|
@@ -51,6 +51,10 @@ export function checkPackageProof(pkg) {
|
|
|
51
51
|
* layer is the one that HAS the manifest and can see the collision, so it refuses here. Fail-closed
|
|
52
52
|
* on principle and free in practice: of the 103 packages in the shipped catalog, 21 are
|
|
53
53
|
* multi-instance and none shares a runtime directory.
|
|
54
|
+
*
|
|
55
|
+
* `senpi validate` calls this too, at static depth (`E_VALIDATE_INSTANCE_DIR_COLLISION`), scoped to
|
|
56
|
+
* the collision the validated recipe is IN — reporting a sibling pair the run never looked at would
|
|
57
|
+
* send an author to edit files outside the target.
|
|
54
58
|
*/
|
|
55
59
|
export function collidingInstanceDirs(pkg) {
|
|
56
60
|
const byDir = new Map();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proof-gate.js","sourceRoot":"","sources":["../../src/deploy/proof-gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,aAAa,EAAwC,MAAM,sBAAsB,CAAC;AACxG,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,eAAe,EAA2C,MAAM,cAAc,CAAC;AACxF,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,MAAM,UAAU,iBAAiB,CAAC,GAAkB;IAClD,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;IACtF,OAAO,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;AAC7C,CAAC;AAQD
|
|
1
|
+
{"version":3,"file":"proof-gate.js","sourceRoot":"","sources":["../../src/deploy/proof-gate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recheck-commands.d.ts","sourceRoot":"","sources":["../../src/deploy/recheck-commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;
|
|
1
|
+
{"version":3,"file":"recheck-commands.d.ts","sourceRoot":"","sources":["../../src/deploy/recheck-commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAqBH;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,yFAAyF;AACzF,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAElE;AAED,2FAA2F;AAC3F,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEpE;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CAG3F;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,yGAC2E,CAAC"}
|
|
@@ -15,6 +15,24 @@
|
|
|
15
15
|
* would be imported back by the other — the same cycle constraint that gave `error-text.ts` a
|
|
16
16
|
* module of its own.
|
|
17
17
|
*/
|
|
18
|
+
/**
|
|
19
|
+
* A path as a single POSIX shell word.
|
|
20
|
+
*
|
|
21
|
+
* Wrapping in quotes is not the same as quoting. A directory is package-controlled input — the
|
|
22
|
+
* manifest chooses it, an instance's `runtime:` can point anywhere, and a directory name may
|
|
23
|
+
* legally contain `'` — so a bare `'${dir}'` lets the path CLOSE the quote and everything after it
|
|
24
|
+
* parses as further commands. These strings are printed under "fix" as something the reader pastes,
|
|
25
|
+
* which makes the refusal itself the delivery vehicle: the operator runs the line we told them to
|
|
26
|
+
* run, on the box holding the trading funds.
|
|
27
|
+
*
|
|
28
|
+
* The rule is the standard one — end the quote, emit an escaped `'`, reopen — so `a'b` becomes
|
|
29
|
+
* `'a'\''b'`. Nothing inside single quotes is special to the shell, so no other character needs a
|
|
30
|
+
* case. Every path this module emits goes through it; the wrapping quotes stay because a real
|
|
31
|
+
* workspace path has spaces in it, which is what they were always for.
|
|
32
|
+
*/
|
|
33
|
+
function shellQuote(value) {
|
|
34
|
+
return `'${value.split("'").join(`'\\''`)}'`;
|
|
35
|
+
}
|
|
18
36
|
/**
|
|
19
37
|
* `openclaw senpi validate '<dir>'` — the route that records a proof.
|
|
20
38
|
*
|
|
@@ -25,15 +43,15 @@
|
|
|
25
43
|
* gate exists to survive), and never a `<placeholder>`, which an agent pastes literally.
|
|
26
44
|
*/
|
|
27
45
|
export function validateCommand(dir) {
|
|
28
|
-
return `openclaw senpi validate
|
|
46
|
+
return `openclaw senpi validate ${shellQuote(dir)}`;
|
|
29
47
|
}
|
|
30
48
|
/** The skills package validator: the author-side checks over a package, and no proof. */
|
|
31
49
|
export function deployPyValidateCommand(packageDir) {
|
|
32
|
-
return `python3 senpi-strategy-ops/scripts/deploy.py validate
|
|
50
|
+
return `python3 senpi-strategy-ops/scripts/deploy.py validate ${shellQuote(packageDir)}`;
|
|
33
51
|
}
|
|
34
52
|
/** The skills universe validator: the live-instrument half of the checks, and no proof. */
|
|
35
53
|
export function validateUniversePyCommand(packageDir) {
|
|
36
|
-
return `python3 senpi-strategy-ops/scripts/validate_universe.py
|
|
54
|
+
return `python3 senpi-strategy-ops/scripts/validate_universe.py ${shellQuote(packageDir)}`;
|
|
37
55
|
}
|
|
38
56
|
/**
|
|
39
57
|
* Both routes as an indented block, one command per line — the form every refusal below the "fix"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recheck-commands.js","sourceRoot":"","sources":["../../src/deploy/recheck-commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAAC,GAAW;IACzC,OAAO,
|
|
1
|
+
{"version":3,"file":"recheck-commands.js","sourceRoot":"","sources":["../../src/deploy/recheck-commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH;;;;;;;;;;;;;;GAcG;AACH,SAAS,UAAU,CAAC,KAAa;IAC/B,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;AAC/C,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAAC,GAAW;IACzC,OAAO,2BAA2B,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;AACtD,CAAC;AAED,yFAAyF;AACzF,MAAM,UAAU,uBAAuB,CAAC,UAAkB;IACxD,OAAO,yDAAyD,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;AAC3F,CAAC;AAED,2FAA2F;AAC3F,MAAM,UAAU,yBAAyB,CAAC,UAAkB;IAC1D,OAAO,2DAA2D,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;AAC7F,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAAC,YAA+B,EAAE,aAAqB;IACjF,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAC9D,OAAO,CAAC,GAAG,KAAK,EAAE,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/E,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAC3B,sGAAsG,CAAC"}
|
|
@@ -70,6 +70,8 @@ export interface DeployGatewayContext {
|
|
|
70
70
|
getScannerRows(runtimeId: string): Promise<ScannerRowLite[] | null>;
|
|
71
71
|
/** H4: does this runtime id have a LIVE handle (not merely a registry row)? */
|
|
72
72
|
runtimeIsLive(id: string): Promise<boolean>;
|
|
73
|
+
/** = the gateway's in-process install fence; see `installsInFlight` in index.ts. */
|
|
74
|
+
installPendingOnWallet(wallet: string): Promise<boolean>;
|
|
73
75
|
logger: {
|
|
74
76
|
info(line: string): void;
|
|
75
77
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../src/deploy/register.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../src/deploy/register.ts"],"names":[],"mappings":"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"}
|
package/dist/deploy/register.js
CHANGED
|
@@ -5,8 +5,8 @@ import path from "node:path";
|
|
|
5
5
|
import { withSpan } from "../telemetry/tracing.js";
|
|
6
6
|
import { recordDeployRollback, recordDeployStep } from "../telemetry/metrics.js";
|
|
7
7
|
import { isClosing, isDead } from "../senpi/strategy-status.js";
|
|
8
|
-
import { DEFAULT_MAX_WAIT_SEC, DEFAULT_TICK_WAIT_SEC, isWaitInRange, jobCapMs, MAX_WAIT_SEC, MIN_WAIT_SEC, } from "./deadlines.js";
|
|
9
|
-
import { extractTaxonomyCode } from "./taxonomy.js";
|
|
8
|
+
import { DEFAULT_MAX_WAIT_SEC, DEFAULT_TICK_WAIT_SEC, isWaitInRange, jobCapMs, MAX_WAIT_SEC, MIN_WAIT_SEC, withInstallDeadline, } from "./deadlines.js";
|
|
9
|
+
import { extractTaxonomyCode, firstIndeterminateCode } from "./taxonomy.js";
|
|
10
10
|
import { runDeploy } from "./orchestrator.js";
|
|
11
11
|
import { MCP_CALL_TIMEOUT_MS } from "./job.js";
|
|
12
12
|
/** The real clock for every orchestrator poll loop (create-ACTIVE and observe-tick alike). */
|
|
@@ -335,16 +335,24 @@ function buildDeployDeps(ctx, client, job) {
|
|
|
335
335
|
createCustomStrategy: (params) => client.createCustomStrategy(params, callDeadline()),
|
|
336
336
|
getPortfolio: () => client.getPortfolio({ forceFetch: true, ...callDeadline() }),
|
|
337
337
|
listLiveInstruments: () => client.listInstrumentNames(callDeadline()),
|
|
338
|
-
|
|
338
|
+
// The one dep that is NOT an MCP call: `installRuntimeCore` is in-process work (state hydrate,
|
|
339
|
+
// runtime construction, scanner children) and takes no signal, so there is nothing to abort.
|
|
340
|
+
// What is bounded is the WAIT — without it a wedged install outlived the job's own accounting:
|
|
341
|
+
// the watchdog force-terminated, the single-flight slot came back, and a re-run reinstalled on
|
|
342
|
+
// the same wallet while the first install was still in flight. The wait ends here; the wallet
|
|
343
|
+
// stays fenced for as long as the install actually runs (`index.ts` installsInFlight), and the
|
|
344
|
+
// unknown outcome is reported rather than unwound (`E_INSTALL_INDETERMINATE`).
|
|
345
|
+
installRuntime: (params) => withInstallDeadline(ctx.installRuntime({
|
|
339
346
|
runtimeYamlContent: params.runtimeYamlContent,
|
|
340
347
|
runtimeYamlDir: params.runtimeYamlDir,
|
|
341
348
|
id: params.id,
|
|
342
|
-
}),
|
|
349
|
+
})),
|
|
343
350
|
deleteRuntime: (id) => ctx.deleteRuntime(id),
|
|
344
351
|
registryFindByWallet: (wallet) => ctx.registryFindByWallet(wallet),
|
|
345
352
|
registryFindById: (id) => ctx.registryFindById(id),
|
|
346
353
|
getScannerRows: (runtimeId) => ctx.getScannerRows(runtimeId),
|
|
347
354
|
runtimeIsLive: (id) => ctx.runtimeIsLive(id),
|
|
355
|
+
installPendingOnWallet: (wallet) => ctx.installPendingOnWallet(wallet),
|
|
348
356
|
// D-6 rollback surfaces, both deadline-bounded. The flat check especially: it runs INSIDE the
|
|
349
357
|
// rollback, so a hung one costs the `[E_ROLLBACK_INCOMPLETE]` report itself — the job cap would
|
|
350
358
|
// force-terminate with a generic `instances: []` terminal and the stranded funded wallet would
|
|
@@ -580,8 +588,8 @@ async function startBody(ctx, params, respond, refuse, span) {
|
|
|
580
588
|
// not resume as a silent adoption. `funded` is still re-read live on this run.
|
|
581
589
|
const priorRequested = ctx.controller.priorRequestedFunding(pkg.id);
|
|
582
590
|
// D-5: the job's wall-clock cap. Sized to what the run can legitimately spend — every instance
|
|
583
|
-
// may burn a full ACTIVE poll
|
|
584
|
-
// the un-timed steps. Past it the watchdog stops the run and takes the slot back.
|
|
591
|
+
// may burn a full ACTIVE poll, a full tick-wait, and one bounded install — plus 300s of headroom
|
|
592
|
+
// for the un-timed steps. Past it the watchdog stops the run and takes the slot back.
|
|
585
593
|
const capMs = jobCapMs(maxWaitSec, tickWaitSec, pkg.instances.length);
|
|
586
594
|
// L5: the package attribute is the BASENAME, never the absolute path — a user's home directory
|
|
587
595
|
// is not a span dimension, and the basename is what identifies the package anyway.
|
|
@@ -617,6 +625,15 @@ async function startBody(ctx, params, respond, refuse, span) {
|
|
|
617
625
|
const code = extractTaxonomyCode(firstRefusal?.detail);
|
|
618
626
|
if (code)
|
|
619
627
|
span.setAttribute("senpi.deploy.refusal.code", code);
|
|
628
|
+
// Its OWN attribute, never `refusal.code`: this outcome rides a `failed` step, not a
|
|
629
|
+
// refusal, and folding it into the refusal dimension would corrupt the one signal the
|
|
630
|
+
// CLI's exit-code contract is read from. It needs a signal of its own because the deploy
|
|
631
|
+
// deliberately does NOT roll back here — so `senpi.deploy.rollback.count`, until now the
|
|
632
|
+
// only fleet-level tell that a deploy left a funded wallet behind, stays silent — and
|
|
633
|
+
// `outcome: failed` alone cannot tell a stranded wallet from an ENOSPC.
|
|
634
|
+
const indeterminate = firstIndeterminateCode(report);
|
|
635
|
+
if (indeterminate)
|
|
636
|
+
span.setAttribute("senpi.deploy.indeterminate.code", indeterminate);
|
|
620
637
|
// The SOFT calculated-minimum tier rides ATTRIBUTES, deliberately never
|
|
621
638
|
// `senpi.deploy.refusal.code` and never a span error: it warned, the deploy proceeded, and
|
|
622
639
|
// a dashboard that counted it as a refusal would report healthy deploys as failures. What
|