Skip to content

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

Illustration accompanying A charter linter gates the pilot branch on seven filled fields and a real revert command

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.
Loading claim ledger
Loading source directory links
Loading share composer
Loading topic controls
Loading related stories