Fix groups

All 439 faults from priorities.demo, grouped by the one change that would fix them together. Each fault sits in exactly one group. Groups run in pipeline order, since a mistake upstream corrupts everything after it. Within a stage they are sorted by combined importance. Open a group to see its faults; each links to its card with the live evidence.

blockingseriousmoderate#n = rank on the priorities page

Reading the question paper

The V5 engine's job. Testable in your lab today at localhost:8081.

6 groups · 118 faults

Question tree: sections, numbering, sub-parts

Read the paper as a tree (section > question > sub-part) keyed by the PRINTED label, not the ordinal; one question = one row.

Where this started: the p7 probe scored 3 of 9 checks.

Fixed 20 Sep — 20 fixes in the V5 reader, measured 29/29 papers live (27/29 on frozen readings), 170 tests. Not yet merged.

296 blocking13 serious10 moderate11 in the top 100 · best #11
  1. M008Section-restart numbering flattened to a linear list#11
  2. M009The printed label never travelled, so the ordinal is used instead#21
  3. F02One miscounted question changes every mark in the section#30
  4. F93The same paper extracted twice gives a different structure#53
  5. M078Sub-part identity collapsed#54
  6. F101A shared passage is not stored as its own object#56
  7. F115A data table, ledger or balance sheet as a question is flattened#57
  8. F67A compound question with several independent asks is stored as one#59
  9. F69Case-study and source-based questions lose the source binding#60
  10. F03A header at the top of a page splits a question in two#95
  11. F04The count check catches missing questions but never extra ones#96
  12. F123Cross-referencing questions cannot be resolved#172
  13. F50Half of all papers have no usable section labels#178
  14. F68Multi-blank fill-in-the-blanks collapses to a single answer#182
  15. F122A question printed twice by a copy-paste error is mishandled#197
  16. F08The two-reader merge cannot fix question order, and says so#242
  17. F09A question spanning two pages always reports a mismatch#243
  18. F13A mark printed on one sub-part is thrown away#245
  19. F15Options shared by several questions are lost#246
  20. F39Section headers say how many questions they hold; this is ignored#250
  21. F128'Complete the table / reaction / equation' misreads the given part as the answer#309
  22. F138Mixed lower/upper case labels — (a) sub-part vs (A) option — collide#312
  23. F73A deliberate gap in numbering is read as a missing question#321
  24. F23V4 works out which pages a question spans, then throws it away#402
  25. F28The estimated question count is never sanity-checked#404
  26. F44The printed question number repeats across a paper#406
  27. F48Similar-looking questions can be merged into one#408
  28. F72Sub-parts nested more than two levels deep flatten#410
  29. F129A poem or verse with line references loses its numbering#426

Marks: reading them and making them add up

A mark is read with provenance or left empty (never defaulted), fractions allowed, and every total reconciled against the printed maximum.

Next group up, on the bench the tree group left behind. (The p7 mark faults quoted here were fixed with the tree work; what remains is the reader attaching a number to the wrong line.)

246 blocking10 serious8 moderate11 in the top 100 · best #25
  1. F85An unreadable mark silently defaults to 4#25
  2. M022A one-mark MCQ stamped at six marks#41
  3. M036The paper's own total is wrong at source#46
  4. M037The reconciliation we have cannot catch the error we care about#47
  5. F36Two of the three mark totals are not independent#50
  6. F12Half marks are rounded away and marks go missing#58
  7. F71The maximum-marks vs sum-of-questions gap is never reconciled#61
  8. F132The paper's own total does not equal the sum, and the engine must guess which is right#65
  9. F53The scheme-sum gate checks the total, not the split#73
  10. F33When the mark cannot be read, 1 is stored instead of nothing#98
  11. F34V4 checks its own work, then ignores the result#99
  12. M104The scheme prices a different number of marks than the question is worth#136
  13. F107A worksheet or DPP with no marks defaults marks everywhere#168
  14. F113Marks live in a cover-page blueprint, not beside the questions#171
  15. F84Fractional marks cannot exist at the schema level#184
  16. F86Global 'each question carries N marks' instructions are ignored#185
  17. F87Split marks like '2+3=5' lose the split#186
  18. F20One unreadable section total throws away all of them#193
  19. F88A printed negative-marking rule is not carried into the scheme#198
  20. F27A question genuinely worth zero is stored as 1#249
  21. F137Marks printed far from the stem (after the answer space) are mis-attached#311
  22. F21Only page 1 is checked for the paper's total#313
  23. F45Nothing checks that the marks suit the question type#318
  24. M233A paper that knows it does not add up still publishes#357

Choice & optional questions

One representation for 'OR' / 'attempt any N of M' / section choice, carried from the paper through the key to the total and the denominator.

Mridul's V5 fork targets this group (F70, M010). Coordinate before touching it.

133 blocking8 serious2 moderate7 in the top 100 · best #3
  1. M010Internal choice is not modelled, so the skipped option is marked absent#3
  2. F70'Attempt any N of M' at the paper or section level has no representation#19
  3. F37A choice between two whole sections cannot be recorded#51
  4. M145Choice groups double-counted into the paper total#68
  5. M146The denominator after choice#69
  6. M196A bonus or optional extra question#71
  7. F74Internal choice printed under one repeated number is mis-handled#74
  8. M080"Attempt any five of seven" and the student attempts six#126
  9. M111"Any three of the following" where the key lists six#142
  10. F112'Attempt any two of (a)-(e)' inside one question is not represented#170
  11. F14Choice questions always assume you answer one#176
  12. M081The student answers both alternatives#209
  13. F24A choice printed before its question is counted twice#314

Figures & diagrams

Crop and attach every figure to its question (and to the key), instead of describing it in words.

145 blocking4 serious5 moderate5 in the top 100 · best #7
  1. F57A draw / derive / prove / construct question cannot have a model answer#7
  2. F01Every figure is lost, with no warning#22
  3. M014Diagrams, graphs and maps the student drew cannot be marked#36
  4. M023No figure is attached, so the key answers a written description of it#42
  5. F38A lost figure becomes a written description, and the description can be wrong#52
  6. F127A label-the-diagram question loses both the figure and the blanks#173
  7. F18A question that is only a diagram comes back empty#177
  8. F59A numeric key that needs the figure's data cannot be computed#179
  9. F134A question that is a screenshot/image has no text at all#266
  10. M215Marking the labels and ignoring the drawing#284
  11. F104An MCQ whose correct option is itself a figure has no showable key#306
  12. F116Graph-plot and graph-paper questions lose the graph#307
  13. F29A diagram shared by several questions is lost#315
  14. F91A chemistry structure that is not valid SMILES is stored anyway#411

Things that aren't questions read as questions

Classify every block before it becomes a question: instructions, answer keys, booklets, branding, watermarks, cover forms, rough-work pages, margin codes.

212 blocking6 serious13 moderate3 in the top 100 · best #75
  1. F81Two question sets concatenated in one PDF become one oversized paper#75
  2. F139The uploaded 'question paper' is actually the answer key or solved paper#81
  3. F06Bilingual papers are counted twice#97
  4. F114One PDF holding paper + scheme + answer sheet reads the scheme as questions#110
  5. F108A printed answer key or OMR grid at the end is read as more questions#169
  6. F130A paper split across multiple uploaded files is not reassembled#174
  7. F131Numbered 'General Instructions' are read as the first questions#175
  8. F05An attached answer booklet is read as more questions#195
  9. F110A recycled previous-year paper carries stale content and marks#196
  10. F126Side-by-side bilingual columns pair the wrong halves#308
  11. F133Course-outcome / Bloom's / competency codes in the margin are mistaken for marks#310
  12. F31Marks in the margin are confused with question numbers#316
  13. F32Page numbers in the footer can be read as marks#317
  14. F75Instructions interleaved with questions are ingested as stems#322
  15. F30The same page scanned twice is read twice#405
  16. F109Coaching-centre branding is ingested as questions#422
  17. F121Student-detail form fields on the cover are read as content#424
  18. F124'For rough work' and intentionally blank pages are miscounted#425
  19. F83Watermarks, stamps and running headers/footers are read as content#429
  20. F119A diagonal watermark over every page occludes and repeats#437
  21. F120An errata/correction slip cannot be applied#438

Question-paper files the engine can't read

Validate and normalise the uploaded paper first: encrypted PDFs, phone photos, bad text layers, symbol fonts, rotation, 2-up scans.

1710 serious7 moderate0 in the top 100 · best #183
  1. F78A scan's baked-in OCR text layer is trusted over the image#183
  2. F106Word 'Symbol font' math extracts as the wrong letters#192
  3. F10Both safety checks switch off on the hardest pages#244
  4. F16Pages are read raw, skipping the clean-up step that already exists#247
  5. F17A blank page and a page that failed to read look the same#248
  6. F42Anything can be uploaded; nothing checks it is a question paper#252
  7. F77Two-column question papers break reading order#254
  8. F105An nth-generation photocopy is read as a clean paper#265
  9. F76Encrypted or password-protected PDFs have no handling#267
  10. F82A photographed or handwritten question paper is out of scope but accepted#323
  11. F90A stem whose math fails to compile is stored raw#324
  12. F140Emoji, private-use glyphs and exotic Unicode in a stem break silently#330
  13. F79Landscape, rotated and mixed-orientation pages degrade silently#331
  14. F117A phone photo (JPG/PNG/HEIC) uploaded as the paper has no text layer#335
  15. F125OCR-hostile fonts (all-caps, decorative, tiny, condensed) degrade silently#415
  16. F118A 2-up booklet scan halves the page geometry#423
  17. F136A two-page-spread scan reads the gutter shadow as a column divide#427

Writing the answer key

Testable in the lab once the OpenRouter key is in.

3 groups · 55 faults

Answer key is wrong or ungrounded

Ground keys in a source for every subject, use an independent judge, and never let a low-confidence key mark a class unreviewed.

205 blocking11 serious4 moderate9 in the top 100 · best #1
  1. F54A generated key can be confidently wrong, with no external truth#1
  2. M021The key is simply wrong, and the whole class pays#8
  3. F51Every non-Chemistry key is an ungrounded guess#23
  4. M016Marking against a scheme that describes a different question#37
  5. F55The key judge is the key generator's twin#66
  6. M119A keyed answer that has since changed#77
  7. F56Open-ended and opinion questions still get one authoritative answer#82
  8. F58Time-sensitive answers go stale with no 'as of' date#83
  9. M025Two instructions in one prompt, and the wrong one wins#88
  10. M108The key and its own scheme disagree#139
  11. M109The key restates the question, or is truncated, or defers#140
  12. F60A question with missing data still gets a confident key#180
  13. F66RAG can ground a key on the wrong passage#181
  14. F97Subject or exam-type misclassification poisons the whole downstream#187
  15. M116Board and syllabus mismatch#226
  16. F61The key is generated in English regardless of the paper's language#253
  17. M210The scheme is in a different language from the paper#280
  18. F63key_points and the model answer can disagree#319
  19. F65The board-vs-JEE register knob can miss the board's actual marking idiom#320
  20. F64Key confidence is self-reported and never calibrated#409

Key lifecycle: missing, regenerated, versioned, approved

No grading without an approved key; key edits re-grade; every mark records the key version that produced it.

166 blocking10 serious8 in the top 100 · best #10
  1. M020No key exists and the paper is marked anyway#10
  2. M026A paper that cannot be marked at all is marked anyway#26
  3. F96A confident auto-fix can be confidently wrong#31
  4. M017The key is corrected and the marks do not follow#38
  5. M018The marks are corrected and the key is not#39
  6. F62Key regeneration is non-deterministic and can fail forever#67
  7. M038The key-side review gate is never armed#89
  8. M042Grading fires before the key is approved#91
  9. M171Whether a key edit re-grades automatically#103
  10. F100The 'never silently dropped' guarantee is not yet in force#114
  11. M105No scheme at all for a written question#137
  12. M106Key generation is not deterministic across re-uploads#138
  13. M107Eight prompt versions marking one corpus#222
  14. M120Which key version produced a mark is not recorded#229
  15. F40There is nowhere to store an answer the paper already prints#251
  16. F99AUTO_APPROVED does not guarantee the verifier cleared it#255

Key accepts only one right answer

Schemes that allow alternative methods, units, synonyms, orderings and tolerances; the grader credits a valid route it recognises.

193 blocking9 serious7 moderate4 in the top 100 · best #2
  1. M024The scheme names one route, so a valid alternative method scores zero#2
  2. F52The marking scheme is written as one method#6
  3. M019An MCQ with no option letter committed#40
  4. M154Feedback that concedes the answer is right and deducts anyway#55
  5. M207Negatively phrased stems#109
  6. F111Shuffled sets make the key's option letter meaningless#116
  7. M110Several valid answers, one keyed#141
  8. M112Unordered lists marked as ordered#143
  9. M208Alternative units accepted or not#189
  10. M113Numerical tolerance is undefined#223
  11. M114Significant figures and units policy#224
  12. M115Spelling and synonym tolerance is undefined#225
  13. M117Assertion–Reason items#227
  14. M118Match-the-following, multi-blank and justified true/false#228
  15. M206Unreachable marks in the scheme#278
  16. M209The scheme pays for a step the question supplies#279
  17. M212Matching the model answer's wording rather than its meaning#281
  18. F102A non-standard Assertion-Reason option set mis-maps#399
  19. F103Partial-marking intent for multiple-correct questions is not captured#400

Marking the student's sheet

The grading pipeline. Not yet exercised in the lab.

9 groups · 187 faults

How the grader judges an answer

Deterministic, bias-tested grading that marks the student's answer (not the model's), and never turns a failure into a zero.

357 blocking20 serious8 moderate9 in the top 100 · best #5
  1. M033Two passes over the same answer disagree, on a fifth of them#5
  2. M031Unparseable grader output becomes a zero#13
  3. M027Hallucinated error — a correct line declared wrong#17
  4. M030Blank, wrong and unreadable all store as zero#27
  5. M028Refusal or moralising on a sensitive-topic answer#43
  6. M032The grader marks the model answer instead of the student's#44
  7. M132Length bias#62
  8. M133Name and identity bias#63
  9. M135Run-to-run non-determinism on the same sheet#78
  10. M029Prompt injection written on the answer sheet#105
  11. M136Sycophancy — the mark moves when it is challenged#106
  12. M126Double jeopardy, and the same error penalised across questions#108
  13. M134Position and anchoring effects within a script#112
  14. M121Keyword bluff scores full; a correct long answer is penalised#144
  15. M124Error carried forward is not honoured#145
  16. M125Follow-through across questions#146
  17. M127Composition needs band descriptors, not step marks#147
  18. M131Handwriting halo#148
  19. M137Answering a different part than the one asked#149
  20. M138More points offered than asked for#150
  21. M140An ambiguous or wrong-as-printed question#151
  22. M122A right answer with no working, and a right answer from wrong working#230
  23. M128Calibration is not stable across tenants#231
  24. M129A fluent answer to a different question#232
  25. M130A memorised paragraph delivered regardless of the question#233
  26. M139Multiple-select MCQs answered partly, and changed answers#264
  27. M213Negative marking is not modelled on theory#282
  28. M214Leniency that tracks transcription confidence#283
  29. M216Credit for content the question excluded#285
  30. M219Two graders applied to one question#286
  31. M221An answer that argues with the marking#288
  32. M123The answer contradicts itself#326
  33. M211Cross-contamination between students#350
  34. M218The question's own words credited as the answer#351
  35. M217Internal consistency with the student's own earlier answer#430

Answer-sheet intake

Check each upload: is it an answer sheet, for this paper, for this student, complete, in order, not a duplicate.

315 blocking15 serious11 moderate5 in the top 100 · best #9
  1. M002A missing page becomes a silent zero#9
  2. M003A script submitted against the wrong paper#32
  3. M004The question paper submitted as the answer sheet#33
  4. M001Nothing checks that the upload is an answer sheet#85
  5. M005The capture cap truncates a long script#86
  6. M053A duplicate page displaces a real one#107
  7. M060An upload interrupted mid-batch looks complete#111
  8. M054A cropped page cuts an answer off at the edge#117
  9. M055Pages uploaded out of order#118
  10. M057Two students' sheets in one upload#119
  11. M058Photograph quality is a free variable nobody has swept#120
  12. M061Two intake paths that do not behave alike#121
  13. M063A sheet the teacher has already marked in red#122
  14. M064Answers written on the question paper itself#123
  15. M067Billed pages are not distinct pages#124
  16. M159Junk is stamped as graded and billed#157
  17. M056The wrong student's sheet under a name#199
  18. M059Re-submission after grading has no defined outcome#200
  19. M062The roll number on the sheet is never read#201
  20. M066Pencil, erased and rewritten#202
  21. M182Submission after the window closes#258
  22. M176A thumb or a shadow across the text#268
  23. M178A returned script carrying our own previous marking#336
  24. M180Highlighter and gel-pen bleed#337
  25. M181Two students with the same name in one batch#338
  26. M183Concurrent submissions from two devices#339
  27. M174A photo of a screen, or a third-generation photocopy#416
  28. M177A staple or binding covering the margin#417
  29. M179The booklet cover's marks grid read as answers#418
  30. M173Show-through from the reverse side#434
  31. M175File-level failures#435

Stored marks & totals integrity

One source of truth for each mark and total, with bounds, rounding rules, and recompute-on-edit.

252 blocking4 serious19 moderate3 in the top 100 · best #18
  1. M035A withdrawn question cannot be withdrawn#18
  2. M034A mark with neither a transcription nor a breakdown#45
  3. M236Grade boundaries from a wrong total#72
  4. M142Totals that drift between reads#152
  5. M143A per-question correction does not reliably recompute the total#153
  6. M144Two arrays of marks that disagree#154
  7. M222A mark outside the question's bounds#163
  8. M227A mark stored as a string, a null or NaN#164
  9. M228Floating-point drift in half marks#165
  10. M234A total above the paper's maximum#190
  11. M141The breakdown does not reconcile with the mark#234
  12. M231Absent is not distinguishable from zero#240
  13. M229One answer graded into two rows#289
  14. M232Grace marks, moderation and scaling#290
  15. M235Final-total rounding convention#291
  16. M239Section subtotals are not stored#292
  17. M240A question in the total that was never printed#293
  18. M241A question removed after publication#294
  19. M223Step awards that do not sum to the mark#352
  20. M224Half-mark rounding has no stated rule#353
  21. M225A multi-mark answer with an empty breakdown#354
  22. M226Evidence quoted from the question rather than the answer#355
  23. M230A mark with no question id#356
  24. M237Different precision in different places#358
  25. M238Best-of across re-attempts#359

Reading the handwriting

Store a transcription for every answer, and harden notation (maths, chemistry, units, ledgers).

241 blocking15 serious8 moderate1 in the top 100 · best #35
  1. M013No transcription is stored, so no mark can be defended#35
  2. M091Mathematical notation#101
  3. M092Chemistry — formulae, charges, arrows, structures#130
  4. M095Code and markup in an answer#131
  5. M096One-word answers, where transcription noise decides the mark#132
  6. M099A transcribed table loses the column a figure was in#133
  7. M101Underlined or boxed final answers carry meaning#135
  8. M088Digit and letter confusions that change the answer#213
  9. M089Strike-outs and carets#214
  10. M090Overwritten digits#215
  11. M093Accountancy — Dr/Cr, columns and lakh grouping#216
  12. M094Units and symbols#217
  13. M097Transcription hallucination#218
  14. M098Legibility is recorded and never acted on#219
  15. M102Answers in block capitals#220
  16. M103Student shorthand and logic symbols#221
  17. M198Scientific notation in three dialects#274
  18. M201Vector notation#275
  19. M202Currency written as ₹, Rs. or a trailing /-#276
  20. M204Degree, minute, prime and second notation#277
  21. M199Decimal point versus decimal comma#346
  22. M200Isotope and oxidation-state notation#347
  23. M203Two columns on one page#348
  24. M205Spelling variants of proper nouns#349

Teacher review & trust

Flags that are right, a queue ordered by risk, per-answer review, and teacher corrections that nothing overwrites.

163 blocking5 serious8 moderate4 in the top 100 · best #14
  1. M039Half the flags are wrong, so the teacher stops trusting all of them#14
  2. M040A re-grade overwrites the teacher's correction#15
  3. M148A submission stuck mid-grading, indefinitely and silently#29
  4. M052The review screen itself crashes#94
  5. M150Review is per sheet, not per answer#113
  6. M147Confidence is uncalibrated#155
  7. M149The queue is not ordered by likelihood of error#156
  8. M243No third opinion when two passes disagree#194
  9. M151An override with no reason recorded#235
  10. M248A paper can be published with answers still flagged#241
  11. M246No dispute path for a student#256
  12. M260A teacher-facing warning that is written and never displayed#301
  13. M242A review backlog with nowhere to act#360
  14. M244Two reviewers on one sheet#361
  15. M245No record that a sheet was reviewed before publication#362
  16. M247Flag reasons are free text#363

Finding each answer on the sheet

Locate answers by the student's own labels with a real 'not found' state, never a zero.

162 blocking9 serious5 moderate2 in the top 100 · best #12
  1. M011A location failure is stored as a zero that counts#12
  2. M012The internal diagnostic is printed to the student#87
  3. M077Bare-letter MCQ answers are not recognised#125
  4. M083The answer is a table or a hand-ruled ledger#127
  5. M084Two answers under one heading, or one heading for two#128
  6. M075An answer written elsewhere with a pointer#206
  7. M076Answers written out of attempt order#207
  8. M079The student numbers it wrong and never recovers#208
  9. M082The student copies the question out before answering#210
  10. M085A sub-part answered where the parent is not#211
  11. M086Roman and Arabic numerals collide#212
  12. M192The marks in brackets read as the question number#272
  13. M194Part of one answer written inside another's block#273
  14. M193The same question printed twice#343
  15. M195Answers labelled by topic, not by number#344
  16. M197An answer to a question that is not on this paper#345

Answer-sheet pages & geometry

Normalise pages (orientation, resolution, spreads, supplements) and link an answer across page breaks.

182 blocking7 serious9 moderate3 in the top 100 · best #20
  1. M006Upside-down pages, and the detector that cannot fix them#20
  2. M007The page is downscaled below the resolution handwriting needs#34
  3. M069The page-to-question map is incomplete#100
  4. M06890°-rotated pages#203
  5. M070A continuation across a page break is not linked#204
  6. M071An answer spanning two non-adjacent pages#205
  7. M073Supplementary sheets restart at page 1#262
  8. M074Rough work read as an answer#263
  9. M187A torn page or a missing corner#269
  10. M189The student's own page numbers contradict the upload order#270
  11. M191Greyscale and bit-depth reduction#271
  12. M072A two-page spread photographed as one image#334
  13. M184Skew and perspective#340
  14. M186One page photographed as two overlapping images#341
  15. M188Stitched panoramas and extreme aspect ratios#342
  16. F47Straightening a page must never flip it upside down#407
  17. M185Both sides of a booklet, interleaved#414
  18. M190A landscape answer on a portrait page#419

Feedback text to students

Feedback that matches the mark, sits under the right question, gives one next step, and has no LaTeX leaks.

Worked 20 Sep — a guard now routes feedback that contradicts its own mark to a teacher. Measured on only 24 real comments, so most of this group is still unmeasured. M153 was found to be WRONG: students see rendered maths; LaTeX leaks only to the teacher's box, the parent PDF and WhatsApp.

134 serious9 moderate2 in the top 100 · best #70
  1. M153LaTeX leaks into human-facing text#70
  2. M156Summary guidance goes stale after a correction#79
  3. M152Most feedback on a lost mark is not actionable#102
  4. M249Feedback that contradicts the mark#166
  5. M155Feedback shown under the wrong question#236
  6. M251Feedback published during a staggered test window#295
  7. M252Feedback naming another student#296
  8. M254Advice to revise something the student got right#297
  9. M255Praise inflation on a failing script#298
  10. M256No single next step for the student#299
  11. M258One tone for three audiences#300
  12. M250Template collapse#364
  13. M253Feedback longer than the answer#365

Hindi, regional & right-to-left scripts

Test and support non-Latin scripts end to end: question paper, answers, digits, key and feedback.

91 blocking3 serious5 moderate1 in the top 100 · best #84
  1. F89Vernacular extraction quality is unmeasured#84
  2. M015Non-Latin script has never been tested, at all#104
  3. M087Devanagari or regional numerals as question labels#129
  4. M100Mixed-script and transliterated answers#134
  5. M220The answer is in a different language from the paper#287
  6. F92Regional-script digits as marks or numbers are not parsed#325
  7. M257Feedback is English-only#366
  8. F80Right-to-left scripts (Urdu) are untested end to end#428
  9. F135A low-resource regional language beyond Hindi is unsupported and unmeasured#439

Platform & safety

Backend and infrastructure; mostly Mridul/Ashish territory.

4 groups · 60 faults

Re-grading, deploys & operations

Idempotent re-grades, versioned outputs, per-tenant rollout, and alerts when something stalls or drifts.

271 blocking5 serious21 moderate4 in the top 100 · best #64
  1. M158Re-extraction orphans the marks already given#64
  2. F94A timed-out extraction can look complete#76
  3. M160A model or provider change silently shifts calibration#80
  4. M041The fix you merged is not the code that is marking#90
  5. M276Wallet exhaustion mid-class#191
  6. M157Re-grading is not idempotent, and two gradings can race#237
  7. M161One instance serves every tenant, so no change is ever UAT-only#238
  8. M263Context limits silently truncating a long script#259
  9. M273Throttling mid-run reads as a data problem#260
  10. M278Tenant identity is carried by the login, not the request#261
  11. M265Model deprecation#302
  12. M284The API's own field names mislead an auditor#304
  13. M259No provenance on a mark#367
  14. M261Partial grading reported as complete#368
  15. M262A retry after timeout produces a second grading#369
  16. M264A per-request image ceiling#370
  17. M274Whole-class latency#375
  18. M275No per-tenant isolation in the grading queue#376
  19. M277Cost per sheet drifting without notice#377
  20. M279Time zones on submission windows#378
  21. M280Storage unreachable mid-run#379
  22. M281A feature flag that changes marking behaviour per tenant#380
  23. M282Marking behaviour that differs between the two products#381
  24. M283A cloned tenant carrying another centre's graded work#382
  25. F19The agreement check does not do what its own spec says#401
  26. F25No limit on pages and no limit on cost#403
  27. F95The extraction engine version is not stored on the output#412

Measuring accuracy

A regression suite and real-teacher comparison, end to end and per subject, run before every release.

93 blocking3 serious3 moderate4 in the top 100 · best #16
  1. M048Measuring each stage hides the chain#16
  2. M169No regression suite and no production alert on marking quality#24
  3. M047We have never compared our marks to a real teacher's#48
  4. M049The measurement is wrong in the same direction as the bug#49
  5. M167Extraction has no accuracy number at all#160
  6. M292Every fixture encodes our own assumptions#305
  7. M168Human variance is unknown, so the target is undefined#328
  8. M293No per-subject accuracy number#387
  9. F98Difficulty and topic tags are unvalidated model output#413

Child safety, privacy & integrity

Authenticated access to scripts, consent, safeguarding escalation, and cheating/tamper detection.

Worked 20 Sep — signed expiring links for children's scripts, parent-report links, a who-changed-this-mark trail, delete now clearing what a script produced. The production bucket is still public: that is an AWS change, and it must follow the code, not precede it.

143 blocking4 serious7 moderate1 in the top 100 · best #92
  1. M044Children's marked scripts are readable without authentication#92
  2. M046Minors' data leaving the platform, without consent settled#115
  3. M165A student learning to game the marker#159
  4. M164Collusion goes undetected#188
  5. M045A safeguarding disclosure inside an answer#257
  6. M166Nobody knows who can read a child's script#327
  7. M065Impersonation at submission#333
  8. M285Retention with no stated clock#383
  9. M289Cross-tenant leakage in the grading path#384
  10. M290A marked script forwarded onward#385
  11. M291Claims we could not support for a consequential exam#386
  12. M286A teacher gaming the marks#420
  13. M287Distressing or abusive content on a sheet#421
  14. M288Deleting a script does not delete what it produced#431

Parents, reports & analytics

Nothing reaches a parent or an analytics chart until the mark is final, and a correction follows it everywhere.

101 blocking2 serious7 moderate1 in the top 100 · best #28
  1. M043A wrong mark published to a parent#28
  2. M162Analytics compound the error into a belief about the child#158
  3. M272Trends across papers with different totals#167
  4. M163Subject metadata is wrong, so subject analytics are wrong#239
  5. M271Rank and percentile from unreconciled totals#303
  6. M266A mark visible before anyone has reviewed it#371
  7. M267The student app and the teacher console disagree#372
  8. M268Export disagrees with the review screen#373
  9. M269A correction that never reaches an already-sent report#374
  10. M270Marks used for decisions about a child#436

Decisions for you

Not code. Written policy the product needs before it can promise anything.

1 groups · 19 faults

Policy decisions (not code)

Founder decisions to write down: who owns the final mark, review promises, disputes, retention, grace marks, disclosure to parents.

Written up 20 Sep — all 19 as decisions with options and a recommendation (POLICY-DECISIONS.md). Five block a school rollout.

192 blocking2 serious15 moderate2 in the top 100 · best #4
  1. M050There is no marking policy document#4
  2. M051Nobody has decided who owns the final mark#93
  3. M170Partial-credit granularity stops at the half mark#161
  4. M172"Graded" means three different things#162
  5. M299Whether parents are told the marking was automated#329
  6. M297What happens to a disputed mark#332
  7. M295What a teacher is promised about review#388
  8. M296Whether a mark may be shown before review#389
  9. M298How long a mark stays open to challenge#390
  10. M300Whether a student may see the marking scheme#391
  11. M301What is stored, for how long, and who can read it#392
  12. M303Who may withdraw a question#393
  13. M304Whether grace marks and moderation are permitted#394
  14. M305Whether we mark to the board's scheme or the teacher's#395
  15. M306What we do when the teacher's own key is wrong#396
  16. M307Whether a centre may turn AI marking off for one paper#397
  17. M308Whether the same student can be marked twice by different rules#398
  18. M294What accuracy is acceptable, per subject#432
  19. M302Whether a paper may publish when the pipeline flagged itself#433