Skip to content

feat(ir): add parity projection sentinel#514

Merged
flyingrobots merged 4 commits into
mainfrom
codex/parity-projection-crosswalk
May 22, 2026
Merged

feat(ir): add parity projection sentinel#514
flyingrobots merged 4 commits into
mainfrom
codex/parity-projection-crosswalk

Conversation

@flyingrobots
Copy link
Copy Markdown
Owner

Summary

  • Add pnpm parity:ir for the explicit js-table-vs-rust-table.v0 sentinel corpus.
  • Add projection tooling that compares legacy JS table IR against Rust L1 table facts, including projected hash comparison, first mismatch paths, Rust command hash checks, and tracked L1 hash checks.
  • Add Bats coverage, pre-push smoke inclusion, docs/changelog updates, and a bad-code backlog item for the existing missing Prettier format-check toolchain.

Validation

  • pnpm exec eslint scripts/check-ir-parity.mjs scripts/ir-parity-projection.mjs --max-warnings=0
  • BATS_LIB_PATH=packages/wesley-cli/test bats -t test/ir-parity-sentinel.bats
  • pnpm parity:ir
  • pnpm run lint
  • pnpm run lint:docs-whitespace
  • pnpm run lint:docs-truth
  • pnpm run preflight
  • bash scripts/smoke/repo-bats-prepush.sh
  • git push pre-push hook reran repository preflight and repo Bats smoke suite successfully

Known Gap

  • pnpm run format:check currently fails before checking files because prettier is not installed in the workspace. This PR logs that as docs/method/backlog/bad-code/DX_format-check-toolchain-gap.md instead of changing formatter policy inside the parity slice.

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 22, 2026

Warning

Rate limit exceeded

@flyingrobots has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 13 minutes and 8 seconds before requesting another review.

You’ve run out of usage credits. Purchase more in the billing tab.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: cb9280dc-7319-4af5-9f6e-f88760e1d550

📥 Commits

Reviewing files that changed from the base of the PR and between 9b2c6be and 294dc6b.

📒 Files selected for processing (13)
  • CHANGELOG.md
  • docs/BEARING.md
  • docs/design/0009-rust-core-and-wasm-capability-abi/phase-0-ir-truth-manifest.md
  • docs/design/0013-rust-ir-parity-sentinel/rust-ir-parity-sentinel.md
  • docs/method/backlog/bad-code/DX_format-check-toolchain-gap.md
  • docs/method/backlog/bad-code/README.md
  • package.json
  • scripts/README.md
  • scripts/check-ir-parity.mjs
  • scripts/ir-parity-projection.mjs
  • scripts/smoke/repo-bats-prepush.sh
  • test/README.md
  • test/ir-parity-sentinel.bats
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/parity-projection-crosswalk

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 22, 2026

🔍 The Case of Pull Request #514

Plain-English Readout

  • Holmes (evidence investigation): Holmes says this change should not ship in its current state. Main reasons: No evidence citations were available for trust analysis; test evidence is incomplete; schema coverage is incomplete.
  • Watson (independent verification): Watson found verification concerns. Most important concern: Low migration risk claimed but schema incomplete.
  • Moriarty (trend forecast): Moriarty sees progress as stalled right now, so forecast confidence is limited.

Suggested next actions

  1. Tighten citations so the report points to exact lines instead of whole files or coarse references.
  2. Resolve Watson’s verification concerns before trusting the Holmes verdict as final.
  3. Treat the readiness forecast as stalled until new evidence or real progress moves the trend again.
  4. Add or strengthen tests for the schema elements and operations HOLMES flagged as weakly proven.
📚 Glossary (what the Holmes terms mean)
  • HOLMES: Wesley’s main evidence investigation. It decides whether the cited proof is strong enough to justify shipping this commit.
  • WATSON: An independent verification pass. It checks Holmes’s citations and score math instead of trusting them blindly.
  • MORIARTY: A readiness forecast over time. It is advisory trend analysis, not the release gate itself.
  • Schema coverage score (SCS): How much of the schema has direct supporting evidence across generated artifacts and cited proof.
  • Test confidence index (TCI): How much test evidence exists for constraints, policies, relationships, and operations.
  • Migration risk index (MRI): How risky the schema change is to roll out. Lower is better.
  • Evidence trust: Whether the report is backed by exact citations, whole-file citations, or coarse references. Weak trust means the claim may be directionally right but not specific enough to trust blindly.
  • Citation quality: A count of exact line-span citations versus whole-file or coarse references.
  • ELEMENTARY: Ready to ship based on the current evidence.
  • REQUIRES INVESTIGATION: More work or review is needed before shipping.
  • YOU SHALL NOT PASS: Do not ship this change in its current state.

🕵️ SHA-lock HOLMES full report (click to expand)

🕵️ SHA-lock HOLMES Investigation

  • Generated: 2026-05-22T12:23:09.651Z
  • Commit SHA: bba7995
  • Bundle Version: 2.0.0

⚠️ Evidence valid only for commit bba7995

🔍 Executive Deduction

"Watson, after careful examination of the evidence, I deduce..."

Weighted Completion: ░░░░░░░░░░ 0.0%
Scores: SCS 0.0% · TCI 0.0% · MRI 0.0%
Verification Status: 0 claims verified
Citation Quality: 0 exact · 0 whole-file · 0 coarse
Evidence Trust: missing
Ship Verdict: YOU SHALL NOT PASS

🧩 SCS Breakdown

Component Score Coverage
Sql 0.0% 0.00/154.00
Types 0.0% 0.00/154.00
Validation 0.0% 0.00/154.00
Tests 0.0% 0.00/154.00

🧪 TCI Breakdown

Component Score Coverage Note
Unit Constraints 0.0% 0/104 N/A
Unit Rls 0.0% N/A
Integration Relations 0.0% 0/3 N/A
E2e Ops N/A Query operation test tracking not yet implemented

⚠️ MRI Breakdown

Component Risk Share Points Count
Drops 0% 0 0
Renames Without Uid 0% 0 0
Add Not Null Without Default 0% 0 0
Non Concurrent Indexes 0% 0 0

📊 The Weight of Evidence

"Observe, Watson, how not all features carry equal importance..."

Element Weight Status Evidence Strength Deduction

🚪 Security & Performance Gates

"Elementary security measures, Watson..."

Gate Status Evidence Holmes's Ruling
Migration Risk MRI: 0.0% "Trivial risk"
Test Coverage ⚠️ TCI: 0.0% "Theatrical tests!"
Sensitive Fields 0 fields "All secured"
Evidence Quality 0 exact · 0 whole-file · 0 coarse "No evidence citations were available for trust analysis."

📋 The Verdict

YOU SHALL NOT PASS
"Critical evidence is missing! Return to your laboratory!"

Signed and sealed,

  • S. Holmes, Consulting Detective

[END OF INVESTIGATION FOR COMMIT bba7995]

🧵 Command Run

  • Run ID: run-mpgw57a5-yptum9
  • Transmutation: holmes-investigate
  • Command: investigate
  • Status: completed
  • Ledger: /home/runner/work/wesley/wesley/test/fixtures/examples/.wesley-cache/ledger

🩺 Dr. WATSON full report (click to expand)

🩺 Dr. Watson's Independent Verification Report

Medical Examination of Evidence

  • Examination Date: 2026-05-22T12:24:06.271Z
  • Patient SHA: bba7995

🔬 Citation Verification

"Let me examine each piece of evidence independently..."

  • Citations Examined: 0
  • Verified: 0 ✅
  • Failed: 0 ❌
  • Unable to Verify: 0
  • Exact Subrange Citations: 0
  • Whole-file Citations: 0
  • Coarse Citations: 0
  • Evidence Trust: missing
  • Trust Note: No evidence citations were available for trust analysis.

Verification Rate: 0.0%

📊 Mathematical Verification

"I shall recalculate Holmes's arithmetic..."

Holmes claimed SCS: 0.0%
Watson calculates: 0.0%
Difference: ✅ Negligible

🔍 Consistency Analysis

"Checking for contradictions in Holmes's deductions..."

⚠️ Low migration risk claimed but schema incomplete

🩺 Dr. Watson's Medical Opinion

VERIFICATION: CONCERNS NOTED ⚠️

"While Holmes's methods are generally sound, I have noted some"
"discrepancies that warrant further investigation. No evidence citations were available for trust analysis."

Respectfully submitted,

  • Dr. J. Watson, M.D.
    Medical Examiner & Verification Specialist

🧵 Command Run

  • Run ID: run-mpgw5ta0-uiakdz
  • Transmutation: watson-verify
  • Command: verify
  • Status: completed
  • Ledger: /home/runner/work/wesley/wesley/test/fixtures/examples/.wesley-cache/ledger

🔮 Professor MORIARTY full report (click to expand)

🧠 Professor Moriarty's Temporal Predictions

The Mathematics of Inevitability

  • Analysis Date: 2026-05-22T12:24:41.549Z

🔮 Current State

SCS: ░░░░░░░░░░ 0.0%
TCI: ░░░░░░░░░░ 0.0%
MRI: 0.0% risk
Evidence Trust: missing

📈 Velocity Analysis

SCS Velocity: +0.00%/day
Git Activity (window): 24h · commits 19 (1 relevant) · ~19.00 commits/day
↳ Magnitude: ~313 relevant LOC/day across ~6.0 files/day
Activity Index: 25 / 100 (PR 0, Window 62)
Blended Velocity: +0.15%/day
Commit Size Burstiness: 0 / 100 (higher = more uneven commit sizes)
⚠️ PLATEAU DETECTED - Low SCS movement and low recent Git activity.

⏰ Completion Predictions

ETA: Cannot predict (insufficient velocity)

"At current velocity, completion is... improbable."

⚠️ Warnings

  • Evidence trust is missing; No evidence citations were available for trust analysis.

🧪 Readiness EXPLAIN

  • SCS ≥ 80% → FAIL ❌ (actual 0.0%)
  • TCI ≥ 70% → FAIL ❌ (actual 0.0%)
  • MRI ≤ 40% → PASS ✅ (actual 0.0%)
  • CI Stability ≥ 90% (branch main) → FAIL ❌ (actual 86% over ~168h)
  • Evidence Trust ≥ moderate → FAIL ❌ (actual missing) — No evidence citations were available for trust analysis.
  • Delivery context (last 168h): 0 issues closed · 3 PRs merged (informational, not gating)

Signals blend: SCS velocity (70%) + Git activity (30%, branch-first). Activity only suppresses false plateaus; it never inflates readiness.

📊 Historical Trajectory

05-22: ░░░░░░░░░░ 0.0%
05-22: ░░░░░░░░░░ 0.0%
05-22: ░░░░░░░░░░ 0.0%

"Every problem becomes elementary when reduced to mathematics"
— Professor Moriarty

🧵 Command Run

  • Run ID: run-mpgw6ki3-njmy8a
  • Transmutation: moriarty-predict
  • Command: predict
  • Status: completed
  • Ledger: /home/runner/work/wesley/wesley/test/fixtures/examples/.wesley-cache/ledger

Machine-readable reports: holmes-report.json · watson-report.json · moriarty-report.json (see workflow artifacts).


Filed at 221B Repository Street

@flyingrobots
Copy link
Copy Markdown
Owner Author

@codex Self-review findings for PR #514. Please confirm and address before merge.

Severity File / Lines Infraction Evidence Recommended Mitigation Prompt
High scripts/check-ir-parity.mjs:129-133 Logical bug / hash-contract mismatch The sentinel computes rustL1Hash from canonicalizeJSON(rustIr), including any top-level metadata. Rust's real registry hash path strips metadata first in crates/wesley-core/src/domain/ir.rs:158-164, and this PR's docs reiterate semantic/hash normalization in docs/design/0013-rust-ir-parity-sentinel/rust-ir-parity-sentinel.md:129-131. A Rust L1 object with metadata will make rustCommandHashMatches false even when the Rust CLI is correct. Update scripts/check-ir-parity.mjs so the Rust L1 semantic hash uses a normalized clone with top-level metadata removed before canonicalizeJSON. Use that same semantic hash for command-hash and tracked-hash comparisons. Add a Bats regression where the fake Rust lowerer emits top-level metadata and the fake schema hash omits it; the sentinel should pass.
Medium scripts/check-ir-parity.mjs:140-152 plus docs/design/0013-rust-ir-parity-sentinel/rust-ir-parity-sentinel.md:47-56 Evidence bundle / implementation contract mismatch The design says each fixture records legacy projected semantic bytes and Rust projected semantic bytes. The script computes legacyBytes and rustBytes at lines 124-125 but discards them; JSON reports only hashes/status. That weakens the stated audit bundle and makes the docs overclaim the implementation. Either include canonical projected bytes in the JSON report, or narrow the design/docs to say the command records hashes and mismatch paths rather than bytes. Prefer adding bytes only to --json output and keeping text output concise.

Summary: 2 findings total: 1 High, 1 Medium. No Critical findings found in this pass.

Copy link
Copy Markdown

@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: 683152a26b

ℹ️ 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 thread scripts/check-ir-parity.mjs Outdated
Comment thread scripts/check-ir-parity.mjs
@flyingrobots
Copy link
Copy Markdown
Owner Author

@codex Resolved the self-review findings in follow-up commit 5ae0e96c (fix(ir): normalize parity sentinel evidence).

Finding Resolution Regression Coverage
Rust hash comparison included top-level metadata scripts/check-ir-parity.mjs now computes the Rust L1 semantic hash from a clone with top-level metadata removed before canonical JSON hashing, matching the Rust compute_registry_hash contract. test/ir-parity-sentinel.bats now covers a fake Rust lowerer that emits metadata while schema hash strips it; the sentinel must pass.
JSON evidence omitted projected bytes promised by design JSON fixture reports now include canonical legacyBytes and rustBytes alongside hashes and mismatch data. The passing projection test asserts both byte fields are present in --json output.

Validation after the fix:

  • pnpm exec eslint scripts/check-ir-parity.mjs scripts/ir-parity-projection.mjs --max-warnings=0
  • BATS_LIB_PATH=packages/wesley-cli/test bats -t test/ir-parity-sentinel.bats
  • pnpm parity:ir
  • pnpm run lint:docs-whitespace
  • pnpm run lint:docs-truth
  • git diff --check
  • pnpm run preflight
  • bash scripts/smoke/repo-bats-prepush.sh
  • git push pre-push hook reran repository preflight and repo Bats smoke suite successfully

@chatgpt-codex-connector
Copy link
Copy Markdown

Summary

  • Reviewed the trigger, PR context, and branch state. The follow-up commit 5ae0e96 is already present at HEAD, and the working tree is clean, so there are no additional code changes for me to apply in this pass. AGENTS.mdL36-L46
  • Because no new edits were required, I did not create a new commit and did not open a follow-up PR via make_pr (to stay consistent with your workflow constraints). AGENTS.mdL5-L9

Testing

  • cd /workspace/wesley && rg --files -g 'AGENTS.md'
  • cd /workspace/wesley && cat AGENTS.md && echo '---' && cat docs/BEARING.md >/tmp/b && head -n 40 /tmp/b && echo '---' && head -n 60 docs/METHOD.md && echo '---' && rg --files docs/method/backlog/asap && echo '---' && git log -n 5 --oneline && echo '---' && git status --short

View task →

@flyingrobots
Copy link
Copy Markdown
Owner Author

@codex Follow-up self-review finding for PR #514 after the latest fixes.

Severity File / Lines Infraction Evidence Recommended Mitigation Prompt
Medium scripts/ir-parity-projection.mjs:239-240 Determinism / canonical ordering risk The projection normalizes table order with left.name.localeCompare(right.name). localeCompare is locale/collation-aware, not byte/code-point ordering. A quick Node check shows ['a','B','á','aa','A'] sorts as ['a','A','á','aa','B'] with localeCompare, versus ['A','B','a','aa','á'] by code-point comparison. Parity projection bytes and hashes should not depend on host collation behavior. Replace compareByName with a deterministic code-point comparator, for example return left.name < right.name ? -1 : left.name > right.name ? 1 : 0;. Add a focused projection test with mixed-case/non-ASCII table names or direct comparator coverage so ordering remains host-independent.

Summary: 1 finding total: 0 Critical, 0 High, 1 Medium, 0 Low.

Copy link
Copy Markdown

@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: 5ae0e96c35

ℹ️ 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 thread scripts/ir-parity-projection.mjs Outdated
@flyingrobots
Copy link
Copy Markdown
Owner Author

@codex Resolved the projection ordering self-review finding in follow-up commit b0cacb96 (fix(ir): stabilize parity projection ordering).

Finding Resolution Regression Coverage
compareByName used locale-aware localeCompare, risking host-dependent projection bytes scripts/ir-parity-projection.mjs now uses deterministic direct string comparison for code-point/code-unit ordering. test/ir-parity-sentinel.bats now projects mixed-case/non-ASCII table names and asserts A,B,a,aa,á, proving we do not use locale collation.

Validation after the fix:

  • RED confirmed first: focused Bats failed with actual locale order a,A,á,aa,B
  • pnpm exec eslint scripts/check-ir-parity.mjs scripts/ir-parity-projection.mjs --max-warnings=0
  • BATS_LIB_PATH=packages/wesley-cli/test bats -t test/ir-parity-sentinel.bats
  • pnpm parity:ir
  • pnpm run lint:docs-whitespace
  • pnpm run lint:docs-truth
  • git diff --check
  • pnpm run preflight
  • bash scripts/smoke/repo-bats-prepush.sh
  • git push pre-push hook reran repository preflight and repo Bats smoke suite successfully

@chatgpt-codex-connector
Copy link
Copy Markdown

Summary

  • I reviewed the trigger and PR context, then verified the current branch state at HEAD (b0cacb9). The deterministic comparator change is already present in scripts/ir-parity-projection.mjs (<, >, 0), so the projection-ordering finding appears resolved in-repo. scripts/ir-parity-projection.mjsL239-L243
  • I also verified the regression coverage exists in Bats with a mixed-case/non-ASCII ordering assertion expecting A,B,a,aa,á, matching the follow-up claim in the trigger. test/ir-parity-sentinel.batsL203-L238
  • The working tree is clean (git status --short produced no changes), so there were no additional edits for me to commit. Per your workflow rule, I therefore did not run git commit and did not call make_pr.

Testing

  • cd /workspace/wesley && rg --files -g 'AGENTS.md' && echo '---' && cat AGENTS.md && echo '---' && head -n 80 docs/BEARING.md && echo '---' && head -n 80 docs/METHOD.md && echo '---' && rg --files docs/method/backlog/asap && echo '---' && git log -n 5 --oneline && echo '---' && git status --short
  • cd /workspace/wesley && git status --short && sed -n '220,280p' scripts/ir-parity-projection.mjs && sed -n '1,220p' test/ir-parity-sentinel.bats
  • cd /workspace/wesley && nl -ba scripts/ir-parity-projection.mjs | sed -n '232,252p' && nl -ba test/ir-parity-sentinel.bats | sed -n '180,250p' && git rev-parse --short HEAD && git status --short

View task →

@flyingrobots
Copy link
Copy Markdown
Owner Author

@codex Follow-up self-review finding for PR #514.

Severity File / Lines Infraction Evidence Recommended Mitigation Prompt
Medium scripts/check-ir-parity.mjs:213-216 Logical bug / custom fixture path handling readTrackedHash() derives the sidecar with fixturePath.replace(/\.graphql$/, '.l1.hash'). For a valid SDL fixture path that does not end in .graphql, the replacement is a no-op, existsSync(hashPath) checks the schema file itself, and rustTrackedHash becomes the SDL text. I verified this with a temporary .gql fixture: projection hashes and Rust command hash matched, but the command failed with tracked-rust-hash-mismatch and reported rustTrackedHash as type User @wes_table.... Update readTrackedHash() to only look for a tracked hash sidecar when the fixture path ends in .graphql; otherwise return null. Add a Bats regression with a temporary .gql fixture and a fake Rust CLI showing custom fixtures without sidecars do not fail tracked-hash checks.

Summary: 1 finding total: 0 Critical, 0 High, 1 Medium, 0 Low.

@chatgpt-codex-connector
Copy link
Copy Markdown

Summary

  • Updated readTrackedHash() to short-circuit for non-.graphql fixtures, so sidecar lookup only happens when the fixture path actually uses the .graphql extension. This prevents accidental reads of the schema file itself as a hash payload for custom extensions like .gql. scripts/check-ir-parity.mjsL213-L217
  • Added a regression Bats test that creates a temporary .gql fixture, runs the parity sentinel with --json, and asserts the run passes with rustTrackedHash: null and rustTrackedHashMatches: true. test/ir-parity-sentinel.batsL240-L254
  • Committed the fix on the current branch as fix(ir): guard tracked hash lookup for non-graphql fixtures (2be54bb), and created a follow-up PR record via make_pr per your workflow instruction.

Testing

  • pnpm exec eslint scripts/check-ir-parity.mjs scripts/ir-parity-projection.mjs --max-warnings=0
  • ⚠️ BATS_LIB_PATH=packages/wesley-cli/test bats -t test/ir-parity-sentinel.bats (warning: bats binary is not installed in this environment)
  • ⚠️ BATS_LIB_PATH=packages/wesley-cli/test pnpm exec bats -t test/ir-parity-sentinel.bats (warning: pnpm exec cannot find a bats command in this environment)
  • git diff --check

View task →

@flyingrobots
Copy link
Copy Markdown
Owner Author

@codex Resolved the custom fixture sidecar self-review finding in 294dc6bf (fix(ir): skip sidecar hashes for custom parity fixtures).

Finding Resolution Regression coverage
scripts/check-ir-parity.mjs treated custom non-.graphql fixture paths as their own tracked hash sidecar, causing false tracked-rust-hash-mismatch failures for valid --fixture custom.gql runs. readTrackedHash() now only checks tracked *.l1.hash sidecars for .graphql fixture paths and returns null for other SDL path extensions. Added IR parity sentinel skips tracked hash sidecars for custom non-graphql fixtures in test/ir-parity-sentinel.bats, covering a temporary .gql fixture with no sidecar.

Validation run locally:

  • BATS_LIB_PATH=packages/wesley-cli/test bats -t test/ir-parity-sentinel.bats
  • pnpm exec eslint scripts/check-ir-parity.mjs scripts/ir-parity-projection.mjs --max-warnings=0
  • pnpm parity:ir
  • pnpm run lint:docs-whitespace
  • pnpm run lint:docs-truth
  • git diff --check
  • pnpm run preflight
  • bash scripts/smoke/repo-bats-prepush.sh
  • Push hook reran repository preflight and repo Bats smoke suite successfully.

@chatgpt-codex-connector
Copy link
Copy Markdown

Summary

  • Reviewed the trigger and PR context, then verified the repository state: HEAD is already at commit 294dc6b (fix(ir): skip sidecar hashes for custom parity fixtures) with a clean working tree, so there were no additional edits to apply in this pass.
  • Confirmed the custom-fixture sidecar guard is present: readTrackedHash() now returns null for non-.graphql fixture paths before any sidecar lookup, preventing false tracked-hash mismatches on custom extensions like .gql. scripts/check-ir-parity.mjsL213-L217
  • Confirmed regression coverage exists for deterministic mixed-case/non-ASCII projection ordering (A,B,a,aa,á) in the sentinel Bats suite, consistent with the follow-up parity hardening already on branch. test/ir-parity-sentinel.batsL230-L261

Testing

  • cd /workspace/wesley && rg --files -g 'AGENTS.md' && echo '---' && cat AGENTS.md | sed -n '1,220p' && echo '---' && sed -n '1,120p' docs/BEARING.md && echo '---' && sed -n '1,120p' docs/METHOD.md && echo '---' && rg --files docs/method/backlog/asap && echo '---' && git log -n 5 --oneline && echo '---' && git status --short
  • cd /workspace/wesley && nl -ba scripts/check-ir-parity.mjs | sed -n '200,235p' && echo '---' && nl -ba test/ir-parity-sentinel.bats | sed -n '230,270p' && echo '---' && git rev-parse --short HEAD && git status --short

No code changes were necessary, so I did not create a commit and did not call make_pr.

View task →

@flyingrobots
Copy link
Copy Markdown
Owner Author

@codex PR feedback processor closeout for current head 294dc6bf.

Issue Severity Source Addressing SHA Outcome
Rust semantic hash included top-level metadata P1 Inline review thread on scripts/check-ir-parity.mjs 5ae0e96c Replied on the thread and resolved it. rustSemanticHash() strips top-level metadata before comparing Rust command/tracked hashes, with Bats regression coverage.
JSON report omitted projected semantic bytes P2 Inline review thread on scripts/check-ir-parity.mjs 5ae0e96c Replied on the thread and resolved it. JSON fixture reports now include canonical legacyBytes and rustBytes, with Bats assertions.
Projection table ordering used locale collation P2 Inline review thread on scripts/ir-parity-projection.mjs b0cacb96 Replied on the thread and resolved it. compareByName() now uses deterministic direct string comparison, with mixed-case/non-ASCII ordering coverage.
Custom non-.graphql fixture path read itself as a hash sidecar P2 Top-level self-review comment 294dc6bf Already addressed and summarized above. readTrackedHash() now skips tracked sidecars for non-.graphql fixture paths, with .gql regression coverage.

Thread-aware verification now reports 0 unresolved review threads. gh pr checks 514 --watch=false reports all checks passing, including CodeRabbit, preflight, build-test, CodeQL, Holmes, Watson, and Moriarty.

Remaining gate: GitHub still reports reviewDecision: REVIEW_REQUIRED and mergeStateStatus: BLOCKED, so no merge was attempted.

@chatgpt-codex-connector
Copy link
Copy Markdown

Summary

  • I processed the closeout trigger against the current PR head and verified the branch is already at 294dc6b with a clean working tree, so there are no additional follow-up edits to apply. AGENTS.mdL36-L46
  • The custom fixture sidecar fix is present: readTrackedHash() now returns early for non-.graphql fixture paths, preventing false tracked-hash mismatches for custom fixture extensions. scripts/check-ir-parity.mjsL213-L217
  • The deterministic projection ordering fix is present: compareByName() uses direct string comparison (<, >, 0) instead of locale-aware collation. scripts/ir-parity-projection.mjsL239-L243
  • Regression coverage for both follow-ups is present in Bats:
  • Because no new code changes were needed, I did not create a new commit and did not call make_pr (per your required commit/PR coupling rules).

Testing

  • cd /workspace/wesley && rg --files -g 'AGENTS.md' && echo '---' && cat AGENTS.md && echo '---' && git log -n 5 --oneline && echo '---' && git status --short && git rev-parse --short HEAD
  • cd /workspace/wesley && nl -ba scripts/check-ir-parity.mjs | sed -n '205,230p' && echo '---' && nl -ba scripts/ir-parity-projection.mjs | sed -n '233,248p' && echo '---' && nl -ba test/ir-parity-sentinel.bats | sed -n '180,270p'

View task →

@flyingrobots flyingrobots merged commit 1537724 into main May 22, 2026
24 checks passed
@flyingrobots flyingrobots deleted the codex/parity-projection-crosswalk branch May 22, 2026 12:39
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.

1 participant