Real Hard-Case Sample Workflow¶
This page explains how to document confusing real-world samples safely.
Simple meaning: when a real video has glare, darkness, camera shake, or a blocked view, we can record what happened without committing private footage.
Why This Exists¶
Hard cases are useful because they show where OpenFloodAI may be confused.
Simple example: if the camera shakes, many pixels change. That does not mean the river changed. The system should keep that case visible as DEGRADED, UNKNOWN, or cannot_compare.
This workflow is for review and validation only. It does not prove flood accuracy, train a model, send alerts, upload files, or publish warnings.
Where Metadata Lives¶
Keep hard-case sample metadata inside the matching site folder:
data/sites/<site-name>/expected-behavior/real-hard-case-samples.jsonl
Simple example:
data/sites/example-site/expected-behavior/real-hard-case-samples.jsonl
The actual video may stay local in:
data/sites/<site-name>/inputs/videos/
If the video is private or unclear for sharing, do not commit it. Keep only safe metadata.
Metadata Fields¶
Each row should include:
case_id: a short ID for this hard casecase_type: the type of confusing casevideo_id: the matching video ID from the site manifestapproved_for_repo:trueonly when the file is clearly safe to commithuman_review_needed: usuallytruefor real hard casesexpected_result: usuallycannot_compare,UNKNOWN, orDEGRADEDplain_reason: simple reason a reviewer can understandreviewer_notes: short notes from the person reviewing the sample
Safe Example¶
{"case_id":"camera-shake-real-001","case_type":"camera_shake","video_id":"camera-shake-001","approved_for_repo":false,"human_review_needed":true,"expected_result":"cannot_compare","plain_reason":"The whole image moves, so pixel change may not mean water changed.","reviewer_notes":"Safe example metadata only. No real video is committed."}
Simple meaning: this tells us the case is useful, but the video should stay local.
Hard-Case Types¶
Use one of these values when possible:
heavy_glarerain_or_noisy_imagenight_or_dark_framecamera_shakeblocked_viewcompression_or_noise_artifactsmissing_videounreadable_videocamera_offline
If a new type is needed, document it before using it widely.
Approval Rules¶
Set approved_for_repo to false by default.
Only use true when all of these are clear:
- the video or image is allowed to be public
- the source and license are understood
- it does not reveal private people, homes, vehicles, or sensitive locations
- it does not include camera URLs, passwords, tokens, or exact private GPS details
- a maintainer agrees it is safe for the repository
Simple example: a short synthetic glare video can be approved for the repo. A real private camera clip should stay local.
When Footage Cannot Be Committed¶
You can still document the sample.
Keep:
- the
case_id - the
video_id - the hard-case type
- broad notes, such as "sun glare hides the water area"
- whether a human reviewed it
- the expected safe result
Do not keep:
- private camera URLs
- exact private GPS coordinates
- screenshots that show people, homes, vehicles, or sensitive places
- personal contact details
- private field notes that identify people or restricted locations
Review Steps¶
- Put the real video in the local site folder if you are allowed to use it.
- Add or update the site
manifest.jsonl. - Add a hard-case row in
expected-behavior/real-hard-case-samples.jsonl. - Add human labels when a person has reviewed the time window.
- Run the local validation workflow.
- Keep unclear cases visible as
DEGRADED,UNKNOWN, orcannot_compare.
Simple example: if glare hides the river, the result should not be counted as a success. It should say the view is unclear and needs review.
Current Boundary¶
This workflow does not add real footage, upload files, train ML models, send alerts, publish warnings, or claim real flood detection accuracy.
It only explains how contributors can document confusing real samples safely.