docs: auto-approve tier contract — judgment-based restatement, framework-neutral done/new - #34
Merged
Conversation
…ork-neutral done/new The tier contract is restated by where the judgment lives instead of by side effect: - framework-verified (read-only / destructive read / idempotent workspace-write): stays bundled in the auto-approve hooks - framework-neutral (done/new): non-destructive and reversible, but *when* to run them is the user's workflow — the framework ships neither an allow nor a must-confirm; users allowlist them in their own agent settings if they want them prompt-less (snippet provided) - project-level / shared-infrastructure (config, clone): keeps prompting - irreversible delete/reset (prune, sync --force/--branch): keeps prompting, already machine-gated root-only at the runtime layer No hook behavior change: the case list and SAFE_SUBCOMMANDS are unchanged; comments, tests and docs now match what the hooks already did. jot --pop's bundling gets its honest rationale (the queue is not user data; pop timing is procedural). Also in this pass: - bare 'orbit goal' never had a read path — USAGE, SKILL and CONSTRAINTS now point reads at 'orbit context goal' - SKILL.md: workflow steps 1/2 respect the injected-block preflight, step 7 pops jots only when the startup block reported them, examples show the assess-before-add chain, Safety rule 3 / Anti-Pattern 3 drop the stale 'human-initiated' actor prescription, ~18 lines trimmed - spec-commands execution-location matrix gains the missing 'orbit config' row Tests: bats tests/24_auto_approve.bats 7/7, node plugin tests 17/17, shellcheck clean. (Local note: tests/09_prune.bats hangs on this machine both with and without these changes — pre-existing, unrelated.) Signed-off-by: zheng-weihao <zheng-weihao@outlook.com>
4 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Restates the auto-approve tier contract by where the judgment lives instead of by side effect, and converges the docs on two smaller truths found during the audit. No hook behavior change — the case list in
hooks/auto-approve.shandSAFE_SUBCOMMANDSinplugin.tsare unchanged; comments, tests and docs now match what the hooks already did.The four tiers
reposinfostatuscontextversiondoctorcompletion/jot --pop/addswitchsyncmemogoaljotdonenewconfigcloneprunesync --forcesync --branchWhy
done/newmove out of the destructive bucket: both are non-destructive and reversible (doneis a state flip that setting a goal reactivates;newonly creates a guarded, prune-reclaimable directory), but orbit cannot judge when running them is right — that timing is the user's workflow rhythm, and bundling them would be the framework taking a position on it. This also retires the stale "human-initiated regardless of permissions" actor prescription (CONSTRAINTS L49, Anti-Pattern 3, SKILL Safety rule 3): the implementation never distinguished callers, and creating a workspace from inside another one is a live workflow.jot --pop's bundling gets its honest rationale: the queue is not user data (jot+memo is agent-maintained by design) and pop timing is procedural, not user rhythm.Also in this pass
orbit goalnever had a read path (TTY opens an editor, non-TTY reads stdin) — USAGE, SKILL and CONSTRAINTS no longer promise the bare read; reads point atorbit context goal.orbit configrow (runs anywhere in the project).Test plan
bats tests/24_auto_approve.bats— 7/7 (destructive-tier loop narrowed toprune/clone/config; new pin: done/new fall through as framework-neutral)node --experimental-strip-types --test plugin.test.ts— 17/17shellcheck hooks/auto-approve.sh— cleantests/09_prune.bats, which hangs on this machine with and without these changes (pre-existing, unrelated — verified against a clean tree)