6ab0ae2c0ad6b726bdd3c23cf21dbc9778f5072e
GradingEngine takes an optional VariantStore (constructor DI); when the graded
task_id joins to a stored variant: the template's difficulty anchors render into
the grader user turn ("Expected effort envelope" — same bar for every variant of
the template, a-5) and the variant seed is stamped on the GradeRecord (D-029).
Lifespan reordered: VariantStore builds before the engine and is passed in.
Anchors context carries only template id + anchor numbers — D-028 learner-anonymity
preserved (leak tests keep holding). Plain engine (no store) stays variant-blind;
non-variant tasks grade without the envelope.
3 new tests: variant task -> anchors + seed present in prompt/record;
non-variant task -> no envelope; plain engine -> variant_seed None.
Suite 327 green; ruff clean.
---ci---
phase: 4
milestone: v0.3
status: verify
requirements: {covered: [REQ-3-005], partial: []}
---/ci---
Nextcraft
AI-native outcome school + marketplace — graduates prove what they can build, not what they can write.
Status
Milestone v0.1 — UI/UX Prototype (high-fidelity interactive, all mock data)
Initialized via CIAgent v0.7.0
Description
AI-native outcome school + marketplace — graduates prove what they can build, not what they can write.
Releases
24
Languages
Python
58.7%
TypeScript
40.2%
Shell
0.8%
JavaScript
0.2%
CSS
0.1%