@codyswann/lisa 2.323.1 → 2.324.1
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-enforcement-fallback.sh +71 -0
- package/all/copy-overwrite/scripts/lisa-hooks/block-no-verify.sh +102 -0
- package/all/copy-overwrite/scripts/lisa-hooks/block-shell-json-parsing.sh +220 -0
- package/all/copy-overwrite/scripts/lisa-hooks/parity-safety-net.sh +562 -0
- package/all/copy-overwrite/scripts/lisa-work-item.mjs +77 -5
- package/all/merge/.claude/settings.json +19 -4
- package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
- package/dist/core/upstream-evidence-manifest.js +25 -11
- package/dist/core/upstream-evidence-manifest.js.map +1 -1
- package/dist/standards/git-state.d.ts.map +1 -1
- package/dist/standards/git-state.js +10 -1
- package/dist/standards/git-state.js.map +1 -1
- package/dist/strategies/package-lisa.d.ts.map +1 -1
- package/dist/strategies/package-lisa.js +67 -2
- package/dist/strategies/package-lisa.js.map +1 -1
- package/package.json +1 -1
- 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-setup-remote-env/SKILL.md +24 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-setup-remote-env/assets/session-start.sh +17 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-setup-remote-env/scripts/setup-remote-env.mjs +37 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-setup-remote-env/scripts/toolchain.mjs +7 -3
- package/plugins/lisa/rules/eager/tracked-work.md +1 -1
- package/plugins/lisa/rules/reference/tracked-work.md +1 -1
- package/plugins/lisa/skills/lisa-setup-remote-env/SKILL.md +24 -0
- package/plugins/lisa/skills/lisa-setup-remote-env/assets/session-start.sh +17 -0
- package/plugins/lisa/skills/lisa-setup-remote-env/scripts/setup-remote-env.mjs +37 -0
- package/plugins/lisa/skills/lisa-setup-remote-env/scripts/toolchain.mjs +7 -3
- package/plugins/lisa-agy/plugin.json +1 -1
- package/plugins/lisa-agy/skills/lisa-setup-remote-env/SKILL.md +24 -0
- package/plugins/lisa-agy/skills/lisa-setup-remote-env/assets/session-start.sh +17 -0
- package/plugins/lisa-agy/skills/lisa-setup-remote-env/scripts/setup-remote-env.mjs +37 -0
- package/plugins/lisa-agy/skills/lisa-setup-remote-env/scripts/toolchain.mjs +7 -3
- 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/rules/eager/tracked-work.md +1 -1
- package/plugins/lisa-copilot/rules/reference/tracked-work.md +1 -1
- package/plugins/lisa-copilot/skills/lisa-setup-remote-env/SKILL.md +24 -0
- package/plugins/lisa-copilot/skills/lisa-setup-remote-env/assets/session-start.sh +17 -0
- package/plugins/lisa-copilot/skills/lisa-setup-remote-env/scripts/setup-remote-env.mjs +37 -0
- package/plugins/lisa-copilot/skills/lisa-setup-remote-env/scripts/toolchain.mjs +7 -3
- package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cursor/rules/tracked-work-reference.mdc +1 -1
- package/plugins/lisa-cursor/rules/tracked-work.mdc +1 -1
- package/plugins/lisa-cursor/skills/lisa-setup-remote-env/SKILL.md +24 -0
- package/plugins/lisa-cursor/skills/lisa-setup-remote-env/assets/session-start.sh +17 -0
- package/plugins/lisa-cursor/skills/lisa-setup-remote-env/scripts/setup-remote-env.mjs +37 -0
- package/plugins/lisa-cursor/skills/lisa-setup-remote-env/scripts/toolchain.mjs +7 -3
- 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/rules/eager/tracked-work.md +1 -1
- package/plugins/src/base/rules/reference/tracked-work.md +1 -1
- package/plugins/src/base/skills/lisa-setup-remote-env/SKILL.md +24 -0
- package/plugins/src/base/skills/lisa-setup-remote-env/assets/session-start.sh +17 -0
- package/plugins/src/base/skills/lisa-setup-remote-env/scripts/setup-remote-env.mjs +37 -0
- package/plugins/src/base/skills/lisa-setup-remote-env/scripts/toolchain.mjs +7 -3
- package/scripts/build-plugins.sh +32 -0
- package/scripts/generate-upstream-evidence-manifest.mjs +50 -11
- package/scripts/lisa-enforcement-fallback.sh +71 -0
- package/scripts/lisa-remote-env/session-start.sh +17 -0
|
@@ -45,6 +45,29 @@ class TrackingError extends Error {}
|
|
|
45
45
|
* @param {string} noun What the reference names.
|
|
46
46
|
* @returns {string} A message naming the actual fault.
|
|
47
47
|
*/
|
|
48
|
+
export class TrackerUnreachableError extends TrackingError {}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Turn a failed `gh` invocation into the right kind of refusal.
|
|
52
|
+
*
|
|
53
|
+
* The distinction is the whole point: a missing binary or a refused credential
|
|
54
|
+
* means the tracker could not be ASKED, while a "no" from the tracker is an
|
|
55
|
+
* answer. Absence of evidence is not evidence of absence, and only the first
|
|
56
|
+
* kind may be degraded — treating them alike would either strand finished work
|
|
57
|
+
* or wave through an item that genuinely is not committable.
|
|
58
|
+
* @param {{status: number|null, error?: Error, stderr?: string}} result Spawn result.
|
|
59
|
+
* @param {string} ref Work item reference.
|
|
60
|
+
* @returns {Error} The error to throw.
|
|
61
|
+
*/
|
|
62
|
+
export function githubFailure(result, ref) {
|
|
63
|
+
const reason = githubFailureReason(result, ref, "GitHub issue");
|
|
64
|
+
const unreachable =
|
|
65
|
+
result.error?.code === "ENOENT" || /cannot authenticate/.test(reason);
|
|
66
|
+
return unreachable
|
|
67
|
+
? new TrackerUnreachableError(reason)
|
|
68
|
+
: new TrackingError(reason);
|
|
69
|
+
}
|
|
70
|
+
|
|
48
71
|
export function githubFailureReason(result, ref, noun) {
|
|
49
72
|
if (result.error?.code === "ENOENT") {
|
|
50
73
|
return (
|
|
@@ -577,8 +600,7 @@ function githubIssue(ref, contract) {
|
|
|
577
600
|
allowFailure: true,
|
|
578
601
|
}
|
|
579
602
|
);
|
|
580
|
-
if (result.status !== 0)
|
|
581
|
-
throw new TrackingError(githubFailureReason(result, ref, "GitHub issue"));
|
|
603
|
+
if (result.status !== 0) throw githubFailure(result, ref);
|
|
582
604
|
const issue = safeJson(result.stdout, `GitHub issue ${ref}`);
|
|
583
605
|
if (String(issue.number) !== number)
|
|
584
606
|
throw new TrackingError(`GitHub returned the wrong issue for ${ref}`);
|
|
@@ -814,10 +836,48 @@ function linearIssue(ref, contract) {
|
|
|
814
836
|
return issue;
|
|
815
837
|
}
|
|
816
838
|
|
|
839
|
+
/**
|
|
840
|
+
* Ask the tracker whether this work item may be committed against.
|
|
841
|
+
*
|
|
842
|
+
* When the tracker cannot be REACHED, the live checks are reported as skipped
|
|
843
|
+
* rather than enforced or silently dropped. Everything checkable without a
|
|
844
|
+
* network — the trailer is present, well formed, and matches this branch's
|
|
845
|
+
* binding — has already run by the time this is called, and the semantic
|
|
846
|
+
* checks it cannot do here are re-run in CI by a REQUIRED status check
|
|
847
|
+
* ("Work-Item Traceability"), with credentials, before anything can merge.
|
|
848
|
+
*
|
|
849
|
+
* So the guarantee is not lost; it moves to a gate that cannot be bypassed.
|
|
850
|
+
* That is the whole justification, and it holds only while that check stays
|
|
851
|
+
* required — if it is ever made optional, this degradation becomes a hole.
|
|
852
|
+
*
|
|
853
|
+
* The alternative was worse in both directions. Refusing outright strands
|
|
854
|
+
* finished, green work on any surface without a GitHub credential — a cloud
|
|
855
|
+
* container, for one — and the agent's only remaining move is a bypass that
|
|
856
|
+
* skips the offline checks too. Enforcing nothing hides the difference between
|
|
857
|
+
* "could not ask" and "the tracker said no".
|
|
858
|
+
* @param {string} ref Work item reference.
|
|
859
|
+
* @param {object} [contract] Tracker contract.
|
|
860
|
+
* @returns {object|undefined} The live item, or undefined when unreachable.
|
|
861
|
+
*/
|
|
817
862
|
function validateLive(ref, contract = trackerContract()) {
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
863
|
+
try {
|
|
864
|
+
if (contract.provider === "github") return githubIssue(ref, contract);
|
|
865
|
+
if (contract.provider === "jira") return jiraIssue(ref, contract);
|
|
866
|
+
return linearIssue(ref, contract);
|
|
867
|
+
} catch (error) {
|
|
868
|
+
if (!(error instanceof TrackerUnreachableError)) throw error;
|
|
869
|
+
// Loud on stderr, never silent: a degradation nobody sees is the failure
|
|
870
|
+
// mode this exists to avoid, not a milder version of it.
|
|
871
|
+
console.error(
|
|
872
|
+
`\n⚠️ Work-item live validation SKIPPED for ${ref}.\n` +
|
|
873
|
+
`${error.message}\n\n` +
|
|
874
|
+
`The offline checks still ran: the trailer is present, well formed and ` +
|
|
875
|
+
`bound to this branch.\nWhat could not be checked here — that the item ` +
|
|
876
|
+
`is open, claimed and a leaf — is re-run\nwith credentials by the ` +
|
|
877
|
+
`required "Work-Item Traceability" check before this can merge.\n`
|
|
878
|
+
);
|
|
879
|
+
return undefined;
|
|
880
|
+
}
|
|
821
881
|
}
|
|
822
882
|
|
|
823
883
|
function textContainsBacklink(value, prUrl) {
|
|
@@ -836,6 +896,18 @@ function assertBacklink(
|
|
|
836
896
|
contract,
|
|
837
897
|
issue = validateLive(ref, contract)
|
|
838
898
|
) {
|
|
899
|
+
// The PR check never degrades, because it IS the re-check the local hooks
|
|
900
|
+
// degrade in favour of. A required status check that passes when it could
|
|
901
|
+
// not reach the tracker would make the whole arrangement circular: local
|
|
902
|
+
// defers to CI, CI defers to nothing.
|
|
903
|
+
if (!issue) {
|
|
904
|
+
throw new TrackingError(
|
|
905
|
+
`cannot verify ${ref} against the tracker, and this check is the one ` +
|
|
906
|
+
`that must.\nLocal hooks may skip live validation when the tracker ` +
|
|
907
|
+
`is unreachable; this check may not,\nbecause it is what they defer ` +
|
|
908
|
+
`to. Fix the tracker credential for this run.`
|
|
909
|
+
);
|
|
910
|
+
}
|
|
839
911
|
if (contract.provider === "github") {
|
|
840
912
|
const native = (issue.closedByPullRequestsReferences ?? []).some(
|
|
841
913
|
pr => pr.url === prUrl
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"attribution": {
|
|
3
|
-
"commit": "
|
|
4
|
-
"pr": "
|
|
3
|
+
"commit": "\ud83e\udd16 Generated with Claude Code\n\nCo-Authored-By: Claude",
|
|
4
|
+
"pr": "\ud83e\udd16 Generated with Claude Code"
|
|
5
5
|
},
|
|
6
6
|
"enabledPlugins": {
|
|
7
7
|
"lisa@lisa": true,
|
|
@@ -33,7 +33,22 @@
|
|
|
33
33
|
"CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1"
|
|
34
34
|
},
|
|
35
35
|
"permissions": {
|
|
36
|
-
"deny": [
|
|
36
|
+
"deny": [
|
|
37
|
+
"Read(./.entire/metadata/**)"
|
|
38
|
+
]
|
|
37
39
|
},
|
|
38
|
-
"plansDirectory": "./plans"
|
|
40
|
+
"plansDirectory": "./plans",
|
|
41
|
+
"hooks": {
|
|
42
|
+
"PreToolUse": [
|
|
43
|
+
{
|
|
44
|
+
"matcher": "Bash",
|
|
45
|
+
"hooks": [
|
|
46
|
+
{
|
|
47
|
+
"type": "command",
|
|
48
|
+
"command": "bash \"$CLAUDE_PROJECT_DIR\"/scripts/lisa-enforcement-fallback.sh"
|
|
49
|
+
}
|
|
50
|
+
]
|
|
51
|
+
}
|
|
52
|
+
]
|
|
53
|
+
}
|
|
39
54
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upstream-evidence-manifest.d.ts","sourceRoot":"","sources":["../../src/core/upstream-evidence-manifest.ts"],"names":[],"mappings":"AACA,iFAAiF;AACjF,eAAO,MAAM,0BAA0B,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"upstream-evidence-manifest.d.ts","sourceRoot":"","sources":["../../src/core/upstream-evidence-manifest.ts"],"names":[],"mappings":"AACA,iFAAiF;AACjF,eAAO,MAAM,0BAA0B,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA0nEpE,CAAC;AAEL,4EAA4E;AAC5E,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAikNjE,CAAC;AAEL,sFAAsF;AACtF,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAk6I/D,CAAC"}
|
|
@@ -3,7 +3,11 @@
|
|
|
3
3
|
export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
|
|
4
4
|
"all/copy-contents/.gitattributes": "9d3831007e681186a3673e1037ef3fc82980cab2fc04e27c0868e562912c9e9f",
|
|
5
5
|
"all/copy-contents/gitignore": "2dbf7fd2f2020fc7824c432342002d9ca3ebb57b2872e761b14e942b23479a11",
|
|
6
|
-
"all/copy-overwrite/scripts/lisa-
|
|
6
|
+
"all/copy-overwrite/scripts/lisa-enforcement-fallback.sh": "9cab71562d01421d57c6719318a4d03a6249a45c1aea434db3ff26e3065eeb66",
|
|
7
|
+
"all/copy-overwrite/scripts/lisa-hooks/block-no-verify.sh": "aa95a84f9f9224914947a09b858535aa8bd052199ff64cb53768cf78fb69b687",
|
|
8
|
+
"all/copy-overwrite/scripts/lisa-hooks/block-shell-json-parsing.sh": "3b5f074f3ab5708030af507eea962389f3b067c5dbdc76580bd9e44d3ac6c603",
|
|
9
|
+
"all/copy-overwrite/scripts/lisa-hooks/parity-safety-net.sh": "062c69eea85157f1e941ec3626d8912aa9f182af6ccdbe19687588a6074db5ce",
|
|
10
|
+
"all/copy-overwrite/scripts/lisa-work-item.mjs": "6a8be8577242588f14ab52b25b2a22b6def53aefa9513b4d3d7c49f4d8027079",
|
|
7
11
|
"all/create-only/.claude/rules/PROJECT_RULES.md": "6e1c7923ad2a15356babc60c97e7f97be728d790af285b6a7cd7d1b4d39cd97f",
|
|
8
12
|
"all/create-only/.lisaignore": "3c9827e7e98daa46510b5357cd6dd9406da1821e64cc46d2eea9f311cd6d06b9",
|
|
9
13
|
"all/create-only/scripts/remote-agent-aws-setup.sh": "7677908a345891810d2104ba8b2fd1a8318bb29c408fb5ce0110d57beef9b556",
|
|
@@ -12,7 +16,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
|
|
|
12
16
|
"all/github-rulesets/base.json": "58b9606f185cdca8b17218829aac333b7d8c08f0f2b4f86d7e360f7be1de4787",
|
|
13
17
|
"all/github-rulesets/prevent-delete.json": "e4fb26390a8bfee34b27be5b369f376a1a9a00b797fd8d3ce51cb71facb826a4",
|
|
14
18
|
"all/github-rulesets/protect-tags.json": "387f824e3ea58a803223e42e08326504a39e6a7a0c650a0bbfdfb4653854b722",
|
|
15
|
-
"all/merge/.claude/settings.json": "
|
|
19
|
+
"all/merge/.claude/settings.json": "4d41a745030e5f33eb4d4fe1f1b12268680f104ea55a30c4d9f55a6e22ad6fca",
|
|
16
20
|
"cdk/copy-overwrite/.github/workflows/.keep": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
|
17
21
|
"cdk/copy-overwrite/eslint.cdk.ts": "074fe7a638ed95210339a9215abf75fa52bb10e678f2fd58523ff8a9d32ea4b6",
|
|
18
22
|
"cdk/copy-overwrite/eslint.config.ts": "f1917ade3f1170ac8027110b44499732b9d9d3a2d42f256e37cd09930970298c",
|
|
@@ -339,7 +343,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
|
|
|
339
343
|
"plugins/src/base/rules/eager/settled-decisions.md": "f5339c81b8d29f628830e6147314cbb941b9d9e6d87c3834d8fe7adc4b46ef4c",
|
|
340
344
|
"plugins/src/base/rules/eager/stale-state-claims.md": "faf5057f5910237b8d5048dbcccb73e0cd03762a8eefbeae43b5d0153104a85a",
|
|
341
345
|
"plugins/src/base/rules/eager/tool-access-gate.md": "a5413a43ec353f768586e0a1cde3836db025cb5d8b80821020602995e71aa296",
|
|
342
|
-
"plugins/src/base/rules/eager/tracked-work.md": "
|
|
346
|
+
"plugins/src/base/rules/eager/tracked-work.md": "ae5177a3ce321007dfc03f44974f25110aed578bcdf2283d5c5f12c838f82673",
|
|
343
347
|
"plugins/src/base/rules/eager/upstream-to-lisa.md": "eb8b37e789423dba78e3a77951db087c4d3f56a88478b63107ec6b9ddbf23b13",
|
|
344
348
|
"plugins/src/base/rules/eager/usage-accounting.md": "b93fa782d61911579b25363e465bb1f4e9b7e4edb54465a346d52f74dffe5a97",
|
|
345
349
|
"plugins/src/base/rules/eager/verification.md": "43f154f65e8ee1fa4fb33039f154855b569ab338902c86a8812e66715895cf7b",
|
|
@@ -377,7 +381,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
|
|
|
377
381
|
"plugins/src/base/rules/reference/settled-decisions.md": "6c84f309a1f765eba1648d6ace836387bd96b924f245c16cf3629f501ef6bb18",
|
|
378
382
|
"plugins/src/base/rules/reference/stale-state-claims.md": "6329e1a7629f9a12f10454c767842aecee4964df8b7bb4aebda9dde3c0959c2a",
|
|
379
383
|
"plugins/src/base/rules/reference/tool-access-gate.md": "70fcd6cd92dc003a40886b1bef02540e6401f5b70ba97308d42bbbddc0206eab",
|
|
380
|
-
"plugins/src/base/rules/reference/tracked-work.md": "
|
|
384
|
+
"plugins/src/base/rules/reference/tracked-work.md": "85fb31a5d7aad44d04592bb7feea7ad02808eeeb6950639ad452fcec1bc3c86b",
|
|
381
385
|
"plugins/src/base/rules/reference/upstream-to-lisa.md": "dcf07f8eba66aaf1d132bfaeff73cbf7576279822893235a3c3f8cbc4a4a3323",
|
|
382
386
|
"plugins/src/base/rules/reference/usage-accounting.md": "d2a24f8f176dbd900beb6e396fc669008b0be0c9033fac5c1c1ecc19002bd7c2",
|
|
383
387
|
"plugins/src/base/rules/reference/verification.md": "0a4424d79fae5ce028d08b98523a01f51cbe07c1bcc0a094048d7a25adc075d8",
|
|
@@ -559,11 +563,11 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
|
|
|
559
563
|
"plugins/src/base/skills/lisa-setup-linear/SKILL.md": "ec76f832a6df6f58b163f7f5ba6826ed2fcbddc91e44a8372e874858e4d0c518",
|
|
560
564
|
"plugins/src/base/skills/lisa-setup-notion/SKILL.md": "f5a1e9290789fd1c33675168d30461fb24a11c98a433ef777c1f536bc2f905ef",
|
|
561
565
|
"plugins/src/base/skills/lisa-setup-remote-aws/SKILL.md": "80fbf157f9c562c033886c25a99b37356602edd9e61cd2d492f339769ddcf97e",
|
|
562
|
-
"plugins/src/base/skills/lisa-setup-remote-env/SKILL.md": "
|
|
563
|
-
"plugins/src/base/skills/lisa-setup-remote-env/assets/session-start.sh": "
|
|
566
|
+
"plugins/src/base/skills/lisa-setup-remote-env/SKILL.md": "821f9f7db39259c3aef24dc369c7cdcfb55a85d61742b32ac2a961e1b3e263a4",
|
|
567
|
+
"plugins/src/base/skills/lisa-setup-remote-env/assets/session-start.sh": "cb63d08b14ab7aa2d405e6770e0cf7db5d6588ae1dcb924ea6224b026fcff496",
|
|
564
568
|
"plugins/src/base/skills/lisa-setup-remote-env/assets/setup.sh": "c04afb1cf8e14a2713645228e679fa7772559488330a240ec0297cae6afd03e2",
|
|
565
|
-
"plugins/src/base/skills/lisa-setup-remote-env/scripts/setup-remote-env.mjs": "
|
|
566
|
-
"plugins/src/base/skills/lisa-setup-remote-env/scripts/toolchain.mjs": "
|
|
569
|
+
"plugins/src/base/skills/lisa-setup-remote-env/scripts/setup-remote-env.mjs": "1f451881342364d086640b59914a3b07286a3734caa63f01efe64531d3bde7e4",
|
|
570
|
+
"plugins/src/base/skills/lisa-setup-remote-env/scripts/toolchain.mjs": "8822af39d0251a2e4fb0eac9157ba9e63ea813d914240ca0cacacd6cb7cbb5bb",
|
|
567
571
|
"plugins/src/base/skills/lisa-setup-remote-env/scripts/verify-remote-env.mjs": "82bc2a27a0a5afb2ff413a88365c619fd7f0eaada5de3ccabf2000938f0607a4",
|
|
568
572
|
"plugins/src/base/skills/lisa-setup-sonar/SKILL.md": "53fbd8acce4b5e47e88195a7b90d5be424fa6ef7ad872f52c50467c690664c3b",
|
|
569
573
|
"plugins/src/base/skills/lisa-sonarcloud-access/SKILL.md": "031acb01195ae59010a65335da98d46a1d6080e749823d6f6d157938d9e96648",
|
|
@@ -949,7 +953,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
|
|
|
949
953
|
"rails/deletions.json": "eeadf9a2b1677913199a235091a8d6190477f3e2a5fd598d62cf658cb59a8099",
|
|
950
954
|
"rails/github-rulesets/quality-checks.json": "0ec1c366589edbaa6b8f45f940cef3ada5ed7b1a956d98d3fa6034b0f78fbc7c",
|
|
951
955
|
"rails/merge/.claude/settings.json": "9c49f8c7c453f8749c90def3e22d412c3345c533d24b30dc7745ffa052ad6fa1",
|
|
952
|
-
"scripts/build-plugins.sh": "
|
|
956
|
+
"scripts/build-plugins.sh": "b57413e6e003be102e82e0a8a6b44a137f5d0aeed8da4c1f4f99919a0d7e8b04",
|
|
953
957
|
"scripts/check-duplicate-versions.mjs": "84d97e94eb834522848ddce951bb54ae9da1e4be252e2c51fed0c01c4f4d6b72",
|
|
954
958
|
"scripts/check-learnings-budget.ts": "007430c2d6938efcc79ccbfd5717ebe2c7cf66b4de9a21a3e67b8db7f3600349",
|
|
955
959
|
"scripts/check-plugins-sync.sh": "3a99cbff0e8ec5e7c944690eae003a6d51b51c85436d77bd37faea4d553728af",
|
|
@@ -971,7 +975,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
|
|
|
971
975
|
"scripts/generate-codex-plugin-artifacts.mjs": "1d1a362afb8dba408741a3eed9fe583296f6bcb048608979f73f359cd609c03d",
|
|
972
976
|
"scripts/generate-copilot-plugin-artifacts.mjs": "70d283eed7cb7c1351d13cf0497f06dec175562c5918921c404393a76f11278f",
|
|
973
977
|
"scripts/generate-cursor-plugin-artifacts.mjs": "d8806197a723f0c2b50a8155ffc5b6f0abc30c68dc2385cb80b0dd066d061231",
|
|
974
|
-
"scripts/generate-upstream-evidence-manifest.mjs": "
|
|
978
|
+
"scripts/generate-upstream-evidence-manifest.mjs": "de1eb5adaa6252b4abe5859933bff0ab2a52e19cc5a3fc5a41018fbb57b766d1",
|
|
975
979
|
"scripts/github-status-check.sh": "876914c369c5bd58f4a5f3c41d0c1264c6923f329a644f90640d15b434a0fbd1",
|
|
976
980
|
"scripts/install-claude-plugins.sh": "ed60ed3afc25175b81439330dbf26ff639f55fabec54223df4c7266805c84f22",
|
|
977
981
|
"scripts/internal-agy-skill-policy.json": "c2ce87d2eeebfdc9f24d6486425c010cf9289376f8a459f4767ca22d2bf8670d",
|
|
@@ -985,11 +989,12 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
|
|
|
985
989
|
"scripts/lib/reusable-workflow-contract.d.mts": "791f01b55dd7a6b5d9a5f4cb9c44167caa146c2fc3c31a2ae4c2d8a350adc2f1",
|
|
986
990
|
"scripts/lib/reusable-workflow-contract.mjs": "134ee2a327290f066f1eb318b5ed53c711557c3e10ed462c00ff5c97cfb20863",
|
|
987
991
|
"scripts/lisa-commit-and-pr-local.sh": "605409c3ce6ec38ad3275604291a1ceae98f7807a605654263bc14f811c03903",
|
|
992
|
+
"scripts/lisa-enforcement-fallback.sh": "9cab71562d01421d57c6719318a4d03a6249a45c1aea434db3ff26e3065eeb66",
|
|
988
993
|
"scripts/lisa-github-environments.sh": "0a76e92f108519abaf3e29991299ec3b0db20ea533e69e6d2a53d802dba9c370",
|
|
989
994
|
"scripts/lisa-github-repo-settings.sh": "4afbccdfb08c62ba13afee42ec8561a28facf87c61f6f4b80000115328364d54",
|
|
990
995
|
"scripts/lisa-github-repo-setup.sh": "dc2f1c9d718aa34ba57161120d9319b5f78fe6b0b496d8e3c77226a08795aa36",
|
|
991
996
|
"scripts/lisa-github-rulesets.sh": "920a43ba268421b6fe55096062bd85850468bee9389f6006ad7c671010e7cccb",
|
|
992
|
-
"scripts/lisa-remote-env/session-start.sh": "
|
|
997
|
+
"scripts/lisa-remote-env/session-start.sh": "cb63d08b14ab7aa2d405e6770e0cf7db5d6588ae1dcb924ea6224b026fcff496",
|
|
993
998
|
"scripts/lisa-remote-env/setup.sh": "c04afb1cf8e14a2713645228e679fa7772559488330a240ec0297cae6afd03e2",
|
|
994
999
|
"scripts/lisa-update-local.sh": "c811f9e10dbcb38499a9791c1ae9051460b347051d04a1d2046925bab9a53c96",
|
|
995
1000
|
"scripts/lisa-work-item.mjs": "51081847e980f314a764c2e50a7a121b1ced9ef4b980f33898057de4c7b852e6",
|
|
@@ -1229,6 +1234,10 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
|
|
|
1229
1234
|
"README.md": true,
|
|
1230
1235
|
"all/copy-contents/.gitattributes": true,
|
|
1231
1236
|
"all/copy-contents/gitignore": true,
|
|
1237
|
+
"all/copy-overwrite/scripts/lisa-enforcement-fallback.sh": true,
|
|
1238
|
+
"all/copy-overwrite/scripts/lisa-hooks/block-no-verify.sh": true,
|
|
1239
|
+
"all/copy-overwrite/scripts/lisa-hooks/block-shell-json-parsing.sh": true,
|
|
1240
|
+
"all/copy-overwrite/scripts/lisa-hooks/parity-safety-net.sh": true,
|
|
1232
1241
|
"all/copy-overwrite/scripts/lisa-work-item.mjs": true,
|
|
1233
1242
|
"all/create-only/.claude/rules/PROJECT_RULES.md": true,
|
|
1234
1243
|
"all/create-only/.lisaignore": true,
|
|
@@ -6543,6 +6552,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
|
|
|
6543
6552
|
"scripts/lib/reusable-workflow-contract.d.mts": true,
|
|
6544
6553
|
"scripts/lib/reusable-workflow-contract.mjs": true,
|
|
6545
6554
|
"scripts/lisa-commit-and-pr-local.sh": true,
|
|
6555
|
+
"scripts/lisa-enforcement-fallback.sh": true,
|
|
6546
6556
|
"scripts/lisa-github-environments.sh": true,
|
|
6547
6557
|
"scripts/lisa-github-repo-settings.sh": true,
|
|
6548
6558
|
"scripts/lisa-github-repo-setup.sh": true,
|
|
@@ -7174,7 +7184,9 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
|
|
|
7174
7184
|
"tests/unit/hooks/enforce-verification-gate-preserve.test.ts": true,
|
|
7175
7185
|
"tests/unit/hooks/enforce-verification-gate-v1.test.ts": true,
|
|
7176
7186
|
"tests/unit/hooks/enforce-verification-gate-v2.test.ts": true,
|
|
7187
|
+
"tests/unit/hooks/enforcement-fallback.test.ts": true,
|
|
7177
7188
|
"tests/unit/hooks/enforcement-gates-e2e.test.ts": true,
|
|
7189
|
+
"tests/unit/hooks/host-enforcement-fallback.test.ts": true,
|
|
7178
7190
|
"tests/unit/hooks/inject-rules.test.ts": true,
|
|
7179
7191
|
"tests/unit/hooks/install-pkgs-worktree-node-modules.test.ts": true,
|
|
7180
7192
|
"tests/unit/hooks/lint-on-edit.test.ts": true,
|
|
@@ -7253,6 +7265,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
|
|
|
7253
7265
|
"tests/unit/scripts/upstream-evidence-manifest.test.ts": true,
|
|
7254
7266
|
"tests/unit/scripts/verification-coverage.test.ts": true,
|
|
7255
7267
|
"tests/unit/scripts/work-item-github-failure-diagnosis.test.ts": true,
|
|
7268
|
+
"tests/unit/scripts/work-item-tracker-unreachable.test.ts": true,
|
|
7256
7269
|
"tests/unit/secrets/automation-workflow.test.ts": true,
|
|
7257
7270
|
"tests/unit/secrets/bootstrap-key-naming.test.ts": true,
|
|
7258
7271
|
"tests/unit/secrets/doctor-secrets.test.ts": true,
|
|
@@ -7261,6 +7274,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
|
|
|
7261
7274
|
"tests/unit/secrets/remote-env-bindir-path.test.ts": true,
|
|
7262
7275
|
"tests/unit/secrets/remote-env-installed-copy.test.ts": true,
|
|
7263
7276
|
"tests/unit/secrets/remote-env-phases.test.ts": true,
|
|
7277
|
+
"tests/unit/secrets/remote-env-session-start-hook.test.ts": true,
|
|
7264
7278
|
"tests/unit/secrets/remote-env-setup-field.test.ts": true,
|
|
7265
7279
|
"tests/unit/secrets/remote-env-skill-resolution.test.ts": true,
|
|
7266
7280
|
"tests/unit/secrets/remote-env-toolchain.test.ts": true,
|