Skip to content

Agent-facing text: one inventory and a wording lint (#487) - #574

Merged
renmengye merged 3 commits into
mainfrom
feat/agent-text-inventory
Oct 24, 2026
Merged

renmengye merged 3 commits into
mainfrom
feat/agent-text-inventory

Conversation

@renmengye

Copy link
Copy Markdown
Member

Parts 1 and 2 of #487. Part 3 (refusals per run as a release metric) is left open.

Inventory. outerloop.agent_text.inventory() collects every string the kernel shows an agent, from where it already lives: the rendered briefs, every syscall verb's argparse help, the tool-update notes, wake renderings, one rendering per inbox message kind, and the kernel's refusals. Refusals stay inline at their call sites; the inventory reads them from the source with ast (a short explicit list of constructs, f-string placeholders shown as {}). python -m outerloop.agent_text prints all of it (163 entries) for review in one read.

Lint (tests/test_agent_text.py, runs in the normal suite):

  • the verb is stop; end as a command fails (the one tool-update sentence that explains the rename is allowed);
  • no kernel-internal vocabulary (leg, lease, tick, and the like), with an allow-list where a word means something else;
  • every syscall named in agent text exists in the parser;
  • every kernel refusal names a next step. Input-validation messages ("--minutes must be a positive integer") are exempt: they already say what to fix.

Wording fixes the lint found (15 messages), e.g.: "sleep budget exhausted … conclude with what you have" now says "use stop with what you have"; "Publish refused: no code change; metric noise." adds "Submit a code change or use stop."; "Withdrawal requires an open PR." adds "Use stop without --withdraw instead."; a capacity refusal says to wait for capacity. Behaviour is unchanged.

Eight publish refusals whose recovery depends on the situation (base contract changed, PR closed, head moved outside the agent) are allow-listed with a reason rather than given a generic next step.

Built by codex; reviewed by Claude (two rework rounds: dropped boilerplate "fix the request and retry" suffixes, and kept refusals inline instead of moving them into text tables).

@renmengye renmengye added the outerloop:review re-request the advisory review label Oct 24, 2026

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Round 1 — reviewed head 837a5eb1 — reviewer hermes/gpt-5.6-terra.

terra
Advisory findings from outerloop — the code owner decides. Reply to disagree; the outerloop:no-review label opts this PR out.

Verdict: nothing blocking — 1 advisory note.

1 finding attached to the lines below.

The inventory misses a kernel refusal that uses the note message kind.

Comment thread src/outerloop/agent_text.py Resolved

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Round 2 (re-run on the same head) — reviewed head 837a5eb1 — reviewer summarizer:hermes/gpt-5.6-terra over coverage+credentials+deployment+general+lifecycle+prose.

terra
Advisory findings from outerloop — the code owner decides. Reply to disagree; the outerloop:no-review label opts this PR out.

Verdict: nothing blocking — 2 advisory notes.

2 findings attached to the lines below.

Verdict: the new agent-text inventory misses kernel templates outside its refusal-key filter, including the live head-moved and silent-stop messages; changed refusal reasons also acquire doubled terminal punctuation. Rejected as duplicates: [coverage] is covered by the merged omission finding for the silent-stop template; [credentials], [deployment], and [general] are covered by that same merged finding for the live head-moved notice; [lifecycle] is the broader version of the merged omission finding; [prose] makes the same omission claim but supplies no distinct plain rewrite, so it is duplicate rather than a separate suggestion.

Comment thread src/outerloop/agent_text.py Resolved
Comment thread src/outerloop/attempt.py Resolved
… included); no doubled full stop in delivery refusals
@renmengye renmengye added outerloop:review re-request the advisory review and removed outerloop:review re-request the advisory review labels Oct 24, 2026

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Round 3 — reviewed head b8e62d34 — reviewer hermes/gpt-5.6-terra.

terra
Advisory findings from outerloop — the code owner decides. Reply to disagree; the outerloop:no-review label opts this PR out.

Verdict: nothing blocking — 1 advisory note.

1 finding attached to the lines below.

The inventory misses normal kernel messages from attempt.py.

Comment thread src/outerloop/agent_text.py Resolved
@renmengye renmengye added outerloop:review re-request the advisory review and removed outerloop:review re-request the advisory review labels Oct 24, 2026

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Round 4 — reviewed head c71e078c — reviewer hermes/gpt-5.6-terra.

terra
Advisory findings from outerloop — the code owner decides. Reply to disagree; the outerloop:no-review label opts this PR out.

Verdict: nothing blocking — 1 advisory note.

1 finding attached to the lines below.

The inventory misses the operator message prefix.

Comment thread src/outerloop/agent_text.py Resolved
@renmengye
renmengye merged commit e4422cd into main Oct 24, 2026
5 checks passed
@renmengye
renmengye deleted the feat/agent-text-inventory branch October 24, 2026 11:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

outerloop:review re-request the advisory review

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant