Skip to content

feat(cli): status surfaces retrieval mode (summaries / vectors / embedder)#172

Merged
theagenticguy merged 5 commits into
mainfrom
fix/status-retrieval-mode
May 29, 2026
Merged

feat(cli): status surfaces retrieval mode (summaries / vectors / embedder)#172
theagenticguy merged 5 commits into
mainfrom
fix/status-retrieval-mode

Conversation

@theagenticguy
Copy link
Copy Markdown
Owner

Summary

An empty symbol_summaries table and/or absent embeddings silently leaves codehub query running BM25-only even though doctor reports embedder weights present. The user only discovers it by inspecting query --json (field-report Issue 5).

status now prints, after the node/edge counts:

summaries:      <N distinct nodes with an LLM summary, or - when degraded>
vectors:        populated | bm25-only | unknown
embedder:       <meta.embedderModelId | none>

Honesty corrections (from adversarial review)

  • vectors: populated is not hybrid. query also needs the active embedder to load and its modelId to match meta.embedderModelId (else it exits 2). So the line reports the embedder id from meta rather than implying hybrid will fire.
  • summaries and embeddings are distinct tables. Summaries-emptiness does not cause BM25-only (embeddings-emptiness does) — both are surfaced separately so the distinction is visible.

Changes

  • ITemporalStore.countSymbolSummaries() + DuckDbStore impl (COUNT(DISTINCT node_id), swallow→0 on a missing table). Updated the inline ITemporalStore fake in interface.test.ts.
  • runStatus gains a probeRetrieval test seam (defaults to opening the read-only composed store). When the store can't open it degrades to summaries: - / vectors: unknown, so a meta-only repo still renders the rest of status.

Test plan

  • On ngs-research-agent: summaries: 0 / vectors: bm25-only / embedder: none — the exact field-report scenario, now visible.
  • Tests: bm25-only path, populated path, and the degraded (store-unopenable) path that still emits the rest of status.
  • @opencodehub/storage 161/161 (+1 pre-existing vector skip), @opencodehub/cli 266/266, tsc + biome clean.

…dder)

symbol_summaries empty and/or embeddings absent silently leaves `query`
running BM25-only even though doctor reports embedder weights present — the
user only discovers it by inspecting --json (field-report Issue 5).

status now prints, after node/edge counts:
  summaries:  <N distinct nodes with an LLM summary, or -> when degraded>
  vectors:    populated | bm25-only | unknown
  embedder:   <meta.embedderModelId | none>

Honesty corrections from review: `vectors: populated` is NOT `hybrid` —
`query` also requires the active embedder to load AND its modelId to match
meta.embedderModelId, so we report the embedder id from meta rather than
implying hybrid will fire. summaries and embeddings are distinct tables;
summaries-emptiness does not cause BM25-only (embeddings-emptiness does), so
both are surfaced separately.

- Adds ITemporalStore.countSymbolSummaries() (+ DuckDbStore impl: COUNT
  DISTINCT node_id, swallow→0 on missing table). Updated the inline
  ITemporalStore fake in interface.test.ts.
- runStatus gains a probeRetrieval test seam (defaults to opening the
  read-only store); degrades to summaries:- / vectors:unknown when the store
  can't open, so a meta-only repo still renders the rest of status.

Verified on ngs-research-agent: summaries 0 / vectors bm25-only / embedder
none. Tests: bm25-only, populated, and degraded paths. storage 161/161, cli
266/266, tsc + biome clean.
@theagenticguy theagenticguy enabled auto-merge (squash) May 29, 2026 21:42
@theagenticguy theagenticguy merged commit 611e818 into main May 29, 2026
32 of 34 checks passed
@theagenticguy theagenticguy deleted the fix/status-retrieval-mode branch May 29, 2026 22:59
@github-actions github-actions Bot mentioned this pull request May 29, 2026
theagenticguy pushed a commit that referenced this pull request May 29, 2026
🤖 Automated release via release-please
---


<details><summary>analysis: 0.3.3</summary>

##
[0.3.3](analysis-v0.3.2...analysis-v0.3.3)
(2026-05-29)


### Features

* **cli:** expose 9 read-only graph tools as CLI subcommands
([#174](#174))
([be15666](be15666))


### Dependencies

* The following workspace dependencies were updated
  * dependencies
    * @opencodehub/storage bumped to 0.2.3
    * @opencodehub/wiki bumped to 0.2.3
</details>

<details><summary>cli: 0.5.6</summary>

##
[0.5.6](cli-v0.5.5...cli-v0.5.6)
(2026-05-29)


### Features

* **cli:** expose 9 read-only graph tools as CLI subcommands
([#174](#174))
([be15666](be15666))
* **cli:** status surfaces retrieval mode (summaries / vectors /
embedder)
([#172](#172))
([611e818](611e818))


### Bug Fixes

* **cli:** doctor verifies the bandit[sarif] formatter, not just the
binary ([#171](#171))
([0d78c92](0d78c92))
* **scanners:** exclude indexer-ignored dirs from vulture/radon/ty (drop
.venv noise)
([#168](#168))
([848aa34](848aa34))


### Documentation

* **repo:** clarify `sql` targets the temporal store, not the node/edge
graph ([#173](#173))
([814774a](814774a))


### Dependencies

* The following workspace dependencies were updated
  * dependencies
    * @opencodehub/analysis bumped to 0.3.3
    * @opencodehub/ingestion bumped to 0.4.5
    * @opencodehub/mcp bumped to 0.4.5
    * @opencodehub/pack bumped to 0.2.4
    * @opencodehub/scanners bumped to 0.2.3
    * @opencodehub/search bumped to 0.2.3
    * @opencodehub/storage bumped to 0.2.3
    * @opencodehub/wiki bumped to 0.2.3
</details>

<details><summary>cobol-proleap: 0.1.9</summary>

##
[0.1.9](cobol-proleap-v0.1.8...cobol-proleap-v0.1.9)
(2026-05-29)


### Dependencies

* The following workspace dependencies were updated
  * dependencies
    * @opencodehub/ingestion bumped to 0.4.5
</details>

<details><summary>ingestion: 0.4.5</summary>

##
[0.4.5](ingestion-v0.4.4...ingestion-v0.4.5)
(2026-05-29)


### Dependencies

* The following workspace dependencies were updated
  * dependencies
    * @opencodehub/analysis bumped to 0.3.3
    * @opencodehub/scip-ingest bumped to 0.2.5
    * @opencodehub/storage bumped to 0.2.3
</details>

<details><summary>mcp: 0.4.5</summary>

##
[0.4.5](mcp-v0.4.4...mcp-v0.4.5)
(2026-05-29)


### Features

* **cli:** expose 9 read-only graph tools as CLI subcommands
([#174](#174))
([be15666](be15666))


### Documentation

* **repo:** clarify `sql` targets the temporal store, not the node/edge
graph ([#173](#173))
([814774a](814774a))


### Dependencies

* The following workspace dependencies were updated
  * dependencies
    * @opencodehub/analysis bumped to 0.3.3
    * @opencodehub/pack bumped to 0.2.4
    * @opencodehub/scanners bumped to 0.2.3
    * @opencodehub/search bumped to 0.2.3
    * @opencodehub/storage bumped to 0.2.3
</details>

<details><summary>pack: 0.2.4</summary>

##
[0.2.4](pack-v0.2.3...pack-v0.2.4)
(2026-05-29)


### Dependencies

* The following workspace dependencies were updated
  * dependencies
    * @opencodehub/analysis bumped to 0.3.3
    * @opencodehub/ingestion bumped to 0.4.5
    * @opencodehub/storage bumped to 0.2.3
</details>

<details><summary>scanners: 0.2.3</summary>

##
[0.2.3](scanners-v0.2.2...scanners-v0.2.3)
(2026-05-29)


### Bug Fixes

* **scanners:** exclude indexer-ignored dirs from vulture/radon/ty (drop
.venv noise)
([#168](#168))
([848aa34](848aa34))
</details>

<details><summary>scip-ingest: 0.2.5</summary>

##
[0.2.5](scip-ingest-v0.2.4...scip-ingest-v0.2.5)
(2026-05-29)


### Dependencies

* The following workspace dependencies were updated
  * dependencies
    * @opencodehub/analysis bumped to 0.3.3
</details>

<details><summary>search: 0.2.3</summary>

##
[0.2.3](search-v0.2.2...search-v0.2.3)
(2026-05-29)


### Dependencies

* The following workspace dependencies were updated
  * dependencies
    * @opencodehub/storage bumped to 0.2.3
</details>

<details><summary>storage: 0.2.3</summary>

##
[0.2.3](storage-v0.2.2...storage-v0.2.3)
(2026-05-29)


### Features

* **cli:** status surfaces retrieval mode (summaries / vectors /
embedder)
([#172](#172))
([611e818](611e818))
</details>

<details><summary>wiki: 0.2.3</summary>

##
[0.2.3](wiki-v0.2.2...wiki-v0.2.3)
(2026-05-29)


### Dependencies

* The following workspace dependencies were updated
  * dependencies
    * @opencodehub/storage bumped to 0.2.3
</details>

<details><summary>root: 0.6.7</summary>

##
[0.6.7](root-v0.6.6...root-v0.6.7)
(2026-05-29)


### Features

* **cli:** expose 9 read-only graph tools as CLI subcommands
([#174](#174))
([be15666](be15666))
* **cli:** status surfaces retrieval mode (summaries / vectors /
embedder)
([#172](#172))
([611e818](611e818))


### Bug Fixes

* **cli:** doctor verifies the bandit[sarif] formatter, not just the
binary ([#171](#171))
([0d78c92](0d78c92))
* **scanners:** exclude indexer-ignored dirs from vulture/radon/ty (drop
.venv noise)
([#168](#168))
([848aa34](848aa34))


### Documentation

* **repo:** clarify `sql` targets the temporal store, not the node/edge
graph ([#173](#173))
([814774a](814774a))
</details>

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant