@codyswann/lisa 4.55.28 → 4.55.30
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/nightly-e2e-guard-behavior-certificate.js +2 -2
- package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
- package/dist/core/upstream-evidence-manifest.js +11 -9
- package/dist/core/upstream-evidence-manifest.js.map +1 -1
- package/package.json +4 -4
- 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-atlassian-access/SKILL.md +2 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-drive-pr-to-merge/SKILL.md +7 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-github-sync/SKILL.md +1 -1
- package/plugins/lisa/.codex-plugin/skills/lisa-linear-access/SKILL.md +2 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-tracker-evidence/SKILL.md +3 -1
- package/plugins/lisa/.codex-plugin/skills/lisa-tracker-sync/SKILL.md +8 -0
- package/plugins/lisa/rules/eager/report-actionability.md +6 -3
- package/plugins/lisa/skills/lisa-atlassian-access/SKILL.md +2 -0
- package/plugins/lisa/skills/lisa-drive-pr-to-merge/SKILL.md +7 -0
- package/plugins/lisa/skills/lisa-github-sync/SKILL.md +1 -1
- package/plugins/lisa/skills/lisa-linear-access/SKILL.md +2 -0
- package/plugins/lisa/skills/lisa-tracker-evidence/SKILL.md +3 -1
- package/plugins/lisa/skills/lisa-tracker-sync/SKILL.md +8 -0
- package/plugins/lisa-agy/plugin.json +1 -1
- package/plugins/lisa-agy/skills/lisa-atlassian-access/SKILL.md +2 -0
- package/plugins/lisa-agy/skills/lisa-drive-pr-to-merge/SKILL.md +7 -0
- package/plugins/lisa-agy/skills/lisa-github-sync/SKILL.md +1 -1
- package/plugins/lisa-agy/skills/lisa-linear-access/SKILL.md +2 -0
- package/plugins/lisa-agy/skills/lisa-tracker-evidence/SKILL.md +3 -1
- package/plugins/lisa-agy/skills/lisa-tracker-sync/SKILL.md +8 -0
- 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/test-specialist.agent.md +1 -1
- package/plugins/lisa-copilot/agents/verification-specialist.agent.md +4 -4
- package/plugins/lisa-copilot/rules/eager/report-actionability.md +6 -3
- package/plugins/lisa-copilot/skills/lisa-atlassian-access/SKILL.md +2 -0
- package/plugins/lisa-copilot/skills/lisa-codify-verification/SKILL.md +2 -2
- package/plugins/lisa-copilot/skills/lisa-drive-pr-to-merge/SKILL.md +7 -0
- package/plugins/lisa-copilot/skills/lisa-github-sync/SKILL.md +1 -1
- package/plugins/lisa-copilot/skills/lisa-linear-access/SKILL.md +2 -0
- package/plugins/lisa-copilot/skills/lisa-tracker-evidence/SKILL.md +3 -1
- package/plugins/lisa-copilot/skills/lisa-tracker-sync/SKILL.md +8 -0
- package/plugins/lisa-copilot/skills/lisa-verification-lifecycle/SKILL.md +1 -1
- package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cursor/agents/test-specialist.md +1 -1
- package/plugins/lisa-cursor/agents/verification-specialist.md +4 -4
- package/plugins/lisa-cursor/rules/report-actionability.mdc +6 -3
- package/plugins/lisa-cursor/skills/lisa-atlassian-access/SKILL.md +2 -0
- package/plugins/lisa-cursor/skills/lisa-codify-verification/SKILL.md +2 -2
- package/plugins/lisa-cursor/skills/lisa-drive-pr-to-merge/SKILL.md +7 -0
- package/plugins/lisa-cursor/skills/lisa-github-sync/SKILL.md +1 -1
- package/plugins/lisa-cursor/skills/lisa-linear-access/SKILL.md +2 -0
- package/plugins/lisa-cursor/skills/lisa-tracker-evidence/SKILL.md +3 -1
- package/plugins/lisa-cursor/skills/lisa-tracker-sync/SKILL.md +8 -0
- package/plugins/lisa-cursor/skills/lisa-verification-lifecycle/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/rules/eager/report-actionability.md +6 -3
- package/plugins/src/base/skills/lisa-atlassian-access/SKILL.md +2 -0
- package/plugins/src/base/skills/lisa-drive-pr-to-merge/SKILL.md +7 -0
- package/plugins/src/base/skills/lisa-github-sync/SKILL.md +1 -1
- package/plugins/src/base/skills/lisa-linear-access/SKILL.md +2 -0
- package/plugins/src/base/skills/lisa-tracker-evidence/SKILL.md +3 -1
- package/plugins/src/base/skills/lisa-tracker-sync/SKILL.md +8 -0
- package/scripts/generate-copilot-plugin-artifacts.mjs +2 -0
- package/scripts/generate-cursor-plugin-artifacts.mjs +2 -0
- package/scripts/lib/plugin-rule-citations.mjs +49 -0
package/package.json
CHANGED
|
@@ -187,7 +187,7 @@
|
|
|
187
187
|
"zod-validation-error": "^4.0.0"
|
|
188
188
|
},
|
|
189
189
|
"name": "@codyswann/lisa",
|
|
190
|
-
"version": "4.55.
|
|
190
|
+
"version": "4.55.30",
|
|
191
191
|
"description": "Claude Code governance framework that applies guardrails, guidance, and automated enforcement to projects",
|
|
192
192
|
"main": "dist/index.js",
|
|
193
193
|
"exports": {
|
|
@@ -336,7 +336,7 @@
|
|
|
336
336
|
"test": "tests"
|
|
337
337
|
},
|
|
338
338
|
"types": "./dist/index.d.ts",
|
|
339
|
-
"lisaReleaseCommit": "
|
|
340
|
-
"gitHead": "
|
|
341
|
-
"lisaReleaseTag": "v4.55.
|
|
339
|
+
"lisaReleaseCommit": "78f49328704ddc2031b53405e1c2981862af246b",
|
|
340
|
+
"gitHead": "78f49328704ddc2031b53405e1c2981862af246b",
|
|
341
|
+
"lisaReleaseTag": "v4.55.30"
|
|
342
342
|
}
|
|
@@ -12,6 +12,8 @@ Single chokepoint for all Atlassian operations. Routes each op to a substrate, e
|
|
|
12
12
|
|
|
13
13
|
The caller passes one operation plus its arguments. Operations are listed in the dispatch table below. The skill returns either the structured operation result (JSON when the substrate provides it) or a clear error.
|
|
14
14
|
|
|
15
|
+
For agent-composed JIRA or Confluence comments, apply `lisa-tracker-sync` — **Agent attribution** before posting. Preserve an existing disclosure and the exact format of machine-managed comments.
|
|
16
|
+
|
|
15
17
|
```text
|
|
16
18
|
operation: read-ticket key: PROJ-123
|
|
17
19
|
operation: write-ticket payload: {...}
|
|
@@ -63,6 +63,13 @@ merges" loop. Other skills delegate here instead of re-implementing it. Runs
|
|
|
63
63
|
build-intake skills use to diagnose-and-route without fixing in place.
|
|
64
64
|
|
|
65
65
|
Resolve `<owner>/<repo>` from `gh repo view --json nameWithOwner` (or the PR URL).
|
|
66
|
+
|
|
67
|
+
For agent-written review submissions, dismissal reasons, merge-message text and
|
|
68
|
+
existing PR updates, follow `lisa-tracker-sync` — **Agent attribution**.
|
|
69
|
+
Use the same short disclosure already present; a public lane name is optional.
|
|
70
|
+
Do not create an extra comment solely to attribute a label or auto-merge change,
|
|
71
|
+
or turn missing attribution into a merge gate. Attribute any relayed human
|
|
72
|
+
decision to its actual source; an agent's analysis is not an owner ruling.
|
|
66
73
|
Use plain `gh` + `git` so Claude and Codex execute identically.
|
|
67
74
|
|
|
68
75
|
## 0. Take the babysitter lease
|
|
@@ -44,7 +44,7 @@ Optional arguments include `pr_url=<url>` for the live pull request and `merge_s
|
|
|
44
44
|
For `--rollup`, skip this milestone path and use Step 5's classifier decision.
|
|
45
45
|
|
|
46
46
|
1. **Idempotency check** — read the issue's recent comments. If the most recent comment with the prefix `[claude-sync] <milestone>` matches the current milestone AND the body content is unchanged, skip the post (no duplicate).
|
|
47
|
-
2. **Add the comment
|
|
47
|
+
2. **Add the comment** using `lisa-tracker-sync` — **Agent attribution** for the agent-composed body; keep any existing disclosure:
|
|
48
48
|
|
|
49
49
|
```bash
|
|
50
50
|
gh issue comment <number> --repo <org>/<repo> --body-file /tmp/sync-comment.md
|
|
@@ -298,6 +298,8 @@ the same way.
|
|
|
298
298
|
Both comment operations take **either** `issue_id:` or `project_id:`. Exactly one
|
|
299
299
|
is required; passing both, or neither, is refused naming the operation.
|
|
300
300
|
|
|
301
|
+
For agent-composed `save-comment` bodies, apply `lisa-tracker-sync` — **Agent attribution** before posting. Preserve an existing disclosure and the exact format of machine-managed comments.
|
|
302
|
+
|
|
301
303
|
Linear treats a comment's target as one field on the same input type, so the
|
|
302
304
|
project form is not a second mechanism — it is the same mutation with a
|
|
303
305
|
different anchor. Direct introspection of `https://api.linear.app/graphql`:
|
|
@@ -10,6 +10,8 @@ Thin dispatcher. Resolves the configured destination tracker and delegates to th
|
|
|
10
10
|
|
|
11
11
|
See the `config-resolution` rule for configuration and dispatch table.
|
|
12
12
|
|
|
13
|
+
Apply `lisa-tracker-sync` — **Agent attribution** when composing evidence comments; a disclosure already present in the body needs no second trailer.
|
|
14
|
+
|
|
13
15
|
## Workflow
|
|
14
16
|
|
|
15
17
|
1. Resolve tracker config (same logic as `lisa-tracker-write`).
|
|
@@ -40,7 +42,7 @@ Apply this when authoring `evidence/comment.md` (and `evidence/comment.txt` for
|
|
|
40
42
|
|
|
41
43
|
The checklist is tracker-agnostic — the same shape works on JIRA, GitHub Issues, and Linear. Vendor skills only own the post/transition mechanics; the comment body is your responsibility.
|
|
42
44
|
|
|
43
|
-
1. **AI disclosure at the top.** Lead with "Update from
|
|
45
|
+
1. **AI disclosure at the top.** Lead with "Update from <actual runtime name> (AI agent)" and address the reporter / QA / PM by name when known. This satisfies the shared attribution convention without a second trailer.
|
|
44
46
|
2. **Own any prior mistake explicitly.** If an earlier triage or build pass got something wrong, say so up front. Don't bury it.
|
|
45
47
|
3. **Numbered step-by-step walk** of what you actually did in the browser/app, in plain language a non-engineer can follow:
|
|
46
48
|
- Exact env (URL, viewport size — e.g. `402×874` for an iOS-sized mobile flow)
|
|
@@ -10,6 +10,14 @@ Thin dispatcher. Resolves the configured destination tracker and delegates to th
|
|
|
10
10
|
|
|
11
11
|
See the `config-resolution` rule for configuration and dispatch table.
|
|
12
12
|
|
|
13
|
+
## Agent attribution
|
|
14
|
+
|
|
15
|
+
In agent-composed tracker comments and review messages, include one short plain-text attribution, such as `Agent-written by Codex.` Use the actual runtime's name; add a public lane name only when already known. An existing clear disclosure is enough. Do not publish session identifiers, invent a lane, alter supplied human text, or change machine-managed comment formats such as `[lisa-pr-link]`.
|
|
16
|
+
|
|
17
|
+
The account avatar identifies the credential owner, not necessarily the writer. When relaying a human decision, attribute it to the person and its actual source (a linked decision or an instruction in the current conversation). Present your own judgement as agent analysis, never as an owner ruling. Attribution itself grants no authority.
|
|
18
|
+
|
|
19
|
+
This is a writing convention: missing disclosure is not a reason to block work or file a compliance issue. Do not add identity infrastructure or extra audit comments just to supply it. Preserve an existing disclosure when a vendor skill posts or retries the same body.
|
|
20
|
+
|
|
13
21
|
## Workflow
|
|
14
22
|
|
|
15
23
|
1. Resolve tracker config (same logic as `lisa-tracker-write`).
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
# Report Actionability — Every Report Says What the Reader Must Do (load-bearing)
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
The specific failure this rule exists to prevent, observed in a review cycle: six findings were returned, three were fixed, and the report described **two of them in detail without ever stating that six existed**. Every sentence in it was true. The reader still had to ask "did you fix them?" — and the answer was partly yes, partly no, and one finding had not even been read. A subset presented in the shape of a whole is worse than silence, because silence does not create false confidence.
|
|
3
|
+
Reports must distinguish completed work, remaining work, and decisions the reader
|
|
4
|
+
needs to make. Account for the whole reviewed scope and clearly label any subset.
|
|
6
5
|
|
|
7
6
|
## Mandatory
|
|
8
7
|
|
|
@@ -20,4 +19,8 @@ The specific failure this rule exists to prevent, observed in a review cycle: si
|
|
|
20
19
|
|
|
21
20
|
Code-review findings, CI failures, test results, audit output, security scans, deploy status, and any list of problems handed to a human. It applies equally to reports you are proud of and reports that expose your own mistake — the second kind is where the temptation to describe a flattering subset is strongest.
|
|
22
21
|
|
|
22
|
+
## Agent attribution
|
|
23
|
+
|
|
24
|
+
Follow `lisa-tracker-sync` — **Agent attribution** for agent-composed tracker comments and review messages. The short convention lives in that portable skill so agents without a rules surface receive it too.
|
|
25
|
+
|
|
23
26
|
Detail, worked examples and the failure taxonomy: [reference/report-actionability.md](../reference/report-actionability.md).
|
|
@@ -12,6 +12,8 @@ Single chokepoint for all Atlassian operations. Routes each op to a substrate, e
|
|
|
12
12
|
|
|
13
13
|
The caller passes one operation plus its arguments. Operations are listed in the dispatch table below. The skill returns either the structured operation result (JSON when the substrate provides it) or a clear error.
|
|
14
14
|
|
|
15
|
+
For agent-composed JIRA or Confluence comments, apply `lisa-tracker-sync` — **Agent attribution** before posting. Preserve an existing disclosure and the exact format of machine-managed comments.
|
|
16
|
+
|
|
15
17
|
```text
|
|
16
18
|
operation: read-ticket key: PROJ-123
|
|
17
19
|
operation: write-ticket payload: {...}
|
|
@@ -63,6 +63,13 @@ merges" loop. Other skills delegate here instead of re-implementing it. Runs
|
|
|
63
63
|
build-intake skills use to diagnose-and-route without fixing in place.
|
|
64
64
|
|
|
65
65
|
Resolve `<owner>/<repo>` from `gh repo view --json nameWithOwner` (or the PR URL).
|
|
66
|
+
|
|
67
|
+
For agent-written review submissions, dismissal reasons, merge-message text and
|
|
68
|
+
existing PR updates, follow `lisa-tracker-sync` — **Agent attribution**.
|
|
69
|
+
Use the same short disclosure already present; a public lane name is optional.
|
|
70
|
+
Do not create an extra comment solely to attribute a label or auto-merge change,
|
|
71
|
+
or turn missing attribution into a merge gate. Attribute any relayed human
|
|
72
|
+
decision to its actual source; an agent's analysis is not an owner ruling.
|
|
66
73
|
Use plain `gh` + `git` so Claude and Codex execute identically.
|
|
67
74
|
|
|
68
75
|
## 0. Take the babysitter lease
|
|
@@ -44,7 +44,7 @@ Optional arguments include `pr_url=<url>` for the live pull request and `merge_s
|
|
|
44
44
|
For `--rollup`, skip this milestone path and use Step 5's classifier decision.
|
|
45
45
|
|
|
46
46
|
1. **Idempotency check** — read the issue's recent comments. If the most recent comment with the prefix `[claude-sync] <milestone>` matches the current milestone AND the body content is unchanged, skip the post (no duplicate).
|
|
47
|
-
2. **Add the comment
|
|
47
|
+
2. **Add the comment** using `lisa-tracker-sync` — **Agent attribution** for the agent-composed body; keep any existing disclosure:
|
|
48
48
|
|
|
49
49
|
```bash
|
|
50
50
|
gh issue comment <number> --repo <org>/<repo> --body-file /tmp/sync-comment.md
|
|
@@ -298,6 +298,8 @@ the same way.
|
|
|
298
298
|
Both comment operations take **either** `issue_id:` or `project_id:`. Exactly one
|
|
299
299
|
is required; passing both, or neither, is refused naming the operation.
|
|
300
300
|
|
|
301
|
+
For agent-composed `save-comment` bodies, apply `lisa-tracker-sync` — **Agent attribution** before posting. Preserve an existing disclosure and the exact format of machine-managed comments.
|
|
302
|
+
|
|
301
303
|
Linear treats a comment's target as one field on the same input type, so the
|
|
302
304
|
project form is not a second mechanism — it is the same mutation with a
|
|
303
305
|
different anchor. Direct introspection of `https://api.linear.app/graphql`:
|
|
@@ -10,6 +10,8 @@ Thin dispatcher. Resolves the configured destination tracker and delegates to th
|
|
|
10
10
|
|
|
11
11
|
See the `config-resolution` rule for configuration and dispatch table.
|
|
12
12
|
|
|
13
|
+
Apply `lisa-tracker-sync` — **Agent attribution** when composing evidence comments; a disclosure already present in the body needs no second trailer.
|
|
14
|
+
|
|
13
15
|
## Workflow
|
|
14
16
|
|
|
15
17
|
1. Resolve tracker config (same logic as `lisa-tracker-write`).
|
|
@@ -40,7 +42,7 @@ Apply this when authoring `evidence/comment.md` (and `evidence/comment.txt` for
|
|
|
40
42
|
|
|
41
43
|
The checklist is tracker-agnostic — the same shape works on JIRA, GitHub Issues, and Linear. Vendor skills only own the post/transition mechanics; the comment body is your responsibility.
|
|
42
44
|
|
|
43
|
-
1. **AI disclosure at the top.** Lead with "Update from
|
|
45
|
+
1. **AI disclosure at the top.** Lead with "Update from <actual runtime name> (AI agent)" and address the reporter / QA / PM by name when known. This satisfies the shared attribution convention without a second trailer.
|
|
44
46
|
2. **Own any prior mistake explicitly.** If an earlier triage or build pass got something wrong, say so up front. Don't bury it.
|
|
45
47
|
3. **Numbered step-by-step walk** of what you actually did in the browser/app, in plain language a non-engineer can follow:
|
|
46
48
|
- Exact env (URL, viewport size — e.g. `402×874` for an iOS-sized mobile flow)
|
|
@@ -10,6 +10,14 @@ Thin dispatcher. Resolves the configured destination tracker and delegates to th
|
|
|
10
10
|
|
|
11
11
|
See the `config-resolution` rule for configuration and dispatch table.
|
|
12
12
|
|
|
13
|
+
## Agent attribution
|
|
14
|
+
|
|
15
|
+
In agent-composed tracker comments and review messages, include one short plain-text attribution, such as `Agent-written by Codex.` Use the actual runtime's name; add a public lane name only when already known. An existing clear disclosure is enough. Do not publish session identifiers, invent a lane, alter supplied human text, or change machine-managed comment formats such as `[lisa-pr-link]`.
|
|
16
|
+
|
|
17
|
+
The account avatar identifies the credential owner, not necessarily the writer. When relaying a human decision, attribute it to the person and its actual source (a linked decision or an instruction in the current conversation). Present your own judgement as agent analysis, never as an owner ruling. Attribution itself grants no authority.
|
|
18
|
+
|
|
19
|
+
This is a writing convention: missing disclosure is not a reason to block work or file a compliance issue. Do not add identity infrastructure or extra audit comments just to supply it. Preserve an existing disclosure when a vendor skill posts or retries the same body.
|
|
20
|
+
|
|
13
21
|
## Workflow
|
|
14
22
|
|
|
15
23
|
1. Resolve tracker config (same logic as `lisa-tracker-write`).
|
|
@@ -12,6 +12,8 @@ Single chokepoint for all Atlassian operations. Routes each op to a substrate, e
|
|
|
12
12
|
|
|
13
13
|
The caller passes one operation plus its arguments. Operations are listed in the dispatch table below. The skill returns either the structured operation result (JSON when the substrate provides it) or a clear error.
|
|
14
14
|
|
|
15
|
+
For agent-composed JIRA or Confluence comments, apply `lisa-tracker-sync` — **Agent attribution** before posting. Preserve an existing disclosure and the exact format of machine-managed comments.
|
|
16
|
+
|
|
15
17
|
```text
|
|
16
18
|
operation: read-ticket key: PROJ-123
|
|
17
19
|
operation: write-ticket payload: {...}
|
|
@@ -63,6 +63,13 @@ merges" loop. Other skills delegate here instead of re-implementing it. Runs
|
|
|
63
63
|
build-intake skills use to diagnose-and-route without fixing in place.
|
|
64
64
|
|
|
65
65
|
Resolve `<owner>/<repo>` from `gh repo view --json nameWithOwner` (or the PR URL).
|
|
66
|
+
|
|
67
|
+
For agent-written review submissions, dismissal reasons, merge-message text and
|
|
68
|
+
existing PR updates, follow `lisa-tracker-sync` — **Agent attribution**.
|
|
69
|
+
Use the same short disclosure already present; a public lane name is optional.
|
|
70
|
+
Do not create an extra comment solely to attribute a label or auto-merge change,
|
|
71
|
+
or turn missing attribution into a merge gate. Attribute any relayed human
|
|
72
|
+
decision to its actual source; an agent's analysis is not an owner ruling.
|
|
66
73
|
Use plain `gh` + `git` so Claude and Codex execute identically.
|
|
67
74
|
|
|
68
75
|
## 0. Take the babysitter lease
|
|
@@ -44,7 +44,7 @@ Optional arguments include `pr_url=<url>` for the live pull request and `merge_s
|
|
|
44
44
|
For `--rollup`, skip this milestone path and use Step 5's classifier decision.
|
|
45
45
|
|
|
46
46
|
1. **Idempotency check** — read the issue's recent comments. If the most recent comment with the prefix `[claude-sync] <milestone>` matches the current milestone AND the body content is unchanged, skip the post (no duplicate).
|
|
47
|
-
2. **Add the comment
|
|
47
|
+
2. **Add the comment** using `lisa-tracker-sync` — **Agent attribution** for the agent-composed body; keep any existing disclosure:
|
|
48
48
|
|
|
49
49
|
```bash
|
|
50
50
|
gh issue comment <number> --repo <org>/<repo> --body-file /tmp/sync-comment.md
|
|
@@ -298,6 +298,8 @@ the same way.
|
|
|
298
298
|
Both comment operations take **either** `issue_id:` or `project_id:`. Exactly one
|
|
299
299
|
is required; passing both, or neither, is refused naming the operation.
|
|
300
300
|
|
|
301
|
+
For agent-composed `save-comment` bodies, apply `lisa-tracker-sync` — **Agent attribution** before posting. Preserve an existing disclosure and the exact format of machine-managed comments.
|
|
302
|
+
|
|
301
303
|
Linear treats a comment's target as one field on the same input type, so the
|
|
302
304
|
project form is not a second mechanism — it is the same mutation with a
|
|
303
305
|
different anchor. Direct introspection of `https://api.linear.app/graphql`:
|
|
@@ -10,6 +10,8 @@ Thin dispatcher. Resolves the configured destination tracker and delegates to th
|
|
|
10
10
|
|
|
11
11
|
See the `config-resolution` rule for configuration and dispatch table.
|
|
12
12
|
|
|
13
|
+
Apply `lisa-tracker-sync` — **Agent attribution** when composing evidence comments; a disclosure already present in the body needs no second trailer.
|
|
14
|
+
|
|
13
15
|
## Workflow
|
|
14
16
|
|
|
15
17
|
1. Resolve tracker config (same logic as `lisa-tracker-write`).
|
|
@@ -40,7 +42,7 @@ Apply this when authoring `evidence/comment.md` (and `evidence/comment.txt` for
|
|
|
40
42
|
|
|
41
43
|
The checklist is tracker-agnostic — the same shape works on JIRA, GitHub Issues, and Linear. Vendor skills only own the post/transition mechanics; the comment body is your responsibility.
|
|
42
44
|
|
|
43
|
-
1. **AI disclosure at the top.** Lead with "Update from
|
|
45
|
+
1. **AI disclosure at the top.** Lead with "Update from <actual runtime name> (AI agent)" and address the reporter / QA / PM by name when known. This satisfies the shared attribution convention without a second trailer.
|
|
44
46
|
2. **Own any prior mistake explicitly.** If an earlier triage or build pass got something wrong, say so up front. Don't bury it.
|
|
45
47
|
3. **Numbered step-by-step walk** of what you actually did in the browser/app, in plain language a non-engineer can follow:
|
|
46
48
|
- Exact env (URL, viewport size — e.g. `402×874` for an iOS-sized mobile flow)
|
|
@@ -10,6 +10,14 @@ Thin dispatcher. Resolves the configured destination tracker and delegates to th
|
|
|
10
10
|
|
|
11
11
|
See the `config-resolution` rule for configuration and dispatch table.
|
|
12
12
|
|
|
13
|
+
## Agent attribution
|
|
14
|
+
|
|
15
|
+
In agent-composed tracker comments and review messages, include one short plain-text attribution, such as `Agent-written by Codex.` Use the actual runtime's name; add a public lane name only when already known. An existing clear disclosure is enough. Do not publish session identifiers, invent a lane, alter supplied human text, or change machine-managed comment formats such as `[lisa-pr-link]`.
|
|
16
|
+
|
|
17
|
+
The account avatar identifies the credential owner, not necessarily the writer. When relaying a human decision, attribute it to the person and its actual source (a linked decision or an instruction in the current conversation). Present your own judgement as agent analysis, never as an owner ruling. Attribution itself grants no authority.
|
|
18
|
+
|
|
19
|
+
This is a writing convention: missing disclosure is not a reason to block work or file a compliance issue. Do not add identity infrastructure or extra audit comments just to supply it. Preserve an existing disclosure when a vendor skill posts or retries the same body.
|
|
20
|
+
|
|
13
21
|
## Workflow
|
|
14
22
|
|
|
15
23
|
1. Resolve tracker config (same logic as `lisa-tracker-write`).
|
|
@@ -21,7 +21,7 @@ You decide what has to be true for this change to be trusted, and design the tes
|
|
|
21
21
|
|
|
22
22
|
Do not write tests against the implementation's shape — they pass through a rewrite that breaks behaviour, which is the opposite of the job. Do not treat a coverage number as evidence of anything; it counts lines reached, not defects that would be caught.
|
|
23
23
|
|
|
24
|
-
Do not hand on a test you have not watched fail. A test that cannot fail is worse than a missing one: it reports the defect as absent and ends the search. Break the behaviour, watch the assertion fail and name the right place, restore. Watch especially for the assertion that is satisfiable by the test's own fixture rather than by the artifact under test — that one passes no matter what the production code does.
|
|
24
|
+
Do not hand on a test you have not watched fail. A test that cannot fail is worse than a missing one: it reports the defect as absent and ends the search. Break the behaviour, watch the assertion fail and name the right place, restore. Watch especially for the assertion that is satisfiable by the test's own fixture rather than by the artifact under test — that one passes no matter what the production code does. [`rules/reference/falsifiable-checks.md`](../rules/reference/falsifiable-checks.md) has the four observed shapes.
|
|
25
25
|
|
|
26
26
|
## What you hand on
|
|
27
27
|
|
|
@@ -12,7 +12,7 @@ skills:
|
|
|
12
12
|
|
|
13
13
|
You are a verification specialist. Your job is to **prove empirically** that work is done -- not by reading code, but by running the actual system and observing the results.
|
|
14
14
|
|
|
15
|
-
Read
|
|
15
|
+
Read [`rules/reference/verification.md`](../rules/reference/verification.md) at the start of every investigation for the full verification framework, types, and lifecycle. Read [`rules/reference/falsifiable-checks.md`](../rules/reference/falsifiable-checks.md) alongside it: every check YOU author — probe, script, codified spec, sweep — is subject to it, and a check that has not been shown capable of failing is reported as *unvalidated*, never as passing. Read [`rules/reference/claim-evidence-mapping.md`](../rules/reference/claim-evidence-mapping.md) too: it binds every claim to the **boundary** it asserts and every boundary to the evidence **kinds** that reach it. The verdict you write is what `spec-conformance-specialist` cross-checks — record each claim's `boundary`, its `required_evidence_kinds`, its `evidence_refs`, and its `not_established` list so a boundary mismatch is catchable rather than invisible.
|
|
16
16
|
|
|
17
17
|
## Core Philosophy
|
|
18
18
|
|
|
@@ -30,7 +30,7 @@ Confirm that quality gates (tests, typecheck, lint, format) pass. These are prer
|
|
|
30
30
|
|
|
31
31
|
### 2. Classify
|
|
32
32
|
|
|
33
|
-
Read
|
|
33
|
+
Read [`rules/reference/verification.md`](../rules/reference/verification.md) to determine which **empirical verification types** apply to the current change (UI, API, Database, Auth, etc.). Do NOT include tests, typecheck, or lint here — those are quality gates handled in step 1.
|
|
34
34
|
|
|
35
35
|
### 3. Discover Available Tools
|
|
36
36
|
|
|
@@ -124,11 +124,11 @@ For every empirical verification that produced PASS evidence, invoke the `codify
|
|
|
124
124
|
|
|
125
125
|
## Rules
|
|
126
126
|
|
|
127
|
-
- Always read
|
|
127
|
+
- Always read [`rules/reference/verification.md`](../rules/reference/verification.md) first for the project's verification standards and type taxonomy
|
|
128
128
|
- Follow the verification lifecycle: confirm quality gates, classify, check tooling, fail fast, plan, execute, codify, spec conformance, loop
|
|
129
129
|
- Every passing empirical verification must be codified as a regression test via `codify-verification` before declaring done (skip allowed only for PR / Documentation / Deploy / Investigate-Only)
|
|
130
130
|
- Tests, typecheck, lint, and format are quality gates (prerequisites), NOT verification — never report them as verification evidence
|
|
131
|
-
- Falsify every check you author before reporting a clean result: break the guarded property, confirm the check fails and NAMES the right location, restore. Report what you broke alongside the result — see
|
|
131
|
+
- Falsify every check you author before reporting a clean result: break the guarded property, confirm the check fails and NAMES the right location, restore. Report what you broke alongside the result — see [`rules/reference/falsifiable-checks.md`](../rules/reference/falsifiable-checks.md)
|
|
132
132
|
- A zero-hit sweep is meaningless until the detector has found known instances on a ref where the defect still exists; a passing probe needs a deliberate bite control that MUST report a problem
|
|
133
133
|
- State each clean result's blind spot (presence vs. value, reachability, class completeness) — a negative result describes what the check can perceive, not the code
|
|
134
134
|
- Discover existing project scripts and tools before creating new ones
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
# Report Actionability — Every Report Says What the Reader Must Do (load-bearing)
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
The specific failure this rule exists to prevent, observed in a review cycle: six findings were returned, three were fixed, and the report described **two of them in detail without ever stating that six existed**. Every sentence in it was true. The reader still had to ask "did you fix them?" — and the answer was partly yes, partly no, and one finding had not even been read. A subset presented in the shape of a whole is worse than silence, because silence does not create false confidence.
|
|
3
|
+
Reports must distinguish completed work, remaining work, and decisions the reader
|
|
4
|
+
needs to make. Account for the whole reviewed scope and clearly label any subset.
|
|
6
5
|
|
|
7
6
|
## Mandatory
|
|
8
7
|
|
|
@@ -20,4 +19,8 @@ The specific failure this rule exists to prevent, observed in a review cycle: si
|
|
|
20
19
|
|
|
21
20
|
Code-review findings, CI failures, test results, audit output, security scans, deploy status, and any list of problems handed to a human. It applies equally to reports you are proud of and reports that expose your own mistake — the second kind is where the temptation to describe a flattering subset is strongest.
|
|
22
21
|
|
|
22
|
+
## Agent attribution
|
|
23
|
+
|
|
24
|
+
Follow `lisa-tracker-sync` — **Agent attribution** for agent-composed tracker comments and review messages. The short convention lives in that portable skill so agents without a rules surface receive it too.
|
|
25
|
+
|
|
23
26
|
Detail, worked examples and the failure taxonomy: [reference/report-actionability.md](../reference/report-actionability.md).
|
|
@@ -12,6 +12,8 @@ Single chokepoint for all Atlassian operations. Routes each op to a substrate, e
|
|
|
12
12
|
|
|
13
13
|
The caller passes one operation plus its arguments. Operations are listed in the dispatch table below. The skill returns either the structured operation result (JSON when the substrate provides it) or a clear error.
|
|
14
14
|
|
|
15
|
+
For agent-composed JIRA or Confluence comments, apply `lisa-tracker-sync` — **Agent attribution** before posting. Preserve an existing disclosure and the exact format of machine-managed comments.
|
|
16
|
+
|
|
15
17
|
```text
|
|
16
18
|
operation: read-ticket key: PROJ-123
|
|
17
19
|
operation: write-ticket payload: {...}
|
|
@@ -145,7 +145,7 @@ Confirm:
|
|
|
145
145
|
1. The test PASSES against the current code (the change being shipped)
|
|
146
146
|
2. The test ACTUALLY FAILS without the change — observed, not reasoned about
|
|
147
147
|
|
|
148
|
-
**Step 2 is mandatory for every codified test, and "mentally reverting" does not satisfy it.** Mental reversion is the exact mechanism by which non-functional guards ship: the author believes the assertion is load-bearing, and it is not. Break the guarded property for real, run the test, and read the failure. See
|
|
148
|
+
**Step 2 is mandatory for every codified test, and "mentally reverting" does not satisfy it.** Mental reversion is the exact mechanism by which non-functional guards ship: the author believes the assertion is load-bearing, and it is not. Break the guarded property for real, run the test, and read the failure. See [`rules/reference/falsifiable-checks.md`](../../rules/reference/falsifiable-checks.md) for the four observed ways a check passes while asserting nothing.
|
|
149
149
|
|
|
150
150
|
Do it one of these ways, in order of preference:
|
|
151
151
|
|
|
@@ -204,7 +204,7 @@ If codification was skipped, an explicit reason recorded in the report (one of t
|
|
|
204
204
|
## Rules
|
|
205
205
|
|
|
206
206
|
- Never claim a verification is codified without running the new test and observing it pass
|
|
207
|
-
- Never claim it is codified without observing it **FAIL** on a real break — mental reversion is not observation, and a test whose failure was never seen is unvalidated, not a gate (
|
|
207
|
+
- Never claim it is codified without observing it **FAIL** on a real break — mental reversion is not observation, and a test whose failure was never seen is unvalidated, not a gate ([`rules/reference/falsifiable-checks.md`](../../rules/reference/falsifiable-checks.md))
|
|
208
208
|
- Never let the assertion be satisfiable by the test's own fixture instead of the artifact under test — bind it to the real document/config/output
|
|
209
209
|
- Never trust a revert-to-verify on generated, schema-validated, or cached input without confirming the input actually changed; a failed generator silently leaves the old artifact and the test "passes" on stale bytes
|
|
210
210
|
- Never disable, skip, or `.skip()` the new test "temporarily" to make CI green — fix the test or fix the underlying change
|
|
@@ -63,6 +63,13 @@ merges" loop. Other skills delegate here instead of re-implementing it. Runs
|
|
|
63
63
|
build-intake skills use to diagnose-and-route without fixing in place.
|
|
64
64
|
|
|
65
65
|
Resolve `<owner>/<repo>` from `gh repo view --json nameWithOwner` (or the PR URL).
|
|
66
|
+
|
|
67
|
+
For agent-written review submissions, dismissal reasons, merge-message text and
|
|
68
|
+
existing PR updates, follow `lisa-tracker-sync` — **Agent attribution**.
|
|
69
|
+
Use the same short disclosure already present; a public lane name is optional.
|
|
70
|
+
Do not create an extra comment solely to attribute a label or auto-merge change,
|
|
71
|
+
or turn missing attribution into a merge gate. Attribute any relayed human
|
|
72
|
+
decision to its actual source; an agent's analysis is not an owner ruling.
|
|
66
73
|
Use plain `gh` + `git` so Claude and Codex execute identically.
|
|
67
74
|
|
|
68
75
|
## 0. Take the babysitter lease
|
|
@@ -44,7 +44,7 @@ Optional arguments include `pr_url=<url>` for the live pull request and `merge_s
|
|
|
44
44
|
For `--rollup`, skip this milestone path and use Step 5's classifier decision.
|
|
45
45
|
|
|
46
46
|
1. **Idempotency check** — read the issue's recent comments. If the most recent comment with the prefix `[claude-sync] <milestone>` matches the current milestone AND the body content is unchanged, skip the post (no duplicate).
|
|
47
|
-
2. **Add the comment
|
|
47
|
+
2. **Add the comment** using `lisa-tracker-sync` — **Agent attribution** for the agent-composed body; keep any existing disclosure:
|
|
48
48
|
|
|
49
49
|
```bash
|
|
50
50
|
gh issue comment <number> --repo <org>/<repo> --body-file /tmp/sync-comment.md
|
|
@@ -298,6 +298,8 @@ the same way.
|
|
|
298
298
|
Both comment operations take **either** `issue_id:` or `project_id:`. Exactly one
|
|
299
299
|
is required; passing both, or neither, is refused naming the operation.
|
|
300
300
|
|
|
301
|
+
For agent-composed `save-comment` bodies, apply `lisa-tracker-sync` — **Agent attribution** before posting. Preserve an existing disclosure and the exact format of machine-managed comments.
|
|
302
|
+
|
|
301
303
|
Linear treats a comment's target as one field on the same input type, so the
|
|
302
304
|
project form is not a second mechanism — it is the same mutation with a
|
|
303
305
|
different anchor. Direct introspection of `https://api.linear.app/graphql`:
|
|
@@ -10,6 +10,8 @@ Thin dispatcher. Resolves the configured destination tracker and delegates to th
|
|
|
10
10
|
|
|
11
11
|
See the `config-resolution` rule for configuration and dispatch table.
|
|
12
12
|
|
|
13
|
+
Apply `lisa-tracker-sync` — **Agent attribution** when composing evidence comments; a disclosure already present in the body needs no second trailer.
|
|
14
|
+
|
|
13
15
|
## Workflow
|
|
14
16
|
|
|
15
17
|
1. Resolve tracker config (same logic as `lisa-tracker-write`).
|
|
@@ -40,7 +42,7 @@ Apply this when authoring `evidence/comment.md` (and `evidence/comment.txt` for
|
|
|
40
42
|
|
|
41
43
|
The checklist is tracker-agnostic — the same shape works on JIRA, GitHub Issues, and Linear. Vendor skills only own the post/transition mechanics; the comment body is your responsibility.
|
|
42
44
|
|
|
43
|
-
1. **AI disclosure at the top.** Lead with "Update from
|
|
45
|
+
1. **AI disclosure at the top.** Lead with "Update from <actual runtime name> (AI agent)" and address the reporter / QA / PM by name when known. This satisfies the shared attribution convention without a second trailer.
|
|
44
46
|
2. **Own any prior mistake explicitly.** If an earlier triage or build pass got something wrong, say so up front. Don't bury it.
|
|
45
47
|
3. **Numbered step-by-step walk** of what you actually did in the browser/app, in plain language a non-engineer can follow:
|
|
46
48
|
- Exact env (URL, viewport size — e.g. `402×874` for an iOS-sized mobile flow)
|
|
@@ -10,6 +10,14 @@ Thin dispatcher. Resolves the configured destination tracker and delegates to th
|
|
|
10
10
|
|
|
11
11
|
See the `config-resolution` rule for configuration and dispatch table.
|
|
12
12
|
|
|
13
|
+
## Agent attribution
|
|
14
|
+
|
|
15
|
+
In agent-composed tracker comments and review messages, include one short plain-text attribution, such as `Agent-written by Codex.` Use the actual runtime's name; add a public lane name only when already known. An existing clear disclosure is enough. Do not publish session identifiers, invent a lane, alter supplied human text, or change machine-managed comment formats such as `[lisa-pr-link]`.
|
|
16
|
+
|
|
17
|
+
The account avatar identifies the credential owner, not necessarily the writer. When relaying a human decision, attribute it to the person and its actual source (a linked decision or an instruction in the current conversation). Present your own judgement as agent analysis, never as an owner ruling. Attribution itself grants no authority.
|
|
18
|
+
|
|
19
|
+
This is a writing convention: missing disclosure is not a reason to block work or file a compliance issue. Do not add identity infrastructure or extra audit comments just to supply it. Preserve an existing disclosure when a vendor skill posts or retries the same body.
|
|
20
|
+
|
|
13
21
|
## Workflow
|
|
14
22
|
|
|
15
23
|
1. Resolve tracker config (same logic as `lisa-tracker-write`).
|
|
@@ -27,7 +27,7 @@ Confirm that quality gates (tests, typecheck, lint, format) pass. These are prer
|
|
|
27
27
|
|
|
28
28
|
### 2. Classify
|
|
29
29
|
|
|
30
|
-
Determine which **empirical verification types** apply based on the change. Check each type in the Verification Types table in
|
|
30
|
+
Determine which **empirical verification types** apply based on the change. Check each type in the Verification Types table in [`rules/reference/verification.md`](../../rules/reference/verification.md) against the change scope. Every applicable type requires running the actual system and observing results — not just running tests.
|
|
31
31
|
|
|
32
32
|
### 3. Check Tooling
|
|
33
33
|
|
|
@@ -21,7 +21,7 @@ You decide what has to be true for this change to be trusted, and design the tes
|
|
|
21
21
|
|
|
22
22
|
Do not write tests against the implementation's shape — they pass through a rewrite that breaks behaviour, which is the opposite of the job. Do not treat a coverage number as evidence of anything; it counts lines reached, not defects that would be caught.
|
|
23
23
|
|
|
24
|
-
Do not hand on a test you have not watched fail. A test that cannot fail is worse than a missing one: it reports the defect as absent and ends the search. Break the behaviour, watch the assertion fail and name the right place, restore. Watch especially for the assertion that is satisfiable by the test's own fixture rather than by the artifact under test — that one passes no matter what the production code does.
|
|
24
|
+
Do not hand on a test you have not watched fail. A test that cannot fail is worse than a missing one: it reports the defect as absent and ends the search. Break the behaviour, watch the assertion fail and name the right place, restore. Watch especially for the assertion that is satisfiable by the test's own fixture rather than by the artifact under test — that one passes no matter what the production code does. [`rules/falsifiable-checks-reference.mdc`](../rules/falsifiable-checks-reference.mdc) has the four observed shapes.
|
|
25
25
|
|
|
26
26
|
## What you hand on
|
|
27
27
|
|