@codyswann/lisa 2.286.0 → 2.286.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/all/create-only/.lisa/DEPENDENCY_DECISIONS.md +67 -0
- package/dist/core/learnings-lock.d.ts +33 -0
- package/dist/core/learnings-lock.d.ts.map +1 -1
- package/dist/core/learnings-lock.js +50 -19
- package/dist/core/learnings-lock.js.map +1 -1
- package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
- package/dist/core/upstream-evidence-manifest.js +11 -0
- package/dist/core/upstream-evidence-manifest.js.map +1 -1
- package/package.json +1 -1
- package/plugins/lisa/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-agy/plugin.json +1 -1
- package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk-agy/plugin.json +1 -1
- package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-expo-agy/plugin.json +1 -1
- package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs-agy/plugin.json +1 -1
- package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw-agy/plugin.json +1 -1
- package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser-agy/plugin.json +1 -1
- package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-rails-agy/plugin.json +1 -1
- package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript-agy/plugin.json +1 -1
- package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki-agy/plugin.json +1 -1
- package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
|
@@ -45,6 +45,73 @@ script without rewriting the rest of the file:
|
|
|
45
45
|
- `_Not yet decided_` is the reserved marker for an unanswered field, so
|
|
46
46
|
unfilled entries are visibly honest rather than silently empty.
|
|
47
47
|
|
|
48
|
+
## The rest of the dependency-ownership layer
|
|
49
|
+
|
|
50
|
+
This file is one of five parts, and it is the only one that lives in your
|
|
51
|
+
project's own source. Three of the other four are still readable from here,
|
|
52
|
+
because they ship inside the installed Lisa package — paths starting
|
|
53
|
+
`node_modules/` below. The remaining two exist only in the Lisa project itself
|
|
54
|
+
and are called out as such; do not go looking for them in this repository.
|
|
55
|
+
|
|
56
|
+
**Installed in this project** (readable from your project root):
|
|
57
|
+
|
|
58
|
+
- **The six trust classes** — how much scrutiny a dependency deserves, set by
|
|
59
|
+
what it can reach rather than by how famous it is. The six are: mature
|
|
60
|
+
ecosystem primitive, fast-moving standard implementation, build/development
|
|
61
|
+
tool, runtime-critical service client, thin wrapper suitable for in-house
|
|
62
|
+
ownership, and temporary/experimental dependency. Sign-off rules differ by
|
|
63
|
+
class and by moment: a **runtime-critical service client** needs a human
|
|
64
|
+
sign-off to be added and at every major upgrade; a **temporary/experimental
|
|
65
|
+
dependency** needs none to be added — moving fast is the point — but must
|
|
66
|
+
carry a written expiry date no more than one quarter out and a named exit, and
|
|
67
|
+
then needs sign-off to extend past that date or to promote it. The full
|
|
68
|
+
definitions, with the evidence each class demands, are at
|
|
69
|
+
`node_modules/@codyswann/lisa/plugins/lisa/rules/reference/dependency-trust-classes.md`.
|
|
70
|
+
Your coding agent already has these loaded, so "which trust class is this, and
|
|
71
|
+
what evidence does that class require?" is a question you can just ask it.
|
|
72
|
+
|
|
73
|
+
- **The confidence-rebuild kit** — the seven things a change must prove when a
|
|
74
|
+
dependency is removed and the capability rebuilt in-house: real corpus,
|
|
75
|
+
conformance fixtures, negative fixtures, coverage as a gap detector,
|
|
76
|
+
provenance and license review, migration and update plan, and rollback or
|
|
77
|
+
replacement criteria. All seven are required; a partial kit is the finding. It
|
|
78
|
+
does **not** apply to an ordinary version bump. Full text at
|
|
79
|
+
`node_modules/@codyswann/lisa/plugins/lisa/rules/reference/dependency-internalization-kit.md`.
|
|
80
|
+
|
|
81
|
+
- **The manifest-authoritative duplicate-pin policy** — a version belongs in
|
|
82
|
+
`package.json` and nowhere else; every copy of the literal in a workflow or a
|
|
83
|
+
script is a second edit site a routine bump can miss. Lisa ships a detector
|
|
84
|
+
you can run against this project:
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
node node_modules/@codyswann/lisa/scripts/check-duplicate-versions.mjs --root . --scan .
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
Be honest about what it is today: **advisory**. It is not wired into this
|
|
91
|
+
project's `package.json` scripts and it does not fail a build, so nothing runs
|
|
92
|
+
it unless you do. It also deliberately under-reports rather than over-reports,
|
|
93
|
+
so a clean run is not proof that no pin was duplicated.
|
|
94
|
+
|
|
95
|
+
**Not shipped here — they exist only in the Lisa project.** Neither path below
|
|
96
|
+
resolves from this repository; you would have to open Lisa's own repository to
|
|
97
|
+
read them, and you do not need either one to use this file.
|
|
98
|
+
|
|
99
|
+
- **A worked, filled-in example** — Lisa keeps this same file for its own
|
|
100
|
+
dependencies, written from repository evidence only, with every unanswered
|
|
101
|
+
field tracked as a ticket rather than guessed. In the Lisa project it is at
|
|
102
|
+
`.lisa/DEPENDENCY_DECISIONS.md`.
|
|
103
|
+
|
|
104
|
+
- **The full operator walkthrough** — a plain-language guide to deciding whether
|
|
105
|
+
a proposed dependency change is acceptable, with a checklist for each of the
|
|
106
|
+
three shapes (adding a dependency, taking one in-house, an ordinary version
|
|
107
|
+
bump). In the Lisa project it is at
|
|
108
|
+
`wiki/playbooks/dependency-ownership-operator-guide.md`.
|
|
109
|
+
|
|
110
|
+
Nothing above is enforced by a build gate. Nothing blocks a change that skips
|
|
111
|
+
this file, names no trust class, or removes a dependency with no rebuild
|
|
112
|
+
evidence. That is deliberate — these are review disciplines, not lint rules —
|
|
113
|
+
and it is exactly why the escalations below matter.
|
|
114
|
+
|
|
48
115
|
## When to escalate
|
|
49
116
|
|
|
50
117
|
Reading an entry should end in a decision. Raise these to an owner rather than
|
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
/** Ownership metadata published atomically with each lock. */
|
|
2
|
+
interface LockOwner {
|
|
3
|
+
readonly token: string;
|
|
4
|
+
readonly pid: number;
|
|
5
|
+
readonly createdAt: number;
|
|
6
|
+
}
|
|
1
7
|
/**
|
|
2
8
|
* Serialize same-target writers across processes with an exclusive hard link.
|
|
3
9
|
* @param target - Absolute learnings target
|
|
@@ -12,4 +18,31 @@ export declare function withLearningTargetLock<T>(target: string, operation: ()
|
|
|
12
18
|
* @returns Operation result
|
|
13
19
|
*/
|
|
14
20
|
export declare function withFileTargetLock<T>(target: string, operation: () => Promise<T>): Promise<T>;
|
|
21
|
+
/**
|
|
22
|
+
* Snapshot of one lock observed to be reclaimable. The reclaim is anchored to
|
|
23
|
+
* this snapshot: a lock is only ever deleted while it still *is* the exact
|
|
24
|
+
* inode and ownership this observation judged stale.
|
|
25
|
+
*/
|
|
26
|
+
export interface StaleLockObservation {
|
|
27
|
+
/** Owner metadata when the lock was parseable; undefined when unowned. */
|
|
28
|
+
readonly owner: LockOwner | undefined;
|
|
29
|
+
/** Device of the inode that was judged stale. */
|
|
30
|
+
readonly dev: number;
|
|
31
|
+
/** Inode that was judged stale. */
|
|
32
|
+
readonly ino: number;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Determine whether a regular lock is reclaimable and retain its owner path.
|
|
36
|
+
* @param lockPath - Shared lock path
|
|
37
|
+
* @returns Observation of a reclaimable lock, or null when it is still held
|
|
38
|
+
*/
|
|
39
|
+
export declare function observeStaleLock(lockPath: string): Promise<StaleLockObservation | null>;
|
|
40
|
+
/**
|
|
41
|
+
* Reclaim only the same lock inode retained in a safe quarantine link.
|
|
42
|
+
* @param lockPath - Shared lock path
|
|
43
|
+
* @param observation - Snapshot that judged this lock reclaimable
|
|
44
|
+
* @returns Whether the observed lock was reclaimed
|
|
45
|
+
*/
|
|
46
|
+
export declare function reclaimObservedStaleLock(lockPath: string, observation: StaleLockObservation): Promise<boolean>;
|
|
47
|
+
export {};
|
|
15
48
|
//# sourceMappingURL=learnings-lock.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"learnings-lock.d.ts","sourceRoot":"","sources":["../../src/core/learnings-lock.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"learnings-lock.d.ts","sourceRoot":"","sources":["../../src/core/learnings-lock.ts"],"names":[],"mappings":"AAOA,8DAA8D;AAC9D,UAAU,SAAS;IACjB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAQD;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAAC,CAAC,EAC5C,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAC1B,OAAO,CAAC,CAAC,CAAC,CAEZ;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CAAC,CAAC,EACxC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAC1B,OAAO,CAAC,CAAC,CAAC,CAaZ;AAuED;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC,0EAA0E;IAC1E,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,CAAC;IACtC,iDAAiD;IACjD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,mCAAmC;IACnC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAcD;;;;GAIG;AACH,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAiBtC;AAED;;;;;GAKG;AACH,wBAAsB,wBAAwB,CAC5C,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,oBAAoB,GAChC,OAAO,CAAC,OAAO,CAAC,CAoBlB"}
|
|
@@ -97,18 +97,18 @@ async function releaseLock(lockPath, lease) {
|
|
|
97
97
|
* @param lockPath - Shared lock path
|
|
98
98
|
*/
|
|
99
99
|
async function reclaimStaleLock(lockPath) {
|
|
100
|
-
const
|
|
101
|
-
if (
|
|
100
|
+
const observation = await observeStaleLock(lockPath);
|
|
101
|
+
if (observation === null) {
|
|
102
102
|
return;
|
|
103
103
|
}
|
|
104
|
-
await
|
|
104
|
+
await reclaimObservedStaleLock(lockPath, observation);
|
|
105
105
|
}
|
|
106
106
|
/**
|
|
107
107
|
* Determine whether a regular lock is reclaimable and retain its owner path.
|
|
108
108
|
* @param lockPath - Shared lock path
|
|
109
|
-
* @returns
|
|
109
|
+
* @returns Observation of a reclaimable lock, or null when it is still held
|
|
110
110
|
*/
|
|
111
|
-
async function
|
|
111
|
+
export async function observeStaleLock(lockPath) {
|
|
112
112
|
const before = await statFile(lockPath);
|
|
113
113
|
if (before === undefined) {
|
|
114
114
|
return null;
|
|
@@ -124,33 +124,64 @@ async function staleOwnerPath(lockPath) {
|
|
|
124
124
|
if (owner === undefined && Date.now() - timestamp <= STALE_LOCK_MS) {
|
|
125
125
|
return null;
|
|
126
126
|
}
|
|
127
|
-
return owner
|
|
127
|
+
return { owner, dev: Number(before.dev), ino: Number(before.ino) };
|
|
128
128
|
}
|
|
129
129
|
/**
|
|
130
130
|
* Reclaim only the same lock inode retained in a safe quarantine link.
|
|
131
131
|
* @param lockPath - Shared lock path
|
|
132
|
-
* @param
|
|
132
|
+
* @param observation - Snapshot that judged this lock reclaimable
|
|
133
|
+
* @returns Whether the observed lock was reclaimed
|
|
133
134
|
*/
|
|
134
|
-
async function
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
: await publishOwnerLink(lockPath, quarantine);
|
|
142
|
-
if (!linked) {
|
|
143
|
-
return;
|
|
135
|
+
export async function reclaimObservedStaleLock(lockPath, observation) {
|
|
136
|
+
// Pin whatever currently sits at the lock path so its inode cannot be
|
|
137
|
+
// recycled underneath the checks below, then prove it is still the very
|
|
138
|
+
// inode and ownership this observation judged stale before deleting it.
|
|
139
|
+
const quarantine = `${lockPath}.${crypto.randomUUID()}.stale`;
|
|
140
|
+
if (!(await publishOwnerLink(lockPath, quarantine))) {
|
|
141
|
+
return false;
|
|
144
142
|
}
|
|
145
143
|
try {
|
|
146
|
-
if (await
|
|
147
|
-
|
|
144
|
+
if (!(await pinnedLockStillStale(lockPath, quarantine, observation))) {
|
|
145
|
+
return false;
|
|
148
146
|
}
|
|
147
|
+
await removeFileIfPresent(lockPath);
|
|
148
|
+
if (observation.owner !== undefined) {
|
|
149
|
+
await removeFileIfPresent(`${lockPath}.${observation.owner.token}.owner`);
|
|
150
|
+
}
|
|
151
|
+
return true;
|
|
149
152
|
}
|
|
150
153
|
finally {
|
|
151
154
|
await removeFileIfPresent(quarantine);
|
|
152
155
|
}
|
|
153
156
|
}
|
|
157
|
+
/**
|
|
158
|
+
* Confirm the pinned inode is still the lock this observation judged stale.
|
|
159
|
+
* Identity alone is not enough: a released inode can be recycled by a live
|
|
160
|
+
* holder, so the pinned ownership must still match the observed ownership.
|
|
161
|
+
* @param lockPath - Shared lock path
|
|
162
|
+
* @param quarantine - Hard link pinning the inode currently at the lock path
|
|
163
|
+
* @param observation - Snapshot that judged the lock reclaimable
|
|
164
|
+
* @returns Whether the pinned lock is still safe to delete
|
|
165
|
+
*/
|
|
166
|
+
async function pinnedLockStillStale(lockPath, quarantine, observation) {
|
|
167
|
+
const pinned = await statFile(quarantine);
|
|
168
|
+
if (pinned === undefined ||
|
|
169
|
+
!pinned.isFile() ||
|
|
170
|
+
Number(pinned.dev) !== observation.dev ||
|
|
171
|
+
Number(pinned.ino) !== observation.ino ||
|
|
172
|
+
!(await sameFile(lockPath, quarantine))) {
|
|
173
|
+
return false;
|
|
174
|
+
}
|
|
175
|
+
const owner = await readLockOwner(quarantine);
|
|
176
|
+
if (observation.owner === undefined) {
|
|
177
|
+
return (owner === undefined && Date.now() - Number(pinned.mtimeMs) > STALE_LOCK_MS);
|
|
178
|
+
}
|
|
179
|
+
return (owner !== undefined &&
|
|
180
|
+
owner.token === observation.owner.token &&
|
|
181
|
+
owner.pid === observation.owner.pid &&
|
|
182
|
+
owner.createdAt === observation.owner.createdAt &&
|
|
183
|
+
!isProcessLive(owner.pid));
|
|
184
|
+
}
|
|
154
185
|
/**
|
|
155
186
|
* Read bounded owner metadata; partial or special lock files are unowned.
|
|
156
187
|
* @param lockPath - Shared lock path
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"learnings-lock.js","sourceRoot":"","sources":["../../src/core/learnings-lock.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"learnings-lock.js","sourceRoot":"","sources":["../../src/core/learnings-lock.ts"],"names":[],"mappings":"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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,CAshEpE,CAAC;AAEL,4EAA4E;AAC5E,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"upstream-evidence-manifest.d.ts","sourceRoot":"","sources":["../../src/core/upstream-evidence-manifest.ts"],"names":[],"mappings":"AACA,iFAAiF;AACjF,eAAO,MAAM,0BAA0B,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAshEpE,CAAC;AAEL,4EAA4E;AAC5E,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAqtMjE,CAAC;AAEL,sFAAsF;AACtF,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAk6I/D,CAAC"}
|
|
@@ -6559,6 +6559,12 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
|
|
|
6559
6559
|
"tests/fixtures/automation-status/partial-support-codex.json": true,
|
|
6560
6560
|
"tests/fixtures/dependency-internalization-kit/dependency-internalization-ticket.md": true,
|
|
6561
6561
|
"tests/fixtures/dependency-internalization-kit/version-bump-ticket.md": true,
|
|
6562
|
+
"tests/fixtures/dependency-ownership/addition/.github/workflows/deploy.yml": true,
|
|
6563
|
+
"tests/fixtures/dependency-ownership/addition/package.json": true,
|
|
6564
|
+
"tests/fixtures/dependency-ownership/addition/scripts/install-payment-client.sh": true,
|
|
6565
|
+
"tests/fixtures/dependency-ownership/internalization/.github/workflows/deploy.yml": true,
|
|
6566
|
+
"tests/fixtures/dependency-ownership/internalization/package.json": true,
|
|
6567
|
+
"tests/fixtures/dependency-ownership/internalization/scripts/verify-slugs.sh": true,
|
|
6562
6568
|
"tests/fixtures/dependency-trust-classes/dependency-addition-ticket.md": true,
|
|
6563
6569
|
"tests/fixtures/doctor/not-ready-missing-config.json": true,
|
|
6564
6570
|
"tests/fixtures/doctor/readiness/all-pass-assessed.json": true,
|
|
@@ -6773,6 +6779,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
|
|
|
6773
6779
|
"tests/unit/core/learnings-confirm.test.ts": true,
|
|
6774
6780
|
"tests/unit/core/learnings-consolidation.test.ts": true,
|
|
6775
6781
|
"tests/unit/core/learnings-contract.test.ts": true,
|
|
6782
|
+
"tests/unit/core/learnings-lock-reclaim.test.ts": true,
|
|
6776
6783
|
"tests/unit/core/learnings-projection.test.ts": true,
|
|
6777
6784
|
"tests/unit/core/learnings-writer.test.ts": true,
|
|
6778
6785
|
"tests/unit/core/lisa-plugin-selection.test.ts": true,
|
|
@@ -6924,6 +6931,9 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
|
|
|
6924
6931
|
"tests/unit/strategies/debrief-reroute-contract.test.ts": true,
|
|
6925
6932
|
"tests/unit/strategies/dependency-decision-records-rule-pair.test.ts": true,
|
|
6926
6933
|
"tests/unit/strategies/dependency-internalization-kit-rule-pair.test.ts": true,
|
|
6934
|
+
"tests/unit/strategies/dependency-ownership-helpers.ts": true,
|
|
6935
|
+
"tests/unit/strategies/dependency-ownership-integration.test.ts": true,
|
|
6936
|
+
"tests/unit/strategies/dependency-ownership-parity.test.ts": true,
|
|
6927
6937
|
"tests/unit/strategies/dependency-trust-classes-rule-pair.test.ts": true,
|
|
6928
6938
|
"tests/unit/strategies/distributed-content-round2-contract.test.ts": true,
|
|
6929
6939
|
"tests/unit/strategies/doctor-automation-readiness.test.ts": true,
|
|
@@ -7186,6 +7196,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
|
|
|
7186
7196
|
"wiki/open-questions/lisa-open-questions.md": true,
|
|
7187
7197
|
"wiki/playbooks/.gitkeep": true,
|
|
7188
7198
|
"wiki/playbooks/coding-agent-parity-research.md": true,
|
|
7199
|
+
"wiki/playbooks/dependency-ownership-operator-guide.md": true,
|
|
7189
7200
|
"wiki/playbooks/lisa-workflow-playbook.md": true,
|
|
7190
7201
|
"wiki/projects/lisa-monorepo.md": true,
|
|
7191
7202
|
"wiki/projects/registry.md": true,
|