@codyswann/lisa 2.282.0 → 2.283.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.
- package/all/create-only/.lisa/DEPENDENCY_DECISIONS.md +175 -0
- package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
- package/dist/core/upstream-evidence-manifest.js +12 -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/rules/eager/dependency-decision-records.md +32 -0
- package/plugins/lisa/rules/reference/dependency-decision-records.md +140 -0
- package/plugins/lisa-agy/plugin.json +1 -1
- package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk-agy/plugin.json +1 -1
- package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-copilot/rules/eager/dependency-decision-records.md +32 -0
- package/plugins/lisa-copilot/rules/reference/dependency-decision-records.md +140 -0
- package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cursor/rules/dependency-decision-records-reference.mdc +145 -0
- package/plugins/lisa-cursor/rules/dependency-decision-records.mdc +37 -0
- package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-expo-agy/plugin.json +1 -1
- package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs-agy/plugin.json +1 -1
- package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw-agy/plugin.json +1 -1
- package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser-agy/plugin.json +1 -1
- package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-rails-agy/plugin.json +1 -1
- package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript-agy/plugin.json +1 -1
- package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki-agy/plugin.json +1 -1
- package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/src/base/rules/eager/dependency-decision-records.md +32 -0
- package/plugins/src/base/rules/reference/dependency-decision-records.md +140 -0
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
# Dependency Decisions
|
|
2
|
+
|
|
3
|
+
<!-- lisa-dependency-decisions:v1 -->
|
|
4
|
+
|
|
5
|
+
This file is the project's record of **why we keep each material dependency**.
|
|
6
|
+
|
|
7
|
+
A *material* dependency is one whose failure, disappearance, or bad update would
|
|
8
|
+
break something a user can see, or would cost real time to replace. Not every
|
|
9
|
+
package in the lockfile belongs here — only the ones that own a capability.
|
|
10
|
+
|
|
11
|
+
You do not need to be an engineer to read this file. Every entry starts with a
|
|
12
|
+
plain-language explanation of what the dependency does for us, and every entry
|
|
13
|
+
names what evidence would catch a bad update. If an entry does not answer those
|
|
14
|
+
two questions in words a non-engineer understands, the entry is wrong — fix the
|
|
15
|
+
words, not the reader.
|
|
16
|
+
|
|
17
|
+
Lisa seeds this file once and never overwrites it. It is yours to maintain.
|
|
18
|
+
|
|
19
|
+
## How to use this file
|
|
20
|
+
|
|
21
|
+
1. Copy the **Entry template** below for each material dependency.
|
|
22
|
+
2. Add the filled-in entry to the end of the **Records** section.
|
|
23
|
+
3. Fill in every field. If you do not know the answer yet, write
|
|
24
|
+
`_Not yet decided_` — never leave a field blank and never guess. An
|
|
25
|
+
unanswered field is an honest question for the next review; a guess is a
|
|
26
|
+
wrong answer that nobody will re-check.
|
|
27
|
+
4. Re-read an entry whenever that dependency is upgraded across a major version,
|
|
28
|
+
changes maintainers, or its detection evidence fails.
|
|
29
|
+
5. Update `Last reviewed` every time someone actually re-reads the entry, even
|
|
30
|
+
if nothing else changed.
|
|
31
|
+
|
|
32
|
+
### Entry format (stable, appendable)
|
|
33
|
+
|
|
34
|
+
Entries are deliberately uniform so they can be added by hand or appended by a
|
|
35
|
+
script without rewriting the rest of the file:
|
|
36
|
+
|
|
37
|
+
- Every entry is a level-3 heading (`### <name>`) followed by the nine field
|
|
38
|
+
bullets, always in the order shown in the **Entry template**.
|
|
39
|
+
- Entries live under `## Records`, which is the last section of this file, and
|
|
40
|
+
new entries are appended to the end. A `###` heading inside `## Records` is
|
|
41
|
+
always an entry and never guidance — that is what makes the section safe to
|
|
42
|
+
parse and append to.
|
|
43
|
+
- Nothing after `## Records` is guidance, so appending to the end of the file is
|
|
44
|
+
always safe.
|
|
45
|
+
- `_Not yet decided_` is the reserved marker for an unanswered field, so
|
|
46
|
+
unfilled entries are visibly honest rather than silently empty.
|
|
47
|
+
|
|
48
|
+
## When to escalate
|
|
49
|
+
|
|
50
|
+
Reading an entry should end in a decision. Raise these to an owner rather than
|
|
51
|
+
letting them sit — each one means the project is carrying a risk nobody has
|
|
52
|
+
accepted on purpose:
|
|
53
|
+
|
|
54
|
+
- **Nothing would catch a bad update.** The detection-evidence field says
|
|
55
|
+
"nothing would catch it". We are trusting the dependency blind.
|
|
56
|
+
- **The review is older than the dependency.** `Last reviewed` predates the last
|
|
57
|
+
major upgrade of that dependency, so the record describes software we are no
|
|
58
|
+
longer running.
|
|
59
|
+
- **Nobody is behind it.** The trust basis names no maintainer, no owner, or no
|
|
60
|
+
release history — on our side or theirs.
|
|
61
|
+
|
|
62
|
+
An entry full of `_Not yet decided_` is not itself an escalation; it is a
|
|
63
|
+
to-do. The three items above are escalations because someone already looked and
|
|
64
|
+
the answer was bad.
|
|
65
|
+
|
|
66
|
+
## What each field means
|
|
67
|
+
|
|
68
|
+
- **Why we keep it** — the plain-language reason, written for a non-technical
|
|
69
|
+
reader. Lead with the outcome it protects, not the mechanism.
|
|
70
|
+
- **What it is (dependency)** — the package or service name, and the version
|
|
71
|
+
range in use.
|
|
72
|
+
- **What it does for us (owned capability)** — the single capability this
|
|
73
|
+
dependency is responsible for. If you cannot name one capability, the
|
|
74
|
+
dependency is either not material or is doing too much.
|
|
75
|
+
- **Why we believe it's safe (trust basis)** — why we believe this dependency
|
|
76
|
+
will still be maintained and safe next quarter. Evidence, not vibes: who
|
|
77
|
+
maintains it, release cadence, security-response history, how widely it is
|
|
78
|
+
used, whether it is pinned.
|
|
79
|
+
- **What breaks if this is compromised (exposure)** — what it can reach and what
|
|
80
|
+
breaks if it misbehaves. Does it run at build time only, or in production?
|
|
81
|
+
Does it touch user data, secrets, the network, or CI credentials?
|
|
82
|
+
- **What it would take to replace (replacement cost)** — what it would actually
|
|
83
|
+
take to remove or swap it: rough effort, what would have to be rewritten, and
|
|
84
|
+
whether a viable alternative exists today.
|
|
85
|
+
- **What would catch a bad update (detection evidence)** — the specific check
|
|
86
|
+
that would **fail** if an update broke the owned capability. Name the test,
|
|
87
|
+
suite, workflow, or monitor. If the honest answer is "nothing would catch it",
|
|
88
|
+
write that down — it is the most valuable line in the entry. Use
|
|
89
|
+
`_Not yet decided_` only when nobody has looked yet, which is a different
|
|
90
|
+
statement from "we looked, and nothing covers this".
|
|
91
|
+
- **Who owns this and how often we recheck (owner / review cadence)** — who is
|
|
92
|
+
accountable for this entry and how often it gets re-read.
|
|
93
|
+
- **Last reviewed** — ISO date (`YYYY-MM-DD`) of the most recent review.
|
|
94
|
+
|
|
95
|
+
## Entry template
|
|
96
|
+
|
|
97
|
+
Copy this block, fill it in, and append it to the end of **Records** below. Keep
|
|
98
|
+
the nine bullets in this order. Any field you cannot answer yet gets
|
|
99
|
+
`_Not yet decided_`.
|
|
100
|
+
|
|
101
|
+
### <dependency name>
|
|
102
|
+
|
|
103
|
+
- **Why we keep it:** <plain-language reason a non-technical reader can follow>
|
|
104
|
+
- **What it is (dependency):** <package or service name> `<version range>`
|
|
105
|
+
- **What it does for us (owned capability):** <the one capability it owns>
|
|
106
|
+
- **Why we believe it's safe (trust basis):** <maintainer, cadence, adoption,
|
|
107
|
+
security history, pinning>
|
|
108
|
+
- **What breaks if this is compromised (exposure):** <build-time vs runtime;
|
|
109
|
+
data, secrets, network, CI reach>
|
|
110
|
+
- **What it would take to replace (replacement cost):** <effort to remove or
|
|
111
|
+
swap, and the alternative>
|
|
112
|
+
- **What would catch a bad update (detection evidence):** <the named check that
|
|
113
|
+
fails if an update breaks it>
|
|
114
|
+
- **Who owns this and how often we recheck (owner / review cadence):**
|
|
115
|
+
<accountable owner> / <cadence>
|
|
116
|
+
- **Last reviewed:** <YYYY-MM-DD>
|
|
117
|
+
|
|
118
|
+
## Records
|
|
119
|
+
|
|
120
|
+
> **The two entries below are EXAMPLES.** They are here so you can see the shape
|
|
121
|
+
> of a good record — the first complete, the second still being filled in.
|
|
122
|
+
> Replace them with your own material dependencies, or delete them once you have
|
|
123
|
+
> written real entries.
|
|
124
|
+
|
|
125
|
+
### ESLint (EXAMPLE — a complete entry)
|
|
126
|
+
|
|
127
|
+
- **Why we keep it:** It is the automatic reviewer that reads every change
|
|
128
|
+
before a human does and refuses the ones that break our agreed coding rules.
|
|
129
|
+
Without it, those rules become suggestions and the codebase drifts a little
|
|
130
|
+
with every change until nobody can predict how anything is written.
|
|
131
|
+
- **What it is (dependency):** `eslint` `^9`
|
|
132
|
+
- **What it does for us (owned capability):** Automated enforcement of
|
|
133
|
+
code-quality and style rules on every commit and every pull request.
|
|
134
|
+
- **Why we believe it's safe (trust basis):** Maintained by the OpenJS
|
|
135
|
+
Foundation with a published release cadence and a documented
|
|
136
|
+
security-disclosure process; used by a very large share of the JavaScript
|
|
137
|
+
ecosystem, so breakage is found by other people before it reaches us. The
|
|
138
|
+
major version is pinned, so an upgrade is a deliberate decision rather than
|
|
139
|
+
something that arrives on its own.
|
|
140
|
+
- **What breaks if this is compromised (exposure):** Build-time and CI only. It
|
|
141
|
+
never runs in production and never touches customer data. It does run inside
|
|
142
|
+
CI, so a compromised release could in principle read CI environment variables
|
|
143
|
+
— which is why the version is pinned and upgrades are reviewed.
|
|
144
|
+
- **What it would take to replace (replacement cost):** High. Every rule
|
|
145
|
+
configuration and every custom rule would have to be re-expressed in another
|
|
146
|
+
linter, and the pre-commit and CI wiring rebuilt. Alternatives exist (for
|
|
147
|
+
example Biome or oxlint) but none is a drop-in match for the current rule set
|
|
148
|
+
today.
|
|
149
|
+
- **What would catch a bad update (detection evidence):** The `lint` check in
|
|
150
|
+
CI. Warning sign: if lint passes a change we know breaks a rule, the checking
|
|
151
|
+
has silently stopped working — the rule tests exist to catch exactly that.
|
|
152
|
+
- **Who owns this and how often we recheck (owner / review cadence):** Platform
|
|
153
|
+
/ engineering owner — reviewed each major version upgrade, and at least once
|
|
154
|
+
every 6 months.
|
|
155
|
+
- **Last reviewed:** _Not yet decided_ (example entry — never reviewed)
|
|
156
|
+
|
|
157
|
+
### sharp (EXAMPLE — an entry still being filled in)
|
|
158
|
+
|
|
159
|
+
- **Why we keep it:** It resizes and re-encodes every image users upload, so
|
|
160
|
+
photos load quickly instead of being served at full camera resolution.
|
|
161
|
+
- **What it is (dependency):** `sharp` `^0.33`
|
|
162
|
+
- **What it does for us (owned capability):** Server-side image resizing and
|
|
163
|
+
format conversion on upload.
|
|
164
|
+
- **Why we believe it's safe (trust basis):** _Not yet decided_ — nobody has
|
|
165
|
+
checked who maintains it or how quickly security issues get fixed.
|
|
166
|
+
- **What breaks if this is compromised (exposure):** Runs in production and
|
|
167
|
+
processes files uploaded by users. It ships native code, so its reach is
|
|
168
|
+
wider than a pure-JavaScript package.
|
|
169
|
+
- **What it would take to replace (replacement cost):** _Not yet decided_
|
|
170
|
+
- **What would catch a bad update (detection evidence):** _Not yet decided_ —
|
|
171
|
+
this is the gap to close first, because nothing currently proves an upgrade
|
|
172
|
+
did not silently corrupt uploaded images.
|
|
173
|
+
- **Who owns this and how often we recheck (owner / review cadence):**
|
|
174
|
+
_Not yet decided_
|
|
175
|
+
- **Last reviewed:** _Not yet decided_
|
|
@@ -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,
|
|
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,CA4gEpE,CAAC;AAEL,4EAA4E;AAC5E,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAiqMjE,CAAC;AAEL,sFAAsF;AACtF,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAk6I/D,CAAC"}
|
|
@@ -310,6 +310,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
|
|
|
310
310
|
"plugins/src/base/rules/eager/coding-philosophy.md": "cf2c52032e0368d81f17f002fed5c957ab350d01fc4a43f66b5f366516bac54a",
|
|
311
311
|
"plugins/src/base/rules/eager/config-resolution.md": "2689c1f47903a5f6c84677fbfd2f1f148096faf122b7498b21d3b0f2345c6c87",
|
|
312
312
|
"plugins/src/base/rules/eager/convergent-review.md": "ba4ba53863ef99be353c07c01195fa4ae2923ef2b2a5ad4427072802c260d208",
|
|
313
|
+
"plugins/src/base/rules/eager/dependency-decision-records.md": "e22888f107906992e863fca50f26c2c4b124da7132535cacfac71e4f3085728f",
|
|
313
314
|
"plugins/src/base/rules/eager/documentation-source-paths.md": "3a7c2a6264654a3cc44dd326441ba211a39c1c267033cc189c1c635adb84b52b",
|
|
314
315
|
"plugins/src/base/rules/eager/empirical-inquiry.md": "60d77a67cc0d3b6a0aad0ab8fe6de5dff0127b2a6c63fa46b021b7a711eb07d6",
|
|
315
316
|
"plugins/src/base/rules/eager/factory-model.md": "dee39b4276926ee27a2614bf26b985fd33bb3d115313fa6e2893de12da13ed7c",
|
|
@@ -339,6 +340,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
|
|
|
339
340
|
"plugins/src/base/rules/reference/coding-philosophy.md": "fed8381f16a5d6793a49d84d5813d62125808cb2f4981a558b119cf63e2586d9",
|
|
340
341
|
"plugins/src/base/rules/reference/config-resolution.md": "071b2c91f3b661ee493ea6f37d78f0fdea8004b4e4e7b5e94dcf232df7eceda7",
|
|
341
342
|
"plugins/src/base/rules/reference/convergent-review.md": "788a9d4dc2af7a928c3ccbb4d53a92856bb3544941ce512cfe38068d6b35850d",
|
|
343
|
+
"plugins/src/base/rules/reference/dependency-decision-records.md": "84f9fb8fa0a606307e828ec355ccbf2258beeeb88795dd113abe9bb2c37db39f",
|
|
342
344
|
"plugins/src/base/rules/reference/documentation-source-paths.md": "555155889c9cf279865b9d8fc554bdd461c96a3ec76a5001dfeb361a71056999",
|
|
343
345
|
"plugins/src/base/rules/reference/empirical-inquiry.md": "85f4552aa4c561677de40fd01bc6cccf5dbcf13865647db9df819d11f3cc3389",
|
|
344
346
|
"plugins/src/base/rules/reference/factory-model.md": "b28a2ea4df7c33390111667a2807d9003cf8c9a14829f6fb0dbc929b05bfed3a",
|
|
@@ -2262,6 +2264,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
|
|
|
2262
2264
|
"plugins/lisa-copilot/rules/eager/coding-philosophy.md": true,
|
|
2263
2265
|
"plugins/lisa-copilot/rules/eager/config-resolution.md": true,
|
|
2264
2266
|
"plugins/lisa-copilot/rules/eager/convergent-review.md": true,
|
|
2267
|
+
"plugins/lisa-copilot/rules/eager/dependency-decision-records.md": true,
|
|
2265
2268
|
"plugins/lisa-copilot/rules/eager/documentation-source-paths.md": true,
|
|
2266
2269
|
"plugins/lisa-copilot/rules/eager/empirical-inquiry.md": true,
|
|
2267
2270
|
"plugins/lisa-copilot/rules/eager/factory-model.md": true,
|
|
@@ -2291,6 +2294,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
|
|
|
2291
2294
|
"plugins/lisa-copilot/rules/reference/coding-philosophy.md": true,
|
|
2292
2295
|
"plugins/lisa-copilot/rules/reference/config-resolution.md": true,
|
|
2293
2296
|
"plugins/lisa-copilot/rules/reference/convergent-review.md": true,
|
|
2297
|
+
"plugins/lisa-copilot/rules/reference/dependency-decision-records.md": true,
|
|
2294
2298
|
"plugins/lisa-copilot/rules/reference/documentation-source-paths.md": true,
|
|
2295
2299
|
"plugins/lisa-copilot/rules/reference/empirical-inquiry.md": true,
|
|
2296
2300
|
"plugins/lisa-copilot/rules/reference/factory-model.md": true,
|
|
@@ -2626,6 +2630,8 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
|
|
|
2626
2630
|
"plugins/lisa-cursor/rules/config-resolution.mdc": true,
|
|
2627
2631
|
"plugins/lisa-cursor/rules/convergent-review-reference.mdc": true,
|
|
2628
2632
|
"plugins/lisa-cursor/rules/convergent-review.mdc": true,
|
|
2633
|
+
"plugins/lisa-cursor/rules/dependency-decision-records-reference.mdc": true,
|
|
2634
|
+
"plugins/lisa-cursor/rules/dependency-decision-records.mdc": true,
|
|
2629
2635
|
"plugins/lisa-cursor/rules/documentation-source-paths-reference.mdc": true,
|
|
2630
2636
|
"plugins/lisa-cursor/rules/documentation-source-paths.mdc": true,
|
|
2631
2637
|
"plugins/lisa-cursor/rules/empirical-inquiry-reference.mdc": true,
|
|
@@ -4999,6 +5005,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
|
|
|
4999
5005
|
"plugins/lisa/rules/eager/coding-philosophy.md": true,
|
|
5000
5006
|
"plugins/lisa/rules/eager/config-resolution.md": true,
|
|
5001
5007
|
"plugins/lisa/rules/eager/convergent-review.md": true,
|
|
5008
|
+
"plugins/lisa/rules/eager/dependency-decision-records.md": true,
|
|
5002
5009
|
"plugins/lisa/rules/eager/documentation-source-paths.md": true,
|
|
5003
5010
|
"plugins/lisa/rules/eager/empirical-inquiry.md": true,
|
|
5004
5011
|
"plugins/lisa/rules/eager/factory-model.md": true,
|
|
@@ -5028,6 +5035,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
|
|
|
5028
5035
|
"plugins/lisa/rules/reference/coding-philosophy.md": true,
|
|
5029
5036
|
"plugins/lisa/rules/reference/config-resolution.md": true,
|
|
5030
5037
|
"plugins/lisa/rules/reference/convergent-review.md": true,
|
|
5038
|
+
"plugins/lisa/rules/reference/dependency-decision-records.md": true,
|
|
5031
5039
|
"plugins/lisa/rules/reference/documentation-source-paths.md": true,
|
|
5032
5040
|
"plugins/lisa/rules/reference/empirical-inquiry.md": true,
|
|
5033
5041
|
"plugins/lisa/rules/reference/factory-model.md": true,
|
|
@@ -5525,6 +5533,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
|
|
|
5525
5533
|
"plugins/src/base/rules/eager/coding-philosophy.md": true,
|
|
5526
5534
|
"plugins/src/base/rules/eager/config-resolution.md": true,
|
|
5527
5535
|
"plugins/src/base/rules/eager/convergent-review.md": true,
|
|
5536
|
+
"plugins/src/base/rules/eager/dependency-decision-records.md": true,
|
|
5528
5537
|
"plugins/src/base/rules/eager/documentation-source-paths.md": true,
|
|
5529
5538
|
"plugins/src/base/rules/eager/empirical-inquiry.md": true,
|
|
5530
5539
|
"plugins/src/base/rules/eager/factory-model.md": true,
|
|
@@ -5554,6 +5563,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
|
|
|
5554
5563
|
"plugins/src/base/rules/reference/coding-philosophy.md": true,
|
|
5555
5564
|
"plugins/src/base/rules/reference/config-resolution.md": true,
|
|
5556
5565
|
"plugins/src/base/rules/reference/convergent-review.md": true,
|
|
5566
|
+
"plugins/src/base/rules/reference/dependency-decision-records.md": true,
|
|
5557
5567
|
"plugins/src/base/rules/reference/documentation-source-paths.md": true,
|
|
5558
5568
|
"plugins/src/base/rules/reference/empirical-inquiry.md": true,
|
|
5559
5569
|
"plugins/src/base/rules/reference/factory-model.md": true,
|
|
@@ -6869,6 +6879,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
|
|
|
6869
6879
|
"tests/unit/strategies/copy-overwrite.test.ts": true,
|
|
6870
6880
|
"tests/unit/strategies/create-only.test.ts": true,
|
|
6871
6881
|
"tests/unit/strategies/debrief-reroute-contract.test.ts": true,
|
|
6882
|
+
"tests/unit/strategies/dependency-decision-records-rule-pair.test.ts": true,
|
|
6872
6883
|
"tests/unit/strategies/distributed-content-round2-contract.test.ts": true,
|
|
6873
6884
|
"tests/unit/strategies/doctor-automation-readiness.test.ts": true,
|
|
6874
6885
|
"tests/unit/strategies/doctor-config-readiness.test.ts": true,
|
|
@@ -6992,6 +7003,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
|
|
|
6992
7003
|
"tests/unit/sync/config-sync.test.ts": true,
|
|
6993
7004
|
"tests/unit/sync/health-schedule.test.ts": true,
|
|
6994
7005
|
"tests/unit/sync/legacy-monitor-thresholds.test.ts": true,
|
|
7006
|
+
"tests/unit/templates/dependency-decisions-template.test.ts": true,
|
|
6995
7007
|
"tests/unit/templates/project-learnings-template.test.ts": true,
|
|
6996
7008
|
"tests/unit/templates/stack-tsconfig-shadowing.test.ts": true,
|
|
6997
7009
|
"tests/unit/transaction/backup.test.ts": true,
|