Skip to content

Configure dependency bot admission in merge-train policy - #4891

Merged
6 commits merged into
mainfrom
work/renovate-1025
Oct 25, 2026
Merged

6 commits merged into
mainfrom
work/renovate-1025

Conversation

@shiny-code-app

@shiny-code-app shiny-code-app Bot commented Oct 25, 2026 •

Copy link
Copy Markdown
Contributor

Dependency bots currently require a code change because admission and Client-note consumers recognize specific logins. This moves identity, metadata-format and allowed-update selection into enqueue.dependency_update_bots. Adding or removing a bot that uses a supported format is now an admin-approved policy proposal. Code keeps one parser per format and the shared within-major/same-branch safety checks. Renovate automerge stays disabled; only the train merges.

The same policy governs dependency-only Client exemptions across previews, status, batch notes and releases. Human/fork PRs do not read dependency policy. Legacy ID-only records remain readable with unchanged bytes/digests but grant no inferred parser/admission; proposals cannot add new legacy IDs. The migration removes that legacy field from active records.

Closes #4893. Refs #4889, which stays open for rollout and the two bot PR landings. The shared metadata preset is cbusillo/odoo-devkit#273, held on its CM consumer-build gate, cbusillo/odoo-devkit#274. The earlier Q881 ID-only policy card is superseded; do not approve it. The new schema must deploy before the explicit table can be proposed. The migration is rebuilt and locally validated from current active policy f923d7f1b12fb93e044e47724ccac8830b3b2145fdace7552f685e8406830ffa. The earlier policy-read 404 cleared after a recorded service replacement; it is not a current blocker. After the schema deploys, refresh the active record once more before submitting and posting the replacement admin review URL on #4889.

Validation: 328 final parser/policy/admission/admin safety tests and 402 caller tests passed, plus the broader policy recovery/split modules. Ruff lint/format and whole-project mypy passed. Anthropic claude-opus-5-5[1m] reviewed the redesign and the review fixes; head-bound disposition is recorded below. Inspection not run under https://github.com/cbusillo/direction/issues/98#issuecomment-6399734189.

This is a coherent schema-and-consumer change: every former login-based exemption moves to the same policy source, rather than retaining a fallback during migration. Tests cover arbitrary configured IDs sharing formats, removal, per-type selection, missing/mismatched policy, signatures, immutable dependency diffs, legacy bytes/digests, and admin proposal boundaries. The complete suite remains in CI.

Removed: the production bot-login table, implicit parser/default type choices, eager policy reads for human/fork PRs, and redundant test repetitions. No second bot admission path.
Net lines: +771 in Launchplane (+879/-108); companion preset/docs +7.

@shiny-code-app

Copy link
Copy Markdown
Contributor Author

Review result: weighed
Head: 658a31f

Anthropic claude-opus-5-5[1m] reviewed the change twice.

Acted on: narrowed workspace exemption to complete immutable TOML comparisons allowing only devkit/runtime exact ref pins; shared-addons pins and other fields are rejected. Made the classifier author explicit. Replaced the refresh fixture's new unlimited comparison fallback with one explicit response. New behavioral coverage passed.

Declined: the claim that workspace updates have no producer is refuted by the existing odoo-devkit/renovate/devkit-pin.json custom manager (currentValueTemplate: main) and the two real waiting Renovate PRs, CM #245 and CM Website #212. Those are the exact examples this task must admit. Removing digest support would contradict the issue's explicit finish line (same-branch pinned digests) and the Director's Q876 decision, so that proposed change was not taken. Existing explicit Client review overrides remain enforced.

Declined: grouped commitBody context concern. Renovate's branch worker compiles against the complete branch config; the installed renderer produced both grouped entries and the classifier accepted them. Real CM #245 commit readback confirmed renovate[bot], web-flow committer and verified signature. No signature exception was added.

Dependabot admission now also requires the same complete dependency-only diff. Workflow and image recipe edits therefore need agent review even when update versions are within major. This is the requested dependency-only boundary.

No literal/config/wording tests were added. New comments/docstrings were not added under repository style.

@shiny-code-app

Copy link
Copy Markdown
Contributor Author

Ready for the merge train

Head: 658a31f

@shiny-code-app

Copy link
Copy Markdown
Contributor Author

Engineering ready; waiting for the Director-requested policy-backed bot configuration revision

Chris requests that bot identities, metadata formats and qualifying update types live in the merge-train policy, leaving one parser per format in code. This replaces the prior Ready while the source is updated and reviewed. The previous policy card is superseded by that schema revision; do not approve it as the final configuration.

@shiny-code-app shiny-code-app Bot changed the title Admit Renovate through the existing dependency update train path Configure dependency bot admission in merge-train policy Oct 25, 2026
@shiny-code-app

Copy link
Copy Markdown
Contributor Author

Review result: weighed
Head: ae887cc

Anthropic claude-opus-5-5[1m] reviewed the policy redesign and its fixes. No blocking defect remains.

Acted on: moved policy lookup inside the shared pure-dependency predicate, after Bot and same-repository checks; real store failures no longer affect human/fork PRs. Added that regression. New legacy ID-only entries are refused by the managed proposal planner, and both permitted migration paths (keep existing legacy ID while adding an explicit row; remove legacy ID) are tested through that planner. Extended the existing legacy raw-payload digest test, keyed parser registration by the format Literal, and removed redundant test loops/dead request recording.

Accepted/documented: bot removal also removes dependency-only Client exemptions; release readers use current policy while recorded notes remain readable. Deploy the schema, refresh the complete active policy, then propose the migration for the signed-in admin. Legacy-only records do not infer a bot format or types. The previous Q881 card is superseded.

Declined: optional additional per-reader memoization is a quota optimization, not an admission defect, and adds another cache concept; the transport already has conditional caching. Test-only identity values are fixtures, not production defaults. No legacy-login fallback or authority bypass was introduced. No tests pin config/docs/workflow wording or a copied version.

Validation: final 328 parser/policy/admission/admin safety tests, 402 caller tests after the lazy lookup change, and 41 final migration/planner tests passed. Whole-repo Ruff/format and mypy passed. Inspection not run under the recorded direction#98 exception. Source migration has local schema proof only until the live policy read succeeds and the new schema is deployed.

@shiny-code-app

Copy link
Copy Markdown
Contributor Author

Ready for the merge train

Head: ae887cc

@shiny-code-app

shiny-code-app Bot commented Oct 25, 2026 •

Copy link
Copy Markdown
Contributor Author

Launchplane completed the merge-train step for this pull request.

Launchplane landed this pull request through protected batch PR #4900.

Launchplane manages this comment and will update it as the train moves.

shiny-code-app Bot added a commit that referenced this pull request Oct 25, 2026
@shiny-code-app shiny-code-app Bot closed this pull request by merging all changes into main in c659dd9 Oct 25, 2026
@shiny-code-app
shiny-code-app Bot deleted the work/renovate-1025 branch October 25, 2026 22:11
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.

Configure dependency bot identities, formats and update types in merge-train policy

0 participants