Author SHA1 Message Date
Hermes cc-workerandClaude Opus 4.8 c4ca0ae29f exam-marker: exam_templates.extraction_meta jsonb (P3 audit gate + provenance)
Applied to dev .94 2026-07-03. {engine, slug, audit:{cover_total,detected_total,status,anomaly}, counts}.
Pending prod (.156) — gated.

Co-Authored-By: Claude Opus 4.8 <[email protected]>
2026-07-03 02:12:44 +00:00
Hermes cc-workerandClaude Opus 4.8 0b6874a3dd exam-marker: exam_response_areas.meta jsonb for extraction-service recognition detail (P2)
Applied to dev Supabase .94 2026-07-02. Holds OMR box geometry, select_n, unit/quantity,
n_options from the extraction service. Additive + nullable. Pending prod (.156) apply — gated.

Co-Authored-By: Claude Opus 4.8 <[email protected]>
2026-07-02 23:47:34 +00:00
2 changed files with 23 additions and 0 deletions
@@ -0,0 +1,12 @@
--==========================================================================================
-- 75. exam_response_areas.meta — rich recognition payload from the extraction service (P2)
--==========================================================================================
-- The extraction service (docling-exam-spike analyse contract) returns richer per-region detail than
-- the thin first-pass could: per-option OMR box geometry + fill (boxes[]), select_n ("tick 2 of 5"),
-- n_options, the expected unit/quantity for single-line answers, and the data_table an MC question reads.
-- These have no dedicated columns; keep them in a jsonb sidecar so the canvas can render tick boxes /
-- units / MC option counts without a column per attribute. Nullable, defaults to {}.
alter table public.exam_response_areas add column if not exists meta jsonb not null default '{}'::jsonb;
comment on column public.exam_response_areas.meta is
'Extraction-service recognition detail: {n_lines, unit, quantity, n_boxes, n_options, select_n, box_form, boxes:[{x0,y0,x1,y1,fill}], table:{grid,n_cells}}. Rendered by the canvas; not authoritative for marking.';
@@ -0,0 +1,11 @@
--==========================================================================================
-- 76. exam_templates.extraction_meta — trust signal + provenance from the extraction service (P3)
--==========================================================================================
-- Records, per template, how the recognition was produced and whether it reconciled: the audit
-- cover-total gate (cover_total vs detected_total, status, anomaly), the engine + slug used, and
-- region counts. Lets the setup UI show "extraction: cover 100 = detected 100 ✓" (or flag an under-read),
-- and lets the digital-text view resolve the paper's replica by slug. Nullable, defaults to {}.
alter table public.exam_templates add column if not exists extraction_meta jsonb not null default '{}'::jsonb;
comment on column public.exam_templates.extraction_meta is
'Extraction-service provenance + trust gate: {engine, slug, audit:{cover_total,detected_total,status,anomaly}, counts}.';