@erclx/canon 5.46.0 → 5.47.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/claude/.claude-plugin/plugin.json +1 -1
- package/claude/skills/git-followup/SKILL.md +1 -0
- package/claude/skills/git-pr/REQUIREMENT.md +2 -2
- package/claude/skills/git-pr/SKILL.md +2 -1
- package/claude/skills/git-pr/references/pr.md +58 -7
- package/claude/skills/review-address/SKILL.md +18 -6
- package/claude/skills/review-address/references/post-review-findings.md +4 -1
- package/claude/skills/review-address/references/rebase-only.md +14 -2
- package/claude/skills/review-pr/SKILL.md +9 -2
- package/claude/skills/review-pr/references/body-variants.md +29 -8
- package/claude/skills/review-pr/references/post.md +29 -10
- package/claude/skills/review-ui/SKILL.md +1 -0
- package/claude/skills/review-ui/references/post.md +2 -0
- package/claude/skills/review-ui/references/tick.md +3 -0
- package/claude/skills/role-reviewer/REQUIREMENT.md +1 -1
- package/claude/skills/role-reviewer/SKILL.md +3 -0
- package/claude/skills/role-worker/REQUIREMENT.md +1 -1
- package/claude/skills/role-worker/SKILL.md +1 -0
- package/claude/skills/task-board/references/decline.md +2 -2
- package/claude/skills/task-complete/references/archive.md +3 -2
- package/claude/skills/ui-checklist/SKILL.md +3 -3
- package/docs/workflow/zshrc-aliases.md +3 -0
- package/package.json +1 -1
- package/scripts/core/bootstrap.sh +1 -0
- package/src/commands/labels.ts +66 -1
- package/src/commands/pr.ts +113 -4
- package/src/commands/sessions.ts +25 -11
- package/src/commands/tasks.ts +2 -0
- package/src/labels/density.ts +363 -0
- package/src/pr/evidence.ts +1 -1
- package/src/pr/rest.ts +2 -0
- package/src/pr/tick.ts +89 -0
- package/src/sessions/live.ts +26 -0
- package/src/sessions/resolve.ts +62 -11
- package/src/tasks/archive.ts +15 -4
- package/tooling/base/seeds/.github/pull_request_template.md +1 -1
package/src/tasks/archive.ts
CHANGED
|
@@ -107,6 +107,7 @@ export interface ArchiveSuccess {
|
|
|
107
107
|
readonly from: string
|
|
108
108
|
readonly to: string
|
|
109
109
|
readonly priorityRowRemoved: boolean
|
|
110
|
+
readonly backlogRowRemoved: boolean
|
|
110
111
|
readonly indexRegenerated: boolean
|
|
111
112
|
/** Every live plan the task cited that no other live task still holds, in line order. */
|
|
112
113
|
readonly plans: readonly PlanMove[]
|
|
@@ -556,7 +557,7 @@ function isRowFor(line: string, target: string): boolean {
|
|
|
556
557
|
}
|
|
557
558
|
|
|
558
559
|
/**
|
|
559
|
-
* Drops the
|
|
560
|
+
* Drops the task's bullet from the backlog. A backlog line is a
|
|
560
561
|
* bullet carrying a link rather than a table row, so the match is a bullet
|
|
561
562
|
* prefix and the link target rather than `isRowFor`'s pipe-delimited cell.
|
|
562
563
|
*/
|
|
@@ -571,9 +572,17 @@ export function removeBacklogRow(
|
|
|
571
572
|
return { text: kept.join('\n'), removed: kept.length !== lines.length }
|
|
572
573
|
}
|
|
573
574
|
|
|
575
|
+
/**
|
|
576
|
+
* A bullet is about a task when its first link targets it. A later link is a
|
|
577
|
+
* reference, such as a note on what the bullet waits for, and matching anywhere
|
|
578
|
+
* would drop that other task's line from a file no history backs.
|
|
579
|
+
*/
|
|
574
580
|
function isBulletFor(line: string, target: string): boolean {
|
|
575
581
|
const trimmed = line.trimStart()
|
|
576
|
-
|
|
582
|
+
if (!/^[-*]\s/.test(trimmed)) return false
|
|
583
|
+
|
|
584
|
+
const first = trimmed.indexOf('](')
|
|
585
|
+
return first !== -1 && trimmed.startsWith(target, first)
|
|
577
586
|
}
|
|
578
587
|
|
|
579
588
|
/**
|
|
@@ -896,8 +905,8 @@ async function resolveStem(
|
|
|
896
905
|
}
|
|
897
906
|
|
|
898
907
|
/**
|
|
899
|
-
* Archives one task as a single unit: the move, the ordering-row
|
|
900
|
-
* the index regen. The hook and `task-complete` both call this, so every gate
|
|
908
|
+
* Archives one task as a single unit: the move, the ordering-row and backlog
|
|
909
|
+
* bullet removal, and the index regen. The hook and `task-complete` both call this, so every gate
|
|
901
910
|
* refuses rather than reports. A caller with nobody watching cannot act on a
|
|
902
911
|
* warning, and two callers gating differently is the drift this exists to stop.
|
|
903
912
|
*/
|
|
@@ -996,6 +1005,7 @@ export async function archiveTask(
|
|
|
996
1005
|
|
|
997
1006
|
const { relinked, failed } = await repointInboundLinks(root, from, to)
|
|
998
1007
|
const priorityRowRemoved = await clearPriorityRow(dir, stem)
|
|
1008
|
+
const backlogRowRemoved = await clearBacklogRow(dir, stem)
|
|
999
1009
|
const regen = await regenOne(dir, { dryRun: false })
|
|
1000
1010
|
|
|
1001
1011
|
return {
|
|
@@ -1004,6 +1014,7 @@ export async function archiveTask(
|
|
|
1004
1014
|
from,
|
|
1005
1015
|
to,
|
|
1006
1016
|
priorityRowRemoved,
|
|
1017
|
+
backlogRowRemoved,
|
|
1007
1018
|
indexRegenerated: regen.action === 'written',
|
|
1008
1019
|
plans: plans.moves,
|
|
1009
1020
|
ready: ready || undefined,
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
- <Verb> <specific component/file/function>
|
|
9
9
|
|
|
10
10
|
<!-- ## Technical context (optional, omit for docs/config/trivial changes) -->
|
|
11
|
-
<!--
|
|
11
|
+
<!-- **<Decision in a few words>.** <Why this approach, what the code can't show, and any shortcoming> -->
|
|
12
12
|
|
|
13
13
|
## Testing
|
|
14
14
|
|