cora-mcp-verify
verify_fix’s result: the verdict on a fix of one issue, from a rescan of the issue’s page in the browser and viewport it was found in. It gives the element’s accessibility-tree entries the verdict compared, the attempts at the issue so far and what to do next. The call records the attempt in the issue’s remediation loop, and the rescan as a run of its own.
Each version lists its fields, then a section for each object they hold, headed by its path, in which [] stands for each entry of a list. Where objects of several kinds share a path, each kind has a section, named by the field that tells them apart. A field marked required is in every object of its kind, and the description of any other says when it is absent.
Version 1
Section titled “Version 1”The version this release writes. Its JSON Schema is schemas/cora-mcp-verify/v1.json in the @vispero/cora package and at https://cora.vispero.com/docs/0.10/schemas/cora-mcp-verify/v1.json.
format(“cora-mcp-verify”, required): The result’s format, alwayscora-mcp-verify.version(1, required): The version of cora-mcp’s tool surface, which every result and error of its tools declares.issue(string, required): The issue’s ID, as the call named it, which may be any ID the issue’s loop has held.verdict(“fixed”, “still-failing”, “suppressed” or “inconclusive”, required): The verdict on the fix:fixedwhen the rescan covered the rule where the element is and no longer finds the issue there, and the element is still exposed to assistive technology, or only pruned by the browser as a node of no interest;still-failingwhen the rescan still finds it, underlistedAs;suppressedwhen the fix hid the element from assistive technology rather than fixing it, such as witharia-hidden,display: noneor an emptyalt; orinconclusivewhen the rescan cannot judge the fix, withreasonsaying why. Afixedverdict means the rule no longer finds the issue, not that the element is accessible.reason(object): Why the rescan cannot judge the fix, as a code and a sentence, the sentence cut short, ending with…, when it is long; present exactly whenverdictisinconclusive.listedAs(string): The ID the rescan lists the issue under, whichexplain_findingtakes with the rescan’srun; present exactly whenverdictisstill-failing. It differs fromissuewhen the fix changed what the ID is computed from, such as the element’s opening tag on an app built with CORA’s source stamps or Angular’s source locations.report(true):truewhenverdictisstill-failingandcora scan’s report of the rescan lists the issue, underlistedAs, as report-only: its violations are of rules the project’s rule selection sets toreporton their page, beside any in a page state an agent reached, so its findings are shown but never fail CI’s gate and are never baselined. Absent otherwise, as on an issue still found that needs review, and for every other verdict, since the rescan then finds no issue.accepted(true):truewhenverdictisstill-failingand the project’s baseline accepts the issue as the rescan lists it, underlistedAs, ascora scancounts it, so CI’s gate does not fail on it. Absent otherwise, as on a page state an agent reached, which no gate compares with a baseline.unsettled(object): The settle timeout that passed, when the rescan’s page did not settle before it was scanned, so the verdict may judge a page still changing; absent when the page settled.before(object, required): The element’s entry in the browser’s accessibility tree when the issue’s loop started, as the scan that started it read the element, or why it has none. Its texts from the page are cut short, ending with…, when they are long, and its states, or an excluded entry’s reasons, are kept in order while the list has room, each cut short too.after(object, required): The element’s entry in the rescan’s accessibility tree, or why it has none, cut asbeforeis. The rescan finds the element by the path and selector the loop recorded or, on an app built with CORA’s source stamps or Angular’s source locations, when they lead to no element, by the one element whose stamp or location starts where its opening tag did.attempts(integer, required): How many attempts at the issue its loop has recorded, this one included.next(“continue”, “done” or “escalate”, required): What to do next, by the loop’s policy:continuefixing the issue,doneonce this attempt fixed it, orescalateit to a person once the attempts its loop allows have not fixed it.run(string, required): The ID of the rescan’s run, whichexplain_findingtakes: its start time and eight random characters, such as20261005T221403123Z-k3j9x2ab.file(string, required): The rescan’s run file, acora-resultsfile in the state directory’sruns/(.cora/runs/by default): its path relative to the project root when it is inside the project, and absolute otherwise.
reason
Section titled “reason”code(“not-covered”, “evidence-unavailable”, “element-missing” or “unclear-exclusion”, required): Why, as a code:not-coveredwhen the rescan did not run the issue’s rule where its element is, on its page in its browser and viewport, or ran it there only in part;evidence-unavailablewhen an accessibility entry the verdict needs could not be read, or the rescan finds the rule on an element it cannot tell apart from the one the loop follows;element-missingwhen the element the loop follows is not on the page at its path and selector, and its source stamp, where its opening tag has one, leads to no single element; andunclear-exclusionwhen the browser leaves the element out of its accessibility tree for a reason that shows neither a fix nor a hidden element, such as a modal dialog open over it.detail(string, required): The reason in a sentence, such as the rule the rescan did not run and the page it did not run it on.
unsettled
Section titled “unsettled”timeout(integer, required): The settle timeout that passed before the page settled, in milliseconds: the config’spage.settle.timeoutfor the page.
before where status is “missing”
Section titled “before where status is “missing””Also at: after
status(“missing”, required): What became of the element’s entry:missingwhen its reference leads to no single element,excludedwhen the browser leaves the element out of the tree,includedwhen the tree holds it, andunavailablewhen the entry could not be read.
before where status is “excluded”
Section titled “before where status is “excluded””Also at: after
status(“excluded”, required): What became of the element’s entry:missingwhen its reference leads to no single element,excludedwhen the browser leaves the element out of the tree,includedwhen the tree holds it, andunavailablewhen the entry could not be read.reasons(array of strings, required): The browser’s names for why it leaves the element out, at least one, such asnotRenderedorariaHiddenElement. An open set, which differs between browser versions.
before where status is “included”
Section titled “before where status is “included””Also at: after
status(“included”, required): What became of the element’s entry:missingwhen its reference leads to no single element,excludedwhen the browser leaves the element out of the tree,includedwhen the tree holds it, andunavailablewhen the entry could not be read.role(string, required): The element’s role in the tree, such asbutton.name(string, required): The accessible name; empty when the element has none.description(string): The accessible description; absent when the element has none.states(object of string, number or boolean, required): Each asserted property’s value by its name, such asfocusable: true; a property that is not asserted has no key. A tristate, such ascheckedorpressed, istrue,falseormixedas a string, and a number stays a number.
before where status is “unavailable”
Section titled “before where status is “unavailable””Also at: after
status(“unavailable”, required): What became of the element’s entry:missingwhen its reference leads to no single element,excludedwhen the browser leaves the element out of the tree,includedwhen the tree holds it, andunavailablewhen the entry could not be read.reason(“facet-absent”, “failed” or “timed-out”, required): Why the entry could not be read:facet-absentwhen the browser cannot give one, as only Chromium gives accessibility entries;failedwhen reading it failed on this element; andtimed-outwhen the capture’s time ran out first.