Stop reading pull requests alphabetically.
Strata Review sorts an Azure DevOps pull request into layers: contracts on top, then domain logic, integrations and tests. Each layer gets its own diff and a note on what to check. Claude Code writes it on your Mac, on your own subscription.
For Macs with Apple silicon.
This Mac seems to have an Intel processor. Strata Review needs Apple silicon for now.
Adds a CreditNoteRequest and a creditNotes array on InvoiceResponse. Check that the amount is a decimal rather than a double, and that the new field stays optional for existing clients.
Contracts/CreditNoteRequest.cs
public sealed record CreditNoteRequest( decimal Amount, string Reason);Line 2Amount has no lower bound here. The domain layer rejects negatives; consider rejecting them at the contract too.
Invoice.ApplyCreditNote lowers the balance and records the note. Check that it refuses a note larger than the remaining balance, and decide whether an exact match is allowed.
Domain/Invoice.cs
public void ApplyCreditNote(CreditNote note){ if (note.Amount > Balance) throw new InvalidOperationException("Credit exceeds balance"); Balance -= note.Amount; _creditNotes.Add(note);}Line 3A note equal to the balance passes and leaves the invoice at zero. Confirm that is intended.
Maps CreditNote as an owned collection and adds a migration. Check that the column precision matches the decimal in the contract.
Infrastructure/InvoiceConfiguration.cs
builder.OwnsMany(i => i.CreditNotes, cn =>{ cn.Property(c => c.Amount).HasPrecision(18, 2); cn.Property(c => c.Reason).HasMaxLength(200);});Line 4Reason is unbounded in the request contract. A 200-character limit here will truncate or fail.
Covers the happy path and the over-credit case. The equal-to-balance case from the domain layer has no test yet.
Tests/InvoiceTests.cs
[Fact]public void Rejects_credit_larger_than_balance(){ var invoice = Invoice.For(100m); var act = () => invoice.ApplyCreditNote(new(150m, "goodwill")); act.Should().Throw<InvalidOperationException>();}Four layers, top to bottom
A file list is sorted by name. A change is built in an order: what it promises, what it does, what it touches, and what proves it. Strata Review reads it that way. Related layers are grouped into cohorts, and J and K move you down and up the stack.
Contracts
What the change promises. Interfaces, request and response types, schemas, public signatures. Read first, because everything below depends on it.
Domain logic
What the change does. The rules that do the work. With the contracts fresh in mind, the question is short: does the behaviour match the promise?
Integrations
What the change touches. Database mappings, HTTP clients, queues, configuration. Where the domain meets the outside world, and where a mismatch with the contract likes to hide.
Tests
What proves it. Read last, once you know what the change is meant to do. Now you can see what is covered and, more usefully, what is not.
How a review gets written
Everything runs on your Mac, with the tools you already have signed in. Strata Review has no server and no account of its own.
Fetch the pull request
Strata Review reads the pull request from Azure DevOps with your Azure CLI login, the same
az loginyou use today.Check out both sides
Base and head go into a separate git worktree. Your own working copy is not touched.
Claude Code writes the review
Your installed, signed-in Claude Code CLI sorts the change into layers and writes the summaries and line notes. A deep review also draws an architecture impact graph of the components the change touches.
Check it against the real diff
Every line reference is validated against the actual diff. When one is wrong, the agent gets a repair round before you see the review.
Keep it on your Mac
The finished review is saved as JSON in
~/.strata-review. If the pull request moves on to a newer iteration, the review is flagged as stale.
Your Claude subscription does the work. Nobody else is involved.
Reviews come from the Claude Code CLI you already have installed and signed in. Strata Review runs it as a command and reads what it writes. It never sees your Claude login, and your code goes to the model you chose and nowhere else. Codex support is planned.
- No server.
- No account to create.
- No access to your Claude credentials.
- Your code leaves your Mac only for the model you chose.
Get Strata Review
An early proof of concept for macOS on Apple silicon. GitHub, GitLab, Windows and Linux come later.
For Macs with Apple silicon.
This Mac seems to have an Intel processor. Strata Review needs Apple silicon for now.
You need
- A Mac with Apple silicon
- Azure DevOps
- Azure CLI, signed in with
az login - Claude Code, signed in
- git
First launch
Strata Review is not notarized yet, so macOS blocks the first open. Go to System Settings, then Privacy & Security, and choose Open Anyway. After that it opens like any other app.