Skip to content

docs(decisions): add a decision record log alongside design proposals - #56

Open
myasnikovdaniil wants to merge 2 commits into
mainfrom
docs/decisions-log
Open

docs(decisions): add a decision record log alongside design proposals#56
myasnikovdaniil wants to merge 2 commits into
mainfrom
docs/decisions-log

Conversation

@myasnikovdaniil

@myasnikovdaniil myasnikovdaniil commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

This PR adds decisions/ for architectural decisions we already made, next to design proposals that propose them.

Design proposal is intent, written before the work. When implementation contradicts design we revise proposal in place, so it reads as if it always said current thing, and reasoning that changed our minds stays only in PR diff.

It already happens here. #44 and #42 revised DHA to HPA-on-scale-subresource after spike, #53 reopened actuation because cnpg scale subresource has no selector, same shape in #40, #41, #36. Every one is implementation finding rewriting accepted proposal, with why left in PR body. compute-plane proposal even carries a Revision (this PR): paragraph in its metadata because there was no other place to put that rationale.

What is inside:

Root README gets a row in "Where do I file?", Proposal Drift now says to write a record instead of only editing proposal, and proposal template gets Decisions section.

Two rules carry this. Record is never edited after merge, it gets superseded by a new one. Review checks accuracy and not agreement, so one maintainer is enough, decision was already made and if review turns into re-litigating it then it was not settled and belongs in proposal instead.

Please check Deciders line on 0001. I put Andrei Kvapil (@kvaps) and myself. Timofei Larkin review on #17 was half of the objection that drove the change but i did not want to guess handle, so he is named in text only.

Design proposals are intent, written before the work. When implementation
contradicts the design the proposal gets revised in place, so it ends up
reading as though it always said the current thing -- and the reasoning
that changed our minds survives only in a pull-request diff.

Add decisions/ for that reasoning: one page per settled decision, never
edited after merge, superseded rather than rewritten. Reviewed for
accuracy by one maintainer rather than by consensus, because the decision
has already been made.

Wire it into the "Where do I file?" table and rewrite Proposal Drift to
say what to do when the implementation diverges.

Assisted-By: Claude <noreply@anthropic.com>
Signed-off-by: Myasnikov Daniil <myasnikovdaniil2001@gmail.com>
The ComputePlane delivery shape was decided three times: a tenant module
with an inline cluster HelmRelease (#17), preset fields on kind: Kubernetes
(#27, closed), and finally an operator-owned extra module wrapping the
unchanged apps/kubernetes (#33). Only the last one is visible in the
proposal today; why the preset-field model lost lives in the #33 body.

Record it as the first decision, and add the Decisions section to the
proposal template so later records get linked from the proposal they
amend.

Assisted-By: Claude <noreply@anthropic.com>
Signed-off-by: Myasnikov Daniil <myasnikovdaniil2001@gmail.com>
@coderabbitai

coderabbitai Bot commented Aug 12, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 84052ac4-be87-4632-8364-bad8263a4be2

📥 Commits

Reviewing files that changed from the base of the PR and between 93e347a and efdf056.

📒 Files selected for processing (7)
  • README.md
  • decisions/0001-computeplane-ships-as-an-operator-owned-module.md
  • decisions/README.md
  • decisions/template.md
  • design-proposals/README.md
  • design-proposals/compute-plane/README.md
  • design-proposals/template.md

📝 Walkthrough

Walkthrough

The change adds decision-record documentation, an ADR template, an accepted ComputePlane architecture decision, and guidance for linking decisions to design proposals.

Changes

Decision records and proposal guidance

Layer / File(s) Summary
Decision record workflow
README.md, decisions/README.md, decisions/template.md
Documents decision-record purpose, authoring rules, lifecycle, review expectations, and the ADR template.
ComputePlane architecture decision
decisions/0001-computeplane-ships-as-an-operator-owned-module.md, design-proposals/compute-plane/README.md
Records the operator-owned ComputePlane module decision and links it from the ComputePlane proposal.
Proposal decision guidance
design-proposals/README.md, design-proposals/template.md
Requires significant implementation divergences to link decision records and adds a Decisions section to proposal guidance and templates.

Estimated code review effort: 2 (Simple) | ~10 minutes

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the main change: adding a decision record log alongside design proposals.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch docs/decisions-log

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

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