package application import ( "context" "git.cin.su/m/Assistant/contracts/epistemics" domain "git.cin.su/m/Assistant/modules/epistemics/domain" ) // ReadOnlyConnector is the only integration point for web/repository sources. // Implementations return immutable evidence; they cannot persist claims. type ReadOnlyConnector interface { Collect(context.Context, epistemics.ResearchPlan) ([]epistemics.ResearchCandidate, error) } type ResearchService struct{ Connector ReadOnlyConnector } func (s ResearchService) Evaluate(ctx context.Context, plan epistemics.ResearchPlan, nowUnixMillis int64) (epistemics.ResearchResult, error) { if s.Connector == nil { return epistemics.ResearchResult{}, domain.ErrNoResearchEvidence } candidates, err := s.Connector.Collect(ctx, plan) if err != nil { return epistemics.ResearchResult{}, err } return domain.EvaluateResearch(plan, candidates, nowUnixMillis) }