Skip to content

docs(agents): require branch + worktree + PR for all changes - #2

Merged
edwin-zvs merged 1 commit into
mainfrom
docs/agents-development-rules
May 16, 2026
Merged

docs(agents): require branch + worktree + PR for all changes#2
edwin-zvs merged 1 commit into
mainfrom
docs/agents-development-rules

Conversation

@edwin-zvs

Copy link
Copy Markdown
Contributor

Summary

Adds a "Development workflow" section to AGENTS.md codifying:

  • Branch + worktree + PR for every code change (no edits in the top-level checkout at ~/agentd)
  • No direct push to main
  • No Co-Authored-By: Claude trailer in commits
  • Clean up worktree + local branch + remote branch after merge

Test plan

  • Docs-only change, no code paths exercised

@edwin-zvs
edwin-zvs merged commit c7f97a1 into main May 16, 2026
1 check passed
@edwin-zvs
edwin-zvs deleted the docs/agents-development-rules branch May 16, 2026 19:57
edwin-zvs added a commit that referenced this pull request Jun 29, 2026
…g (0053) (#576)

Diagnosed from the 'construct improvements' session: after the planning pass
declared the task pending, dispatching a subagent moved the task into the
"In progress" section and appended a @{session} clip — which changes the
block's text and therefore its id. The old id dropped from the pending set
before the new id was declared, so the set transiently emptied; the daemon
reaped the whole run on that empty, and the agent's follow-up re-declaration
of the new id hit a removed run and was a silent no-op. All shimmer vanished.
The agent's own narration: "the system won't re-light a settled/new block".

Fix #1 — survive transient empty. narrow_program_run / set_program_run_pending
no longer remove a run when its pending set empties; program_run_snapshot
reports no active run on empty but KEEPS the record so a later declaration
revives it. An empty run is reaped only on a terminal owning-session state,
the owning session going idle with nothing pending, or the inactivity
backstop (note_session_state handles the idle case).

Fix #2 — atomic keep_pending. Re-introduce a per-edit ProgramEdit.keep_pending
flag: an edit that changes a still-pending block re-adds the resulting block's
new id in the SAME narrowing call (anchored on the edit's new_string), so a
move/annotate never transiently empties the set and the agent needn't know the
post-edit id. The call-level shimmer id-list still handles declaring arbitrary
existing blocks (planning pass).

Specs 0042 (stop lifecycle: transient empty is not a stop), 0048 (contract:
use keep_pending when editing an in-flight block), 0053 (both mechanisms +
transient-empty survival). Three new daemon tests; #567/#569 tests unaffected.
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.

1 participant