architecture

  • A module deleted, and the shared kernel that shrank

    Eight thousand lines removed, and six classes in the shared kernel that lost their only consumer. A shared kernel accumulates by the two-consumer rule and does not shed…

  • The command that became a method call

    Eighty-eight commands with one handler each, dispatched through four frames of indirection. A command bus provides cross-cutting concerns and eighty-eight one-to-one mappings provide indirection. The transaction middleware moved…

  • Two scheduled jobs nobody could account for

    A cron listing with eleven entries, of which two called commands that no longer existed. A cron job whose command does not exist fails silently unless something checks…

  • The command bus we removed

    A command bus introduced in 2021, and 88 commands with one handler each. A stack trace with four frames of dispatch before the work.

  • Splitting by task rather than by subject

    Four skill documents organised by subject, replaced by six organised by task, which is the whole finding. A document loaded because a task started is read; a document…

  • The test that had been quarantined since 2023

    A quarantine list with a deadline, three extensions, and one test covering a payment path that had been skipped for three years.

  • A denormalised schema that is rebuilt rather than synchronised

    A reporting schema shaped for the questions, populated by a full rebuild, which removes every synchronisation bug. Denormalisation is safe here because the table is truncated and rebuilt…

  • A TypeScript server in a PHP shop, and who maintains it

    A second language in the repository, and the question that matters more than the language. A second language is a maintenance decision rather than a technical one, and…

  • Reusable skills and agent definitions, and what they are actually for

    turkerdev/ai-skills and turkerdev/ai-agents, and eighteen months of retyping the same instructions. Context is per-session and knowledge is not.

  • Deleting a module

    A module built in 2022 for a product line discontinued in 2024. Eight thousand lines, a database schema and two scheduled jobs, all still running.