Repository navigation
Conversation
…ec 061, prompt 1 of 5)
…nt (spec 061, prompt 2 of 5)
…ant (spec 061, prompt 3 of 5)
… them end to end (spec 061, prompt 4 of 5)
bborbe
marked this pull request as ready for review
October 20, 2026 10:50
Owner
Author
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.
Scope
Adds the
vault-cli goal approveandvault-cli topic approveverbs and closes the generic-setbypass that would otherwise let a row leave the approval inbox with no approval record.Surfaces this migrates, all in this repo:
pkg/domain— unchanged (GoalPhase/TopicPhasealready existed).pkg/ops— newGoalApproveOperation/TopicApproveOperation+ sharedrefuseExistingEntityApprovalRecord; newgoalTodoPlanningSetRefusal/topicTodoPlanningSetRefusalguards infrontmatter_entity.go.pkg/cli—goal approve/topic approvesubcommands with--by.commands/plan-goal.md,commands/execute-topic.md— thephase: todoarms now point at the approve verb.docs/goal-writing.md— new § Phase and approval.CHANGELOG.md— twofeat:bullets.Not touched:
task approve, the task-side guards, the frontmatter serializers, orbborbe/claude-supervisor(the manager-start gate is a follow-up spec in that repo).Behaviour
goal approve <goal>/topic approve <topic>movephase: todo → planningand writeapproved_by(defaultoperator,--byoverrides) andapproved_atin one write.phase: todo(including nophasekey), a row already carryingapproved_byorapproved_at, an empty--by, an unknown row.goal set … phase planning/topic set … phase planningon atodorow is refused and points at the approve verb. Only that one (key, value, current-phase) triple is guarded.phasestays exempt — absent phase does not mean todo.Evidence
Spec
specs/completed/061-goal-topic-approve.mdcarries the## Verification Result. Verified against a scratch vault copy (never a live vault): happy path on goal and topic,--byoverride, 16 refusal cases each with an unchangedsha256sum, set-path guard on both entities, narrowness (set phase executionandset prioritystill succeed), and unknown-key preservation.make precommitandmake testboth exit 0.