Chapter 23

The tool the plan did not know about

Let real material reveal an unowned job without inventing a plug-in system.

On this page

After decapping one of the Lake City cases, a ring remained around the empty primer pocket.

Military ammunition stakes the primer in place by displacing brass around it. Punching the spent primer out does not remove that crimp. A fresh primer will not seat correctly until the ring has been pressed away.

My first plan had no line for that work.

The case did not care. The ring remained.

This is a different kind of failure from putting the tumbler in the wrong place or choosing a poor tool. The drawing itself lacked a job the material required. No amount of cleaner implementation inside the existing stations could make the omission disappear. The plan was wrong at the body-plan level.

The demand was a job, not a brand

The tempting version of this story is neat: the Lake City brass demanded a swager, a swager arrived, and the system accepted its missing organ.

The true version is more useful.

The brass demanded primer-pocket preparation. It did not specify a tool. The Lee press could perform the work with the right tooling, at the cost of retooling and extra handling. Later I bought a dedicated swager because it gave the job a permanent station. The purchase improved the flow. It was not the only physically possible answer.

Separate the requirement from the implementation:

Level What reality required What the bench chose
Job remove the military crimp before priming primer-pocket preparation
Message receive a decapped case; return a pocket prepared for a primer case placed on the swager and worked
Part something capable of doing that job dedicated swager
Placement reachable between upstream and downstream work bench edge near the preparation flow
A green primer-pocket swager mounted at the edge of the reloading bench with the red Lee press behind it
The dedicated swager is one implementation of the primer-pocket preparation job. The job remains the stable part of the design.

If the row named Part is mistaken for the row named Job, the tool becomes the design. Replacing it later feels like changing the system's purpose. When the job is named first, the tool remains a choice.

Draw the change twice

The original preparation drawing had an invisible gap:

clean -> classify -> inspect -> decap -> size and trim -> readiness line
                                  |
                                  +-- crimp still present; nobody owns it

The revised drawing at that point gave the work a home:

clean -> classify -> inspect -> decap -> prepare pocket -> size and trim
                                             |
                                             v
                                    production-readiness line

Now annotate the new part:

Question Answer
Job press the crimp ring away and leave the primer pocket prepared
Receives a decapped case whose pocket still carries a crimp
Returns the same case with the pocket-prepared fact established
Refuses to know caliber sorting, cleanliness, case length, load recipe, priming, and whether the case is otherwise production-ready
Can say no when the case cannot be held or worked safely

The refusal list is the design. Without it, Swager is only a noun waiting to collect whatever work happens nearby.

The before-and-after drawings also need a third annotation: what did not change.

  • The tumbler still cleans without knowing calibers.
  • The classifier still separates expected, wrong-context, and foreign material.
  • The loading block still carries the caliber guarantee.
  • The magnifier still exposes defects without changing them.
  • Sizing and trimming still follow their own specifications.
  • The readiness line still derives one answer from its then-current six facts.

Nothing upstream or downstream had to learn how swaging works. The new station took the unowned job and joined the existing flow through the same ordinary material handoff.

That is open extension in concrete form: the system gained behavior by adding a part at a visible joint, not by cutting new nerves into every old part.

A seam has to survive a swap

The garage already contains simpler examples of this property. Reloading dies share a standard thread. A sizing die, decapping die, or seating die can screw into a compatible press without the press knowing the operation inside the die. The press supplies force. The die decides what the force does.

The progressive press has a larger seam. Its toolhead carries a configured set of dies and lifts out as a unit. The whole production arrangement can be exchanged while the frame stays put.

These are not good seams because they are abstract. They are good because a swap preserves the parts around them. The test is observable:

  1. Name the part you will replace.
  2. Name the message or physical protocol crossing the joint.
  3. Perform or rehearse the replacement.
  4. List everything else that had to change.

If the fourth answer is the entire system, the box in the drawing was a visual fiction. If the replacement has the same protocol but nothing meaningful can vary, the seam is ceremonial.

Substitutability does not require a shared family tree. The swager and a retooled Lee press do not need a common parent called PrimerPocketPreparationDevice. They need to accept the same material at the same point and establish the same fact. In software, the equivalent is a shared message protocol. Inheritance shares implementation. It is not the price of admission for two objects that can answer the same message.

The proof a software seam owes

This chapter does not add a preparation-pipeline abstraction to the Ruby lab. There is only one modeled implementation of that physical journey, and inventing a second adapter to demonstrate extensibility would prove only that we can predict our own example.

When a real second implementation arrives, the seam owes a contract test. The contract should say what every preparation station must promise in domain terms:

  • what message it receives;
  • what result shape it returns;
  • which fact a successful result establishes;
  • how an expected refusal is represented;
  • what state remains unchanged on refusal.

Then both implementations run through the same examples. One socket, two limbs, one executable promise. A shared parent class is neither necessary nor sufficient. Two subclasses can inherit the same method names and still return different meanings.

Until the second implementation exists, the physical swap and the explicit protocol are the evidence we have. The code remains open rather than filling the repository with a hypothetical hierarchy.

Change one thing against a known baseline

The swager also carried a placement problem. Its final footprint was unknown while the rest of the bench was settling. A red loading tray reserved likely space. The tray was not a measured stand-in. It was a visible claim that an unknown future part had a cost.

That reservation prevented the unknown from disappearing into optimism. It did not prove the swager would fit.

The same discipline governs installation. Capture a known before-state. Add one component. Check fit, clearance, and movement. Inspect. Then add the next. Twelve changes followed by one failure create twelve suspects. One change against a known baseline creates one.

This is the bridge between a flexible body plan and disciplined DNA work. A good joint makes local change possible. A controlled baseline makes the result of that change knowable.

The open placement later closed. The RCBS swager took a bench-edge position and processed the first bounded fifty-case set. The red tray had not predicted the answer. It had kept the unknown from disappearing until the actual tool could answer it.

Production changed the surrounding order too. The first drawing placed decapping on the Lee and pocket preparation before sizing. Once the Dillon dies arrived, the case feeder and station-one die combined volume decapping and full-length sizing. The operator gauged headspace next, then swaged the accepted set. The current path became:

initial clean -> classify -> inspect -> lubricate
  -> Dillon decap + full-length size -> headspace inspection
  -> RCBS swage -> trim / chamfer / deburr as needed
  -> final clean [planned] -> dry -> final inspect -> readiness

The swager's job did not change. Its neighbors did. A stable responsibility let production reorder the flow without pretending the first drawing had foreseen the answer.

Find the job nobody owns

Take a recent requirement that surprised one of your systems. Draw the flow before the requirement and after it.

Question Before After
What job did reality demand?
Who owned it before? nobody
What message crosses the new joint?
What does the new part refuse to know?
What old parts changed?
What proof would return a meaningful no?

If an existing object absorbed the work, ask whether the work genuinely belongs there or whether proximity made the decision. If you introduced a plug-in system, name the second real implementation that justified it. If there is none, simplify the joint to the message the current flow actually needs.

What the new station does not prove

Adding the swager without moving the tumbler or rewriting the readiness line showed that the physical responsibilities were narrow enough for that change. It did not freeze the order around the station. Bench surface is finite. Reach, force, clearance, and Norma's parking space still constrain the system.

Nor does the dedicated tool prove the preparation rule is complete. It establishes one required fact. The next chapter stops at the line where the first working facts become one decision, then lets review and production correct that rule in public.