@codyswann/lisa 3.4.0 → 3.4.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-hooks/block-no-verify.sh +31 -0
- package/all/copy-overwrite/scripts/lisa-work-item.mjs +24 -2
- package/dist/codex/scripts/block-no-verify.sh +53 -4
- package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
- package/dist/core/upstream-evidence-manifest.js +9 -8
- package/dist/core/upstream-evidence-manifest.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-implement/SKILL.md +1 -1
- package/plugins/lisa/.codex-plugin/skills/lisa-track/SKILL.md +1 -1
- package/plugins/lisa/hooks/block-no-verify.agy.sh +53 -4
- package/plugins/lisa/hooks/block-no-verify.sh +31 -0
- package/plugins/lisa/rules/eager/tracked-work.md +1 -1
- package/plugins/lisa/rules/reference/tracked-work.md +4 -2
- package/plugins/lisa/skills/lisa-implement/SKILL.md +1 -1
- package/plugins/lisa/skills/lisa-track/SKILL.md +1 -1
- package/plugins/lisa-agy/hooks/block-no-verify.agy.sh +53 -4
- package/plugins/lisa-agy/plugin.json +1 -1
- package/plugins/lisa-agy/skills/lisa-implement/SKILL.md +1 -1
- package/plugins/lisa-agy/skills/lisa-track/SKILL.md +1 -1
- 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/block-no-verify.sh +31 -0
- package/plugins/lisa-copilot/rules/eager/tracked-work.md +1 -1
- package/plugins/lisa-copilot/rules/reference/tracked-work.md +4 -2
- package/plugins/lisa-copilot/skills/lisa-implement/SKILL.md +1 -1
- package/plugins/lisa-copilot/skills/lisa-track/SKILL.md +1 -1
- package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cursor/hooks/block-no-verify.sh +31 -0
- package/plugins/lisa-cursor/rules/tracked-work-reference.mdc +4 -2
- package/plugins/lisa-cursor/rules/tracked-work.mdc +1 -1
- package/plugins/lisa-cursor/skills/lisa-implement/SKILL.md +1 -1
- package/plugins/lisa-cursor/skills/lisa-track/SKILL.md +1 -1
- 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/block-no-verify.agy.sh +53 -4
- package/plugins/src/base/hooks/block-no-verify.sh +31 -0
- package/plugins/src/base/rules/eager/tracked-work.md +1 -1
- package/plugins/src/base/rules/reference/tracked-work.md +4 -2
- package/plugins/src/base/skills/lisa-implement/SKILL.md +1 -1
- package/plugins/src/base/skills/lisa-track/SKILL.md +1 -1
|
@@ -186,6 +186,37 @@ for i, token in enumerate(normalized_tokens):
|
|
|
186
186
|
spec = token.split("=", 1)[1]
|
|
187
187
|
if spec.split("=", 1)[0].strip().lower() == "core.hookspath":
|
|
188
188
|
sys.exit(1)
|
|
189
|
+
# git accepts `--config-env <name>=<envvar>` as TWO tokens as well as one,
|
|
190
|
+
# and guarding only the `=` spelling was worse than missing the separate
|
|
191
|
+
# form outright: the trailing `core.hooksPath=.husky` then fell through to
|
|
192
|
+
# the allowlist above, which reads `.husky` as a PATH and permits it. But
|
|
193
|
+
# here it is an ENVIRONMENT VARIABLE NAME, and `env '.husky=/dev/null' git
|
|
194
|
+
# --config-env core.hooksPath=.husky` really does resolve hooksPath to
|
|
195
|
+
# /dev/null. The allowlist was being used as the bypass.
|
|
196
|
+
#
|
|
197
|
+
# Checked at the `--config-env` token, which the loop reaches first, so the
|
|
198
|
+
# refusal happens before the value token can be mistaken for a path.
|
|
199
|
+
if lowered == "--config-env" and i + 1 < len(normalized_tokens):
|
|
200
|
+
spec = normalized_tokens[i + 1]
|
|
201
|
+
if spec.split("=", 1)[0].strip().strip("'\"").lower() == "core.hookspath":
|
|
202
|
+
sys.exit(1)
|
|
203
|
+
# `GIT_CONFIG_COUNT=1 GIT_CONFIG_KEY_0=core.hooksPath
|
|
204
|
+
# GIT_CONFIG_VALUE_0=/dev/null git commit` sets command-scope config the
|
|
205
|
+
# same way `-c core.hooksPath=...` does — env-var-style assignments ahead of
|
|
206
|
+
# the invocation instead of a flag — so it disables every hook just as
|
|
207
|
+
# completely while matching none of the token shapes above. Upstream missed
|
|
208
|
+
# this until a downstream fork hardened its own copy against it, which is
|
|
209
|
+
# the one direction a guard must never be caught in.
|
|
210
|
+
#
|
|
211
|
+
# The index is matched as `\d+` rather than pinned to 0: git accepts any
|
|
212
|
+
# index below GIT_CONFIG_COUNT, so a single-index check is evaded by typing
|
|
213
|
+
# a 1. Refused outright, like --config-env=, because the path lives in a
|
|
214
|
+
# separate GIT_CONFIG_VALUE_<n> token that can be exported earlier,
|
|
215
|
+
# reordered, or left out entirely — there is nothing here to allowlist
|
|
216
|
+
# against.
|
|
217
|
+
key_match = re.match(r"git_config_key_\d+=(.*)$", lowered, re.DOTALL)
|
|
218
|
+
if key_match and key_match.group(1).strip().strip("'\"") == "core.hookspath":
|
|
219
|
+
sys.exit(1)
|
|
189
220
|
|
|
190
221
|
sys.exit(0)
|
|
191
222
|
PY
|
|
@@ -1376,7 +1376,28 @@ function validatePr(args) {
|
|
|
1376
1376
|
|
|
1377
1377
|
function main() {
|
|
1378
1378
|
const [command, ...args] = process.argv.slice(2);
|
|
1379
|
-
|
|
1379
|
+
// `link` and `bind` are the same operation under two names, and the reason is
|
|
1380
|
+
// the argument vector rather than the semantics.
|
|
1381
|
+
//
|
|
1382
|
+
// `bind` is a bash builtin that evaluates a string, so agent harnesses that
|
|
1383
|
+
// scan a command for string-evaluating programs match the bare token wherever
|
|
1384
|
+
// it lands — argv[0] or, as here, a subcommand three words in. Claude Code's
|
|
1385
|
+
// worktree isolation does precisely that, and it refused
|
|
1386
|
+
// `node scripts/lisa-work-item.mjs bind <ref>` outright: the one step Lisa
|
|
1387
|
+
// documents as mandatory before any durable work became impossible to run in
|
|
1388
|
+
// the isolated worktrees Lisa itself tells agents to use. Three agents hit it
|
|
1389
|
+
// in a single session, each independently rediscovering the same
|
|
1390
|
+
// carry-the-trailer-by-hand workaround.
|
|
1391
|
+
//
|
|
1392
|
+
// That guard belongs to the harness, is not Lisa's to narrow, and is doing
|
|
1393
|
+
// something legitimate — so the fix is to stop standing on its toes. `link`
|
|
1394
|
+
// is the spelling the docs teach and the one that works everywhere.
|
|
1395
|
+
//
|
|
1396
|
+
// `bind` is kept forever, not deprecated: it is written into host projects'
|
|
1397
|
+
// checked-in git hooks and CI, and those copies update on their own schedule.
|
|
1398
|
+
// Removing it to tidy up a name would break the very traceability gate this
|
|
1399
|
+
// file exists to enforce, in repositories that had done nothing wrong.
|
|
1400
|
+
if (command === "link" || command === "bind") return bind(args);
|
|
1380
1401
|
if (command === "current")
|
|
1381
1402
|
return console.log(JSON.stringify(readState(false), null, 2));
|
|
1382
1403
|
if (command === "attach-branch") {
|
|
@@ -1403,7 +1424,8 @@ function main() {
|
|
|
1403
1424
|
if (command === "validate-push") return validatePush(args);
|
|
1404
1425
|
if (command === "validate-pr") return validatePr(args);
|
|
1405
1426
|
throw new TrackingError(
|
|
1406
|
-
"Usage: lisa-work-item.mjs
|
|
1427
|
+
"Usage: lisa-work-item.mjs link|current|attach-branch|clear|prepare-commit-msg|validate-commit|validate-push|validate-pr" +
|
|
1428
|
+
"\n(`bind` is accepted as an alias for `link`, but some agent harnesses refuse the token `bind` in a command line.)"
|
|
1407
1429
|
);
|
|
1408
1430
|
}
|
|
1409
1431
|
|
|
@@ -85,16 +85,65 @@ def disables_verification(token):
|
|
|
85
85
|
and NO_VERIFY.startswith(token)
|
|
86
86
|
)
|
|
87
87
|
|
|
88
|
+
# The only relocations that keep a repo's own hooks in play. Anything else —
|
|
89
|
+
# including "" and /dev/null, which are simply the two most obvious members of
|
|
90
|
+
# the blocked set rather than special cases — is refused.
|
|
91
|
+
PERMITTED_HOOKS_PATHS = {".husky", ".githooks"}
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
def is_permitted_hooks_path(value):
|
|
95
|
+
"""Whether a core.hooksPath value relocates hooks rather than disabling them.
|
|
96
|
+
|
|
97
|
+
Args:
|
|
98
|
+
value: The raw core.hooksPath value as it appeared on the command line.
|
|
99
|
+
|
|
100
|
+
Returns:
|
|
101
|
+
True if the path is an established in-repo hooks directory.
|
|
102
|
+
"""
|
|
103
|
+
cleaned = value.strip().strip("'\"")
|
|
104
|
+
if cleaned.startswith("./"):
|
|
105
|
+
cleaned = cleaned[2:]
|
|
106
|
+
return cleaned.rstrip("/") in PERMITTED_HOOKS_PATHS
|
|
107
|
+
|
|
108
|
+
|
|
88
109
|
for i, token in enumerate(normalized_tokens):
|
|
89
110
|
if disables_verification(token):
|
|
90
111
|
sys.exit(1)
|
|
91
112
|
if token == "HUSKY=0" or token.startswith("HUSKY_SKIP_HOOKS="):
|
|
92
113
|
sys.exit(1)
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
114
|
+
# Allowlist the destinations, do not denylist the disabling ones: hooks are
|
|
115
|
+
# disabled just as completely by any directory that happens to contain none
|
|
116
|
+
# (`-c core.hooksPath=/tmp/empty`), so the set that DISABLES hooks is
|
|
117
|
+
# unbounded while the set that legitimately relocates them is tiny. Matched
|
|
118
|
+
# case-insensitively because git config names are.
|
|
119
|
+
lowered = token.lower()
|
|
120
|
+
if lowered.startswith("core.hookspath="):
|
|
121
|
+
if not is_permitted_hooks_path(token.split("=", 1)[1]):
|
|
122
|
+
sys.exit(1)
|
|
123
|
+
if lowered == "core.hookspath" and i + 1 < len(normalized_tokens):
|
|
124
|
+
if not is_permitted_hooks_path(normalized_tokens[i + 1]):
|
|
125
|
+
sys.exit(1)
|
|
126
|
+
# `--config-env=core.hooksPath=SOMEVAR` reads the path out of the named env
|
|
127
|
+
# var, so it is not in the command at all and cannot be allowlisted.
|
|
128
|
+
if lowered.startswith("--config-env="):
|
|
129
|
+
spec = token.split("=", 1)[1]
|
|
130
|
+
if spec.split("=", 1)[0].strip().lower() == "core.hookspath":
|
|
131
|
+
sys.exit(1)
|
|
132
|
+
# git also accepts `--config-env <name>=<envvar>` as two tokens. Guarding
|
|
133
|
+
# only the `=` spelling let the trailing `core.hooksPath=.husky` fall
|
|
134
|
+
# through to the allowlist above, which reads `.husky` as a path — but here
|
|
135
|
+
# it names an ENVIRONMENT VARIABLE, which can hold /dev/null. Checked at the
|
|
136
|
+
# `--config-env` token, which the loop reaches first.
|
|
137
|
+
if lowered == "--config-env" and i + 1 < len(normalized_tokens):
|
|
138
|
+
spec = normalized_tokens[i + 1]
|
|
139
|
+
if spec.split("=", 1)[0].strip().strip("'\"").lower() == "core.hookspath":
|
|
96
140
|
sys.exit(1)
|
|
97
|
-
|
|
141
|
+
# `GIT_CONFIG_COUNT=1 GIT_CONFIG_KEY_0=core.hooksPath
|
|
142
|
+
# GIT_CONFIG_VALUE_0=/dev/null git ...` sets the same command-scope config
|
|
143
|
+
# via env-var-style assignments. The index is arbitrary below
|
|
144
|
+
# GIT_CONFIG_COUNT, so it is matched as `\d+` rather than pinned to 0.
|
|
145
|
+
key_match = re.match(r"git_config_key_\d+=(.*)$", lowered, re.DOTALL)
|
|
146
|
+
if key_match and key_match.group(1).strip().strip("'\"") == "core.hookspath":
|
|
98
147
|
sys.exit(1)
|
|
99
148
|
|
|
100
149
|
sys.exit(0)
|
|
@@ -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,CA4xEpE,CAAC;AAEL,4EAA4E;AAC5E,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,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,CA4xEpE,CAAC;AAEL,4EAA4E;AAC5E,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CA69NjE,CAAC;AAEL,sFAAsF;AACtF,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAk6I/D,CAAC"}
|
|
@@ -8,12 +8,12 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
|
|
|
8
8
|
"all/copy-overwrite/scripts/lisa-enforcement-fallback.sh": "1bec5f3c284b3febdc471487ee6a23ffb72bd4e7b293f9e26b0188f32318c722",
|
|
9
9
|
"all/copy-overwrite/scripts/lisa-floor-collisions.mjs": "3c7a0234b4f5609fce49e44711d2ec86af8cf7fb82b0831e4450e3347ecefe45",
|
|
10
10
|
"all/copy-overwrite/scripts/lisa-hooks/block-instruction-file-edits.sh": "d47314b66d6ce85f77d6e058f861eede4462b2b0a33d54e82ff1c931167ec3f7",
|
|
11
|
-
"all/copy-overwrite/scripts/lisa-hooks/block-no-verify.sh": "
|
|
11
|
+
"all/copy-overwrite/scripts/lisa-hooks/block-no-verify.sh": "dd1aea1b9fdd0da023bf704b331b350bc14620f4364afa5001c6690fcbc940cc",
|
|
12
12
|
"all/copy-overwrite/scripts/lisa-hooks/block-shell-json-parsing.sh": "90601e31603c440d8f19d213d63bfef8d18596c60f88cb6e28c93d12453c5c0c",
|
|
13
13
|
"all/copy-overwrite/scripts/lisa-hooks/parity-safety-net.sh": "d9ea58150aa27e7f0aa9a4ef155ed446d30bdfc932d01c64e2b8ca211aa0de7b",
|
|
14
14
|
"all/copy-overwrite/scripts/lisa-hooks/sonar-secrets.sh": "bf4132e49ba18e2f7e941520c299c15aeeacfd220e489f3d2eb8397f2048157b",
|
|
15
15
|
"all/copy-overwrite/scripts/lisa-schema-validate.mjs": "9dd145c0f9dac6ed252b13d32e130dbab964da6cd357981b58541780ecb2f981",
|
|
16
|
-
"all/copy-overwrite/scripts/lisa-work-item.mjs": "
|
|
16
|
+
"all/copy-overwrite/scripts/lisa-work-item.mjs": "fe064a2bd11200ed256fb36e203978f858fccbcaf40708496c066383345900ef",
|
|
17
17
|
"all/copy-overwrite/scripts/schemas/lisa-command-envelope.v1.schema.json": "d153b7c2953a30f180e38f09e98240c63327f5196eeba9bdf545e5a1f125a879",
|
|
18
18
|
"all/copy-overwrite/scripts/schemas/lisa-state-contract.v1.schema.json": "6b7afe4ffeba8aaa53871d8855172f7eacde05953b1321145218ec638ff5c1c4",
|
|
19
19
|
"all/create-only/.agents/rules/README.md": "fd260fd9b2934d0d698a8098dfff07fedc071849d588e602d773666678c3d540",
|
|
@@ -324,8 +324,8 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
|
|
|
324
324
|
"plugins/src/base/commands/wiki/install.md": "51392cf053c17edd549bfbaba5d19ce669dc79021aafa7cfa100324ad38de11f",
|
|
325
325
|
"plugins/src/base/hooks/block-instruction-file-edits.agy.sh": "aa249cae53caeb3e0fb6d6af114e2756084f45a2896332fb063a9f20e4902125",
|
|
326
326
|
"plugins/src/base/hooks/block-instruction-file-edits.sh": "d47314b66d6ce85f77d6e058f861eede4462b2b0a33d54e82ff1c931167ec3f7",
|
|
327
|
-
"plugins/src/base/hooks/block-no-verify.agy.sh": "
|
|
328
|
-
"plugins/src/base/hooks/block-no-verify.sh": "
|
|
327
|
+
"plugins/src/base/hooks/block-no-verify.agy.sh": "81c51041f8cb47bf79692c485c4f42ac7ed0a5a830821dc514cb468bc7a06b83",
|
|
328
|
+
"plugins/src/base/hooks/block-no-verify.sh": "dd1aea1b9fdd0da023bf704b331b350bc14620f4364afa5001c6690fcbc940cc",
|
|
329
329
|
"plugins/src/base/hooks/block-shell-json-parsing.agy.sh": "dc688efe382e7b8fe6f6c88bb0fde851527128cae778599559f23a93f1c9ec86",
|
|
330
330
|
"plugins/src/base/hooks/block-shell-json-parsing.sh": "90601e31603c440d8f19d213d63bfef8d18596c60f88cb6e28c93d12453c5c0c",
|
|
331
331
|
"plugins/src/base/hooks/cleanup-stale-worktrees.sh": "c9b2fcca1b34d6f636b5289ece11b254cbb8ee2c2bac5c2e426b6f4dcfa972f2",
|
|
@@ -391,7 +391,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
|
|
|
391
391
|
"plugins/src/base/rules/eager/settled-decisions.md": "f5339c81b8d29f628830e6147314cbb941b9d9e6d87c3834d8fe7adc4b46ef4c",
|
|
392
392
|
"plugins/src/base/rules/eager/stale-state-claims.md": "faf5057f5910237b8d5048dbcccb73e0cd03762a8eefbeae43b5d0153104a85a",
|
|
393
393
|
"plugins/src/base/rules/eager/tool-access-gate.md": "a5413a43ec353f768586e0a1cde3836db025cb5d8b80821020602995e71aa296",
|
|
394
|
-
"plugins/src/base/rules/eager/tracked-work.md": "
|
|
394
|
+
"plugins/src/base/rules/eager/tracked-work.md": "24f04b4610eff1519d818741c6bd5ad6464a0833ef24ecb8bf6ceb35dced9a4b",
|
|
395
395
|
"plugins/src/base/rules/eager/upstream-to-lisa.md": "eb8b37e789423dba78e3a77951db087c4d3f56a88478b63107ec6b9ddbf23b13",
|
|
396
396
|
"plugins/src/base/rules/eager/usage-accounting.md": "b93fa782d61911579b25363e465bb1f4e9b7e4edb54465a346d52f74dffe5a97",
|
|
397
397
|
"plugins/src/base/rules/eager/verification.md": "a6cc1d50c5b91080171490edce4d375f136a14790dcbb247ca8b736ad8f55cfd",
|
|
@@ -441,7 +441,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
|
|
|
441
441
|
"plugins/src/base/rules/reference/settled-decisions.md": "6c84f309a1f765eba1648d6ace836387bd96b924f245c16cf3629f501ef6bb18",
|
|
442
442
|
"plugins/src/base/rules/reference/stale-state-claims.md": "6329e1a7629f9a12f10454c767842aecee4964df8b7bb4aebda9dde3c0959c2a",
|
|
443
443
|
"plugins/src/base/rules/reference/tool-access-gate.md": "70fcd6cd92dc003a40886b1bef02540e6401f5b70ba97308d42bbbddc0206eab",
|
|
444
|
-
"plugins/src/base/rules/reference/tracked-work.md": "
|
|
444
|
+
"plugins/src/base/rules/reference/tracked-work.md": "cc50ea131756d7e9d6d0fdbd35231894fc7d789d68c1dc0e551ae2103845db20",
|
|
445
445
|
"plugins/src/base/rules/reference/upstream-to-lisa.md": "dcf07f8eba66aaf1d132bfaeff73cbf7576279822893235a3c3f8cbc4a4a3323",
|
|
446
446
|
"plugins/src/base/rules/reference/usage-accounting.md": "79c00ed4a97c40de72cfccef16b6846ba668fc564354507907876489c038ab75",
|
|
447
447
|
"plugins/src/base/rules/reference/verification.md": "9ae8db87b37c7700687fabd1b8632b3cddd0f1f1e4b04384c604f88f160056ed",
|
|
@@ -513,7 +513,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
|
|
|
513
513
|
"plugins/src/base/skills/lisa-github-write-issue/SKILL.md": "f2f9991be42b0fd98f5c3f414d96e8756485c7b56aceb20d7db7f87255cc88e6",
|
|
514
514
|
"plugins/src/base/skills/lisa-github-write-prd/SKILL.md": "262f8a1bcfad4c5dd4456cfaaf1b71abf9697a0da588966e58ff491acd3c17e8",
|
|
515
515
|
"plugins/src/base/skills/lisa-health/SKILL.md": "dfdb08a863e78bff42671793dcec29cfae0654db18ebf66a4aa77aeb56ddb775",
|
|
516
|
-
"plugins/src/base/skills/lisa-implement/SKILL.md": "
|
|
516
|
+
"plugins/src/base/skills/lisa-implement/SKILL.md": "4f25d131a3fb6168a2bbfa9085e048f6662d6ef30f2d9d91b46884d72c427b6f",
|
|
517
517
|
"plugins/src/base/skills/lisa-improve-code-complexity/SKILL.md": "24ab5b193b409db6ee6bee981a1c0a48d08991782d7846116ad01658c8bc1ae8",
|
|
518
518
|
"plugins/src/base/skills/lisa-improve-harness/SKILL.md": "98ad4b896785ac51826969a0ff077ef11c51353f2a2e03444c8b38e6c0363d05",
|
|
519
519
|
"plugins/src/base/skills/lisa-improve-max-lines-per-function/SKILL.md": "95c875950c9848fdaf520a18b9bbb264e33d7347be10170add768e01d9cd8e52",
|
|
@@ -655,7 +655,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
|
|
|
655
655
|
"plugins/src/base/skills/lisa-tear-down-automations/SKILL.md": "3f8215b691ce60a6efd63547b99b4d87760fe99d285f6fe153aaadd451e83731",
|
|
656
656
|
"plugins/src/base/skills/lisa-test-strategy/SKILL.md": "8976e0056b65475fe69f4ed02c8d0d3ae898fd9ab5ff28bf632981a3293c9f6e",
|
|
657
657
|
"plugins/src/base/skills/lisa-ticket-triage/SKILL.md": "9d29652fb897568a60da35956f452627a81e57032bbcc3c673ae20dfc8a419f5",
|
|
658
|
-
"plugins/src/base/skills/lisa-track/SKILL.md": "
|
|
658
|
+
"plugins/src/base/skills/lisa-track/SKILL.md": "ff516917ef9387e96758db74372831fd9b9d28991e2a23461cf8661893f2d3b0",
|
|
659
659
|
"plugins/src/base/skills/lisa-tracker-add-journey/SKILL.md": "a3da2e0350bcdebcdcc05f2d7931af868382638d3a28d09d4718f2f458d4be0a",
|
|
660
660
|
"plugins/src/base/skills/lisa-tracker-build-intake/SKILL.md": "df50fb88f29eadc66c250e1d7f841472df43ba865930fbbc0bea36bba3380ec3",
|
|
661
661
|
"plugins/src/base/skills/lisa-tracker-claim/SKILL.md": "481922dba26c4e62ae36193a2e1565860aecf7e344bf5c37b3a0759f42676846",
|
|
@@ -7456,6 +7456,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
|
|
|
7456
7456
|
"tests/unit/codex/agent-installer.test.ts": true,
|
|
7457
7457
|
"tests/unit/codex/agent-transformer.test.ts": true,
|
|
7458
7458
|
"tests/unit/codex/agents-md-installer.test.ts": true,
|
|
7459
|
+
"tests/unit/codex/block-no-verify-codex.test.ts": true,
|
|
7459
7460
|
"tests/unit/codex/block-suppress-directives.test.ts": true,
|
|
7460
7461
|
"tests/unit/codex/build-byte-stable.test.ts": true,
|
|
7461
7462
|
"tests/unit/codex/codex-edit-hooks.test.ts": true,
|