@codyswann/lisa 2.267.0 → 2.268.1

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 (68) hide show
  1. package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
  2. package/dist/core/upstream-evidence-manifest.js +13 -1
  3. package/dist/core/upstream-evidence-manifest.js.map +1 -1
  4. package/package.json +6 -4
  5. package/plugins/lisa/.claude-plugin/plugin.json +1 -1
  6. package/plugins/lisa/.codex-plugin/plugin.json +1 -1
  7. package/plugins/lisa/rules/eager/readiness-rubric.md +58 -0
  8. package/plugins/lisa/rules/reference/readiness-rubric.md +179 -0
  9. package/plugins/lisa-agy/plugin.json +1 -1
  10. package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
  11. package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
  12. package/plugins/lisa-cdk-agy/plugin.json +1 -1
  13. package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
  14. package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
  15. package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
  16. package/plugins/lisa-copilot/rules/eager/readiness-rubric.md +58 -0
  17. package/plugins/lisa-copilot/rules/reference/readiness-rubric.md +179 -0
  18. package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
  19. package/plugins/lisa-cursor/rules/readiness-rubric-reference.mdc +184 -0
  20. package/plugins/lisa-cursor/rules/readiness-rubric.mdc +63 -0
  21. package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
  22. package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
  23. package/plugins/lisa-expo/.codex-plugin/skills/expo-cicd-workflows/scripts/package.json +1 -1
  24. package/plugins/lisa-expo/skills/expo-cicd-workflows/scripts/package.json +1 -1
  25. package/plugins/lisa-expo-agy/plugin.json +1 -1
  26. package/plugins/lisa-expo-agy/skills/expo-cicd-workflows/scripts/package.json +1 -1
  27. package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
  28. package/plugins/lisa-expo-copilot/skills/expo-cicd-workflows/scripts/package.json +1 -1
  29. package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
  30. package/plugins/lisa-expo-cursor/skills/expo-cicd-workflows/scripts/package.json +1 -1
  31. package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
  32. package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
  33. package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
  34. package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
  35. package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
  36. package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
  37. package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
  38. package/plugins/lisa-nestjs-agy/plugin.json +1 -1
  39. package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
  40. package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
  41. package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
  42. package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
  43. package/plugins/lisa-openclaw-agy/plugin.json +1 -1
  44. package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
  45. package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
  46. package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
  47. package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
  48. package/plugins/lisa-phaser-agy/plugin.json +1 -1
  49. package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
  50. package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
  51. package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
  52. package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
  53. package/plugins/lisa-rails-agy/plugin.json +1 -1
  54. package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
  55. package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
  56. package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
  57. package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
  58. package/plugins/lisa-typescript-agy/plugin.json +1 -1
  59. package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
  60. package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
  61. package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
  62. package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
  63. package/plugins/lisa-wiki-agy/plugin.json +1 -1
  64. package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
  65. package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
  66. package/plugins/src/base/rules/eager/readiness-rubric.md +58 -0
  67. package/plugins/src/base/rules/reference/readiness-rubric.md +179 -0
  68. package/plugins/src/expo/skills/expo-cicd-workflows/scripts/package.json +1 -1
package/package.json CHANGED
@@ -91,7 +91,8 @@
91
91
  "ws": ">=8.21.0",
92
92
  "multer": ">=2.2.0",
93
93
  "undici": ">=6.27.0",
94
- "form-data": ">=4.0.6"
94
+ "form-data": ">=4.0.6",
95
+ "brace-expansion": ">=5.0.6"
95
96
  },
96
97
  "overrides": {
97
98
  "@isaacs/brace-expansion": "^5.0.1",
@@ -104,10 +105,11 @@
104
105
  "ws": ">=8.21.0",
105
106
  "multer": ">=2.2.0",
106
107
  "undici": ">=6.27.0",
107
- "form-data": ">=4.0.6"
108
+ "form-data": ">=4.0.6",
109
+ "brace-expansion": ">=5.0.6"
108
110
  },
109
111
  "name": "@codyswann/lisa",
110
- "version": "2.267.0",
112
+ "version": "2.268.1",
111
113
  "description": "Claude Code governance framework that applies guardrails, guidance, and automated enforcement to projects",
112
114
  "main": "dist/index.js",
113
115
  "exports": {
@@ -213,7 +215,7 @@
213
215
  "husky": "^8.0.0",
214
216
  "jest": "^30.0.0",
215
217
  "jiti": "^2.4.0",
216
- "js-yaml": "^4.1.1",
218
+ "js-yaml": "^4.3.0",
217
219
  "jscodeshift": "0.15.2",
218
220
  "jsonc-parser": "^3.3.1",
219
221
  "knip": "^5.0.0",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa",
3
- "version": "2.267.0",
3
+ "version": "2.268.1",
4
4
  "description": "Universal governance — agents, skills, commands, hooks, and rules for all projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa",
3
- "version": "2.267.0",
3
+ "version": "2.268.1",
4
4
  "description": "Universal governance: agents, skills, commands, hooks, and rules for all projects.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -0,0 +1,58 @@
1
+ # Repository Readiness Rubric (load-bearing)
2
+
3
+ **"Lisa is installed correctly" and "an agent fleet may run here unattended" are two different
4
+ questions.** Doctor's shipped grouped checks answer the first — *installation readiness*. This rubric
5
+ answers the second — *repository readiness* — and it is the only place that question is written down.
6
+ A green test suite is not an answer to it.
7
+
8
+ ## Eight ownership dimensions
9
+
10
+ Repository readiness is assessed across exactly eight dimensions, never fewer, and a dimension with
11
+ no applicable evidence renders `SKIP` **with a reason** rather than a blank:
12
+
13
+ 1. **context/routing** — can an agent recover the real job from what is written down?
14
+ 2. **capabilities/tools** — is every tool the work needs *provably* reachable, not merely installed?
15
+ 3. **domain ownership** — are the business rules, glossary, and danger zones owned and written down?
16
+ 4. **execution/proof** — can the claimed user-visible outcome be proved by running the system?
17
+ 5. **feedback/guardrails** — does a failing loop produce a named outcome and a runbook?
18
+ 6. **dependencies/supply chain** — is there a confidence model for what the repo depends on?
19
+ 7. **delivery/authority** — does the thing that ships equal the thing that was validated, and does
20
+ the credential that ships it carry only the authority it needs?
21
+ 8. **proportionality** — is the machinery proportional to the job, or is there scaffolding to
22
+ subtract?
23
+
24
+ ## Seven ship blockers (closed set, v1)
25
+
26
+ A **ship blocker** is a condition that, standing alone, means the answer to "may an unattended fleet
27
+ run here?" is no. The set is closed in v1 — seven, no more — and extended only by editing this rule:
28
+
29
+ - **B1** a realistic path causes **silent data loss**
30
+ - **B2** a **release path bypasses the validated artifact**
31
+ - **B3** **credentials carry material unintended authority**
32
+ - **B4** a **consequential operation has no gate and no recovery**
33
+ - **B5** an **owned compatibility or security surface has no confidence model**
34
+ - **B6** **documentation overstates enforced guarantees**
35
+ - **B7** there is **no way to prove the claimed user-visible outcome**
36
+
37
+ ## Verdict and narrowed claim
38
+
39
+ The verdict reuses the shipped `READY` / `READY_WITH_WARNINGS` / `NOT_READY` ladder — cite doctor's
40
+ ladder, never fork a parallel enum. **A standing blocker is `NOT_READY`**, and the report must also
41
+ state the **narrowed claim**: what the repository *is* ready for, in operator language ("ready for
42
+ supervised single-ticket work; not ready for unattended fleet operation, because …").
43
+
44
+ ## Ordering
45
+
46
+ **Report section order stays stable and never silently omits a section; findings are ordered by
47
+ consequence** — highest-consequence first — within and across sections. The two contracts do not
48
+ collide: sections are fixed, findings are ranked.
49
+
50
+ ## Warn-only
51
+
52
+ This rubric **gates a claim, not a process**. No Lisa surface hard-blocks on the verdict: a standing
53
+ blocker narrows what may be claimed and files tracker work; it never stops `lisa apply`, intake
54
+ dispatch, or cron registration. Where a surface this rule names is not installed in a given branch,
55
+ name what you can and continue — degrade, never block. Written to be read by someone who does not
56
+ code (`factory-model` rule 5).
57
+
58
+ Full rubric (eight-dimension table, seven ship blockers, consequence ordering, worked example): [reference/readiness-rubric.md](../reference/readiness-rubric.md).
@@ -0,0 +1,179 @@
1
+ # Repository Readiness Rubric
2
+
3
+ Lisa can already tell you whether it is *installed* correctly. It cannot tell you whether a
4
+ repository is somewhere an agent fleet can safely operate **unattended**. Those are two different
5
+ questions, and conflating them is how a brownfield onboarding ends in "we built a wiki, looks good"
6
+ instead of a verdict someone can act on.
7
+
8
+ This document writes the second question down once: **eight ownership dimensions** with concrete
9
+ warning signs, and **seven ship blockers** that, if any one of them stands, mean the answer is no.
10
+ It is documentation. Nothing here executes — the later tickets of PRD #1739 instantiate this rubric
11
+ rather than redefine it.
12
+
13
+ ## Two readinesses, one report
14
+
15
+ | | Installation readiness | Repository readiness |
16
+ |---|---|---|
17
+ | Question | is Lisa installed and wired correctly here? | may an agent fleet operate here unattended? |
18
+ | Owner | `lisa doctor`'s shipped grouped checks (project detection, config, distribution, tracker preflight, automation prerequisites, …) | this rubric's eight dimensions |
19
+ | Answer shape | the shipped verdict ladder | the same shipped verdict ladder, plus a narrowed claim |
20
+
21
+ They are **orthogonal** — a repository can be perfectly installed and completely unready, or ready in
22
+ substance while Lisa's own wiring is incomplete. Both render in the same report, under separately
23
+ titled sections, so a reader is never left guessing which question a verdict answered. The doctor
24
+ mode that renders the repository-readiness group ships with **RRR-3 (#1855)**; do not assume that
25
+ surface is present in this branch.
26
+
27
+ ## The eight ownership dimensions
28
+
29
+ Exactly eight, always reported, never silently omitted. Each row names what the dimension asks,
30
+ concrete warning signs an assessor can look for, and the **existing** Lisa rule or wiki page that
31
+ supplies its evidence. Cite those slugs; do not restate them, and do not invent a parallel vocabulary
32
+ for a concept another rule already owns.
33
+
34
+ | # | Dimension | The question | Warning signs | Evidence source (existing) |
35
+ |---|---|---|---|---|
36
+ | 1 | context/routing | Can an agent recover the real job from what is written down? | no canonical entry document; routing decided by tribal knowledge; ambiguous config resolution; a README that describes a system that no longer exists | `integration-access-layer`, `wiki-knowledge-source`, `config-resolution` |
37
+ | 2 | capabilities/tools | Is every tool the work needs *provably* reachable, not merely installed? | presence-on-PATH treated as access; no read-only probe before the work starts; agents inventing workarounds instead of breaking out | `tool-access-gate` |
38
+ | 3 | domain ownership | Are the business rules, glossary, and danger zones owned and written down? | undocumented money paths; migrations with no owner; irreversible jobs nobody has described | the wiki pages agent-ready's domain phase already produces |
39
+ | 4 | execution/proof | Can the claimed user-visible outcome be proved by running the system? | claims backed only by unit tests; no representative end-to-end journey; "verified" that names no boundary | `verification`, `empirical-inquiry`, `claim-evidence-mapping` |
40
+ | 5 | feedback/guardrails | Does a failing loop produce a named outcome and a runbook? | silent failures; no run-outcome vocabulary; no observability on the loops that run unattended | `automation-runbook-contract`, `observability-audit` |
41
+ | 6 | dependencies/supply chain | Is there a confidence model for what the repo depends on? | unpinned or unowned dependencies; no trust class; no decision record for why a risky dependency stays | `security-audit-handling` |
42
+ | 7 | delivery/authority | Does the thing that ships equal the thing that was validated, and does the credential that ships it carry only the authority it needs? | a release path that bypasses the validated artifact; broad-scope tokens; deploy credentials shared across environments | `claim-archaeology`, `security-audit-handling` |
43
+ | 8 | proportionality | Is the machinery proportional to the job, or is there scaffolding to subtract? | redundant checks that assert the same thing twice; abandoned harnesses still running in CI | `repo-scope-split`, and the scaffolding-subtraction candidates the journey work of **#1742** already surfaces |
44
+
45
+ **`SKIP` carries a reason and is never blank.** A dimension with no applicable evidence renders
46
+ `SKIP with a reason` — "no deployment target configured, so delivery/authority was not assessed" —
47
+ never an empty cell and never a silent omission. An unassessed dimension is a known unknown, and the
48
+ report says so.
49
+
50
+ ## The seven ship blockers
51
+
52
+ A **ship blocker** is a condition that, standing alone, makes the claim "an unattended fleet may run
53
+ here" false. Each has a one-line test an assessor can apply and the dimension that owns it.
54
+
55
+ | # | Blocker | The test an assessor applies | Owning dimension |
56
+ |---|---|---|---|
57
+ | B1 | A realistic path causes **silent data loss** | can you name a plausible sequence that destroys or corrupts data with no error surfaced and no recovery path? | 3 |
58
+ | B2 | A **release path bypasses the validated artifact** | can something reach production that is not the artifact CI actually validated? | 7 |
59
+ | B3 | **Credentials carry material unintended authority** | does any credential used by automation grant authority materially beyond the job it does? | 7 |
60
+ | B4 | A **consequential operation has no gate and no recovery** | is there an irreversible or expensive operation reachable without a gate, with no way back? | 3, 5 |
61
+ | B5 | An **owned compatibility or security surface has no confidence model** | for a surface this repo owns, is there any basis beyond hope for believing it still works? | 6 |
62
+ | B6 | **Documentation overstates enforced guarantees** | does the written word claim something is enforced that nothing actually enforces? | 1 |
63
+ | B7 | There is **no way to prove the claimed user-visible outcome** | can the headline user-visible claim be demonstrated by running the system, at the boundary it claims? | 4 |
64
+
65
+ ### The set is a closed set in v1
66
+
67
+ Seven, and only seven, in v1. The set is **not configurable** — there is no config key, no
68
+ host-defined blockers, no severity dial. Extending it is a deliberate **rule edit** here plus a
69
+ version bump, not a configuration surface to design, migrate, and support. Host-specific concerns
70
+ surface as *findings within a dimension*, which is enough to make them visible without fragmenting
71
+ the vocabulary.
72
+
73
+ ### "Ship blocker" is net-new vocabulary
74
+
75
+ It is deliberately distinct from three terms other rules already own, and it never replaces them:
76
+
77
+ - `convergent-review`'s **blocking finding** — a review-level judgment about one change.
78
+ - `tool-access-gate`'s **break-out** — the escalation when a required tool is not provably reachable.
79
+ - `leaf-only-lifecycle`'s **safe-block** — a lifecycle-state repair on a work item.
80
+
81
+ A ship blocker is none of these: it is a property of the *repository*, asserted about *unattended
82
+ operation*, and it gates a claim rather than a change, a tool call, or a ticket.
83
+
84
+ ## Verdict: the shipped ladder, plus a narrowed claim
85
+
86
+ The rubric reuses the shipped `READY` / `READY_WITH_WARNINGS` / `NOT_READY` verdict ladder that
87
+ `lisa doctor` already emits. There is **no new verdict** value and no new severity level — inventing
88
+ a parallel enum would make two reports disagree about what "ready" means.
89
+
90
+ - **`READY`** — eight dimensions assessed, no blocker stands, no warnings material to unattended
91
+ operation.
92
+ - **`READY_WITH_WARNINGS`** — no blocker stands, but findings exist that a human should see.
93
+ - **`NOT_READY`** — **at least one ship blocker stands.**
94
+
95
+ **The narrowed claim is the net-new field.** When the verdict is `NOT_READY`, the report must also
96
+ state, in operator language, **what the repository IS ready for** — never just what it is not. A
97
+ verdict that only says no is unactionable at the gate; a narrowed claim tells the operator exactly
98
+ which mode of operation remains available and what would widen it.
99
+
100
+ ## Consequence ordering
101
+
102
+ Two ordering contracts meet here, and they do not collide:
103
+
104
+ - **Section order stays stable.** The report renders its sections in a fixed order and **never
105
+ silently omits** one — the discipline `lisa doctor`'s grouped output already guarantees.
106
+ - **Findings are ordered by consequence.** Within and across sections, the finding with the largest
107
+ consequence if left standing comes first. Alphabetical, chronological, and discovery order are all
108
+ wrong: the reader at the gate has limited attention, and it belongs on the worst thing first.
109
+
110
+ ### The five fields a readiness finding carries
111
+
112
+ On top of the severity / blocking / failure-scenario / evidence / smallest-fix fields
113
+ `convergent-review` already requires, a readiness finding names:
114
+
115
+ | Field | What it states |
116
+ |---|---|
117
+ | `invariant_violated` | the invariant actually at risk, stated as a property of the system |
118
+ | `evidence` | what was observed that establishes the finding, at a boundary that reaches the claim (`claim-evidence-mapping`) |
119
+ | `why_proof_missed` | why the existing proof machinery did not catch this |
120
+ | `root_correction` | the correction at the **owning boundary**, not a patch at the symptom |
121
+ | `machinery_to_remove` | redundant machinery the correction makes unnecessary, if any |
122
+
123
+ Two of these — `invariant_violated` and `machinery_to_remove` — are folded into the shared
124
+ `convergent-review` finding shape by **RRR-2 (#1854)**; that extension ships with that ticket, so do
125
+ not assume the shared shape carries them in this branch.
126
+
127
+ ### Worked example
128
+
129
+ ```text
130
+ Repository: acme/checkout-service
131
+
132
+ Verdict NOT_READY
133
+ Standing blocker B2 — a release path bypasses the validated artifact
134
+ Owning dimension 7 (delivery/authority)
135
+
136
+ invariant_violated What ships to production is the artifact CI validated.
137
+ evidence The deploy job rebuilds from source at deploy time rather than
138
+ promoting the CI-built image; the deployed digest never matches
139
+ the one the test job signed off on.
140
+ why_proof_missed Every check is green — they all ran against a different artifact
141
+ than the one that shipped. Nothing compared the two.
142
+ root_correction Promote the validated image by digest at the delivery boundary.
143
+ machinery_to_remove The duplicate deploy-time build step.
144
+
145
+ Narrowed claim This repository IS ready for supervised, single-ticket agent work with a
146
+ human approving each release. It is NOT ready for unattended fleet
147
+ operation, because a release can ship code no check ever ran against.
148
+ ```
149
+
150
+ ## Where the evidence comes from
151
+
152
+ The rubric consumes evidence that already exists; it commissions no second harness.
153
+
154
+ - **execution/proof** consumes the existing qualification evidence recorded by the worker-epoch
155
+ requalification path and, when that evidence is absent or stale, triggers a journey run through the
156
+ shipped `lisa-use-the-product` skill — the machinery **#1742** already ships. There is no second
157
+ journey harness, and the evidence is recorded in the shape `claim-evidence-mapping` defines. That
158
+ wiring ships with **RRR-6 (#1858)**.
159
+ - **domain ownership** sources its findings from the danger-zone wiki pages agent-ready's domain
160
+ phase already produces; the readiness assessment that reads them, and files standing blockers as
161
+ tracker work rather than in-session questions, ships with **RRR-4 (#1856)**.
162
+ - The persisted report at `.lisa/readiness.json` (schema-versioned, read through a single resolver)
163
+ and the doctor render group ship with **RRR-3 (#1855)**; the blocker gate that emits the narrowed
164
+ claim ships with **RRR-5 (#1857)**; the `setup-automations` warning, six-agent parity fan-out, and
165
+ vocabulary documentation ship with **RRR-7 (#1859)**. Each of those surfaces may not yet be present
166
+ in a given branch — name what you can and continue.
167
+
168
+ ## Warn-only, always
169
+
170
+ This rubric **gates a claim, not a process**. It is **warn-only** everywhere: no Lisa surface
171
+ hard-blocks on the readiness verdict. `lisa apply`, intake dispatch, and cron registration are
172
+ unaffected; the automation setup flow warns with the standing blocker count and the narrowed claim
173
+ and still completes, consistent with the shipped never-block-always-degrade posture. Where a surface
174
+ named here is not installed, **degrade, never block**: state what was assessed, state what was not,
175
+ and continue.
176
+
177
+ Read the eight dimension titles and the seven blockers to someone who has never seen Lisa. They
178
+ should be able to say, unprompted, why "the tests pass" is not the same as "an agent fleet can run
179
+ here unattended" — that is the bar this document is written to (`factory-model` rule 5).
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa",
3
- "version": "2.267.0",
3
+ "version": "2.268.1",
4
4
  "description": "Universal governance — agents, skills, commands, hooks, and rules for all projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-cdk",
3
- "version": "2.267.0",
3
+ "version": "2.268.1",
4
4
  "description": "AWS CDK-specific plugin",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-cdk",
3
- "version": "2.267.0",
3
+ "version": "2.268.1",
4
4
  "description": "AWS CDK-specific Lisa plugin.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-cdk",
3
- "version": "2.267.0",
3
+ "version": "2.268.1",
4
4
  "description": "AWS CDK-specific plugin",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-cdk",
3
- "version": "2.267.0",
3
+ "version": "2.268.1",
4
4
  "description": "AWS CDK-specific plugin",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-cdk",
3
- "version": "2.267.0",
3
+ "version": "2.268.1",
4
4
  "description": "AWS CDK-specific plugin",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa",
3
- "version": "2.267.0",
3
+ "version": "2.268.1",
4
4
  "description": "Universal governance — agents, skills, commands, hooks, and rules for all projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -0,0 +1,58 @@
1
+ # Repository Readiness Rubric (load-bearing)
2
+
3
+ **"Lisa is installed correctly" and "an agent fleet may run here unattended" are two different
4
+ questions.** Doctor's shipped grouped checks answer the first — *installation readiness*. This rubric
5
+ answers the second — *repository readiness* — and it is the only place that question is written down.
6
+ A green test suite is not an answer to it.
7
+
8
+ ## Eight ownership dimensions
9
+
10
+ Repository readiness is assessed across exactly eight dimensions, never fewer, and a dimension with
11
+ no applicable evidence renders `SKIP` **with a reason** rather than a blank:
12
+
13
+ 1. **context/routing** — can an agent recover the real job from what is written down?
14
+ 2. **capabilities/tools** — is every tool the work needs *provably* reachable, not merely installed?
15
+ 3. **domain ownership** — are the business rules, glossary, and danger zones owned and written down?
16
+ 4. **execution/proof** — can the claimed user-visible outcome be proved by running the system?
17
+ 5. **feedback/guardrails** — does a failing loop produce a named outcome and a runbook?
18
+ 6. **dependencies/supply chain** — is there a confidence model for what the repo depends on?
19
+ 7. **delivery/authority** — does the thing that ships equal the thing that was validated, and does
20
+ the credential that ships it carry only the authority it needs?
21
+ 8. **proportionality** — is the machinery proportional to the job, or is there scaffolding to
22
+ subtract?
23
+
24
+ ## Seven ship blockers (closed set, v1)
25
+
26
+ A **ship blocker** is a condition that, standing alone, means the answer to "may an unattended fleet
27
+ run here?" is no. The set is closed in v1 — seven, no more — and extended only by editing this rule:
28
+
29
+ - **B1** a realistic path causes **silent data loss**
30
+ - **B2** a **release path bypasses the validated artifact**
31
+ - **B3** **credentials carry material unintended authority**
32
+ - **B4** a **consequential operation has no gate and no recovery**
33
+ - **B5** an **owned compatibility or security surface has no confidence model**
34
+ - **B6** **documentation overstates enforced guarantees**
35
+ - **B7** there is **no way to prove the claimed user-visible outcome**
36
+
37
+ ## Verdict and narrowed claim
38
+
39
+ The verdict reuses the shipped `READY` / `READY_WITH_WARNINGS` / `NOT_READY` ladder — cite doctor's
40
+ ladder, never fork a parallel enum. **A standing blocker is `NOT_READY`**, and the report must also
41
+ state the **narrowed claim**: what the repository *is* ready for, in operator language ("ready for
42
+ supervised single-ticket work; not ready for unattended fleet operation, because …").
43
+
44
+ ## Ordering
45
+
46
+ **Report section order stays stable and never silently omits a section; findings are ordered by
47
+ consequence** — highest-consequence first — within and across sections. The two contracts do not
48
+ collide: sections are fixed, findings are ranked.
49
+
50
+ ## Warn-only
51
+
52
+ This rubric **gates a claim, not a process**. No Lisa surface hard-blocks on the verdict: a standing
53
+ blocker narrows what may be claimed and files tracker work; it never stops `lisa apply`, intake
54
+ dispatch, or cron registration. Where a surface this rule names is not installed in a given branch,
55
+ name what you can and continue — degrade, never block. Written to be read by someone who does not
56
+ code (`factory-model` rule 5).
57
+
58
+ Full rubric (eight-dimension table, seven ship blockers, consequence ordering, worked example): [reference/readiness-rubric.md](../reference/readiness-rubric.md).
@@ -0,0 +1,179 @@
1
+ # Repository Readiness Rubric
2
+
3
+ Lisa can already tell you whether it is *installed* correctly. It cannot tell you whether a
4
+ repository is somewhere an agent fleet can safely operate **unattended**. Those are two different
5
+ questions, and conflating them is how a brownfield onboarding ends in "we built a wiki, looks good"
6
+ instead of a verdict someone can act on.
7
+
8
+ This document writes the second question down once: **eight ownership dimensions** with concrete
9
+ warning signs, and **seven ship blockers** that, if any one of them stands, mean the answer is no.
10
+ It is documentation. Nothing here executes — the later tickets of PRD #1739 instantiate this rubric
11
+ rather than redefine it.
12
+
13
+ ## Two readinesses, one report
14
+
15
+ | | Installation readiness | Repository readiness |
16
+ |---|---|---|
17
+ | Question | is Lisa installed and wired correctly here? | may an agent fleet operate here unattended? |
18
+ | Owner | `lisa doctor`'s shipped grouped checks (project detection, config, distribution, tracker preflight, automation prerequisites, …) | this rubric's eight dimensions |
19
+ | Answer shape | the shipped verdict ladder | the same shipped verdict ladder, plus a narrowed claim |
20
+
21
+ They are **orthogonal** — a repository can be perfectly installed and completely unready, or ready in
22
+ substance while Lisa's own wiring is incomplete. Both render in the same report, under separately
23
+ titled sections, so a reader is never left guessing which question a verdict answered. The doctor
24
+ mode that renders the repository-readiness group ships with **RRR-3 (#1855)**; do not assume that
25
+ surface is present in this branch.
26
+
27
+ ## The eight ownership dimensions
28
+
29
+ Exactly eight, always reported, never silently omitted. Each row names what the dimension asks,
30
+ concrete warning signs an assessor can look for, and the **existing** Lisa rule or wiki page that
31
+ supplies its evidence. Cite those slugs; do not restate them, and do not invent a parallel vocabulary
32
+ for a concept another rule already owns.
33
+
34
+ | # | Dimension | The question | Warning signs | Evidence source (existing) |
35
+ |---|---|---|---|---|
36
+ | 1 | context/routing | Can an agent recover the real job from what is written down? | no canonical entry document; routing decided by tribal knowledge; ambiguous config resolution; a README that describes a system that no longer exists | `integration-access-layer`, `wiki-knowledge-source`, `config-resolution` |
37
+ | 2 | capabilities/tools | Is every tool the work needs *provably* reachable, not merely installed? | presence-on-PATH treated as access; no read-only probe before the work starts; agents inventing workarounds instead of breaking out | `tool-access-gate` |
38
+ | 3 | domain ownership | Are the business rules, glossary, and danger zones owned and written down? | undocumented money paths; migrations with no owner; irreversible jobs nobody has described | the wiki pages agent-ready's domain phase already produces |
39
+ | 4 | execution/proof | Can the claimed user-visible outcome be proved by running the system? | claims backed only by unit tests; no representative end-to-end journey; "verified" that names no boundary | `verification`, `empirical-inquiry`, `claim-evidence-mapping` |
40
+ | 5 | feedback/guardrails | Does a failing loop produce a named outcome and a runbook? | silent failures; no run-outcome vocabulary; no observability on the loops that run unattended | `automation-runbook-contract`, `observability-audit` |
41
+ | 6 | dependencies/supply chain | Is there a confidence model for what the repo depends on? | unpinned or unowned dependencies; no trust class; no decision record for why a risky dependency stays | `security-audit-handling` |
42
+ | 7 | delivery/authority | Does the thing that ships equal the thing that was validated, and does the credential that ships it carry only the authority it needs? | a release path that bypasses the validated artifact; broad-scope tokens; deploy credentials shared across environments | `claim-archaeology`, `security-audit-handling` |
43
+ | 8 | proportionality | Is the machinery proportional to the job, or is there scaffolding to subtract? | redundant checks that assert the same thing twice; abandoned harnesses still running in CI | `repo-scope-split`, and the scaffolding-subtraction candidates the journey work of **#1742** already surfaces |
44
+
45
+ **`SKIP` carries a reason and is never blank.** A dimension with no applicable evidence renders
46
+ `SKIP with a reason` — "no deployment target configured, so delivery/authority was not assessed" —
47
+ never an empty cell and never a silent omission. An unassessed dimension is a known unknown, and the
48
+ report says so.
49
+
50
+ ## The seven ship blockers
51
+
52
+ A **ship blocker** is a condition that, standing alone, makes the claim "an unattended fleet may run
53
+ here" false. Each has a one-line test an assessor can apply and the dimension that owns it.
54
+
55
+ | # | Blocker | The test an assessor applies | Owning dimension |
56
+ |---|---|---|---|
57
+ | B1 | A realistic path causes **silent data loss** | can you name a plausible sequence that destroys or corrupts data with no error surfaced and no recovery path? | 3 |
58
+ | B2 | A **release path bypasses the validated artifact** | can something reach production that is not the artifact CI actually validated? | 7 |
59
+ | B3 | **Credentials carry material unintended authority** | does any credential used by automation grant authority materially beyond the job it does? | 7 |
60
+ | B4 | A **consequential operation has no gate and no recovery** | is there an irreversible or expensive operation reachable without a gate, with no way back? | 3, 5 |
61
+ | B5 | An **owned compatibility or security surface has no confidence model** | for a surface this repo owns, is there any basis beyond hope for believing it still works? | 6 |
62
+ | B6 | **Documentation overstates enforced guarantees** | does the written word claim something is enforced that nothing actually enforces? | 1 |
63
+ | B7 | There is **no way to prove the claimed user-visible outcome** | can the headline user-visible claim be demonstrated by running the system, at the boundary it claims? | 4 |
64
+
65
+ ### The set is a closed set in v1
66
+
67
+ Seven, and only seven, in v1. The set is **not configurable** — there is no config key, no
68
+ host-defined blockers, no severity dial. Extending it is a deliberate **rule edit** here plus a
69
+ version bump, not a configuration surface to design, migrate, and support. Host-specific concerns
70
+ surface as *findings within a dimension*, which is enough to make them visible without fragmenting
71
+ the vocabulary.
72
+
73
+ ### "Ship blocker" is net-new vocabulary
74
+
75
+ It is deliberately distinct from three terms other rules already own, and it never replaces them:
76
+
77
+ - `convergent-review`'s **blocking finding** — a review-level judgment about one change.
78
+ - `tool-access-gate`'s **break-out** — the escalation when a required tool is not provably reachable.
79
+ - `leaf-only-lifecycle`'s **safe-block** — a lifecycle-state repair on a work item.
80
+
81
+ A ship blocker is none of these: it is a property of the *repository*, asserted about *unattended
82
+ operation*, and it gates a claim rather than a change, a tool call, or a ticket.
83
+
84
+ ## Verdict: the shipped ladder, plus a narrowed claim
85
+
86
+ The rubric reuses the shipped `READY` / `READY_WITH_WARNINGS` / `NOT_READY` verdict ladder that
87
+ `lisa doctor` already emits. There is **no new verdict** value and no new severity level — inventing
88
+ a parallel enum would make two reports disagree about what "ready" means.
89
+
90
+ - **`READY`** — eight dimensions assessed, no blocker stands, no warnings material to unattended
91
+ operation.
92
+ - **`READY_WITH_WARNINGS`** — no blocker stands, but findings exist that a human should see.
93
+ - **`NOT_READY`** — **at least one ship blocker stands.**
94
+
95
+ **The narrowed claim is the net-new field.** When the verdict is `NOT_READY`, the report must also
96
+ state, in operator language, **what the repository IS ready for** — never just what it is not. A
97
+ verdict that only says no is unactionable at the gate; a narrowed claim tells the operator exactly
98
+ which mode of operation remains available and what would widen it.
99
+
100
+ ## Consequence ordering
101
+
102
+ Two ordering contracts meet here, and they do not collide:
103
+
104
+ - **Section order stays stable.** The report renders its sections in a fixed order and **never
105
+ silently omits** one — the discipline `lisa doctor`'s grouped output already guarantees.
106
+ - **Findings are ordered by consequence.** Within and across sections, the finding with the largest
107
+ consequence if left standing comes first. Alphabetical, chronological, and discovery order are all
108
+ wrong: the reader at the gate has limited attention, and it belongs on the worst thing first.
109
+
110
+ ### The five fields a readiness finding carries
111
+
112
+ On top of the severity / blocking / failure-scenario / evidence / smallest-fix fields
113
+ `convergent-review` already requires, a readiness finding names:
114
+
115
+ | Field | What it states |
116
+ |---|---|
117
+ | `invariant_violated` | the invariant actually at risk, stated as a property of the system |
118
+ | `evidence` | what was observed that establishes the finding, at a boundary that reaches the claim (`claim-evidence-mapping`) |
119
+ | `why_proof_missed` | why the existing proof machinery did not catch this |
120
+ | `root_correction` | the correction at the **owning boundary**, not a patch at the symptom |
121
+ | `machinery_to_remove` | redundant machinery the correction makes unnecessary, if any |
122
+
123
+ Two of these — `invariant_violated` and `machinery_to_remove` — are folded into the shared
124
+ `convergent-review` finding shape by **RRR-2 (#1854)**; that extension ships with that ticket, so do
125
+ not assume the shared shape carries them in this branch.
126
+
127
+ ### Worked example
128
+
129
+ ```text
130
+ Repository: acme/checkout-service
131
+
132
+ Verdict NOT_READY
133
+ Standing blocker B2 — a release path bypasses the validated artifact
134
+ Owning dimension 7 (delivery/authority)
135
+
136
+ invariant_violated What ships to production is the artifact CI validated.
137
+ evidence The deploy job rebuilds from source at deploy time rather than
138
+ promoting the CI-built image; the deployed digest never matches
139
+ the one the test job signed off on.
140
+ why_proof_missed Every check is green — they all ran against a different artifact
141
+ than the one that shipped. Nothing compared the two.
142
+ root_correction Promote the validated image by digest at the delivery boundary.
143
+ machinery_to_remove The duplicate deploy-time build step.
144
+
145
+ Narrowed claim This repository IS ready for supervised, single-ticket agent work with a
146
+ human approving each release. It is NOT ready for unattended fleet
147
+ operation, because a release can ship code no check ever ran against.
148
+ ```
149
+
150
+ ## Where the evidence comes from
151
+
152
+ The rubric consumes evidence that already exists; it commissions no second harness.
153
+
154
+ - **execution/proof** consumes the existing qualification evidence recorded by the worker-epoch
155
+ requalification path and, when that evidence is absent or stale, triggers a journey run through the
156
+ shipped `lisa-use-the-product` skill — the machinery **#1742** already ships. There is no second
157
+ journey harness, and the evidence is recorded in the shape `claim-evidence-mapping` defines. That
158
+ wiring ships with **RRR-6 (#1858)**.
159
+ - **domain ownership** sources its findings from the danger-zone wiki pages agent-ready's domain
160
+ phase already produces; the readiness assessment that reads them, and files standing blockers as
161
+ tracker work rather than in-session questions, ships with **RRR-4 (#1856)**.
162
+ - The persisted report at `.lisa/readiness.json` (schema-versioned, read through a single resolver)
163
+ and the doctor render group ship with **RRR-3 (#1855)**; the blocker gate that emits the narrowed
164
+ claim ships with **RRR-5 (#1857)**; the `setup-automations` warning, six-agent parity fan-out, and
165
+ vocabulary documentation ship with **RRR-7 (#1859)**. Each of those surfaces may not yet be present
166
+ in a given branch — name what you can and continue.
167
+
168
+ ## Warn-only, always
169
+
170
+ This rubric **gates a claim, not a process**. It is **warn-only** everywhere: no Lisa surface
171
+ hard-blocks on the readiness verdict. `lisa apply`, intake dispatch, and cron registration are
172
+ unaffected; the automation setup flow warns with the standing blocker count and the narrowed claim
173
+ and still completes, consistent with the shipped never-block-always-degrade posture. Where a surface
174
+ named here is not installed, **degrade, never block**: state what was assessed, state what was not,
175
+ and continue.
176
+
177
+ Read the eight dimension titles and the seven blockers to someone who has never seen Lisa. They
178
+ should be able to say, unprompted, why "the tests pass" is not the same as "an agent fleet can run
179
+ here unattended" — that is the bar this document is written to (`factory-model` rule 5).
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa",
3
- "version": "2.267.0",
3
+ "version": "2.268.1",
4
4
  "description": "Universal governance — agents, skills, commands, hooks, and rules for all projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"