Repository navigation
Conversation
…v.q29p) - Engine::mentions(id): the outgoing targets, the existing read::mentions put on the seam. - Engine::mentioned_by(id, &MentionedByQuery) / mentioned_by_value: the live items that mention a target, in id order, filtered by NextFilter (type, container, label) and cut/paged exactly like next_query. - read::mentioners_of(store, targets): THE bulk reverse lookup (over the new Store::mentioned_by_bulk) that the derived ranking key count = "mentioned_by" (x0wf) is to share, per docs/specs/derived-ranking-keys.md section 11. - The paging half of next_page is factored into page_through/Paging/Watermark, so next and mentioned_by share one snapshot table, expiry, caps and invalidation; the snapshot key names the read, so tokens do not cross between them. next's keys are unchanged. - CLI: nxf mention by <id> [--type]... [--in] [--label] [--limit [--paginate [--token]]], with list records and next's --json envelope; goldens under both plugins, guide EN/DE, generated docs, verb-seam alias. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016q5uMUkZJQW4fckJoA3FME
This was referenced Oct 11, 2026
cabcookie
added a commit
that referenced
this pull request
Oct 11, 2026
…paging, local derived ranking keys (nxf 6j6v.q29p, n698, x0wf) (#49) Folds #46 (q29p), #47 (n698) and #48 (x0wf) plus the mitigation of their combined independent review. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016q5uMUkZJQW4fckJoA3FME
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
An embedding product can now read mention edges back over its seam, in both directions.
Engine::mentions(id) -> Result<Vec<String>>returns the outgoing targets. It is the existingread::mentions, put on the seam.Engine::mentioned_by(id, &MentionedByQuery) -> Result<NextPage>andEngine::mentioned_by_value(id, &MentionedByQuery) -> Result<Value>return the live items that mention a target, in id order. Closed and archived mentioners count; deleted ones do not. The query takes aNextFilter(type, container = belongs_to OR contributes_to, label) and pages exactly likenext_query.nxf mention by <id> [--type T]... [--in ID] [--label L] [--limit N [--paginate [--token T]]].--jsongiveslist --jsonrecords (with presentation labels) as a plain array.--limitit gives{"items", "total"}, and with--paginatealsonext_tokenandrestarted. This is the same flag-shaped rule asnext.Shared with x0wf (spec derived-ranking-keys section 11)
read::mentioners_of(store, targets: &[&str]) -> Result<BTreeMap<String, Vec<ItemRow>>>is the reverse lookup:Store::mentioned_by_bulk, new in core) plus one item read.mentioned_bynarrows its result with aNextFilter.count = "mentioned_by"should count the rows per candidate that pass itstype/status/labelparts. That costs O(E + N) over a candidate set (spec section 5).Paging reuse, not a copy
The paging half of
next_page_atis factored into the privatePaging(validation),Watermarkandpage_through(cut, resume, cache).next_pageandmentioned_by_pageboth call it, so they share thenext_page_cachetable, the 1h expiry, the 8-per-query and 64-total caps, the invalidation rules and the restart-on-stale-token behaviour.{"read":"mentioned_by","target":..,"filter":..}), so a token never crosses betweennextandmentioned_byor between targets.next's key format is unchanged, so existing tokens keep working.Tests
crates/facade/tests/mentioned_by.rs(new, 12 tests at the Engine seam): outgoing read, live/closed/deleted/removed set, not_found, type and container filters, limit, paginate walk, restart on a removed mention, outside op that does not invalidate, cross-target/filter/read tokens restart, validation, value envelope, bulkmentioners_of.read.rsunit test: a mentioned-by token expires on the injected clock.store.rsunit test:mentioned_by_bulk.crates/cli/tests/mention.rs: 4 black-box tests (records + filters, envelope + paging + stale restart, human view, errors).$HOMEis pinned viacargo_bin.mention by->mentioned_by.Run locally: those test files,
next_query(18, unchanged), the facade lib paging tests,verb_seam,golden,guide_examples,cargo xtask docs check/docs coverage,cargo xtask changelog check. No clippy and no full suite were run locally; CI is the gate.Fragment:
changes/q29p-mention-reads.md,facade: changed(additive).🤖 Generated with Claude Code
https://claude.ai/code/session_016q5uMUkZJQW4fckJoA3FME