@codyswann/lisa 2.142.2 → 2.142.3
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/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/commands/repair-intake.md +2 -2
- package/plugins/lisa/skills/repair-intake/SKILL.md +57 -5
- package/plugins/lisa-agy/commands/repair-intake.md +2 -2
- package/plugins/lisa-agy/plugin.json +1 -1
- package/plugins/lisa-agy/skills/repair-intake/SKILL.md +57 -5
- 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/commands/repair-intake.md +2 -2
- package/plugins/lisa-copilot/skills/repair-intake/SKILL.md +57 -5
- package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cursor/commands/repair-intake.md +2 -2
- package/plugins/lisa-cursor/skills/repair-intake/SKILL.md +57 -5
- 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-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/commands/repair-intake.md +2 -2
- package/plugins/src/base/skills/repair-intake/SKILL.md +57 -5
package/package.json
CHANGED
|
@@ -84,7 +84,7 @@
|
|
|
84
84
|
"lodash": ">=4.18.1"
|
|
85
85
|
},
|
|
86
86
|
"name": "@codyswann/lisa",
|
|
87
|
-
"version": "2.142.
|
|
87
|
+
"version": "2.142.3",
|
|
88
88
|
"description": "Claude Code governance framework that applies guardrails, guidance, and automated enforcement to projects",
|
|
89
89
|
"main": "dist/index.js",
|
|
90
90
|
"exports": {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: "Repair counterpart to /lisa:intake. Vendor-agnostic batch scanner that finds stuck or half-closed work — items left in `blocked`, stalled in an in-progress role (build `claimed`, PRD `in_review`), terminal-labeled items still natively open,
|
|
2
|
+
description: "Repair counterpart to /lisa:intake. Vendor-agnostic batch scanner that finds stuck or half-closed work — items left in `blocked`, stalled in an in-progress role (build `claimed`, PRD `in_review`), terminal-labeled items still natively open, rollups whose children are all terminal, and GitHub issues missing official Lisa lifecycle labels — across the same queues /lisa:intake serves (Notion / Confluence / Linear / GitHub PRDs; JIRA / GitHub / Linear build issues). Repairs every materially actionable candidate inside the `max_candidates` cap: resumes stalled in-progress work in place — but for a stalled build it first diagnoses the PR/deploy state and, if the PR cannot merge (conflict, rebase, failing checks, unaddressed CodeRabbit/changes-requested) or a deploy failed, files a build-ready fix ticket and moves the item to `blocked` (blocked by it) instead of re-dispatching — re-validates blocked PRDs, re-dispatches blocked build items whose blockers have cleared, performs terminal native closure, reconciles parent rollups to their derived state (including the intermediate-env case — e.g. all children at `On Stg` → parent `On Stg` — and a container wrongly stuck in `ready`), normalizes missing GitHub lifecycle labels to the configured PRD/build `ready` label, and closes out completed rollups. Cron-safe and bounded; default GitHub intake_mode is both and default max_candidates is 100."
|
|
3
3
|
argument-hint: "<Notion-PRD-database-URL | Confluence-space-URL | Confluence-parent-page-URL | Linear-workspace-URL | Linear-team-URL | GitHub-repo-URL | org/repo | JIRA-project-key | JQL-filter> [intake_mode=prd|build|both] [stale_after=2h] [max_candidates=100] [force=true]"
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
Use the /lisa:repair-intake skill to scan the queue for stuck or half-closed items and repair every materially actionable candidate inside `max_candidates` (default 100). For GitHub queues, default `intake_mode` to `both` when the caller omits it. $ARGUMENTS
|
|
6
|
+
Use the /lisa:repair-intake skill to scan the queue for stuck or half-closed items, normalize GitHub issues missing official Lisa lifecycle labels into the configured PRD/build `ready` lane, and repair every materially actionable candidate inside `max_candidates` (default 100). For GitHub queues, default `intake_mode` to `both` when the caller omits it. $ARGUMENTS
|
|
@@ -45,6 +45,10 @@ close-out** roles and moves work *unstuck* or *fully closed*:
|
|
|
45
45
|
the build-intake claim gate deliberately leaves for a human; repair-intake reconciles it by
|
|
46
46
|
rolling the parent up from its children (with an audit note), so a container never sits in `ready`
|
|
47
47
|
indefinitely.
|
|
48
|
+
- **Missing official ready-label drift** — a GitHub issue that is missing every configured Lisa
|
|
49
|
+
lifecycle label. repair-intake classifies it as a PRD or build ticket and adds the configured
|
|
50
|
+
`ready` label (`prd-ready` for a PRD, build `status:ready` for a ticket) so normal intake can see
|
|
51
|
+
it; if the later intake/implement gate finds the item incomplete, it moves the item to `blocked`.
|
|
48
52
|
|
|
49
53
|
This skill is the symmetric counterpart to `lisa:intake`. It reuses the same queue-detection,
|
|
50
54
|
the same agent-team orchestration, the same "don't ask, just run" confirmation policy, and the
|
|
@@ -150,7 +154,8 @@ claim-and-advance). The essentials, inlined here so this skill is self-complete:
|
|
|
150
154
|
| Linear **workspace** URL, **team** URL/key, or literal `linear` | PRD (Linear) | source=linear | `in_review`, `blocked`, terminal/open PRDs, all-terminal generated-work rollups |
|
|
151
155
|
| GitHub **repo** URL / `org/repo` (PRD namespace) | PRD (GitHub) | source=github | `in_review`, `blocked`, terminal/open PRDs, all-terminal generated-work rollups |
|
|
152
156
|
| GitHub **repo** URL / `org/repo` with `tracker = github` (build namespace) | Build (GitHub) | tracker=github | `claimed`, `blocked`, terminal/open issues, parent rollups (intermediate-env + all-terminal), stale-`ready` containers |
|
|
153
|
-
|
|
|
157
|
+
| GitHub **repo** URL / `org/repo` with an open issue missing configured lifecycle labels | GitHub label normalization | per classified lifecycle | add configured `prd.ready` or build `ready` |
|
|
158
|
+
| Literal `github` | GitHub; route by `intake_mode` (`prd` / `build` / `both`) | per lifecycle | per lifecycle above, plus GitHub ready-label normalization |
|
|
154
159
|
| JIRA project key or full JQL | Build (JIRA) | tracker=jira | `claimed`, `blocked`, terminal/closure verification, parent rollups (intermediate-env + all-terminal), stale-`ready` containers |
|
|
155
160
|
|
|
156
161
|
Disambiguation (same as `lisa:intake`): a `notion.so`/`notion.site` URL → Notion; an Atlassian
|
|
@@ -545,6 +550,45 @@ work is fully terminal:
|
|
|
545
550
|
5. If generated work is missing, ambiguous, or partially incomplete, leave the PRD open and report
|
|
546
551
|
the incomplete child set. Never close a PRD on partial completion.
|
|
547
552
|
|
|
553
|
+
### GitHub missing official ready-label normalization → configured ready
|
|
554
|
+
|
|
555
|
+
For GitHub queues, enumerate open issues that have **no configured Lisa lifecycle label** in the
|
|
556
|
+
active lifecycle namespace(s). This is the repair path for issues created by older tools or humans
|
|
557
|
+
with labels like `build-ready`, or with no Lisa status label at all, that are invisible to
|
|
558
|
+
`lisa:intake`, whose scanner only reads the configured `ready` labels.
|
|
559
|
+
|
|
560
|
+
1. Resolve configured lifecycle labels from `.lisa.config.json` / `.lisa.config.local.json`:
|
|
561
|
+
- PRD lifecycle labels: `draft`, `ready`, `in_review`, `blocked`, `ticketed`, `shipped`,
|
|
562
|
+
`verified` when configured.
|
|
563
|
+
- Build lifecycle labels: `ready`, `claimed`, `blocked`, every env-resolved `done` value,
|
|
564
|
+
intermediate status labels where configured, and `human_needed`.
|
|
565
|
+
2. Query open GitHub issues that are missing all configured lifecycle labels for the lifecycle(s)
|
|
566
|
+
selected by `intake_mode`. If `intake_mode=prd`, only PRD-classified issues are normalized. If
|
|
567
|
+
`intake_mode=build`, every non-PRD issue is normalized as a build ticket. If `intake_mode=both`,
|
|
568
|
+
classify PRDs first and normalize all remaining issues as build tickets.
|
|
569
|
+
3. Classify the issue:
|
|
570
|
+
- **PRD** if it has PRD labels/markers (`prd`, `type:PRD`, `kind:prd`), PRD structure
|
|
571
|
+
(`## Problem`, `## Goals`, `## Validation Journey`, generated-work/backlink sections), or
|
|
572
|
+
body/comment text that explicitly says `prd-ready`.
|
|
573
|
+
- **Build ticket** if it has build work labels/types (`bug`, `type:Bug`, `task`, `type:Task`,
|
|
574
|
+
`sub-task`, `type:Sub-task`, `improvement`, `type:Improvement`, `story`, `spike`) or
|
|
575
|
+
body/comment text that explicitly says `build-ready`. When PRD signals are absent and the
|
|
576
|
+
selected lifecycle includes build, default to **Build ticket** even if no build type label is
|
|
577
|
+
present; build-intake/implement will validate the item and move it to `blocked` if required
|
|
578
|
+
sections are missing.
|
|
579
|
+
- **Ambiguous PRD/build** if strong PRD and build classifications both match. In `intake_mode=prd`
|
|
580
|
+
normalize as PRD; in `intake_mode=build` normalize as build; in `intake_mode=both`, prefer PRD
|
|
581
|
+
only when the body has PRD structure, otherwise build.
|
|
582
|
+
4. Apply exactly one configured ready label for the classified lifecycle:
|
|
583
|
+
- PRD → add the configured PRD `ready` label (default `prd-ready`).
|
|
584
|
+
- Build ticket → add the configured build `ready` label (default `status:ready`).
|
|
585
|
+
Keep any unofficial labels for auditability unless the project has explicitly configured one as a
|
|
586
|
+
conflicting lifecycle label. Do not claim the item or dispatch an agent in the same repair cycle;
|
|
587
|
+
normalization makes the next normal `lisa:intake` run pick it up.
|
|
588
|
+
5. Post one idempotent `[lisa-repair-intake]` note naming the classification and the configured label
|
|
589
|
+
applied. Include the normalization result in the loop-prevention fingerprint so repeated repair
|
|
590
|
+
cycles do not spam comments.
|
|
591
|
+
|
|
548
592
|
## Blocker classification & clearing (conservative, vendor-specific extraction)
|
|
549
593
|
|
|
550
594
|
A `blocked` build item is held by one or more of three blocker classes. Identify which are present
|
|
@@ -664,6 +708,9 @@ It MAY:
|
|
|
664
708
|
applies only to containers, never to leaves.
|
|
665
709
|
- Move a PRD with fully terminal generated work to `shipped` and close/archive the source artifact
|
|
666
710
|
where the source vendor supports native close-out, per `prd-lifecycle-rollup`.
|
|
711
|
+
- Normalize a GitHub issue with no configured lifecycle label by adding the configured PRD or build
|
|
712
|
+
`ready` label after classifying the issue. This is a visibility repair, not a claim; the item
|
|
713
|
+
remains open and unclaimed for normal intake.
|
|
667
714
|
|
|
668
715
|
It MUST NOT:
|
|
669
716
|
|
|
@@ -673,15 +720,17 @@ It MUST NOT:
|
|
|
673
720
|
- Touch `ready` **leaves** (that is `lisa:intake`'s lane). A container carrying `ready` is the
|
|
674
721
|
documented exception above — repair-intake reconciles it because `ready` on a parent is an
|
|
675
722
|
invariant violation, not the human "claim this leaf" signal intake owns.
|
|
723
|
+
- Move a GitHub issue that already carries a configured lifecycle label back to `ready` merely
|
|
724
|
+
because some other label looks stale. Official lifecycle labels remain authoritative.
|
|
676
725
|
|
|
677
726
|
## Cycle behavior
|
|
678
727
|
|
|
679
728
|
1. **Resolve the queue** — detect vendor/lifecycle (Source dispatch); resolve stuck role names
|
|
680
729
|
from config. For JIRA, confirm the needed transitions are reachable; stop on misconfig.
|
|
681
730
|
2. **Enumerate repair candidates** — query in-progress role(s), `blocked` role(s), terminal/open
|
|
682
|
-
items, rollup parents/PRDs with child work,
|
|
683
|
-
leaf-only-invariant violation to reconcile),
|
|
684
|
-
`max_candidates`, via the Access layer reads.
|
|
731
|
+
items, rollup parents/PRDs with child work, **containers carrying the `ready` role** (a
|
|
732
|
+
leaf-only-invariant violation to reconcile), and GitHub issues with no configured lifecycle label,
|
|
733
|
+
for the detected lifecycle(s), up to `max_candidates`, via the Access layer reads.
|
|
685
734
|
3. **Order deterministically**, highest repair-confidence first:
|
|
686
735
|
1. terminal-labeled items that only need native close / complete / resolve,
|
|
687
736
|
2. rollup parents/PRDs whose child sets are all terminal (close-out),
|
|
@@ -692,7 +741,8 @@ It MUST NOT:
|
|
|
692
741
|
5. `blocked` items whose **validation / quality-gate self-block now re-validates PASS** —
|
|
693
742
|
a human filled in the missing sections (Class B; equally safe and high-value),
|
|
694
743
|
6. `blocked` items with **new clarifying answers**,
|
|
695
|
-
7.
|
|
744
|
+
7. GitHub missing-official-label normalization candidates,
|
|
745
|
+
8. **stalled** in-progress items, oldest activity first.
|
|
696
746
|
4. **Walk the ordered list**, evaluating each candidate (terminal close-out, rollup child tally,
|
|
697
747
|
staleness, dependency, answer checks), and repair **every** candidate that is actionable inside
|
|
698
748
|
the `max_candidates` cap. Continue after successful writes and after per-item errors.
|
|
@@ -723,6 +773,8 @@ Report outcomes in these buckets:
|
|
|
723
773
|
- `rolled_up` — parent/container/PRD rollups advanced to their derived state: an intermediate env
|
|
724
774
|
(e.g. all children at `On Stg` → parent `On Stg`), a fully-terminal close-out, or a stale-`ready`
|
|
725
775
|
container reconciled from its children.
|
|
776
|
+
- `normalized_ready` — GitHub issues missing official lifecycle labels that were classified and
|
|
777
|
+
given the configured PRD/build `ready` label so normal intake can claim them.
|
|
726
778
|
- `still_blocked` — examined and intentionally left `blocked`, with the active reason.
|
|
727
779
|
- `active` — skipped because current work is not stale (or within backoff).
|
|
728
780
|
- `errors` — items that failed evaluation, with the error.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: "Repair counterpart to /lisa:intake. Vendor-agnostic batch scanner that finds stuck or half-closed work — items left in `blocked`, stalled in an in-progress role (build `claimed`, PRD `in_review`), terminal-labeled items still natively open,
|
|
2
|
+
description: "Repair counterpart to /lisa:intake. Vendor-agnostic batch scanner that finds stuck or half-closed work — items left in `blocked`, stalled in an in-progress role (build `claimed`, PRD `in_review`), terminal-labeled items still natively open, rollups whose children are all terminal, and GitHub issues missing official Lisa lifecycle labels — across the same queues /lisa:intake serves (Notion / Confluence / Linear / GitHub PRDs; JIRA / GitHub / Linear build issues). Repairs every materially actionable candidate inside the `max_candidates` cap: resumes stalled in-progress work in place — but for a stalled build it first diagnoses the PR/deploy state and, if the PR cannot merge (conflict, rebase, failing checks, unaddressed CodeRabbit/changes-requested) or a deploy failed, files a build-ready fix ticket and moves the item to `blocked` (blocked by it) instead of re-dispatching — re-validates blocked PRDs, re-dispatches blocked build items whose blockers have cleared, performs terminal native closure, reconciles parent rollups to their derived state (including the intermediate-env case — e.g. all children at `On Stg` → parent `On Stg` — and a container wrongly stuck in `ready`), normalizes missing GitHub lifecycle labels to the configured PRD/build `ready` label, and closes out completed rollups. Cron-safe and bounded; default GitHub intake_mode is both and default max_candidates is 100."
|
|
3
3
|
argument-hint: "<Notion-PRD-database-URL | Confluence-space-URL | Confluence-parent-page-URL | Linear-workspace-URL | Linear-team-URL | GitHub-repo-URL | org/repo | JIRA-project-key | JQL-filter> [intake_mode=prd|build|both] [stale_after=2h] [max_candidates=100] [force=true]"
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
Use the /lisa:repair-intake skill to scan the queue for stuck or half-closed items and repair every materially actionable candidate inside `max_candidates` (default 100). For GitHub queues, default `intake_mode` to `both` when the caller omits it. $ARGUMENTS
|
|
6
|
+
Use the /lisa:repair-intake skill to scan the queue for stuck or half-closed items, normalize GitHub issues missing official Lisa lifecycle labels into the configured PRD/build `ready` lane, and repair every materially actionable candidate inside `max_candidates` (default 100). For GitHub queues, default `intake_mode` to `both` when the caller omits it. $ARGUMENTS
|
|
@@ -45,6 +45,10 @@ close-out** roles and moves work *unstuck* or *fully closed*:
|
|
|
45
45
|
the build-intake claim gate deliberately leaves for a human; repair-intake reconciles it by
|
|
46
46
|
rolling the parent up from its children (with an audit note), so a container never sits in `ready`
|
|
47
47
|
indefinitely.
|
|
48
|
+
- **Missing official ready-label drift** — a GitHub issue that is missing every configured Lisa
|
|
49
|
+
lifecycle label. repair-intake classifies it as a PRD or build ticket and adds the configured
|
|
50
|
+
`ready` label (`prd-ready` for a PRD, build `status:ready` for a ticket) so normal intake can see
|
|
51
|
+
it; if the later intake/implement gate finds the item incomplete, it moves the item to `blocked`.
|
|
48
52
|
|
|
49
53
|
This skill is the symmetric counterpart to `lisa:intake`. It reuses the same queue-detection,
|
|
50
54
|
the same agent-team orchestration, the same "don't ask, just run" confirmation policy, and the
|
|
@@ -150,7 +154,8 @@ claim-and-advance). The essentials, inlined here so this skill is self-complete:
|
|
|
150
154
|
| Linear **workspace** URL, **team** URL/key, or literal `linear` | PRD (Linear) | source=linear | `in_review`, `blocked`, terminal/open PRDs, all-terminal generated-work rollups |
|
|
151
155
|
| GitHub **repo** URL / `org/repo` (PRD namespace) | PRD (GitHub) | source=github | `in_review`, `blocked`, terminal/open PRDs, all-terminal generated-work rollups |
|
|
152
156
|
| GitHub **repo** URL / `org/repo` with `tracker = github` (build namespace) | Build (GitHub) | tracker=github | `claimed`, `blocked`, terminal/open issues, parent rollups (intermediate-env + all-terminal), stale-`ready` containers |
|
|
153
|
-
|
|
|
157
|
+
| GitHub **repo** URL / `org/repo` with an open issue missing configured lifecycle labels | GitHub label normalization | per classified lifecycle | add configured `prd.ready` or build `ready` |
|
|
158
|
+
| Literal `github` | GitHub; route by `intake_mode` (`prd` / `build` / `both`) | per lifecycle | per lifecycle above, plus GitHub ready-label normalization |
|
|
154
159
|
| JIRA project key or full JQL | Build (JIRA) | tracker=jira | `claimed`, `blocked`, terminal/closure verification, parent rollups (intermediate-env + all-terminal), stale-`ready` containers |
|
|
155
160
|
|
|
156
161
|
Disambiguation (same as `lisa:intake`): a `notion.so`/`notion.site` URL → Notion; an Atlassian
|
|
@@ -545,6 +550,45 @@ work is fully terminal:
|
|
|
545
550
|
5. If generated work is missing, ambiguous, or partially incomplete, leave the PRD open and report
|
|
546
551
|
the incomplete child set. Never close a PRD on partial completion.
|
|
547
552
|
|
|
553
|
+
### GitHub missing official ready-label normalization → configured ready
|
|
554
|
+
|
|
555
|
+
For GitHub queues, enumerate open issues that have **no configured Lisa lifecycle label** in the
|
|
556
|
+
active lifecycle namespace(s). This is the repair path for issues created by older tools or humans
|
|
557
|
+
with labels like `build-ready`, or with no Lisa status label at all, that are invisible to
|
|
558
|
+
`lisa:intake`, whose scanner only reads the configured `ready` labels.
|
|
559
|
+
|
|
560
|
+
1. Resolve configured lifecycle labels from `.lisa.config.json` / `.lisa.config.local.json`:
|
|
561
|
+
- PRD lifecycle labels: `draft`, `ready`, `in_review`, `blocked`, `ticketed`, `shipped`,
|
|
562
|
+
`verified` when configured.
|
|
563
|
+
- Build lifecycle labels: `ready`, `claimed`, `blocked`, every env-resolved `done` value,
|
|
564
|
+
intermediate status labels where configured, and `human_needed`.
|
|
565
|
+
2. Query open GitHub issues that are missing all configured lifecycle labels for the lifecycle(s)
|
|
566
|
+
selected by `intake_mode`. If `intake_mode=prd`, only PRD-classified issues are normalized. If
|
|
567
|
+
`intake_mode=build`, every non-PRD issue is normalized as a build ticket. If `intake_mode=both`,
|
|
568
|
+
classify PRDs first and normalize all remaining issues as build tickets.
|
|
569
|
+
3. Classify the issue:
|
|
570
|
+
- **PRD** if it has PRD labels/markers (`prd`, `type:PRD`, `kind:prd`), PRD structure
|
|
571
|
+
(`## Problem`, `## Goals`, `## Validation Journey`, generated-work/backlink sections), or
|
|
572
|
+
body/comment text that explicitly says `prd-ready`.
|
|
573
|
+
- **Build ticket** if it has build work labels/types (`bug`, `type:Bug`, `task`, `type:Task`,
|
|
574
|
+
`sub-task`, `type:Sub-task`, `improvement`, `type:Improvement`, `story`, `spike`) or
|
|
575
|
+
body/comment text that explicitly says `build-ready`. When PRD signals are absent and the
|
|
576
|
+
selected lifecycle includes build, default to **Build ticket** even if no build type label is
|
|
577
|
+
present; build-intake/implement will validate the item and move it to `blocked` if required
|
|
578
|
+
sections are missing.
|
|
579
|
+
- **Ambiguous PRD/build** if strong PRD and build classifications both match. In `intake_mode=prd`
|
|
580
|
+
normalize as PRD; in `intake_mode=build` normalize as build; in `intake_mode=both`, prefer PRD
|
|
581
|
+
only when the body has PRD structure, otherwise build.
|
|
582
|
+
4. Apply exactly one configured ready label for the classified lifecycle:
|
|
583
|
+
- PRD → add the configured PRD `ready` label (default `prd-ready`).
|
|
584
|
+
- Build ticket → add the configured build `ready` label (default `status:ready`).
|
|
585
|
+
Keep any unofficial labels for auditability unless the project has explicitly configured one as a
|
|
586
|
+
conflicting lifecycle label. Do not claim the item or dispatch an agent in the same repair cycle;
|
|
587
|
+
normalization makes the next normal `lisa:intake` run pick it up.
|
|
588
|
+
5. Post one idempotent `[lisa-repair-intake]` note naming the classification and the configured label
|
|
589
|
+
applied. Include the normalization result in the loop-prevention fingerprint so repeated repair
|
|
590
|
+
cycles do not spam comments.
|
|
591
|
+
|
|
548
592
|
## Blocker classification & clearing (conservative, vendor-specific extraction)
|
|
549
593
|
|
|
550
594
|
A `blocked` build item is held by one or more of three blocker classes. Identify which are present
|
|
@@ -664,6 +708,9 @@ It MAY:
|
|
|
664
708
|
applies only to containers, never to leaves.
|
|
665
709
|
- Move a PRD with fully terminal generated work to `shipped` and close/archive the source artifact
|
|
666
710
|
where the source vendor supports native close-out, per `prd-lifecycle-rollup`.
|
|
711
|
+
- Normalize a GitHub issue with no configured lifecycle label by adding the configured PRD or build
|
|
712
|
+
`ready` label after classifying the issue. This is a visibility repair, not a claim; the item
|
|
713
|
+
remains open and unclaimed for normal intake.
|
|
667
714
|
|
|
668
715
|
It MUST NOT:
|
|
669
716
|
|
|
@@ -673,15 +720,17 @@ It MUST NOT:
|
|
|
673
720
|
- Touch `ready` **leaves** (that is `lisa:intake`'s lane). A container carrying `ready` is the
|
|
674
721
|
documented exception above — repair-intake reconciles it because `ready` on a parent is an
|
|
675
722
|
invariant violation, not the human "claim this leaf" signal intake owns.
|
|
723
|
+
- Move a GitHub issue that already carries a configured lifecycle label back to `ready` merely
|
|
724
|
+
because some other label looks stale. Official lifecycle labels remain authoritative.
|
|
676
725
|
|
|
677
726
|
## Cycle behavior
|
|
678
727
|
|
|
679
728
|
1. **Resolve the queue** — detect vendor/lifecycle (Source dispatch); resolve stuck role names
|
|
680
729
|
from config. For JIRA, confirm the needed transitions are reachable; stop on misconfig.
|
|
681
730
|
2. **Enumerate repair candidates** — query in-progress role(s), `blocked` role(s), terminal/open
|
|
682
|
-
items, rollup parents/PRDs with child work,
|
|
683
|
-
leaf-only-invariant violation to reconcile),
|
|
684
|
-
`max_candidates`, via the Access layer reads.
|
|
731
|
+
items, rollup parents/PRDs with child work, **containers carrying the `ready` role** (a
|
|
732
|
+
leaf-only-invariant violation to reconcile), and GitHub issues with no configured lifecycle label,
|
|
733
|
+
for the detected lifecycle(s), up to `max_candidates`, via the Access layer reads.
|
|
685
734
|
3. **Order deterministically**, highest repair-confidence first:
|
|
686
735
|
1. terminal-labeled items that only need native close / complete / resolve,
|
|
687
736
|
2. rollup parents/PRDs whose child sets are all terminal (close-out),
|
|
@@ -692,7 +741,8 @@ It MUST NOT:
|
|
|
692
741
|
5. `blocked` items whose **validation / quality-gate self-block now re-validates PASS** —
|
|
693
742
|
a human filled in the missing sections (Class B; equally safe and high-value),
|
|
694
743
|
6. `blocked` items with **new clarifying answers**,
|
|
695
|
-
7.
|
|
744
|
+
7. GitHub missing-official-label normalization candidates,
|
|
745
|
+
8. **stalled** in-progress items, oldest activity first.
|
|
696
746
|
4. **Walk the ordered list**, evaluating each candidate (terminal close-out, rollup child tally,
|
|
697
747
|
staleness, dependency, answer checks), and repair **every** candidate that is actionable inside
|
|
698
748
|
the `max_candidates` cap. Continue after successful writes and after per-item errors.
|
|
@@ -723,6 +773,8 @@ Report outcomes in these buckets:
|
|
|
723
773
|
- `rolled_up` — parent/container/PRD rollups advanced to their derived state: an intermediate env
|
|
724
774
|
(e.g. all children at `On Stg` → parent `On Stg`), a fully-terminal close-out, or a stale-`ready`
|
|
725
775
|
container reconciled from its children.
|
|
776
|
+
- `normalized_ready` — GitHub issues missing official lifecycle labels that were classified and
|
|
777
|
+
given the configured PRD/build `ready` label so normal intake can claim them.
|
|
726
778
|
- `still_blocked` — examined and intentionally left `blocked`, with the active reason.
|
|
727
779
|
- `active` — skipped because current work is not stale (or within backoff).
|
|
728
780
|
- `errors` — items that failed evaluation, with the error.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: "Repair counterpart to /lisa:intake. Vendor-agnostic batch scanner that finds stuck or half-closed work — items left in `blocked`, stalled in an in-progress role (build `claimed`, PRD `in_review`), terminal-labeled items still natively open,
|
|
2
|
+
description: "Repair counterpart to /lisa:intake. Vendor-agnostic batch scanner that finds stuck or half-closed work — items left in `blocked`, stalled in an in-progress role (build `claimed`, PRD `in_review`), terminal-labeled items still natively open, rollups whose children are all terminal, and GitHub issues missing official Lisa lifecycle labels — across the same queues /lisa:intake serves (Notion / Confluence / Linear / GitHub PRDs; JIRA / GitHub / Linear build issues). Repairs every materially actionable candidate inside the `max_candidates` cap: resumes stalled in-progress work in place — but for a stalled build it first diagnoses the PR/deploy state and, if the PR cannot merge (conflict, rebase, failing checks, unaddressed CodeRabbit/changes-requested) or a deploy failed, files a build-ready fix ticket and moves the item to `blocked` (blocked by it) instead of re-dispatching — re-validates blocked PRDs, re-dispatches blocked build items whose blockers have cleared, performs terminal native closure, reconciles parent rollups to their derived state (including the intermediate-env case — e.g. all children at `On Stg` → parent `On Stg` — and a container wrongly stuck in `ready`), normalizes missing GitHub lifecycle labels to the configured PRD/build `ready` label, and closes out completed rollups. Cron-safe and bounded; default GitHub intake_mode is both and default max_candidates is 100."
|
|
3
3
|
argument-hint: "<Notion-PRD-database-URL | Confluence-space-URL | Confluence-parent-page-URL | Linear-workspace-URL | Linear-team-URL | GitHub-repo-URL | org/repo | JIRA-project-key | JQL-filter> [intake_mode=prd|build|both] [stale_after=2h] [max_candidates=100] [force=true]"
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
Use the /lisa:repair-intake skill to scan the queue for stuck or half-closed items and repair every materially actionable candidate inside `max_candidates` (default 100). For GitHub queues, default `intake_mode` to `both` when the caller omits it. $ARGUMENTS
|
|
6
|
+
Use the /lisa:repair-intake skill to scan the queue for stuck or half-closed items, normalize GitHub issues missing official Lisa lifecycle labels into the configured PRD/build `ready` lane, and repair every materially actionable candidate inside `max_candidates` (default 100). For GitHub queues, default `intake_mode` to `both` when the caller omits it. $ARGUMENTS
|
|
@@ -45,6 +45,10 @@ close-out** roles and moves work *unstuck* or *fully closed*:
|
|
|
45
45
|
the build-intake claim gate deliberately leaves for a human; repair-intake reconciles it by
|
|
46
46
|
rolling the parent up from its children (with an audit note), so a container never sits in `ready`
|
|
47
47
|
indefinitely.
|
|
48
|
+
- **Missing official ready-label drift** — a GitHub issue that is missing every configured Lisa
|
|
49
|
+
lifecycle label. repair-intake classifies it as a PRD or build ticket and adds the configured
|
|
50
|
+
`ready` label (`prd-ready` for a PRD, build `status:ready` for a ticket) so normal intake can see
|
|
51
|
+
it; if the later intake/implement gate finds the item incomplete, it moves the item to `blocked`.
|
|
48
52
|
|
|
49
53
|
This skill is the symmetric counterpart to `lisa:intake`. It reuses the same queue-detection,
|
|
50
54
|
the same agent-team orchestration, the same "don't ask, just run" confirmation policy, and the
|
|
@@ -150,7 +154,8 @@ claim-and-advance). The essentials, inlined here so this skill is self-complete:
|
|
|
150
154
|
| Linear **workspace** URL, **team** URL/key, or literal `linear` | PRD (Linear) | source=linear | `in_review`, `blocked`, terminal/open PRDs, all-terminal generated-work rollups |
|
|
151
155
|
| GitHub **repo** URL / `org/repo` (PRD namespace) | PRD (GitHub) | source=github | `in_review`, `blocked`, terminal/open PRDs, all-terminal generated-work rollups |
|
|
152
156
|
| GitHub **repo** URL / `org/repo` with `tracker = github` (build namespace) | Build (GitHub) | tracker=github | `claimed`, `blocked`, terminal/open issues, parent rollups (intermediate-env + all-terminal), stale-`ready` containers |
|
|
153
|
-
|
|
|
157
|
+
| GitHub **repo** URL / `org/repo` with an open issue missing configured lifecycle labels | GitHub label normalization | per classified lifecycle | add configured `prd.ready` or build `ready` |
|
|
158
|
+
| Literal `github` | GitHub; route by `intake_mode` (`prd` / `build` / `both`) | per lifecycle | per lifecycle above, plus GitHub ready-label normalization |
|
|
154
159
|
| JIRA project key or full JQL | Build (JIRA) | tracker=jira | `claimed`, `blocked`, terminal/closure verification, parent rollups (intermediate-env + all-terminal), stale-`ready` containers |
|
|
155
160
|
|
|
156
161
|
Disambiguation (same as `lisa:intake`): a `notion.so`/`notion.site` URL → Notion; an Atlassian
|
|
@@ -545,6 +550,45 @@ work is fully terminal:
|
|
|
545
550
|
5. If generated work is missing, ambiguous, or partially incomplete, leave the PRD open and report
|
|
546
551
|
the incomplete child set. Never close a PRD on partial completion.
|
|
547
552
|
|
|
553
|
+
### GitHub missing official ready-label normalization → configured ready
|
|
554
|
+
|
|
555
|
+
For GitHub queues, enumerate open issues that have **no configured Lisa lifecycle label** in the
|
|
556
|
+
active lifecycle namespace(s). This is the repair path for issues created by older tools or humans
|
|
557
|
+
with labels like `build-ready`, or with no Lisa status label at all, that are invisible to
|
|
558
|
+
`lisa:intake`, whose scanner only reads the configured `ready` labels.
|
|
559
|
+
|
|
560
|
+
1. Resolve configured lifecycle labels from `.lisa.config.json` / `.lisa.config.local.json`:
|
|
561
|
+
- PRD lifecycle labels: `draft`, `ready`, `in_review`, `blocked`, `ticketed`, `shipped`,
|
|
562
|
+
`verified` when configured.
|
|
563
|
+
- Build lifecycle labels: `ready`, `claimed`, `blocked`, every env-resolved `done` value,
|
|
564
|
+
intermediate status labels where configured, and `human_needed`.
|
|
565
|
+
2. Query open GitHub issues that are missing all configured lifecycle labels for the lifecycle(s)
|
|
566
|
+
selected by `intake_mode`. If `intake_mode=prd`, only PRD-classified issues are normalized. If
|
|
567
|
+
`intake_mode=build`, every non-PRD issue is normalized as a build ticket. If `intake_mode=both`,
|
|
568
|
+
classify PRDs first and normalize all remaining issues as build tickets.
|
|
569
|
+
3. Classify the issue:
|
|
570
|
+
- **PRD** if it has PRD labels/markers (`prd`, `type:PRD`, `kind:prd`), PRD structure
|
|
571
|
+
(`## Problem`, `## Goals`, `## Validation Journey`, generated-work/backlink sections), or
|
|
572
|
+
body/comment text that explicitly says `prd-ready`.
|
|
573
|
+
- **Build ticket** if it has build work labels/types (`bug`, `type:Bug`, `task`, `type:Task`,
|
|
574
|
+
`sub-task`, `type:Sub-task`, `improvement`, `type:Improvement`, `story`, `spike`) or
|
|
575
|
+
body/comment text that explicitly says `build-ready`. When PRD signals are absent and the
|
|
576
|
+
selected lifecycle includes build, default to **Build ticket** even if no build type label is
|
|
577
|
+
present; build-intake/implement will validate the item and move it to `blocked` if required
|
|
578
|
+
sections are missing.
|
|
579
|
+
- **Ambiguous PRD/build** if strong PRD and build classifications both match. In `intake_mode=prd`
|
|
580
|
+
normalize as PRD; in `intake_mode=build` normalize as build; in `intake_mode=both`, prefer PRD
|
|
581
|
+
only when the body has PRD structure, otherwise build.
|
|
582
|
+
4. Apply exactly one configured ready label for the classified lifecycle:
|
|
583
|
+
- PRD → add the configured PRD `ready` label (default `prd-ready`).
|
|
584
|
+
- Build ticket → add the configured build `ready` label (default `status:ready`).
|
|
585
|
+
Keep any unofficial labels for auditability unless the project has explicitly configured one as a
|
|
586
|
+
conflicting lifecycle label. Do not claim the item or dispatch an agent in the same repair cycle;
|
|
587
|
+
normalization makes the next normal `lisa:intake` run pick it up.
|
|
588
|
+
5. Post one idempotent `[lisa-repair-intake]` note naming the classification and the configured label
|
|
589
|
+
applied. Include the normalization result in the loop-prevention fingerprint so repeated repair
|
|
590
|
+
cycles do not spam comments.
|
|
591
|
+
|
|
548
592
|
## Blocker classification & clearing (conservative, vendor-specific extraction)
|
|
549
593
|
|
|
550
594
|
A `blocked` build item is held by one or more of three blocker classes. Identify which are present
|
|
@@ -664,6 +708,9 @@ It MAY:
|
|
|
664
708
|
applies only to containers, never to leaves.
|
|
665
709
|
- Move a PRD with fully terminal generated work to `shipped` and close/archive the source artifact
|
|
666
710
|
where the source vendor supports native close-out, per `prd-lifecycle-rollup`.
|
|
711
|
+
- Normalize a GitHub issue with no configured lifecycle label by adding the configured PRD or build
|
|
712
|
+
`ready` label after classifying the issue. This is a visibility repair, not a claim; the item
|
|
713
|
+
remains open and unclaimed for normal intake.
|
|
667
714
|
|
|
668
715
|
It MUST NOT:
|
|
669
716
|
|
|
@@ -673,15 +720,17 @@ It MUST NOT:
|
|
|
673
720
|
- Touch `ready` **leaves** (that is `lisa:intake`'s lane). A container carrying `ready` is the
|
|
674
721
|
documented exception above — repair-intake reconciles it because `ready` on a parent is an
|
|
675
722
|
invariant violation, not the human "claim this leaf" signal intake owns.
|
|
723
|
+
- Move a GitHub issue that already carries a configured lifecycle label back to `ready` merely
|
|
724
|
+
because some other label looks stale. Official lifecycle labels remain authoritative.
|
|
676
725
|
|
|
677
726
|
## Cycle behavior
|
|
678
727
|
|
|
679
728
|
1. **Resolve the queue** — detect vendor/lifecycle (Source dispatch); resolve stuck role names
|
|
680
729
|
from config. For JIRA, confirm the needed transitions are reachable; stop on misconfig.
|
|
681
730
|
2. **Enumerate repair candidates** — query in-progress role(s), `blocked` role(s), terminal/open
|
|
682
|
-
items, rollup parents/PRDs with child work,
|
|
683
|
-
leaf-only-invariant violation to reconcile),
|
|
684
|
-
`max_candidates`, via the Access layer reads.
|
|
731
|
+
items, rollup parents/PRDs with child work, **containers carrying the `ready` role** (a
|
|
732
|
+
leaf-only-invariant violation to reconcile), and GitHub issues with no configured lifecycle label,
|
|
733
|
+
for the detected lifecycle(s), up to `max_candidates`, via the Access layer reads.
|
|
685
734
|
3. **Order deterministically**, highest repair-confidence first:
|
|
686
735
|
1. terminal-labeled items that only need native close / complete / resolve,
|
|
687
736
|
2. rollup parents/PRDs whose child sets are all terminal (close-out),
|
|
@@ -692,7 +741,8 @@ It MUST NOT:
|
|
|
692
741
|
5. `blocked` items whose **validation / quality-gate self-block now re-validates PASS** —
|
|
693
742
|
a human filled in the missing sections (Class B; equally safe and high-value),
|
|
694
743
|
6. `blocked` items with **new clarifying answers**,
|
|
695
|
-
7.
|
|
744
|
+
7. GitHub missing-official-label normalization candidates,
|
|
745
|
+
8. **stalled** in-progress items, oldest activity first.
|
|
696
746
|
4. **Walk the ordered list**, evaluating each candidate (terminal close-out, rollup child tally,
|
|
697
747
|
staleness, dependency, answer checks), and repair **every** candidate that is actionable inside
|
|
698
748
|
the `max_candidates` cap. Continue after successful writes and after per-item errors.
|
|
@@ -723,6 +773,8 @@ Report outcomes in these buckets:
|
|
|
723
773
|
- `rolled_up` — parent/container/PRD rollups advanced to their derived state: an intermediate env
|
|
724
774
|
(e.g. all children at `On Stg` → parent `On Stg`), a fully-terminal close-out, or a stale-`ready`
|
|
725
775
|
container reconciled from its children.
|
|
776
|
+
- `normalized_ready` — GitHub issues missing official lifecycle labels that were classified and
|
|
777
|
+
given the configured PRD/build `ready` label so normal intake can claim them.
|
|
726
778
|
- `still_blocked` — examined and intentionally left `blocked`, with the active reason.
|
|
727
779
|
- `active` — skipped because current work is not stale (or within backoff).
|
|
728
780
|
- `errors` — items that failed evaluation, with the error.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: "Repair counterpart to /lisa:intake. Vendor-agnostic batch scanner that finds stuck or half-closed work — items left in `blocked`, stalled in an in-progress role (build `claimed`, PRD `in_review`), terminal-labeled items still natively open,
|
|
2
|
+
description: "Repair counterpart to /lisa:intake. Vendor-agnostic batch scanner that finds stuck or half-closed work — items left in `blocked`, stalled in an in-progress role (build `claimed`, PRD `in_review`), terminal-labeled items still natively open, rollups whose children are all terminal, and GitHub issues missing official Lisa lifecycle labels — across the same queues /lisa:intake serves (Notion / Confluence / Linear / GitHub PRDs; JIRA / GitHub / Linear build issues). Repairs every materially actionable candidate inside the `max_candidates` cap: resumes stalled in-progress work in place — but for a stalled build it first diagnoses the PR/deploy state and, if the PR cannot merge (conflict, rebase, failing checks, unaddressed CodeRabbit/changes-requested) or a deploy failed, files a build-ready fix ticket and moves the item to `blocked` (blocked by it) instead of re-dispatching — re-validates blocked PRDs, re-dispatches blocked build items whose blockers have cleared, performs terminal native closure, reconciles parent rollups to their derived state (including the intermediate-env case — e.g. all children at `On Stg` → parent `On Stg` — and a container wrongly stuck in `ready`), normalizes missing GitHub lifecycle labels to the configured PRD/build `ready` label, and closes out completed rollups. Cron-safe and bounded; default GitHub intake_mode is both and default max_candidates is 100."
|
|
3
3
|
argument-hint: "<Notion-PRD-database-URL | Confluence-space-URL | Confluence-parent-page-URL | Linear-workspace-URL | Linear-team-URL | GitHub-repo-URL | org/repo | JIRA-project-key | JQL-filter> [intake_mode=prd|build|both] [stale_after=2h] [max_candidates=100] [force=true]"
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
Use the /lisa:repair-intake skill to scan the queue for stuck or half-closed items and repair every materially actionable candidate inside `max_candidates` (default 100). For GitHub queues, default `intake_mode` to `both` when the caller omits it. $ARGUMENTS
|
|
6
|
+
Use the /lisa:repair-intake skill to scan the queue for stuck or half-closed items, normalize GitHub issues missing official Lisa lifecycle labels into the configured PRD/build `ready` lane, and repair every materially actionable candidate inside `max_candidates` (default 100). For GitHub queues, default `intake_mode` to `both` when the caller omits it. $ARGUMENTS
|
|
@@ -45,6 +45,10 @@ close-out** roles and moves work *unstuck* or *fully closed*:
|
|
|
45
45
|
the build-intake claim gate deliberately leaves for a human; repair-intake reconciles it by
|
|
46
46
|
rolling the parent up from its children (with an audit note), so a container never sits in `ready`
|
|
47
47
|
indefinitely.
|
|
48
|
+
- **Missing official ready-label drift** — a GitHub issue that is missing every configured Lisa
|
|
49
|
+
lifecycle label. repair-intake classifies it as a PRD or build ticket and adds the configured
|
|
50
|
+
`ready` label (`prd-ready` for a PRD, build `status:ready` for a ticket) so normal intake can see
|
|
51
|
+
it; if the later intake/implement gate finds the item incomplete, it moves the item to `blocked`.
|
|
48
52
|
|
|
49
53
|
This skill is the symmetric counterpart to `lisa:intake`. It reuses the same queue-detection,
|
|
50
54
|
the same agent-team orchestration, the same "don't ask, just run" confirmation policy, and the
|
|
@@ -150,7 +154,8 @@ claim-and-advance). The essentials, inlined here so this skill is self-complete:
|
|
|
150
154
|
| Linear **workspace** URL, **team** URL/key, or literal `linear` | PRD (Linear) | source=linear | `in_review`, `blocked`, terminal/open PRDs, all-terminal generated-work rollups |
|
|
151
155
|
| GitHub **repo** URL / `org/repo` (PRD namespace) | PRD (GitHub) | source=github | `in_review`, `blocked`, terminal/open PRDs, all-terminal generated-work rollups |
|
|
152
156
|
| GitHub **repo** URL / `org/repo` with `tracker = github` (build namespace) | Build (GitHub) | tracker=github | `claimed`, `blocked`, terminal/open issues, parent rollups (intermediate-env + all-terminal), stale-`ready` containers |
|
|
153
|
-
|
|
|
157
|
+
| GitHub **repo** URL / `org/repo` with an open issue missing configured lifecycle labels | GitHub label normalization | per classified lifecycle | add configured `prd.ready` or build `ready` |
|
|
158
|
+
| Literal `github` | GitHub; route by `intake_mode` (`prd` / `build` / `both`) | per lifecycle | per lifecycle above, plus GitHub ready-label normalization |
|
|
154
159
|
| JIRA project key or full JQL | Build (JIRA) | tracker=jira | `claimed`, `blocked`, terminal/closure verification, parent rollups (intermediate-env + all-terminal), stale-`ready` containers |
|
|
155
160
|
|
|
156
161
|
Disambiguation (same as `lisa:intake`): a `notion.so`/`notion.site` URL → Notion; an Atlassian
|
|
@@ -545,6 +550,45 @@ work is fully terminal:
|
|
|
545
550
|
5. If generated work is missing, ambiguous, or partially incomplete, leave the PRD open and report
|
|
546
551
|
the incomplete child set. Never close a PRD on partial completion.
|
|
547
552
|
|
|
553
|
+
### GitHub missing official ready-label normalization → configured ready
|
|
554
|
+
|
|
555
|
+
For GitHub queues, enumerate open issues that have **no configured Lisa lifecycle label** in the
|
|
556
|
+
active lifecycle namespace(s). This is the repair path for issues created by older tools or humans
|
|
557
|
+
with labels like `build-ready`, or with no Lisa status label at all, that are invisible to
|
|
558
|
+
`lisa:intake`, whose scanner only reads the configured `ready` labels.
|
|
559
|
+
|
|
560
|
+
1. Resolve configured lifecycle labels from `.lisa.config.json` / `.lisa.config.local.json`:
|
|
561
|
+
- PRD lifecycle labels: `draft`, `ready`, `in_review`, `blocked`, `ticketed`, `shipped`,
|
|
562
|
+
`verified` when configured.
|
|
563
|
+
- Build lifecycle labels: `ready`, `claimed`, `blocked`, every env-resolved `done` value,
|
|
564
|
+
intermediate status labels where configured, and `human_needed`.
|
|
565
|
+
2. Query open GitHub issues that are missing all configured lifecycle labels for the lifecycle(s)
|
|
566
|
+
selected by `intake_mode`. If `intake_mode=prd`, only PRD-classified issues are normalized. If
|
|
567
|
+
`intake_mode=build`, every non-PRD issue is normalized as a build ticket. If `intake_mode=both`,
|
|
568
|
+
classify PRDs first and normalize all remaining issues as build tickets.
|
|
569
|
+
3. Classify the issue:
|
|
570
|
+
- **PRD** if it has PRD labels/markers (`prd`, `type:PRD`, `kind:prd`), PRD structure
|
|
571
|
+
(`## Problem`, `## Goals`, `## Validation Journey`, generated-work/backlink sections), or
|
|
572
|
+
body/comment text that explicitly says `prd-ready`.
|
|
573
|
+
- **Build ticket** if it has build work labels/types (`bug`, `type:Bug`, `task`, `type:Task`,
|
|
574
|
+
`sub-task`, `type:Sub-task`, `improvement`, `type:Improvement`, `story`, `spike`) or
|
|
575
|
+
body/comment text that explicitly says `build-ready`. When PRD signals are absent and the
|
|
576
|
+
selected lifecycle includes build, default to **Build ticket** even if no build type label is
|
|
577
|
+
present; build-intake/implement will validate the item and move it to `blocked` if required
|
|
578
|
+
sections are missing.
|
|
579
|
+
- **Ambiguous PRD/build** if strong PRD and build classifications both match. In `intake_mode=prd`
|
|
580
|
+
normalize as PRD; in `intake_mode=build` normalize as build; in `intake_mode=both`, prefer PRD
|
|
581
|
+
only when the body has PRD structure, otherwise build.
|
|
582
|
+
4. Apply exactly one configured ready label for the classified lifecycle:
|
|
583
|
+
- PRD → add the configured PRD `ready` label (default `prd-ready`).
|
|
584
|
+
- Build ticket → add the configured build `ready` label (default `status:ready`).
|
|
585
|
+
Keep any unofficial labels for auditability unless the project has explicitly configured one as a
|
|
586
|
+
conflicting lifecycle label. Do not claim the item or dispatch an agent in the same repair cycle;
|
|
587
|
+
normalization makes the next normal `lisa:intake` run pick it up.
|
|
588
|
+
5. Post one idempotent `[lisa-repair-intake]` note naming the classification and the configured label
|
|
589
|
+
applied. Include the normalization result in the loop-prevention fingerprint so repeated repair
|
|
590
|
+
cycles do not spam comments.
|
|
591
|
+
|
|
548
592
|
## Blocker classification & clearing (conservative, vendor-specific extraction)
|
|
549
593
|
|
|
550
594
|
A `blocked` build item is held by one or more of three blocker classes. Identify which are present
|
|
@@ -664,6 +708,9 @@ It MAY:
|
|
|
664
708
|
applies only to containers, never to leaves.
|
|
665
709
|
- Move a PRD with fully terminal generated work to `shipped` and close/archive the source artifact
|
|
666
710
|
where the source vendor supports native close-out, per `prd-lifecycle-rollup`.
|
|
711
|
+
- Normalize a GitHub issue with no configured lifecycle label by adding the configured PRD or build
|
|
712
|
+
`ready` label after classifying the issue. This is a visibility repair, not a claim; the item
|
|
713
|
+
remains open and unclaimed for normal intake.
|
|
667
714
|
|
|
668
715
|
It MUST NOT:
|
|
669
716
|
|
|
@@ -673,15 +720,17 @@ It MUST NOT:
|
|
|
673
720
|
- Touch `ready` **leaves** (that is `lisa:intake`'s lane). A container carrying `ready` is the
|
|
674
721
|
documented exception above — repair-intake reconciles it because `ready` on a parent is an
|
|
675
722
|
invariant violation, not the human "claim this leaf" signal intake owns.
|
|
723
|
+
- Move a GitHub issue that already carries a configured lifecycle label back to `ready` merely
|
|
724
|
+
because some other label looks stale. Official lifecycle labels remain authoritative.
|
|
676
725
|
|
|
677
726
|
## Cycle behavior
|
|
678
727
|
|
|
679
728
|
1. **Resolve the queue** — detect vendor/lifecycle (Source dispatch); resolve stuck role names
|
|
680
729
|
from config. For JIRA, confirm the needed transitions are reachable; stop on misconfig.
|
|
681
730
|
2. **Enumerate repair candidates** — query in-progress role(s), `blocked` role(s), terminal/open
|
|
682
|
-
items, rollup parents/PRDs with child work,
|
|
683
|
-
leaf-only-invariant violation to reconcile),
|
|
684
|
-
`max_candidates`, via the Access layer reads.
|
|
731
|
+
items, rollup parents/PRDs with child work, **containers carrying the `ready` role** (a
|
|
732
|
+
leaf-only-invariant violation to reconcile), and GitHub issues with no configured lifecycle label,
|
|
733
|
+
for the detected lifecycle(s), up to `max_candidates`, via the Access layer reads.
|
|
685
734
|
3. **Order deterministically**, highest repair-confidence first:
|
|
686
735
|
1. terminal-labeled items that only need native close / complete / resolve,
|
|
687
736
|
2. rollup parents/PRDs whose child sets are all terminal (close-out),
|
|
@@ -692,7 +741,8 @@ It MUST NOT:
|
|
|
692
741
|
5. `blocked` items whose **validation / quality-gate self-block now re-validates PASS** —
|
|
693
742
|
a human filled in the missing sections (Class B; equally safe and high-value),
|
|
694
743
|
6. `blocked` items with **new clarifying answers**,
|
|
695
|
-
7.
|
|
744
|
+
7. GitHub missing-official-label normalization candidates,
|
|
745
|
+
8. **stalled** in-progress items, oldest activity first.
|
|
696
746
|
4. **Walk the ordered list**, evaluating each candidate (terminal close-out, rollup child tally,
|
|
697
747
|
staleness, dependency, answer checks), and repair **every** candidate that is actionable inside
|
|
698
748
|
the `max_candidates` cap. Continue after successful writes and after per-item errors.
|
|
@@ -723,6 +773,8 @@ Report outcomes in these buckets:
|
|
|
723
773
|
- `rolled_up` — parent/container/PRD rollups advanced to their derived state: an intermediate env
|
|
724
774
|
(e.g. all children at `On Stg` → parent `On Stg`), a fully-terminal close-out, or a stale-`ready`
|
|
725
775
|
container reconciled from its children.
|
|
776
|
+
- `normalized_ready` — GitHub issues missing official lifecycle labels that were classified and
|
|
777
|
+
given the configured PRD/build `ready` label so normal intake can claim them.
|
|
726
778
|
- `still_blocked` — examined and intentionally left `blocked`, with the active reason.
|
|
727
779
|
- `active` — skipped because current work is not stale (or within backoff).
|
|
728
780
|
- `errors` — items that failed evaluation, with the error.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-openclaw",
|
|
3
|
-
"version": "2.142.
|
|
3
|
+
"version": "2.142.3",
|
|
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.142.
|
|
3
|
+
"version": "2.142.3",
|
|
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.142.
|
|
3
|
+
"version": "2.142.3",
|
|
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.142.
|
|
3
|
+
"version": "2.142.3",
|
|
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.142.
|
|
3
|
+
"version": "2.142.3",
|
|
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
|
-
description: "Repair counterpart to /lisa:intake. Vendor-agnostic batch scanner that finds stuck or half-closed work — items left in `blocked`, stalled in an in-progress role (build `claimed`, PRD `in_review`), terminal-labeled items still natively open,
|
|
2
|
+
description: "Repair counterpart to /lisa:intake. Vendor-agnostic batch scanner that finds stuck or half-closed work — items left in `blocked`, stalled in an in-progress role (build `claimed`, PRD `in_review`), terminal-labeled items still natively open, rollups whose children are all terminal, and GitHub issues missing official Lisa lifecycle labels — across the same queues /lisa:intake serves (Notion / Confluence / Linear / GitHub PRDs; JIRA / GitHub / Linear build issues). Repairs every materially actionable candidate inside the `max_candidates` cap: resumes stalled in-progress work in place — but for a stalled build it first diagnoses the PR/deploy state and, if the PR cannot merge (conflict, rebase, failing checks, unaddressed CodeRabbit/changes-requested) or a deploy failed, files a build-ready fix ticket and moves the item to `blocked` (blocked by it) instead of re-dispatching — re-validates blocked PRDs, re-dispatches blocked build items whose blockers have cleared, performs terminal native closure, reconciles parent rollups to their derived state (including the intermediate-env case — e.g. all children at `On Stg` → parent `On Stg` — and a container wrongly stuck in `ready`), normalizes missing GitHub lifecycle labels to the configured PRD/build `ready` label, and closes out completed rollups. Cron-safe and bounded; default GitHub intake_mode is both and default max_candidates is 100."
|
|
3
3
|
argument-hint: "<Notion-PRD-database-URL | Confluence-space-URL | Confluence-parent-page-URL | Linear-workspace-URL | Linear-team-URL | GitHub-repo-URL | org/repo | JIRA-project-key | JQL-filter> [intake_mode=prd|build|both] [stale_after=2h] [max_candidates=100] [force=true]"
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
Use the /lisa:repair-intake skill to scan the queue for stuck or half-closed items and repair every materially actionable candidate inside `max_candidates` (default 100). For GitHub queues, default `intake_mode` to `both` when the caller omits it. $ARGUMENTS
|
|
6
|
+
Use the /lisa:repair-intake skill to scan the queue for stuck or half-closed items, normalize GitHub issues missing official Lisa lifecycle labels into the configured PRD/build `ready` lane, and repair every materially actionable candidate inside `max_candidates` (default 100). For GitHub queues, default `intake_mode` to `both` when the caller omits it. $ARGUMENTS
|
|
@@ -45,6 +45,10 @@ close-out** roles and moves work *unstuck* or *fully closed*:
|
|
|
45
45
|
the build-intake claim gate deliberately leaves for a human; repair-intake reconciles it by
|
|
46
46
|
rolling the parent up from its children (with an audit note), so a container never sits in `ready`
|
|
47
47
|
indefinitely.
|
|
48
|
+
- **Missing official ready-label drift** — a GitHub issue that is missing every configured Lisa
|
|
49
|
+
lifecycle label. repair-intake classifies it as a PRD or build ticket and adds the configured
|
|
50
|
+
`ready` label (`prd-ready` for a PRD, build `status:ready` for a ticket) so normal intake can see
|
|
51
|
+
it; if the later intake/implement gate finds the item incomplete, it moves the item to `blocked`.
|
|
48
52
|
|
|
49
53
|
This skill is the symmetric counterpart to `lisa:intake`. It reuses the same queue-detection,
|
|
50
54
|
the same agent-team orchestration, the same "don't ask, just run" confirmation policy, and the
|
|
@@ -150,7 +154,8 @@ claim-and-advance). The essentials, inlined here so this skill is self-complete:
|
|
|
150
154
|
| Linear **workspace** URL, **team** URL/key, or literal `linear` | PRD (Linear) | source=linear | `in_review`, `blocked`, terminal/open PRDs, all-terminal generated-work rollups |
|
|
151
155
|
| GitHub **repo** URL / `org/repo` (PRD namespace) | PRD (GitHub) | source=github | `in_review`, `blocked`, terminal/open PRDs, all-terminal generated-work rollups |
|
|
152
156
|
| GitHub **repo** URL / `org/repo` with `tracker = github` (build namespace) | Build (GitHub) | tracker=github | `claimed`, `blocked`, terminal/open issues, parent rollups (intermediate-env + all-terminal), stale-`ready` containers |
|
|
153
|
-
|
|
|
157
|
+
| GitHub **repo** URL / `org/repo` with an open issue missing configured lifecycle labels | GitHub label normalization | per classified lifecycle | add configured `prd.ready` or build `ready` |
|
|
158
|
+
| Literal `github` | GitHub; route by `intake_mode` (`prd` / `build` / `both`) | per lifecycle | per lifecycle above, plus GitHub ready-label normalization |
|
|
154
159
|
| JIRA project key or full JQL | Build (JIRA) | tracker=jira | `claimed`, `blocked`, terminal/closure verification, parent rollups (intermediate-env + all-terminal), stale-`ready` containers |
|
|
155
160
|
|
|
156
161
|
Disambiguation (same as `lisa:intake`): a `notion.so`/`notion.site` URL → Notion; an Atlassian
|
|
@@ -545,6 +550,45 @@ work is fully terminal:
|
|
|
545
550
|
5. If generated work is missing, ambiguous, or partially incomplete, leave the PRD open and report
|
|
546
551
|
the incomplete child set. Never close a PRD on partial completion.
|
|
547
552
|
|
|
553
|
+
### GitHub missing official ready-label normalization → configured ready
|
|
554
|
+
|
|
555
|
+
For GitHub queues, enumerate open issues that have **no configured Lisa lifecycle label** in the
|
|
556
|
+
active lifecycle namespace(s). This is the repair path for issues created by older tools or humans
|
|
557
|
+
with labels like `build-ready`, or with no Lisa status label at all, that are invisible to
|
|
558
|
+
`lisa:intake`, whose scanner only reads the configured `ready` labels.
|
|
559
|
+
|
|
560
|
+
1. Resolve configured lifecycle labels from `.lisa.config.json` / `.lisa.config.local.json`:
|
|
561
|
+
- PRD lifecycle labels: `draft`, `ready`, `in_review`, `blocked`, `ticketed`, `shipped`,
|
|
562
|
+
`verified` when configured.
|
|
563
|
+
- Build lifecycle labels: `ready`, `claimed`, `blocked`, every env-resolved `done` value,
|
|
564
|
+
intermediate status labels where configured, and `human_needed`.
|
|
565
|
+
2. Query open GitHub issues that are missing all configured lifecycle labels for the lifecycle(s)
|
|
566
|
+
selected by `intake_mode`. If `intake_mode=prd`, only PRD-classified issues are normalized. If
|
|
567
|
+
`intake_mode=build`, every non-PRD issue is normalized as a build ticket. If `intake_mode=both`,
|
|
568
|
+
classify PRDs first and normalize all remaining issues as build tickets.
|
|
569
|
+
3. Classify the issue:
|
|
570
|
+
- **PRD** if it has PRD labels/markers (`prd`, `type:PRD`, `kind:prd`), PRD structure
|
|
571
|
+
(`## Problem`, `## Goals`, `## Validation Journey`, generated-work/backlink sections), or
|
|
572
|
+
body/comment text that explicitly says `prd-ready`.
|
|
573
|
+
- **Build ticket** if it has build work labels/types (`bug`, `type:Bug`, `task`, `type:Task`,
|
|
574
|
+
`sub-task`, `type:Sub-task`, `improvement`, `type:Improvement`, `story`, `spike`) or
|
|
575
|
+
body/comment text that explicitly says `build-ready`. When PRD signals are absent and the
|
|
576
|
+
selected lifecycle includes build, default to **Build ticket** even if no build type label is
|
|
577
|
+
present; build-intake/implement will validate the item and move it to `blocked` if required
|
|
578
|
+
sections are missing.
|
|
579
|
+
- **Ambiguous PRD/build** if strong PRD and build classifications both match. In `intake_mode=prd`
|
|
580
|
+
normalize as PRD; in `intake_mode=build` normalize as build; in `intake_mode=both`, prefer PRD
|
|
581
|
+
only when the body has PRD structure, otherwise build.
|
|
582
|
+
4. Apply exactly one configured ready label for the classified lifecycle:
|
|
583
|
+
- PRD → add the configured PRD `ready` label (default `prd-ready`).
|
|
584
|
+
- Build ticket → add the configured build `ready` label (default `status:ready`).
|
|
585
|
+
Keep any unofficial labels for auditability unless the project has explicitly configured one as a
|
|
586
|
+
conflicting lifecycle label. Do not claim the item or dispatch an agent in the same repair cycle;
|
|
587
|
+
normalization makes the next normal `lisa:intake` run pick it up.
|
|
588
|
+
5. Post one idempotent `[lisa-repair-intake]` note naming the classification and the configured label
|
|
589
|
+
applied. Include the normalization result in the loop-prevention fingerprint so repeated repair
|
|
590
|
+
cycles do not spam comments.
|
|
591
|
+
|
|
548
592
|
## Blocker classification & clearing (conservative, vendor-specific extraction)
|
|
549
593
|
|
|
550
594
|
A `blocked` build item is held by one or more of three blocker classes. Identify which are present
|
|
@@ -664,6 +708,9 @@ It MAY:
|
|
|
664
708
|
applies only to containers, never to leaves.
|
|
665
709
|
- Move a PRD with fully terminal generated work to `shipped` and close/archive the source artifact
|
|
666
710
|
where the source vendor supports native close-out, per `prd-lifecycle-rollup`.
|
|
711
|
+
- Normalize a GitHub issue with no configured lifecycle label by adding the configured PRD or build
|
|
712
|
+
`ready` label after classifying the issue. This is a visibility repair, not a claim; the item
|
|
713
|
+
remains open and unclaimed for normal intake.
|
|
667
714
|
|
|
668
715
|
It MUST NOT:
|
|
669
716
|
|
|
@@ -673,15 +720,17 @@ It MUST NOT:
|
|
|
673
720
|
- Touch `ready` **leaves** (that is `lisa:intake`'s lane). A container carrying `ready` is the
|
|
674
721
|
documented exception above — repair-intake reconciles it because `ready` on a parent is an
|
|
675
722
|
invariant violation, not the human "claim this leaf" signal intake owns.
|
|
723
|
+
- Move a GitHub issue that already carries a configured lifecycle label back to `ready` merely
|
|
724
|
+
because some other label looks stale. Official lifecycle labels remain authoritative.
|
|
676
725
|
|
|
677
726
|
## Cycle behavior
|
|
678
727
|
|
|
679
728
|
1. **Resolve the queue** — detect vendor/lifecycle (Source dispatch); resolve stuck role names
|
|
680
729
|
from config. For JIRA, confirm the needed transitions are reachable; stop on misconfig.
|
|
681
730
|
2. **Enumerate repair candidates** — query in-progress role(s), `blocked` role(s), terminal/open
|
|
682
|
-
items, rollup parents/PRDs with child work,
|
|
683
|
-
leaf-only-invariant violation to reconcile),
|
|
684
|
-
`max_candidates`, via the Access layer reads.
|
|
731
|
+
items, rollup parents/PRDs with child work, **containers carrying the `ready` role** (a
|
|
732
|
+
leaf-only-invariant violation to reconcile), and GitHub issues with no configured lifecycle label,
|
|
733
|
+
for the detected lifecycle(s), up to `max_candidates`, via the Access layer reads.
|
|
685
734
|
3. **Order deterministically**, highest repair-confidence first:
|
|
686
735
|
1. terminal-labeled items that only need native close / complete / resolve,
|
|
687
736
|
2. rollup parents/PRDs whose child sets are all terminal (close-out),
|
|
@@ -692,7 +741,8 @@ It MUST NOT:
|
|
|
692
741
|
5. `blocked` items whose **validation / quality-gate self-block now re-validates PASS** —
|
|
693
742
|
a human filled in the missing sections (Class B; equally safe and high-value),
|
|
694
743
|
6. `blocked` items with **new clarifying answers**,
|
|
695
|
-
7.
|
|
744
|
+
7. GitHub missing-official-label normalization candidates,
|
|
745
|
+
8. **stalled** in-progress items, oldest activity first.
|
|
696
746
|
4. **Walk the ordered list**, evaluating each candidate (terminal close-out, rollup child tally,
|
|
697
747
|
staleness, dependency, answer checks), and repair **every** candidate that is actionable inside
|
|
698
748
|
the `max_candidates` cap. Continue after successful writes and after per-item errors.
|
|
@@ -723,6 +773,8 @@ Report outcomes in these buckets:
|
|
|
723
773
|
- `rolled_up` — parent/container/PRD rollups advanced to their derived state: an intermediate env
|
|
724
774
|
(e.g. all children at `On Stg` → parent `On Stg`), a fully-terminal close-out, or a stale-`ready`
|
|
725
775
|
container reconciled from its children.
|
|
776
|
+
- `normalized_ready` — GitHub issues missing official lifecycle labels that were classified and
|
|
777
|
+
given the configured PRD/build `ready` label so normal intake can claim them.
|
|
726
778
|
- `still_blocked` — examined and intentionally left `blocked`, with the active reason.
|
|
727
779
|
- `active` — skipped because current work is not stale (or within backoff).
|
|
728
780
|
- `errors` — items that failed evaluation, with the error.
|