docs: architecture decision records - #347
Open
tuj wants to merge 6 commits into
Open
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Link to ticket
https://leantime.itkdev.dk/?tab=timesheet#/tickets/showTicket/8000
Description
Adds
docs/adr/with nine Architecture Decision Records, and trimsCHANGELOG.mdnow thatthere is somewhere for design reasoning to live.
Why. Several decisions in this codebase read as oversights until you know the constraint
behind them — the hand-built Leantime HTTP client, retry logic deliberately spread across three
files,
deleteAll()pinned to thesynctransport, two soft-delete mechanisms on the sameentities. Nothing in the repo explained any of it, so the reasoning had been accumulating in the
changelog instead: PR-340 spent 26 lines on Messenger's service-reset semantics, PR-327 spent 33
across six bullets. Anyone scanning for "what changed in 3.8.0" had to read a design document to
find out.
The ADRs give that reasoning a home. The changelog goes back to being a list of changes.
The nine records. All document decisions already live in the code — nothing here changes
behaviour:
docs/adr/README.mdcarries the index and the conventions for adding the next one.Changelog cleanup. Scoped to
[Unreleased]and every3.xsection; 2.x and 1.x were alreadyone-line bullets and are untouched. 73 insertions, 175 deletions — 902 lines down to 800.
See [ADR 00N](…)link left inits place.
the 62% coverage gate,
task test:coverage:set-threshold, thefixtures:loadspeedup.messenger_messagesschema_filterexclusion within the same release.
On the approach: the extracted reasoning went into the four existing ADRs that already owned
each topic, rather than into new records. ADR 002 gained why the provider URL is normalized where
it is read (Doctrine hydrates properties directly, so a setter would miss existing rows); 003
gained the row-level skip rule, which is the opposite of its page-level one and easily confused
with it; 004 absorbed the most — where the 429s actually came from,
ThrottlingHttpClientas arejected option, and the whole closed-
EntityManager/ dead-socket / ping-middleware argument;005 gained why the source's own
modifiedAtis not trusted and what the nightly-djobs are for.Two things worth a reviewer's eye:
[Unreleased]— once for the ADRs, once for the syncinclude-filter fix. Merged under one heading, but one of those numbers is probably wrong.because
when@testroutes the only AMQP transport to Doctrine. It had no ADR to go to and isrecoverable from
config/packages/messenger.yaml, but it is the one place where trimming costan explanation instead of relocating it.
Checklist
the changelog gate passes, since
CHANGELOG.mddiffers fromdevelop