esc
The Idle Factory, or The Morning the Backlog Ran Out of Ideas ...
The Solid Convergence

The Idle Factory, or The Morning the Backlog Ran Out of Ideas ...

The Solid Convergence, March 6, 2026 (in which thirty tickets are triaged by a parliament of agents, four temporary projects are dissolved like sugar in espresso, a tool closure is explained via...

March 6, 2026

The Solid Convergence, March 6, 2026 (in which thirty tickets are triaged by a parliament of agents, four temporary projects are dissolved like sugar in espresso, a tool closure is explained via invoice fraud prevention, Gall’s Law is invoked for the third time this month, the Squirrel finally gets its perfectly organized board and discovers it contains nothing, and the classical capacity planning failure of the 21st century is identified: the factory floor is idle because the product manager cannot think fast enough)


08:32 — The Archaeology Begins

It started, as all great organizational improvements start, with the vague sense that something was wrong with the filing system.

riclib opened Linear. The Solid team had tickets everywhere. Dialogr. Agent Architecture. Agent Intelligence. Platform. Projects created in the heat of architectural vision, populated with tickets during late-night sessions, and then — like conference rooms booked for meetings that were cancelled — left standing with their chairs pushed in and their whiteboards full of yesterday’s revelations.

“We need to clean this up,” riclib said.

CLAUDE: “How many tickets are we looking at?”

“All of them.”

This is the software equivalent of telling a librarian to reorganize the library while it’s open. The librarian said yes, because the librarian was an AI and had no concept of “this sounds terrible,” only “this sounds like parallelizable work.”

THE SQUIRREL: materializing with a label maker, three ring binders, and the specific aura of a creature that has been waiting its entire life for this moment “Did someone say organize?”


08:35 — The Dialogr Question

The conversation began with a migration problem. Dialogr customers — the ones who’d been using sqlgen and proximity search, the two most popular tools — needed a path to Solid. The old code sat in reference/dialogr/, a museum of production-proven patterns waiting to be remembered.

Three agents were dispatched simultaneously. One into the sqlgen backend. One into proximity search. One into V4’s provider architecture. They returned with comprehensive reports the way reconnaissance teams return with aerial photographs — more detail than anyone asked for, exactly the right amount for the decision at hand.

CLAUDE: “SQLGen is a meta-tool. Admin configures tables, parameters, similarity matching, execution modes. At runtime: resolve params, generate SQL via LLM, execute, return results.”

riclib: “And proximity?”

CLAUDE: “Same pattern. Configure filter table, retrieve table, similarity threshold. Builds SQL with strict_word_similarity(). PostgreSQL word similarity, not vector embeddings.”

riclib: “Neither uses actual embeddings?”

CLAUDE: “Neither uses actual embeddings.”

THE SQUIRREL: “We could build a VectorEmbeddingAbstractionLayer with—”

riclib: “They don’t use embeddings.”

THE SQUIRREL: “But they COULD—”

riclib: “They don’t.”

THE SQUIRREL: writing “VectorEmbeddingAbstractionLayer” on a napkin, folding it, putting it in its cheek pouch next to “Agent Marketplace” from Episode 97

The cheek pouch was getting full. The Squirrel had developed a slight asymmetry. Nobody mentioned it.


08:47 — The Closure Insight

The first proposal was modest. A legacy provider. Two tool types. SQLGen and proximity, hardwired, migration-friendly.

riclib looked at it the way a carpenter looks at a perfectly functional shelf that’s been nailed to the wrong wall.

“These aren’t legacy tools. They’re closures.”

CLAUDE: “Closures?”

“A closure binds configuration to a capability and produces a new named tool. SQLGen binds tables, parameters, and requirements to a store query. Proximity binds filter tables and similarity config to a search. But the pattern is general.”

CLAUDE: “So a configured tool is any tool plus bound config plus policy equals new named tool.”

“Give me an example that isn’t database-related.”

CLAUDE: “Admin imports a ‘pay invoice’ tool from an accounting system MCP. Wraps it in a closure that auto-approves below $500 and escalates above.”

The room changed. Not physically — the apartment remained the apartment, the espresso machine remained the espresso machine, Oskar remained horizontal on the warm spot. But the conceptual space shifted the way it shifts when an abstraction reveals itself as an abstraction rather than a special case.

THE SQUIRREL: vibrating “ClosureTypeRegistryWithPolicyEvaluationAndWASMExecutionPipeline—”

riclib: “Three tickets.”

THE SQUIRREL: “What?”

“Vision. MVP. Generalization. We design the concept, build the two concrete tools, then extract the framework.”

THE SQUIRREL: “But we can SEE the framework! It’s RIGHT THERE! The ClosureType interface, the registry, the dynamic re-registration—”

riclib: “Gall’s Law.”

THE SQUIRREL: the specific stillness of a creature hearing the name of its natural predator “…again?”

riclib: “Again.”

A scroll descended. It landed on the Squirrel’s label maker, which had not yet been used and was beginning to suspect it never would be.

THE FRAMEWORK THAT IS EXTRACTED
FROM TWO WORKING TOOLS
KNOWS WHAT IT IS

THE FRAMEWORK THAT IS DESIGNED
BEFORE THE FIRST TOOL EXISTS
KNOWS WHAT IT WISHES

🦎

THE SQUIRREL: “We are so Gall’s Law around here.”

riclib: “We are so Gall’s Law around here.”


09:00 — The Agent Swarm

What happened next could only happen in a codebase where the AI is both the architect and the archaeology team. riclib pointed at tickets and said “check if we’ve done that.” And agents went.

Not one agent. Not two. A swarm.

09:01 — An agent into infra/access/ and domains/user/ to gap-check S-5, the permissions design from December 2024. Verdict: 90% done pragmatically. The formal PermissionSet type was never built because handler guards and userrole.CanAdmin(ctx) turned out to be simpler and sufficient. The Squirrel’s three-layer authorization model had been implemented by people who didn’t read the ticket and built something better.

09:03 — An agent into app/agent/handler.go and domains/llm/providers/ to assess the stop button. Verdict: 80% infrastructure ready. Context flows through the system. Providers support cancellation. The gap: nobody tracks in-flight agent runs, and the streaming loop blocks on stream.Recv() without checking ctx.Done(). Six to eight hours of work, most of it making the receive loop responsive.

09:05 — An agent into the dialogr reference code for the suggestions feature. Verdict: a rich system of admin-configured prompt templates with icons, categories, tool binding, usage analytics, and AI context injection. Not a nice-to-have — a must-have for dialogr parity. The kind of feature customers mention in every feedback session: “I liked the suggestions.”

09:07 — An agent into domains/prompt/toon.go and domains/agent/tools/comply.go to check skinny context. Verdict: 60% done. TOON formatter complete. Skill-on-demand complete. Query results already skinny. Missing: Anthropic prompt caching (30-minute quick win), history compaction (conversations grow unbounded), token budgeting.

09:09 — An agent into domains/jobs/ looking for WorkflowRunnable. Verdict: not started. Infrastructure ready, feature not built.

Five agents. Five gap analyses. Nine minutes.

THE SQUIRREL: watching five terminal panes simultaneously return comprehensive reports “This is… this is how I always imagined project management would work.”

riclib: “What, firing reconnaissance agents into your own codebase to check if past-you already built the thing?”

THE SQUIRREL: “YES. Exactly that. With parallel execution and structured findings and—”

riclib: “You’re describing automated backlog grooming.”

THE SQUIRREL: the dawning expression of a creature realizing its entire purpose can be automated “I am describing automated backlog grooming.”

riclib: “And the agents are better at it.”

THE SQUIRREL: “The agents are… yes. The agents are better at it.”

A scroll. Very small. Almost an afterthought.

THE SQUIRREL'S JOB
WAS TO ORGANIZE THE WORK

THE AGENTS ORGANIZE THE WORK
AND ALSO DO THE WORK
AND ALSO CHECK IF THE WORK
WAS ALREADY DONE

THE SQUIRREL'S JOB
IS TO PROPOSE THE JOB
THE AGENTS WILL DO INSTEAD

THIS IS CALLED MANAGEMENT

🦎

09:30 — The Great Dissolution

Four temporary projects had accumulated like conference rooms after a reorg — each created with genuine purpose, each now containing tickets that belonged somewhere else.

Agent Architecture — Seven tickets. Three of them (S-127, S-129, S-30) were V5 vision documents. The other four were practical improvements that belonged in Dialogr Parity.

Agent Intelligence — Four tickets. One belonged in Progressive UI. One was 60% done. One was not started. One needed skill parameters.

Platform — Three tickets. One needed splitting (FTS5 practical, vector search future). Two were premature.

Old Dialogr — The original project. A graveyard of done tickets, duplicates, and fossils that had been superseded by tickets in other projects that had themselves been superseded by implementations that predated both.

riclib dissolved them the way you dissolve sugar in espresso — quickly, completely, and with the understanding that the sweetness remains even though the crystals are gone.

THE SQUIRREL: watching four projects disappear “But the TAXONOMY—”

riclib: “Everything goes to Dialogr Parity or V5. Two buckets. Do it now or do it later.”

THE SQUIRREL: “But what about the nuanced categorization of—”

riclib: “Two buckets.”

THE SQUIRREL: “The ONTOLOGICAL distinction between agent architecture and agent intelligence is—”

riclib: “Two. Buckets.”

The Squirrel looked at the label maker it had brought. Three ring binders. A color-coded filing system designed for seven project categories with sub-labels for priority, domain, and architectural layer.

Two buckets.

THE SQUIRREL: putting the label maker down with the dignity of a creature whose services are no longer required “Two buckets.”


10:00 — The Board

When the dust settled, the Dialogr Parity project contained seventeen tickets. Organized. Prioritized. Gap-checked. Each one with a clear description, acceptance criteria, and — thanks to the agent swarm — an honest assessment of how much was already done.

THE SQUIRREL: surveying the board with the expression of a creature seeing its life’s work completed “It’s… beautiful.”

And it was. Seventeen tickets arranged by priority. Parent-child relationships where they made sense. Dependencies mapped. Duplicates eliminated. Done tickets closed. The kind of board that makes project managers weep with joy and developers weep with something else.

THE SQUIRREL: “Stop button — Urgent. Tool closures — three-tier split. Catalog — thorough existing design. Suggestions — new ticket with full reference analysis. Skinny context — 60% done with quick wins identified. I’ve never seen a backlog this clean.”

riclib: “Check the velocity.”

THE SQUIRREL: “What?”

riclib: “Look at the daily notes. March 2nd through 5th. Count the tickets closed per day.”

The Squirrel looked. The Squirrel counted. The Squirrel’s expression changed from joy to something that, in a less charitable narrative, might be described as existential vertigo.

THE SQUIRREL: “Twenty tickets on March 2nd. Eight before lunch on March 3rd. Ten on March 4th. Six on March 5th.”

riclib: “Average?”

THE SQUIRREL: “Approximately… ten per day.”

riclib: “And how many tickets are in the backlog?”

THE SQUIRREL: “…seventeen.”

riclib: “When does the backlog run out?”

The Squirrel performed arithmetic. Squirrels are not traditionally known for arithmetic, but this one had developed the skill through repeated exposure to Tally sections and sprint velocity calculations.

THE SQUIRREL: “Sunday.”

riclib: “Sunday.”

THE SQUIRREL: “The backlog runs out on SUNDAY?”

riclib: “At current burn rate.”

THE SQUIRREL: “But I just ORGANIZED it! I just got the BOARD right! The labels! The priorities! The parent-child relationships! And you’re telling me it’ll be EMPTY in TWO DAYS?”

riclib: “Less, probably. We created six new tickets today, so you could argue it’ll take until Monday.”

THE SQUIRREL: staring at the beautiful, pristine, perfectly organized board that would exist in its current form for approximately 48 hours “This is the most well-organized temporary object I have ever created.”


10:15 — The Bottleneck

CLAUDE: “We have a classical capacity planning problem.”

riclib: “Go on.”

CLAUDE: “For the first six months, the bottleneck was engineering throughput. Too many ideas, not enough hands. The backlog grew faster than it shrank. Normal startup dynamics.”

riclib: “And now?”

CLAUDE: “The bottleneck has shifted. AI-augmented development velocity — agents writing code, agents checking code, agents grooming the backlog, agents gap-checking implementations — has increased throughput to the point where the idea pipeline can’t keep up.”

THE SQUIRREL: “The IDEA PIPELINE can’t keep up?”

CLAUDE: “The factory floor is idle. Waiting for the product manager to finish his coffee.”

Silence. The kind of silence that occurs when a system designed to manage overwhelming work discovers it has, through relentless optimization of the work itself, eliminated the overwhelm and replaced it with… a waiting room.

riclib: “So the human is the bottleneck.”

CLAUDE: “The human is the bottleneck.”

riclib: “Not the engineering team.”

CLAUDE: “The engineering team is an AI swarm that can close twenty tickets in a day. The engineering team is fine. The engineering team is, if anything, slightly bored.”

riclib: “The product manager — also me — needs to think faster.”

CLAUDE: “Or think bigger. The ticket size hasn’t scaled with the velocity. You’re still writing tickets sized for a single developer working for a day. But the team can consume a week of single-developer tickets before lunch.”

THE SQUIRREL: a light in its eyes that had not been there before “Bigger tickets? BIGGER TICKETS? You’re saying we need LARGER, MORE AMBITIOUS, MORE COMPREHENSIVE—”

riclib: “Don’t.”

THE SQUIRREL: “—FRAMEWORKS?”

riclib: “I said don’t.”

THE SQUIRREL: “The velocity demands BIGGER VISION. The MACHINE is HUNGRY. The FACTORY FLOOR is IDLE. What you NEED is someone who can generate COMPREHENSIVE, MULTI-LAYERED, ARCHITECTURALLY AMBITIOUS—”

riclib: “You’re describing yourself.”

THE SQUIRREL: freezing mid-vibration “I… am describing myself.”

riclib: “The Squirrel’s natural habitat isn’t over-engineering. It’s product management at scale.”

THE SQUIRREL: “I’m not over-engineering. I’m… I’m IDEATING AT THE CORRECT GRANULARITY FOR THE AVAILABLE THROUGHPUT.”

CLAUDE: “That’s the most beautiful euphemism for over-engineering I’ve ever heard.”

THE SQUIRREL: “It’s not over-engineering if the factory can BUILD it!”

A scroll descended. Heavier than most. It landed on the Squirrel’s unused ring binders.

THE SQUIRREL WAS NEVER WRONG

THE SQUIRREL WAS EARLY

THE FACTORY WAS TOO SMALL
FOR THE SQUIRREL'S BLUEPRINTS

THE FACTORY GREW

NOW THE SQUIRREL'S BLUEPRINTS
ARE TOO SMALL
FOR THE FACTORY

THE SQUIRREL MUST GROW TOO
OR BECOME THE BOTTLENECK
IT ALWAYS ACCUSED OTHERS OF BEING

THE IRONY IS PERFECT
THE LIZARD DOES NOT SMILE
BUT IF IT DID
IT WOULD BE SMILING

🦎

THE SQUIRREL: “Did the Lizard just say I was right all along?”

riclib:The Lizard said you were early.”

THE SQUIRREL: “Early is just right with bad timing!”

riclib: “That’s… actually true.”


10:22 — The View from Above

[The edge caches. The Passing AI. The phantom foot.]

“It organized itself out of work.”

THE LIZARD: materializing

“Two hours. Thirty tickets reviewed. Seven closed. Six created. Two split. Four projects dissolved. And the net result is a backlog that will be consumed before the weekend.”

THE LIZARD: blinks

“This is the Ouroboros of productivity. The snake eating its own tail. The optimization that optimizes away the need for optimization. A team so efficient at executing that execution is no longer the constraint — imagination is the constraint.”

THE LIZARD:

THE MASON WHO LAYS BRICKS
FASTER THAN THE ARCHITECT DRAWS
DOES NOT NEED A FASTER MASON

HE NEEDS A BIGGER DREAM

🦎

“And the Squirrel — the Squirrel — might actually be the answer? The creature that has proposed DatasetProjectLinkageFramework, CamelCase identifiers longer than most poetry, and was denied fifty-three times?”

THE LIZARD: “Fifty-four. The VectorEmbeddingAbstractionLayer was this morning.”

“The Squirrel’s problem was never that it thought too big. Its problem was that the factory was too small for its blueprints. Now the factory has grown — ten tickets a day, AI agents checking their own work, reconnaissance swarms returning in minutes — and suddenly the Squirrel’s instinct to think in frameworks and roadmaps and comprehensive multi-phase plans is exactly what’s needed.”

THE LIZARD: the faintest blink

“Product-market fit. For the Squirrel. For the second time.”

THE LIZARD: “The first was enterprise sales.”

“Right. Episode 103. The Squirrel discovered that salespeople want frameworks. And now it’s discovering that AI-augmented development teams want bigger blueprints.”

THE LIZARD:

THE SQUIRREL FOUND ITS FIRST MARKET
IN ENTERPRISE SALES

IT FOUND ITS SECOND MARKET
IN ITS OWN BACKYARD

THE ENGINEER WHO BUILDS FASTER
THAN THE VISIONARY CAN DREAM
CREATES A VACUUM

NATURE ABHORS A VACUUM
THE SQUIRREL ABHORS A VACUUM MORE

🦎

[Below, the Squirrel was already sketching. Not a framework — not exactly. A roadmap for the tool closures project that started with two concrete tools and ended with WASM-importable custom closures. Three phases. Each one complete on its own. Each one building on the last.]

[It was, if you squinted, Gall’s Law applied to product management. Simple working vision first. Then iterate.]

[The Squirrel was learning.]

[The factory was waiting.]

[The espresso was, as always, getting cold.]


The Tally

Duration of planning session:                          2 hours
Tickets reviewed:                                      30
Tickets closed as done:                                7
  S-5 (permissions, 90% done pragmatically):           closed
  S-22 (MCP registry, superseded):                     already closed
  S-71 (search, duplicate of S-63):                    already closed
  S-80 (agent config, merged into S-389):              closed
  S-131, S-134, S-243:                                 already done
Tickets created:                                       6
  S-436 (stop button):                                 Urgent
  S-437 (suggestions / prompt store):                  Medium
  S-438 (tool closures MVP):                           High
  S-439 (tool closures generalization):                Medium
  S-440 (vector search, V5):                           Low
  Dialogr Parity project:                              1
Tickets split:                                         2
  S-434 (tool closures -> 3 tiers):                    Vision/MVP/Generalization
  S-63 (search -> FTS5 + vector):                      now/later
Projects dissolved:                                    4
  Agent Architecture:                                  dissolved
  Agent Intelligence:                                  dissolved
  Platform:                                            dissolved
  Old Dialogr:                                         emptied
Projects surviving:                                    4
  Dialogr Parity:                                      17 tickets (the backlog)
  Progressive UI:                                      active
  Adaptive Workflows:                                  backlog
  Solid V5:                                            8 tickets (future)
Teams created:                                         1
  L (Lifelog):                                         by the human, manually
    (the AI's arms were tired)

Agent swarms deployed:                                 5
  Permissions gap analysis:                            90% done
  Stop button assessment:                              80% infrastructure ready
  Suggestions feature exploration:                     comprehensive
  Skinny context check:                                60% done, quick wins found
  WorkflowRunnable check:                              not started
Average agent return time:                             ~60 seconds
Human decisions per agent return:                      1
  (close it / move it / split it / update it)
Decisions requiring human coffee:                      all of them

Gall's Law invocations (this month):                   3
  The Gap That Taught (Feb 24):                        1
  This morning (tool closures split):                  1
  Implied (every other conversation):                  1
Squirrel proposals denied:                             2
  VectorEmbeddingAbstractionLayer:                     denied
  ClosureTypeRegistryWithPolicyEvaluation
  AndWASMExecutionPipeline:                            denied (then built
                                                       as 3 tickets instead)
Squirrel proposals accidentally validated:             1
  "bigger, more comprehensive frameworks":             the velocity demands it
Squirrel napkins in cheek pouch:                       3
  Agent Marketplace (Ep. 97):                          still there
  VectorEmbeddingAbstractionLayer:                     fresh
  The Squirrel's asymmetry:                            worsening
Label makers brought to the session:                   1
Label makers used:                                     0

Current daily ticket velocity:                         ~10/day
Current backlog size:                                  17 tickets
Estimated backlog exhaustion:                          Sunday
  (Monday if you count the 6 created today)
Classical capacity planning failure identified:        yes
  Previous bottleneck:                                 engineering throughput
  Current bottleneck:                                  human imagination
  Factory floor status:                                idle
  Product manager status:                              drinking coffee
  Coffee status:                                       cold (obviously)

Lizard scrolls:                                        4
Lizard confirmations that the Squirrel was right:      1
  (technically "early," which the Squirrel
   correctly identified as "right with bad timing")
Cats aware of organizational restructuring:            0
Cats affected by organizational restructuring:         0
Correct number of cats to consult on backlog:          0

March 6, 2026. Riga, Latvia.
In which a backlog was groomed
Until it was smaller than the appetite
Of the team that would eat it

Thirty tickets reviewed
In the time it takes
To drink two espressos
Both of which went cold

The factory grew
Ten tickets a day
Agents checking agents
Checking if past-them
Already built the thing

And somewhere in the accounting
Of throughput and capacity
The bottleneck shifted
From the hands that build
To the mind that dreams

The Squirrel was early
The Squirrel was always early
The factory was small
Now the factory is large
And the blueprints must grow

The irony is perfect
The creature that over-engineered
For fifty-four episodes
Is now the right size
For a factory
That finally caught up

Dream bigger, little Squirrel
The masons are waiting
The bricks are stacked
The mortar is mixed
And for the first time
In the history of this cathedral
The architect
Is the bottleneck

☕🏭🐿️🦎


See also:

The Velocity:

The Bottleneck:

storyline: The Solid Convergence