A long conversation already contains finished answers and images. Reporting success because an answer exists after sending a new question can accidentally reuse an earlier result. Northstar first checks whether a response absent from the baseline appeared, then examines its content and media readiness.

Remember response groups before the request

The actual functions retain answers' groups in beforeAnswerIds after preparation. WaitAnswer selects the last group absent from that set. A long finished answer already present in the baseline cannot qualify as new. Source and timing are distinguished before the length or apparent completeness of a response.

These identities come from current page observation, not a provider's server job identity or cryptographically bound request receipt. Since DOM structure can change, the observation adapter's group construction matters too. Calling a value an identity does not guarantee permanent stability across every page rearrangement or future service revision.

An action reference and a response group identify different things

A snapshot ref targets an element for an operation in the current observation. A group associates an answer with its controls and images. A request journal key is another identity used to recognize repeated work. Confusing them can turn obtaining a fresh ref into a false claim that a new answer appeared.

I use group comparison for response provenance while retaining fresh-reference checks for input. Seeing the same answer in another snapshot is not new generation. Conversely, operating a new answer's button cannot rely indefinitely on an old snapshot ref. The design needs to state what each identity identifies rather than relying on one generic ID label.

Read speaker headings without treating the whole page as an answer

The observation adapter supports both legacy assistant data markers and visible speaker-heading layouts. It finds the relevant conversation turn while bounding traversal around other speakers and input fields. That differs from adopting any long sentence elsewhere on the page as an assistant answer.

Body extraction also has observation limits. This path interprets bounded current DOM and known layouts; it does not read every hidden part of every service screen. An unrecognized structure should not be packaged as success. Understanding the actual response region selected by the site adapter is part of maintaining provenance for a new answer.

A new answer still needs the requested outcome checks

A new group is the first condition. Generation indicators require waiting, and user intervention or failure remain separate outcomes. Image and video requests require ready corresponding media within that new response group. A playable video remaining beside it from an older answer is not evidence of new video generation.

New text also does not establish factual correctness. File analysis needs comparison with actual file contents; an artifact request needs evidence of the artifact itself. I keep new-response detection separate from fulfillment, so the first progress signal cannot erase later verification responsibilities. Provenance narrows the result to inspect rather than certifying its quality.

Tests deliberately separate new answers from old media

Existing chat fixtures show partial output after sending and later a finished body in the same new group. Another test supplies a new answer but ready video only in an earlier group, which must not complete. Comparing it with a ready video in the new group exposes accidental adoption of older output.

This task read functions and test code without sending a fresh AI request. The shared module actually tests old-baseline answers and a different new identity containing identical text. Its result compares declared synthetic observations; it does not establish newly generated service output or the answer's factual accuracy.

An agent-friendly program should retain which answer it read

A person can infer a new reply from visual flow, but an agent needs inspectable provenance. A relationship between baseline and current response makes decisions to wait, read text or inspect media concrete. It also supports recovery better than an undifferentiated answer-present signal.

The linked module exposes that relationship using synthetic identities and observation arrays. It does not provide a trusted adapter extracting identities from a real page. Integration should first define the origin and lifetime of those identities. I want the automation to explain which result it read, rather than simply announce that something resembling an answer was found.