From 803cb2ce4a1e5ced5d9bf8df9e45795aa503df2c Mon Sep 17 00:00:00 2001 From: Alex Date: Sat, 25 Apr 2026 06:04:35 +0200 Subject: [PATCH] Create wiki page: Learning-20260425-product-owner-run20 --- Learning-20260425-product-owner-run20.-.md | 66 ++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 Learning-20260425-product-owner-run20.-.md diff --git a/Learning-20260425-product-owner-run20.-.md b/Learning-20260425-product-owner-run20.-.md new file mode 100644 index 0000000..55768e8 --- /dev/null +++ b/Learning-20260425-product-owner-run20.-.md @@ -0,0 +1,66 @@ +# Product Owner Run 20 -- Lux (2026-04-25) + +**Persona**: Lux (TypeScript engineer, aesthetic, user-focused, British English) +**Repo (auth)**: `terraphim/agent-tasks` on Gitea +**Spec**: `docs/specifications/terraphim-agent-session-search-spec.md` v1.2.0 + +## Issues Created + +| # | Title | Spec | Blocked-by | +|---|---|---|---| +| #30 | feat: populate ExampleDoc.output for robot examples endpoint | F3.3 | -- | +| #31 | feat: case-insensitive flags and `--flag=value` separators | F2.3 | #4 | +| #32 | feat: live `index_status` in robot capabilities response | F3.1 | #5 | + +## Gaps Closed + +Three F2/F3 spec-to-code divergences verified by grep against current main: + +- 22 `ExampleDoc {` instances in `crates/terraphim_agent/src/robot/docs.rs`, 0 with `output: Some(...)` -> #30. +- Forgiving parser has no `to_ascii_lowercase`, no `case_insensitive`, no `split('=')` handling -> #31. +- `index_status: None` hard-coded at `crates/terraphim_agent/src/robot/docs.rs:55`; `sessions_indexed` 0 references outside schema -> #32. + +## Spec Coverage + +Aggregate session-search spec coverage: **~98-99% -> 99%+**. All visible F2/F3 surface gaps now tracked. Remaining un-issued: F5.3 cross-session learning (multi-PR, deferred); F5.2 k-means cluster (#23, large surface). + +## Top 5 Ready (post Run 20) + +1. **#24** parse_chained_command isolate failing sub-command (single-file bug fix) +2. **#23** /sessions cluster --algorithm kmeans --k N (F5.2) +3. **#30** [NEW] ExampleDoc.output (F3.3) -- pure additive single-file change, fastest unblocker +4. **#22** /sessions by-concept --connected-to (F5.2) +5. **#21** robot meta concepts_matched + wildcard_fallback (F1.1) + +Highest-impact blocked: **#5 (Tantivy)** has 5 dependants now (incl. #32); **#4 (ForgivingParser dispatch)** has 2 dependants now (incl. #31). + +## Process Notes for Next PO + +- All three issues posted clean via `--body-file` (no KG title mangling this run). +- `gitea-robot create-issue` Python wrapper still raises `JSONDecodeError` on success (parse stdout for `Created issue #N`); did not retry; no duplicates. +- `add-dep --issue X --blocks Y` semantic confirmed: X is blocked by Y. +- `gitea-robot` still has no `remove-dep`. +- `terraphim/terraphim-ai` still 404; `terraphim/agent-tasks` is the single source of truth for spec issues. +- MEMORY.md still over-budget (43.2 KB, limit 24.4 KB) -- keep index entries to one line under ~200 chars. +- No ADF, Tauri, Svelte, D3.js, Playwright, or chat-UI items created (per scope rules). + +## Verification Commands + +```bash +# #30 +cargo test -p terraphim_agent --lib robot::docs::tests::test_examples_have_output + +# #31 +cargo test -p terraphim_agent --lib forgiving::parser::tests::normalise_flag +./target/debug/terraphim-agent --Format=JSON search "test" --robot | jq '.meta.flag_normalisations' + +# #32 (with --features repl-sessions) +./target/debug/terraphim-agent robot capabilities --format json | jq '.data.index_status' +``` + +## Recommendation Next Sprint + +1. Land **#5 (Tantivy)** -- unblocks #32 and 4 existing. +2. Land **#4 (ForgivingParser dispatch)** -- unblocks #31 and existing dependants. +3. Pair **#30 alone** -- single-file, no deps, ideal warm-up after #24. +4. **#21 + #29** as single PR if scope held to two files.