Skip to content

data ingest: task-irrelevant flags are silently accepted and ignored (e.g. --target-size on tabular, --schema on images) #77

Description

@saadqbal

Severity: LOW (UX/footgun). Found during the #67 stress sweep; framing refreshed 2026-07-11 to the current data ingest / --task verbs (RFC-0002 renamed dataset push --categorydata ingest --task). The bug itself is unchanged and still live.

Repro (all pass pre-flight, flag silently ignored)

tracebloc data ingest ./tab/... --task tabular_classification --target-size 512x512      # target-size meaningless for tabular
tracebloc data ingest ./tab/... --task tabular_classification --time-column created_at    # time-column only for time_to_event_prediction
tracebloc data ingest ./tab/... --task tabular_classification --number-of-keypoints 17    # keypoints only for keypoint_detection
tracebloc data ingest ./img/... --task image_classification  --schema a:INT               # schema only for tabular / time-series

Each runs as if the flag weren't there — no error, no warning.

Current state (verified 2026-07-11)

All five task-scoped flags are still registered unconditionally in internal/cli/data.go (--target-size ~L308, --schema ~L316, --label-policy ~L319, --time-column ~L322, --number-of-keypoints ~L324). There is no flag-relevance guard anywhere — the only Flags().Changed uses in data.go are for the --table/--category alias resolution, not for relevance checking. So an out-of-task flag is silently dropped.

Why it matters

A user who sets --target-size 256x256 for a tabular ingest (or --schema for images) reasonably expects it to take effect. Silent acceptance means "I set it but it did nothing" with no feedback — the classic footgun. --help documents which flags belong to which task, but nothing enforces or warns at runtime.

Expected

When a flag that's only meaningful for task X is set with task Y, emit a warning (Note: --target-size is ignored for tabular_classification) — or, for clearly-nonsensical combinations, error. At minimum warn; don't silently drop. A single taskScopedFlags relevance table checked after task resolution covers all five.

Part of #67.

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions