post-graph-rag epistemic report
Type: agentic-system-analyses/types/agentic-system-epistemic-report.md
Source-and-claim boundary
This report asks what licenses reliance on imported assertions, extracted graph content, summaries and answers, and which checks actually change use. The scope and exclusions are those of boundary; evidence identity is its Source register, SRC-1. Python library entry points, not a package CLI, own the principal routes. Direct inspection of SRC-1 pyproject.toml and post_graph_rag/__init__.py found exported Python operations and no package CLI entry-point declaration there. The supplied runtime establishes model messages rather than registered native tools, host-process callback replacement, maintenance and release paths. Those findings are inputs, not an exhaustive independent tool audit.
Direct reads added extraction gates and prompts, contradiction candidate construction and consumers, relation upsert and provenance withdrawal, report rendering/flattening, query rendering/return metadata, community reranking, and three offline scorer implementations. All new findings below use implementation or embedded doctrine in SRC-1, not executed target behavior. No model request, database operation or test was run. Tracked result JSON, evaluation ablations and article tables were not assessed as run or causal evidence. Their availability is not an access gap. Provider internals, database contents and external benchmark reference provenance remain outside the frozen evidence; these prevent source-truth certification, deployed guarantees and independently authenticated performance.
The public warrant claims are EPI-CLM-close-fact, EPI-CLM-report-grounding, EPI-CLM-benchmark-rates, EPI-CLM-validity-effect, and the supplied RT-CLM-passage-priority. No single knowledge-production verdict follows from them.
| Entry point or operation | SRC-1 path | Coverage and records, or limit |
|---|---|---|
| Package exports/configuration and caller injection | post_graph_rag/__init__.py, pyproject.toml; supplied post_graph_rag/config.py |
Direct exports/metadata; RT-RTE-extractor-extension covers callbacks and replacement; arbitrary callback semantics uninspected. |
| index_text/index_documents/index_document | post_graph_rag/engine.py, post_graph_rag/extractor.py |
Supplied RT-RTE-document-admission, plus direct EPI-RTE-validation-check and EPI-RTE-contradiction-check. |
| Direct store upsert, supersession and source deletion | post_graph_rag/graph_store.py |
Direct EPI-RTE-relation-upsert, EPI-RTE-supersession-write, EPI-RTE-source-withdrawal. |
| build_communities and parent reports | post_graph_rag/reporting.py, post_graph_rag/engine.py |
Direct renderer and supplied RT-RTE-community-build; EPI-RTE-community-render. |
| query_data, query, bypass, streaming | post_graph_rag/engine.py, supplied post_graph_rag/llm.py |
Direct render/return and rerank; supplied RT-RTE-question-answer, RT-RTE-direct-answer. |
| apply_retention/restore, telemetry, coverage, deltas | post_graph_rag/retention.py, post_graph_rag/deltas.py, post_graph_rag/engine.py |
Supplied RT-RTE-retention-control. Delta/exploration arithmetic not independently assessed: prevents a complete account of every diagnostic proposition. |
| document_stats/document_graph/sweep_orphaned_relations | post_graph_rag/engine.py, post_graph_rag/graph_store.py |
Direct wrapper and deletion/dormancy reads; EPI-RTE-source-withdrawal. Detailed stat/graph SQL not audited; no complete diagnostic accuracy claim. |
| Shipped index/reload callers and examples | demo_rag.py, examples/, evaluation/index_corpus.py, evaluation/analyse_graph.py, evaluation/ectqa/replay.py |
Supplied boundary/runtime coverage only; no independently observed caller episode. |
| Offline ECT-QA and LongMemEval scoring | evaluation/ectqa/native_score.py, evaluation/ectqa/score.py, evaluation/longmemeval/regrade_official.py |
Direct EPI-RTE-benchmark-check; this is not the complete evaluator family. |
| Other benchmark runners, blind judges, calibration, comparison and ablation | evaluation/, tables/, docs/index.md |
Available but detailed mechanisms/results uninspected. Prevents evaluator-complete negatives, independent headline-rate verification and component attribution. |
| Tests, CI and publication | tests/, .github/workflows/ |
Supplied RT-RTE-package-release; tests unexecuted/unassessed as correctness evidence. |
Epistemic-object inventory
Each object owns its fields in the cited declaration; the inventory is a sparse index, not a second store of those fields.
| Object ID | Candidate truth-apt content or none | Claimed role | Evidence source ID and local anchor | Gap/limit |
|---|---|---|---|---|
| EPI-OBJ-document | Source assertions | see record | SRC-1 post_graph_rag/engine.py |
Source truth unknown |
| EPI-OBJ-entity | Names, identity and descriptions | see record | SRC-1 post_graph_rag/extractor.py |
Alias equivalence unverified |
| EPI-OBJ-triple | Relation plus polarity and temporal scope | see record | SRC-1 post_graph_rag/graph_store.py |
Upsert combines evidence fields |
| EPI-OBJ-contradiction-result | Offered-ID contradiction judgment | see record | SRC-1 post_graph_rag/extractor.py |
Candidate projection may omit decisive detail |
| EPI-OBJ-community-report | Summary/findings | see record | SRC-1 post_graph_rag/reporting.py |
Faithfulness not established |
| EPI-OBJ-community-rating | Importance judgment, not a source-fact certificate | see record | SRC-1 post_graph_rag/engine.py |
Ranking force distinct from summary |
| EPI-OBJ-answer | Answer propositions | see record | SRC-1 post_graph_rag/engine.py |
No inspected query-time truth gate |
| EPI-OBJ-grade | Correctness/refusal estimates relative to gold | see record | SRC-1 evaluation/ectqa/native_score.py |
Domain-specific proxy |
| RT-OBJ-query-param | see record | see record | SRC-1 post_graph_rag/models.py |
History truth and authorship unresolved |
| RT-CMP-embedding-model, RT-CMP-local-embedding | No individually readable proposition established in dense vectors | see records | SRC-1 post_graph_rag/llm.py |
Provider provenance and vector-space compatibility unresolved |
Authority-route ledger
Architectural status refers to implemented pathways, not observed activation. “See” fields are owned by the cited records. A model transformation is indeterminate when the available implementation permits reshaping, entailed inference or unsupported additions without establishing which occurred. Requested groundedness alone establishes none of these semantic outcomes.
Route ID: RT-RTE-document-admission
Route function: content transformation
Architectural status: implemented
Object/candidate ID: EPI-OBJ-document
Content/update relation: truth-apt transformation: acquisition/import
Transition or check target: Caller text into passage store
Evaluator/condition and domain: Caller input, not truth evaluator
Activation and timing: Caller indexes a chunk
Possible or observed result: Passage and vector; source warrant unknown
Implemented force: Permissive import
Epistemic authority and scope: No source-truth license
Operational authority: behavior permitted, blocked, or changed: Stored source assertions available to later queries
Behavioral-authority path: consumer, channel, force, horizon: Store → retrieval → synthesis, evidential/advisory, later invocations
Evidence source ID and local anchor: SRC-1 post_graph_rag/engine.py
Claim IDs or none: RT-CLM-passage-priority
Mismatch marker or none: none
Gap/limit: See record; failures can occur before passage write.
Route ID: RT-RTE-document-admission
Route function: content transformation
Architectural status: implemented
Object/candidate ID: EPI-OBJ-entity, EPI-OBJ-triple
Content/update relation: truth-apt transformation: indeterminate
Transition or check target: Text/context to model extraction/gleaning
Evaluator/condition and domain: Prompt requests stated facts; model interpretation
Activation and timing: Default extraction; optional gleaning
Possible or observed result: Candidate structure
Implemented force: Proposal only, then gates
Epistemic authority and scope: Requested grounding; preservation/entailment unproved
Operational authority: behavior permitted, blocked, or changed: Candidates may enter graph without source-truth test
Behavioral-authority path: consumer, channel, force, horizon: Extraction → validation/writer, permissive after gates, later queries
Evidence source ID and local anchor: SRC-1 post_graph_rag/extractor.py
Claim IDs or none: none
Mismatch marker or none: none
Gap/limit: Alternatives: reshaping, derivation or conjecture; deciding requires input/output content and evidence.
Route ID: EPI-RTE-validation-check
Route function: check/evidence production
Architectural status: implemented
Object/candidate ID: EPI-OBJ-triple
Content/update relation: no content change
Transition or check target: Names/predicates/confidence/polarity gates
Evaluator/condition and domain: Deterministic configured rules over candidate fields
Activation and timing: On default validated branch
Possible or observed result: Filtered structure or ExtractionError
Implemented force: Enforcing only on invoking branches
Epistemic authority and scope: Conformity to rules, not truth
Operational authority: behavior permitted, blocked, or changed: Rejects nonconforming records from returned extraction
Behavioral-authority path: consumer, channel, force, horizon: _validate → extraction return → writer, enforcing, current admission
Evidence source ID and local anchor: SRC-1 post_graph_rag/extractor.py
Claim IDs or none: none
Mismatch marker or none: none
Gap/limit: Coercion, parsing and semantic truth are separate.
Route ID: RT-RTE-extractor-extension
Route function: disposition/acceptance
Architectural status: implemented
Object/candidate ID: EPI-OBJ-entity, EPI-OBJ-triple
Content/update relation: no content change
Transition or check target: External result admission
Evaluator/condition and domain: Caller configuration plus coercion/optional gates
Activation and timing: External replace or merge
Possible or observed result: Usable structured candidate accepted operationally
Implemented force: Permissive configurable admission
Epistemic authority and scope: No evidence-consuming truth acceptance established
Operational authority: behavior permitted, blocked, or changed: Can bypass default semantic gates
Behavioral-authority path: consumer, channel, force, horizon: Callback → extract_from_text → writer, permissive, persisted graph
Evidence source ID and local anchor: SRC-1 post_graph_rag/extractor.py
Claim IDs or none: none
Mismatch marker or none: none
Gap/limit: See record; arbitrary injected extractor is opaque.
Route ID: EPI-RTE-relation-upsert
Route function: retention
Architectural status: implemented
Object/candidate ID: EPI-OBJ-triple
Content/update relation: truth-apt transformation: indeterminate
Transition or check target: Repeated same-key assertions to one edge
Evaluator/condition and domain: Symbolic merge; source IDs/fields, no truth oracle
Activation and timing: Relation insertion/reobservation
Possible or observed result: Combined description/polarity/confidence/period/provenance
Implemented force: Enforcing payload replacement
Epistemic authority and scope: Provenance indicates assertions, not independent corroboration
Operational authority: behavior permitted, blocked, or changed: Retained edge used by retrieval/build
Behavioral-authority path: consumer, channel, force, horizon: Store edge → retrieval/build, permissive evidence, later invocations
Evidence source ID and local anchor: SRC-1 post_graph_rag/graph_store.py
Claim IDs or none: none
Mismatch marker or none: none
Gap/limit: Merge can change semantic scope; see counterexample in record. Not lifecycle integration after epistemic acceptance.
Route ID: EPI-RTE-contradiction-check
Route function: check/evidence production
Architectural status: implemented
Object/candidate ID: EPI-OBJ-contradiction-result
Content/update relation: truth-apt transformation: indeterminate
Transition or check target: Compatibility of new assertion and offered earlier assertions
Evaluator/condition and domain: Extraction model; same-subject limited candidates, projected descriptions/periods
Activation and timing: Enabled and declarative pass found no conflict
Possible or observed result: Offered IDs judged contradicted or empty list
Implemented force: Advisory judgment until write route
Epistemic authority and scope: Conditional incompatibility judgment; no independent source-truth test
Operational authority: behavior permitted, blocked, or changed: Supplies withdrawal IDs
Behavioral-authority path: consumer, channel, force, horizon: Model → offered-ID filter → mark_superseded, permissive decision input, current update
Evidence source ID and local anchor: SRC-1 post_graph_rag/extractor.py
Claim IDs or none: EPI-CLM-close-fact
Mismatch marker or none: none
Gap/limit: Prompt examples assume uniqueness; underlying assertions may be false.
Route ID: EPI-RTE-supersession-write
Route function: disposition/acceptance
Architectural status: implemented
Object/candidate ID: EPI-OBJ-triple
Content/update relation: no content change
Transition or check target: Change reliance on earlier edge
Evaluator/condition and domain: Exclusive predicate groups/document order OR filtered model IDs
Activation and timing: After new relation write
Possible or observed result: superseded_by and t_expired set
Implemented force: Enforcing for default relation filter
Epistemic authority and scope: Operational retraction, not verification of successor
Operational authority: behavior permitted, blocked, or changed: Earlier relations withheld unless include_superseded; other channels unaffected
Behavioral-authority path: consumer, channel, force, horizon: Store flags → engine relation filter, enforcing, later queries
Evidence source ID and local anchor: SRC-1 post_graph_rag/graph_store.py
Claim IDs or none: EPI-CLM-close-fact
Mismatch marker or none: overbroad if read as every answer channel
Gap/limit: Failure retains new edge; no universal replay/historical-answer guarantee.
Route ID: EPI-RTE-source-withdrawal
Route function: lineage/freshness/recovery
Architectural status: implemented
Object/candidate ID: EPI-OBJ-triple
Content/update relation: no content change
Transition or check target: Deleted chunk contributions and dormant relations
Evaluator/condition and domain: Source membership and endpoint liveness, not truth
Activation and timing: Deletion/replacement; repair sweep for endpoint orphans
Possible or observed result: Sources/weight updated, unsupported edges dormant
Implemented force: Enforcing in default relation consumers
Epistemic authority and scope: Loss of retained provenance, not falsification
Operational authority: behavior permitted, blocked, or changed: Withholds dormant relations by default; revival needs specific conditions
Behavioral-authority path: consumer, channel, force, horizon: Deletion → SQL payload → store read gates, enforcing, later invocations
Evidence source ID and local anchor: SRC-1 post_graph_rag/graph_store.py
Claim IDs or none: none
Mismatch marker or none: none
Gap/limit: No automatic community report rewrite; old source-less relations need bounded repair.
Route ID: EPI-RTE-community-render
Route function: content transformation
Architectural status: implemented
Object/candidate ID: EPI-OBJ-triple
Content/update relation: truth-apt transformation: indeterminate
Transition or check target: Graph fields to report-model input
Evaluator/condition and domain: Deterministic projection/clipping
Activation and timing: Each report, including pseudo-graph of child reports
Possible or observed result: Names/types/descriptions, polarity/weight; dates not separately rendered
Implemented force: Enforcing input selection
Epistemic authority and scope: Degraded explicit temporal lineage; descriptions may retain dates
Operational authority: behavior permitted, blocked, or changed: Limits evidence available for report generation
Behavioral-authority path: consumer, channel, force, horizon: Renderer → community model user input, evidential, current report
Evidence source ID and local anchor: SRC-1 post_graph_rag/reporting.py
Claim IDs or none: EPI-CLM-report-grounding
Mismatch marker or none: none
Gap/limit: Concrete date/polarity projection below; no execution needed.
Route ID: RT-RTE-community-build
Route function: content transformation
Architectural status: implemented
Object/candidate ID: EPI-OBJ-community-report, EPI-OBJ-community-rating
Content/update relation: truth-apt transformation: indeterminate
Transition or check target: Graph/child reports to summary/findings/rating
Evaluator/condition and domain: Community model instructed to ground every statement
Activation and timing: Caller build, optional hierarchy
Possible or observed result: Candidate report and importance rating
Implemented force: Proposal before parsing
Epistemic authority and scope: Grounding requested; not demonstrated
Operational authority: behavior permitted, blocked, or changed: Produces text eligible for storage and future ranking
Behavioral-authority path: consumer, channel, force, horizon: Community model → reporter, permissive, current build
Evidence source ID and local anchor: SRC-1 post_graph_rag/reporting.py
Claim IDs or none: EPI-CLM-report-grounding
Mismatch marker or none: none
Gap/limit: No outputs inspected to distinguish faithful compression from additions.
Route ID: RT-RTE-community-build
Route function: check/evidence production
Architectural status: implemented
Object/candidate ID: EPI-OBJ-community-report
Content/update relation: no content change
Transition or check target: Report usability, not proposition truth
Evaluator/condition and domain: Parsing/type/nonempty summary
Activation and timing: After model return
Possible or observed result: Usable report or exception
Implemented force: Enforcing syntactic/usability gate
Epistemic authority and scope: Schema/nonempty only
Operational authority: behavior permitted, blocked, or changed: Bad parse/empty summary cannot proceed
Behavioral-authority path: consumer, channel, force, horizon: Reporter → engine, enforcing, current cluster
Evidence source ID and local anchor: SRC-1 post_graph_rag/reporting.py
Claim IDs or none: EPI-CLM-report-grounding
Mismatch marker or none: none
Gap/limit: No ground-truth or entailment evaluator in this function.
Route ID: RT-RTE-community-build
Route function: disposition/acceptance
Architectural status: implemented
Object/candidate ID: EPI-OBJ-community-report
Content/update relation: no content change
Transition or check target: Admit usable report for answering
Evaluator/condition and domain: Engine persists returned report after embedding; cluster failures skipped per policy
Activation and timing: Caller-triggered rebuild
Possible or observed result: Stored report/membership, possibly partial build
Implemented force: Permissive operational admission
Epistemic authority and scope: No named evidence-consuming semantic acceptance decision
Operational authority: behavior permitted, blocked, or changed: Later queries and parent reports may rely on it
Behavioral-authority path: consumer, channel, force, horizon: Engine → store → parent/query, permissive, until rebuild
Evidence source ID and local anchor: SRC-1 post_graph_rag/engine.py
Claim IDs or none: EPI-CLM-report-grounding
Mismatch marker or none: none
Gap/limit: Retention follows operational admission; lifecycle integration after epistemic acceptance unestablished.
Route ID: RT-RTE-community-build
Route function: retention
Architectural status: implemented
Object/candidate ID: EPI-OBJ-community-report
Content/update relation: no content change
Transition or check target: Report text, rating and membership stored
Evaluator/condition and domain: Store writes, not truth check
Activation and timing: Successful report embedding/write
Possible or observed result: Retained derived artifact
Implemented force: Enforcing storage policy
Epistemic authority and scope: Retention adds no warrant
Operational authority: behavior permitted, blocked, or changed: Feeds later global/hybrid queries
Behavioral-authority path: consumer, channel, force, horizon: Store → retrieval/model, evidential, subsequent queries/build levels
Evidence source ID and local anchor: SRC-1 post_graph_rag/graph_store.py
Claim IDs or none: none
Mismatch marker or none: none
Gap/limit: Old communities cleared before rebuild; staleness warns instead of rejecting.
Route ID: RT-RTE-question-answer
Route function: operational admission/selection/consumption
Architectural status: implemented
Object/candidate ID: EPI-OBJ-document, EPI-OBJ-triple, EPI-OBJ-community-report
Content/update relation: no content change
Transition or check target: Context selection/ranking/filtering
Evaluator/condition and domain: Fixed retrieval/fusion rules and auxiliary proposals
Activation and timing: Query mode and options
Possible or observed result: Selected context, not accepted truths
Implemented force: Ranking and relation-filter enforcement
Epistemic authority and scope: Relevance/temporal eligibility, not endorsement
Operational authority: behavior permitted, blocked, or changed: Selected text reaches synthesis/raw-context caller
Behavioral-authority path: consumer, channel, force, horizon: Store → engine → user message/caller, ranking/evidential, current query
Evidence source ID and local anchor: SRC-1 post_graph_rag/engine.py
Claim IDs or none: none
Mismatch marker or none: none
Gap/limit: Community importance is model-generated and affects score; temporal protections are channel-specific.
Route ID: RT-RTE-question-answer
Route function: content transformation
Architectural status: implemented
Object/candidate ID: EPI-OBJ-answer
Content/update relation: truth-apt transformation: indeterminate
Transition or check target: Retrieved fields to answer
Evaluator/condition and domain: Synthesis model instructed to use context/abstain
Activation and timing: Normal query; history may intervene
Possible or observed result: Answer or streamed deltas
Implemented force: Advisory output, no correctness veto
Epistemic authority and scope: No answer certification
Operational authority: behavior permitted, blocked, or changed: Caller receives answer; no automatic answer-store write
Behavioral-authority path: consumer, channel, force, horizon: Synthesis → return/stream, advisory, current answer
Evidence source ID and local anchor: SRC-1 post_graph_rag/engine.py
Claim IDs or none: none
Mismatch marker or none: none
Gap/limit: Returned retrieved_graph_triples omit polarity/period despite richer synthesis prompt.
Route ID: RT-RTE-direct-answer
Route function: content transformation
Architectural status: implemented
Object/candidate ID: EPI-OBJ-answer
Content/update relation: truth-apt transformation: indeterminate
Transition or check target: History/question without corpus to answer
Evaluator/condition and domain: External model; no reference check
Activation and timing: Bypass
Possible or observed result: Direct answer/stream
Implemented force: Advisory
Epistemic authority and scope: No corpus-derived warrant
Operational authority: behavior permitted, blocked, or changed: Caller receives answer without retrieval
Behavioral-authority path: consumer, channel, force, horizon: Provider → caller, advisory, current answer
Evidence source ID and local anchor: SRC-1 post_graph_rag/engine.py
Claim IDs or none: none
Mismatch marker or none: none
Gap/limit: See record; not evidence that every answer is grounded in this corpus.
Route ID: RT-RTE-retention-control
Route function: behavior/policy adaptation
Architectural status: implemented
Object/candidate ID: EPI-OBJ-entity
Content/update relation: non-truth-apt policy/content update: archive eligibility flags
Transition or check target: Exposure/age/degree to archive selection
Evaluator/condition and domain: Fixed scoring, caller threshold
Activation and timing: Telemetry enabled then caller retention non-dry-run
Possible or observed result: Changed entity seed/snapshot eligibility
Implemented force: Enforcing on named consumers
Epistemic authority and scope: Not correctness evaluation
Operational authority: behavior permitted, blocked, or changed: Archive/restore changes later selection
Behavioral-authority path: consumer, channel, force, horizon: Event stats → retention → entity search/snapshot, enforcing, subsequent queries
Evidence source ID and local anchor: SRC-1 post_graph_rag/retention.py
Claim IDs or none: none
Mismatch marker or none: none
Gap/limit: Trace-fed selection is not demonstrated learning or improved answers.
Route ID: EPI-RTE-benchmark-check
Route function: check/evidence production
Architectural status: implemented
Object/candidate ID: EPI-OBJ-grade
Content/update relation: truth-apt transformation: indeterminate
Transition or check target: ECT-QA stored answer elements against stored gold/temporal scope
Evaluator/condition and domain: Configured LLM with native element rubric; factual figures about 1% tolerance
Activation and timing: Native scorer, gold not unanswerable, parseable nonempty element list
Possible or observed result: correct/refusal/incorrect fractions, with failed cases excluded and reportable flag
Implemented force: Advisory benchmark reporting
Epistemic authority and scope: Model-relative reference agreement; no guarantee of full gold decomposition or exhaustive label validity
Operational authority: behavior permitted, blocked, or changed: Report rows/statistics, no inspected query veto or automatic product patch
Behavioral-authority path: consumer, channel, force, horizon: Scorer → JSON/console → operator, advisory, offline comparison
Evidence source ID and local anchor: SRC-1 evaluation/ectqa/native_score.py
Claim IDs or none: EPI-CLM-benchmark-rates
Mismatch marker or none: protocol and comparison limits
Gap/limit: Native protocol differs from paper rubric/model; grade label vocabulary not enforced. No observed execution or causal component support assessed.
Route ID: EPI-RTE-benchmark-check
Route function: check/evidence production
Architectural status: implemented
Object/candidate ID: EPI-OBJ-grade
Content/update relation: truth-apt transformation: indeterminate
Transition or check target: ECT-QA gold=unanswerable prediction refusal
Evaluator/condition and domain: Deterministic lexical markers in entire lowercased answer
Activation and timing: Native scorer special branch, before model call
Possible or observed result: One correct or incorrect element, refusal fraction zero
Implemented force: Advisory benchmark reporting
Epistemic authority and scope: Lexical refusal recognition only, not proof of justified abstention
Operational authority: behavior permitted, blocked, or changed: Report rows/statistics, no inspected query veto or automatic product patch
Behavioral-authority path: consumer, channel, force, horizon: Scorer → JSON/console → operator, advisory, offline comparison
Evidence source ID and local anchor: SRC-1 evaluation/ectqa/native_score.py
Claim IDs or none: EPI-CLM-benchmark-rates
Mismatch marker or none: protocol and comparison limits
Gap/limit: A marker can appear without genuine refusal; no semantic evaluator in this branch. No observed execution or causal component support assessed.
Route ID: EPI-RTE-benchmark-check
Route function: check/evidence production
Architectural status: implemented
Object/candidate ID: EPI-OBJ-grade
Content/update relation: truth-apt transformation: indeterminate
Transition or check target: ECT-QA answer figures or periods relative to gold
Evaluator/condition and domain: numeric_f1 else period_f1, threshold default 0.60
Activation and timing: Strict scorer, gold answerable and an F1 proxy available
Possible or observed result: Boolean correct plus refusal label; numeric score retained
Implemented force: Advisory benchmark reporting
Epistemic authority and scope: Proxy figure/period overlap; referent and broader factual support not established
Operational authority: behavior permitted, blocked, or changed: Report rows/statistics, no inspected query veto or automatic product patch
Behavioral-authority path: consumer, channel, force, horizon: Scorer → JSON/console → operator, advisory, offline comparison
Evidence source ID and local anchor: SRC-1 evaluation/ectqa/score.py
Claim IDs or none: EPI-CLM-benchmark-rates
Mismatch marker or none: protocol and comparison limits
Gap/limit: Underlying imported numeric/period metric helpers not fully inspected; prevents a complete metric-validity conclusion. No observed execution or causal component support assessed.
Route ID: EPI-RTE-benchmark-check
Route function: check/evidence production
Architectural status: implemented
Object/candidate ID: EPI-OBJ-grade
Content/update relation: truth-apt transformation: indeterminate
Transition or check target: ECT-QA narrative answer relative to gold
Evaluator/condition and domain: Embedding cosine, threshold default 0.62
Activation and timing: Strict scorer only when numeric and period F1 unavailable
Possible or observed result: Similarity score and boolean correct
Implemented force: Advisory benchmark reporting
Epistemic authority and scope: Embedding similarity, not entailment; provider geometry uninspected
Operational authority: behavior permitted, blocked, or changed: Report rows/statistics, no inspected query veto or automatic product patch
Behavioral-authority path: consumer, channel, force, horizon: Scorer → JSON/console → operator, advisory, offline comparison
Evidence source ID and local anchor: SRC-1 evaluation/ectqa/score.py
Claim IDs or none: EPI-CLM-benchmark-rates
Mismatch marker or none: protocol and comparison limits
Gap/limit: Versioned provider vectors and threshold calibration not assessed. No observed execution or causal component support assessed.
Route ID: EPI-RTE-benchmark-check
Route function: check/evidence production
Architectural status: implemented
Object/candidate ID: EPI-OBJ-grade
Content/update relation: truth-apt transformation: indeterminate
Transition or check target: ECT-QA refusal identification
Evaluator/condition and domain: Deterministic startswith unanswerable within normalized first 60 characters
Activation and timing: Strict scorer; also determines correctness for gold=unanswerable
Possible or observed result: Boolean refusal, and correct for unanswerable cases
Implemented force: Advisory benchmark reporting
Epistemic authority and scope: Literal prefix conformance only
Operational authority: behavior permitted, blocked, or changed: Report rows/statistics, no inspected query veto or automatic product patch
Behavioral-authority path: consumer, channel, force, horizon: Scorer → JSON/console → operator, advisory, offline comparison
Evidence source ID and local anchor: SRC-1 evaluation/ectqa/score.py
Claim IDs or none: EPI-CLM-benchmark-rates
Mismatch marker or none: protocol and comparison limits
Gap/limit: Different from native scorer's multi-marker rule. No observed execution or causal component support assessed.
Route ID: EPI-RTE-benchmark-check
Route function: check/evidence production
Architectural status: implemented
Object/candidate ID: EPI-OBJ-grade
Content/update relation: truth-apt transformation: indeterminate
Transition or check target: LongMemEval stored answer relative to supplied gold/type rubric
Evaluator/condition and domain: Configured judge, default gpt-4o; substring yes parser
Activation and timing: Regrade caller-selected arms, first repeat by default; type and _abs select prompt
Possible or observed result: Boolean labels and first-repeat per-type/overall aggregates; grader failure is non-yes
Implemented force: Advisory benchmark reporting
Epistemic authority and scope: Agreement under requested type rubric and substring parsing, not source truth
Operational authority: behavior permitted, blocked, or changed: Report rows/statistics, no inspected query veto or automatic product patch
Behavioral-authority path: consumer, channel, force, horizon: Scorer → JSON/console → operator, advisory, offline comparison
Evidence source ID and local anchor: SRC-1 evaluation/longmemeval/regrade_official.py
Claim IDs or none: EPI-CLM-benchmark-rates
Mismatch marker or none: protocol and comparison limits
Gap/limit: Can accept a reply containing yes beyond an exact yes token; observed error rate unknown. No observed execution or causal component support assessed.
System-claim versus route comparison
| Claim ID | Claimed operation or warrant | Source/anchor and layer | Doctrine/design support | Implemented routes | Observed-run support | Causal support and design limits | Supported conclusion | Mismatch/unknown |
|---|---|---|---|---|---|---|---|---|
| EPI-CLM-close-fact | see record | SRC-1 README.md, doctrine/design |
Explicit later-fact closure | EPI-RTE-contradiction-check, EPI-RTE-supersession-write | Unassessed | No intervention evidence assessed; model error and candidate coverage remain | Later assertions can suppress earlier relation edges | “Stops reporting” is not universal: passages, entity descriptions and stale reports can still carry old assertions. |
| EPI-CLM-report-grounding | see record | SRC-1 post_graph_rag/reporting.py, embedded doctrine |
Explicit no-outside-knowledge rule | EPI-RTE-community-render, RT-RTE-community-build | Unassessed | No faithfulness experiment assessed; temporal fields dropped from structured rendering | Requested grounded summary admitted after usability checks | Grounding instruction is not semantic verification. |
| EPI-CLM-benchmark-rates | see record | SRC-1 README.md, reported operation |
Named benchmark protocols and caveats | EPI-RTE-benchmark-check covers selected scorers, not headline reproduction | Tracked results unassessed | Different generations/judges/corpus slices; no independent component variation established | Repository reports strong task scores and ships checks | Neither those rates nor cross-system superiority independently verified here. |
| EPI-CLM-validity-effect | see record | SRC-1 README.md, reported operation |
Explicit effect attribution | RT-RTE-question-answer plus direct renderer read | Ablation artifacts unassessed | Implementation shows added dates, not +38-point causal effect; comparison design unassessed | Rendering can expose dates to synthesis | Component effect remains unestablished, not refuted. |
| RT-CLM-passage-priority | see record | SRC-1 post_graph_rag/engine.py, doctrine/design |
see record | RT-RTE-document-admission | Unassessed | No crash/recovery experiment; pre-insertion failures and replacement deletion limit guarantee | Best-effort preservation after passage insertion | Not atomic admission or unconditional recoverability. |
Bounded conclusion
The inspected system acquires assertions by importing caller documents, then requests model extraction into localized graph records. Passage retention preserves an opportunity to inspect source text, but does not establish the truth of that text. Model extraction, alias resolution, predicate snapping, report generation and answer synthesis do not come with a checked interpretation proving semantic preservation or entailment. Their relation is indeterminate, not automatically ampliative conjecture merely because the model generated text. No warranted-premise derivation is established by the inspected pathways. See RT-RTE-document-admission, EPI-OBJ-entity, EPI-OBJ-triple.
The default extraction gate checks candidate fields against configurable rules. It licenses rule conformity, not source truth; the external replacement path can bypass those rules. Operational graph admission and report usability admission are consequential even without evidence-consuming semantic acceptance. Retention, graph membership and later retrieval therefore do not establish lifecycle integration of accepted ampliative knowledge. This is a bounded conclusion about the inspected routes, not an evaluator-complete negative: uninspected evaluation families and custom callbacks remain explicit in coverage. See EPI-RTE-validation-check, RT-RTE-extractor-extension, RT-RTE-community-build.
Contradiction judging is a genuine content-sensitive check with a consequential withdrawal consumer. It is not merely unused criticism. Its target is the compatibility of a newly supplied assertion with a bounded same-subject candidate list, not whether the new assertion is true. Deterministic exclusive groups instead encode an incompatibility premise and let document order decide. Both can change later relation reliance, without certifying the successor. Default filtering gives stored withdrawal flags operational force. Document deletion also withdraws provenance and can retire relations without judging them false; revival and source-less repair have separate rules. These paths qualify the broad public “stops reporting” claim because unfiltered source passages/descriptions/reports can still carry a withdrawn assertion. See EPI-RTE-contradiction-check, EPI-RTE-supersession-write, EPI-RTE-source-withdrawal.
Community reports are retained generated content, admitted by parsing/nonempty-summary checks, then consumed by parent reporting and global/hybrid answering. Their generated importance rating has separate symbolic ranking force. Rendering can discard explicit time bounds before reporting, and report staleness warns rather than forbids use. Neither groundedness nor freshness is independently proven. The answer prompt preserves relation polarity and optionally periods, while the terminal answer dictionary's abbreviated triple strings omit them; a downstream caller must not treat those strings as the complete scoped claims. The context-only API is a countercase: it returns structured retrieval instead of those abbreviated strings. See EPI-RTE-community-render, EPI-OBJ-community-rating, EPI-OBJ-answer, RT-BAP-answer-context.
Offline scorers do consume reference answers and produce operational benchmark labels; they are not the query's truth gate. Each licenses only protocol-relative agreement over its benchmark domain. Element decomposition, tolerance rules, lexical refusal detection, grader errors and denominator exclusions matter. Source reports and stored artifacts do not by themselves identify a component effect or establish external comparison validity. See EPI-RTE-benchmark-check, EPI-CLM-benchmark-rates, EPI-CLM-validity-effect.
Retention scoring provides direct exposure-fed behavioral adaptation through archive flags, not a proposition-truth check. Improved future capacity, reliable reflection, a theory-builder loop and exercised self-improvement do not follow from it. The model components are externally parameterized and unpinned as recorded in runtime; the inspected repository calls do not train them, and opaque provider state does not establish absence of other learning. Content-sensitive contradiction withdrawal is independently supported regardless of these unresolved properties. No single system-wide epistemic or autonomy score is assigned. See RT-RTE-retention-control, RT-CMP-extraction-model, RT-CMP-community-model, RT-CMP-synthesis-model.
Shared records
Operative objects
EPI-OBJ-document
Label: Document passage
Caller text is natural-language truth-apt assertions stored as document content plus symbolic metadata in PostgreSQL through the store. Embedding is a separate numerical retrieval representation. No counterpart object is declared in the supplied runtime; this is the passage consumed along its document-admission route, not the query configuration object. SRC-1 post_graph_rag/engine.py.
doc_vertex = await self.store.add_document( prepared["text"], prepared["doc_emb"], stamped, space=target_space )
---
post_graph_rag/engine.py
EPI-OBJ-entity
Label: Entity
Natural-language canonical name, aliases and description, with symbolic type/identity fields, stored in an entity vertex. Extraction requests canonicalization and source-local descriptions, not externally checked identity resolution. Alias/name matching can conflate or split actual referents. No counterpart object in supplied runtime; distinct from RT-OBJ-query-param and model components; related route is RT-RTE-document-admission. SRC-1 post_graph_rag/extractor.py.
- Description: Brief summary of the entity's role in THIS text. ---
post_graph_rag/extractor.py
EPI-OBJ-triple
Label: Relation edge
Natural-language descriptions/name semantics and symbolic relation label, endpoint IDs, polarity, confidence, dates, source IDs and timestamps in a database edge payload. Truth scope depends on these fields together. No counterpart object in supplied runtime; the document-admission route writes it. Weight counts source chunks when provenance is supplied, otherwise observations; neither is independent-source validation. See EPI-RTE-relation-upsert. SRC-1 post_graph_rag/graph_store.py.
"negated": bool(negated), "confidence": float(confidence), ---
post_graph_rag/graph_store.py
EPI-OBJ-contradiction-result
Label: ContradictionResultSchema
Symbolic list of IDs in process memory expresses the model's truth-apt judgment that the offered earlier assertions cannot coexist with the new assertion. It is transient but changes durable withdrawal flags. No counterpart object in supplied runtime; related document admission container includes this distinct judgment before the store disposition. SRC-1 post_graph_rag/extractor.py.
return [str(i) for i in ids if str(i) in offered]
---
post_graph_rag/extractor.py
EPI-OBJ-community-report
Label: CommunityReport text
Natural-language title, summary and findings, stored with community membership in database vertices; process-local Pydantic object before storage. Distinct from the separately consumed rating part. No counterpart object in supplied runtime; related RT-RTE-community-build is a route, not this artifact. Its content is requested to be source-grounded but not checked for source entailment. SRC-1 post_graph_rag/reporting.py.
class Finding(BaseModel): summary: str = Field(..., description="Short headline for this finding") explanation: str = Field(..., description="Supporting explanation grounded in the listed entities and relations") ---
post_graph_rag/reporting.py
EPI-OBJ-community-rating
Label: CommunityReport rating
Symbolic numeric importance judgment in process and community database payload, consumed by fixed ranking rules; not a distributed-parametric representation. It is a material part of the community-build output distinct from the report's natural-language findings. No supplied object counterpart. Its claimed importance is subjective to corpus understanding, not a source-fact reliability score. SRC-1 post_graph_rag/engine.py.
importance = min(max(c["rating"], 0.0), 10.0) / 10.0
---
post_graph_rag/engine.py
EPI-OBJ-answer
Label: Answer and retrieval metadata
Natural-language model answer returned in a Python dictionary or stream, not automatically retained as an answer store. Returned retrieval metadata is symbolic/textual process data. No counterpart object in runtime: related question-answer/direct-answer routes produce it; caller history is separately RT-OBJ-query-param. A concrete implemented projection: a retrieved relationship with negated=true and valid_from=2020 reaches the synthesis prompt with NOT and (when enabled) a from-date. The terminal dictionary instead emits only endpoints/relation_type, so opposite-polarity or differently scoped inputs can have the same abbreviated triple string. This does not prove the generated answer is wrong; it limits consumers of that field. SRC-1 post_graph_rag/engine.py.
"retrieved_graph_triples": [ f"({r['src_id']}) --[{r['relation_type']}]--> ({r['tgt_id']})" for r in data["relationships"] ],
---
post_graph_rag/engine.py
EPI-OBJ-grade
Label: Benchmark grade
Symbolic booleans/rates and model-produced element labels in JSON/console outputs; explanatory gold/prediction text is natural language. Grades claim protocol-relative answer correctness, not universal truth. No counterpart object in supplied runtime; separate offline consumer from the production query route. Parameter versions of grading providers are not pinned by a name string; no parameter update is made by the inspected scoring calls, and provider internals remain uninspected. SRC-1 evaluation/ectqa/native_score.py.
c = collections.Counter(e.verdict.strip().lower() for e in els) n = len(els) ---
evaluation/ectqa/native_score.py
Routes
EPI-RTE-validation-check
Label: Extraction validation check
Part of: RT-RTE-document-admission
GraphExtractor.validate takes structured model candidates and returns filtered/canonicalized entities/triples or raises. Python owns the check; the model supplied the confidence, not measured correctness. Default model extraction invokes it; external validation is optional. The target/domain is candidate name/predicate shape, self-reference, configured confidence/polarity and date cleanliness, not correspondence with external reality. Literal transformation witness from inspected code: normalise_predicate('was_appointed_knight_of') lowercases/joins, then removes the was prefix, producing appointed_knight_of. This is intended label normalization, not a checked theorem about tense/meaning. Configured alias and morphological snapping can change predicate interpretation, so a universal semantic-preservation classification is unwarranted. Rule evaluation and downstream writer admission are separate functions. Caller chooses configuration; software vetoes candidate records; no expected-answer oracle or bounded experimental curriculum. Changes to gates affect future ingestion; recovery of earlier results requires re-indexing, not a gate rollback. SRC-1 post_graph_rag/extractor.py.
- implementation conclusion status: wired
- operation conclusion status: uninspected
- Immediate return: Filtered ExtractionResult or ExtractionError.
- Later read-back: Returned candidates can be retained by document admission and consumed later.
- Delegated visibility: inapplicable — local check, not agent delegation.
- Selection predicate: All invoking branches; candidate-specific gates.
- Invalidation or expiry: inapplicable — check result has no separate cache; retained graph lifecycle is downstream.
- Activation or effect: Deterministic drop/canonicalization of candidate fields; no observed factual benefit.
- Evidence limits: External bypass and injected extractors prevent universal gate claims.
if t.confidence < self.min_confidence: continue if t.negated and self.drop_negated: continue ---
post_graph_rag/extractor.py
EPI-RTE-relation-upsert
Label: Relation payload merge
Part of: RT-RTE-document-admission
Store.add_relation receives an edge proposal and either inserts it or merges it into the edge found by subject/predicate/object identity. Python/store owns progression and writes. The source document or extractor proposes assertions; software admits them, with no truth oracle or per-edge human veto. This subroute differs from the whole document-admission container by its same-key payload merge semantics; direct store callers also reach this function. Ingestion order and provenance are policy inputs, not adjudication of claim truth. A concrete inspected-code deduction: prior negated=True plus incoming negated=False produces False via boolean AND; confidence takes max, description takes the new nonempty string, each date takes the incoming nonempty value or prior value. Consequently a repeated edge can mix provenance/period/description from distinct assertions without a conflict trial. Same endpoint/predicate matching does not distinguish opposite polarities or two periods. Source count is distinct chunk count when IDs are available, not evidence of independent testimony. A provenance-bearing assertion revives dormant edges; existing supersession pointers are preserved. No semantic rollback history of merged descriptions is implemented in this function. SRC-1 post_graph_rag/graph_store.py.
- implementation conclusion status: wired
- operation conclusion status: uninspected
- Immediate return: Inserted/upserted Edge.
- Later read-back: Persisted payload reaches query_data, graph_snapshot and reports.
- Delegated visibility: inapplicable — store writes, no agent delegation.
- Selection predicate: Same subject/predicate/object key; direct callers may omit provenance.
- Invalidation or expiry: Sources withdrawn on document deletion; source-backed reassertion can clear dormancy, but preserves supersession fields.
- Activation or effect: Combines fields and replaces payload; weight/confidence/polarity can alter reliance cues.
- Evidence limits: No observed merge episode or guarantee about dependency concurrency.
"negated": bool(prev.get("negated", False)) and negated, "confidence": max(float(prev.get("confidence", 0.0)), float(confidence)), ---
post_graph_rag/graph_store.py
EPI-RTE-contradiction-check
Label: Model contradiction judgment
Part of: RT-RTE-document-admission
After new-edge insertion, engine requests same-subject current candidates and calls detect_contradictions when configured and the declarative pass returned none. Candidates are newest-first and limited; their model projection includes ID, description or predicate and available validity periods. The new assertion contains endpoint names/predicate/description but does not explicitly append its separate validity fields. Candidate object endpoints and polarity are not separately rendered either. A rich description can supply those facts, so omission is a risk, not proof of every judgment being defective. The extraction model proposes incompatibilities under the supplied same-time rule; Python filters IDs to those offered. This is a check, distinct from the store's retraction decision. Model uncertainty/failure returns no IDs. No independent oracle checks either assertion's truth. Caller config enables the route; no per-judgment human approval. The fixed prompt requests conservative decisions, but does not establish actual conservatism. Judgments can result in changed reliance without changing the original assertion text; this is a real content-sensitive criticism affordance/wiring, not evidence of an iterative theory-builder practice. SRC-1 post_graph_rag/extractor.py.
- implementation conclusion status: wired
- operation conclusion status: uninspected
- Immediate return: List of offered candidate IDs, or empty on failure/no candidates.
- Later read-back: inapplicable — judgment object itself is not persisted; resulting edge flags have a later consumer in the disposition route.
- Delegated visibility: Selected new/candidate facts go to extraction provider, not an independent agent loop.
- Selection predicate: Enabled config, no declarative conflict, same-subject current candidate cap.
- Invalidation or expiry: inapplicable — no judgment cache/expiry; stored flags have separate lifecycle.
- Activation or effect: Returned IDs feed mark_superseded; no operation trace assessed.
- Evidence limits: Projection, candidate cap, missing new validity rendering and provider accuracy bound the check.
except Exception as e: logger.warning("Contradiction detection failed (%s); retracting nothing.", e) return []
---
post_graph_rag/extractor.py
EPI-RTE-supersession-write
Label: Supersession disposition
Part of: RT-RTE-document-admission
Two implemented inputs reach withdrawal writes: configured exclusive predicate groups over the same subject/object pair, or IDs from the model contradiction check. Declarative software selects conflicting predicates and gives the newer indexed assertion precedence; it does not compare source quality or dates. The model branch has already filtered IDs. The store records superseded_by and t_expired; engine._filter_temporal then excludes those relations unless include_superseded is enabled. Owner is Python/store; no additional human veto or expected-answer oracle, and no evidence-consuming decision that verifies the successor. This is operational retraction, not lifecycle integration of an accepted new explanation. The target/domain differs by branch: declared predicate incompatibility for the fixed pair versus model-selected offered assertions. Recovery includes opt-in retrieval of superseded edges; pointer/history preservation is not an automatic rollback decision. New relation insertion precedes this enrichment and survives errors. SRC-1 post_graph_rag/graph_store.py.
- implementation conclusion status: wired
- operation conclusion status: uninspected
- Immediate return: IDs marked superseded, returned to engine count.
- Later read-back: Default relation filtering reads stored flags on later queries.
- Delegated visibility: inapplicable — store disposition has no agent delegation.
- Selection predicate: Exclusive groups then optional model IDs; new relation already exists.
- Invalidation or expiry: Flags persist; include_superseded controls retrieval, not deletion of history.
- Activation or effect: Earlier relation reliance changes in named filtered channels; source passages/reports need not change.
- Evidence limits: No guarantee of true successor, all-channel retraction or historical snapshot reproducibility.
if payload.get("superseded_by"): continue payload["superseded_by"] = str(new_edge_id) payload["t_expired"] = _utc_now()
---
post_graph_rag/graph_store.py
EPI-RTE-source-withdrawal
Label: Source withdrawal and dormancy
Part of: RT-RTE-document-admission
Deletion/replacement calls delete_document_chunks, removes mentions/documents, withdraws chunk IDs from relation sources and recomputes weight. It then refreshes entity dormancy and endpoint-orphaned relations. This is the replacement/deletion subroute of document admission, distinct from epistemic contradiction. Owner is store code, triggered by caller replacement/deletion or explicit repair. A relation with no remaining contributing chunks becomes dormant; this says its retained documentary support was removed, not that the assertion was false. Remaining source IDs can clear dormancy in the withdrawal SQL. Endpoint-only orphan revival is separate: explicit source-withdrawal dormancy does not revive solely because an endpoint returns. add_relation with a new source assertion can revive it. Legacy source-less relations require endpoint-orphan repair; sweep_orphaned_relations cannot prove which document asserted them. Dormant relation gates are defaulted in store reads, but reports already built are not rewritten here. No answer oracle or content-truth acceptance, and no per-edge human decision. Re-index/repair is recovery, not an atomic rollback of old content. SRC-1 post_graph_rag/graph_store.py.
- implementation conclusion status: wired
- operation conclusion status: uninspected
- Immediate return: Deletion counts and dormant/withdrawn counts.
- Later read-back: Source lists/weights/dormancy flags reach later relation reads and graph snapshots.
- Delegated visibility: inapplicable — local/database lifecycle code.
- Selection predicate: Contributing chunk IDs; endpoint liveness for orphan sweep.
- Invalidation or expiry: Document reassertion can revive source-withdrawn edges; endpoint-only revival has narrower reason handling.
- Activation or effect: Default reads withhold dormant relations; no guarantee of changed answers across every channel.
- Evidence limits: Direct source reading supports wiring, not observed deletion correctness or dependency atomicity.
A relation left with no contributing chunk is marked dormant rather than deleted, matching how orphaned entities are handled: the assertion was genuinely made once, and the audit trail is meant to keep it. ---
post_graph_rag/graph_store.py
EPI-RTE-community-render
Label: Community evidence projection
Part of: RT-RTE-community-build
render_community projects graph members into one prompt string. It keeps at most 60 entity and 80 relation lines by default and clips each line to 400 characters. This is a material subroute of community build, not a duplicate of the whole build. Concrete deterministic witness, deduced without target execution: a relation {src:A, tgt:B, predicate:works_at, negated:true, valid_from:2020, valid_to:2021, weight:1, description:''} renders the line '- (A) --[NOT works_at]--> (B) (weight=1): '. Changing only its valid_from/valid_to yields the same line because the function never reads them. Thus polarity survives but separate period fields do not, unless descriptions repeat them. This prevents a general scope-preserving reshaping conclusion; relation content/update classification remains indeterminate rather than proved ampliative. For parents, summarise_reports creates pseudo-entities and includes-relations from child report summaries/findings/ratings; these again pass through the same renderer, not original source documents. Python controls projection; model receives only rendered fields. This is evidence selection, not an evaluator of truth. SRC-1 post_graph_rag/reporting.py.
- implementation conclusion status: wired
- operation conclusion status: uninspected
- Immediate return: Prompt-body string.
- Later read-back: inapplicable — renderer output is current model input, not a separately retained cache; generated reports are retained downstream.
- Delegated visibility: Body delivered to community model endpoint.
- Selection predicate: Fixed prefix slices and line clipping; parent inputs are child-report projections.
- Invalidation or expiry: inapplicable — transient prompt string, no expiry mechanism.
- Activation or effect: Determines what evidence reporting model can see; semantic fidelity remains unobserved.
- Evidence limits: Short descriptions may retain dates, but separate dates/source lineage are not rendered.
neg = "NOT " if r.get("negated") else "" weight = r.get("weight", 1) desc = (r.get("description") or "") ---
post_graph_rag/reporting.py
EPI-RTE-benchmark-check
Label: Offline benchmark checks
Distinct from supplied runtime question-answer routes: selected offline scorers read already stored predictions and gold, compute judgments, persist labels/aggregates and print summaries. No supplied route counterpart; package-release is a different consumer/admission mechanism. Target/domain one: ECT-QA earnings-call answer elements relative to stored gold and requested temporal scope, judged by a configurable model rubric. It admits successfully parsed nonempty element sets to the scored denominator; exceptions or no elements go to failed. Verdict is a free string, so unrecognized labels still increase n without contributing to the three named counters; sums-to-one is requested, not enforced for all strings. A special unanswerable branch uses lexical refusal markers instead of the model. reportable is not failed, an advisory flag in saved JSON, not a prevention of file creation. Target/domain two: the strict ECT-QA scorer's numeric/period F1 (default 0.60) or embedding cosine (0.62) plus refusal rule. These are proxy matches against gold; numeric agreement alone does not prove correct referent or period attribution. Target/domain three: LongMemEval regrading uses question-type/abstention rubrics and supplied gold, default gpt-4o, tests substring yes, and writes per-arm rates; a final grader exception becomes non-yes rather than a separate excluded case. All are reference-consuming checks, but references and model compliance are not independently validated here. Native rubric admits element-wise agreement (about 1% figures); its same-family default judge and nonverbatim rubric explicitly limit comparison. The reference oracle is stored gold supplied by input files, not the production graph. Caller chooses scorer/model/files; software/model decide labels, no human per-case veto. Operating mode is offline bounded benchmark scoring, not open query admission. No automatic parameter/configuration/product update consumer was found in these three inspected scorer files; broader evaluator/maintainer adoption remains uninspected. SRC-1 evaluation/ectqa/native_score.py, evaluation/ectqa/score.py, evaluation/longmemeval/regrade_official.py.
- implementation conclusion status: wired
- operation conclusion status: uninspected
- Immediate return: JSON/console labels, counts and rates.
- Later read-back: Saved score files can be read externally; no inspected automatic query/product admission read-back in these scorer files.
- Delegated visibility: Gold/question/prediction text sent to configured judge or embedding endpoint.
- Selection predicate: Caller result file and arms/repeats; native failures excluded with reportable flag, regrade defaults first repeat.
- Invalidation or expiry: inapplicable — no score invalidation policy in these files; rerun creates new output from supplied inputs.
- Activation or effect: Score/report generation is wired; actual scoring, adoption and benefit unobserved.
- Evidence limits: Other harnesses, tracked output artifacts and comparison designs unassessed; no headline-rate reproduction or causal attribution.
"failed": failed, "reportable": not failed, ---
evaluation/ectqa/native_score.py
Additional load-bearing passages for the distinctions above follow. These are implementation evidence, not observed runs (SRC-1).
Resolution is by document order, not by dates: the newer assertion wins. ---
post_graph_rag/graph_store.pyf"- ID {c['id']}: {c.get('description') or c.get('relation_type')}"
---
post_graph_rag/extractor.pyf"- ({r.get('src')}) --[{neg}{r.get('predicate')}]--> ({r.get('tgt')})" f" (weight={weight}): {desc}"[:400]
---
post_graph_rag/reporting.py"description": description or prev.get("description", ""), "sources": sources, "weight": weight, ---
post_graph_rag/graph_store.py"valid_from": valid_from or prev.get("valid_from"), "valid_to": valid_to or prev.get("valid_to"), ---
post_graph_rag/graph_store.pylabel = "yes" in text.lower() ---
evaluation/longmemeval/regrade_official.pyif f1 is not None: ok, metric, value = f1 >= args.f1_threshold, "numeric_f1", f1 elif pf1 is not None: ok, metric, value = pf1 >= args.f1_threshold, "period_f1", pf1 ---
evaluation/ectqa/score.pyif gold == "unanswerable": # The dataset's own unanswerable questions: declining IS the # correct answer, so a refusal scores correct rather than # landing in its own bucket and deflating every rate. low = ans.lower() declined = ("unanswerable" in low or "not support" in low or "do not contain" in low or "no context" in low) ---
evaluation/ectqa/native_score.pyreturn (answer or "").strip().lower()[:60].startswith("unanswerable")
---
evaluation/ectqa/score.py
Claims
EPI-CLM-close-fact
Label: Later fact closure
Claimed operation: later documents can close earlier facts so answering no longer repeats an obsolete relation. This extends beyond the supplied passage-priority claim: it concerns changed reliance, not passage preservation. SRC-1 README.md, doctrine/design.
What makes it different: a later document can close an earlier fact, so your model stops reporting that someone is both an ally and a rival. ---
README.md
EPI-CLM-report-grounding
Label: Grounded community reporting
Claimed contract: statements grounded in provided entities/relations without outside knowledge or speculation. Distinct from supplied runtime claims; this is the content contract within the community-build route. SRC-1 post_graph_rag/reporting.py, doctrine/design.
- Ground every statement in the supplied entities and relations. Do not introduce outside knowledge, and do not speculate beyond what the relations state. ---
post_graph_rag/reporting.py
EPI-CLM-benchmark-rates
Label: Benchmark reliability rates
Claimed reported operation: README reports 94.0% overall LongMemEval and 0.807 ECT-QA correct rate, with different generation/judging protocols and corpus-slice caveats. These are not a source-independent answer oracle. No counterpart claim in supplied runtime; offline scoring is a distinct use. SRC-1 README.md, reported operation.
| post-graph-rag ·
gemini-3.6-flash| 94.0% | 90.2% | 96.2% | 94.9% | ---README.md| post-graph-rag ·
gemini-3.6-flash| 0.807 | ---README.mdTheir figures are on their corpus slice; ours is 78 questions over 6 companies. Read a few points of margin as approximate rather than decisive. ---
README.md
EPI-CLM-validity-effect
Label: Validity rendering effect
Claimed component effect: validity in the synthesis prompt accounts for a temporal reasoning gain. Distinct from supplied runtime passage claim and from headline task rates: this is a causal attribution requiring an intervention comparison; the named implementation alone does not establish its magnitude. SRC-1 README.md, reported operation.
Three things in that diagram are the whole argument: supersession at write time, three retrieval channels fused rather than one, and validity rendered into the prompt — the last being worth +38 points on temporal reasoning on its own. ---
README.md