feat(review-tutor): analyze Dart and Rust, read neighbours, and ask from evidence - #73
Merged
Merged
Conversation
ElbertePlinio
force-pushed
the
feat/review-tutor-structure-languages
branch
from
August 25, 2026 00:15
2afcb52 to
7869a39
Compare
Member
Author
|
Ready for human review at |
This was referenced Aug 25, 2026
ElbertePlinio
changed the base branch from
feat/review-tutor-structure-graph
to
main
August 25, 2026 19:16
Add Dart and Rust language tables with language-aware masking, read bounded one-hop neighbour files through Git objects behind a default-off query flag, and pin diff path prefixes so user Git config cannot change snapshot paths.
…ighbours Add an Include unchanged neighbours control, render context files and the Dart and Rust connection kinds in the list and graph, and let an evidence row open the tutor composer on its exact diff line.
ElbertePlinio
force-pushed
the
feat/review-tutor-structure-languages
branch
from
August 25, 2026 19:18
7869a39 to
3af52d0
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Refs #62 — PR 4 of 4 (analyzer extensions and tutor integration). Stacked on #72; the final link of the batched Review Tutor chain (#67 → #69 → #71 → #72 → this). Closes the #62 PR plan once merged.
What changed
Analyzer (
src/structure-languages.ts,src/structure-neighbours.ts,src/structure.ts)import/export/part/part of,package:mapping through a pubspec found by walking up from the importing file,dart:and other packages aggregated as external) and Rust (modfrom crate roots and nested files,#[path]as an exact override read from masked source,use crate::…longest-prefix with brace-group expansion,pub useas re-export,super/self,include!) as private language tables with language-aware masking (nested comments, raw/triple strings, char literals).git cat-file -sthenblob; index for worktree/staged, the commit or range target otherwise; never for PR or pasted sources), outgoing only, with caps applied before work (50 files, 256 KiB each, 2 MiB total, 400 probes, 5 s with an abortable deadline) and every cap or refusal recorded as an explicit omission. Paths are validated before any Git call (.., absolute,-,:, control characters rejected).inputs.tspins--src-prefix=a/ --dst-prefix=b/for every local Git read, fixing wrong snapshot paths underdiff.mnemonicPrefix;InputSnapshotgainsrevision/rangeTo.partpart-ofmoduseinclude, file statuscontext,snapshot.neighbours,GET /api/structure?neighbours=1(cache keyed by input + flag).UI (
src/page.ts,src/page-script.ts,src/page-styles.ts)Include unchanged neighbourscheckbox in the Structure header (always visible once a snapshot exists; unchecked and disabled with the reason in the partial note when unavailable; remembered per tab).CONTEXTon the target where a neighbour appears, and as ordinary groups when they have their own rows); the new kinds render as text chips.Ask the tutorbesideOpen in Diffon evidence rows (list and graph): switches to Diff, selects the exact evidence line (the added line for modified edges) through the existing selection path, opens the inline composer with an empty question, and refuses while this tab's question is still running.Tested
ExecFile, path rejection, determinism with reversed discovery order; real-Git end-to-end run against this repository. Page tests for the control's states, caching, persistence, focus restore, announcements, context rendering, the Ask flow on desktop and ≤860, modified-edge resolution, and the running-question guard. Rendered proof at 1440 / 390.bun run check: 552 passed | 25 skipped, 83.07% statements.Not tested
package:resolution for packages outside the repo is by design external.Local review: serious-backend panel + verification on the analyzer half; serious-user-facing panel + verification on the UI half. Human gate: merge only on Elberte's authorization.