TSEP /
Self-contained · offline

Evidence report

From observations to decisions, every result retains its evidence.

atelier.example — noindex/after

0.3.0-draft.8Experimental protocol2026-10-25T19:07:59.198991+00:00
Decision within scope

NO_GO

A blocking cause remains

TS07 · 1 declared targets

The decision concerns only the declared controls and targets.

Selected controls

1 / 44

43 controls outside selection

Declared targets

1

8 files linked to this report

Structure and fingerprints checked at generationThis check establishes report consistency and the integrity of the files read. It does not establish their authenticity, the correctness of judgments, indexing or ranking.

Presented runs: those supplied in this bundle. This does not establish the absence of other attempts or an exhaustive campaign.

Synthetic evidence presentAt least one file is declared synthetic. Do not present this report as observations entirely collected from a real site.

Tool-declared coverage

Results

TS07

Robots meta directives and X-Robots-Tag match the page objective.

NT · Not established

Computed supplied-capture outcomes: pass=1, fail=0, not-applicable=0, inconclusive=2; omitted pairs=0; declared scope only.

Declared procedure

TSEP offline capture adapter 50; bounded reference interpretation, supplied reviews retained; no collection.

TS07-A01 · Effective directives and objective

pass · Pass

https://atelier.example/formations

html-tree-directives-v1: enabled=pass (Googlebot standalone-page directives: no established exclusion; compared with declared intent; not actual index state); disabled=pass (Googlebot standalone-page directives: no established exclusion; compared with declared intent; not actual index state); agreement of bounded alternatives only; no scripts executed or actual indexing inferred

Rule expectation
Rule expectation
Combined effects match the declared indexing objective and declared presentation/link restrictions. For Google: an applicable restriction prevails over permission, none includes noindex/nofollow; nofollow or a preview limit alone does not mean noindex. Missing directives are not failure when intent permits indexing. For this profile, two pass yield pass, two fail yield fail, every other pair stays inconclusive; never merge directives across alternative hypotheses or confuse them with observed rendered states. For this new profile, all possible values within the intended interval yield pass; all outside on one side yield fail; otherwise inconclusive. Independent contradiction prevails within a reading; existing source consensus and rendered priority remain.
Automation
semiAuto
Required evidence kinds
http, html, intent
Rule limitations
Assesses observed declarations, not ingestion or actual indexing. A01 alone does not cover access or rendering. Automation is semiAuto: the bounded interpreter does not cover every syntax, crawler or context; unsupported inputs remain inconclusive and require review. This methodological choice does not simulate Google. No rendering, access, review or TS10 outcome is inferred. The preview profile assesses neither Google display, image availability, data-nosnippet nor licensed, structured-data or AI usage; it produces no review.

TS07-A02 · Access to the directive

inconclusive · Inconclusive

https://atelier.example/formations

HTTP access unresolved or challenge not reviewed

Rule expectation
Rule expectation
No observed obstacle prevents reading the directive in the declared context. Robots disallow contradicts a strategy relying on reading noindex. An attributable HTTP 401/403 remains fail even if robots evidence is missing.
Automation
semiAuto
Required evidence kinds
http, robots, intent
Rule limitations
No evidence of an actual engine visit; TS04 and other access controls are not globally validated. Automation is semiAuto: the bounded interpreter does not cover every syntax, crawler or context; unsupported inputs remain inconclusive and require review. Registry fields and sitemap are recorded without assessing usage preferences, TS42 or indexing and never delimit groups. Other fields and tolerances remain unsupported. Full line numbers and values are retained; reason previews disclose truncation.

TS07-A03 · Required rendered states

inconclusive · Inconclusive

https://atelier.example/formations

Missing render browser/version

Rule expectation
Rule expectation
All required states are documented and compatible with intent in the declared context. A contradiction in a complete, attributable state is fail even if other states are missing. Removing initial noindex with JavaScript does not yield pass: A03 remains inconclusive unless a required state supplies another contradiction; A01 retains its own source verdict. For this new profile, all possible values within the intended interval yield pass; all outside on one side yield fail; otherwise inconclusive. Independent contradiction prevails within a reading; existing source consensus and rendered priority remain.
Automation
semiAuto
Required evidence kinds
http, html, render, intent
Rule limitations
semiAuto: the plan and sufficiency of observations require review. The interpreter compares supplied captures; it does not execute JavaScript or establish exhaustive states, TS25, engine rendering or indexing. Supplied attribution and APIs are not authenticated; authored synthetic records are explicitly labeled, never actual visits. Frames, template fragments and closed shadow roots are outside scope. Bounds and migration are documented in docs/structured-rendering.md. The preview profile assesses neither Google display, image availability, data-nosnippet nor licensed, structured-data or AI usage; it produces no review.

Captures and intent

Fields read from the retained input, without network requests or new interpretation. A status visible in a trace is insufficient to validate a rule.

https://atelier.example/formations

Supplied prior intent
Declaration date
2026-10-25T08:50:00Z
Expected final URL
Not supplied
Expected body digest
Not supplied
Representation policy
Not supplied
{
  "declared_at": "2026-10-25T08:50:00Z",
  "crawler": "TSEP-Public-Demo/2",
  "directive_crawler": "googlebot",
  "public_canonical": true,
  "source_reader": "html-tree-directives-v1",
  "directive_policy": "google-indexing-2026-10-v1",
  "indexing": "allow",
  "following": "unspecified",
  "access_basis": "test-client-only",
  "robots_policy": {
    "profile": "google-robotstxt-fields-v2",
    "product_token": "Googlebot"
  },
  "rendering": {
    "mode": "required",
    "required_states": [
      {
        "id": "loaded",
        "interactions": [],
        "wait": "load + 1000 ms"
      }
    ]
  }
}

Declared observation date · 2026-10-25T09:10:00Z

Supplied exchanges in declared order

  1. HTTP/1.1 200 Synthetic

    https://atelier.example/formations

    Read retained request
    GET /formations HTTP/1.1
    Host: atelier.example
    User-Agent: TSEP-Public-Demo/2
    
    
    Read retained HTTP response
    HTTP/1.1 200 Synthetic
    Content-Type: text/html; charset=utf-8
    Content-Length: 229
    
    <!doctype html>
    <html lang="fr">
    <head>
      <meta charset="utf-8">
      <meta name="robots" content="index, follow">
      <title>Formations photo — Atelier</title>
    </head>
    <body>
      <main><h1>Formations photo</h1></main>
    </body>
    </html>
Capture context
{
  "id": "fictional-demo",
  "network": "none; authored synthetic evidence",
  "bounds": "declared example only; no network or browser execution",
  "tool": "authored-fixture",
  "tool_version": "2"
}

Evidence files

Open a file to read its contents and inspect its fingerprint.

supplied-input operator-docsinput.json
Retained description
Original supplied bytes. Artifact date is import time; source dates are retained inside, not verified.
Declared targets
https://atelier.example/formations
SHA-256
c511e67be8b34d6762f36c4ff61ffcf7365996da8dfe5656186118189fad71ff
Declared observation date
2026-10-25T19:07:59.198991+00:00
Declared access
synthetic
Download original bytes ↓
Escaped text preview
{
  "input_version": "2",
  "rules": [
    "TS07-A01",
    "TS07-A02",
    "TS07-A03"
  ],
  "targets": [
    {
      "url": "https://atelier.example/formations",
      "observed_at": "2026-10-25T09:10:00Z",
      "context": {
        "id": "fictional-demo",
        "network": "none; authored synthetic evidence",
        "bounds": "declared example only; no network or browser execution",
        "tool": "authored-fixture",
        "tool_version": "2"
      },
      "intent": {
        "declared_at": "2026-10-25T08:50:00Z",
        "crawler": "TSEP-Public-Demo/2",
        "directive_crawler": "googlebot",
        "public_canonical": true,
        "source_reader": "html-tree-directives-v1",
        "directive_policy": "google-indexing-2026-10-v1",
        "indexing": "allow",
        "following": "unspecified",
        "access_basis": "test-client-only",
        "robots_policy": {
          "profile": "google-robotstxt-fields-v2",
          "product_token": "Googlebot"
        },
        "rendering": {
          "mode": "required",
          "required_states": [
            {
              "id": "loaded",
              "interactions": [],
              "wait": "load + 1000 ms"
            }
          ]
        }
      },
      "http": [
        {
          "url": "https://atelier.example/formations",
          "complete": true,
          "request": "GET /formations HTTP/1.1\r\nHost: atelier.example\r\nUser-Agent: TSEP-Public-Demo/2\r\n\r\n",
          "response": "HTTP/1.1 200 Synthetic\r\nContent-Type: text/html; charset=utf-8\r\nContent-Length: 229\r\n\r\n<!doctype html>\n<html lang=\"fr\">\n<head>\n  <meta charset=\"utf-8\">\n  <meta name=\"robots\" content=\"index, follow\">\n  <title>Formations photo — Atelier</title>\n</head>\n<body>\n  <main><h1>Formations photo</h1></main>\n</body>\n</html>"
        }
      ],
      "robots": {
        "observed_at": "2026-10-25T09:10:00Z",
        "http": [
          {
            "url": "https://atelier.example/robots.txt",
            "complete": true,
            "request": "GET /robots.txt HTTP/1.1\r\nHost: atelier.example\r\nUser-Agent: TSEP-Public-Demo/2\r\n\r\n",
            "response": "HTTP/1.1 200 Synthetic\r\nContent-Type: text/plain; charset=utf-8\r\nContent-Length: 23\r\n\r\nUser-agent: *\nAllow: /\n"
          }
        ]
      }
    }
  ]
}
import-record operator-docsimport.json
Retained description
Import context, source-code fingerprints and omitted-rule coverage; import time is not capture time.
Declared targets
https://atelier.example/formations
SHA-256
d1425621a6fcfe6ea1e35d1339641cec133dc300a5b5172669286cfed8d53114
Declared observation date
2026-10-25T19:07:59.198991+00:00
Declared access
synthetic
Download original bytes ↓
Escaped text preview
{
  "adapter": {
    "name": "TSEP offline capture adapter",
    "version": "50"
  },
  "protocol": {
    "name": "TSEP",
    "version": "0.3.0-draft.8",
    "sha256": "298399d8f3ab8ca513be85b7d6905d03e8be7b521bac1376d2a4a037a51e4ce8"
  },
  "interpreter": {
    "name": "TSEP bounded reference interpreter",
    "version": "54"
  },
  "imported_at": "2026-10-25T19:07:59.198991+00:00",
  "python": "3.9.6",
  "source_files": {
    "adapters/captures.py": "0d9472dabe007e53b7a90595a01b2620b01c222adfda3bee064b6d89517d0ad5",
    "tsep.py": "b2d62d6961a9ea9bcd51ba07ae7bc6b9f0221ddde1468493987d5fd060c34121",
    "conformance/google_directives.py": "727dfef6404a54db6cfacbccb2b5753d940e564f95e56c323fdd1a36e01fa706",
    "conformance/exclusion_observation.py": "8c95437e3ef7426b4019bf754603bf6f138a1c2b13ed222687ee75076c336d9f",
    "conformance/http_canonical.py": "8f10e3b652e73bc90b4ec90c608f9b9dcc736240348b1f585570526956b90459",
    "conformance/preview_intent.py": "748b6f27f3f75b37a78ac131f3d813dba57f3f5d5a181c4c42e048a9afa91d33",
    "conformance/performance.py": "51ef1674edb82fdba72841543c38f661f455dc95adbee577aca9e66c8b70a8fa",
    "conformance/agent_policy.py": "4d5dd82393d9e01de7402c53ec8d45db319c34bb51d4ccb40611e9d4ca45544f",
    "conformance/agent_access.py": "e0cb627852270bdbc15cb5a550e830bb451ebab758ce7dc31171b0e4f88d1c23",
    "conformance/critical_content.py": "102d9175c9e4e78356502ad9ef723ec6d3e17c6500803bb02c89e55cc84c3752",
    "conformance/release_monitoring.py": "c869383e419f2cc2e2262fc1a2805aedc6562ed7c772d261cfcda712349ae922",
    "conformance/essential_links.py": "0e927b5221739e3b71632de82b4bdb65698bf4064adcd4992ca8d21456887b40",
    "conformance/essential_links_source.py": "fb9561767cfb512a42ecd098131bfad7cc6e747453910a139bfd8d84603bfcf1",
    "conformance/essential_links_dom.py": "96698ff3d5ececd14d6b4d1ca844e4d31c8ee1e2cab074565ff9c780c9a5a6a5",
    "conformance/graph_bounds.py": "d7ff8db2206617b9bf735b15d3d5edbb33635b66350a970d05078382ad891256",
    "conformance/graph_inventories.py": "e8df8ba76ac74b049eadc650176603c77a1f655d1a41bc51f2eb02d0feb73b2a",
    "conformance/graph_documents.py": "d278eb961d36b1437c221449610d543b6081c9d88b5f4e723b263606256b0d0b",
    "conformance/graph_reviews.py": "5ccd17a2115d3bc99028b653e9a61a209b0bc96a9ea82d121e85073cf75c5d01",
    "conformance/graph_reconciliation.py": "73672ac5fa23230bb20a5e6fd7bea1b69c92db0788546cddd526f6fae34b1397",
    "conformance/hreflang_native.py": "b2b9b8e33021e164bb9230270cb6305e7c21275bcdc9fccd546278080bd70796",
    "conformance/hreflang_reciprocity.py": "737fe1d0d006f6e8d0baf6c490d9892e53fbe46a33da74886e2cbcbf556411d8",
    "conformance/xdefault_role.py": "a46091da1a42b41f5d9446dbc096e4aa9e12c7942c20dbcf76ecc175e77a1b34",
    "conformance/critical_presence.py": "933198fc8a0a8fa9ff0bbbd9baf9b87e4d27211acac9763f8f90f43a52f7d95c",
    "adapters/hreflang_intake.py": "2c6e6ddf31bf6ef7670bf56723f814c7130be201dfb953e3268bf4d8d6c799de",
    "adapters/graph_intake.py": "64787d95bd4209535ceaada1a71d17984af9ac8d7e71dc0b0a328d3b9871138a",
    "conformance/incoming_links.py": "e226e919009980f1b2f6baacb2bfc5cd699a6f1f5649b30d6f293409e080f271",
    "adapters/incoming_links_intake.py": "29c67558b2f8a9ece101cff65e95acd7a26c94957e62a4c8dfd0d9f14b45920f",
    "conformance/sitemap_files.py": "8915e1eae3bdb6529efe639ff73d818e2639e0f964392d8f2be28ab7de497a72",
    "conformance/evidence_dossier.py": "bbb66d2685e042222d7ae264221394cc23d073031a95da812591f3f1d8d16512",
    "conformance/url_policy.py": "881be117db736abf9bfa1db9b29ddb507bb13be691f9201fd680f616ea9f7d5d",
    "conformance/indexing_locale.py": "0c1ae53aaa1f038bf056151fae6097a6a262849411ba0f39b4eaa9c3ba820ed0",
    "conformance/render_transport.py": "863c353fabca7c5f1e0f85a293bcf7af7d54480d4512fb796e82a954f334fe98",
    "conformance/sitemap_quality.py": "43b017d17e96a8365acdc70862038ab40a9fa519ee89684d74c8053fc4a90a66",
    "conformance/sitemap_set.py": "dec8eb9661f510c16390ddd05c4d744b6bcf50a41f0acb9109dc5cfdc8e86f2b",
    "conformance/structured_validation.py": "1561bd5ccb38e39539f090f473798ab35fc8d4deb60b397c273bee88c2f2d8d5",
    "conformance/structured_identity.py": "c9b7cf10512a9c84c674d6f7a7fe4190597d4fc6b502c3404193d4f462d069bf",
    "conformance/structured_content.py": "129301e2153e5c63ffe9c5b22fabc894f135b23b48016ac6a4936f85134f856e",
    "conformance/canonical_comparison.py": "e5d735591266c4c5a9eb480deede6dc6bdc7d2b83371b5b97d26dd2bfa894b96",
    "conformance/inspection.py": "96b0c1d762ea6981d5b8fce46c7bf80fc782648507a9747a993b3ca396197a01",
    "diagnostics/search_console.py": "97236df65baece46f0268cca284149be57e94c32a76f4ec04ba208b648298a24",
    "conformance/delivery.py": "7d9460bb0728d1167ceae9f84cbf4c7ce6e90ad3782f2de15f324f5d7b789743",
    "experiments/delivery_variants.py": "e804f14756282375e98d30465d1aabcd766cb4c33f96a5898fa0727e1b61b828",
    "conformance/release_invariants.py": "797794e7f621233b770b17aa67494e88bcf023ceb8a14da8ac216f3fac202991",
    "experiments/source_content.py": "fc4f4fa08e0f232fec3bc1e13b7a7ddde3a4bf755f10f26d663d2d232b297ff4",
    "conformance/source_markers.py": "c53930d73a46f5e6336793ef4c8de4487431c3207d05fd810eac2b60273a1b49",
    "experiments/source_markers.py": "9dca806e1249498ed0468b36c8e3cf782cef7ef65a7a11f359a5501c330f5514",
    "conformance/evaluate.py": "1b5e332958a46b98a8b75f732c1128399c24108d7a7303a925696f557ba8c115",
    "conformance/ts06_access.py": "6b2eb24da344fb1b95dc34f17edfaf351bd7d1aba06c39859c4c4597b717240c",
    "conformance/http.py": "4fdaf8eda589461979d0e05e5fb7fd2041b017d13b9b61c8540c6e677b3c3e56",
    "conformance/canonical.py": "16344897cbd4095615a99b538dea9640aca454097324e2e6b16b6736f3a06f31",
    "conformance/sitemap_locations.py": "5f9108eda0e8f309c2b3aa6c5895c3e80d8f61c391d89ba35f8c3f903bef2b77",
    "conformance/canonical_attributes.py": "ccc0d4917c4a349964bcb7c7a4a28b81b17acca71231adaeca92b9cf77068544",
    "conformance/source_text.py": "ce2a519368049ab5da3e0c9e542f8b29a6de0e4ed9ce66c27a59c36b0ac8b343",
    "conformance/redirects.py": "13724a328672cabf824a377af5b9b9d01e8d13142a01a49e5d36396c95c568d2",
    "conformance/robots.py": "b8c0385bf77cb253e6d0ad2ac50537c3b39739ad505d52707a409bf4e992337d",
    "conformance/robots_control.py": "dce351a194692b6713793bdf31d04f9e6d0c2c695276597b28c2be63066164a4",
    "conformance/structured_dom.py": "1cc8f48106e16dabbb1635260b8c8d26bb86c974d9ba3298a27056ac9f2044d6",
    "experiments/rendered_metadata.py": "6020756b55332d1b126cb44cb563a50ce6d1083939d11231ce6fde525a6fea08",
    "experiments/rendered_canonical.py": "46095e01906adebab50d4b1f55cc3fc28ec6d5286724228d62a0cb2840fb07fe",
    "provenance/runtime.py": "5480de2ede016b64e9cb6ab692c59250a84eda2a68bc1474131494187a4b4be0",
    "conformance/source_directives.py": "c59543dce84cba0b8d4e36940202f8368dd9f52a8d25d08b56e92d4dc644100a",
    "conformance/source_canonical.py": "ae5183b31b0fd48e46e026b8457cb42ab85d8eae49aa1740c2fa0d51e95dd062",
    "experiments/source_head.py": "d68671ef5eebdc07472b903bc2cb1edecd29e1d0e6a84b222c6c6bad1d7c824c",
    "experiments/source_http.py": "2fd3d17815d00bf50716676ee7e45148a6b723276d13dd55512aea69df2c8924",
    "experiments/source_tree.py": "3ae30f859dfe71925c1ff02905175c2de9991ffe9525da4fb73c9c9f63d0c30b",
    "third_party/schemaorg/schemaorg-all-https-30.1.jsonld": "07e7c663dbc12a0937581745e59a98ed12b8698f38e8e3b03650287d9df88ae5",
    "conformance/data/locale-code-facts-v1.json": "88dcbd178d0bf5faee8433a0976bc1dea0820f7a311e14a12c31674f5f10f6a7",
    "conformance/data/locale-code-facts-v1.sha256": "8d089856f00c538080407e57afcda9927a943626c776cc5a4cdfd30e85b1f92b",
    "collectors/rendered_metadata.js": "a0cef846495ed630a89149aafc017ed817f1632b6902402564a24b74d18ba206",
    "experiments/source_tree.mjs": "0d0a5dc94237b37ee6ba9b65435598d923a2b6aa217cb4a33abe5ab96a711422",
    "experiments/source_tree_network_guard.mjs": "68f439f3dceeef85e11a84bc3f78c72df3897cca53aafb8918dec16727fbe0c7",
    "third_party/source-tree/packages.json": "32757186a1ceda70ee76295042b6f0d812ee7dc36bd0506fd82ceebe0f5e8099",
    "third_party/source-tree/parse5-8.0.1.tgz": "d94ec8606e3cef24b8ec001ac121df5d7938f015be69615da27b53a082f86832",
    "third_party/source-tree/entities-8.0.0.tgz": "8e8b16388e19c12fc80f9f75f518a0f83d99428be6765a38f04c264a078cc25b",
    "experiments/source_http.mjs": "cbc87a6d0a27f25b26970d78290b38e4bf9f2cd83f4d5897eda3080f35714586",
    "experiments/source_head.mjs": "1cea8e2e138bd01276ae5739be7790ba57935de0ed63ec10604fbc9847d3b5d0",
    "experiments/source_content.mjs": "cd11892ed619f60f8b1d29bdfc9d298d04168f15267bf463be0695afbe1e19e2",
    "experiments/source_scripts.py": "d0bb74b4a5b70191195578ccd7d85abbf3e6166f27530b2d00622b510fa623db",
    "experiments/source_scripts.mjs": "417aef0ddb89d9006231e4c2165b67d53ae3d87d3dc61e57b75817278cbf288a",
    "experiments/jsonld_processing.py": "e0f80ea10a82a646c02ff2d78247d3fc08b41f01b7bd05872eaabc87d28bf6cc",
    "experiments/jsonld_processing.mjs": "17486529e5c3a744cffbc926ceb0ca8bd586535ec454de047e866f4650185c06",
    "third_party/jsonld/packages.json": "ec0b586921a31ef90751c1822d040f845360a8be48fe99f446159440cefb0ee1",
    "third_party/jsonld/jsonld-9.0.0.tgz": "3628c8df4ceaf4da1f0b55dc7a006287dc4362ed78f6f7c85e83bd99b9328627",
    "third_party/jsonld/LICENSE": "0707101bd4a2fc564788b1ba03c53615e35388dad33879663db263e724a6bd4a",
    "experiments/jsonld_html.py": "448c20e9359d274041552a588afe5f290b38e125513fa8584129e3df4ad54a00",
    "experiments/jsonld_rendered.py": "523c3a4ef41d2df9c9bf90da977b4a0a6c136e32b1d75c9abb56a815e6e832af",
    "conformance/source_link_policy.py": "3b7365b2994a171a70598ef234288a1f6a8ecb6ebff44b5cf677f5faa0ae58c7",
    "experiments/link_elements.py": "ad50dc41da8b76a5d24d4068021595f8c24df40126a4d37ccf432c055e8fa438",
    "experiments/url_resolution.py": "b7c393aa5f0cf0986da2a2db4c729c803e283489afee8da1a5261897dde4e2c2",
    "experiments/link_elements.mjs": "7da25bb82714282d9d49c65081f43edab0e032d91337439b10c47a402027214e",
    "experiments/url_resolution.mjs": "6a28ee91a806a7f871c63a6d5d28bc0d0b0842af570e96b4b57239429c533d8c",
    "experiments/source_metadata.mjs": "d0b4ae3247251b31a209d6de6ba2d962b5c606b1e4d4869f2fe504ff628f32f6"
  },
  "runtime": {
    "implementation": "CPython",
    "python": "3.9.6",
    "build": "3.9.6 (default, May 22 2026, 11:13:45) \n[Clang 21.0.0 (clang-2100.1.1.101)]",
    "stdlib_source_sha256": {
      "html": "8d69aeb50f77de6d84c51b9d01e08497983bafe9297cdd1620bf75aa1b1dba1c",
      "html.entities": "fbe69b7c04e3e75eb7b33fefd2d5ad730bff35c4a7b865a8ecfc041075f6f93c",
      "html.parser": "038bd4c85fc9d814f39f70a03733fddec2c3d3364b75bca4c276178488afae2e"
    },
    "scope": "Selected HTML runtime dependencies; null means source unavailable. Not complete environment authentication."
  },
  "source_verification": "Loaded module file/spec origins match this tool root; on-disk hashes checked before and after interpretation. Not execution authentication.",
  "input_sha256": "c511e67be8b34d6762f36c4ff61ffcf7365996da8dfe5656186118189fad71ff",
  "access": "synthetic",
  "coverage_inventory": [
    {
      "state": "implemented",
      "fr": "TS26–30/37 : sources, états et revues fournis, TLS hors ligne sur racines déclarées ; 44 contrôles possèdent des règles bornées, aucun audit global implicite.",
      "en": "TS26–30/37: supplied sources, states and reviews, offline TLS with declared roots;44 controls have bounded rules, no implicit global audit."
    },
    {
      "state": "implemented",
      "fr": "TS09/11/19/20/38 : politiques, contenus et variantes sur pièces sources bornées et revues liées ; aucune qualification globale.",
      "en": "TS09/11/19/20/38: policy, content and variants on bounded source evidence and bound reviews; no global qualification."
    },
    {
      "state": "implemented",
      "fr": "TS21/22/40 : diagnostics de familles, codes/destinations et méthodes hreflang fournis ; aucune causalité, indexation réelle ou localisation authentifiée.",
      "en": "TS21/22/40: supplied family investigations, locale codes/destinations and hreflang methods; no causal, actual-indexing or authenticated-localization claim."
    },
    {
      "state": "implemented",
      "fr": "TS06-A01 : matrice fournie de routes `.invalid`, rôles synthétiques, canaris et triplets étiquetés ; aucune identité, aucun cache réel ni domaine live.",
      "en": "TS06-A01: supplied `.invalid` route matrix, synthetic roles, canaries and labelled triplets; no real identity, real cache or live domain."
    },
    {
      "state": "implemented",
      "fr": "TS25 : cinq rôles déclarés, présence source/rendu et revues fournies ; aucune exécution ou visibilité authentifiée.",
      "en": "TS25: five declared roles, source/render presence and supplied reviews; no authenticated execution or visibility."
    },
    {
      "state": "implemented",
      "fr": "TS24 : politique x-default, contexte motivé et revue de rôle fournis ; aucune neutralité ni approbation humaine inférée.",
      "en": "TS24: supplied x-default policy, motivated context and role review; no inferred neutrality or human approval."
    },
    {
      "state": "implemented",
      "fr": "TS23 : réciprocité et auto-référence natives dans le groupe préalable ; aucune validité linguistique, indexabilité ou sélection Google déduite.",
      "en": "TS23: native reciprocal/self annotations in the prior cluster; no inferred language validity, indexability or Google selection."
    },
    {
      "state": "implemented",
      "fr": "TS18 : inventaires, graphe borné et revues fournis ; aucune exhaustivité, identité de relecteur ou collecte authentifiée.",
      "en": "TS18: supplied inventories, bounded graph and reviews; no completeness, authenticated reviewer or acquisition."
    },
    {
      "state": "implemented",
      "fr": "TS16 : liens entrants dans la population préalable fournie ; aucune exhaustivité du site ni importance authentifiée.",
      "en": "TS16: incoming links within a prior supplied population; no site completeness or authenticated importance."
    },
    {
      "state": "implemented",
      "fr": "TS17 : liens essentiels a/href dans les source et états fournis ; stratégie préalable, scénarios et association HTTP/DOM déclarés, aucune interaction ou acquisition authentifiée.",
      "en": "TS17: essential a/href links in supplied source/states; prior strategy, declared scenarios and HTTP/DOM association, no authenticated interaction/acquisition."
    },
    {
      "state": "implemented",
      "fr": "TS15 : population déclarée de fichiers fournis, limites natives et structure minimale ; aucun constat du serveur ni exhaustivité du site.",
      "en": "TS15: declared population of supplied files, native bounds and minimal structure; no server observation or site completeness."
    },
    {
      "state": "implemented",
      "fr": "TS33 : syntaxe et noms de vocabulaire sur les captures liées, messages API indexés séparés ; erreurs bloquantes conservées, aucune éligibilité actuelle garantie.",
      "en": "TS33: syntax/vocabulary names on bound captures, separate indexed API messages; blocking errors retained, no current eligibility guarantee."
    },
    {
      "state": "implemented",
      "fr": "TS32 : identifiants et références des exports JSON-LD fournis, registre préalable et revues liées ; cohérence du corpus, sans stabilité temporelle ni identité authentifiée.",
      "en": "TS32: IDs/references from supplied JSON-LD exports, prior registry and bound reviews; corpus coherence, no temporal stability or authenticated identity."
    },
    {
      "state": "implemented",
      "fr": "TS31 : source et DOM JSON-LD fournis recalculés, périmètre et contenu revus avec liaison aux graphes ; visibilité, faits et résultats enrichis non authentifiés.",
      "en": "TS31: recomputed supplied source/DOM JSON-LD, graph-bound scope/content reviews; visibility, facts and rich results are not authenticated."
    },
    {
      "state": "implemented",
      "fr": "TS36 : suivi documentaire baseline/J+1/J+7/J+30, API et logs fournis ; échéances futures NT, causalité et identité Google non établies.",
      "en": "TS36: supplied baseline/D+1/D+7/D+30 API/log follow-up; future stages inconclusive, causality and Google identity unestablished."
    },
    {
      "state": "implemented",
      "fr": "TS12 : comparaisons littérales API/HTTP/HTML/DOM prévus et revues fournies ; C documentaire, jamais canonical correcte, TS10 ou indexation. Rendu absent : NT sauf contradiction indépendante.",
      "en": "TS12: literal API/HTTP/HTML/planned DOM comparisons and supplied reviews; documentary C, never correct canonical, TS10 or indexing. Missing rendering: NT unless independent contradiction."
    },
    {
      "state": "implemented",
      "fr": "TS08 : sélection et objectifs préalables, JSON API natifs et revues/décisions fournies ; dossier qualifié seulement, aucun état live ou verdict TS12.",
      "en": "TS08: prior selection/objectives, native API JSON and supplied reviews/decisions; documentation only, no live state or TS12 verdict."
    },
    {
      "state": "implemented",
      "fr": "TS01-A02 : identity_reader html-tree-markers-v1 préalable, segments parsés attribués et deux hypothèses globales. CRLF/CR bruts deviennent LF ; critères littéraux inchangés. Ni visibilité ni navigateur observés. Ancien lecteur et priorités URL/empreinte/stabilité conservés ; Node 24 requis pour cette seule branche, sans repli.",
      "en": "TS01-A02: prior html-tree-markers-v1 identity_reader, attributed parsed segments and two whole-document hypotheses. Raw CRLF/CR become LF; literal criteria unchanged. No visibility or browser observation. Historical reader and URL/hash/stability precedence retained; Node 24 required for this branch, without fallback."
    },
    {
      "state": "implemented",
      "fr": "TS39 : matrice/configuration revues, signaux natifs TS07/TS10 et revues sémantiques, contextes et cache liés aux preuves fournies. Aucune région, visite Googlebot ou production authentifiée.",
      "en": "TS39: reviewed matrix/configuration, native TS07/TS10 signals and semantic reviews, context/cache tied to supplied evidence. No authenticated geography, Googlebot visit or production."
    },
    {
      "state": "implemented",
      "fr": "TS41 : plan préalable, sorties natives recalculées, journal et réaction aux échecs/inconnues. C qualifie le dispositif déclaré ; les défauts SEO restent visibles. Aucune commande fournie exécutée ni CI distante authentifiée.",
      "en": "TS41: prior plan, recalculated native outputs, journal and failure/unknown response. C qualifies the declared process; SEO defects stay visible. No supplied command executed or remote CI authenticated."
    },
    {
      "state": "implemented",
      "fr": "TS43 : client de test documenté, réponse prévue, journaux JSONL natifs et corrélation revue. Un refus prévu peut être cohérent ; aucune identité, visite ou accessibilité réelle de l’opérateur établie.",
      "en": "TS43: documented test client, planned response, native JSONL logs and reviewed correlation. An expected denial can conform; no actual operator identity, visit or access established."
    },
    {
      "state": "implemented",
      "fr": "TS42 : usages documentés, décisions du responsable et arbitrages fournis ; comparaison robots bornée sur la représentation du client. Aucun agent réel ni respect des règles par un opérateur établi.",
      "en": "TS42: documented purposes, supplied owner decisions and tradeoffs; bounded robots comparison on the client representation. No actual agent or operator compliance established."
    },
    {
      "state": "implemented",
      "fr": "TS34/TS35 : imports CrUX et Lighthouse distincts, valeurs et classes conservées ; C décrit la documentation, jamais une garantie de bonnes performances. Revues fournies sans authentification ; aucune collecte.",
      "en": "TS34/TS35: separate CrUX and Lighthouse imports with retained values/classes; C describes documentation, never a guarantee of good performance. Supplied reviews are not authenticated; no collection."
    },
    {
      "state": "implemented",
      "fr": "TS07-A01/A03 : profil préalable google-preview-intent-v1, intervalles de permission texte/image/vidéo, contradictions et inconnues conservées. Aucun affichage Google ou usage de contenu déduit.",
      "en": "TS07-A01/A03: prior google-preview-intent-v1, text/image/video permission intervals, retained contradictions and unknowns. No inferred Google display or content usage."
    },
    {
      "state": "implemented",
      "fr": "TS10-A01/A02 : http-link-context-v1 préalable, premier rel, contexte anchor attribué et inconnues conservées ; destination comparée littéralement. Ancien lecteur inchangé ; aucun choix Google déduit.",
      "en": "TS10-A01/A02: prior http-link-context-v1, first rel, attributed anchor context and retained unknowns; literal destination comparison. Historical reader unchanged; no inferred Google choice."
    },
    {
      "state": "implemented",
      "fr": "TS10-A04 : profils source préalables html-tree-links-v1/v2, liens HTML a/area attribués, base conditionnelle et URL sérialisées. Convergence dans une famille déclarée, pas présence ou suffisance du maillage ; v2 rend les href dépendants indéterminés sous première base non analysable ; rendu antérieur inchangé.",
      "en": "TS10-A04: prior html-tree-links-v1/v2 source profiles, attributed HTML a/area, conditional base and serialized URLs. Declared-family convergence, not link presence or sufficiency; v2 keeps dependent hrefs unknown under an unparseable first base; earlier rendered readers unchanged."
    },
    {
      "state": "implemented",
      "fr": "TS10-A01/A02 : lecteur source canonical préalable, positions et hypothèses attribuées ; rendu/revue toujours nécessaires.",
      "en": "TS10-A01/A02: prior canonical source reader with attributed positions/hypotheses; rendering/reviews remain required."
    },
    {
      "state": "implemented",
      "fr": "TS07 : source_reader html-tree-directives-v1 préalable, deux hypothèses statiques et métadonnées attribuées aux octets ; Node 24 facultatif requis pour ce profil, aucun repli. Rendu et revues distincts.",
      "en": "TS07: prior html-tree-directives-v1 source_reader, two static hypotheses with byte-attributed metadata; optional Node 24 required for this profile, no fallback. Rendering and reviews remain separate."
    },
    {
      "state": "implemented",
      "fr": "TS10-A03 : lecteur sitemap-locations-v1 préalable ; loc de pages distincts des annotations langues/images conservées sans évaluation. Profil historique inchangé, extensions inconnues indéterminées.",
      "en": "TS10-A03: prior sitemap-locations-v1 reader; page loc distinct from retained, unassessed language/image annotations. Legacy profile unchanged; unknown extensions inconclusive."
    },
    {
      "state": "implemented",
      "fr": "Profil robots google-robotstxt-fields-v2 : registre fermé de champs hors portée accès, valeurs conservées ; anciens profils inchangés, autres champs indéterminés.",
      "en": "Robots profile google-robotstxt-fields-v2: closed registry of fields outside access scope, retained values; old profiles unchanged, other fields inconclusive."
    },
    {
      "state": "implemented",
      "fr": "TS04 : directive_crawler préalable distingue le groupe Googlebot et le client HTTP réel ; les refus HTTP restent propres au client observé, sans accès Googlebot déduit.",
      "en": "TS04: prior directive_crawler separates the Googlebot group from the actual HTTP client; HTTP denials concern the observed client, without inferring Googlebot access."
    },
    {
      "state": "implemented",
      "fr": "TS10 : attributs ordinaires source et DOM structurés classés en commun ; modificateurs, namespaces et attributs inconnus indéterminés. DOM sérialisé historique inchangé.",
      "en": "TS10: shared source/structured canonical attribute classification; modifiers, namespaces and unknown attributes inconclusive. Historical serialized DOM unchanged."
    },
    {
      "state": "implemented",
      "fr": "TS07/TS10 : lecteur DOM structuré préalable, arbre complet, provenance fournie, sans authentification de navigation. Limites source et revues conservées.",
      "en": "TS07/TS10: predeclared structured DOM reader, complete tree and supplied attribution, without navigation authentication. Source limits and reviews retained."
    },
    {
      "state": "implemented",
      "fr": "TS04 : matrice robots préalable, ressources nécessaires, revues fournies et lecteur partagé TS07. Profils bornés explicites ; anciennes entrées TS07 sous profil historique fixe.",
      "en": "TS04: prior robots matrix, required resources, supplied reviews and shared TS07 reader. Explicit bounded profiles; legacy TS07 inputs use a fixed historical profile."
    },
    {
      "state": "implemented",
      "fr": "Octets HTTP exacts en entrée v2 ; lecture des anciennes entrées UTF-8 v1.",
      "en": "Exact HTTP bytes in input v2; legacy UTF-8 input v1 retained."
    },
    {
      "state": "implemented",
      "fr": "HTTP/1.1 chunked borné, gzip simple et deflate enveloppé zlib ; SHA-256 après décodage, sans normalisation.",
      "en": "Bounded HTTP/1.1 chunked, single gzip member and zlib-wrapped deflate; SHA-256 after decoding, without normalization."
    },
    {
      "state": "implemented",
      "fr": "Rapport hors ligne, preuves originales et comparaison ; inconnues et échecs conservés.",
      "en": "Offline report, original evidence and comparison; unknowns and failures retained."
    },
    {
      "state": "implemented",
      "fr": "TS01 : extracteur de texte source distinct de TS07 ; éléments ordinaires équilibrés, références de caractères, titre RCDATA et icônes SVG bornées sans texte.",
      "en": "TS01: source-text extractor separate from TS07; balanced ordinary elements, character references, RCDATA title and bounded text-free SVG icons."
    },
    {
      "state": "deferred",
      "fr": "Brotli, gzip multimembre, extensions/trailers chunked, HTTP/2 brut : indéterminés.",
      "en": "Brotli, multi-member gzip, chunk extensions/trailers and raw HTTP/2: inconclusive."
    },
    {
      "state": "deferred",
      "fr": "Marqueurs : UTF-8 explicite et HTML borné seulement. Octets non UTF-8 conservés et empreintes comparables, sans extraction de texte implicite.",
      "en": "Markers: explicit UTF-8 and bounded HTML only. Non-UTF-8 bytes retained and hashes comparable, without implicit text extraction."
    },
    {
      "state": "implemented",
      "fr": "TS01 : select/option/optgroup et tableaux explicitement structurés ; aucune fermeture implicite ni réparation.",
      "en": "TS01: explicitly structured select/option/optgroup and tables; no implied closure or repair."
    },
    {
      "state": "deferred",
      "fr": "TS01 sans identity_reader : noscript/template/textarea non vides, texte SVG, MathML, select/table hors sous-ensemble, script échappé et HTML ambigu : extraction entière indéterminée. Le profil parsé distinct garde les erreurs rapportées, texte étranger non blanc, frames et intervalles non attribuables indéterminés.",
      "en": "TS01 without identity_reader: nonempty noscript/template/textarea, SVG text, MathML, unsupported select/table, escaped script and ambiguous HTML: whole extraction inconclusive. The distinct parsed profile keeps reported errors, nonblank foreign text, frames and unattributable spans inconclusive."
    },
    {
      "state": "out-of-scope",
      "fr": "Cet adaptateur ne collecte pas, ne rend pas JavaScript et ne produit aucune revue humaine manquante.",
      "en": "This adapter does not collect, render JavaScript or supply missing human reviews."
    },
    {
      "state": "out-of-scope",
      "fr": "Pas de preuve de Googlebot réel, indexation, classement ou conformité globale.",
      "en": "No evidence of actual Googlebot behavior, indexing, ranking or global conformity."
    }
  ],
  "network_requests_by_adapter": 0,
  "coverage": {
    "TS07": {
      "requested_rules": [
        "TS07-A01",
        "TS07-A02",
        "TS07-A03"
      ],
      "omitted_rules": [],
      "requested_pairs": 3,
      "required_pairs": 3
    }
  },
  "limitations": "Reference interpreter only. Supplied intent/reviews are not authenticated; no collection, JS execution, engine observation or global conformity."
}
computed-results validator-outputassessment.json
Retained description
Computed reference outcomes, not normative conformance expectations; assessment performed at import time.
Declared targets
https://atelier.example/formations
SHA-256
a1092c938324bed128a225d08ce99fcc66de69782f403e910e99f13f3a491109
Declared observation date
2026-10-25T19:07:59.198991+00:00
Declared access
synthetic
Download original bytes ↓
Escaped text preview
[
  {
    "rule_id": "TS07-A01",
    "target": "https://atelier.example/formations",
    "outcome": "pass",
    "reason": "html-tree-directives-v1: enabled=pass (Googlebot standalone-page directives: no established exclusion; compared with declared intent; not actual index state); disabled=pass (Googlebot standalone-page directives: no established exclusion; compared with declared intent; not actual index state); agreement of bounded alternatives only; no scripts executed or actual indexing inferred"
  },
  {
    "rule_id": "TS07-A02",
    "target": "https://atelier.example/formations",
    "outcome": "inconclusive",
    "reason": "HTTP access unresolved or challenge not reviewed"
  },
  {
    "rule_id": "TS07-A03",
    "target": "https://atelier.example/formations",
    "outcome": "inconclusive",
    "reason": "Missing render browser/version"
  }
]
source-observation-1 validator-outputobservations/source-observation-1.json
Retained description
Computed interpretation diagnostics, attributed metadata/directives and alternative decisions; import time, not capture or engine observation.
Declared targets
https://atelier.example/formations
SHA-256
f1ab6ef0e1ffddb4b81b66b085b92295dfe9c6875d8884fae9b7614c9df87fc9
Declared observation date
2026-10-25T19:07:59.198991+00:00
Declared access
synthetic
Download original bytes ↓
Escaped text preview
{
  "rule_id": "TS07-A01",
  "target": "https://atelier.example/formations",
  "observations": [
    {
      "reader": "html-tree-directives-v1",
      "policy_version": "1",
      "scope": "Static source hypotheses only; not coexisting rendered states, HTML validity or Google behavior.",
      "body_sha256": "56b9aaa3fc1a70494b80c3ce3abe1e7768e256418a158e8ff17d8c2fd6932e31",
      "inventory": {
        "kind": "unapplied-http-source-tree",
        "experiment_version": "1",
        "metadata_extension": "1",
        "normative_effect": "none",
        "parser": {
          "name": "parse5",
          "version": "8.0.1",
          "dependency": "entities@8.0.0"
        },
        "runtime": {
          "node": "v24.19.0",
          "v8": "13.6.233.17-node.51"
        },
        "parser_input_utf8_sha256": "56b9aaa3fc1a70494b80c3ce3abe1e7768e256418a158e8ff17d8c2fd6932e31",
        "source_offset_unit": "UTF-16 code units in exact decoded parser input, zero-based, exclusive end; body byte spans added by supervisor.",
        "networkGuard": {
          "guarded": [
            "node:net.connect",
            "node:net.createConnection",
            "node:net.createServer",
            "node:net.Socket.connect",
            "node:tls.connect",
            "node:tls.createServer",
            "node:http.request",
            "node:http.get",
            "node:http.createServer",
            "node:https.request",
            "node:https.get",
            "node:https.createServer",
            "node:http2.connect",
            "node:http2.createServer",
            "node:http2.createSecureServer",
            "node:dgram.createSocket",
            "node:dgram.Socket.connect",
            "node:dns.lookup",
            "node:dns.resolve",
            "node:dns.resolve4",
            "node:dns.resolve6",
            "node:dns.resolveAny"
          ],
          "scope": "Documented API guard, not OS network isolation; no source JavaScript execution."
        },
        "bounds": {
          "source_bytes": 8388608,
          "tree_nodes": 200000,
          "tree_depth": 256,
          "records": 50000,
          "parse_errors": 1000
        },
        "scope": "Static whole-document hypotheses, no scripts executed. Template declarations and nesting retained; shadow attachment never asserted, including closed mode. Encoding meta retained without changing the certain declared HTTP decoding. Complete is bounded inventory completion, not HTML validity. No SEO decision, URL resolution, browser or Google observation.",
        "decoding": {
          "profile": "html-http-utf8-v1",
          "content_types": [
            "text/html; charset=utf-8"
          ],
          "body_sha256": "56b9aaa3fc1a70494b80c3ce3abe1e7768e256418a158e8ff17d8c2fd6932e31",
          "body_bytes": 229,
          "consumed_bom_bytes": 0,
          "parser_input_utf8_sha256": "56b9aaa3fc1a70494b80c3ce3abe1e7768e256418a158e8ff17d8c2fd6932e31",
          "parser_input_utf16_units": 227,
          "scope": "Already decompressed body; one initial UTF-8 BOM consumed. No charset sniffing, newline normalization or invalid-byte replacement. HTTP origin and completeness are caller evidence, not proved by this decoder."
        },
        "source_sha256": {
          "experiments/source_tree.py": "3ae30f859dfe71925c1ff02905175c2de9991ffe9525da4fb73c9c9f63d0c30b",
          "experiments/source_tree.mjs": "0d0a5dc94237b37ee6ba9b65435598d923a2b6aa217cb4a33abe5ab96a711422",
          "experiments/source_tree_network_guard.mjs": "68f439f3dceeef85e11a84bc3f78c72df3897cca53aafb8918dec16727fbe0c7",
          "third_party/source-tree/packages.json": "32757186a1ceda70ee76295042b6f0d812ee7dc36bd0506fd82ceebe0f5e8099",
          "third_party/source-tree/parse5-8.0.1.tgz": "d94ec8606e3cef24b8ec001ac121df5d7938f015be69615da27b53a082f86832",
          "third_party/source-tree/entities-8.0.0.tgz": "8e8b16388e19c12fc80f9f75f518a0f83d99428be6765a38f04c264a078cc25b",
          "experiments/source_http.py": "2fd3d17815d00bf50716676ee7e45148a6b723276d13dd55512aea69df2c8924",
          "experiments/source_http.mjs": "cbc87a6d0a27f25b26970d78290b38e4bf9f2cd83f4d5897eda3080f35714586",
          "experiments/source_metadata.mjs": "d0b4ae3247251b31a209d6de6ba2d962b5c606b1e4d4869f2fe504ff628f32f6"
        },
        "supervisor": {
          "python_version": "3.9.6",
          "process_timeout_seconds": 30,
          "node_old_space_mib": 128,
          "output_byte_limit": 33554432
        },
        "readings": {
          "enabled": {
            "complete": true,
            "template_containers": [],
            "metadata": [
              {
                "group": "metadata",
                "tag": "meta",
                "namespace": "http://www.w3.org/1999/xhtml",
                "context": "head",
                "attributes": {
                  "charset": "utf-8"
                },
                "ancestors": [
                  "#document",
                  "html",
                  "head"
                ],
                "ancestor_namespaces": [
                  null,
                  "http://www.w3.org/1999/xhtml",
                  "http://www.w3.org/1999/xhtml"
                ],
                "template_indices": [],
                "source_span_utf16": [
                  42,
                  64
                ],
                "raw_tag": "<meta charset=\"utf-8\">",
                "body_span_bytes": [
                  42,
                  64
                ]
              },
              {
                "group": "metadata",
                "tag": "meta",
                "namespace": "http://www.w3.org/1999/xhtml",
                "context": "head",
                "attributes": {
                  "name": "robots",
                  "content": "index, follow"
                },
                "ancestors": [
                  "#document",
                  "html",
                  "head"
                ],
                "ancestor_namespaces": [
                  null,
                  "http://www.w3.org/1999/xhtml",
                  "http://www.w3.org/1999/xhtml"
                ],
                "template_indices": [],
                "source_span_utf16": [
                  67,
                  111
                ],
                "raw_tag": "<meta name=\"robots\" content=\"index, follow\">",
                "body_span_bytes": [
                  67,
                  111
                ]
              }
            ],
            "encoding_declarations": [
              {
                "group": "encoding",
                "tag": "meta",
                "namespace": "http://www.w3.org/1999/xhtml",
                "context": "head",
                "attributes": {
                  "charset": "utf-8"
                },
                "ancestors": [
                  "#document",
                  "html",
                  "head"
                ],
                "ancestor_namespaces": [
                  null,
                  "http://www.w3.org/1999/xhtml",
                  "http://www.w3.org/1999/xhtml"
                ],
                "template_indices": [],
                "source_span_utf16": [
                  42,
                  64
                ],
                "raw_tag": "<meta charset=\"utf-8\">",
                "body_span_bytes": [
                  42,
                  64
                ]
              }
            ],
            "parse_errors": [],
            "tree_nodes": 19,
            "document_mode": "no-quirks"
          },
          "disabled": {
            "complete": true,
            "template_containers": [],
            "metadata": [
              {
                "group": "metadata",
                "tag": "meta",
                "namespace": "http://www.w3.org/1999/xhtml",
                "context": "head",
                "attributes": {
                  "charset": "utf-8"
                },
                "ancestors": [
                  "#document",
                  "html",
                  "head"
                ],
                "ancestor_namespaces": [
                  null,
                  "http://www.w3.org/1999/xhtml",
                  "http://www.w3.org/1999/xhtml"
                ],
                "template_indices": [],
                "source_span_utf16": [
                  42,
                  64
                ],
                "raw_tag": "<meta charset=\"utf-8\">",
                "body_span_bytes": [
                  42,
                  64
                ]
              },
              {
                "group": "metadata",
                "tag": "meta",
                "namespace": "http://www.w3.org/1999/xhtml",
                "context": "head",
                "attributes": {
                  "name": "robots",
                  "content": "index, follow"
                },
                "ancestors": [
                  "#document",
                  "html",
                  "head"
                ],
                "ancestor_namespaces": [
                  null,
                  "http://www.w3.org/1999/xhtml",
                  "http://www.w3.org/1999/xhtml"
                ],
                "template_indices": [],
                "source_span_utf16": [
                  67,
                  111
                ],
                "raw_tag": "<meta name=\"robots\" content=\"index, follow\">",
                "body_span_bytes": [
                  67,
                  111
                ]
              }
            ],
            "encoding_declarations": [
              {
                "group": "encoding",
                "tag": "meta",
                "namespace": "http://www.w3.org/1999/xhtml",
                "context": "head",
                "attributes": {
                  "charset": "utf-8"
                },
                "ancestors": [
                  "#document",
                  "html",
                  "head"
                ],
                "ancestor_namespaces": [
                  null,
                  "http://www.w3.org/1999/xhtml",
                  "http://www.w3.org/1999/xhtml"
                ],
                "template_indices": [],
                "source_span_utf16": [
                  42,
                  64
                ],
                "raw_tag": "<meta charset=\"utf-8\">",
                "body_span_bytes": [
                  42,
                  64
                ]
              }
            ],
            "parse_errors": [],
            "tree_nodes": 19,
            "document_mode": "no-quirks"
          }
        }
      },
      "directive_observations": {
        "enabled": [
          {
            "reader": "google-indexing-2026-10-v1",
            "source": "https://developers.google.com/search/docs/crawling-indexing/robots-meta-tag",
            "source_checked": "2026-10-25",
            "observed_at": "2026-10-25T09:10:00Z",
            "tokens": [
              "index",
              "follow"
            ],
            "ignored": [],
            "unknown": [],
            "expires": [],
            "excluded": false,
            "nofollow": false,
            "uncertain_expiry": false,
            "scope": "Standalone page, Googlebot web-search rules on the supplied representation; not actual indexing or embedded-content indexing.",
            "outcome": "pass"
          }
        ],
        "disabled": [
          {
            "reader": "google-indexing-2026-10-v1",
            "source": "https://developers.google.com/search/docs/crawling-indexing/robots-meta-tag",
            "source_checked": "2026-10-25",
            "observed_at": "2026-10-25T09:10:00Z",
            "tokens": [
              "index",
              "follow"
            ],
            "ignored": [],
            "unknown": [],
            "expires": [],
            "excluded": false,
            "nofollow": false,
            "uncertain_expiry": false,
            "scope": "Standalone page, Googlebot web-search rules on the supplied representation; not actual indexing or embedded-content indexing.",
            "outcome": "pass"
          }
        ]
      },
      "hypotheses": {
        "enabled": {
          "outcome": "pass",
          "reason": "Googlebot standalone-page directives: no established exclusion; compared with declared intent; not actual index state"
        },
        "disabled": {
          "outcome": "pass",
          "reason": "Googlebot standalone-page directives: no established exclusion; compared with declared intent; not actual index state"
        }
      },
      "outcome": "pass",
      "reason": "html-tree-directives-v1: enabled=pass (Googlebot standalone-page directives: no established exclusion; compared with declared intent; not actual index state); disabled=pass (Googlebot standalone-page directives: no established exclusion; compared with declared intent; not actual index state); agreement of bounded alternatives only; no scripts executed or actual indexing inferred"
    }
  ]
}
target-1-intent intentevidence/target-1-intent.json
Retained description
Derived supplied record; latest-supplied-date; target observation date used for undated derived fields. Original fields unchanged; no missing evidence inferred.
Declared targets
https://atelier.example/formations
SHA-256
cb931ef5bf7988e4551fec325c0fa65fbbce1c8fd1a415755c79154fc5ee8bf5
Declared observation date
2026-10-25T09:10:00Z
Declared access
synthetic
Download original bytes ↓
Escaped text preview
{
  "target": "https://atelier.example/formations",
  "date_basis": "latest-supplied-date; target observation date used for undated derived fields",
  "record": {
    "intent": {
      "declared_at": "2026-10-25T08:50:00Z",
      "crawler": "TSEP-Public-Demo/2",
      "directive_crawler": "googlebot",
      "public_canonical": true,
      "source_reader": "html-tree-directives-v1",
      "directive_policy": "google-indexing-2026-10-v1",
      "indexing": "allow",
      "following": "unspecified",
      "access_basis": "test-client-only",
      "robots_policy": {
        "profile": "google-robotstxt-fields-v2",
        "product_token": "Googlebot"
      },
      "rendering": {
        "mode": "required",
        "required_states": [
          {
            "id": "loaded",
            "interactions": [],
            "wait": "load + 1000 ms"
          }
        ]
      }
    },
    "context": {
      "id": "fictional-demo",
      "network": "none; authored synthetic evidence",
      "bounds": "declared example only; no network or browser execution",
      "tool": "authored-fixture",
      "tool_version": "2"
    }
  }
}
target-1-http httpevidence/target-1-http.json
Retained description
Derived supplied record; latest-supplied-date; target observation date used for undated derived fields. Original fields unchanged; no missing evidence inferred.
Declared targets
https://atelier.example/formations
SHA-256
41effd473abffa1b7bc542dd85dd79edbd9e96d10d72344900bb5d8a06aea281
Declared observation date
2026-10-25T09:10:00Z
Declared access
synthetic
Download original bytes ↓
Escaped text preview
{
  "target": "https://atelier.example/formations",
  "date_basis": "latest-supplied-date; target observation date used for undated derived fields",
  "record": {
    "http": [
      {
        "url": "https://atelier.example/formations",
        "complete": true,
        "request": "GET /formations HTTP/1.1\r\nHost: atelier.example\r\nUser-Agent: TSEP-Public-Demo/2\r\n\r\n",
        "response": "HTTP/1.1 200 Synthetic\r\nContent-Type: text/html; charset=utf-8\r\nContent-Length: 229\r\n\r\n<!doctype html>\n<html lang=\"fr\">\n<head>\n  <meta charset=\"utf-8\">\n  <meta name=\"robots\" content=\"index, follow\">\n  <title>Formations photo — Atelier</title>\n</head>\n<body>\n  <main><h1>Formations photo</h1></main>\n</body>\n</html>"
      }
    ]
  }
}
target-1-html htmlevidence/target-1-html.json
Retained description
Derived supplied record; latest-supplied-date; target observation date used for undated derived fields. Original fields unchanged; no missing evidence inferred.
Declared targets
https://atelier.example/formations
SHA-256
32cb1d7932c307e66b5101e85277590a6e3239731ac8fb3ffa0d2176ca1bf454
Declared observation date
2026-10-25T09:10:00Z
Declared access
synthetic
Download original bytes ↓
Escaped text preview
{
  "target": "https://atelier.example/formations",
  "date_basis": "latest-supplied-date; target observation date used for undated derived fields",
  "record": {
    "source_responses": [
      {
        "url": "https://atelier.example/formations",
        "complete": true,
        "response": "HTTP/1.1 200 Synthetic\r\nContent-Type: text/html; charset=utf-8\r\nContent-Length: 229\r\n\r\n<!doctype html>\n<html lang=\"fr\">\n<head>\n  <meta charset=\"utf-8\">\n  <meta name=\"robots\" content=\"index, follow\">\n  <title>Formations photo — Atelier</title>\n</head>\n<body>\n  <main><h1>Formations photo</h1></main>\n</body>\n</html>"
      }
    ],
    "interpretation": "Supplied source responses with media types and bodies; no DOM or HTML inferred."
  }
}
target-1-robots robotsevidence/target-1-robots.json
Retained description
Derived supplied record; latest-supplied-date; target observation date used for undated derived fields. Original fields unchanged; no missing evidence inferred.
Declared targets
https://atelier.example/formations
SHA-256
173afa454afbcaf5405822839f235a984b452461de626501ea17c06cffebe63a
Declared observation date
2026-10-25T09:10:00Z
Declared access
synthetic
Download original bytes ↓
Escaped text preview
{
  "target": "https://atelier.example/formations",
  "date_basis": "latest-supplied-date; target observation date used for undated derived fields",
  "record": {
    "observed_at": "2026-10-25T09:10:00Z",
    "http": [
      {
        "url": "https://atelier.example/robots.txt",
        "complete": true,
        "request": "GET /robots.txt HTTP/1.1\r\nHost: atelier.example\r\nUser-Agent: TSEP-Public-Demo/2\r\n\r\n",
        "response": "HTTP/1.1 200 Synthetic\r\nContent-Type: text/plain; charset=utf-8\r\nContent-Length: 23\r\n\r\nUser-agent: *\nAllow: /\n"
      }
    ]
  }
}

Scope and method

Selection method

Authored example; declared scope only

Profile
custom
Declared exclusions
Fictional evidence and supplied synthetic decisions; no actual site, human reviewer, Google visit or browser rendering.

Declared assessor

Declared assessor
TSEP authored demo; synthetic decisions only
Assessment mode
semiAuto
Selected controls
TS07

Report identity

Declared tool
TSEP offline capture adapter 50
Report issued
2026-10-25T19:07:59.198991+00:00
Protocol
0.3.0-draft.8
Report JSON SHA-256
86e4d043782a10096a4f7204bf1d0a5360b4db3c33dbf2c26e2f6d57483a316e
Download original report JSON ↓