Skip to content

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

Open
seanspeaks wants to merge 3 commits into
nextfrom
docs/adr-register-reconciliation
Open

seanspeaks wants to merge 3 commits 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 canceled.

Name Link
🔨 Latest commit 7b2344a
🔍 Latest deploy log https://app.netlify.com/projects/friggframework-org/deploys/6aa578112185aa00087aa727

The check failed on #644 itself, which is correct behaviour and a design gap:
a PR that exists to re-assign contested numbers necessarily claims numbers the
PRs it is reconciling still hold, so the cross-PR rule can never pass for it.

Adds an `adr-reconciliation` label opt-out for that rule only. The merged-number
check and the filename/heading check still apply, so a reconciliation PR cannot
collide with `next` or ship a mismatched heading unnoticed.

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.

⚠️ Code review skipped — your organization's overage spend limit has been reached.

Code review is billed via overage credits. To resume reviews, an organization admin can raise the monthly limit at claude.ai/admin-settings/claude-code.

Once credits are available, comment @claude review on this pull request, or push a new commit, to trigger a review.

@seanspeaks seanspeaks added the adr-reconciliation ADR PR that re-assigns contested numbers; bypasses the cross-PR number check label Sep 12, 2026
Adding `adr-reconciliation` did not re-evaluate the check, because the workflow
only triggered on opened/synchronize/reopened. Adds labeled/unlabeled so the
bypass takes effect without an empty commit.

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

Copy link
Copy Markdown

seanspeaks added a commit that referenced this pull request Sep 17, 2026
Reviewing the register reconciliation surfaced four ADRs these four should
defer to rather than re-argue. No redundancy found — none of 044-047 duplicates
an existing or pending ADR — but several cross-references were missing.

ADR-047: provider-agnosticism was argued as a standing principle. It is in fact
already ratified. ADR-028 Multi-Provider Support is Accepted, and ADR-029
Decouple AWS SDK Dependencies is Accepted and defines the QueueClientInterface
port the orchestrator should ride rather than reinvent. Also records the gap:
029 is accepted but unimplemented — Worker.js and queuer-util.js still require
@aws-sdk/client-sqs directly on next — so the orchestrator's portability is
contingent on 029 landing.

ADR-046: the authoring skill is now authored per ADR-036 Skills rather than
inventing a shape, and its scope/build/review flow is ADR-037 Agent Pipeline.

ADR-044: distinguishes sync-record tombstones from ADR-032 Integration Deletion
Data Cleanup, which governs orphaned Entity and Credential rows on teardown.
Sync records are a third category that ADR-032's scope should name.

044, 046, 047: the versioning question is pointed at ADR-030 Integration
Versioning (#620), the contract ADR-013 defers to, rather than at ADR-013 alone.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AD57K2eA29SxojjgA5prG1
@d-klotz d-klotz mentioned this pull request Sep 23, 2026
2 of 3 tasks
@seanspeaks

Copy link
Copy Markdown
Contributor Author

ADR reconciliation needed after Stack A/B — drafted with Claude Code at Sean's request

Severity: must-reconcile. Stack A's #686 is the first code for ADR-028/029, and both stacks touch 030/032/034/038–039.

Merge order: this PR before #686 merges, so 028/029 describe what ships.

Copy link
Copy Markdown
Contributor Author

Register note from the Stack B review (#692–#700): three branches each carry a file numbered ADR-028. This PR already resolves them, keeping 028 as Multi-Provider Support (Accepted, 2026-03-02) and moving App Init to 035 and the Secrets & Config Provider Plugin to 039. Their source PRs still use the old numbers:

They should take this PR's numbers when they're next touched, or merge after this PR and be renumbered then. ADR-063 (#692) cites 028 as Multi-Provider Support, so it is consistent with this register.


Generated by Claude Code

@cursor

cursor Bot commented Oct 24, 2026

Copy link
Copy Markdown

Frigg 2.0.1 ADR review (COMMENT only — not an approval)

Verdict: changes needed before merge (rebase / register integrity) — number plan vs 049–063 is otherwise good.

049–063 check

PASS — this PR introduces 028–041 only; does not collide with 049–063.

What this PR gets right

Blocking / merge-blocking hygiene

  1. Rebase onto current next and restore register rows for ADRs already on next that this branch’s adrs.json omits (notably 042, 048, and 057 if dropped). Naive merge risks wiping Accepted/Proposed rows that landed after this branch diverged.
  2. After merge, close/strip docs(adr): Configuration &amp; Secrets — 027 model · 028 provider · 029 management · 030 docs/maturation #624 and docs(adr): ADR-032 integration deletion data cleanup #641 ADR files so 027–030 / 032 are not re-introduced under the wrong titles.

Should-fix / nits

No new test failures vs next attributable to this docs PR (CI MongoMemoryServer noise on next excluded per instructions).

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

Labels

adr-reconciliation ADR PR that re-assigns contested numbers; bypasses the cross-PR number check

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant