@codyswann/lisa 4.55.4 → 4.55.6
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/cdk/copy-overwrite/tsconfig.eslint.json +1 -1
- package/dist/core/lisa-owned-hash-ledger.d.ts.map +1 -1
- package/dist/core/lisa-owned-hash-ledger.js +6 -0
- package/dist/core/lisa-owned-hash-ledger.js.map +1 -1
- 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 +42 -40
- package/dist/core/upstream-evidence-manifest.js.map +1 -1
- package/expo/copy-overwrite/scripts/bdd/validate.mjs +84 -8
- package/expo/copy-overwrite/scripts/check-bdd-coverage.mjs +1 -1
- package/expo/copy-overwrite/tsconfig.eslint.json +1 -1
- package/nestjs/copy-overwrite/tsconfig.eslint.json +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-exploratory-qa/SKILL.md +8 -6
- package/plugins/lisa/.codex-plugin/skills/lisa-github-build-intake/SKILL.md +3 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-github-write-issue/SKILL.md +6 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-jira-build-intake/SKILL.md +3 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-jira-write-ticket/SKILL.md +6 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-learnings-audit/SKILL.md +2 -2
- package/plugins/lisa/.codex-plugin/skills/lisa-linear-build-intake/SKILL.md +3 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-linear-write-issue/SKILL.md +6 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-monitor/SKILL.md +1 -1
- package/plugins/lisa/.codex-plugin/skills/lisa-persist-learning/SKILL.md +5 -1
- package/plugins/lisa/.codex-plugin/skills/lisa-prd-source-write/SKILL.md +1 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-project-ideation/SKILL.md +7 -5
- package/plugins/lisa/.codex-plugin/skills/lisa-repair-intake/SKILL.md +2 -3
- package/plugins/lisa/.codex-plugin/skills/lisa-research/SKILL.md +6 -2
- package/plugins/lisa/.codex-plugin/skills/lisa-rework-triage/SKILL.md +16 -13
- package/plugins/lisa/.codex-plugin/skills/lisa-track/SKILL.md +24 -6
- package/plugins/lisa/commands/exploratory-qa.md +2 -2
- package/plugins/lisa/rules/eager/do-it-now.md +5 -5
- package/plugins/lisa/rules/eager/tracked-work.md +2 -0
- package/plugins/lisa/rules/eager/upstream-to-lisa.md +7 -18
- package/plugins/lisa/rules/reference/claim-time-guards.md +4 -0
- package/plugins/lisa/rules/reference/do-it-now.md +9 -27
- package/plugins/lisa/rules/reference/observability-audit.md +2 -2
- package/plugins/lisa/rules/reference/ready-role-filing.md +6 -2
- package/plugins/lisa/rules/reference/rejection-detection.md +8 -2
- package/plugins/lisa/rules/reference/tracked-work.md +2 -0
- package/plugins/lisa/rules/reference/upstream-to-lisa.md +14 -43
- package/plugins/lisa/skills/lisa-exploratory-qa/SKILL.md +9 -7
- package/plugins/lisa/skills/lisa-github-build-intake/SKILL.md +3 -0
- package/plugins/lisa/skills/lisa-github-write-issue/SKILL.md +6 -0
- package/plugins/lisa/skills/lisa-jira-build-intake/SKILL.md +3 -0
- package/plugins/lisa/skills/lisa-jira-write-ticket/SKILL.md +6 -0
- package/plugins/lisa/skills/lisa-learnings-audit/SKILL.md +2 -2
- package/plugins/lisa/skills/lisa-linear-build-intake/SKILL.md +3 -0
- package/plugins/lisa/skills/lisa-linear-write-issue/SKILL.md +6 -0
- package/plugins/lisa/skills/lisa-monitor/SKILL.md +1 -1
- package/plugins/lisa/skills/lisa-persist-learning/SKILL.md +5 -1
- package/plugins/lisa/skills/lisa-prd-source-write/SKILL.md +1 -0
- package/plugins/lisa/skills/lisa-project-ideation/SKILL.md +7 -5
- package/plugins/lisa/skills/lisa-repair-intake/SKILL.md +2 -3
- package/plugins/lisa/skills/lisa-research/SKILL.md +6 -2
- package/plugins/lisa/skills/lisa-rework-triage/SKILL.md +16 -13
- package/plugins/lisa/skills/lisa-track/SKILL.md +24 -6
- package/plugins/lisa-agy/commands/lisa/exploratory-qa.md +2 -2
- package/plugins/lisa-agy/plugin.json +1 -1
- package/plugins/lisa-agy/skills/lisa-exploratory-qa/SKILL.md +9 -7
- package/plugins/lisa-agy/skills/lisa-github-build-intake/SKILL.md +3 -0
- package/plugins/lisa-agy/skills/lisa-github-write-issue/SKILL.md +6 -0
- package/plugins/lisa-agy/skills/lisa-jira-build-intake/SKILL.md +3 -0
- package/plugins/lisa-agy/skills/lisa-jira-write-ticket/SKILL.md +6 -0
- package/plugins/lisa-agy/skills/lisa-learnings-audit/SKILL.md +2 -2
- package/plugins/lisa-agy/skills/lisa-linear-build-intake/SKILL.md +3 -0
- package/plugins/lisa-agy/skills/lisa-linear-write-issue/SKILL.md +6 -0
- package/plugins/lisa-agy/skills/lisa-monitor/SKILL.md +1 -1
- package/plugins/lisa-agy/skills/lisa-persist-learning/SKILL.md +5 -1
- package/plugins/lisa-agy/skills/lisa-prd-source-write/SKILL.md +1 -0
- package/plugins/lisa-agy/skills/lisa-project-ideation/SKILL.md +7 -5
- package/plugins/lisa-agy/skills/lisa-repair-intake/SKILL.md +2 -3
- package/plugins/lisa-agy/skills/lisa-research/SKILL.md +6 -2
- package/plugins/lisa-agy/skills/lisa-rework-triage/SKILL.md +16 -13
- package/plugins/lisa-agy/skills/lisa-track/SKILL.md +24 -6
- package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk-agy/plugin.json +1 -1
- package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-copilot/commands/lisa/exploratory-qa.md +2 -2
- package/plugins/lisa-copilot/rules/eager/do-it-now.md +5 -5
- package/plugins/lisa-copilot/rules/eager/tracked-work.md +2 -0
- package/plugins/lisa-copilot/rules/eager/upstream-to-lisa.md +7 -18
- package/plugins/lisa-copilot/rules/reference/claim-time-guards.md +4 -0
- package/plugins/lisa-copilot/rules/reference/do-it-now.md +9 -27
- package/plugins/lisa-copilot/rules/reference/observability-audit.md +2 -2
- package/plugins/lisa-copilot/rules/reference/ready-role-filing.md +6 -2
- package/plugins/lisa-copilot/rules/reference/rejection-detection.md +8 -2
- package/plugins/lisa-copilot/rules/reference/tracked-work.md +2 -0
- package/plugins/lisa-copilot/rules/reference/upstream-to-lisa.md +14 -43
- package/plugins/lisa-copilot/skills/lisa-exploratory-qa/SKILL.md +9 -7
- package/plugins/lisa-copilot/skills/lisa-github-build-intake/SKILL.md +3 -0
- package/plugins/lisa-copilot/skills/lisa-github-write-issue/SKILL.md +6 -0
- package/plugins/lisa-copilot/skills/lisa-jira-build-intake/SKILL.md +3 -0
- package/plugins/lisa-copilot/skills/lisa-jira-write-ticket/SKILL.md +6 -0
- package/plugins/lisa-copilot/skills/lisa-learnings-audit/SKILL.md +2 -2
- package/plugins/lisa-copilot/skills/lisa-linear-build-intake/SKILL.md +3 -0
- package/plugins/lisa-copilot/skills/lisa-linear-write-issue/SKILL.md +6 -0
- package/plugins/lisa-copilot/skills/lisa-monitor/SKILL.md +1 -1
- package/plugins/lisa-copilot/skills/lisa-persist-learning/SKILL.md +5 -1
- package/plugins/lisa-copilot/skills/lisa-prd-source-write/SKILL.md +1 -0
- package/plugins/lisa-copilot/skills/lisa-project-ideation/SKILL.md +7 -5
- package/plugins/lisa-copilot/skills/lisa-repair-intake/SKILL.md +2 -3
- package/plugins/lisa-copilot/skills/lisa-research/SKILL.md +6 -2
- package/plugins/lisa-copilot/skills/lisa-rework-triage/SKILL.md +16 -13
- package/plugins/lisa-copilot/skills/lisa-track/SKILL.md +24 -6
- package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cursor/commands/lisa/exploratory-qa.md +2 -2
- package/plugins/lisa-cursor/rules/claim-time-guards-reference.mdc +4 -0
- package/plugins/lisa-cursor/rules/do-it-now-reference.mdc +9 -27
- package/plugins/lisa-cursor/rules/do-it-now.mdc +5 -5
- package/plugins/lisa-cursor/rules/observability-audit-reference.mdc +2 -2
- package/plugins/lisa-cursor/rules/ready-role-filing-reference.mdc +6 -2
- package/plugins/lisa-cursor/rules/rejection-detection-reference.mdc +8 -2
- package/plugins/lisa-cursor/rules/tracked-work-reference.mdc +2 -0
- package/plugins/lisa-cursor/rules/tracked-work.mdc +2 -0
- package/plugins/lisa-cursor/rules/upstream-to-lisa-reference.mdc +14 -43
- package/plugins/lisa-cursor/rules/upstream-to-lisa.mdc +7 -18
- package/plugins/lisa-cursor/skills/lisa-exploratory-qa/SKILL.md +9 -7
- package/plugins/lisa-cursor/skills/lisa-github-build-intake/SKILL.md +3 -0
- package/plugins/lisa-cursor/skills/lisa-github-write-issue/SKILL.md +6 -0
- package/plugins/lisa-cursor/skills/lisa-jira-build-intake/SKILL.md +3 -0
- package/plugins/lisa-cursor/skills/lisa-jira-write-ticket/SKILL.md +6 -0
- package/plugins/lisa-cursor/skills/lisa-learnings-audit/SKILL.md +2 -2
- package/plugins/lisa-cursor/skills/lisa-linear-build-intake/SKILL.md +3 -0
- package/plugins/lisa-cursor/skills/lisa-linear-write-issue/SKILL.md +6 -0
- package/plugins/lisa-cursor/skills/lisa-monitor/SKILL.md +1 -1
- package/plugins/lisa-cursor/skills/lisa-persist-learning/SKILL.md +5 -1
- package/plugins/lisa-cursor/skills/lisa-prd-source-write/SKILL.md +1 -0
- package/plugins/lisa-cursor/skills/lisa-project-ideation/SKILL.md +7 -5
- package/plugins/lisa-cursor/skills/lisa-repair-intake/SKILL.md +2 -3
- package/plugins/lisa-cursor/skills/lisa-research/SKILL.md +6 -2
- package/plugins/lisa-cursor/skills/lisa-rework-triage/SKILL.md +16 -13
- package/plugins/lisa-cursor/skills/lisa-track/SKILL.md +24 -6
- package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-expo/.codex-plugin/skills/e2e-coverage-gaps/SKILL.md +21 -9
- package/plugins/lisa-expo/.codex-plugin/skills/lisa-e2e-coverage-gaps/SKILL.md +1 -1
- package/plugins/lisa-expo/commands/e2e-coverage-gaps.md +2 -2
- package/plugins/lisa-expo/skills/e2e-coverage-gaps/SKILL.md +22 -10
- package/plugins/lisa-expo-agy/commands/lisa/e2e-coverage-gaps.md +2 -2
- package/plugins/lisa-expo-agy/plugin.json +1 -1
- package/plugins/lisa-expo-agy/skills/e2e-coverage-gaps/SKILL.md +22 -10
- package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo-copilot/commands/lisa/e2e-coverage-gaps.md +2 -2
- package/plugins/lisa-expo-copilot/skills/e2e-coverage-gaps/SKILL.md +22 -10
- package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo-cursor/commands/lisa/e2e-coverage-gaps.md +2 -2
- package/plugins/lisa-expo-cursor/skills/e2e-coverage-gaps/SKILL.md +22 -10
- 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/.codex-plugin/skills/e2e-coverage-gaps/SKILL.md +21 -9
- package/plugins/lisa-harper-fabric/.codex-plugin/skills/lisa-e2e-coverage-gaps/SKILL.md +1 -1
- package/plugins/lisa-harper-fabric/commands/e2e-coverage-gaps.md +2 -2
- package/plugins/lisa-harper-fabric/skills/e2e-coverage-gaps/SKILL.md +22 -10
- package/plugins/lisa-harper-fabric-agy/commands/lisa/e2e-coverage-gaps.md +2 -2
- package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-agy/skills/e2e-coverage-gaps/SKILL.md +22 -10
- package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-copilot/commands/lisa/e2e-coverage-gaps.md +2 -2
- package/plugins/lisa-harper-fabric-copilot/skills/e2e-coverage-gaps/SKILL.md +22 -10
- package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-cursor/commands/lisa/e2e-coverage-gaps.md +2 -2
- package/plugins/lisa-harper-fabric-cursor/skills/e2e-coverage-gaps/SKILL.md +22 -10
- 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/.codex-plugin/skills/e2e-coverage-gaps/SKILL.md +21 -9
- package/plugins/lisa-rails/.codex-plugin/skills/lisa-e2e-coverage-gaps/SKILL.md +1 -1
- package/plugins/lisa-rails/commands/e2e-coverage-gaps.md +2 -2
- package/plugins/lisa-rails/skills/e2e-coverage-gaps/SKILL.md +22 -10
- package/plugins/lisa-rails-agy/commands/lisa/e2e-coverage-gaps.md +2 -2
- package/plugins/lisa-rails-agy/plugin.json +1 -1
- package/plugins/lisa-rails-agy/skills/e2e-coverage-gaps/SKILL.md +22 -10
- package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails-copilot/commands/lisa/e2e-coverage-gaps.md +2 -2
- package/plugins/lisa-rails-copilot/skills/e2e-coverage-gaps/SKILL.md +22 -10
- package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails-cursor/commands/lisa/e2e-coverage-gaps.md +2 -2
- package/plugins/lisa-rails-cursor/skills/e2e-coverage-gaps/SKILL.md +22 -10
- 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/scripts/_wiki-lib.mjs +2 -2
- package/plugins/lisa-wiki-agy/plugin.json +1 -1
- package/plugins/lisa-wiki-agy/scripts/_wiki-lib.mjs +2 -2
- package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki-copilot/scripts/_wiki-lib.mjs +2 -2
- package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki-cursor/scripts/_wiki-lib.mjs +2 -2
- package/plugins/src/base/commands/exploratory-qa.md +2 -2
- package/plugins/src/base/rules/eager/do-it-now.md +5 -5
- package/plugins/src/base/rules/eager/tracked-work.md +2 -0
- package/plugins/src/base/rules/eager/upstream-to-lisa.md +7 -18
- package/plugins/src/base/rules/reference/claim-time-guards.md +4 -0
- package/plugins/src/base/rules/reference/do-it-now.md +9 -27
- package/plugins/src/base/rules/reference/observability-audit.md +2 -2
- package/plugins/src/base/rules/reference/ready-role-filing.md +6 -2
- package/plugins/src/base/rules/reference/rejection-detection.md +8 -2
- package/plugins/src/base/rules/reference/tracked-work.md +2 -0
- package/plugins/src/base/rules/reference/upstream-to-lisa.md +14 -43
- package/plugins/src/base/skills/lisa-exploratory-qa/SKILL.md +9 -7
- package/plugins/src/base/skills/lisa-github-build-intake/SKILL.md +3 -0
- package/plugins/src/base/skills/lisa-github-write-issue/SKILL.md +6 -0
- package/plugins/src/base/skills/lisa-jira-build-intake/SKILL.md +3 -0
- package/plugins/src/base/skills/lisa-jira-write-ticket/SKILL.md +6 -0
- package/plugins/src/base/skills/lisa-learnings-audit/SKILL.md +2 -2
- package/plugins/src/base/skills/lisa-linear-build-intake/SKILL.md +3 -0
- package/plugins/src/base/skills/lisa-linear-write-issue/SKILL.md +6 -0
- package/plugins/src/base/skills/lisa-monitor/SKILL.md +1 -1
- package/plugins/src/base/skills/lisa-persist-learning/SKILL.md +5 -1
- package/plugins/src/base/skills/lisa-prd-source-write/SKILL.md +1 -0
- package/plugins/src/base/skills/lisa-project-ideation/SKILL.md +7 -5
- package/plugins/src/base/skills/lisa-repair-intake/SKILL.md +2 -3
- package/plugins/src/base/skills/lisa-research/SKILL.md +6 -2
- package/plugins/src/base/skills/lisa-rework-triage/SKILL.md +16 -13
- package/plugins/src/base/skills/lisa-track/SKILL.md +24 -6
- package/plugins/src/expo/commands/e2e-coverage-gaps.md +2 -2
- package/plugins/src/expo/skills/e2e-coverage-gaps/SKILL.md +22 -10
- package/plugins/src/harper-fabric/commands/e2e-coverage-gaps.md +2 -2
- package/plugins/src/harper-fabric/skills/e2e-coverage-gaps/SKILL.md +22 -10
- package/plugins/src/rails/commands/e2e-coverage-gaps.md +2 -2
- package/plugins/src/rails/skills/e2e-coverage-gaps/SKILL.md +22 -10
- package/plugins/src/wiki/scripts/_wiki-lib.mjs +2 -2
- package/typescript/copy-overwrite/tsconfig.eslint.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: "Run a first-time-user exploratory QA pass on any product type (DOM web app, HTTP/API backend, canvas game, CLI/library, IaC/CDK): experience the product the way a brand-new end user would by driving its real consumer-facing interface via the use-the-product core (which detects the product type, resolves the per-environment mutation policy from .lisa.config.json so production is never mutated by accident, and explores through the project's personas when defined), finding anything confusing, broken, or hard to use, and filing each finding (bug or usability issue) as a tracked work item via lisa-tracker-write. Static scans, HTTP fetches, screenshots alone, or console/network checks alone are not sufficient. The optional ready flag marks tickets build-ready (auto-picked-up by lisa-intake) or leaves them in the backlog for human triage (default). For gaps in the automated test suite, use the e2e-coverage-gaps skill if your stack provides one."
|
|
2
|
+
description: "Run a first-time-user exploratory QA pass on any product type (DOM web app, HTTP/API backend, canvas game, CLI/library, IaC/CDK): experience the product the way a brand-new end user would by driving its real consumer-facing interface via the use-the-product core (which detects the product type, resolves the per-environment mutation policy from .lisa.config.json so production is never mutated by accident, and explores through the project's personas when defined), finding anything confusing, broken, or hard to use, and filing each worthwhile finding (bug or usability issue) as a tracked work item via lisa-tracker-write. Static scans, HTTP fetches, screenshots alone, or console/network checks alone are not sufficient. The optional ready flag marks tickets build-ready (auto-picked-up by lisa-intake) or leaves them in the backlog for human triage (default). For gaps in the automated test suite, use the e2e-coverage-gaps skill if your stack provides one."
|
|
3
3
|
allowed-tools: ["Skill"]
|
|
4
4
|
argument-hint: "[target-url | env] [ready=true|false]"
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
Use the lisa-exploratory-qa skill to experience the product the way a brand-new first-time end user would — driving its real consumer-facing interface via the use-the-product core (product-type detection, per-environment mutation policy, and persona-lensed exploration), finding anything confusing, broken, or hard to use, and filing each finding (bugs, usability/clarity issues) as a tracked work item via lisa-tracker-write, build-ready or in triage per the ready flag (default: triage). Static scans, HTTP fetches, screenshots alone, or console/network checks alone are not enough. For automated test-coverage gaps, use the e2e-coverage-gaps skill if your stack provides one. $ARGUMENTS
|
|
7
|
+
Use the lisa-exploratory-qa skill to experience the product the way a brand-new first-time end user would — driving its real consumer-facing interface via the use-the-product core (product-type detection, per-environment mutation policy, and persona-lensed exploration), finding anything confusing, broken, or hard to use, and filing each worthwhile finding (bugs, usability/clarity issues) as a tracked work item via lisa-tracker-write, build-ready or in triage per the ready flag (default: triage). Static scans, HTTP fetches, screenshots alone, or console/network checks alone are not enough. For automated test-coverage gaps, use the e2e-coverage-gaps skill if your stack provides one. $ARGUMENTS
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
# Do It Now (load-bearing)
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Finish authorized, worthwhile work in this session. Lisa exists to help projects ship dependable software with less effort; more tickets, rules, or checks are not progress by themselves.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Before turning an incidental finding into work, apply `do-it-now`'s **Worth doing** guidance. Act on concrete delivery failures, credible material security or data-loss risks, and recurring friction whose repair is worth its cost. Prefer the smallest sufficient fix, including simplifying or removing redundant machinery while preserving required behavior.
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
**Decline unnecessary work.** Cosmetic preferences, speculative edge cases, and already adequate behavior need no ticket, new rule, or human approval. Briefly state the reason in the current report or discussion when relevant. A complete specification establishes buildability, not value. Group related small repairs into one bounded maintenance task when worthwhile.
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
Complete the accepted scope; don't manufacture follow-ups. Human decisions and protected actions still wait at their exterior gate. Do the authorized preparation and explain what remains.
|
|
10
10
|
|
|
11
|
-
Full
|
|
11
|
+
Full guidance: [reference/do-it-now.md](../reference/do-it-now.md).
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# Tracked Work
|
|
2
2
|
|
|
3
|
+
Apply `do-it-now` before creating work from incidental findings. Declining an observation needs no new ticket. Related small accepted repairs may share one bounded maintenance leaf; traceability does not require a separate item for every nit.
|
|
4
|
+
|
|
3
5
|
Before the first durable project mutation (code, tests, config, docs, committed research/plans/findings, commits, or PRs), establish exactly one live tracker leaf through `lisa-track`. Read-only discussion and orientation are exempt only while they produce no durable artifact.
|
|
4
6
|
|
|
5
7
|
The mandatory order is: live-validate an explicit ref, or conservatively search and create exactly one valid leaf through `lisa-tracker-write` when no unique match exists; idempotently claim it through `lisa-tracker-claim`; then persist and verify the worktree-local binding with `node scripts/lisa-work-item.mjs link <ref>`. A tracker that answers no, and any claim or binding failure, blocks durable work; a tracker that cannot be reached does not block a commit — the offline checks still run, the skip is loud on stderr, and the required `Work-Item Traceability` check re-runs the live checks with credentials before anything merges.
|
|
@@ -1,25 +1,14 @@
|
|
|
1
1
|
# Upstream To Lisa (load-bearing)
|
|
2
2
|
|
|
3
|
-
When
|
|
3
|
+
When a worthwhile fix belongs to a Lisa-distributed template, rule, skill, agent, hook, or CI workflow, fix its source upstream so other projects benefit. Apply `do-it-now`'s **Worth doing** guidance first: Lisa ownership determines where accepted work belongs, not whether every imperfection deserves a ticket.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
For an accepted defect:
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
1. Apply the smallest safe local stopgap if needed to unblock the current task.
|
|
8
|
+
2. Search open and closed Lisa issues. Reuse a matching open issue. Honor **Not planned** decisions under `rejection-detection` before filing the concrete consequence and smallest durable fix; do not refile an accepted limitation.
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
For **copy-overwrite** files, a local fix may be overwritten on the next `lisa apply`. For **create-only** templates, the local fix survives, but new projects still inherit the source defect. Both can justify an upstream fix; neither bypasses the value decision.
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
2. **File an upstream issue in the Lisa repository.** Use the `github-write-issue` skill (`lisa-github-write-issue`) to create an issue **in Lisa's source repo `CodySwannGT/lisa`** (pass it as the target repo, e.g. `gh ... --repo CodySwannGT/lisa`) — **not** in this project's own repo. Capture: the root cause, the symptom you hit here, and the proposed durable fix in Lisa's templates/rules/skills.
|
|
12
|
+
Decline low-value observations without filing or escalating them. Group related small worthwhile repairs when appropriate. Do not add permanent machinery merely because an enforcement gap can be described.
|
|
14
13
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
- Do **not** only fix it locally and move on — even when a create-only local fix survives, the broken template keeps shipping to every new repo until it is fixed upstream.
|
|
18
|
-
- Do **not** try to edit Lisa's templates from inside this project — you are not in the Lisa repo; those edits don't exist upstream and get overwritten.
|
|
19
|
-
- Do **not** file the issue in this project's repo — it must land in `CodySwannGT/lisa`.
|
|
20
|
-
|
|
21
|
-
If you lack access to file an issue in `CodySwannGT/lisa`, surface that to the user with the proposed issue contents rather than silently dropping it.
|
|
22
|
-
|
|
23
|
-
> Not applicable when you are already working **inside the Lisa repo itself** — there the fix is local, so just make it directly.
|
|
24
|
-
|
|
25
|
-
Full procedure: [reference/upstream-to-lisa.md](../reference/upstream-to-lisa.md).
|
|
14
|
+
Inside Lisa, repair the shared source and regenerate the equivalent agent surfaces. Full procedure: [reference/upstream-to-lisa.md](../reference/upstream-to-lisa.md).
|
|
@@ -41,6 +41,10 @@ Two guards that run when build-intake claims a ready item. Both come from acmeor
|
|
|
41
41
|
|
|
42
42
|
It is a **single vendor-neutral contract** consumed by all three build-intake skills (`lisa-github-build-intake`, `lisa-jira-build-intake`, `lisa-linear-build-intake`). Each arm cites this slug in its claim step rather than growing its own copy, exactly as the arms cite `leaf-only-lifecycle`, `repo-scope-split`, `rejection-detection`, and `claim-archaeology`. One slug is what keeps a guard that fires on GitHub from being absent on Linear.
|
|
43
43
|
|
|
44
|
+
## Value before claim
|
|
45
|
+
|
|
46
|
+
After respecting human holds and resolving the issue's scope, apply `do-it-now`'s **Worth doing** guidance before claiming agent-proposed incidental work. Read current discussion, linked PRs, and dependencies. Decline low-value work as **Not planned** with a specific reason and remove active lifecycle labels; do not convert it to completed work or manufacture a replacement task. Retain explicit user commitments and meaningful delivery/safety defects. A decline is a processed disposition within the existing cycle limit, not permission to start an extra item.
|
|
47
|
+
|
|
44
48
|
## Sequencing
|
|
45
49
|
|
|
46
50
|
The shared claim phase is `3a.0` repo-scope gate → `3a` leaf-only claim gate → `3b` Claim → `3c` run lifecycle → `3d` transition to done. Inside `3b`, the pre-transition window now runs four passes in a fixed order:
|
|
@@ -1,37 +1,19 @@
|
|
|
1
1
|
# Do It Now
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Lisa helps projects ship dependable software with less effort. Finish authorized, worthwhile work instead of leaving an unowned promise. This instruction does not turn every imperfection into an obligation.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
## Worth doing
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
Read **Worth doing** in the `lisa-track` skill for the shared value decision and preference for less machinery. That existing skill is the portable home: Antigravity does not receive the rule tree, but does receive skills. This rule's eager summary and every incidental filing/intake path point to the same guidance.
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
## Complete the accepted work
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
Once scope and value are established, do the permitted work now: fix the defect, update documentation made wrong by the change, remove temporary scaffolding, and verify the result. Do not leave an accepted action as a vague follow-up. If worthwhile work must be deferred because it exceeds scope or depends on another change, track the smallest coherent outcome and give the reason.
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
Protected deployments, held PRDs, and unresolved product decisions still wait outside the factory. Prepare the authorized portion and explain what remains. Routine decisions to decline low-value incidental work belong to the agent; do not send every nit to a human.
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
- Adding the lint rule, ast-grep pattern, or test that prevents the recurrence (`promotion-contract` — and note that promotion is atomic: enable the control, fix the existing violations, ship the diagnostic, delete the superseded prose).
|
|
17
|
-
- Fixing the flaky test rather than re-running it.
|
|
18
|
-
- Updating the doc, comment, or rule your change just made wrong (`stale-state-claims`).
|
|
19
|
-
- Cleaning up the scaffolding you introduced.
|
|
15
|
+
## Existing backlog
|
|
20
16
|
|
|
21
|
-
|
|
17
|
+
Read the issue, current discussion, linked PRs, and dependencies before deciding. A ready label or an agent's prior filing is not proof of value. For an incidental improvement that does not clear the bar, close as **Not planned** (the configured equivalent on Jira/Linear), record a short specific reason, and remove active lifecycle labels. Do not mark declined work completed or implemented. Preserve explicit human holds and committed product scope; if cancellation would affect an active PR or a dependent delivery item, resolve that relationship before closing.
|
|
22
18
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
The exception is narrower than it first appears, because it applies to the **gated step**, not to the whole item. Do everything up to the gate now:
|
|
26
|
-
|
|
27
|
-
1. Do the allowed part — file it, write it, prepare it, get it to the edge of the gate.
|
|
28
|
-
2. Mark the gate explicitly, in the tracker, so it is visible outside your session.
|
|
29
|
-
3. Say plainly, in your update, what is waiting on a human and what will happen once they act.
|
|
30
|
-
|
|
31
|
-
"Waiting on a human" is a state you report, never a place you leave work silently.
|
|
32
|
-
|
|
33
|
-
## Deferring is a decision
|
|
34
|
-
|
|
35
|
-
Sometimes not doing it now is genuinely right: the change is out of scope, it would balloon the diff past reviewability, it depends on a decision not yet made, or it belongs to a different work item. Those are legitimate — and they are **decisions**, which means they get said out loud with a reason, and the deferred item becomes tracked work rather than a sentence.
|
|
36
|
-
|
|
37
|
-
What is never acceptable is the implied deferral: noticing, saying nothing, and moving on. The human cannot act on what you did not tell them, and neither can the next session.
|
|
19
|
+
Before re-filing, consult `rejection-detection`'s **Proposal rejection memory**, including legacy issues without markers. Repeating an accepted limitation is not new evidence that warrants reversing a decline.
|
|
@@ -115,10 +115,10 @@ A manual re-run next week must not duplicate last week's tickets. Mirror the `re
|
|
|
115
115
|
- Gap: the literal `gap:<dimension>:<CURRENT_REPO>` (a dimension is missing-or-not; no hash needed).
|
|
116
116
|
2. **Sentinel in the body.** Embed `<!-- lisa:monitor-finding: <fingerprint> -->` in every filed ticket.
|
|
117
117
|
3. **Search before create** (this IS gate S13). Before filing, search the tracker for the fingerprint string. The search **MUST include closed/resolved tickets** (`gh issue list --search <fp> --state all` for GitHub; JQL with no status filter for JIRA; all states for Linear) — otherwise a just-closed match is invisible and the backoff and decline checks below can't fire. If an **open** ticket carries the fingerprint → skip (optionally link). Otherwise classify a closed match by **how** it closed:
|
|
118
|
-
- **Closed as _not planned_ — a permanent decline** (`rejection-detection` **Proposal rejection memory**). GitHub `stateReason == "not_planned"`; the config-resolved won't-do/canceled equivalent on JIRA/Linear (never a hardcoded lane string). This is a durable human "no", not a time-boxed guard: **suppress the finding regardless of age**, and re-file only with evidence that **postdates the decline
|
|
118
|
+
- **Closed as _not planned_ — a permanent decline** (`rejection-detection` **Proposal rejection memory**). GitHub `stateReason == "not_planned"`; the config-resolved won't-do/canceled equivalent on JIRA/Linear (never a hardcoded lane string). This is a durable human "no", not a time-boxed guard: **suppress the finding regardless of age**, and re-file only with evidence that **postdates the decline** and establishes a materially changed consequence, requirement, or risk addressing the recorded reason. Seeing the same accepted limitation on a later date is insufficient. The new ticket MUST carry BOTH the machine token (`declined <date>; recurred <date> in <ref>`) and the human acknowledgment sentence (`You declined this on <date>. New evidence (<date>, <ref>) changes the consequence, requirement, or risk: <what changed and why the decline no longer applies>.`). This layers *on top of* the backoff below — a not_planned close outlives any window.
|
|
119
119
|
- **Closed as _completed_ within the recently-resolved backoff window** (`monitor.backoffHours`, default **24h** — matching the 24h Sentry event window; this is **not** the 2h `intake.repair.staleAfterHours`) → skip, to avoid re-filing a just-fixed regression before its signal has drained. A completed close **older** than the window is not a decline — a genuine recurrence is a regression and may file.
|
|
120
120
|
|
|
121
|
-
Only file when no live match
|
|
121
|
+
Only file when no live match or recently-resolved completed match exists, and any prior not_planned decline meets the evidence and acknowledgment requirements above.
|
|
122
122
|
|
|
123
123
|
## The cap
|
|
124
124
|
|
|
@@ -8,13 +8,17 @@
|
|
|
8
8
|
|
|
9
9
|
Filing a work item without the ready role is an **incomplete handoff** — build-intake scans the ready lane and nothing else, so the item is never picked up. A correct write plus a missing role still loses the work.
|
|
10
10
|
|
|
11
|
+
## Value precedes readiness
|
|
12
|
+
|
|
13
|
+
Apply `do-it-now`'s **Worth doing** guidance before deciding to file. A declined observation produces no ticket and needs no `human_gate`; it is not an incomplete handoff. Build-ready means both worthwhile and complete enough to build. Do not invent work merely to satisfy this filing contract.
|
|
14
|
+
|
|
11
15
|
## Omitted means NOT ready — on every tracker
|
|
12
16
|
|
|
13
17
|
**An omitted `build_ready` is NOT build-ready on JIRA, GitHub, and Linear alike.** Ready is an explicit claim, never an accident of which tracker a project configured. This is a **breaking change** for GitHub and Linear callers, which previously treated omission as ready; `lisa-github-validate-issue` F4's compensating omitted → `true` normalization is removed with it.
|
|
14
18
|
|
|
15
19
|
## Every filing declares one of three things
|
|
16
20
|
|
|
17
|
-
- **`build_ready: true`** — complete enough to build; enters the ready lane for auto-pickup. Required for
|
|
21
|
+
- **`build_ready: true`** — complete enough to build; enters the ready lane for auto-pickup. Required for an accepted worthwhile defect found during other work, so it is claimable next cycle with no human flipping status.
|
|
18
22
|
- **`human_gate: "<why a human must judge this first>"`** — deliberately held outside the queue. The writer stamps a visible line plus `<!-- [lisa-human-gate] reason=<short-slug> -->` so the hold is auditable.
|
|
19
23
|
- **The container declaration** — `None — container: state rolls up from children`, the canonical line `derived-branch-plan` defines and every writer stamps in place of a Target Backend Environment. A container is never build-ready (`leaf-only-lifecycle`) and needs no gate, so it declares the third thing instead. Deliberately **not** keyed on `--label type:Epic`: a declared type is a claim that costs a leaf nothing and leaves it looking buildable, where the container line costs the item the environment and Branch Plan a leaf needs to be built. It is refused alongside a by-design leaf type (`type:Bug` / `type:Task` / `type:Sub-task` / `type:Improvement`) — an item cannot be a container and a leaf at once.
|
|
20
24
|
|
|
@@ -60,7 +64,7 @@ The safe direction is the implicit one. A ticket that reaches a build queue by a
|
|
|
60
64
|
|
|
61
65
|
A writer accepts a filing only when it carries **one** of:
|
|
62
66
|
|
|
63
|
-
- **`build_ready: true`** — the item is complete enough to build and enters the ready lane for auto-pickup. This is the correct answer for
|
|
67
|
+
- **`build_ready: true`** — the item is complete enough to build and enters the ready lane for auto-pickup. This is the correct answer for an accepted worthwhile defect found during other work.
|
|
64
68
|
- **`human_gate: "<why a human must judge this first>"`** — the item is deliberately held outside the queue because a human product call is pending. The writer stamps a visible marker on the item so the hold is auditable rather than indistinguishable from an accident:
|
|
65
69
|
|
|
66
70
|
```text
|
|
@@ -186,6 +186,12 @@ A proposal is **declined** when its prior item is **closed as _not planned_**:
|
|
|
186
186
|
|
|
187
187
|
**Closed as _completed_ is NOT a decline.** A completed fix whose underlying problem later recurs is a **regression**, and the loop **may file** it — the recurrence is genuinely new work, not a re-proposal of the declined thing. Only *not planned* is the durable "no".
|
|
188
188
|
|
|
189
|
+
### Agent declines and legacy issues
|
|
190
|
+
|
|
191
|
+
A reasoned **Not planned** disposition made by an agent under `do-it-now` or an owner-authorized backlog audit has the same suppression effect. Do not require the owner to repeat it manually.
|
|
192
|
+
|
|
193
|
+
For older issues without a stable marker, additionally search open and closed issues by the owning surface and concrete symptom, then read the body and closing discussion to establish a semantic match. A title resemblance alone is insufficient. Missing markers do not erase a documented decline. Repeating the same accepted limitation on a later date is not changed evidence; reopening the proposal requires a materially changed consequence, requirement, or risk that addresses the recorded reason.
|
|
194
|
+
|
|
189
195
|
### Marker discipline — deterministic key, open AND closed search
|
|
190
196
|
|
|
191
197
|
Every loop-proposed item carries a **visible prose line** plus a marker (a bare HTML marker renders as an empty comment bubble):
|
|
@@ -211,7 +217,7 @@ This footer is **required on every proposing loop's filed ticket** (`lisa-explor
|
|
|
211
217
|
|
|
212
218
|
### The rule
|
|
213
219
|
|
|
214
|
-
A marker hit on a **closed-as-not-planned** item **suppresses the proposal** — regardless of title similarity. Re-proposal is permitted **only** with evidence that **postdates the decline
|
|
220
|
+
A marker hit on a **closed-as-not-planned** item **suppresses the proposal** — regardless of title similarity. Re-proposal is permitted **only** with evidence that **postdates the decline** and establishes a materially changed consequence, requirement, or risk addressing the recorded reason, and the re-filed item MUST carry BOTH of the following:
|
|
215
221
|
|
|
216
222
|
1. **A machine token** for the dedupe/audit trail — generalizing the gardener's wording:
|
|
217
223
|
|
|
@@ -219,7 +225,7 @@ A marker hit on a **closed-as-not-planned** item **suppresses the proposal** —
|
|
|
219
225
|
|
|
220
226
|
2. **A human acknowledgment sentence** in plain prose, so re-raising reads as a respectful return to an answered question rather than a machine nagging:
|
|
221
227
|
|
|
222
|
-
> You declined this on `<decline-date>`.
|
|
228
|
+
> You declined this on `<decline-date>`. New evidence (`<recurrence-date>`, `<recurrence-ref>`) changes the consequence, requirement, or risk: `<what changed and why the decline no longer applies>`.
|
|
223
229
|
|
|
224
230
|
Naming the decline date, the recurrence date, and the recurrence reference in both forms is what turns "raising it again" into an auditable, evidence-backed, operator-legible act rather than nagging. A marker hit on a closed-as-**completed** item is not a decline — it falls under the regression path above.
|
|
225
231
|
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# Tracked Work
|
|
2
2
|
|
|
3
|
+
Apply `do-it-now` before creating work from incidental findings. Declining an observation needs no new ticket. Related small accepted repairs may share one bounded maintenance leaf; traceability does not require a separate item for every nit.
|
|
4
|
+
|
|
3
5
|
The project tracker is the durable operator-facing record for project work. Every session that will produce a durable project outcome must establish exactly one live configured-tracker leaf before the first durable mutation. Durable outcomes include code, tests, configuration, documentation, committed research or plans, investigation findings, commits, and pull requests. Read-only questions, discussion, and repository orientation are exempt until they turn into durable work.
|
|
4
6
|
|
|
5
7
|
## Resolve, claim, bind
|
|
@@ -1,55 +1,26 @@
|
|
|
1
1
|
# Upstream To Lisa
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
A root cause in a Lisa-distributed artifact determines the destination of a worthwhile repair. First apply `do-it-now`'s **Worth doing** guidance. Ownership, a missing guard, or a reproducible edge case alone does not justify another issue.
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## Accepted repairs
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
A concrete delivery failure, credible material safety risk, or recurring costly friction in a Lisa template, rule, skill, agent, hook, or CI workflow belongs upstream.
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
- A **governance pattern** discovered here that should be generalized back into Lisa's templates so every project benefits.
|
|
11
|
-
- Anything where the file you want to change is **Lisa-managed** — it carries Lisa governance markers, lives in a path Lisa owns, or any edit would be **overwritten on the next `lisa apply`**.
|
|
12
|
-
- Anything where the root cause is in a Lisa **create-only** template, even if the generated file says Lisa will not overwrite it.
|
|
13
|
-
|
|
14
|
-
The defining test: **does the root cause live in a Lisa-distributed artifact?** If yes, file upstream. The wipe-out test is a sufficient signal, not the only signal.
|
|
15
|
-
|
|
16
|
-
| Template class | Local fix survives `lisa apply`? | Why it is still upstream-worthy |
|
|
9
|
+
| Template class | Local fix survives `lisa apply`? | Why repair upstream? |
|
|
17
10
|
| --- | --- | --- |
|
|
18
|
-
| **copy-overwrite**
|
|
19
|
-
| **create-only**
|
|
20
|
-
|
|
21
|
-
For create-only files, header text such as `Lisa will not overwrite it` is a **positive** upstream signal, not a reason to stay local. Keep the downstream fix because Lisa will not replace it, and still file upstream so future projects receive the corrected template.
|
|
22
|
-
|
|
23
|
-
## What to do — both steps, always
|
|
24
|
-
|
|
25
|
-
### 1. Fix it locally so you are not blocked
|
|
26
|
-
|
|
27
|
-
Apply the stopgap in this project so you can keep working. Do **not** stall waiting for an upstream fix to land.
|
|
28
|
-
|
|
29
|
-
- For copy-overwrite files, treat the local change as temporary: it will be clobbered when the upstream fix ships and Lisa re-applies.
|
|
30
|
-
- For create-only files, keep the local change: Lisa will not overwrite it. The upstream issue is still mandatory because new projects keep inheriting the broken template until Lisa changes.
|
|
31
|
-
|
|
32
|
-
### 2. File an upstream issue in the Lisa repository
|
|
33
|
-
|
|
34
|
-
Use the `github-write-issue` skill (`lisa-github-write-issue`) to create a GitHub Issue **in Lisa's source repository `CodySwannGT/lisa`** — not in this project's own repo. The skill uses the `gh` CLI; the target repo must be `CodySwannGT/lisa` (e.g. `gh issue create --repo CodySwannGT/lisa ...`), because the agent's default repo is this host project.
|
|
35
|
-
|
|
36
|
-
The issue should capture, following the skill's three-audience / acceptance-criteria conventions:
|
|
37
|
-
|
|
38
|
-
- **Root cause** — which Lisa template/rule/skill/agent/hook/workflow is wrong or missing, with the path under `plugins/src/...` (or the relevant template source) if known.
|
|
39
|
-
- **Symptom** — what broke or was missing in *this* project, and how it surfaced. Reference this project so the fix can be validated against a real case.
|
|
40
|
-
- **Proposed durable fix** — the change to make in Lisa's source so it propagates to all projects on the next apply.
|
|
41
|
-
- **Local stopgap applied** — note that a local fix is in place here, whether it is temporary copy-overwrite work or a retained create-only patch.
|
|
11
|
+
| **copy-overwrite** | No | Prevent the local repair being replaced by the broken source. |
|
|
12
|
+
| **create-only** | Yes | Stop new projects inheriting the defect. |
|
|
42
13
|
|
|
43
|
-
|
|
14
|
+
A header saying `Lisa will not overwrite it` is a positive upstream ownership signal, not a reason to keep an accepted defect local. It does not establish priority or value.
|
|
44
15
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
16
|
+
1. **Unblock the current task if needed.** Apply the smallest safe local stopgap. Keep it scoped and attributable; do not stall useful delivery waiting for an upstream release.
|
|
17
|
+
2. **Search before filing.** Search open AND closed issues in the configured upstream repository (`hardening.upstreamRepo`, default `CodySwannGT/lisa`). Reuse a matching open issue. Honor **Not planned** decisions under `rejection-detection`'s **Proposal rejection memory**, including legacy unmarked issues. Check actual behavior before treating a completed issue as a regression.
|
|
18
|
+
3. **File only the accepted work.** Use `lisa-github-write-issue` against the upstream repository, with the explicit readiness declaration from `ready-role-filing`. State the owning source, observed consequence or credible risk, smallest durable fix, and any local stopgap. Follow the public-safe attribution/projection procedure; never publish host names, credentials, or private source paths.
|
|
48
19
|
|
|
49
|
-
|
|
20
|
+
Bundle related minor repairs into one bounded maintenance item when the combined benefit warrants it. Declined observations require no ticket or escalation. A generalizable governance pattern still has to justify its recurring cost across consumers; generality alone is insufficient.
|
|
50
21
|
|
|
51
|
-
|
|
22
|
+
## Access and scope
|
|
52
23
|
|
|
53
|
-
|
|
24
|
+
If an accepted upstream repair cannot be filed because access is missing, prepare the public-safe issue and explain the access problem. Do not ask a human to file observations already declined on value.
|
|
54
25
|
|
|
55
|
-
|
|
26
|
+
Do not mistake editing an installed artifact for changing Lisa's source. Inside Lisa itself, use the existing tracked task, repair the shared source, and regenerate equivalent agent surfaces; no second upstream issue is needed.
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: lisa-exploratory-qa
|
|
3
|
-
description: First-time-user exploratory QA pass for ANY product type (DOM web app, HTTP/API backend, canvas game, CLI/library, IaC/CDK) that FEEDS THE LIFECYCLE. Use when asked to experience a product the way a brand-new end user would — driving its real consumer-facing interface via the `use-the-product` core (which detects the product type, resolves the per-environment mutation policy from .lisa.config.json so production data is never mutated by accident, and explores through the project's personas when it defines them) to find anything confusing, broken, or hard to use. Static route scans, HTTP fetches, screenshots alone, or console/network checks alone are not sufficient evidence. Instead of writing a report file, it files
|
|
3
|
+
description: First-time-user exploratory QA pass for ANY product type (DOM web app, HTTP/API backend, canvas game, CLI/library, IaC/CDK) that FEEDS THE LIFECYCLE. Use when asked to experience a product the way a brand-new end user would — driving its real consumer-facing interface via the `use-the-product` core (which detects the product type, resolves the per-environment mutation policy from .lisa.config.json so production data is never mutated by accident, and explores through the project's personas when it defines them) to find anything confusing, broken, or hard to use. Static route scans, HTTP fetches, screenshots alone, or console/network checks alone are not sufficient evidence. Instead of writing a report file, it files worthwhile findings as tracked work items via lisa-tracker-write. A `ready` parameter controls whether those tickets are created build-ready (auto-picked-up by lisa-intake) or left in the backlog for human triage (default). For gaps in the automated test suite, use e2e-coverage-gaps instead.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Exploratory QA
|
|
7
7
|
|
|
8
|
+
On runtimes without the rule tree (Antigravity), read **Worth doing** in `lisa-track` for the same value and decline policy.
|
|
9
|
+
|
|
8
10
|
## Overview
|
|
9
11
|
|
|
10
|
-
Experience the product the way a **brand-new end user** would: drive its real consumer-facing interface and actually try to use it, then surface anything **confusing, broken, or hard to understand**. This is a usability/experience pass, **not** a test-coverage audit (for that, use `e2e-coverage-gaps`).
|
|
12
|
+
Experience the product the way a **brand-new end user** would: drive its real consumer-facing interface and actually try to use it, then surface anything **confusing, broken, or hard to understand**. This is a usability/experience pass, **not** a test-coverage audit (for that, use `e2e-coverage-gaps`). Accepted worthwhile findings enter the Lisa lifecycle as bounded tracked work — no static report file.
|
|
11
13
|
|
|
12
14
|
**How you drive the product is owned by the `use-the-product` core skill.** Invoke it first: it detects the product type (web / API / game / CLI / IaC), resolves the target environment and its **mutation policy** (so you never mutate production without an explicit, justified opt-in), and discovers the project's **personas** so you can explore as each one. This skill supplies the **QA lens** — what to look for and how to file it.
|
|
13
15
|
|
|
@@ -61,7 +63,7 @@ Whether you may create/edit/delete — and as which account — is set by the `u
|
|
|
61
63
|
|
|
62
64
|
## 6. File findings as tracked work
|
|
63
65
|
|
|
64
|
-
No report file. Every finding becomes a **leaf work item** via `lisa-tracker-write` (the vendor-neutral writer — it dispatches to the configured tracker and runs the validation gate; never call a vendor `*-write-*` skill directly):
|
|
66
|
+
Apply `do-it-now`'s **Worth doing** guidance first. Decline low-value observations in the run summary without a ticket or human gate; bundle related worthwhile minor findings when appropriate. No report file. Every accepted finding becomes a **leaf work item** via `lisa-tracker-write` (the vendor-neutral writer — it dispatches to the configured tracker and runs the validation gate; never call a vendor `*-write-*` skill directly):
|
|
65
67
|
|
|
66
68
|
Kane never files the work item itself. Even when it marks a failure as a confirmed product bug, run Lisa's marker-based duplicate search, apply the QA lens, and route the finding through `lisa-tracker-write` exactly as for every other controller.
|
|
67
69
|
|
|
@@ -72,7 +74,7 @@ Kane never files the work item itself. Even when it marks a failure as a confirm
|
|
|
72
74
|
|
|
73
75
|
Each finding is a flat leaf, so `build_ready` applies directly — pass it explicitly on every create.
|
|
74
76
|
|
|
75
|
-
**This skill is the named human-gate exception under `ready-role-filing`.**
|
|
77
|
+
**This skill is the named human-gate exception under `ready-role-filing`.** For accepted worthwhile work elsewhere in Lisa, a complete defect found during other work is filed with explicit `build_ready: true` so build-intake claims it next cycle. Exploratory QA is deliberately different, and that difference is ratified rather than drift: its findings are *candidate* defects and usability observations whose **product significance is a human call**, so auto-readying them would push judgment work into the build queue — precisely the failure the gate model exists to prevent. Its default `ready=false` is therefore an **explicit human-gate marker, never a bare omission**: every not-ready create passes `human_gate: "exploratory finding — product significance is a human product call"` alongside `build_ready: false`, and the writer stamps the auditable `[lisa-human-gate]` marker. An operator who wants a pass to feed the queue directly opts in with `ready=true`.
|
|
76
78
|
|
|
77
79
|
(The sibling `e2e-coverage-gaps` skills are the contrast: a missing automated test is not a product question, so they file `build_ready: true` by default.)
|
|
78
80
|
|
|
@@ -80,11 +82,11 @@ Each ticket MUST be a complete spec (the validator rejects thin tickets): a **th
|
|
|
80
82
|
|
|
81
83
|
### Idempotency — don't spam duplicates
|
|
82
84
|
|
|
83
|
-
Re-running a pass must not refile the same finding. Before creating a ticket, search the tracker for a ticket carrying a stable marker `[lisa-exploratory-qa] <finding-key>` in its body (the `<finding-key>` is a stable slug of surface + symptom, e.g. `settings-modal/horizontal-overflow@tablet`). Per the `rejection-detection` rule's **Proposal rejection memory** section, that marker search MUST cover **open AND closed** tickets (with a body-enumeration fallback on search-index lag), and **match by the marker, never by title.** Then split on how any prior ticket closed:
|
|
85
|
+
Re-running a pass must not refile the same finding. Before creating a ticket, search the tracker for a ticket carrying a stable marker `[lisa-exploratory-qa] <finding-key>` in its body (the `<finding-key>` is a stable slug of surface + symptom, e.g. `settings-modal/horizontal-overflow@tablet`). Per the `rejection-detection` rule's **Proposal rejection memory** section, that marker search MUST cover **open AND closed** tickets (with a body-enumeration fallback on search-index lag), and **match by the marker, never by title alone; for legacy unmarked issues, read the body and closing discussion to establish the semantic match.** Then split on how any prior ticket closed:
|
|
84
86
|
|
|
85
87
|
- **Open** ticket carrying the marker → reference/update it instead; do not create a second.
|
|
86
88
|
- **Closed as _completed_** → does **not** suppress. A recurrence after a fix is a genuine **regression**, so file the finding.
|
|
87
|
-
- **Closed as _not planned_** (GitHub `stateReason == "not_planned"`; the config-resolved won't-do/canceled equivalent on JIRA/Linear
|
|
89
|
+
- **Closed as _not planned_** (GitHub `stateReason == "not_planned"`; the config-resolved won't-do/canceled equivalent on JIRA/Linear — never infer decline from a hardcoded state name) → a human **declined** this finding, so **suppress it**. Re-file only with evidence that **postdates the decline** and establishes a materially changed consequence, requirement, or risk addressing the recorded reason, carrying BOTH the machine token (`declined <date>; recurred <date> in <ref>`) and a human acknowledgment sentence (`You declined this on <date>. New evidence (<date>, <ref>) changes the consequence, requirement, or risk: <what changed and why the decline no longer applies>.`).
|
|
88
90
|
|
|
89
91
|
Every filed finding ticket MUST end with the `rejection-detection` **operator footer** as a visible prose line so the operator knows which close-reason silences it:
|
|
90
92
|
|
|
@@ -150,7 +152,7 @@ teardown proposal through `lisa-tracker-write` (per `tracked-work` + `integratio
|
|
|
150
152
|
- **Marker** `<!-- [lisa-automation-retire] key=exploratory-bugs -->` plus a visible prose line;
|
|
151
153
|
matched on the marker, never the title; searched **open AND closed** per `rejection-detection`'s
|
|
152
154
|
**Proposal rejection memory**. Treat matches by close state: **open** suppresses another proposal;
|
|
153
|
-
**Not planned** suppresses another proposal unless new evidence postdates the rejection;
|
|
155
|
+
**Not planned** suppresses another proposal unless new evidence postdates the rejection and materially changes the consequence, requirement, or risk that justified the decline;
|
|
154
156
|
**Completed** means the prior approved action happened, so a later recurrence may be re-filed.
|
|
155
157
|
When an existing proposal suppresses filing, **the run still records `policy-obsolete` and files
|
|
156
158
|
nothing** — the outcome describes this run, while the ticket is filed exactly once.
|
|
@@ -467,6 +467,9 @@ A blocker is active if it is open and has no cleared status label. Treat `status
|
|
|
467
467
|
|
|
468
468
|
#### 3b. Claim
|
|
469
469
|
|
|
470
|
+
Before the claim mutation, apply `claim-time-guards` — **Value before claim**, or **Worth doing** in `lisa-track` on runtimes without the rule tree (Antigravity). A ready label establishes neither value nor permission to expand scope. Respect the preceding human-hold gate; a declined incidental item consumes this cycle's one processed disposition.
|
|
471
|
+
|
|
472
|
+
|
|
470
473
|
**Rejection detection runs first — before the relabel below.** Per the vendor-neutral `rejection-detection` rule (cite the slug; do not restate its classification table), classify this item at the **top of 3b, BEFORE** the `$READY → $CLAIMED` relabel — after the relabel the current-lane signal is gone. Read the item's Label-Event History from `lisa-github-read-issue` (chronological `LabeledEvent` / `UnlabeledEvent` on the configured `$READY` label) and classify it `rejection-reclaim | forward-only | never-left-ready | unknown`. Lane names come from `.lisa.config.json` (`github.labels.build.*`), never hardcoded. A failing/absent history yields `unknown` and the claim proceeds — detection never blocks the build. Items carrying a learning marker (`[lisa-learning-drop]` / `[lisa-learning-pr]` / `[lisa-learning-upstream-handoff]`) or the `learning:needs-triage` label are never rejection triggers (no learning-about-learning). Carry the classification into the relabel and lifecycle below.
|
|
471
474
|
|
|
472
475
|
**On `rejection-reclaim`, reflect before re-implementing** (per `rejection-detection`): read the rejection evidence through the access layer — the issue comments posted after the backward transition (the QA rejection comment) and the review threads on the rejected PR via `lisa-github-read-issue` — assemble ONE candidate learning (rule, why, provenance linking the rejection comment + rejected PR, evidence links, scope hint, triggering issue, fingerprint `sll4-sha1(rule\ntriggering_issue)[:12]`), and route it to the `lisa-persist-learning` skill. If that skill is absent, record the candidate as a comment carrying a **visible prose line plus** the marker (a bare marker renders as an empty bubble) — `Recorded a candidate learning from this rejection (queued for the judgment gate): <one-line candidate rule>.` then `<!-- [lisa-rejection-candidate] key=<issue>-<transition-ts> -->` — and proceed. Dedupe on `<issue>-<backward-transition-timestamp>` — a second re-claim produces no duplicate. Unreadable/absent evidence → no candidate, still implement.
|
|
@@ -6,6 +6,12 @@ allowed-tools: ["Bash", "Skill", "Read"]
|
|
|
6
6
|
|
|
7
7
|
# Write GitHub Issue: $ARGUMENTS
|
|
8
8
|
|
|
9
|
+
On runtimes without the rule tree (Antigravity), read **Worth doing** in `lisa-track` for the same value and decline policy.
|
|
10
|
+
|
|
11
|
+
## Before creating incidental work
|
|
12
|
+
|
|
13
|
+
Apply `do-it-now`'s **Worth doing** guidance before drafting a new incidental item. Decline low-value observations without writing a ticket or requesting a human gate; report the reason briefly to the caller. A complete spec is not evidence of value. This does not cancel explicit user requests or accepted requirements. Honor prior Not planned decisions through `rejection-detection`, including legacy issues without markers. Accepted work continues through the existing validation and readiness contract below.
|
|
14
|
+
|
|
9
15
|
## Human-gate release authorization
|
|
10
16
|
|
|
11
17
|
A release requires a trusted human author, not just matching comment text. Follow
|
|
@@ -349,6 +349,9 @@ This gate never blocks a legitimate flat Task/Bug: those have no open children a
|
|
|
349
349
|
|
|
350
350
|
#### 3b. Claim
|
|
351
351
|
|
|
352
|
+
Before the claim mutation, apply `claim-time-guards` — **Value before claim**, or **Worth doing** in `lisa-track` on runtimes without the rule tree (Antigravity). A ready label establishes neither value nor permission to expand scope. Respect the preceding human-hold gate; a declined incidental item consumes this cycle's one processed disposition.
|
|
353
|
+
|
|
354
|
+
|
|
352
355
|
**Rejection detection runs first — before the transition below.** Per the vendor-neutral `rejection-detection` rule (cite the slug; do not restate its classification table), classify this ticket at the **top of 3b, BEFORE** the `$READY → $CLAIMED` transition — after the transition the current-status signal is gone. Read the ticket's status changelog via `lisa-atlassian-access operation: changelog key: <TICKET>` and classify it `rejection-reclaim | forward-only | never-left-ready | unknown` (a `rejection-reclaim` is a changelog entry whose `to` is the configured `$READY` status following an earlier `review`/`done`-ward status). Status names come from `.lisa.config.json`, never hardcoded. A failing/absent changelog yields `unknown` and the claim proceeds — detection never blocks the build. Tickets carrying a learning marker (`[lisa-learning-drop]` / `[lisa-learning-pr]` / `[lisa-learning-upstream-handoff]`) or the `learning:needs-triage` label are never rejection triggers (no learning-about-learning). Carry the classification into the transition and lifecycle below.
|
|
353
356
|
|
|
354
357
|
**On `rejection-reclaim`, reflect before re-implementing** (per `rejection-detection`): read the rejection evidence through the access layer — the ticket comments posted after the backward transition (the QA rejection comment) via `lisa-atlassian-access operation: read-ticket` / `comment` reads and the review threads on the rejected PR — assemble ONE candidate learning (rule, why, provenance linking the rejection comment + rejected PR, evidence links, scope hint, triggering issue, fingerprint `sll4-sha1(rule\ntriggering_issue)[:12]`), and route it to the `lisa-persist-learning` skill. If that skill is absent, record the candidate via `lisa-atlassian-access operation: comment` as a comment carrying a **visible prose line plus** the marker (a bare marker renders as an empty bubble) — `Recorded a candidate learning from this rejection (queued for the judgment gate): <one-line candidate rule>.` then `<!-- [lisa-rejection-candidate] key=<issue>-<transition-ts> -->` — and proceed. Dedupe on `<issue>-<backward-transition-timestamp>` — a second re-claim produces no duplicate. Unreadable/absent evidence → no candidate, still implement.
|
|
@@ -6,6 +6,12 @@ allowed-tools: ["Bash", "Skill"]
|
|
|
6
6
|
|
|
7
7
|
# Write JIRA Ticket: $ARGUMENTS
|
|
8
8
|
|
|
9
|
+
On runtimes without the rule tree (Antigravity), read **Worth doing** in `lisa-track` for the same value and decline policy.
|
|
10
|
+
|
|
11
|
+
## Before creating incidental work
|
|
12
|
+
|
|
13
|
+
Apply `do-it-now`'s **Worth doing** guidance before drafting a new incidental item. Decline low-value observations without writing a ticket or requesting a human gate; report the reason briefly to the caller. A complete spec is not evidence of value. This does not cancel explicit user requests or accepted requirements. Honor prior Not planned decisions through `rejection-detection`, including legacy issues without markers. Accepted work continues through the existing validation and readiness contract below.
|
|
14
|
+
|
|
9
15
|
## Human-gate release authorization
|
|
10
16
|
|
|
11
17
|
A release requires a trusted human author, not just matching comment text. Follow
|
|
@@ -285,7 +285,7 @@ resolved by reading the ticket, never by filing a sibling blind. Then:
|
|
|
285
285
|
- **Closed via merged work** → done; a genuine regression later is new
|
|
286
286
|
evidence and a new ticket.
|
|
287
287
|
- **Closed unmerged / rejected** → the human declined. **Do NOT re-file**
|
|
288
|
-
unless new evidence **postdates the rejection** — and when re-filing, state
|
|
288
|
+
unless new evidence **postdates the rejection** and materially changes the consequence, requirement, or risk that justified the decline — and when re-filing, state
|
|
289
289
|
the postdating evidence explicitly in the ticket ("rejected <date>; recurred
|
|
290
290
|
<date> in <ref>"). Closed-as-rejected tickets ARE the gardener's memory of
|
|
291
291
|
declined recommendations.
|
|
@@ -413,7 +413,7 @@ automation, through `lisa-tracker-write` (per `tracked-work` +
|
|
|
413
413
|
visible prose line; matched on the marker, never the title; searched **open
|
|
414
414
|
AND closed** per `rejection-detection`'s **Proposal rejection memory**. Treat
|
|
415
415
|
matches by close state: **open** suppresses another proposal; **Not planned**
|
|
416
|
-
suppresses another proposal unless new evidence postdates the rejection;
|
|
416
|
+
suppresses another proposal unless new evidence postdates the rejection and materially changes the consequence, requirement, or risk that justified the decline;
|
|
417
417
|
**Completed** means the prior approved action happened, so a later recurrence
|
|
418
418
|
may be re-filed. The `[lisa-gardener]` search above stays what it is — the
|
|
419
419
|
candidate evidence, not the dedupe key. When an existing proposal suppresses
|
|
@@ -344,6 +344,9 @@ This gate never blocks a legitimate flat Task/Bug: those have no open children a
|
|
|
344
344
|
|
|
345
345
|
#### 3b. Claim
|
|
346
346
|
|
|
347
|
+
Before the claim mutation, apply `claim-time-guards` — **Value before claim**, or **Worth doing** in `lisa-track` on runtimes without the rule tree (Antigravity). A ready label establishes neither value nor permission to expand scope. Respect the preceding human-hold gate; a declined incidental item consumes this cycle's one processed disposition.
|
|
348
|
+
|
|
349
|
+
|
|
347
350
|
**Rejection detection runs first — before the transition below.** Per the vendor-neutral `rejection-detection` rule (cite the slug; do not restate its classification table), classify this Issue at the **top of 3b, BEFORE** the `$READY → $CLAIMED` transition — afterwards the current-lane signal is gone. Read the Issue's history via `lisa-linear-access operation: history id: <ISSUE-ID>`, keyed on **workflow-state** history, and classify it `rejection-reclaim | forward-only | never-left-ready | unknown` (a `rejection-reclaim` is a move back into `$READY` from a later lane). State names come from `.lisa.config.json`, never hardcoded.
|
|
348
351
|
|
|
349
352
|
> Reading state history is strictly simpler than the label history this used to key on: `IssueHistory` inlines `fromState.name` / `toState.name` on each node, so the transition is read directly with no label-ID resolution against `list-issue-labels` and no reconstruction from `addedLabelIds`/`removedLabelIds` deltas. That reconstruction was lossy — the deltas carry no prior/next full set — which is one more reason the build lane moved to states. A failing/absent history yields `unknown` and the claim proceeds — detection never blocks the build. Issues carrying a learning marker (`[lisa-learning-drop]` / `[lisa-learning-pr]` / `[lisa-learning-upstream-handoff]`) or the `learning:needs-triage` label are never rejection triggers (no learning-about-learning). Carry the classification into the transition and lifecycle below.
|
|
@@ -6,6 +6,12 @@ allowed-tools: ["Bash", "Skill"]
|
|
|
6
6
|
|
|
7
7
|
# Write Linear Work Item: $ARGUMENTS
|
|
8
8
|
|
|
9
|
+
On runtimes without the rule tree (Antigravity), read **Worth doing** in `lisa-track` for the same value and decline policy.
|
|
10
|
+
|
|
11
|
+
## Before creating incidental work
|
|
12
|
+
|
|
13
|
+
Apply `do-it-now`'s **Worth doing** guidance before drafting a new incidental item. Decline low-value observations without writing a ticket or requesting a human gate; report the reason briefly to the caller. A complete spec is not evidence of value. This does not cancel explicit user requests or accepted requirements. Honor prior Not planned decisions through `rejection-detection`, including legacy issues without markers. Accepted work continues through the existing validation and readiness contract below.
|
|
14
|
+
|
|
9
15
|
## Human-gate release authorization
|
|
10
16
|
|
|
11
17
|
A release requires a trusted human author, not just matching comment text. Follow
|
|
@@ -200,7 +200,7 @@ watching it. Evaluate all three. When all three hold, record `policy-obsolete` a
|
|
|
200
200
|
- **Marker** `<!-- [lisa-automation-retire] key=monitor -->` plus a visible prose line; matched on
|
|
201
201
|
the marker, never the title; searched **open AND closed** per `rejection-detection`'s **Proposal
|
|
202
202
|
rejection memory**. Treat matches by close state: **open** suppresses another proposal;
|
|
203
|
-
**Not planned** suppresses another proposal unless new evidence postdates the rejection;
|
|
203
|
+
**Not planned** suppresses another proposal unless new evidence postdates the rejection and materially changes the consequence, requirement, or risk that justified the decline;
|
|
204
204
|
**Completed** means the prior approved action happened, so a later recurrence may be re-filed.
|
|
205
205
|
When an existing proposal suppresses filing, **the run still records `policy-obsolete` and files
|
|
206
206
|
nothing** — the outcome describes this run, while the ticket is filed exactly once.
|
|
@@ -9,6 +9,8 @@ Route ONE candidate learning through the judgment gate and act on the verdict. C
|
|
|
9
9
|
|
|
10
10
|
Most candidates are dropped — that is the gate working, not a failure. Nothing is ever silent (every drop leaves a visible note), and no learning content ever reaches the learnings surface outside a pull request.
|
|
11
11
|
|
|
12
|
+
On runtimes without the rule tree (Antigravity), read **Worth doing** in `lisa-track` for the same value and decline policy.
|
|
13
|
+
|
|
12
14
|
## Candidate Input
|
|
13
15
|
|
|
14
16
|
Accept the candidate as JSON or `key=value` fields:
|
|
@@ -68,7 +70,9 @@ The note is one line naming the classification (with its fixed plain-language gl
|
|
|
68
70
|
|
|
69
71
|
### `handoff-upstream` (classification `lisa-upstream`)
|
|
70
72
|
|
|
71
|
-
This disposition completes the SLL-5 loop (#1583): on
|
|
73
|
+
This disposition completes the SLL-5 loop (#1583): on an accepted worthwhile Lisa-attributed failure the upstream Lisa ticket is filed **automatically**. Filing lives here — not in `lisa-attribute-failure` — because that skill is deliberately read-only (doctor delegates to it inside its own read-only contract), while this skill already owns exactly the verdict's side effects and the marker-dedupe discipline. Never persist a local rule for a Lisa-attributed failure; the host project's only durable trace is the brief linking note in step 6.
|
|
74
|
+
|
|
75
|
+
First apply `do-it-now`'s **Worth doing** guidance. Attribution establishes ownership, not value. Decline low-value additional hardening in the current summary without filing, persisting a rule, or asking a human; otherwise continue below. Before creating an upstream issue, consult `rejection-detection` for open and closed matches, including legacy unmarked declines.
|
|
72
76
|
|
|
73
77
|
1. **Post the handoff marker** on the triggering issue (same one-comment marker dedupe; the marker key is unchanged). The visible line must not claim a filing that has not happened yet — attribution and filing come after this step:
|
|
74
78
|
|
|
@@ -38,6 +38,7 @@ ideation_ledger_payload: # optional; forwarded unchanged to the ven
|
|
|
38
38
|
selected_idea: "<selected idea title/key>"
|
|
39
39
|
rejected_overlap_candidates: ["<issue refs/titles considered and rejected>"]
|
|
40
40
|
expected_empirical_verification_artifact: "<artifact ref or unavailable>"
|
|
41
|
+
reproposal_context: "<optional dated decline, new evidence, changed consequence, token and acknowledgment already included in the PRD body by research>"
|
|
41
42
|
```
|
|
42
43
|
|
|
43
44
|
`initial_role` semantics are uniform across vendors (the role STRINGS resolve per vendor from
|