design(config): define ownership of typed operation inputs
@keli-wen ci sta già lavorando.
Dal 18/7/2026.
Valutazione
Questa issue non è ancora stata valutata.
Descrizione
Context
PR #120 exposed an unresolved design boundary in the operation input and configuration layer. quantmind/configs/paper.py currently combines paper identifiers such as ArxivIdentifier and DoiIdentifier, transport locators such as HttpUrl and LocalFilePath, and content inputs such as RawText. Some are structurally duplicated in other flow modules, while some variants validate as PaperInput even though Paper Flow V1 rejects them at runtime.
This issue intentionally separates the cross-flow Pydantic placement decision from #119 and PR #120. The Paper Flow refactor should not silently establish a repository-wide convention while implementing one vertical slice.
Questions to Resolve
- When two inputs have the same fields and discriminator, should they share one transport-level Pydantic type or remain domain-specific nominal types?
- Should operation input unions contain only currently executable variants, or may they include reserved variants that fail at runtime?
- Should reusable source locators live under
quantmind.configs,quantmind.preprocess, a dedicated input package, or beside the public operation that consumes them? - Should a flow configuration remain flat, or compose stage-specific models such as ingest, parsing, chunking, summarization, persistence, and runtime settings?
- Which values should be closed enums or literals, and which extension points must remain open strings?
- How should any move preserve Pydantic JSON schema, YAML and magic resolution, discriminator stability, imports, and migration behavior?
Design Options
Shared structural types
Define reusable values such as HttpSource, LocalFileSource, and RawTextSource, then compose them into operation-specific discriminated unions.
This minimizes duplication but can erase domain semantics when the same shape has different content guarantees or runtime behavior.
Flow-owned nominal types
Keep each input model beside its operation and give it a domain-specific name such as PaperPdfUrl or EarningsReleaseUrl, even when fields match.
This preserves semantic intent but duplicates validation and transport behavior.
Hybrid boundary
Share transport primitives and validators while exposing operation-owned semantic wrappers or aliases. Operation unions contain only supported variants; future variants are introduced when their resolver exists. Stage-specific configuration models are composed by a small operation or pipeline config.
This is the initial candidate, not a decision. The discussion should test it against current paper, earnings, news, batch, magic, YAML, and schema-generation use cases.
Acceptance Criteria
- Document the ownership rule for reusable transport values, domain identifiers, operation inputs, and stage configuration.
- Decide whether unsupported reserved variants belong in public discriminated unions.
- Define naming and import conventions that avoid same-named models with different semantics.
- Show the intended Pydantic JSON schema for at least Paper and Earnings inputs.
- Specify compatibility and migration behavior for existing Python, YAML, and magic callers.
- Implement focused
unittest.TestCasecoverage and one concise example after the design is accepted.
Related Work
- #119 defines Source → Artifact → SearchProjection and the fixed Paper Flow V1 result.
- #120 implements that vertical slice and uses a typed
PaperArtifactKindfor the closed paper-artifact search discriminator without attempting this broader input/config relocation.
- Lingua principale
- Python
- Stelle
- 3.1k
- Fork
- 492
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di LLMQuant/quant-mind
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
LLMQuant/quant-mind#155 · 2 commenti ·
-
design(flows): structure tree drafted from truncated page text (1200 chars), diverging from PageIndex full-page constructionForse di nuovo libera @keli-wen l’ha presa 80 giorni fa e non c’è nessuna pull request aperta. Apertaarea: flows area: preprocess type: design
LLMQuant/quant-mind#133 · 1 commento · 1 assegnatario ·
-
feat(flows): surface token-usage and cost for runs and batch_runForse già presa @dhruvraajeev l’ha presa 80 giorni fa. Apertaarea: configs area: flows area: mind type: feature
Difficoltà 5/5 Più di una settimana Idoneità per principianti 45/100
LLMQuant/quant-mind#127 · 1 commento ·
-
bug: exchange-qualified multi-symbol lists are only partially capturedForse già presa @pengpengyi92 l’ha presa 81 giorni fa. Apertaarea: preprocess stale type: bug
Difficoltà 5/5 Più di una settimana Idoneità per principianti 38/100
LLMQuant/quant-mind#108 · 2 commenti ·
-
feat: page-preserving TreeKnowledge build + agentic navigationForse di nuovo libera @keli-wen l’ha presa 92 giorni fa e non c’è nessuna pull request aperta. Apertaarea: mind area: preprocess type: feature
LLMQuant/quant-mind#95 · 1 assegnatario ·
Tutte le issue di LLMQuant/quant-mind
Issue simili
-
feedback simulation workshop
Difficoltà 2/5 1-3 ore Idoneità per principianti 73/100
githubnext/gh-aw-workshop#4455 ·
I maintainer di solito rispondono entro 1 giorno
-
Triage 🩺
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
I maintainer di solito rispondono entro 1 giorno
-
[BUG] Container scenario crashes without expected_recovery_time, kube DNS example uses retry_waitApertaneeds-triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 77/100
krkn-chaos/krkn#1627 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
NousResearch/hermes-agent#136483 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
I maintainer di solito rispondono entro 1 giorno