|
139 | 139 | {"_type":"issue","id":"cy-y0f","title":"Formatter options + magic comment toggle","description":"spec §13.3, 13.4. See docs/specs/0001-cypher-frontend.md.\n\nwidth/keyword_casing/trailing_commas/indent. // cypher-fmt: off/on ranges.","status":"closed","priority":2,"issue_type":"task","created_at":"2026-04-19T12:55:32Z","created_by":"phall","updated_at":"2026-04-20T08:17:11Z","closed_at":"2026-04-20T08:17:11Z","close_reason":"done","labels":["crate:cypher-fmt","layer:fmt","tier-8"],"dependencies":[{"issue_id":"cy-y0f","depends_on_id":"cy-qgh","type":"blocks","created_at":"2026-04-19T12:55:39Z","created_by":"phall","metadata":"{}"}],"dependency_count":1,"dependent_count":0,"comment_count":0} |
140 | 140 | {"_type":"issue","id":"cy-a91","title":"Codes W6000–N8999 (lint / perf / note)","description":"spec §10.2. See docs/specs/0001-cypher-frontend.md.\n\nStyle/lint, performance, informational.","status":"closed","priority":2,"issue_type":"task","created_at":"2026-04-19T12:55:31Z","created_by":"phall","updated_at":"2026-04-19T19:01:00Z","closed_at":"2026-04-19T19:01:00Z","close_reason":"done","labels":["crate:cypher-diag","layer:diag","tier-6"],"dependencies":[{"issue_id":"cy-a91","depends_on_id":"cy-0oi","type":"blocks","created_at":"2026-04-19T12:55:38Z","created_by":"phall","metadata":"{}"}],"dependency_count":1,"dependent_count":0,"comment_count":0} |
141 | 141 | {"_type":"issue","id":"cy-nml","title":"Statement boundary splitting","description":"spec §4.6. See docs/specs/0001-cypher-frontend.md.\n\nMulti-statement files via SyntaxKind::Statement children. Trailing ; optional. Empty file is empty tree, not error.","status":"closed","priority":2,"issue_type":"task","created_at":"2026-04-19T12:55:30Z","created_by":"phall","updated_at":"2026-04-20T07:27:07Z","closed_at":"2026-04-20T07:27:07Z","close_reason":"done","labels":["crate:cypher-syntax","layer:syntax","tier-1"],"dependencies":[{"issue_id":"cy-nml","depends_on_id":"cy-e6q","type":"blocks","created_at":"2026-04-19T12:55:34Z","created_by":"phall","metadata":"{}"}],"dependency_count":1,"dependent_count":0,"comment_count":0} |
142 | | -{"_type":"issue","id":"cy-02r","title":"Drop cy-863 cfg(not(miri)) gate after PR #43 + cy-208 fork patch land","description":"Tiny follow-up. After:\\n1. PR #43 (cy-yrz) merges (rowan 0.16 + [patch.crates-io] → phall1/rowan:fix/sb-node-cache-rehash)\\n2. The fork branch carries cy-208's cursor::free fix (already pushed, commit 9e7abd1)\\n\\nRemove the #[cfg(not(miri))] attribute and the explanatory comment paragraph above:\\n crates/cyrs-plan/src/lower.rs:lower_statement_no_panic_on_unresolved_inside_patternpredicate_text (around line 2100)\\n\\nVerify with: cargo +nightly miri test -p cyrs-plan -- lower_statement_no_panic_on_unresolved_inside_patternpredicate_text\\n\\nShould pass — cy-208's cursor::free fix is the missing piece.\\n\\nOpen as a tiny PR. Estimated 3-line diff.","status":"in_progress","priority":3,"issue_type":"task","assignee":"phall","created_at":"2026-05-11T00:18:25Z","created_by":"phall","updated_at":"2026-05-11T00:29:53Z","started_at":"2026-05-11T00:29:53Z","dependencies":[{"issue_id":"cy-02r","depends_on_id":"cy-yrz","type":"blocks","created_at":"2026-05-10T20:18:34Z","created_by":"phall","metadata":"{}"}],"dependency_count":1,"dependent_count":0,"comment_count":0} |
| 142 | +{"_type":"issue","id":"cy-02r","title":"Drop cy-863 cfg(not(miri)) gate after PR #43 + cy-208 fork patch land","description":"Tiny follow-up. After:\\n1. PR #43 (cy-yrz) merges (rowan 0.16 + [patch.crates-io] → phall1/rowan:fix/sb-node-cache-rehash)\\n2. The fork branch carries cy-208's cursor::free fix (already pushed, commit 9e7abd1)\\n\\nRemove the #[cfg(not(miri))] attribute and the explanatory comment paragraph above:\\n crates/cyrs-plan/src/lower.rs:lower_statement_no_panic_on_unresolved_inside_patternpredicate_text (around line 2100)\\n\\nVerify with: cargo +nightly miri test -p cyrs-plan -- lower_statement_no_panic_on_unresolved_inside_patternpredicate_text\\n\\nShould pass — cy-208's cursor::free fix is the missing piece.\\n\\nOpen as a tiny PR. Estimated 3-line diff.","status":"closed","priority":3,"issue_type":"task","assignee":"phall","created_at":"2026-05-11T00:18:25Z","created_by":"phall","updated_at":"2026-05-11T01:36:38Z","started_at":"2026-05-11T00:29:53Z","closed_at":"2026-05-11T01:36:38Z","close_reason":"Merged via PR #45; cy-863 miri gate dropped, cargo update bumped rowan to phall1/rowan@9e7abd11 (cy-208 cursor::free fix), un-gated test passes under miri locally.","dependencies":[{"issue_id":"cy-02r","depends_on_id":"cy-yrz","type":"blocks","created_at":"2026-05-10T20:18:34Z","created_by":"phall","metadata":"{}"}],"dependency_count":1,"dependent_count":0,"comment_count":0} |
143 | 143 | {"_type":"issue","id":"cy-208","title":"rowan cursor::free SB UB: Box::from_raw races with sibling SyntaxNodeChildren iterator's retag","description":"Third distinct rowan miri SB violation (separate from #211 GreenNodeData and our #212 GreenTokenData fixes — both already stacked on phall1/rowan:fix/sb-node-cache-rehash).\\n\\nReproducer: with the rowan 0.16 bump + #211/#212 patches in place (cy-yrz branch), removing the cfg(not(miri)) gate from in crates/cyrs-plan/src/lower.rs trips:\\n\\n\\n\\nRoot cause (read of rowan/src/cursor.rs from the fork branch): does Box::from_raw(data) to drop a NodeData when its refcount hits zero, but a sibling SyntaxNodeChildren iterator holds an active SharedReadOnly retag covering the same [0x0..0x50] allocation. The retag was created from cyrs-hir/src/lower.rs:478 where we collect children via for_each.\\n\\nCaught by: cy-yrz, after removing cy-863's miri gate.\\n\\nLikely fix shape: cursor::free needs to release/invalidate the NodeData via raw-ptr drop_in_place + dealloc (skipping Box's drop, which adds the protected retag). Same family as our #212 fix but in a different code path.\\n\\nNext steps:\\n1. File third upstream PR against rust-analyzer/rowan (after #212 lands, or stacked on top).\\n2. In the meantime: keep cyrs's cy-863 test gated cfg(not(miri)). Pointer to this bead in the gate comment.\\n3. Once upstream lands, drop the cy-863 gate and ship the follow-up.\\n\\nNOT a v1 launch blocker — the test logic is verified at runtime; only miri (and only this specific test) flags the issue. The fmt path (cy-eu2) is fully unblocked by the existing #211+#212 stack.","notes":"Strategy change: ChayimFriedman2 told us upstream rowan is being rewritten after rust-analyzer's assist migration, and is inclined to close PRs #211 + #212. Also noted that rowan passes Tree Borrows; SB rule we're hitting is unlikely to be in the final Rust aliasing model. = our 'UB' is academic miri-strictness, not real soundness. Reroute: patch cursor::free directly on phall1/rowan:fix/sb-node-cache-rehash branch (NO upstream PR), then cy-863's miri gate can come off. Smaller scope than originally planned.","status":"closed","priority":3,"issue_type":"bug","assignee":"phall","created_at":"2026-05-11T00:02:44Z","created_by":"phall","updated_at":"2026-05-11T00:18:19Z","started_at":"2026-05-11T00:10:06Z","closed_at":"2026-05-11T00:18:19Z","close_reason":"Fork patch shipped to phall1/rowan:fix/sb-node-cache-rehash (commit 9e7abd1). Replaced Box::from_raw with drop_in_place+dealloc in cursor::free + restructured to_next_sibling*/to_next_sibling_or_token to scope \u0026mut NodeData borrow before free path (used existing dec_rc_raw helper). Regression test miri_cursor_free_sb passes; full cargo test clean. cyrs's [patch.crates-io] (PR #43 in flight) auto-picks up the commit. Gate removal in cyrs is a follow-up cyrs PR after #43 merges (cy-863 gate at crates/cyrs-plan/src/lower.rs:2100, ~3 lines).","dependency_count":0,"dependent_count":0,"comment_count":0} |
144 | 144 | {"_type":"issue","id":"cy-yrz","title":"Bump cyrs rowan 0.15 → 0.16 + port SB fix to 0.16 branch on phall1/rowan","description":"Workspace currently pins rowan = '0.15' (Cargo.toml:57). Latest stable upstream is 0.16.1 (max_stable per crates.io). The cy-pom agent confirmed the SB bug exists on master (0.16.x) too, so an upgrade alone won't fix anything — but staying on 0.15 long-term means carrying a backport patch indefinitely.\\n\\nPath:\\n1. Port the cy-pom fix from phall1/rowan v0.15.18 branch (fix/sb-thinarc-deref) to a master/0.16 branch (fix/sb-thinarc-deref-0.16). May require API adjustments — minor releases between 0.15 and 0.16 may have changed signatures.\\n2. Open a second PR on phall1/rowan against the 0.16 branch.\\n3. Bump root Cargo.toml: rowan = '0.16'.\\n4. Update [patch.crates-io] in Cargo.toml to point at the 0.16 fix branch.\\n5. Audit cyrs for any 0.15 → 0.16 API breakage (likely small, a minor bump shouldn't break much). Fix as needed.\\n6. cargo update -p rowan; verify lockfile resolves to 0.16.x via the patch.\\n7. Run miri/cyrs-* and remove the cfg(not(miri)) test gates from cy-eu2 (cypher-fmt) and cy-863 (cypher-plan) — they should be unnecessary once the patched rowan is in place.\\n\\nDepends on: cy-pom (the fork PR exists), and ideally on the upstream engagement bead landing (so we can use the upstream branch instead of our fork).\\n\\nAcceptance:\\n- rowan = '0.16' in cyrs Cargo.toml\\n- [patch.crates-io] points at a 0.16 fix branch (fork or upstream)\\n- miri/cyrs-fmt + miri/cyrs-plan green with the cfg(not(miri)) gates removed\\n- cargo build/test workspace clean","notes":"cy-1rp eval (closed) confirmed: stay on rowan. Path: pin [patch.crates-io] to phall1/rowan:fix/sb-node-cache-rehash (stacks #211 + our #212), bump root Cargo.toml rowan='0.16', drop cfg(not(miri)) gates from cy-eu2 (cypher-fmt) and cy-863 (cypher-plan). Once upstream merges #211+#212, switch [patch.crates-io] → tagged 0.16.x release and drop the patch.","status":"closed","priority":3,"issue_type":"task","assignee":"phall","created_at":"2026-05-10T22:13:01Z","created_by":"phall","updated_at":"2026-05-11T00:28:50Z","started_at":"2026-05-10T23:56:09Z","closed_at":"2026-05-11T00:28:50Z","close_reason":"Merged via PR #43; rowan 0.15→0.16, [patch.crates-io] to phall1/rowan:fix/sb-node-cache-rehash, dropped cy-eu2 cfg(not(miri)) gates. SB rehash bug confirmed dead in CI logs (miri now progresses past the rowan SB layer to insta/pidfd_spawnp, which is unrelated infra). cy-863 plan gate kept, blocked on cy-02r follow-up.","dependencies":[{"issue_id":"cy-yrz","depends_on_id":"cy-934","type":"blocks","created_at":"2026-05-10T18:13:22Z","created_by":"phall","metadata":"{}"}],"dependency_count":1,"dependent_count":2,"comment_count":0} |
145 | 145 | {"_type":"issue","id":"cy-2nd","title":"Wire phall1/rowan fork via [patch.crates-io] and remove cfg(not(miri)) test gates (cy-eu2, cy-863)","description":"Once cy-pom (rowan SB upstream fix on phall1/rowan) lands and is verified, integrate it into cyrs:\\n\\n1. Add to root Cargo.toml:\\n [patch.crates-io]\\n rowan = { git = 'https://github.com/phall1/rowan', branch = 'fix/sb-thinarc-deref' }\\n2. cargo update -p rowan; verify lockfile points at the fork.\\n3. Remove cfg(not(miri)) gates added in cy-eu2 (crates/cypher-fmt/src/lib.rs around line 397 and 410) and cy-863 (crates/cypher-plan/src/lower.rs around line 2095).\\n4. Run miri/cyrs-fmt and miri/cyrs-plan locally and in CI; both must be green with the gates removed.\\n5. Once stable, consider promoting the patch from a branch to a tag for reproducibility.\\n\\nDepends on: cy-pom (in flight)\\n\\nAcceptance:\\n- [patch.crates-io] entry in Cargo.toml; rowan resolves to fork\\n- Both previously-gated tests run under miri without SB violations\\n- CI green","status":"open","priority":3,"issue_type":"task","created_at":"2026-05-10T21:24:18Z","created_by":"phall","updated_at":"2026-05-10T21:24:18Z","dependencies":[{"issue_id":"cy-2nd","depends_on_id":"cy-pom","type":"blocks","created_at":"2026-05-10T17:24:24Z","created_by":"phall","metadata":"{}"},{"issue_id":"cy-2nd","depends_on_id":"cy-yrz","type":"blocks","created_at":"2026-05-10T18:13:23Z","created_by":"phall","metadata":"{}"}],"dependency_count":2,"dependent_count":0,"comment_count":0} |
|
0 commit comments