Two months ago I wrote that the Autopilot makes boring decisions in deterministic Rust. That post described the deciding layer. What it left out is that a decision which cannot reach anybody is just an opinion with extra steps.

Since then the missing half got built. Not more intelligence - the unglamorous machinery that turns safe decisions into delivered work, measured results and a quiet operator brief. This is a summary of what the system actually delivers today, because "automation" means nothing until you can point at the tasks that stopped needing you.

It asks for work instead of waiting for it

The first production lesson arrived immediately after the authority gates opened: every execution path starved. The executor could send pitches, but the pitch tables held zero rows, and nothing in the system noticed that this was a problem.

So the agent learned to ask. An outreach-supply context notices when there are fewer confirmed submission routes than the policy floor and emits a discovery request. The adapter sweeps published sources, screens each candidate on write against explicit refusal reasons, and reports the batch even when the batch is empty. An empty batch after reading two hundred playlist descriptions is a real answer - the source is dry. Silence is the other thing: a broken credential. Those have different fixes, so they get different answers.

The same shape now exists for scene partners. A city with real activated fans but no local beacons triggers a scout. A verified beacon inside its own city's invite window gets asked to carry invite codes for the show - codes our system issues, so every signup that comes back is attributed and consented by construction.

A wave carries its own evidence

Free-reach pitching runs as waves: a ranked batch of pitches for one release or one tour leg, assembled from facts the system already owns. Metric movement with timestamps, real attendance figures, existing coverage. Every number carries the moment it was read. If the system cannot read a figure, the field says so instead of inventing a zero - a zero it made up reads exactly like a zero it measured.

Waves are sized to the lower of two numbers: what the operator capped per wave, and what is left of the weekly contact budget. Sized above it, forty approved pitches would go out six at a time while nobody understood why. Approval is one statement over the whole batch, because approving forty rows individually is how a human stops approving anything.

Placement is checked, not believed

A curator says yes. In most tooling that is where tracking ends and hope begins.

Here a claimed placement counts toward nothing until a public read confirms the track is actually in the playlist. A claim that never gets confirmed settles as ghosted - not an accusation, since it may be a typo or a private list, but not something measurable either. Confirmed placements are re-checked on a schedule, because add-for-a-screenshot is a known business model. A track removed inside the verification window records withdrawn, which is the strongest scam signal there is, and suppresses the operator behind it rather than only one playlist. Their other lists get rescreened.

Sending like somebody who wants replies

Deliverability got the same treatment. A workspace that has never sent starts at three third-party touches a week, not at whatever the budget allows - a standing start reads to a receiving provider as exactly what it looks like. The ceiling widens weekly as the record earns it, and never past the operator's own budget, which is a ceiling and not a target.

Bounces and spam complaints are ingested from the sending provider, deduplicated on the provider's own reference so a retried webhook is not counted twice, and computed into rates over a rolling window. Cross the thresholds and the sending ceiling closes to zero before the next wave, not in a digest afterwards. A hard bounce finishes the address through the suppression that already existed; soft bounces suppress nobody, because a full mailbox is ordinary.

There is also a smaller rule I care about: faults dated outside the window they feed are refused, not clamped. A silently moved timestamp is a number nobody can argue with later.

Negotiation with a floor under it

Booking opportunities now carry a computed cost - fuel, tolls, rooms, per diems, vehicle count derived from crew and backline rather than assumed - and a walk-away fee built from it. The negotiation ladder freezes at open so last week's counter stays explainable, and the acceptance re-checks current costs at execution time, because hours pass between drafting and approving.

Certain things are refusals in the domain rather than settings: a required contract, exclusivity, a date past the annual stretch, a gig whose cost cannot be computed. A festival slot worth playing at break-even escalates to a human with the reason attached instead of dying in a budget rule.

And the Spotify editorial pitch? One form per release, no API, submitted by a human. The system detects the deadline, assembles text and evidence, parks it and chases it - and both events it emits state plainly that the agent did not submit anything. An automation claiming credit for that form would be worse than no automation.

One dial, then knobs

All of this sits under an authority model that used to mean twenty-six separate settings. Now there are three named postures - grounded, working, full send - applied atomically: every context level, all four class ceilings, the envelope switches, one transaction, one ledger entry.

Grounded rehearses and executes nothing. Working lets first-party work run alone and drafts outward contact for one-click approval. Full send lets owned-audience sends and free pitching run unattended inside budget, cooldown and deliverability. Money stays behind approval in every posture, pinned by test. Budgets survive a posture flip on purpose: tune the numbers whenever you want, the dial moves authority, never your tuning.

Individual knobs are editable too - screening floors, lead windows, cooldowns per context, validated against the same typed config the reader parses, so an unknown key is refused rather than stored and ignored.

Reporting that labels itself

Every measured number says what kind of number it is. Smart-link clicks are attribution. Follower movement after a campaign is correlational, stated with its window. Where evidence is too thin to answer, the response says insufficient instead of rounding up.

The daily brief follows one rule: silence is the default. It breaks silence for parked work, for approvals waiting past their horizon, for a halted sending ceiling - the silences that lie. Everything else waits for somebody to look.

What is deliberately still manual

Posting into Facebook groups and Discords - platform rules make that a human act. The Spotify editorial form - no API exists. Anything paid - refused at every autonomy level, not configured away.

The remaining gap between built and running is deployment: activating workflows, running the first discovery sweep, connecting feeds, then letting the working posture earn full send on evidence rather than optimism.

That matches the original definition. The system collects the facts, makes the routine decisions, executes within explicit limits, measures honestly and comes back only when it needs us. The difference now is that "executes" covers the actual work: finding targets, drafting pitches with evidence, verifying placements, protecting the sender reputation and asking for help when the shelves are empty.