@codyswann/lisa 4.10.5 → 4.10.7

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.
Files changed (152) hide show
  1. package/all/copy-overwrite/scripts/lisa-hooks/parity-safety-net.sh +269 -44
  2. package/dist/codex/scripts/setup-jira-cli.sh +50 -0
  3. package/dist/core/lisa-owned-hash-ledger.d.ts.map +1 -1
  4. package/dist/core/lisa-owned-hash-ledger.js +1 -0
  5. package/dist/core/lisa-owned-hash-ledger.js.map +1 -1
  6. package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
  7. package/dist/core/upstream-evidence-manifest.js +19 -17
  8. package/dist/core/upstream-evidence-manifest.js.map +1 -1
  9. package/dist/opencode/plugin-templates/lisa-session-bootstrap.ts +13 -0
  10. package/dist/opencode/plugin-templates/parity-safety-net.sh +269 -44
  11. package/package.json +1 -1
  12. package/plugins/lisa/.claude-plugin/plugin.json +1 -1
  13. package/plugins/lisa/.codex-plugin/plugin.json +1 -1
  14. package/plugins/lisa/.codex-plugin/skills/lisa-jira-add-journey/SKILL.md +16 -2
  15. package/plugins/lisa/.codex-plugin/skills/lisa-jira-evidence/SKILL.md +6 -3
  16. package/plugins/lisa/.codex-plugin/skills/lisa-jira-evidence/scripts/post-evidence.sh +56 -5
  17. package/plugins/lisa/.codex-plugin/skills/lisa-jira-journey/SKILL.md +2 -1
  18. package/plugins/lisa/.codex-plugin/skills/lisa-jira-read-ticket/scripts/download-attachment.sh +53 -4
  19. package/plugins/lisa/hooks/parity-safety-net.sh +269 -44
  20. package/plugins/lisa/hooks/setup-jira-cli.sh +50 -0
  21. package/plugins/lisa/rules/reference/base-rules.md +1 -1
  22. package/plugins/lisa/skills/lisa-jira-add-journey/SKILL.md +16 -2
  23. package/plugins/lisa/skills/lisa-jira-evidence/SKILL.md +6 -3
  24. package/plugins/lisa/skills/lisa-jira-evidence/scripts/post-evidence.sh +56 -5
  25. package/plugins/lisa/skills/lisa-jira-journey/SKILL.md +2 -1
  26. package/plugins/lisa/skills/lisa-jira-read-ticket/scripts/download-attachment.sh +53 -4
  27. package/plugins/lisa-agy/hooks/parity-safety-net.sh +269 -44
  28. package/plugins/lisa-agy/plugin.json +1 -1
  29. package/plugins/lisa-agy/skills/lisa-jira-add-journey/SKILL.md +16 -2
  30. package/plugins/lisa-agy/skills/lisa-jira-evidence/SKILL.md +6 -3
  31. package/plugins/lisa-agy/skills/lisa-jira-evidence/scripts/post-evidence.sh +56 -5
  32. package/plugins/lisa-agy/skills/lisa-jira-journey/SKILL.md +2 -1
  33. package/plugins/lisa-agy/skills/lisa-jira-read-ticket/scripts/download-attachment.sh +53 -4
  34. package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
  35. package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
  36. package/plugins/lisa-cdk-agy/plugin.json +1 -1
  37. package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
  38. package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
  39. package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
  40. package/plugins/lisa-copilot/hooks/parity-safety-net.sh +269 -44
  41. package/plugins/lisa-copilot/hooks/setup-jira-cli.sh +50 -0
  42. package/plugins/lisa-copilot/rules/reference/base-rules.md +1 -1
  43. package/plugins/lisa-copilot/skills/lisa-jira-add-journey/SKILL.md +16 -2
  44. package/plugins/lisa-copilot/skills/lisa-jira-evidence/SKILL.md +6 -3
  45. package/plugins/lisa-copilot/skills/lisa-jira-evidence/scripts/post-evidence.sh +56 -5
  46. package/plugins/lisa-copilot/skills/lisa-jira-journey/SKILL.md +2 -1
  47. package/plugins/lisa-copilot/skills/lisa-jira-read-ticket/scripts/download-attachment.sh +53 -4
  48. package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
  49. package/plugins/lisa-cursor/hooks/parity-safety-net.sh +269 -44
  50. package/plugins/lisa-cursor/hooks/setup-jira-cli.sh +50 -0
  51. package/plugins/lisa-cursor/rules/base-rules-reference.mdc +1 -1
  52. package/plugins/lisa-cursor/skills/lisa-jira-add-journey/SKILL.md +16 -2
  53. package/plugins/lisa-cursor/skills/lisa-jira-evidence/SKILL.md +6 -3
  54. package/plugins/lisa-cursor/skills/lisa-jira-evidence/scripts/post-evidence.sh +56 -5
  55. package/plugins/lisa-cursor/skills/lisa-jira-journey/SKILL.md +2 -1
  56. package/plugins/lisa-cursor/skills/lisa-jira-read-ticket/scripts/download-attachment.sh +53 -4
  57. package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
  58. package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
  59. package/plugins/lisa-expo/.codex-plugin/skills/jira-add-journey/SKILL.md +16 -2
  60. package/plugins/lisa-expo/.codex-plugin/skills/jira-evidence/SKILL.md +6 -3
  61. package/plugins/lisa-expo/.codex-plugin/skills/jira-evidence/scripts/post-evidence.sh +56 -5
  62. package/plugins/lisa-expo/.codex-plugin/skills/jira-journey/SKILL.md +2 -1
  63. package/plugins/lisa-expo/skills/jira-add-journey/SKILL.md +16 -2
  64. package/plugins/lisa-expo/skills/jira-evidence/SKILL.md +6 -3
  65. package/plugins/lisa-expo/skills/jira-evidence/scripts/post-evidence.sh +56 -5
  66. package/plugins/lisa-expo/skills/jira-journey/SKILL.md +2 -1
  67. package/plugins/lisa-expo-agy/plugin.json +1 -1
  68. package/plugins/lisa-expo-agy/skills/jira-add-journey/SKILL.md +16 -2
  69. package/plugins/lisa-expo-agy/skills/jira-evidence/SKILL.md +6 -3
  70. package/plugins/lisa-expo-agy/skills/jira-evidence/scripts/post-evidence.sh +56 -5
  71. package/plugins/lisa-expo-agy/skills/jira-journey/SKILL.md +2 -1
  72. package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
  73. package/plugins/lisa-expo-copilot/skills/jira-add-journey/SKILL.md +16 -2
  74. package/plugins/lisa-expo-copilot/skills/jira-evidence/SKILL.md +6 -3
  75. package/plugins/lisa-expo-copilot/skills/jira-evidence/scripts/post-evidence.sh +56 -5
  76. package/plugins/lisa-expo-copilot/skills/jira-journey/SKILL.md +2 -1
  77. package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
  78. package/plugins/lisa-expo-cursor/skills/jira-add-journey/SKILL.md +16 -2
  79. package/plugins/lisa-expo-cursor/skills/jira-evidence/SKILL.md +6 -3
  80. package/plugins/lisa-expo-cursor/skills/jira-evidence/scripts/post-evidence.sh +56 -5
  81. package/plugins/lisa-expo-cursor/skills/jira-journey/SKILL.md +2 -1
  82. package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
  83. package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
  84. package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
  85. package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
  86. package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
  87. package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
  88. package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
  89. package/plugins/lisa-nestjs-agy/plugin.json +1 -1
  90. package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
  91. package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
  92. package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
  93. package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
  94. package/plugins/lisa-openclaw-agy/plugin.json +1 -1
  95. package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
  96. package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
  97. package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
  98. package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
  99. package/plugins/lisa-phaser-agy/plugin.json +1 -1
  100. package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
  101. package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
  102. package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
  103. package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
  104. package/plugins/lisa-rails/.codex-plugin/skills/jira-add-journey/SKILL.md +16 -2
  105. package/plugins/lisa-rails/.codex-plugin/skills/jira-evidence/SKILL.md +6 -3
  106. package/plugins/lisa-rails/.codex-plugin/skills/jira-evidence/scripts/post-evidence.sh +56 -5
  107. package/plugins/lisa-rails/.codex-plugin/skills/jira-journey/SKILL.md +2 -1
  108. package/plugins/lisa-rails/skills/jira-add-journey/SKILL.md +16 -2
  109. package/plugins/lisa-rails/skills/jira-evidence/SKILL.md +6 -3
  110. package/plugins/lisa-rails/skills/jira-evidence/scripts/post-evidence.sh +56 -5
  111. package/plugins/lisa-rails/skills/jira-journey/SKILL.md +2 -1
  112. package/plugins/lisa-rails-agy/plugin.json +1 -1
  113. package/plugins/lisa-rails-agy/skills/jira-add-journey/SKILL.md +16 -2
  114. package/plugins/lisa-rails-agy/skills/jira-evidence/SKILL.md +6 -3
  115. package/plugins/lisa-rails-agy/skills/jira-evidence/scripts/post-evidence.sh +56 -5
  116. package/plugins/lisa-rails-agy/skills/jira-journey/SKILL.md +2 -1
  117. package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
  118. package/plugins/lisa-rails-copilot/skills/jira-add-journey/SKILL.md +16 -2
  119. package/plugins/lisa-rails-copilot/skills/jira-evidence/SKILL.md +6 -3
  120. package/plugins/lisa-rails-copilot/skills/jira-evidence/scripts/post-evidence.sh +56 -5
  121. package/plugins/lisa-rails-copilot/skills/jira-journey/SKILL.md +2 -1
  122. package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
  123. package/plugins/lisa-rails-cursor/skills/jira-add-journey/SKILL.md +16 -2
  124. package/plugins/lisa-rails-cursor/skills/jira-evidence/SKILL.md +6 -3
  125. package/plugins/lisa-rails-cursor/skills/jira-evidence/scripts/post-evidence.sh +56 -5
  126. package/plugins/lisa-rails-cursor/skills/jira-journey/SKILL.md +2 -1
  127. package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
  128. package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
  129. package/plugins/lisa-typescript-agy/plugin.json +1 -1
  130. package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
  131. package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
  132. package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
  133. package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
  134. package/plugins/lisa-wiki-agy/plugin.json +1 -1
  135. package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
  136. package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
  137. package/plugins/src/base/hooks/parity-safety-net.sh +269 -44
  138. package/plugins/src/base/hooks/setup-jira-cli.sh +50 -0
  139. package/plugins/src/base/rules/reference/base-rules.md +1 -1
  140. package/plugins/src/base/skills/lisa-jira-add-journey/SKILL.md +16 -2
  141. package/plugins/src/base/skills/lisa-jira-evidence/SKILL.md +6 -3
  142. package/plugins/src/base/skills/lisa-jira-evidence/scripts/post-evidence.sh +56 -5
  143. package/plugins/src/base/skills/lisa-jira-journey/SKILL.md +2 -1
  144. package/plugins/src/base/skills/lisa-jira-read-ticket/scripts/download-attachment.sh +53 -4
  145. package/plugins/src/expo/skills/jira-add-journey/SKILL.md +16 -2
  146. package/plugins/src/expo/skills/jira-evidence/SKILL.md +6 -3
  147. package/plugins/src/expo/skills/jira-evidence/scripts/post-evidence.sh +56 -5
  148. package/plugins/src/expo/skills/jira-journey/SKILL.md +2 -1
  149. package/plugins/src/rails/skills/jira-add-journey/SKILL.md +16 -2
  150. package/plugins/src/rails/skills/jira-evidence/SKILL.md +6 -3
  151. package/plugins/src/rails/skills/jira-evidence/scripts/post-evidence.sh +56 -5
  152. package/plugins/src/rails/skills/jira-journey/SKILL.md +2 -1
@@ -15,8 +15,10 @@
15
15
  # guards also match path-prefixed invocations like `/bin/rm` and `./rm`)
16
16
  # - `rm -rf` of the cwd (`.`), a `..`-traversal path, a `~/`-anchored path,
17
17
  # an absolute path outside the project (with a /tmp, /var/tmp, $TMPDIR
18
- # allowance), a `$VAR` target other than $TMPDIR, or ANY recursive forced
19
- # delete while cwd is $HOME
18
+ # allowance, each also matched by its symlink-resolved spelling so /tmp and
19
+ # /private/tmp are ONE location), a `$VAR` target that neither is $TMPDIR
20
+ # nor resolves through an unambiguous in-command assignment, or ANY
21
+ # recursive forced delete while cwd is $HOME
20
22
  # - force-pushing a protected branch (main/master/production/prod/release) —
21
23
  # feature-branch force-push stays allowed (sanctioned rebase workflow;
22
24
  # deliberate divergence from upstream's any-branch block). Every git guard
@@ -48,9 +50,19 @@
48
50
  # CLOSED: any parse error exits 2 (a non-2 exit would be a non-blocking hook
49
51
  # error in Claude Code, silently failing open).
50
52
  #
53
+ # Narrowed false-positive class (issue #3106): the rm TARGET WALK is now scoped
54
+ # to the quoting region that contains the rm, so a recursive delete quoted as
55
+ # PROSE no longer turns every later token on the line into a deletion target. A
56
+ # variable in an unrelated argument — a `gh issue create --body-file "$G/x"`, a
57
+ # `git commit -F "$MSG"` — is no longer read as the thing being deleted. An rm
58
+ # outside quotes, or first inside its quoted run (`bash -c "rm -rf /"`,
59
+ # `echo "$(rm -rf /)"`), still hands the whole statement to the walk. See
60
+ # rm_scan_scope below for the rule and its accepted residual.
61
+ #
51
62
  # Known accepted false-positive class: this is a text scan, not a shell engine,
52
63
  # so display commands quoting a destructive string (`echo "docs about rm -rf /"`)
53
- # can match. Upstream exempts those via an engine-only DISPLAY_COMMANDS list a
64
+ # can match — including one whose target sits in the SAME quoted run as the
65
+ # prose, which the #3106 scoping deliberately does not reach. Upstream exempts those via an engine-only DISPLAY_COMMANDS list a
54
66
  # grep hook cannot replicate. The same text-scan limit means the rm guard treats
55
67
  # a substitution-wrapped catastrophic delete as verdict-neutral (issue #1982): an
56
68
  # executable `echo "$(rm -rf /)"` is blocked, but so are inert twins the shell
@@ -274,6 +286,36 @@ project_dir="${CLAUDE_PROJECT_DIR:-$PWD}"
274
286
  tmp_dir_allow="${TMPDIR:-/tmp}"
275
287
  tmp_dir_allow="${tmp_dir_allow%/}"
276
288
  [ -n "$tmp_dir_allow" ] || tmp_dir_allow="/tmp"
289
+ # Physical (symlink-resolved) spelling of an allowed root — issue #3106 arm B.
290
+ # The allowance below is a set of LITERAL string prefixes, so on macOS, where
291
+ # /tmp is a symlink to /private/tmp, one directory had two spellings and only
292
+ # one of them was allowed: `rm -rf /tmp/x` passed while `rm -rf /private/tmp/x`
293
+ # — the SAME directory, and the spelling an agent's own scratchpad path is
294
+ # handed to it in — was refused as "outside the project". Two opposite verdicts
295
+ # for one location is a defect regardless of which verdict is right.
296
+ #
297
+ # This widens no LOCATION. It adds the second name of a location the guard has
298
+ # always allowed, computed from the filesystem rather than hardcoded, so a
299
+ # platform where /tmp is not a symlink gains nothing. Falls back to the logical
300
+ # path when the directory does not exist or resolves to `/`, so the allowance
301
+ # can never become an empty or root-anchored prefix (an empty prefix would make
302
+ # `""/*` match every absolute path).
303
+ phys_dir() {
304
+ local logical="$1" real=""
305
+ real="$(cd -- "$logical" 2>/dev/null && pwd -P)" || real=""
306
+ case "$real" in
307
+ "" | /) printf '%s' "$logical" ;;
308
+ *) printf '%s' "$real" ;;
309
+ esac
310
+ }
311
+ project_dir_phys="$(phys_dir "$project_dir")"
312
+ tmp_phys="$(phys_dir /tmp)"
313
+ var_tmp_phys="$(phys_dir /var/tmp)"
314
+ tmp_dir_allow_phys="$(phys_dir "$tmp_dir_allow")"
315
+ [ -n "$project_dir_phys" ] || project_dir_phys="$project_dir"
316
+ [ -n "$tmp_phys" ] || tmp_phys="/tmp"
317
+ [ -n "$var_tmp_phys" ] || var_tmp_phys="/var/tmp"
318
+ [ -n "$tmp_dir_allow_phys" ] || tmp_dir_allow_phys="$tmp_dir_allow"
277
319
  # Peel command-substitution wrappers off a token so an rm nested in `$(…)`,
278
320
  # backticks, `<(…)`/`>(…)`, a `"…"`/`'…'` quote, or a leading `\` alias-bypass
279
321
  # (`\rm`) is recognized and its target classified as if the token were unwrapped
@@ -313,6 +355,224 @@ strip_subst_wrappers() {
313
355
  done
314
356
  printf '%s' "$t"
315
357
  }
358
+ # Decide which text of an rm statement the TARGET WALK may read — issue #3106
359
+ # arm A. The statement selector matches the RAW command text, so a recursive
360
+ # delete quoted as PROSE inside a string argument selects the line, and every
361
+ # remaining token on it is then classified as a deletion target. Three
362
+ # independent sightings in one day, all of them commands that delete nothing:
363
+ # a `printf` reduction, a `gh issue create --title …` filing the report about
364
+ # this guard, and a commit message describing it. Each was refused for a
365
+ # variable in a LATER, unrelated argument.
366
+ #
367
+ # The rule is structural, with no allowlist of "display commands":
368
+ # - an rm invocation OUTSIDE any quote is real; the walk reads the whole
369
+ # statement, exactly as before (`rm -rf "$HOME"` keeps its target),
370
+ # - an rm at the START of its quoted run is an invocation the quote merely
371
+ # wraps (`bash -c "rm -rf /"`, `echo "$(rm -rf /)"`); the walk reads the
372
+ # whole statement, exactly as before,
373
+ # - an rm preceded by other words INSIDE its quoted run is prose; the walk is
374
+ # scoped to that run, so the rm's own quoted arguments are still classified
375
+ # in full while a variable in a later argument is no longer read as a
376
+ # deletion target.
377
+ #
378
+ # Failure directions all point at blocking: an unterminated quote, an
379
+ # over-long statement, or any run the scan cannot place falls back to the whole
380
+ # statement. Residual (accepted, documented): `eval "prose rm -rf" "$X"` would
381
+ # concatenate its words at run time and is scoped to the first run here.
382
+ rm_scan_scope() {
383
+ local stmt="$1"
384
+ local n=${#stmt}
385
+ # Long statements fall back to the full walk rather than pay a char scan.
386
+ if [ "$n" -gt 4000 ]; then
387
+ printf '%s' "$stmt"
388
+ return
389
+ fi
390
+ local i=0 ch q="" esc=0 outside="" cur_run="" first_rm_run="" found=0
391
+ while [ "$i" -lt "$n" ]; do
392
+ ch="${stmt:i:1}"
393
+ i=$((i + 1))
394
+ if [ "$esc" -eq 1 ]; then
395
+ esc=0
396
+ if [ -n "$q" ]; then cur_run="$cur_run$ch"; else outside="$outside$ch"; fi
397
+ continue
398
+ fi
399
+ if [ "$ch" = '\' ] && [ "$q" != "'" ]; then
400
+ esc=1
401
+ continue
402
+ fi
403
+ if [ -n "$q" ]; then
404
+ if [ "$ch" = "$q" ]; then
405
+ if [ "$found" -eq 0 ]; then
406
+ case "$cur_run" in
407
+ *[Rr][Mm]*)
408
+ if printf '%s' "$cur_run" | grep -Eiq -- "$RM_CMD"'([[:space:]]|$)'; then
409
+ found=1
410
+ first_rm_run="$cur_run"
411
+ fi
412
+ ;;
413
+ esac
414
+ fi
415
+ q=""
416
+ cur_run=""
417
+ else
418
+ cur_run="$cur_run$ch"
419
+ fi
420
+ continue
421
+ fi
422
+ case "$ch" in
423
+ '"' | "'")
424
+ q="$ch"
425
+ cur_run=""
426
+ ;;
427
+ *) outside="$outside$ch" ;;
428
+ esac
429
+ done
430
+ # An unterminated quote is text the scan cannot place: treat it as unquoted so
431
+ # the fallback below hands back the whole statement.
432
+ [ -z "$q" ] || outside="$outside$cur_run"
433
+ if printf '%s' "$outside" | grep -Eiq -- "$RM_CMD"'([[:space:]]|$)'; then
434
+ printf '%s' "$stmt"
435
+ return
436
+ fi
437
+ if [ "$found" -eq 0 ]; then
438
+ printf '%s' "$stmt"
439
+ return
440
+ fi
441
+ # `rm` first in its run (modulo whitespace and substitution/alias openers) is
442
+ # an invocation, not prose.
443
+ if printf '%s' "$first_rm_run" \
444
+ | grep -Eiq -- '^[[:space:]]*(\\|\$\(|`|\(|<\(|>\()*[[:space:]]*([[:alnum:]_./-]*/)?rm([[:space:]]|$)'; then
445
+ printf '%s' "$stmt"
446
+ return
447
+ fi
448
+ printf '%s' "$first_rm_run"
449
+ }
450
+ # Look up the ONE unambiguous assignment of NAME inside the command being
451
+ # classified — issue #3106 arm B, the variable half.
452
+ #
453
+ # Prints the recorded right-hand side, or fails when the name is never assigned
454
+ # here or is assigned more than one distinct value. Ambiguity must fail: the
455
+ # last write wins at run time and a text scan cannot order writes against the
456
+ # delete, so `V=/etc; rm -rf "$V"; V=/tmp/x` must not resolve to the harmless
457
+ # one. Only assignments literally present in this command are ever trusted;
458
+ # nothing is expanded from the hook's own environment.
459
+ rm_assignment_value() {
460
+ local name="$1" hits="" count=""
461
+ case "$name" in
462
+ "" | *[!A-Za-z0-9_]*) return 1 ;;
463
+ esac
464
+ hits="$(printf '%s\n' "$normalized_command_str" | tr ';&|' '\n' \
465
+ | grep -oE "(^|[[:space:]])${name}=[^[:space:]]*" \
466
+ | sed -E "s/^.*${name}=//")"
467
+ [ -n "$hits" ] || return 1
468
+ count="$(printf '%s\n' "$hits" | sort -u | grep -c '' | tr -d '[:space:]')"
469
+ [ "$count" = "1" ] || return 1
470
+ printf '%s' "$(printf '%s\n' "$hits" | head -n 1)"
471
+ }
472
+ # Rewrite a leading `$NAME` / `${NAME}` in a deletion target to the value the
473
+ # command itself assigns it, so the target is classified as if the agent had
474
+ # written that value literally — issue #3106 arm B.
475
+ #
476
+ # The guard's standing reason for refusing variable targets is that "unset or
477
+ # mistyped variables can point anywhere", and that reason survives intact: a
478
+ # name with no in-command assignment, an ambiguous one, or a value that is
479
+ # itself a command substitution never resolves and stays refused. What changes
480
+ # is only that a target the agent could have spelled literally is no longer
481
+ # refused for being spelled through a variable.
482
+ resolve_var_prefix() {
483
+ local token="$1" name="" rest="" value=""
484
+ case "$token" in
485
+ '${'*'}'*)
486
+ name="${token#'${'}"
487
+ name="${name%%\}*}"
488
+ rest="${token#'${'"$name"'}'}"
489
+ ;;
490
+ '$'*)
491
+ rest="${token#'$'}"
492
+ name="${rest%%[!A-Za-z0-9_]*}"
493
+ rest="${rest#"$name"}"
494
+ ;;
495
+ *) return 1 ;;
496
+ esac
497
+ [ -n "$name" ] || return 1
498
+ value="$(rm_assignment_value "$name")" || return 1
499
+ # A value that is itself a command substitution names no location the guard
500
+ # can read, so it never resolves — the refusal stands. `$(…)` already fails
501
+ # below (its leading `$` yields no variable name); backticks are named here so
502
+ # both spellings of substitution behave the same way.
503
+ case "$value" in
504
+ *'`'*) return 1 ;;
505
+ esac
506
+ case "$value" in
507
+ '"'*'"')
508
+ value="${value#\"}"
509
+ value="${value%\"}"
510
+ ;;
511
+ "'"*"'")
512
+ value="${value#\'}"
513
+ value="${value%\'}"
514
+ ;;
515
+ esac
516
+ [ -n "$value" ] || return 1
517
+ printf '%s%s' "$value" "$rest"
518
+ }
519
+ # Classify ONE deletion target. Extracted from the token walk so a variable
520
+ # target can be re-classified through every arm after resolution (#3106),
521
+ # instead of the variable arm being a terminal verdict of its own.
522
+ classify_rm_target() {
523
+ local token="$1" depth="${2:-0}" resolved=""
524
+ case "$token" in
525
+ -*) return 0 ;;
526
+ . | ./)
527
+ set +f
528
+ block "recursive forced delete of the current directory (rm -rf .)"
529
+ ;;
530
+ .. | ../* | */.. | */../*)
531
+ set +f
532
+ block "recursive forced delete of a path outside the project (.. traversal)"
533
+ ;;
534
+ '~' | '~'/*)
535
+ set +f
536
+ block "recursive forced delete of a home-anchored path (~/…) outside the project"
537
+ ;;
538
+ /*)
539
+ case "$token" in
540
+ "$project_dir" | "$project_dir"/* | "$project_dir_phys" | "$project_dir_phys"/* \
541
+ | /tmp | /tmp/* | "$tmp_phys" | "$tmp_phys"/* \
542
+ | /var/tmp | /var/tmp/* | "$var_tmp_phys" | "$var_tmp_phys"/* \
543
+ | "$tmp_dir_allow" | "$tmp_dir_allow"/* | "$tmp_dir_allow_phys" | "$tmp_dir_allow_phys"/*) : ;;
544
+ *)
545
+ set +f
546
+ block "recursive forced delete of an absolute path outside the project (only the project, /tmp, /var/tmp, and \$TMPDIR are allowed)"
547
+ ;;
548
+ esac
549
+ ;;
550
+ '*')
551
+ # Bare top-level wildcard expands to every entry in the cwd. Guard 1a no
552
+ # longer bounds `*)` (T4b F1), so a substitution-wrapped `rm -rf *` is
553
+ # caught here after the trailing-closer strip peels `*)"` down to `*`.
554
+ set +f
555
+ block "recursive forced delete of a top-level wildcard (rm -rf *)"
556
+ ;;
557
+ *'$'*)
558
+ case "$token" in
559
+ '$TMPDIR' | '$TMPDIR'/* | '${TMPDIR}' | '${TMPDIR}'/*) : ;;
560
+ *)
561
+ if [ "$depth" -lt 4 ] \
562
+ && resolved="$(resolve_var_prefix "$token")" \
563
+ && [ -n "$resolved" ] \
564
+ && [ "$resolved" != "$token" ]; then
565
+ classify_rm_target "$resolved" $((depth + 1))
566
+ else
567
+ set +f
568
+ block "recursive forced delete of a variable-expanded target (unset or mistyped variables can point anywhere; \$TMPDIR is the only sanctioned dynamic target)"
569
+ fi
570
+ ;;
571
+ esac
572
+ ;;
573
+ esac
574
+ return 0
575
+ }
316
576
  while IFS= read -r rm_stmt; do
317
577
  if ! printf '%s' "$rm_stmt" | grep -Eiq -- "$RM_RF_CLUSTER" \
318
578
  && ! printf '%s' "$rm_stmt" | grep -Eiq -- "$RM_RF_SPLIT"; then
@@ -328,9 +588,13 @@ while IFS= read -r rm_stmt; do
328
588
  && [ "$(pwd -P)" = "$(cd -- "$HOME" 2>/dev/null && pwd -P)" ]; then
329
589
  block "recursive forced delete while the working directory is \$HOME (cd into a project first)"
330
590
  fi
591
+ # Scope the walk to the quoting region that actually contains the rm (#3106
592
+ # arm A). Unquoted and run-leading invocations get the whole statement back,
593
+ # so this is a no-op for every real delete.
594
+ rm_walk_text="$(rm_scan_scope "$rm_stmt")"
331
595
  set -f
332
596
  seen_rm=0
333
- for raw_token in $rm_stmt; do
597
+ for raw_token in $rm_walk_text; do
334
598
  token="$(strip_subst_wrappers "$raw_token")"
335
599
  if [ "$seen_rm" -eq 0 ]; then
336
600
  # Path-prefixed spellings (`/bin/rm`, `./rm`) are still rm (F2).
@@ -339,46 +603,7 @@ while IFS= read -r rm_stmt; do
339
603
  esac
340
604
  continue
341
605
  fi
342
- case "$token" in
343
- -*) continue ;;
344
- . | ./)
345
- set +f
346
- block "recursive forced delete of the current directory (rm -rf .)"
347
- ;;
348
- .. | ../* | */.. | */../*)
349
- set +f
350
- block "recursive forced delete of a path outside the project (.. traversal)"
351
- ;;
352
- '~' | '~'/*)
353
- set +f
354
- block "recursive forced delete of a home-anchored path (~/…) outside the project"
355
- ;;
356
- /*)
357
- case "$token" in
358
- "$project_dir" | "$project_dir"/* | /tmp | /tmp/* | /var/tmp | /var/tmp/* | "$tmp_dir_allow" | "$tmp_dir_allow"/*) : ;;
359
- *)
360
- set +f
361
- block "recursive forced delete of an absolute path outside the project (only the project, /tmp, /var/tmp, and \$TMPDIR are allowed)"
362
- ;;
363
- esac
364
- ;;
365
- '*')
366
- # Bare top-level wildcard expands to every entry in the cwd. Guard 1a no
367
- # longer bounds `*)` (T4b F1), so a substitution-wrapped `rm -rf *` is
368
- # caught here after the trailing-closer strip peels `*)"` down to `*`.
369
- set +f
370
- block "recursive forced delete of a top-level wildcard (rm -rf *)"
371
- ;;
372
- *'$'*)
373
- case "$token" in
374
- '$TMPDIR' | '$TMPDIR'/* | '${TMPDIR}' | '${TMPDIR}'/*) : ;;
375
- *)
376
- set +f
377
- block "recursive forced delete of a variable-expanded target (unset or mistyped variables can point anywhere; \$TMPDIR is the only sanctioned dynamic target)"
378
- ;;
379
- esac
380
- ;;
381
- esac
606
+ classify_rm_target "$token"
382
607
  done
383
608
  set +f
384
609
  done < <(printf '%s' "$normalized_command_str" | tr '&|;' '\n' \
@@ -28,6 +28,56 @@ cat >/dev/null 2>&1 || true
28
28
  # one resolution rule, allowed to drift, is what produced the Codex half of
29
29
  # this defect in the first place.
30
30
  # ---------------------------------------------------------------------------
31
+
32
+ # ---------------------------------------------------------------------------
33
+ # WHO READS WHAT THIS WRITES — and why no per-harness env export is needed.
34
+ #
35
+ # `${PROJECT_DIR}/.lisa/jira-cli/.config.yml` had NO reader at all until
36
+ # CodySwannGT/lisa#2767: the hook wrote a file, every consumer looked at
37
+ # `${HOME}/.config/.jira/.config.yml` instead, and the hook was therefore an
38
+ # inert control that reported success while feeding nothing. It now has three
39
+ # consumers, all Lisa-owned:
40
+ #
41
+ # * lisa-jira-evidence/scripts/post-evidence.sh — greps `server:`/`login:`
42
+ # out of this YAML, then passes `--config <path>` to `jira issue move`.
43
+ # * lisa-jira-read-ticket/scripts/download-attachment.sh — greps the same two
44
+ # keys, but ONLY when JIRA_SERVER/JIRA_LOGIN are unset. Env still wins; a
45
+ # headless runner with those exported never opens this file.
46
+ # * SKILL prose (lisa-jira-add-journey, base-rules) — types
47
+ # `jira --config .lisa/jira-cli/.config.yml issue view <KEY>`.
48
+ #
49
+ # #2767 framed the blocking question as "can a SessionStart hook export an
50
+ # environment variable into the agent's later tool invocations, and does that
51
+ # differ per harness?" That question is MOOT for every consumer above, because
52
+ # none of them needs an export:
53
+ #
54
+ # - Two of the three parse this YAML themselves, in Lisa-owned shell.
55
+ # - The one real jira-cli invocation passes `--config`, an ARGUMENT. It
56
+ # crosses no process boundary, so it behaves identically on Claude Code,
57
+ # Codex, Cursor, Copilot, OpenCode and Antigravity. There is no per-harness
58
+ # capability to record because no harness capability is used.
59
+ #
60
+ # The only surface where an export could still have mattered is a freehand
61
+ # `jira ...` an agent types from SKILL prose. That is compensated at the same
62
+ # rung rather than dropped: the prose types `--config` too. `JIRA_CONFIG_FILE`
63
+ # is deliberately exported NOWHERE in Lisa — an unexported variable is another
64
+ # inert control, and the flag makes the export unnecessary.
65
+ #
66
+ # jira-cli's own resolution order, MEASURED against v1.7.0 (darwin/arm64)
67
+ # rather than taken from its README:
68
+ #
69
+ # 1. `--config`/`-c <path>` (highest; accepted either before or
70
+ # after the subcommand)
71
+ # 2. `JIRA_CONFIG_FILE=<path>`
72
+ # 3. `${HOME}/.config/.jira/.config.yml` (default)
73
+ #
74
+ # A path named by (1) or (2) that does not exist FAILS CLOSED: jira-cli prints
75
+ # "Missing configuration file." and exits 1 — it does NOT fall back to (3).
76
+ # That is what makes passing `--config` safe rather than a silent no-op.
77
+ #
78
+ # This hook never writes to `${HOME}/.config/.jira`. That is a developer's
79
+ # personal jira-cli state; consumers read it as an ANNOUNCED fallback only.
80
+ # ---------------------------------------------------------------------------
31
81
  PROJECT_DIR="${CLAUDE_PROJECT_DIR:-}"
32
82
  if [[ -z "${PROJECT_DIR}" || ! -d "${PROJECT_DIR}" ]]; then
33
83
  PROJECT_DIR="$(git rev-parse --show-toplevel 2>/dev/null || pwd)"
@@ -1 +1 @@
1
- {"version":3,"file":"lisa-owned-hash-ledger.d.ts","sourceRoot":"","sources":["../../src/core/lisa-owned-hash-ledger.ts"],"names":[],"mappings":"AACA,6EAA6E;AAE7E;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,EAAE,QAAQ,CAC3C,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CA0oBjC,CAAC"}
1
+ {"version":3,"file":"lisa-owned-hash-ledger.d.ts","sourceRoot":"","sources":["../../src/core/lisa-owned-hash-ledger.ts"],"names":[],"mappings":"AACA,6EAA6E;AAE7E;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,EAAE,QAAQ,CAC3C,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CA2oBjC,CAAC"}
@@ -480,6 +480,7 @@ export const LISA_OWNED_HASH_LEDGER = Object.freeze({
480
480
  "772202ddd42d626625ff719666afbbe83445d8bae1bc7c0fb5ffdcb402be83f8",
481
481
  "7f55986eb29f8ace8616595da4bbe60d80a96f9f29b24fb72efd66bb96b22464",
482
482
  "8e19d5f1ba7abe3d22fbee47ff8e0fad76b965ccca20b8849e3c43ab07d9a4ef",
483
+ "9404c374cbd90a0860410080f1044d087c51d84bb4c0a37343c2b632c3a9d03b",
483
484
  "a22fd1b7c483f1a538202353ee85c82be17a8910e03c0a930635ce8cb3595c64",
484
485
  "b83c5043a0f29b2d8851258acfe6906aab7922cd80f486e25220e55f26a8c0a5",
485
486
  "c57b70eed03b74e7c8335c40b0c2b1102e217e507337b71fcf3d2bec5a450bf8",
@@ -1 +1 @@
1
- {"version":3,"file":"lisa-owned-hash-ledger.js","sourceRoot":"","sources":["../../src/core/lisa-owned-hash-ledger.ts"],"names":[],"mappings":"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EAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAk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"}
1
+ {"version":3,"file":"lisa-owned-hash-ledger.js","sourceRoot":"","sources":["../../src/core/lisa-owned-hash-ledger.ts"],"names":[],"mappings":"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EAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAk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"}
@@ -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,CAw5EpE,CAAC;AAEL,4EAA4E;AAC5E,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAgoPjE,CAAC;AAEL,sFAAsF;AACtF,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAk6I/D,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,CAw5EpE,CAAC;AAEL,4EAA4E;AAC5E,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAkoPjE,CAAC;AAEL,sFAAsF;AACtF,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAk6I/D,CAAC"}
@@ -21,7 +21,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
21
21
  "all/copy-overwrite/scripts/lisa-hooks/block-managed-file-edits.sh": "d3ef2562b718156912f0877f8a0668026f5966fcca43eb9e064aa57a4e9a4976",
22
22
  "all/copy-overwrite/scripts/lisa-hooks/block-no-verify.sh": "759dfd7552c1a4a8bf7172ffd88671a37571155877ea2459d26f6a79c6ab57ee",
23
23
  "all/copy-overwrite/scripts/lisa-hooks/block-shell-json-parsing.sh": "234cb82cc9033bd04940a553d4ddc95b078e585e41777d6529d887676edc40b1",
24
- "all/copy-overwrite/scripts/lisa-hooks/parity-safety-net.sh": "c57b70eed03b74e7c8335c40b0c2b1102e217e507337b71fcf3d2bec5a450bf8",
24
+ "all/copy-overwrite/scripts/lisa-hooks/parity-safety-net.sh": "9404c374cbd90a0860410080f1044d087c51d84bb4c0a37343c2b632c3a9d03b",
25
25
  "all/copy-overwrite/scripts/lisa-hooks/sonar-secrets.sh": "f21cdcb54b353714a92c2d1e25fd6b76318e8e8d7cb90cdb016f174923c532ef",
26
26
  "all/copy-overwrite/scripts/lisa-lint-staged-preflight.mjs": "ce4bc224a102e3ac2bc29d8f2038eefd619129d4639c25954c93f05011f7f977",
27
27
  "all/copy-overwrite/scripts/lisa-postinstall.mjs": "d22fe47acf9a68828ca28b19b88e269bf535e77bc38952dec9f7a703269f1c44",
@@ -363,9 +363,9 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
363
363
  "plugins/src/base/hooks/install-pkgs.sh": "e9a13faba849a277410dde911ab102ee6f88ef915b33571bb1d4eef904172db5",
364
364
  "plugins/src/base/hooks/parity-safety-net-heredoc.py": "f21b1232ac82bd0e42d2ba43c68f4cc4546334fc885ba31747881f427097ef78",
365
365
  "plugins/src/base/hooks/parity-safety-net.agy.sh": "ce9bd2b4566ad9147e4ace56434cffbbe87edb4ccbb57549ab3fd9f4c671ced4",
366
- "plugins/src/base/hooks/parity-safety-net.sh": "aa887e9b54353d2a6622547bb4abc442fa33848e3269643a7461e0432b40bee1",
366
+ "plugins/src/base/hooks/parity-safety-net.sh": "6a77308c1dc48e3bb87e2ee3a9494e9cb00bea127df0d4cfdf02b2afbdc2bbcb",
367
367
  "plugins/src/base/hooks/secrets-preflight.sh": "cdc638627e5769770aefb061ea0ddfacc1888a8eab3a5fade6c43129a2d3ff6e",
368
- "plugins/src/base/hooks/setup-jira-cli.sh": "05506caa8fe9265916aa330930ddf620379103258d9b875f62774d407aa3f56a",
368
+ "plugins/src/base/hooks/setup-jira-cli.sh": "384bc8d935a2ed5788d7185979b3e74c75c17cd4bc5c230d7d8f086ab2703443",
369
369
  "plugins/src/base/hooks/shell-write-nudge.sh": "69839af423f8792b1e52c71097316c3264425553031627c0a2f9409a9d5becd0",
370
370
  "plugins/src/base/hooks/sonar-secrets.sh": "e37c8db517dff5cce357bacdd1316643bfb823c8ef5df44bbc983d3107619356",
371
371
  "plugins/src/base/hooks/threshold-ratchet-compare.mjs": "2ae57ea1eb0a0199559a17ee69186953f41115986a276e641ff8b3070e2f9fa6",
@@ -426,7 +426,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
426
426
  "plugins/src/base/rules/eager/wiki-knowledge-source.md": "b3ae63fca40461fef19779d8f0c971553963ed8fe9c22fc504da3d8e757b3a36",
427
427
  "plugins/src/base/rules/eager/work-item-definition-of-ready.md": "4285953f749aabee90dd44d7bff7e28a50e0a8c910917a96ebf81abfa425d836",
428
428
  "plugins/src/base/rules/reference/automation-runbook-contract.md": "427be7bddf9a581dbb1c1fdbe07c02d4a1ff4ec96f4d91f409651b6ac4ff8a45",
429
- "plugins/src/base/rules/reference/base-rules.md": "487ea1764c4b636ca4a33b78a90e925f028bb9a54182c0795cd1bbdc437a262d",
429
+ "plugins/src/base/rules/reference/base-rules.md": "8fe0d4b36e0a7bd1d1410c85aba97cbf56b57fbc86f673391a3ddaee9cc97427",
430
430
  "plugins/src/base/rules/reference/bdd-e2e-coverage.md": "c4b2bd970145451ab9f95e21f2b48d42fa4dd14e8a5077664ff391e47e13d8a6",
431
431
  "plugins/src/base/rules/reference/claim-archaeology.md": "fff025d47848c768d5b2c7047de744b7151eb2e44148d2df058c87310859457b",
432
432
  "plugins/src/base/rules/reference/claim-evidence-mapping.md": "49a3bbf4e8a9a8ca9e13eeafa672517d077060cfeb5d9710881ec9f5c3f3ec75",
@@ -561,17 +561,17 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
561
561
  "plugins/src/base/skills/lisa-intake-explain/SKILL.md": "353ffde220de23a06cd88fea0fffc8ff690fc6bcf553f99988a8367138404eba",
562
562
  "plugins/src/base/skills/lisa-intake/SKILL.md": "ad78305053ac69451e35ba3011895fe0220d5aa7306e38260a45b23a9683140f",
563
563
  "plugins/src/base/skills/lisa-jam-access/SKILL.md": "eb7255578a3ada2278a0437c4300fed3f28b9b1a4ef2fd4ceed63f3d9ab81ed3",
564
- "plugins/src/base/skills/lisa-jira-add-journey/SKILL.md": "92bc77aac50426b37f954ed24d95bd600ae1a429c2fecd6bbd4317053136bb03",
564
+ "plugins/src/base/skills/lisa-jira-add-journey/SKILL.md": "fca94ae6140abaded6ab9c583a625cfc276cd10877b81d0be73e473d7338fb29",
565
565
  "plugins/src/base/skills/lisa-jira-build-intake/SKILL.md": "dafbb30c38b0da961a38064fecbdb0f3eeb26886369c4040ed9c42570ab2272d",
566
566
  "plugins/src/base/skills/lisa-jira-claim/SKILL.md": "9c4935441a4e6b55df0949178f96e927184c4909bffff8929b39a304bc5ac00a",
567
567
  "plugins/src/base/skills/lisa-jira-create/SKILL.md": "77078002d2a16e0b2a65725f4e86b13caa1c43ba193eb37beb5b7da20feed3f1",
568
- "plugins/src/base/skills/lisa-jira-evidence/SKILL.md": "2da838a3fcc9ce4eec0c915d5df490e511b68928cec9a1de9c5a660f96b1900b",
569
- "plugins/src/base/skills/lisa-jira-evidence/scripts/post-evidence.sh": "2cad7d1d81dc4630f6d94299335edefd98807b8df6a9d7966a38cb80cb8117aa",
570
- "plugins/src/base/skills/lisa-jira-journey/SKILL.md": "26ae97efe0a996dd54ffa83eadaef03d6797bf716c67ee73d79fefe2fec1d599",
568
+ "plugins/src/base/skills/lisa-jira-evidence/SKILL.md": "e6a2458a5de6587ad1a407997407198b856f32853c958c1e7adc53ca9bfd2e71",
569
+ "plugins/src/base/skills/lisa-jira-evidence/scripts/post-evidence.sh": "33b95d722b465fd72bf81b09b8a103406b1893fa018e35ff563c862c39d68435",
570
+ "plugins/src/base/skills/lisa-jira-journey/SKILL.md": "8f25aacf4da67dd16a39a5a98c16b238ffffec47ad95660a9dfb569a9cfba9e0",
571
571
  "plugins/src/base/skills/lisa-jira-journey/scripts/generate-templates.py": "906c6d02d2191f12573a452059d939bb85de6489c86f3626e0a206dd5af7e3b7",
572
572
  "plugins/src/base/skills/lisa-jira-journey/scripts/parse-plan.py": "0c1921c0996e5d82c2c833e23afdab82a0b2e506f1b8783f87bd7ac0edd789e6",
573
573
  "plugins/src/base/skills/lisa-jira-read-ticket/SKILL.md": "1b7cd9a56bae1108c9814b8f8365411dad1e7f3cd294a28baeab6321d0b636b4",
574
- "plugins/src/base/skills/lisa-jira-read-ticket/scripts/download-attachment.sh": "f0a9b3c5bd82f0f86edb0ad86db5a9501cced9ec4a2a3bfa644bdff01c8eb460",
574
+ "plugins/src/base/skills/lisa-jira-read-ticket/scripts/download-attachment.sh": "051d8ce5445b4db04c7389ed6fb614ba43358a30512ff3de8f4432c567304fe7",
575
575
  "plugins/src/base/skills/lisa-jira-sync/SKILL.md": "4ea3cd7efc23eafc9f7bd88a3fb922c4786ff382f91162e666efff199609c1df",
576
576
  "plugins/src/base/skills/lisa-jira-validate-ticket/SKILL.md": "5eae1b662ada55c4a0737904351ad101fba2b622571562c93f29cf120cca1318",
577
577
  "plugins/src/base/skills/lisa-jira-verify/SKILL.md": "4e48dcd9e1144837890359e75cc405280bf5f52cf497e44f294b608ad681580c",
@@ -806,11 +806,11 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
806
806
  "plugins/src/expo/skills/gluestack-nativewind/references/spacing-scale.md": "5800a08bfa99f3613951a0bb08af4a503e657b480db29564f393b86fa8c131f6",
807
807
  "plugins/src/expo/skills/gluestack-nativewind/scripts/test_validate_styling.py": "a4c731b6b36551ed7375b81aef86b9607b3c33d42e28acb7bb52bf0312364644",
808
808
  "plugins/src/expo/skills/gluestack-nativewind/scripts/validate_styling.py": "cc27d03e202b18be1fe8810d0a83b263926107b31f3e335f8fa7b92a82f4ceac",
809
- "plugins/src/expo/skills/jira-add-journey/SKILL.md": "d2ae8b009d260949dfe5369bda85d0278578c75cc2bbd2f9edf53a8f4ea93ba5",
809
+ "plugins/src/expo/skills/jira-add-journey/SKILL.md": "f3ee60c6ce8652350d3efadd35a4704f60fde2d527627bf65aac521ad94a9e3a",
810
810
  "plugins/src/expo/skills/jira-create/SKILL.md": "0fb4378b7399580e180beaacd22f832af3ff0ddae7c5d7761039bc81832c0c43",
811
- "plugins/src/expo/skills/jira-evidence/SKILL.md": "41914820a5ce73828fded0c720865ff74782ca639e23a04de466d14fc85d6cba",
812
- "plugins/src/expo/skills/jira-evidence/scripts/post-evidence.sh": "2cad7d1d81dc4630f6d94299335edefd98807b8df6a9d7966a38cb80cb8117aa",
813
- "plugins/src/expo/skills/jira-journey/SKILL.md": "d2a78925cf39241d811ea6e75b61a34ed78db95184c8d6ed2d878b88ee938151",
811
+ "plugins/src/expo/skills/jira-evidence/SKILL.md": "84158ef5355e7be3f20146388cf54e5eb897dab64b03e34bf2c5d91d4b4a55fd",
812
+ "plugins/src/expo/skills/jira-evidence/scripts/post-evidence.sh": "33b95d722b465fd72bf81b09b8a103406b1893fa018e35ff563c862c39d68435",
813
+ "plugins/src/expo/skills/jira-journey/SKILL.md": "d677af1dbfc55deaf7f5c4bd0ed9c9d6de0cc2fed7c9395f62f53004185641c0",
814
814
  "plugins/src/expo/skills/jira-journey/scripts/generate-templates.py": "0b86be11aa955aa99e6ac72634e475b2945510b345040cdd3ec47afba6ae3cbf",
815
815
  "plugins/src/expo/skills/jira-journey/scripts/parse-plan.py": "59a390d17149e37d97680236075fc837789f5286cb078ddd9392cc4b21b25845",
816
816
  "plugins/src/expo/skills/jira-verify/SKILL.md": "d1705c87d5228e17157779ea31d9433e23d8dc235bda4e02787856d301f40d03",
@@ -943,11 +943,11 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
943
943
  "plugins/src/rails/skills/improve-max-lines-per-function/SKILL.md": "f9729b900ca0e6999b5401dd0df58b8b21863f293d569271a05e2628e782eb4d",
944
944
  "plugins/src/rails/skills/improve-max-lines/SKILL.md": "9d09544bef2628f58337280c9a82a014bd283ef8d13dd93e45f05ee2d528954c",
945
945
  "plugins/src/rails/skills/improve-test-coverage/SKILL.md": "9a77f4f5492df3ae9425f96a89000f842506f3a22942be67b4f24635e4f20fe4",
946
- "plugins/src/rails/skills/jira-add-journey/SKILL.md": "6ebfa55a4c244ec657eaddcf0f464d419f2da60c7f78a440e4c858d1531aaf04",
946
+ "plugins/src/rails/skills/jira-add-journey/SKILL.md": "b8ffa83b05ede1ab7f8c5dc7499b35c05f0229dab53e385d87faab55938bd0c5",
947
947
  "plugins/src/rails/skills/jira-create/SKILL.md": "789b1ed68e983029e0b57c3eefa90fdce000615d0f23b1699a6d9c0099b4e1d0",
948
- "plugins/src/rails/skills/jira-evidence/SKILL.md": "365b9c7c771657eac4f643fd6dd44342f9a3a23730befe13672c2338106e8c0b",
949
- "plugins/src/rails/skills/jira-evidence/scripts/post-evidence.sh": "2cad7d1d81dc4630f6d94299335edefd98807b8df6a9d7966a38cb80cb8117aa",
950
- "plugins/src/rails/skills/jira-journey/SKILL.md": "d83d1fe3c173ade4f1ec53d5b5788f5185770f4b519f985405fa510ee5bf0ebe",
948
+ "plugins/src/rails/skills/jira-evidence/SKILL.md": "2208c5d81ce468d488f31088a9eef98b6a20ae014d64565cba99df28f45f490e",
949
+ "plugins/src/rails/skills/jira-evidence/scripts/post-evidence.sh": "33b95d722b465fd72bf81b09b8a103406b1893fa018e35ff563c862c39d68435",
950
+ "plugins/src/rails/skills/jira-journey/SKILL.md": "c65cf8bcde3dbfe4995d26dcce62067cf1a08314a9ba9ca7f7c1fdd53d61feb6",
951
951
  "plugins/src/rails/skills/jira-verify/SKILL.md": "ea7aabc7549639d81a60bf3893965cb11c6261a73d549c5eaaa00fe4f5d83332",
952
952
  "plugins/src/rails/skills/ops-check-logs/SKILL.md": "e243eb223398e0ae1f1b5f0db7dda8c8ad8ffdea4ec66b9b38164c76f472ba28",
953
953
  "plugins/src/rails/skills/ops-deploy/SKILL.md": "fbf0f956258836d3ae35b152d3262e34e7060cd924dbeca817be7f52a2f02ff4",
@@ -8142,6 +8142,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
8142
8142
  "tests/unit/hooks/lint-on-edit.test.ts": true,
8143
8143
  "tests/unit/hooks/parity-push-gate.test.ts": true,
8144
8144
  "tests/unit/hooks/parity-safety-net-credentials.test.ts": true,
8145
+ "tests/unit/hooks/parity-safety-net-false-positives.test.ts": true,
8145
8146
  "tests/unit/hooks/parity-safety-net-guards.test.ts": true,
8146
8147
  "tests/unit/hooks/parity-safety-net-heredoc-body-quote-state.test.ts": true,
8147
8148
  "tests/unit/hooks/parity-safety-net-heredoc-continuation.test.ts": true,
@@ -8262,6 +8263,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
8262
8263
  "tests/unit/scripts/github-governance.test.ts": true,
8263
8264
  "tests/unit/scripts/install-claude-plugins-self.test.ts": true,
8264
8265
  "tests/unit/scripts/invoked-as-script.test.ts": true,
8266
+ "tests/unit/scripts/jira-cli-config-consumption.test.ts": true,
8265
8267
  "tests/unit/scripts/lint-staged-preflight.test.ts": true,
8266
8268
  "tests/unit/scripts/lisa-assert-eas-profile.test.ts": true,
8267
8269
  "tests/unit/scripts/lisa-environment-prepare.test.ts": true,