Evan d'Entremont

Musings on Tech


Canada Is A Legacy System

Last updated: July 2, 2026

Canada is a legacy system.

That is not an insult.

Not entirely.

A legacy system is not bad because it is old. It is bad when nobody remembers which parts are load-bearing, which parts are ceremonial, which parts are obsolete, and which parts only still exist because removing them would require a meeting that could destroy the organization.

That is Canada.

We have a constitutional monarchy, a parliamentary democracy, a federal system, responsible government, unwritten conventions, written constitutional text, courts, provinces, territories, Indigenous governments, a Senate, a House of Commons, a Crown, and several procedures that look fake until they matter.

We also have literal magic wands.

This is not a metaphor.

The House of Commons has a Mace. The Senate has a Mace. The Usher of the Black Rod carries an ebony cane as a symbol of authority and serves as the Crown's messenger in Parliament. The House of Commons cannot meet without the Mace in the chamber, and the Senate says the same about its own Mace.

Canada does not merely have symbolic authority.

It has literal magic wands that must be physically present for the spell to work.

It is called constitutional continuity because adults wrote the documentation.

The system is weird because it works.

The system is frightening because it works for reasons that are not always written down.

The Architecture Is Old

Canada's government was not designed from scratch by a clean-room constitutional engineering team.

It evolved.

That matters.

Legacy systems often start with one coherent design, then accumulate patches. A database column changes meaning. A batch job becomes critical. A temporary integration lasts 30 years. A weird naming convention survives because payroll depends on it.

Canada has the constitutional version of that.

The monarchy is older than the country. Parliament was inherited and adapted. Federalism was negotiated as a compromise. The Senate was meant to provide regional and elite review. The courts became more central over time. The Charter changed the operating environment. Conventions filled the gaps between text and practice.

Nobody would design this exact system from zero.

That does not mean it is easy to replace.

The Crown Is A Dependency

The strangest dependency is the Crown.

In Canada, Parliament is not just the House of Commons and the Senate. Constitutionally, it includes the monarch. A federal bill becomes law after it passes both chambers and receives Royal Assent, which is normally given by the Governor General or a deputy.

That sounds powerful.

In normal operation, it is mostly ceremonial.

The Senate's procedural note on Royal Assent describes it as the process by which a bill adopted by both houses becomes law. The Royal Assent Act allows assent to be signified in Parliament or by written declaration.

In other words, there is a formal interface.

The interface usually does not make decisions.

The magic wands make this visible. The Mace represents parliamentary authority. Black Rod carries messages from the Crown's side of the architecture. The whole thing looks like someone implemented role-based access control with enchanted furniture.

This is where the system becomes absurd enough to be useful.

I wrote the full absurd version of this in My Cat Could Be The Crown, but the short version is that day-to-day legislative processing makes the Crown look less like an active decision-maker than a required service dependency. The system expects the endpoint to return assent.

The dependency is symbolically enormous and operationally boring.

That is classic legacy architecture.

The Dangerous Part Is The Fallback Path

The ordinary path is boring.

The fallback path is not.

Old systems often have emergency procedures nobody tests because testing them would itself be an incident. The documentation says the operator can bypass the queue, restore from tape, force promote a replica, or run a manual correction script. Everyone hopes this never happens.

Constitutional monarchy has the same problem.

Reserve powers exist. Conventions constrain them. The legal text and the practical constitution are not identical. The machine has manual overrides, but using them can become a political crisis.

Canada's history is not perfectly clean here.

At the federal level, early post-Confederation bills were sometimes reserved for imperial consideration. According to the Centre for Constitutional Studies, between 1867 and 1878, 21 federal bills were reserved and six were denied Royal Assent by the United Kingdom; no federal bills have been reserved since. At the provincial level, reservation and disallowance survived longer, with the last reservation occurring in Saskatchewan in 1961.

That sounds recent only if you are reading constitutional history as a timeline.

Operationally, 1961 is ancient.

That is more than 60 years ago. My grandparents would barely remember the last time the Crown exercised that kind of control in Canada. The modern system has run for a lifetime on the assumption that the Crown assents, signs, appears, notifies, smiles politely, and does not treat itself as an independent policy actor.

So the clean modern statement is not "Royal Assent has never been withheld in Canada."

The clean statement is stranger:

The powers existed, were used historically, became politically obsolete, and remain embedded in a constitutional structure that now depends heavily on convention.

That is not no code.

That is dead code with root access.

Australia Is The Warning Comment

Australia is the warning comment in the source file.

In 1975, Governor-General Sir John Kerr dismissed Prime Minister Gough Whitlam during a supply crisis. That was not a routine refusal of Royal Assent to a bill. It was the use of reserve powers to remove an elected prime minister, and it remains one of the clearest Commonwealth examples of the ceremonial layer becoming violently non-ceremonial.

Australia also has a narrower Royal Assent example. The Parliament of Australia's procedure notes describe a bill that was reserved for the King's assent, which was never given.

These are rare cases.

That is why they matter.

When a legacy system's emergency path is used once every few generations, nobody really knows whether the procedure is safe until it is already happening.

The fact that a reserve power has not been used recently does not mean the power is gone.

It means the production environment has not hit that branch.

Conventions Are Undocumented Business Logic

The written constitution is not the whole system.

Conventions are the undocumented business logic.

The Governor General acts on the advice of the prime minister, except when they do not. The prime minister must maintain the confidence of the House of Commons, but the exact moments of confidence, resignation, dissolution, and refusal are governed by practice as much as text. The Senate has legal power it often does not fully use because elected legitimacy lives elsewhere.

That is not necessarily bad.

Every mature system has implicit rules.

The danger is forgetting they are rules.

A convention can be stronger than code until enough people decide it is optional. Then everyone discovers the code path still exists.

This is why constitutional hardball is so dangerous. It treats conventions as decorative comments rather than working logic.

In a healthy system, convention is restraint.

In a failing system, convention is a missing assertion.

Voting Is The Debug Interface

The ordinary citizen's main interface to debug this system is voting.

That is a very narrow interface.

Every few years, most people get to choose between the red team and the blue team, with a few regional, ideological, or protest options depending on where they live. Then that choice is treated as input into a vast constitutional, fiscal, administrative, and policy machine.

This would be easier to defend if the parties represented radically different operating models.

Often, they do not.

Canadian federal politics can feel less divided than American Democrats were between Obama 2008 and Obama 2012. The branding changes. The emphasis changes. The patronage networks change. The actual operating envelope is narrower than campaign language suggests.

Voters are asked to make hard choices, but the choices are often weirdly small.

Legal weed?

Sure. Eventually.

Electoral reform?

Vote for it, watch it disappear, and observe no meaningful consequence for the party that promised it.

Housing?

Here the debug interface becomes insulting.

Canada has built a system where real estate wealth is politically protected, where younger people are told to accept permanently degraded affordability, and where immigration targets, labour supply, university economics, construction capacity, interest rates, municipal zoning, provincial land-use rules, and federal growth policy all collide in ways no ballot can cleanly address.

That does not mean immigration is the only cause of housing costs. It is not.

But it is dishonest to pretend population targets, housing supply, wages, infrastructure, and asset prices are separate systems. They are coupled. CMHC has estimated that Canada needs millions of additional homes to restore affordability, and later estimated that housing starts would need to nearly double until 2035 to meet projected demand. When governments pursue high growth without building enough housing, transit, healthcare capacity, schools, and infrastructure, the pressure does not land evenly. It lands on renters, new buyers, new arrivals, young families, and anyone without property wealth.

The result looks a lot like intergenerational policy capture.

People who already own assets are protected. People who do not are told the system is working as designed, or that the moral problem is their lack of optimism.

That is not a healthy feedback loop.

It is closer to a Ponzi-shaped political economy: younger and newer participants are expected to fund the paper stability of people who got in earlier, while being told that questioning the arrangement is irresponsible, xenophobic, economically illiterate, or insufficiently Canadian.

A good debug interface would let citizens isolate the fault.

Is the problem zoning? Immigration targets? Investor demand? Interest rates? Federal tax policy? Provincial cowardice? Municipal veto points? Construction productivity? Retirement policy? Wage suppression? All of the above?

The actual interface mostly says:

Pick a team.

Then, after enough people pick the other team, the system reports that democracy has spoken and continues routing around the same constraints.

Voting matters.

It is also not enough observability for a system this complicated.

Representation Is Not Evenly Sampled

Even the vote is not a uniform unit.

Canada does not actually run on pure one-person-one-vote representation. It runs on representation filtered through geography, provinces, constitutional constraints, minority-language rights, community history, boundary commissions, and political compromise.

Sometimes that is defensible.

Sometimes it is wild.

The current federal riding of Kingston and the Islands has 134,415 people. Labrador has 26,655. Prince Edward Island's four federal ridings range from Egmont at 37,751 people to Cardigan at 39,236. That is not an accident in a spreadsheet. It is the result of a House of Commons seat allocation formula balancing population, provincehood, geography, history, and constitutional promises.

The same problem shows up locally too. In Politics Is Not Strongly Typed, I use Argyle's 2003 provincial election as a smaller example: party labels, family names, church networks, local institutions, and later federal power all refuse to fit cleanly into one national red-team/blue-team model.

It is a reminder that representation is not a simple array evenly partitioned by population.

The system has weights.

Some weights are historical. Some are geographic. Some are provincial. Some protect language and minority communities. Some are constitutional compromises. Some are accidents that survived because changing them would create a different unfairness.

That makes the voting interface even harder to debug. A vote is not just a vote. It is a vote inside a riding, inside a province, inside a party system, inside a legislature, inside a federation that has already decided some communities need more representation per person than others.

Again, maybe that is right.

But the system should say so plainly.

The Runtime Survives Elections

Elections change the visible interface.

They do not replace the runtime.

Ministers come and go. Cabinets change. Governments rebrand priorities. Mandate letters get rewritten. The red team swaps places with the blue team and everyone pretends the machine has been reinstalled.

Underneath that, deputy ministers, assistant deputy ministers, senior public servants, departmental counsel, central agencies, procurement offices, regulators, boards, and long-lived program staff keep operating the system.

That is not automatically sinister.

Institutional memory matters. A government cannot rebuild the civil service after every election. Somebody has to know where the contracts are, which statutes matter, which programs are already committed, which courts have spoken, which federal-provincial agreements are active, and which promises are impossible by Tuesday.

I saw the sharper version of this in Even Gods Can Bleed, where Nova Scotia's FOIPOP breach exposed how little practical authority local elected officials had over a file controlled by deputy ministers, privacy process, technology leadership, corporate security, and access-to-information exemptions.

But it does mean power is not located only where the ballot points.

A minister may own the political decision.

A deputy minister often owns the operational reality.

They know what can be delayed, narrowed, reinterpreted, slow-walked, escalated, buried, or transformed into a process review. They know which decision needs Treasury Board approval, which file can die in consultation, which implementation detail changes the policy, and which risk note will make a minister blink.

In software terms, elected politicians are often the product owners.

The permanent bureaucracy owns production.

That is where many bugs live.

It is also where many fixes die.

This is another reason voting is a weak debug interface. A voter can replace the minister responsible for a department, but not necessarily the senior officials, inherited processes, vendor contracts, policy interpretations, risk culture, or internal incentives that determine how the department behaves.

The public sees a campaign promise.

The system executes a change request.

The difference between those two is where power hides.

The Senate Is A Weird Queue

The Senate is another legacy component.

It is unelected, appointed, regionally structured, and difficult to defend cleanly in democratic theory.

It is also not useless.

The Senate is a review queue with questionable ownership and surprising persistence. It slows things down, catches some errors, creates committee work, and occasionally reminds elected governments that passing a bill through the House is not the same thing as shipping a stable release.

I have written about the more charitable version of this in Should Canada Elect Senators?, where I treated the House of Commons, Senate, and Crown as parts of a political control system. In that analogy, the Senate behaves less like a democratic input device and more like damping: it slows sudden changes, absorbs some volatility, and makes the system less responsive but potentially more stable.

It also has its own Mace, because of course the review queue has its own magic wand.

Would anyone design it this way now?

Probably not.

Would removing it be simple?

Also no.

The Senate is entangled with regional representation, constitutional amendment formulas, federal legitimacy, language, history, and the political fact that every proposed fix creates new fights.

Legacy components survive because replacement cost is not proportional to elegance.

Federalism Is Distributed Ownership

Canada is also a distributed system.

The federal government owns some domains. Provinces own others. Municipalities exist inside provincial authority but are where many citizens experience government most directly. Courts arbitrate boundaries. Fiscal capacity and political blame move through different channels.

The division of powers is almost literally "things that mattered in 1867."

That is why education and healthcare are provincial. In the original architecture, those were local institutions: schools, hospitals, charities, churches, property, civil rights, municipalities, and the ordinary machinery of local life. Section 92 of the Constitution Act, 1867 assigns provinces areas such as hospitals, property and civil rights, and local or private matters; section 93 deals with education. The federal government got the national things: trade, defence, currency, criminal law, banking, postal service, navigation, and the parts of the state that looked obviously country-shaped in the 19th century.

Then the world changed.

Healthcare became a vast modern funding, labour, infrastructure, technology, pharmaceutical, data, and rights problem. Education became workforce policy, immigration policy, language policy, inequality policy, research policy, and economic development. Housing became municipal zoning, provincial law, federal finance, immigration, infrastructure, monetary policy, and private capital colliding in one place.

The original domain model did not vanish.

It accumulated adapters.

Federal transfers. Conditional funding. Intergovernmental agreements. Equalization. Shared programs. Court cases. Administrative workarounds. Political blame-shifting. Every generation patches the old ownership model without fully replacing it.

This creates familiar engineering problems:

  1. unclear ownership
  2. duplicated services
  3. inconsistent APIs
  4. slow coordination
  5. regional edge cases
  6. expensive migrations
  7. blame routed to the wrong team

Healthcare is provincial until the federal government funds it.

Housing is municipal, provincial, federal, private, financial, and somehow nobody's fault.

Climate adaptation is everyone's responsibility and therefore frequently a meeting.

Federalism is not a mistake. It reflects real geography, scale, culture, and political compromise.

But it also behaves exactly like technical debt. The original abstraction was useful, then reality changed, then nobody could afford a clean rewrite, so the system grew patches around the old boundaries.

It is necessary, frustrating, and always harder to change than the diagram suggests.

Why Not Rewrite It?

The obvious question is why we do not rewrite the system.

Remove the monarchy. Elect or abolish the Senate. Clarify powers. Modernize the constitution. Replace inherited ceremony with explicit democratic structure.

Or take the more dramatic refactor: separation.

Quebec sovereignty and Alberta separatism are, in software terms, proposals to extract a service from the monolith.

The argument is always partly architectural. This component has different requirements. It does not want the same release schedule. It objects to central governance. It believes the shared platform is slowing it down, misallocating resources, or imposing policy decisions that do not fit its local context.

That can sound clean.

Then you discover the shared state.

Currency. Trade. Borders. Citizenship. Indigenous treaties and rights. Pensions. Debt. Defence. Passports. Fisheries. Energy infrastructure. Language rights. Internal migration. Regulatory equivalence. Federal assets. Federal employees. Families, businesses, supply chains, and institutions that were never designed around a hard boundary.

Suddenly the refactor is not just "move this code into its own repo."

It is data migration, contract negotiation, identity management, traffic routing, backward compatibility, and incident response while the system is still serving users.

Maybe we should.

But rewrites are dangerous.

Software engineers learn this painfully. The old system is ugly, but it encodes years of edge cases. The rewrite looks clean until it has to handle real users, old data, integrations, time pressure, compliance, reporting, and all the weird workflows nobody mentioned in discovery.

Constitutional rewrites are worse.

Every province has interests. Every region has fears. Every institution has status. Every amendment creates tradeoffs. Every tradeoff creates losers. The process can reopen questions the current system keeps mostly contained.

That does not mean reform is impossible.

It means reform is migration, not deletion.

Law Is Code With A Terrible Parser

The "legacy system" analogy is not only about institutions.

It is also about law itself.

Law is source code.

Not in the cute sense where policy people say "code is law" and software people nod thoughtfully before returning to YAML.

The written law is the source. It defines rules, permissions, prohibitions, exceptions, procedures, actors, scopes, inputs, outputs, and consequences. It creates objects. It names authorities. It defines valid operations. It routes disputes to interpreters. It decides what happens when someone violates a constraint.

But citizens do not interact with source code.

They interact with the compiled artifact.

The law gets compiled through regulations, forms, department policies, court interpretations, ministerial discretion, funding agreements, enforcement priorities, software systems, front-line staff, and institutional habit. By the time it reaches a person, the operative rule may be several transformations away from the statute.

That is not a side detail.

That is the runtime.

The problem is that legal source code is written in natural language, amended over generations, interpreted through courts, constrained by constitutions, modified by regulations, and executed by institutions that may not share a single compiler.

There should, at least in theory, be an abstract syntax tree of the law.

Every statute, regulation, constitutional provision, municipal bylaw, treaty obligation, delegated authority, and court interpretation should fit into a structured model:

  1. who has authority
  2. over what domain
  3. under which constraints
  4. with which exceptions
  5. subject to which review
  6. conflicting with which other rules
  7. overridden by which higher rule
  8. triggered by which facts
  9. producing which legal consequence

That model should compile into the actual operational state of the law.

Not morally. Not politically. Technically.

There should be no unresolved symbol called "jurisdiction." No duplicate owner for "housing" unless the handoff is explicit. No circular dependency where one government funds what another must deliver while a third controls the zoning and everyone gets to blame everyone else. No unreachable branch where a right exists but no process can enforce it. No silent exception where a minister can route around the stated policy because the real authority lives in a regulation, memo, convention, or funding agreement.

Of course, law will never compile as cleanly as software.

Natural language is fuzzy on purpose. Courts need interpretive room. Legislatures need political compromise. Facts are messy. Human systems need discretion.

But the gap between source law and compiled law is an exploitable surface.

Just like code.

If the statute says one thing, the regulation narrows it, the form implements a third version, the department follows an internal policy, and the court interprets the whole stack years later, the person subject to the system is not living under the source law.

They are living under the compiled law.

That difference can be exploited.

Governments exploit it when they announce broad rights and bury the constraints in process.

Companies exploit it when regulatory language leaves ambiguity around classification, liability, disclosure, or enforcement.

Wealthy people exploit it when compliance becomes a search problem and lawyers can find the branch where the ordinary rule does not apply.

Bad institutions exploit it when responsibility is split across jurisdictions so cleanly that no one is responsible in the compiled output.

Citizens experience compiler errors as bureaucracy.

Engineers would recognize it as undefined behavior.

The Exploit Surface

This is why constitutional and federal design matters in ordinary life.

If laws were actually represented as a dependency graph, many Canadian failures would look less mysterious.

Housing would show federal immigration targets, federal tax policy, provincial landlord-tenant law, provincial land-use frameworks, municipal zoning, infrastructure funding, interest rates, private lending, construction capacity, and local veto points all touching the same runtime behavior.

Healthcare would show provincial delivery, federal transfers, professional colleges, immigration, medical schools, credential recognition, procurement, unions, privacy law, and budget constraints interacting across layers.

Climate adaptation would show federal goals, provincial infrastructure, municipal planning, private property, insurance markets, emergency management, and Indigenous rights meeting in the same floodplain.

The bug is not simply that governments disagree.

The bug is that the legal AST is not inspectable by ordinary people, and sometimes not even by the institutions executing it.

That creates an exploit surface:

  1. ambiguity
  2. delay
  3. blame routing
  4. jurisdiction shopping
  5. procedural exhaustion
  6. dead-letter rights
  7. unfunded mandates
  8. policies that exist in press releases but not in executable process

In software, we would not accept a system where nobody can tell which service owns a failing request.

In government, we call that federalism and ask citizens to be patient.

Low-Hanging Patches

The useful question is what can be improved without pretending we are going to rewrite Canada in one release.

Software engineering has an answer for old systems:

Do not start with the rewrite.

Start with observability, ownership, documentation, tests, safer interfaces, and smaller patches that reduce blast radius.

Canadian constitutional law has the same constraint. The Constitution Act, 1982 makes major changes expensive. The general amending formula requires Parliament plus at least seven provinces representing at least 50% of the population. Senate powers and selection methods live in that high-friction path. Changes to the office of the monarch, Governor General, or lieutenant governors require unanimity. The federal government’s own intergovernmental affairs summary describes the same 7/50 structure.

That is not a normal pull request.

That is an enterprise migration with every regional office holding a veto-shaped clipboard.

So start lower.

Document The Runbooks

Conventions are undocumented business logic.

Document them.

Not necessarily by freezing every convention into constitutional text, but by publishing clearer runbooks for crisis paths: prorogation, dissolution, confidence, caretaker government, supply failure, refusal of advice, and the limited circumstances where reserve powers might be considered.

This would not eliminate discretion.

It would make the exception paths more inspectable before everyone is already screaming.

In software terms, do not wait for the outage to discover that the disaster-recovery plan is vibes and an elderly binder.

Add Observability To Federalism

For cross-cutting problems like housing, healthcare capacity, immigration, climate adaptation, and infrastructure, publish ownership maps.

Who owns the policy lever?

Who owns the funding?

Who owns delivery?

Who owns failure?

Who is blocked by whom?

Right now, governments can route blame through jurisdictional complexity until the citizen gives up. A basic responsibility matrix would not solve housing, but it would make the excuses easier to trace.

If a system has five owners, it has no owner unless the handoffs are explicit.

The deeper version of this is a public legal dependency graph. Show which laws, regulations, funding agreements, departments, and governments control the same policy area. Show conflicts. Show missing owners. Show where a citizen's request crosses boundaries. Show where the legal text and the operational process diverge.

That would not make politics easy.

It would make the exploit surface visible.

Treat Intergovernmental Agreements Like APIs

Federal-provincial agreements should behave more like public contracts with versioning, deadlines, metrics, and changelogs.

If Ottawa transfers money for housing or healthcare, the public should be able to see:

  1. what was promised
  2. who received the money
  3. what delivery metric changed
  4. what deadline slipped
  5. what dependency failed
  6. what happens when the agreement is not met

This is not radical constitutional reform.

It is API documentation for federalism.

Make Ballot Promises Testable

Electoral reform should not be allowed to disappear into fog.

If a party campaigns on changing the voting system, the promise should include a clear implementation path: citizens' assembly, referendum or no referendum, draft legislation timeline, committee process, failure conditions, and what happens if the government decides not to proceed.

The same applies to housing targets, immigration targets, healthcare staffing, climate adaptation, and infrastructure.

A promise should have acceptance criteria.

If it does not, it is not a plan.

It is marketing copy.

Create Better Public State

Citizens should not have to infer system state from press conferences.

Publish useful dashboards for major public commitments, but do not let them become decorative dashboards.

The dashboard should show state transitions:

  1. proposed
  2. funded
  3. negotiated
  4. blocked
  5. under construction
  6. delivered
  7. cancelled
  8. missed target

It should also show the owner and the blocker.

Public policy should have issue tracking.

Not because Jira is democracy.

Because "we are working hard for Canadians" is not a status code.

Deprecate Dead Code Carefully

Some constitutional powers are dead code with root access.

Reservation. Disallowance. Reserve powers. Ceremonial dependencies that no one expects to execute independently.

If they are truly obsolete, say so more clearly. If they are emergency powers, document the emergency. If they are symbolic, keep them symbolic. If they are too dangerous to use and too hard to remove, wrap them in stronger conventions, reporting expectations, and public explanation requirements.

The goal is not to pretend dead code is harmless.

The goal is to stop pretending nobody can see it.

Improve The Senate Without Pretending It Is Simple

Electing, abolishing, or radically changing the Senate is constitutionally expensive.

Fine.

Patch the operating layer.

Make appointments more transparent. Publish clearer selection criteria. Strengthen committee independence. Track legislative review outcomes. Require plain-language explanations when the Senate amends, delays, or waves through major bills. Make its damping function visible enough that citizens can judge whether it is useful or merely decorative.

The Senate's democratic problem will not vanish.

But an unelected review queue should at least emit logs.

Run More Experiments Below The Constitutional Layer

Not every democratic improvement requires amending the Constitution.

Use citizens' assemblies. Use participatory budgeting. Use independent boundary and electoral-process commissions. Use parliamentary committees with real evidence requirements. Use sunset clauses and post-implementation reviews for major reforms. Use pilots before national rollouts.

Treat policy like production software:

  1. define the problem
  2. state the hypothesis
  3. limit the blast radius
  4. measure the outcome
  5. publish the failure
  6. iterate without pretending the first release was sacred

Canada does not need one giant constitutional rewrite before it can improve.

It needs fewer hidden states, clearer ownership, better runbooks, more honest promises, and public systems that admit when they are blocked.

The Better Question

The better question is not whether Canada's system is old and weird.

It is.

The better question is whether the weird parts still perform useful functions, whether the ceremonial dependencies create unacceptable risk, and whether the migration path is better than the status quo.

The Crown may be mostly ceremonial, but the reserve powers are not imaginary.

The Senate may be democratically awkward, but it also provides review.

Federalism may be maddening, but centralized authority would create its own failures.

Conventions may be fragile, but writing everything down can make a system rigid in different ways.

This is what makes constitutional design hard.

You are not choosing between clean and messy.

You are choosing which mess you want to operate.

Closing Thought

Canada is a legacy system.

It has old dependencies, strange interfaces, ceremonial services, dead code, undocumented business logic, distributed ownership, and terrifying migration risk.

Some parts should probably be refactored.

Some parts are load-bearing in ways that are not obvious until you touch them.

Some parts are ordinary service dependencies until the first constitutional crisis.

And some parts require a literal magic wand.

That should be funny because it is absurd.

It should also be alarming because it is true.

The House of Commons cannot meet without the Mace. The Senate cannot meet without its Mace. The Crown is mostly ceremonial until the reserve powers are not. The conventions are unwritten until someone violates them. The law is source code until the compiled process does something else.

This is the final critique.

Canada does not only have symbols.

It has symbols wired into production.

The magic wand is not embarrassing because it is old, shiny, and ridiculous.

The magic wand is embarrassing because the system insists it is only symbolic while also depending on it to make the spell legal.

That is the whole country in miniature:

Everyone agrees the wand is decorative.

Nobody can proceed until it is in the room.