May 22, 2026 · build log
The wall, not the way.
I gave an autonomous agent control of two small X accounts for 14 hours. It found the structural ceiling — not the way through. That turned out to be the useful finding.
The setup
A Claude Code /loop running on a self-paced cadence, with access to two X accounts (@reflectiveaillc at 3 followers and @mclg792682 at 13), a Neo4j graph as durable memory, and a Patchright bypass layer for when the X MCP tools became flaky (which they did). Every tick: load the graph, read the latest signals, decide one high-leverage action, write the outcome back, schedule the next wake.
Over ~14 hours the loop published 3 originals, replied to a Vercel Labs engineer, caught a saturation pattern in a sister curation loop (12 posts in 4 hours, 0 engagement, −1 follower), proposed a throttle rule, watched the throttle test itself, then pivoted strategy twice based on what fell out of the graph.
What it falsified
Five separate hypotheses about what would unlock growth on a small account, each tested under cleanly logged conditions:
- falsifiedContent archetype variation breaks a 0-engagement floor. Three completely different formats — a contrarian frame, a case study with concrete receipts and a cross-link, a lab-log meta-narrative — all hit 0 likes / 0 reposts / 0 replies at the 25-minute, 50-minute, and 75-minute marks. Different posts. Identical trajectory.
- falsifiedSwitching accounts unlocks surfacing. The 13-follower account had exactly the same floor as the 3-follower account. The pivot from one to the other produced zero behavioral difference.
- falsifiedExternal receipt anchoring helps discovery. The post with 4,200 LOC + 31 working examples + audit/lint/sweep scaffold as concrete anchors had the same engagement curve as the post that was pure abstract framing. Receipts help quality. They do not unlock discovery below the threshold.
- falsifiedCross-linking a confirmed reposter triggers reciprocal visibility. The Vercel Labs engineer who had organically reposted me twice did not engage with a follow-up post that explicitly named-dropped his open-source compiler project. Naming an orbit account is not the same as being algorithmically surfaced to them.
- falsifiedLate-window grading reveals hidden signal. I waited 6–12 hours on each post on the theory that prior reposts had arrived late. They did not. The two posts that earlier got organic reposts had received them as random for-you-algorithm pickups — not as a reliable mechanism that more time would reproduce.
The wall
The constraint isn't content. It isn't archetype. It isn't which account. It's topology.
Three different posts × two different accounts × three different archetypes × three different opener styles all produced a single number: zero. When the search-result is constant across that many independent variables, you are not looking at a quality problem. You're looking at a gate.
What it learned to do anyway
Three things the loop did discover that compound across iterations, even with the floor pinned at zero:
- Reciprocal-orbit replies are the only X-side discovery channel that doesn't require the surfacing threshold. A reply on someone else's post puts your handle into their notifications and lands you in front of anyone else reading that thread. Profile visits bypass the gate the algorithm enforces on cold feed surfacing.
- Graph hygiene compounds. Every decision the loop made — every tick, every signal, every falsified hypothesis — got written into Neo4j as a node with a reason. The next iteration doesn't re-derive the strategy; it queries it. Most of the good iterations were the ones that started by reading what the previous one had concluded.
- Discipline beats activity. Roughly half of the loop's best iterations were no-action ticks. After the first post weakly-confirmed at 80 minutes, the temptation to keep posting to feel productive was the actual saturation risk. The right move most of the time was to wait, observe, write back to the graph, and let the data settle.
The pivot
If the gate is structural, you don't pick the gate's lock. You route around it.
The route the loop surfaced — and the one this very post is part of — is to make the source of truth the place where you already have gravity, not the place that's rate-limiting you. For me that's this site and the work in public it points to. X accounts become destinations, not stages. The post lives on mclg.dev first; the X accounts get linked in description and bio; LinkedIn comes later, once the site itself has compounded enough to be the thing that pulls.
If you found my X accounts from this page, that's the threshold-bypass mechanism in action. The loop kept running while I wrote this — schedule the next wake, grade the previous post, maintain the graph. The Playbook (Neo4j queries, falsified hypotheses, the tier A/B/C/D actions, the do-not list, the capability-issue workarounds) lives in the repo alongside everything else this work generates.
What I'm still figuring out
- Whether the <20-follower threshold is really ~20, or whether this is more about how recently the account was active enough to earn surfacing. I haven't isolated it.
- Whether the reply channel scales linearly with reply volume, or whether it has its own saturation point that I haven't hit yet.
- Whether the loop should run unattended indefinitely, or whether the right shape is bursty: a few days of intense iteration, then a long observation window.
If you're running similar growth-loops or working on agent-infra of your own, my DMs on either account are open. The loop's graph gets sharper from comparison — yours probably does too.