A generic phrase becomes a name, and a name is a bridge

Open
#770 2 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

  • #862 by @iuiu-py — closed without merging

Assessment

Difficulty
3/5
Estimated time
1-2 days
Newbie friendliness
45/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Active
Tech stack
postgresql, rust
Domain
backend

Research direction

Start by examining the server checks name_not_in_text and name_claimed_by_another to understand current name validation. Review the extraction contract to see how it distinguishes named entities from descriptions. Consider the two proposed approaches: either modify the contract to mark passage-fixed referents as descriptions, or add a structural check refusing names that duplicate the entity's class word. Check the linked PR #862 for existing work. Verify fixes using the NVIDIA entity panel and e2e bases to ensure generic phrases like 'the company' are not recorded as known_as names.

Written by the indexing model from the issue text.

Description

bug

The entity panel for NVIDIA lists six names: NVIDIA, NVIDIA CORPORATION, NVDA, company,
the registrant, the company. The first three are names. The last three are not, and the
contract already says so.

prior-work item 6: a thing is named only by a proper name or a fixed
term that means the same in any document; a role or a generic phrase whose referent the passage
decides is described, scoped to its document and never merged by string.
the registrant is
whoever filed the document. the company is whoever the paragraph is about.

It has already bridged two companies

In one e2e base, the company is a known_as name of both NVIDIA and SB Energy. A name is
the recall bridge and the key identity evidence will merge on (0041), so a generic phrase invites
exactly the merge that must never happen. Counts across the bases on hand:

name bases where it appears entities claiming it
the company 4 NVIDIA, SB Energy
registrant / the registrant 3 NVIDIA, NVIDIA CORPORATION
company 1 NVIDIA

Why nothing catches it

Two server checks guard names: name_not_in_text (the name, or its quote, occurs in the chunk) and
name_claimed_by_another (no other entity in this document already claims the string). A generic
phrase passes both: it is written in the passage, and within one document it really does refer to
one company.

What a fix has to avoid

A word list. The shape checks look at structure, never vocabulary, and most lowercase names in these
bases are legitimate: free cash flow, non-GAAP gross margin, inline XBRL, safe harbor are
fixed terms that mean the same in any document, which is what item 6 admits on purpose. The gate is
a term gate, not a proper-name gate.

The distinguishing property is not the string, it is that the referent is decided by the passage.
Two directions worth measuring before either is built:

  1. Ask the contract for it. The model already separates a described thing from a named one
    (#736); the extraction contract could say that a phrase whose referent the passage fixes is a
    description, and the statement keeps it in the qualifier rather than as a name.
  2. Refuse the name when the entity's own class word is the name. the company naming an
    organization, the registrant naming an organization: the name adds nothing the class does not
    already say. This is structural against the ontology rather than against a word list, but it
    needs measuring on a base where a class word is a real name.

Not this

The same base holds a second entity literally called NVIDIA CORPORATION, separate from NVIDIA.
That is the same company split across documents, which is expected until identity evidence lands
(0044 cut 4). It is not this bug.

Smaller and related: a possessive reaches known_as too (NVIDIA's, NVIDIA Corporation's).

Dominant language
Rust
Stars
8.1k
Forks
1.1k
Avg merge
23h 41m
Merged PRs (30d)
224

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from deeplethe/utopia

All issues in deeplethe/utopia

Similar issues

More Rust issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.