Trace a Supplied Focus Graph to Exits, Closed Cycles or an Honest Limit — Free
A long Tab path and a closed Tab cycle are different facts. Trace the next-focus relation you actually observed, then distinguish loop members, feeders, exits and uncompleted inspection.
The proof surface
Counting Tab steps does not trace a supplied deterministic focus-successor graph to a visible exit or expose closed cycles and feeder nodes.
InputElement code | next Tab element code or EXIT; maximum transitions per starting element
Rare deviceCounting Tab steps does not trace a supplied deterministic focus-successor graph to a visible exit or expose closed cycles and feeder nodes.
Output artifactStarting elements leading to a proven modeled cycle plus complete labeled working
Cost$0 local core · no account, card, paid key or subscription · filing proposal has no checkout
Sample, not your facts: Invented records: Start control | Name field; Name field | Save action; Save action | EXIT. Maximum transitions per starting element = 100; expected Starting elements leading to a proven modeled cycle: 0 elements with proven modeled cycles. These are not quotations, verified observations or personal evidence.
Before using the successor-cycle trace docket
Enter a deterministic next-Tab relation for one explicit interface state. Every non-EXIT successor must have a row, and each element code appears once. The tool does not crawl DOM, press keys, inspect tabindex, simulate assistive technology or infer hidden exits. EXIT means a departure you observed and chose to represent, not guaranteed page escape. Codes are matched case-insensitively; EXIT is reserved and cannot name an element. Real focus behavior can depend on direction, modal state, scripting and other keys. Use this graph as an organizational aid for a human keyboard test, not a standalone WCAG finding or a safety verdict.
Why the flat version breaks
A feeder is omitted from the affected-start count
A control outside the loop can still lead into it with no modeled exit. Counting only cycle members understates the starting positions affected by the supplied relation. This docket labels both member and feeder roles, with the complete traversed path. It does not equate those roles with real-world severity; actual alternative keys may change the interpretation.
An inspection limit becomes proof of a trap
A path can be longer than the chosen budget and still exit. The app reports trace-limit unknown when it has not seen a repeat or EXIT, with a partial state and an explicit next step. It neither increases the limit secretly nor labels every unresolved row a closed cycle. A bounded tool is useful only if its lack of conclusion stays visible.
One successor graph is called a full accessibility audit
Actual keyboard operability can depend on Shift-Tab, Escape, script state, shadow DOM and assistive technology. None is inferred by a single next-Tab cell. A clean model cannot certify compliance, and a loop cannot alone prove a violation. Validate with direct tests and a qualified reviewer, keeping the source graph and browser evidence distinct.
How to work the successor-cycle trace docket
Record one actual test state and successor convention
Choose a named interface state in your source notes, such as the dialog open, rather than mixing relations from before and after a change. Supply neutral element codes and the observed next-Tab destination or EXIT. Do not use a missing row as an implied exit. The parser rejects dangling successors and duplicate codes, because a closed model cannot support trace conclusions while silently omitting a branch.
Set a bounded trace budget
Enter one through 200 maximum transitions per starting element. The graph can contain up to 200 nodes. This setting is an inspection budget, not a recommended number of keypresses. If you choose fewer transitions than a path needs, the tool labels the unresolved start as trace-limit unknown. It does not interpret effort, frustration or accessibility compliance from the count. Preserve the source state and other observed key routes outside this single-successor model.
Trace with visited-position detection
Start at each element, remember where every visited code appeared and follow successors. EXIT completes the path. Revisiting a code proves a cycle in this deterministic graph; the repeated portion identifies cycle members while preceding nodes are feeders. Stop when the transition budget is reached if neither conclusion has been observed. The headline counts starts with a proven cycle, including feeders, while row values count traversed transitions. A limited trace is excluded from the cycle count rather than guessed.
Turn graph findings into a real keyboard review
Inspect cycle rows and their feeder paths in the actual browser state. Test reverse navigation, Escape and documented alternatives, including screen-reader interaction where relevant. An entered closed cycle is a model observation, not automatically an inaccessible keyboard trap. Ask the page owner or accessibility specialist to validate the real behavior and fixes. Copying or exporting the graph working retains the scope boundary, and the optional local summary is not a defect ticket with verified evidence.
What the successor-cycle trace docket keeps distinct
Question
Before
Check this working
A feeder is omitted from the affected-start count
A control outside the loop can still lead into it with no modeled exit. Counting only cycle members understates the starting positions affected by the supplied relation. This docket labels both member and feeder roles, with the complete traversed path. It does not equate those roles with real-world severity; actual alternative keys may change the interpretation.
Set a bounded trace budget
An inspection limit becomes proof of a trap
A path can be longer than the chosen budget and still exit. The app reports trace-limit unknown when it has not seen a repeat or EXIT, with a partial state and an explicit next step. It neither increases the limit secretly nor labels every unresolved row a closed cycle. A bounded tool is useful only if its lack of conclusion stays visible.
Trace with visited-position detection
One successor graph is called a full accessibility audit
Actual keyboard operability can depend on Shift-Tab, Escape, script state, shadow DOM and assistive technology. None is inferred by a single next-Tab cell. A clean model cannot certify compliance, and a loop cannot alone prove a violation. Validate with direct tests and a qualified reviewer, keeping the source graph and browser evidence distinct.
Turn graph findings into a real keyboard review
The successor-cycle trace docket replaces this named manual reconciliation, not source verification or the responsible human's decision.
Run it on the samples, right here
FIRST-LOAD
HYPOTHESIS / PROTOTYPE — checkout unavailable. Calculation is local. A draft is saved automatically in this browser profile when storage is available; Reset to sample clears it. Optional Pro history stores only five summaries and has its own deletion control. State links encode your inputs and can remain in browser history, clipboard or recipients’ records; share only non-sensitive rows. Optional external AI formatting leaves this device. The required site analytics beacon reports page activity; shared URLs contain encoded inputs. Do not treat an encoded URL as private. The calculator has no input-collection endpoint.
Supplied-graph trace only: no browser keyboard test, actual trap verification or WCAG compliance verdict. Verify the precise interface state and all documented key exits with the page owner or a qualified accessibility specialist before reporting a defect.
Data note: This successor-cycle trace docket calculates in the tab from Element code | next Tab element code or EXIT. No input-collection endpoint, AI request or file upload is built into it. Drafts may be saved locally; explicit input-state links and optional external formatting can disclose the records. Use non-sensitive codes and clear the draft when finished.
Go deeper: the companion app files the same reading as a clerk's docket sheet
The article demo above runs without limits. The companion app keeps a local history, exports the rows as CSV, prints the successor-cycle trace docket reading, and holds your drafts on this device — one complete free app run; the proposed $4 one-time filing layer is not for sale.
Keep the complete successor-cycle trace docket answer free; optional filing proposes its boundary-preserving print, row-and-summary CSV and five local reading summaries. The $4 one-time prototype is not for sale; another calculation remains free in the article demo.
Supplied-graph trace only: no browser keyboard test, actual trap verification or WCAG compliance verdict. Verify the precise interface state and all documented key exits with the page owner or a qualified accessibility specialist before reporting a defect.
What this is built on
Declared local method: Start at each element, remember where every visited code appeared and follow successors. EXIT completes the path. Revisiting a code proves a cycle in this deterministic graph; the repeated portion identifies cycle members while preceding nodes are feeders. Stop when the transition budget is reached if neither conclusion has been observed. The headline counts starts with a proven cycle, including feeders, while row values count traversed transitions. A limited trace is excluded from the cycle count rather than guessed.
Every sample code, measurement, date, price, fingerprint and scenario is invented. Artifact checks do not verify reader data, policies, actual files, tickets, votes or health/accessibility outcomes.
Google’s official Gemini pricing page, fetched 2026-10-01, lists AI Studio access in its Free section, limited model access and free input/output tokens. Free-tier content may be used to improve products. Optional external formatting may require an account; limits/access can change. Manual local entry needs none. Do not send sensitive records.
Before: many Tab steps and missing observations looked like the same problem. After: exits, closed cycles, feeders and trace-limit unknowns have distinct evidence in the focus graph.
Three worked readings, with different inputs
Sample A — typical inputs
Start control | Name field
Name field | Save action
Save action | EXIT
Setting: Maximum transitions per starting element = 100. Expected summary: 0 elements with proven modeled cycles.
All three supplied starting elements lead to EXIT: Start takes three transitions, Name two and Save one. There is no closed cycle in this entered graph. That does not prove the real page has no keyboard trap: Shift-Tab, Escape, other keys, dynamic states and actual browser focus behavior have not been supplied or tested by this page.
Setting: Maximum transitions per starting element = 100. Expected summary: 3 elements with proven modeled cycles.
Orchard and Birch form a closed two-element successor cycle. Harbor feeds into it, so three starting elements have a proven modeled cycle and no EXIT on this deterministic successor path. Spruce reaches EXIT in one transition. The result distinguishes a cycle member from a feeder; it does not claim that the actual interface lacks an Escape route or reverse-key path.
Sample C — boundary convention
East self-loop | East self-loop
West exit | EXIT
Setting: Maximum transitions per starting element = 100. Expected summary: 1 elements with proven modeled cycles.
East returns to itself after one transition and is a one-element closed cycle. West exits in one. A self-loop is preserved rather than dismissed as a repeated row. If the inspection limit is reached before a loop or EXIT is observed, the result is unknown/partial, not a proven cycle. Increase a justified limit or test the real interface rather than counting an incomplete trace as a trap.
Optional AI formatting, never the calculation
Manual entry completes this successor-cycle trace docket for free without signup. If available to you, the free AI Studio interface linked in the sources may format fictional or non-sensitive notes; external access may require an account. No API key or AI call is built into this tool. Free-tier content may be used to improve products. Review each cell and transcribe it to the labeled row schema; do not paste the JSON object into the row box.
Format only these fictional or non-sensitive notes for a successor-cycle trace docket. Return strict JSON shaped as {"rows": [{"label": "string", "cells": ["string"]}], "setting": "string"}. The columns are Element code | next Tab element code or EXIT; the setting is Maximum transitions per starting element. Keep all supplied strings and quantities exactly; do not calculate, infer missing entries, invent dates or add advice. If any required value is missing, return an empty rows array and ask me for it separately. I will verify every cell against my source and manually transcribe rows using vertical bars before running the local calculator.
An AI response is not executed, fetched or trusted as a result. Missing values remain questions; the strict local parser checks the rows you actually enter.