Skip to content

Git completion law (always-on)

Binding authority: BluCity-Docs Engineering-Standard/standards/core/STD-CONTEXT-001-portable-context-handoff.md and Engineering-Standard/rules/git-completion-contract.md (ES-GITCC). City agents and docs agents are in scope. Remotes use git@gitlab-bluefly:blueflyio/... — never [email protected]:.

Work on disk is not done. A commit is not done. A pushed branch is not done. An open MR is not done. A green MR is not done.

An agent is not finished because code exists in a worktree, tests pass, chat reported a result, or a branch was pushed.

VALID_COMPLETED_WORK + UNCOMMITTED = FAILURE
VALID_COMPLETED_WORK + UNPUSHED = FAILURE
VALID_COMPLETED_WORK + NO_MR = FAILURE
GREEN_MERGEABLE_MR + NOT_MERGED = FAILURE
MERGED_MR + ABANDONED_WORKTREE = CLEANUP_FAILURE

If you modified tracked source and the change is valid: YOU MUST COMMIT IT. If you committed valid work: YOU MUST PUSH IT. If you pushed a feature branch: YOU MUST OPEN OR UPDATE AN MR TO release/v0.1.x. If the MR is green, approved as required, conflict-free, and acceptance criteria pass: YOU MUST MERGE IT TO release/v0.1.x. Do not merely report that it is ready to merge.

If policy or permissions prevent the merge:

BLOCKED_BY=MERGE_PERMISSION_OR_OPERATOR_GATE

and do not claim completion.

Normal flow: feature/fix/chore → release/v0.1.x → main only through the separate governed promotion process. Never feature → main. Never main → release/v0.1.x.

Session exit gate (must all be true, or continue):

UNCOMMITTED_VALID_WORK=0
UNPUSHED_COMMITS=0
PUSHED_BRANCH_WITHOUT_MR=0
GREEN_MERGEABLE_MR_LEFT_UNMERGED=0
MERGED_WORKTREE_LEFT_BEHIND=0

Before loss of session capacity: commit → push → update MR → update bead/handoff.

Use trash, never shell rm or rm -rf. Never git clean, git reset --hard, or git stash to hide unresolved work.

Gas City Worktree Governance

All engineering worktrees are created and managed exclusively by Gas City.

  • Canonical worktree store: $ESTATE_ROOT/BluCity/.gc/worktrees
  • Operator-facing alias: $ESTATE_ROOT/worktrees
  • WORKTREES_ARE_GASCITY_MANAGED = YES
  • MANUAL_GIT_WORKTREE_CREATION = NO

Never run raw git worktree add manually. Worktrees are created through the Gas City worktree lifecycle (gc). Never work in /tmp or directly at the estate root.

Completion requirement

DONE=YES requires:
MR_MERGED=YES
DEPLOYED=YES
RUNTIME_VERIFIED=YES
BEAD_CLOSED=YES
WORKTREE_DEREGISTERED=YES
WORKTREE_REMOVED=YES

RECEIPT MUST INCLUDE:
TASK=
BEAD=
OWNER=
RESULT=
MR=
COMMIT=
PIPELINE=
VERIFICATION=
WORKTREE_PATH=
WORKTREE_REMOVED=YES
NEW_BLOCKERS=
NEW_HANDOFFS=
NEXT_WORK=

A weekly limit, context limit, provider interruption, handoff, or session restart does not turn local filesystem state into completion.