@codyswann/lisa 2.147.5 → 2.147.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/package.json +1 -1
  2. package/plugins/lisa/.claude-plugin/plugin.json +1 -1
  3. package/plugins/lisa/.codex-plugin/plugin.json +1 -1
  4. package/plugins/lisa/skills/repair-intake/SKILL.md +37 -14
  5. package/plugins/lisa-agy/plugin.json +1 -1
  6. package/plugins/lisa-agy/skills/repair-intake/SKILL.md +37 -14
  7. package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
  8. package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
  9. package/plugins/lisa-cdk-agy/plugin.json +1 -1
  10. package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
  11. package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
  12. package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
  13. package/plugins/lisa-copilot/skills/repair-intake/SKILL.md +37 -14
  14. package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
  15. package/plugins/lisa-cursor/skills/repair-intake/SKILL.md +37 -14
  16. package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
  17. package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
  18. package/plugins/lisa-expo-agy/plugin.json +1 -1
  19. package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
  20. package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
  21. package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
  22. package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
  23. package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
  24. package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
  25. package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
  26. package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
  27. package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
  28. package/plugins/lisa-nestjs-agy/plugin.json +1 -1
  29. package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
  30. package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
  31. package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
  32. package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
  33. package/plugins/lisa-openclaw/skills/lisa-openclaw-connect-repo-topic/SKILL.md +13 -5
  34. package/plugins/lisa-openclaw/skills/lisa-openclaw-connect-repo-topic/references/repo-topic-config.md +6 -0
  35. package/plugins/lisa-openclaw/skills/lisa-openclaw-connect-staff/references/platform-routing.md +5 -0
  36. package/plugins/lisa-openclaw/skills/lisa-openclaw-setup/SKILL.md +3 -0
  37. package/plugins/lisa-openclaw-agy/plugin.json +1 -1
  38. package/plugins/lisa-openclaw-agy/skills/lisa-openclaw-connect-repo-topic/SKILL.md +13 -5
  39. package/plugins/lisa-openclaw-agy/skills/lisa-openclaw-connect-repo-topic/references/repo-topic-config.md +6 -0
  40. package/plugins/lisa-openclaw-agy/skills/lisa-openclaw-connect-staff/references/platform-routing.md +5 -0
  41. package/plugins/lisa-openclaw-agy/skills/lisa-openclaw-setup/SKILL.md +3 -0
  42. package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
  43. package/plugins/lisa-openclaw-copilot/skills/lisa-openclaw-connect-repo-topic/SKILL.md +13 -5
  44. package/plugins/lisa-openclaw-copilot/skills/lisa-openclaw-connect-repo-topic/references/repo-topic-config.md +6 -0
  45. package/plugins/lisa-openclaw-copilot/skills/lisa-openclaw-connect-staff/references/platform-routing.md +5 -0
  46. package/plugins/lisa-openclaw-copilot/skills/lisa-openclaw-setup/SKILL.md +3 -0
  47. package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
  48. package/plugins/lisa-openclaw-cursor/skills/lisa-openclaw-connect-repo-topic/SKILL.md +13 -5
  49. package/plugins/lisa-openclaw-cursor/skills/lisa-openclaw-connect-repo-topic/references/repo-topic-config.md +6 -0
  50. package/plugins/lisa-openclaw-cursor/skills/lisa-openclaw-connect-staff/references/platform-routing.md +5 -0
  51. package/plugins/lisa-openclaw-cursor/skills/lisa-openclaw-setup/SKILL.md +3 -0
  52. package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
  53. package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
  54. package/plugins/lisa-rails-agy/plugin.json +1 -1
  55. package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
  56. package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
  57. package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
  58. package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
  59. package/plugins/lisa-typescript-agy/plugin.json +1 -1
  60. package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
  61. package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
  62. package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
  63. package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
  64. package/plugins/lisa-wiki/scripts/ingest_slack_channel.py +2 -2
  65. package/plugins/lisa-wiki-agy/plugin.json +1 -1
  66. package/plugins/lisa-wiki-agy/scripts/ingest_slack_channel.py +2 -2
  67. package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
  68. package/plugins/lisa-wiki-copilot/scripts/ingest_slack_channel.py +2 -2
  69. package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
  70. package/plugins/lisa-wiki-cursor/scripts/ingest_slack_channel.py +2 -2
  71. package/plugins/src/base/skills/repair-intake/SKILL.md +37 -14
  72. package/plugins/src/openclaw/skills/lisa-openclaw-connect-repo-topic/SKILL.md +13 -5
  73. package/plugins/src/openclaw/skills/lisa-openclaw-connect-repo-topic/references/repo-topic-config.md +6 -0
  74. package/plugins/src/openclaw/skills/lisa-openclaw-connect-staff/references/platform-routing.md +5 -0
  75. package/plugins/src/openclaw/skills/lisa-openclaw-setup/SKILL.md +3 -0
  76. package/plugins/src/wiki/scripts/ingest_slack_channel.py +2 -2
package/package.json CHANGED
@@ -84,7 +84,7 @@
84
84
  "lodash": ">=4.18.1"
85
85
  },
86
86
  "name": "@codyswann/lisa",
87
- "version": "2.147.5",
87
+ "version": "2.147.7",
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
2
  "name": "lisa",
3
- "version": "2.147.5",
3
+ "version": "2.147.7",
4
4
  "description": "Universal governance — agents, skills, commands, hooks, and rules for all projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa",
3
- "version": "2.147.5",
3
+ "version": "2.147.7",
4
4
  "description": "Universal governance: agents, skills, commands, hooks, and rules for all projects.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -49,11 +49,15 @@ close-out** roles and moves work *unstuck* or *fully closed*:
49
49
  lifecycle label. repair-intake classifies it as a PRD or build ticket and adds the configured
50
50
  `ready` label (`prd-ready` for a PRD, build `status:ready` for a ticket) so normal intake can see
51
51
  it; if the later intake/implement gate finds the item incomplete, it moves the item to `blocked`.
52
- - **Missing PRD child link drift** — a GitHub PRD in `ticketed` (or another open non-product-owned
53
- PRD role) has a generated-work section/comment that names top-level generated work, but the PRD's
54
- native sub-issue list is missing one or more of those top-level children. repair-intake replays the
55
- `prd-backlink` native-linking contract and attaches the missing same-repo top-level children
56
- idempotently, so PRD rollup can rely on the native graph again.
52
+ - **Missing native child link drift** — a GitHub parent (a `ticketed`/other open non-product-owned
53
+ PRD, **or a build Epic/Story container**) whose children are discoverable from the generated-work
54
+ section/comment for a PRD, or from body parentage (`Parent: #<n>` / `Parent Epic: #<n>`) for a build
55
+ container resolved via the documented hierarchy fallback but whose native sub-issue list is missing
56
+ one or more of those children. This is the common shape when children were created by an external
57
+ generator (e.g. Codex) or an older write path that recorded parentage only in prose and never called
58
+ `addSubIssue`. repair-intake replays the `prd-backlink` / `github-write-issue` native-linking contract
59
+ and attaches the missing same-repo children idempotently, so rollup and the GitHub UI can rely on the
60
+ native graph again.
57
61
 
58
62
  This skill is the symmetric counterpart to `lisa:intake`. It reuses the same queue-detection,
59
63
  the same agent-team orchestration, the same "don't ask, just run" confirmation policy, and the
@@ -467,7 +471,21 @@ left in a status it should not carry, including a stale build-ready `ready`).
467
471
 
468
472
  1. Read the child set using the vendor-native hierarchy first (GitHub sub-issues, JIRA
469
473
  Epic/parent/sub-task hierarchy, Linear project/parent/sub-issues), with the same fallbacks the
470
- vendor read/sync skills document.
474
+ vendor read/sync skills document. **Record which children were resolved natively vs. only via the
475
+ prose/body-parentage fallback** — the gap between the two sets is repairable native-link drift.
476
+ 1a. **Heal native child links before rolling up (GitHub).** Whenever the resolved child set
477
+ contains same-repo children that are *not* in the parent's native `subIssues` graph — the typical
478
+ case when the children carry `Parent: #<n>` / `Parent Epic: #<n>` in prose but were never attached
479
+ (external generators like Codex, or an older write path) — attach each missing same-repo child as a
480
+ native sub-issue using the identical idempotent `addSubIssue` contract the "GitHub PRD missing child
481
+ links" path documents below: dedupe by `owner/repo#number`, treat "already linked" as success, keep
482
+ cross-repo/cross-vendor children documented-only with a warning, and on `subIssues`/`addSubIssue`
483
+ unavailability record a capability warning and continue. A build parent attaches the children
484
+ resolved by its hierarchy (its Stories/Sub-tasks), not only empty-parent-token top-level work — the
485
+ PRD top-level-only restriction is a PRD rule, not a build one. Record repaired refs in the rollup
486
+ state fingerprint so repeated cycles do not re-post. Do this even when step 2 derives `unchanged`:
487
+ the native graph is what the GitHub UI rollup and progress bar depend on, independently of the
488
+ parent's status.
471
489
  2. **Compute the derived parent state** bottom-up per the `leaf-only-lifecycle` **Parent status
472
490
  rollup** state machine, evaluated over the env ladder `in-progress < dev < staging <
473
491
  production` (the ordered keys of the env-keyed `done` map): any required child blocked →
@@ -754,9 +772,11 @@ It MAY:
754
772
  applies only to containers, never to leaves.
755
773
  - Move a PRD with fully terminal generated work to `shipped` and close/archive the source artifact
756
774
  where the source vendor supports native close-out, per `prd-lifecycle-rollup`.
757
- - Repair missing native GitHub PRD child links from the generated-work fallback by replaying the
758
- `prd-backlink` top-level-only, same-repo, idempotent `addSubIssue` contract. This repairs
759
- structure only; it does not ship or verify the PRD.
775
+ - Repair missing native GitHub child links by replaying the same-repo, idempotent `addSubIssue`
776
+ contract — for a **PRD** from the generated-work fallback (top-level-only), and for a **build
777
+ Epic/Story container** from its hierarchy/body-parentage children so rollup and the GitHub UI can
778
+ rely on the native graph. This repairs structure only; it does not ship, transition, or verify the
779
+ parent.
760
780
  - Normalize a GitHub issue with no configured lifecycle label by adding the configured PRD or build
761
781
  `ready` label after classifying the issue. This is a visibility repair, not a claim; the item
762
782
  remains open and unclaimed for normal intake.
@@ -779,13 +799,16 @@ It MUST NOT:
779
799
  1. **Resolve the queue** — detect vendor/lifecycle (Source dispatch); resolve stuck role names
780
800
  from config. For JIRA, confirm the needed transitions are reachable; stop on misconfig.
781
801
  2. **Enumerate repair candidates** — query in-progress role(s), `blocked` role(s), terminal/open
782
- items, GitHub PRDs whose generated-work fallback names top-level children missing from native
783
- sub-issues, rollup parents/PRDs with child work, **containers carrying the `ready` role** (a
802
+ items, GitHub parents (PRDs **and build Epic/Story containers**) whose discoverable children
803
+ generated-work fallback for a PRD, hierarchy/body-parentage for a build container are missing from
804
+ their native sub-issue graph, rollup parents/PRDs with child work, **containers carrying the `ready`
805
+ role** (a
784
806
  leaf-only-invariant violation to reconcile), and GitHub issues with no configured lifecycle label,
785
807
  for the detected lifecycle(s), up to `max_candidates`, via the Access layer reads.
786
808
  3. **Order deterministically**, highest repair-confidence first:
787
809
  1. terminal-labeled items that only need native close / complete / resolve,
788
- 2. GitHub PRDs missing native links for generated top-level work (structure-only repair),
810
+ 2. GitHub parents (PRDs missing native links for generated top-level work, or build Epic/Story
811
+ containers missing native links for prose/hierarchy children) needing structure-only repair,
789
812
  3. rollup parents/PRDs whose child sets are all terminal (close-out),
790
813
  4. rollup parents whose children have advanced to an intermediate env, or stale-`ready`
791
814
  containers, that need their derived state applied (status-only reconciliation, no native
@@ -826,8 +849,8 @@ Report outcomes in these buckets:
826
849
  - `rolled_up` — parent/container/PRD rollups advanced to their derived state: an intermediate env
827
850
  (e.g. all children at `On Stg` → parent `On Stg`), a fully-terminal close-out, or a stale-`ready`
828
851
  container reconciled from its children.
829
- - `relinked` — GitHub PRDs whose missing native sub-issue links were repaired from the
830
- generated-work fallback.
852
+ - `relinked` — GitHub parents (PRDs from the generated-work fallback, or build Epic/Story containers
853
+ from hierarchy/body-parentage) whose missing native sub-issue links were attached.
831
854
  - `normalized_ready` — GitHub issues missing official lifecycle labels that were classified and
832
855
  given the configured PRD/build `ready` label so normal intake can claim them.
833
856
  - `still_blocked` — examined and intentionally left `blocked`, with the active reason.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa",
3
- "version": "2.147.5",
3
+ "version": "2.147.7",
4
4
  "description": "Universal governance — agents, skills, commands, hooks, and rules for all projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -49,11 +49,15 @@ close-out** roles and moves work *unstuck* or *fully closed*:
49
49
  lifecycle label. repair-intake classifies it as a PRD or build ticket and adds the configured
50
50
  `ready` label (`prd-ready` for a PRD, build `status:ready` for a ticket) so normal intake can see
51
51
  it; if the later intake/implement gate finds the item incomplete, it moves the item to `blocked`.
52
- - **Missing PRD child link drift** — a GitHub PRD in `ticketed` (or another open non-product-owned
53
- PRD role) has a generated-work section/comment that names top-level generated work, but the PRD's
54
- native sub-issue list is missing one or more of those top-level children. repair-intake replays the
55
- `prd-backlink` native-linking contract and attaches the missing same-repo top-level children
56
- idempotently, so PRD rollup can rely on the native graph again.
52
+ - **Missing native child link drift** — a GitHub parent (a `ticketed`/other open non-product-owned
53
+ PRD, **or a build Epic/Story container**) whose children are discoverable from the generated-work
54
+ section/comment for a PRD, or from body parentage (`Parent: #<n>` / `Parent Epic: #<n>`) for a build
55
+ container resolved via the documented hierarchy fallback but whose native sub-issue list is missing
56
+ one or more of those children. This is the common shape when children were created by an external
57
+ generator (e.g. Codex) or an older write path that recorded parentage only in prose and never called
58
+ `addSubIssue`. repair-intake replays the `prd-backlink` / `github-write-issue` native-linking contract
59
+ and attaches the missing same-repo children idempotently, so rollup and the GitHub UI can rely on the
60
+ native graph again.
57
61
 
58
62
  This skill is the symmetric counterpart to `lisa:intake`. It reuses the same queue-detection,
59
63
  the same agent-team orchestration, the same "don't ask, just run" confirmation policy, and the
@@ -467,7 +471,21 @@ left in a status it should not carry, including a stale build-ready `ready`).
467
471
 
468
472
  1. Read the child set using the vendor-native hierarchy first (GitHub sub-issues, JIRA
469
473
  Epic/parent/sub-task hierarchy, Linear project/parent/sub-issues), with the same fallbacks the
470
- vendor read/sync skills document.
474
+ vendor read/sync skills document. **Record which children were resolved natively vs. only via the
475
+ prose/body-parentage fallback** — the gap between the two sets is repairable native-link drift.
476
+ 1a. **Heal native child links before rolling up (GitHub).** Whenever the resolved child set
477
+ contains same-repo children that are *not* in the parent's native `subIssues` graph — the typical
478
+ case when the children carry `Parent: #<n>` / `Parent Epic: #<n>` in prose but were never attached
479
+ (external generators like Codex, or an older write path) — attach each missing same-repo child as a
480
+ native sub-issue using the identical idempotent `addSubIssue` contract the "GitHub PRD missing child
481
+ links" path documents below: dedupe by `owner/repo#number`, treat "already linked" as success, keep
482
+ cross-repo/cross-vendor children documented-only with a warning, and on `subIssues`/`addSubIssue`
483
+ unavailability record a capability warning and continue. A build parent attaches the children
484
+ resolved by its hierarchy (its Stories/Sub-tasks), not only empty-parent-token top-level work — the
485
+ PRD top-level-only restriction is a PRD rule, not a build one. Record repaired refs in the rollup
486
+ state fingerprint so repeated cycles do not re-post. Do this even when step 2 derives `unchanged`:
487
+ the native graph is what the GitHub UI rollup and progress bar depend on, independently of the
488
+ parent's status.
471
489
  2. **Compute the derived parent state** bottom-up per the `leaf-only-lifecycle` **Parent status
472
490
  rollup** state machine, evaluated over the env ladder `in-progress < dev < staging <
473
491
  production` (the ordered keys of the env-keyed `done` map): any required child blocked →
@@ -754,9 +772,11 @@ It MAY:
754
772
  applies only to containers, never to leaves.
755
773
  - Move a PRD with fully terminal generated work to `shipped` and close/archive the source artifact
756
774
  where the source vendor supports native close-out, per `prd-lifecycle-rollup`.
757
- - Repair missing native GitHub PRD child links from the generated-work fallback by replaying the
758
- `prd-backlink` top-level-only, same-repo, idempotent `addSubIssue` contract. This repairs
759
- structure only; it does not ship or verify the PRD.
775
+ - Repair missing native GitHub child links by replaying the same-repo, idempotent `addSubIssue`
776
+ contract — for a **PRD** from the generated-work fallback (top-level-only), and for a **build
777
+ Epic/Story container** from its hierarchy/body-parentage children so rollup and the GitHub UI can
778
+ rely on the native graph. This repairs structure only; it does not ship, transition, or verify the
779
+ parent.
760
780
  - Normalize a GitHub issue with no configured lifecycle label by adding the configured PRD or build
761
781
  `ready` label after classifying the issue. This is a visibility repair, not a claim; the item
762
782
  remains open and unclaimed for normal intake.
@@ -779,13 +799,16 @@ It MUST NOT:
779
799
  1. **Resolve the queue** — detect vendor/lifecycle (Source dispatch); resolve stuck role names
780
800
  from config. For JIRA, confirm the needed transitions are reachable; stop on misconfig.
781
801
  2. **Enumerate repair candidates** — query in-progress role(s), `blocked` role(s), terminal/open
782
- items, GitHub PRDs whose generated-work fallback names top-level children missing from native
783
- sub-issues, rollup parents/PRDs with child work, **containers carrying the `ready` role** (a
802
+ items, GitHub parents (PRDs **and build Epic/Story containers**) whose discoverable children
803
+ generated-work fallback for a PRD, hierarchy/body-parentage for a build container are missing from
804
+ their native sub-issue graph, rollup parents/PRDs with child work, **containers carrying the `ready`
805
+ role** (a
784
806
  leaf-only-invariant violation to reconcile), and GitHub issues with no configured lifecycle label,
785
807
  for the detected lifecycle(s), up to `max_candidates`, via the Access layer reads.
786
808
  3. **Order deterministically**, highest repair-confidence first:
787
809
  1. terminal-labeled items that only need native close / complete / resolve,
788
- 2. GitHub PRDs missing native links for generated top-level work (structure-only repair),
810
+ 2. GitHub parents (PRDs missing native links for generated top-level work, or build Epic/Story
811
+ containers missing native links for prose/hierarchy children) needing structure-only repair,
789
812
  3. rollup parents/PRDs whose child sets are all terminal (close-out),
790
813
  4. rollup parents whose children have advanced to an intermediate env, or stale-`ready`
791
814
  containers, that need their derived state applied (status-only reconciliation, no native
@@ -826,8 +849,8 @@ Report outcomes in these buckets:
826
849
  - `rolled_up` — parent/container/PRD rollups advanced to their derived state: an intermediate env
827
850
  (e.g. all children at `On Stg` → parent `On Stg`), a fully-terminal close-out, or a stale-`ready`
828
851
  container reconciled from its children.
829
- - `relinked` — GitHub PRDs whose missing native sub-issue links were repaired from the
830
- generated-work fallback.
852
+ - `relinked` — GitHub parents (PRDs from the generated-work fallback, or build Epic/Story containers
853
+ from hierarchy/body-parentage) whose missing native sub-issue links were attached.
831
854
  - `normalized_ready` — GitHub issues missing official lifecycle labels that were classified and
832
855
  given the configured PRD/build `ready` label so normal intake can claim them.
833
856
  - `still_blocked` — examined and intentionally left `blocked`, with the active reason.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-cdk",
3
- "version": "2.147.5",
3
+ "version": "2.147.7",
4
4
  "description": "AWS CDK-specific plugin",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-cdk",
3
- "version": "2.147.5",
3
+ "version": "2.147.7",
4
4
  "description": "AWS CDK-specific Lisa plugin.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-cdk",
3
- "version": "2.147.5",
3
+ "version": "2.147.7",
4
4
  "description": "AWS CDK-specific plugin",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-cdk",
3
- "version": "2.147.5",
3
+ "version": "2.147.7",
4
4
  "description": "AWS CDK-specific plugin",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-cdk",
3
- "version": "2.147.5",
3
+ "version": "2.147.7",
4
4
  "description": "AWS CDK-specific plugin",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa",
3
- "version": "2.147.5",
3
+ "version": "2.147.7",
4
4
  "description": "Universal governance — agents, skills, commands, hooks, and rules for all projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -49,11 +49,15 @@ close-out** roles and moves work *unstuck* or *fully closed*:
49
49
  lifecycle label. repair-intake classifies it as a PRD or build ticket and adds the configured
50
50
  `ready` label (`prd-ready` for a PRD, build `status:ready` for a ticket) so normal intake can see
51
51
  it; if the later intake/implement gate finds the item incomplete, it moves the item to `blocked`.
52
- - **Missing PRD child link drift** — a GitHub PRD in `ticketed` (or another open non-product-owned
53
- PRD role) has a generated-work section/comment that names top-level generated work, but the PRD's
54
- native sub-issue list is missing one or more of those top-level children. repair-intake replays the
55
- `prd-backlink` native-linking contract and attaches the missing same-repo top-level children
56
- idempotently, so PRD rollup can rely on the native graph again.
52
+ - **Missing native child link drift** — a GitHub parent (a `ticketed`/other open non-product-owned
53
+ PRD, **or a build Epic/Story container**) whose children are discoverable from the generated-work
54
+ section/comment for a PRD, or from body parentage (`Parent: #<n>` / `Parent Epic: #<n>`) for a build
55
+ container resolved via the documented hierarchy fallback but whose native sub-issue list is missing
56
+ one or more of those children. This is the common shape when children were created by an external
57
+ generator (e.g. Codex) or an older write path that recorded parentage only in prose and never called
58
+ `addSubIssue`. repair-intake replays the `prd-backlink` / `github-write-issue` native-linking contract
59
+ and attaches the missing same-repo children idempotently, so rollup and the GitHub UI can rely on the
60
+ native graph again.
57
61
 
58
62
  This skill is the symmetric counterpart to `lisa:intake`. It reuses the same queue-detection,
59
63
  the same agent-team orchestration, the same "don't ask, just run" confirmation policy, and the
@@ -467,7 +471,21 @@ left in a status it should not carry, including a stale build-ready `ready`).
467
471
 
468
472
  1. Read the child set using the vendor-native hierarchy first (GitHub sub-issues, JIRA
469
473
  Epic/parent/sub-task hierarchy, Linear project/parent/sub-issues), with the same fallbacks the
470
- vendor read/sync skills document.
474
+ vendor read/sync skills document. **Record which children were resolved natively vs. only via the
475
+ prose/body-parentage fallback** — the gap between the two sets is repairable native-link drift.
476
+ 1a. **Heal native child links before rolling up (GitHub).** Whenever the resolved child set
477
+ contains same-repo children that are *not* in the parent's native `subIssues` graph — the typical
478
+ case when the children carry `Parent: #<n>` / `Parent Epic: #<n>` in prose but were never attached
479
+ (external generators like Codex, or an older write path) — attach each missing same-repo child as a
480
+ native sub-issue using the identical idempotent `addSubIssue` contract the "GitHub PRD missing child
481
+ links" path documents below: dedupe by `owner/repo#number`, treat "already linked" as success, keep
482
+ cross-repo/cross-vendor children documented-only with a warning, and on `subIssues`/`addSubIssue`
483
+ unavailability record a capability warning and continue. A build parent attaches the children
484
+ resolved by its hierarchy (its Stories/Sub-tasks), not only empty-parent-token top-level work — the
485
+ PRD top-level-only restriction is a PRD rule, not a build one. Record repaired refs in the rollup
486
+ state fingerprint so repeated cycles do not re-post. Do this even when step 2 derives `unchanged`:
487
+ the native graph is what the GitHub UI rollup and progress bar depend on, independently of the
488
+ parent's status.
471
489
  2. **Compute the derived parent state** bottom-up per the `leaf-only-lifecycle` **Parent status
472
490
  rollup** state machine, evaluated over the env ladder `in-progress < dev < staging <
473
491
  production` (the ordered keys of the env-keyed `done` map): any required child blocked →
@@ -754,9 +772,11 @@ It MAY:
754
772
  applies only to containers, never to leaves.
755
773
  - Move a PRD with fully terminal generated work to `shipped` and close/archive the source artifact
756
774
  where the source vendor supports native close-out, per `prd-lifecycle-rollup`.
757
- - Repair missing native GitHub PRD child links from the generated-work fallback by replaying the
758
- `prd-backlink` top-level-only, same-repo, idempotent `addSubIssue` contract. This repairs
759
- structure only; it does not ship or verify the PRD.
775
+ - Repair missing native GitHub child links by replaying the same-repo, idempotent `addSubIssue`
776
+ contract — for a **PRD** from the generated-work fallback (top-level-only), and for a **build
777
+ Epic/Story container** from its hierarchy/body-parentage children so rollup and the GitHub UI can
778
+ rely on the native graph. This repairs structure only; it does not ship, transition, or verify the
779
+ parent.
760
780
  - Normalize a GitHub issue with no configured lifecycle label by adding the configured PRD or build
761
781
  `ready` label after classifying the issue. This is a visibility repair, not a claim; the item
762
782
  remains open and unclaimed for normal intake.
@@ -779,13 +799,16 @@ It MUST NOT:
779
799
  1. **Resolve the queue** — detect vendor/lifecycle (Source dispatch); resolve stuck role names
780
800
  from config. For JIRA, confirm the needed transitions are reachable; stop on misconfig.
781
801
  2. **Enumerate repair candidates** — query in-progress role(s), `blocked` role(s), terminal/open
782
- items, GitHub PRDs whose generated-work fallback names top-level children missing from native
783
- sub-issues, rollup parents/PRDs with child work, **containers carrying the `ready` role** (a
802
+ items, GitHub parents (PRDs **and build Epic/Story containers**) whose discoverable children
803
+ generated-work fallback for a PRD, hierarchy/body-parentage for a build container are missing from
804
+ their native sub-issue graph, rollup parents/PRDs with child work, **containers carrying the `ready`
805
+ role** (a
784
806
  leaf-only-invariant violation to reconcile), and GitHub issues with no configured lifecycle label,
785
807
  for the detected lifecycle(s), up to `max_candidates`, via the Access layer reads.
786
808
  3. **Order deterministically**, highest repair-confidence first:
787
809
  1. terminal-labeled items that only need native close / complete / resolve,
788
- 2. GitHub PRDs missing native links for generated top-level work (structure-only repair),
810
+ 2. GitHub parents (PRDs missing native links for generated top-level work, or build Epic/Story
811
+ containers missing native links for prose/hierarchy children) needing structure-only repair,
789
812
  3. rollup parents/PRDs whose child sets are all terminal (close-out),
790
813
  4. rollup parents whose children have advanced to an intermediate env, or stale-`ready`
791
814
  containers, that need their derived state applied (status-only reconciliation, no native
@@ -826,8 +849,8 @@ Report outcomes in these buckets:
826
849
  - `rolled_up` — parent/container/PRD rollups advanced to their derived state: an intermediate env
827
850
  (e.g. all children at `On Stg` → parent `On Stg`), a fully-terminal close-out, or a stale-`ready`
828
851
  container reconciled from its children.
829
- - `relinked` — GitHub PRDs whose missing native sub-issue links were repaired from the
830
- generated-work fallback.
852
+ - `relinked` — GitHub parents (PRDs from the generated-work fallback, or build Epic/Story containers
853
+ from hierarchy/body-parentage) whose missing native sub-issue links were attached.
831
854
  - `normalized_ready` — GitHub issues missing official lifecycle labels that were classified and
832
855
  given the configured PRD/build `ready` label so normal intake can claim them.
833
856
  - `still_blocked` — examined and intentionally left `blocked`, with the active reason.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa",
3
- "version": "2.147.5",
3
+ "version": "2.147.7",
4
4
  "description": "Universal governance — agents, skills, commands, hooks, and rules for all projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -49,11 +49,15 @@ close-out** roles and moves work *unstuck* or *fully closed*:
49
49
  lifecycle label. repair-intake classifies it as a PRD or build ticket and adds the configured
50
50
  `ready` label (`prd-ready` for a PRD, build `status:ready` for a ticket) so normal intake can see
51
51
  it; if the later intake/implement gate finds the item incomplete, it moves the item to `blocked`.
52
- - **Missing PRD child link drift** — a GitHub PRD in `ticketed` (or another open non-product-owned
53
- PRD role) has a generated-work section/comment that names top-level generated work, but the PRD's
54
- native sub-issue list is missing one or more of those top-level children. repair-intake replays the
55
- `prd-backlink` native-linking contract and attaches the missing same-repo top-level children
56
- idempotently, so PRD rollup can rely on the native graph again.
52
+ - **Missing native child link drift** — a GitHub parent (a `ticketed`/other open non-product-owned
53
+ PRD, **or a build Epic/Story container**) whose children are discoverable from the generated-work
54
+ section/comment for a PRD, or from body parentage (`Parent: #<n>` / `Parent Epic: #<n>`) for a build
55
+ container resolved via the documented hierarchy fallback but whose native sub-issue list is missing
56
+ one or more of those children. This is the common shape when children were created by an external
57
+ generator (e.g. Codex) or an older write path that recorded parentage only in prose and never called
58
+ `addSubIssue`. repair-intake replays the `prd-backlink` / `github-write-issue` native-linking contract
59
+ and attaches the missing same-repo children idempotently, so rollup and the GitHub UI can rely on the
60
+ native graph again.
57
61
 
58
62
  This skill is the symmetric counterpart to `lisa:intake`. It reuses the same queue-detection,
59
63
  the same agent-team orchestration, the same "don't ask, just run" confirmation policy, and the
@@ -467,7 +471,21 @@ left in a status it should not carry, including a stale build-ready `ready`).
467
471
 
468
472
  1. Read the child set using the vendor-native hierarchy first (GitHub sub-issues, JIRA
469
473
  Epic/parent/sub-task hierarchy, Linear project/parent/sub-issues), with the same fallbacks the
470
- vendor read/sync skills document.
474
+ vendor read/sync skills document. **Record which children were resolved natively vs. only via the
475
+ prose/body-parentage fallback** — the gap between the two sets is repairable native-link drift.
476
+ 1a. **Heal native child links before rolling up (GitHub).** Whenever the resolved child set
477
+ contains same-repo children that are *not* in the parent's native `subIssues` graph — the typical
478
+ case when the children carry `Parent: #<n>` / `Parent Epic: #<n>` in prose but were never attached
479
+ (external generators like Codex, or an older write path) — attach each missing same-repo child as a
480
+ native sub-issue using the identical idempotent `addSubIssue` contract the "GitHub PRD missing child
481
+ links" path documents below: dedupe by `owner/repo#number`, treat "already linked" as success, keep
482
+ cross-repo/cross-vendor children documented-only with a warning, and on `subIssues`/`addSubIssue`
483
+ unavailability record a capability warning and continue. A build parent attaches the children
484
+ resolved by its hierarchy (its Stories/Sub-tasks), not only empty-parent-token top-level work — the
485
+ PRD top-level-only restriction is a PRD rule, not a build one. Record repaired refs in the rollup
486
+ state fingerprint so repeated cycles do not re-post. Do this even when step 2 derives `unchanged`:
487
+ the native graph is what the GitHub UI rollup and progress bar depend on, independently of the
488
+ parent's status.
471
489
  2. **Compute the derived parent state** bottom-up per the `leaf-only-lifecycle` **Parent status
472
490
  rollup** state machine, evaluated over the env ladder `in-progress < dev < staging <
473
491
  production` (the ordered keys of the env-keyed `done` map): any required child blocked →
@@ -754,9 +772,11 @@ It MAY:
754
772
  applies only to containers, never to leaves.
755
773
  - Move a PRD with fully terminal generated work to `shipped` and close/archive the source artifact
756
774
  where the source vendor supports native close-out, per `prd-lifecycle-rollup`.
757
- - Repair missing native GitHub PRD child links from the generated-work fallback by replaying the
758
- `prd-backlink` top-level-only, same-repo, idempotent `addSubIssue` contract. This repairs
759
- structure only; it does not ship or verify the PRD.
775
+ - Repair missing native GitHub child links by replaying the same-repo, idempotent `addSubIssue`
776
+ contract — for a **PRD** from the generated-work fallback (top-level-only), and for a **build
777
+ Epic/Story container** from its hierarchy/body-parentage children so rollup and the GitHub UI can
778
+ rely on the native graph. This repairs structure only; it does not ship, transition, or verify the
779
+ parent.
760
780
  - Normalize a GitHub issue with no configured lifecycle label by adding the configured PRD or build
761
781
  `ready` label after classifying the issue. This is a visibility repair, not a claim; the item
762
782
  remains open and unclaimed for normal intake.
@@ -779,13 +799,16 @@ It MUST NOT:
779
799
  1. **Resolve the queue** — detect vendor/lifecycle (Source dispatch); resolve stuck role names
780
800
  from config. For JIRA, confirm the needed transitions are reachable; stop on misconfig.
781
801
  2. **Enumerate repair candidates** — query in-progress role(s), `blocked` role(s), terminal/open
782
- items, GitHub PRDs whose generated-work fallback names top-level children missing from native
783
- sub-issues, rollup parents/PRDs with child work, **containers carrying the `ready` role** (a
802
+ items, GitHub parents (PRDs **and build Epic/Story containers**) whose discoverable children
803
+ generated-work fallback for a PRD, hierarchy/body-parentage for a build container are missing from
804
+ their native sub-issue graph, rollup parents/PRDs with child work, **containers carrying the `ready`
805
+ role** (a
784
806
  leaf-only-invariant violation to reconcile), and GitHub issues with no configured lifecycle label,
785
807
  for the detected lifecycle(s), up to `max_candidates`, via the Access layer reads.
786
808
  3. **Order deterministically**, highest repair-confidence first:
787
809
  1. terminal-labeled items that only need native close / complete / resolve,
788
- 2. GitHub PRDs missing native links for generated top-level work (structure-only repair),
810
+ 2. GitHub parents (PRDs missing native links for generated top-level work, or build Epic/Story
811
+ containers missing native links for prose/hierarchy children) needing structure-only repair,
789
812
  3. rollup parents/PRDs whose child sets are all terminal (close-out),
790
813
  4. rollup parents whose children have advanced to an intermediate env, or stale-`ready`
791
814
  containers, that need their derived state applied (status-only reconciliation, no native
@@ -826,8 +849,8 @@ Report outcomes in these buckets:
826
849
  - `rolled_up` — parent/container/PRD rollups advanced to their derived state: an intermediate env
827
850
  (e.g. all children at `On Stg` → parent `On Stg`), a fully-terminal close-out, or a stale-`ready`
828
851
  container reconciled from its children.
829
- - `relinked` — GitHub PRDs whose missing native sub-issue links were repaired from the
830
- generated-work fallback.
852
+ - `relinked` — GitHub parents (PRDs from the generated-work fallback, or build Epic/Story containers
853
+ from hierarchy/body-parentage) whose missing native sub-issue links were attached.
831
854
  - `normalized_ready` — GitHub issues missing official lifecycle labels that were classified and
832
855
  given the configured PRD/build `ready` label so normal intake can claim them.
833
856
  - `still_blocked` — examined and intentionally left `blocked`, with the active reason.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-expo",
3
- "version": "2.147.5",
3
+ "version": "2.147.7",
4
4
  "description": "Expo/React Native-specific skills, agents, rules, and MCP servers",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-expo",
3
- "version": "2.147.5",
3
+ "version": "2.147.7",
4
4
  "description": "Expo and React Native-specific skills, agents, rules, and MCP servers.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-expo",
3
- "version": "2.147.5",
3
+ "version": "2.147.7",
4
4
  "description": "Expo/React Native-specific skills, agents, rules, and MCP servers",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-expo",
3
- "version": "2.147.5",
3
+ "version": "2.147.7",
4
4
  "description": "Expo/React Native-specific skills, agents, rules, and MCP servers",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-expo",
3
- "version": "2.147.5",
3
+ "version": "2.147.7",
4
4
  "description": "Expo/React Native-specific skills, agents, rules, and MCP servers",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-harper-fabric",
3
- "version": "2.147.5",
3
+ "version": "2.147.7",
4
4
  "description": "Harper/Fabric-specific rules for TypeScript component apps",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-harper-fabric",
3
- "version": "2.147.5",
3
+ "version": "2.147.7",
4
4
  "description": "Harper/Fabric-specific Lisa rules for TypeScript component apps.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-harper-fabric",
3
- "version": "2.147.5",
3
+ "version": "2.147.7",
4
4
  "description": "Harper/Fabric-specific rules for TypeScript component apps",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-harper-fabric",
3
- "version": "2.147.5",
3
+ "version": "2.147.7",
4
4
  "description": "Harper/Fabric-specific rules for TypeScript component apps",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-harper-fabric",
3
- "version": "2.147.5",
3
+ "version": "2.147.7",
4
4
  "description": "Harper/Fabric-specific rules for TypeScript component apps",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-nestjs",
3
- "version": "2.147.5",
3
+ "version": "2.147.7",
4
4
  "description": "NestJS-specific skills (GraphQL, TypeORM) and hooks (migration write-protection)",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-nestjs",
3
- "version": "2.147.5",
3
+ "version": "2.147.7",
4
4
  "description": "NestJS-specific skills and migration write-protection hooks.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-nestjs",
3
- "version": "2.147.5",
3
+ "version": "2.147.7",
4
4
  "description": "NestJS-specific skills (GraphQL, TypeORM) and hooks (migration write-protection)",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-nestjs",
3
- "version": "2.147.5",
3
+ "version": "2.147.7",
4
4
  "description": "NestJS-specific skills (GraphQL, TypeORM) and hooks (migration write-protection)",
5
5
  "author": {
6
6
  "name": "Cody Swann"