@codyswann/lisa 4.4.7 → 4.4.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
- package/dist/core/upstream-evidence-manifest.js +6 -3
- package/dist/core/upstream-evidence-manifest.js.map +1 -1
- package/package.json +1 -1
- package/plugins/lisa/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa/.codex-plugin/skills/lisa-drive-pr-to-merge/SKILL.md +30 -1
- package/plugins/lisa/skills/lisa-drive-pr-to-merge/SKILL.md +30 -1
- package/plugins/lisa-agy/plugin.json +1 -1
- package/plugins/lisa-agy/skills/lisa-drive-pr-to-merge/SKILL.md +30 -1
- package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk-agy/plugin.json +1 -1
- package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-copilot/skills/lisa-drive-pr-to-merge/SKILL.md +30 -1
- package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cursor/skills/lisa-drive-pr-to-merge/SKILL.md +30 -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/skills/lisa-drive-pr-to-merge/SKILL.md +30 -1
- package/scripts/lib/plugin-cache-resolution.mjs +325 -0
- package/scripts/plugin-parity-drift.mjs +20 -253
- package/scripts/plugin-routing-validate.mjs +32 -68
package/package.json
CHANGED
|
@@ -145,7 +145,7 @@
|
|
|
145
145
|
"zod-validation-error": "^4.0.0"
|
|
146
146
|
},
|
|
147
147
|
"name": "@codyswann/lisa",
|
|
148
|
-
"version": "4.4.
|
|
148
|
+
"version": "4.4.9",
|
|
149
149
|
"description": "Claude Code governance framework that applies guardrails, guidance, and automated enforcement to projects",
|
|
150
150
|
"main": "dist/index.js",
|
|
151
151
|
"exports": {
|
|
@@ -341,6 +341,32 @@ auto-merge armed (section 1); when it returns, re-read `headRefOid` and reset
|
|
|
341
341
|
`verify_commit` to the returned/pushed head, then continue. Do not re-implement review handling here
|
|
342
342
|
— it is the single source of truth for review-thread handling.
|
|
343
343
|
|
|
344
|
+
**Merging past a rate-limited CodeRabbit is permitted — but ONLY when CodeRabbit
|
|
345
|
+
is the sole gate still blocking the merge.** When the CodeRabbit context reports
|
|
346
|
+
`Review rate limited` (or stays pending/queued because of the vendor cap) and it
|
|
347
|
+
is the *only* thing standing between the PR and `MERGED`, do not wait it out:
|
|
348
|
+
with `auto_merge=true` the PR already has auto-merge enabled (section 1), so
|
|
349
|
+
leave the latch armed and merge directly with `gh pr merge <pr> --<merge_method>`
|
|
350
|
+
(pass `--admin` only if branch protection lists the rate-limited context as
|
|
351
|
+
required and refuses the plain merge). "Sole gate" means every one of these is
|
|
352
|
+
already true at the moment you merge — verify each against the live poll, never
|
|
353
|
+
from memory:
|
|
354
|
+
|
|
355
|
+
- every other required check in `statusCheckRollup` is green (no FAILURE, no
|
|
356
|
+
other PENDING);
|
|
357
|
+
- zero unresolved review threads (human or bot);
|
|
358
|
+
- `reviewDecision` is not `CHANGES_REQUESTED`;
|
|
359
|
+
- `mergeable == MERGEABLE` and `mergeStateStatus` is not `BEHIND`/`DIRTY`;
|
|
360
|
+
- no pending auto-fix PR into this branch (step f).
|
|
361
|
+
|
|
362
|
+
If *anything* else is also blocking, the exception does not apply: clear that
|
|
363
|
+
blocker through its own step first, re-poll, and only then re-evaluate whether
|
|
364
|
+
CodeRabbit is the last gate standing. The exception never stacks with another
|
|
365
|
+
bypass, never fires under `auto_merge=false` (that mode stops at
|
|
366
|
+
`awaiting-human`, and a human decides), and never fires in `on_blocker=report`
|
|
367
|
+
mode. Record the result as `MERGED — NOT REVIEWED: CodeRabbit rate limited
|
|
368
|
+
(merged past as sole remaining gate)` in the terminal report (section 4).
|
|
369
|
+
|
|
344
370
|
### e. Review gate stall (`reviewDecision == CHANGES_REQUESTED`)
|
|
345
371
|
After the requested changes are addressed and threads resolved, the prior
|
|
346
372
|
`CHANGES_REQUESTED` review still blocks — a later `COMMENTED` review does not clear
|
|
@@ -541,7 +567,9 @@ Loop until one of:
|
|
|
541
567
|
- **Hard block needing a human**: an unresolvable conflict, a failing check that
|
|
542
568
|
needs design input, or genuine unresolved human objection (not a bot gate). Stop
|
|
543
569
|
and report exactly what is blocking and what was already tried — never force the
|
|
544
|
-
merge or weaken a gate to get past it.
|
|
570
|
+
merge or weaken a gate to get past it. The one sanctioned exception is a
|
|
571
|
+
rate-limited CodeRabbit that is the *sole* remaining gate on an auto-merge
|
|
572
|
+
enabled PR (step d); it never extends to any other gate.
|
|
545
573
|
|
|
546
574
|
At every terminal state, release the babysitter lease
|
|
547
575
|
(`gh pr edit <pr> --remove-label "lisa:babysitter-on-duty"`) so the CI
|
|
@@ -556,6 +584,7 @@ So state the verdict alongside the outcome:
|
|
|
556
584
|
|
|
557
585
|
- `MERGED — reviewed (CodeRabbit "Review approved")`
|
|
558
586
|
- `MERGED — NOT REVIEWED: CodeRabbit posted success but "Review rate limited"`
|
|
587
|
+
- `MERGED — NOT REVIEWED: CodeRabbit rate limited (merged past as sole remaining gate)`
|
|
559
588
|
|
|
560
589
|
This is reporting, never a terminal state of its own. `NOT REVIEWED` does not
|
|
561
590
|
turn a merged PR into a blocked one, and it must never be used to withhold a
|
|
@@ -341,6 +341,32 @@ auto-merge armed (section 1); when it returns, re-read `headRefOid` and reset
|
|
|
341
341
|
`verify_commit` to the returned/pushed head, then continue. Do not re-implement review handling here
|
|
342
342
|
— it is the single source of truth for review-thread handling.
|
|
343
343
|
|
|
344
|
+
**Merging past a rate-limited CodeRabbit is permitted — but ONLY when CodeRabbit
|
|
345
|
+
is the sole gate still blocking the merge.** When the CodeRabbit context reports
|
|
346
|
+
`Review rate limited` (or stays pending/queued because of the vendor cap) and it
|
|
347
|
+
is the *only* thing standing between the PR and `MERGED`, do not wait it out:
|
|
348
|
+
with `auto_merge=true` the PR already has auto-merge enabled (section 1), so
|
|
349
|
+
leave the latch armed and merge directly with `gh pr merge <pr> --<merge_method>`
|
|
350
|
+
(pass `--admin` only if branch protection lists the rate-limited context as
|
|
351
|
+
required and refuses the plain merge). "Sole gate" means every one of these is
|
|
352
|
+
already true at the moment you merge — verify each against the live poll, never
|
|
353
|
+
from memory:
|
|
354
|
+
|
|
355
|
+
- every other required check in `statusCheckRollup` is green (no FAILURE, no
|
|
356
|
+
other PENDING);
|
|
357
|
+
- zero unresolved review threads (human or bot);
|
|
358
|
+
- `reviewDecision` is not `CHANGES_REQUESTED`;
|
|
359
|
+
- `mergeable == MERGEABLE` and `mergeStateStatus` is not `BEHIND`/`DIRTY`;
|
|
360
|
+
- no pending auto-fix PR into this branch (step f).
|
|
361
|
+
|
|
362
|
+
If *anything* else is also blocking, the exception does not apply: clear that
|
|
363
|
+
blocker through its own step first, re-poll, and only then re-evaluate whether
|
|
364
|
+
CodeRabbit is the last gate standing. The exception never stacks with another
|
|
365
|
+
bypass, never fires under `auto_merge=false` (that mode stops at
|
|
366
|
+
`awaiting-human`, and a human decides), and never fires in `on_blocker=report`
|
|
367
|
+
mode. Record the result as `MERGED — NOT REVIEWED: CodeRabbit rate limited
|
|
368
|
+
(merged past as sole remaining gate)` in the terminal report (section 4).
|
|
369
|
+
|
|
344
370
|
### e. Review gate stall (`reviewDecision == CHANGES_REQUESTED`)
|
|
345
371
|
After the requested changes are addressed and threads resolved, the prior
|
|
346
372
|
`CHANGES_REQUESTED` review still blocks — a later `COMMENTED` review does not clear
|
|
@@ -541,7 +567,9 @@ Loop until one of:
|
|
|
541
567
|
- **Hard block needing a human**: an unresolvable conflict, a failing check that
|
|
542
568
|
needs design input, or genuine unresolved human objection (not a bot gate). Stop
|
|
543
569
|
and report exactly what is blocking and what was already tried — never force the
|
|
544
|
-
merge or weaken a gate to get past it.
|
|
570
|
+
merge or weaken a gate to get past it. The one sanctioned exception is a
|
|
571
|
+
rate-limited CodeRabbit that is the *sole* remaining gate on an auto-merge
|
|
572
|
+
enabled PR (step d); it never extends to any other gate.
|
|
545
573
|
|
|
546
574
|
At every terminal state, release the babysitter lease
|
|
547
575
|
(`gh pr edit <pr> --remove-label "lisa:babysitter-on-duty"`) so the CI
|
|
@@ -556,6 +584,7 @@ So state the verdict alongside the outcome:
|
|
|
556
584
|
|
|
557
585
|
- `MERGED — reviewed (CodeRabbit "Review approved")`
|
|
558
586
|
- `MERGED — NOT REVIEWED: CodeRabbit posted success but "Review rate limited"`
|
|
587
|
+
- `MERGED — NOT REVIEWED: CodeRabbit rate limited (merged past as sole remaining gate)`
|
|
559
588
|
|
|
560
589
|
This is reporting, never a terminal state of its own. `NOT REVIEWED` does not
|
|
561
590
|
turn a merged PR into a blocked one, and it must never be used to withhold a
|
|
@@ -341,6 +341,32 @@ auto-merge armed (section 1); when it returns, re-read `headRefOid` and reset
|
|
|
341
341
|
`verify_commit` to the returned/pushed head, then continue. Do not re-implement review handling here
|
|
342
342
|
— it is the single source of truth for review-thread handling.
|
|
343
343
|
|
|
344
|
+
**Merging past a rate-limited CodeRabbit is permitted — but ONLY when CodeRabbit
|
|
345
|
+
is the sole gate still blocking the merge.** When the CodeRabbit context reports
|
|
346
|
+
`Review rate limited` (or stays pending/queued because of the vendor cap) and it
|
|
347
|
+
is the *only* thing standing between the PR and `MERGED`, do not wait it out:
|
|
348
|
+
with `auto_merge=true` the PR already has auto-merge enabled (section 1), so
|
|
349
|
+
leave the latch armed and merge directly with `gh pr merge <pr> --<merge_method>`
|
|
350
|
+
(pass `--admin` only if branch protection lists the rate-limited context as
|
|
351
|
+
required and refuses the plain merge). "Sole gate" means every one of these is
|
|
352
|
+
already true at the moment you merge — verify each against the live poll, never
|
|
353
|
+
from memory:
|
|
354
|
+
|
|
355
|
+
- every other required check in `statusCheckRollup` is green (no FAILURE, no
|
|
356
|
+
other PENDING);
|
|
357
|
+
- zero unresolved review threads (human or bot);
|
|
358
|
+
- `reviewDecision` is not `CHANGES_REQUESTED`;
|
|
359
|
+
- `mergeable == MERGEABLE` and `mergeStateStatus` is not `BEHIND`/`DIRTY`;
|
|
360
|
+
- no pending auto-fix PR into this branch (step f).
|
|
361
|
+
|
|
362
|
+
If *anything* else is also blocking, the exception does not apply: clear that
|
|
363
|
+
blocker through its own step first, re-poll, and only then re-evaluate whether
|
|
364
|
+
CodeRabbit is the last gate standing. The exception never stacks with another
|
|
365
|
+
bypass, never fires under `auto_merge=false` (that mode stops at
|
|
366
|
+
`awaiting-human`, and a human decides), and never fires in `on_blocker=report`
|
|
367
|
+
mode. Record the result as `MERGED — NOT REVIEWED: CodeRabbit rate limited
|
|
368
|
+
(merged past as sole remaining gate)` in the terminal report (section 4).
|
|
369
|
+
|
|
344
370
|
### e. Review gate stall (`reviewDecision == CHANGES_REQUESTED`)
|
|
345
371
|
After the requested changes are addressed and threads resolved, the prior
|
|
346
372
|
`CHANGES_REQUESTED` review still blocks — a later `COMMENTED` review does not clear
|
|
@@ -541,7 +567,9 @@ Loop until one of:
|
|
|
541
567
|
- **Hard block needing a human**: an unresolvable conflict, a failing check that
|
|
542
568
|
needs design input, or genuine unresolved human objection (not a bot gate). Stop
|
|
543
569
|
and report exactly what is blocking and what was already tried — never force the
|
|
544
|
-
merge or weaken a gate to get past it.
|
|
570
|
+
merge or weaken a gate to get past it. The one sanctioned exception is a
|
|
571
|
+
rate-limited CodeRabbit that is the *sole* remaining gate on an auto-merge
|
|
572
|
+
enabled PR (step d); it never extends to any other gate.
|
|
545
573
|
|
|
546
574
|
At every terminal state, release the babysitter lease
|
|
547
575
|
(`gh pr edit <pr> --remove-label "lisa:babysitter-on-duty"`) so the CI
|
|
@@ -556,6 +584,7 @@ So state the verdict alongside the outcome:
|
|
|
556
584
|
|
|
557
585
|
- `MERGED — reviewed (CodeRabbit "Review approved")`
|
|
558
586
|
- `MERGED — NOT REVIEWED: CodeRabbit posted success but "Review rate limited"`
|
|
587
|
+
- `MERGED — NOT REVIEWED: CodeRabbit rate limited (merged past as sole remaining gate)`
|
|
559
588
|
|
|
560
589
|
This is reporting, never a terminal state of its own. `NOT REVIEWED` does not
|
|
561
590
|
turn a merged PR into a blocked one, and it must never be used to withhold a
|
|
@@ -341,6 +341,32 @@ auto-merge armed (section 1); when it returns, re-read `headRefOid` and reset
|
|
|
341
341
|
`verify_commit` to the returned/pushed head, then continue. Do not re-implement review handling here
|
|
342
342
|
— it is the single source of truth for review-thread handling.
|
|
343
343
|
|
|
344
|
+
**Merging past a rate-limited CodeRabbit is permitted — but ONLY when CodeRabbit
|
|
345
|
+
is the sole gate still blocking the merge.** When the CodeRabbit context reports
|
|
346
|
+
`Review rate limited` (or stays pending/queued because of the vendor cap) and it
|
|
347
|
+
is the *only* thing standing between the PR and `MERGED`, do not wait it out:
|
|
348
|
+
with `auto_merge=true` the PR already has auto-merge enabled (section 1), so
|
|
349
|
+
leave the latch armed and merge directly with `gh pr merge <pr> --<merge_method>`
|
|
350
|
+
(pass `--admin` only if branch protection lists the rate-limited context as
|
|
351
|
+
required and refuses the plain merge). "Sole gate" means every one of these is
|
|
352
|
+
already true at the moment you merge — verify each against the live poll, never
|
|
353
|
+
from memory:
|
|
354
|
+
|
|
355
|
+
- every other required check in `statusCheckRollup` is green (no FAILURE, no
|
|
356
|
+
other PENDING);
|
|
357
|
+
- zero unresolved review threads (human or bot);
|
|
358
|
+
- `reviewDecision` is not `CHANGES_REQUESTED`;
|
|
359
|
+
- `mergeable == MERGEABLE` and `mergeStateStatus` is not `BEHIND`/`DIRTY`;
|
|
360
|
+
- no pending auto-fix PR into this branch (step f).
|
|
361
|
+
|
|
362
|
+
If *anything* else is also blocking, the exception does not apply: clear that
|
|
363
|
+
blocker through its own step first, re-poll, and only then re-evaluate whether
|
|
364
|
+
CodeRabbit is the last gate standing. The exception never stacks with another
|
|
365
|
+
bypass, never fires under `auto_merge=false` (that mode stops at
|
|
366
|
+
`awaiting-human`, and a human decides), and never fires in `on_blocker=report`
|
|
367
|
+
mode. Record the result as `MERGED — NOT REVIEWED: CodeRabbit rate limited
|
|
368
|
+
(merged past as sole remaining gate)` in the terminal report (section 4).
|
|
369
|
+
|
|
344
370
|
### e. Review gate stall (`reviewDecision == CHANGES_REQUESTED`)
|
|
345
371
|
After the requested changes are addressed and threads resolved, the prior
|
|
346
372
|
`CHANGES_REQUESTED` review still blocks — a later `COMMENTED` review does not clear
|
|
@@ -541,7 +567,9 @@ Loop until one of:
|
|
|
541
567
|
- **Hard block needing a human**: an unresolvable conflict, a failing check that
|
|
542
568
|
needs design input, or genuine unresolved human objection (not a bot gate). Stop
|
|
543
569
|
and report exactly what is blocking and what was already tried — never force the
|
|
544
|
-
merge or weaken a gate to get past it.
|
|
570
|
+
merge or weaken a gate to get past it. The one sanctioned exception is a
|
|
571
|
+
rate-limited CodeRabbit that is the *sole* remaining gate on an auto-merge
|
|
572
|
+
enabled PR (step d); it never extends to any other gate.
|
|
545
573
|
|
|
546
574
|
At every terminal state, release the babysitter lease
|
|
547
575
|
(`gh pr edit <pr> --remove-label "lisa:babysitter-on-duty"`) so the CI
|
|
@@ -556,6 +584,7 @@ So state the verdict alongside the outcome:
|
|
|
556
584
|
|
|
557
585
|
- `MERGED — reviewed (CodeRabbit "Review approved")`
|
|
558
586
|
- `MERGED — NOT REVIEWED: CodeRabbit posted success but "Review rate limited"`
|
|
587
|
+
- `MERGED — NOT REVIEWED: CodeRabbit rate limited (merged past as sole remaining gate)`
|
|
559
588
|
|
|
560
589
|
This is reporting, never a terminal state of its own. `NOT REVIEWED` does not
|
|
561
590
|
turn a merged PR into a blocked one, and it must never be used to withhold a
|
|
@@ -341,6 +341,32 @@ auto-merge armed (section 1); when it returns, re-read `headRefOid` and reset
|
|
|
341
341
|
`verify_commit` to the returned/pushed head, then continue. Do not re-implement review handling here
|
|
342
342
|
— it is the single source of truth for review-thread handling.
|
|
343
343
|
|
|
344
|
+
**Merging past a rate-limited CodeRabbit is permitted — but ONLY when CodeRabbit
|
|
345
|
+
is the sole gate still blocking the merge.** When the CodeRabbit context reports
|
|
346
|
+
`Review rate limited` (or stays pending/queued because of the vendor cap) and it
|
|
347
|
+
is the *only* thing standing between the PR and `MERGED`, do not wait it out:
|
|
348
|
+
with `auto_merge=true` the PR already has auto-merge enabled (section 1), so
|
|
349
|
+
leave the latch armed and merge directly with `gh pr merge <pr> --<merge_method>`
|
|
350
|
+
(pass `--admin` only if branch protection lists the rate-limited context as
|
|
351
|
+
required and refuses the plain merge). "Sole gate" means every one of these is
|
|
352
|
+
already true at the moment you merge — verify each against the live poll, never
|
|
353
|
+
from memory:
|
|
354
|
+
|
|
355
|
+
- every other required check in `statusCheckRollup` is green (no FAILURE, no
|
|
356
|
+
other PENDING);
|
|
357
|
+
- zero unresolved review threads (human or bot);
|
|
358
|
+
- `reviewDecision` is not `CHANGES_REQUESTED`;
|
|
359
|
+
- `mergeable == MERGEABLE` and `mergeStateStatus` is not `BEHIND`/`DIRTY`;
|
|
360
|
+
- no pending auto-fix PR into this branch (step f).
|
|
361
|
+
|
|
362
|
+
If *anything* else is also blocking, the exception does not apply: clear that
|
|
363
|
+
blocker through its own step first, re-poll, and only then re-evaluate whether
|
|
364
|
+
CodeRabbit is the last gate standing. The exception never stacks with another
|
|
365
|
+
bypass, never fires under `auto_merge=false` (that mode stops at
|
|
366
|
+
`awaiting-human`, and a human decides), and never fires in `on_blocker=report`
|
|
367
|
+
mode. Record the result as `MERGED — NOT REVIEWED: CodeRabbit rate limited
|
|
368
|
+
(merged past as sole remaining gate)` in the terminal report (section 4).
|
|
369
|
+
|
|
344
370
|
### e. Review gate stall (`reviewDecision == CHANGES_REQUESTED`)
|
|
345
371
|
After the requested changes are addressed and threads resolved, the prior
|
|
346
372
|
`CHANGES_REQUESTED` review still blocks — a later `COMMENTED` review does not clear
|
|
@@ -541,7 +567,9 @@ Loop until one of:
|
|
|
541
567
|
- **Hard block needing a human**: an unresolvable conflict, a failing check that
|
|
542
568
|
needs design input, or genuine unresolved human objection (not a bot gate). Stop
|
|
543
569
|
and report exactly what is blocking and what was already tried — never force the
|
|
544
|
-
merge or weaken a gate to get past it.
|
|
570
|
+
merge or weaken a gate to get past it. The one sanctioned exception is a
|
|
571
|
+
rate-limited CodeRabbit that is the *sole* remaining gate on an auto-merge
|
|
572
|
+
enabled PR (step d); it never extends to any other gate.
|
|
545
573
|
|
|
546
574
|
At every terminal state, release the babysitter lease
|
|
547
575
|
(`gh pr edit <pr> --remove-label "lisa:babysitter-on-duty"`) so the CI
|
|
@@ -556,6 +584,7 @@ So state the verdict alongside the outcome:
|
|
|
556
584
|
|
|
557
585
|
- `MERGED — reviewed (CodeRabbit "Review approved")`
|
|
558
586
|
- `MERGED — NOT REVIEWED: CodeRabbit posted success but "Review rate limited"`
|
|
587
|
+
- `MERGED — NOT REVIEWED: CodeRabbit rate limited (merged past as sole remaining gate)`
|
|
559
588
|
|
|
560
589
|
This is reporting, never a terminal state of its own. `NOT REVIEWED` does not
|
|
561
590
|
turn a merged PR into a blocked one, and it must never be used to withhold a
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-openclaw",
|
|
3
|
-
"version": "4.4.
|
|
3
|
+
"version": "4.4.9",
|
|
4
4
|
"description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, for Claude Code and Codex",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Cody Swann"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-openclaw",
|
|
3
|
-
"version": "4.4.
|
|
3
|
+
"version": "4.4.9",
|
|
4
4
|
"description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, across Claude and Codex.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Cody Swann"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-openclaw",
|
|
3
|
-
"version": "4.4.
|
|
3
|
+
"version": "4.4.9",
|
|
4
4
|
"description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, for Claude Code and Codex",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Cody Swann"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-openclaw",
|
|
3
|
-
"version": "4.4.
|
|
3
|
+
"version": "4.4.9",
|
|
4
4
|
"description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, for Claude Code and Codex",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Cody Swann"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-openclaw",
|
|
3
|
-
"version": "4.4.
|
|
3
|
+
"version": "4.4.9",
|
|
4
4
|
"description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, for Claude Code and Codex",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Cody Swann"
|