Skip to content

Compact AGENTS.md, fix copy inside the prompt box - #35

Merged
pathscale merged 1 commit into
masterfrom
docs/compact-agents
Jul 31, 2026
Merged

pathscale merged 1 commit into
masterfrom
docs/compact-agents

Conversation

@pathscale

Copy link
Copy Markdown
Owner

AGENTS.md: 167 lines to 100

The file was diluting itself. A rule buried in a paragraph of justification reads as background, and this file is almost entirely rules.

Prose became bullets. War stories were cut unless the rule is counterintuitive without one. What survives is the reasoning that changes what you would actually do.

Restored from AgencyZero.md

Trimming that file to five lines dropped things that did not stop being true, so they land here instead of in front of the agent on every turn:

  • Where knowledge goes, four stores with one job each.
  • Versioning: patch only, and bump on every commit that ships, since Release fires on a version change alone.

Copy inside the prompt box

Reported alongside this work, and a real bug of mine. The Cmd+C handler deliberately skipped text fields, reasoning that a field's own copy is already correct. But the native clipboard route is the one that was broken in the first place, which is why the transcript needed an execCommand fallback. Deferring to it inside the composer meant copying out of the prompt box silently did nothing.

Fields now copy from selectionStart/selectionEnd. Focus and the highlight are restored afterwards, because the fallback borrows both to do its work and would otherwise drop the cursor and clear the very selection just copied.

Verification

Frontend typecheck, lint, 254 tests, production build. Rust fmt, workspace clippy under -D warnings, all suites. Zero em dashes in every file touched, including the code comments.

Note

No version bump, as agreed. The composer fix is frontend, so it ships with the next release that carries one.

AGENTS.md goes from 167 lines to 100. The file was diluting itself: a
rule buried in a paragraph of justification reads as background, and
this file is mostly rules. Prose became bullets, war stories were cut
unless the rule is counterintuitive without them, and the reasoning that
survives is the reasoning that changes what you would do.

Pulled back what left AgencyZero.md when it was trimmed to five lines,
since none of it stopped being true: where knowledge goes (four stores,
one job each) and the versioning rules (patch only, bump on every commit
that ships). They belong here rather than in front of the agent on every
turn.

Copy inside the composer was doing nothing. The Cmd+C handler skipped
text fields on the reasoning that a field's own copy is already correct,
but the native route is the one that was broken to begin with, so
deferring to it inside the prompt box meant the keystroke went nowhere.
Fields now copy from selectionStart/selectionEnd, and focus and the
highlight are put back afterwards, since the clipboard fallback borrows
both to do its work.
@pathscale
pathscale merged commit 6f68632 into master Jul 31, 2026
2 checks passed
@pathscale
pathscale deleted the docs/compact-agents branch July 31, 2026 21:13
pathscale pushed a commit that referenced this pull request Jul 31, 2026
An agent can say it shipped something. It cannot say the thing works,
because it is not the one looking at the screen. The vocabulary had no
way to express that: `[x]` meant finished, and finished meant deleted
under the default setting. A copy bug was reported fixed three times in
one evening, and its row would have been gone after the first.

So `[>] title (#35)` moves a row to shipped, naming the pull request.
The row waits there, amber rather than green, until the owner confirms
or bounces it. `[/]` starts a row, which the vocabulary also lacked: a
list could say proposed or done and nothing in between.

The reference is its own column rather than a suffix on the title. The
title is the match key for every later status change, so a row renamed
to "Fix copy (#35)" would stop answering the line that closes it, and
stripping the suffix back off at match time is a parse nobody would
remember was there.

Items now appear while the reply is still being written. They were
written only from the finished body, which made the procedure
impossible to follow: a row proposed in a turn did not exist until that
turn had already ended, so it could not be worked on, and the list only
ever described work that was over. Whole lines only, so a title still
streaming is never read as a shorter one, and the end-of-turn pass stays
as the backstop for a last line with no newline.

Schema change on ProjectItem. The store can be reset.
pathscale pushed a commit that referenced this pull request Jul 31, 2026
An agent can say it shipped something. It cannot say the thing works,
because it is not the one looking at the screen. The vocabulary had no
way to express that: `[x]` meant finished, and finished meant deleted
under the default setting. A copy bug was reported fixed three times in
one evening, and its row would have been gone after the first.

So `[>] title (#35)` moves a row to shipped, naming the pull request.
The row waits there, amber rather than green, until the owner confirms
or bounces it. `[/]` starts a row, which the vocabulary also lacked: a
list could say proposed or done and nothing in between.

The reference is its own column rather than a suffix on the title. The
title is the match key for every later status change, so a row renamed
to "Fix copy (#35)" would stop answering the line that closes it, and
stripping the suffix back off at match time is a parse nobody would
remember was there.

Items now appear while the reply is still being written. They were
written only from the finished body, which made the procedure
impossible to follow: a row proposed in a turn did not exist until that
turn had already ended, so it could not be worked on, and the list only
ever described work that was over. Whole lines only, so a title still
streaming is never read as a shorter one, and the end-of-turn pass stays
as the backstop for a last line with no newline.

Schema change on ProjectItem. The store can be reset.
pathscale pushed a commit that referenced this pull request Aug 1, 2026
Every session could already write items, but only into the project it was
sent from, so an agent that noticed work belonging somewhere else could
only describe it and ask the user to re-type it in the right window. The
task manager never had that limit: its harvest resolves a project by name
and writes there. Nothing about the store required the difference.

A line ending `(@Somewhere)` now routes the same way from any session, by
project name or by `proj-` id, next to the `(#35)` reference and in either
order. Neither suffix reaches the title, which is the match key.

Resolution never creates. The task manager creates a project it cannot
find, because organising is the entire job there. An ordinary session that
names something missing has far more likely mistyped it, and a silently
created near-duplicate project is much harder to notice than an item that
never appeared, so the line is reported and skipped instead.
pathscale pushed a commit that referenced this pull request Aug 1, 2026
Every session could already write items, but only into the project it was
sent from, so an agent that noticed work belonging somewhere else could
only describe it and ask the user to re-type it in the right window. The
task manager never had that limit: its harvest resolves a project by name
and writes there. Nothing about the store required the difference.

A line ending `(@Somewhere)` now routes the same way from any session, by
project name or by `proj-` id, next to the `(#35)` reference and in either
order. Neither suffix reaches the title, which is the match key.

Resolution never creates. The task manager creates a project it cannot
find, because organising is the entire job there. An ordinary session that
names something missing has far more likely mistyped it, and a silently
created near-duplicate project is much harder to notice than an item that
never appeared, so the line is reported and skipped instead.
pathscale pushed a commit that referenced this pull request Aug 1, 2026
Every session could already write items, but only into the project it was
sent from, so an agent that noticed work belonging somewhere else could
only describe it and ask the user to re-type it in the right window. The
task manager never had that limit: its harvest resolves a project by name
and writes there. Nothing about the store required the difference.

A line ending `(@Somewhere)` now routes the same way from any session, by
project name or by `proj-` id, next to the `(#35)` reference and in either
order. Neither suffix reaches the title, which is the match key.

Resolution never creates. The task manager creates a project it cannot
find, because organising is the entire job there. An ordinary session that
names something missing has far more likely mistyped it, and a silently
created near-duplicate project is much harder to notice than an item that
never appeared, so the line is reported and skipped instead.
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