Repository navigation
Closed
Labels
area:apiAPI/endpoint layerAPI/endpoint layerepic-514Modular monolith architecture (#514)Modular monolith architecture (#514)priority:tier4Deferred or speculativeDeferred or speculativesize:MA day or two; migration or a multi-state UIA day or two; migration or a multi-state UIsliceThin vertical work itemThin vertical work itemtrack:B#514 Track B — enforcement breadth; no production code; gated on Track A evidence#514 Track B — enforcement breadth; no production code; gated on Track A evidence
Milestone
Description
Slice 6 of #514 (modular monolith). Track B — enforcement only, no production code. Needs #842, #845, #846.
Re-derive the design's §3.4 coupling matrix from a walk, and delete the hand-written one.
Why
The 2026-08 matrix was assembled by hand and was wrong in five cells within five weeks — three
genuinely new edges it marked —, and two artifacts it would have counted as edges:
| Cell | Verdict | Evidence |
|---|---|---|
| Farm → Commerce | real, R |
UpdateFarmSettingsHandler.cs:12, :149 (#727) |
| Access → Commerce | real, R |
SetStepperUnitHandler.cs:13 |
| Commerce → Access | real, R |
ConfirmSaleHandler.cs:23, :171 (#727) |
| Customers → Sales | artifact | Customer.cs lives in src/Cluckwork.Domain/Sales/ — both ends Commerce |
| Accounts → Media | artifact | Domain.Media has no entity and no table |
A matrix maintained by hand is a matrix that is wrong five weeks later. This slice makes it output.
Scope
- Classify every edge the [A] #514 slice 1: module ledger and cross-owner edge ratchet #842 ratchet knows about by kind —
Wwrite,Rread/validation,
Eafter-commit event,Qread-model query,Pplatform service. - Generate the matrix from the ledger plus the table-ownership walk ([B] #514 slice 3: table-owner completeness, walked from the EF model #845).
- Assert the generated census and the ratchet's edge set are identical, so the two cannot drift.
- Replace the design's §3.4 table with the generated one and say where it comes from.
Done when
| Mutation | Expected |
|---|---|
add an edge to the ledger without a kind |
red |
| hand-edit the generated matrix | red — regeneration disagrees |
| census and ratchet edge sets differ | red |
Explicitly not in this slice
Does not decide whether any edge is correct — only that it is recorded and classified. Removing an
edge is Track C.
Metadata
Metadata
Assignees
Labels
area:apiAPI/endpoint layerAPI/endpoint layerepic-514Modular monolith architecture (#514)Modular monolith architecture (#514)priority:tier4Deferred or speculativeDeferred or speculativesize:MA day or two; migration or a multi-state UIA day or two; migration or a multi-state UIsliceThin vertical work itemThin vertical work itemtrack:B#514 Track B — enforcement breadth; no production code; gated on Track A evidence#514 Track B — enforcement breadth; no production code; gated on Track A evidence
Activity
[-]#514 slice 6: regenerate the coupling matrix from the ledger, and delete the hand-written one[/-][+][B] #514 slice 6: regenerate the coupling matrix from the ledger, and delete the hand-written one[/+]test(arch): build the matrix diff header outside the StringBuilder co…
test(arch): compare every hand-written cell, fix line endings, refuse…
test(arch): generate the coupling matrix from the ledger and the thre…
docs(decisions): generated coupling matrix decision record and AGENTS…
test(arch): build the matrix diff header outside the StringBuilder co…
test(arch): compare every hand-written cell, fix line endings, refuse…
test(arch): generate the coupling matrix from the ledger and the thre…
docs(decisions): generated coupling matrix decision record and AGENTS…
test(arch): build the matrix diff header outside the StringBuilder co…
test(arch): compare every hand-written cell, fix line endings, refuse…
test(arch): generate the coupling matrix from the ledger and the thre…
docs(decisions): generated coupling matrix decision record and AGENTS…
test(arch): build the matrix diff header outside the StringBuilder co…
test(arch): compare every hand-written cell, fix line endings, refuse…
test(arch): generate the coupling matrix from the ledger and the thre…
docs(decisions): generated coupling matrix decision record and AGENTS…
test(arch): build the matrix diff header outside the StringBuilder co…
test(arch): compare every hand-written cell, fix line endings, refuse…