Source References
This page maps each section of the documentation to the source code that informed it. Use it to trace any claim back to the codebase.
Landing page
Section titled “Landing page”| Section | Source files | What was referenced |
|---|---|---|
| The pipeline at a glance | ../CLAUDE.md, ../../CLAUDE.md | Pipeline stages: capture, preprocess, ingest, visualize, train, deploy |
| Who this documentation is for | src/routes/+layout.svelte:1-50 | App navigation structure, version display, overall purpose |
| Section | Source files | What was referenced |
|---|---|---|
| UI walkthrough | src/routes/+page.svelte:1-100 | Main page layout: filter pane (left) and image grid (right) |
| Image grid controls | src/routes/+page.svelte:200-400 | Pagination, select/clear buttons, images per page, results count |
| Image cards | src/lib/components/image/ImageCard.svelte:1-200 | Thumbnail, predictions, annotations, tags, checkbox selector |
| Image cards (auto-show) | src/routes/+page.server.js:15-30, src/routes/api/inference_results/+server.js:60-72 | auto_show.predictions, auto_show.annotations, auto_show.tags |
| Tag management | src/routes/+page.svelte:400-550 | Tag add/remove with autocomplete, bulk operations |
| Annotation and comparison | src/lib/components/filter/FilterPane.svelte:145-200 | startAnnotation(), compareSelected(), action buttons |
Filtering
Section titled “Filtering”| Section | Source files | What was referenced |
|---|---|---|
| Filter fields | src/lib/components/filter/FilterPane.svelte:203-476 | All filter component instances in template |
| Site-specific fields | src/lib/components/filter/FilterPane.svelte:237-252 | {#each additionalDataFields} loop |
| How values combine within a single filter | src/lib/server/filters.js:61-88 | _parseFilter(): $in (OR) and $nin for negated |
| How values combine (Prediction AND) | src/lib/server/filters.js:246-606 | Classification labels pushed to $and array |
| How different filters combine | src/lib/server/filters.js:53-166 | Top-level filters object in $match stage |
| Negation | src/lib/components/filter/FilterInputText.svelte:1-50, src/lib/server/filters.js:69-71 | ! prefix toggle, $nin query |
| Date range — From and To | src/lib/utils.js:42-74 | getDefaultFilters(): midnight default, hour < 2 logic |
| Date range (components) | src/lib/components/filter/FilterPane.svelte:213-236 | FilterInputsDateAndTime for From/To |
| Confidence range vs. threshold slider | src/lib/components/filter/FilterPane.svelte:278-310, 392-403 | Confidence min/max inputs vs. threshold_confidence2 slider |
| Confidence range (query) | src/lib/server/filters.js:168-196 | confidence_filters with prediction_score and detection_score |
| Annotation and Prediction format | src/lib/components/filter/FilterPane.svelte:254-276 | regexFilter=".+:.+", datalist from labelList |
| Annotation format (query) | src/lib/server/filters.js:198-244 | $elemMatch with $or positive, $and negated |
| Prediction format (query) | src/lib/server/filters.js:246-606 | new_filters.$and (AND logic) |
| Show/Hide toggles | src/lib/components/filter/FilterPane.svelte:73-83, 427-445 | ANNOTATION_OPTIONS, PREDICTION_OPTIONS arrays |
| Show/Hide toggles (query) | src/lib/server/filters.js:142-159 | filters.annotated, filters.inference_result.$exists |
| Hide skipped annotations | src/lib/components/filter/FilterPane.svelte:415-422 | hideSkipped checkbox |
| Hide skipped (query) | src/lib/server/filters.js:665-668 | user_skip_annotation field in pipeline |
| Auto-update | src/lib/components/filter/FilterPane.svelte:406-413 | Checkbox, 1-second polling tooltip |
| Apply / Clear Filters | src/lib/components/filter/FilterPane.svelte:134-143, 203-210, 449-457 | handleApply(), clearFilters() |
| Filter profiles | src/lib/stores/filter-profile-store.ts, src/routes/api/filter_profiles/+server.js | Profile CRUD |
Thresholds
Section titled “Thresholds”| Section | Source files | What was referenced |
|---|---|---|
| Why thresholds matter | src/routes/thresholds/+page.svelte:1-50 | Page purpose |
| Selecting an annotation configuration | src/routes/thresholds/+page.svelte:50-120 | Config dropdown, img_label and img_id |
| Threshold controls | src/routes/thresholds/+page.svelte:120-250 | Default value selector, slider (0–1), number input |
| Saving changes | src/routes/thresholds/+page.svelte:250-308 | Save button, toast notifications |
Statistics
Section titled “Statistics”| Section | Source files | What was referenced |
|---|---|---|
| UI walkthrough | src/routes/stats/+page.svelte:1-100 | Two-column layout |
| Available charts | src/routes/stats/+page.svelte:100-400 | LineChart components for all chart types |
| Model selector | src/routes/stats/+page.svelte:150-200 | Dropdowns for classification and object detection |
| Chart controls | src/routes/stats/+page.svelte:400-500, src/lib/components/charts/LineChart.svelte:1-50 | Y max/min, type, percentage, accumulated |
| Exporting data | src/routes/stats/+page.svelte:500-576 | CSV export button |
| Section | Source files | What was referenced |
|---|---|---|
| UI walkthrough | src/routes/runs/+page.svelte:1-100 | Runs table columns |
| Run actions | src/routes/runs/+page.svelte:100-250 | Row click, delete, status badges |
| Creating a run | src/routes/compare/+page.svelte:1-283 | Image selection, model multi-select, batch config |
| Viewing comparison results | src/routes/compare/[runId]/+page.svelte:1-200 | Progress, entry table, queue navigation |
| Difference types | src/routes/compare/[runId]/+page.svelte:200-600 | Classification, object detection, coordinate diffs |
How-To Guides
Section titled “How-To Guides”| Section | Source files | What was referenced |
|---|---|---|
| Annotate from scratch | src/lib/components/filter/FilterPane.svelte:145-177 | startAnnotation() queue building |
| Annotate (annotation view) | src/routes/annotate/+page.svelte:1-200 | Queue, radio buttons, bounding boxes, save/next |
| Annotate (show/hide) | src/lib/components/filter/FilterPane.svelte:427-435 | Unannotated option |
| Evaluate a model (threshold slider) | src/lib/components/filter/FilterPane.svelte:392-403 | Display filter behaviour |
| Evaluate a model (confidence) | src/lib/components/filter/FilterPane.svelte:278-310 | Confidence min/max |
| Evaluate a model (predictions toggle) | src/lib/components/filter/FilterPane.svelte:437-445 | Show/Hide predicted images |
| Compare models (setup) | src/lib/components/filter/FilterPane.svelte:179-200, src/routes/compare/+page.svelte:1-283 | compareSelected(), model selection, run creation |
| Compare models (results) | src/routes/compare/[runId]/+page.svelte:1-400 | Difference sorting, entry navigation |
Glossary
Section titled “Glossary”| Term | Source files | What was referenced |
|---|---|---|
| Annotation | src/lib/server/filters.js:198-244 | label:value pairs, $elemMatch |
| Annotated by | src/lib/components/filter/FilterPane.svelte:380-388, src/lib/server/filters.js:160-166 | Filter and query |
| Auto-update | src/lib/components/filter/FilterPane.svelte:406-413 | Checkbox, 1s polling |
| Bounding box | src/lib/components/image/AnnotationImageKonva.svelte:1-100 | Konva drawing tools |
| Camera ID | src/lib/components/filter/FilterPane.svelte:323-332 | Filter with camList |
| Classification | src/lib/server/filters.js:340-367 | label_type === 'classification' |
| Comparison run | src/routes/compare/+page.svelte, src/routes/runs/+page.svelte | Creation flow, runs table |
| Confidence score | src/lib/server/filters.js:168-196 | prediction_score, detection_score |
| Custom tags | src/routes/+page.svelte:400-550 | Tag UI, custom_tags array |
| Default value | src/routes/thresholds/+page.svelte:120-200 | Default selector |
| Filter pane | src/lib/components/filter/FilterPane.svelte:203-476 | Full template |
| Filter profile | src/lib/stores/filter-profile-store.ts, src/routes/api/filter_profiles/+server.js | CRUD |
| Frame trigger | src/lib/components/filter/FilterPane.svelte:347-356 | Filter, frame_trigger_id |
| Image ID | src/lib/components/filter/FilterPane.svelte:335-345 | Filter with imgList |
| Ingest | ../../CLAUDE.md | Pipeline stage |
| Model / Model ID | src/lib/components/filter/FilterPane.svelte:370-378 | Dropdown, modelid |
| Negation | src/lib/components/filter/FilterInputText.svelte:1-50, src/lib/server/filters.js:69-71 | ! prefix, $nin |
| Object detection | src/lib/server/filters.js:288-322 | objDetLabels.models, detection classes |
| Prediction | src/lib/components/image/ImageCard.svelte:50-150 | Card display |
| Prediction threshold slider | src/lib/components/filter/FilterPane.svelte:392-403 | threshold_confidence2 |
| Rig / Rig ID | src/lib/components/filter/FilterPane.svelte:312-322 | Filter with rigList |
| Skipped annotation | src/lib/server/filters.js:665-668, 723-733 | user_skip_annotation |
| Threshold | src/routes/thresholds/+page.svelte:120-250 | Slider (0–1), per-annotation |