Skip to content
Kumar Chandrachooda
Series

The Convey Consumer Tax

In reading order.

  • 13 parts
  • ≈ 88 min total
  • 13 published
Part 1 25 Jan 2026 6 min read

The Convey Consumer Tax

Convey sells a microservice in thirty lines, and Pacco builds ten of them - this series reads the whole estate to price what the framework compresses and what every consumer pays for by hand. Part 1 of The Convey Consumer Tax.

Part 2 28 Jan 2026 6 min read

The Same File in Seven Repos

MessageBroker.cs exists in seven Pacco repositories and hashes identically once you substitute the service name - this part inventories the copied glue, finds the double registrations hiding in seventeen-call chains, and weighs copy-paste against a shared kernel.

Part 3 31 Jan 2026 6 min read

A Service in Thirty Lines

The fair part of the ledger - how UseDispatcherEndpoints, self-identifying commands, afterDispatch hooks and snake_case conventions let every Pacco service put its whole HTTP surface in one readable file.

Part 4 03 Feb 2026 6 min read

One Index Across Ten Services

Pacco models aggregates-per-document honestly across ten Mongo databases, and then creates exactly one index in the whole estate - fire-and-forget, in a scope that has already been disposed - while natural-key scans sit on the message hot path.

Part 5 05 Feb 2026 6 min read

The Test Pyramid CI Never Runs

Nine Pacco repositories run dotnet test against zero test projects and stay vacuously green, while the one repo with a real unit-integration-e2e-performance pyramid is the only one whose Travis config omits the test step.

Part 6 08 Feb 2026 7 min read

Pacts Through a Folder Six Levels Up

Orders and Parcels keep the estate's only cross-service contract honest with Pactify - a pact written to a relative path six directories above the repository, verified against a seeded Huge Weapon, and checked for shape only. Consumer-driven contracts with no broker, read from source.

Part 7 11 Feb 2026 7 min read

A Shadow Registry of Every Message

Operations subscribes to eighty estate messages from one hand-maintained JSON file - a shadow copy of every contract in the system that nothing validates, with ghost entries nobody publishes and real rejections it never lists.

Part 8 14 Feb 2026 6 min read

Two Ways to Tell a Service Something Changed

Deliveries maps domain events into integration events that carry facts while Vehicles publishes bare ids straight from its handlers - two event philosophies in one estate, and a vehicle-to-resource mirror that syncs deletes but never creates.

Part 9 17 Feb 2026 7 min read

The Saga That Rides a Header

OrderMaker drives a whole order through a Chronicle saga and reports its progress in a single RabbitMQ header - stamped on every publish, forwarded by seven copied MessageBrokers, read back by Operations, and backed by a saga store that forgets everything on restart.

Part 10 19 Feb 2026 7 min read

AI in a Startup

The self-styled uber AI order maker resolves to FirstOrDefault behind an in-source confession, and its reservation heuristic structurally out-bids every earlier booking - the estate's data-science audit, written up as the short honest piece its eleven lines deserve.

Part 11 22 Feb 2026 7 min read

A Smell Audit With Prescriptions

A refactoring.guru walk through Pacco's real lines - a flags-enum search that can never match, twin guards, a dead password check, mappers that return null, and an Id that is never assigned - each smell named and each paired with the technique that cures it.

Part 12 25 Feb 2026 8 min read

The Graveyard of Registered Dependencies

Redis registered in nine services and read in one, discovery stacks in services that never call anyone, an outbox package referenced but never wired, and versions that float by construction - an inventory of everything Pacco wires up and never uses.

Part 13 28 Feb 2026 9 min read

The Price of No Shared Kernel

The retrospective, with the ledger totalled - seven byte-identical MessageBrokers, one AggregateRoot with three meanings, what Convey genuinely optimises, where a Convey.Bootstrap meta-layer should have stood, and what a consumer should copy from this estate.