Concept · core
Use when
You look for what a project says or knows, before you read, cite, answer or extract.
Looking for something else?
A File by its name or ID (card File). Everything about one topic as a packet (card Context). Walking relationships from a known entity (card Relationship).
For
Search reads two places. File search returns passages: pieces of the text extracted from a File’s current version. Each passage comes with the File, the version and the passage ID. Graph search returns entities saved in the Graph, with their type and ID. Search is how a job moves from Files to answers. Search finds a passage, you open and cite it, and an entity can then hold the fact with that citation. Search the Graph before you extract or capture, so you reuse an entity that already exists. A result is either a passage or a File. Passages are the default. To choose among many Files, ask for the Files that matched. Each File comes with its synopsis (card Synopsis), so you open the few that matter and cite their passages. The steps are search, then open, then cite. A new edition of a File takes over in search once its version is ready (card file). Every File search reports the mode that ran and how much of the project it covered. Read that report before you decide that something is not there.Use when
- You need passages to answer a question or to cite.
- You must choose which of many Files to open, before you read any of them.
- You look for an entity by name, description or property before you create one.
- You must tell the person what the project holds on a topic.
- A result says it ran in a different mode than you asked for.
Not this
- A File by name when you know it: use
penumbra files find(card File). - All you know about one topic, bundled for an agent: use card Context.
- Entities one relationship away from a known entity: use card Relationship.
Rules
search.1Choose the mode on purpose. Lexical mode matches words and works as soon as a version is searchable. Semantic mode matches meaning. Hybrid mode does both. Your job: the defaults differ by door.penumbra files searchuses hybrid, andpenumbra graph searchuses lexical. The commandpenumbra searchuses each side’s own default, unless you pass--mode. The MCP toolomnisearchand the program methodpenumbra.searchuse hybrid for both. The MCP toolfile_gallerystarts in a text mode that does not use meaning.search.2The result states the mode that ran. Your job: read it. A hybrid search runs as lexical, with a warning, in three cases. No version has finished embedding. Meaning search is unavailable. The query is too long for it. A semantic search with no embedded version returns nothing and warns. If meaning search is unavailable, it fails withsemantic_unavailable.search.3File search covers only the current version of each live File. Enforced: older versions, trashed Files and versions that are still processing never appear. While a new edition processes, search still returns the old edition.search.4Meaning search trails word search. A version is searchable by words first and by meaning after embedding. Your job: when a new File is missing from a meaning search, runpenumbra files inspecton it and read the lexical and semantic status. Search by words in the meantime.search.5Filters narrow a File search: File IDs, collection IDs, tags and media types. Enforced: an unknown or trashed File ID, or a File or collection ID from another project, refuses the whole search withsearch_filter_not_found. It does not say which ID was wrong. Filters never narrow the Graph side.search.6penumbra searchruns the File search and the Graph search together. Your job: read each side’s own mode and warnings. One side can fail while the other answers, and the command exits non-zero only when every side fails. The limit is per side, so the lists share no ranking. With--results files, the Files side also reads the Files that matched. If that read fails, the Files side fails.search.7Graph search finds only entities that are in the Graph. Staged items in a workspace are not found. Your job: after a submit returnsapplied, an entity can still be missing for a moment, so search again or open it by ID.search.8Search has no filter or order by source date, and a File row carries none. Your job: read the source date from the version listing withpenumbra files versions, and order the results yourself.search.9Every File result carries the File ID, the version ID and the passage ID. An audio or video result carries a moment ID in place of the passage ID. Your job: keep all three with each fact you use. A citation needs them, and the person can reopen the passage with them (card Passage and citation).search.10Zero results does not mean the project lacks the fact. Lexical mode needs every plain word to match, and quoted phrases andorwork. Your job: try hybrid mode, a shorter query and the coverage report. A View can also hide items, which then look missing.search.11Each door sets its own limits. Enforced:penumbra searchtakes a query of up to 8,192 characters and 1 to 50 results per side. Its entity side takes up to 512 characters: a longer query still searches passages, and the entity side fails withinvalid_input. The MCP toolomnisearchandpenumbra.searchtake a query of up to 2,048 characters and 1 to 20 results per catalog. They take up to 100 collections and up to 20 tags, media types or File references. A request outside the limit is refused as invalid.search.12Choose what one result is. Enforced:results:'passages'is the default and returns passages.results:'files'returns one row for each File that matched. A row has its name, type, tags, collections, best-matching page, whether it is searchable by words and meaning, and its synopsis (card Synopsis). A row carries no source date yet. Your job: ask for Files when you must choose, then read the few that matter and cite their passages. The command ispenumbra search --results files.--no-synopsisandsynopsis:falseleave the synopses out.search.13The filters combine in one way. Enforced: a File must be in at least one of the collections you name. It must carry every tag you name. It must match one of the media types and be one of the File references. The toolomnisearchandpenumbra.searchrefuse a filter whencatalogsleaves outfiles. Your job: name collections by ID, and check them inproject_overviewfirst.search.14A search can read one catalog or both. Enforced:catalogstakesfiles,graphor both. Without it, the search reads every catalog the connection can read. A catalog it cannot read is refused withcatalog_unavailable. The commandpenumbra searchuses--onlyfor the same choice.
Failure signs
- Search returns nothing for words you know are in a File: problem search-returns-nothing.
- Search warns that meaning search is unavailable: rule search.2.
- A new File is missing from a meaning search: problem new-file-not-searchable-yet.
- You must choose among many Files and have only passages: rule search.12 and card synopsis.
- A filter returns less than you expect: rule search.13.
- You need the newest of several dated facts: rule search.8.
- Search returns text from the old edition after a replace: rule search.3.
- Search returns two passages that disagree about one fact: problem two-editions-two-files.
Doors
The MCP tool
search_graph defaults to lexical mode and takes 1 to 100 results.
The CLI command penumbra graph search takes the same range.