Repository navigation
feat: add teacher-configurable submission matching (P-673) - #8
Hidden character warning
Conversation
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
|
Navigate logical layers of code changes, visualize relationships, and explore their blast radius. No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Advanced Run ID: 📒 Files selected for processing (25)
Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review. 📝 WalkthroughWalkthroughThe change adds assignment-based matching for students, files, and functions. A new CLI command previews matching decisions as JSON. Grading uses matching rules and records unresolved decisions in reports. ChangesAssignment matching
Priority: ➖ Normal Estimated code review effort: 4 (Complex) | ~60 minutes Change: Feature Sequence Diagram(s)sequenceDiagram
participant CLI as cmd_match
participant Prep as prepare_batch
participant Preview as matching::preview
participant Python as matching.py
participant Output as JSON output
CLI->>Prep: prepare inputs in preview mode
CLI->>Preview: pass inputs, specs, rules, and Python command
Preview->>Python: send selected-file function requests
Python-->>Preview: return function decisions
Preview-->>CLI: return matching preview
CLI->>Output: write pretty-printed preview JSON
Merge Risk: ⚪ Minimal · up to The notes checkout still requires repository access, but this change does not introduce that access problem. No issue identified here needs to block the merge. Security Architecture ReviewSecurity architecture risk: 🔵 Low · up to Matching is now an explicit grading control rather than an automatic fuzzy substitution. The inspected paths keep file selection within each student's submission, preserve Canvas identity, and withhold grades for unresolved matching. No introduced security vulnerability was established, but the review does not establish complete protection across every filesystem and execution environment. Retained concerns Security review detailsSecurity Blast Radius
Security Findings and Attack Paths
Trust Boundaries and Controls
Resilience and Maintainability Implications
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
Full details: Docstring CoverageExplanation Docstring coverage is 45.78% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 83 functions across 21 files. (4 skipped: 4 unsupported.)
✨ Finishing Touches 💡 1📝 Generate docstrings 💡
🧪 Generate unit tests (beta)
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. Comment |
When submissions use nested directories, duplicate filenames or nonstandard function names, teachers need to resolve the association before grading. This adds shared
assignment.tomlrules for student ownership, item files, function aliases and per-student overrides, plusscriptmark matchto preview candidates and their rule evidence without importing student code.Exact matches and unique declared aliases can execute. Ambiguous matches, fuzzy suggestions and invalid explicit overrides require review and withhold grades as teacher matching faults. Results retain original file/archive provenance and runtime function decisions; CLI and Python
run/gradeuse the same configuration. Canvas source identities remain authoritative.Includes a runnable matching bundle and regression coverage for nested/shared files, conflicting rules, aliases, overrides, archives and Canvas provenance. The matching guide and validation record follow the P-850 notes workflow; this PR records the published notes commit instead of restoring a root documentation tree. Static preview defers dynamic exports and syntax failures to execution. Versioned result/regrading work remains separate.
Validation:
cargo test --offline --workspace: 379 tests passed with Python 3.13.cargo test --offline -p scriptmark --test matching --test harness: all 41 tests passed.cargo fmt --check,cargo clippy --offline --all-targets -- -D warnings,git diff --check, Ruff and ty passed.run/gradesmoke checks passed.Related to P-673
Summary by CodeRabbit
scriptmark matchto preview student, file, and function matches and export candidates as JSON without running submissions.