Skip to content

docs(adr): reconcile the register — 13 unmerged ADRs into one contiguous sequence - #644

Open
seanspeaks wants to merge 1 commit into
nextfrom
docs/adr-register-reconciliation
Open

docs(adr): reconcile the register — 13 unmerged ADRs into one contiguous sequence#644
seanspeaks wants to merge 1 commit into
nextfrom
docs/adr-register-reconciliation

Conversation

@seanspeaks

Copy link
Copy Markdown
Contributor

The problem

The register has eight number collisions across six open PRs, four of them against numbers already merged to next. Three different decisions are currently titled ADR-027:

# on next also claimed by
010 Reporting as an Admin Operation ✅ #545 Decouple AWS from core
027 SSM Parameter Offload ✅ #624 Configuration & Secrets Model · #620 Integration Versioning
028 #624 secrets-config-provider-plugin · #619 app-init
029 #624 variable-secret-management · #619 skills
030 #624 config-secrets-docs · #619 agent-pipeline

ADR-014 created one register but no way to claim a number. Every author picks max + 1 in isolation, so each PR is internally consistent and only collides with branches its author cannot see. Nothing catches it.

What this does

Moves every unmerged ADR into one sequence, so the feature branches can drop their doc files and carry only code.

Assignment rule: uncontested claims keep their numbers; contested ones re-assign by PR age (#545 < #619 < #620 < #624), with clusters kept contiguous.

new title from was
028 Multi-Provider Support #545 un-numbered (docs/architecture/ADR-MULTI-PROVIDER-SUPPORT.md)
029 Decouple AWS SDK Dependencies from core #545 010
030 Integration Versioning #620 027
032 / 033 / 034 (unchanged) #641 / #640 / #643
035–037 App Init · Skills · Agent Pipeline #619 028–030
038–041 Configuration & Secrets cluster (4) #624 027–030

Result: 001–041, no gaps, no duplicates. 028–030 are filled rather than left as holes — a number that has only ever existed in an unmerged branch is not yet claimed.

#545's two ADRs also move out of docs/architecture/, which ADR-014 retired for ADRs; they were the last two left there.

Cross-references

Rewritten per source PR, because the same token means different things in different branches:

Both intra-cluster link sets (#619's three, #624's four) were remapped, including two compound references (ADR-027/028) that a naïve word-boundary pass would have half-rewritten.

Two things ADR-014 mandated but didn't finish

ADR-004 and ADR-005 still used the ## Status heading form, and ADR-005 still had the old # Architecture Decision Record: title. Both now carry the standard block. Deciders were unrecorded for those two and are marked TBD rather than invented — worth someone filling in.

Preventing recurrence

ADR-014 gains an amendment: numbers are claimed at PR-open time and enforced by CI, not assigned at merge. It records why deferring to merge is worse (the file is named wrong for the whole review, cross-links can't be written, and someone repeats this reconciliation by hand at every merge), and the rule that merged numbers are permanent while unmerged ones are not yet claimed.

.github/workflows/adr-number-check.yml enforces it: on any PR touching docs/architecture-decisions/** it checks the claimed numbers against next and against every other open PR, verifies filename matches heading, and reports the next free number on failure. It re-runs when next moves so the loser of a simultaneous claim goes red before merge.

This is the one non-docs file here — drop that commit if you'd rather keep this docs-only, though then nothing stops the next collision.

Follow-up on the source PRs

Each should drop its ADR files and carry only code; I'm commenting on them individually. Nothing here touches their code, and no branch has been force-pushed.

README.md and website/roadmap/data/adrs.json are regenerated from the files rather than hand-edited.

🤖 Generated with Claude Code

…sequence

The register had eight number collisions across six open PRs, four against numbers
already merged to next. Three different decisions were all titled ADR-027
(next's SSM Parameter Offload, #624's Configuration & Secrets Model, #620's
Integration Versioning) and a fourth reused ADR-010 (#545's Decouple AWS, against
next's Reporting as an Admin Operation).

ADR-014 created one register but no way to CLAIM a number, so every author picks
max+1 in isolation and collides with branches they cannot see. Each PR is internally
consistent; the conflict only exists between them.

This PR moves every unmerged ADR into one sequence so the feature branches can drop
their doc files and carry only code.

Assignment: uncontested claims keep their numbers (032/033/034 from #641/#640/#643);
contested ones re-assign by PR age (#545 < #619 < #620 < #624) with clusters kept
contiguous. 028-030 are filled rather than left as holes — a number that has only
ever existed in an unmerged branch is not yet claimed. Result is 001-041 with no
gaps and no duplicates.

  028, 029  Multi-Provider Support, Decouple AWS SDK from core   <- #545 (was unnumbered, 010)
  030       Integration Versioning                               <- #620 (was 027)
  032-034   unchanged                                            <- #641, #640, #643
  035-037   App Init, Skills, Agent Pipeline                     <- #619 (was 028-030)
  038-041   Configuration & Secrets cluster                      <- #624 (was 027-030)

Cross-references were rewritten per source PR, because the same token means different
things in different branches: ADR-010 in #624/#641 is next's merged Reporting ADR and
is left alone, while ADR-010 in #545 is its own Decouple-AWS ADR and becomes ADR-029.

Also completes two things ADR-014 mandated but did not finish: ADR-004 and ADR-005
still used the '## Status' heading form, and ADR-005 still had the old
'Architecture Decision Record:' title. Both now carry the standard block. Deciders
were unrecorded for those two and are marked TBD rather than invented.

ADR-014 gains an amendment specifying that numbers are claimed at PR-open time and
enforced by CI, with the reasoning for not deferring assignment to merge time, plus
the rule that merged numbers are permanent while unmerged ones are not yet claimed.
.github/workflows/adr-number-check.yml enforces it.

README.md and website/roadmap/data/adrs.json are regenerated from the files.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

@claude claude Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Claude Code Review

Claude Code Review is paused for this repository. To reconnect it, an admin of this repository's GitHub organization (or the account owner, for personal repositories) who can also manage your Claude organization's Code Review settings needs to re-link GitHub in Code Review settings. This is a one-time step.

Tip: disable this comment in your organization's Code Review settings.

@netlify

netlify Bot commented Aug 31, 2026

Copy link
Copy Markdown

Deploy Preview for friggframework-org ready!

Name Link
🔨 Latest commit d8827a5
🔍 Latest deploy log https://app.netlify.com/projects/friggframework-org/deploys/6a9503da16850d000833ad41
😎 Deploy Preview https://deploy-preview-644--friggframework-org.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
🤖 Make changes Run an agent on this branch

To edit notification comments on pull requests, go to your Netlify project configuration.

@sonarqubecloud

Copy link
Copy Markdown

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant