what changed in the command

release notes for wayari, the command inside the app, newest first. each line says what you will notice after you upgrade.

  1. 0.5.0

    20 added11 changed14 fixed

    The release where Wayari reviews the code it wrote: a reviewer seat that is never the author, findings pinned to file and line, asked versus found, a behaviour diff, findings on the pull request, and a merge grant for the hours you sleep. The gate that checks all of it now runs in minutes rather than hours.

    added20

    • A reviewer reads every channel after its gate goes green. It is a read-only shift, staffed from outside the channel's authors, working at the sha the gate passed. It writes each finding with wayari finding <path>:<line> "<headline>" --scenario "..." --severity blocking|should-fix|note. wayari review prints them under What the reviewer found, or found nothing, or No review ran: and the reason. It never prints a verdict. A reviewer that goes silent is stopped once and never restarted, and the pull request still opens ready.

    • The reviewer runs on the lead's model, bounded by 30 minutes and $2 on API auth. A repository names its own in package.json as wayari.reviewer: { "agent", "model" }. A model the registry does not know is a staffing stop, never a quiet fall back.

    • An adversarial review, when the repository asks for one. A trunk whose package.json names wayari.review.proof asks the reviewer to prove a finding with a new test. Wayari reruns that test twice and prints it as proof only when it breaks the same way both times.

    • A fixed finding becomes a review rule. It is promoted to .claude/skills/on-review-<name>/SKILL.md, and the next reviewer on that repository runs it.

    • Findings land on the pull request as inline comments. blocking and should-fix findings with a line are posted as Wayari review: comments by the gh account that opened the pull request. A note stays in the body. A fixed finding gets one reply naming the commit, and its thread is resolved. "wayari": { "review": { "comments": false } } turns posting off. A gh failure is one line in the channel and never holds a ship.

    • Asked for, not found. Every sentence of the goal is checked against the diff, on the pull request and in wayari review. Only a path or a filename counts as checkable. Every other sentence is listed as needing a look. The section stays withheld until the diff is settled, so a builder cannot read which of its own claims are unanswered before it says done.

    14 more addedall 20 shown
    • The behaviour diff: what changed that nobody had to read for. wayari review and the pull request compare the help text, the --json shapes, the declared checks, the skills and the MCP tools at the channel's base and at its head. wayari.surfaces in package.json narrows the five. A base that cannot be checked out prints cannot compare, never a clean diff.

    • The morning stack. wayari review --all is one page for every ready pull request, grouped by the map its ticket came from, in wayari graph's merge order.

    • The merge grant. wayari grant merge <channel>... --hours <n> (or --all) lets Wayari merge those channels for up to 8 hours. It merges one ready pull request a minute, and only when GitHub would, the gate is green at GitHub's head, a non-author reviewed that same sha, no blocking finding stands, nothing the goal named is missing, the behaviour diff is clean and every channel it stacks on has merged. A channel opened after the grant is never covered. Grants survive a daemon restart. wayari grant revoke ends one, and bare wayari grant is the morning page: merged, left for you, never reached.

    • npm run wires, the wire-check as a gate for this repository. It joins the IPC channels, the CLI verbs, their usage lines and the MCP tools, and prints one line per missing link naming both sides with file and line. It is declared in wayari.gates beside orphans, so another repository never meets it.

    • Skills served to agents. wayari skills lists the library and wayari skill <name> prints one whole, also as wayari_skills and wayari_skill over MCP, so a Codex or Gemini agent reads the same skills Claude does. A red check pulls on-red-<check> into the next builder's task file, with what fixed that check the last time. wayari promote <channel> --as <name> drafts a skill from what a channel taught.

    • The persistent thread and standing orders. wayari thread is one record per repository of what happened, and wayari note writes a line to it. wayari standing add "<order>" keeps what you say to every agent in .wayari/standing.md, and every shift and every MCP client receives it. The app has a Thread tab beside Findings.

    • An agent's first contact orients it. Bare wayari, wayari status and wayari_status open with a Here block per repository: its maps and their open frontier, open findings, who is on shift, and what to run next.

    • Maps. wayari map reads a plan written as a network of markdown questions under .wayari/maps/<name>/, with --ticket, --claim and --close. wayari start --map <name>/<stem> opens a channel on one ticket.

    • Findings from anyone. wayari finding <path> "<what you saw>" writes one from your own terminal, and refuses a path the trunk does not carry. wayari findings and the app's Findings tab show them channel by channel. wayari propose --from-findings groups them into one channel per check.

    • The page before the night. wayari propose writes one channel per goal, with seats, model, order and likely cost, and opens nothing until wayari propose --approve.

    • wayari atlas <path>: what is pinned to a path, which check reaches it, what breaks if you change it, who touched it last and what command works there.

    • Loops that stop. wayari loop start, wayari loop pass and wayari loops record a hunt pass by pass and stop it after two passes in a row with nothing new. A hunt is a channel whose output is findings.

    • wayari replay <channel> --without atlas re-runs a finished channel's goal from its own base with the atlas withheld, and --reviewer <agent>/<model> swaps the reviewer instead. Neither opens a pull request. npm run evidence --arm <field> groups the routing rows by any field, so each arm is readable beside the other.

    • wayari start --after <channel> waits for the blocker's pull request. A follower whose blocker has not opened one is armed and left unstaffed, and starts itself when it does.

    changed11

    • The gate runs in minutes. A change to docs, skills or .wayari/ records typecheck, build and tests as unchanged and still runs every declared check. A code change runs only the test files it can reach, and the tests line says how many: "214 of 4,166 test files ran, reached from 6 changed paths".

    • The whole suite runs once on the trunk after every merge. A red trunk says trunk gate failed in that channel and trunk is red in wayari status and first in wayari review --all, until the next green.

    • Two gates run at once when the machine is quiet, never three. Behind a running gate, wayari ship answers queued at once and says which gate it waits for.

    • A stack gates once. A follower's green gate at a sha carrying all of its blocker's commits proves the blocker, whose pull request is marked ready. Merge order is unchanged.

    • A single test that hangs fails by name after fifteen minutes (WAYARI_TEST_TIMEOUT_MS to change it).

    • A clock is said, never defaulted. wayari start and wayari do without --hours run until the work is done.

    5 more changedall 11 shown
    • wayari say to a member in the middle of a command is queued for its next prompt instead of refused.

    • wayari status shows live channels only, counts the archived ones on its last line, and shows them with --all.

    • A member's role reaches its shift through a section of the task file.

    • grant joins serve, attach and stop as verbs that are never MCP tools. wayari grant refuses inside an agent's session. No agent's word is enough for eight hours of merges nobody watches.

    • Not done: GitHub Actions never ran on this repository during this release. A billing block stops every job before it starts, so every merge stood on the factory's own gate. wayari merge --on-local-gate records that, names the checks that never ran, and never gets past a check that ran and failed.

    fixed14

    • The daemon ended sessions it did not own. The test suite, run inside a shift, ran wayari clean against the machine's one tmux server and killed live shifts. The suite runs on its own tmux server now. The daemon reaps a shift session nobody owns and never touches a session whose channel it does not know.

    • Eight fixes from a stranger's first run of the published command (#199):

      • wayari status --json through a pipe was cut at 65,536 bytes.

      • --file was held to the 8,000-character cap for typed goals. A file or a pipe carries 60,000.

      • The long-goal refusal said "leave the rest in the issue". It says to use --file.

      • wayari status printed every archived channel.

      • Five skill docs said .skribbl/ where they meant .wayari/.

      • A finished builder was recorded as three stalls, because nothing durable told it how to finish. The task file now says "run wayari done. Committing is not finishing".

      • wayari ship failed on a fresh checkout of a workspace repository, which linked only the root node_modules.

      • wayari review printed the brief twice.

    • A ship whose caller died held the channel. Every later ship refused until wayari stop. A latch older than any gate could run is taken again.

    • A killed channel could not be restarted once its worktree was swept. A member's surviving branch is checked out, commits and all, reported as reused, and never deleted by a rollback.

    • A channel that ran out of clock while queued at the gate was archived minutes before its gate passed. The out-of-clock verdict waits for the gate. Running out of money still lands at once.

    • A stuck wayari stop wedged the owner lock.

    8 more fixedall 14 shown
    • wayari ship could not find the checkout wayari take made. It also refused a person's ship after the clock ran out, and ran a queued ship for a channel already archived or merged.

    • A finding's headline could be npm's banner or the echoed command line.

    • A tool line in wayari open showed the cd, not the command.

    • wayari status --json carried a whole failure block. It keeps the first line.

    • The graph kept a merged pull request as open.

    • The findings read missed a shipped channel's gates.

    • wayari start --after refused a blocker that ran out of clock and shipped.

    • A replay's task named the arm it was testing. It does not now.

  2. 0.4.0

    15 fixed1 changed1 known

    The release that makes the command installable. Everything below had been on the trunk for a day without reaching anybody, and 0.3.1 is the build that cannot install at all on a machine without a C++ toolchain.

    fixed15

    • npm i -g wayari on a machine with no C++ toolchain. It did not install at all. node-pty 1.1.0 ships prebuilt binaries for macOS and Windows and not for Linux, so npm compiled from source, and node-gyp needs Python and a compiler. Every container image and every minimal Linux box failed with a wall of gyp output, nothing installed and wayari not on PATH. macOS hides this because Xcode's command line tools provide the compiler, which is why it went unnoticed.

      node-pty is now pinned to 1.2.0-beta.15, which carries prebuilt binaries for Linux on x64 and arm64 as well as macOS and Windows. On a Debian image with no python3, make or g++ the install takes one second, compiles nothing, and puts a process on a pty. The pin is exact rather than a caret: a beta can drop a prebuild as easily as it added one, and the build refuses to run if the range grows an operator.

    • A gate that could never pass on a repository that is not npm-shaped. The refusal for a repo with no package.json told people to write wayari.json with one check in it. The gate runs three, and a check the gate names and the repository does not declare fails closed, correctly and forever. The refusal now names every check the gate will run and its example declares all of them. A Python repository and a Go module both go green this way, which had never been tried before today.

    • gh on a machine with no browser. The doctor told a signed-out machine to run gh auth login and never mentioned GH_TOKEN, which is the only path on a headless box or a cloud container. gh auth status already accepted a token, so the check was right and only the sentence was wrong.

    • The doctor could not tell you whether this machine can start an agent at all. It now asks two questions it never asked: whether node-pty can put a process on a pty, and whether an agent CLI that is on your PATH is actually signed in. A machine with claude installed and no credential used to pass every row and then hand a builder a login prompt, which on a headless or cloud box is the normal state rather than an edge case. The sign-in row says "cannot tell" rather than guessing when the credential lives somewhere it cannot look, because a red row you cannot argue with is worse than an honest unknown.

    • wayari doctor --fix runs the fixes that need nobody's password and nobody's browser, prints what it is about to do first, and refuses anything interactive, anything needing sudo, a reinstall of itself and the choice of lead model, naming the command for each so the refusal hands you something. Bare wayari doctor still changes nothing.

    • A refused ship said only that the gate did not pass. It names the check that failed now. The failing check and its output were already in hand when it said nothing.

    9 more fixedall 15 shown
    • The read emptied every checkbox when one check failed, so it told you typecheck had failed on a run where only the tests did. Each box is drawn from its own check now.

    • A channel was cut from whatever your local trunk happened to be, which in a checkout that never visits main is arbitrarily old. It is cut from the trunk as the remote has it, unless your local one is ahead, and the answer says how far behind the local one was. A rebased branch can also be shipped again, which it could not before.

    • A pull request that was already open was reported as "not shipped", after the work had been assembled, gated and pushed. It is reused, and says it was.

    • A night did not survive the machine it ran on. Every commit lived on one disk until the channel shipped, so a cloud box torn down at 04:00 took the whole night. A member's branch now reaches the remote while the shift is still running, and a shift that ends holding uncommitted work saves it as a labelled checkpoint rather than only mentioning it.

    • An agent running a long command was announced as waiting on a question. Two minutes into a test run, with the verb that answers a question nobody asked. An open tool call now silences that, and never silences a real permission prompt or an open wayari ask.

    • Task files collided between channels. Every channel staffing builder-1 committed the same path, so the second to merge conflicted with the first. They are keyed by channel now, and a worktree made before this change still finds its task.

    • A member's worktree could commit a node_modules symlink, which landed on a branch as an absolute path to one machine, because node_modules/ in a .gitignore does not match a symlink of that name.

    • The codebase map produced nothing for most repositories. It scanned src only and read TypeScript only, so a Python service or a Go module got no pages and the context a builder received was silently empty. It reads any layout and many languages now; the import graph is still TypeScript only and says so.

    • A long brief passed as a shell argument was eaten by the shell. --file and --stdin on do, say and ask carry it whole.

    changed1

    • Alpine and other musl distributions now need one flag. npm i -g wayari --build-from-source, with python3, make and a C++ compiler present. The prebuilt Linux binaries are built against glibc and will not load under musl, and node-pty's installer checks only that a prebuild directory exists rather than that its binary opens, so it takes the wrong one. Before this release a musl box with a compiler worked without the flag. It is a real regression for those machines and the trade is deliberate: every glibc Linux machine goes from failing outright to working, and musl goes from working to working with a flag that the install now names.

    known1

    • npm hides what the install says. foreground-scripts defaults to false, so nothing a postinstall prints reaches the person on a plain npm i -g wayari. The introduction to the coding agents on the machine still happens; only the words are lost. The next step is on wayari.com and in this package's README for that reason, and wayari doctor is the surface that reports a problem.

the first release with written notes.

the command comes with the app

download wayari and the command is inside it. it is free to try, with no card and no signup.