Skip to content

feat: personal to-do inbox — TUI and web live on one file; agents work top-down and stop for you (v2.12.0) - #56

Merged
cskwork merged 11 commits into
mainfrom
feat/v2.12.0-todo-inbox
Oct 26, 2026
Merged

cskwork merged 11 commits into
mainfrom
feat/v2.12.0-todo-inbox

Conversation

@cskwork

@cskwork cskwork commented Oct 26, 2026 •

Copy link
Copy Markdown
Owner

Summary

sdlc-kit can now act as a personal agent. Its inbox is one human-readable to-do file (~/.sdlc/todo.md) shared across projects.

  • Who writes items: humans, agents and external programs. Jira-style ticket links get short labels such as WEB-123.
  • How agents work it: todo.mjs next returns the first Open item. Exit codes are 0 workable, 10 waiting for you, 20 blocked and 30 empty. Agents stop at a waiting or blocked item and never skip to a lower one.
  • Where you decide: a TUI and a localhost web page in an Apple Notes style. Both stay live on the same file. The page shows intent.md or PLAN.md. Approve opens the gate for exactly the bytes shown, via the new sdlc.sh approve ... --sha <hex>. Reply answers a question and never approves.
  • History: every slug, new or resumed, has an item. Done items are struck through, Done keeps the newest 30 and older ones go to todo-archive.md. Each event line has a YYYY-MM-DD HH:MM timestamp and an author.

Contract changes

  • sdlc.sh approve gains an optional trailing --sha <hex>. Existing 4-argument calls behave as before. sdlc.sh is still 599 lines.
  • SKILL.md routes "work the to-do" to todo/AGENT.md. Prompt words went down from 5,993 to 5,972, and every phase load is lower than before.
  • New optional runtime: Node 18+, needed only for todo/. It has zero dependencies.

Security

  • The web server binds to 127.0.0.1 only.
  • Each run gets a random token that lives only in memory. It is printed only to a TTY.
  • Requests must pass Host, Origin and JSON content-type checks. Bodies over 64 KiB get 413.
  • The page sends a CSP with no inline script.
  • Every mutation carries a duplicate-aware item version and gets 409 if the item changed.
  • Same-user programs are outside this boundary, the same as --human today.

Verification

  • macOS: selftest passed 130 checks, and the to-do Node tests passed 152/152.
  • Review: an independent Sol diff review passed in Round 9. Rounds 3 to 8 failed. Each blocker was fixed with a regression test that fails on an assertion, and every test has recorded red evidence.
  • QA round 1: all 21 must scenarios passed. S17, S23 and S24 (contrast, and blocked reasons in the TUI and web page) were fixed after QA and have not been re-run by QA.
  • Windows follow-up: Git Bash (MSYS) paths are now converted for Node. Web artifact reads and approvals use the store sdlc.sh reports, which is safe with junctions. POSIX-only test assumptions were removed. Independent review Round 10 passed.
  • CI: run 40256109504 on the Windows fix commits passed on ubuntu, macOS and windows. This PR's own checks run on the merged head.

@cskwork
cskwork merged commit acf7095 into main Oct 26, 2026
3 checks passed
@cskwork
cskwork deleted the feat/v2.12.0-todo-inbox branch October 26, 2026 02:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants