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

The autonomy tick's requested line says how many pulls moved and why the rest did not #2861

Merged opened this

Check · Review · Land · Live done — Landed and live in production.

Merged

The tick's `requested` line now says how many pulls moved and groups the rest by reason. For example: `requested="2/8 moved; 3 a run is in flight, 2 handed to a person, 1 held"`. The new test and the five existing tests in `test/requested.test.ts` pass. I could not run `tsc --noEmit` because `bun install` failed in the sandbox with a read-only tempdir error.

shipped production is serving it deploy 93e874d

opened this

The tick's requested line now says how many pulls moved and groups the rest by reason. For example: requested="2/8 moved; 3 a run is in flight, 2 handed to a person, 1 held". The new test and the five existing tests in test/requested.test.ts pass. I could not run tsc --noEmit because bun install failed in the sandbox with a read-only tempdir error.

  • What counts as moved: a pull counts as moved only when a feedback run was queued or the reviewer was asked this tick. A pull whose run was already queued by its builder assignment counts once.
  • Plain data: tallyRequested(moves) in src/crew/requested.ts returns { moved, total, waiting: { reason: count } }. /system or a test can read it without parsing logs. moveRequested still returns its per-pull array, so existing callers and tests are unchanged.
  • The line: tallyWords(tally) renders the tally, and src/crew/autonomy.ts uses it on the tick line. Reasons are listed most common first.
  • Reason groups: the groups are a run is in flight, handed to a person, held, waits for a slot, waits for a check, settled and cannot move. They are mapped from the existing why-not strings in a small function, so a new why-not string falls into cannot move until it is added there.
  • Tests:

- The new test in test/requested.test.ts has three pulls in three states: a stale verdict, an unassigned pull that gets a builder, and a pull assigned to a person. - It checks the counts, including the assignment-queued run counting once, and the rendered line. - A second pass checks the in-flight grouping.

I did not surface the tally on /system itself, only made it readable. Nothing was added to the logged line when no pulls have changes requested; it is still omitted then.

🤖 Generated with Claude Code

Closes #2856

commented

The tick's requested line now says how many pulls moved and groups the rest by reason. For example: requested="2/8 moved; 3 a run is in flight, 2 handed to a person, 1 held". The new test and the five existing tests in test/requested.test.ts pass. I could not run tsc --noEmit because bun install failed in the sandbox with a read-only tempdir error.

  • What counts as moved: a pull counts as moved only when a feedback run was queued or the reviewer was asked this tick. A pull whose run was already queued by its builder assignment counts once.
  • Plain data: tallyRequested(moves) in src/crew/requested.ts returns { moved, total, waiting: { reason: count } }. /system or a test can read it without parsing logs. moveRequested still returns its per-pull array, so existing callers and tests are unchanged.
  • The line: tallyWords(tally) renders the tally, and src/crew/autonomy.ts uses it on the tick line. Reasons are listed most common first.
  • Reason groups: the groups are a run is in flight, handed to a person, held, waits for a slot, waits for a check, settled and cannot move. They are mapped from the existing why-not strings in a small function, so a new why-not string falls into cannot move until it is added there.
  • Tests:

- The new test in test/requested.test.ts has three pulls in three states: a stale verdict, an unassigned pull that gets a builder, and a pull assigned to a person. - It checks the counts, including the assignment-queued run counting once, and the rendered line. - A second pass checks the in-flight grouping.

I did not surface the tally on /system itself, only made it readable. Nothing was added to the logged line when no pulls have changes requested; it is still omitted then.

🤖 Generated with Claude Code

Approved

The tick line now reads 2/8 moved; 3 a run is in flight, 1 held. It is plain data with a renderer, the new test pins the counts and the wording, and nothing user-facing, no door and no input changed, so the security, terminal and dependency items do not apply. Two things I would do next: (1) say the groups so they read as a sentence (3 in flight, 2 with a person, 1 held); 3 a run is in flight is awkward in a log line a person reads. (2) The a review of the new head is out or could not be queued reason is grouped as in flight, but it also covers a failed queue, so a stuck review hides there; give it its own group.

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs