This version has breaking changes — APIs, conventions, and file structure may all differ from your training data. Read the relevant guide in node_modules/next/dist/docs/ before writing any code. Heed deprecation notices.
warpchart publishes numbers about other people's projects. A wrong number that
looks right is the worst bug it can ship, and it never throws. Read
docs/INVARIANTS.md before touching anything that
produces or displays a number.
Answer these six in the PR (or the commit message) before writing code:
- What decision does the reader make with it? ("Where do I start?" is answered by free issues, never by labeled ones.)
- What does it count, exactly? A sample or the total? Labeled or available?
- What event dates it? The data, or the attempt to fetch it?
- How does it fail?
null/ "unmeasured", never0and never the total. - Where does the user see it? Which surface, which cache layer, which key to bump.
- How will you verify it in a way you cannot fool yourself?
npm test,npx eslint .andnpx tsc --noEmitpass. CI runs the same, plus the build.- After the deploy:
npm run verify:deploy -- --url=/the/page --expect="the literal text" --wait=15. Paste itsVERIFICADO:line. A green workflow or a finished deploy is not evidence. - Every production deploy triggers
smoke.yml: the real pages in WebKit (iPhone, both themes, and desktop), checking broken images, horizontal scroll and AA contrast. Run it locally withnpx playwright test(e2e/selftest.spec.tsproves the sensors still catch a broken page).
- One test per incident, built from the real payload that caused it (an empty
edgeslist, a 200 carryingerrors, a 403 with quota left…). - A new regression test must fail against the code before the fix. A test that has never been red proves nothing.
- Existing lint violations are frozen in
eslint-suppressions.json. Fix one, and the file shrinks withnpx eslint . --prune-suppressions. Never add to it by hand.