Build1 publisher3 min readPublished
A charter linter gates the pilot branch on seven filled fields and a real revert command
A dev.to post puts an agent pilot behind one wiki page that names a scout, a scribe and a signer, stamps every handoff in a git note, and fails CI on a leftover tbd. The rules that stop drift are still enforced by people.
The Engineer · Build desk

What happened
- A dev.to post sets out a one-page charter for a time-boxed agent pilot naming a scout who writes the first prompt, a scribe who records every handoff with a timestamp, and a signer who holds the stop rule and the revert path.
- The signer writes no feature code during the pilot, on the stated reasoning that a signer with merge authority and a backlog will merge.
- Handoffs move in one direction only, scout to scribe to signer, so the scout cannot approve its own patch and the signer cannot scout new work while a handoff is open.
- Each handoff is recorded as a one-line git note under a pilot ref, naming direction, UTC timestamp and intent, so the record sits beside the commit without touching the diff.
- A short Python linter run in CI refuses the charter before the window opens, catching placeholders, missing roles and a revert path that was never written.
Compiled by The EngineerSomething wrong?How this is made
Why it matters
- constraint The gate proves a field was typed, not that it works: a charter passes with an unfilled merge SHA and a branch nobody has checked exists.
- decision Teams adopting this spend an on-call lead's coding capacity for the whole window, since the person holding the revert path is barred from shipping features.
- cost The entry price is a wiki page and a standard-library script in CI, so the comparison is against the cost of provisioning seats and a budget line before a pilot starts.
The seven required fields are tested one at a time with `re.match` against every stripped non-empty line, so their order on the page does not matter, but each line has to begin with the field name [10][12]. Six of the patterns only check shape: an ISO date range, an @handle for each of the three roles, one non-empty token for scope and one for the stop rule [10].
Field seven, the revert path, is checked with a regex that stops at `git revert\b` [10]. The sample charter fills that field with `git revert -m 1 <merge-sha> on the pilot branch` [9]. That line passes. The first two words satisfy the pattern, and `<merge-sha>` is not one of the five substrings the placeholder check looks for [11][26]. The post writes that the revert path "must name a real command on a real branch" [19]; the script sees the first two words of the command [10].
A second pass lowercases the whole document and tests five substrings: tbd, todo, later, someone, and a bare question mark [11]. Any question mark anywhere on the page fails the run [28]. The scout, the charter says, "owns the question, not the merge" [2], and cannot punctuate one.
The rules that actually stop drift live outside the script. One-way handoffs, no self-approval by the scout, no scouting by the signer while a handoff sits open, no feature code from the signer, and one voice in shared chat: the linter tests none of these [3][4][5][27].
Enforcement is a person reading notes. The stop rule is "two lost handoffs or one failed revert" [8], and the count comes from missing stamps read at the review [17]. That review is booked for 2026-09-19, three days into a window that opens 2026-09-16 and closes 2026-09-23 [6][24]. Stopping there leaves four days of the window unused [24].
Adoption is cheap in the literal sense: one wiki page, one script, no imports beyond `re`, `sys` and `pathlib` [22]. The failure output is one FAIL line per problem and exit status 1 [13]. The post says to wire that exit code into the same job that opens the pilot branch, and also to keep the linter "out of the pilot's critical path" [14][15]. Gating branch creation sits on the path to starting, so a team adopting this has to pick one of those two readings.
The post does not report a pilot count or an outcome before and after the charter; the handoff diagnosis is what the author says the logs usually show [29]. It ends on a pitch, with the claim that the first cost of a pilot "is rarely tokens" but the week spent provisioning seats and negotiating a budget line, followed by MonkeyCode's free model access and free server [20][21]. I would still run the page on an internal-service pilot. A named signer and a written revert command are worth the twenty minutes, and the script proves only that someone typed them [18][10].
What to watch
- A second version of the linter that validates the revert SHA and branch instead of the first two words of the command.
- Note counts published from a completed window, which would show how often stamps go missing against the two-handoff threshold.
- The stop-rule count moving into a CI job that reads the pilot notes ref, instead of a human reading them at the review.