@codyswann/lisa 2.342.0 → 2.342.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-floor-collisions.mjs +38 -6
- package/all/copy-overwrite/scripts/lisa-hooks/parity-safety-net.sh +44 -13
- package/all/create-only/scripts/remote-agent-aws-setup.sh +8 -1
- package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
- package/dist/core/upstream-evidence-manifest.js +8 -7
- package/dist/core/upstream-evidence-manifest.js.map +1 -1
- package/dist/opencode/plugin-templates/parity-safety-net.sh +44 -13
- 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/hooks/parity-safety-net.sh +44 -13
- package/plugins/lisa/hooks/threshold-ratchet.mjs +39 -5
- package/plugins/lisa-agy/hooks/parity-safety-net.sh +44 -13
- package/plugins/lisa-agy/plugin.json +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/parity-safety-net.sh +44 -13
- package/plugins/lisa-copilot/hooks/threshold-ratchet.mjs +39 -5
- package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cursor/hooks/parity-safety-net.sh +44 -13
- package/plugins/lisa-cursor/hooks/threshold-ratchet.mjs +39 -5
- 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/parity-safety-net.sh +44 -13
- package/plugins/src/base/hooks/threshold-ratchet.mjs +39 -5
- package/rails/copy-overwrite/scripts/check-threshold-ratchet.mjs +39 -5
- package/typescript/copy-overwrite/scripts/check-threshold-ratchet.mjs +39 -5
|
@@ -47,19 +47,51 @@ const DEPENDENCY_SECTIONS = [
|
|
|
47
47
|
"peerDependencies",
|
|
48
48
|
];
|
|
49
49
|
|
|
50
|
+
/**
|
|
51
|
+
* Lowest version a single disjunction branch permits.
|
|
52
|
+
*
|
|
53
|
+
* An upper-bound-only branch (`<2.0.0`, `<=2.0.0`) has no floor: it permits
|
|
54
|
+
* everything beneath the bound, so its lower bound is zero. Every other form
|
|
55
|
+
* used in practice (`>=1.2.3`, `^1.2.3`, `~1.2.3`, `1.2.3`, `>=1.2.3 <2`)
|
|
56
|
+
* leads with its lower bound.
|
|
57
|
+
* @param {string} branch One branch of a `||` range.
|
|
58
|
+
* @returns {number[]|null} [major, minor, patch], or null when there is none.
|
|
59
|
+
*/
|
|
60
|
+
function branchLowerBound(branch) {
|
|
61
|
+
const trimmed = branch.trim();
|
|
62
|
+
if (trimmed === "") return null;
|
|
63
|
+
if (/^<=?\s*\d/.test(trimmed)) return [0, 0, 0];
|
|
64
|
+
const match = /(\d+)\.(\d+)\.(\d+)/.exec(trimmed);
|
|
65
|
+
return match ? match.slice(1, 4).map(Number) : null;
|
|
66
|
+
}
|
|
67
|
+
|
|
50
68
|
/**
|
|
51
69
|
* Lowest version a range permits, as a comparable tuple.
|
|
52
70
|
*
|
|
53
|
-
*
|
|
54
|
-
*
|
|
55
|
-
*
|
|
56
|
-
*
|
|
71
|
+
* Reading only the first version in the spec was wrong in a direction that
|
|
72
|
+
* matters: for `^2.0.0 || ^1.9.0` it reported 2.0.0, a floor HIGHER than the
|
|
73
|
+
* range actually permits, and the caller's `compare(target, floor) >= 0` then
|
|
74
|
+
* skipped a genuine collision. A floor read too high is a false negative in a
|
|
75
|
+
* security check, so every branch is measured and the lowest wins.
|
|
76
|
+
*
|
|
77
|
+
* An alias spec (`npm:other-pkg@^1.2.3`) versions a different package
|
|
78
|
+
* entirely; its number cannot be compared against a floor for this name, so it
|
|
79
|
+
* returns null rather than a misleading answer. A spec carrying no version —
|
|
80
|
+
* `*`, `workspace:*`, `latest` — has no floor either.
|
|
57
81
|
* @param {string} spec A version range.
|
|
58
82
|
* @returns {number[]|null} [major, minor, patch], or null when there is none.
|
|
59
83
|
*/
|
|
60
84
|
export function lowestPermitted(spec) {
|
|
61
|
-
const
|
|
62
|
-
|
|
85
|
+
const raw = spec ?? "";
|
|
86
|
+
if (/^\s*npm:/i.test(raw)) return null;
|
|
87
|
+
const bounds = raw
|
|
88
|
+
.split("||")
|
|
89
|
+
.map(branchLowerBound)
|
|
90
|
+
.filter(bound => bound !== null);
|
|
91
|
+
if (bounds.length === 0) return null;
|
|
92
|
+
return bounds.reduce((lowest, bound) =>
|
|
93
|
+
compare(bound, lowest) < 0 ? bound : lowest
|
|
94
|
+
);
|
|
63
95
|
}
|
|
64
96
|
|
|
65
97
|
/**
|
|
@@ -172,16 +172,6 @@ case "$command_str" in
|
|
|
172
172
|
;;
|
|
173
173
|
esac
|
|
174
174
|
|
|
175
|
-
# matches / matches_cs run an ERE against the guarded command text. matches is
|
|
176
|
-
# case-insensitive (the default for these guards); matches_cs is case-SENSITIVE
|
|
177
|
-
# for guards where flag case is meaningful (`git branch -d` vs `-D`).
|
|
178
|
-
matches() {
|
|
179
|
-
printf '%s' "$command_for_guards" | grep -Eiq -- "$1"
|
|
180
|
-
}
|
|
181
|
-
matches_cs() {
|
|
182
|
-
printf '%s' "$command_for_guards" | grep -Eq -- "$1"
|
|
183
|
-
}
|
|
184
|
-
|
|
185
175
|
# Normalize bash line-continuations (a trailing backslash + newline → space)
|
|
186
176
|
# before segmenting the command. Without this, "git push --force origin
|
|
187
177
|
# \<newline>main" splits into a segment matching --force but not `main`, letting a
|
|
@@ -190,6 +180,28 @@ matches_cs() {
|
|
|
190
180
|
normalized_command_str="$(printf '%s' "$command_for_guards" \
|
|
191
181
|
| awk '{ if (sub(/\\$/, "")) printf "%s ", $0; else print }')"
|
|
192
182
|
|
|
183
|
+
# matches / matches_cs run an ERE against the guarded command text. matches is
|
|
184
|
+
# case-insensitive (the default for these guards); matches_cs is case-SENSITIVE
|
|
185
|
+
# for guards where flag case is meaningful (`git branch -d` vs `-D`).
|
|
186
|
+
#
|
|
187
|
+
# Both read the NORMALIZED text. They used to read $command_for_guards, so only
|
|
188
|
+
# the two segment-walking guards (rm, git push) were protected against line
|
|
189
|
+
# continuations and every guard expressed through these helpers could be evaded
|
|
190
|
+
# by breaking the command across lines:
|
|
191
|
+
#
|
|
192
|
+
# git reset --hard \
|
|
193
|
+
# origin/main
|
|
194
|
+
#
|
|
195
|
+
# The patterns match on intermediate whitespace, and an embedded "\<newline>" is
|
|
196
|
+
# not whitespace to grep -E, so the anchor failed to span the break. Defined
|
|
197
|
+
# after the normalization above so the value exists when these are first called.
|
|
198
|
+
matches() {
|
|
199
|
+
printf '%s' "$normalized_command_str" | grep -Eiq -- "$1"
|
|
200
|
+
}
|
|
201
|
+
matches_cs() {
|
|
202
|
+
printf '%s' "$normalized_command_str" | grep -Eq -- "$1"
|
|
203
|
+
}
|
|
204
|
+
|
|
193
205
|
# Shared ERE fragments. GIT_TOKENS walks over intermediate argv tokens without
|
|
194
206
|
# crossing a statement separator, so a flag in a LATER statement can never be
|
|
195
207
|
# attributed to an earlier git subcommand.
|
|
@@ -553,9 +565,28 @@ if [ -f "$rules_file" ]; then
|
|
|
553
565
|
case "$rule" in
|
|
554
566
|
'' | '#'*) continue ;;
|
|
555
567
|
esac
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
568
|
+
# Normalized text, for the same reason every built-in guard uses it: a
|
|
569
|
+
# project rule must not be evadable by breaking the command across lines.
|
|
570
|
+
#
|
|
571
|
+
# `|| rule_status=$?` rather than a bare pipeline: this script runs under
|
|
572
|
+
# `set -e`, and a no-match grep exits 1, which would end the hook right
|
|
573
|
+
# here — before the remaining rules ran, and with an exit status that is
|
|
574
|
+
# not a refusal. The `||` puts the pipeline in a condition context, where
|
|
575
|
+
# a non-zero status is expected rather than fatal.
|
|
576
|
+
rule_status=0
|
|
577
|
+
printf '%s' "$normalized_command_str" | grep -Eiq -- "$rule" || rule_status=$?
|
|
578
|
+
case "$rule_status" in
|
|
579
|
+
0) block "matched a project custom safety rule (${rules_file##*/}): $rule" ;;
|
|
580
|
+
1) ;; # no match
|
|
581
|
+
# grep exits 2 on a malformed ERE. Treated as no-match before, so a typo
|
|
582
|
+
# in a project's rules file silently disabled that rule — a guard the
|
|
583
|
+
# project believed it had. Say so instead; still non-fatal, because one
|
|
584
|
+
# bad line must not take the other rules down with it.
|
|
585
|
+
*)
|
|
586
|
+
printf 'parity-safety-net: invalid regex in %s, rule NOT enforced: %s\n' \
|
|
587
|
+
"$rules_file" "$rule" >&2
|
|
588
|
+
;;
|
|
589
|
+
esac
|
|
559
590
|
done <"$rules_file"
|
|
560
591
|
fi
|
|
561
592
|
|
|
@@ -6,7 +6,14 @@ set -euo pipefail
|
|
|
6
6
|
|
|
7
7
|
if NPM_ROOT="$(npm root 2>/dev/null)" && [ -n "$NPM_ROOT" ]; then
|
|
8
8
|
LOCAL_LISA_SCRIPT="$NPM_ROOT/@codyswann/lisa/plugins/lisa/scripts/remote-agent-aws-setup.sh"
|
|
9
|
-
[ -x
|
|
9
|
+
# Spelled as a full `if` rather than `[ -x … ] && exec …`. That form is the
|
|
10
|
+
# last command in this block, so when the file is absent its non-zero status
|
|
11
|
+
# is the block's status, and `set -e` exits (1) right here — before the
|
|
12
|
+
# diagnostic below can print. The operator saw a silent failure instead of
|
|
13
|
+
# being told to install the package.
|
|
14
|
+
if [ -x "$LOCAL_LISA_SCRIPT" ]; then
|
|
15
|
+
exec "$LOCAL_LISA_SCRIPT" "$@"
|
|
16
|
+
fi
|
|
10
17
|
fi
|
|
11
18
|
|
|
12
19
|
echo "remote-agent-aws-setup: install @codyswann/lisa before running this setup script" >&2
|
|
@@ -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,CAwqEpE,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,CAwqEpE,CAAC;AAEL,4EAA4E;AAC5E,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAqvNjE,CAAC;AAEL,sFAAsF;AACtF,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAk6I/D,CAAC"}
|
|
@@ -4,16 +4,16 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
|
|
|
4
4
|
"all/copy-contents/.gitattributes": "9d3831007e681186a3673e1037ef3fc82980cab2fc04e27c0868e562912c9e9f",
|
|
5
5
|
"all/copy-contents/gitignore": "2dbf7fd2f2020fc7824c432342002d9ca3ebb57b2872e761b14e942b23479a11",
|
|
6
6
|
"all/copy-overwrite/scripts/lisa-enforcement-fallback.sh": "1bec5f3c284b3febdc471487ee6a23ffb72bd4e7b293f9e26b0188f32318c722",
|
|
7
|
-
"all/copy-overwrite/scripts/lisa-floor-collisions.mjs": "
|
|
7
|
+
"all/copy-overwrite/scripts/lisa-floor-collisions.mjs": "3c7a0234b4f5609fce49e44711d2ec86af8cf7fb82b0831e4450e3347ecefe45",
|
|
8
8
|
"all/copy-overwrite/scripts/lisa-hooks/block-instruction-file-edits.sh": "850cfc23852eb752114ae1e938a1c7bcf34bc50c85d3aaca0c02311cc8c0ef70",
|
|
9
9
|
"all/copy-overwrite/scripts/lisa-hooks/block-no-verify.sh": "33e2bd341eb992036059b0c4606db35a218adcfeca7e44d174fedf8ebdff29d2",
|
|
10
10
|
"all/copy-overwrite/scripts/lisa-hooks/block-shell-json-parsing.sh": "1934a15e154fda3c2a40979a5cd6225661b14fe7bc77328a69ce499bea85dba7",
|
|
11
|
-
"all/copy-overwrite/scripts/lisa-hooks/parity-safety-net.sh": "
|
|
11
|
+
"all/copy-overwrite/scripts/lisa-hooks/parity-safety-net.sh": "d9ea58150aa27e7f0aa9a4ef155ed446d30bdfc932d01c64e2b8ca211aa0de7b",
|
|
12
12
|
"all/copy-overwrite/scripts/lisa-hooks/sonar-secrets.sh": "bf4132e49ba18e2f7e941520c299c15aeeacfd220e489f3d2eb8397f2048157b",
|
|
13
13
|
"all/copy-overwrite/scripts/lisa-work-item.mjs": "2d9ca0841db9e75ddfd95e3a4d485fd01aa639a512ef648996f565b7991d8e2b",
|
|
14
14
|
"all/create-only/.claude/rules/PROJECT_RULES.md": "6e1c7923ad2a15356babc60c97e7f97be728d790af285b6a7cd7d1b4d39cd97f",
|
|
15
15
|
"all/create-only/.lisaignore": "3c9827e7e98daa46510b5357cd6dd9406da1821e64cc46d2eea9f311cd6d06b9",
|
|
16
|
-
"all/create-only/scripts/remote-agent-aws-setup.sh": "
|
|
16
|
+
"all/create-only/scripts/remote-agent-aws-setup.sh": "12d2204d34195ad4f81082e90a25dbbf7d2493debcc50c1cd37b32dc4648fc17",
|
|
17
17
|
"all/create-only/specs/.keep": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
|
18
18
|
"all/deletions.json": "31af98085a56dd96d34d4b3cb42956e068fb492df7b1dd781987408c1b4b2ea3",
|
|
19
19
|
"all/github-rulesets/base.json": "58b9606f185cdca8b17218829aac333b7d8c08f0f2b4f86d7e360f7be1de4787",
|
|
@@ -310,13 +310,13 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
|
|
|
310
310
|
"plugins/src/base/hooks/install-pkgs.sh": "e9a13faba849a277410dde911ab102ee6f88ef915b33571bb1d4eef904172db5",
|
|
311
311
|
"plugins/src/base/hooks/parity-safety-net-heredoc.py": "f21b1232ac82bd0e42d2ba43c68f4cc4546334fc885ba31747881f427097ef78",
|
|
312
312
|
"plugins/src/base/hooks/parity-safety-net.agy.sh": "ce9bd2b4566ad9147e4ace56434cffbbe87edb4ccbb57549ab3fd9f4c671ced4",
|
|
313
|
-
"plugins/src/base/hooks/parity-safety-net.sh": "
|
|
313
|
+
"plugins/src/base/hooks/parity-safety-net.sh": "d9ea58150aa27e7f0aa9a4ef155ed446d30bdfc932d01c64e2b8ca211aa0de7b",
|
|
314
314
|
"plugins/src/base/hooks/setup-jira-cli.sh": "a675f6b17ce7f0d6b9fb7daeba6d2bc59bcb48ef79b034076ea73b2b1e72ee09",
|
|
315
315
|
"plugins/src/base/hooks/shell-write-nudge.sh": "69839af423f8792b1e52c71097316c3264425553031627c0a2f9409a9d5becd0",
|
|
316
316
|
"plugins/src/base/hooks/sonar-secrets.sh": "bf4132e49ba18e2f7e941520c299c15aeeacfd220e489f3d2eb8397f2048157b",
|
|
317
317
|
"plugins/src/base/hooks/threshold-ratchet-compare.mjs": "4535a145c5c5cbee13bdf970bc91d390a264043604e607288cdd6bf28de56192",
|
|
318
318
|
"plugins/src/base/hooks/threshold-ratchet-families.mjs": "db14245ed89b483912af287bdee917a7a921dc21bb29b49be37fc799c05c413f",
|
|
319
|
-
"plugins/src/base/hooks/threshold-ratchet.mjs": "
|
|
319
|
+
"plugins/src/base/hooks/threshold-ratchet.mjs": "49dee610439f4f21aecb0420a0cc72f5d3595a36f2489970053096190b9909c4",
|
|
320
320
|
"plugins/src/base/hooks/threshold-ratchet.sh": "b86f4d0b554e44fd119ad8a8920cd0ba6c9dbe779f7ee219d381cf0629453990",
|
|
321
321
|
"plugins/src/base/hooks/ticket-sync-reminder.sh": "212f80bcdfd9e3ec2254987c5a7186d1d2d38065b330ddcdc631f76df7c4a6c0",
|
|
322
322
|
"plugins/src/base/hooks/track-plan-sessions.sh": "8bc47dcad3aed628df0c9efbe7b6f3df87635b94b0c54c71e0bd52eceace563a",
|
|
@@ -947,7 +947,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
|
|
|
947
947
|
"rails/copy-overwrite/ast-grep/utils/.gitkeep": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
|
948
948
|
"rails/copy-overwrite/config/initializers/version.rb": "fa664a84f407877b5ddbd3709a2352b30e4dc6fbce538a8503bad6c52448dc86",
|
|
949
949
|
"rails/copy-overwrite/lefthook.yml": "28bb382b9171a04fb92ebafc1f1522b8639f5edc4fcffcc6940e7fba3460fb4e",
|
|
950
|
-
"rails/copy-overwrite/scripts/check-threshold-ratchet.mjs": "
|
|
950
|
+
"rails/copy-overwrite/scripts/check-threshold-ratchet.mjs": "49dee610439f4f21aecb0420a0cc72f5d3595a36f2489970053096190b9909c4",
|
|
951
951
|
"rails/copy-overwrite/scripts/lisa-clean-git-env.sh": "e7121a0ee9e1bf7c01cd2ab55f563dd6d9ab75990739bb6ddf571a513efa10e9",
|
|
952
952
|
"rails/copy-overwrite/scripts/threshold-ratchet-compare.mjs": "4535a145c5c5cbee13bdf970bc91d390a264043604e607288cdd6bf28de56192",
|
|
953
953
|
"rails/copy-overwrite/scripts/threshold-ratchet-families.mjs": "db14245ed89b483912af287bdee917a7a921dc21bb29b49be37fc799c05c413f",
|
|
@@ -1070,7 +1070,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
|
|
|
1070
1070
|
"typescript/copy-overwrite/eslint.ignore.config.json": "04dcd754829cf93bf0ba0d76e4031d28cb7149afa658575d02bb13bf73f7880e",
|
|
1071
1071
|
"typescript/copy-overwrite/eslint.slow.config.ts": "f66d04381940936544931d7f20ffd4e43c38b8a907d56ffa101e2236371d8c94",
|
|
1072
1072
|
"typescript/copy-overwrite/knip.json": "6eb93d705a2d645332fbae1dd42cf2d48f85978ebc265451a53790912f277d12",
|
|
1073
|
-
"typescript/copy-overwrite/scripts/check-threshold-ratchet.mjs": "
|
|
1073
|
+
"typescript/copy-overwrite/scripts/check-threshold-ratchet.mjs": "49dee610439f4f21aecb0420a0cc72f5d3595a36f2489970053096190b9909c4",
|
|
1074
1074
|
"typescript/copy-overwrite/scripts/check-verification-coverage.mjs": "3c1d27d0668fc66a18cb014f2b607878f0a88c178a773fbe964b8e46b19e86d6",
|
|
1075
1075
|
"typescript/copy-overwrite/scripts/lisa-mutation.mjs": "7d8d24dea151ef2178807046e97aea7ebfadd9c88eb50347feb7bb4bb190227d",
|
|
1076
1076
|
"typescript/copy-overwrite/scripts/threshold-ratchet-compare.mjs": "4535a145c5c5cbee13bdf970bc91d390a264043604e607288cdd6bf28de56192",
|
|
@@ -7352,6 +7352,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
|
|
|
7352
7352
|
"tests/unit/hooks/parity-safety-net-heredoc-continuation.test.ts": true,
|
|
7353
7353
|
"tests/unit/hooks/parity-safety-net-heredoc-literal.test.ts": true,
|
|
7354
7354
|
"tests/unit/hooks/parity-safety-net-heredoc.test.ts": true,
|
|
7355
|
+
"tests/unit/hooks/parity-safety-net-line-continuation.test.ts": true,
|
|
7355
7356
|
"tests/unit/hooks/parity-safety-net.test.ts": true,
|
|
7356
7357
|
"tests/unit/hooks/post-checkout.test.ts": true,
|
|
7357
7358
|
"tests/unit/hooks/pre-push-git-environment.test.ts": true,
|