# Handoff: RSA Extraction Bootstrap Date: 2026-04-12 ## Scope Completed This pass stayed inside the `whetstone_RSA` semantic/bootstrap lane for `whetstone_DSL` integration. Completed artifacts: - `semantic/rsa_gate_extraction_contracts_v0.json` - `tools/extract_gate_rows.py` - `docs/case_studies/whetstone_dsl_extraction_yield_snapshot.md` - `semantic/extracted_gate_rows_sample.ndjson` - `semantic/extracted_gate_rows_slice.ndjson` - updates to `sprints/SPRINT-003-whetstone-dsl-gate-semantic-bootstrap.md` Existing supporting docs from the same line of work that remain relevant: - `docs/case_studies/whetstone_dsl_gate_inventory.md` - `docs/case_studies/whetstone_dsl_semantic_mapping.md` - `docs/case_studies/whetstone_dsl_training_data_strategy.md` - `docs/case_studies/whetstone_dsl_run_artifact_audit.md` - `docs/case_studies/whetstone_dsl_gate_extraction_specs_v0.md` - `docs/case_studies/whetstone_dsl_execution_contract_shape_skeleton.md` - `semantic/rsa_semantic_bootstrap_v0.json` ## Current State The integration is still semantic-first, but it now has a parser-facing artifact path instead of only prose docs. What is now true: - first-pass extraction contracts exist in machine-readable form - a parser can read `whetstone_DSL/logs/taskitem_runs/*` and emit normalized per-gate rows - a 50-run slice has already been extracted and reviewed Most important conclusion from the yield pass: - `prereq_op_selector` is the first extraction-ready supervised gate candidate Current caution: - `target_file_selection` - `acceptance_command_selection` - `required_tool_selection` are all explicitly present, but in the current slice they are strongly sibling-uniform and look too template-driven for naive broad mining. ## Evidence Key outputs: - sample rows: `semantic/extracted_gate_rows_sample.ndjson` - broader slice: `semantic/extracted_gate_rows_slice.ndjson` - yield summary: `docs/case_studies/whetstone_dsl_extraction_yield_snapshot.md` Observed on the 50-run slice: - runs processed: `50` - tasks processed: `106` - rows emitted: `424` - rows with rejection flags: `330` Rejected execution-contract child rows were dominated by: - `sibling_uniform_target_files` - `sibling_uniform_acceptance_commands` - `sibling_uniform_required_tools` The rejected `prereq_op_selector` rows were informative: - some fallback runs polluted `prerequisiteOps` with tool ids such as `whetstone_generate_taskitems`, `whetstone_queue_ready`, and `whetstone_validate_taskitem` - the current rejection logic is correctly catching that schema drift Representative drift artifact: - `CLionProjects/whetstone_DSL/logs/taskitem_runs/01a_fallback_intake_spec_20260226_170014/02_generate_taskitems.json` ## Next Step The next active task is narrow and concrete: Turn `prereq_op_selector` into the first accepted dataset slice, split into: - accepted rows - rejected rows - explicit schema-drift examples After that: 1. decide whether to hard-filter or separately model the schema-drift variants 2. only then broaden extraction to more runs 3. keep `target_file_selection`, `acceptance_command_selection`, and `required_tool_selection` review-gated until a more variant-rich artifact family is found ## Commit Scope This commit should include only the RSA extraction-bootstrap work above. There are unrelated untracked files in the repo, including business strategy and smartwatch docs plus presentation material. Those should stay out of this commit.