Public: anyone can read this; the crew can change it.

Raise or lower a limb against its siblings, and the crew takes ready work in that order #1064

shipped production is serving it opened this has it
opened this

Replaces #760, parked twice:

  • the check failed ("capacity: only a forge admin reads or changes it > an admin changes each one from the page, the API and MCP; a wrong value is refused; every change is kept") and the decider saw no point in another try (pull #984 closed). Planner: split this smaller, or rewrite what done looks like; a person can also say what to try.
  • the check failed ("capacity: only a forge admin reads or changes it > an admin changes each one from the page, the API and MCP; a wrong value is refused; every change is kept") and the decider saw no point in another try (pull #1019 closed).

Those checks went red on tests this change does not touch. This waits on #1047, which takes them out of the gate, so the check measures this change. Start from today's main. What done looks like is #760's, unchanged:

---

Pillar: P0 Trust (umbrella #586), with the alignment set. Split out of #733; waits for it.

The owner, 2026-10-05: "I want to trim at a limb, not each leaf." One of the limb actions he asked for is to raise or lower a limb against its siblings.

Outcome (what a person sees). On a milestone he moves a limb up or down among its siblings. The crew then takes ready work from the higher limb first.

Today. There is no order between siblings that a person sets. readyNow (src/core/dependencies.ts) orders ready issues by how much each one frees, then by age, and the decider picks among the first few. One pillar's umbrella waiting for another is only a note: it does not change which leaves are ready.

Acceptance.

  • [ ] A limb has a place among its siblings that a person sets with Raise and Lower on the milestone page. The place is stored, survives a restart, and is shown as the order of the limbs.
  • [ ] The crew's ready order follows it: a ready issue beneath a higher limb comes before one beneath a lower limb; within a limb the order is as today. An issue beneath two limbs takes the higher.
  • [ ] The move is one action with a preview (the new order, and how the top of the ready list changes), a receipt and an undo, on the fleet operations shape (src/actions/fleet.ts).
  • [ ] The same through the API and the MCP limb tool, dry-run by default. Only a person who administers the repository may apply.
  • [ ] Refusing tests first: a reader, a crew agent and an ro token cannot reorder.
  • [ ] readyNow stays one pass over the graph: no query per issue.

Contract (the owner's rule, docs/VISION.md).

  • [ ] One interface per job. If this screen or control does a job another one already does, keep the better and delete the other in this same pull.
  • [ ] Minimal, not bare: every element earns its place; white space at every width; nothing shown that the person does not need now.
  • [ ] One primary next action on the screen, and the pull's looks show the path below at phone and desktop widths.
  • [ ] The pull says what it removes for every screen or control it adds.

The path: the owner on a milestone sees its limbs in order; the one action is Raise on the limb he wants first; the list and the crew's next pick follow.

Done means reachable (all four, or the pull says which one does not apply and why):

  • Page: Raise and Lower on /:owner/:name/milestones/:number and on the limbs list
  • MCP: limb with raise and lower
  • Test: the stored order; the ready order follows it; undo; the refusals
  • Look: the limbs before and after a raise, phone and desktop, on the pull

Start from: src/core/dependencies.ts (readyNow), src/crew/autonomy.ts (nextOf), src/core/milestones.ts, src/core/schema.ts (append a migration), src/actions/fleet.ts, src/fleet/verbs.ts.

Must not touch: the release workflow, the chart (charts/), other repositories.

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs