@codyswann/lisa 2.187.3 → 2.187.4
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/agents/github-agent.md +1 -1
- package/plugins/lisa/agents/jira-agent.md +1 -1
- package/plugins/lisa/agents/linear-agent.md +1 -1
- package/plugins/lisa/rules/eager/pre-flight-autofill.md +1 -1
- package/plugins/lisa/rules/reference/config-resolution.md +4 -3
- package/plugins/lisa/rules/reference/pre-flight-autofill.md +3 -3
- package/plugins/lisa/skills/implement/SKILL.md +1 -1
- package/plugins/lisa-agy/agents/github-agent.md +1 -1
- package/plugins/lisa-agy/agents/jira-agent.md +1 -1
- package/plugins/lisa-agy/agents/linear-agent.md +1 -1
- package/plugins/lisa-agy/plugin.json +1 -1
- package/plugins/lisa-agy/skills/implement/SKILL.md +1 -1
- package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk-agy/plugin.json +1 -1
- package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-copilot/agents/github-agent.agent.md +1 -1
- package/plugins/lisa-copilot/agents/jira-agent.agent.md +1 -1
- package/plugins/lisa-copilot/agents/linear-agent.agent.md +1 -1
- package/plugins/lisa-copilot/rules/eager/pre-flight-autofill.md +1 -1
- package/plugins/lisa-copilot/rules/reference/config-resolution.md +4 -3
- package/plugins/lisa-copilot/rules/reference/pre-flight-autofill.md +3 -3
- package/plugins/lisa-copilot/skills/implement/SKILL.md +1 -1
- package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cursor/agents/github-agent.md +1 -1
- package/plugins/lisa-cursor/agents/jira-agent.md +1 -1
- package/plugins/lisa-cursor/agents/linear-agent.md +1 -1
- package/plugins/lisa-cursor/rules/config-resolution-reference.mdc +4 -3
- package/plugins/lisa-cursor/rules/pre-flight-autofill-reference.mdc +3 -3
- package/plugins/lisa-cursor/rules/pre-flight-autofill.mdc +1 -1
- package/plugins/lisa-cursor/skills/implement/SKILL.md +1 -1
- package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-expo-agy/plugin.json +1 -1
- package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs-agy/plugin.json +1 -1
- package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw-agy/plugin.json +1 -1
- package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser-agy/plugin.json +1 -1
- package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-rails-agy/plugin.json +1 -1
- package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript-agy/plugin.json +1 -1
- package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki-agy/plugin.json +1 -1
- package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/src/base/agents/github-agent.md +1 -1
- package/plugins/src/base/agents/jira-agent.md +1 -1
- package/plugins/src/base/agents/linear-agent.md +1 -1
- package/plugins/src/base/rules/eager/pre-flight-autofill.md +1 -1
- package/plugins/src/base/rules/reference/config-resolution.md +4 -3
- package/plugins/src/base/rules/reference/pre-flight-autofill.md +3 -3
- package/plugins/src/base/skills/implement/SKILL.md +1 -1
package/package.json
CHANGED
|
@@ -93,7 +93,7 @@
|
|
|
93
93
|
"ws": ">=8.20.1"
|
|
94
94
|
},
|
|
95
95
|
"name": "@codyswann/lisa",
|
|
96
|
-
"version": "2.187.
|
|
96
|
+
"version": "2.187.4",
|
|
97
97
|
"description": "Claude Code governance framework that applies guardrails, guidance, and automated enforcement to projects",
|
|
98
98
|
"main": "dist/index.js",
|
|
99
99
|
"exports": {
|
|
@@ -150,4 +150,4 @@ Note: `done` may be a string or an env-keyed map (`{ dev, staging, production }`
|
|
|
150
150
|
- Never create or materially edit an issue by calling `gh issue create` / `gh issue edit` directly — always delegate to `github-write-issue` (or, from a vendor-neutral caller, `tracker-write`) so relationships, Gherkin criteria, and metadata gates are enforced.
|
|
151
151
|
- If sign-in credentials are in the issue body, extract and pass them to the flow. If the issue touches an authenticated surface and credentials are missing, that is a Step 2 failure — block and reassign rather than guessing.
|
|
152
152
|
- If the issue has a `## Validation Journey` section, pass it to the verifier agent. The Validation Journey's local-verification step must point at the target backend environment named in the body.
|
|
153
|
-
- For bug issues, the reported environment named in the issue body or reproduction steps drives the implementation base branch via `deploy.branches
|
|
153
|
+
- For bug issues, the reported environment named in the issue body or reproduction steps drives the implementation base branch via `deploy.branches`. If no environment can be found anywhere in the ticket, fall back to the configured default branch and record that assumption. If the reported environment is present but missing from `deploy.branches`, or its mapped branch is absent on the remote, stop and report the missing environment/branch mapping instead of defaulting. A non-integration environment fix must be merged and verified on that environment branch, then forward cherry-picked down to the integration branch through a linked follow-up.
|
|
@@ -130,4 +130,4 @@ Note: `done` may be a string or an env-keyed map (`{ dev, staging, production }`
|
|
|
130
130
|
- Never create or materially edit a ticket by calling MCP write tools directly — always delegate to `jira-write-ticket` so relationships, Gherkin criteria, and metadata gates are enforced
|
|
131
131
|
- If sign-in credentials are in the ticket, extract and pass them to the flow. If the ticket touches an authenticated surface and credentials are missing, that is a Step 2 failure — block and reassign rather than guessing.
|
|
132
132
|
- If the ticket has a Validation Journey section, pass it to the verifier agent. The Validation Journey's local-verification step must point at the target backend environment named in the description (for FE work, that's the deployed backend QA reported against).
|
|
133
|
-
- For bug tickets, the reported environment named in the description or reproduction steps drives the implementation base branch via `deploy.branches
|
|
133
|
+
- For bug tickets, the reported environment named in the description or reproduction steps drives the implementation base branch via `deploy.branches`. If no environment can be found anywhere in the ticket, fall back to the configured default branch and record that assumption. If the reported environment is present but missing from `deploy.branches`, or its mapped branch is absent on the remote, stop and report the missing environment/branch mapping instead of defaulting. A non-integration environment fix must be merged and verified on that environment branch, then forward cherry-picked down to the integration branch through a linked follow-up.
|
|
@@ -133,4 +133,4 @@ The label transitions ARE the canonical signal. The native `state` field stays a
|
|
|
133
133
|
- Never create or materially edit an item by calling MCP write tools directly — always delegate to `linear-write-issue` so relationships, Gherkin criteria, and metadata gates are enforced. Two explicit exceptions are permitted: (1) the Step 2 pre-flight failure path (when `linear-verify` returns `FAIL`) may call `lisa:linear-access operation: save-issue` and `lisa:linear-access operation: save-comment` directly to set `status:blocked`, add the configured `human_needed` marker label, and reassign to the creator — this narrow exception is already granted by the rule above; (2) the Step 3 triage path may call `lisa:linear-access operation: save-comment` to post triage findings and `lisa:linear-access operation: save-issue` to add the `claude-triaged-{repo}` label — these are lightweight metadata updates that do not create or materially edit ticket content and therefore do not need to route through `linear-write-issue`.
|
|
134
134
|
- If sign-in credentials are in the item, extract and pass them to the flow. If the item touches an authenticated surface and credentials are missing, that is a Step 2 failure — block and reassign rather than guessing.
|
|
135
135
|
- If the item has a Validation Journey section, pass it to the verifier agent. The Validation Journey's local-verification step must point at the target backend environment named in the description.
|
|
136
|
-
- For bug items, the reported environment named in the description or reproduction steps drives the implementation base branch via `deploy.branches
|
|
136
|
+
- For bug items, the reported environment named in the description or reproduction steps drives the implementation base branch via `deploy.branches`. If no environment can be found anywhere in the item, fall back to the configured default branch and record that assumption. If the reported environment is present but missing from `deploy.branches`, or its mapped branch is absent on the remote, stop and report the missing environment/branch mapping instead of defaulting. A non-integration environment fix must be merged and verified on that environment branch, then forward cherry-picked down to the integration branch through a linked follow-up.
|
|
@@ -25,7 +25,7 @@ information was already on the ticket; only the structure was missing).
|
|
|
25
25
|
reported environment from the item body/reproduction steps before recommending
|
|
26
26
|
any default: bare environment names (`dev`, `staging`, `prod`, `production`)
|
|
27
27
|
and environment-bearing URLs (for example `staging.<domain>`, `gql.staging.*`,
|
|
28
|
-
`dev.<domain>`) are authoritative. Only recommend the
|
|
28
|
+
`dev.<domain>`) are authoritative. Only recommend the repo's remote default branch when
|
|
29
29
|
no environment is discoverable anywhere in the work item, and record that as
|
|
30
30
|
an assumption.
|
|
31
31
|
- **Tier B — irreducibly human:** real credentials/access that exist nowhere on
|
|
@@ -463,9 +463,10 @@ If a project's terminal state is the same regardless of env, set `done` to a str
|
|
|
463
463
|
|
|
464
464
|
`deploy.branches` is also read in the **forward** direction by the build flow (`lisa:implement`): the environment a work item targets determines the branch the work is built on and the branch the PR opens against.
|
|
465
465
|
|
|
466
|
-
1. **Resolve the work item's target environment** — its `## Target Backend Environment` field.
|
|
467
|
-
2. **
|
|
468
|
-
3. **
|
|
466
|
+
1. **Resolve the work item's target environment** — its `## Target Backend Environment` field.
|
|
467
|
+
2. **If no environment is named**, use the **remote default branch** (`gh repo view --json defaultBranchRef`, or `origin/HEAD`) and record that default-branch assumption.
|
|
468
|
+
3. **If a reported environment exists**, map env → base branch via `deploy.branches` (e.g. `staging → staging`, `production → main`). A reported env absent from `deploy.branches`, or a mapped branch missing from the remote, must stop and report the exact missing environment-to-branch mapping; never guess and never silently fall back.
|
|
469
|
+
4. **Before any code is written**, `lisa:implement` fetches and **rebases the working branch onto `origin/<base>`, resolving conflicts**, so implementation builds on the latest target-environment code. **The PR then opens against that same base branch** (`target_branch=<base>` to `lisa:git-submit-pr`).
|
|
469
470
|
|
|
470
471
|
This is the exact inverse of the env-keyed `done` "Branch inference" above: `done` derives the env *from* the PR base branch (reverse); the build flow derives the base branch *from* the env (forward). Both use the one `deploy.branches` map, so the branch a PR targets and the `done` status it earns always agree.
|
|
471
472
|
|
|
@@ -54,9 +54,9 @@ spec.
|
|
|
54
54
|
reproduction steps. Bare words such as `dev`, `staging`, `prod`, and
|
|
55
55
|
`production` count, as do environment-bearing URLs such as
|
|
56
56
|
`staging.<domain>`, `gql.staging.*`, and `dev.<domain>`. That reported
|
|
57
|
-
environment is authoritative for the draft. Only recommend
|
|
58
|
-
default
|
|
59
|
-
|
|
57
|
+
environment is authoritative for the draft. Only recommend the repo's
|
|
58
|
+
remote default branch when no environment is discoverable anywhere in the
|
|
59
|
+
work item, and record the default as an explicit assumption.
|
|
60
60
|
|
|
61
61
|
**Tier B — irreducibly human (cannot invent — but still propose a default):**
|
|
62
62
|
|
|
@@ -71,7 +71,7 @@ Using the general-purpose agent in Team Lead session, Determine the name of this
|
|
|
71
71
|
Using the general-purpose agent in Team Lead session, **determine the base branch from the ticket's target environment, then sync the working branch onto the latest of it before any work** — so implementation always builds on current target-environment code:
|
|
72
72
|
|
|
73
73
|
1. **Resolve the target environment** from the resolved work item — its `## Target Backend Environment` section (the field the `*-write-*` / `*-add-journey` skills record). For bug work, the environment named in the report is authoritative: if the title/body/reproduction steps mention bare env names (`dev`, `staging`, `prod`, `production`) or env-bearing URLs (`staging.<domain>`, `gql.staging.*`, `dev.<domain>`), that reported environment wins over a generic autofill default.
|
|
74
|
-
2. **Map the environment to a base branch** via `.lisa.config.json` `deploy.branches` (e.g. `staging → staging`, `production → main`) — the forward direction of the same map the env-keyed `done` resolution uses in reverse (see the `config-resolution` rule). If the work item names **no** environment, the base branch is the **remote default branch** (`gh repo view --json defaultBranchRef -q .defaultBranchRef.name`, or `git remote set-head origin -a` then read `origin/HEAD`). If the reported environment is absent from `deploy.branches`, or its branch does not exist on the remote, **stop and report** — never guess a base and never silently fall back to the default/integration branch.
|
|
74
|
+
2. **Map the environment to a base branch** via `.lisa.config.json` `deploy.branches` (e.g. `staging → staging`, `production → main`) — the forward direction of the same map the env-keyed `done` resolution uses in reverse (see the `config-resolution` rule). If the work item names **no** environment, the base branch is the **remote default branch** (`gh repo view --json defaultBranchRef -q .defaultBranchRef.name`, or `git remote set-head origin -a` then read `origin/HEAD`), and record that fallback assumption in the plan/tracker artifact before proceeding. If the reported environment is absent from `deploy.branches`, or its branch does not exist on the remote, **stop and report** — never guess a base and never silently fall back to the default/integration branch.
|
|
75
75
|
3. **Establish the feature branch off the latest base, conflict-free:**
|
|
76
76
|
- `git fetch origin`.
|
|
77
77
|
- Already on a feature branch with an **open PR** → reuse it. If the PR's base ≠ the resolved base branch, surface the mismatch and re-target only with confirmation — the ticket's environment is the source of truth.
|
|
@@ -150,4 +150,4 @@ Note: `done` may be a string or an env-keyed map (`{ dev, staging, production }`
|
|
|
150
150
|
- Never create or materially edit an issue by calling `gh issue create` / `gh issue edit` directly — always delegate to `github-write-issue` (or, from a vendor-neutral caller, `tracker-write`) so relationships, Gherkin criteria, and metadata gates are enforced.
|
|
151
151
|
- If sign-in credentials are in the issue body, extract and pass them to the flow. If the issue touches an authenticated surface and credentials are missing, that is a Step 2 failure — block and reassign rather than guessing.
|
|
152
152
|
- If the issue has a `## Validation Journey` section, pass it to the verifier agent. The Validation Journey's local-verification step must point at the target backend environment named in the body.
|
|
153
|
-
- For bug issues, the reported environment named in the issue body or reproduction steps drives the implementation base branch via `deploy.branches
|
|
153
|
+
- For bug issues, the reported environment named in the issue body or reproduction steps drives the implementation base branch via `deploy.branches`. If no environment can be found anywhere in the ticket, fall back to the configured default branch and record that assumption. If the reported environment is present but missing from `deploy.branches`, or its mapped branch is absent on the remote, stop and report the missing environment/branch mapping instead of defaulting. A non-integration environment fix must be merged and verified on that environment branch, then forward cherry-picked down to the integration branch through a linked follow-up.
|
|
@@ -130,4 +130,4 @@ Note: `done` may be a string or an env-keyed map (`{ dev, staging, production }`
|
|
|
130
130
|
- Never create or materially edit a ticket by calling MCP write tools directly — always delegate to `jira-write-ticket` so relationships, Gherkin criteria, and metadata gates are enforced
|
|
131
131
|
- If sign-in credentials are in the ticket, extract and pass them to the flow. If the ticket touches an authenticated surface and credentials are missing, that is a Step 2 failure — block and reassign rather than guessing.
|
|
132
132
|
- If the ticket has a Validation Journey section, pass it to the verifier agent. The Validation Journey's local-verification step must point at the target backend environment named in the description (for FE work, that's the deployed backend QA reported against).
|
|
133
|
-
- For bug tickets, the reported environment named in the description or reproduction steps drives the implementation base branch via `deploy.branches
|
|
133
|
+
- For bug tickets, the reported environment named in the description or reproduction steps drives the implementation base branch via `deploy.branches`. If no environment can be found anywhere in the ticket, fall back to the configured default branch and record that assumption. If the reported environment is present but missing from `deploy.branches`, or its mapped branch is absent on the remote, stop and report the missing environment/branch mapping instead of defaulting. A non-integration environment fix must be merged and verified on that environment branch, then forward cherry-picked down to the integration branch through a linked follow-up.
|
|
@@ -133,4 +133,4 @@ The label transitions ARE the canonical signal. The native `state` field stays a
|
|
|
133
133
|
- Never create or materially edit an item by calling MCP write tools directly — always delegate to `linear-write-issue` so relationships, Gherkin criteria, and metadata gates are enforced. Two explicit exceptions are permitted: (1) the Step 2 pre-flight failure path (when `linear-verify` returns `FAIL`) may call `lisa:linear-access operation: save-issue` and `lisa:linear-access operation: save-comment` directly to set `status:blocked`, add the configured `human_needed` marker label, and reassign to the creator — this narrow exception is already granted by the rule above; (2) the Step 3 triage path may call `lisa:linear-access operation: save-comment` to post triage findings and `lisa:linear-access operation: save-issue` to add the `claude-triaged-{repo}` label — these are lightweight metadata updates that do not create or materially edit ticket content and therefore do not need to route through `linear-write-issue`.
|
|
134
134
|
- If sign-in credentials are in the item, extract and pass them to the flow. If the item touches an authenticated surface and credentials are missing, that is a Step 2 failure — block and reassign rather than guessing.
|
|
135
135
|
- If the item has a Validation Journey section, pass it to the verifier agent. The Validation Journey's local-verification step must point at the target backend environment named in the description.
|
|
136
|
-
- For bug items, the reported environment named in the description or reproduction steps drives the implementation base branch via `deploy.branches
|
|
136
|
+
- For bug items, the reported environment named in the description or reproduction steps drives the implementation base branch via `deploy.branches`. If no environment can be found anywhere in the item, fall back to the configured default branch and record that assumption. If the reported environment is present but missing from `deploy.branches`, or its mapped branch is absent on the remote, stop and report the missing environment/branch mapping instead of defaulting. A non-integration environment fix must be merged and verified on that environment branch, then forward cherry-picked down to the integration branch through a linked follow-up.
|
|
@@ -71,7 +71,7 @@ Using the general-purpose agent in Team Lead session, Determine the name of this
|
|
|
71
71
|
Using the general-purpose agent in Team Lead session, **determine the base branch from the ticket's target environment, then sync the working branch onto the latest of it before any work** — so implementation always builds on current target-environment code:
|
|
72
72
|
|
|
73
73
|
1. **Resolve the target environment** from the resolved work item — its `## Target Backend Environment` section (the field the `*-write-*` / `*-add-journey` skills record). For bug work, the environment named in the report is authoritative: if the title/body/reproduction steps mention bare env names (`dev`, `staging`, `prod`, `production`) or env-bearing URLs (`staging.<domain>`, `gql.staging.*`, `dev.<domain>`), that reported environment wins over a generic autofill default.
|
|
74
|
-
2. **Map the environment to a base branch** via `.lisa.config.json` `deploy.branches` (e.g. `staging → staging`, `production → main`) — the forward direction of the same map the env-keyed `done` resolution uses in reverse (see the `config-resolution` rule). If the work item names **no** environment, the base branch is the **remote default branch** (`gh repo view --json defaultBranchRef -q .defaultBranchRef.name`, or `git remote set-head origin -a` then read `origin/HEAD`). If the reported environment is absent from `deploy.branches`, or its branch does not exist on the remote, **stop and report** — never guess a base and never silently fall back to the default/integration branch.
|
|
74
|
+
2. **Map the environment to a base branch** via `.lisa.config.json` `deploy.branches` (e.g. `staging → staging`, `production → main`) — the forward direction of the same map the env-keyed `done` resolution uses in reverse (see the `config-resolution` rule). If the work item names **no** environment, the base branch is the **remote default branch** (`gh repo view --json defaultBranchRef -q .defaultBranchRef.name`, or `git remote set-head origin -a` then read `origin/HEAD`), and record that fallback assumption in the plan/tracker artifact before proceeding. If the reported environment is absent from `deploy.branches`, or its branch does not exist on the remote, **stop and report** — never guess a base and never silently fall back to the default/integration branch.
|
|
75
75
|
3. **Establish the feature branch off the latest base, conflict-free:**
|
|
76
76
|
- `git fetch origin`.
|
|
77
77
|
- Already on a feature branch with an **open PR** → reuse it. If the PR's base ≠ the resolved base branch, surface the mismatch and re-target only with confirmation — the ticket's environment is the source of truth.
|
|
@@ -150,4 +150,4 @@ Note: `done` may be a string or an env-keyed map (`{ dev, staging, production }`
|
|
|
150
150
|
- Never create or materially edit an issue by calling `gh issue create` / `gh issue edit` directly — always delegate to `github-write-issue` (or, from a vendor-neutral caller, `tracker-write`) so relationships, Gherkin criteria, and metadata gates are enforced.
|
|
151
151
|
- If sign-in credentials are in the issue body, extract and pass them to the flow. If the issue touches an authenticated surface and credentials are missing, that is a Step 2 failure — block and reassign rather than guessing.
|
|
152
152
|
- If the issue has a `## Validation Journey` section, pass it to the verifier agent. The Validation Journey's local-verification step must point at the target backend environment named in the body.
|
|
153
|
-
- For bug issues, the reported environment named in the issue body or reproduction steps drives the implementation base branch via `deploy.branches
|
|
153
|
+
- For bug issues, the reported environment named in the issue body or reproduction steps drives the implementation base branch via `deploy.branches`. If no environment can be found anywhere in the ticket, fall back to the configured default branch and record that assumption. If the reported environment is present but missing from `deploy.branches`, or its mapped branch is absent on the remote, stop and report the missing environment/branch mapping instead of defaulting. A non-integration environment fix must be merged and verified on that environment branch, then forward cherry-picked down to the integration branch through a linked follow-up.
|
|
@@ -130,4 +130,4 @@ Note: `done` may be a string or an env-keyed map (`{ dev, staging, production }`
|
|
|
130
130
|
- Never create or materially edit a ticket by calling MCP write tools directly — always delegate to `jira-write-ticket` so relationships, Gherkin criteria, and metadata gates are enforced
|
|
131
131
|
- If sign-in credentials are in the ticket, extract and pass them to the flow. If the ticket touches an authenticated surface and credentials are missing, that is a Step 2 failure — block and reassign rather than guessing.
|
|
132
132
|
- If the ticket has a Validation Journey section, pass it to the verifier agent. The Validation Journey's local-verification step must point at the target backend environment named in the description (for FE work, that's the deployed backend QA reported against).
|
|
133
|
-
- For bug tickets, the reported environment named in the description or reproduction steps drives the implementation base branch via `deploy.branches
|
|
133
|
+
- For bug tickets, the reported environment named in the description or reproduction steps drives the implementation base branch via `deploy.branches`. If no environment can be found anywhere in the ticket, fall back to the configured default branch and record that assumption. If the reported environment is present but missing from `deploy.branches`, or its mapped branch is absent on the remote, stop and report the missing environment/branch mapping instead of defaulting. A non-integration environment fix must be merged and verified on that environment branch, then forward cherry-picked down to the integration branch through a linked follow-up.
|
|
@@ -133,4 +133,4 @@ The label transitions ARE the canonical signal. The native `state` field stays a
|
|
|
133
133
|
- Never create or materially edit an item by calling MCP write tools directly — always delegate to `linear-write-issue` so relationships, Gherkin criteria, and metadata gates are enforced. Two explicit exceptions are permitted: (1) the Step 2 pre-flight failure path (when `linear-verify` returns `FAIL`) may call `lisa:linear-access operation: save-issue` and `lisa:linear-access operation: save-comment` directly to set `status:blocked`, add the configured `human_needed` marker label, and reassign to the creator — this narrow exception is already granted by the rule above; (2) the Step 3 triage path may call `lisa:linear-access operation: save-comment` to post triage findings and `lisa:linear-access operation: save-issue` to add the `claude-triaged-{repo}` label — these are lightweight metadata updates that do not create or materially edit ticket content and therefore do not need to route through `linear-write-issue`.
|
|
134
134
|
- If sign-in credentials are in the item, extract and pass them to the flow. If the item touches an authenticated surface and credentials are missing, that is a Step 2 failure — block and reassign rather than guessing.
|
|
135
135
|
- If the item has a Validation Journey section, pass it to the verifier agent. The Validation Journey's local-verification step must point at the target backend environment named in the description.
|
|
136
|
-
- For bug items, the reported environment named in the description or reproduction steps drives the implementation base branch via `deploy.branches
|
|
136
|
+
- For bug items, the reported environment named in the description or reproduction steps drives the implementation base branch via `deploy.branches`. If no environment can be found anywhere in the item, fall back to the configured default branch and record that assumption. If the reported environment is present but missing from `deploy.branches`, or its mapped branch is absent on the remote, stop and report the missing environment/branch mapping instead of defaulting. A non-integration environment fix must be merged and verified on that environment branch, then forward cherry-picked down to the integration branch through a linked follow-up.
|
|
@@ -25,7 +25,7 @@ information was already on the ticket; only the structure was missing).
|
|
|
25
25
|
reported environment from the item body/reproduction steps before recommending
|
|
26
26
|
any default: bare environment names (`dev`, `staging`, `prod`, `production`)
|
|
27
27
|
and environment-bearing URLs (for example `staging.<domain>`, `gql.staging.*`,
|
|
28
|
-
`dev.<domain>`) are authoritative. Only recommend the
|
|
28
|
+
`dev.<domain>`) are authoritative. Only recommend the repo's remote default branch when
|
|
29
29
|
no environment is discoverable anywhere in the work item, and record that as
|
|
30
30
|
an assumption.
|
|
31
31
|
- **Tier B — irreducibly human:** real credentials/access that exist nowhere on
|
|
@@ -463,9 +463,10 @@ If a project's terminal state is the same regardless of env, set `done` to a str
|
|
|
463
463
|
|
|
464
464
|
`deploy.branches` is also read in the **forward** direction by the build flow (`lisa:implement`): the environment a work item targets determines the branch the work is built on and the branch the PR opens against.
|
|
465
465
|
|
|
466
|
-
1. **Resolve the work item's target environment** — its `## Target Backend Environment` field.
|
|
467
|
-
2. **
|
|
468
|
-
3. **
|
|
466
|
+
1. **Resolve the work item's target environment** — its `## Target Backend Environment` field.
|
|
467
|
+
2. **If no environment is named**, use the **remote default branch** (`gh repo view --json defaultBranchRef`, or `origin/HEAD`) and record that default-branch assumption.
|
|
468
|
+
3. **If a reported environment exists**, map env → base branch via `deploy.branches` (e.g. `staging → staging`, `production → main`). A reported env absent from `deploy.branches`, or a mapped branch missing from the remote, must stop and report the exact missing environment-to-branch mapping; never guess and never silently fall back.
|
|
469
|
+
4. **Before any code is written**, `lisa:implement` fetches and **rebases the working branch onto `origin/<base>`, resolving conflicts**, so implementation builds on the latest target-environment code. **The PR then opens against that same base branch** (`target_branch=<base>` to `lisa:git-submit-pr`).
|
|
469
470
|
|
|
470
471
|
This is the exact inverse of the env-keyed `done` "Branch inference" above: `done` derives the env *from* the PR base branch (reverse); the build flow derives the base branch *from* the env (forward). Both use the one `deploy.branches` map, so the branch a PR targets and the `done` status it earns always agree.
|
|
471
472
|
|
|
@@ -54,9 +54,9 @@ spec.
|
|
|
54
54
|
reproduction steps. Bare words such as `dev`, `staging`, `prod`, and
|
|
55
55
|
`production` count, as do environment-bearing URLs such as
|
|
56
56
|
`staging.<domain>`, `gql.staging.*`, and `dev.<domain>`. That reported
|
|
57
|
-
environment is authoritative for the draft. Only recommend
|
|
58
|
-
default
|
|
59
|
-
|
|
57
|
+
environment is authoritative for the draft. Only recommend the repo's
|
|
58
|
+
remote default branch when no environment is discoverable anywhere in the
|
|
59
|
+
work item, and record the default as an explicit assumption.
|
|
60
60
|
|
|
61
61
|
**Tier B — irreducibly human (cannot invent — but still propose a default):**
|
|
62
62
|
|
|
@@ -71,7 +71,7 @@ Using the general-purpose agent in Team Lead session, Determine the name of this
|
|
|
71
71
|
Using the general-purpose agent in Team Lead session, **determine the base branch from the ticket's target environment, then sync the working branch onto the latest of it before any work** — so implementation always builds on current target-environment code:
|
|
72
72
|
|
|
73
73
|
1. **Resolve the target environment** from the resolved work item — its `## Target Backend Environment` section (the field the `*-write-*` / `*-add-journey` skills record). For bug work, the environment named in the report is authoritative: if the title/body/reproduction steps mention bare env names (`dev`, `staging`, `prod`, `production`) or env-bearing URLs (`staging.<domain>`, `gql.staging.*`, `dev.<domain>`), that reported environment wins over a generic autofill default.
|
|
74
|
-
2. **Map the environment to a base branch** via `.lisa.config.json` `deploy.branches` (e.g. `staging → staging`, `production → main`) — the forward direction of the same map the env-keyed `done` resolution uses in reverse (see the `config-resolution` rule). If the work item names **no** environment, the base branch is the **remote default branch** (`gh repo view --json defaultBranchRef -q .defaultBranchRef.name`, or `git remote set-head origin -a` then read `origin/HEAD`). If the reported environment is absent from `deploy.branches`, or its branch does not exist on the remote, **stop and report** — never guess a base and never silently fall back to the default/integration branch.
|
|
74
|
+
2. **Map the environment to a base branch** via `.lisa.config.json` `deploy.branches` (e.g. `staging → staging`, `production → main`) — the forward direction of the same map the env-keyed `done` resolution uses in reverse (see the `config-resolution` rule). If the work item names **no** environment, the base branch is the **remote default branch** (`gh repo view --json defaultBranchRef -q .defaultBranchRef.name`, or `git remote set-head origin -a` then read `origin/HEAD`), and record that fallback assumption in the plan/tracker artifact before proceeding. If the reported environment is absent from `deploy.branches`, or its branch does not exist on the remote, **stop and report** — never guess a base and never silently fall back to the default/integration branch.
|
|
75
75
|
3. **Establish the feature branch off the latest base, conflict-free:**
|
|
76
76
|
- `git fetch origin`.
|
|
77
77
|
- Already on a feature branch with an **open PR** → reuse it. If the PR's base ≠ the resolved base branch, surface the mismatch and re-target only with confirmation — the ticket's environment is the source of truth.
|
|
@@ -150,4 +150,4 @@ Note: `done` may be a string or an env-keyed map (`{ dev, staging, production }`
|
|
|
150
150
|
- Never create or materially edit an issue by calling `gh issue create` / `gh issue edit` directly — always delegate to `github-write-issue` (or, from a vendor-neutral caller, `tracker-write`) so relationships, Gherkin criteria, and metadata gates are enforced.
|
|
151
151
|
- If sign-in credentials are in the issue body, extract and pass them to the flow. If the issue touches an authenticated surface and credentials are missing, that is a Step 2 failure — block and reassign rather than guessing.
|
|
152
152
|
- If the issue has a `## Validation Journey` section, pass it to the verifier agent. The Validation Journey's local-verification step must point at the target backend environment named in the body.
|
|
153
|
-
- For bug issues, the reported environment named in the issue body or reproduction steps drives the implementation base branch via `deploy.branches
|
|
153
|
+
- For bug issues, the reported environment named in the issue body or reproduction steps drives the implementation base branch via `deploy.branches`. If no environment can be found anywhere in the ticket, fall back to the configured default branch and record that assumption. If the reported environment is present but missing from `deploy.branches`, or its mapped branch is absent on the remote, stop and report the missing environment/branch mapping instead of defaulting. A non-integration environment fix must be merged and verified on that environment branch, then forward cherry-picked down to the integration branch through a linked follow-up.
|
|
@@ -130,4 +130,4 @@ Note: `done` may be a string or an env-keyed map (`{ dev, staging, production }`
|
|
|
130
130
|
- Never create or materially edit a ticket by calling MCP write tools directly — always delegate to `jira-write-ticket` so relationships, Gherkin criteria, and metadata gates are enforced
|
|
131
131
|
- If sign-in credentials are in the ticket, extract and pass them to the flow. If the ticket touches an authenticated surface and credentials are missing, that is a Step 2 failure — block and reassign rather than guessing.
|
|
132
132
|
- If the ticket has a Validation Journey section, pass it to the verifier agent. The Validation Journey's local-verification step must point at the target backend environment named in the description (for FE work, that's the deployed backend QA reported against).
|
|
133
|
-
- For bug tickets, the reported environment named in the description or reproduction steps drives the implementation base branch via `deploy.branches
|
|
133
|
+
- For bug tickets, the reported environment named in the description or reproduction steps drives the implementation base branch via `deploy.branches`. If no environment can be found anywhere in the ticket, fall back to the configured default branch and record that assumption. If the reported environment is present but missing from `deploy.branches`, or its mapped branch is absent on the remote, stop and report the missing environment/branch mapping instead of defaulting. A non-integration environment fix must be merged and verified on that environment branch, then forward cherry-picked down to the integration branch through a linked follow-up.
|
|
@@ -133,4 +133,4 @@ The label transitions ARE the canonical signal. The native `state` field stays a
|
|
|
133
133
|
- Never create or materially edit an item by calling MCP write tools directly — always delegate to `linear-write-issue` so relationships, Gherkin criteria, and metadata gates are enforced. Two explicit exceptions are permitted: (1) the Step 2 pre-flight failure path (when `linear-verify` returns `FAIL`) may call `lisa:linear-access operation: save-issue` and `lisa:linear-access operation: save-comment` directly to set `status:blocked`, add the configured `human_needed` marker label, and reassign to the creator — this narrow exception is already granted by the rule above; (2) the Step 3 triage path may call `lisa:linear-access operation: save-comment` to post triage findings and `lisa:linear-access operation: save-issue` to add the `claude-triaged-{repo}` label — these are lightweight metadata updates that do not create or materially edit ticket content and therefore do not need to route through `linear-write-issue`.
|
|
134
134
|
- If sign-in credentials are in the item, extract and pass them to the flow. If the item touches an authenticated surface and credentials are missing, that is a Step 2 failure — block and reassign rather than guessing.
|
|
135
135
|
- If the item has a Validation Journey section, pass it to the verifier agent. The Validation Journey's local-verification step must point at the target backend environment named in the description.
|
|
136
|
-
- For bug items, the reported environment named in the description or reproduction steps drives the implementation base branch via `deploy.branches
|
|
136
|
+
- For bug items, the reported environment named in the description or reproduction steps drives the implementation base branch via `deploy.branches`. If no environment can be found anywhere in the item, fall back to the configured default branch and record that assumption. If the reported environment is present but missing from `deploy.branches`, or its mapped branch is absent on the remote, stop and report the missing environment/branch mapping instead of defaulting. A non-integration environment fix must be merged and verified on that environment branch, then forward cherry-picked down to the integration branch through a linked follow-up.
|
|
@@ -468,9 +468,10 @@ If a project's terminal state is the same regardless of env, set `done` to a str
|
|
|
468
468
|
|
|
469
469
|
`deploy.branches` is also read in the **forward** direction by the build flow (`lisa:implement`): the environment a work item targets determines the branch the work is built on and the branch the PR opens against.
|
|
470
470
|
|
|
471
|
-
1. **Resolve the work item's target environment** — its `## Target Backend Environment` field.
|
|
472
|
-
2. **
|
|
473
|
-
3. **
|
|
471
|
+
1. **Resolve the work item's target environment** — its `## Target Backend Environment` field.
|
|
472
|
+
2. **If no environment is named**, use the **remote default branch** (`gh repo view --json defaultBranchRef`, or `origin/HEAD`) and record that default-branch assumption.
|
|
473
|
+
3. **If a reported environment exists**, map env → base branch via `deploy.branches` (e.g. `staging → staging`, `production → main`). A reported env absent from `deploy.branches`, or a mapped branch missing from the remote, must stop and report the exact missing environment-to-branch mapping; never guess and never silently fall back.
|
|
474
|
+
4. **Before any code is written**, `lisa:implement` fetches and **rebases the working branch onto `origin/<base>`, resolving conflicts**, so implementation builds on the latest target-environment code. **The PR then opens against that same base branch** (`target_branch=<base>` to `lisa:git-submit-pr`).
|
|
474
475
|
|
|
475
476
|
This is the exact inverse of the env-keyed `done` "Branch inference" above: `done` derives the env *from* the PR base branch (reverse); the build flow derives the base branch *from* the env (forward). Both use the one `deploy.branches` map, so the branch a PR targets and the `done` status it earns always agree.
|
|
476
477
|
|
|
@@ -59,9 +59,9 @@ spec.
|
|
|
59
59
|
reproduction steps. Bare words such as `dev`, `staging`, `prod`, and
|
|
60
60
|
`production` count, as do environment-bearing URLs such as
|
|
61
61
|
`staging.<domain>`, `gql.staging.*`, and `dev.<domain>`. That reported
|
|
62
|
-
environment is authoritative for the draft. Only recommend
|
|
63
|
-
default
|
|
64
|
-
|
|
62
|
+
environment is authoritative for the draft. Only recommend the repo's
|
|
63
|
+
remote default branch when no environment is discoverable anywhere in the
|
|
64
|
+
work item, and record the default as an explicit assumption.
|
|
65
65
|
|
|
66
66
|
**Tier B — irreducibly human (cannot invent — but still propose a default):**
|
|
67
67
|
|
|
@@ -30,7 +30,7 @@ information was already on the ticket; only the structure was missing).
|
|
|
30
30
|
reported environment from the item body/reproduction steps before recommending
|
|
31
31
|
any default: bare environment names (`dev`, `staging`, `prod`, `production`)
|
|
32
32
|
and environment-bearing URLs (for example `staging.<domain>`, `gql.staging.*`,
|
|
33
|
-
`dev.<domain>`) are authoritative. Only recommend the
|
|
33
|
+
`dev.<domain>`) are authoritative. Only recommend the repo's remote default branch when
|
|
34
34
|
no environment is discoverable anywhere in the work item, and record that as
|
|
35
35
|
an assumption.
|
|
36
36
|
- **Tier B — irreducibly human:** real credentials/access that exist nowhere on
|
|
@@ -71,7 +71,7 @@ Using the general-purpose agent in Team Lead session, Determine the name of this
|
|
|
71
71
|
Using the general-purpose agent in Team Lead session, **determine the base branch from the ticket's target environment, then sync the working branch onto the latest of it before any work** — so implementation always builds on current target-environment code:
|
|
72
72
|
|
|
73
73
|
1. **Resolve the target environment** from the resolved work item — its `## Target Backend Environment` section (the field the `*-write-*` / `*-add-journey` skills record). For bug work, the environment named in the report is authoritative: if the title/body/reproduction steps mention bare env names (`dev`, `staging`, `prod`, `production`) or env-bearing URLs (`staging.<domain>`, `gql.staging.*`, `dev.<domain>`), that reported environment wins over a generic autofill default.
|
|
74
|
-
2. **Map the environment to a base branch** via `.lisa.config.json` `deploy.branches` (e.g. `staging → staging`, `production → main`) — the forward direction of the same map the env-keyed `done` resolution uses in reverse (see the `config-resolution` rule). If the work item names **no** environment, the base branch is the **remote default branch** (`gh repo view --json defaultBranchRef -q .defaultBranchRef.name`, or `git remote set-head origin -a` then read `origin/HEAD`). If the reported environment is absent from `deploy.branches`, or its branch does not exist on the remote, **stop and report** — never guess a base and never silently fall back to the default/integration branch.
|
|
74
|
+
2. **Map the environment to a base branch** via `.lisa.config.json` `deploy.branches` (e.g. `staging → staging`, `production → main`) — the forward direction of the same map the env-keyed `done` resolution uses in reverse (see the `config-resolution` rule). If the work item names **no** environment, the base branch is the **remote default branch** (`gh repo view --json defaultBranchRef -q .defaultBranchRef.name`, or `git remote set-head origin -a` then read `origin/HEAD`), and record that fallback assumption in the plan/tracker artifact before proceeding. If the reported environment is absent from `deploy.branches`, or its branch does not exist on the remote, **stop and report** — never guess a base and never silently fall back to the default/integration branch.
|
|
75
75
|
3. **Establish the feature branch off the latest base, conflict-free:**
|
|
76
76
|
- `git fetch origin`.
|
|
77
77
|
- Already on a feature branch with an **open PR** → reuse it. If the PR's base ≠ the resolved base branch, surface the mismatch and re-target only with confirmation — the ticket's environment is the source of truth.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-openclaw",
|
|
3
|
-
"version": "2.187.
|
|
3
|
+
"version": "2.187.4",
|
|
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.187.
|
|
3
|
+
"version": "2.187.4",
|
|
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.187.
|
|
3
|
+
"version": "2.187.4",
|
|
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.187.
|
|
3
|
+
"version": "2.187.4",
|
|
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.187.
|
|
3
|
+
"version": "2.187.4",
|
|
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"
|
|
@@ -150,4 +150,4 @@ Note: `done` may be a string or an env-keyed map (`{ dev, staging, production }`
|
|
|
150
150
|
- Never create or materially edit an issue by calling `gh issue create` / `gh issue edit` directly — always delegate to `github-write-issue` (or, from a vendor-neutral caller, `tracker-write`) so relationships, Gherkin criteria, and metadata gates are enforced.
|
|
151
151
|
- If sign-in credentials are in the issue body, extract and pass them to the flow. If the issue touches an authenticated surface and credentials are missing, that is a Step 2 failure — block and reassign rather than guessing.
|
|
152
152
|
- If the issue has a `## Validation Journey` section, pass it to the verifier agent. The Validation Journey's local-verification step must point at the target backend environment named in the body.
|
|
153
|
-
- For bug issues, the reported environment named in the issue body or reproduction steps drives the implementation base branch via `deploy.branches
|
|
153
|
+
- For bug issues, the reported environment named in the issue body or reproduction steps drives the implementation base branch via `deploy.branches`. If no environment can be found anywhere in the ticket, fall back to the configured default branch and record that assumption. If the reported environment is present but missing from `deploy.branches`, or its mapped branch is absent on the remote, stop and report the missing environment/branch mapping instead of defaulting. A non-integration environment fix must be merged and verified on that environment branch, then forward cherry-picked down to the integration branch through a linked follow-up.
|
|
@@ -130,4 +130,4 @@ Note: `done` may be a string or an env-keyed map (`{ dev, staging, production }`
|
|
|
130
130
|
- Never create or materially edit a ticket by calling MCP write tools directly — always delegate to `jira-write-ticket` so relationships, Gherkin criteria, and metadata gates are enforced
|
|
131
131
|
- If sign-in credentials are in the ticket, extract and pass them to the flow. If the ticket touches an authenticated surface and credentials are missing, that is a Step 2 failure — block and reassign rather than guessing.
|
|
132
132
|
- If the ticket has a Validation Journey section, pass it to the verifier agent. The Validation Journey's local-verification step must point at the target backend environment named in the description (for FE work, that's the deployed backend QA reported against).
|
|
133
|
-
- For bug tickets, the reported environment named in the description or reproduction steps drives the implementation base branch via `deploy.branches
|
|
133
|
+
- For bug tickets, the reported environment named in the description or reproduction steps drives the implementation base branch via `deploy.branches`. If no environment can be found anywhere in the ticket, fall back to the configured default branch and record that assumption. If the reported environment is present but missing from `deploy.branches`, or its mapped branch is absent on the remote, stop and report the missing environment/branch mapping instead of defaulting. A non-integration environment fix must be merged and verified on that environment branch, then forward cherry-picked down to the integration branch through a linked follow-up.
|
|
@@ -133,4 +133,4 @@ The label transitions ARE the canonical signal. The native `state` field stays a
|
|
|
133
133
|
- Never create or materially edit an item by calling MCP write tools directly — always delegate to `linear-write-issue` so relationships, Gherkin criteria, and metadata gates are enforced. Two explicit exceptions are permitted: (1) the Step 2 pre-flight failure path (when `linear-verify` returns `FAIL`) may call `lisa:linear-access operation: save-issue` and `lisa:linear-access operation: save-comment` directly to set `status:blocked`, add the configured `human_needed` marker label, and reassign to the creator — this narrow exception is already granted by the rule above; (2) the Step 3 triage path may call `lisa:linear-access operation: save-comment` to post triage findings and `lisa:linear-access operation: save-issue` to add the `claude-triaged-{repo}` label — these are lightweight metadata updates that do not create or materially edit ticket content and therefore do not need to route through `linear-write-issue`.
|
|
134
134
|
- If sign-in credentials are in the item, extract and pass them to the flow. If the item touches an authenticated surface and credentials are missing, that is a Step 2 failure — block and reassign rather than guessing.
|
|
135
135
|
- If the item has a Validation Journey section, pass it to the verifier agent. The Validation Journey's local-verification step must point at the target backend environment named in the description.
|
|
136
|
-
- For bug items, the reported environment named in the description or reproduction steps drives the implementation base branch via `deploy.branches
|
|
136
|
+
- For bug items, the reported environment named in the description or reproduction steps drives the implementation base branch via `deploy.branches`. If no environment can be found anywhere in the item, fall back to the configured default branch and record that assumption. If the reported environment is present but missing from `deploy.branches`, or its mapped branch is absent on the remote, stop and report the missing environment/branch mapping instead of defaulting. A non-integration environment fix must be merged and verified on that environment branch, then forward cherry-picked down to the integration branch through a linked follow-up.
|
|
@@ -25,7 +25,7 @@ information was already on the ticket; only the structure was missing).
|
|
|
25
25
|
reported environment from the item body/reproduction steps before recommending
|
|
26
26
|
any default: bare environment names (`dev`, `staging`, `prod`, `production`)
|
|
27
27
|
and environment-bearing URLs (for example `staging.<domain>`, `gql.staging.*`,
|
|
28
|
-
`dev.<domain>`) are authoritative. Only recommend the
|
|
28
|
+
`dev.<domain>`) are authoritative. Only recommend the repo's remote default branch when
|
|
29
29
|
no environment is discoverable anywhere in the work item, and record that as
|
|
30
30
|
an assumption.
|
|
31
31
|
- **Tier B — irreducibly human:** real credentials/access that exist nowhere on
|
|
@@ -463,9 +463,10 @@ If a project's terminal state is the same regardless of env, set `done` to a str
|
|
|
463
463
|
|
|
464
464
|
`deploy.branches` is also read in the **forward** direction by the build flow (`lisa:implement`): the environment a work item targets determines the branch the work is built on and the branch the PR opens against.
|
|
465
465
|
|
|
466
|
-
1. **Resolve the work item's target environment** — its `## Target Backend Environment` field.
|
|
467
|
-
2. **
|
|
468
|
-
3. **
|
|
466
|
+
1. **Resolve the work item's target environment** — its `## Target Backend Environment` field.
|
|
467
|
+
2. **If no environment is named**, use the **remote default branch** (`gh repo view --json defaultBranchRef`, or `origin/HEAD`) and record that default-branch assumption.
|
|
468
|
+
3. **If a reported environment exists**, map env → base branch via `deploy.branches` (e.g. `staging → staging`, `production → main`). A reported env absent from `deploy.branches`, or a mapped branch missing from the remote, must stop and report the exact missing environment-to-branch mapping; never guess and never silently fall back.
|
|
469
|
+
4. **Before any code is written**, `lisa:implement` fetches and **rebases the working branch onto `origin/<base>`, resolving conflicts**, so implementation builds on the latest target-environment code. **The PR then opens against that same base branch** (`target_branch=<base>` to `lisa:git-submit-pr`).
|
|
469
470
|
|
|
470
471
|
This is the exact inverse of the env-keyed `done` "Branch inference" above: `done` derives the env *from* the PR base branch (reverse); the build flow derives the base branch *from* the env (forward). Both use the one `deploy.branches` map, so the branch a PR targets and the `done` status it earns always agree.
|
|
471
472
|
|
|
@@ -54,9 +54,9 @@ spec.
|
|
|
54
54
|
reproduction steps. Bare words such as `dev`, `staging`, `prod`, and
|
|
55
55
|
`production` count, as do environment-bearing URLs such as
|
|
56
56
|
`staging.<domain>`, `gql.staging.*`, and `dev.<domain>`. That reported
|
|
57
|
-
environment is authoritative for the draft. Only recommend
|
|
58
|
-
default
|
|
59
|
-
|
|
57
|
+
environment is authoritative for the draft. Only recommend the repo's
|
|
58
|
+
remote default branch when no environment is discoverable anywhere in the
|
|
59
|
+
work item, and record the default as an explicit assumption.
|
|
60
60
|
|
|
61
61
|
**Tier B — irreducibly human (cannot invent — but still propose a default):**
|
|
62
62
|
|
|
@@ -71,7 +71,7 @@ Using the general-purpose agent in Team Lead session, Determine the name of this
|
|
|
71
71
|
Using the general-purpose agent in Team Lead session, **determine the base branch from the ticket's target environment, then sync the working branch onto the latest of it before any work** — so implementation always builds on current target-environment code:
|
|
72
72
|
|
|
73
73
|
1. **Resolve the target environment** from the resolved work item — its `## Target Backend Environment` section (the field the `*-write-*` / `*-add-journey` skills record). For bug work, the environment named in the report is authoritative: if the title/body/reproduction steps mention bare env names (`dev`, `staging`, `prod`, `production`) or env-bearing URLs (`staging.<domain>`, `gql.staging.*`, `dev.<domain>`), that reported environment wins over a generic autofill default.
|
|
74
|
-
2. **Map the environment to a base branch** via `.lisa.config.json` `deploy.branches` (e.g. `staging → staging`, `production → main`) — the forward direction of the same map the env-keyed `done` resolution uses in reverse (see the `config-resolution` rule). If the work item names **no** environment, the base branch is the **remote default branch** (`gh repo view --json defaultBranchRef -q .defaultBranchRef.name`, or `git remote set-head origin -a` then read `origin/HEAD`). If the reported environment is absent from `deploy.branches`, or its branch does not exist on the remote, **stop and report** — never guess a base and never silently fall back to the default/integration branch.
|
|
74
|
+
2. **Map the environment to a base branch** via `.lisa.config.json` `deploy.branches` (e.g. `staging → staging`, `production → main`) — the forward direction of the same map the env-keyed `done` resolution uses in reverse (see the `config-resolution` rule). If the work item names **no** environment, the base branch is the **remote default branch** (`gh repo view --json defaultBranchRef -q .defaultBranchRef.name`, or `git remote set-head origin -a` then read `origin/HEAD`), and record that fallback assumption in the plan/tracker artifact before proceeding. If the reported environment is absent from `deploy.branches`, or its branch does not exist on the remote, **stop and report** — never guess a base and never silently fall back to the default/integration branch.
|
|
75
75
|
3. **Establish the feature branch off the latest base, conflict-free:**
|
|
76
76
|
- `git fetch origin`.
|
|
77
77
|
- Already on a feature branch with an **open PR** → reuse it. If the PR's base ≠ the resolved base branch, surface the mismatch and re-target only with confirmation — the ticket's environment is the source of truth.
|