@codyswann/lisa 4.3.2 → 4.3.4

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 (67) hide show
  1. package/all/create-only/.github/workflows/continuous-gates.yml +18 -1
  2. package/cdk/create-only/.github/workflows/deploy.yml +4 -2
  3. package/dist/core/lisa-owned-templates.d.ts +25 -0
  4. package/dist/core/lisa-owned-templates.d.ts.map +1 -1
  5. package/dist/core/lisa-owned-templates.js +39 -0
  6. package/dist/core/lisa-owned-templates.js.map +1 -1
  7. package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
  8. package/dist/core/upstream-evidence-manifest.js +10 -6
  9. package/dist/core/upstream-evidence-manifest.js.map +1 -1
  10. package/dist/strategies/copy-overwrite.d.ts.map +1 -1
  11. package/dist/strategies/copy-overwrite.js +29 -1
  12. package/dist/strategies/copy-overwrite.js.map +1 -1
  13. package/expo/create-only/.github/workflows/deploy.yml +4 -2
  14. package/harper-fabric/create-only/.github/workflows/deploy.yml +4 -2
  15. package/nestjs/create-only/.github/workflows/deploy.yml +4 -2
  16. package/package.json +1 -1
  17. package/plugins/lisa/.claude-plugin/plugin.json +1 -1
  18. package/plugins/lisa/.codex-plugin/plugin.json +1 -1
  19. package/plugins/lisa-agy/plugin.json +1 -1
  20. package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
  21. package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
  22. package/plugins/lisa-cdk-agy/plugin.json +1 -1
  23. package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
  24. package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
  25. package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
  26. package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
  27. package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
  28. package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
  29. package/plugins/lisa-expo-agy/plugin.json +1 -1
  30. package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
  31. package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
  32. package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
  33. package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
  34. package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
  35. package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
  36. package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
  37. package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
  38. package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
  39. package/plugins/lisa-nestjs-agy/plugin.json +1 -1
  40. package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
  41. package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
  42. package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
  43. package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
  44. package/plugins/lisa-openclaw-agy/plugin.json +1 -1
  45. package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
  46. package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
  47. package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
  48. package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
  49. package/plugins/lisa-phaser-agy/plugin.json +1 -1
  50. package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
  51. package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
  52. package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
  53. package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
  54. package/plugins/lisa-rails-agy/plugin.json +1 -1
  55. package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
  56. package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
  57. package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
  58. package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
  59. package/plugins/lisa-typescript-agy/plugin.json +1 -1
  60. package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
  61. package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
  62. package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
  63. package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
  64. package/plugins/lisa-wiki-agy/plugin.json +1 -1
  65. package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
  66. package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
  67. package/rails/create-only/.github/workflows/deploy.yml +4 -2
@@ -71,4 +71,21 @@ jobs:
71
71
  moment: continuous:${{ inputs.environment || 'production' }}
72
72
  node_version: '22.21.1'
73
73
  package_manager: 'npm'
74
- secrets: inherit
74
+ # No `secrets:` key, deliberately. `gates.yml` declares none in its
75
+ # `workflow_call` and contains zero occurrences of the string `secret`, so
76
+ # there is nothing here to pass and the correct mapping is the empty one —
77
+ # which in GitHub's grammar is the absence of the key, not `secrets: {}`.
78
+ #
79
+ # This shipped as `secrets: inherit`, which handed the callee every secret in
80
+ # the repository to read none of them. SonarCloud flags it as "Only pass
81
+ # required secrets to this workflow" and it degrades `new_security_rating`,
82
+ # which blocks the merge on any project whose Sonar analysis covers
83
+ # `.github/**`. `lisa-update-projects` already warns operators off `inherit`
84
+ # for exactly this reason; the template should not have been doing it.
85
+ #
86
+ # If `gates.yml` ever does need a secret, add the named mapping for that one
87
+ # secret. Do NOT reach for `inherit`, and do NOT try to fix a permissions
88
+ # error here instead: `permissions` in a reusable workflow is a CEILING the
89
+ # caller must already hold, and a caller granting less than the callee
90
+ # declares makes the run fail to LOAD — no jobs, no check, and a required
91
+ # context that never reports at all.
@@ -87,7 +87,8 @@ jobs:
87
87
  moment: pre-deploy:${{ needs.determine_environment.outputs.environment }}
88
88
  node_version: '22.21.1'
89
89
  package_manager: 'npm'
90
- secrets: inherit
90
+ # No `secrets:` key: gates.yml declares none in its `workflow_call`, so
91
+ # passing any grants everything to a callee that reads nothing (#3065).
91
92
 
92
93
  release:
93
94
  name: 📦 Release
@@ -130,5 +131,6 @@ jobs:
130
131
  moment: post-deploy:${{ needs.determine_environment.outputs.environment }}
131
132
  node_version: '22.21.1'
132
133
  package_manager: 'npm'
133
- secrets: inherit
134
+ # No `secrets:` key: gates.yml declares none in its `workflow_call`, so
135
+ # passing any grants everything to a callee that reads nothing (#3065).
134
136
  # Trigger staging deployment after CDK trust fix
@@ -65,4 +65,29 @@
65
65
  * @returns True when Lisa owns the file outright and may refresh it unprompted
66
66
  */
67
67
  export declare function isLisaOwnedTemplate(relativePath: string): boolean;
68
+ /**
69
+ * Whether a template declares, in its own text, that Lisa replaces it wholesale
70
+ * on every run.
71
+ *
72
+ * This is the third population, and it exists because owned/not-owned is not a
73
+ * fine enough cut. `eslint.config.ts` is not Lisa-owned by
74
+ * {@link isLisaOwnedTemplate} — no `lisa-` segment, not under `scripts/` — and
75
+ * it is nonetheless replaced every run by design, with its header saying so and
76
+ * pointing at `eslint.config.local.ts` for customisation.
77
+ *
78
+ * Before this predicate existed that contract was honoured only by accident: a
79
+ * non-owned file fell through to the prompt branch, and under `--yes` the
80
+ * prompter said yes. The same fall-through discarded curated `knip.json` and
81
+ * `tsconfig.json` content, which is the defect. Separating the two populations
82
+ * by the declaration the template already carries fixes the second without
83
+ * freezing the first — freezing it would be #2374's undeliverable-fix incident
84
+ * returning through the door opened to fix this.
85
+ *
86
+ * Read from the PACKAGED source rather than the installed copy. The declaration
87
+ * is Lisa's statement about its own file, so a host cannot opt out by deleting
88
+ * the sentence; `.lisaignore` is the sanctioned way to hold your own version.
89
+ * @param templateContents - Contents of the packaged template file
90
+ * @returns True when the template declares it is replaced on every run
91
+ */
92
+ export declare function declaresReplacedEveryRun(templateContents: string): boolean;
68
93
  //# sourceMappingURL=lisa-owned-templates.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"lisa-owned-templates.d.ts","sourceRoot":"","sources":["../../src/core/lisa-owned-templates.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4DG;AAQH;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAQjE"}
1
+ {"version":3,"file":"lisa-owned-templates.d.ts","sourceRoot":"","sources":["../../src/core/lisa-owned-templates.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4DG;AAQH;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAQjE;AAeD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,wBAAwB,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAE1E"}
@@ -75,4 +75,43 @@ export function isLisaOwnedTemplate(relativePath) {
75
75
  .split("/")
76
76
  .some(segment => segment.startsWith(LISA_NAMESPACE_PREFIX)));
77
77
  }
78
+ /**
79
+ * The sentence a template uses to declare that Lisa replaces it on every run.
80
+ *
81
+ * Authored in the template itself, which is what makes it trustworthy: the file
82
+ * that says it is replaced is the file being replaced, so the declaration
83
+ * cannot drift away from the thing it describes the way an external roster can.
84
+ * 42 shipped templates carry it — `eslint.config.ts`, `vitest.config.ts`,
85
+ * `jest.config.ts`, `sgconfig.yml`, `lefthook.yml`, the ast-grep rule files —
86
+ * and each pairs it with the customisation surface a host is meant to use
87
+ * instead (`eslint.config.local.ts`, `*.thresholds.json`).
88
+ */
89
+ const REPLACED_EVERY_RUN_MARKER = "IS replaced on each";
90
+ /**
91
+ * Whether a template declares, in its own text, that Lisa replaces it wholesale
92
+ * on every run.
93
+ *
94
+ * This is the third population, and it exists because owned/not-owned is not a
95
+ * fine enough cut. `eslint.config.ts` is not Lisa-owned by
96
+ * {@link isLisaOwnedTemplate} — no `lisa-` segment, not under `scripts/` — and
97
+ * it is nonetheless replaced every run by design, with its header saying so and
98
+ * pointing at `eslint.config.local.ts` for customisation.
99
+ *
100
+ * Before this predicate existed that contract was honoured only by accident: a
101
+ * non-owned file fell through to the prompt branch, and under `--yes` the
102
+ * prompter said yes. The same fall-through discarded curated `knip.json` and
103
+ * `tsconfig.json` content, which is the defect. Separating the two populations
104
+ * by the declaration the template already carries fixes the second without
105
+ * freezing the first — freezing it would be #2374's undeliverable-fix incident
106
+ * returning through the door opened to fix this.
107
+ *
108
+ * Read from the PACKAGED source rather than the installed copy. The declaration
109
+ * is Lisa's statement about its own file, so a host cannot opt out by deleting
110
+ * the sentence; `.lisaignore` is the sanctioned way to hold your own version.
111
+ * @param templateContents - Contents of the packaged template file
112
+ * @returns True when the template declares it is replaced on every run
113
+ */
114
+ export function declaresReplacedEveryRun(templateContents) {
115
+ return templateContents.includes(REPLACED_EVERY_RUN_MARKER);
116
+ }
78
117
  //# sourceMappingURL=lisa-owned-templates.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"lisa-owned-templates.js","sourceRoot":"","sources":["../../src/core/lisa-owned-templates.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4DG;AAEH,2EAA2E;AAC3E,MAAM,qBAAqB,GAAG,OAAO,CAAC;AAEtC,yEAAyE;AACzE,MAAM,gBAAgB,GAAG,UAAU,CAAC;AAEpC;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,YAAoB;IACtD,MAAM,UAAU,GAAG,YAAY,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACtD,OAAO,CACL,UAAU,CAAC,UAAU,CAAC,gBAAgB,CAAC;QACvC,UAAU;aACP,KAAK,CAAC,GAAG,CAAC;aACV,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC,CAC9D,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"lisa-owned-templates.js","sourceRoot":"","sources":["../../src/core/lisa-owned-templates.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4DG;AAEH,2EAA2E;AAC3E,MAAM,qBAAqB,GAAG,OAAO,CAAC;AAEtC,yEAAyE;AACzE,MAAM,gBAAgB,GAAG,UAAU,CAAC;AAEpC;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,YAAoB;IACtD,MAAM,UAAU,GAAG,YAAY,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACtD,OAAO,CACL,UAAU,CAAC,UAAU,CAAC,gBAAgB,CAAC;QACvC,UAAU;aACP,KAAK,CAAC,GAAG,CAAC;aACV,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC,CAC9D,CAAC;AACJ,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,yBAAyB,GAAG,qBAAqB,CAAC;AAExD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,wBAAwB,CAAC,gBAAwB;IAC/D,OAAO,gBAAgB,CAAC,QAAQ,CAAC,yBAAyB,CAAC,CAAC;AAC9D,CAAC"}
@@ -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,CAs4EpE,CAAC;AAEL,4EAA4E;AAC5E,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CA4iPjE,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,CAs4EpE,CAAC;AAEL,4EAA4E;AAC5E,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAgjPjE,CAAC;AAEL,sFAAsF;AACtF,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAk6I/D,CAAC"}
@@ -33,7 +33,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
33
33
  "all/copy-overwrite/scripts/schemas/lisa-command-envelope.v1.schema.json": "d153b7c2953a30f180e38f09e98240c63327f5196eeba9bdf545e5a1f125a879",
34
34
  "all/copy-overwrite/scripts/schemas/lisa-state-contract.v1.schema.json": "6b7afe4ffeba8aaa53871d8855172f7eacde05953b1321145218ec638ff5c1c4",
35
35
  "all/create-only/.agents/rules/README.md": "fd260fd9b2934d0d698a8098dfff07fedc071849d588e602d773666678c3d540",
36
- "all/create-only/.github/workflows/continuous-gates.yml": "d582465d1c73a63b511fe33427be9d50b7fa95598ce7f724a7496e7b441e3628",
36
+ "all/create-only/.github/workflows/continuous-gates.yml": "48c410a6547d4b7a5af332fec5f3c0be97ee9eb03418398a35d05c85e3354fbc",
37
37
  "all/create-only/.lisaignore": "735dc0a28a19e3aebc3d71b1ddf8b077e96ab17013d0f1c49d87c08558a315df",
38
38
  "all/create-only/scripts/remote-agent-aws-setup.sh": "bb0e67a52ea5badd0f291961c3a9fb25559f1f35e3042642d389a49eb47f7e31",
39
39
  "all/create-only/specs/.keep": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
@@ -54,7 +54,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
54
54
  "cdk/copy-overwrite/vitest.cdk.ts": "030158b11bec4f10b39585feb98f498981f307faa1fa314c7522e6def5d73c94",
55
55
  "cdk/copy-overwrite/vitest.config.ts": "c7f309d4f43d9188b9c067cb4900b2bdbacfbd28d135a6a2e6313cb0a37b030f",
56
56
  "cdk/create-only/.github/workflows/ci.yml": "98bd4b784a5a0a96bedc40c209f5bf5afe97fa422c200533d4544990a69a5c1a",
57
- "cdk/create-only/.github/workflows/deploy.yml": "159ec01b717737b7d0004cc54f526a36ce67406a249c5dbf2a449b914eb0bfbc",
57
+ "cdk/create-only/.github/workflows/deploy.yml": "f32ec7eecc7451812213fc66f1a6fa4b360137c586d47ede06747f04eb557251",
58
58
  "cdk/create-only/cdk.json": "f89030d8fe145a1dbabd59d89ddee4e16984f222d737f7fcf6b778d911e9fe40",
59
59
  "cdk/create-only/tsconfig.local.json": "d26253827e21fd7c41d30565fe3d339675f119e00bb24c5713a01f57ccd06602",
60
60
  "cdk/create-only/vitest.config.local.ts": "a70a6d2a4f210304cf84b8017b2c628c0ef689712c4f745ef45e1fcfffac4050",
@@ -121,7 +121,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
121
121
  "expo/copy-overwrite/tsconfig.json": "c92e2c2c109e8794ee351f634361ef46297f5a0cd606aaf5c19911da836df307",
122
122
  "expo/create-only/.github/required-checks.json": "11c77cb42306efaa71d1be14ab0c77651bd52b0f010820f63a43daab467ccb12",
123
123
  "expo/create-only/.github/workflows/ci.yml": "5ea18b202fd952a79996e310fd933a2ac741d5e639b4d15224276e7e285f91ba",
124
- "expo/create-only/.github/workflows/deploy.yml": "b2e9805f4e6d0d892c92417d2ec994027efd7dcd19a3f61e3782c5d080a5b70f",
124
+ "expo/create-only/.github/workflows/deploy.yml": "fdc5f57a3f2c9681e9fb1345ef2a3821aebf6ef3ecedc35faed32ea8384ab1dc",
125
125
  "expo/create-only/.github/workflows/maestro-e2e.yml": "cd587cd38ca985b621d572e96f05425bcb9ca8dcef9af5b338349cfa1e6cfd39",
126
126
  "expo/create-only/.github/workflows/nightly-e2e-bypass-reaper.yml": "db78a1012a00cf4e8b023a67bb57566ae85cf790c3856f3e299636c766f0c242",
127
127
  "expo/create-only/.github/workflows/nightly-e2e-health.yml": "b44de3f07bdc63019e7e63cf524abe7b72f9791454b7514ab2f660a95aa28e93",
@@ -162,7 +162,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
162
162
  "harper-fabric/copy-overwrite/tsconfig.eslint.json": "63ddc31cbbdf91ba4def5f04ed76b2a8b61ced456d4472aea77a55cc037a62e1",
163
163
  "harper-fabric/copy-overwrite/tsconfig.json": "64b9f2e919160568712e2641b125aa21bec486532249a7b17e4fb2f4bb3988cc",
164
164
  "harper-fabric/copy-overwrite/vitest.config.ts": "94ee60be0e9a4b735cf1b053143751c9968465ff04fb59fbdfc252e7413ff337",
165
- "harper-fabric/create-only/.github/workflows/deploy.yml": "698419ba902d5ec69679313cd3394b0ca9af98b9e7d9732ac893055295120dbc",
165
+ "harper-fabric/create-only/.github/workflows/deploy.yml": "dd7455fe0f6ebd77b2b2e6ed0846843973536d2da57b0ed67b6bbcb62af32224",
166
166
  "harper-fabric/create-only/.github/workflows/zap-baseline.yml": "925ee1068e53d46fd0374299c1ee73d0b791e201169772cd509946ef503de8f5",
167
167
  "harper-fabric/create-only/.zap/baseline.conf": "68aae4b1b9b5b7253b5aeb792d72b58f64e5eda1dcf8f3062bd9d77494a5a22f",
168
168
  "harper-fabric/create-only/scripts/zap-baseline.sh": "00f5a2bdf6c9ecf0d7a1c74ec629364b09bab1f79c4ea71779826288702d76aa",
@@ -204,7 +204,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
204
204
  "nestjs/create-only/.github/k6/thresholds/strict.json": "e121ec72de4596b95c013a8c71f03653bcdf057cf7f8d1fec6f0e13c1381867f",
205
205
  "nestjs/create-only/.github/required-checks.json": "620455acdebb95136f9061db0c5e431f3396974b2f8208250ee22dc39098e1bd",
206
206
  "nestjs/create-only/.github/workflows/ci.yml": "aba5d0d7b7eafcd0ceb4d6c6a9fa205d5473fed937cfc86012559bcb11258f9b",
207
- "nestjs/create-only/.github/workflows/deploy.yml": "86f71854c84eb2ccf62bbf739c1acc4407fc6841cb11daa938afa542d39e6d0a",
207
+ "nestjs/create-only/.github/workflows/deploy.yml": "d7198bc080a05775e669e0f04e9221447b81d19fc84b4e2812596dd9ec501c83",
208
208
  "nestjs/create-only/.zap/baseline.conf": "a7cd559b014555ef2efe7a6ce129384ec376ce4d66d5bc3ae9e2f3f883172c4d",
209
209
  "nestjs/create-only/scripts/zap-baseline.sh": "9d81fdb3419753ca4ec5509e37365543d7608c7a9924635ef1acb4734cb3bbd1",
210
210
  "nestjs/create-only/tsconfig.local.json": "0b720ddad0d18f52dadf33bdc4a0aec0eb65c506bc8ebb692f880bdf31d1011d",
@@ -1054,7 +1054,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
1054
1054
  "rails/copy-overwrite/scripts/threshold-ratchet-families.mjs": "f50e35d11295a836bd5b6d818aed6daea68ff70bdffbbdf9f67b09984a2628da",
1055
1055
  "rails/copy-overwrite/sgconfig.yml": "ff5b62de42eb969a851fdc53ee6932a32ffe010b567ed2c62460ed454ad2a24f",
1056
1056
  "rails/create-only/.github/workflows/ci.yml": "924375bcfcb8c13f546a7e323cf5ad99cee1427d3ba90386680db16b981e5ab4",
1057
- "rails/create-only/.github/workflows/deploy.yml": "3290e124a2ef7c74294a573bd3b23b57a1a62655e0820ab6040cc7044de628d6",
1057
+ "rails/create-only/.github/workflows/deploy.yml": "11dc8b52947f6b1476a277d1fe5f532b398ae9cd4b8d0dc8cc09df3e4e4f77eb",
1058
1058
  "rails/create-only/.mise.toml": "28be5746256a30ad2260da7d37244cc461f8963ce5d5a81ddce71b48f0ab6ef0",
1059
1059
  "rails/create-only/.mutant.yml": "9ee28ad14e4688e58827510eb9b7197d9a368fc670821145a08f7542e2e216d8",
1060
1060
  "rails/create-only/.reek.yml": "d2fca1f6367719b002ea51c76e10cb9e08b1c34991b4386696f79a1a36c6a385",
@@ -7910,6 +7910,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
7910
7910
  "tests/unit/config/coderabbit-labeling-scope.test.ts": true,
7911
7911
  "tests/unit/config/conflict-prover-consumer-layouts.test.ts": true,
7912
7912
  "tests/unit/config/coverage-unit-script-runner-parity.test.ts": true,
7913
+ "tests/unit/config/create-only-caller-secrets.test.ts": true,
7913
7914
  "tests/unit/config/declared-gate-executors.test.ts": true,
7914
7915
  "tests/unit/config/dependabot-not-distributed.test.ts": true,
7915
7916
  "tests/unit/config/dist-rebuild-window.test.ts": true,
@@ -8009,6 +8010,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
8009
8010
  "tests/unit/core/learnings-writer.test.ts": true,
8010
8011
  "tests/unit/core/lisa-owned-enforcement-scripts.test.ts": true,
8011
8012
  "tests/unit/core/lisa-owned-provenance.test.ts": true,
8013
+ "tests/unit/core/lisa-owned-templates-classification.test.ts": true,
8012
8014
  "tests/unit/core/lisa-owned-templates.test.ts": true,
8013
8015
  "tests/unit/core/lisa-plugin-selection.test.ts": true,
8014
8016
  "tests/unit/core/lisa-skill-sources.test.ts": true,
@@ -8021,6 +8023,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
8021
8023
  "tests/unit/core/self-apply.test.ts": true,
8022
8024
  "tests/unit/core/skill-frontmatter-contract.test.ts": true,
8023
8025
  "tests/unit/core/sonar-integration.test.ts": true,
8026
+ "tests/unit/core/update-skill-apply-mode.test.ts": true,
8024
8027
  "tests/unit/core/upstream-attribution-body-hardening.test.ts": true,
8025
8028
  "tests/unit/core/upstream-attribution-body.test.ts": true,
8026
8029
  "tests/unit/core/upstream-attribution-file-safety.test.ts": true,
@@ -8410,6 +8413,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
8410
8413
  "tests/unit/strategies/copy-overwrite-prompted-downgrade.test.ts": true,
8411
8414
  "tests/unit/strategies/copy-overwrite-refresh-templates.test.ts": true,
8412
8415
  "tests/unit/strategies/copy-overwrite-unattended-consent.test.ts": true,
8416
+ "tests/unit/strategies/copy-overwrite-yes-preserves-curated.test.ts": true,
8413
8417
  "tests/unit/strategies/copy-overwrite.test.ts": true,
8414
8418
  "tests/unit/strategies/create-only.test.ts": true,
8415
8419
  "tests/unit/strategies/credential-substrate-precedence.test.ts": true,