Skip to content

FlashCoder v0.1.0-rc.5

Pre-release
Pre-release

Choose a tag to compare

@Owen718 Owen718 released this 12 Aug 09:28
· 8 commits to main since this release

Prebuilt. Node 22 or newer, macOS or Linux.

curl -fsSL https://github.com/Owen718/FlashCoder/releases/download/v0.1.0-rc.5/flashcoder-0.1.0-rc.5.tgz -o flashcoder.tgz
npm install -g ./flashcoder.tgz

Project instructions

A workspace can put its rules in AGENTS.md at its root: the command that
proves a change, the directories that are generated, the conventions worth
matching. It is read once when a session starts and frozen into that session's
prefix, so it sits in front of every request and, after the first, is a cache
hit rather than a cost.

Frozen means frozen. Editing the file does not reach a session already running;
the next new session picks it up. Only AGENTS.md, only the workspace root, no
inheritance. Capped at 16 KiB; a file that is unreadable, too large or not UTF-8
stops startup rather than being quietly dropped.

Turns are no longer capped

--max-tool-rounds and its fifty-round default are gone. A hard change is not
stuck at round sixty, and stopping it there turned tasks that would have
finished into [stopped by the turn budget: 50 of 50]. --max-cost-usd and
--max-minutes bound a runaway from the two directions that actually cost
something.

Less repeated, more said

The per-turn environment block carried cwd and an unbounded git status.
cwd cannot change inside a session, and the status list grows as the model
edits files, so a task touching fifty of them put fifty lines nobody asked for
in front of every later turn.

Now every turn carries the date and a status bounded to twenty entries, ending
in …and N more files. The first turn of a lineage additionally carries cwd
and the workspace's top level — fifty entries, one level, what the repository
itself ignores left out.

Fixes

  • Every git call the harness makes now has a timeout, and degrades to a missing
    fact instead of hanging the turn.
  • recover on a held lease said journal_lease_held and nothing else. Taking a
    lease is deliberate — you name the fingerprint you observed — but there was no
    way to find out what to name. It now prints the two commands.