@codyswann/lisa 2.341.0 → 2.341.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/README.md +95 -0
- package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
- package/dist/core/upstream-evidence-manifest.js +11 -8
- 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/.codex-plugin/skills/lisa-debrief/SKILL.md +3 -3
- package/plugins/lisa/.codex-plugin/skills/lisa-debrief-apply/SKILL.md +6 -3
- package/plugins/lisa/.codex-plugin/skills/lisa-implement/SKILL.md +4 -3
- package/plugins/lisa/.codex-plugin/skills/lisa-setup-remote-env/SKILL.md +35 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-verify/SKILL.md +2 -2
- package/plugins/lisa/agents/learnings-synthesizer.md +21 -4
- package/plugins/lisa/rules/reference/intent-routing.md +9 -10
- package/plugins/lisa/rules/reference/project-learnings.md +2 -1
- package/plugins/lisa/skills/lisa-debrief/SKILL.md +3 -3
- package/plugins/lisa/skills/lisa-debrief-apply/SKILL.md +6 -3
- package/plugins/lisa/skills/lisa-implement/SKILL.md +4 -3
- package/plugins/lisa/skills/lisa-setup-remote-env/SKILL.md +35 -0
- package/plugins/lisa/skills/lisa-verify/SKILL.md +2 -2
- package/plugins/lisa-agy/agents/learnings-synthesizer.md +21 -4
- package/plugins/lisa-agy/plugin.json +1 -1
- package/plugins/lisa-agy/skills/lisa-debrief/SKILL.md +3 -3
- package/plugins/lisa-agy/skills/lisa-debrief-apply/SKILL.md +6 -3
- package/plugins/lisa-agy/skills/lisa-implement/SKILL.md +4 -3
- package/plugins/lisa-agy/skills/lisa-setup-remote-env/SKILL.md +35 -0
- package/plugins/lisa-agy/skills/lisa-verify/SKILL.md +2 -2
- 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/agents/learnings-synthesizer.agent.md +21 -4
- package/plugins/lisa-copilot/rules/reference/intent-routing.md +9 -10
- package/plugins/lisa-copilot/rules/reference/project-learnings.md +2 -1
- package/plugins/lisa-copilot/skills/lisa-debrief/SKILL.md +3 -3
- package/plugins/lisa-copilot/skills/lisa-debrief-apply/SKILL.md +6 -3
- package/plugins/lisa-copilot/skills/lisa-implement/SKILL.md +4 -3
- package/plugins/lisa-copilot/skills/lisa-setup-remote-env/SKILL.md +35 -0
- package/plugins/lisa-copilot/skills/lisa-verify/SKILL.md +2 -2
- package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cursor/agents/learnings-synthesizer.md +21 -4
- package/plugins/lisa-cursor/rules/intent-routing-reference.mdc +9 -10
- package/plugins/lisa-cursor/rules/project-learnings-reference.mdc +2 -1
- package/plugins/lisa-cursor/skills/lisa-debrief/SKILL.md +3 -3
- package/plugins/lisa-cursor/skills/lisa-debrief-apply/SKILL.md +6 -3
- package/plugins/lisa-cursor/skills/lisa-implement/SKILL.md +4 -3
- package/plugins/lisa-cursor/skills/lisa-setup-remote-env/SKILL.md +35 -0
- package/plugins/lisa-cursor/skills/lisa-verify/SKILL.md +2 -2
- 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/agents/learnings-synthesizer.md +21 -4
- package/plugins/src/base/rules/reference/intent-routing.md +9 -10
- package/plugins/src/base/rules/reference/project-learnings.md +2 -1
- package/plugins/src/base/skills/lisa-debrief/SKILL.md +3 -3
- package/plugins/src/base/skills/lisa-debrief-apply/SKILL.md +6 -3
- package/plugins/src/base/skills/lisa-implement/SKILL.md +4 -3
- package/plugins/src/base/skills/lisa-setup-remote-env/SKILL.md +35 -0
- package/plugins/src/base/skills/lisa-verify/SKILL.md +2 -2
|
@@ -336,9 +336,10 @@ Before shutting down the team, execute the Verify flow:
|
|
|
336
336
|
9. Merge the PR, then refresh the ticket-side backlink with `lisa-tracker-sync <work_item_ref> pr-merged pr_url=<url> merge_sha=<sha> tracker_provider=<provider>`.
|
|
337
337
|
10. Monitor the deploy action that triggers automatically from the successful merge
|
|
338
338
|
11. If deploy fails, create a task for the agent team to fix the failure, open a new PR and then go back to step 7
|
|
339
|
-
12. Remote verification: `verification-specialist` verifies in target environment (same checks as local verification, but on remote), and refreshes the verdict (step 2a) to reflect the remote result.
|
|
340
|
-
13. `ops-specialist`: post-deploy health check
|
|
339
|
+
12. Remote verification: `verification-specialist` verifies in target environment (same checks as local verification, but on remote), and refreshes the verdict (step 2a) to reflect the remote result. Resolve credentials through the `verification-lifecycle` lookup order before declaring any missing. If they remain genuinely unavailable, do not complete on artifact-only evidence: post a tracker comment naming every credential source checked and what could not be verified as a result, transition the work item to the configured blocked state, and apply the configured `needs-human` / `human-review` label (creating it when the tracker supports label creation and it is missing). The comment is what makes the escalation auditable — a label alone records that something stopped, not what was tried or why. Evidence must explicitly distinguish `verified empirically` from `artifact-only / verification deferred`.
|
|
340
|
+
13. `ops-specialist`: post-deploy health check via `lisa-monitor <env> --report-only`, monitor for errors in first minutes. `--report-only` is REQUIRED: it keeps the post-deploy check a pure health/audit report so monitor's standalone ticket-filing never fires inside this flow.
|
|
341
341
|
14. If remote verification fails, create a task for the agent team to find out why it failed, fix it and return to step 5. **Bound this loop**: after a small number of full fix→deploy→reverify cycles without reaching a passing remote verdict (treat ~3 as the ceiling unless the work item states otherwise), stop retrying — file a build-ready fix ticket, write the verdict with `status: "blocked"` and the diagnosis, and move the work item to blocked rather than looping indefinitely. The completion gate releases on a `blocked` verdict, so the flow ends with a recorded outcome instead of a silent spin or a self-declared success.
|
|
342
|
-
15.
|
|
342
|
+
15. **Post evidence to the originating work item** via `lisa-tracker-evidence` (vendor-neutral; dispatches to `lisa-jira-evidence`, `lisa-github-evidence`, or `lisa-linear-evidence` per `.lisa.config.json` `tracker`), including the list of codified tests added on this branch. **If the work is UI-visible** (any verification step ran in a browser, or the change touches a user-facing surface), author `evidence/comment.md` per the **UI Evidence Checklist** in `lisa-tracker-evidence` — numbered live-session steps, one screenshot per step captured through the interactive browser controller and uploaded to the GitHub `pr-assets` release as plain URLs, and an explicit invitation to be corrected. This step is what makes the proof visible to a non-technical operator standing at the gate; a terminal work item with no posted evidence is an incomplete flow, not a finished one.
|
|
343
|
+
16. After true terminal completion — required merge/deploy/verification passed, usage/evidence and two-way PR linkage are recorded, and the work item is terminal — run `node scripts/lisa-work-item.mjs clear` and verify the worktree has no current binding. Do not clear on an interruption or blocked outcome; preserving the binding is what keeps resumed work attributable.
|
|
343
344
|
|
|
344
345
|
**Ticket status transitions throughout this flow are config-bound** per the **Tracker status vocabulary** section of the `config-resolution` rule: whoever performs the tracker write — the lead included, in runtimes where the tracker MCP is lead-only — may only target statuses named in the configured workflow map (`claimed`, `blocked`, env-keyed `done`, and `review`/`qa` when configured). Never adopt a status discovered from the tracker's live workflow; a lifecycle stage with no configured status gets a comment, not a transition.
|
|
@@ -236,6 +236,41 @@ What the detector produces is a proposal with `<pin>`, `<release url>` and `<sha
|
|
|
236
236
|
|
|
237
237
|
The other objections stay true and stay unfixed: most tooling has no credential and most credentials imply no tool, so notes are one signal among four and the weakest of them. They are read *after* npm scripts and MCP servers, and a note alone should be the least persuasive reason to add anything.
|
|
238
238
|
|
|
239
|
+
## One command, four surfaces
|
|
240
|
+
|
|
241
|
+
`lisa environment <surface> --tenant=<name>` configures one surface for one
|
|
242
|
+
tenant. The only difference between them is whether Lisa can execute there:
|
|
243
|
+
|
|
244
|
+
| Surface | What happens | Materializes |
|
|
245
|
+
| --- | --- | --- |
|
|
246
|
+
| `local` | runs here: stores the bootstrap, materializes, installs AWS profiles | on request |
|
|
247
|
+
| `container` | emits an image definition and a `docker run` line | at container start |
|
|
248
|
+
| `claude-web` | emits text for the environment dialog | at setup **and** session start |
|
|
249
|
+
| `codex-cloud` | emits text for the environment settings | at setup |
|
|
250
|
+
|
|
251
|
+
None of it needs a checkout, which is the point: the surfaces most in need of
|
|
252
|
+
configuration are the ones with no repository attached.
|
|
253
|
+
|
|
254
|
+
`--tenant` is required on `local` because that path **writes**. Every namespace
|
|
255
|
+
is a directory under `$XDG_CONFIG_HOME`, so resolving the wrong one puts one
|
|
256
|
+
tenant's credentials where another tenant's sessions read — and on a machine
|
|
257
|
+
serving several, the two would share a store. The named tenant also outranks any
|
|
258
|
+
`.lisa.config.json` in the working directory: someone who typed `--tenant=acme`
|
|
259
|
+
means acme, whichever repository they happen to be standing in.
|
|
260
|
+
|
|
261
|
+
Re-running `environment local` is how a token is **rotated**. It is not an
|
|
262
|
+
installer, so it does not reinstall agents to replace one credential; it reports
|
|
263
|
+
that a bootstrap is already stored and leaves it alone unless `--rotate` says
|
|
264
|
+
otherwise.
|
|
265
|
+
|
|
266
|
+
`workstation` remains the separate question — what binaries does this machine
|
|
267
|
+
have — with no tenant and no credentials.
|
|
268
|
+
|
|
269
|
+
`remote-env --emit=<surface>` still works, and is the older spelling of the same
|
|
270
|
+
thing. It named the machinery rather than the task: from a laptop it reads as
|
|
271
|
+
"prepare the remote environment I am currently in", which is the opposite of
|
|
272
|
+
configuring a cloud environment.
|
|
273
|
+
|
|
239
274
|
## Provisioning tiers
|
|
240
275
|
|
|
241
276
|
Preference order, falling back:
|
|
@@ -38,8 +38,8 @@ Execute the **Verify** flow as defined in the `intent-routing` rule (loaded via
|
|
|
38
38
|
1. **Pre-flight: codification gate** — confirm that every passing local empirical verification on this branch was codified as a regression test (the Implement flow's codify step). If any verification has no committed test and no allowed skip reason (PR / Documentation / Deploy / Investigate-Only), invoke `codify-verification` now and amend the PR before shipping. For frontend work the gate is dual-runner: a Playwright spec AND, when the project supports Maestro (`.maestro/`, `maestro:test` script, or Maestro CI workflow), a Maestro flow for the same journey — a missing runner needs a recorded absence or a linked build-ready follow-up ticket, never a silent skip. A change cannot ship until its verifications are guarded.
|
|
39
39
|
2. **Commit** any pending changes via `lisa-git-commit`
|
|
40
40
|
3. **Push and PR** via `lisa-git-submit-pr`
|
|
41
|
-
4. **
|
|
42
|
-
5. **Merge**
|
|
41
|
+
4. **PR Watch Loop** — drive the PR to MERGED via `lisa-drive-pr-to-merge`, the single source of truth for clearing every blocker: auto-merge with direct-merge fallback, `BEHIND` re-sync, conflict resolution, failing-check fixes, human + bot review-comment handling with thread resolution (it invokes `lisa-pull-request-review` itself), stale `CHANGES_REQUESTED` dismissal, and post-merge ancestry verification. Do not re-implement the loop or its terminal conditions.
|
|
42
|
+
5. **Merge** — owned by `lisa-drive-pr-to-merge`, including the auto-merge race and zero-deploy-run checks
|
|
43
43
|
6. **Remote verification** — invoke the `lisa-monitor` skill against the target environment **in report-only mode** (`lisa-monitor <env> --report-only`) to confirm the deploy actually works (health endpoints, recent logs/errors, Validation Journey replay if defined). `--report-only` is required here: it keeps the post-deploy check a pure health/audit report and prevents monitor's standalone ticket-filing from creating issues during a verify run. If remote verification surfaces a behavioral gap that the existing codified tests do not guard, invoke `codify-verification` to add coverage and open a follow-up PR.
|
|
44
44
|
- When the Validation Journey is DOM-web, the target is an allowed non-production environment with mutation policy `full`, and `lisa kane probe` succeeds, verification may invoke `lisa-kane-browser`. Import the local evidence pack into Lisa's evidence flow; the Test Manager URL is secondary. Kane does not replace the pre-flight Playwright/Maestro codification gate.
|
|
45
45
|
- When remote verification needs credentials, follow the shared `verification-lifecycle` credential lookup order before declaring them missing: project e2e / Playwright config and fixtures first, then `.lisa.config.local.json` / environment variables, then documented ticket credentials such as a `Sign-in Required` section.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-openclaw",
|
|
3
|
-
"version": "2.341.
|
|
3
|
+
"version": "2.341.2",
|
|
4
4
|
"description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, for Claude Code and Codex",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Cody Swann"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-openclaw",
|
|
3
|
-
"version": "2.341.
|
|
3
|
+
"version": "2.341.2",
|
|
4
4
|
"description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, across Claude and Codex.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Cody Swann"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-openclaw",
|
|
3
|
-
"version": "2.341.
|
|
3
|
+
"version": "2.341.2",
|
|
4
4
|
"description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, for Claude Code and Codex",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Cody Swann"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-openclaw",
|
|
3
|
-
"version": "2.341.
|
|
3
|
+
"version": "2.341.2",
|
|
4
4
|
"description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, for Claude Code and Codex",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Cody Swann"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-openclaw",
|
|
3
|
-
"version": "2.341.
|
|
3
|
+
"version": "2.341.2",
|
|
4
4
|
"description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, for Claude Code and Codex",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Cody Swann"
|
|
@@ -34,15 +34,17 @@ Map every finding to exactly one category. When a finding could fit two, pick th
|
|
|
34
34
|
| Category | What it means | Destination hint (for `debrief-apply`) |
|
|
35
35
|
|----------|---------------|----------------------------------------|
|
|
36
36
|
| **Edge case** | A failure mode (input, state, environment, concurrency, etc.) that the original spec or Plan did not list. Should have been caught by Edge Case Brainstorm. | Append to Edge Case Brainstorm checklist in `intent-routing.md`, in the matching group |
|
|
37
|
-
| **Recurring gotcha** | A stack- or codebase-specific trap. Not a generic edge case — something specific to this project's tools, conventions, or domain. ("This ORM silently truncates X." "Our auth header is renamed in lambda Y.") |
|
|
38
|
-
| **Process friction** | A step in the lifecycle that consistently slowed the work — long status stalls, repeated reopen cycles, force-pushes after approval, missing journey replays, ambiguous AC that required mid-PR clarification. |
|
|
37
|
+
| **Recurring gotcha** | A stack- or codebase-specific trap. Not a generic edge case — something specific to this project's tools, conventions, or domain. ("This ORM silently truncates X." "Our auth header is renamed in lambda Y.") | Learnings ledger, via the executable contract (`@codyswann/lisa/learnings`) |
|
|
38
|
+
| **Process friction** | A step in the lifecycle that consistently slowed the work — long status stalls, repeated reopen cycles, force-pushes after approval, missing journey replays, ambiguous AC that required mid-PR clarification. | Learnings ledger, via the executable contract — or a tooling-gap ticket if the friction is automatable |
|
|
39
39
|
| **Tooling gap** | Something that should have been automated, an agent that should have caught the issue but didn't, a missing skill, a hook that didn't fire. | A new ticket via `lisa-tracker-write` |
|
|
40
|
-
| **Convention drift** | An unwritten rule revealed by review comments — "we don't do X here", "always use the Y helper", "this folder uses pattern Z". The convention is real but undocumented. |
|
|
40
|
+
| **Convention drift** | An unwritten rule revealed by review comments — "we don't do X here", "always use the Y helper", "this folder uses pattern Z". The convention is real but undocumented. | Learnings ledger, via the executable contract |
|
|
41
41
|
| **Decomposition infidelity** | A ticket misrepresented the PRD requirement it claimed to implement — the agent built what the ticket said, but the ticket distorted the spec, and every gate passed it. A harness defect, not a project one. (`lisa-rework-triage` classifies these at claim time; debrief catches the ones that slipped through a whole initiative.) | Upstream Lisa issue (`hardening.upstreamRepo`, default `CodySwannGT/lisa`) |
|
|
42
42
|
| **PRD defect** | The ticket faithfully captured the PRD, but the PRD itself was wrong, ambiguous, or missing the failing case. A spec problem, not an agent problem. | Comment on the source PRD via `lisa-prd-backlink` lineage; flag for product review — never silently edit the spec |
|
|
43
43
|
| **Missing tool access** | An agent lacked a tool, credential, environment, or permission the work required, and the failure traces to that gap rather than to the code. | Provisioning ticket via `lisa-tracker-write` (`type:tooling`) |
|
|
44
44
|
|
|
45
|
-
A finding that does not fit any
|
|
45
|
+
A finding that does not fit any of the eight is itself a signal — surface it under an additional ad-hoc category `Uncategorized` with a note explaining why no category fit. Better to surface than to drop.
|
|
46
|
+
|
|
47
|
+
The destination column is a **hint for the human triaging the row**, not the routing decision: `lisa-debrief-apply` routes on the category, never on this column. Keep the hint honest anyway — a human decides Accept/Reject partly on where the learning will land. The three knowledge categories (recurring gotcha, process friction, convention drift) all land in the committed learnings ledger through the executable contract. Machine-local auto-memory (`project_*.md`, `MEMORY.md`), `PROJECT_RULES.md`, and `AGENTS.md` (whose `CLAUDE.md` is only a `@AGENTS.md` pointer) are **never** destinations — the first is invisible to cloud runs and teammates, and the latter two are human-authored surfaces that agents do not write.
|
|
46
48
|
|
|
47
49
|
## Dedupe rules
|
|
48
50
|
|
|
@@ -113,6 +115,21 @@ Anomalies: <n> (see below)
|
|
|
113
115
|
| # | Confidence | Summary | Evidence | Recommended destination | Disposition |
|
|
114
116
|
| CD-1 | ... |
|
|
115
117
|
|
|
118
|
+
### Decomposition infidelity
|
|
119
|
+
|
|
120
|
+
| # | Confidence | Summary | Evidence | Recommended destination | Disposition |
|
|
121
|
+
| DI-1 | ... |
|
|
122
|
+
|
|
123
|
+
### PRD defects
|
|
124
|
+
|
|
125
|
+
| # | Confidence | Summary | Evidence | Recommended destination | Disposition |
|
|
126
|
+
| PD-1 | ... |
|
|
127
|
+
|
|
128
|
+
### Missing tool access
|
|
129
|
+
|
|
130
|
+
| # | Confidence | Summary | Evidence | Recommended destination | Disposition |
|
|
131
|
+
| MT-1 | ... |
|
|
132
|
+
|
|
116
133
|
### Uncategorized
|
|
117
134
|
|
|
118
135
|
| # | Confidence | Summary | Evidence | Why no category fit | Disposition |
|
|
@@ -184,19 +184,13 @@ Gate:
|
|
|
184
184
|
Sequence:
|
|
185
185
|
1. Commit -- atomic conventional commits via `git-commit` skill
|
|
186
186
|
2. PR -- create/update pull request via `git-submit-pr` skill
|
|
187
|
-
3. PR Watch Loop (
|
|
188
|
-
|
|
189
|
-
- If merge conflicts -- resolve and push
|
|
190
|
-
- If bot review feedback (CodeRabbit, etc.):
|
|
191
|
-
- Valid feedback -- implement fix, push, resolve comment
|
|
192
|
-
- Invalid feedback -- reply explaining why, resolve comment
|
|
193
|
-
- Repeat until all checks pass and all comments are resolved
|
|
194
|
-
4. Merge the PR
|
|
187
|
+
3. PR Watch Loop -- drive the PR to MERGED via the `drive-pr-to-merge` skill. That skill is the single source of truth for clearing every blocker (auto-merge with direct-merge fallback, `BEHIND` re-sync, conflict resolution, failing-check fixes, human + bot review-comment handling with thread resolution via `pull-request-review`, stale `CHANGES_REQUESTED` dismissal, and post-merge ancestry verification). Do NOT re-implement the loop or its terminal conditions here or in any calling skill.
|
|
188
|
+
4. Merge the PR (owned by `drive-pr-to-merge`, including the auto-merge race and zero-deploy-run checks)
|
|
195
189
|
5. Monitor deploy (watch the deployment action triggered by merge):
|
|
196
190
|
- If deploy fails -- fix, open new PR, return to step 3
|
|
197
191
|
6. Remote verification:
|
|
198
|
-
- `verification-specialist` -- verify in target environment (same checks as local verification, but on remote)
|
|
199
|
-
- `ops-specialist` -- post-deploy health check
|
|
192
|
+
- `verification-specialist` -- verify in target environment (same checks as local verification, but on remote). Resolve credentials through the `verification-lifecycle` lookup order before declaring any missing. If they remain genuinely unavailable, do not complete on artifact-only evidence: post a tracker comment naming every credential source checked and what could not be verified as a result, transition the work item to the configured blocked state, and apply the configured `needs-human` / `human-review` label (creating it when the tracker supports label creation and it is missing). The comment is what makes the escalation auditable -- a label alone records that something stopped, not what was tried or why. Evidence must explicitly distinguish `verified empirically` from `artifact-only / verification deferred`
|
|
193
|
+
- `ops-specialist` -- post-deploy health check via `lisa-monitor <env> --report-only`, smoke test, monitor for errors in first minutes. `--report-only` is REQUIRED: it keeps the post-deploy check a pure health/audit report so monitor's standalone ticket-filing never fires inside a Verify run
|
|
200
194
|
- If remote verification fails -- fix, open new PR, return to step 3
|
|
201
195
|
7. **Record Verify usage on the evidence artifact** -- invoke `lisa-usage-accounting` against the generated evidence artifact (comment body, PR evidence section, or markdown proof) so it gains a direct `verify` usage entry in the canonical `## Lisa Usage` section. If the originating work item or PRD parentage is known, prefer `record_and_rollup` so ancestor totals refresh in the same pass. If runtime usage is unavailable, still write `source: unavailable` with nullable token/cost fields instead of omitting the row.
|
|
202
196
|
8. **Post evidence via the tracker surface** -- invoke `lisa-tracker-evidence` after the usage write so the same canonical evidence artifact is uploaded / posted without hand-editing a second format.
|
|
@@ -224,6 +218,11 @@ Sequence:
|
|
|
224
218
|
- **Process friction** — a step in the lifecycle that consistently slowed the work
|
|
225
219
|
- **Tooling gap** — missing skill, wrong agent assignment, broken hook, missing automation
|
|
226
220
|
- **Convention drift** — an unwritten rule revealed by review comments that should be codified
|
|
221
|
+
- **Decomposition infidelity** — a ticket distorted the PRD requirement it claimed to implement, and every gate passed it
|
|
222
|
+
- **PRD defect** — the ticket faithfully captured the PRD, but the PRD itself was wrong, ambiguous, or missing the failing case
|
|
223
|
+
- **Missing tool access** — an agent lacked a tool, credential, environment, or permission the work required
|
|
224
|
+
|
|
225
|
+
The three knowledge categories (recurring gotcha, process friction, convention drift) persist to the committed learnings ledger through the executable contract — never to machine-local memory, `PROJECT_RULES.md`, or `AGENTS.md`.
|
|
227
226
|
4. **Produce the human-triage document** — a markdown file with one row per candidate learning showing: category, summary, evidence (links to the source ticket comment / PR comment / commit), recommended persistence destination, and a checkbox-style disposition field the human will mark (Accept / Reject / Defer). Surface step-1 anomalies (work items missing PRs, etc.) in a separate section. The document is exhaustive — it lists every candidate, even ones the synthesizer rates low confidence — because the human, not the agent, decides what is worth keeping.
|
|
228
227
|
5. **Record Debrief usage on the triage document** — invoke `lisa-usage-accounting` against the generated markdown artifact so the document carries its own direct `debrief` usage entry in the canonical `## Lisa Usage` section. If runtime usage is unavailable, write the entry with `source: unavailable` and nullable token/cost fields rather than skipping it.
|
|
229
228
|
6. **Stop and hand the document to the human.** Debrief does NOT persist accepted learnings itself. The human triages, marks dispositions, and runs the **`/lisa:debrief:apply`** command (skill: `debrief-apply`) to route the accepted items to their destinations.
|
|
@@ -42,7 +42,8 @@ Each persisted entry has seven fields:
|
|
|
42
42
|
`persistConsolidatedLearning`, with consolidation-at-write), provenance drawn
|
|
43
43
|
from the triage row's evidence links and a `high` starting confidence because
|
|
44
44
|
a human Accept is corroboration. It no longer writes to machine-local memory,
|
|
45
|
-
`PROJECT_RULES.md`, or `
|
|
45
|
+
`PROJECT_RULES.md`, or `AGENTS.md` (the human-authored source of truth, of
|
|
46
|
+
which `CLAUDE.md` is only a `@AGENTS.md` pointer) for these categories.
|
|
46
47
|
- The **build-intake flows** advance `last_confirmed` at claim time
|
|
47
48
|
(`confirmLearningEntry`, below).
|
|
48
49
|
|
|
@@ -68,11 +68,11 @@ A markdown triage document at `./debrief/<initiative-slug>-<YYYY-MM-DD>.md` (or
|
|
|
68
68
|
|
|
69
69
|
1. **Header** — initiative name, source PRD/epic link, work-item count, PR count, generation date, gate results.
|
|
70
70
|
2. **Anomalies** — work items missing PRs, items with abnormal status-transition timing, PRs with no review comments at all (signal-of-absence is a learning), etc.
|
|
71
|
-
3. **Candidate learnings** — one row per candidate, grouped by category (Edge case / Recurring gotcha / Process friction / Tooling gap / Convention drift). Each row has:
|
|
71
|
+
3. **Candidate learnings** — one row per candidate, grouped by category (Edge case / Recurring gotcha / Process friction / Tooling gap / Convention drift / Decomposition infidelity / PRD defect / Missing tool access, plus `Uncategorized` for a finding none of the eight fit). The category set is owned by `learnings-synthesizer` — every category it can emit must have a section here and a route in `lisa-debrief-apply`, or an accepted row cannot be applied. Each row has:
|
|
72
72
|
- `Summary` — one sentence
|
|
73
73
|
- `Category`
|
|
74
74
|
- `Evidence` — links to the source ticket comment / PR comment / commit / test file (multiple allowed)
|
|
75
|
-
- `Recommended persistence destination` — the agent's best guess for where this should land if accepted (e.g., "Edge Case Brainstorm checklist → Navigation & URL state", "
|
|
75
|
+
- `Recommended persistence destination` — the agent's best guess for where this should land if accepted (e.g., "Edge Case Brainstorm checklist → Navigation & URL state", "learnings ledger via the executable contract", "new tooling-gap ticket", "upstream Lisa issue"). Never name machine-local auto-memory, `PROJECT_RULES.md`, or `AGENTS.md` — those are not persistence destinations.
|
|
76
76
|
- `Disposition` — empty checkbox-style field the human will fill: `[ ] Accept` / `[ ] Reject` / `[ ] Defer` plus a free-text reason
|
|
77
77
|
4. **Source map** — appendix listing every work item and PR walked, so the human can verify completeness.
|
|
78
78
|
|
|
@@ -89,7 +89,7 @@ After producing the triage document, print:
|
|
|
89
89
|
|
|
90
90
|
```text
|
|
91
91
|
Triage document written to: <path>
|
|
92
|
-
Counts: <n> edge cases, <n> gotchas, <n> friction, <n> tooling gaps, <n> convention drift; <n> anomalies
|
|
92
|
+
Counts: <n> edge cases, <n> gotchas, <n> friction, <n> tooling gaps, <n> convention drift, <n> decomposition infidelity, <n> PRD defects, <n> missing tool access, <n> uncategorized; <n> anomalies
|
|
93
93
|
Next: human triage. When done, run `/lisa:debrief:apply <path>` to persist accepted learnings.
|
|
94
94
|
```
|
|
95
95
|
|