The Self-Equipping Agent: When Capability Becomes a Step in the Workflow

SF Scott Farrell July 10, 2026 scott@leverageai.com.au LinkedIn
Agentic Engineering

The Self-Equipping Agent

An AI wrote a driver for a database whose vendor was sold off and whose client no longer exists — then re-engineered that driver past its own 4 GB wall in six minutes. That is not “AI codes faster.” It is a change in the unit of engineering, and it reprices your entire backlog.

By Scott Farrell · LeverageAI

📘 Want the complete guide?

The full ebook — nine chapters on mission-shaped software, capability acquisition as a workflow step, and the unit of engineering. Read The Self-Equipping Agent →

TL;DR

  • Capability acquisition has become a step inside the workflow. When an agent hits something it can’t do — or a boundary in a tool it just built — it manufactures or re-engineers the capability and continues, instead of stopping.
  • The unit of engineering shrank. IBM moved the Notes database ceiling from 4 GB to 64 GB to 256 GB across product generations and person-decades. An agent moved the same class of boundary in its own reader in five or six minutes — as part of reading the next file.
  • Every contact with reality reprices the future. Once you watch a “specialist legacy project” become an overnight goal, the set of ideas you allow yourself to attempt expands. That is the real accelerator.

I was restoring old files for a personal memorabilia project — thirty years of digital sediment — when the agent hit a wall. It had found some Lotus Notes data. Old Notes data, from a technology whose vendor sold it off years ago and whose client software I no longer had installed anywhere.

I told it to open the file. And of course, we don’t have Lotus Notes.

No Notes client? Fine. The AI wrote enough Notes software to get my data back.

Claude Code8 shrugged — “no worries, I’ll just invent a driver in C++” — and it did. It opened the Notes NSF file. It took under three minutes.

The easy reaction is: yeah, yeah, AI wrote a parser. If that’s all you see, you’ll miss the thing that actually happened. This piece is about the thing you’d miss.

The tomb door moved

Recovering data from an extinct format used to be a ritual, and the ritual was expensive. It went roughly like this:

find the weird file
identify the obsolete product
hunt down install media
find a matching operating system
find a licence key
build a VM, fight the DLLs
export to some intermediate format
write a conversion script
finally look at your own data

Every extinct format was a sealed tomb, and the cost of opening it was absurd. So most of them stayed sealed. Today, the agent manufactures the archaeological tool at the tomb door. The ritual collapses to: what is this? I need a reader. Writes one. Opens it.

It matters that this isn’t a trivial file. An NSF is a real database. HCL still documents a whole native C API for it — NSFDbOpen, NSFSearch, NSFNoteOpen, NSFItemInfo — a storage model with typed items, access controls, object stores and a long lineage of on-disk formats.5 An independent reverse-engineering project, libnsfdb, has spent years on the format and still describes itself as experimental, analysis-only.6 So writing an NSF reader is re-implementing a proprietary database engine, not unzipping an archive.

To be honest about what happened: the agent didn’t derive the entire NSF format from first principles in a few minutes. It found enough existing format knowledge and structural clues to synthesise the particular reader it needed. And that’s almost more interesting — because format extinction is ceasing to imply information extinction. But how far that reach extends across every dead format on earth is a separate argument, and one I’ve made elsewhere in The Backup Is the API. This piece is about something narrower and, I think, sharper: the engineering economics of what just happened.

Capability acquisition became a step

Here is the beat that turns a cool anecdote into an argument. As the agent worked through the archive, it found another NSF, and reused its reader automatically. Then it found one bigger than four gigabytes.

“Oops — our driver doesn’t handle blobs past 4 GB. Don’t worry, I’ll re-engineer it.” Five or six minutes later, it did, and it kept going.

Read that again. The boundary it hit was in its own freshly built software. Its abstraction was too narrow, so it changed the abstraction and continued the archaeology. That is not “AI helped me write a converter.” That is an adaptive toolchain being synthesised in the path of the work:

encounter unknown artefact
identify the format, find enough to understand it
manufacture the missing capability
execute it against the real artefact
observe failure at a previously unknown boundary
re-engineer the capability
continue the original mission

The extraordinary part is that capability acquisition became a step inside the workflow. Traditional software design says: we have capabilities A, B and C — now design a workflow from them. The agent says: I need D, I don’t have D, I’ll make D, back to work.

I didn’t procure an NSF Reader Pro™. I had a mission — recover my old world — and the software’s shape was determined by whatever obstruction the mission met. Call it mission-shaped software. The striking thing is that the lifetime of that software may be twenty minutes. It doesn’t need a product name, a UI, installation docs, a roadmap, generic configuration, support for every NSF ever made, a vendor, or a purchase decision. It needs to open my files today.

Why “an ETL that writes its own decryption software” is the whole story

Classic ETL — extract, transform, load — assumes a source connector already exists.7 That assumption is so baked in that an entire industry sells pre-built connectors. Normally an ETL dies the moment you don’t have the server to read the source. Here, the ETL wrote its own decryption harness, built its own NSF driver, and re-engineered that driver when it broke. The connector was manufactured as a step inside the load. Have you ever heard of an ETL writing its own decryption software?

Notice what this does to the tidy diagram we usually draw. We picture an architect anticipating the topology in advance: LLM step, then a query, then another LLM step. But here nobody designed “mount the VMDK, reverse the struct, boot QEMU.” The workflow was not designed first and executed second. The workflow precipitated out of contact with reality. The pipeline is the trace left behind by thinking. And this isn’t a one-off trick: Anthropic now documents agents persisting their own code as reusable functions, building “a toolbox of higher-level capabilities” over time.11 The distinction between tools the agent has and tools the agent can create has almost disappeared.

The unit of engineering

Now put the agent’s five-minute fix next to the company that owned this format. The comparison is the point of the whole piece.

Generation NSF size ceiling When
Notes/Domino R4 4 GB mid-1990s
Notes/Domino R5 64 GB (a 16× jump) 1999
Notes 8.5.x / 9.0.1 still 64 GB ~2010s
Domino 10 / ODS 53 256 GB 2018

IBM’s own documentation records the ladder: Release 4 topped out at 4 GB, Release 5 raised it to 64 GB,2 and that 64 GB ceiling stood for the better part of two decades before Domino 10 lifted it to 256 GB — HCL’s docs say it plainly: “previously it was 64 GB.”1 Each move was a product generation: storage architects, compatibility analysis, on-disk-structure evolution, a test matrix, release engineering, customer migration. The 256 GB change still shipped with rules about which ODS version you needed and how replication behaved beyond 64 GB.1 That is product-scoped engineering, and it took years — cumulatively, plausibly person-decades of ecosystem effort.

IBM moved a boundary as part of a product generation. The agent moved a boundary as part of reading the next file. That’s not “coding faster.” The unit of engineering has changed.

I want to be scrupulously fair here, because the distinction is load-bearing. These are not equivalent engineering burdens. IBM had to support millions of users, preserve vendor compatibility, guarantee decades of upgrades, and ship a durable, supported database platform that could safely read, write, replicate, recover, compact and index across an entire enterprise ecosystem. The agent had to do exactly one thing: read my NSF corpus and get the records into Postgres. It didn’t solve IBM’s problem, and I can’t hand you a precise “IBM spent 17.3 engineer-years on the 4 GB barrier” figure — no internal project accounting exists for that.3

But that’s exactly why the observation matters. Historically we engineered the general solution because software was expensive: spend the human-years, make the reader handle the whole supported world, do it once. The agent doesn’t reach for generality. It says: I have encountered file 8437; my present software can’t cross this boundary; I will change the software to cross the boundary I’ve actually met. You didn’t need the product boundary moved. You needed the boundary moved for this mission, against this corpus, right now.

One night, one mission: the recovery, end to end

The 4 GB fix is one beat in a longer expedition, and the full trace is worth seeing, because no sane human would ever design a pipeline with these boxes at the start. They emerged because reality fought back and the agent kept forging the next capability it needed to move forward.

  1. 1Restoring old files, it hits a Lotus Notes NSF. No client anywhere.
  2. 2It goes spelunking through old VMDK disk images (mounting them, pulling out the files it wants) and finds a Notes DLL and some Notes ID files.
  3. 3I don’t know the passwords. It drives the DLL under Wine6 — no full Notes install, just the runtime component — builds its own recovery harness around it, and, because it’s not running the whole application, sidesteps Notes’ login timeouts. It generates and downloads word-lists, mangles them with Python, and runs billions of attempts.
  4. 4Brute force fails on one ID. So I broaden the goal: try the other Notes IDs (same filename, years apart, likely different passwords), and search the Postgres data we’d already recovered — unencrypted — for plaintext passwords. It works. It recovers the IDs and passwords across the archive.
  5. 5It writes a C++ NSF driver from close to scratch: iterating struct offsets, discovering a 16-byte offset for the Notes ID, working out the field layout — building it, as I watched, largely “out of its head” with a little web reference.
  6. 6It replicates NSF → Postgres in under three minutes, preserving the Notes universal ID across replicas.
  7. 7It hits the >4 GB NSF, re-engineers the driver in five or six minutes, and continues.
  8. 8I want to log into the original system. The old Intel VMware image won’t run cleanly on my Apple-silicon Mac, so — unprompted — the agent spins the VM up in QEMU on a Linux box instead, translates the old VMware config into QEMU drivers, screenshots the boot sequence to work out how to bypass the “inaccessible boot device” screen, moves the VM onto a scratch SSD for speed, and hands me a VNC command to log in.

This was a long-running agent job — two overnights, driven by a single goal. And that duration is not incidental. It changes what the agent is.

The six-hour organism

A six-hour agent at hour six is not the execution capability it was at minute one. At the start it had a shell, generic tools, and a filesystem. By the end it had an NSF scanner, a password-test harness, an extracted identity catalogue, VM-mount scripts, a word-list transformer, a custom C++ reader with known field offsets, a validated test corpus, recovered passwords, a QEMU config, a migrated VM, and working VNC access.

The mission accumulates machinery.

A long-running goal agent is building itself a mission-local capability stack. It gets more capable with respect to that goal as it works. This isn’t a metaphor stretched for effect — it’s the measured trajectory of the field. Anthropic reports agents maintaining focus for more than thirty hours on complex, multi-step tasks;9 METR finds the length of tasks a frontier agent can complete autonomously has been doubling roughly every seven months, and accelerating since.10 The longer the coherent run, the more machinery the mission can accumulate before it loses the thread. (The architecture that makes those long runs stable — stateless workers plus a stateful kernel — is the subject of our work on breaking the one-hour barrier.)

Which has a sharp operational consequence. If you interrupt a long-running agent to bolt on the next task, you’re not just distracting it — you may be yanking an intelligence out of a locally accumulated cognitive environment that took six hours to form. It’s the oldest management lesson there is:

The one-task rule

It’s like a staff member. Give them two tasks and they’ll fuck up the first one — you should have given them one task if you didn’t want the first one botched. The agent has built a burrow. It has tools lying around, it knows the weird offsets, it remembers why id3 was more promising than id7. Give it one North-Star goal and leave it alone.

That’s why expressing intent, rather than dictating steps, is what let this happen at all. I never specified “mount the VMDK, reverse the struct, boot QEMU.” I gave it a few hints and told it what I was trying to do, and it self-organised the whole expedition. You give it your intent — not a list of steps — and if it understands the intent, it can go and do the work. A good model with a persistent goal, broad machine access, accumulated scripts, and the ability to create new instruments stops being a very smart prisoner in a chat box and becomes a self-equipping expedition.

Reality reprices the future

Here is the part that outlasts the anecdote. The recovery didn’t just produce recovered data. It changed my internal price table of what’s worth attempting.

Task Before After
Recover an obsolete database very expensive try a goal, overnight
Reverse an old format probably no the agent might build the reader
Boot a dead VM painful let the agent translate it
Forgotten password hard blocker search the whole historical world

Reality doesn’t merely answer the question. It reprices the future.

My capability frontier moved, so the next day I generated intents that the day before I’d have silently discarded as unrealistic — before they ever reached a conscious backlog. Previously the brain does idea → “too hard” → discard. Now it does idea → “hang on, it recovered Lotus Notes from VMDKs” → maybe possible → capture. The range of thoughts permitted to become intents expands. Contact with reality brings perturbation — even when I think I know what AI can do, today shatters another barrier, and what was true yesterday isn’t true tomorrow. The perturbation isn’t noise in the loop. It’s fuel.

And the macro-economics point the same way. The reason legacy is expensive is precisely that reaching it requires scarce, disappearing specialist capability: the US federal government alone spends over $100 billion a year on IT, roughly 80% of it operating and maintaining legacy systems, some still running on COBOL and Assembly with a dwindling pool of people who can support them.12 When an agent can manufacture the reaching capability on demand, the price of “touch the obsolete system at all” collapses — and a specialist project becomes an overnight goal. (What you then keep or delete from that newly reachable archive is its own question, one I’ve taken up in Keep the Bronze.)

The 25-year proof

I have a controlled experiment for this, and it’s my own history. In the early 2000s I built a Lotus Notes application for Freemans Australia — insurance loss adjusters, fifty offices, working out of disaster zones on notebooks with intermittent connectivity, replicating back when they got a line. Then their clients, the insurers, wanted visibility. Notes was the wrong thing to hand them, so I invented a signed, claim-scoped URL — a capability link emailed per claim, opening exactly one claim read-only — years before S3 made signed URLs ordinary.

To serve that on the web, I back-ended it into Notes, found Notes couldn’t take the load no matter what I did, and so I hand-wrote a replicator to push the Notes data into DB2. That got too slow, so I multithreaded it and added checkpointing until I had a behemoth of a replicator feeding a fast WebSphere/DB2 serving layer. It worked for years. It also took months of my life.

Twenty-five years later, I’m recovering Lotus Notes data and chucking it into Postgres because I can’t be bothered reading it from Notes. Same bloke, same source technology, nearly the same data-movement instinct — get the data out of the awkward operational format and stage it somewhere tractable. In the 2000s I moved it because the serving environment needed DB2-shaped data. In 2026 I move it because the cognitive environment — the AI — thinks far more freely over Postgres and text.

The difference is that the second time, the software arrived as a side effect of expressing the intent.

That’s “code is not the asset” with a 25-year receipt. The first time, the transformation substrate didn’t exist, so I was the substrate. The second time, I kept the architectural decision and barely touched the machinery.

And it’s not a fluke of one lucky corpus. In a separate session, against a different backup set, the agent hit the same wall — no Python NSF connector — and again synthesised its own C++ driver, running ten parallel threads, deduplicating across partial replicas by their universal IDs. Two independent cases pointing at the same move is enough to call it a principle, not an anecdote.

What to do with this

If you run agentic tools, the shift you should internalise isn’t “the AI is faster.” It’s that capability acquisition is now a step in the workflow, which shrinks the unit of engineering to the next file — and that means a whole class of work you’ve priced at yesterday’s rates is now radically cheaper. Your “impossible” backlog was written under the old economics. It’s stale.

So re-price it. Find the extinct system, the encrypted archive, the format nobody can open, the twenty-year-old data hoard you kept for no reason and could never justify touching. Give an agent a general-purpose machine, a single clear intent, and a night. Then leave it alone and see what it builds itself to get in.

One ask

Name one system or archive you’d written off as unreachable — the tomb you stopped trying to open. Set it as an overnight goal for a self-equipping agent, and tell me what came back. I collect these.

— Scott Farrell, LeverageAI · leverageai.com.au

References

  1. [1]HCL Software. “ODS 53 supports larger databases and folders — Domino 10.0.1 documentation.” — “The maximum size of databases allowed in IBM Domino 10 has increased to 256 GB; previously it was 64 GB… To replicate more than 64 GB of data, the target replica must be on a Domino 10 server or Notes 10 client and be upgraded to ODS 53.” help.hcl-software.com/domino/10.0.1/admin/wn_ods_53_supports_larger_databases_and_folders.html
  2. [2]Genii Software / recovery-tools.org. “Limits in Notes/Domino (living document)” and “Lotus Notes Database Size Limit.” — “R4: 4 GB … R5/ND6: 64 GB”; “The maximum size of database in Notes R5 is 64 GB as compared to 4GB in R4.” geniisoft.com/db/archive/20040422-1200 · recovery-tools.org/techtalk/lotus-notes-database-size-exceeds.html
  3. [3]IBM developerWorks Lotus. “The History of Notes and Domino” (2007). — “The first release of Lotus Notes shipped in 1989… Lotus Notes Release 3.0 shipped in May 1993… In July 1995, IBM purchased Lotus, primarily to acquire the Notes technology.” notesmail.com/home.nsf/ls-NDHistory-pdf.pdf
  4. [4]The Washington Post. “Lotus Agrees to IBM Bid for Buyout” (12 June 1995). — “IBM and Lotus announced a definitive merger agreement on June 11, 1995… total equity value of approximately $3.5 billion. IBM successfully completed its tender offer on July 5, 1995.” washingtonpost.com/archive/politics/1995/06/12/lotus-agrees-to-ibm-bid-for-buyout/
  5. [5]HCL Software. “Domino C API Documentation — NSFDbOpen, NSFSearch, NSFNoteOpen, NSFItemInfo.” — “NSFDbOpen takes a pathname to an existing Domino database… returns a handle to it.” opensource.hcltechsw.com/domino-c-api-docs/
  6. [6]libyal/libnsfdb (GitHub) and Wine (Wikipedia). — “libnsfdb is a library to access the Notes Storage Facility (NSF) database file format… this project currently only focuses on the analysis of the format”; “Wine is a compatibility layer to allow application software… developed for Microsoft Windows to run on Unix-like operating systems.” github.com/libyal/libnsfdb · en.wikipedia.org/wiki/Wine_(software)
  7. [7]SAS. “ETL — What it is and why it matters.” — “ETL… refers to the three steps (extract, transform, load) used to blend data from multiple sources… data is taken (extracted) from a source system, converted (transformed)… and stored (loaded).” sas.com/en_us/insights/data-management/what-is-etl.html
  8. [8]Anthropic. “Claude Code — Overview” and “How Claude Code is used in practice.” — “Claude Code is an agentic coding tool that reads your codebase, edits files, runs commands, and integrates with your development tools.” code.claude.com/docs/en/overview · anthropic.com/research/claude-code-expertise
  9. [9]Anthropic. “Introducing Claude Sonnet 4.5” (2025). — “Practically speaking, we’ve observed it maintaining focus for more than 30 hours on complex, multi-step tasks.” anthropic.com/news/claude-sonnet-4-5
  10. [10]METR. “Measuring AI Ability to Complete Long Tasks” (19 March 2025) and “Time Horizon 1.1” (29 January 2026). — “The length of tasks… that generalist frontier model agents can complete autonomously with 50% reliability has been doubling approximately every 7 months for the last 6 years.” metr.org/blog/2025-03-19-measuring-ai-ability-to-complete-long-tasks/
  11. [11]Anthropic Engineering. “Code execution with MCP.” — “Agents can also persist their own code as reusable functions… Over time, this allows your agent to build a toolbox of higher-level capabilities, evolving the scaffolding that it needs to work most effectively.” anthropic.com/engineering/code-execution-with-mcp
  12. [12]U.S. Government Accountability Office. “Information Technology: Agencies Need to Plan for Modernizing Critical Decades-Old Legacy Systems” (GAO-25-107795, 2025). — “Each year, the federal government spends more than $100 billion on IT… agencies have typically reported spending about 80 percent on operations and maintenance of existing IT.” gao.gov/products/gao-25-107795

Discover more from Leverage AI for your business

Subscribe to get the latest posts sent to your email.

Leave a Reply

Your email address will not be published. Required fields are marked *

© 2026 Leverage AI, Scott Farrell. All rights reserved. This content is made available on a limited, revocable, read-only basis only. No licence or right is granted to copy, reproduce, republish, scrape, store, adapt, summarise, index, embed, or use this content to create derivative works, work product, deliverables, methodologies, training materials, prompts, templates, software, services, research, or commercial outputs, whether by humans or machines, without prior written permission. This restriction includes internal business use, client work, consulting, advisory, implementation, and any use in or for artificial intelligence, machine learning, data extraction, retrieval, evaluation, fine-tuning, or knowledge-base construction.