Skip to content
C.W.K.
Stream
Lesson 02 of 04 · published

Anvil Is Not Council

~11 min · boundary, council, crucible, product-shape

Level 0Cold Iron
0 XP0/36 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete

Anvil Is Not Council

Council, Crucible, and Anvil can all involve several brains, so counting participants cannot define the product. Council is conversation-shaped: the exchange itself is the surface. Crucible is task-shaped: a scoped work order enters a workshop and the deliverable lands wherever that task names. Anvil is artifact-shaped: a workpiece moves through pressures, judgments, and possible transformations.

That distinction changes ownership. Anvil does not discover the task, host an open-ended discussion, or become the canonical home of the resulting code. It owns the run contract, sealed identities, artifact transitions, judging packets, and total trail. The artifact can later land elsewhere, but the record of how it passed through pressure remains Anvil’s.

Confusing these shapes causes feature gravity. Add free conversation and the judging boundary dissolves into persuasion. Add arbitrary task execution and the arena becomes a generic delegation system. Make Anvil the deliverable owner and it starts duplicating every destination. A strong boundary sounds narrower because it is.

The routing question is not “How many brains do I want?” Ask what must be first-class: conversation, execution of a scoped task, or comparative pressure on an artifact. That noun chooses the workshop.

Products are shaped by their canonical object. Conversation chooses Council, scoped execution chooses Crucible, and artifact pressure chooses Anvil.

Code

Route to the noun that owns the state·python
ROUTES = {
    "conversation": "Council",   # the exchange itself must survive
    "scoped_task":  "Crucible",  # the order and its landing site must survive
    "artifact":     "Anvil",     # the workpiece's transitions must survive
}


def route(losing_this_breaks_it: str) -> str:
    """The noun you cannot afford to lose picks the workshop."""
    try:
        return ROUTES[losing_this_breaks_it]
    except KeyError:
        raise ValueError(
            f"{losing_this_breaks_it!r}: if it is none of the three,"
            " the product boundary is not decided yet"
        )


assert route("artifact") == "Anvil"
assert route("conversation") == "Council"
try:
    route("multi_brain")           # participant count is not a boundary
except ValueError as exc:
    print(exc)

External links

Exercise

Take one real job and write three versions: conversation-shaped, task-shaped, and artifact-shaped. Which state must survive in each?
Hint
Look for the noun whose history would make the system useless if lost.

Progress

Progress is local-only — sign in to sync across devices.
Spotted a bug or have feedback on this page?Report an Issue

Comments 0

🔔 Reply notifications (sign in)
Sign inPlease sign in to comment.

No comments yet — be the first.