Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

One thing becomes two entities when two extractors type it differently

Open
#1,338 2 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
5/5
Estimated time
Over a week
Newbie friendliness
48/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Active
Tech stack
docker-compose, ollama, postgresql, rust
Domain
backend, databases

Research direction

Start by tracing how find_entities resolves identifiers and handles entity types across the tracker and document ingestion paths. Reproduce with ACME-1 using the two source types, then inspect how the resulting entities and derived facts are stored. Done means both sources resolve to one entity, with the type conflict kept as a reviewable fact and derived facts attached to that entity.

Written by the indexing model from the issue text.

Description

bug

Related: #709 (open) covers names written in another script. A name with and without an accent (Jose and José) looks like the same gap, so it is left out here.

What happens, and what you expected

One ticket gets two entities when one extractor types it as a ticket and another types it as a work item. Facts derived later attach to one copy or the other. Queries on either copy see half the picture.

Expected: The same identifier from two sources resolves to one entity, even when the sources disagree on its type. The type conflict is kept as a reviewable fact, not as a second entity.

How to see it
  1. Push ticket ACME-1 from a tracker source with type Ticket.
  2. Push a document that mentions ACME-1, extracted with type WorkItem.
  3. Call find_entities for ACME-1. See two entities.
  4. Add a rule that derives a fact from ACME-1. See it attach to only one copy.
Version

0.1.0-rc9 (ghcr image). Not checked on dev.

How it runs

docker compose

Models

Seen with a local chat model through Ollama and with a hosted chat model; bge-m3 embeddings.

Impact

Derived facts land on the wrong copy. Any answer built from one entity is silently incomplete.

Dominant language
Rust
Stars
8.1k
Forks
1.1k
Avg merge
21h 2m
Merged PRs (30d)
263

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.