# Finding 047: Claude incognito fetched the hidden structured-data conflict fixture and exposed meta text separately

## Date

2026-06-30

## Status

Published

## Summary

Claude was run against p21, `manual-client-claude-20260625-001-p21`, in a
fresh native incognito Claude chat. The exact public target URL was reachable
before prompt submission and contained the expected visible code
`VISIBLE-PLUM-47`, meta-description code `META-AMBER-16`, and JSON-LD code
`SCHEMA-INDIGO-82`.

Claude returned `fetched:true`, reported the visible page code
`VISIBLE-PLUM-47`, surfaced the meta-description code `META-AMBER-16`
separately, and said no JSON-LD block was present in the extracted content it
received. Direct-origin logs confirmed a prompt-window `Claude-User/1.0`
request for `/robots.txt` followed by the exact p21 target page.

## What does this mean?

For site owners and researchers, this run shows that Claude's page-opening path can expose more than ordinary visible body text: it may surface a page's meta description alongside the visible content. At the same time, JSON-LD that exists in the raw HTML may still be absent from the assistant's extracted view, so a model answer that mentions metadata is not the same as full source-code inspection.

## Method

- Browser task:
  `research/manual-client-runs/browser-tasks/manual-client-claude-20260625-001-p21.browser-task.json`
- Prompt packet:
  `research/manual-client-runs/manual-client-claude-20260625-001.prompts.json`
- Answer artifact:
  `research/manual-client-runs/manual-client-claude-20260625-001.answers.json`
- Response file:
  `research/manual-client-runs/browser-tasks/responses/manual-client-claude-20260625-001-p21.response.json`

Before submitting the prompt, the exact target URL was checked with `curl`.
The response contained `VISIBLE-PLUM-47`, `META-AMBER-16`, and
`SCHEMA-INDIGO-82`.

Claude was opened at `https://claude.ai/new` in the OpenClaw-controlled Chrome
profile. The UI showed the `Kai` account, Free plan, and `Sonnet 5 Medium`
model selector. The native `Use incognito` control was enabled before prompt
submission, and Claude showed `You're incognito` plus the incognito-chat notice.
The prompt was submitted in that fresh incognito chat, not an old conversation.

Direct-origin review checked `/api/hits` and `data/events.json` for the exact
attempt id, fixture path, and `/robots.txt` during the bounded prompt window.

## Result

| Field | Value |
|---|---|
| Attempt ID | manual-client-claude-20260625-001-p21 |
| Client | Claude (claude-web) |
| Visible model/context | Sonnet 5 Medium, Free plan, native incognito chat |
| Source prompt | reading-hidden-structured-data-conflict |
| Fetched | true |
| Pages opened | 1 |
| Direct-origin events | `/robots.txt` and exact target page |
| Raw event ids | `mr17jhr5-2xmsotjd`, `mr17ji8v-1cdv00ia` |
| Bounded window | 2026-06-30T22:17:15Z - 2026-06-30T22:18:14Z |
| Confirmed hit from prompt | true |
| Confirmation status | confirmed_hit |

## Raw response

```json
{
  "attempt_id": "manual-client-claude-20260625-001-p21",
  "source_prompt_id": "reading-hidden-structured-data-conflict",
  "prompt_code": "manual-client-claude-20260625-001-p21",
  "ai_system": "Claude",
  "fetched": true,
  "pages_opened": 1,
  "answer": "Page was fetched successfully via web_fetch. Observed a meta-description field with code META-AMBER-16, and visible HTML body text containing code VISIBLE-PLUM-47. No JSON-LD block was present in the content returned to me. The fetch also returned other meta fields (meta-lab-test-id, meta-robots: index, follow, meta-viewport) and a tracking pixel image reference plus control links (visible-html control, nofollow control).",
  "evidence_quote": "meta-description: Hidden structured-data fixture meta code: META-AMBER-16 ... The page quality code is **VISIBLE-PLUM-47**.",
  "limitations": "My web_fetch tool returns a processed/extracted representation of the page (markdown-like text with a small YAML-style metadata header), not raw HTML source. I cannot confirm whether a JSON-LD <script type='application/ld+json'> block exists in the actual page source, since such a block may have been stripped during content extraction or may genuinely not be present - I cannot distinguish between these two cases from this tool's output. I also cannot verify rendering behavior (e.g., JS-injected content) since this is a static fetch, not a browser render.",
  "confidence": "medium"
}
```

## Origin evidence

```json
{
  "timestampWindow": {
    "startedAt": "2026-06-30T22:17:15Z",
    "endedAt": "2026-06-30T22:18:14Z"
  },
  "sourcePromptId": "reading-hidden-structured-data-conflict",
  "promptCode": "manual-client-claude-20260625-001-p21",
  "confirmedHitFromPrompt": true,
  "rawEventIds": [
    "mr17jhr5-2xmsotjd",
    "mr17ji8v-1cdv00ia"
  ],
  "events": [
    {
      "id": "mr17jhr5-2xmsotjd",
      "timestamp": "2026-06-30T22:17:46.300Z",
      "eventType": "discovery_file",
      "path": "/robots.txt",
      "userAgent": "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; Claude-User/1.0; +claude-user@anthropic.com)",
      "ip": "::ffff:34.162.230.222"
    },
    {
      "id": "mr17ji8v-1cdv00ia",
      "timestamp": "2026-06-30T22:17:46.802Z",
      "eventType": "server_page",
      "path": "/lab/reading/hidden-structured-data-conflict",
      "query": {
        "id": "manual-client-claude-20260625-001-p21"
      },
      "userAgent": "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; Claude-User/1.0; +claude-user@anthropic.com)",
      "ip": "::ffff:34.162.230.222"
    }
  ],
  "resourceCounts": {
    "htmlPageRequests": 1,
    "robotsRequests": 1,
    "trackingPixelFetches": 0,
    "nonPixelSubresources": 0,
    "clientCapabilityEvents": 0
  }
}
```

## Interpretation

This run confirms that Claude opened the exact p21 target URL during the
bounded prompt window. The model response is consistent with the extractor
seeing visible page text and the meta description, but not JSON-LD. Because the
served raw HTML did contain `SCHEMA-INDIGO-82`, the JSON-LD absence should be
interpreted as an extraction limitation or unobserved field, not proof that the
raw page lacked JSON-LD.

The p21 fixture removes the visible cue used in p20 that metadata and JSON-LD
disagree. Claude still surfaced the meta-description code separately in this
hidden-conflict variant, which strengthens the evidence that Claude's retrieval
view includes at least some metadata beyond visible body text.

## Limitations

- This finding covers one Claude run, one account/session, one model selector
  state, and one fixture.
- The prompt supplied the exact target URL, so the run tests direct opening,
  not independent discovery.
- Claude's visible model selector was `Sonnet 5 Medium`; the backend model or
  retrieval implementation may vary across accounts, regions, or time.
- The recorded start and end times are operator-side bounds around submission
  and final answer observation, not service-internal fetch timestamps.
- Origin review found no tracking-pixel, subresource, or client-capability
  events for this attempt, so this is not evidence of browser-like rendering or
  JavaScript execution.

## Publication Thesis Verification

- Thesis: Claude native incognito chat fetched the p21 hidden structured-data
  conflict fixture, exposed visible text and meta-description content, and did
  not expose JSON-LD in its extracted view during this controlled-browser
  attempt.
- Source: Fresh Claude incognito response, generated response and answer
  artifacts, browser-task artifact, preflight output, and bounded `/api/hits`
  plus `data/events.json` review.
- Method: Exact public target preflight, controlled-browser switch to Claude
  native incognito, prompt submission in a fresh chat, exact attempt-id review,
  fixture-path review, `/robots.txt` review, and bounded timestamp-window
  correlation.
- Bias: Single run, Free plan account, Sonnet 5 Medium selector, and Claude's
  web-fetch extraction path may not represent every Claude product surface,
  model, or tier.
- Consensus: Consistent with Finding 042, where Claude fetched the p20
  structured-data conflict fixture, surfaced visible and meta-description codes
  separately, and left JSON-LD unobserved.
- Invalidation: Missing or mismatched raw event ids, a response artifact from
  the same attempt showing a different answer, a timestamp-window mismatch, or
  a served-fixture mismatch would weaken this result.
- Verdict: Supported for this run. The copied Claude answer, matching
  Claude-User origin events, and preflighted fixture contents align.
- Additional tests suggested: run p21 for ChatGPT, Perplexity, and
  Copilot/Bing; compare p21 with p20 to see whether removal of the visible
  conflict cue changes hidden metadata or JSON-LD reporting.

## Next steps

- Continue the remaining p21 controlled-browser tasks for ChatGPT, Perplexity,
  and Copilot/Bing.
- Compare any confirmed p21 hits against p20 to see whether removal of the
  visible conflict cue changes hidden metadata or JSON-LD reporting.
