01Short records over a document portal
Use a consistent Markdown structure and links to existing diagrams and incidents.
Trade-off: Less structured reporting, but a lower writing burden. An unused workflow creates no institutional memory.
Technical leadership / Independent study
Keep the reasoning, not just the result.
Versioned decisions with explicit ownership, review boundaries and a record of the trade-offs a team accepted.
Scope
Architecture proposal, OpenAPI sketch and tested browser model. No production backend or employer data.
Proposed backend: REST APIs · PostgreSQL · Markdown · Optimistic concurrency
Executable model: TypeScript
Architecture decisions often disappear into chat threads. New engineers see the implementation without its constraints, accepted risks or the conditions that should trigger a revisit. A stale approval can also endorse a proposal that has changed since review.
Keep a small decision record: context, alternatives, decision, consequences, owner and review trigger. Version it. Require review against the current revision, preserve superseded decisions, and link operational learnings back to the assumptions they challenge.
Architecture
01
Markdown proposal, alternatives, owner and affected systems.
02
Validate identity, revision and allowed state transition.
03
Accepted and superseded records remain addressable.
PostgreSQL: versioned record + review evidence + risk links. Compare expected revision in the update predicate, then append audit history within the same transaction.
After commit, notifications and a search index can update independently. Search results point to the canonical record; a stale index never authorizes a workflow transition.
Logical boundaries, not a deployed topology. The interactive model below covers state transitions only.
Exercise the failure path
Submit a draft, attempt a stale approval, and then accept the current revision as the reviewer.
ADR-006: use an outbox for domain events. Draft owned by the author.
Model limits: A deterministic workflow model with simulated roles. No identity provider, persistence, collaborative editing or server-side authorization is implemented here.
API design
Illustrative request and response. This contract specifies one command, not the entire proposed API.
POST /v1/decisions/{id}/transitions
{
"action": "accept",
"expectedRevision": 2
}Response
200 OK
{ "id": "adr_demo", "status": "accepted", "revision": 3 }Technical decisions
Use a consistent Markdown structure and links to existing diagrams and incidents.
Trade-off: Less structured reporting, but a lower writing burden. An unused workflow creates no institutional memory.
Reject stale updates and require a reviewer distinct from the owner for acceptance.
Trade-off: Some updates need a second review. That friction is intentional at the acceptance boundary.
Store evidence, risks and revisit triggers without calculating a synthetic architecture quality score.
Trade-off: The tool cannot decide whether a trade-off is good. The team still needs a useful review habit.
Operating the system
Surface accepted decisions without an active owner or with overdue review triggers. Escalate through the team's normal ownership process.
Apply authorization at each API boundary. Render Markdown without raw HTML by default; do not put secrets or incident customer data into decision records.
Log who changed which revision and why. Preserve audit history on supersession and export records in a format the team can keep without this tool.
Outcome & limits
The model rejects stale revisions, blocks owner self-approval and preserves an ordered history through acceptance and supersession. It demonstrates a workflow boundary, not a claim of organizational adoption.
View study sourceNext steps
Start a conversation
I'm interested in senior backend and Tech Lead roles across fintech, payments, SaaS and platform engineering in Canada.