@codyswann/lisa 2.287.1 → 2.288.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/core/upstream-evidence-manifest.js +2 -2
- package/package.json +1 -1
- package/plugins/lisa/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa/.codex-plugin/skills/lisa-drive-pr-to-merge/SKILL.md +21 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-linear-sync/SKILL.md +2 -2
- package/plugins/lisa/skills/lisa-drive-pr-to-merge/SKILL.md +21 -0
- package/plugins/lisa/skills/lisa-linear-sync/SKILL.md +2 -2
- package/plugins/lisa-agy/plugin.json +1 -1
- package/plugins/lisa-agy/skills/lisa-drive-pr-to-merge/SKILL.md +21 -0
- package/plugins/lisa-agy/skills/lisa-linear-sync/SKILL.md +2 -2
- package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk-agy/plugin.json +1 -1
- package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-copilot/skills/lisa-drive-pr-to-merge/SKILL.md +21 -0
- package/plugins/lisa-copilot/skills/lisa-linear-sync/SKILL.md +2 -2
- package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cursor/skills/lisa-drive-pr-to-merge/SKILL.md +21 -0
- package/plugins/lisa-cursor/skills/lisa-linear-sync/SKILL.md +2 -2
- package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-expo-agy/plugin.json +1 -1
- package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs-agy/plugin.json +1 -1
- package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw-agy/plugin.json +1 -1
- package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser-agy/plugin.json +1 -1
- package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-rails-agy/plugin.json +1 -1
- package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript-agy/plugin.json +1 -1
- package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki-agy/plugin.json +1 -1
- package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/src/base/skills/lisa-drive-pr-to-merge/SKILL.md +21 -0
- package/plugins/src/base/skills/lisa-linear-sync/SKILL.md +2 -2
|
@@ -402,7 +402,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
|
|
|
402
402
|
"plugins/src/base/skills/lisa-debrief-apply/SKILL.md": "90c5f01994bb0f8e71947e8a2f765ccf9a6aa3da47b8d7b8e2022150ef89c2b2",
|
|
403
403
|
"plugins/src/base/skills/lisa-debrief/SKILL.md": "47e4cda36b07994ff47ab15fb04a17dd6b0c310ad804f9cae9d69637edaaa72a",
|
|
404
404
|
"plugins/src/base/skills/lisa-doctor/SKILL.md": "1702485809533a2e546a590b9d2f67cbb420c8f0cb0eac8609b0287b05122ad3",
|
|
405
|
-
"plugins/src/base/skills/lisa-drive-pr-to-merge/SKILL.md": "
|
|
405
|
+
"plugins/src/base/skills/lisa-drive-pr-to-merge/SKILL.md": "cd692a3343f2306a3d5b96a1cb9662e3abdc557df24d733138b23fde2aa8bad9",
|
|
406
406
|
"plugins/src/base/skills/lisa-epic-triage/SKILL.md": "d02760411249bddbd396f283191fe3e82bb7b95bf9393a19a7025dc5a57c3ab7",
|
|
407
407
|
"plugins/src/base/skills/lisa-exploratory-qa/SKILL.md": "bc34dfc6418bff6eb5bc03f0c5cd98c7b6164ca3f4f80774d981f681321119b0",
|
|
408
408
|
"plugins/src/base/skills/lisa-fix-linter-error/SKILL.md": "3a8f01f014ac7f7ac37024c67df1ba07202331542d269d27da3356a7fa0a5599",
|
|
@@ -463,7 +463,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
|
|
|
463
463
|
"plugins/src/base/skills/lisa-linear-journey/SKILL.md": "855f714cf5dcc932688dce94757d2e0e4b57f35c753135141482521ed6e01f49",
|
|
464
464
|
"plugins/src/base/skills/lisa-linear-prd-intake/SKILL.md": "8a2d577e16b3762093fd2a217a544896676ef00b4fc9d72903ae03853134eb3b",
|
|
465
465
|
"plugins/src/base/skills/lisa-linear-read-issue/SKILL.md": "a6b8241648ba4b7b9f1196a37e9924ffaccc5461f3ac2ee8ae283c58559e9717",
|
|
466
|
-
"plugins/src/base/skills/lisa-linear-sync/SKILL.md": "
|
|
466
|
+
"plugins/src/base/skills/lisa-linear-sync/SKILL.md": "85fbf548b9d7972912fde717d1d6ca82c0350ad82f6d779d08c831b23b90ebd3",
|
|
467
467
|
"plugins/src/base/skills/lisa-linear-to-tracker/SKILL.md": "6a096c6818c6a6b3938ed3b52f6e9be8416de3b61b0b5e23fabf0ae32a9756d8",
|
|
468
468
|
"plugins/src/base/skills/lisa-linear-validate-issue/SKILL.md": "3853d6f1165ef7da055a059394d72fb1b4de6463064bec3012a2bd5b19228428",
|
|
469
469
|
"plugins/src/base/skills/lisa-linear-verify/SKILL.md": "d11a58bd7c2b773a973fe8f8ad19a2621f038327ee2d8afa3039bd72885f5e97",
|
package/package.json
CHANGED
|
@@ -113,7 +113,7 @@
|
|
|
113
113
|
"brace-expansion": ">=5.0.6"
|
|
114
114
|
},
|
|
115
115
|
"name": "@codyswann/lisa",
|
|
116
|
-
"version": "2.
|
|
116
|
+
"version": "2.288.0",
|
|
117
117
|
"description": "Claude Code governance framework that applies guardrails, guidance, and automated enforcement to projects",
|
|
118
118
|
"main": "dist/index.js",
|
|
119
119
|
"exports": {
|
|
@@ -329,6 +329,27 @@ a workflow is an action, so do **not** run `gh workflow run` / `workflow_dispatc
|
|
|
329
329
|
it for the caller to act on, consistent with the report-mode contract (steps b–f
|
|
330
330
|
of section 2 are diagnose-only).
|
|
331
331
|
|
|
332
|
+
### c. Linear native-state reconciliation (non-terminal merges only)
|
|
333
|
+
|
|
334
|
+
Linear's GitHub integration completes a linked Issue on merge to **any** branch
|
|
335
|
+
— branch-name linkage alone triggers it, even when the PR body carries only the
|
|
336
|
+
non-closing `Linear: <ID>` reference form (incident of record: TunnlAI backend
|
|
337
|
+
PR #207 merged to `dev`; TUN-256 auto-completed and had to be manually
|
|
338
|
+
reverted). Run this step **as soon as the PR reports `MERGED`**, before the
|
|
339
|
+
deploy-run verification above can terminate the flow — a `blocked:deploy`
|
|
340
|
+
outcome must never leave the merged Issue unreconciled. When the driven PR's
|
|
341
|
+
work item is a Linear Issue and `<baseRefName>` **successfully resolves** via
|
|
342
|
+
`.lisa.config.json` `deploy.branches` to an env below the production terminal,
|
|
343
|
+
re-read the Issue's native workflow `state`. If Linear moved it to a
|
|
344
|
+
`completed`-type state, revert it to the team's started/In Progress state and
|
|
345
|
+
post a one-line reconciliation comment — per the `leaf-only-lifecycle` rule
|
|
346
|
+
(native closure fires only at the production terminal). If the base branch
|
|
347
|
+
cannot be resolved (unmapped or ambiguous), do **not** mutate the native
|
|
348
|
+
`state` — post a reconciliation-suggestion comment and leave it untouched,
|
|
349
|
+
matching Phase 4b's safe default. The full procedure is `lisa-linear-sync`
|
|
350
|
+
Phase 4b; when the caller's flow already runs a `pr-merged` sync for this
|
|
351
|
+
merge, confirming that sync ran satisfies this step.
|
|
352
|
+
|
|
332
353
|
## 4. Terminal states
|
|
333
354
|
|
|
334
355
|
Loop until one of:
|
|
@@ -21,7 +21,7 @@ Callers (planning skills, lifecycle skills) invoke this skill at:
|
|
|
21
21
|
| Plan created | Plan contents (sections + ordered tasks) as a comment, suggest transition `Backlog → Todo` (label: `status:ready`) |
|
|
22
22
|
| Implementation in progress | Branch URL + first commit, suggest transition `Todo → In Progress` (label: `status:in-progress`) |
|
|
23
23
|
| PR ready for review | PR URL + summary, the implementation handoff comment, suggest transition `In Progress → In Review` (label: `status:code-review`) |
|
|
24
|
-
| PR merged | Merge SHA + deploy environment (if known), suggest transition `In Review → Done` (label: `status:done`) |
|
|
24
|
+
| PR merged | Merge SHA + deploy environment (if known), suggest transition `In Review → Done` (label: `status:done`), **then run Phase 4b — mandatory when the merge target is a non-terminal env branch** |
|
|
25
25
|
|
|
26
26
|
This skill **suggests** transitions but does not auto-transition the native Linear `state` field. It DOES update the `status:*` label set when the caller asks (the build queue is keyed off labels). Native state transitions remain a human / triage decision.
|
|
27
27
|
|
|
@@ -94,7 +94,7 @@ Without `--update-label`, this skill posts the comment only and does NOT touch l
|
|
|
94
94
|
|
|
95
95
|
## Phase 4b — Reconcile Native Auto-Close (Linear-specific)
|
|
96
96
|
|
|
97
|
-
Linear's GitHub integration completes a linked Issue on merge to **any branch** — unlike GitHub's default-branch-scoped `Closes` auto-close — so a magic word (`Closes`/`Fixes`/`Resolves ENG-123`) or branch-name linkage can natively move the Issue to a Done/Completed workflow `state` at a **non-terminal** env merge, front-running the env-keyed `status:*` label ladder. `git-submit-pr` prevents the magic-word case; this phase is the required post-merge repair for the residual (branch-linkage) case we cannot suppress server-side.
|
|
97
|
+
Linear's GitHub integration completes a linked Issue on merge to **any branch** — unlike GitHub's default-branch-scoped `Closes` auto-close — so a magic word (`Closes`/`Fixes`/`Resolves ENG-123`) or branch-name linkage can natively move the Issue to a Done/Completed workflow `state` at a **non-terminal** env merge, front-running the env-keyed `status:*` label ladder. `git-submit-pr` prevents the magic-word case; this phase is the required post-merge repair for the residual (branch-linkage) case we cannot suppress server-side — branch linkage completes the Issue even when the PR body carries only the non-closing `Linear: <ID>` form. This phase is a **mandatory** numbered step of every `pr-merged` sync, not an optional backstop; run it whenever the resolved env is **intermediate** (below the production terminal `done`):
|
|
98
98
|
|
|
99
99
|
1. Resolve the merged PR's base branch to its env via `.lisa.config.json` `deploy.branches` (`config-resolution`). If it maps to the production/terminal `done`, this phase is a **no-op** — native completion is correct there.
|
|
100
100
|
2. **Uniform / single-environment no-op.** When the project's env-keyed `done` map is uniform — every environment resolves to the same `status:done`, as in this repo (`production: main` only) and TunnlAI/frontend — dev-merge == terminal, so native completion is correct. Do nothing. Only a **non-uniform** env→`done` map (distinct `status:on-dev`/`status:on-stg`/`status:done` rungs) can desync.
|
|
@@ -329,6 +329,27 @@ a workflow is an action, so do **not** run `gh workflow run` / `workflow_dispatc
|
|
|
329
329
|
it for the caller to act on, consistent with the report-mode contract (steps b–f
|
|
330
330
|
of section 2 are diagnose-only).
|
|
331
331
|
|
|
332
|
+
### c. Linear native-state reconciliation (non-terminal merges only)
|
|
333
|
+
|
|
334
|
+
Linear's GitHub integration completes a linked Issue on merge to **any** branch
|
|
335
|
+
— branch-name linkage alone triggers it, even when the PR body carries only the
|
|
336
|
+
non-closing `Linear: <ID>` reference form (incident of record: TunnlAI backend
|
|
337
|
+
PR #207 merged to `dev`; TUN-256 auto-completed and had to be manually
|
|
338
|
+
reverted). Run this step **as soon as the PR reports `MERGED`**, before the
|
|
339
|
+
deploy-run verification above can terminate the flow — a `blocked:deploy`
|
|
340
|
+
outcome must never leave the merged Issue unreconciled. When the driven PR's
|
|
341
|
+
work item is a Linear Issue and `<baseRefName>` **successfully resolves** via
|
|
342
|
+
`.lisa.config.json` `deploy.branches` to an env below the production terminal,
|
|
343
|
+
re-read the Issue's native workflow `state`. If Linear moved it to a
|
|
344
|
+
`completed`-type state, revert it to the team's started/In Progress state and
|
|
345
|
+
post a one-line reconciliation comment — per the `leaf-only-lifecycle` rule
|
|
346
|
+
(native closure fires only at the production terminal). If the base branch
|
|
347
|
+
cannot be resolved (unmapped or ambiguous), do **not** mutate the native
|
|
348
|
+
`state` — post a reconciliation-suggestion comment and leave it untouched,
|
|
349
|
+
matching Phase 4b's safe default. The full procedure is `lisa-linear-sync`
|
|
350
|
+
Phase 4b; when the caller's flow already runs a `pr-merged` sync for this
|
|
351
|
+
merge, confirming that sync ran satisfies this step.
|
|
352
|
+
|
|
332
353
|
## 4. Terminal states
|
|
333
354
|
|
|
334
355
|
Loop until one of:
|
|
@@ -21,7 +21,7 @@ Callers (planning skills, lifecycle skills) invoke this skill at:
|
|
|
21
21
|
| Plan created | Plan contents (sections + ordered tasks) as a comment, suggest transition `Backlog → Todo` (label: `status:ready`) |
|
|
22
22
|
| Implementation in progress | Branch URL + first commit, suggest transition `Todo → In Progress` (label: `status:in-progress`) |
|
|
23
23
|
| PR ready for review | PR URL + summary, the implementation handoff comment, suggest transition `In Progress → In Review` (label: `status:code-review`) |
|
|
24
|
-
| PR merged | Merge SHA + deploy environment (if known), suggest transition `In Review → Done` (label: `status:done`) |
|
|
24
|
+
| PR merged | Merge SHA + deploy environment (if known), suggest transition `In Review → Done` (label: `status:done`), **then run Phase 4b — mandatory when the merge target is a non-terminal env branch** |
|
|
25
25
|
|
|
26
26
|
This skill **suggests** transitions but does not auto-transition the native Linear `state` field. It DOES update the `status:*` label set when the caller asks (the build queue is keyed off labels). Native state transitions remain a human / triage decision.
|
|
27
27
|
|
|
@@ -94,7 +94,7 @@ Without `--update-label`, this skill posts the comment only and does NOT touch l
|
|
|
94
94
|
|
|
95
95
|
## Phase 4b — Reconcile Native Auto-Close (Linear-specific)
|
|
96
96
|
|
|
97
|
-
Linear's GitHub integration completes a linked Issue on merge to **any branch** — unlike GitHub's default-branch-scoped `Closes` auto-close — so a magic word (`Closes`/`Fixes`/`Resolves ENG-123`) or branch-name linkage can natively move the Issue to a Done/Completed workflow `state` at a **non-terminal** env merge, front-running the env-keyed `status:*` label ladder. `git-submit-pr` prevents the magic-word case; this phase is the required post-merge repair for the residual (branch-linkage) case we cannot suppress server-side.
|
|
97
|
+
Linear's GitHub integration completes a linked Issue on merge to **any branch** — unlike GitHub's default-branch-scoped `Closes` auto-close — so a magic word (`Closes`/`Fixes`/`Resolves ENG-123`) or branch-name linkage can natively move the Issue to a Done/Completed workflow `state` at a **non-terminal** env merge, front-running the env-keyed `status:*` label ladder. `git-submit-pr` prevents the magic-word case; this phase is the required post-merge repair for the residual (branch-linkage) case we cannot suppress server-side — branch linkage completes the Issue even when the PR body carries only the non-closing `Linear: <ID>` form. This phase is a **mandatory** numbered step of every `pr-merged` sync, not an optional backstop; run it whenever the resolved env is **intermediate** (below the production terminal `done`):
|
|
98
98
|
|
|
99
99
|
1. Resolve the merged PR's base branch to its env via `.lisa.config.json` `deploy.branches` (`config-resolution`). If it maps to the production/terminal `done`, this phase is a **no-op** — native completion is correct there.
|
|
100
100
|
2. **Uniform / single-environment no-op.** When the project's env-keyed `done` map is uniform — every environment resolves to the same `status:done`, as in this repo (`production: main` only) and TunnlAI/frontend — dev-merge == terminal, so native completion is correct. Do nothing. Only a **non-uniform** env→`done` map (distinct `status:on-dev`/`status:on-stg`/`status:done` rungs) can desync.
|
|
@@ -329,6 +329,27 @@ a workflow is an action, so do **not** run `gh workflow run` / `workflow_dispatc
|
|
|
329
329
|
it for the caller to act on, consistent with the report-mode contract (steps b–f
|
|
330
330
|
of section 2 are diagnose-only).
|
|
331
331
|
|
|
332
|
+
### c. Linear native-state reconciliation (non-terminal merges only)
|
|
333
|
+
|
|
334
|
+
Linear's GitHub integration completes a linked Issue on merge to **any** branch
|
|
335
|
+
— branch-name linkage alone triggers it, even when the PR body carries only the
|
|
336
|
+
non-closing `Linear: <ID>` reference form (incident of record: TunnlAI backend
|
|
337
|
+
PR #207 merged to `dev`; TUN-256 auto-completed and had to be manually
|
|
338
|
+
reverted). Run this step **as soon as the PR reports `MERGED`**, before the
|
|
339
|
+
deploy-run verification above can terminate the flow — a `blocked:deploy`
|
|
340
|
+
outcome must never leave the merged Issue unreconciled. When the driven PR's
|
|
341
|
+
work item is a Linear Issue and `<baseRefName>` **successfully resolves** via
|
|
342
|
+
`.lisa.config.json` `deploy.branches` to an env below the production terminal,
|
|
343
|
+
re-read the Issue's native workflow `state`. If Linear moved it to a
|
|
344
|
+
`completed`-type state, revert it to the team's started/In Progress state and
|
|
345
|
+
post a one-line reconciliation comment — per the `leaf-only-lifecycle` rule
|
|
346
|
+
(native closure fires only at the production terminal). If the base branch
|
|
347
|
+
cannot be resolved (unmapped or ambiguous), do **not** mutate the native
|
|
348
|
+
`state` — post a reconciliation-suggestion comment and leave it untouched,
|
|
349
|
+
matching Phase 4b's safe default. The full procedure is `lisa-linear-sync`
|
|
350
|
+
Phase 4b; when the caller's flow already runs a `pr-merged` sync for this
|
|
351
|
+
merge, confirming that sync ran satisfies this step.
|
|
352
|
+
|
|
332
353
|
## 4. Terminal states
|
|
333
354
|
|
|
334
355
|
Loop until one of:
|
|
@@ -21,7 +21,7 @@ Callers (planning skills, lifecycle skills) invoke this skill at:
|
|
|
21
21
|
| Plan created | Plan contents (sections + ordered tasks) as a comment, suggest transition `Backlog → Todo` (label: `status:ready`) |
|
|
22
22
|
| Implementation in progress | Branch URL + first commit, suggest transition `Todo → In Progress` (label: `status:in-progress`) |
|
|
23
23
|
| PR ready for review | PR URL + summary, the implementation handoff comment, suggest transition `In Progress → In Review` (label: `status:code-review`) |
|
|
24
|
-
| PR merged | Merge SHA + deploy environment (if known), suggest transition `In Review → Done` (label: `status:done`) |
|
|
24
|
+
| PR merged | Merge SHA + deploy environment (if known), suggest transition `In Review → Done` (label: `status:done`), **then run Phase 4b — mandatory when the merge target is a non-terminal env branch** |
|
|
25
25
|
|
|
26
26
|
This skill **suggests** transitions but does not auto-transition the native Linear `state` field. It DOES update the `status:*` label set when the caller asks (the build queue is keyed off labels). Native state transitions remain a human / triage decision.
|
|
27
27
|
|
|
@@ -94,7 +94,7 @@ Without `--update-label`, this skill posts the comment only and does NOT touch l
|
|
|
94
94
|
|
|
95
95
|
## Phase 4b — Reconcile Native Auto-Close (Linear-specific)
|
|
96
96
|
|
|
97
|
-
Linear's GitHub integration completes a linked Issue on merge to **any branch** — unlike GitHub's default-branch-scoped `Closes` auto-close — so a magic word (`Closes`/`Fixes`/`Resolves ENG-123`) or branch-name linkage can natively move the Issue to a Done/Completed workflow `state` at a **non-terminal** env merge, front-running the env-keyed `status:*` label ladder. `git-submit-pr` prevents the magic-word case; this phase is the required post-merge repair for the residual (branch-linkage) case we cannot suppress server-side.
|
|
97
|
+
Linear's GitHub integration completes a linked Issue on merge to **any branch** — unlike GitHub's default-branch-scoped `Closes` auto-close — so a magic word (`Closes`/`Fixes`/`Resolves ENG-123`) or branch-name linkage can natively move the Issue to a Done/Completed workflow `state` at a **non-terminal** env merge, front-running the env-keyed `status:*` label ladder. `git-submit-pr` prevents the magic-word case; this phase is the required post-merge repair for the residual (branch-linkage) case we cannot suppress server-side — branch linkage completes the Issue even when the PR body carries only the non-closing `Linear: <ID>` form. This phase is a **mandatory** numbered step of every `pr-merged` sync, not an optional backstop; run it whenever the resolved env is **intermediate** (below the production terminal `done`):
|
|
98
98
|
|
|
99
99
|
1. Resolve the merged PR's base branch to its env via `.lisa.config.json` `deploy.branches` (`config-resolution`). If it maps to the production/terminal `done`, this phase is a **no-op** — native completion is correct there.
|
|
100
100
|
2. **Uniform / single-environment no-op.** When the project's env-keyed `done` map is uniform — every environment resolves to the same `status:done`, as in this repo (`production: main` only) and TunnlAI/frontend — dev-merge == terminal, so native completion is correct. Do nothing. Only a **non-uniform** env→`done` map (distinct `status:on-dev`/`status:on-stg`/`status:done` rungs) can desync.
|
|
@@ -329,6 +329,27 @@ a workflow is an action, so do **not** run `gh workflow run` / `workflow_dispatc
|
|
|
329
329
|
it for the caller to act on, consistent with the report-mode contract (steps b–f
|
|
330
330
|
of section 2 are diagnose-only).
|
|
331
331
|
|
|
332
|
+
### c. Linear native-state reconciliation (non-terminal merges only)
|
|
333
|
+
|
|
334
|
+
Linear's GitHub integration completes a linked Issue on merge to **any** branch
|
|
335
|
+
— branch-name linkage alone triggers it, even when the PR body carries only the
|
|
336
|
+
non-closing `Linear: <ID>` reference form (incident of record: TunnlAI backend
|
|
337
|
+
PR #207 merged to `dev`; TUN-256 auto-completed and had to be manually
|
|
338
|
+
reverted). Run this step **as soon as the PR reports `MERGED`**, before the
|
|
339
|
+
deploy-run verification above can terminate the flow — a `blocked:deploy`
|
|
340
|
+
outcome must never leave the merged Issue unreconciled. When the driven PR's
|
|
341
|
+
work item is a Linear Issue and `<baseRefName>` **successfully resolves** via
|
|
342
|
+
`.lisa.config.json` `deploy.branches` to an env below the production terminal,
|
|
343
|
+
re-read the Issue's native workflow `state`. If Linear moved it to a
|
|
344
|
+
`completed`-type state, revert it to the team's started/In Progress state and
|
|
345
|
+
post a one-line reconciliation comment — per the `leaf-only-lifecycle` rule
|
|
346
|
+
(native closure fires only at the production terminal). If the base branch
|
|
347
|
+
cannot be resolved (unmapped or ambiguous), do **not** mutate the native
|
|
348
|
+
`state` — post a reconciliation-suggestion comment and leave it untouched,
|
|
349
|
+
matching Phase 4b's safe default. The full procedure is `lisa-linear-sync`
|
|
350
|
+
Phase 4b; when the caller's flow already runs a `pr-merged` sync for this
|
|
351
|
+
merge, confirming that sync ran satisfies this step.
|
|
352
|
+
|
|
332
353
|
## 4. Terminal states
|
|
333
354
|
|
|
334
355
|
Loop until one of:
|
|
@@ -21,7 +21,7 @@ Callers (planning skills, lifecycle skills) invoke this skill at:
|
|
|
21
21
|
| Plan created | Plan contents (sections + ordered tasks) as a comment, suggest transition `Backlog → Todo` (label: `status:ready`) |
|
|
22
22
|
| Implementation in progress | Branch URL + first commit, suggest transition `Todo → In Progress` (label: `status:in-progress`) |
|
|
23
23
|
| PR ready for review | PR URL + summary, the implementation handoff comment, suggest transition `In Progress → In Review` (label: `status:code-review`) |
|
|
24
|
-
| PR merged | Merge SHA + deploy environment (if known), suggest transition `In Review → Done` (label: `status:done`) |
|
|
24
|
+
| PR merged | Merge SHA + deploy environment (if known), suggest transition `In Review → Done` (label: `status:done`), **then run Phase 4b — mandatory when the merge target is a non-terminal env branch** |
|
|
25
25
|
|
|
26
26
|
This skill **suggests** transitions but does not auto-transition the native Linear `state` field. It DOES update the `status:*` label set when the caller asks (the build queue is keyed off labels). Native state transitions remain a human / triage decision.
|
|
27
27
|
|
|
@@ -94,7 +94,7 @@ Without `--update-label`, this skill posts the comment only and does NOT touch l
|
|
|
94
94
|
|
|
95
95
|
## Phase 4b — Reconcile Native Auto-Close (Linear-specific)
|
|
96
96
|
|
|
97
|
-
Linear's GitHub integration completes a linked Issue on merge to **any branch** — unlike GitHub's default-branch-scoped `Closes` auto-close — so a magic word (`Closes`/`Fixes`/`Resolves ENG-123`) or branch-name linkage can natively move the Issue to a Done/Completed workflow `state` at a **non-terminal** env merge, front-running the env-keyed `status:*` label ladder. `git-submit-pr` prevents the magic-word case; this phase is the required post-merge repair for the residual (branch-linkage) case we cannot suppress server-side.
|
|
97
|
+
Linear's GitHub integration completes a linked Issue on merge to **any branch** — unlike GitHub's default-branch-scoped `Closes` auto-close — so a magic word (`Closes`/`Fixes`/`Resolves ENG-123`) or branch-name linkage can natively move the Issue to a Done/Completed workflow `state` at a **non-terminal** env merge, front-running the env-keyed `status:*` label ladder. `git-submit-pr` prevents the magic-word case; this phase is the required post-merge repair for the residual (branch-linkage) case we cannot suppress server-side — branch linkage completes the Issue even when the PR body carries only the non-closing `Linear: <ID>` form. This phase is a **mandatory** numbered step of every `pr-merged` sync, not an optional backstop; run it whenever the resolved env is **intermediate** (below the production terminal `done`):
|
|
98
98
|
|
|
99
99
|
1. Resolve the merged PR's base branch to its env via `.lisa.config.json` `deploy.branches` (`config-resolution`). If it maps to the production/terminal `done`, this phase is a **no-op** — native completion is correct there.
|
|
100
100
|
2. **Uniform / single-environment no-op.** When the project's env-keyed `done` map is uniform — every environment resolves to the same `status:done`, as in this repo (`production: main` only) and TunnlAI/frontend — dev-merge == terminal, so native completion is correct. Do nothing. Only a **non-uniform** env→`done` map (distinct `status:on-dev`/`status:on-stg`/`status:done` rungs) can desync.
|
|
@@ -329,6 +329,27 @@ a workflow is an action, so do **not** run `gh workflow run` / `workflow_dispatc
|
|
|
329
329
|
it for the caller to act on, consistent with the report-mode contract (steps b–f
|
|
330
330
|
of section 2 are diagnose-only).
|
|
331
331
|
|
|
332
|
+
### c. Linear native-state reconciliation (non-terminal merges only)
|
|
333
|
+
|
|
334
|
+
Linear's GitHub integration completes a linked Issue on merge to **any** branch
|
|
335
|
+
— branch-name linkage alone triggers it, even when the PR body carries only the
|
|
336
|
+
non-closing `Linear: <ID>` reference form (incident of record: TunnlAI backend
|
|
337
|
+
PR #207 merged to `dev`; TUN-256 auto-completed and had to be manually
|
|
338
|
+
reverted). Run this step **as soon as the PR reports `MERGED`**, before the
|
|
339
|
+
deploy-run verification above can terminate the flow — a `blocked:deploy`
|
|
340
|
+
outcome must never leave the merged Issue unreconciled. When the driven PR's
|
|
341
|
+
work item is a Linear Issue and `<baseRefName>` **successfully resolves** via
|
|
342
|
+
`.lisa.config.json` `deploy.branches` to an env below the production terminal,
|
|
343
|
+
re-read the Issue's native workflow `state`. If Linear moved it to a
|
|
344
|
+
`completed`-type state, revert it to the team's started/In Progress state and
|
|
345
|
+
post a one-line reconciliation comment — per the `leaf-only-lifecycle` rule
|
|
346
|
+
(native closure fires only at the production terminal). If the base branch
|
|
347
|
+
cannot be resolved (unmapped or ambiguous), do **not** mutate the native
|
|
348
|
+
`state` — post a reconciliation-suggestion comment and leave it untouched,
|
|
349
|
+
matching Phase 4b's safe default. The full procedure is `lisa-linear-sync`
|
|
350
|
+
Phase 4b; when the caller's flow already runs a `pr-merged` sync for this
|
|
351
|
+
merge, confirming that sync ran satisfies this step.
|
|
352
|
+
|
|
332
353
|
## 4. Terminal states
|
|
333
354
|
|
|
334
355
|
Loop until one of:
|
|
@@ -21,7 +21,7 @@ Callers (planning skills, lifecycle skills) invoke this skill at:
|
|
|
21
21
|
| Plan created | Plan contents (sections + ordered tasks) as a comment, suggest transition `Backlog → Todo` (label: `status:ready`) |
|
|
22
22
|
| Implementation in progress | Branch URL + first commit, suggest transition `Todo → In Progress` (label: `status:in-progress`) |
|
|
23
23
|
| PR ready for review | PR URL + summary, the implementation handoff comment, suggest transition `In Progress → In Review` (label: `status:code-review`) |
|
|
24
|
-
| PR merged | Merge SHA + deploy environment (if known), suggest transition `In Review → Done` (label: `status:done`) |
|
|
24
|
+
| PR merged | Merge SHA + deploy environment (if known), suggest transition `In Review → Done` (label: `status:done`), **then run Phase 4b — mandatory when the merge target is a non-terminal env branch** |
|
|
25
25
|
|
|
26
26
|
This skill **suggests** transitions but does not auto-transition the native Linear `state` field. It DOES update the `status:*` label set when the caller asks (the build queue is keyed off labels). Native state transitions remain a human / triage decision.
|
|
27
27
|
|
|
@@ -94,7 +94,7 @@ Without `--update-label`, this skill posts the comment only and does NOT touch l
|
|
|
94
94
|
|
|
95
95
|
## Phase 4b — Reconcile Native Auto-Close (Linear-specific)
|
|
96
96
|
|
|
97
|
-
Linear's GitHub integration completes a linked Issue on merge to **any branch** — unlike GitHub's default-branch-scoped `Closes` auto-close — so a magic word (`Closes`/`Fixes`/`Resolves ENG-123`) or branch-name linkage can natively move the Issue to a Done/Completed workflow `state` at a **non-terminal** env merge, front-running the env-keyed `status:*` label ladder. `git-submit-pr` prevents the magic-word case; this phase is the required post-merge repair for the residual (branch-linkage) case we cannot suppress server-side.
|
|
97
|
+
Linear's GitHub integration completes a linked Issue on merge to **any branch** — unlike GitHub's default-branch-scoped `Closes` auto-close — so a magic word (`Closes`/`Fixes`/`Resolves ENG-123`) or branch-name linkage can natively move the Issue to a Done/Completed workflow `state` at a **non-terminal** env merge, front-running the env-keyed `status:*` label ladder. `git-submit-pr` prevents the magic-word case; this phase is the required post-merge repair for the residual (branch-linkage) case we cannot suppress server-side — branch linkage completes the Issue even when the PR body carries only the non-closing `Linear: <ID>` form. This phase is a **mandatory** numbered step of every `pr-merged` sync, not an optional backstop; run it whenever the resolved env is **intermediate** (below the production terminal `done`):
|
|
98
98
|
|
|
99
99
|
1. Resolve the merged PR's base branch to its env via `.lisa.config.json` `deploy.branches` (`config-resolution`). If it maps to the production/terminal `done`, this phase is a **no-op** — native completion is correct there.
|
|
100
100
|
2. **Uniform / single-environment no-op.** When the project's env-keyed `done` map is uniform — every environment resolves to the same `status:done`, as in this repo (`production: main` only) and TunnlAI/frontend — dev-merge == terminal, so native completion is correct. Do nothing. Only a **non-uniform** env→`done` map (distinct `status:on-dev`/`status:on-stg`/`status:done` rungs) can desync.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-openclaw",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.288.0",
|
|
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.
|
|
3
|
+
"version": "2.288.0",
|
|
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.
|
|
3
|
+
"version": "2.288.0",
|
|
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.
|
|
3
|
+
"version": "2.288.0",
|
|
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.
|
|
3
|
+
"version": "2.288.0",
|
|
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"
|
|
@@ -329,6 +329,27 @@ a workflow is an action, so do **not** run `gh workflow run` / `workflow_dispatc
|
|
|
329
329
|
it for the caller to act on, consistent with the report-mode contract (steps b–f
|
|
330
330
|
of section 2 are diagnose-only).
|
|
331
331
|
|
|
332
|
+
### c. Linear native-state reconciliation (non-terminal merges only)
|
|
333
|
+
|
|
334
|
+
Linear's GitHub integration completes a linked Issue on merge to **any** branch
|
|
335
|
+
— branch-name linkage alone triggers it, even when the PR body carries only the
|
|
336
|
+
non-closing `Linear: <ID>` reference form (incident of record: TunnlAI backend
|
|
337
|
+
PR #207 merged to `dev`; TUN-256 auto-completed and had to be manually
|
|
338
|
+
reverted). Run this step **as soon as the PR reports `MERGED`**, before the
|
|
339
|
+
deploy-run verification above can terminate the flow — a `blocked:deploy`
|
|
340
|
+
outcome must never leave the merged Issue unreconciled. When the driven PR's
|
|
341
|
+
work item is a Linear Issue and `<baseRefName>` **successfully resolves** via
|
|
342
|
+
`.lisa.config.json` `deploy.branches` to an env below the production terminal,
|
|
343
|
+
re-read the Issue's native workflow `state`. If Linear moved it to a
|
|
344
|
+
`completed`-type state, revert it to the team's started/In Progress state and
|
|
345
|
+
post a one-line reconciliation comment — per the `leaf-only-lifecycle` rule
|
|
346
|
+
(native closure fires only at the production terminal). If the base branch
|
|
347
|
+
cannot be resolved (unmapped or ambiguous), do **not** mutate the native
|
|
348
|
+
`state` — post a reconciliation-suggestion comment and leave it untouched,
|
|
349
|
+
matching Phase 4b's safe default. The full procedure is `lisa-linear-sync`
|
|
350
|
+
Phase 4b; when the caller's flow already runs a `pr-merged` sync for this
|
|
351
|
+
merge, confirming that sync ran satisfies this step.
|
|
352
|
+
|
|
332
353
|
## 4. Terminal states
|
|
333
354
|
|
|
334
355
|
Loop until one of:
|
|
@@ -21,7 +21,7 @@ Callers (planning skills, lifecycle skills) invoke this skill at:
|
|
|
21
21
|
| Plan created | Plan contents (sections + ordered tasks) as a comment, suggest transition `Backlog → Todo` (label: `status:ready`) |
|
|
22
22
|
| Implementation in progress | Branch URL + first commit, suggest transition `Todo → In Progress` (label: `status:in-progress`) |
|
|
23
23
|
| PR ready for review | PR URL + summary, the implementation handoff comment, suggest transition `In Progress → In Review` (label: `status:code-review`) |
|
|
24
|
-
| PR merged | Merge SHA + deploy environment (if known), suggest transition `In Review → Done` (label: `status:done`) |
|
|
24
|
+
| PR merged | Merge SHA + deploy environment (if known), suggest transition `In Review → Done` (label: `status:done`), **then run Phase 4b — mandatory when the merge target is a non-terminal env branch** |
|
|
25
25
|
|
|
26
26
|
This skill **suggests** transitions but does not auto-transition the native Linear `state` field. It DOES update the `status:*` label set when the caller asks (the build queue is keyed off labels). Native state transitions remain a human / triage decision.
|
|
27
27
|
|
|
@@ -94,7 +94,7 @@ Without `--update-label`, this skill posts the comment only and does NOT touch l
|
|
|
94
94
|
|
|
95
95
|
## Phase 4b — Reconcile Native Auto-Close (Linear-specific)
|
|
96
96
|
|
|
97
|
-
Linear's GitHub integration completes a linked Issue on merge to **any branch** — unlike GitHub's default-branch-scoped `Closes` auto-close — so a magic word (`Closes`/`Fixes`/`Resolves ENG-123`) or branch-name linkage can natively move the Issue to a Done/Completed workflow `state` at a **non-terminal** env merge, front-running the env-keyed `status:*` label ladder. `git-submit-pr` prevents the magic-word case; this phase is the required post-merge repair for the residual (branch-linkage) case we cannot suppress server-side.
|
|
97
|
+
Linear's GitHub integration completes a linked Issue on merge to **any branch** — unlike GitHub's default-branch-scoped `Closes` auto-close — so a magic word (`Closes`/`Fixes`/`Resolves ENG-123`) or branch-name linkage can natively move the Issue to a Done/Completed workflow `state` at a **non-terminal** env merge, front-running the env-keyed `status:*` label ladder. `git-submit-pr` prevents the magic-word case; this phase is the required post-merge repair for the residual (branch-linkage) case we cannot suppress server-side — branch linkage completes the Issue even when the PR body carries only the non-closing `Linear: <ID>` form. This phase is a **mandatory** numbered step of every `pr-merged` sync, not an optional backstop; run it whenever the resolved env is **intermediate** (below the production terminal `done`):
|
|
98
98
|
|
|
99
99
|
1. Resolve the merged PR's base branch to its env via `.lisa.config.json` `deploy.branches` (`config-resolution`). If it maps to the production/terminal `done`, this phase is a **no-op** — native completion is correct there.
|
|
100
100
|
2. **Uniform / single-environment no-op.** When the project's env-keyed `done` map is uniform — every environment resolves to the same `status:done`, as in this repo (`production: main` only) and TunnlAI/frontend — dev-merge == terminal, so native completion is correct. Do nothing. Only a **non-uniform** env→`done` map (distinct `status:on-dev`/`status:on-stg`/`status:done` rungs) can desync.
|