package research_contracts_test import ( "testing" "git.cin.su/m/Assistant/contracts/epistemics" episdomain "git.cin.su/m/Assistant/modules/epistemics/domain" ) func TestCompileObservedClaimPreservesEvidenceChainAndConflict(t *testing.T) { source := epistemics.Source{ID: "source-1", Locator: "https://example.test/source"} snapshot := epistemics.SourceSnapshot{ID: "snapshot-1", SourceID: source.ID, ContentDigest: "sha256:test", CapturedAtUnixMillis: 100, Freshness: epistemics.FreshnessCurrent} excerpt := epistemics.SourceExcerpt{ID: "excerpt-1", SnapshotID: snapshot.ID, Text: "exact observation", Start: 0, End: 17} bundle, err := episdomain.CompileObservedClaim(source, snapshot, excerpt, "The observed fact is true", 200, epistemics.ConflictPresent) if err != nil || bundle.Claim.ObservationID != bundle.Observation.ID || bundle.Belief.State != epistemics.BeliefConflicted || bundle.Citation.Evidence != epistemics.EvidenceObserved { t.Fatalf("invalid truth bundle: %#v %v", bundle, err) } } func TestCompileObservedClaimRejectsBrokenSourceChain(t *testing.T) { source := epistemics.Source{ID: "source-1", Locator: "https://example.test/source"} snapshot := epistemics.SourceSnapshot{ID: "snapshot-1", SourceID: "other-source", ContentDigest: "sha256:test", CapturedAtUnixMillis: 100, Freshness: epistemics.FreshnessCurrent} excerpt := epistemics.SourceExcerpt{ID: "excerpt-1", SnapshotID: snapshot.ID, Text: "exact observation", Start: 0, End: 17} if _, err := episdomain.CompileObservedClaim(source, snapshot, excerpt, "statement", 200, epistemics.ConflictNone); err != episdomain.ErrInvalidTruthBundle { t.Fatalf("broken chain was accepted: %v", err) } }