fix(ownership): one release order everywhere; keep the old search API

From the Codex re-gate of the 0.3.3 fixes:
- `changes` broke ties between same-date releases by row id, but the
  ticker, entity, and graph queries and the snapshot builder did not, so
  two files imported in the same second could resolve differently per
  query. Order by as_of_date, imported_at, then id everywhere.
- search::fts_search and search::rebuild_fts were public in a published
  crate; keep them as deprecated wrappers.
- Invalid --source and --by are INVALIDINPUT, like other argument errors.
- The prefix-ranking test could not tell prefix from exact-alias ranking;
  add one where only prefix vs substring differs.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01V3syn2fN2LNo5pvTSqc6eh
This commit is contained in:
hermes 2026-10-17 05:07:41 +00:00
commit 6abc4a0712
5 changed files with 63 additions and 8 deletions

View file

@ -555,7 +555,7 @@ impl FromStr for HolderSource {
"all" => Ok(Self::All),
"ksei" => Ok(Self::Ksei),
"bing" => Ok(Self::Bing),
_ => Err(IdxError::ParseError(
_ => Err(IdxError::InvalidInput(
"invalid --source, expected: all|ksei|bing".to_string(),
)),
}
@ -588,7 +588,7 @@ impl FromStr for ConcentrationRank {
"top1" => Ok(Self::Top1),
"top3" => Ok(Self::Top3),
"hhi" => Ok(Self::Hhi),
_ => Err(IdxError::ParseError(
_ => Err(IdxError::InvalidInput(
"invalid --by, expected: top1|top3|hhi".to_string(),
)),
}