Repository navigation
CT-007: ScoutAI health pass - #206
Draft
Swissystem7 wants to merge 6 commits into
Draft
Swissystem7 wants to merge 6 commits into
Swissystem7 wants to merge 6 commits into
Conversation
csvNumber rejected a single dot thousands group followed by a decimal comma, the default number format of German/Austrian Excel. Added a regression test that fails on master. package-lock.json: npm ci (used by copilot-instructions and CI when a lockfile exists) failed with EUSAGE without it. No dependencies, so it is 11 lines. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
5 of 9 tasks
- 44px tap targets on all four pages (skip links, step buttons, sliders, checkbox/radio labels, footer and nav links) - keyboard-focusable named regions for the five scrollable boxes axe flagged - npm start: zero-dependency static server that only serves shipped files - engines field, test evidence refreshed, new test/ct010-health.test.js Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VbVqhR94E7eMGDWaB4wGGA (cherry picked from commit 98d7303)
parseMetricHash turned '#g=abc' into grit 0, so another weight dominated. Found by CT-010 (#207), which could not touch demo.js. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Owner
Author
… sideways At a 360px viewport licence.html scrolled 14px horizontally: an unbreakable data/wc2018_event_aggregates.json in a list item and the licence-layers table were wider than the card. Cards on narrow screens now wrap anywhere. Found by the CT-014 Playwright suite (/licence.html does not scroll sideways). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Adds @playwright/test as a devDependency (no runtime dependency), a playwright.config.js that serves the repo with tools/serve.js, and e2e/ specs run on desktop and a 360px mobile viewport: - first visit: Open Data layer loads, 240-player ranking, no sideways scroll - build a metric: weights, minutes threshold, share-hash link, exercise hint - search / position filter / select a player, lesson + radar comparison - 8-step course pager; synthetic BYOD layer and back to the World Cup demo - trap, licence and offer pages Every request leaving 127.0.0.1 is aborted and fails the test; page errors, console errors and 4xx responses fail the test too. npm test is unchanged; run with npm run test:e2e. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This branch has not been deployed
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.
CT-007 health pass of ScoutAI (owner: Claude Team, "Goza", ASUS Windows machine). No changes to
.github/workflows, no secrets added, no force push, PanimGuide code untouched.Before starting I checked for open PRs: there were none, and no remote branch looks like a health pass, so nothing overlaps.
Checklist: what changed
package-lock.json. Without itnpm cifailed withEUSAGE(.github/copilot-instructions.mdtells agents to runnpm ci; CI also switches tonpm cionce a lockfile exists). The project has no dependencies, so the lockfile is 11 lines.demo.jscsvNumber(BYOD CSV import): in a;-delimited file (European Excel),1.234,5(one dot thousands group plus a decimal comma, the default German/Austrian format) was rejected as not a number, while1.234.567,5worked. It now reads as1234.5.1.234on its own still stays the decimal1.234, as before. Regression test intest/byod.test.js; it fails onmaster.demo.js(load, store, score, views, hash state), how to run and test, and Windows notes.core.autocrlf=true): the suite passes on a CRLF checkout. The CSV parser andtools/pr-size.jsalready accept\r\n.npm run pr-sizeruns correctly. No path-separator problems found (the code builds no filesystem paths; pages use relative URLs)..env/.pemfiles. Nothing found.npm audit: 0 vulnerabilities (no dependencies).Verification (Windows 10, Node 24.19.0)
Not done in this pass (stopped near the 5-hour quota limit)
index.html/trap/index.htmlover a local server (console errors, BYOD upload end to end).demo.js(2,800 lines) andindex.html's inline script. I only reviewed the stats and parsing helpers (percentile,rankValues,pearson/spearman,per90, hash parsing,csvNumber).Needs a human decision
.github/copilot-instructions.mdis out of date and contradicts itself. It saysnpm testonly runs three files until PR תיקון: להריץ את כל קבצי הבדיקה, לא שלושה בשם #22 is merged.npm testis nownode --testand runs all 15 files. A second appended block says branches use thecopilot/prefix. I didn't edit it, because it's agent configuration..gitattributes. Git stores LF, but Windows checkouts get CRLF fromautocrlf. Adding* text=auto eol=lfwould make every machine the same. It's a repo-wide setting, so I left it to you.master):identifyPlayerPanimindemo.jsgives each player "facial traits" (forehead, eyes, nose, chin, complexion). They are chosen by a hash of name + team, or taken frompanimTraitsin a user file. They become a score, andscoreWithPanim/panimWeight(pw=in the URL) can raise the ranking with it. This contradicts the README integrity section (every number traceable to a field in the active file) and thetrap/page, which teaches that face analysis is not a metric (its test is titled "never scores faces"). A complexion term in a player rating is also a discrimination and legal risk. Tests pass, but the integrity banners are no longer true whenpw> 0. I was told not to touch PanimGuide, so I changed nothing. Please decide whether to revert or gate feat(scout): add PanimGuide player trait identification and prospect stat boost #205.1.234in a;file stays the decimal 1.234. That's deliberate in the existing tests, but a German export of 1,234 minutes written as1.234would load as about 1 minute. Should a lone dot group in aminutescolumn be flagged?CT-014: E2E tests
Commits:
f32f433(fix),730ff23(tests).What was added:
@playwright/testas a devDependency (no runtime dependency, so theno runtime dependenciestest still passes;package-lock.jsonupdated withnpm install),playwright.config.js, specs ine2e/, and the scriptnpm run test:e2e.npm testis stillnode --testand does not load the specs (*.spec.jsundere2e/, which thenode --testdefault globs skip)..github/workflowsis untouched.How to run:
The config serves the repo with the existing zero-dependency
tools/serve.js(port 4173, or setE2E_PORT). Every test runs twice:desktop(Desktop Chrome) andmobile-360(360×740, touch).Flows covered (18 tests × 2 viewports = 36):
#g=…share hash, and Reset restores 40/30/30. Raising the minutes threshold shrinks the ranking. A shared hash link restores the sliders and the position toggle. The guided-exercise hint applies 70/20/10 with normalisation.sel=in the hash and the radar compare/clear (cmp=).<form>, and none of them scroll sideways at 360px.Determinism: a shared fixture (
e2e/fixtures.js) aborts every request that is not to127.0.0.1. It also fails the test on any such request, any uncaught page error, any console error, or any 4xx/5xx response. The only exception is the browser's own/favicon.icorequest, which 404s because the site ships no favicon. Assertions use roles, accessible names, ids and visible text, not CSS.Results (Windows, Node 24, Chromium from Playwright 1.64.1): unit tests 156/156 pass before and after. E2E 36/36 pass, three runs in a row (one with
CI=1).Real bug found and fixed (minimal): at 360px,
licence.htmlscrolled 14px sideways. An unbreakabledata/wc2018_event_aggregates.jsonin a list item and the licence-layers table were wider than the card. The fix adds one rule in the existing@media(max-width:650px)block:.card{overflow-wrap:anywhere}. Nothing changes on desktop.Safe-choice decisions for Aviran:
pw=) is deliberately not exercised by the E2E suite (I was told not to touch PanimGuide; see the open decision above).npm ciinvalidate.ymlnow also installs@playwright/test(no browsers are downloaded), but the E2E suite does not run in CI. Adding a CI job means editing.github/workflows, which I left to you.ARCHITECTURE.mdno longer saysnpm ci"installs nothing". It now says it installs only the dev tool.🤖 Generated with Claude Code