@codyswann/lisa 4.19.0 → 4.21.0

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 (133) hide show
  1. package/all/copy-contents/.gitattributes +2 -1
  2. package/all/create-only/.lisa/PROJECT_LEARNINGS.md +1 -1
  3. package/dist/core/learnings-alias.d.ts +26 -45
  4. package/dist/core/learnings-alias.d.ts.map +1 -1
  5. package/dist/core/learnings-alias.js +29 -48
  6. package/dist/core/learnings-alias.js.map +1 -1
  7. package/dist/core/learnings-budget-check.d.ts +2 -1
  8. package/dist/core/learnings-budget-check.d.ts.map +1 -1
  9. package/dist/core/learnings-budget-check.js +13 -11
  10. package/dist/core/learnings-budget-check.js.map +1 -1
  11. package/dist/core/learnings-contract.d.ts +27 -10
  12. package/dist/core/learnings-contract.d.ts.map +1 -1
  13. package/dist/core/learnings-contract.js +37 -9
  14. package/dist/core/learnings-contract.js.map +1 -1
  15. package/dist/core/learnings-document.d.ts +20 -1
  16. package/dist/core/learnings-document.d.ts.map +1 -1
  17. package/dist/core/learnings-document.js +81 -14
  18. package/dist/core/learnings-document.js.map +1 -1
  19. package/dist/core/learnings-entry.d.ts +11 -1
  20. package/dist/core/learnings-entry.d.ts.map +1 -1
  21. package/dist/core/learnings-entry.js +98 -24
  22. package/dist/core/learnings-entry.js.map +1 -1
  23. package/dist/core/learnings-merge-driver.d.ts +4 -2
  24. package/dist/core/learnings-merge-driver.d.ts.map +1 -1
  25. package/dist/core/learnings-merge-driver.js +6 -3
  26. package/dist/core/learnings-merge-driver.js.map +1 -1
  27. package/dist/core/learnings-merge.d.ts.map +1 -1
  28. package/dist/core/learnings-merge.js +96 -10
  29. package/dist/core/learnings-merge.js.map +1 -1
  30. package/dist/core/learnings-overflow.d.ts.map +1 -1
  31. package/dist/core/learnings-overflow.js +72 -3
  32. package/dist/core/learnings-overflow.js.map +1 -1
  33. package/dist/core/learnings-supersede.d.ts +56 -0
  34. package/dist/core/learnings-supersede.d.ts.map +1 -0
  35. package/dist/core/learnings-supersede.js +199 -0
  36. package/dist/core/learnings-supersede.js.map +1 -0
  37. package/dist/core/learnings-writer.d.ts +9 -7
  38. package/dist/core/learnings-writer.d.ts.map +1 -1
  39. package/dist/core/learnings-writer.js +31 -58
  40. package/dist/core/learnings-writer.js.map +1 -1
  41. package/dist/core/learnings.d.ts +3 -0
  42. package/dist/core/learnings.d.ts.map +1 -1
  43. package/dist/core/learnings.js +3 -0
  44. package/dist/core/learnings.js.map +1 -1
  45. package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
  46. package/dist/core/upstream-evidence-manifest.js +24 -7
  47. package/dist/core/upstream-evidence-manifest.js.map +1 -1
  48. package/package.json +3 -2
  49. package/plugins/lisa/.claude-plugin/plugin.json +1 -1
  50. package/plugins/lisa/.codex-plugin/plugin.json +1 -1
  51. package/plugins/lisa/.codex-plugin/skills/lisa-debrief-apply/SKILL.md +5 -4
  52. package/plugins/lisa/.codex-plugin/skills/lisa-persist-learning/SKILL.md +2 -2
  53. package/plugins/lisa/.codex-plugin/skills/lisa-secrets-access/scripts/publish-aws-bootstrap.mjs +349 -0
  54. package/plugins/lisa/.codex-plugin/skills/lisa-setup-remote-aws/SKILL.md +23 -5
  55. package/plugins/lisa/agents/learner.md +7 -6
  56. package/plugins/lisa/rules/reference/project-learnings.md +34 -1
  57. package/plugins/lisa/skills/lisa-debrief-apply/SKILL.md +5 -4
  58. package/plugins/lisa/skills/lisa-persist-learning/SKILL.md +2 -2
  59. package/plugins/lisa/skills/lisa-secrets-access/scripts/publish-aws-bootstrap.mjs +349 -0
  60. package/plugins/lisa/skills/lisa-setup-remote-aws/SKILL.md +23 -5
  61. package/plugins/lisa-agy/agents/learner.md +7 -6
  62. package/plugins/lisa-agy/plugin.json +1 -1
  63. package/plugins/lisa-agy/skills/lisa-debrief-apply/SKILL.md +5 -4
  64. package/plugins/lisa-agy/skills/lisa-persist-learning/SKILL.md +2 -2
  65. package/plugins/lisa-agy/skills/lisa-secrets-access/scripts/publish-aws-bootstrap.mjs +349 -0
  66. package/plugins/lisa-agy/skills/lisa-setup-remote-aws/SKILL.md +23 -5
  67. package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
  68. package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
  69. package/plugins/lisa-cdk-agy/plugin.json +1 -1
  70. package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
  71. package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
  72. package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
  73. package/plugins/lisa-copilot/agents/learner.agent.md +7 -6
  74. package/plugins/lisa-copilot/rules/reference/project-learnings.md +34 -1
  75. package/plugins/lisa-copilot/skills/lisa-debrief-apply/SKILL.md +5 -4
  76. package/plugins/lisa-copilot/skills/lisa-persist-learning/SKILL.md +2 -2
  77. package/plugins/lisa-copilot/skills/lisa-secrets-access/scripts/publish-aws-bootstrap.mjs +349 -0
  78. package/plugins/lisa-copilot/skills/lisa-setup-remote-aws/SKILL.md +23 -5
  79. package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
  80. package/plugins/lisa-cursor/agents/learner.md +7 -6
  81. package/plugins/lisa-cursor/rules/project-learnings-reference.mdc +34 -1
  82. package/plugins/lisa-cursor/skills/lisa-debrief-apply/SKILL.md +5 -4
  83. package/plugins/lisa-cursor/skills/lisa-persist-learning/SKILL.md +2 -2
  84. package/plugins/lisa-cursor/skills/lisa-secrets-access/scripts/publish-aws-bootstrap.mjs +349 -0
  85. package/plugins/lisa-cursor/skills/lisa-setup-remote-aws/SKILL.md +23 -5
  86. package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
  87. package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
  88. package/plugins/lisa-expo-agy/plugin.json +1 -1
  89. package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
  90. package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
  91. package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
  92. package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
  93. package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
  94. package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
  95. package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
  96. package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
  97. package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
  98. package/plugins/lisa-nestjs-agy/plugin.json +1 -1
  99. package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
  100. package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
  101. package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
  102. package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
  103. package/plugins/lisa-openclaw-agy/plugin.json +1 -1
  104. package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
  105. package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
  106. package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
  107. package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
  108. package/plugins/lisa-phaser-agy/plugin.json +1 -1
  109. package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
  110. package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
  111. package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
  112. package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
  113. package/plugins/lisa-rails-agy/plugin.json +1 -1
  114. package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
  115. package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
  116. package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
  117. package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
  118. package/plugins/lisa-typescript-agy/plugin.json +1 -1
  119. package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
  120. package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
  121. package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
  122. package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
  123. package/plugins/lisa-wiki-agy/plugin.json +1 -1
  124. package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
  125. package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
  126. package/plugins/src/base/agents/learner.md +7 -6
  127. package/plugins/src/base/rules/reference/project-learnings.md +34 -1
  128. package/plugins/src/base/skills/lisa-debrief-apply/SKILL.md +5 -4
  129. package/plugins/src/base/skills/lisa-persist-learning/SKILL.md +2 -2
  130. package/plugins/src/base/skills/lisa-secrets-access/scripts/publish-aws-bootstrap.mjs +349 -0
  131. package/plugins/src/base/skills/lisa-setup-remote-aws/SKILL.md +23 -5
  132. package/scripts/verify-learner-frontmatter-built.mjs +1 -1
  133. package/scripts/verify-packed-learnings-contract.mjs +268 -0
@@ -1 +1 @@
1
- {"version":3,"file":"learnings-writer.d.ts","sourceRoot":"","sources":["../../src/core/learnings-writer.ts"],"names":[],"mappings":"AA6BA,gFAAgF;AAChF,MAAM,WAAW,2BAA2B;IAC1C,gEAAgE;IAChE,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC;;;;OAIG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,KAAK,IAAI,CAAC;IAC9D;;;;OAIG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,KAAK,IAAI,CAAC;CACrE;AAED;;;;;;;;GAQG;AACH,wBAAsB,oBAAoB,CACxC,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,OAAO,GACjB,OAAO,CAAC,MAAM,CAAC,CAEjB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,2BAA2B,CAC/C,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,OAAO,EAClB,OAAO,GAAE,2BAAgC,GACxC,OAAO,CAAC,MAAM,CAAC,CA8BjB;AAyED,2DAA2D;AAC3D,MAAM,MAAM,qBAAqB,GAAG,WAAW,GAAG,WAAW,GAAG,WAAW,CAAC;AAE5E,uEAAuE;AACvE,MAAM,WAAW,qBAAqB;IACpC,8EAA8E;IAC9E,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAC;IACvC,gDAAgD;IAChD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,mEAAmE;IACnE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,oBAAoB,CACxC,WAAW,EAAE,MAAM,EACnB,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,qBAAqB,CAAC,CA8ChC;AAED,OAAO,EACL,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"learnings-writer.d.ts","sourceRoot":"","sources":["../../src/core/learnings-writer.ts"],"names":[],"mappings":"AAwBA,OAAO,EAGL,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EAC1B,MAAM,0BAA0B,CAAC;AAMlC,gFAAgF;AAChF,MAAM,WAAW,2BAA2B;IAC1C,2EAA2E;IAC3E,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACnD,2EAA2E;IAC3E,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAC1B,OAAO,EAAE,SAAS,oBAAoB,EAAE,KACrC,IAAI,CAAC;IACV;;;OAGG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,KAAK,IAAI,CAAC;IAC9D;;;;OAIG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,KAAK,IAAI,CAAC;CACrE;AAED;;;;;;;;GAQG;AACH,wBAAsB,oBAAoB,CACxC,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,OAAO,GACjB,OAAO,CAAC,MAAM,CAAC,CAEjB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,2BAA2B,CAC/C,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,OAAO,EAClB,OAAO,GAAE,2BAAgC,GACxC,OAAO,CAAC,MAAM,CAAC,CA8BjB;AAyED,2DAA2D;AAC3D,MAAM,MAAM,qBAAqB,GAAG,WAAW,GAAG,WAAW,GAAG,WAAW,CAAC;AAE5E,uEAAuE;AACvE,MAAM,WAAW,qBAAqB;IACpC,8EAA8E;IAC9E,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAC;IACvC,gDAAgD;IAChD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,mEAAmE;IACnE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,oBAAoB,CACxC,WAAW,EAAE,MAAM,EACnB,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,qBAAqB,CAAC,CA8ChC;AAED,OAAO,EACL,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC"}
@@ -8,6 +8,7 @@ import { requireIsoDate, validateLearningEntry } from "./learnings-entry.js";
8
8
  import { assertLearningsUnchanged, assertSafeLearningParents, readExistingLearnings, resolveSafeLearningTarget, } from "./learnings-file-safety.js";
9
9
  import { withLearningTargetLock } from "./learnings-lock.js";
10
10
  import { preserveDroppedLearning } from "./learnings-overflow.js";
11
+ import { planLearningSupersede, validateLearningEntryStamps, } from "./learnings-supersede.js";
11
12
  import { readProjectConfig, resolveProjectLearningsFile, } from "./project-config.js";
12
13
  /**
13
14
  * Persist one already-selected learning without generating or truncating it.
@@ -15,7 +16,7 @@ import { readProjectConfig, resolveProjectLearningsFile, } from "./project-confi
15
16
  * entry point; consolidation-aware writers use
16
17
  * {@link persistConsolidatedLearning} instead.
17
18
  * @param projectRoot - Absolute path to the host project root
18
- * @param candidate - Untrusted seven-field learning entry
19
+ * @param candidate - Untrusted eight-field learning entry
19
20
  * @returns Absolute path to the persisted learnings file
20
21
  */
21
22
  export async function persistLearningEntry(projectRoot, candidate) {
@@ -30,7 +31,7 @@ export async function persistLearningEntry(projectRoot, candidate) {
30
31
  * consolidation. Without `supersede` this is exactly the append-only
31
32
  * {@link persistLearningEntry} behavior, including the duplicate-id throw.
32
33
  * @param projectRoot - Absolute path to the host project root
33
- * @param candidate - Untrusted seven-field learning entry
34
+ * @param candidate - Untrusted eight-field learning entry
34
35
  * @param options - Optional consolidation directives
35
36
  * @returns Absolute path to the persisted learnings file
36
37
  */
@@ -40,12 +41,12 @@ export async function persistConsolidatedLearning(projectRoot, candidate, option
40
41
  if (mintedAlias !== undefined) {
41
42
  throw mintedAlias;
42
43
  }
43
- const supersede = validateSupersedeIds(options.supersede);
44
+ const supersede = validateLearningEntryStamps(options.supersede);
44
45
  const config = await readProjectConfig(projectRoot);
45
46
  const relativeFile = resolveProjectLearningsFile(config);
46
47
  const { root, target } = resolveSafeLearningTarget(projectRoot, relativeFile);
47
48
  // Fast budget fail on the lone entry before any directory is created.
48
- buildNextDocument([], entry, []);
49
+ renderNextDocument([], entry);
49
50
  await assertSafeLearningParents(root, path.dirname(target));
50
51
  await fse.ensureDir(path.dirname(target));
51
52
  try {
@@ -67,7 +68,7 @@ export async function persistConsolidatedLearning(projectRoot, candidate, option
67
68
  * @param location.root - Resolved project root
68
69
  * @param location.target - Absolute learnings file path
69
70
  * @param entry - New validated entry
70
- * @param supersede - Ids of existing entries the new entry replaces
71
+ * @param supersede - Exact versions of existing entries the new entry replaces
71
72
  * @param options - Caller diagnostics for absent targets and dropped aliases
72
73
  * @returns Absolute path to the persisted learnings file
73
74
  */
@@ -76,11 +77,17 @@ function writeLearningEntriesWithLock({ root, target }, entry, supersede, option
76
77
  await assertSafeLearningParents(root, path.dirname(target));
77
78
  const existing = await readExistingLearnings(target);
78
79
  const entries = existing === undefined ? [] : parseLearningsFile(existing);
79
- const absent = supersede.filter(id => !entries.some(current => current.id === id));
80
- if (absent.length > 0)
81
- options.onAbsentSupersede?.(absent);
82
- const aliased = aliasSupersededEntries(entries, entry, supersede, options);
83
- const rendered = buildNextDocument(entries, aliased, supersede);
80
+ const plan = planLearningSupersede(entries, entry, supersede);
81
+ const aliased = aliasSupersededEntries(plan.removed, plan.entry, options);
82
+ const rendered = renderNextDocument(plan.retained, aliased);
83
+ if (plan.stale.length > 0) {
84
+ options.onStaleSupersede?.(plan.stale);
85
+ const absent = plan.stale
86
+ .filter(target => target.reason === "absent")
87
+ .map(target => target.expected.id);
88
+ if (absent.length > 0)
89
+ options.onAbsentSupersede?.(absent);
90
+ }
84
91
  await writeFileAtomically(target, rendered, {
85
92
  beforeRename: async () => {
86
93
  await assertSafeLearningParents(root, path.dirname(target));
@@ -101,17 +108,14 @@ function writeLearningEntriesWithLock({ root, target }, entry, supersede, option
101
108
  *
102
109
  * The rewritten entry is pushed back through `validateLearningEntry` rather than
103
110
  * spread-and-trusted, so the added references are held to the same schema as any
104
- * caller-supplied one and the persisted object stays a frozen, exactly-seven-field
111
+ * caller-supplied one and the persisted object stays a frozen, exactly-eight-field
105
112
  * entry.
106
- * @param entries - Entries currently in the document
113
+ * @param removed - Exact targets this write will remove together
107
114
  * @param entry - New validated entry as the caller composed it
108
- * @param supersede - Validated supersede ids
109
115
  * @param options - Caller diagnostics
110
116
  * @returns The entry to persist, carrying its supersede aliases
111
117
  */
112
- function aliasSupersededEntries(entries, entry, supersede, options) {
113
- const superseded = new Set(supersede);
114
- const removed = entries.filter(current => superseded.has(current.id));
118
+ function aliasSupersededEntries(removed, entry, options) {
115
119
  if (removed.length === 0) {
116
120
  return entry;
117
121
  }
@@ -194,54 +198,23 @@ function renderConfirmedDocument(entries) {
194
198
  return rendered;
195
199
  }
196
200
  /**
197
- * Build and budget-check the next canonical document, dropping superseded
198
- * entries before the new entry is added so consolidation and the budget
199
- * re-assertion happen in one deterministic step.
200
- *
201
- * A supersede target that is already absent is NOT an error. "Replace X with Y"
202
- * is already satisfied when X is gone, and at write time a concurrently
203
- * consolidated id is indistinguishable from a bogus one — so an error here
204
- * cannot mean what it claims. The costs are wildly asymmetric: throwing
205
- * discards the writer's ENTIRE learning (the CodySwannGT/lisa#1995 data-loss
206
- * symptom, just pointed the other way), while proceeding leaves at worst two
207
- * entries where one consolidation was intended — visible, bounded, and exactly
208
- * what the gardener and the entry budget already handle. Callers that care are
209
- * told through `onAbsentSupersede`.
210
- *
211
- * This replaces PR #2008's pre-lock snapshot, which tried to tell those two
212
- * cases apart by reading the file before acquiring the lock. That read is
213
- * itself a TOCTOU: it only rescues writers whose snapshot predates the removal,
214
- * so it narrowed the window rather than closing it and failed intermittently in
215
- * CI under precisely the contention it was written for.
216
- * @param entries - Existing validated entries
217
- * @param entry - New validated entry
218
- * @param supersede - Ids of existing entries the new entry replaces
201
+ * Render and budget-check entries after the locked supersede planner has made
202
+ * the only mutation decision. Keeping this helper plan-free prevents a second
203
+ * stale/exact interpretation from drifting away from the CAS boundary.
204
+ * @param entries - Existing entries retained by the plan
205
+ * @param entry - Planned entry carrying its final stable id
219
206
  * @returns Next canonical document
220
207
  */
221
- function buildNextDocument(entries, entry, supersede) {
222
- const supersededIds = new Set(supersede);
223
- const retained = entries.filter(current => !supersededIds.has(current.id));
224
- if (retained.some(current => current.id === entry.id)) {
208
+ function renderNextDocument(entries, entry) {
209
+ if (entries.some(current => current.id === entry.id)) {
225
210
  throw new Error(`Duplicate learning id: ${entry.id}`);
226
211
  }
227
- const nextEntries = [...retained, entry].sort((left, right) => left.id.localeCompare(right.id));
212
+ if (entries.some(current => current.fingerprint === entry.fingerprint)) {
213
+ throw new Error(`Duplicate learning fingerprint: ${entry.fingerprint}`);
214
+ }
215
+ const nextEntries = [...entries, entry].sort((left, right) => left.id.localeCompare(right.id));
228
216
  const rendered = renderLearningsFile(nextEntries);
229
217
  assertDocumentBudget(rendered, nextEntries.length, "Learnings file");
230
218
  return rendered;
231
219
  }
232
- /**
233
- * Reject malformed supersede directives before any filesystem work.
234
- * @param supersede - Caller-supplied (possibly untrusted) supersede ids
235
- * @returns Deduplicated list of validated supersede ids
236
- */
237
- function validateSupersedeIds(supersede) {
238
- if (supersede === undefined) {
239
- return [];
240
- }
241
- if (!Array.isArray(supersede) ||
242
- supersede.some(id => typeof id !== "string" || id.trim() === "")) {
243
- throw new Error("Invalid supersede option: expected non-empty learning id strings");
244
- }
245
- return [...new Set(supersede)];
246
- }
247
220
  //# sourceMappingURL=learnings-writer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"learnings-writer.js","sourceRoot":"","sources":["../../src/core/learnings-writer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"learnings-writer.js","sourceRoot":"","sources":["../../src/core/learnings-writer.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,10 @@
1
1
  export * from "./learnings-alias.js";
2
2
  export * from "./learnings-contract.js";
3
+ export { parseLearningsDocument, type ParsedLearningsDocument, } from "./learnings-document.js";
4
+ export * from "./learnings-merge.js";
3
5
  export * from "./learnings-overflow.js";
4
6
  export * from "./learnings-projection.js";
7
+ export * from "./learnings-supersede.js";
5
8
  export * from "./learnings-writer.js";
6
9
  export * from "./upstream-attribution-body.js";
7
10
  export { DEFAULT_PROJECT_LEARNINGS_FILE, HOST_RULES_DIR, LEGACY_PROJECT_RULES_FILE, PROJECT_LEARNINGS_FILENAME, readProjectConfig, resolveLegacyProjectLearningsFile, resolveLegacyProjectRulesFile, resolveProjectLearningsFile, type LearningsConfig, type ProjectConfig, } from "./project-config.js";
@@ -1 +1 @@
1
- {"version":3,"file":"learnings.d.ts","sourceRoot":"","sources":["../../src/core/learnings.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,gCAAgC,CAAC;AAC/C,OAAO,EACL,8BAA8B,EAC9B,cAAc,EACd,yBAAyB,EACzB,0BAA0B,EAC1B,iBAAiB,EACjB,iCAAiC,EACjC,6BAA6B,EAC7B,2BAA2B,EAC3B,KAAK,eAAe,EACpB,KAAK,aAAa,GACnB,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"learnings.d.ts","sourceRoot":"","sources":["../../src/core/learnings.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,OAAO,EACL,sBAAsB,EACtB,KAAK,uBAAuB,GAC7B,MAAM,yBAAyB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,gCAAgC,CAAC;AAC/C,OAAO,EACL,8BAA8B,EAC9B,cAAc,EACd,yBAAyB,EACzB,0BAA0B,EAC1B,iBAAiB,EACjB,iCAAiC,EACjC,6BAA6B,EAC7B,2BAA2B,EAC3B,KAAK,eAAe,EACpB,KAAK,aAAa,GACnB,MAAM,qBAAqB,CAAC"}
@@ -1,7 +1,10 @@
1
1
  export * from "./learnings-alias.js";
2
2
  export * from "./learnings-contract.js";
3
+ export { parseLearningsDocument, } from "./learnings-document.js";
4
+ export * from "./learnings-merge.js";
3
5
  export * from "./learnings-overflow.js";
4
6
  export * from "./learnings-projection.js";
7
+ export * from "./learnings-supersede.js";
5
8
  export * from "./learnings-writer.js";
6
9
  export * from "./upstream-attribution-body.js";
7
10
  export { DEFAULT_PROJECT_LEARNINGS_FILE, HOST_RULES_DIR, LEGACY_PROJECT_RULES_FILE, PROJECT_LEARNINGS_FILENAME, readProjectConfig, resolveLegacyProjectLearningsFile, resolveLegacyProjectRulesFile, resolveProjectLearningsFile, } from "./project-config.js";
@@ -1 +1 @@
1
- {"version":3,"file":"learnings.js","sourceRoot":"","sources":["../../src/core/learnings.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,gCAAgC,CAAC;AAC/C,OAAO,EACL,8BAA8B,EAC9B,cAAc,EACd,yBAAyB,EACzB,0BAA0B,EAC1B,iBAAiB,EACjB,iCAAiC,EACjC,6BAA6B,EAC7B,2BAA2B,GAG5B,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"learnings.js","sourceRoot":"","sources":["../../src/core/learnings.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,OAAO,EACL,sBAAsB,GAEvB,MAAM,yBAAyB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,gCAAgC,CAAC;AAC/C,OAAO,EACL,8BAA8B,EAC9B,cAAc,EACd,yBAAyB,EACzB,0BAA0B,EAC1B,iBAAiB,EACjB,iCAAiC,EACjC,6BAA6B,EAC7B,2BAA2B,GAG5B,MAAM,qBAAqB,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,CA86EpE,CAAC;AAEL,4EAA4E;AAC5E,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAgvPjE,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,CAk7EpE,CAAC;AAEL,4EAA4E;AAC5E,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CA+vPjE,CAAC;AAEL,sFAAsF;AACtF,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAk6I/D,CAAC"}
@@ -1,7 +1,7 @@
1
1
  /* eslint-disable max-lines -- generated exact public-evidence allowlist */
2
2
  /** Generated by scripts/generate-upstream-evidence-manifest.mjs. Do not edit. */
3
3
  export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
4
- "all/copy-contents/.gitattributes": "b23282f829ee514a25d8e334b31597851c1d89c1c58f119787eb4c99ecdc8407",
4
+ "all/copy-contents/.gitattributes": "39b6fea7a398e6cb9afff8735c19823ed3eabd1cd36d087f6fc21ab6b7fd7d3a",
5
5
  "all/copy-contents/gitignore": "3c3ce0693a6bf0531c7e080aef16103c5cfa6aeb0f897ffaba730966c103ffb6",
6
6
  "all/copy-overwrite/scripts/check-conflict-markers.mjs": "d7a689bcc122af7f38d1c536924fc2f3dcb503b09658ffc6035ccbe720d14d6b",
7
7
  "all/copy-overwrite/scripts/check-state-classification.mjs": "a72910f9885629dd6d8a739b900f5603e4b53d68ece64100a2a5647016b58e1e",
@@ -256,7 +256,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
256
256
  "plugins/src/base/agents/github-prd-intake.md": "d8d4cb8d246b0da7b70c98adb6305451be35f3ba4e3ea384aa086e8ed3d15b46",
257
257
  "plugins/src/base/agents/jira-agent.md": "2c3049c5c04b9912ac8414a73bf69e5632417a55de300cf918e329c1db763622",
258
258
  "plugins/src/base/agents/jira-build-intake.md": "51397c08fe09380f53bd630fb81ff28905a532ea71336a424e944c28a0c2db55",
259
- "plugins/src/base/agents/learner.md": "50582e72b11eeb6b085845f2e32c31a6dcedd0439ca566bb1cca228dd1a45fee",
259
+ "plugins/src/base/agents/learner.md": "1e43e74801354e3ed29beed787a673b99599b442d69d8f769829273fdd1c293b",
260
260
  "plugins/src/base/agents/learning-judge.md": "28618c3e20a0f790e4d254a9c8118645774233f19e3042b3cfeddf4ffbaf783a",
261
261
  "plugins/src/base/agents/learnings-synthesizer.md": "d3ffc4294df44813772d8c2641ebbd79a97cbc9051fa88b407ef7bfdc5b8e0d9",
262
262
  "plugins/src/base/agents/linear-agent.md": "d55664da47505d702d9bbbb96f9f98930d871acc5fc2972d35e1ae143f2dbde7",
@@ -460,7 +460,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
460
460
  "plugins/src/base/rules/reference/prd-definition-of-ready.md": "041a8f3c9b703b3921acc30fe92acfb9e2ab43da04cf019c102ebca98b2f4ba3",
461
461
  "plugins/src/base/rules/reference/prd-lifecycle-rollup.md": "f539e7b43918e173dd7491a139be078815d26098f992cd7fc86cd05878c90b9b",
462
462
  "plugins/src/base/rules/reference/pre-flight-autofill.md": "e61b745bb1ddfbe24634246588c13e4e78c25b50817e5e8ff02e1a9681ad1130",
463
- "plugins/src/base/rules/reference/project-learnings.md": "1b95f3603c8878003fe7c583ed42507f1ab440507cb8ce4d3c5e409dd509fc54",
463
+ "plugins/src/base/rules/reference/project-learnings.md": "4c267636d842ba87953edcfafb1a15c41d82166a84f87e93f20dc2ea504ad717",
464
464
  "plugins/src/base/rules/reference/promotion-contract.md": "d1370532bb79262ec2a1ca48376aed796051f5dd9930cf1f1b17c993e24f469b",
465
465
  "plugins/src/base/rules/reference/readiness-rubric.md": "6b09f171166a7fc8e85f6e2deea68f42d89a554767bc91e8eed08d1e08501672",
466
466
  "plugins/src/base/rules/reference/ready-role-filing.md": "b5f222ca3eda3bcf1a25d8d31f363f035d25fc0dc6af66d6943a3d6a3255bba2",
@@ -521,7 +521,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
521
521
  "plugins/src/base/skills/lisa-confluence-to-tracker/SKILL.md": "a5c72af70f017d45d45a0206c8c6c063fc10ca2f80f9404341cc6fe689076055",
522
522
  "plugins/src/base/skills/lisa-confluence-write-prd/SKILL.md": "29fce0dce5f3d1b9cbe8705c8fc002e5885675e1807cf948b166aef88ddfd73a",
523
523
  "plugins/src/base/skills/lisa-cross-pollinate/SKILL.md": "d1d33a149cab2de0d0b4c7ddc6bb2f67f43a097e5f551f642b1cb076747a5a05",
524
- "plugins/src/base/skills/lisa-debrief-apply/SKILL.md": "7bff86a9e15cb63d58961dd5a47d0fbab44872f9bdcad04328788890f4521190",
524
+ "plugins/src/base/skills/lisa-debrief-apply/SKILL.md": "2f9fe30f786ac171f9177bac6f151fc6f12117386ba8f08938240edc6db46a9c",
525
525
  "plugins/src/base/skills/lisa-debrief/SKILL.md": "6a0981107f907d3362ab0001f46412b76a70ec5ecc37ea1cd1def6ce4a38c9ee",
526
526
  "plugins/src/base/skills/lisa-delivery-effectiveness/SKILL.md": "21bc55fa0e86a9694bd22269fd089dbfae0c54c199262f46a4955447acea0f35",
527
527
  "plugins/src/base/skills/lisa-design-intake/SKILL.md": "8d0a72248d9d74b15aa31b0a51d13b77069677ea20117ddf93073d38c512ebf1",
@@ -613,7 +613,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
613
613
  "plugins/src/base/skills/lisa-parity-sentry-seer/SKILL.md": "ec09515906a55e98ac0f619f048f14c4a16db74c1cd5744dda0cdfa42ce7fed6",
614
614
  "plugins/src/base/skills/lisa-parity-skill-creator/SKILL.md": "616e0493f75fe92c18137548d7c86a91a9b04d9844ca76fa3f14156e3e7814e5",
615
615
  "plugins/src/base/skills/lisa-performance-review/SKILL.md": "351542c256e54940e6d672a70606b8414425c6435ae6f026841bcc02f9fce9c4",
616
- "plugins/src/base/skills/lisa-persist-learning/SKILL.md": "1799e69c9f1b93749aa1a59343d8b4dc73c4540e4630e6fd8daecc452bfa3aa9",
616
+ "plugins/src/base/skills/lisa-persist-learning/SKILL.md": "a6d4e9726291dea3af336579978663b591aa212e0a1f1bffb39f4f06b4ab477b",
617
617
  "plugins/src/base/skills/lisa-plan/SKILL.md": "9c372e106afd53ff988046119cf36b0f6519c4426775dd8ad3c9d9baeee5d3e2",
618
618
  "plugins/src/base/skills/lisa-plugin-sync-explain/SKILL.md": "b41619f3d0d342af2438afd54cb97db7d2445e54e3fc7bb012292079acbc6a4f",
619
619
  "plugins/src/base/skills/lisa-posthog-access/SKILL.md": "1e101fb92465d364b7253760961dc529a3c5f17ba3690f8aaca905a4b2126414",
@@ -655,6 +655,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
655
655
  "plugins/src/base/skills/lisa-secrets-access/scripts/preflight-secrets.mjs": "98a0a541041d543fe91e6260da4a25e383123a0eb40bad32a4d59551b7da8db8",
656
656
  "plugins/src/base/skills/lisa-secrets-access/scripts/prompt-secret.mjs": "22b28bcdf49b9b0fcd1b15639e031655efacc028b74d48d57e2275f3e1557508",
657
657
  "plugins/src/base/skills/lisa-secrets-access/scripts/providers.mjs": "bc0c75528f82f92478b10d75c9c60349c50160594255f5bafd7bfc03e8a54fee",
658
+ "plugins/src/base/skills/lisa-secrets-access/scripts/publish-aws-bootstrap.mjs": "db57db1ad33d19d022091546e0e96b3e0e81aba5e50eff1bedca1acbd0fe10b5",
658
659
  "plugins/src/base/skills/lisa-secrets-access/scripts/read-secret-note.mjs": "735434e25bf1db9f2f7eb3d5ede8361cba01b922d65931393bd36e6f96531654",
659
660
  "plugins/src/base/skills/lisa-secrets-access/scripts/resolve-secret.mjs": "4170220c95f410072f3871f58938b7575684254480d0645e3dbb1535cf09d7a7",
660
661
  "plugins/src/base/skills/lisa-secrets-access/scripts/rotate-secret.mjs": "adada60f766760395858c69ef784654e9e096943485ed237c395c8fc2ca8e20f",
@@ -678,7 +679,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
678
679
  "plugins/src/base/skills/lisa-setup-local-env/SKILL.md": "4d4b8c92e3616256f5f689fbe433f09c31d39c623508bc4ec0d8c1770caddf22",
679
680
  "plugins/src/base/skills/lisa-setup-local-env/scripts/local-env.mjs": "6f3713451139d9d4fd8eed8f11f49e472667394c4f9a7cae63897b7702115687",
680
681
  "plugins/src/base/skills/lisa-setup-notion/SKILL.md": "63b6a86a85adfbbb389f18ab228883b760a4560d5ed71ac4bc7023c868a59143",
681
- "plugins/src/base/skills/lisa-setup-remote-aws/SKILL.md": "80fbf157f9c562c033886c25a99b37356602edd9e61cd2d492f339769ddcf97e",
682
+ "plugins/src/base/skills/lisa-setup-remote-aws/SKILL.md": "46b53201c9bcb68b6fa51f220e34b10ec1d5ba4cfc1d471d9e9595db2550d72b",
682
683
  "plugins/src/base/skills/lisa-setup-remote-env/SKILL.md": "7aa1f616440cb262e47881e8b37b701ebd11ad1ea619412aa04c33324770904c",
683
684
  "plugins/src/base/skills/lisa-setup-remote-env/assets/session-start.sh": "cb63d08b14ab7aa2d405e6770e0cf7db5d6588ae1dcb924ea6224b026fcff496",
684
685
  "plugins/src/base/skills/lisa-setup-remote-env/assets/setup.sh": "c30d98a5645f033fc1d3a723043691b9ad997ae5666df539ff6aa19c563431b2",
@@ -1164,7 +1165,8 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
1164
1165
  "scripts/verify-health-consumer-built.mjs": "bd0676f7e76e4ebceb3a94c89a2b40f4c0266ab0ef7280a9bebbcb388c2731c3",
1165
1166
  "scripts/verify-health-contract-built.mjs": "4041780d412bee7b9e1bbe24d908bac64705184a8b0698f0d5bb748ec36b0bcd",
1166
1167
  "scripts/verify-health-deterministic-built.mjs": "9016663d16c93d0d0d74b41a957d200cd3aa8ef5b12e0879d24ba5ea041ab307",
1167
- "scripts/verify-learner-frontmatter-built.mjs": "182e5e99f52257d3079ee1bc42b45c3dcca8b93a968205ddb3f3af26f2558b47",
1168
+ "scripts/verify-learner-frontmatter-built.mjs": "b8ac0240726721a047811e98d42f661426abc3e427a0c86f3b20082eb498809d",
1169
+ "scripts/verify-packed-learnings-contract.mjs": "6ed8390ec9e06fededf0dc87b714f36c6f55546b04a22e03186569cd39d8f661",
1168
1170
  "tsconfig/base.json": "d04a105ec81aa9dc69d230d4a83406d920c305b6fc13c641ebafde0c41fc658f",
1169
1171
  "tsconfig/build.json": "a743350ea93b0e8d2151c974c5a8a4cbcf946cd7f06c40d83146079bde70afe1",
1170
1172
  "tsconfig/cdk.json": "f9c0bfad5e40ce30bc037f08abf2f8feb78963484f2929ab17ec187ffe34b732",
@@ -2417,6 +2419,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
2417
2419
  "plugins/lisa-agy/skills/lisa-secrets-access/scripts/preflight-secrets.mjs": true,
2418
2420
  "plugins/lisa-agy/skills/lisa-secrets-access/scripts/prompt-secret.mjs": true,
2419
2421
  "plugins/lisa-agy/skills/lisa-secrets-access/scripts/providers.mjs": true,
2422
+ "plugins/lisa-agy/skills/lisa-secrets-access/scripts/publish-aws-bootstrap.mjs": true,
2420
2423
  "plugins/lisa-agy/skills/lisa-secrets-access/scripts/read-secret-note.mjs": true,
2421
2424
  "plugins/lisa-agy/skills/lisa-secrets-access/scripts/resolve-secret.mjs": true,
2422
2425
  "plugins/lisa-agy/skills/lisa-secrets-access/scripts/rotate-secret.mjs": true,
@@ -2901,6 +2904,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
2901
2904
  "plugins/lisa-copilot/skills/lisa-secrets-access/scripts/preflight-secrets.mjs": true,
2902
2905
  "plugins/lisa-copilot/skills/lisa-secrets-access/scripts/prompt-secret.mjs": true,
2903
2906
  "plugins/lisa-copilot/skills/lisa-secrets-access/scripts/providers.mjs": true,
2907
+ "plugins/lisa-copilot/skills/lisa-secrets-access/scripts/publish-aws-bootstrap.mjs": true,
2904
2908
  "plugins/lisa-copilot/skills/lisa-secrets-access/scripts/read-secret-note.mjs": true,
2905
2909
  "plugins/lisa-copilot/skills/lisa-secrets-access/scripts/resolve-secret.mjs": true,
2906
2910
  "plugins/lisa-copilot/skills/lisa-secrets-access/scripts/rotate-secret.mjs": true,
@@ -3371,6 +3375,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
3371
3375
  "plugins/lisa-cursor/skills/lisa-secrets-access/scripts/preflight-secrets.mjs": true,
3372
3376
  "plugins/lisa-cursor/skills/lisa-secrets-access/scripts/prompt-secret.mjs": true,
3373
3377
  "plugins/lisa-cursor/skills/lisa-secrets-access/scripts/providers.mjs": true,
3378
+ "plugins/lisa-cursor/skills/lisa-secrets-access/scripts/publish-aws-bootstrap.mjs": true,
3374
3379
  "plugins/lisa-cursor/skills/lisa-secrets-access/scripts/read-secret-note.mjs": true,
3375
3380
  "plugins/lisa-cursor/skills/lisa-secrets-access/scripts/resolve-secret.mjs": true,
3376
3381
  "plugins/lisa-cursor/skills/lisa-secrets-access/scripts/rotate-secret.mjs": true,
@@ -5428,6 +5433,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
5428
5433
  "plugins/lisa/.codex-plugin/skills/lisa-secrets-access/scripts/preflight-secrets.mjs": true,
5429
5434
  "plugins/lisa/.codex-plugin/skills/lisa-secrets-access/scripts/prompt-secret.mjs": true,
5430
5435
  "plugins/lisa/.codex-plugin/skills/lisa-secrets-access/scripts/providers.mjs": true,
5436
+ "plugins/lisa/.codex-plugin/skills/lisa-secrets-access/scripts/publish-aws-bootstrap.mjs": true,
5431
5437
  "plugins/lisa/.codex-plugin/skills/lisa-secrets-access/scripts/read-secret-note.mjs": true,
5432
5438
  "plugins/lisa/.codex-plugin/skills/lisa-secrets-access/scripts/resolve-secret.mjs": true,
5433
5439
  "plugins/lisa/.codex-plugin/skills/lisa-secrets-access/scripts/rotate-secret.mjs": true,
@@ -6080,6 +6086,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
6080
6086
  "plugins/lisa/skills/lisa-secrets-access/scripts/preflight-secrets.mjs": true,
6081
6087
  "plugins/lisa/skills/lisa-secrets-access/scripts/prompt-secret.mjs": true,
6082
6088
  "plugins/lisa/skills/lisa-secrets-access/scripts/providers.mjs": true,
6089
+ "plugins/lisa/skills/lisa-secrets-access/scripts/publish-aws-bootstrap.mjs": true,
6083
6090
  "plugins/lisa/skills/lisa-secrets-access/scripts/read-secret-note.mjs": true,
6084
6091
  "plugins/lisa/skills/lisa-secrets-access/scripts/resolve-secret.mjs": true,
6085
6092
  "plugins/lisa/skills/lisa-secrets-access/scripts/rotate-secret.mjs": true,
@@ -6608,6 +6615,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
6608
6615
  "plugins/src/base/skills/lisa-secrets-access/scripts/preflight-secrets.mjs": true,
6609
6616
  "plugins/src/base/skills/lisa-secrets-access/scripts/prompt-secret.mjs": true,
6610
6617
  "plugins/src/base/skills/lisa-secrets-access/scripts/providers.mjs": true,
6618
+ "plugins/src/base/skills/lisa-secrets-access/scripts/publish-aws-bootstrap.mjs": true,
6611
6619
  "plugins/src/base/skills/lisa-secrets-access/scripts/read-secret-note.mjs": true,
6612
6620
  "plugins/src/base/skills/lisa-secrets-access/scripts/resolve-secret.mjs": true,
6613
6621
  "plugins/src/base/skills/lisa-secrets-access/scripts/rotate-secret.mjs": true,
@@ -7189,6 +7197,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
7189
7197
  "scripts/verify-health-contract-built.mjs": true,
7190
7198
  "scripts/verify-health-deterministic-built.mjs": true,
7191
7199
  "scripts/verify-learner-frontmatter-built.mjs": true,
7200
+ "scripts/verify-packed-learnings-contract.mjs": true,
7192
7201
  "sgconfig.yml": true,
7193
7202
  "spec/tasc-0.1-draft.md": true,
7194
7203
  "specs/.keep": true,
@@ -7455,6 +7464,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
7455
7464
  "src/core/learnings-overflow.ts": true,
7456
7465
  "src/core/learnings-projection.ts": true,
7457
7466
  "src/core/learnings-stray-ledger.ts": true,
7467
+ "src/core/learnings-supersede.ts": true,
7458
7468
  "src/core/learnings-writer.ts": true,
7459
7469
  "src/core/learnings.ts": true,
7460
7470
  "src/core/lisa-owned-hash-ledger.ts": true,
@@ -8141,6 +8151,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
8141
8151
  "tests/unit/core/learnings-consolidation.test.ts": true,
8142
8152
  "tests/unit/core/learnings-contract.test.ts": true,
8143
8153
  "tests/unit/core/learnings-eager-tree-guard.test.ts": true,
8154
+ "tests/unit/core/learnings-entry-security.test.ts": true,
8144
8155
  "tests/unit/core/learnings-gitattributes.test.ts": true,
8145
8156
  "tests/unit/core/learnings-lock-acquire.test.ts": true,
8146
8157
  "tests/unit/core/learnings-lock-reclaim.test.ts": true,
@@ -8148,11 +8159,14 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
8148
8159
  "tests/unit/core/learnings-merge-driver-install.test.ts": true,
8149
8160
  "tests/unit/core/learnings-merge-driver.test.ts": true,
8150
8161
  "tests/unit/core/learnings-merge.test.ts": true,
8162
+ "tests/unit/core/learnings-migration.test.ts": true,
8163
+ "tests/unit/core/learnings-overflow-identity.test.ts": true,
8151
8164
  "tests/unit/core/learnings-overflow.test.ts": true,
8152
8165
  "tests/unit/core/learnings-projection.test.ts": true,
8153
8166
  "tests/unit/core/learnings-stable-ids.test.ts": true,
8154
8167
  "tests/unit/core/learnings-stray-ledger.test.ts": true,
8155
8168
  "tests/unit/core/learnings-supersede-race.test.ts": true,
8169
+ "tests/unit/core/learnings-supersede-security.test.ts": true,
8156
8170
  "tests/unit/core/learnings-unlocked-read.test.ts": true,
8157
8171
  "tests/unit/core/learnings-writer.test.ts": true,
8158
8172
  "tests/unit/core/lisa-owned-enforcement-scripts.test.ts": true,
@@ -8163,6 +8177,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
8163
8177
  "tests/unit/core/lisa-skill-sources.test.ts": true,
8164
8178
  "tests/unit/core/no-downstream-project-names.test.ts": true,
8165
8179
  "tests/unit/core/override-floors.test.ts": true,
8180
+ "tests/unit/core/packed-learnings-contract.test.ts": true,
8166
8181
  "tests/unit/core/plugin-sync-marker.test.ts": true,
8167
8182
  "tests/unit/core/project-config-harness-migration.test.ts": true,
8168
8183
  "tests/unit/core/project-config-kane.test.ts": true,
@@ -8532,6 +8547,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
8532
8547
  "tests/unit/secrets/prompt-secret.test.ts": true,
8533
8548
  "tests/unit/secrets/propagate-declaration.test.ts": true,
8534
8549
  "tests/unit/secrets/propagate-secret.test.ts": true,
8550
+ "tests/unit/secrets/publish-aws-bootstrap.test.ts": true,
8535
8551
  "tests/unit/secrets/remote-dispatch-claude-web.test.ts": true,
8536
8552
  "tests/unit/secrets/remote-dispatch.test.ts": true,
8537
8553
  "tests/unit/secrets/remote-env-bindir-path.test.ts": true,
@@ -8700,6 +8716,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
8700
8716
  "tests/unit/strategies/learner-capture-contract.test.ts": true,
8701
8717
  "tests/unit/strategies/learnings-audit-contract.test.ts": true,
8702
8718
  "tests/unit/strategies/learnings-confirmation-contract.test.ts": true,
8719
+ "tests/unit/strategies/learnings-fingerprint-contract.test.ts": true,
8703
8720
  "tests/unit/strategies/learnings-overflow-contract.test.ts": true,
8704
8721
  "tests/unit/strategies/lifecycle-label-claimability.test.ts": true,
8705
8722
  "tests/unit/strategies/lifecycle-label-trust-contract.test.ts": true,