Skip to content

Continuous Review, Work Items, and Refinery-Grade Promotion Queues#47

Merged
ScottArbeit merged 13 commits intomainfrom
feature/work-item-continuous-review
Jan 9, 2026
Merged

Continuous Review, Work Items, and Refinery-Grade Promotion Queues#47
ScottArbeit merged 13 commits intomainfrom
feature/work-item-continuous-review

Conversation

@ScottArbeit
Copy link
Owner

Resolves #46.

Copy link

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 55e407d5d9

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +285 to +287
context.Items["Command"] <- nameof Enqueue
let command (_: EnqueueParameters) = PromotionQueueCommand.Enqueue candidateId |> returnValueTask
return! processCommand context (fun _ -> [||]) command

Choose a reason for hiding this comment

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

P1 Badge Avoid re-parsing the enqueue request body

In Enqueue, the body is parsed once (parse<EnqueueParameters>), then runEnqueue calls processCommand, which parses the body again to obtain TargetBranchId. Because the stream is not rewound between these reads, the second BindJsonAsync typically sees an empty body and Guid.Parse(parameters.TargetBranchId) inside processCommand throws, yielding a 500 for valid enqueue requests. Consider passing the already-parsed parameters/branch id into the command path or rewinding context.Request.Body before calling processCommand.

Useful? React with 👍 / 👎.

Copy link
Owner Author

Choose a reason for hiding this comment

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

@codex fix this

Choose a reason for hiding this comment

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

Summary

Testing

  • Not run (not requested).

View task →

Copy link
Owner Author

Choose a reason for hiding this comment

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

@codex I don't see that code in a commit on this branch.

Choose a reason for hiding this comment

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

Summary

Testing

  • ⚠️ dotnet build --configuration Release (dotnet not installed)
  • ⚠️ dotnet test --no-build (dotnet not installed)

View task →

Comment on lines +73 to +75
OwnerId.Empty
OrganizationId.Empty
RepositoryId.Empty

Choose a reason for hiding this comment

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

P1 Badge Scope event envelopes to the repository

The WorkItem event envelope is built with RepositoryId.Empty (and the same pattern appears for review/candidate events below). In Notification.Server.fs, an empty RepositoryId causes NotifyEvent to broadcast to all connected clients instead of a repository group, so updates from one repo will leak to every client. Populate repository identifiers from the event payload or actor state before publishing to keep notifications scoped.

Useful? React with 👍 / 👎.

Copy link
Owner Author

Choose a reason for hiding this comment

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

@codex fix this

Choose a reason for hiding this comment

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

Summary

Testing

  • ⚠️ dotnet build --configuration Release (dotnet not installed)
  • ⚠️ dotnet test --no-build (dotnet not installed)

View task →

Choose a reason for hiding this comment

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

Summary

Testing

  • Not run (not requested).

View task →

@ScottArbeit ScottArbeit merged commit 613f7aa into main Jan 9, 2026
1 check passed
@ScottArbeit ScottArbeit deleted the feature/work-item-continuous-review branch January 9, 2026 09:55
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.

Feature: Continuous Review, Work Items, and Refinery-Grade Promotion Queues

1 participant