aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--todo.org54
1 files changed, 18 insertions, 36 deletions
diff --git a/todo.org b/todo.org
index 0a91a59..1ec89d0 100644
--- a/todo.org
+++ b/todo.org
@@ -781,10 +781,10 @@ Each item below is a one-line summary of a sub-TODO further down. Tick the box w
- [X] [#B] =respond-to-cj-comments=: fallback when =humanizer= or =emacsclient= unavailable (moot — superseded by /voice + VERIFY pattern)
**** Branch workflow
-- [ ] [#A] =finish-branch=: fix base-branch detection
-- [ ] [#B] =finish-branch=: worktree-aware pull/merge safety
-- [ ] [#B] =start-work=: tool-availability + ceremony-scaling rules
-- [ ] [#B] =start-work=: claim-before-justify rollback risk
+- [X] [#A] =finish-branch=: fix base-branch detection
+- [X] [#B] =finish-branch=: worktree-aware pull/merge safety
+- [X] [#B] =start-work=: tool-availability + ceremony-scaling rules
+- [X] [#B] =start-work=: claim-before-justify rollback risk
**** Tests / TDD
- [X] [#B] =add-tests=: fix missing =typescript-testing.md= reference or add ruleset (moot — ruleset now exists)
@@ -809,8 +809,8 @@ Each item below is a one-line summary of a sub-TODO further down. Tick the box w
- [ ] [#B] =arch-evaluate=: report skipped tool checks explicitly
**** C4 modeling
-- [ ] [#A] =c4-analyze= + =c4-diagram=: notation/output fallback (not draw.io-only)
-- [ ] [#B] =c4-analyze= + =c4-diagram=: clarify abstraction boundaries
+- [X] [#A] =c4-analyze= + =c4-diagram=: notation/output fallback (not draw.io-only)
+- [X] [#B] =c4-analyze= + =c4-diagram=: clarify abstraction boundaries
**** Global rules
- [ ] [#B] =commits.md=: split DeepSat/Linear/Slack-specific from global rules
@@ -926,35 +926,21 @@ Already resolved by a prior migration: =grep= for =/home/= and =/Users/= in =.cl
Overtaken by two later changes: =/humanizer= was replaced by =/voice personal= (no =/humanizer= invocation remains), and the mandatory =emacsclient= summary-open was replaced by the in-place VERIFY-task pattern (workflow line ~262, Craig's 2026-05-12 standing instruction). Only a stale descriptive phrase remained — tidied "humanizer's signs of AI writing" to "the signs of AI writing." The original fresh-environment-fallback concern no longer applies as written.
-*** TODO [#A] =finish-branch=: fix base-branch detection
+*** 2026-05-22 Fri @ 14:51:37 -0500 Fixed finish-branch base-branch detection
-Phase 2 says "determine base branch" but the command shown returns a merge-base
-commit SHA, not the branch name to check out, pull, merge into, or pass as PR
-base. Replace with explicit branch detection: upstream PR base if present,
-configured default branch from =origin/HEAD=, or user-selected branch, then
-compute merge-base separately.
+Rewrote Phase 2: resolve the base *branch name* in priority order (open PR's =baseRefName=, then =git symbolic-ref --short refs/remotes/origin/HEAD= stripped, then ask), and compute the merge-base *SHA* separately only where a commit range is needed. Made the branch-name-vs-merge-base distinction explicit, since the old command returned a SHA where a branch name was needed.
-*** TODO [#A] =finish-branch=: make pull/merge steps safer and worktree-aware
+*** 2026-05-22 Fri @ 14:51:37 -0500 Made finish-branch merge safer + worktree-aware
-Option 1 runs =git pull= and =git merge --no-ff= after checkout. Add checks for
-dirty worktree, upstream tracking, protected branches, and rebase-vs-merge team
-policy. Worktree detection via grepping branch names is fragile; use =git
-worktree list --porcelain= or =git rev-parse --git-common-dir= based checks.
+Added pre-flight checks to Option 1 (Merge Locally): dirty-tree refusal with no auto-stash, protected-branch awareness, upstream-gated =git pull --ff-only=, and merge-commit-vs-rebase as a team-policy choice instead of a hardcoded =--no-ff=. Replaced the fragile =git worktree list | grep <branch>= detection with a =git rev-parse --git-dir= vs =--git-common-dir= comparison plus =git worktree list --porcelain= for the path.
-*** TODO [#A] =start-work=: add tool-availability and ceremony-scaling rules
+*** 2026-05-22 Fri @ 14:51:37 -0500 Added tool-availability + ceremony-scale paths to start-work
-The workflow assumes Linear MCP, GitHub CLI, =humanizer=, Playwright skills, and
-multi-commit TDD ceremony. Add a first-class "tools unavailable" path and a
-ceremony scale: trivial local fixes should not require the full ticket,
-branch, three approval gates, and commit-per-phase flow unless the user wants
-that process.
+Added a "Tool availability" section (graceful degradation when Linear MCP / =gh= / =/voice= / Playwright are missing — do what's available, surface what isn't, don't block) and a "Ceremony scale" section (trivial / small / standard tiers so a two-line fix skips ticket+branch+gates unless asked). The =humanizer= reference in the original item is moot — the file already uses =/voice= throughout.
-*** TODO [#A] =start-work=: resolve the "claim before justify" rollback risk
+*** 2026-05-22 Fri @ 14:51:37 -0500 Resolved start-work claim-before-justify rollback risk
-The skill marks Linear/GitHub/todo tasks in progress before the Justify gate,
-then says rolling back is required if justification fails. Consider moving
-claiming after Gate 1 for personal todo tasks, or make the rollback steps
-explicit per tracker with stored prior state.
+Split the claim by tracker type: personal todo.org claims defer to after the Justify gate (a killed task needs no rollback), while team trackers (Linear/GitHub) still claim first to signal intent but record prior state (status, assignee, label) so the Phase 2 rollback restores exactly it. Updated the per-tracker rollback steps and the matching anti-pattern.
*** 2026-05-22 Fri @ 14:28:41 -0500 Verified add-tests typescript-testing.md reference resolves (moot)
@@ -1036,17 +1022,13 @@ The workflow says skip unconfigured language-specific tools silently, but the
review checklist also wants checks run. For audit usefulness, list detected
languages and "tool not configured" entries under Info instead of silent skips.
-*** TODO [#A] =c4-analyze= and =c4-diagram=: add notation/output fallback instead of draw.io-only
+*** 2026-05-22 Fri @ 14:51:37 -0500 Added notation/output fallback to c4-analyze + c4-diagram
-C4 is notation-independent. These skills hard-require draw.io XML, PNG export,
-and opening draw.io desktop. Add supported outputs (Structurizr DSL, Mermaid,
-PlantUML, draw.io) and a fallback path when =drawio= or a GUI is unavailable.
+Both commands now treat C4 as notation-independent: a "Choosing a notation" section (draw.io XML, Structurizr DSL, Mermaid with native C4 types, PlantUML/C4-PlantUML) and a headless fallback that emits a text notation (Mermaid or Structurizr DSL) and skips PNG-export/desktop-open when =drawio= or a GUI is absent, rather than failing. draw.io is now one option, not the only one.
-*** TODO [#A] =c4-analyze= and =c4-diagram=: clarify C4 abstraction boundaries
+*** 2026-05-22 Fri @ 14:51:37 -0500 Clarified C4 abstraction boundaries in c4-analyze + c4-diagram
-Emphasize that C4 Containers are deployable/runnable units, not necessarily
-Docker containers, and that Components are not separately deployable. Add a
-check that every relationship and element stays at one abstraction level.
+Added an "Abstraction boundaries" section to both: a Container is a separately deployable/runnable unit (not synonymous with a Docker container — a SPA or managed DB counts), a Component lives inside one Container and isn't separately deployable. Added a 4e "Verify single abstraction level" check that walks every element and relationship to confirm it stays at the diagram's level, notation-independent.
*** TODO [#A] =commits.md=: split DeepSat/Linear/Slack-specific publishing rules from global commit rules