task_icons__named_strip__shape_run_count¶
Identity¶
- Domain:
icons - Scene id:
named_strip - Task id:
task_icons__named_strip__shape_run_count - Objective contract: count the number of separate consecutive runs of one prompt-named icon shape in a horizontal strip.
- Module:
src/trace_tasks/tasks/icons/named_strip/shape_run_count.py - Prompt bundle:
src/trace_tasks/resources/prompts/icons/named_strip/icons_named_strip_v1.json
Program Contract¶
Program: counting.sequence_run_count(scene=named_strip, scope=procedural_named_icons, target=quoted_shape_name, adjacency=consecutive_horizontal_cells, output=integer)
Candidate set: the visible icon instances in one horizontal row of boxed procedural named icons.
Operands: visible icon shape identity in each cell and the prompt-bound target shape.
Operation: partition the target-shape cells into maximal consecutive horizontal runs and count those runs. Generation enforces the final answer in the configured range.
Output binding: answer uses the integer schema.
Annotation schema: bbox_set.
Annotation witnesses: annotation contains the icon-object bbox for the first icon in each counted target-shape run, sorted in reading order.
Query ids: single.
Reasoning Operations¶
Families: counting, topology
Contract¶
- The image contains one horizontal row of boxed procedural named icons.
- The prompt names one target icon shape in quotes.
- The answer is the number of separate consecutive runs of the target shape.
- Default answer support is
1..4. - Target shape, target-run lengths, fill style, color palette, strip length, and render style are generation metadata, not public query ids.
Generation¶
- Default strip length is
12..16. - The generator constructs exactly
answertarget-shape runs. - Adjacent target-shape runs are separated by at least one non-target icon.
- Run lengths vary as non-semantic visual variation; only the number of runs determines the answer.
Prompt¶
- Prompt bundle:
icons_named_strip_v1 scene_key:named_strip_run_lengthtask_key:shape_run_countquery_key:shape_run_count- Answer JSON shape:
{"answer":3} - Answer+annotation JSON shape:
{"annotation":[[116,132,166,182],[364,132,414,182],[580,132,630,182]],"answer":3}
Annotation¶
bbox_setis used because the number of counted run witnesses varies by generated answer.- Boxes mark only the first icon in each counted target-shape run.
- The task is not scalar-annotation eligible because witness cardinality varies by generated answer.
Trace¶
scene_ir.entitiescontains one entity for each strip cell and rendered procedural named icon.scene_ir.relations.target_runsrecords all target-shape runs with start, end, and length.execution_trace.selected_run_start_indicesrecords the first cell index of each counted run.render_map.selected_run_start_instance_idsrecords the rendered icon ids used for annotation.projected_annotation.bbox_setis derived from the same rendered icons as the integer answer.
Tests¶
- Behavior and trace tests:
tests/test_icons_sequence_named_shape_run_length_tasks.py - Config tests:
tests/test_icons_scene_config.py - Prompt bundle tests:
tests/test_prompt_system.py - Source-layout contract checks:
tests/test_public_source_layout_contracts.py