@codyswann/lisa 3.17.2 → 3.18.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/all/copy-overwrite/scripts/lisa-destructive-guard.mjs +30 -1
- package/all/copy-overwrite/scripts/lisa-work-item.mjs +136 -4
- package/dist/cli/ui-ci-quality-jobs-compute.d.ts.map +1 -1
- package/dist/cli/ui-ci-quality-jobs-compute.js +62 -17
- package/dist/cli/ui-ci-quality-jobs-compute.js.map +1 -1
- package/dist/core/lisa-owned-hash-ledger.d.ts.map +1 -1
- package/dist/core/lisa-owned-hash-ledger.js +5 -0
- package/dist/core/lisa-owned-hash-ledger.js.map +1 -1
- package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
- package/dist/core/upstream-evidence-manifest.js +15 -8
- package/dist/core/upstream-evidence-manifest.js.map +1 -1
- package/dist/health/agentic.d.ts +11 -0
- package/dist/health/agentic.d.ts.map +1 -1
- package/dist/health/agentic.js +29 -0
- package/dist/health/agentic.js.map +1 -1
- package/package.json +2 -2
- package/plugins/lisa/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa/.codex-plugin/skills/lisa-github-build-intake/SKILL.md +15 -0
- package/plugins/lisa/hooks/threshold-ratchet.mjs +44 -4
- package/plugins/lisa/scripts/lifecycle-label-trust.mjs +98 -2
- package/plugins/lisa/skills/lisa-github-build-intake/SKILL.md +15 -0
- package/plugins/lisa-agy/plugin.json +1 -1
- package/plugins/lisa-agy/scripts/lifecycle-label-trust.mjs +98 -2
- package/plugins/lisa-agy/skills/lisa-github-build-intake/SKILL.md +15 -0
- package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk-agy/plugin.json +1 -1
- package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-copilot/hooks/threshold-ratchet.mjs +44 -4
- package/plugins/lisa-copilot/scripts/lifecycle-label-trust.mjs +98 -2
- package/plugins/lisa-copilot/skills/lisa-github-build-intake/SKILL.md +15 -0
- package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cursor/hooks/threshold-ratchet.mjs +44 -4
- package/plugins/lisa-cursor/scripts/lifecycle-label-trust.mjs +98 -2
- package/plugins/lisa-cursor/skills/lisa-github-build-intake/SKILL.md +15 -0
- package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-expo-agy/plugin.json +1 -1
- package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs-agy/plugin.json +1 -1
- package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw-agy/plugin.json +1 -1
- package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser-agy/plugin.json +1 -1
- package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-rails-agy/plugin.json +1 -1
- package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript-agy/plugin.json +1 -1
- package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki-agy/plugin.json +1 -1
- package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/src/base/hooks/threshold-ratchet.mjs +44 -4
- package/plugins/src/base/scripts/lifecycle-label-trust.mjs +98 -2
- package/plugins/src/base/skills/lisa-github-build-intake/SKILL.md +15 -0
- package/rails/copy-overwrite/scripts/check-threshold-ratchet.mjs +44 -4
- package/typescript/copy-contents/.husky/commit-msg +10 -3
- package/typescript/copy-overwrite/scripts/check-threshold-ratchet.mjs +44 -4
package/dist/health/agentic.d.ts
CHANGED
|
@@ -23,6 +23,17 @@ export interface AgenticHealthRequest {
|
|
|
23
23
|
};
|
|
24
24
|
};
|
|
25
25
|
};
|
|
26
|
+
/**
|
|
27
|
+
* Declared level of the work-item traceability gate, or null when the
|
|
28
|
+
* project never mentions it. Null is NOT off: an undeclared gate still runs
|
|
29
|
+
* its built-in check, so an evaluator told "null" must read that as
|
|
30
|
+
* "running on Lisa's default", never as "not enforced".
|
|
31
|
+
*/
|
|
32
|
+
readonly gates: {
|
|
33
|
+
readonly traceability: {
|
|
34
|
+
readonly level: string | null;
|
|
35
|
+
};
|
|
36
|
+
};
|
|
26
37
|
};
|
|
27
38
|
readonly artifacts: readonly AgenticHealthArtifact[];
|
|
28
39
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agentic.d.ts","sourceRoot":"","sources":["../../src/health/agentic.ts"],"names":[],"mappings":"AAcA,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,YAAY,EAElB,MAAM,eAAe,CAAC;AACvB,OAAO,EAEL,KAAK,0BAA0B,EAChC,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"agentic.d.ts","sourceRoot":"","sources":["../../src/health/agentic.ts"],"names":[],"mappings":"AAcA,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,YAAY,EAElB,MAAM,eAAe,CAAC;AACvB,OAAO,EAEL,KAAK,0BAA0B,EAChC,MAAM,oBAAoB,CAAC;AAsC5B,iEAAiE;AACjE,MAAM,MAAM,mBAAmB,GAC3B,iBAAiB,GACjB,wBAAwB,GACxB,eAAe,GACf,UAAU,CAAC;AAEf;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,iFAAiF;AACjF,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC;IAC1B,QAAQ,CAAC,qBAAqB,EAAE,SAAS,aAAa,EAAE,CAAC;IACzD,QAAQ,CAAC,MAAM,EAAE;QACf,QAAQ,CAAC,OAAO,EAAE;YAChB,QAAQ,CAAC,QAAQ,EAAE;gBACjB,QAAQ,CAAC,IAAI,EAAE;oBAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAA;iBAAE,CAAC;aACrD,CAAC;SACH,CAAC;QACF;;;;;WAKG;QACH,QAAQ,CAAC,KAAK,EAAE;YACd,QAAQ,CAAC,YAAY,EAAE;gBAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;aAAE,CAAC;SAC1D,CAAC;KACH,CAAC;IACF,QAAQ,CAAC,SAAS,EAAE,SAAS,qBAAqB,EAAE,CAAC;CACtD;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,gFAAgF;AAChF,MAAM,MAAM,uBAAuB,GAC/B;IACE,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,SAAS,qBAAqB,EAAE,CAAC;CACtD,GACD;IAAE,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAA;CAAE,CAAC;AAEvC;;;;;;;GAOG;AACH,MAAM,MAAM,sBAAsB,GAAG,CACnC,OAAO,EAAE,oBAAoB,EAC7B,MAAM,EAAE,WAAW,KAChB,OAAO,CAAC,uBAAuB,CAAC,CAAC;AAEtC,oDAAoD;AACpD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,SAAS,CAAC,EAAE,sBAAsB,CAAC;IAC5C,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,4DAA4D;AAC5D,MAAM,WAAW,aAAc,SAAQ,0BAA0B;IAC/D,QAAQ,CAAC,OAAO,CAAC,EAAE,mBAAmB,CAAC;CACxC;AAoSD,qEAAqE;AACrE,wBAAgB,+BAA+B,CAC7C,SAAS,EAAE,OAAO,GACjB,uBAAuB,CAwCzB;AAqED;;;GAGG;AACH,wBAAsB,SAAS,CAC7B,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,YAAY,CAAC,CAiDvB"}
|
package/dist/health/agentic.js
CHANGED
|
@@ -8,6 +8,7 @@ import { summarizeHealthFindings, validateHealthResult, } from "./contract.js";
|
|
|
8
8
|
import { runDeterministicHealth, } from "./deterministic.js";
|
|
9
9
|
import { HealthDeadline } from "./deadline.js";
|
|
10
10
|
import { projectPathKind, readProjectJsonObject, readProjectText, resolveProjectPath, } from "./read-only-fs.js";
|
|
11
|
+
import { isJsonObject } from "../sync/json-path.js";
|
|
11
12
|
const DEFAULT_AGENTIC_TIMEOUT_MS = 60_000;
|
|
12
13
|
const MAX_AGENTIC_ARTIFACTS = 67;
|
|
13
14
|
const MAX_WORKFLOW_FILES = 64;
|
|
@@ -152,8 +153,36 @@ async function readAgenticConfig(projectRoot) {
|
|
|
152
153
|
gate: Object.freeze({ enabled }),
|
|
153
154
|
}),
|
|
154
155
|
}),
|
|
156
|
+
gates: Object.freeze({
|
|
157
|
+
traceability: Object.freeze({
|
|
158
|
+
level: traceabilityLevel(local) ?? traceabilityLevel(committed),
|
|
159
|
+
}),
|
|
160
|
+
}),
|
|
155
161
|
});
|
|
156
162
|
}
|
|
163
|
+
/**
|
|
164
|
+
* The declared pull-request level of the traceability gate, or null.
|
|
165
|
+
*
|
|
166
|
+
* Local config wins over committed, matching how the mutation gate above
|
|
167
|
+
* resolves — a developer's local override is the effective answer, and
|
|
168
|
+
* reporting the committed value while the local one governs would describe a
|
|
169
|
+
* configuration nobody is running.
|
|
170
|
+
* @param config - A parsed config object, or null when the file is absent
|
|
171
|
+
* @returns The declared level, or null when this file does not declare it
|
|
172
|
+
*/
|
|
173
|
+
function traceabilityLevel(config) {
|
|
174
|
+
const gates = config?.gates;
|
|
175
|
+
if (!isJsonObject(gates) || !isJsonObject(gates.traceability)) {
|
|
176
|
+
return null;
|
|
177
|
+
}
|
|
178
|
+
const declared = gates.traceability["pull-request"];
|
|
179
|
+
if (typeof declared === "string")
|
|
180
|
+
return declared;
|
|
181
|
+
if (isJsonObject(declared) && typeof declared.level === "string") {
|
|
182
|
+
return declared.level;
|
|
183
|
+
}
|
|
184
|
+
return null;
|
|
185
|
+
}
|
|
157
186
|
/** Collect confined project evidence with hard per-file and aggregate bounds. */
|
|
158
187
|
async function collectAgenticArtifacts(projectRoot, deterministic) {
|
|
159
188
|
const [overrides, managedDrift] = await Promise.all([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agentic.js","sourceRoot":"","sources":["../../src/health/agentic.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"agentic.js","sourceRoot":"","sources":["../../src/health/agentic.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
"verify:learner-frontmatter-built": "bun run build:dist && node scripts/verify-learner-frontmatter-built.mjs",
|
|
52
52
|
"verify:health-agentic": "bun run build:dist && node scripts/verify-health-agentic-built.mjs",
|
|
53
53
|
"verify:health-consumer": "bun run build:dist && node scripts/verify-health-consumer-built.mjs",
|
|
54
|
-
"lint:staged": "lint-staged"
|
|
54
|
+
"lint:staged": "lint-staged --config .lintstagedrc.json"
|
|
55
55
|
},
|
|
56
56
|
"engines": {
|
|
57
57
|
"npm": "please-use-bun",
|
|
@@ -129,7 +129,7 @@
|
|
|
129
129
|
}
|
|
130
130
|
},
|
|
131
131
|
"name": "@codyswann/lisa",
|
|
132
|
-
"version": "3.
|
|
132
|
+
"version": "3.18.0",
|
|
133
133
|
"description": "Claude Code governance framework that applies guardrails, guidance, and automated enforcement to projects",
|
|
134
134
|
"main": "dist/index.js",
|
|
135
135
|
"exports": {
|
|
@@ -216,6 +216,21 @@ The classifier returns `trusted`, `untrusted`, `unknownProvenance`, and a per-la
|
|
|
216
216
|
- a candidate whose `$READY` is **untrusted** is **not claimable** — skip it and leave it for a human to flip genuinely ready; report it in the summary rather than dispatching it;
|
|
217
217
|
- a candidate whose `$CLAIMED` is **untrusted** is **not claimed** — if its `$READY` is trusted it stays a normal candidate, exactly as if the bot label were absent.
|
|
218
218
|
|
|
219
|
+
#### 2c. A trusted claim is a skip reason
|
|
220
|
+
|
|
221
|
+
The scan filters on `--label "$READY"` alone, so an issue carrying **both** `$READY` and `$CLAIMED` comes back as a candidate. The rules above rescue the case where a *bot* applied the claim; they say nothing about the case where a **human** did — which is the strongest claim signal there is, and the one that was being ignored. An issue a person marked in-progress is somebody's active work, and dispatching a second agent onto it is how two branches end up fixing the same thing.
|
|
222
|
+
|
|
223
|
+
The classifier answers this directly, so the skill does not have to reason about it:
|
|
224
|
+
|
|
225
|
+
```json
|
|
226
|
+
{ "claimable": false,
|
|
227
|
+
"reason": "already carries a trusted \"status:in-progress\", so somebody is working it; intake must not dispatch a second agent onto the same issue" }
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
**A candidate with `claimable: false` is skipped and reported with its `reason`.** It is not an error and not a stall — it is the queue working. Never strip the claim to make it claimable: that is the label-flap the section above refuses, aimed at a human this time.
|
|
231
|
+
|
|
232
|
+
`claimable` is computed from the **trusted** set, not the raw labels, which is what keeps it from undoing 2b — a bot-applied claim leaves the issue claimable exactly as if it were absent.
|
|
233
|
+
|
|
219
234
|
**Never unlabel to correct this.** The bot re-applies its label on each subsequent review event, so reverting produces a label-flap loop that is worse than the defect. The guard is that intake stops *believing* the label; it writes nothing. Distrust is idempotent and cannot race.
|
|
220
235
|
|
|
221
236
|
A label whose provenance cannot be established (applied at creation, which GitHub records no `labeled` event for) is trusted but listed in `unknownProvenance` — failing closed there would ignore the human `status:ready` that opens the queue. Report that list; do not silently drop it.
|
|
@@ -430,9 +430,49 @@ function main() {
|
|
|
430
430
|
return 0;
|
|
431
431
|
}
|
|
432
432
|
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
433
|
+
/**
|
|
434
|
+
* True when `moduleUrl` names the module node was asked to run.
|
|
435
|
+
*
|
|
436
|
+
* The one implementation of this lives at `scripts/lib/invoked-as-script.mjs`,
|
|
437
|
+
* and every other shipped entry point imports it. This file cannot: it is
|
|
438
|
+
* materialized from `plugins/src/base/hooks/`, where it also runs as an
|
|
439
|
+
* agent-time hook, and a plugin payload has no `./lib/` to import from. So the
|
|
440
|
+
* rule is written out here rather than pointed at — the same accommodation
|
|
441
|
+
* `preflight-secrets.mjs` makes, for the same reason.
|
|
442
|
+
*
|
|
443
|
+
* Both sides are realpath'd. The previous spelling compared
|
|
444
|
+
* `fileURLToPath(import.meta.url)` against `path.resolve(process.argv[1])`, and
|
|
445
|
+
* `resolve` makes a path absolute without following symlinks. `import.meta.url`
|
|
446
|
+
* is the REAL path — node resolves ESM through realpath unless
|
|
447
|
+
* `--preserve-symlinks` or `--preserve-symlinks-main` is set — while `argv[1]`
|
|
448
|
+
* is whatever the caller typed. Reached through a symlinked checkout, a git
|
|
449
|
+
* worktree, or a `/tmp` path on macOS (`/tmp` being a symlink to `/private/tmp`),
|
|
450
|
+
* the two disagreed, `main()` never ran, and the process exited 0.
|
|
451
|
+
*
|
|
452
|
+
* For a CHECK that is a fail-OPEN, not a mild degradation: no output, exit 0,
|
|
453
|
+
* the npm script "succeeds", and the ratchet silently stops having an opinion.
|
|
454
|
+
* It was measured, not theorised — every control in the #2531 promotion tests
|
|
455
|
+
* no-opped until the fixture directory was realpath'd.
|
|
456
|
+
*
|
|
457
|
+
* Realpathing BOTH sides rather than only `argv[1]` matters under
|
|
458
|
+
* `--preserve-symlinks-main`, which tells node not to resolve the main entry:
|
|
459
|
+
* normalizing one side then compares a real path against a symlinked one and
|
|
460
|
+
* answers `false` for an entry point that WAS invoked directly. Any resolution
|
|
461
|
+
* error returns `false` — node loaded the entry from that path moments ago, so
|
|
462
|
+
* a path that will not resolve now is not the path this module came through.
|
|
463
|
+
* @param {string} moduleUrl - The caller's own `import.meta.url`.
|
|
464
|
+
* @param {string | undefined} [argv1] - Entry path; defaults to `process.argv[1]`.
|
|
465
|
+
* @returns {boolean} Whether the caller should run its CLI body.
|
|
466
|
+
*/
|
|
467
|
+
export function invokedAsScript(moduleUrl, argv1 = process.argv[1]) {
|
|
468
|
+
if (!argv1) return false;
|
|
469
|
+
try {
|
|
470
|
+
return fs.realpathSync(argv1) === fs.realpathSync(fileURLToPath(moduleUrl));
|
|
471
|
+
} catch {
|
|
472
|
+
return false;
|
|
473
|
+
}
|
|
474
|
+
}
|
|
475
|
+
|
|
476
|
+
if (invokedAsScript(import.meta.url)) {
|
|
437
477
|
process.exit(main());
|
|
438
478
|
}
|
|
@@ -39,6 +39,9 @@
|
|
|
39
39
|
* `status:` PREFIX and terminality is resolved from live config.
|
|
40
40
|
*/
|
|
41
41
|
|
|
42
|
+
import { realpathSync } from "node:fs";
|
|
43
|
+
import { fileURLToPath } from "node:url";
|
|
44
|
+
|
|
42
45
|
/** Lifecycle labels are identified by this prefix, never by a pinned set. */
|
|
43
46
|
export const LIFECYCLE_LABEL_PREFIX = "status:";
|
|
44
47
|
|
|
@@ -217,6 +220,62 @@ export function terminalLifecycleLabels(config) {
|
|
|
217
220
|
return [DEFAULT_TERMINAL_LIFECYCLE_LABEL];
|
|
218
221
|
}
|
|
219
222
|
|
|
223
|
+
/** The claimed role's label when config names none. */
|
|
224
|
+
const DEFAULT_CLAIMED_LIFECYCLE_LABEL = "status:in-progress";
|
|
225
|
+
|
|
226
|
+
/**
|
|
227
|
+
* The lifecycle label that means "somebody is already on this", from config.
|
|
228
|
+
* @param {unknown} config a parsed `.lisa.config.json`-shaped object
|
|
229
|
+
* @returns {string} the claimed role's label
|
|
230
|
+
*/
|
|
231
|
+
export function claimedLifecycleLabel(config) {
|
|
232
|
+
const claimed = readPath(config, ["github", "labels", "build", "claimed"]);
|
|
233
|
+
return typeof claimed === "string" && claimed.trim().length > 0
|
|
234
|
+
? claimed.trim()
|
|
235
|
+
: DEFAULT_CLAIMED_LIFECYCLE_LABEL;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
/**
|
|
239
|
+
* Whether intake may claim this issue, and why not when it may not.
|
|
240
|
+
*
|
|
241
|
+
* The scan filters on the ready role alone, so an issue carrying BOTH ready and
|
|
242
|
+
* claimed comes back as a candidate. Trust resolution then rescues the case
|
|
243
|
+
* where a bot applied the claim — but says nothing about the case where a
|
|
244
|
+
* *human* did, which is the strongest claim signal there is and the one that
|
|
245
|
+
* was being ignored. An issue a person marked in-progress is somebody's active
|
|
246
|
+
* work; dispatching a second agent onto it is how two branches end up fixing
|
|
247
|
+
* the same thing.
|
|
248
|
+
*
|
|
249
|
+
* Returned as a verdict rather than left to the skill's prose. This repository
|
|
250
|
+
* has measured the difference: executable controls hold, prose rules are
|
|
251
|
+
* followed by roughly nobody, including their own author. The scan already
|
|
252
|
+
* calls this classifier, so the answer arrives where the decision is made.
|
|
253
|
+
*
|
|
254
|
+
* A claim is only believed when TRUSTED, which is what keeps this from undoing
|
|
255
|
+
* the bot fix: a reflexive bot label leaves the issue claimable exactly as if
|
|
256
|
+
* it were absent.
|
|
257
|
+
* @param {object} options inputs
|
|
258
|
+
* @param {readonly string[]} options.trusted labels the classifier believes
|
|
259
|
+
* @param {unknown} options.config a parsed `.lisa.config.json`-shaped object
|
|
260
|
+
* @returns {{claimable: boolean, reason: string|null}} the verdict
|
|
261
|
+
*/
|
|
262
|
+
export function resolveClaimability({ trusted, config }) {
|
|
263
|
+
const claimed = claimedLifecycleLabel(config);
|
|
264
|
+
const normalizedClaimed = claimed.toLowerCase();
|
|
265
|
+
const hasTrustedClaim = (trusted ?? []).some(
|
|
266
|
+
label => String(label).trim().toLowerCase() === normalizedClaimed
|
|
267
|
+
);
|
|
268
|
+
if (!hasTrustedClaim) {
|
|
269
|
+
return { claimable: true, reason: null };
|
|
270
|
+
}
|
|
271
|
+
return {
|
|
272
|
+
claimable: false,
|
|
273
|
+
reason:
|
|
274
|
+
`already carries a trusted "${claimed}", so somebody is working it; ` +
|
|
275
|
+
`intake must not dispatch a second agent onto the same issue`,
|
|
276
|
+
};
|
|
277
|
+
}
|
|
278
|
+
|
|
220
279
|
/**
|
|
221
280
|
* Detect lifecycle labels that contradict native state, in BOTH directions.
|
|
222
281
|
*
|
|
@@ -482,11 +541,48 @@ async function main() {
|
|
|
482
541
|
terminalLabels: terminalLifecycleLabels(payload.config),
|
|
483
542
|
excludeLabels: trust.untrusted.map(entry => entry.label),
|
|
484
543
|
});
|
|
544
|
+
// Computed from `trust.trusted`, never from the raw label set: a bot-applied
|
|
545
|
+
// claim must leave the issue claimable exactly as if it were absent, which is
|
|
546
|
+
// the whole point of the trust pass above.
|
|
547
|
+
const claim = resolveClaimability({
|
|
548
|
+
trusted: trust.trusted,
|
|
549
|
+
config: payload.config,
|
|
550
|
+
});
|
|
485
551
|
|
|
486
|
-
process.stdout.write(
|
|
552
|
+
process.stdout.write(
|
|
553
|
+
`${JSON.stringify({ ...trust, ...drift, ...claim }, null, 2)}\n`
|
|
554
|
+
);
|
|
555
|
+
}
|
|
556
|
+
|
|
557
|
+
/**
|
|
558
|
+
* True when `moduleUrl` names the module node was asked to run.
|
|
559
|
+
*
|
|
560
|
+
* Both sides are realpath'd. The previous spelling compared `import.meta.url`
|
|
561
|
+
* against a `file://` string built from `process.argv[1]`, which compares a
|
|
562
|
+
* real path against whatever the caller typed — so reached through a symlinked
|
|
563
|
+
* checkout, a git worktree, or a `/tmp` path on macOS the two disagreed and
|
|
564
|
+
* `main()` never ran. This module writes its verdict to stdout, so a no-op
|
|
565
|
+
* leaves the caller parsing an empty payload: no untrusted labels, no
|
|
566
|
+
* unclaimable verdict, everything believed. A guard that fails open on the
|
|
567
|
+
* component whose job is deciding what to believe.
|
|
568
|
+
*
|
|
569
|
+
* Written out rather than imported: this is a plugin payload, which has no
|
|
570
|
+
* `./lib/` to resolve against. Same rule and same reasoning as
|
|
571
|
+
* `scripts/lib/invoked-as-script.mjs`.
|
|
572
|
+
* @param {string} moduleUrl - The caller's own `import.meta.url`.
|
|
573
|
+
* @param {string | undefined} [argv1] - Entry path; defaults to `process.argv[1]`.
|
|
574
|
+
* @returns {boolean} Whether the caller should run its CLI body.
|
|
575
|
+
*/
|
|
576
|
+
export function invokedAsScript(moduleUrl, argv1 = process.argv[1]) {
|
|
577
|
+
if (!argv1) return false;
|
|
578
|
+
try {
|
|
579
|
+
return realpathSync(argv1) === realpathSync(fileURLToPath(moduleUrl));
|
|
580
|
+
} catch {
|
|
581
|
+
return false;
|
|
582
|
+
}
|
|
487
583
|
}
|
|
488
584
|
|
|
489
|
-
if (import.meta.url
|
|
585
|
+
if (invokedAsScript(import.meta.url)) {
|
|
490
586
|
main().catch(error => {
|
|
491
587
|
process.stderr.write(`${error.message}\n`);
|
|
492
588
|
process.exitCode = 1;
|
|
@@ -216,6 +216,21 @@ The classifier returns `trusted`, `untrusted`, `unknownProvenance`, and a per-la
|
|
|
216
216
|
- a candidate whose `$READY` is **untrusted** is **not claimable** — skip it and leave it for a human to flip genuinely ready; report it in the summary rather than dispatching it;
|
|
217
217
|
- a candidate whose `$CLAIMED` is **untrusted** is **not claimed** — if its `$READY` is trusted it stays a normal candidate, exactly as if the bot label were absent.
|
|
218
218
|
|
|
219
|
+
#### 2c. A trusted claim is a skip reason
|
|
220
|
+
|
|
221
|
+
The scan filters on `--label "$READY"` alone, so an issue carrying **both** `$READY` and `$CLAIMED` comes back as a candidate. The rules above rescue the case where a *bot* applied the claim; they say nothing about the case where a **human** did — which is the strongest claim signal there is, and the one that was being ignored. An issue a person marked in-progress is somebody's active work, and dispatching a second agent onto it is how two branches end up fixing the same thing.
|
|
222
|
+
|
|
223
|
+
The classifier answers this directly, so the skill does not have to reason about it:
|
|
224
|
+
|
|
225
|
+
```json
|
|
226
|
+
{ "claimable": false,
|
|
227
|
+
"reason": "already carries a trusted \"status:in-progress\", so somebody is working it; intake must not dispatch a second agent onto the same issue" }
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
**A candidate with `claimable: false` is skipped and reported with its `reason`.** It is not an error and not a stall — it is the queue working. Never strip the claim to make it claimable: that is the label-flap the section above refuses, aimed at a human this time.
|
|
231
|
+
|
|
232
|
+
`claimable` is computed from the **trusted** set, not the raw labels, which is what keeps it from undoing 2b — a bot-applied claim leaves the issue claimable exactly as if it were absent.
|
|
233
|
+
|
|
219
234
|
**Never unlabel to correct this.** The bot re-applies its label on each subsequent review event, so reverting produces a label-flap loop that is worse than the defect. The guard is that intake stops *believing* the label; it writes nothing. Distrust is idempotent and cannot race.
|
|
220
235
|
|
|
221
236
|
A label whose provenance cannot be established (applied at creation, which GitHub records no `labeled` event for) is trusted but listed in `unknownProvenance` — failing closed there would ignore the human `status:ready` that opens the queue. Report that list; do not silently drop it.
|
|
@@ -39,6 +39,9 @@
|
|
|
39
39
|
* `status:` PREFIX and terminality is resolved from live config.
|
|
40
40
|
*/
|
|
41
41
|
|
|
42
|
+
import { realpathSync } from "node:fs";
|
|
43
|
+
import { fileURLToPath } from "node:url";
|
|
44
|
+
|
|
42
45
|
/** Lifecycle labels are identified by this prefix, never by a pinned set. */
|
|
43
46
|
export const LIFECYCLE_LABEL_PREFIX = "status:";
|
|
44
47
|
|
|
@@ -217,6 +220,62 @@ export function terminalLifecycleLabels(config) {
|
|
|
217
220
|
return [DEFAULT_TERMINAL_LIFECYCLE_LABEL];
|
|
218
221
|
}
|
|
219
222
|
|
|
223
|
+
/** The claimed role's label when config names none. */
|
|
224
|
+
const DEFAULT_CLAIMED_LIFECYCLE_LABEL = "status:in-progress";
|
|
225
|
+
|
|
226
|
+
/**
|
|
227
|
+
* The lifecycle label that means "somebody is already on this", from config.
|
|
228
|
+
* @param {unknown} config a parsed `.lisa.config.json`-shaped object
|
|
229
|
+
* @returns {string} the claimed role's label
|
|
230
|
+
*/
|
|
231
|
+
export function claimedLifecycleLabel(config) {
|
|
232
|
+
const claimed = readPath(config, ["github", "labels", "build", "claimed"]);
|
|
233
|
+
return typeof claimed === "string" && claimed.trim().length > 0
|
|
234
|
+
? claimed.trim()
|
|
235
|
+
: DEFAULT_CLAIMED_LIFECYCLE_LABEL;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
/**
|
|
239
|
+
* Whether intake may claim this issue, and why not when it may not.
|
|
240
|
+
*
|
|
241
|
+
* The scan filters on the ready role alone, so an issue carrying BOTH ready and
|
|
242
|
+
* claimed comes back as a candidate. Trust resolution then rescues the case
|
|
243
|
+
* where a bot applied the claim — but says nothing about the case where a
|
|
244
|
+
* *human* did, which is the strongest claim signal there is and the one that
|
|
245
|
+
* was being ignored. An issue a person marked in-progress is somebody's active
|
|
246
|
+
* work; dispatching a second agent onto it is how two branches end up fixing
|
|
247
|
+
* the same thing.
|
|
248
|
+
*
|
|
249
|
+
* Returned as a verdict rather than left to the skill's prose. This repository
|
|
250
|
+
* has measured the difference: executable controls hold, prose rules are
|
|
251
|
+
* followed by roughly nobody, including their own author. The scan already
|
|
252
|
+
* calls this classifier, so the answer arrives where the decision is made.
|
|
253
|
+
*
|
|
254
|
+
* A claim is only believed when TRUSTED, which is what keeps this from undoing
|
|
255
|
+
* the bot fix: a reflexive bot label leaves the issue claimable exactly as if
|
|
256
|
+
* it were absent.
|
|
257
|
+
* @param {object} options inputs
|
|
258
|
+
* @param {readonly string[]} options.trusted labels the classifier believes
|
|
259
|
+
* @param {unknown} options.config a parsed `.lisa.config.json`-shaped object
|
|
260
|
+
* @returns {{claimable: boolean, reason: string|null}} the verdict
|
|
261
|
+
*/
|
|
262
|
+
export function resolveClaimability({ trusted, config }) {
|
|
263
|
+
const claimed = claimedLifecycleLabel(config);
|
|
264
|
+
const normalizedClaimed = claimed.toLowerCase();
|
|
265
|
+
const hasTrustedClaim = (trusted ?? []).some(
|
|
266
|
+
label => String(label).trim().toLowerCase() === normalizedClaimed
|
|
267
|
+
);
|
|
268
|
+
if (!hasTrustedClaim) {
|
|
269
|
+
return { claimable: true, reason: null };
|
|
270
|
+
}
|
|
271
|
+
return {
|
|
272
|
+
claimable: false,
|
|
273
|
+
reason:
|
|
274
|
+
`already carries a trusted "${claimed}", so somebody is working it; ` +
|
|
275
|
+
`intake must not dispatch a second agent onto the same issue`,
|
|
276
|
+
};
|
|
277
|
+
}
|
|
278
|
+
|
|
220
279
|
/**
|
|
221
280
|
* Detect lifecycle labels that contradict native state, in BOTH directions.
|
|
222
281
|
*
|
|
@@ -482,11 +541,48 @@ async function main() {
|
|
|
482
541
|
terminalLabels: terminalLifecycleLabels(payload.config),
|
|
483
542
|
excludeLabels: trust.untrusted.map(entry => entry.label),
|
|
484
543
|
});
|
|
544
|
+
// Computed from `trust.trusted`, never from the raw label set: a bot-applied
|
|
545
|
+
// claim must leave the issue claimable exactly as if it were absent, which is
|
|
546
|
+
// the whole point of the trust pass above.
|
|
547
|
+
const claim = resolveClaimability({
|
|
548
|
+
trusted: trust.trusted,
|
|
549
|
+
config: payload.config,
|
|
550
|
+
});
|
|
485
551
|
|
|
486
|
-
process.stdout.write(
|
|
552
|
+
process.stdout.write(
|
|
553
|
+
`${JSON.stringify({ ...trust, ...drift, ...claim }, null, 2)}\n`
|
|
554
|
+
);
|
|
555
|
+
}
|
|
556
|
+
|
|
557
|
+
/**
|
|
558
|
+
* True when `moduleUrl` names the module node was asked to run.
|
|
559
|
+
*
|
|
560
|
+
* Both sides are realpath'd. The previous spelling compared `import.meta.url`
|
|
561
|
+
* against a `file://` string built from `process.argv[1]`, which compares a
|
|
562
|
+
* real path against whatever the caller typed — so reached through a symlinked
|
|
563
|
+
* checkout, a git worktree, or a `/tmp` path on macOS the two disagreed and
|
|
564
|
+
* `main()` never ran. This module writes its verdict to stdout, so a no-op
|
|
565
|
+
* leaves the caller parsing an empty payload: no untrusted labels, no
|
|
566
|
+
* unclaimable verdict, everything believed. A guard that fails open on the
|
|
567
|
+
* component whose job is deciding what to believe.
|
|
568
|
+
*
|
|
569
|
+
* Written out rather than imported: this is a plugin payload, which has no
|
|
570
|
+
* `./lib/` to resolve against. Same rule and same reasoning as
|
|
571
|
+
* `scripts/lib/invoked-as-script.mjs`.
|
|
572
|
+
* @param {string} moduleUrl - The caller's own `import.meta.url`.
|
|
573
|
+
* @param {string | undefined} [argv1] - Entry path; defaults to `process.argv[1]`.
|
|
574
|
+
* @returns {boolean} Whether the caller should run its CLI body.
|
|
575
|
+
*/
|
|
576
|
+
export function invokedAsScript(moduleUrl, argv1 = process.argv[1]) {
|
|
577
|
+
if (!argv1) return false;
|
|
578
|
+
try {
|
|
579
|
+
return realpathSync(argv1) === realpathSync(fileURLToPath(moduleUrl));
|
|
580
|
+
} catch {
|
|
581
|
+
return false;
|
|
582
|
+
}
|
|
487
583
|
}
|
|
488
584
|
|
|
489
|
-
if (import.meta.url
|
|
585
|
+
if (invokedAsScript(import.meta.url)) {
|
|
490
586
|
main().catch(error => {
|
|
491
587
|
process.stderr.write(`${error.message}\n`);
|
|
492
588
|
process.exitCode = 1;
|
|
@@ -216,6 +216,21 @@ The classifier returns `trusted`, `untrusted`, `unknownProvenance`, and a per-la
|
|
|
216
216
|
- a candidate whose `$READY` is **untrusted** is **not claimable** — skip it and leave it for a human to flip genuinely ready; report it in the summary rather than dispatching it;
|
|
217
217
|
- a candidate whose `$CLAIMED` is **untrusted** is **not claimed** — if its `$READY` is trusted it stays a normal candidate, exactly as if the bot label were absent.
|
|
218
218
|
|
|
219
|
+
#### 2c. A trusted claim is a skip reason
|
|
220
|
+
|
|
221
|
+
The scan filters on `--label "$READY"` alone, so an issue carrying **both** `$READY` and `$CLAIMED` comes back as a candidate. The rules above rescue the case where a *bot* applied the claim; they say nothing about the case where a **human** did — which is the strongest claim signal there is, and the one that was being ignored. An issue a person marked in-progress is somebody's active work, and dispatching a second agent onto it is how two branches end up fixing the same thing.
|
|
222
|
+
|
|
223
|
+
The classifier answers this directly, so the skill does not have to reason about it:
|
|
224
|
+
|
|
225
|
+
```json
|
|
226
|
+
{ "claimable": false,
|
|
227
|
+
"reason": "already carries a trusted \"status:in-progress\", so somebody is working it; intake must not dispatch a second agent onto the same issue" }
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
**A candidate with `claimable: false` is skipped and reported with its `reason`.** It is not an error and not a stall — it is the queue working. Never strip the claim to make it claimable: that is the label-flap the section above refuses, aimed at a human this time.
|
|
231
|
+
|
|
232
|
+
`claimable` is computed from the **trusted** set, not the raw labels, which is what keeps it from undoing 2b — a bot-applied claim leaves the issue claimable exactly as if it were absent.
|
|
233
|
+
|
|
219
234
|
**Never unlabel to correct this.** The bot re-applies its label on each subsequent review event, so reverting produces a label-flap loop that is worse than the defect. The guard is that intake stops *believing* the label; it writes nothing. Distrust is idempotent and cannot race.
|
|
220
235
|
|
|
221
236
|
A label whose provenance cannot be established (applied at creation, which GitHub records no `labeled` event for) is trusted but listed in `unknownProvenance` — failing closed there would ignore the human `status:ready` that opens the queue. Report that list; do not silently drop it.
|