Repository navigation
Conversation
|
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the
|
Mutation testing (cargo-mutants,
|
| caught | missed | unviable | timeout |
|---|---|---|---|
| 1 | 0 | 0 | 0 |
Every mutant in the changed lines was caught by a test.
Review: align and test context compositionReviewed StandardsAgainst documented standards:
Judgement calls:
SpecVerified: an empty extension is a no-op in both languages. Rust runs (a) Missing or partial:
(b) Scope creep: none of substance. Enrolling (c) Implemented but looks wrong:
Summary
|
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
cipherstash-agent
left a comment
There was a problem hiding this comment.
Automated review attestation (/code-review medium + cross-check against existing feedback)
Reviewed head 355f621 (diff read in full for source, CHANGELOG, CI wiring and Go test changes; conformance corpora and Rust test bodies skimmed, not executed).
Result: no critical or blocking issues. No new findings.
DeclaredContext::append(src/target/context.rs) preserves per-part grouping, and.extend(())appends an empty vec, so it is a no-op. The macro-generatedextendinplan/chain.rsis the only place that assignedcommon.extend, so no other call site still replaces.- Test and CI wiring look consistent: the new Rust test binaries are in
stack-conformance.sh, and the Go tests are in both the selection list and the guest-required list. - Candidate concerns were cross-checked against the existing review (comment) and dropped as already covered: breaking-change classification and CHANGELOG placement, missing warning that repeated-
.extend()queries silently miss pre-fix rows, no test opening a record written under replacement semantics, and issue numbers in comments and docs. - Minor, optional:
docs/plans/2026-10-04-plan-builder.md:1040still says "Cipher.Extendreplaces the last". It is a historical plan, so it may be fine to leave.
The Changeset bot reports no changeset. AGENTS.md asks for one when a published package's behaviour changes, but stack-encrypt is a Rust crate versioned by its CHANGELOG, so I did not raise it as a finding.
Generated by Claude Code
|
Addressed the review findings in d2a0ef3.
Validation passed: full conformance with fresh artifact exchange, ordered-JSON build, focused lowering regression, Rust clippy/formatting, Go lint/generation, and CI wiring/main-guard tests. |
Repeated Rust
.extend(a).extend(b)calls previously discardeda, producing a different context from Go. Extensions now append in order, preserve grouped parts, and treat an empty extension as a no-op.This is a breaking context change. Queries using repeated extensions silently miss rows written under replacement semantics, without returning an error. Keep the final extension alone for both reads and queries of old data, or re-encrypt and re-index it under the appended context. A regression test pins compatible opening and querying, including the silent miss with the new repeated-extension query.
Adds required Rust/Go context conformance: 18 composition cases, 11 read/preflight cases and four query cases. Tests cover typed Rust chains, generated Go literal/field-base APIs, late authentication failure without partial results, and the actual plan bytes sent by Go to WASM. Native Rust checks canonical descriptors/AAD/PRF bytes and retrieval counts; Go checks the outgoing plan, authenticated cross-opening and the uninitialised guest's preflight boundary. Existing context-field fixtures and native plan-grammar tests are enrolled too.
Validation: full
mise run test:conformancewith fresh artifact exchange;serde_json/preserve_order; the focusedseveral_parts_nest_to_the_leftregression; Rust clippy and formatting; Go lint and generated bindings; CI wiring and main-guard tests.Closes #1475
Fixes #1120