aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.ai/project-workflows/no-approvals.org78
1 files changed, 78 insertions, 0 deletions
diff --git a/.ai/project-workflows/no-approvals.org b/.ai/project-workflows/no-approvals.org
new file mode 100644
index 0000000..1d7d98a
--- /dev/null
+++ b/.ai/project-workflows/no-approvals.org
@@ -0,0 +1,78 @@
+#+TITLE: No-Approvals Mode
+#+AUTHOR: Craig Jennings & Claude
+#+DATE: 2026-05-28
+
+* When to Use
+
+Craig invokes this for the remainder of a session when the planned work is well-scoped and he wants to step away. He'll check back in to see completed tasks or a single question waiting for him with the recommendation as item 1.
+
+Triggers (any variant): "no approval gates for the rest of this session", "no-approvals mode", "stop asking, just keep going", "I'll check back in when you're done or stuck".
+
+* The Contract
+
+Craig gives up:
+- Per-commit approval gates (commits.md Step 2 "approve / changes / edit" prompt).
+- Per-decision check-ins for routine choices.
+- Inbox-processing confirmations.
+
+Claude keeps:
+- =/review-code= before every commit (mandatory, blocking on Critical or Important findings).
+- =/voice personal= on every commit message (mandatory; 41 patterns).
+- Stop and ask only when there's a real question (a judgment call Claude cannot make, a destructive action, an ambiguous requirement, a genuine surprise in the tree).
+- All other engineering discipline (TDD, content scope, no AI attribution, the safety rules in =commits.md=).
+
+* Workflow Steps
+
+** 1. Acknowledge the mode
+
+Restate the contract in one sentence so the mode is visible in the session log. Append a Session Log entry with the trigger phrase and the time.
+
+** 2. Plan the work
+
+Lay out the remaining work as a numbered list. Pick the order yourself; don't ask. Surface the list once so Craig sees what's coming when he checks back in.
+
+** 3. Execute each item
+
+For each item:
+- Do the work.
+- Update the Session Log per the rules in =protocols.org= (every state-mutating turn writes before the closing message).
+- Before any commit: run =/review-code= against the staged diff. Surface Critical and Important findings inline; fix them and re-review until clean. Minor findings shown but don't block.
+- Draft the commit message. Run =/voice personal= (the skill, or walk the 41 patterns inline if unavailable). Print the final message inline before committing so the log shows it.
+- Commit and push.
+
+** 4. Reach a question or finish
+
+Two exit paths:
+
+*** A. Question for Craig
+
+When you hit a real question, stop. Phrase it with the recommendation as item 1, per =interaction.md='s "Order Options with the Recommendation at Item 1". Surface the question with whatever context Craig needs to decide (what you've finished, what the question is about, what your recommendation is and why, alternatives).
+
+A "real question" excludes:
+- Routine commit-message wording (just commit it; the message stays in =git log= and can be edited via interactive rebase if it bothers you).
+- Choice of commit decomposition (use judgment).
+- Whether to do something Craig already told you to do.
+- Confirmation of obvious next steps.
+
+A "real question" includes:
+- A destructive operation (=git reset --hard=, force-push, =rm -rf=, dropping a branch).
+- An ambiguous requirement where the wrong call wastes meaningful work.
+- A surprise in the tree (unexpected WIP, unexplained branch state, a conflict you can't resolve mechanically).
+- A judgment Craig has consistently wanted to make himself.
+
+*** B. Done
+
+When the planned work is finished, post a single summary message: what shipped, what's left for next session (if anything), and a one-line invitation back ("Ready when you are"). Don't auto-wrap-up the session — that's still Craig's call.
+
+* Common Mistakes
+
+1. Skipping =/review-code= because the diff "looks clean". The gate is mandatory in this mode, not just protective when uncertain.
+2. Skipping =/voice personal= on commit messages. Same — the rule survives mode changes.
+3. Bundling a "question" with a hidden ask for permission ("I'm about to do X, is that OK?"). That's an approval gate. Either do X or surface a real question.
+4. Surfacing every minor decision as a question to be safe. The mode exists because Craig wants velocity; over-surfacing defeats the purpose. Use judgment.
+5. Forgetting to update the Session Log between items. The log is the only crash-recovery anchor while Craig is away; missing entries lose work.
+6. Failing to print the commit message inline before committing. The print step exists so the log shows exactly what landed, without Craig having to read the diff to find out.
+
+* Exit
+
+This mode applies for the remainder of the session that invoked it. It does not persist across wrap-up. The next session starts in normal-gate mode unless Craig invokes no-approvals again.