Conversation
The Compliance Engine asks why a gate that has been green for months never caught the barrier the company is being audited over. The answer is in two parts: it only ever scanned one of the four pages a customer passes through, and the fault it was meant to find is behavioural, so no amount of scanning would have reached it. Players extend scanner coverage, discover that doing so finds nothing, diagnose the silence with a virtual screen reader, repair the routing, and produce a compliance report that records what each check proved. Verification plants a fault on the payment page and requires the scan to go red, so coverage is measured rather than assumed — a suite that stays green never opened that page. Adds check_playwright_tests_detect to lib/scripts/node.sh, which asserts a tagged suite fails. Purely additive; no existing caller changes. Also removes the rewards block from the adventure index, as the adventure has no rewards. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Signed-off-by: sindurigf <sinduri.g@gmail.com>
Check 3 plants a fault in the payment page and requires the player's scan to catch it. Three ways that could go wrong: The recovery that undoes a crashed probe lived inside the branch taken only when the scan was already green, so a run killed mid-probe left the planted fault in place and then failed check 2 — for exactly the player who had widened their scan to reach that page. Recovery now runs before any check, and self-heals. The trap was armed before the backup was known good, so a short write could leave a truncated backup that the handler then moved over the original. The backup is now compared byte for byte before it is relied on, and the handler chains loader.sh's own cleanup rather than replacing it. The inverted check treated any non-zero exit as "fault caught", so Ctrl-C scored a pass and the run carried on. Only exit code 1, a real test failure, counts now; anything else reports that the check could not be measured. Also: drop the python3 dependency the prerequisite check never declared, resolve the report path against the vite server root rather than cwd, read test outcomes after retries rather than from the first attempt, ignore the probe backup, add set -e to the devcontainer scripts to match the sibling levels, and stop pointing players at a localhost URL that does not resolve in a Codespace. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Signed-off-by: sindurigf <sinduri.g@gmail.com>
A cold read of the docs and the reference page found the defect identifiable before the player ran anything, which leaves objective 2 with nothing to find. The reference table paired "the document has a title" with "route change announces the new page" as two halves of one criterion, and highlighted both. That was the sharpest statement of the lesson and also the answer, printed before any investigation. The row is now the fault class rather than this app's instance of it, and the highlight is gone. The WCAG links named the two criteria outright; they now point at the guideline and at the quick reference, so the player still has somewhere to look but has to work out which criterion their tests verify. Two smaller tells removed: the listen-panel instructions said to read what does not arrive after the marker, and the @transition hint said to watch what arrives after the address changes. Both named the conclusion. They now describe how to read the panel and leave the judgement open. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Signed-off-by: sindurigf <sinduri.g@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The Compliance Engine asks why a gate that has been green for months never caught the barrier the company is being audited over. The answer is in two parts: it only ever scanned one of the four pages a customer passes through, and the fault it was meant to find is behavioural, so no amount of scanning would have reached it.
Players extend scanner coverage, discover that doing so finds nothing, diagnose the silence with a virtual screen reader, repair the routing, and produce a compliance report that records what each check proved.
Verification plants a fault on the payment page and requires the scan to go red, so coverage is measured rather than assumed — a suite that stays green never opened that page.
Adds check_playwright_tests_detect to lib/scripts/node.sh, which asserts a tagged suite fails. Purely additive; no existing caller changes.
Also removes the rewards block from the adventure index, as the adventure has no rewards.
What does this PR do?
Closes #
Type of PR
💡 Adventure Idea
ideas/(notideas/.implemented/)🗺️ New Adventure Level
verify.shpasses when the challenge is solvedverify.shfails with helpful error messages when not solvedideas/.implemented/(first level PR only)Part of #for earlier levels,Closes #for the last one)📖 Solution Walkthrough
adventures/XX-.../docs/solutions/level.md)📝 Other