98 lines
3.3 KiB
Markdown
98 lines
3.3 KiB
Markdown
|
|
# Whetstone Handoff — 2026-03-24
|
||
|
|
|
||
|
|
## Session Summary
|
||
|
|
|
||
|
|
Three steps completed, all closing B-run pipeline gaps discovered during the
|
||
|
|
whimptk Sprint 03 A/B test.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Step 1991 — AST sidecar lifecycle hooks (COMPLETE)
|
||
|
|
|
||
|
|
**What**: `openFile` and `saveBuffer` were the right abstraction points for
|
||
|
|
automatic sidecar round-trips, but they never called the sidecar functions.
|
||
|
|
Two targeted edits closed the gap:
|
||
|
|
|
||
|
|
- `DispatchPart2.h` — `openFile` now calls `loadSidecarAST()` after parse,
|
||
|
|
returns `annotationsRestored` + `staleAnnotations` in result.
|
||
|
|
- `DispatchPart3.h` — `saveBuffer` now calls `saveSidecarAST()` +
|
||
|
|
`saveSemannoSidecar()` after file write, returns `annotationsSaved`,
|
||
|
|
`sidecarPath`, `semannoPath` in result.
|
||
|
|
|
||
|
|
5/5 tests passing (`step1991_test.cpp`).
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Step 1992 — Schema stub fix for Sprint 142/143/144 tools (COMPLETE)
|
||
|
|
|
||
|
|
**What**: 9 tools registered with empty `{}` schemas — MCP clients couldn't
|
||
|
|
discover the `id` parameter. All returned `"id required"` when called without
|
||
|
|
schema guidance.
|
||
|
|
|
||
|
|
**Files patched:**
|
||
|
|
- `RegisterSprint142Tools.h` — `sync_text_to_ast`, `get_sync_diagnostics`,
|
||
|
|
`get_sync_identity_report`
|
||
|
|
- `RegisterSprint143Tools.h` — `regenerate_text_from_ast`,
|
||
|
|
`preview_regenerated_diff`, `get_regeneration_decisions`
|
||
|
|
- `RegisterSprint144Tools.h` — `detect_text_ast_conflicts`,
|
||
|
|
`preview_text_ast_merge`, `apply_text_ast_merge`
|
||
|
|
|
||
|
|
All 9 now have proper `required: [id]` schemas with `language`/`text`/`mode`
|
||
|
|
optional properties and useful descriptions.
|
||
|
|
|
||
|
|
5/5 tests passing (`step1992_test.cpp`).
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Step 1993 — `ingest_legacy_to_ir` → `generate_cpp_from_ir` chain fix (COMPLETE)
|
||
|
|
|
||
|
|
**What**: `ingest_legacy_to_ir` returned `{graph, api_intent, assumption, ...}`
|
||
|
|
but `generate_cpp_from_ir` expected `{ir: SemanticCoreIR}`. The B-run got
|
||
|
|
`ir_invalid` because the formats were incompatible.
|
||
|
|
|
||
|
|
**Fix**: `RegisterLegacyIngestionTools.h` — added `buildIRFromGraph()` helper
|
||
|
|
that maps `RecoveryNode` objects to `IRNode`/`IREdge` and constructs a valid
|
||
|
|
`SemanticCoreIR`. The `ir` field is now emitted alongside the existing output:
|
||
|
|
|
||
|
|
```
|
||
|
|
result = ingest_legacy_to_ir({source: "...", language: "cpp"})
|
||
|
|
generate_cpp_from_ir({ir: result["ir"], profile: "safe-first"}) // works
|
||
|
|
```
|
||
|
|
|
||
|
|
Mapping: `core` → Module, `api_inference` → Function, `assumed` → Effect,
|
||
|
|
`unknown` → Unknown. Neighbors become `{relation: "inferred"}` edges with
|
||
|
|
existence check. `moduleId` = `"legacy:" + source.substr(0, 32)`.
|
||
|
|
|
||
|
|
5/5 tests passing (`step1993_test.cpp`).
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## What's Still Open
|
||
|
|
|
||
|
|
From the original B-run gap list, both gaps are now closed:
|
||
|
|
- ~~Schema stubs~~ (Step 1992) ✓
|
||
|
|
- ~~IR chain mismatch~~ (Step 1993) ✓
|
||
|
|
|
||
|
|
The whimptk Sprint 03 B-run pipeline is now unblocked end-to-end:
|
||
|
|
```
|
||
|
|
ingest_legacy_to_ir → ir field → generate_cpp_from_ir → files
|
||
|
|
```
|
||
|
|
|
||
|
|
The next time whimptk Sprint 04 runs, use the proper pipeline:
|
||
|
|
1. `start_recording`
|
||
|
|
2. `architect_intake` (spec with Goals/Constraints/Acceptance Criteria sections)
|
||
|
|
3. `generate_taskitems`
|
||
|
|
4. `queue_ready`
|
||
|
|
5. `ingest_legacy_to_ir` on any legacy header
|
||
|
|
6. `generate_cpp_from_ir` using `result["ir"]`
|
||
|
|
7. `apply_text_ast_merge` + `save_buffer` to finalize
|
||
|
|
8. `get_metrics`
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Build State
|
||
|
|
|
||
|
|
- `whetstone_mcp` binary: `editor/build-native/whetstone_mcp` (rebuilt)
|
||
|
|
- All prior tests still passing (architecture gate unaffected)
|
||
|
|
- Daemon: restart with `tools/start-whetstone-daemon.sh` if needed
|