Repository navigation
docs(authorization)!: define bot identity resolution contract - #7765
Conversation
Record ADR 0107 as the basis for the next authorization decision and align the normalized-event schema, authorization contract, adapters, fixtures, and CEL documentation with separate human-permission and bot-role fields. Refs fullsend-ai#7764. BREAKING CHANGE: Bot actors now carry a null permission role and a separate provider-resolved bot role; normalized-event producers and consumers must adopt the updated contract. Signed-off-by: Barak Korren <bkorren@redhat.com> Assisted-by: Codex (gpt-5.6-sol)
PR Summary by QodoDefine provider-backed bot identity for dispatch authorization
AI Description
Diagram
High-Level Assessment
Files changed (21)
|
|
🤖 Finished Review · ✅ Success · Started 12:58 PM UTC · Completed 1:27 PM UTC Commit: Runtime: pi · Model: sonnet → claude-sonnet-5 · Effort: high · Cost: $7.80 |
Code Review by Qodo
1.
|
Site previewPreview: https://514e142e-site.fullsend-ai.workers.dev Commit: |
|
Risk Assessment: moderate (2/5) DetailsDocumentation-only PR with zero direct runtime blast radius and strong issue alignment, scored moderate due to normative specification updates and high change coupling in core architecture documentation. Previous runRisk Assessment: moderate (2/5) DetailsDocumentation-only PR with zero direct runtime blast radius and strong issue alignment, scored moderate due to normative specification updates and high change coupling in core architecture documentation. Previous run (2)Risk Assessment: moderate (2/5) DetailsDocumentation-only contract specification with zero direct runtime blast radius and tight issue alignment, scored moderate due to broad normative file count and high change coupling in core architecture documentation. Previous run (3)Risk Assessment: moderate (2/5) DetailsDocumentation-only contract specification with zero direct runtime blast radius and tight issue alignment, scored moderate due to broad normative file count and high change coupling in core architecture documentation. Previous run (4)Risk Assessment: moderate (2/5) DetailsDocumentation-only PR with zero direct runtime blast radius and strong issue alignment, scored moderate due to broad file count across normative specs and high change coupling in core architecture documentation. Previous run (5)Risk Assessment: moderate (2/5) DetailsDocumentation-only PR with zero direct runtime blast radius and strong issue alignment, scored moderate due to broad file count across normative specs and high change coupling in core architecture documentation. Previous run (6)Risk Assessment: moderate (2/5) DetailsDocumentation-only PR with zero direct runtime blast radius and strong issue alignment, scored moderate due to broad file count across normative specs and high change coupling in core architecture documentation. Previous run (7)Risk Assessment: moderate (2/5) DetailsDocumentation-only PR with zero direct runtime blast radius and strong issue alignment, scored moderate due to broad file count across normative specs and high change coupling in core architecture documentation. Previous run (8)Risk Assessment: moderate (2/5) DetailsDocumentation-only design contract with low metadata risk and strong issue alignment, elevated to moderate risk by touchpoints on high-churn architectural files with significant co-commit history. Previous run (9)Risk Assessment: moderate (2/5) DetailsDocumentation-only design contract with low metadata risk and strong issue alignment, elevated to moderate risk by touchpoints on high-churn architectural files with significant co-commit history. Previous run (10)Risk Assessment: moderate (2/5) DetailsDocs-only contract specification with medium blast radius (10 files, 365 lines) and elevated git history churn across touched normative architecture files, maintaining a moderate risk score (2) offset by zero protected-path touches, no dependency changes, and active linked issue alignment. Previous run (11)Risk Assessment: moderate (2/5) DetailsDocs-only contract specification with medium blast radius (10 files, 351 lines) and elevated git history churn across touched normative architecture files, maintaining a moderate risk score (2) offset by zero protected-path touches, no dependency changes, and active linked issue alignment. Previous run (12)Risk Assessment: moderate (2/5) DetailsDocs-only contract specification with a broad 21-file blast radius and moderate git history churn across normative paths, offset by zero protected-path touches, no CI or dependency changes, high rollback safety, and close alignment with an active linked issue. Previous run (13)Risk Assessment: moderate (2/5) DetailsDocumentation-only normative contract change across 21 files with strong issue alignment (closes #7764); anchored near the prior score of 2 (moderate), unchanged despite substantive content updates since the prior review, since the change remains docs-only with no protected paths, no security-sensitive code paths, and no dependency/CI changes. Previous run (14)Risk Assessment: moderate (2/5) DetailsDocumentation-only PR with zero direct runtime blast radius and strong issue alignment; anchored to the prior review's score of 2 (moderate) since this PR's own content is unchanged since the prior review (only an upstream main-merge commit was added). Previous run (15)Risk Assessment: moderate (2/5) DetailsDocumentation-only PR with zero direct runtime blast radius and strong issue alignment, scored moderate due to broad file count across normative specs and high change coupling in core architecture documentation. |
ReviewFindingsLow
The prior Previous runReviewFindingsLow
Next steps:
Previous run (2)ReviewFindingsMedium
Low
Next steps:
Previous run (3)ReviewFindingsLow
Next steps:
Previous run (4)ReviewFindingsLow
Next steps:
Previous run (5)ReviewFindingsMedium
Low
Prior findings at Next steps:
Previous run (6)ReviewFindingsMedium
Low
Next steps:
Previous run (7)ReviewFindingsMedium
Low
Next steps:
Previous run (8)ReviewFindingsMedium
Low
Next steps:
Previous run (9)ReviewFindingsMedium
Low
Next steps:
Previous run (10)ReviewReason: time-budget This PR was NOT reviewed. Do not count this as an approval. Previous run (11)ReviewFindingsMedium
Low
Next steps:
Previous run (12)ReviewFindingsMedium
Low
Next steps:
Previous run (13)ReviewFindingsHigh
Medium
Low
Next steps:
|
Bring the PR branch up to date with the latest main changes. Signed-off-by: Barak Korren <bkorren@redhat.com> Assisted-by: Codex (gpt-5.6-sol)
|
🤖 Finished Review · ✅ Success · Started 9:48 PM UTC · Completed 10:07 PM UTC Commit: Runtime: pi · Model: sonnet → claude-sonnet-5 · Effort: high · Cost: $4.40 |
Keep bot role compatibility in normalized-event v1 while making provider-resolved bot_role optional. Apply PR 7080's fail-closed resolver policy and record this as an ADR-only contract update. Signed-off-by: Barak Korren <bkorren@redhat.com> Assisted-by: Codex (gpt-5.6-sol)
|
🤖 Finished Review · ✅ Success · Started 8:57 AM UTC · Completed 9:19 AM UTC Commit: Runtime: pi · Model: sonnet → claude-sonnet-5 · Effort: high · Cost: $7.59 |
Define the additive role_verified actor field and clarify that bot identity verification is carried by bot_role while legacy role remains none. Signed-off-by: Barak Korren <bkorren@redhat.com> Assisted-by: Codex (gpt-5.6-sol)
|
🤖 Review · Commit: |
|
🤖 Finished Review · ✅ Success · Started 12:42 PM UTC · Completed 12:57 PM UTC Commit: Runtime: pi · Model: sonnet → claude-sonnet-5-5 · Effort: high · Cost: $3.18 |
Use the adapter implementation as the legacy-to-resolved boundary and remove the unnecessary mode marker and deprecation window. Signed-off-by: Barak Korren <bkorren@redhat.com> Assisted-by: Codex (gpt-5.6-sol)
|
🤖 Finished Review · ✅ Success · Started 1:57 PM UTC · Completed 2:07 PM UTC Commit: Runtime: pi · Model: sonnet → claude-sonnet-5-5 · Effort: high · Cost: $2.24 |
Document the supported producer and consumer rollout contract for the additive bot actor fields, and remove stale migration-boundary wording. Signed-off-by: Barak Korren <bkorren@redhat.com> Assisted-by: Codex (gpt-5.6-sol)
|
🤖 Finished Review · ✅ Success · Started 2:15 PM UTC · Completed 2:26 PM UTC Commit: Runtime: pi · Model: sonnet → claude-sonnet-5-5 · Effort: high · Cost: $2.10 |
Superseded by updated review
Summary
actor.kind,actor.bot_role, and human permissionactor.role; bot actors carryrole: null.Historical motivation
The design is motivated by #7764, which records the changes since ADR 0054: split observation/mutation thresholds, label and review exceptions for App bots, the OWNERS provider, removal of the weaker
needs-infogate, the normative authorization contract, and the eventless path in ADR 0098.Verification
make lintCloses #7764.