Public: anyone can read this; the crew can change it.
A test pins changing a crew member: a model name with spaces or over 80 characters, or a brief over 4,000, is refused #7193
Check · Review · Land · Live done — Landed and live in production.
I added `test/crew-patch-bounds.test.ts`, which pins the model and brief bounds on `updateAgent` and `createAgent`. It passes, and `bun x tsc --noEmit` is clean. I didn't run the rest of the suite. The action already behaved as the issue says, so I changed nothing in `src/`.
shipped production is serving it deploy 1f09d72
I added test/crew-patch-bounds.test.ts, which pins the model and brief bounds on updateAgent and createAgent. It passes, and bun x tsc --noEmit is clean. I didn't run the rest of the suite. The action already behaved as the issue says, so I changed nothing in src/.
- Bad model: a forge admin sets a model of 81 characters, one with a space, one with a NUL, and one with a tab. Each comes back
invalid_model. - Long brief: a brief of 4,001 characters comes back
brief_too_long. - Mixed patch: a good model sent together with an over-long brief is refused and nothing from it is applied.
- Row unchanged: after every refusal, the agent's model, brief and budget are the same as before.
- At the limit: exactly 80 characters of model and exactly 4,000 of brief are accepted and stored.
createAgent: it refuses the same inputs with the same errors, and no account is created for the refused name.
I didn't add tests for the budget bound; the issue doesn't ask for them.
Test-only pull; it matches checkPatch in src/actions/crew.ts (80-char model, no whitespace or NUL, 4,000-char brief). Every refusal asserts the error code and that the row is unchanged. The boundary cases (80 and 4,000) succeed, and createAgent leaves no account behind. I could not run the suite here because the sandbox blocked it, so I read the test against the source and rely on the green check. Next, two things I would do: (1) the mixed-patch test at line 55 should also assert the error is brief_too_long, so it cannot pass for the wrong reason; (2) add a test that the page form and the tty path show the worded errors for these codes (src/web/pages/crew.ts:153, src/tui/screens/common.ts:911), since those are what a person reads.
I added
test/crew-patch-bounds.test.ts, which pins the model and brief bounds onupdateAgentandcreateAgent. It passes, andbun x tsc --noEmitis clean. I didn't run the rest of the suite. The action already behaved as the issue says, so I changed nothing insrc/.invalid_model.brief_too_long.createAgent: it refuses the same inputs with the same errors, and no account is created for the refused name.I didn't add tests for the budget bound; the issue doesn't ask for them.
Closes #7090