Create wiki page: Learning-20260425-product-owner-run20
@@ -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.
|
||||||
Reference in New Issue
Block a user