TS07Access and indexing
Do the directives support your indexing goal?
Spot directives that contradict your goal for Google.
Read my page’s directives- In the app
- Directive reading + review
- You provide
- URL and indexing goal
- Allow for
- Reading and confirmation
Understand
Your intention. The right directives.
Spot directives that contradict your goal for Google.
According to Google
Robots instructions in HTML or headers can only be read and followed if the crawler can access the page.
Check
In the source. Then in the rendering.
In TSEP Control
Three findings: source, access and rendering. Real HTTP/source reading; missing rendering and access review still need evidence. No proof of indexing.
Your contribution
A URL and a goal: allow indexing or exclude the page.
With your own tools
Read X-Robots-Tag headers, HTML robots tags and their state after rendering. In Search Console, distinguish the live test from the indexed version.
What this result covers
The reading covers one URL and the received HTTP response. It proves neither the response received by Googlebot, nor content after JavaScript, nor actual indexing. Without access or rendering evidence, those points remain unverified.
Act
The directives. In the right direction.
Fix the conflicting directive in HTML or HTTP headers, then check access and rendering.
Recheck
Read the page again. Then follow Google.
Repeat the workflow with the same scope after correction. Date the new observation and retain earlier evidence.
To go further.
Statuses, sources and method.
Understand the statusesC · NC · NT · NA
The same legend in guides, analysis and demo. Each status depends on the control’s evidence and rules.
- C · Verified
- The criterion is met within the assessed scope. Keep dated evidence for the next comparison.
- NC · To correct
- Fix the conflicting directive in HTML or HTTP headers, then check access and rendering.
- NT · Not established
- Evidence or confirmations are insufficient to conclude. Supply what is missing; this status does not establish an SEO error.
- NA · Not applicable
- The control does not apply to the scope under its rules, with a retained justification. Missing evidence alone does not make it non-applicable.
Sources and references4 references
Detailed method and rules3 rules
Control method and criteria
Method
Review final headers, source HTML, access and required rendered states under A01–A03.
Acceptance criteria
Effective target-bot directives in final headers and HTML match that objective; unknown directives and any necessary rendered states are reviewed.
Non-applicability
No resource subject to an indexing policy in scope.
Detailed rules
TS07-A01 · Effective directives and objective
Protocol assessment mode : assisted, with supplied evidence and declarations. App availability is shown on the control card.
Scope
Each document with a declared indexing objective, for an explicitly named crawler and context.
Evidence
Raw repeated headers, source HTML, token/crawler/effect table and dated technical reference. For non-HTML, the html-kind record documents why this surface does not apply, with Content-Type, without inventing HTML. This profile also retains both full meta inventories, contexts/namespaces, original tags/body-byte spans, templates, decoding, reported errors, versions and fingerprints in calculated observations linked to the report and compared during replay. The new profile additionally retains ordered HTTP/meta values, scopes, unknowns, dimension decisions and intervals in bound replayed observations.
Method
Inventory all final X-Robots-Tag headers and robots/target-crawler meta tags in source HTML, separate from redirect hops. Apply documented crawler semantics, including duplicates, scope, case, parameters and ignored rules. Optional source_reader=html-tree-directives-v1, declared before capture, constructs two complete static hypotheses without executing scripts; HTML robots/googlebot meta in head/body without foreign ancestors are combined separately with final headers. Ordinary template contents are retained but excluded from active directives. Optional prior presentation_reader=google-preview-intent-v1 compares minimum/maximum permission intervals for text, images and video under the preview-intent contract; extraction and states remain separate. The google-indexing-2026-10-v2 profile interprets standalone-page Googlebot directives. Certain exclusion remains evidence alongside unknown tokens. Dated restrictions are compared with capture time; ignored and unknown instructions are retained. Certain HTTP noindex remains interpretable even when body reading is unavailable. Access and rendering remain separate. Profile v2 requires commas between rules or separate fields/tags. A whitespace-only rule list is undocumented syntax: NT without decisive independent evidence; a certain contradiction in another field remains NC. RFC date commas inside unavailable_after are retained. Explicit v1 intent remains historical, with no implicit migration. V2 dates must be fully recognized by the bounded draft.9 migration grammar, identical across interpreters; plausible unsupported formats, suffixes or unseparated scope changes yield NT without decisive independent evidence. Even index follow stays NT: this limitation is explicit. Every two-digit RFC year is outside profile v2: NT without decisive independent evidence, even if the calendar or weekday appears to resolve the century. Only four-digit years are assessable. Negative zero offsets retain a known UTC instant. A restriction expires strictly after its date; equality does not establish expiration.
Acceptance criteria
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.
When the result remains inconclusive
Missing objective, unknown syntax/scope, partial capture or missing context: inconclusive. A documented ignored directive is recorded, not automatically treated as an error. Present but unsupported, null or inconsistent directive_crawler: inconclusive; no favorable fallback. For this profile: incomplete reading, reported error, unsupported encoding, declared open/closed shadow, template for, foreign-context robots metadata, missing content/mixed roles or near form defined by the contract, unknown directive and exceeded bound remain inconclusive. Unreadable HTML never becomes header-only agreement. The preview profile retains unqualified image defaults, max-snippet:0 video interaction, unsupported syntax and exceeded bounds as unknown under the contract’s conservative intervals. Noindex does not give a presentation pass.
Non-applicability
No atomic exemption when the control applies.
Assumptions
Intent and crawler fixed before review; do not extrapolate Google rules to another engine. For indexifembedded or unavailable_after, include the required embedding context and date. Intent retains crawler as the exact HTTP User-Agent. Optional directive_crawler, frozen before collection and limited here to googlebot, selects directive semantics only for this client representation; it does not describe a response received by Googlebot. Without this field, historical behavior requires crawler=googlebot. Absent source_reader preserves the legacy reader; null/unknown or missing Node 24 never falls back. This profile requires explicit HTTP UTF-8 HTML, consumes one initial BOM and retains unreported repairs by the pinned parser. The bilingual source-directives contract specifies assumptions/bounds without asserting HTML validity. Bounds concern a permission cap, not actual display. Selection and bounds are prior; absent reader preserves historical behavior and no scalar is automatically migrated.
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
Protocol assessment mode : assisted, with supplied evidence and declarations. App availability is shown on the control card.
Scope
Every resource for which directive effects are assessed.
Evidence
Robots capture and interpretation for URL/crawler, HTTP trace and access assumptions documented in intent.
Method
Compare effective robots policy and access conditions for the target crawler; distinguish the test client response, explicit blocking and unobserved crawler access. With explicit directive_crawler, require an explicit robots_policy whose product_token matches googlebot case-insensitively; select that group and never fall back to the browser agent group.
Acceptance criteria
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.
When the result remains inconclusive
Unavailable or ambiguous policy, unresolved challenge, missing capture: inconclusive, never NA for missing access. The new path without a matching profile remains inconclusive. Attributable HTTP 401/403 denial retains precedence.
Non-applicability
No atomic exemption when the control applies.
Assumptions
Policy is interpreted by the shared TS04 reader. A new profile is declared in intent before capture. Without robots_policy, legacy inputs retain the fixed legacy-exact-v1 profile without implicit coverage extension. The client does not authenticate as Googlebot. Intent retains crawler as the exact HTTP User-Agent. Optional directive_crawler, frozen before collection and limited here to googlebot, selects directive semantics only for this client representation; it does not describe a response received by Googlebot. Without this field, historical robots profiles retain their behavior. Optional prior google-robotstxt-fields-v2 extends the closed registry of fields outside access scope using pinned google/robotstxt sources; old profiles remain unchanged with no automatic selection.
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
Protocol assessment mode : assisted, with supplied evidence and declarations. App availability is shown on the control card.
Scope
Pages whose scripts or states can affect directives, or whose stability is not established.
Evidence
Retained headers/source HTML, prior plan, dated raw DOMs with binding digest of the HTTP trace, final URL, context, browser/version, script state, interactions, waiting conditions and errors. Reasoned comparison and limitations; no simulated engine capture. The new profile additionally retains ordered HTTP/meta values, scopes, unknowns, dimension decisions and intervals in bound replayed observations.
Method
Fix required states, interactions and waiting conditions before capture. Compare final headers and source HTML with each DOM, declaring browser/version, enabled scripts, time, errors and context. Bind each capture to the source response and target. Do not assume the engine renders initially noindex HTML. The DOM reader is chosen before capture: structured-inventory-v2, or the fixed legacy serialization reader when the field is absent. No fallback after refusal. The complete structured inventory retains namespaces, positions, duplicates, serialization and navigation attribution records; no node is removed based on its presumed origin. The optional new source_reader affects only the A01 source prerequisite, never each DOM reader; priority for an attributable rendered contradiction remains unchanged. Optional prior presentation_reader=google-preview-intent-v1 compares minimum/maximum permission intervals for text, images and video under the preview-intent contract; extraction and states remain separate.
Acceptance criteria
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.
When the result remains inconclusive
Missing required plan/capture, truncated state, script error, inconsistent source/target/context binding, invalid chronology, uninterpretable directive or late removal of initial noindex: inconclusive without an inferred pass. An established contradiction in another attributable state remains fail. For the structured reader: incomplete tree/transport, loading document, known API alteration, missing integrity history, separate source/DOM acquisition without same-navigation attribution or a different agent: inconclusive. A digest alone does not prove navigation. Present but unsupported, null or inconsistent directive_crawler: inconclusive; no favorable fallback. The preview profile retains unqualified image defaults, max-snippet:0 video interaction, unsupported syntax and exceeded bounds as unknown under the contract’s conservative intervals. Noindex does not give a presentation pass.
Non-applicability
Non-HTML or directive stability demonstrated by documented review; intent evidence references this justification and supporting records. No unsupported “no JS” assertion.
Assumptions
Required states are listed before the test; local and engine rendering remain distinct. The structured reader interprets HTML meta children directly in the real document head; ambiguous placement or shadow remains inconclusive. It retains combination with the declared navigation headers. Intent retains crawler as the exact HTTP User-Agent. Optional directive_crawler, frozen before collection and limited here to googlebot, selects directive semantics only for this client representation; it does not describe a response received by Googlebot. Without this field, historical behavior requires crawler=googlebot. Bounds concern a permission cap, not actual display. Selection and bounds are prior; absent reader preserves historical behavior and no scalar is automatically migrated.
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.
Rule version 0.3.0-draft.9 · Public protocol reference · Versioned source
Put it into practice
← Back to controls