2026-10-18T12:07:56.8872213Z ##[group]Run npm test --workspaces --if-present
2026-10-18T12:07:56.8872274Z [36;1mnpm test --workspaces --if-present[0m
2026-10-18T12:07:56.8872296Z shell: /usr/bin/bash -e {0}
2026-10-18T12:07:56.8872309Z env:
2026-10-18T12:07:56.8872328Z   CARGO_TERM_COLOR: never
2026-10-18T12:07:56.8872342Z   WRANGLER_SEND_METRICS: false
2026-10-18T12:07:56.8872355Z ##[endgroup]
2026-10-18T12:07:57.1103347Z 
2026-10-18T12:07:57.1103429Z > @g1t/docs@0.1.0 test
2026-10-18T12:07:57.1103479Z > node --test "src/diagrams/*.test.ts"
2026-10-18T12:07:57.1103496Z 
2026-10-18T12:07:57.3604658Z ✔ every diagram draws, and reads as text (7.873543ms)
2026-10-18T12:07:57.3604948Z ✔ every box is inside its diagram, and no two boxes overlap (2.15215ms)
2026-10-18T12:07:57.3604985Z ✔ every box's text fits inside it (0.444527ms)
2026-10-18T12:07:57.3605061Z ✔ an arrow to a box that does not exist is an error, not a missing line (0.586249ms)
2026-10-18T12:07:57.3857384Z ℹ tests 4
2026-10-18T12:07:57.3857705Z ℹ suites 0
2026-10-18T12:07:57.3857868Z ℹ pass 4
2026-10-18T12:07:57.3858058Z ℹ fail 0
2026-10-18T12:07:57.3860360Z ℹ cancelled 0
2026-10-18T12:07:57.3860393Z ℹ skipped 0
2026-10-18T12:07:57.3860408Z ℹ todo 0
2026-10-18T12:07:57.3860420Z ℹ duration_ms 200.724353
2026-10-18T12:07:57.3978083Z 
2026-10-18T12:07:57.3978366Z > @g1t/mobile@0.1.0 test
2026-10-18T12:07:57.3978567Z > node --test "src/lib/*.test.ts"
2026-10-18T12:07:57.3978719Z 
2026-10-18T12:07:57.6146750Z (node:1860) [MODULE_TYPELESS_PACKAGE_JSON] Warning: Module type of file:///home/runner/work/repo/apps/mobile/src/lib/board.test.ts is not specified and it doesn't parse as CommonJS.
2026-10-18T12:07:57.6146892Z Reparsing as ES module because module syntax was detected. This incurs a performance overhead.
2026-10-18T12:07:57.6147116Z To eliminate this warning, add "type": "module" to /home/runner/work/repo/apps/mobile/package.json.
2026-10-18T12:07:57.6147173Z (Use `node --trace-warnings ...` to show where the warning was created)
2026-10-18T12:07:57.6465813Z ✔ an open item nobody is on is in the backlog (1.637417ms)
2026-10-18T12:07:57.6472888Z ✔ an item someone is on, or with a draft, is in progress (0.318628ms)
2026-10-18T12:07:57.6499545Z ✔ an item with an open pull request is in review, even with someone on it (0.394782ms)
2026-10-18T12:07:57.6499639Z ✔ an item landed in some targets but not all is landing, ahead of review (0.325659ms)
2026-10-18T12:07:57.6499728Z ✔ an item closed in the last two weeks is done, and older ones are left out (0.58009ms)
2026-10-18T12:07:57.6499774Z ✔ the board puts each item in its stage once, done newest first (9.272232ms)
2026-10-18T12:07:57.6499830Z ✔ who is on an item: its assignees, then who runs a live session on it, in what (1.967211ms)
2026-10-18T12:07:57.7893684Z (node:1867) [MODULE_TYPELESS_PACKAGE_JSON] Warning: Module type of file:///home/runner/work/repo/apps/mobile/src/lib/links.test.ts is not specified and it doesn't parse as CommonJS.
2026-10-18T12:07:57.7893858Z Reparsing as ES module because module syntax was detected. This incurs a performance overhead.
2026-10-18T12:07:57.7893927Z To eliminate this warning, add "type": "module" to /home/runner/work/repo/apps/mobile/package.json.
2026-10-18T12:07:57.7893997Z (Use `node --trace-warnings ...` to show where the warning was created)
2026-10-18T12:07:57.8203719Z ✔ a g1t:// link names a site path, as on the desktop (1.813331ms)
2026-10-18T12:07:57.9670031Z ✔ an https link to the site names the same path as a g1t:// one (0.431678ms)
2026-10-18T12:07:57.9670116Z ✔ Chat's pages open the app's Chat (0.647932ms)
2026-10-18T12:07:57.9670154Z ✔ Work's pages open the app's Work (2.142775ms)
2026-10-18T12:07:57.9670199Z ✔ Work's board opens Work on its board (0.261091ms)
2026-10-18T12:07:57.9670272Z ✔ Work's sessions open Work on its Sessions, and a session its screen (0.429765ms)
2026-10-18T12:07:57.9670334Z ✔ a session opens its page, or its pull request's for g1t's agent and a recorded one (0.585008ms)
2026-10-18T12:07:57.9670387Z ✔ an old link to an issue asks g1t what its number names in its repository (0.489315ms)
2026-10-18T12:07:57.9670404Z ✔ Code's pages open the app's Code (0.429665ms)
2026-10-18T12:07:57.9670474Z ✔ #N is read where it was written, owner/name#N in that repository, workspace#N in that workspace (2.109495ms)
2026-10-18T12:07:57.9670531Z ✔ what a reference names opens its screen, and the site reads one the app cannot (0.386841ms)
2026-10-18T12:07:57.9670576Z ✔ old links to Agents, Customize and the Marketplace open Home (0.19968ms)
2026-10-18T12:07:57.9670622Z ✔ the integrations directory stays on the site (1.250106ms)
2026-10-18T12:07:57.9670671Z ✔ the app's sign-in comes back to its own screen, and the site's own pages stay on the site (0.1465ms)
2026-10-18T12:07:57.9670692Z ✔ a connect link points the app at a g1t (0.302935ms)
2026-10-18T12:07:57.9687328Z (node:1874) [MODULE_TYPELESS_PACKAGE_JSON] Warning: Module type of file:///home/runner/work/repo/apps/mobile/src/lib/new-item.test.ts is not specified and it doesn't parse as CommonJS.
2026-10-18T12:07:57.9688087Z Reparsing as ES module because module syntax was detected. This incurs a performance overhead.
2026-10-18T12:07:57.9688564Z To eliminate this warning, add "type": "module" to /home/runner/work/repo/apps/mobile/package.json.
2026-10-18T12:07:57.9688784Z (Use `node --trace-warnings ...` to show where the warning was created)
2026-10-18T12:07:57.9846031Z ✔ a new work item may land in its own workspace's repositories, each once (2.157477ms)
2026-10-18T12:07:57.9873504Z ✔ a new work item is filed from a repository of its workspace, by name or path (0.368603ms)
2026-10-18T12:07:58.0953361Z (node:1881) [MODULE_TYPELESS_PACKAGE_JSON] Warning: Module type of file:///home/runner/work/repo/apps/mobile/src/lib/server.test.ts is not specified and it doesn't parse as CommonJS.
2026-10-18T12:07:58.0953771Z Reparsing as ES module because module syntax was detected. This incurs a performance overhead.
2026-10-18T12:07:58.0953971Z To eliminate this warning, add "type": "module" to /home/runner/work/repo/apps/mobile/package.json.
2026-10-18T12:07:58.0989192Z (Use `node --trace-warnings ...` to show where the warning was created)
2026-10-18T12:07:58.1061749Z ✔ an origin is all that is kept (1.148574ms)
2026-10-18T12:07:58.1068158Z ✔ hosted g1t's API is api.g1t.sh, and a self-hosted one's is api. on its host (0.891037ms)
2026-10-18T12:07:58.1092926Z ✔ an API given by hand wins (0.276926ms)
2026-10-18T12:07:58.1136241Z ✔ sockets follow the site's scheme (0.325098ms)
2026-10-18T12:07:58.2256281Z (node:1888) [MODULE_TYPELESS_PACKAGE_JSON] Warning: Module type of file:///home/runner/work/repo/apps/mobile/src/lib/sessions.test.ts is not specified and it doesn't parse as CommonJS.
2026-10-18T12:07:58.2263362Z Reparsing as ES module because module syntax was detected. This incurs a performance overhead.
2026-10-18T12:07:58.2263948Z To eliminate this warning, add "type": "module" to /home/runner/work/repo/apps/mobile/package.json.
2026-10-18T12:07:58.2265415Z (Use `node --trace-warnings ...` to show where the warning was created)
2026-10-18T12:07:58.2507294Z ✔ subagents are a tree under their session, in the order they started (10.374877ms)
2026-10-18T12:07:58.2518884Z ✔ the files a session touched, once each (0.347371ms)
2026-10-18T12:07:58.2528621Z ✔ a session's name is its title, else its task or first prompt (0.255733ms)
2026-10-18T12:07:58.2552067Z ✔ the list's filters are the API's (0.305409ms)
2026-10-18T12:07:58.2664011Z ℹ tests 32
2026-10-18T12:07:58.2664594Z ℹ suites 0
2026-10-18T12:07:58.2665074Z ℹ pass 32
2026-10-18T12:07:58.2665375Z ℹ fail 0
2026-10-18T12:07:58.2665693Z ℹ cancelled 0
2026-10-18T12:07:58.2666105Z ℹ skipped 0
2026-10-18T12:07:58.2666508Z ℹ todo 0
2026-10-18T12:07:58.2667137Z ℹ duration_ms 813.334801
2026-10-18T12:07:58.2741993Z 
2026-10-18T12:07:58.2742210Z > @g1t/status@0.1.0 test
2026-10-18T12:07:58.2742446Z > node --experimental-transform-types --no-warnings=ExperimentalWarning --test src/*.test.ts
2026-10-18T12:07:58.2742597Z 
2026-10-18T12:07:58.4989391Z ✔ a draft at 4 bad of the last 5 checks, once (3.255064ms)
2026-10-18T12:07:58.4989558Z ✔ N of M: a good check between does not hide trouble that keeps coming (0.432019ms)
2026-10-18T12:07:58.5069309Z ✔ a blip is not an incident: three bad of five is under the line, and three good checks end the run (0.521863ms)
2026-10-18T12:07:58.5069417Z ✔ slow then failing is one run, at its worst (0.3599ms)
2026-10-18T12:07:58.5069445Z ✔ parts failing together share one draft (0.300521ms)
2026-10-18T12:07:58.5069515Z ✔ with an incident already open on the part: a line on it, no draft; recovery is noted once the run ends (0.458608ms)
2026-10-18T12:07:58.5069589Z ✔ a run that never crossed the line is not noted as a recovery (0.283635ms)
2026-10-18T12:07:58.5069638Z ✔ parts under maintenance and unmonitored parts are left alone (0.3069ms)
2026-10-18T12:07:58.5069660Z ✔ the draft says what failed (0.385889ms)
2026-10-18T12:07:58.5103256Z ✔ a run that recovered is over: the next one starts fresh, with its own start (0.479159ms)
2026-10-18T12:07:58.5149072Z ✔ a run slow for hours, raised long ago, still ends when the checks go healthy (0.518388ms)
2026-10-18T12:07:58.5149193Z ✔ during a deploy, trouble is counted but not drafted; it is drafted once it outlasts the window (0.429364ms)
2026-10-18T12:07:58.5149251Z ✔ during a deploy, an incident already open still hears about its parts (0.218708ms)
2026-10-18T12:07:58.5149302Z ✔ the deploy window: running, finished plus grace, and a start that never finished (0.496494ms)
2026-10-18T12:07:58.5149352Z ✔ deploys that overlap are one window, finished when the last one is (0.345959ms)
2026-10-18T12:07:58.5149413Z ✔ a detected draft that recovers and stays healthy is dismissed; trouble in between starts the wait again (0.608673ms)
2026-10-18T12:07:58.5149460Z ✔ a draft nobody acknowledges is raised again after 45 minutes, once, then every 6 hours (0.497687ms)
2026-10-18T12:07:58.5215799Z ✔ slow and down are said apart, with the run's own start (0.590777ms)
2026-10-18T12:07:58.8337796Z ✔ the 6 Oct draft: a slow run at 03:13 that recovered does not leak into the one at 07:25 (9.885313ms)
2026-10-18T12:07:58.9912845Z ✔ a run kept before N of M (no checks, no recent) is read as all bad, and still ends (3.2923ms)
2026-10-18T12:07:58.9912971Z ✔ a run is kept while it lasts, and only the parts still failing keep one (2.546361ms)
2026-10-18T12:07:58.9913037Z ✔ the deploy window is kept between rounds (3.045439ms)
2026-10-18T12:07:58.9913138Z ✔ every check is kept for 7 days, with where it ran from, and an incident's page reads its parts' checks (13.977012ms)
2026-10-18T12:07:58.9913228Z ✔ a draft left waiting is raised again, with a line on its timeline, and forgotten once it is not waiting (4.201094ms)
2026-10-18T12:07:58.9913315Z ✔ a detected draft that recovered is dismissed after ten healthy minutes; one staff picked up is left alone (4.978219ms)
2026-10-18T12:07:59.0661731Z ✔ declaring: cleaned and checked; operational parts are left out (3.0326ms)
2026-10-18T12:07:59.0661881Z ✔ declaring is refused without what it needs (0.685278ms)
2026-10-18T12:07:59.0661950Z ✔ severities: SEV1 and SEV2 email subscribers by default (0.157977ms)
2026-10-18T12:07:59.0662041Z ✔ an update needs words when it is public; a note can be just a change (0.273119ms)
2026-10-18T12:07:59.0668698Z ✔ lifecycle: identified, then monitoring marks it mitigated, then resolved (0.953481ms)
2026-10-18T12:07:59.0682006Z ✔ lifecycle: resolving straight away marks it mitigated too; reopening clears resolved (0.386ms)
2026-10-18T12:07:59.0688422Z ✔ lifecycle: a published incident's status changes only with public words (0.302074ms)
2026-10-18T12:07:59.0725489Z ✔ lifecycle: severity and impact changes are written on the timeline (0.387071ms)
2026-10-18T12:07:59.0725595Z ✔ lifecycle: drafts take notes but nothing public; dismissed takes nothing; the first touch acknowledges (0.381543ms)
2026-10-18T12:07:59.0725648Z ✔ roles: each change is a line, and nobody is said plainly (0.362424ms)
2026-10-18T12:07:59.0725668Z ✔ durations read plainly (0.24022ms)
2026-10-18T12:07:59.0735820Z ✔ maintenance: a window in the future, under 72 hours, on known parts (0.570285ms)
2026-10-18T12:07:59.0737277Z ✔ postmortems: published only with a summary and a cause; the draft is filled from the incident (0.542294ms)
2026-10-18T12:07:59.0738537Z ✔ short ids are ten unambiguous characters (4.529757ms)
2026-10-18T12:07:59.2869251Z ✔ classify: fast is up, slow is degraded, failed is down, none is unmonitored (1.77232ms)
2026-10-18T12:07:59.2869398Z ✔ uptime rounds down, so one failure never reads as 100% (0.344157ms)
2026-10-18T12:07:59.2869484Z ✔ a day's colour: a blip stays green, a bad hour is degraded, worse is down (0.284908ms)
2026-10-18T12:07:59.2869513Z ✔ lastDays ends today, oldest first (0.670156ms)
2026-10-18T12:07:59.2869541Z ✔ an incident is on every day it was open (0.256215ms)
2026-10-18T12:07:59.2869596Z ✔ bars and 90-day uptime come from the daily tally (0.524157ms)
2026-10-18T12:07:59.2869652Z ✔ a bar marks the days an incident on its part was open (0.436755ms)
2026-10-18T12:07:59.2869708Z ✔ summarize: core down is a major outage, others partial, slow is degraded performance (0.565509ms)
2026-10-18T12:07:59.2873641Z ✔ recent incidents: open ones and those resolved in 90 days, newest first (0.338027ms)
2026-10-18T12:07:59.2874393Z ✔ buildPage: parts with no check are unmonitored and have no uptime; staleness is noticed (3.13274ms)
2026-10-18T12:07:59.2875129Z ✔ components: an installation without a host leaves that part off (0.604277ms)
2026-10-18T12:07:59.2875769Z ✔ a part's state: the worse of its check and open incidents; maintenance unless an incident says worse (0.163866ms)
2026-10-18T12:07:59.2876270Z ✔ maintenance moves with its window, and cancelled or completed stays put (0.271107ms)
2026-10-18T12:07:59.2876837Z ✔ buildPage: incident impacts and maintenance reach the parts and the banner (11.46994ms)
2026-10-18T12:07:59.2886190Z ✔ git storage is listed only with the repos service, and degraded says why (0.261071ms)
2026-10-18T12:07:59.5192723Z ✔ page loads say they are a browser, so the site streams them; the name stays on the end (38.361258ms)
2026-10-18T12:07:59.5194513Z ✔ the data centre that answered is read from cf-ray (0.964537ms)
2026-10-18T12:07:59.5197352Z ✔ a slow answer is asked again at once: one slow answer is not slow, two are (1.393681ms)
2026-10-18T12:07:59.5230305Z ✔ a step works on 2xx, or on exactly the status it expects (1.668764ms)
2026-10-18T12:07:59.5396840Z ✔ a step that cannot connect, or takes too long, fails with why (21.074981ms)
2026-10-18T12:07:59.5397158Z ✔ a check's steps: all must work, and it takes as long as the slowest (0.359379ms)
2026-10-18T12:07:59.5405685Z ✔ runCheck: billing without a binding, and a part with no check, are null (0.556906ms)
2026-10-18T12:07:59.5405804Z ✔ git storage is judged by how its calls went, and quiet is up (0.7065ms)
2026-10-18T12:07:59.7839775Z ✔ escape covers HTML's specials (1.634042ms)
2026-10-18T12:07:59.7840717Z ✔ the page: banner, every part with its bar, and no incidents (22.563025ms)
2026-10-18T12:07:59.7848627Z ✔ an outage and an open incident are said at the top, escaped (3.807052ms)
2026-10-18T12:07:59.7848818Z ✔ every page follows the system's light or dark setting, with a switch kept in this browser (4.115464ms)
2026-10-18T12:07:59.7853895Z ✔ the theme script picks the stored choice, else auto (0.707351ms)
2026-10-18T12:07:59.7862428Z ✔ a stale page says the checks stopped (0.91923ms)
2026-10-18T12:07:59.7863647Z ✔ a day's detail names what happened (0.365018ms)
2026-10-18T12:07:59.7866305Z ✔ the badge is an SVG coloured by state (0.351948ms)
2026-10-18T12:07:59.7876170Z ✔ maintenance: upcoming, then in progress with its parts under maintenance (3.584779ms)
2026-10-18T12:07:59.7880509Z ✔ an incident's page: every update, its parts' impact, and the postmortem once published (2.291298ms)
2026-10-18T12:07:59.7880563Z ✔ prose: paragraphs and lists, escaped (0.203365ms)
2026-10-18T12:07:59.7880639Z ✔ history: months newest first, empty ones said so (3.120672ms)
2026-10-18T12:07:59.7880711Z ✔ subscribe pages: the form, its parts, and a confirm button rather than a link that acts (1.397067ms)
2026-10-18T12:07:59.9923229Z ✔ addresses are trimmed, lowercased and checked (1.146871ms)
2026-10-18T12:08:00.1551206Z ✔ confirmation tokens: random, and only their hash is kept (10.470269ms)
2026-10-18T12:08:00.1551328Z ✔ unsubscribe links are signed, not stored, and refuse tampering (7.735867ms)
2026-10-18T12:08:00.1551345Z ✔ per-part subscriptions (1.464457ms)
2026-10-18T12:08:00.1551418Z ✔ letters: escaped HTML, plain text, and an unsubscribe link in every update (0.651478ms)
2026-10-18T12:08:00.1551476Z ✔ senders: the binding when there is one, none otherwise (0.457897ms)
2026-10-18T12:08:00.1551546Z ✔ feeds: every public update and maintenance notice, newest first, in Atom and JSON Feed (10.044551ms)
2026-10-18T12:08:00.2465656Z ✔ the reader's zone: their cookie, else Cloudflare's guess, else UTC (17.163813ms)
2026-10-18T12:08:00.2498805Z ✔ times carry their zone's abbreviation (3.967963ms)
2026-10-18T12:08:00.2498952Z ✔ the status page says times in the reader's zone, with UTC in datetime and on hover (2.989496ms)
2026-10-18T12:08:00.2644352Z ℹ tests 85
2026-10-18T12:08:00.2644673Z ℹ suites 0
2026-10-18T12:08:00.2644922Z ℹ pass 85
2026-10-18T12:08:00.2645061Z ℹ fail 0
2026-10-18T12:08:00.2645197Z ℹ cancelled 0
2026-10-18T12:08:00.2645344Z ℹ skipped 0
2026-10-18T12:08:00.2645480Z ℹ todo 0
2026-10-18T12:08:00.2645618Z ℹ duration_ms 1948.283682
2026-10-18T12:08:00.2749161Z 
2026-10-18T12:08:00.2749229Z > test
2026-10-18T12:08:00.2749255Z > node --test app/**/*.test.ts
2026-10-18T12:08:00.2749283Z 
2026-10-18T12:08:00.6279818Z ✔ a valid token from staff is let in, by its email (76.317409ms)
2026-10-18T12:08:00.6308206Z ✔ an audience given as a string is accepted too (4.801684ms)
2026-10-18T12:08:00.6343457Z ✔ a token for another Access application is refused (3.81232ms)
2026-10-18T12:08:00.6387101Z ✔ a token from another team is refused (3.634964ms)
2026-10-18T12:08:00.6473170Z ✔ an expired token is refused (8.749578ms)
2026-10-18T12:08:00.6500804Z ✔ a token without an expiry is refused (3.298619ms)
2026-10-18T12:08:00.6533301Z ✔ a token not valid yet is refused (2.463035ms)
2026-10-18T12:08:00.6581287Z ✔ a token signed by another key under a known key id is refused (2.624839ms)
2026-10-18T12:08:00.6581387Z ✔ a token whose claims were changed after signing is refused (2.57292ms)
2026-10-18T12:08:00.6599614Z ✔ a token signed by a key the team does not publish is refused (1.90573ms)
2026-10-18T12:08:00.6628885Z ✔ alg none and HS256 are refused before any key is fetched (2.773802ms)
2026-10-18T12:08:00.6646726Z ✔ a valid token whose email is not staff is refused (2.060742ms)
2026-10-18T12:08:00.6664127Z ✔ a token with neither an email nor a client id is refused (1.775624ms)
2026-10-18T12:08:00.6694305Z ✔ a listed service token is let in as its name at service.g1t.sh (2.044758ms)
2026-10-18T12:08:00.6741277Z ✔ a service token not listed is refused (5.502245ms)
2026-10-18T12:08:00.6789109Z ✔ a listed service token still needs a valid signature and audience (3.952811ms)
2026-10-18T12:08:00.6816601Z ✔ an email wins over a client id on the same token (2.411768ms)
2026-10-18T12:08:00.6829258Z ✔ service tokens are read as client id to name, dropping malformed entries (0.875254ms)
2026-10-18T12:08:00.6847379Z ✔ staff emails match without regard to case (2.435574ms)
2026-10-18T12:08:00.6847448Z ✔ a request without a token is refused (0.320732ms)
2026-10-18T12:08:00.6866538Z ✔ garbage is refused (0.224727ms)
2026-10-18T12:08:00.6926061Z ✔ the team's keys are fetched once and kept for a few minutes (6.188755ms)
2026-10-18T12:08:00.7051742Z ✔ when the keys cannot be fetched, nothing is let in (1.590096ms)
2026-10-18T12:08:00.7052968Z ✔ sudo is closed until every setting is given (4.37178ms)
2026-10-18T12:08:00.7053031Z ✔ changes are only taken from sudo's own pages (0.592599ms)
2026-10-18T12:08:00.7053082Z ✔ everyone at a staff domain is staff, and nobody at a lookalike (0.2003ms)
2026-10-18T12:08:00.8825768Z ✔ an alias, its workspace and why are read as identity takes them (1.728373ms)
2026-10-18T12:08:00.8871763Z ✔ a malformed alias or workspace, or no reason, is refused before identity is asked (0.316825ms)
2026-10-18T12:08:00.8872060Z ✔ removing an alias needs a reason (0.25928ms)
2026-10-18T12:08:01.0878953Z ✔ niceCeiling rounds up to 1, 2, 2.5 or 5 times a power of ten (2.580051ms)
2026-10-18T12:08:01.2406208Z ✔ ticks run from zero to the top (1.91283ms)
2026-10-18T12:08:01.2406258Z ✔ months are named (0.70675ms)
2026-10-18T12:08:01.2406272Z ✔ margin and change (0.451578ms)
2026-10-18T12:08:01.2406349Z ✔ monthBars scales both series to one axis from zero (1.228583ms)
2026-10-18T12:08:01.2406413Z ✔ a tiny month still shows, and an empty chart has an axis (0.608283ms)
2026-10-18T12:08:01.2406462Z ✔ negative figures draw nothing below the baseline (0.478568ms)
2026-10-18T12:08:01.2406508Z ✔ barPath rounds the top and keeps the foot square (2.201794ms)
2026-10-18T12:08:01.2406516Z ✔ axis labels are short (0.312209ms)
2026-10-18T12:08:01.2406537Z ✔ shares are against the largest (0.574141ms)
2026-10-18T12:08:01.2406549Z ✔ a day, briefly (0.599009ms)
2026-10-18T12:08:01.3355255Z ✔ every day of the range is there, even an empty one (7.788936ms)
2026-10-18T12:08:01.3358178Z ✔ all of g1t is money in against every cost; a product is its value against its cost (0.898238ms)
2026-10-18T12:08:01.3359443Z ✔ margins read against the floor (0.736305ms)
2026-10-18T12:08:01.3360672Z ✔ unit costs keep the places they need (0.592038ms)
2026-10-18T12:08:01.3364278Z ✔ the range and product come from the address, within bounds (0.414912ms)
2026-10-18T12:08:01.3364325Z ✔ the guardrails form is checked (45.338788ms)
2026-10-18T12:08:01.3364414Z ✔ a mapping names Cloudflare's product and meter and one of g1t's products (0.842814ms)
2026-10-18T12:08:01.3364481Z ✔ the spend bar shows only when a cap stops work (1.804107ms)
2026-10-18T12:08:01.3374626Z ✔ what g1t paid this month adds every bucket, the free tier and subscriptions (0.509574ms)
2026-10-18T12:08:01.3375106Z ✔ charged without real money is what it cost g1t, never its price (0.80607ms)
2026-10-18T12:08:01.3375411Z ✔ margins are a share of the price: cost plus 20% is 16.7% (0.334703ms)
2026-10-18T12:08:01.3375473Z ✔ who g1t paid is the statement's all-in cost, subscriptions included (0.316685ms)
2026-10-18T12:08:01.3387509Z ✔ a rate g1t sets shows no cost, and a weight is no money (0.37312ms)
2026-10-18T12:08:01.3389723Z ✔ a rise replaced before its date says so, rather than missing its date (0.256295ms)
2026-10-18T12:08:01.3392867Z ✔ the pause banner names every paused level, and who paused it when it was not a person (0.432208ms)
2026-10-18T12:08:01.3405296Z ✔ subscriptions over the range are billing's, day by day by the billing cycle (0.506711ms)
2026-10-18T12:08:01.3405393Z ✔ test-mode charges are given away, never money in (0.355423ms)
2026-10-18T12:08:01.3416740Z ✔ the billing cycle reads as Cloudflare's Billable usage page does (0.394382ms)
2026-10-18T12:08:01.3423098Z ✔ the last read of the bill says when it may be incomplete (0.544587ms)
2026-10-18T12:08:01.6978460Z ✔ the presets are $10, $20, $25, $50 and $100, each one step (8.046714ms)
2026-10-18T12:08:01.6992395Z ✔ an expiry is never, 30, 90 or 365 days, or the end of a chosen day (1.529905ms)
2026-10-18T12:08:01.7012213Z ✔ a small credit is one step; over $100 the slug is typed out (70.439229ms)
2026-10-18T12:08:01.7021971Z ✔ a credit needs a kind and a note (0.549374ms)
2026-10-18T12:08:01.7024568Z ✔ a refund says what it is for, never expires, and refunds a day that was (3.07246ms)
2026-10-18T12:08:01.7027484Z ✔ a grant reads in a line, as the Billing page says it (13.107787ms)
2026-10-18T12:08:01.7076563Z ✔ a month filter is a month (0.739599ms)
2026-10-18T12:08:01.9080981Z ✔ what went reads as one line (1.700892ms)
2026-10-18T12:08:01.9081151Z ✔ only a protected account is refused outright (0.412069ms)
2026-10-18T12:08:01.9081631Z ✔ workspaces it owns alone go with it, said up front (0.812039ms)
2026-10-18T12:08:01.9081686Z ✔ a protected workspace or billing that cannot settle stops it, naming which (0.435684ms)
2026-10-18T12:08:01.9087253Z ✔ staff confirm with the username (0.595504ms)
2026-10-18T12:08:01.9092012Z ✔ the form needs a reason, the username, and the box ticked when workspaces go too (0.291818ms)
2026-10-18T12:08:01.9098646Z ✔ workspaces deleted with the account are matched to their deletions (1.833381ms)
2026-10-18T12:08:02.0957540Z ✔ what went reads as one line (1.771979ms)
2026-10-18T12:08:02.2470540Z ✔ days left round up, and none once it is due (0.262103ms)
2026-10-18T12:08:02.2470624Z ✔ a purge is confirmed by the slug alone (0.546309ms)
2026-10-18T12:08:02.3906133Z ✔ a 100% discount keeps its budget and an end date, and names who set it (61.11612ms)
2026-10-18T12:08:02.3906313Z ✔ a discount is a preset or a custom whole percent (1.224698ms)
2026-10-18T12:08:02.3906389Z ✔ no discount and no limit is standard, which clears the end date (0.575033ms)
2026-10-18T12:08:02.3906472Z ✔ terms are refused without a note, with a bad discount, or ending in the past (1.453782ms)
2026-10-18T12:08:02.3906537Z ✔ workspace lists take commas, spaces and lines, once each (0.958058ms)
2026-10-18T12:08:02.3918239Z ✔ invoice emails are one address (0.669594ms)
2026-10-18T12:08:02.3929161Z ✔ credits are positive and capped (0.469114ms)
2026-10-18T12:08:02.3931316Z ✔ a sales record: a stage, an owner's email or nobody, a next step and its day (0.952219ms)
2026-10-18T12:08:02.3953416Z ✔ a sales note is required, and not endless (0.549725ms)
2026-10-18T12:08:02.3953524Z ✔ allowances: the plan without its price, pool shares, and staff's overrides (1.454242ms)
2026-10-18T12:08:02.3953593Z ✔ a bank transfer: an amount, its reference, a note, and the slug typed out (0.458158ms)
2026-10-18T12:08:02.3953643Z ✔ a decision: approve as asked or at another amount; decline needs a note (1.126341ms)
2026-10-18T12:08:02.3953716Z ✔ goodwill: no amount is the one-click credit; a reason when one is needed; a day not in the future (0.686921ms)
2026-10-18T12:08:02.6016157Z ✔ a page runs only sudo's own scripts, by its nonce (9.120465ms)
2026-10-18T12:08:02.6039256Z ✔ an answer that is not a page runs nothing (0.333821ms)
2026-10-18T12:08:02.6047622Z ✔ a page keeps its own policy; anything else gets the strict one (39.584243ms)
2026-10-18T12:08:02.8584713Z ✔ filters come from the address; unknown values are dropped (2.444949ms)
2026-10-18T12:08:02.8593962Z ✔ tabs: open, drafts, and resolved (dismissed drafts included) (0.461102ms)
2026-10-18T12:08:02.8609719Z ✔ maintenance: live first by start, then finished newest first (8.215877ms)
2026-10-18T12:08:02.8615639Z ✔ phase chips: draft, dismissed, postmortem, else the status (0.426981ms)
2026-10-18T12:08:02.8621668Z ✔ durations, medians and UTC times (9.298973ms)
2026-10-18T12:08:02.8627676Z ✔ forms: impacts per part, notify by severity, next status, staff suggestions (29.210147ms)
2026-10-18T12:08:02.8651555Z ✔ the status page's audit lines join the Audit log and link to their pages (0.59276ms)
2026-10-18T12:08:02.8652729Z ✔ the postmortem preview reads text as the status page does (0.573501ms)
2026-10-18T12:08:02.9830045Z ✔ the page has one address, with its search and tab (0.909845ms)
2026-10-18T12:08:02.9842373Z ✔ revoking and granting say so, and nothing else is flashed (0.176285ms)
2026-10-18T12:08:02.9856634Z ✔ an account made with a shared link says where it came from (0.22612ms)
2026-10-18T12:08:02.9857364Z ✔ a grant names a person, a whole number of invites and why (0.968884ms)
2026-10-18T12:08:03.1333338Z ✔ the chart: answered checks as a line, broken by failures and gaps; slow ones dotted; the slow line drawn (2.794694ms)
2026-10-18T12:08:03.2771767Z ✔ the chart's scale leaves room over the slow line when every check was fast (0.296455ms)
2026-10-18T12:08:03.2771833Z ✔ the summary over the chart (6.140624ms)
2026-10-18T12:08:03.2771860Z ✔ invoice filters are checked (1.081552ms)
2026-10-18T12:08:03.2771955Z ✔ totals: void counts for nothing; open, overdue and failed are outstanding (0.84634ms)
2026-10-18T12:08:03.2771990Z ✔ links keep only the filters that are set (0.27353ms)
2026-10-18T12:08:03.2772017Z ✔ only https links are followed (0.162234ms)
2026-10-18T12:08:03.2772079Z ✔ account ids link to their pages; anything else does not (0.389073ms)
2026-10-18T12:08:03.2772123Z ✔ accounts are named by slug, or the enterprise's name when known (0.150476ms)
2026-10-18T12:08:03.2772140Z ✔ actions read plainly, known or not (0.22675ms)
2026-10-18T12:08:03.2772182Z ✔ an older page only when this one was full (1.392539ms)
2026-10-18T12:08:03.2772191Z ✔ audit filters are checked (0.435723ms)
2026-10-18T12:08:03.4117417Z ✔ dollars read to the cent, and small amounts keep their fractions (1.745829ms)
2026-10-18T12:08:03.4129841Z ✔ typed amounts become micros exactly (0.531468ms)
2026-10-18T12:08:03.5558921Z ✔ the sidebar: two top-level links, then sections that fold (2.220532ms)
2026-10-18T12:08:03.5565696Z ✔ no section holds a single page, and every section has an icon (0.31346ms)
2026-10-18T12:08:03.5573062Z ✔ the section holding the current page is the one drawn open (0.787592ms)
2026-10-18T12:08:03.5588991Z ✔ every item has its own path, a label and a line about it (0.47384ms)
2026-10-18T12:08:03.5589287Z ✔ the built pages are not marked soon (0.345198ms)
2026-10-18T12:08:03.5589547Z ✔ every soon page says what it will do, why, and what it will have (1.6059ms)
2026-10-18T12:08:03.5589789Z ✔ view as customer promises an audit and a time limit (0.252349ms)
2026-10-18T12:08:03.5590028Z ✔ soonFor finds a placeholder by its path, and nothing else (0.165768ms)
2026-10-18T12:08:03.5596142Z ✔ isCurrent: an item stays lit on the pages beneath it; / only on itself (0.285919ms)
2026-10-18T12:08:03.5602262Z ✔ open incidents show beside Incidents, and nothing waits beside Invites (0.557737ms)
2026-10-18T12:08:03.7171457Z ✔ the request filter is open unless another status is named (1.523576ms)
2026-10-18T12:08:03.7180340Z ✔ an answer is due one business day after the request (0.640752ms)
2026-10-18T12:08:03.7188470Z ✔ how long a request has waited, and whether it is overdue (1.263796ms)
2026-10-18T12:08:03.7225738Z ✔ a workspace's age in its largest whole unit (0.351788ms)
2026-10-18T12:08:03.7226512Z ✔ goodwill: g1t absorbs only what is past its margin (0.270906ms)
2026-10-18T12:08:03.7226794Z ✔ goodwill needs a reason past the one-click credit, or a second time in 12 months (0.66692ms)
2026-10-18T12:08:03.7227198Z ✔ velocity: five times the usual hour is fast (1.80003ms)
2026-10-18T12:08:03.7227599Z ✔ margin counts the plan's price and never what g1t gave (0.332659ms)
2026-10-18T12:08:03.7265037Z ✔ given: labelled by source, totalled at price and at cost (0.47327ms)
2026-10-18T12:08:03.7269025Z ✔ margin on what was sold leaves out the cost of what g1t gave (0.845538ms)
2026-10-18T12:08:03.7269371Z ✔ the month by the Costs model: given is cost already, and the margin is on what was sold (0.3535ms)
2026-10-18T12:08:03.8952468Z ✔ most urgent first: by kind, then the larger figure, else as billing sent them (2.214833ms)
2026-10-18T12:08:03.8952575Z ✔ sorting leaves the input alone (0.330306ms)
2026-10-18T12:08:03.8977554Z ✔ filter by kind, and by whose they are (0.488062ms)
2026-10-18T12:08:03.8977613Z ✔ counts by kind (0.24684ms)
2026-10-18T12:08:03.8977650Z ✔ query values are checked (0.255513ms)
2026-10-18T12:08:03.8977816Z ✔ links into the queue leave out the defaults (0.349505ms)
2026-10-18T12:08:03.8978351Z ✔ names for kinds and stages, and for ones sudo does not know (0.287211ms)
2026-10-18T12:08:03.8978430Z ✔ follow-ups due: today or earlier, open deals only, one per workspace, oldest first (9.658071ms)
2026-10-18T12:08:04.0461363Z ✔ a suspension's hold is known as one, so lifting it lifts the hold (0.880441ms)
2026-10-18T12:08:04.0475120Z ✔ a reason is required, and kept short (0.951398ms)
2026-10-18T12:08:04.1767495Z ✔ terms read as a discount; comped from before discounts is 100% (1.516155ms)
2026-10-18T12:08:04.3797659Z ✔ the exclusion list reads commas, spaces and case alike, once each (1.860983ms)
2026-10-18T12:08:04.3797791Z ✔ a detach says each change it makes, and nothing when there is none (0.943906ms)
2026-10-18T12:08:04.3797895Z ✔ a detach says what metered usage, included usage and test disputes it let go (0.230035ms)
2026-10-18T12:08:04.4781506Z ✔ the theme: the cookie's choice, else Auto; Light and Dark on <html>, Auto nothing (1.444587ms)
2026-10-18T12:08:04.7457176Z ✔ the zone: the staff member's choice, else Cloudflare's guess, else UTC (22.111897ms)
2026-10-18T12:08:04.7473259Z ✔ a time on a page: in the zone, with its abbreviation; UTC on hover (3.786832ms)
2026-10-18T12:08:04.7509452Z ✔ form times are read and shown in the zone (8.873995ms)
2026-10-18T12:08:04.7512978Z ✔ how long ago, briefly (0.609674ms)
2026-10-18T12:08:04.9161024Z ✔ every workspace is listed, with or without billing (1.902695ms)
2026-10-18T12:08:04.9169952Z ✔ a workspace on an enterprise shows the enterprise and only its own share (0.32658ms)
2026-10-18T12:08:04.9205255Z ✔ a page lists only its own workspaces, not the rest of an enterprise (0.240221ms)
2026-10-18T12:08:04.9234153Z ✔ pages stay within the list (0.314603ms)
2026-10-18T12:08:04.9234592Z ✔ old account links go to the workspace or the enterprise (0.351277ms)
2026-10-18T12:08:04.9360150Z ℹ tests 163
2026-10-18T12:08:04.9360739Z ℹ suites 0
2026-10-18T12:08:04.9360927Z ℹ pass 163
2026-10-18T12:08:04.9361107Z ℹ fail 0
2026-10-18T12:08:04.9361343Z ℹ cancelled 0
2026-10-18T12:08:04.9361521Z ℹ skipped 0
2026-10-18T12:08:04.9362137Z ℹ todo 0
2026-10-18T12:08:04.9362153Z ℹ duration_ms 4621.293764
2026-10-18T12:08:04.9464473Z 
2026-10-18T12:08:04.9464542Z > test
2026-10-18T12:08:04.9464567Z > node --test app/**/*.test.ts
2026-10-18T12:08:04.9464772Z 
2026-10-18T12:08:05.3470743Z ✔ a license is named by its SPDX id, or not at all (1.138849ms)
2026-10-18T12:08:05.3471322Z ✔ counts read as words (0.414051ms)
2026-10-18T12:08:05.3471417Z ✔ every language down to a tenth of a percent is listed, at most eight; the rest are Other (1.170456ms)
2026-10-18T12:08:05.3471445Z ✔ weeks line up with the repository's (0.293951ms)
2026-10-18T12:08:05.3471511Z ✔ pushes, tags, merges and renames are activity (0.462323ms)
2026-10-18T12:08:05.3471582Z ✔ a deleted branch is activity with the commit that restores it; a deleted tag is not (0.291808ms)
2026-10-18T12:08:05.3471651Z ✔ activity is about a branch when it pushed, deleted, renamed or merged into it (0.371938ms)
2026-10-18T12:08:05.3672362Z ✔ a token made for one workspace reads its reach, repositories and permissions (2.753802ms)
2026-10-18T12:08:05.3677943Z ✔ a token reaches every workspace, or none, and may never expire (0.344567ms)
2026-10-18T12:08:05.3692762Z ✔ a workspace's own token holds nothing about a person, and reaches all or selected repositories (0.351787ms)
2026-10-18T12:08:05.3694771Z ✔ editing reads neither the expiry nor needs a name (0.19299ms)
2026-10-18T12:08:05.3696071Z ✔ mistakes are named (0.402774ms)
2026-10-18T12:08:05.3696762Z ✔ permissions are scopes read per resource (0.647632ms)
2026-10-18T12:08:05.3698797Z ✔ lifetimes follow the rules of every workspace a token reaches (0.458718ms)
2026-10-18T12:08:05.3703785Z ✔ lists read a token in a line (0.756905ms)
2026-10-18T12:08:05.3705329Z ✔ old addresses of the token settings go to the current pages (2.537747ms)
2026-10-18T12:08:05.3707601Z ✔ saving a token sends only what changed (0.996024ms)
2026-10-18T12:08:05.3710838Z ✔ using the website is off unless checked, and never on a workspace's token (0.383045ms)
2026-10-18T12:08:05.4911112Z ✔ the dialog lists only what the account has (1.571357ms)
2026-10-18T12:08:05.4911986Z ✔ owning a workspace alone stands in the way, and names it (0.322384ms)
2026-10-18T12:08:05.4921072Z ✔ a protected account says so first (0.174331ms)
2026-10-18T12:08:05.4950130Z ✔ only the username itself confirms (0.267972ms)
2026-10-18T12:08:05.6309590Z ✔ every anchor of the old settings page lands on its own page (1.0665ms)
2026-10-18T12:08:05.6335032Z ✔ a settings path names its page (0.385228ms)
2026-10-18T12:08:05.8410606Z ✔ with no settings, the addresses are g1t.sh's (2.045039ms)
2026-10-18T12:08:05.8420600Z ✔ settings replace the addresses, without trailing slashes (0.354321ms)
2026-10-18T12:08:05.8432148Z ✔ files people supply are served from an origin of their own (0.321833ms)
2026-10-18T12:08:05.8474292Z ✔ pages without root data use g1t.sh's addresses (0.210015ms)
2026-10-18T12:08:05.8474420Z ✔ the defaults kept in meta and agent setup are g1t.sh's (0.191457ms)
2026-10-18T12:08:05.8474452Z ✔ a clone address is under the site (0.230636ms)
2026-10-18T12:08:06.0116005Z ✔ an advisory form is checked and cleaned (32.871121ms)
2026-10-18T12:08:06.0131322Z ✔ a report needs a title and a description, and an email when signed out (0.501612ms)
2026-10-18T12:08:06.0133643Z ✔ states and severities parse only to what is known (0.384988ms)
2026-10-18T12:08:06.2039728Z ✔ developer discovery aliases point at the installation's machine endpoints (1.174742ms)
2026-10-18T12:08:06.3681576Z ✔ negotiation honors explicit types, quality, specificity, exclusions and browser defaults (0.855994ms)
2026-10-18T12:08:06.3681723Z ✔ homepage and genuine 404 documents have Markdown with the right status, discovery links and Vary (39.003242ms)
2026-10-18T12:08:06.3681796Z ✔ HEAD, unsupported types, private refusals and writes preserve protocol boundaries (1.733401ms)
2026-10-18T12:08:06.3681822Z ✔ a choice is remembered and read back (1.12644ms)
2026-10-18T12:08:06.3681883Z ✔ no choice, an unknown one, or storage that throws falls back to the default (0.329435ms)
2026-10-18T12:08:06.3682864Z ✔ every toggle on the page follows the last choice (0.297617ms)
2026-10-18T12:08:06.3682909Z ✔ parseAgent accepts only known agents (0.130546ms)
2026-10-18T12:08:06.3682940Z ✔ every snippet points at the MCP server (1.396115ms)
2026-10-18T12:08:06.3683000Z ✔ the snippets can point at another MCP server (0.330666ms)
2026-10-18T12:08:06.3683073Z ✔ the first configured provider supplies the default without reordering (0.294361ms)
2026-10-18T12:08:06.3683145Z ✔ explicit choices beat provider defaults, and defaults are not saved as choices (0.200832ms)
2026-10-18T12:08:06.3683204Z ✔ chat clients have distinct setup instructions and LibreChat uses per-user OAuth (0.269434ms)
2026-10-18T12:08:06.4835880Z ✔ every AI provider is shown, once, in a group (1.810757ms)
2026-10-18T12:08:06.4841947Z ✔ AI providers are the workspace's AI settings, not integrations (0.336004ms)
2026-10-18T12:08:06.4849101Z ✔ older links to the AI providers' page open the AI page (0.29939ms)
2026-10-18T12:08:06.5978352Z ✔ visitors from the EU, EEA, UK and Switzerland are asked first (0.851707ms)
2026-10-18T12:08:06.6003088Z ✔ others are not, nor is a visitor whose country is unknown (0.162914ms)
2026-10-18T12:08:06.6010139Z ✔ on the server nothing is chosen or required (0.174833ms)
2026-10-18T12:08:06.7299921Z ✔ the front door is sent as it is (1.35945ms)
2026-10-18T12:08:06.7309686Z ✔ names in other addresses are replaced, and g1t's own words kept (0.306711ms)
2026-10-18T12:08:06.7340273Z ✔ a URL on the site keeps only campaign parameters; another site's is left alone (0.427401ms)
2026-10-18T12:08:06.7340417Z ✔ a click inside the app goes without its text, link, attributes or title (1.59935ms)
2026-10-18T12:08:06.7340474Z ✔ on the front door a click keeps its text (0.293711ms)
2026-10-18T12:08:06.7340536Z ✔ recordings and error reports are never sent, and heatmaps only from the front door (0.35356ms)
2026-10-18T12:08:06.7340624Z ✔ pages after signing in keep their address but not their text, which can show an email address (0.236455ms)
2026-10-18T12:08:06.8781321Z ✔ plain text is one unstyled span (2.263997ms)
2026-10-18T12:08:06.8785267Z ✔ SGR codes style the text after them until a reset (0.841462ms)
2026-10-18T12:08:06.8812971Z ✔ 256 colours and 24-bit colours, in both of their forms (0.829334ms)
2026-10-18T12:08:06.8834435Z ✔ every other escape is dropped, and a link keeps its text (0.409084ms)
2026-10-18T12:08:06.8840908Z ✔ the 16 colours are theme classes; the rest are inline colours (0.548973ms)
2026-10-18T12:08:06.8842619Z ✔ a search marks its matches across spans, colours kept (0.689655ms)
2026-10-18T12:08:07.0748711Z ✔ Work is a built-in app right after Home, for every member, and Sessions are in it (1.939139ms)
2026-10-18T12:08:07.0757341Z ✔ the rail is Home, Explore, Work, Chat, Code, Artifacts and Routines (0.520271ms)
2026-10-18T12:08:07.0765278Z ✔ a phone's bar is Home, Work, Chat and Notifications, with Code first of More's apps (0.515123ms)
2026-10-18T12:08:07.0772465Z ✔ only integrations are pinned; built-in apps, their pages, old plugins and connectors are not (0.461713ms)
2026-10-18T12:08:07.0780349Z ✔ an integration's app opens its page (0.459669ms)
2026-10-18T12:08:07.0787446Z ✔ installed apps are what the workspace connected, opening where each is managed (0.561423ms)
2026-10-18T12:08:07.0826408Z ✔ pins are kept per workspace, in the order they were pinned (0.602684ms)
2026-10-18T12:08:07.0826666Z ✔ a cookie someone wrote by hand reads as far as it makes sense (0.513591ms)
2026-10-18T12:08:07.0826924Z ✔ pins of built-in pages from before are dropped (0.545058ms)
2026-10-18T12:08:07.0827351Z ✔ the account's pins win over the cookie, which is the fallback (0.34648ms)
2026-10-18T12:08:07.0827817Z ✔ a pin form pins or unpins one app (30.209376ms)
2026-10-18T12:08:07.0828656Z ✔ the cookies last a year and are secure when the site is (0.351327ms)
2026-10-18T12:08:07.2376860Z ✔ iso projects the floor axes and lifts by z (2.567292ms)
2026-10-18T12:08:07.4146863Z ✔ pts and isoPath round to one decimal place (0.590946ms)
2026-10-18T12:08:07.4146994Z ✔ stagger spreads starts evenly inside the loop (0.37978ms)
2026-10-18T12:08:07.4147062Z ✔ timing names the custom properties the stylesheet reads (0.295964ms)
2026-10-18T12:08:07.4147126Z ✔ Auto is the picker's first option and its default (2.166471ms)
2026-10-18T12:08:07.4147147Z ✔ an explicit pick stays picked (0.185388ms)
2026-10-18T12:08:07.4147221Z ✔ an AI provider that lists no models, or an Azure deployment, has no Auto (0.182955ms)
2026-10-18T12:08:07.4147281Z ✔ the chosen model reads as Auto, or by its name (0.171378ms)
2026-10-18T12:08:07.5093267Z ✔ the page says which repository, work item or pull request the person is on (2.346711ms)
2026-10-18T12:08:07.5115367Z ✔ the composer says where the question is asked from (0.394722ms)
2026-10-18T12:08:07.5130294Z ✔ an answer's kept lines fold into its steps, each as it last was, and its sources (0.603125ms)
2026-10-18T12:08:07.5152416Z ✔ a proposed session is kept once and says what it will do (0.304908ms)
2026-10-18T12:08:07.6605793Z ✔ archive keys cannot read releases, source maps or private objects (1.128012ms)
2026-10-18T12:08:07.6610027Z ✔ a stylesheet removed from the new build stays available with its MIME type (34.195517ms)
2026-10-18T12:08:07.6665724Z ✔ missing or unavailable assets never become HTML or cacheable errors (0.825048ms)
2026-10-18T12:08:07.7991740Z ✔ a paste uploads image files only when it has no text (2.014413ms)
2026-10-18T12:08:07.7992134Z ✔ only a drag that carries files is taken (0.204226ms)
2026-10-18T12:08:07.8006022Z ✔ what is refused before it is sent, in a plain sentence (0.2666ms)
2026-10-18T12:08:07.8006125Z ✔ a pasted image with no name is image.png (0.268623ms)
2026-10-18T12:08:07.8006338Z ✔ Markdown escapes the name's brackets (0.242284ms)
2026-10-18T12:08:07.8006381Z ✔ each upload has a placeholder of its own (0.217096ms)
2026-10-18T12:08:07.8006403Z ✔ an image goes in on a line of its own (1.856095ms)
2026-10-18T12:08:07.8006465Z ✔ the placeholder is swapped where it is now, keeping what was written around it (0.277766ms)
2026-10-18T12:08:07.8010765Z ✔ a refusal from the service reads as a sentence (0.237526ms)
2026-10-18T12:08:07.8020861Z ✔ deferred images get their addresses once the work item is open (0.9131ms)
2026-10-18T12:08:07.8034288Z ✔ the caret stays in the person's writing when a placeholder is swapped (0.217106ms)
2026-10-18T12:08:07.9469452Z ✔ overlaps for the same work item are alternatives; the rest are collisions (1.841673ms)
2026-10-18T12:08:07.9469634Z ✔ the other attempts are the work item's other pull requests, newest first, a few at most (0.376975ms)
2026-10-18T12:08:07.9469682Z ✔ shared paths are the files both change (0.600201ms)
2026-10-18T12:08:07.9469755Z ✔ a review stands at each reviewer's latest verdict, changes asked for first (0.656905ms)
2026-10-18T12:08:07.9470500Z ✔ an attempt's outcome says which was merged instead (0.291888ms)
2026-10-18T12:08:07.9470580Z ✔ an agent's review is advisory: it neither approves nor asks for changes (0.321822ms)
2026-10-18T12:08:08.0951714Z ✔ owners see everything, members their projects, others nothing (2.042375ms)
2026-10-18T12:08:08.0981169Z ✔ filters are read from the address, and nonsense is dropped (0.951237ms)
2026-10-18T12:08:08.0981212Z ✔ links keep the other filters (0.57302ms)
2026-10-18T12:08:08.0981281Z ✔ an old agent's entry is shown with whom it acted for (0.505739ms)
2026-10-18T12:08:08.0981784Z ✔ the CSV quotes what it must and keeps formulas as text (0.585698ms)
2026-10-18T12:08:08.0981847Z ✔ the log reads back only as far as the plan keeps it (0.238487ms)
2026-10-18T12:08:08.4983041Z ✔ an image is known by its bytes (1.149826ms)
2026-10-18T12:08:08.4983180Z ✔ SVG and anything else is refused, whatever it is called (32.420705ms)
2026-10-18T12:08:08.4983214Z ✔ more than a megabyte is refused (90.19465ms)
2026-10-18T12:08:08.4983240Z ✔ an image is sent as base64 (0.736436ms)
2026-10-18T12:08:08.4983262Z ✔ a missing file is asked for (0.278307ms)
2026-10-18T12:08:08.4983346Z ✔ a badge says how the newest finished run went (1.141823ms)
2026-10-18T12:08:08.4983424Z ✔ the badge is an SVG with its label and state, escaped (0.914272ms)
2026-10-18T12:08:08.4983512Z ✔ its address and Markdown name the workflow file, and a branch or event when chosen (0.431428ms)
2026-10-18T12:08:08.6555975Z ✔ a plan that is on says so (1.365458ms)
2026-10-18T12:08:08.6565300Z ✔ a plan whose payment has not cleared says it is pending, never that it is on (0.440151ms)
2026-10-18T12:08:08.6595031Z ✔ a failed payment points at Update payment method (0.296155ms)
2026-10-18T12:08:08.6610612Z ✔ a prepayment is settled when the balance rose or it was just entered (0.344948ms)
2026-10-18T12:08:08.6629938Z ✔ a bank transfer still on its way is pending (0.169654ms)
2026-10-18T12:08:08.8255130Z ✔ a credit from g1t reads in a line, with what is left and when it expires (16.931634ms)
2026-10-18T12:08:08.8256500Z ✔ dollars are read from what people type (0.26595ms)
2026-10-18T12:08:08.8257094Z ✔ a prepayment is $25 or more, by card up to $10,000, by bank transfer from $1,000 (4.873632ms)
2026-10-18T12:08:08.8275830Z ✔ a limit request needs an amount, a reason and a monthly spend; an overage only a reason (0.331367ms)
2026-10-18T12:08:08.8276662Z ✔ a spend limit is automatic, fixed, the full amount available, or the one-time raise (0.227111ms)
2026-10-18T12:08:08.8277122Z ✔ the spend limit's range: up to the highest ceiling plus prepaid, then once to twice it, then ask (0.285779ms)
2026-10-18T12:08:08.8292902Z ✔ the plan card says where the workspace stands (0.257467ms)
2026-10-18T12:08:08.8292991Z ✔ the overview's Usage card reads the month by what pays (0.701312ms)
2026-10-18T12:08:08.8293031Z ✔ a meter's share stays between 0 and 1 (0.241943ms)
2026-10-18T12:08:08.8293101Z ✔ after a card check the owner reads whether the trial started (0.552609ms)
2026-10-18T12:08:08.8293124Z ✔ alerts read as sentences (0.312829ms)
2026-10-18T12:08:08.8293193Z ✔ a workspace needs attention when paused, on a spike, or at 90% (0.299209ms)
2026-10-18T12:08:08.8293223Z ✔ a request says where it stands (0.234783ms)
2026-10-18T12:08:08.8293276Z ✔ the plan shows every meter, with no quota beside any of them (0.393881ms)
2026-10-18T12:08:08.8293325Z ✔ a free workspace sees only what it can use, and anything it used anyway (0.50639ms)
2026-10-18T12:08:08.8293345Z ✔ storage reads in powers of ten (0.165628ms)
2026-10-18T12:08:08.8293413Z ✔ kinds of work without words of their own are one Other, listed once and last (0.222323ms)
2026-10-18T12:08:08.8293467Z ✔ budget alerts keep the levels ticked, highest first (0.696325ms)
2026-10-18T12:08:09.0278872Z ✔ each work item's stage is the first that holds: done, landing, review, progress, backlog (3.173732ms)
2026-10-18T12:08:09.0289528Z ✔ the board puts each item in its column with who and which session is on it (2.37881ms)
2026-10-18T12:08:09.0300141Z ✔ a phone shows the stage asked for, else the first with something in it (0.530866ms)
2026-10-18T12:08:09.0308203Z ✔ the board reads open pull requests in every repository an open work item is linked to, each once (0.69336ms)
2026-10-18T12:08:09.0319419Z ✔ closed as not planned, a duplicate among them, is not Done: it did not ship (2.265069ms)
2026-10-18T12:08:09.0330260Z ✔ a merged pull request keeps an open item on the board: Landing with a target to land, else In progress (0.393691ms)
2026-10-18T12:08:09.0338517Z ✔ a pull request counts for its item, the items it closes and those it is part of, once each (0.460951ms)
2026-10-18T12:08:09.0354708Z ✔ a card says how many of its pull requests merged, counting a live session's once (0.570346ms)
2026-10-18T12:08:09.0354942Z ✔ every page is read, each below the last one's lowest number, up to a ceiling the board then names (1.345729ms)
2026-10-18T12:08:09.0355006Z ✔ what the board read only in part, it says (25.048113ms)
2026-10-18T12:08:09.2384269Z ✔ branches with an open pull request are read first, the default branch never (4.33178ms)
2026-10-18T12:08:09.2395951Z ✔ no default branch head, nothing to measure against (0.351638ms)
2026-10-18T12:08:09.2412910Z ✔ each branch gets its measured commit and drift, newest first, by head hash (1.116114ms)
2026-10-18T12:08:09.2432320Z ✔ when repos could not answer, the branches still show, without commits or counts (0.737787ms)
2026-10-18T12:08:09.2433009Z ✔ repos' answer, as its JSON reads, keeps every count (flagon-io/hello's farewell) (0.600851ms)
2026-10-18T12:08:09.2445834Z ✔ a branch's pull request is the open one, else the newest merged or closed (0.40027ms)
2026-10-18T12:08:09.2458731Z ✔ a tab comes from the address, the overview otherwise (0.351988ms)
2026-10-18T12:08:09.2472619Z ✔ stale is no commits in 90 days; yours is the viewer's latest commit (2.445258ms)
2026-10-18T12:08:09.2488739Z ✔ a branch with nothing the default branch lacks, or a merged pull request, is merged (0.553069ms)
2026-10-18T12:08:09.2488836Z ✔ the overview shows a few of yours, the active and the stale ones; each tab lists its own (1.25285ms)
2026-10-18T12:08:09.2488889Z ✔ the bars are drawn against the longest count shown (0.40659ms)
2026-10-18T12:08:09.4656645Z ✔ old navigation reads switch builds before loaders; writes and ordinary documents do not (49.221764ms)
2026-10-18T12:08:09.7211273Z ✔ a pressed button is busy until the status changes (1.896666ms)
2026-10-18T12:08:09.7211384Z ✔ a pressed button is given back when nothing changes for a while (0.469865ms)
2026-10-18T12:08:09.7211424Z ✔ a button nobody pressed is not busy (0.181101ms)
2026-10-18T12:08:09.8007362Z ✔ a card shows only its links: nothing answers the rest any more (2.495735ms)
2026-10-18T12:08:09.8028305Z ✔ a draft issue's chip says where it is (0.612138ms)
2026-10-18T12:08:09.8046297Z ✔ a long body starts folded (0.369624ms)
2026-10-18T12:08:09.9782229Z ✔ the conversation cache keeps the most recently used, and no more (3.566101ms)
2026-10-18T12:08:10.1688923Z ✔ formatting is written as Markdown (3.479981ms)
2026-10-18T12:08:10.1702392Z ✔ links: with their text, or bare when the text is the address (2.504528ms)
2026-10-18T12:08:10.1702554Z ✔ each paragraph is a line; an empty one is a blank line (0.33989ms)
2026-10-18T12:08:10.1714088Z ✔ text that only looks like Markdown is escaped, and mentions stay mentions (0.335103ms)
2026-10-18T12:08:10.1714155Z ✔ lists, quotes and code blocks (0.569174ms)
2026-10-18T12:08:10.1714234Z ✔ Markdown comes back into the composer as it was written (6.218139ms)
2026-10-18T12:08:10.1720166Z ✔ Markdown the composer cannot write still comes in (1.323807ms)
2026-10-18T12:08:10.3235812Z ✔ a message in the conversation on screen, in a window in front, is silent (1.387612ms)
2026-10-18T12:08:10.3235981Z ✔ the same message plays `message` once the window is not in front, or the tab is hidden (0.677016ms)
2026-10-18T12:08:10.3236062Z ✔ a message in another conversation you have open plays `message` (0.300982ms)
2026-10-18T12:08:10.3236131Z ✔ a direct message not from you plays `direct`; one from you plays nothing (0.296525ms)
2026-10-18T12:08:10.3236518Z ✔ a mention of you plays `mention`, over `direct` and `message` (0.285649ms)
2026-10-18T12:08:10.3236549Z ✔ @you is a whole handle, outside code (0.181853ms)
2026-10-18T12:08:10.3236613Z ✔ your own messages never sound, whichever way they arrive (0.237997ms)
2026-10-18T12:08:10.3236672Z ✔ a muted conversation is silent, even for a mention or a DM (0.192489ms)
2026-10-18T12:08:10.3239421Z ✔ Do not disturb silences everything (0.190606ms)
2026-10-18T12:08:10.3240487Z ✔ sounds off, or one cue off, is silent for that (0.36679ms)
2026-10-18T12:08:10.3241399Z ✔ an old agent's message counts like a person's (0.234502ms)
2026-10-18T12:08:10.3249392Z ✔ a deleted message, and an inbox notification, make no sound (0.147491ms)
2026-10-18T12:08:10.3256029Z ✔ sounds come at most one every 1.5 s, and one message sounds once however it arrives (0.307691ms)
2026-10-18T12:08:10.3257822Z ✔ an arrival's key is its message id, the same over the socket and the feed (0.161623ms)
2026-10-18T12:08:10.3258879Z ✔ a desktop notification shows only when wanted, allowed, out of front, and not already pushed (0.273741ms)
2026-10-18T12:08:10.3260687Z ✔ g1t's answer is silent while it thinks and streams, and pings once it is written (0.244768ms)
2026-10-18T12:08:10.5433369Z ✔ messages from one author close together share a header; days get a rule (28.475455ms)
2026-10-18T12:08:10.6901654Z ✔ merging keeps one copy of each message, and drops the pending one once saved (0.596075ms)
2026-10-18T12:08:10.6901720Z ✔ an @ being typed suggests people (1.330035ms)
2026-10-18T12:08:10.6901785Z ✔ message text: mentions, references, links and code, never HTML (2.843807ms)
2026-10-18T12:08:10.6901847Z ✔ message blocks: fenced code, lists, quotes and paragraphs (2.635054ms)
2026-10-18T12:08:10.6901902Z ✔ the sidebar: sections, filters and the rail's count (2.851528ms)
2026-10-18T12:08:10.6901974Z ✔ the sidebar keeps public channels apart from the workspace's own (0.375784ms)
2026-10-18T12:08:10.6902029Z ✔ an old conversation with an agent alone opens read-only, under the name the agent had (0.514072ms)
2026-10-18T12:08:10.6902080Z ✔ addresses, names, money and reconnecting (0.990966ms)
2026-10-18T12:08:10.6902138Z ✔ a member shows by display name, else by their username as they wrote it (0.847521ms)
2026-10-18T12:08:10.6902197Z ✔ mentions read as the names people know, found by the lowercased handle (0.484016ms)
2026-10-18T12:08:10.6902225Z ✔ the typing line: who is typing (0.393751ms)
2026-10-18T12:08:10.7313883Z ✔ signing in, signing up and choosing a workspace stand alone, for everyone (2.638719ms)
2026-10-18T12:08:10.7323863Z ✔ answering an invitation stands alone until you belong to a workspace (0.20655ms)
2026-10-18T12:08:10.7331255Z ✔ someone signed in gets the app everywhere else, public pages included (0.318128ms)
2026-10-18T12:08:10.7334021Z ✔ a visitor gets the public frame everywhere else (0.280441ms)
2026-10-18T12:08:10.7337446Z ✔ a project's menu hides member-only pages from everyone else (1.793521ms)
2026-10-18T12:08:10.7342972Z ✔ the phone's project strip lights the page a path is under (3.284518ms)
2026-10-18T12:08:10.7349400Z ✔ project operations keep their place in navigation and require integration access (0.738488ms)
2026-10-18T12:08:10.7353290Z ✔ features keeps the public topbar for visitors and members (0.372199ms)
2026-10-18T12:08:10.9066899Z ✔ its author edits and deletes their own comment (2.71214ms)
2026-10-18T12:08:10.9080372Z ✔ a maintainer edits and deletes anyone's (0.331998ms)
2026-10-18T12:08:10.9112179Z ✔ a review is edited but never deleted, and a note is never changed (0.352509ms)
2026-10-18T12:08:10.9125646Z ✔ an agent's comment is answered for by whoever it acted for; its review is never deleted (0.407772ms)
2026-10-18T12:08:11.1003995Z ✔ the headline says the worst of a commit's checks (1.687732ms)
2026-10-18T12:08:11.1026669Z ✔ the tally counts each kind, worst first (0.432018ms)
2026-10-18T12:08:11.1039070Z ✔ a check run says how it went and how long it took (0.67959ms)
2026-10-18T12:08:11.1045386Z ✔ details go to g1t's own page first, and elsewhere apart (1.816055ms)
2026-10-18T12:08:11.3119686Z ✔ co-authors leave the body and keep only their names (3.409335ms)
2026-10-18T12:08:11.3123304Z ✔ a message that is only trailers has no body (0.529746ms)
2026-10-18T12:08:11.3147718Z ✔ a trailer shows its name, never an address (0.262414ms)
2026-10-18T12:08:11.3148662Z ✔ prose that happens to contain a colon stays prose (0.25937ms)
2026-10-18T12:08:11.3150231Z ✔ references split from the text around them (0.859349ms)
2026-10-18T12:08:11.3156937Z ✔ a full hash is a commit; a short one, a link's fragment or a word's # are text (0.502264ms)
2026-10-18T12:08:11.3157039Z ✔ a session's id is a session, as a note says what it closed the issue in (0.304166ms)
2026-10-18T12:08:11.3157105Z ✔ a commit's hint is its subject, cut on a word when it runs long (0.581954ms)
2026-10-18T12:08:11.5233256Z ✔ a confirmed address is the account, whatever name the commit carries (4.776777ms)
2026-10-18T12:08:11.5271155Z ✔ an unconfirmed address matches nobody: the name on the commit, no link (0.921442ms)
2026-10-18T12:08:11.5290805Z ✔ the noreply address is the account (0.504426ms)
2026-10-18T12:08:11.5291566Z ✔ a deleted account's commits are ghost's, with no profile (0.327701ms)
2026-10-18T12:08:11.5291651Z ✔ g1t's commits, now and as its agents and queue made them before, are g1t (0.818118ms)
2026-10-18T12:08:11.5291720Z ✔ a commit sent to the page carries no address at all (2.09928ms)
2026-10-18T12:08:11.5291779Z ✔ one question per page: every distinct address, g1t's left out (3.153872ms)
2026-10-18T12:08:11.5291828Z ✔ co-authors are read from the trailers only (0.309234ms)
2026-10-18T12:08:11.5293139Z ✔ contributors and commits show one person the same way (1.225569ms)
2026-10-18T12:08:11.5296341Z ✔ a coding agent is shown as itself by the address on its commit, never by its name (1.530697ms)
2026-10-18T12:08:11.7322206Z ✔ the page a refusal names becomes a link, without its full stop (5.415425ms)
2026-10-18T12:08:11.8815056Z ✔ text without a page, or with other slashes, stays text (0.460541ms)
2026-10-18T12:08:11.9524504Z ✔ a pending account is sent to confirm its address from every app page (2.87268ms)
2026-10-18T12:08:11.9529955Z ✔ client navigations are gated as the page they load (0.390766ms)
2026-10-18T12:08:11.9532857Z ✔ the pages confirming needs, and the public pages about g1t, stay open (0.400501ms)
2026-10-18T12:08:11.9543158Z ✔ confirmed accounts, visitors and non-people are never gated (0.416475ms)
2026-10-18T12:08:11.9545264Z ✔ what the page says once confirmed, and where it goes (0.769755ms)
2026-10-18T12:08:11.9548445Z ✔ confirming an account whose invite names a workspace goes on to accept or decline it (0.253661ms)
2026-10-18T12:08:11.9554295Z ✔ the code field is a one-time code typed with a number pad (0.83338ms)
2026-10-18T12:08:12.1224516Z ✔ the two contexts list different connectors (1.245539ms)
2026-10-18T12:08:12.1253715Z ✔ a category shows only its own connectors, sorted into connected, available and soon (1.42626ms)
2026-10-18T12:08:12.1254707Z ✔ all shows everything once (0.320781ms)
2026-10-18T12:08:12.1267500Z ✔ search finds by name, description, tag and keyword, across every category (0.839841ms)
2026-10-18T12:08:12.1269183Z ✔ the navigation counts each category and leaves out empty ones (0.455053ms)
2026-10-18T12:08:12.1277659Z ✔ an unknown category is all of them (0.173019ms)
2026-10-18T12:08:12.1279170Z ✔ a tile has the connector's letters and a steady colour (0.503866ms)
2026-10-18T12:08:12.1287549Z ✔ asking for a connector names it and who it is for (0.236535ms)
2026-10-18T12:08:12.3712418Z ✔ a content key is a hash of every part, in order, and never of a join that could collide (15.299285ms)
2026-10-18T12:08:12.3712790Z ✔ the isolate's memory keeps the most recently used within its weight (0.832108ms)
2026-10-18T12:08:12.3712832Z ✔ lines weigh their characters (0.248943ms)
2026-10-18T12:08:12.4048502Z ✔ an answer is computed once, then read from the isolate, then from the data centre (35.025093ms)
2026-10-18T12:08:12.4073706Z ✔ a new version never reads what an old one kept (2.685849ms)
2026-10-18T12:08:12.4099913Z ✔ nothing to keep is not kept, and a broken shared entry counts as missing (2.628383ms)
2026-10-18T12:08:12.4113126Z ✔ without a data centre's cache the isolate still keeps answers (1.468824ms)
2026-10-18T12:08:12.5651266Z ✔ publisher documents a browser would open are downloads (1.585049ms)
2026-10-18T12:08:12.5660711Z ✔ data types stay inline (0.284097ms)
2026-10-18T12:08:12.5670993Z ✔ every registry answer runs nothing and is never sniffed (31.396488ms)
2026-10-18T12:08:12.5672073Z ✔ download names keep quotes and control characters out of the header (0.611758ms)
2026-10-18T12:08:12.7205191Z ✔ the calendar is 53 weeks of seven days, ending with today's week (2.451077ms)
2026-10-18T12:08:12.7212285Z ✔ each day is shaded in quarters of the busiest (3.044048ms)
2026-10-18T12:08:12.7213515Z ✔ months are named over the week they start in (0.687662ms)
2026-10-18T12:08:12.7223762Z ✔ a month that starts too close to the first column takes its place (0.540631ms)
2026-10-18T12:08:12.7223855Z ✔ a year that starts early in a month keeps its first label (0.61345ms)
2026-10-18T12:08:12.7223883Z ✔ a bad date draws nothing (0.161302ms)
2026-10-18T12:08:12.7225935Z ✔ hints and the heading read as sentences (20.71402ms)
2026-10-18T12:08:12.8729601Z ✔ harnesses are named as people know them (1.396064ms)
2026-10-18T12:08:13.0225624Z ✔ a claim says when it lapses; one that ended says nothing (0.378178ms)
2026-10-18T12:08:13.0225764Z ✔ Live now lists sessions heard from lately and folds away the idle, the latest first (1.266781ms)
2026-10-18T12:08:13.0225859Z ✔ live work is grouped by work item, most recent first, with sessions on no work item apart (0.544798ms)
2026-10-18T12:08:13.0225952Z ✔ sessions on no work item are grouped by pull request, then by a branch of their own, then the rest together (0.518027ms)
2026-10-18T12:08:13.0226041Z ✔ a session is never title-less: its title, its first prompt's intent, its branch, or untitled (2.661132ms)
2026-10-18T12:08:13.0226119Z ✔ a title from the first prompt is provisional until g1t, the agent or a person names the session (0.398228ms)
2026-10-18T12:08:13.0226191Z ✔ a prompt's intent is its first line or sentence, plain, clipped on a word (0.494242ms)
2026-10-18T12:08:13.0226233Z ✔ evidence is read as far as it goes (0.723045ms)
2026-10-18T12:08:13.0226313Z ✔ a failure stands until the pull request passes in the queue or merges, and a fix after it answers it (0.516555ms)
2026-10-18T12:08:13.0226371Z ✔ coordination events read as lines of the feed (0.970777ms)
2026-10-18T12:08:13.0226431Z ✔ a session is ended by hand by whoever runs it, or by anyone who can write (0.237647ms)
2026-10-18T12:08:13.0226479Z ✔ a session ended by hand says who ended it in the feed (0.202905ms)
2026-10-18T12:08:13.0226535Z ✔ sessions become trees by their parents; one whose parent is missing is a root (0.542254ms)
2026-10-18T12:08:13.0226596Z ✔ how a session was tied to its work, what it touched, and how long it ran (0.389044ms)
2026-10-18T12:08:13.0226649Z ✔ numbers in a sentence are found for linking (0.543185ms)
2026-10-18T12:08:13.0226856Z ✔ blocked_by is typed as numbers (0.35965ms)
2026-10-18T12:08:13.0226915Z ✔ a session's pending updates read as the feed does, leaving out what it does not show (0.413361ms)
2026-10-18T12:08:13.0226990Z ✔ a work item's pull requests are linked in the repository that has them, and not at all when none or two do (0.227351ms)
2026-10-18T12:08:13.0604487Z ✔ an answer in time is passed through (1.377507ms)
2026-10-18T12:08:13.0805689Z ✔ a call that never answers fails at its deadline, and its signal aborts (21.182563ms)
2026-10-18T12:08:13.0928511Z ✔ a call that ignores its signal is still let go (10.669719ms)
2026-10-18T12:08:13.0928642Z ✔ a failure in time is the call's own, not a deadline (0.537417ms)
2026-10-18T12:08:13.0929132Z ✔ the caller's own signal aborts the call (0.473931ms)
2026-10-18T12:08:13.0932158Z ✔ each call gets the time its work needs (0.254292ms)
2026-10-18T12:08:13.0934234Z ✔ a long method of one service is not long in another (0.278318ms)
2026-10-18T12:08:13.0936304Z ✔ no read outlasts the browser's patience with a navigation (0.247282ms)
2026-10-18T12:08:13.2131058Z ✔ a next run is said as a time ahead (1.116765ms)
2026-10-18T12:08:13.2140992Z ✔ an entry's status (0.852339ms)
2026-10-18T12:08:13.2189306Z ✔ rules read as one line (0.296064ms)
2026-10-18T12:08:13.2189431Z ✔ only live update pull requests are listed (0.215553ms)
2026-10-18T12:08:13.3287740Z ✔ what a build found is said with what it was built with (0.885829ms)
2026-10-18T12:08:13.3288060Z ✔ a container size reads plainly (0.24013ms)
2026-10-18T12:08:13.4841011Z ✔ a commit that is gone is said plainly, naming the pull request (1.796625ms)
2026-10-18T12:08:13.4841160Z ✔ a run of the same failure of one app is one row, counted, linking to the newest (1.536555ms)
2026-10-18T12:08:13.4842537Z ✔ other apps' builds in between do not break a run; a different error does (3.021453ms)
2026-10-18T12:08:13.4844474Z ✔ builds that did not fail are never folded (0.691417ms)
2026-10-18T12:08:13.4846836Z ✔ environments list production first, then lasting ones, then previews, newest first in each (0.491757ms)
2026-10-18T12:08:13.4849396Z ✔ production is the production environment that has had a deployment, named production first (0.331207ms)
2026-10-18T12:08:13.4857286Z ✔ an environment is served at its own address, else its current deployment's (0.248222ms)
2026-10-18T12:08:13.4859416Z ✔ the list's filter is read from the address, ignoring what it cannot be (0.842414ms)
2026-10-18T12:08:13.4860187Z ✔ changing a filter keeps the others and starts again from the first page (0.458047ms)
2026-10-18T12:08:13.4861682Z ✔ a filter's choices are each value once, sorted, keeping the chosen one (8.555407ms)
2026-10-18T12:08:13.4863608Z ✔ words for states, sources, environments and pages (0.402244ms)
2026-10-18T12:08:13.4864459Z ✔ only a deployment's newest status can still be under way (0.182774ms)
2026-10-18T12:08:13.4866568Z ✔ native screenshots use the serving app, not a newer attempt or custom domain (0.276424ms)
2026-10-18T12:08:13.6463639Z ✔ a report carries the app's words, without its buttons or log (2.214002ms)
2026-10-18T12:08:13.6463810Z ✔ a report goes when what the page shows changes, and as a heartbeat (0.388012ms)
2026-10-18T12:08:13.6463866Z ✔ a sandboxed desktop reports each kind of job, without its buttons (0.937467ms)
2026-10-18T12:08:13.6464135Z ✔ each kind of job reports its state, whether the person stopped it, and its job, without what only works here (0.721303ms)
2026-10-18T12:08:13.6464206Z ✔ a kind of job's work links to its run when the runner says which (0.360281ms)
2026-10-18T12:08:13.6464264Z ✔ only a diagnosis and a backend the app makes are kept (0.252409ms)
2026-10-18T12:08:13.6467514Z ✔ a report says how the runner's updates stand, without the app's own words and button (0.785167ms)
2026-10-18T12:08:13.7773267Z ✔ a change is saved over the settings as the app has them, and nothing else (1.91968ms)
2026-10-18T12:08:13.7792417Z ✔ the app opens the section it names, or the first (0.245358ms)
2026-10-18T12:08:13.7814402Z ✔ updates say where this copy stands (16.217013ms)
2026-10-18T12:08:13.7820521Z ✔ a failed check says why in a line (0.586681ms)
2026-10-18T12:08:13.9441780Z ✔ the desktop app is known by its cookie (34.846665ms)
2026-10-18T12:08:14.0952272Z ✔ the launcher opens the site with ?app=desktop (0.340642ms)
2026-10-18T12:08:14.1227074Z ✔ developer mode is on only for the cookie's own value (1.173731ms)
2026-10-18T12:08:14.1244812Z ✔ the cookie keeps the choice for a year, and turning it off forgets it (0.245579ms)
2026-10-18T12:08:14.1245144Z ✔ the server's own errors go only to someone signed in who turned it on (36.777172ms)
2026-10-18T12:08:14.1245179Z ✔ whatever was thrown is described (1.487742ms)
2026-10-18T12:08:14.1255247Z ✔ one report says what failed, where, when and on which build (0.69312ms)
2026-10-18T12:08:14.3641667Z ✔ files asked for together are fetched in one request, and once (77.604781ms)
2026-10-18T12:08:14.3963666Z ✔ many files at once go 20 to a request (33.2299ms)
2026-10-18T12:08:14.4576708Z ✔ the files after one come with it, and are not asked for again (63.177693ms)
2026-10-18T12:08:14.5213570Z ✔ a failed fetch is an error, and is tried again when asked again (63.433768ms)
2026-10-18T12:08:15.1713976Z ✔ a highlighted file's HTML, kept apart and given back, is the same highlighted file (275.123994ms)
2026-10-18T12:08:15.1714037Z ✔ lines without HTML stay without it (1.278328ms)
2026-10-18T12:08:15.1714110Z ✔ what a file's colours depend on: each line's side and text, not its numbers or path (1.220481ms)
2026-10-18T12:08:15.1714146Z ✔ a small change is sent whole (4.613102ms)
2026-10-18T12:08:15.1714219Z ✔ past the first screens' lines, files are sent with their counts but not their lines (6.857929ms)
2026-10-18T12:08:15.1714296Z ✔ a very large file waits to be asked for, and does not hold back the files after it (1.394473ms)
2026-10-18T12:08:15.1714383Z ✔ files with comments keep their lines wherever they are, however large (2.358869ms)
2026-10-18T12:08:15.1715605Z ✔ files the comparison left out wait with no counts; binary files are as they were (0.318969ms)
2026-10-18T12:08:15.1715737Z ✔ a link to a file names it by path, encoded or not, and only a file of the change (0.653711ms)
2026-10-18T12:08:15.2511263Z ✔ a User-Agent names the visitor's platform, phones first (3.714674ms)
2026-10-18T12:08:15.2513053Z ✔ client hints name the processor (0.226219ms)
2026-10-18T12:08:15.2521862Z ✔ the file offered first is the platform's preferred kind, on the visitor's processor (0.629114ms)
2026-10-18T12:08:15.4829374Z ✔ the primary cannot be removed, and only a confirmed address can become it (2.963717ms)
2026-10-18T12:08:15.4854501Z ✔ the last confirmed address stays, even when it is not the primary (0.305158ms)
2026-10-18T12:08:15.4879302Z ✔ the backup is a confirmed address other than the primary (0.412369ms)
2026-10-18T12:08:15.4880736Z ✔ a change waiting on the password keeps its fields but never the password (43.279307ms)
2026-10-18T12:08:15.7898199Z ✔ the emoji data is complete and small (5.383287ms)
2026-10-18T12:08:15.7898376Z ✔ search finds by shortcode first, then name, then keyword (39.176111ms)
2026-10-18T12:08:15.7898458Z ✔ the workspace's own emoji are found by name, ahead of standard ones as good (11.485634ms)
2026-10-18T12:08:15.7898792Z ✔ skin tones apply where an emoji has them (0.729484ms)
2026-10-18T12:08:15.7898860Z ✔ a new emoji's name: its shape, standard ones and taken ones (2.572249ms)
2026-10-18T12:08:15.7898934Z ✔ a :name being typed is offered for completion, but not in links or times (0.661853ms)
2026-10-18T12:08:15.7898997Z ✔ :name: becomes the workspace's emoji in text; anything else stays (1.595224ms)
2026-10-18T12:08:15.7899055Z ✔ reacting shows at once, and taking it back undoes it (0.69996ms)
2026-10-18T12:08:15.7899115Z ✔ the room's reaction events count others once, and the viewer's own never twice (1.097597ms)
2026-10-18T12:08:15.7899498Z ✔ a message from the room keeps the viewer's own reactions marked (0.685389ms)
2026-10-18T12:08:15.7899522Z ✔ who reacted reads as a sentence (0.498778ms)
2026-10-18T12:08:15.7901757Z ✔ recent emoji: newest first, each once, a few (0.301122ms)
2026-10-18T12:08:16.0244203Z ✔ an environment's name is lowercased, and anything else is refused (1.635044ms)
2026-10-18T12:08:16.1886292Z ✔ a form's rules: reviewers in order without blanks or repeats, patterns only for selected branches (48.432029ms)
2026-10-18T12:08:16.1886440Z ✔ a form past the limits says what is wrong (23.820932ms)
2026-10-18T12:08:16.1886476Z ✔ an environment's rules in a few words (0.80605ms)
2026-10-18T12:08:16.2743298Z ✔ the tree orders each level and lifts folios whose parent isn't there (4.083587ms)
2026-10-18T12:08:16.2760664Z ✔ the home list groups by the viewer's day: Today, Yesterday, then dates (29.192501ms)
2026-10-18T12:08:16.2773078Z ✔ chat messages name the artifacts they link to, in this workspace only (1.000541ms)
2026-10-18T12:08:16.2789312Z ✔ snippets mark their matches (0.764277ms)
2026-10-18T12:08:16.2796544Z ✔ covers, colours, roles, reading time (1.95242ms)
2026-10-18T12:08:16.2805511Z ✔ a citation links to its code, a glob to the folder it starts from (0.488012ms)
2026-10-18T12:08:16.2821062Z ✔ a project's docs become folders, and spaces and files have addresses under Artifacts (0.689004ms)
2026-10-18T12:08:16.5309487Z ✔ a limit lets requests through until it is reached (4.522816ms)
2026-10-18T12:08:16.5320122Z ✔ a missing or failing binding fails open (45.937566ms)
2026-10-18T12:08:16.5398777Z ✔ secrets are keyed by a short hash, never as they are (14.152084ms)
2026-10-18T12:08:16.5403794Z ✔ git without credentials is limited by address, with a message git shows (5.674634ms)
2026-10-18T12:08:16.5441839Z ✔ git with credentials counts by a hash of them, apart from the address (1.988154ms)
2026-10-18T12:08:16.5448053Z ✔ signed-out pages count by address, and costly ones against a tighter limit too (2.368563ms)
2026-10-18T12:08:16.5491476Z ✔ signed-in requests count by session, and every request by address (4.636206ms)
2026-10-18T12:08:16.5568115Z ✔ requests with an access token count by a hash of the token, at the API's limit (1.601684ms)
2026-10-18T12:08:16.5570447Z ✔ files the Worker serves itself are never limited (0.889094ms)
2026-10-18T12:08:16.5577664Z ✔ costly pages are recognised (0.687451ms)
2026-10-18T12:08:16.5583392Z ✔ the session cookie is read from among others (0.182103ms)
2026-10-18T12:08:16.5588653Z ✔ every wrangler.jsonc declares the rate limits RATE_LIMITS lists, and only those (2.883918ms)
2026-10-18T12:08:16.5590859Z ✔ repository files on the usercontent origin count per address; avatars do not (0.815884ms)
2026-10-18T12:08:16.5596236Z ✔ a signed archive link is known by its token, and only on an archive (0.24054ms)
2026-10-18T12:08:16.7081828Z ✔ an answer streams into its message, then the stored one takes over (1.737156ms)
2026-10-18T12:08:16.7082003Z ✔ other conversations, thread replies and deletions (1.179339ms)
2026-10-18T12:08:16.7120258Z ✔ a cleared conversation empties, and only that one (0.441442ms)
2026-10-18T12:08:16.7120385Z ✔ /clear, typed to g1t, is the command and nothing else is (0.237356ms)
2026-10-18T12:08:16.7120450Z ✔ who g1t is, and answers cut off at their limit (0.28017ms)
2026-10-18T12:08:16.7120477Z ✔ suggestions fit the page (0.664697ms)
2026-10-18T12:08:16.7120542Z ✔ links into the site show as what they lead to (2.628854ms)
2026-10-18T12:08:16.7120609Z ✔ a question asked on a page says which, and one written in Chat says nothing (0.489094ms)
2026-10-18T12:08:16.8541023Z ✔ the state must come back exactly as it was given (8.100825ms)
2026-10-18T12:08:16.8543720Z ✔ cookies are read by name, and odd values are ignored (0.541132ms)
2026-10-18T12:08:16.8547683Z ✔ an installation returns to the workspace it was started for (0.404557ms)
2026-10-18T12:08:16.8549014Z ✔ an installation made on GitHub directly is offered to the workspaces that lack it (1.160441ms)
2026-10-18T12:08:16.8549741Z ✔ the setup page offers only workspaces the person owns, saying which have it (0.538858ms)
2026-10-18T12:08:16.8550272Z ✔ once an installation is recorded, Integrations says GitHub is connected (0.270256ms)
2026-10-18T12:08:16.8550723Z ✔ Connect GitHub links first, adds what is there, and installs only when nothing is (0.490066ms)
2026-10-18T12:08:16.9651144Z ✔ go get finds a repository's code from its address and any package in it (1.537037ms)
2026-10-18T12:08:16.9651689Z ✔ only go-get requests for a repository's address are answered (0.45335ms)
2026-10-18T12:08:17.1309402Z ✔ an untouched form inherits everything (43.6609ms)
2026-10-18T12:08:17.2793904Z ✔ time caps of a level's own are kept, and nothing else is sent (0.621072ms)
2026-10-18T12:08:17.2794021Z ✔ nonsense is passed on for the service to refuse (0.393841ms)
2026-10-18T12:08:17.3128007Z ▶ homeShows
2026-10-18T12:08:17.3128235Z   ✔ takes a default branch's pushes and tags, not another branch's (1.084307ms)
2026-10-18T12:08:17.3137733Z   ✔ takes any branch's push where the default branch is not known (0.531868ms)
2026-10-18T12:08:17.3150242Z   ✔ takes what Home lists and leaves a commit's checks (0.41989ms)
2026-10-18T12:08:17.3157535Z ✔ homeShows (4.025721ms)
2026-10-18T12:08:17.3180648Z ▶ arrivedOf
2026-10-18T12:08:17.3180923Z   ✔ finds nothing new on the first draw (1.198218ms)
2026-10-18T12:08:17.3186635Z   ✔ finds the rows that were not shown before (0.541573ms)
2026-10-18T12:08:17.3196307Z   ✔ does not count a row that went and came back as new (0.310376ms)
2026-10-18T12:08:17.3221588Z   ✔ starts over when the span switches (0.300651ms)
2026-10-18T12:08:17.3230729Z ✔ arrivedOf (4.636557ms)
2026-10-18T12:08:17.6023973Z ✔ Code's needs become rows with what is at stake (3.31252ms)
2026-10-18T12:08:17.6028226Z ✔ Start here: the most pressing tier first, then what has waited longest (2.647873ms)
2026-10-18T12:08:17.6050339Z ✔ the same order whatever order the rows came in (16.367879ms)
2026-10-18T12:08:17.6050484Z ✔ notifications: warnings and failures in this workspace; none about repositories without Code (0.843656ms)
2026-10-18T12:08:17.6050552Z ✔ a notification about something already listed is left out (0.848453ms)
2026-10-18T12:08:17.6050627Z ✔ without Code access no Code row is asked for or shown, and a silent source is named (1.012439ms)
2026-10-18T12:08:17.6050691Z ✔ chat: mentions anywhere and unread direct messages, never muted (0.540151ms)
2026-10-18T12:08:17.6051565Z ✔ a day is the reader's day (17.192676ms)
2026-10-18T12:08:17.6051629Z ✔ since your last visit, in words, in the reader's time zone (8.327104ms)
2026-10-18T12:08:17.6051702Z ✔ how long a span is (0.465118ms)
2026-10-18T12:08:17.6066501Z ✔ the span: since your last visit, capped, or a fixed window (0.904718ms)
2026-10-18T12:08:17.6070290Z ✔ an actor is not a person when it is g1t or an agent of older rows; everyone else is (0.24674ms)
2026-10-18T12:08:17.6149025Z ✔ the digest: what was done, by kind with counts, and who, agents marked (2.309345ms)
2026-10-18T12:08:17.6149175Z ✔ g1t is one row, named, whichever key it used: its account, a workspace, or chat's system:g1t (0.512289ms)
2026-10-18T12:08:17.6149257Z ✔ the digest says which part didn't answer, and counts what could be read (2.234052ms)
2026-10-18T12:08:17.6149512Z ✔ the sentence: people first, then what landed; honest when quiet or unread (0.931908ms)
2026-10-18T12:08:17.6149567Z ✔ what landed: every merge in the span, newest first, g1t's older ones as @g1t (0.504938ms)
2026-10-18T12:08:17.6149637Z ✔ what landed, besides merges: direct pushes, releases, packages and production builds, newest first (0.663165ms)
2026-10-18T12:08:17.6149691Z ✔ a production build is its own row only where no merge or push on the list says it (0.274262ms)
2026-10-18T12:08:17.6149735Z ✔ builds that finished in the span: live or failed, never skipped (0.741372ms)
2026-10-18T12:08:17.6149792Z ✔ running now: workflow runs and builds going (0.647862ms)
2026-10-18T12:08:17.6149851Z ✔ the span's months: one, or the ones it crosses (0.267952ms)
2026-10-18T12:08:17.6149908Z ✔ spend in the span: the UTC days it covers across months, at price, without money in (0.464027ms)
2026-10-18T12:08:17.6150628Z ✔ each merge and push says whether it is live, from what deployments recorded (0.564688ms)
2026-10-18T12:08:17.6150683Z ✔ a change made in a harness session carries the agent mark, linked to the session (0.730295ms)
2026-10-18T12:08:17.6150740Z ✔ each person's push to a default branch is a row: its commit, who pushed, and its session (0.619359ms)
2026-10-18T12:08:17.6150798Z ✔ what landed over the week reads day by day, newest first (0.95971ms)
2026-10-18T12:08:17.6150858Z ✔ while you were away: what settled by itself, what shipped, and what still needs you (0.662344ms)
2026-10-18T12:08:17.6150906Z ✔ Summarize asks about the span the page shows, as a person would (0.593099ms)
2026-10-18T12:08:17.6150951Z ✔ Explain asks about the one change, by what it is (0.356415ms)
2026-10-18T12:08:17.7958002Z ✔ the card is the public profile, signed out too (2.618378ms)
2026-10-18T12:08:17.7963137Z ✔ a private workspace is hidden from someone outside it (1.940803ms)
2026-10-18T12:08:17.7967467Z ✔ commits to a repository show only to those who may read it (1.41277ms)
2026-10-18T12:08:17.7972312Z ✔ the card carries the time zone a profile gives, and none when it gives none (0.720992ms)
2026-10-18T12:08:17.7982204Z ✔ a failing service leaves its part out, not the card (2.428413ms)
2026-10-18T12:08:17.7982307Z ✔ g1t has its own card; ghost and strangers have none (1.315925ms)
2026-10-18T12:08:17.7983966Z ✔ workspaces past three are counted (0.437046ms)
2026-10-18T12:08:17.7987085Z ✔ how recently, in the words the card uses (0.408193ms)
2026-10-18T12:08:17.7990232Z ✔ the card's address and its repository (0.754312ms)
2026-10-18T12:08:18.0159320Z ✔ tabs read from the address, and each shows one severity (1.309284ms)
2026-10-18T12:08:18.0163080Z ✔ counts are what is unread under each tab (0.262494ms)
2026-10-18T12:08:18.0170145Z ✔ the bell shows a number up to 99 (2.261543ms)
2026-10-18T12:08:18.0175147Z ✔ times are said in a few characters (21.818046ms)
2026-10-18T12:08:18.0179084Z ✔ a snooze is for later, by one of a few choices (0.581833ms)
2026-10-18T12:08:18.0189030Z ✔ forms ask for one mark on one item, or read for every item (39.266006ms)
2026-10-18T12:08:18.0189321Z ✔ what needs you puts what waits on you before a failure, and leaves out the rest (3.263086ms)
2026-10-18T12:08:18.0193201Z ✔ every tab says something when it is empty (0.317707ms)
2026-10-18T12:08:18.0196479Z ✔ every reason has words, a filter and an email choice (0.497326ms)
2026-10-18T12:08:18.0199870Z ✔ a thread says how much happened on it once more than one thing has (0.378849ms)
2026-10-18T12:08:18.0201453Z ✔ a done item that settled by itself says why, and who did it (0.3799ms)
2026-10-18T12:08:18.0205665Z ✔ watching is read from the menu, and a custom watch of nothing is the default (0.796876ms)
2026-10-18T12:08:18.0208941Z ✔ the subscribe button says whether, and why (0.696435ms)
2026-10-18T12:08:18.0212055Z ✔ email reasons are read from the settings form in rank order (0.65997ms)
2026-10-18T12:08:18.0217271Z ✔ security alerts that are not urgent reach people as they choose, daily until they do (0.328753ms)
2026-10-18T12:08:18.2074771Z ✔ bold, italic, code and links read as marks (3.083306ms)
2026-10-18T12:08:18.3576032Z ✔ what is not a mark stays as written (0.343506ms)
2026-10-18T12:08:18.3576090Z ✔ the plain words, for a tooltip (0.582754ms)
2026-10-18T12:08:18.3861766Z ✔ the Invitations page sorts every state under one filter, and counts them (4.207483ms)
2026-10-18T12:08:18.3863401Z ✔ the Members page filters by role, two-factor, team and words (0.767892ms)
2026-10-18T12:08:18.3875723Z ✔ everyone is offered a plain sign-up (0.180702ms)
2026-10-18T12:08:18.3876093Z ✔ an invite link is on g1t.sh unless told otherwise (0.237136ms)
2026-10-18T12:08:18.3876195Z ✔ an invite email's proof is kept only when it looks like one, and goes along to the invite's page (0.451488ms)
2026-10-18T12:08:18.3876262Z ✔ signing up from the invite email says the address is confirmed already; otherwise the code step applies (0.365919ms)
2026-10-18T12:08:18.3877460Z ✔ a pasted link or code is tidied to the code (0.462444ms)
2026-10-18T12:08:18.3880725Z ✔ each invite says where it stands and whom it is for (0.390596ms)
2026-10-18T12:08:18.3882897Z ✔ bots that fill the hidden field or answer instantly are turned away (0.331267ms)
2026-10-18T12:08:18.3887427Z ✔ a username is suggested from the invited address (0.500171ms)
2026-10-18T12:08:18.3889141Z ✔ an invite lands in its workspace, else its repository (0.318237ms)
2026-10-18T12:08:18.3890625Z ✔ the welcome is for one place, and ends (0.508873ms)
2026-10-18T12:08:18.3897866Z ✔ the two invites say which they are (0.235163ms)
2026-10-18T12:08:18.3899955Z ✔ an invite's page names the invite it is (0.284417ms)
2026-10-18T12:08:18.3903551Z ✔ Invite a friend never reads as a gate on signing up (0.51956ms)
2026-10-18T12:08:18.3908395Z ✔ a friend can also be invited only to a paid workspace the person owns (0.285648ms)
2026-10-18T12:08:18.3910279Z ✔ the form sends a workspace only when its box is ticked and it was offered (0.305578ms)
2026-10-18T12:08:18.3916340Z ✔ how many invites are left reads plainly, and the menu shows the count (0.240531ms)
2026-10-18T12:08:18.3917778Z ✔ only a pending invite is sent again or copied; one waiting on its friend can still be revoked (0.203826ms)
2026-10-18T12:08:18.5264874Z ✔ colors are six hex digits however they were written (1.380822ms)
2026-10-18T12:08:18.5274782Z ✔ a chip is tinted with its label's color, and neutral without one (1.138919ms)
2026-10-18T12:08:18.5280604Z ✔ labels are found by name or description (0.354562ms)
2026-10-18T12:08:18.5292028Z ✔ a milestone's progress and due date read as words (0.383565ms)
2026-10-18T12:08:18.5320864Z ✔ filters come from the address, and q wins (0.769745ms)
2026-10-18T12:08:18.5354339Z ✔ changing one filter keeps the others (0.243415ms)
2026-10-18T12:08:18.7435649Z ✔ the copyright year is computed, in UTC (1.009936ms)
2026-10-18T12:08:18.7460529Z ✔ the legal line names the company and the year (0.243716ms)
2026-10-18T12:08:18.7460654Z ✔ products are listed the way a sentence lists them (0.227001ms)
2026-10-18T12:08:18.7473156Z ✔ policy dates read as words (0.257877ms)
2026-10-18T12:08:18.7493387Z ✔ every policy has its own address (0.489875ms)
2026-10-18T12:08:18.7493588Z ✔ security.txt has the fields RFC 9116 asks for, and expires within a year (0.763075ms)
2026-10-18T12:08:18.8773708Z ✔ one line and a run of lines are read from the fragment (2.238089ms)
2026-10-18T12:08:18.8817114Z ✔ a run written backwards is put in order (0.25296ms)
2026-10-18T12:08:18.8817188Z ✔ anything else names no lines (0.323495ms)
2026-10-18T12:08:18.8817216Z ✔ a run is held to the file's length (0.311668ms)
2026-10-18T12:08:18.8817652Z ✔ a run is written back the way it is read (0.275423ms)
2026-10-18T12:08:18.8817748Z ✔ a pick is one line; a shift-pick runs from the line already picked (0.293019ms)
2026-10-18T12:08:18.8817820Z ✔ a line is in the run when it is between its ends (0.171748ms)
2026-10-18T12:08:18.9966113Z ✔ the end above the window's bottom edge is in view (0.992669ms)
2026-10-18T12:08:18.9975917Z ✔ an end one row below the edge is not reached: following stops there (0.242223ms)
2026-10-18T12:08:18.9990113Z ✔ what covers the bottom of the window hides the end: a phone's tab bar (0.208403ms)
2026-10-18T12:08:19.0008743Z ✔ a folded step has no end to follow (0.216835ms)
2026-10-18T12:08:19.4050918Z ✔ a log read chunk by chunk is the log read at once, wherever the chunks fall (22.567992ms)
2026-10-18T12:08:19.4051058Z ✔ a group a chunk leaves open holds the next chunk's lines (0.377266ms)
2026-10-18T12:08:19.4051129Z ✔ a line still being written shows, and is read once it ends (0.420431ms)
2026-10-18T12:08:19.4051190Z ✔ reading a long log chunk by chunk reads each line once (129.568288ms)
2026-10-18T12:08:19.4051241Z ✔ a log's rows are its lines and groups' titles, open groups' lines under them (0.508172ms)
2026-10-18T12:08:19.4051294Z ✔ a log reads as lines and folded groups, numbered past the group markers (0.218007ms)
2026-10-18T12:08:19.4051395Z ✔ search finds lines in any case, inside folded groups too (0.491628ms)
2026-10-18T12:08:19.4051422Z ✔ matches are marked where they fall (0.262594ms)
2026-10-18T12:08:19.4051471Z ✔ a run's archive has each job whole and a file per step, named as the API names them (1.032509ms)
2026-10-18T12:08:19.4051557Z ✔ each line's time comes off the front, as GitHub's logs stamp it, and colours stay beside the plain text (1.069214ms)
2026-10-18T12:08:19.4341071Z ✔ a live job is asked every second while a step runs, less often while none does (2.192189ms)
2026-10-18T12:08:19.4377649Z ✔ a failed answer is tried again, waiting longer each time, never stopping a live log (0.461493ms)
2026-10-18T12:08:19.4383970Z ✔ a 429 waits as long as Retry-After says; a 404 stops; a finished job's last fetch gives up (0.380581ms)
2026-10-18T12:08:19.4384064Z ✔ a quiet step says for how long it has printed nothing (0.223686ms)
2026-10-18T12:08:19.4394224Z ✔ Retry-After reads as seconds or as a date (0.387021ms)
2026-10-18T12:08:19.5614692Z ✔ rows start where the rows above them end, measured or not (1.485529ms)
2026-10-18T12:08:19.5622154Z ✔ only the rows on screen and a little around them are drawn (2.754914ms)
2026-10-18T12:08:19.6949409Z ✔ @name links to the person or workspace (2.93917ms)
2026-10-18T12:08:19.6967172Z ✔ @g1t is g1t's agent, never the workspace alias at /g1t (0.458458ms)
2026-10-18T12:08:19.6967435Z ✔ @workspace/team links to the team (0.345669ms)
2026-10-18T12:08:19.7012560Z ✔ #12 in a repository is read there, by the page that asks the work service (0.280671ms)
2026-10-18T12:08:19.7012662Z ✔ #12 in a workspace's text is its work item, and workspace#12 is that workspace's (0.380401ms)
2026-10-18T12:08:19.7019983Z ✔ #12 with nowhere to read it stays text, and so does a link's fragment (0.17932ms)
2026-10-18T12:08:20.6779753Z ✔ README.md: the kept tree renders exactly what react-markdown renders (208.431808ms)
2026-10-18T12:08:20.6787222Z ✔ apps/docs/src/content/docs/guides/deploy-to-cloudflare.md: the kept tree renders exactly what react-markdown renders (210.629805ms)
2026-10-18T12:08:20.6788285Z ✔ CONTRIBUTING.md: the kept tree renders exactly what react-markdown renders (156.094769ms)
2026-10-18T12:08:20.6788985Z ✔ edge cases: the kept tree renders exactly what react-markdown renders (30.652161ms)
2026-10-18T12:08:20.6811372Z ✔ empty: the kept tree renders exactly what react-markdown renders (2.964869ms)
2026-10-18T12:08:20.8224396Z ✔ with no handles nothing is offered (1.119209ms)
2026-10-18T12:08:20.8227499Z ✔ teams complete from the workspace or from their own name (1.052539ms)
2026-10-18T12:08:20.8232445Z ✔ at most five, and nothing once one is typed in full (0.203926ms)
2026-10-18T12:08:20.9565795Z ✔ a merge commit names where it came from by default (1.962965ms)
2026-10-18T12:08:20.9566277Z ✔ a squash lists its commits when it has more than one (0.483185ms)
2026-10-18T12:08:20.9566473Z ✔ a template is filled in once (0.756094ms)
2026-10-18T12:08:20.9566662Z ✔ a message splits into title and body (0.222614ms)
2026-10-18T12:08:20.9566896Z ✔ the sample pull request previews as the server writes it (0.371397ms)
2026-10-18T12:08:20.9567129Z ✔ choices from settings leave the message to the service (0.33968ms)
2026-10-18T12:08:20.9567877Z ✔ the allowed methods follow the settings, fast-forward included (0.285298ms)
2026-10-18T12:08:21.0948773Z ✔ public landing pages opt into a canonical without affecting other routes (2.000602ms)
2026-10-18T12:08:21.0956127Z ✔ the homepage declares its canonical URL using the installation's origin (0.323656ms)
2026-10-18T12:08:21.0956515Z ✔ a page gets its title, description, Open Graph and Twitter tags (0.451527ms)
2026-10-18T12:08:21.0958145Z ✔ pages under a project describe the project, and their card follows its details (0.444417ms)
2026-10-18T12:08:21.0959468Z ✔ a page's address and card come from the root loader's addresses (1.563246ms)
2026-10-18T12:08:21.0963439Z ✔ without a card service, a page has no image tags (0.235383ms)
2026-10-18T12:08:21.0966012Z ✔ with nothing particular to say, a page says what g1t is (0.212199ms)
2026-10-18T12:08:21.0967346Z ✔ a card's version changes with what it shows (0.245729ms)
2026-10-18T12:08:21.0975958Z ✔ every card address carries the render version, so a new design is a new address (0.491097ms)
2026-10-18T12:08:21.0976243Z ✔ an excerpt is plain text from the start of the Markdown (0.459179ms)
2026-10-18T12:08:21.2649159Z ✔ each kind of need gets its reason chip (3.087112ms)
2026-10-18T12:08:21.2650755Z ✔ why a need needs a person is said for every reason (0.368573ms)
2026-10-18T12:08:21.2659792Z ✔ what is known lists only what is known (17.010122ms)
2026-10-18T12:08:21.2659896Z ✔ the required checks are read from the pull request's check status (0.26002ms)
2026-10-18T12:08:21.2659959Z ✔ test files are recognised by the names test runners use (0.661182ms)
2026-10-18T12:08:21.2660746Z ✔ a push to the default branch counts a person's own commits, not merges or g1t's (0.40628ms)
2026-10-18T12:08:21.2663537Z ✔ who pushed is the account that signed in, not the name on the commits (0.527752ms)
2026-10-18T12:08:21.2666659Z ✔ a short read of the branch is enough when it reaches the oldest push (0.384647ms)
2026-10-18T12:08:21.2670215Z ✔ each push to the default branch places the commits it brought, at its time, from one read of the history (0.405809ms)
2026-10-18T12:08:21.2671937Z ✔ a change merged automatically when g1t merged it (0.517717ms)
2026-10-18T12:08:21.2676157Z ✔ the week is seven days of landed changes, with the week before (9.819163ms)
2026-10-18T12:08:21.2678344Z ✔ days follow the viewer's time zone (3.295565ms)
2026-10-18T12:08:21.2690581Z ✔ the change from last week, and how it reads (0.223355ms)
2026-10-18T12:08:21.2690695Z ✔ a repository's merged list reaches back when it is not full or its oldest is old enough (0.277747ms)
2026-10-18T12:08:21.2690763Z ✔ landed today is the viewer's calendar day, newest first (1.083555ms)
2026-10-18T12:08:21.2690790Z ✔ tabs and sorting come from the address (0.261302ms)
2026-10-18T12:08:21.2692402Z ✔ the summary says the week plainly (0.232119ms)
2026-10-18T12:08:21.2698461Z ✔ a job waiting for a self-hosted runner says so (0.260641ms)
2026-10-18T12:08:21.4291114Z ✔ a first visit has nothing to count from and starts the clock (3.766431ms)
2026-10-18T12:08:21.4297349Z ✔ views within a visit keep counting from the visit before (0.269885ms)
2026-10-18T12:08:21.4303293Z ✔ a long gap starts a new visit, counting from the last view (0.212979ms)
2026-10-18T12:08:21.4311055Z ✔ a cookie from the future is ignored (0.207201ms)
2026-10-18T12:08:21.4316871Z ✔ cookies are read by name (0.283265ms)
2026-10-18T12:08:21.4322003Z ✔ greetings follow the hour, in the viewer's zone (16.742431ms)
2026-10-18T12:08:21.4327779Z ✔ one person's burst in one project reads as one line (0.655233ms)
2026-10-18T12:08:21.4331609Z ✔ a burst breaks across projects and long gaps (0.263255ms)
2026-10-18T12:08:21.4338170Z ✔ needs are ranked by urgency, then by how long they waited (0.557837ms)
2026-10-18T12:08:21.4342389Z ✔ a running run quiet for ten minutes is stuck (0.458007ms)
2026-10-18T12:08:21.4346664Z ✔ daily buckets put each point on its day, oldest first (0.470366ms)
2026-10-18T12:08:21.4352147Z ✔ median, pass rates and spans (0.547131ms)
2026-10-18T12:08:21.4361475Z ✔ work item to merge pairs a merge with the work item it landed (0.222544ms)
2026-10-18T12:08:21.4366779Z ✔ sparkline points span the box, zero on the floor (0.257236ms)
2026-10-18T12:08:21.4371793Z ✔ open work items by age (0.285588ms)
2026-10-18T12:08:21.4378641Z ✔ the feed names people, not account ids (0.35297ms)
2026-10-18T12:08:21.4384155Z ✔ a workspace acting as itself is g1t, never a person named after the workspace (0.154402ms)
2026-10-18T12:08:21.4389137Z ✔ waits read in the largest whole unit (0.223155ms)
2026-10-18T12:08:21.4394315Z ✔ a production deploy that finished is a line, linked to it on the current path (0.361422ms)
2026-10-18T12:08:21.5707265Z ✔ money rounds half up at the cent on whole micros, never on a float (1.484738ms)
2026-10-18T12:08:21.7375499Z ✔ a fraction of a cent reads <$0.01, and exactly nothing reads $0.00 (0.223836ms)
2026-10-18T12:08:21.7375605Z ✔ negatives lead with a minus sign (0.145097ms)
2026-10-18T12:08:21.7375715Z ✔ precise shows up to four places, trimmed down to two (0.251397ms)
2026-10-18T12:08:21.7375738Z ✔ compact is an axis label (0.249454ms)
2026-10-18T12:08:21.7375834Z ✔ whole dollars drop the cents only when there are none (0.215874ms)
2026-10-18T12:08:21.7375912Z ✔ form fields read plain dollars, rounded the same way (0.264888ms)
2026-10-18T12:08:21.7375976Z ✔ dollars from a service that counts in dollars become whole micros (0.132759ms)
2026-10-18T12:08:21.8011187Z ✔ an old page loses navigation ownership as soon as a newer click starts (40.275551ms)
2026-10-18T12:08:21.8012751Z ✔ repeated clicks to the same path have different recovery owners (0.242464ms)
2026-10-18T12:08:21.8018247Z ✔ latest sidebar destination wins: /artifacts/one then /artifacts/two (4.722986ms)
2026-10-18T12:08:21.8022586Z ✔ latest sidebar destination wins: /artifacts/one then /code (1.329956ms)
2026-10-18T12:08:21.9287201Z ✔ a path on g1t is kept, with its query and fragment (1.230997ms)
2026-10-18T12:08:21.9293305Z ✔ anything that could leave g1t goes home instead (0.315293ms)
2026-10-18T12:08:21.9298972Z ✔ sign in and sign up links carry where to come back to (0.311007ms)
2026-10-18T12:08:22.1115423Z ✔ finds a title on an element, not on a component's own prop or inside an expression (2.117347ms)
2026-10-18T12:08:22.1119688Z ✔ no native title hints in apps/web (54.21775ms)
2026-10-18T12:08:22.2254361Z ✔ the kind a loader names wins over the address (1.231848ms)
2026-10-18T12:08:22.2273209Z ✔ without one, the shape of the address decides (0.376625ms)
2026-10-18T12:08:22.2292927Z ✔ signed out: nothing here, which may be private, and sign in if it is yours (0.255394ms)
2026-10-18T12:08:22.2310806Z ✔ signed in: it does not exist or you cannot see it, and who you are (0.223865ms)
2026-10-18T12:08:22.2310915Z ✔ a missing person is simply no one, signed in or not (0.232579ms)
2026-10-18T12:08:22.2310967Z ✔ the page depends only on the kind and the viewer (0.979149ms)
2026-10-18T12:08:22.3725690Z ✔ toasts: newest last, at most three, never twice (2.653371ms)
2026-10-18T12:08:22.3733320Z ✔ a newer message in the same conversation replaces its toast (0.232929ms)
2026-10-18T12:08:22.3733627Z ✔ no toast for the conversation on screen, by page or by channel; inbox items always (0.440721ms)
2026-10-18T12:08:22.3738748Z ✔ quick replies post to the conversation, in its thread when there is one (0.267341ms)
2026-10-18T12:08:22.3745844Z ✔ badges: chat only once the feed's counts are complete; the inbox whenever known (1.676526ms)
2026-10-18T12:08:22.3754322Z ✔ reading a conversation here zeroes it at once (0.330746ms)
2026-10-18T12:08:22.3765988Z ✔ the sidebar takes the feed's counts once they are complete, and spots conversations it does not list (0.524888ms)
2026-10-18T12:08:22.3772517Z ✔ the tab title counts what needs you, once (0.382505ms)
2026-10-18T12:08:22.3778110Z ✔ browser notifications are offered once, after a DM or mention, never after a no (0.438829ms)
2026-10-18T12:08:22.3794240Z ✔ reconnecting waits a jittered, growing time, never past half a minute (0.777386ms)
2026-10-18T12:08:22.3794327Z ✔ a stack taller than the screen folds its oldest toasts into a pill, never the newest (0.383416ms)
2026-10-18T12:08:22.3794387Z ✔ a card's notification offers its links alone: nothing answers its other buttons (0.25979ms)
2026-10-18T12:08:22.3794790Z ✔ recent notifications are kept newest first, once each (0.878989ms)
2026-10-18T12:08:22.3794848Z ✔ the panel waits on the newest notification per card, for a day, until it is acted on (0.444727ms)
2026-10-18T12:08:22.3799488Z ✔ the backoff starts over only after a connection held for a while (0.25971ms)
2026-10-18T12:08:22.5023521Z ✔ successful and denied OAuth callbacks carry the exact configured issuer and state (2.535634ms)
2026-10-18T12:08:22.6623593Z ✔ a view reads from the address and writes back to it (2.586861ms)
2026-10-18T12:08:22.8212936Z ✔ numbers read as people read them (16.566066ms)
2026-10-18T12:08:22.8213072Z ✔ a live line is shown only when the page's search would have found it (0.727062ms)
2026-10-18T12:08:22.8213159Z ✔ spans nest under their parents, and orphans are still shown (0.550386ms)
2026-10-18T12:08:22.8213231Z ✔ an error's work item says what, how often and where to look (1.000572ms)
2026-10-18T12:08:22.8213295Z ✔ a new workspace has every step to do, in the guide's order (2.300982ms)
2026-10-18T12:08:22.8213358Z ✔ a step is done from the workspace's state, not from clicks (0.371217ms)
2026-10-18T12:08:22.8213416Z ✔ a provider whose check failed is not a working one (0.294633ms)
2026-10-18T12:08:22.8213487Z ✔ code is brought by a project or a connected GitHub; people by a member or an invitation (0.338588ms)
2026-10-18T12:08:22.8213541Z ✔ either the CLI or the plugin signed in connects the harness (0.243075ms)
2026-10-18T12:08:22.8213637Z ✔ skipped steps count as settled, but the AI provider cannot be skipped and a done step is not skipped (0.291497ms)
2026-10-18T12:08:22.8213695Z ✔ skipping keeps the guide's order and takes a skip back (0.299279ms)
2026-10-18T12:08:22.8213765Z ✔ it opens by itself until dismissed, and whenever it is asked for (0.268523ms)
2026-10-18T12:08:22.9243179Z ✔ the first tab to claim an arrival pings, and every other tab stays quiet (1.064988ms)
2026-10-18T12:08:22.9244622Z ✔ old marks are cleared as tabs claim, and other keys are left alone (0.922084ms)
2026-10-18T12:08:23.0633383Z ✔ a pull request g1t made shows g1t, requested by whoever asked (1.521993ms)
2026-10-18T12:08:23.0642627Z ✔ anything else shows its author (0.182624ms)
2026-10-18T12:08:23.0647693Z ✔ work g1t started itself names nobody as asking (0.225288ms)
2026-10-18T12:08:23.1944672Z ✔ one-time-code fields are findable by password managers and carry no ignore attributes (1.522515ms)
2026-10-18T12:08:23.1948751Z ✔ an authenticator code field takes six digits, with or without the space (0.373741ms)
2026-10-18T12:08:23.1956275Z ✔ a field that takes recovery codes neither cuts nor refuses one (0.170656ms)
2026-10-18T12:08:23.1975816Z ✔ a code pasted into the boxes loses its spaces and dashes; a recovery code is told apart (0.55325ms)
2026-10-18T12:08:23.3626640Z ✔ sizes read as registries show them (1.597367ms)
2026-10-18T12:08:23.3628049Z ✔ digests shorten for lists (0.27949ms)
2026-10-18T12:08:23.3628374Z ✔ an npm package is installed after .npmrc names its scope's registry, and a token for private ones (1.299129ms)
2026-10-18T12:08:23.3630863Z ✔ a Composer package is required after its workspace's repository is added, with credentials for private ones (0.276815ms)
2026-10-18T12:08:23.3638585Z ✔ a crate is added after .cargo/config.toml names its workspace's registry, with cargo login for private ones (0.460921ms)
2026-10-18T12:08:23.3645439Z ✔ a Maven artifact is fetched from its workspace's repository, with a settings.xml server for private ones (0.356524ms)
2026-10-18T12:08:23.3647997Z ✔ a NuGet package is added from its workspace's feed, named as a source with credentials for private ones (0.268273ms)
2026-10-18T12:08:23.3655267Z ✔ a gem is added with Bundler from its workspace's registry, with credentials for private ones (0.227621ms)
2026-10-18T12:08:23.3657388Z ✔ a container image is pulled by its address and tag (2.014933ms)
2026-10-18T12:08:23.3667336Z ✔ packages are listed by the visibility and order asked for (8.935587ms)
2026-10-18T12:08:23.3669465Z ✔ download counts read short (0.224316ms)
2026-10-18T12:08:23.5169211Z ✔ a page runs only its own scripts and is never framed (7.150709ms)
2026-10-18T12:08:23.5185537Z ✔ every answer gains nosniff and a referrer policy; pages are not framed (26.060321ms)
2026-10-18T12:08:23.6307890Z ✔ a part that throws is kept as failed, by what it is; one that answers is its answer (1.525599ms)
2026-10-18T12:08:23.7757350Z ✔ nothing is pending while the page is idle (27.505079ms)
2026-10-18T12:08:23.9459351Z ✔ a post is pending while it is sent and while the page reloads after it (0.338698ms)
2026-10-18T12:08:23.9459476Z ✔ following a link, or a GET form, is not a pending write (0.19969ms)
2026-10-18T12:08:23.9459567Z ✔ only the submission that matches is pending, so one row's button does not speak for another's (0.329354ms)
2026-10-18T12:08:23.9459633Z ✔ people are searched by username or name, and an email address is never looked up (1.101182ms)
2026-10-18T12:08:23.9459696Z ✔ the invite form names an address or a username (1.031828ms)
2026-10-18T12:08:23.9459752Z ✔ an invitation says the role it joins with and how long it works (0.578157ms)
2026-10-18T12:08:23.9996509Z ✔ a team's lead is a person; an old agent lead is nobody's (0.856765ms)
2026-10-18T12:08:24.0011652Z ✔ the directory lists people, in one search (1.298849ms)
2026-10-18T12:08:24.0068965Z ✔ forms read plainly (0.227501ms)
2026-10-18T12:08:24.0070354Z ✔ access to Code says where it comes from (0.243726ms)
2026-10-18T12:08:24.1240529Z ✔ bookmarks survive the cookie (2.376476ms)
2026-10-18T12:08:24.1252417Z ✔ a malformed or foreign cookie entry is dropped (0.340721ms)
2026-10-18T12:08:24.1252950Z ✔ the cookie is HttpOnly, short-lived and Secure over HTTPS (0.415894ms)
2026-10-18T12:08:24.1255512Z ✔ what each call asks for (0.276645ms)
2026-10-18T12:08:24.1256273Z ✔ only known reads are taken not to write (0.397075ms)
2026-10-18T12:08:24.1261409Z ✔ a signed-out GET never sets the bookmark cookie, so public pages stay cacheable (0.244166ms)
2026-10-18T12:08:24.1262809Z ✔ timings (0.987021ms)
2026-10-18T12:08:24.2344042Z ✔ a phone is told by its client hint, else its user agent (1.262724ms)
2026-10-18T12:08:24.3779716Z ✔ the project being looked at leads recent, once (1.826621ms)
2026-10-18T12:08:24.3782105Z ✔ pinned projects are never also recent (0.255153ms)
2026-10-18T12:08:24.3815652Z ✔ another workspace's project is not this one's recent (0.319049ms)
2026-10-18T12:08:24.3815724Z ✔ recent holds a few (0.263525ms)
2026-10-18T12:08:24.3815756Z ✔ a pin form says what to change (31.350459ms)
2026-10-18T12:08:24.3815792Z ✔ a pin moves up or down within the list (0.26661ms)
2026-10-18T12:08:24.5312925Z ✔ clear after: minutes and hours from now, the end of today, the end of the week, or never (1.509294ms)
2026-10-18T12:08:24.5313353Z ✔ a custom time is the viewer's own, and only one still ahead counts (0.32649ms)
2026-10-18T12:08:24.5313587Z ✔ pausing notifications: half an hour, an hour, or until nine tomorrow morning (0.281292ms)
2026-10-18T12:08:24.5313812Z ✔ every preset says something and clears sensibly (0.222704ms)
2026-10-18T12:08:24.5314023Z ✔ how someone shows: offline, away, active, and Do Not Disturb over either (0.314882ms)
2026-10-18T12:08:24.5314222Z ✔ a status past its time is gone, even before the feed says so (0.204366ms)
2026-10-18T12:08:24.5314409Z ✔ when something ends, in a few words (15.979657ms)
2026-10-18T12:08:24.5314583Z ✔ a tab is idle after ten minutes without input (0.221872ms)
2026-10-18T12:08:24.5314788Z ✔ custom emoji are named; ordinary emoji are not (0.367331ms)
2026-10-18T12:08:24.5315059Z ✔ people merge by id, and a later word wins (0.347742ms)
2026-10-18T12:08:24.7004813Z ✔ an uploaded image is served from the usercontent origin by its hash (1.040031ms)
2026-10-18T12:08:24.7007923Z ✔ an upload is a PNG, JPEG or WebP of at most 5 MB, read by its bytes (37.472134ms)
2026-10-18T12:08:24.7017057Z ✔ production elsewhere is taken at its address, versioned by the day (0.661032ms)
2026-10-18T12:08:24.7017871Z ✔ a reported production deployment gives the address and the commit (0.365539ms)
2026-10-18T12:08:24.7022218Z ✔ no screenshot when it is not elsewhere, has no address, or shows an upload (0.261623ms)
2026-10-18T12:08:24.7022301Z ✔ a version changes with the deploy or the day (0.22001ms)
2026-10-18T12:08:24.7032504Z ✔ the card tries the screenshot, then the upload; a preferred upload alone (0.340961ms)
2026-10-18T12:08:24.8378709Z ✔ a CLI-only fix keeps latest branch checks separate from the older production commit (1.801904ms)
2026-10-18T12:08:25.0002699Z ✔ the same commit is not reported twice, and a project without deployment still shows branch checks (0.305919ms)
2026-10-18T12:08:25.0006342Z ✔ an unavailable branch head never mislabels deployed checks as latest branch checks (0.37956ms)
2026-10-18T12:08:25.0006466Z ✔ a failed same-commit retry does not replace the serving deployment (0.196765ms)
2026-10-18T12:08:25.0419482Z ✔ a package reads as its registry, its name and its latest version (1.374602ms)
2026-10-18T12:08:25.0419647Z ✔ what a library publishes comes before an image, released ones first (1.103125ms)
2026-10-18T12:08:25.0419936Z ✔ each ecosystem links to how it publishes (0.262054ms)
2026-10-18T12:08:25.0420007Z ✔ each choice sets a kind and where it runs, and reads back (0.248744ms)
2026-10-18T12:08:25.0425224Z ✔ a project's badge says what it is and where it runs (0.307111ms)
2026-10-18T12:08:25.0426483Z ✔ links show homepage, docs, then the rest, never twice (0.658087ms)
2026-10-18T12:08:25.0429114Z ✔ an overview form changes only what it carries (33.038562ms)
2026-10-18T12:08:25.0436834Z ✔ the latest release is the newest tag by its commit (9.173465ms)
2026-10-18T12:08:25.0441572Z ✔ cards show production, else the homepage or docs (0.568593ms)
2026-10-18T12:08:25.0442496Z ✔ custom links are read from a form's rows, blank rows left out (0.637236ms)
2026-10-18T12:08:25.0443552Z ✔ only what g1t deploys leads with production (0.29331ms)
2026-10-18T12:08:25.2289274Z ✔ an empty address is the default list (3.13913ms)
2026-10-18T12:08:25.2303445Z ✔ what the address says is read, and nonsense is the default (0.395423ms)
2026-10-18T12:08:25.2303802Z ✔ the address round-trips, and a change goes back to page one (0.505589ms)
2026-10-18T12:08:25.2309156Z ✔ archived projects are left out unless asked for (11.440476ms)
2026-10-18T12:08:25.2317870Z ✔ filters narrow by visibility, kind, language and deployments (0.594101ms)
2026-10-18T12:08:25.2320609Z ✔ search matches every word, in the name, slug or description, names that start with it first (0.707661ms)
2026-10-18T12:08:25.2321078Z ✔ each sort orders as it says, ties by name (0.88657ms)
2026-10-18T12:08:25.2334208Z ✔ pages hold PAGE_SIZE, and a page past the end is the last (0.455233ms)
2026-10-18T12:08:25.2334527Z ✔ facets count the whole workspace (0.705229ms)
2026-10-18T12:08:25.2334624Z ✔ the keyboard moves through rows and stops at the ends (0.458068ms)
2026-10-18T12:08:25.3988944Z ✔ code is not docs: a project never gets a Docs tab (2.197908ms)
2026-10-18T12:08:25.4010339Z ✔ build configuration is discoverable under deployments only with integration access (1.441573ms)
2026-10-18T12:08:25.4013838Z ✔ Storage is planned while implemented environments are no longer marked Soon (0.65278ms)
2026-10-18T12:08:25.5904771Z ✔ a project page names its repository (1.949496ms)
2026-10-18T12:08:25.5916268Z ✔ pages that are not a repository's name none (0.37347ms)
2026-10-18T12:08:25.5923984Z ✔ only a repository that is there and public is served from the cache (0.552849ms)
2026-10-18T12:08:25.8209593Z ✔ a pull request's own snake_case fields are read into camelCase (1.879389ms)
2026-10-18T12:08:25.8232348Z ✔ camelCase is taken as it is (0.704306ms)
2026-10-18T12:08:25.8232538Z ✔ getPull reads the work service's answer at the edge (43.750424ms)
2026-10-18T12:08:25.8232578Z ✔ getPull passes a refusal through (0.647662ms)
2026-10-18T12:08:26.0269579Z ✔ every page asks billing for the same month (2.175985ms)
2026-10-18T12:08:26.1874862Z ✔ Home and Usage show one figure for the month (0.963065ms)
2026-10-18T12:08:26.1874928Z ✔ a reference's written form (1.414002ms)
2026-10-18T12:08:26.1875143Z ✔ #N in a repository goes through its ref page; in a workspace, to its work item (0.327872ms)
2026-10-18T12:08:26.2669622Z ✔ the container registry's paths go to the packages service (1.01975ms)
2026-10-18T12:08:26.2669860Z ✔ the npm registry's paths go to the packages service (0.52013ms)
2026-10-18T12:08:26.2673621Z ✔ the Composer registries go to the packages service (0.204667ms)
2026-10-18T12:08:26.2674513Z ✔ the Cargo registries go to the packages service (0.199119ms)
2026-10-18T12:08:26.2692704Z ✔ the Maven repositories go to the packages service (0.21325ms)
2026-10-18T12:08:26.2692804Z ✔ the NuGet feeds go to the packages service (0.19979ms)
2026-10-18T12:08:26.2692878Z ✔ the RubyGems registries go to the packages service (0.351778ms)
2026-10-18T12:08:26.2692960Z ✔ git goes to repos, and everything else is the site's (0.150016ms)
2026-10-18T12:08:26.2693023Z ✔ a registry request names its workspace, and can be moved to another (0.558337ms)
2026-10-18T12:08:26.4130555Z ✔ the typed name confirms only the full name, in any case (1.339971ms)
2026-10-18T12:08:26.4130685Z ✔ filters by visibility and archived (1.445048ms)
2026-10-18T12:08:26.4130766Z ✔ search matches every word in name, description or topics (0.405779ms)
2026-10-18T12:08:26.4130797Z ✔ counts each filter (0.468713ms)
2026-10-18T12:08:26.4130817Z ✔ an unknown filter is all (0.264827ms)
2026-10-18T12:08:26.4130878Z ✔ a bulk action is summed up, with each failure and why (0.364477ms)
2026-10-18T12:08:26.4130935Z ✔ a renamed branch keeps the rest of the address (0.240221ms)
2026-10-18T12:08:26.4130959Z ✔ days until a date, never negative (0.235543ms)
2026-10-18T12:08:26.4131203Z ✔ dates read the same everywhere (17.603243ms)
2026-10-18T12:08:26.4131225Z ✔ names are tidied, not judged (0.502784ms)
2026-10-18T12:08:26.5580002Z ✔ refs name their branch or tag (3.461133ms)
2026-10-18T12:08:26.5588298Z ✔ a project's overview follows what it runs, who is working on it and what may need someone, not every push (0.456856ms)
2026-10-18T12:08:26.5589917Z ✔ the overview hears its own commit's checks, and every pull request's finished ones (0.270776ms)
2026-10-18T12:08:26.5590941Z ✔ the files page follows refs, checks, releases and deployments (0.364176ms)
2026-10-18T12:08:26.5592617Z ✔ a page of files hears its own branch and its commit's checks, not every branch's (0.288473ms)
2026-10-18T12:08:26.5594811Z ✔ the commits page hears pushes to its own branch only (0.242184ms)
2026-10-18T12:08:26.5600425Z ✔ branches, tags, and the list of pull requests (0.294973ms)
2026-10-18T12:08:26.5602254Z ✔ a pull request hears its own changes, its head branch and its head's checks (0.262824ms)
2026-10-18T12:08:26.5646899Z ✔ a pull request does not hear a work item that shares its number (0.245459ms)
2026-10-18T12:08:26.5647039Z ✔ the Sessions page hears claims, sessions starting and ending, what the queue finds, and merges (0.34648ms)
2026-10-18T12:08:26.5647140Z ✔ a session going on reaches the pull request it is on, and no other (0.165098ms)
2026-10-18T12:08:26.5647214Z ✔ a session's page hears every session, claim and overlap in the repository (0.241352ms)
2026-10-18T12:08:26.5647246Z ✔ runs, one run, and security (0.223235ms)
2026-10-18T12:08:26.5647318Z ✔ new commits are counted, and uncounted when a push was not (0.549735ms)
2026-10-18T12:08:26.5647872Z ✔ a change waits a second for more, five at most, then refreshes (1.048213ms)
2026-10-18T12:08:26.5647939Z ✔ never under someone typing, a dialog, or a navigation: it waits for them (0.244266ms)
2026-10-18T12:08:26.5648000Z ✔ a burst of changes refreshes at most every two seconds (0.903185ms)
2026-10-18T12:08:26.5648061Z ✔ a tab out of view never refreshes; back in view, it catches up at once (0.123145ms)
2026-10-18T12:08:26.5648143Z ✔ without the socket: back in view every 30 s at most, a poll every minute in view, never with it (0.248202ms)
2026-10-18T12:08:26.5648205Z ✔ typing is in text boxes, text areas and editors (0.190296ms)
2026-10-18T12:08:26.5663289Z ✔ the bottom of the page, with some slack (0.136985ms)
2026-10-18T12:08:26.5664294Z ✔ a workspace's Work pages: the list hears every work item, an item page its own (0.139409ms)
2026-10-18T12:08:26.8019507Z ✔ only an active navigation carries its build; fetchers, refreshes and writes never force a document switch (34.859514ms)
2026-10-18T12:08:26.8023642Z ✔ a request that got no answer, in each browser's words, is a network failure (2.103456ms)
2026-10-18T12:08:26.8031475Z ✔ a stale build, an abort or a server's error is not (0.173781ms)
2026-10-18T12:08:26.8032449Z ✔ only the router's own reads are sent again (0.143365ms)
2026-10-18T12:08:26.8037333Z ✔ a read for the page already showing is a refresh; one for another page is a navigation (0.236084ms)
2026-10-18T12:08:26.8037881Z ✔ retries come quickly at first, then settle (0.197687ms)
2026-10-18T12:08:26.8041424Z ✔ a refresh waits out the browser being offline, however long (0.282633ms)
2026-10-18T12:08:26.8046517Z ✔ a network that is up and never answers is no blip: a refresh gives up, and so does a click (0.192098ms)
2026-10-18T12:08:26.8051074Z ✔ while the error page tries on its own, a read is tried once (0.135083ms)
2026-10-18T12:08:26.9567323Z ✔ everything may be crawled but a file's blame (2.297047ms)
2026-10-18T12:08:26.9576525Z ✔ g1t.sh names its docs' map too (0.328092ms)
2026-10-18T12:08:27.1213895Z ✔ a new ruleset protects the default branch, and a workspace's holds everywhere (2.016486ms)
2026-10-18T12:08:27.2769613Z ✔ every rule type has a label, a group and its defaults (0.508814ms)
2026-10-18T12:08:27.2769672Z ✔ an export imports back as it was (0.717497ms)
2026-10-18T12:08:27.2769753Z ✔ an import fills in what it leaves out and refuses what is not a ruleset (0.895914ms)
2026-10-18T12:08:27.2769812Z ✔ who may bypass, and whose changes a rule holds for, read plainly (0.287071ms)
2026-10-18T12:08:27.2769839Z ✔ what a ruleset targets, in a few words (0.255814ms)
2026-10-18T12:08:27.2769855Z ✔ sizes read as KB, MB or GB (1.209986ms)
2026-10-18T12:08:27.2769867Z ✔ expiry reads from now (0.2662ms)
2026-10-18T12:08:27.2769920Z ✔ KV is asked for an old, finished run's artifacts only until they have expired (0.303185ms)
2026-10-18T12:08:27.3585295Z ✔ a re-run of failed jobs whose job waits for a self-hosted runner can be cancelled, not re-run (1.778098ms)
2026-10-18T12:08:27.3586984Z ✔ an earlier attempt's page offers Cancel run while the latest attempt runs (0.216875ms)
2026-10-18T12:08:27.3590129Z ✔ a job not finished keeps the latest attempt going, whatever the run's own status says (0.249694ms)
2026-10-18T12:08:27.3619503Z ✔ every status a run waits or runs in can be cancelled (0.201222ms)
2026-10-18T12:08:27.3619600Z ✔ a finished run is re-run from its latest attempt only (0.178017ms)
2026-10-18T12:08:27.3619658Z ✔ a run being cancelled shows Force cancel (0.207592ms)
2026-10-18T12:08:27.3619727Z ✔ neither without Write, nor for a run whose workflow file could not be used (0.154452ms)
2026-10-18T12:08:27.5076962Z ✔ columns go by the longest path of needs (2.716846ms)
2026-10-18T12:08:27.5078616Z ✔ a need of a job not in the run is left out (0.283515ms)
2026-10-18T12:08:27.5082090Z ✔ a cycle cannot loop the layout (3.044969ms)
2026-10-18T12:08:27.5083773Z ✔ ordering a column by its needs takes out a crossing (0.710836ms)
2026-10-18T12:08:27.5084874Z ✔ ordering keeps the order as listed when nothing crosses (0.289234ms)
2026-10-18T12:08:27.5092475Z ✔ a matrix's jobs are one node, named without their combination (0.380221ms)
2026-10-18T12:08:27.5092748Z ✔ an expanded matrix is taller, and its connectors still meet its first line (0.463155ms)
2026-10-18T12:08:27.5096702Z ✔ a matrix's calls share the caller's box, each call's jobs named by its combination (0.464407ms)
2026-10-18T12:08:27.5099406Z ✔ a called workflow's jobs sit in a box under the job calling it (0.649555ms)
2026-10-18T12:08:27.5100474Z ✔ a connector's colour follows the run: red from a failure, moving into a running job (0.556555ms)
2026-10-18T12:08:27.5101645Z ✔ a deployment's address makes its node taller (0.278588ms)
2026-10-18T12:08:27.5104244Z ✔ several jobs stand together as running, then as the worst ending (0.196314ms)
2026-10-18T12:08:27.5108312Z ✔ connectors run straight on one row, and turn with rounded corners between rows (0.290406ms)
2026-10-18T12:08:27.5111303Z ✔ an empty run lays out as nothing (0.166009ms)
2026-10-18T12:08:27.5121711Z ✔ a matrix whose jobs deploy to one address shows it once (0.311989ms)
2026-10-18T12:08:27.6506874Z ✔ g1t cloud is the running sandbox runs not handed to the workspace's runners, and the jobs in g1t's sandboxes (9.725112ms)
2026-10-18T12:08:27.6507047Z ✔ a service that does not answer leaves only its part out (0.372609ms)
2026-10-18T12:08:27.6507083Z ✔ a full list says there may be more (0.175734ms)
2026-10-18T12:08:27.6507168Z ✔ this month's time adds agent sandbox and sandbox time for g1t cloud, and self-hosted time for the workspace's own (0.352799ms)
2026-10-18T12:08:27.6507667Z ✔ prices are each machine's rate a minute, from the catalogue (0.394271ms)
2026-10-18T12:08:27.6538703Z ✔ machine time and prices read as people say them (0.258047ms)
2026-10-18T12:08:27.7835573Z ✔ quoted runs stay whole (1.844268ms)
2026-10-18T12:08:27.7858546Z ✔ a qualifier is read, quotes and all (0.344657ms)
2026-10-18T12:08:27.7878506Z ✔ a filter replaces its qualifier and keeps the rest (0.401643ms)
2026-10-18T12:08:27.7878613Z ✔ is: values of one family replace each other (0.320651ms)
2026-10-18T12:08:27.7878683Z ✔ addresses carry the query, the tab and the page (0.438968ms)
2026-10-18T12:08:27.7878708Z ✔ counts stop at the cap (0.185549ms)
2026-10-18T12:08:27.9339361Z ✔ the state parameter falls back to open (1.025458ms)
2026-10-18T12:08:27.9349608Z ✔ ids say which tab and which role an alert takes (0.237646ms)
2026-10-18T12:08:27.9367496Z ✔ alerts are counted by state (0.768613ms)
2026-10-18T12:08:27.9367610Z ✔ likely test values are listed apart from real secrets (0.23342ms)
2026-10-18T12:08:27.9367689Z ✔ packages group their alerts and take the worst severity (0.497586ms)
2026-10-18T12:08:27.9367713Z ✔ versions compare number by number (0.201372ms)
2026-10-18T12:08:27.9367731Z ✔ the newest security update wins (0.202084ms)
2026-10-18T12:08:27.9367789Z ✔ a secret's activity starts with when it was found (8.646764ms)
2026-10-18T12:08:27.9374330Z ✔ an older decision without a row is shown from the alert itself (0.5201ms)
2026-10-18T12:08:27.9381389Z ✔ a dependency's activity links its pull request and work item (0.373801ms)
2026-10-18T12:08:28.0600246Z ✔ every feature is one row with a status word and one thing to do (2.060932ms)
2026-10-18T12:08:28.0641239Z ✔ what is on reads as enabled, with a link to it (0.309814ms)
2026-10-18T12:08:28.0641383Z ✔ someone who cannot change settings sees the rows without the switches (0.387482ms)
2026-10-18T12:08:28.0641467Z ✔ the policy template says how to report and names the private form when it is on (0.346309ms)
2026-10-18T12:08:28.1946121Z ✔ secret filters are read from the address and narrow the list (1.759339ms)
2026-10-18T12:08:28.3468991Z ✔ secret types are listed once each, custom patterns by name (8.249046ms)
2026-10-18T12:08:28.3469055Z ✔ code filters and counts (0.523765ms)
2026-10-18T12:08:28.3469148Z ✔ old Security links go to the sections that replaced their tabs (0.25345ms)
2026-10-18T12:08:28.3469231Z ✔ the starter workflow scans each language it finds, then uploads SARIF for the right ref (0.791098ms)
2026-10-18T12:08:28.3469259Z ✔ a trend is scaled to its tallest day (1.500011ms)
2026-10-18T12:08:28.3469316Z ✔ a session card's state reads as what is happening (1.674192ms)
2026-10-18T12:08:28.3469376Z ✔ every state has a chip, whatever its case; an unknown one is quiet (0.295363ms)
2026-10-18T12:08:28.4268342Z ✔ a tool call says its tool once (1.951388ms)
2026-10-18T12:08:28.4277172Z ✔ an MCP tool reads by its server, resource and action (0.383115ms)
2026-10-18T12:08:28.4299418Z ✔ the tool comes from the text when the entry has none (0.304627ms)
2026-10-18T12:08:28.4299520Z ✔ tool calls between messages run together, results under their calls (0.479289ms)
2026-10-18T12:08:28.4299588Z ✔ a prompt's work item and comment blocks read as quotes (0.374011ms)
2026-10-18T12:08:28.5906945Z ✔ every kind of session opens where it is shown (1.236425ms)
2026-10-18T12:08:28.5915770Z ✔ a session is named by its title, its subagent task, its pull request, never nothing (2.554082ms)
2026-10-18T12:08:28.5921782Z ✔ on a work item's card, a session with no title says what it is on, never a bare pull request number (0.256315ms)
2026-10-18T12:08:28.5928018Z ✔ Sessions keeps its filters in the address and drops what it does not know (1.278819ms)
2026-10-18T12:08:28.5929959Z ✔ Sessions can be a work item's own: ?item=12 (0.541673ms)
2026-10-18T12:08:28.5931674Z ✔ live sessions come apart from those that ended, most recently heard from first (9.635227ms)
2026-10-18T12:08:28.5937015Z ✔ a session's cost reads as an estimate at list price, and says when some usage is priced as unknown (8.672102ms)
2026-10-18T12:08:28.7044831Z ✔ full overrides remain visible on both scopes (1.181964ms)
2026-10-18T12:08:28.7049835Z ✔ environment-restricted project keys still suppress workspace fallback (0.195794ms)
2026-10-18T12:08:28.7087027Z ✔ only shared readers are overridden (0.181732ms)
2026-10-18T12:08:28.7091875Z ✔ different names, kinds and readers do not override (0.176525ms)
2026-10-18T12:08:28.8151728Z ✔ a Mac shows the Command key, everything else Ctrl (1.054953ms)
2026-10-18T12:08:29.0221941Z ✔ weeks of seven days end with the last day, and the quarter starts on its first month (3.902426ms)
2026-10-18T12:08:29.0229589Z ✔ batches add up per repository, and quiet weeks stay in the line (9.607866ms)
2026-10-18T12:08:29.0238206Z ✔ usage by day falls into its week (0.407811ms)
2026-10-18T12:08:29.0238317Z ✔ the pulse says each figure against last week, and whether that is good news (14.860297ms)
2026-10-18T12:08:29.0241234Z ✔ the change holding up the most work items leads, with what it holds up (0.768793ms)
2026-10-18T12:08:29.0263814Z ✔ a quick draft waiting long for review is said with both times; a slowdown alone is said against the weeks before (1.61975ms)
2026-10-18T12:08:29.0264306Z ✔ spend that concentrates in one milestone is a finding; spread-out spend is not (1.010325ms)
2026-10-18T12:08:29.0264382Z ✔ a milestone closed this week says when against its due date, and what it took (0.838328ms)
2026-10-18T12:08:29.0264451Z ✔ stalled changes and rework are findings only when they moved (0.922754ms)
2026-10-18T12:08:29.0266264Z ✔ who works where: new ground, one person carrying a project, and a first agent merge (1.595875ms)
2026-10-18T12:08:29.0266361Z ✔ findings come highest first, and the week is said in a sentence that claims nothing about what needs anyone (0.430455ms)
2026-10-18T12:08:29.0266651Z ✔ waits are said in words and in a few characters (0.955204ms)
2026-10-18T12:08:29.0266719Z ✔ the spend flow threads each pull request through its milestone, work item and project (0.819209ms)
2026-10-18T12:08:29.0274597Z ✔ the rhythm adds each group's days and leaves out groups with nothing (0.463746ms)
2026-10-18T12:08:29.0276818Z ✔ quarter spend adds each pull request's share of its sessions to g1t's usage (0.305008ms)
2026-10-18T12:08:29.0279310Z ✔ a harness catching on: two or more people started this month, two weeks or more after the first (0.612299ms)
2026-10-18T12:08:29.0281361Z ✔ agents' direct commits count as what they landed, and as what spend is spread over (0.530897ms)
2026-10-18T12:08:29.0288478Z ✔ the last two weeks day by day: every repository added up, agents' and people's, and empty days as zeros (0.363826ms)
2026-10-18T12:08:29.2287569Z ✔ only the site's live sockets take a ticket, in the form the routes match (2.287883ms)
2026-10-18T12:08:29.3986852Z ✔ a ticket opens the socket it was made for, as the token's owner (55.572753ms)
2026-10-18T12:08:29.3986918Z ✔ a ticket past its minute opens nothing (2.36597ms)
2026-10-18T12:08:29.3986983Z ✔ a ticket opens no other socket: another kind, or another workspace's (4.348404ms)
2026-10-18T12:08:29.3987039Z ✔ a ticket changed in any way, or sealed with another key, opens nothing (7.394154ms)
2026-10-18T12:08:29.3987107Z ✔ the token is checked again when the socket opens: deleted, revoked or without the website permission, it opens nothing (4.039912ms)
2026-10-18T12:08:29.3987152Z ✔ a ticket is never taken by anything but a socket's upgrade (5.01869ms)
2026-10-18T12:08:29.3987215Z ✔ a session's page opens its sockets at once and adds no ticket; a token's page asks for one first (13.261608ms)
2026-10-18T12:08:29.3987275Z ✔ a ticket for a chat-scoped token opens Chat's socket and the feed, checked again as it opens (4.101133ms)
2026-10-18T12:08:29.4839734Z ✔ every cue in both sets is short, starts and ends in silence, and never clips (44.604355ms)
2026-10-18T12:08:29.4847593Z ✔ the cues are told apart: different figures, and Bright is higher and shorter than Soft (0.752729ms)
2026-10-18T12:08:29.4861939Z ✔ the envelope rises from nothing, falls, and lands on exactly nothing (0.233781ms)
2026-10-18T12:08:29.4866873Z ✔ volume is a curve: half way reads as half as loud, not a third (0.410525ms)
2026-10-18T12:08:29.6383702Z ✔ only a workspace's SAML address is answered before React Router (2.005519ms)
2026-10-18T12:08:29.6391279Z ✔ afterwards it goes on to the workspace, never off the site (0.638508ms)
2026-10-18T12:08:29.6402377Z ✔ why a SAML sign-in failed survives the trip in a cookie (0.600031ms)
2026-10-18T12:08:29.6402499Z ✔ a workspace's provider is pointed at its id, which a rename never changes (1.325258ms)
2026-10-18T12:08:29.6414342Z ✔ the SAML binding cookie crosses sites to /auth/sso alone (0.442324ms)
2026-10-18T12:08:29.8164398Z ✔ a client navigation that hits an older build reloads the page (1.932109ms)
2026-10-18T12:08:29.8173511Z ✔ an address only the new build knows reloads, once it fell to the catch-all (0.234312ms)
2026-10-18T12:08:29.8230117Z ✔ a document load, or any other error, shows the error page (0.436165ms)
2026-10-18T12:08:29.8240023Z ✔ the location a tab's document loaded at is no client navigation, whatever its key (0.491868ms)
2026-10-18T12:08:29.8257071Z ✔ an address loaded again once is not loaded again (0.514221ms)
2026-10-18T12:08:29.9925509Z ✔ each stack is found by what is at the root (2.566951ms)
2026-10-18T12:08:29.9935323Z ✔ a Node project's workflow runs the scripts it has (1.416896ms)
2026-10-18T12:08:29.9943191Z ✔ an unreadable package.json runs the usual scripts only if present (0.342584ms)
2026-10-18T12:08:29.9954475Z ✔ Rust, Go and an unknown project each get a workflow (0.677186ms)
2026-10-18T12:08:29.9954570Z ✔ the workflow is well-formed: one job per stack, steps under each (0.968423ms)
2026-10-18T12:08:29.9956326Z ✔ a branch name is found that is free (2.023697ms)
2026-10-18T12:08:30.1618666Z ✔ the status page lives on its own host (1.483586ms)
2026-10-18T12:08:30.1631555Z ✔ the short line is the report's title, else words for its state (0.331156ms)
2026-10-18T12:08:30.1642378Z ✔ each state has its own dot (0.305358ms)
2026-10-18T12:08:30.3683497Z ✔ organization contact is the supplied public email, without an invented postal address (1.328003ms)
2026-10-18T12:08:30.5964638Z ✔ an idle page has nothing to retry (1.235745ms)
2026-10-18T12:08:30.5970810Z ✔ a navigation still loading is retried at its full address (0.264677ms)
2026-10-18T12:08:30.5975999Z ✔ a form still being sent is never sent again (0.333029ms)
2026-10-18T12:08:30.7749456Z ✔ a profile's tabs are paths, and its overview is the profile (3.800482ms)
2026-10-18T12:08:30.7749618Z ✔ an old profile address with ?tab= goes to the tab's path, keeping its filters (0.627411ms)
2026-10-18T12:08:30.7749689Z ✔ a pull request's tabs are /session and /files (0.296735ms)
2026-10-18T12:08:30.7749741Z ✔ an old pull request address with ?tab= goes to the tab's path, keeping the rest (0.371297ms)
2026-10-18T12:08:30.7753914Z ✔ the Branches page's tabs are paths (0.354192ms)
2026-10-18T12:08:30.7755548Z ✔ rules' Insights is a path, for a repository and a workspace (0.449956ms)
2026-10-18T12:08:30.7759474Z ✔ notifications' Saved and Done are paths; the severity tabs and reasons narrow them (2.405379ms)
2026-10-18T12:08:30.9886931Z ✔ a pax record's length counts itself (1.802634ms)
2026-10-18T12:08:30.9892253Z ✔ a long path splits into ustar's prefix and name when it can (1.817837ms)
2026-10-18T12:08:30.9905147Z ✔ headers are ustar, with the commit in a pax global header (5.056877ms)
2026-10-18T12:08:31.0406450Z ✔ tar reads the archive back: files, folders, modes, a symlink and long paths (105.612765ms)
2026-10-18T12:08:31.2766254Z ✔ team pages live under the workspace's teams (1.870927ms)
2026-10-18T12:08:31.2768002Z ✔ teams are found by every word of the search (2.404718ms)
2026-10-18T12:08:31.2771090Z ✔ your teams come first (0.453671ms)
2026-10-18T12:08:31.2773136Z ✔ a team can go under any visible team but itself and those below it (0.588392ms)
2026-10-18T12:08:31.2777220Z ✔ a new team reads its form (42.471946ms)
2026-10-18T12:08:31.2782739Z ✔ settings change only what their form has (0.763195ms)
2026-10-18T12:08:31.2787823Z ✔ review assignment is read within bounds (0.775674ms)
2026-10-18T12:08:31.2794555Z ✔ counts leave out what is none (0.309725ms)
2026-10-18T12:08:31.2800511Z ✔ who may create teams follows the workspace's setting (4.679932ms)
2026-10-18T12:08:31.4720158Z ✔ the cookie keeps auto, light or dark, and anything else is the default (1.704207ms)
2026-10-18T12:08:31.6236319Z ✔ the cookie is kept a year, on every path, and secure on https (0.369975ms)
2026-10-18T12:08:31.6236459Z ✔ Light and Dark are data-theme on <html>; Auto leaves it to the system (0.285308ms)
2026-10-18T12:08:31.6236533Z ✔ a chosen theme is itself; Auto with no browser to ask is dark (0.27351ms)
2026-10-18T12:08:31.6970204Z ✔ a moment within the last week is said in minutes, hours or days (2.675394ms)
2026-10-18T12:08:31.6975700Z ✔ a moment weeks ago is said in weeks, and older ones by their date (23.63297ms)
2026-10-18T12:08:31.6986570Z ✔ a moment that can't be read says nothing (0.62647ms)
2026-10-18T12:08:31.7012570Z ✔ the hint gives the moment in full (0.544667ms)
2026-10-18T12:08:31.9073615Z ✔ a profile's local time is the time of day in its zone (22.931367ms)
2026-10-18T12:08:31.9073768Z ✔ no zone, or one the runtime does not know, shows no time (0.632569ms)
2026-10-18T12:08:31.9074051Z ✔ the zones to pick from are sorted, with UTC and a saved one always there (5.577188ms)
2026-10-18T12:08:31.9074091Z ✔ zones read as places, with their offset (1.264357ms)
2026-10-18T12:08:32.1083718Z ✔ every scope is on the checklist exactly once, admin ones under Dangerous (8.666704ms)
2026-10-18T12:08:32.1083880Z ✔ ticked boxes store the highest level of each resource (1.874973ms)
2026-10-18T12:08:32.1086978Z ✔ full access is null, and nothing ticked is refused (0.711577ms)
2026-10-18T12:08:32.1091071Z ✔ a higher level ticks the lower ones of its resource only (0.311648ms)
2026-10-18T12:08:32.1097880Z ✔ full access ticks the top level of everything (1.276225ms)
2026-10-18T12:08:32.1104524Z ✔ presets are recognised however their scopes are written (2.042716ms)
2026-10-18T12:08:32.1109526Z ✔ a token's access reads plainly (1.243546ms)
2026-10-18T12:08:32.1120214Z ✔ an application asking for nothing usable gets the default set, never admin (0.441552ms)
2026-10-18T12:08:32.1127859Z ✔ consent keeps only what was asked for (0.721883ms)
2026-10-18T12:08:32.1132534Z ✔ expiry words (0.881162ms)
2026-10-18T12:08:32.2857267Z ✔ the accent is the logo's lavender, and mint means success (1.895754ms)
2026-10-18T12:08:32.2857377Z ✔ merged reads apart from the accent (0.441362ms)
2026-10-18T12:08:32.2857552Z ✔ text colours meet WCAG AA on every surface (1.58609ms)
2026-10-18T12:08:32.2857625Z ✔ the dark base reads on an accent or success button (1.777567ms)
2026-10-18T12:08:32.2857692Z ✔ focus borders in the dim accent stand out from the page (0.336585ms)
2026-10-18T12:08:32.2857757Z ✔ the light accent is a deeper lavender, and light success is green (0.264887ms)
2026-10-18T12:08:32.2857787Z ✔ every dark token has a light one (1.04654ms)
2026-10-18T12:08:32.2857843Z ✔ light text colours meet WCAG AA on every light surface (0.677597ms)
2026-10-18T12:08:32.2857900Z ✔ the light page reads on an accent or success button (0.490467ms)
2026-10-18T12:08:32.2857958Z ✔ light focus borders in the dim accent stand out from the page (0.391487ms)
2026-10-18T12:08:32.4886681Z ✔ the first frame is Home before anything settles, the same on the server and the client (2.367993ms)
2026-10-18T12:08:32.6393084Z ✔ the scenes come in the story's order: Home first (4.960883ms)
2026-10-18T12:08:32.6393218Z ✔ checks pass before review, and the queue merges only after approval (0.524737ms)
2026-10-18T12:08:32.6393315Z ✔ Home's #431 opens the pull request, and the cursor stays out of its way until it has merged (0.362153ms)
2026-10-18T12:08:32.6393391Z ✔ the session plays back in full before the tour moves on to Chat (0.516504ms)
2026-10-18T12:08:32.6393411Z ✔ the loop wraps (0.222443ms)
2026-10-18T12:08:32.6393482Z ✔ pills start where their scene does, and progress runs 0 to 1 (0.456275ms)
2026-10-18T12:08:32.6393515Z ✔ each still shows its step's point (0.267361ms)
2026-10-18T12:08:32.6393576Z ✔ Dana tells support only after Priya says it shipped (0.570025ms)
2026-10-18T12:08:32.6393669Z ✔ on Home, notifications settle and leave before Summarize, and the summary finishes before #431 is opened (0.579229ms)
2026-10-18T12:08:32.6558759Z ✔ Turnstile is on only with both its site key and its secret (3.339651ms)
2026-10-18T12:08:32.6568502Z ✔ only Cloudflare's success counts as a pass (0.909475ms)
2026-10-18T12:08:32.6576155Z ✔ the page's policy lets the widget's script and frame load, and nothing else framed (0.97325ms)
2026-10-18T12:08:32.9274041Z ✔ periods resolve to whole UTC days, both ends included (4.720062ms)
2026-10-18T12:08:32.9278295Z ✔ columns cover every day, stack products, and add up when cumulative (25.330306ms)
2026-10-18T12:08:32.9279301Z ✔ the money axis has clean ticks, never the same label twice (1.32651ms)
2026-10-18T12:08:32.9280940Z ✔ quantities read in their units (6.378641ms)
2026-10-18T12:08:32.9283812Z ✔ the receipt shows usage at price, then what paid, then what is charged (0.444127ms)
2026-10-18T12:08:32.9288590Z ✔ grouping by project adds a project's meters together (2.330316ms)
2026-10-18T12:08:32.9296567Z ✔ the CSV has a row per day and meter with anything on it (0.667532ms)
2026-10-18T12:08:32.9303192Z ✔ test-mode hints are for g1t's own people (0.223836ms)
2026-10-18T12:08:32.9304976Z ✔ the pending note says what the close will charge, with the fraction of a cent that explains a gap (0.521442ms)
2026-10-18T12:08:32.9305908Z ✔ products no longer offered still read in older usage (0.616384ms)
2026-10-18T12:08:33.1408313Z ✔ a raw file's path keeps a ref with slashes in one segment (3.502485ms)
2026-10-18T12:08:33.1431511Z ✔ paths that are not a file, or climb out of the repository, are refused (0.425098ms)
2026-10-18T12:08:33.1431631Z ✔ usercontent is its own host, or a path on the site (0.49951ms)
2026-10-18T12:08:33.1895602Z ✔ a token is good for its file alone, until it ends (21.561492ms)
2026-10-18T12:08:33.1897193Z ✔ files are served as data that cannot run (40.753458ms)
2026-10-18T12:08:33.1902370Z ✔ a README's relative pictures are the repository's files at the same commit (0.997617ms)
2026-10-18T12:08:33.1904357Z ✔ commits are full hashes (0.391166ms)
2026-10-18T12:08:33.4899366Z ✔ a token with the website permission signs the request in as its owner (51.834093ms)
2026-10-18T12:08:33.6440863Z ✔ a token without the website permission is no one: a page loads signed out, data and posts get a 401 (3.999541ms)
2026-10-18T12:08:33.6440990Z ✔ a revoked, expired or made-up token is refused, and nothing else is tried (0.536706ms)
2026-10-18T12:08:33.6441064Z ✔ tokens are read from the Authorization header only, never a query string or a cookie (0.545799ms)
2026-10-18T12:08:33.6441137Z ✔ what needs a real sign-in is refused with a token, whatever the method (1.580531ms)
2026-10-18T12:08:33.6441228Z ✔ deleting or giving away a workspace and payment methods are refused; other changes there are not (11.575007ms)
2026-10-18T12:08:33.6441292Z ✔ only a person's own token with the permission is a website user (0.21266ms)
2026-10-18T12:08:33.6441348Z ✔ cross-site form posts are refused for a session cookie and a token alike (0.49334ms)
2026-10-18T12:08:33.6441419Z ✔ a token with chat:read reads Chat's JSON without the website permission, and sends nothing (4.583087ms)
2026-10-18T12:08:33.6441476Z ✔ a token with chat:write sends to Chat's JSON, and reads it too (0.5332ms)
2026-10-18T12:08:33.6441535Z ✔ a token without a chat scope, or not a person's own, reaches none of Chat (1.363426ms)
2026-10-18T12:08:33.6441620Z ✔ a chat-scoped token opens nothing else on the site: pages are signed out, data and posts are a 401 (2.548984ms)
2026-10-18T12:08:33.6441681Z ✔ push registration and notification settings take the notifications scopes (0.814752ms)
2026-10-18T12:08:33.6441820Z ✔ full access, legacy or not, reaches Chat only with the website permission; the website permission keeps opening everything (1.041202ms)
2026-10-18T12:08:33.6441880Z ✔ a chat-scoped token opens Chat's socket and the feed, never an artifact's (0.301623ms)
2026-10-18T12:08:33.6547342Z ✔ the Work list's filters come from its address (3.884949ms)
2026-10-18T12:08:33.6548417Z ✔ the filters go back into the address in one order, leaving out what is unset (0.73945ms)
2026-10-18T12:08:33.6553411Z ✔ how many filters are on, for the phone's Filters button (3.094934ms)
2026-10-18T12:08:33.6562651Z ✔ a repository's Work tab, and a new work item filed from it (0.715173ms)
2026-10-18T12:08:33.6565576Z ✔ an item's repositories fit a phone: two, then how many more (0.428013ms)
2026-10-18T12:08:33.6573742Z ✔ old addresses of a repository's issues, labels, milestones and Work page lead on (0.737266ms)
2026-10-18T12:08:33.6583800Z ✔ an empty Work list names the repository it is filtered to, when that is all it is filtered by (0.314993ms)
2026-10-18T12:08:33.7858779Z ✔ only a removed file is archived, not a disabled, invalid or branch-only workflow (1.929124ms)
2026-10-18T12:08:33.7868952Z ✔ an archive-only repository keeps its workflow history available (0.310746ms)
2026-10-18T12:08:33.9363080Z ✔ the chosen workspace holds while you are a member, else the first (1.15982ms)
2026-10-18T12:08:33.9363225Z ✔ a project in one of your workspaces is about that workspace (0.280361ms)
2026-10-18T12:08:33.9363283Z ✔ a project somewhere you do not belong leaves the chosen workspace (0.241773ms)
2026-10-18T12:08:33.9363339Z ✔ a workspace's own pages are about that workspace (0.199649ms)
2026-10-18T12:08:33.9363399Z ✔ the cookie reads back what was remembered (0.644337ms)
2026-10-18T12:08:33.9363464Z ✔ a deleted workspace you had chosen gives way to another, or to none (0.282183ms)
2026-10-18T12:08:34.0579172Z ✔ what goes lists only what the workspace holds (1.544958ms)
2026-10-18T12:08:34.0590028Z ✔ only billing or protection stands in the way (0.273501ms)
2026-10-18T12:08:34.0590326Z ✔ the slug confirms in any case, and nothing else does (0.250236ms)
2026-10-18T12:08:34.1834034Z ✔ someone with no workspace is sent to make one or answer an invitation, never to Mission control (1.402634ms)
2026-10-18T12:08:34.1838730Z ✔ the pages someone without a workspace needs stay open (0.247732ms)
2026-10-18T12:08:34.1839388Z ✔ nobody else is gated: a member, an unconfirmed account, a repository collaborator, someone held by a policy, a visitor (0.395644ms)
2026-10-18T12:08:34.3165210Z ✔ workspace averages weight samples rather than averaging project averages (1.19302ms)
2026-10-18T12:08:34.3167997Z ✔ costs combine meters and products without conflating project keys (1.038358ms)
2026-10-18T12:08:34.3221153Z ✔ a project's usage is its repository's, not its slug's (0.209625ms)
2026-10-18T12:08:34.3229832Z ✔ missing duration is distinct from a fast change (0.24009ms)
2026-10-18T12:08:34.3230015Z ✔ daily series combines batches and retains quiet days across month boundaries (0.787562ms)
2026-10-18T12:08:34.5223227Z ✔ a path is one of the workspace's pages, or none (3.987173ms)
2026-10-18T12:08:34.6636347Z ✔ old addresses go to where their pages are now (0.942204ms)
2026-10-18T12:08:34.6636447Z ✔ ?tab= opens that page, keeping the rest of the query (0.368893ms)
2026-10-18T12:08:34.6636502Z ✔ a click's data request is for the same page as a full load (0.323416ms)
2026-10-18T12:08:34.6636556Z ✔ an alias or old name leads to the same page under the workspace (0.401473ms)
2026-10-18T12:08:34.6636610Z ✔ a click's data request for an alias leads to the page, not its data (0.217377ms)
2026-10-18T12:08:34.6636632Z ✔ the rail's mode follows the address (0.926259ms)
2026-10-18T12:08:34.6636678Z ✔ Workspace mode's sidebar knows which group and page an address is (2.331007ms)
2026-10-18T12:08:34.6636722Z ✔ a member without Code access is sent around Code's pages (0.771387ms)
2026-10-18T12:08:34.6636743Z ✔ Work is a mode of its own, after Home (0.639109ms)
2026-10-18T12:08:34.6636792Z ✔ g1t beyond your workspaces is browsed, and whose it is (1.234593ms)
2026-10-18T12:08:34.6804720Z ✔ a thread's link is its conversation with ?thread= (1.708443ms)
2026-10-18T12:08:34.9169028Z ✔ crc32 matches the standard check value (1.623726ms)
2026-10-18T12:08:34.9340164Z ✔ a zip holds each file, deflated or stored, and reads back (64.267348ms)
2026-10-18T12:08:34.9383044Z ✔ each file keeps its Unix mode: executables and symlinks (9.99038ms)
2026-10-18T12:08:34.9536895Z ℹ tests 1093
2026-10-18T12:08:34.9537394Z ℹ suites 2
2026-10-18T12:08:34.9537547Z ℹ pass 1093
2026-10-18T12:08:34.9537735Z ℹ fail 0
2026-10-18T12:08:34.9537879Z ℹ cancelled 0
2026-10-18T12:08:34.9538017Z ℹ skipped 0
2026-10-18T12:08:34.9538152Z ℹ todo 0
2026-10-18T12:08:34.9538296Z ℹ duration_ms 29940.951084
2026-10-18T12:08:34.9762524Z 
2026-10-18T12:08:34.9762797Z > @g1t/artifacts@0.1.0 test
2026-10-18T12:08:34.9763552Z > node --test "src/**/*.test.ts"
2026-10-18T12:08:34.9763695Z 
2026-10-18T12:08:35.1932488Z ✔ workspace spaces give every member their base role (1.978378ms)
2026-10-18T12:08:35.1934488Z ✔ team spaces give the team's members their base role, and nobody else anything (0.340051ms)
2026-10-18T12:08:35.1937140Z ✔ a listing raises a role but never lowers it (0.632038ms)
2026-10-18T12:08:35.1938646Z ✔ a team listed on a space reaches its members (0.477196ms)
2026-10-18T12:08:35.1941150Z ✔ owners manage workspace and team spaces, but a private space is its members' alone (0.304597ms)
2026-10-18T12:08:35.1943279Z ✔ a space is readable by the whole workspace only when it is open with a base role (0.501282ms)
2026-10-18T12:08:35.1946810Z ✔ roles order view < comment < edit < manage (0.242203ms)
2026-10-18T12:08:35.1949832Z ✔ a private space keeps someone who can manage it (0.444878ms)
2026-10-18T12:08:35.3429524Z ✔ passages follow headings, with the heading path (3.163326ms)
2026-10-18T12:08:35.3429961Z ✔ long sections split on paragraphs, never past the most (2.347663ms)
2026-10-18T12:08:35.3430172Z ✔ one huge paragraph is cut at sentences (0.364937ms)
2026-10-18T12:08:35.3430393Z ✔ tiny sections join the next, naming its heading (0.355934ms)
2026-10-18T12:08:35.3430607Z ✔ a tiny last section joins the one before (0.274512ms)
2026-10-18T12:08:35.3433091Z ✔ headings inside code fences are code, and fences stay whole (0.320241ms)
2026-10-18T12:08:35.3436081Z ✔ a file's front matter and leading title are not passages (0.195553ms)
2026-10-18T12:08:35.3445191Z ✔ empty documents have no passages; huge ones stop at the most (4.183577ms)
2026-10-18T12:08:35.3446341Z ✔ what is embedded leads with the title and heading (0.321892ms)
2026-10-18T12:08:35.3447970Z ✔ hashes and ids are stable and short (0.575464ms)
2026-10-18T12:08:35.4826167Z ✔ paths are kept tidy, and unsafe ones refused (1.429465ms)
2026-10-18T12:08:35.4827093Z ✔ a citation names a repository and a path; a label only for what it names (1.364448ms)
2026-10-18T12:08:35.4852238Z ✔ a change touches a cited file, anything under a cited folder, and what a glob matches (0.796585ms)
2026-10-18T12:08:35.4852341Z ✔ a citation links to the code at the commit it was cited at (0.399349ms)
2026-10-18T12:08:35.4852423Z ✔ links to code in a page are citations too, a chip's own link once (1.576064ms)
2026-10-18T12:08:35.4852484Z ✔ the header's Describes list is tidy and short (0.610846ms)
2026-10-18T12:08:35.6567246Z ✔ a line diff keeps what stayed and marks what changed (3.367592ms)
2026-10-18T12:08:35.8075694Z ✔ from nothing, everything is added (0.450196ms)
2026-10-18T12:08:35.8972756Z ✔ a section runs to the next heading of its level or higher, subsections included (14.479465ms)
2026-10-18T12:08:35.8983741Z ✔ replacing a section changes only that section (3.22606ms)
2026-10-18T12:08:35.8983899Z ✔ blocks targets use the ids agents read from the outline (1.974824ms)
2026-10-18T12:08:35.8983953Z ✔ append adds at the end; document replaces everything (1.351087ms)
2026-10-18T12:08:35.8986553Z ✔ an edit made on the server merges with a person typing at the same time (11.720335ms)
2026-10-18T12:08:35.8988448Z ✔ restoring a version brings back its blocks as a new change (1.71265ms)
2026-10-18T12:08:35.8991249Z ✔ a comment anchors to the text between two positions, across blocks (3.028574ms)
2026-10-18T12:08:35.9001125Z ✔ range ids list the blocks a suggestion covers (1.003336ms)
2026-10-18T12:08:36.1197839Z embedding usage of workspaces not looked up yet waits 1
2026-10-18T12:08:36.1213646Z embedding usage of workspaces not looked up yet waits 1
2026-10-18T12:08:36.1231700Z embedding usage of workspaces not looked up yet waits 1
2026-10-18T12:08:36.1591510Z could not tell which workspaces are free; keeping what billing last said Error: billing answered 503
2026-10-18T12:08:36.1701332Z embedding budget of a free workspace used for the month w1
2026-10-18T12:08:36.1703238Z docs embedding cap reached w1 1 passages wait for the next hour
2026-10-18T12:08:36.1752353Z ✔ each workspace's month of tokens goes to billing as context, once per change, and only this month's (16.816182ms)
2026-10-18T12:08:36.1757863Z ✔ a month's last tokens go as that month's once it is over, then the new month's on their own (24.873661ms)
2026-10-18T12:08:36.1759688Z ✔ billing down: nothing is marked reported, and the plan it last said holds (10.735618ms)
2026-10-18T12:08:36.1766898Z ✔ a free workspace past its month's budget embeds nothing more; its passages are kept for words (12.601718ms)
2026-10-18T12:08:36.1767739Z ✔ cost and detail (0.394852ms)
2026-10-18T12:08:36.3425421Z ✔ puts, gets and deletes a file by its key, path style, signed (48.1264ms)
2026-10-18T12:08:36.3482001Z ✔ a missing file is null (5.581634ms)
2026-10-18T12:08:36.3531427Z ✔ virtual-hosted addresses put the bucket in the host (3.362585ms)
2026-10-18T12:08:36.3531528Z ✔ the store follows the settings, and says what is missing (0.93319ms)
2026-10-18T12:08:36.5212299Z ✔ private: only the owner, and not the workspace owner (1.454142ms)
2026-10-18T12:08:36.5214294Z ✔ an open space gives every member its base role; owners manage (0.433771ms)
2026-10-18T12:08:36.5224438Z ✔ a team space: its team gets the base role; others nothing; workspace owners manage (0.416034ms)
2026-10-18T12:08:36.5224528Z ✔ a members-only space: only its members, never the workspace owner (0.329174ms)
2026-10-18T12:08:36.5234539Z ✔ grants to a person, an agent and a team (0.223576ms)
2026-10-18T12:08:36.5236629Z ✔ a grant raises a space role but never lowers it (0.198448ms)
2026-10-18T12:08:36.5237789Z ✔ general access: workspace gives every member its role, never manage (0.182904ms)
2026-10-18T12:08:36.5240120Z ✔ general access: link gives its role only to people who opened it (0.290826ms)
2026-10-18T12:08:36.5241628Z ✔ nested docs inherit their parent's grants, space and general access (0.981713ms)
2026-10-18T12:08:36.5251432Z ✔ a parent's owner keeps full access to what others add under it (0.281462ms)
2026-10-18T12:08:36.5251522Z ✔ restricting stops the space, the parent's grants and general access (0.215554ms)
2026-10-18T12:08:36.5252218Z ✔ the access root and path of a new folio (0.13347ms)
2026-10-18T12:08:36.5252291Z ✔ materialize writes the owner, ancestor owners and grants up to the access root, highest role each (0.368232ms)
2026-10-18T12:08:36.5261542Z ✔ the index scope is the space's only when access is exactly the space's (0.274402ms)
2026-10-18T12:08:36.5265308Z ✔ readable by the whole workspace: open spaces and workspace general access only (0.304406ms)
2026-10-18T12:08:36.5278912Z ✔ who may share (0.137426ms)
2026-10-18T12:08:36.7230625Z ✔ a page carries the saved document as base64, and none when there is none or it is too large (20.948091ms)
2026-10-18T12:08:36.8992418Z ✔ titles, icons, covers and sources are cleaned (0.817637ms)
2026-10-18T12:08:36.8992514Z ✔ the cursor goes there and back, and nonsense is no cursor (0.356104ms)
2026-10-18T12:08:36.8992571Z ✔ a tree puts a row under its parent only when the parent is shown (0.64674ms)
2026-10-18T12:08:36.8992634Z ✔ shared tops leave out children of what is shown and anything shown elsewhere (0.264787ms)
2026-10-18T12:08:36.8992656Z ✔ depth and height come from paths (0.170936ms)
2026-10-18T12:08:37.1093700Z ✔ a cold room never holds up page state; its snapshot is saved in the background (1.937157ms)
2026-10-18T12:08:37.1104463Z ✔ saved state and trashed documents never wake the live room (0.307401ms)
2026-10-18T12:08:37.2742567Z ✔ a person's first request for a folio goes (10.81711ms)
2026-10-18T12:08:37.2758357Z ✔ asking again within a day is refused, for that folio only (9.055307ms)
2026-10-18T12:08:37.2790896Z ✔ a day later they may ask again, and the day starts over (9.864971ms)
2026-10-18T12:08:37.2791671Z ✔ a refused press doesn't push the next allowed time back (7.98451ms)
2026-10-18T12:08:37.4430116Z ✔ every folio RPC method in the contract is answered, and nothing else (3.275885ms)
2026-10-18T12:08:37.4457929Z ✔ Docs' own methods fall through to the legacy switch (0.331147ms)
2026-10-18T12:08:37.8422250Z ✔ erasing folios takes their rows and search rows, deepest first, and leaves the rest (20.718607ms)
2026-10-18T12:08:37.9831432Z ✔ a child still alive under an erased folio goes to the top of where it was (14.250552ms)
2026-10-18T12:08:37.9831514Z ✔ erasing nothing does nothing (12.703792ms)
2026-10-18T12:08:37.9831617Z ✔ deleting a space trashes what is in it together, frees its address and keeps its row marked (21.566559ms)
2026-10-18T12:08:37.9831689Z ✔ a deleted General is still the workspace's default row, so it is never made again (16.146547ms)
2026-10-18T12:08:37.9831782Z ✔ a folio restored from a deleted space lands in General when it is live and the restorer may add to it (0.97262ms)
2026-10-18T12:08:38.2166468Z docs embedding cap reached w1 2 passages wait for the next hour
2026-10-18T12:08:38.2320076Z docs could not embed passages; the next save tries again pag_1 Error: model down
2026-10-18T12:08:38.2647777Z ✔ a page's passages are stored, embedded once, and only changed ones again (25.312169ms)
2026-10-18T12:08:38.2652510Z ✔ a passage that only moved keeps its vector; gone passages leave the index (25.719951ms)
2026-10-18T12:08:38.2657504Z ✔ moving a page to another space files its vectors there without embedding (19.655341ms)
2026-10-18T12:08:38.2664361Z ✔ embedding stops at the hourly cap and the rest waits, kept for words (18.990704ms)
2026-10-18T12:08:38.2671489Z ✔ an embedding failure leaves passages for the next save, never throws (13.880407ms)
2026-10-18T12:08:38.2673951Z ✔ without an embedder, passages are kept for words only (14.403902ms)
2026-10-18T12:08:38.2677437Z ✔ a project's docs file is indexed with its repository (13.105284ms)
2026-10-18T12:08:38.4779089Z ✔ the registry has the doc kind and nothing not built yet (1.739089ms)
2026-10-18T12:08:38.4801852Z ✔ a doc seeds from Markdown and renders it back, with its card (13.618474ms)
2026-10-18T12:08:38.4801981Z ✔ an agent's edit applies to its target, and a missing one doesn't (3.91891ms)
2026-10-18T12:08:38.4802244Z ✔ a doc restores from an old state and from old text (4.18575ms)
2026-10-18T12:08:38.4802274Z ✔ links to other folios and preview lines (0.287151ms)
2026-10-18T12:08:38.6800290Z ✔ Markdown survives a trip through the document (14.056401ms)
2026-10-18T12:08:38.6800431Z ✔ the document has BlockNote's shape: a group of containers with ids (1.104628ms)
2026-10-18T12:08:38.6800485Z ✔ marks are stored as y-prosemirror stores them (1.260221ms)
2026-10-18T12:08:38.6800516Z ✔ nested list items become children (0.290286ms)
2026-10-18T12:08:38.6871538Z ✔ snake_case and URLs are not italicized (0.2064ms)
2026-10-18T12:08:38.6878522Z ✔ the outline names each top-level block for agents (0.80698ms)
2026-10-18T12:08:38.6878628Z ✔ mentions are found by id; search text drops markup (1.303867ms)
2026-10-18T12:08:38.6878710Z ✔ a citation chip is a link to the code, and is found as a citation (1.474021ms)
2026-10-18T12:08:38.8480807Z ✔ the cap comes from its var, 1 GB unless set, and 0 is none (0.901923ms)
2026-10-18T12:08:39.0065545Z ✔ a free workspace's upload past the cap is refused, and says how to make room (0.445579ms)
2026-10-18T12:08:39.0065755Z ✔ the index is filtered by the allowed spaces, or by workspace and after when there are too many (1.841233ms)
2026-10-18T12:08:39.0065821Z ✔ hybrid search fuses ranks: found both ways first (0.346249ms)
2026-10-18T12:08:39.0065844Z ✔ query embeddings are kept a minute (0.485338ms)
2026-10-18T12:08:39.1496419Z ✔ a project's docs are Markdown under docs/ and the README at the root (12.089459ms)
2026-10-18T12:08:39.1496620Z ✔ a file's title is its front matter's, its first heading, or its name (1.076996ms)
2026-10-18T12:08:39.3055743Z ✔ queries are quoted word by word, the last a prefix (2.393552ms)
2026-10-18T12:08:39.3059089Z ✔ a search looks only in spaces the reader can read (0.905659ms)
2026-10-18T12:08:39.3074246Z ✔ a project filter matches the page's projects or its space's (0.475323ms)
2026-10-18T12:08:39.4440769Z ✔ signs AWS's get-vanilla test vector (13.067317ms)
2026-10-18T12:08:39.4476903Z ✔ signs the S3 GET Object example (3.293111ms)
2026-10-18T12:08:39.4496121Z ✔ hashes and encodes as SigV4 wants (2.054593ms)
2026-10-18T12:08:39.4514149Z ✔ puts the query in order (2.480552ms)
2026-10-18T12:08:39.6120969Z ✔ page slugs carry the id, so renames keep links working (2.176806ms)
2026-10-18T12:08:39.6127361Z ✔ slugify drops accents and punctuation (0.464818ms)
2026-10-18T12:08:39.6146395Z ✔ space slugs avoid taken and reserved names (0.610226ms)
2026-10-18T12:08:39.6231625Z ✔ links to pages are found by their ids (1.325309ms)
2026-10-18T12:08:39.8204834Z ✔ threads are kept in the shape the editor reads (6.672612ms)
2026-10-18T12:08:39.8205230Z ✔ viewers can't comment; only authors edit; editors delete others' comments and threads (2.178478ms)
2026-10-18T12:08:39.8207722Z ✔ replies, resolving and reactions (1.892029ms)
2026-10-18T12:08:39.8229711Z ✔ a comment's text and mentions come from its blocks (0.298498ms)
2026-10-18T12:08:39.9797841Z ✔ children come in position order (2.307692ms)
2026-10-18T12:08:40.2270880Z ✔ placing before a sibling takes the midpoint (0.454201ms)
2026-10-18T12:08:40.2271000Z ✔ moving a page among its own siblings ignores where it was (0.268122ms)
2026-10-18T12:08:40.2271071Z ✔ siblings too close together are renumbered (0.207621ms)
2026-10-18T12:08:40.2271138Z ✔ a page can't move under itself or its own descendants (0.309114ms)
2026-10-18T12:08:40.2271162Z ✔ descendants and ancestors (0.382303ms)
2026-10-18T12:08:40.2271217Z ✔ export paths follow the tree and stay unique (0.53294ms)
2026-10-18T12:08:40.2271293Z ✔ a cold request cannot make another request wait on its workspace I/O (21.999669ms)
2026-10-18T12:08:40.2271357Z ✔ failed workspace reads are retried by the next request (2.482165ms)
2026-10-18T12:08:40.3351301Z ✔ dashboard templates that read issues read work items after the migration, run once or twice (10.109999ms)
2026-10-18T12:08:40.3498658Z ℹ tests 131
2026-10-18T12:08:40.3498748Z ℹ suites 0
2026-10-18T12:08:40.3498768Z ℹ pass 131
2026-10-18T12:08:40.3498946Z ℹ fail 0
2026-10-18T12:08:40.3498965Z ℹ cancelled 0
2026-10-18T12:08:40.3498978Z ℹ skipped 0
2026-10-18T12:08:40.3499529Z ℹ todo 0
2026-10-18T12:08:40.3499549Z ℹ duration_ms 5332.733248
2026-10-18T12:08:40.3626592Z 
2026-10-18T12:08:40.3626907Z > @g1t/chat@0.1.0 test
2026-10-18T12:08:40.3626925Z > node --test src/*.test.ts
2026-10-18T12:08:40.3626939Z 
2026-10-18T12:08:40.5800334Z ✔ a channel is private, kept to the workspace, or public; a direct message is always private (1.338859ms)
2026-10-18T12:08:40.5800471Z ✔ who may read: anyone in it; members for a workspace channel; anyone for a public one (0.298167ms)
2026-10-18T12:08:40.5800546Z ✔ someone outside the workspace taken out of a public channel can't join it again on their own (0.262013ms)
2026-10-18T12:08:40.5800725Z ✔ owners always invite guests; members while the workspace lets them (0.382804ms)
2026-10-18T12:08:40.5800773Z ✔ only signed-in people with a confirmed address come in as guests (0.42021ms)
2026-10-18T12:08:40.5800839Z ✔ letting someone in: anyone in the channel for a member; those who invite guests for anyone else (0.305709ms)
2026-10-18T12:08:40.5806631Z ✔ a request's note is trimmed, cut to length, and null when empty (0.232299ms)
2026-10-18T12:08:40.6952729Z ✔ messages, conversations with any, and who said how much, most first (1.802765ms)
2026-10-18T12:08:40.6966238Z ✔ nothing said is zeros, not an error (0.329454ms)
2026-10-18T12:08:40.6969397Z ✔ a span is two times in order (0.306039ms)
2026-10-18T12:08:40.8882740Z g1t's answer broke off Error: binding down
2026-10-18T12:08:40.8883154Z     at file:///home/runner/work/repo/services/chat/src/answer.test.ts:84:11
2026-10-18T12:08:40.8883417Z     at Object.ask (file:///home/runner/work/repo/services/chat/src/answer.test.ts:31:14)
2026-10-18T12:08:40.8885700Z     at runAnswer (file:///home/runner/work/repo/services/chat/src/answer.ts:64:33)
2026-10-18T12:08:40.8885830Z     at async TestContext.<anonymous> (file:///home/runner/work/repo/services/chat/src/answer.test.ts:86:3)
2026-10-18T12:08:40.8885909Z     at async Test.run (node:internal/test_runner/test:1409:7)
2026-10-18T12:08:40.8885968Z     at async Test.processPendingSubtests (node:internal/test_runner/test:974:7)
2026-10-18T12:08:40.8905546Z ✔ an answer streams into the message and ends as a normal one (45.680851ms)
2026-10-18T12:08:40.8905618Z ✔ with no provider chosen, g1t says so once, without asking (0.470897ms)
2026-10-18T12:08:40.8913763Z ✔ a chosen provider that cannot answer is a short message, not silence (0.279379ms)
2026-10-18T12:08:40.8916681Z ✔ a refusal or an unreachable service ends as an error message (2.059821ms)
2026-10-18T12:08:40.9099349Z ✔ Stop keeps what came, marked stopped (21.777976ms)
2026-10-18T12:08:41.0653960Z ✔ an old card keeps its links and drops actions nobody answers any more (2.526591ms)
2026-10-18T12:08:41.2584988Z ✔ a card with nothing left to press has no actions (0.366109ms)
2026-10-18T12:08:41.2628371Z ✔ only the one person in a direct message with g1t may clear it, and only their own (1.356646ms)
2026-10-18T12:08:41.2642735Z ✔ clearing deletes everything in that conversation and nothing anywhere else (7.754885ms)
2026-10-18T12:08:41.2661525Z ✔ clearing again, or an empty conversation, deletes nothing and is no error (5.89164ms)
2026-10-18T12:08:41.2698963Z ✔ after a clear, what g1t reads holds none of the old conversation (7.15751ms)
2026-10-18T12:08:41.4292313Z ✔ a reaction is one emoji, however many code points it takes (1.788113ms)
2026-10-18T12:08:41.4309395Z ✔ a reaction is a Unicode emoji or a workspace's own by name (1.301874ms)
2026-10-18T12:08:41.4313247Z ✔ custom emoji names: lowercase letters, digits, - _ +, 2 to 32, not a standard one (0.449144ms)
2026-10-18T12:08:41.4315522Z ✔ an image is known by its bytes, with its size (0.784617ms)
2026-10-18T12:08:41.4317035Z ✔ a custom emoji file is a PNG, GIF or WebP up to 256 KB and 512 pixels a side (0.404216ms)
2026-10-18T12:08:41.4318690Z ✔ a file comes as base64, with or without a data: prefix (0.475053ms)
2026-10-18T12:08:41.4321146Z ✔ a message holds at most 50 kinds of reaction; more of one kind always fits (0.250747ms)
2026-10-18T12:08:41.4332983Z ✔ who may add and remove a workspace's emoji (0.194222ms)
2026-10-18T12:08:41.4337485Z ✔ reactions are counted per message and emoji, in the order first used (1.593651ms)
2026-10-18T12:08:41.4341165Z ✔ a message carries the first ten who reacted, and counts them all (0.501643ms)
2026-10-18T12:08:41.6290365Z ✔ g1t is one reserved member, system:g1t, and only that system key parses (3.715675ms)
2026-10-18T12:08:41.6290969Z ✔ a direct message with g1t is one person and g1t, keyed like any other (0.42013ms)
2026-10-18T12:08:41.6291290Z ✔ only a person's own top-level words in their direct message with g1t start an answer (0.390657ms)
2026-10-18T12:08:41.6293708Z ✔ the conversation maps the person to user and g1t's answers to assistant, alternating (0.74639ms)
2026-10-18T12:08:41.6295331Z ✔ an earlier answer is read back with what it read in g1t, so it is not taken for made up (0.84667ms)
2026-10-18T12:08:41.6298351Z ✔ the conversation leaves out failed answers, the set-up note, the answer being written, cards and deleted messages (0.554522ms)
2026-10-18T12:08:41.6300673Z ✔ a stopped answer still counts as what g1t said (0.35995ms)
2026-10-18T12:08:41.6317051Z ✔ a new conversation reads only what comes after the latest mark (0.462885ms)
2026-10-18T12:08:41.6320391Z ✔ the conversation ends with the person and keeps within Ask's limits, newest first (1.881553ms)
2026-10-18T12:08:41.6323310Z ✔ the page an answer is told is the newest question's, as sent from the top bar (2.356896ms)
2026-10-18T12:08:41.6327083Z ✔ with no provider chosen, g1t says where an owner chooses one (0.397316ms)
2026-10-18T12:08:41.6329704Z ✔ an answer is read as it streams, and unknown events are kept as steps, never text (1.87967ms)
2026-10-18T12:08:41.6332384Z ✔ an answer Auto chose a model for says so; a chosen model's does not (0.269004ms)
2026-10-18T12:08:41.6342024Z ✔ a tool step is kept once, as it last was, and sources are kept whole (0.596855ms)
2026-10-18T12:08:41.6344341Z ✔ an answer that breaks off or fails is never silence (0.372198ms)
2026-10-18T12:08:41.6350537Z ✔ one person's answers are limited to twenty a minute (0.463795ms)
2026-10-18T12:08:41.6351032Z ✔ an answer left mid-stream by a room that went away shows as stopped (0.32011ms)
2026-10-18T12:08:41.6351669Z ✔ what a proposal's card did is kept on its answer, merged step by step (0.582834ms)
2026-10-18T12:08:41.8613293Z ✔ posting as g1t is refused for anything that came in from the internet (44.828142ms)
2026-10-18T12:08:41.8625790Z ✔ a service binding's call posts and edits as g1t; anything else is not found (6.122696ms)
2026-10-18T12:08:41.8638269Z ✔ the site's chat client never reaches the internal methods (2.301263ms)
2026-10-18T12:08:41.9834587Z ✔ mentions are found once each, lowercased, in order (2.097888ms)
2026-10-18T12:08:41.9834753Z ✔ an email address or a stray @ is not a mention (0.296455ms)
2026-10-18T12:08:41.9834807Z ✔ a kept mention matches its whole handle only (0.33316ms)
2026-10-18T12:08:42.1394346Z ✔ a message needs something in it, and not too much (22.042604ms)
2026-10-18T12:08:42.2957516Z ✔ a page holds the default, or what was asked within limits (0.245148ms)
2026-10-18T12:08:42.2957610Z ✔ a page read one past its size says where to read on from (0.58667ms)
2026-10-18T12:08:42.2957631Z ✔ the meter counts by UTC day (0.413911ms)
2026-10-18T12:08:42.2957683Z ✔ a socket frame says typing in this channel, or is ignored (0.30004ms)
2026-10-18T12:08:42.3131438Z ✔ a channel name is kept lowercase, without #, spaces as dashes (2.334002ms)
2026-10-18T12:08:42.3170908Z ✔ a channel name uses letters, digits, dashes and underscores, and is not too long (0.288603ms)
2026-10-18T12:08:42.3178628Z ✔ the site's chat routes are not channel names (0.224607ms)
2026-10-18T12:08:42.3178713Z ✔ the same members always make the same direct-message key (0.204587ms)
2026-10-18T12:08:42.3230923Z ✔ a direct message with nobody else, or only yourself, is notes to yourself (0.572569ms)
2026-10-18T12:08:42.4864565Z ✔ a direct message notifies everyone else in it, muted or not, never the author (4.989837ms)
2026-10-18T12:08:42.4864726Z ✔ in a channel, a mention notifies the person named even when muted; the rest only count (0.299229ms)
2026-10-18T12:08:42.4905869Z ✔ a reply notifies the people in its thread unless they muted the conversation (0.48613ms)
2026-10-18T12:08:42.4906023Z ✔ deliveries: counts for everyone, a notification for those it is for, the author's count cleared (2.88583ms)
2026-10-18T12:08:42.4906107Z ✔ a person without a display name is named by their username as they wrote it (0.687421ms)
2026-10-18T12:08:42.4906164Z ✔ a reply links to its thread; a DM to the DM (0.188993ms)
2026-10-18T12:08:42.4906217Z ✔ previews are one short line without markup (1.386841ms)
2026-10-18T12:08:42.4906277Z ✔ counts after a read: what is left past the mark, mentions included, never your own (0.536284ms)
2026-10-18T12:08:42.7084315Z ✔ a workspace without settings lets every member make channels, and new people land in #general (4.350638ms)
2026-10-18T12:08:42.7090607Z ✔ default channels once chosen are kept as chosen, even none (0.822204ms)
2026-10-18T12:08:42.7121136Z ✔ who may make a channel follows its visibility's setting (0.438899ms)
2026-10-18T12:08:42.7125813Z ✔ renaming and archiving: workspace owners always, a channel's owners unless kept to workspace owners (0.489835ms)
2026-10-18T12:08:42.7129014Z ✔ what a role may do, for the page (0.503365ms)
2026-10-18T12:08:42.7131854Z ✔ a change is checked field by field; what is left out stays (0.978178ms)
2026-10-18T12:08:42.7133691Z ✔ settings are kept with their default channels as JSON (0.341332ms)
2026-10-18T12:08:42.8430463Z ✔ unread is what others wrote after your last read (1.038748ms)
2026-10-18T12:08:42.8438756Z ✔ counts per channel, replies included, with mentions of the viewer (1.051258ms)
2026-10-18T12:08:42.8479346Z ✔ the sidebar puts starred first, then the most recently active (7.585992ms)
2026-10-18T12:08:42.8479624Z ✔ a direct message is titled by the others, or by you for notes (0.315333ms)
2026-10-18T12:08:42.9734529Z ✔ cards kept about issues are about work items after the migration, run once or twice (5.076738ms)
2026-10-18T12:08:42.9876030Z ℹ tests 85
2026-10-18T12:08:42.9876305Z ℹ suites 0
2026-10-18T12:08:42.9876449Z ℹ pass 85
2026-10-18T12:08:42.9876594Z ℹ fail 0
2026-10-18T12:08:42.9876733Z ℹ cancelled 0
2026-10-18T12:08:42.9876884Z ℹ skipped 0
2026-10-18T12:08:42.9877058Z ℹ todo 0
2026-10-18T12:08:42.9877230Z ℹ duration_ms 2576.880476
2026-10-18T12:08:42.9979171Z 
2026-10-18T12:08:42.9979901Z > @g1t/deployments@0.1.0 test
2026-10-18T12:08:42.9980180Z > node --experimental-transform-types --no-warnings=ExperimentalWarning --test src/*.test.ts
2026-10-18T12:08:42.9980342Z 
2026-10-18T12:08:43.2034671Z ✔ a Read collaborator sees a project's deployments but cannot deploy or change them (1.480101ms)
2026-10-18T12:08:43.3993605Z ✔ an outside collaborator with Write can deploy, but settings and domains need Admin (0.272158ms)
2026-10-18T12:08:43.3993744Z ✔ members follow the workspace's base permission; owners manage everything (0.280471ms)
2026-10-18T12:08:43.3993815Z ✔ anyone can see a public project's deployments, and no more (0.158668ms)
2026-10-18T12:08:43.3993883Z ✔ a preview of a change made for someone is trusted as they are (8.647034ms)
2026-10-18T12:08:43.9432906Z build dpl_1 registry 
2026-10-18T12:08:43.9612409Z build dpl_1 registry 
2026-10-18T12:08:43.9623305Z ✔ while containers are off, the registry step says so in its own words (78.050239ms)
2026-10-18T12:08:43.9654614Z build dpl_1 registry 
2026-10-18T12:08:43.9762826Z build dpl_1 finish 
2026-10-18T12:08:43.9762990Z ✔ a build gets a push-only login for its app's repository, held to its size (13.156301ms)
2026-10-18T12:08:43.9840446Z build dpl_2 finish 
2026-10-18T12:08:43.9968689Z build dpl_1 finish 
2026-10-18T12:08:43.9983820Z ✔ an image outside the app's repository, or not in the registry, is never run (20.942953ms)
2026-10-18T12:08:44.0074235Z build dpl_2 finish 
2026-10-18T12:08:44.0632706Z build dpl_1 finish 
2026-10-18T12:08:44.0640014Z ✔ a container app runs behind g1t's Worker, is metered by its own token, and comes down whole (64.185826ms)
2026-10-18T12:08:44.0877660Z build dpl_1 finish 
2026-10-18T12:08:44.0883375Z ✔ a paused container app keeps its class and stops serving (23.681753ms)
2026-10-18T12:08:44.1081433Z build dpl_1 finish 
2026-10-18T12:08:44.1269953Z build dpl_1 finish 
2026-10-18T12:08:44.1278168Z ✔ the app's Container application is attached to the namespace its Worker's binding names (42.677665ms)
2026-10-18T12:08:44.1315926Z deleted images web-acme dpl_0
2026-10-18T12:08:44.1332092Z build dpl_2 finish 
2026-10-18T12:08:44.1357722Z deleted images web-acme dpl_0
2026-10-18T12:08:44.1395815Z deleted images web-acme dpl_1, dpl_2
2026-10-18T12:08:44.1411362Z ✔ an app keeps the image it runs, the one before it and those still being built, and none once it is down (21.772478ms)
2026-10-18T12:08:44.6871071Z ✔ a build gets a push-only login, for minutes, and pushes to its app's repository (2.629275ms)
2026-10-18T12:08:44.6895527Z ✔ only an image by digest in the app's own repository is run (0.571067ms)
2026-10-18T12:08:44.6895659Z ✔ the app's Worker is g1t's, with its settings and the project's entries as bindings (1.083346ms)
2026-10-18T12:08:44.6895744Z ✔ the container application runs one instance of the app's image at its size (0.516766ms)
2026-10-18T12:08:44.6899925Z ✔ an app's reports are read strictly (0.576144ms)
2026-10-18T12:08:44.6905750Z ✔ container time costs what Cloudflare charges at most, and the margin goes on top (24.811948ms)
2026-10-18T12:08:44.6910589Z ✔ the app's Worker starts its container with the project's entries, meters it and lets it sleep (60.245865ms)
2026-10-18T12:08:44.6936542Z g1t-container-ended {"exitCode":1,"message":"exited"}
2026-10-18T12:08:44.9385887Z ✔ an app that stops before it answers says how it ended (254.338127ms)
2026-10-18T12:08:44.9389198Z ✔ a paused app answers with a notice and its container stops (1.680822ms)
2026-10-18T12:08:45.1623846Z ✔ an environment is named as given, production when not (2.180762ms)
2026-10-18T12:08:45.1653260Z ✔ addresses are http(s), and a payload is an object (0.687111ms)
2026-10-18T12:08:45.1653339Z ✔ refs read as their branch or tag (0.276465ms)
2026-10-18T12:08:45.1653412Z ✔ each state says something on the commit, but inactive (0.17274ms)
2026-10-18T12:08:45.1653478Z ✔ a g1t.page build's status reads as a deployment state (0.25279ms)
2026-10-18T12:08:45.1653545Z ✔ a run's deployment moves on, and a failure sticks until the run ends (0.151868ms)
2026-10-18T12:08:45.1653610Z ✔ a run's outcome for an environment comes from the jobs that ran (0.254642ms)
2026-10-18T12:08:45.1660943Z ✔ production comes first, then the newest (8.271621ms)
2026-10-18T12:08:45.1678840Z ✔ a g1t.page build is a deployment in the same model (0.815133ms)
2026-10-18T12:08:45.1683625Z ✔ a build's statuses come from its own timestamps (0.703505ms)
2026-10-18T12:08:45.3509086Z ✔ hostnames are lowercased and cleaned of what people paste (2.65884ms)
2026-10-18T12:08:45.3509939Z ✔ international names become punycode (5.773162ms)
2026-10-18T12:08:45.3514479Z ✔ what is not a hostname g1t can serve is refused (0.568934ms)
2026-10-18T12:08:45.3542174Z ✔ g1t's own domains are refused (0.290315ms)
2026-10-18T12:08:45.3542226Z ✔ apex and www twins (0.35337ms)
2026-10-18T12:08:45.3542270Z ✔ Cloudflare's states become a domain's (0.456475ms)
2026-10-18T12:08:45.3554147Z ✔ the records Cloudflare asks for are listed (1.667401ms)
2026-10-18T12:08:45.5702074Z ✔ every request and CPU millisecond is metered from the first, with nothing included (21.751516ms)
2026-10-18T12:08:45.7660283Z ✔ a busy workspace on the plan is never capped, only charged (0.382965ms)
2026-10-18T12:08:45.7660382Z ✔ custom domains are charged from the first, by the month (2.189395ms)
2026-10-18T12:08:45.7660444Z ✔ apps are not metered: a month with only apps up and no traffic costs nothing (0.284026ms)
2026-10-18T12:08:45.7660457Z ✔ amounts read plainly (0.202604ms)
2026-10-18T12:08:45.7660503Z ✔ a count that does not move the meter is not written (0.383716ms)
2026-10-18T12:08:46.4135433Z ✔ a transfer rebuilds every app under the new workspace, paused ones too (118.937187ms)
2026-10-18T12:08:46.4449512Z ✔ a second delivery builds nothing more (31.154966ms)
2026-10-18T12:08:46.4571156Z could not rebuild moved apps [
2026-10-18T12:08:46.4572096Z   'flagon-io/lab-api (v2): The runner answered 503.',
2026-10-18T12:08:46.4572637Z   'flagon-io/lab-api: The runner answered 503.'
2026-10-18T12:08:46.4572987Z ]
2026-10-18T12:08:46.4756517Z deployments could not handle repo.transferred Error: could not rebuild after the move to flagon-io/lab-api: flagon-io/lab-api (v2): The runner answered 503.; flagon-io/lab-api: The runner answered 503.
2026-10-18T12:08:46.4756668Z     at Deployments.moved (/home/runner/work/repo/services/deployments/src/index.ts:2091:43)
2026-10-18T12:08:46.4756745Z     at async Deployments.onEvent (/home/runner/work/repo/services/deployments/src/index.ts:1848:9)
2026-10-18T12:08:46.4756803Z     at async Object.queue (/home/runner/work/repo/services/deployments/src/index.ts:2908:9)
2026-10-18T12:08:46.4756849Z     at async deliver (/home/runner/work/repo/services/deployments/src/moves.flow.test.ts:223:3)
2026-10-18T12:08:46.4756924Z     at async TestContext.<anonymous> (/home/runner/work/repo/services/deployments/src/moves.flow.test.ts:251:16)
2026-10-18T12:08:46.4757286Z     at async Test.run (node:internal/test_runner/test:1409:7)
2026-10-18T12:08:46.4757332Z     at async Test.processPendingSubtests (node:internal/test_runner/test:974:7)
2026-10-18T12:08:46.5010770Z ✔ a rebuild that could not be queued is not acked, and the next delivery queues it (59.288348ms)
2026-10-18T12:08:46.5122738Z could not rebuild moved apps [
2026-10-18T12:08:46.5124563Z   'flagon-io/lab-api (v2): The runner answered 503.',
2026-10-18T12:08:46.5124777Z   'flagon-io/lab-api: The runner answered 503.'
2026-10-18T12:08:46.5124945Z ]
2026-10-18T12:08:46.5127053Z deployments could not handle repo.transferred Error: could not rebuild after the move to flagon-io/lab-api: flagon-io/lab-api (v2): The runner answered 503.; flagon-io/lab-api: The runner answered 503.
2026-10-18T12:08:46.5127906Z     at Deployments.moved (/home/runner/work/repo/services/deployments/src/index.ts:2091:43)
2026-10-18T12:08:46.5128422Z     at async Deployments.onEvent (/home/runner/work/repo/services/deployments/src/index.ts:1848:9)
2026-10-18T12:08:46.5129331Z     at async Object.queue (/home/runner/work/repo/services/deployments/src/index.ts:2908:9)
2026-10-18T12:08:46.5129918Z     at async deliver (/home/runner/work/repo/services/deployments/src/moves.flow.test.ts:223:3)
2026-10-18T12:08:46.5130365Z     at async TestContext.<anonymous> (/home/runner/work/repo/services/deployments/src/moves.flow.test.ts:265:3)
2026-10-18T12:08:46.5130871Z     at async Test.run (node:internal/test_runner/test:1409:7)
2026-10-18T12:08:46.5131980Z     at async Test.processPendingSubtests (node:internal/test_runner/test:974:7)
2026-10-18T12:08:46.5535638Z ✔ the sweep picks up a move whose deliveries ran out, keyed on the new workspace (49.022946ms)
2026-10-18T12:08:46.5838957Z ✔ a move waits, without refused deployments, while the new workspace is over its limit (34.182548ms)
2026-10-18T12:08:46.7293492Z build dpl_01m57em5qzenka108bm7ysveag finish 
2026-10-18T12:08:46.7293636Z ✔ once the new app is live, the old address redirects to it, paused or not (32.456319ms)
2026-10-18T12:08:46.7293654Z could not rebuild moved apps [
2026-10-18T12:08:46.7293690Z   'flagon-io/lab-api (v2): The runner answered 503.',
2026-10-18T12:08:46.7293708Z   'flagon-io/lab-api: The runner answered 503.'
2026-10-18T12:08:46.7293723Z ]
2026-10-18T12:08:46.7293785Z ✔ the sweep never pauses a moved app for its old workspace's limit (46.709394ms)
2026-10-18T12:08:46.7293841Z ✔ a branch's preview comes down once its branch is gone, and a pull request's stays (28.527484ms)
2026-10-18T12:08:46.9353726Z ✔ each stale app is one target, paused or not, with the names it replaces (3.349926ms)
2026-10-18T12:08:46.9354169Z ✔ an app under two old names (moved twice) is built once, replacing both (3.256376ms)
2026-10-18T12:08:46.9361728Z ✔ a build a move dropped is built again, at its newer commit (0.362463ms)
2026-10-18T12:08:46.9395925Z ✔ only a queued build counts as rebuilt; refusals and errors are tried again (0.31323ms)
2026-10-18T12:08:46.9401946Z ✔ a rebuild that could not start waits before it is tried again (0.372509ms)
2026-10-18T12:08:46.9415074Z ✔ an app is its project's current workspace's, not the one its row names (0.496735ms)
2026-10-18T12:08:47.4616201Z ✔ a workspace named like a domain loses that hyphen in hostnames (1.669304ms)
2026-10-18T12:08:47.4618282Z ✔ an app's name uses that spelling, so no label reads as another site (0.524487ms)
2026-10-18T12:08:47.6528644Z ✔ the location keeps the path and query, on the new host (0.988734ms)
2026-10-18T12:08:47.7977581Z ✔ the script answers every request with a 301 to the same place (38.946247ms)
2026-10-18T12:08:47.7977714Z ✔ the target is lowercased and must be a hostname (0.464176ms)
2026-10-18T12:08:47.8502828Z ✔ git's words for a commit that is gone are recognised, and only those (3.590136ms)
2026-10-18T12:08:47.8600575Z ✔ a commit that is gone says so plainly, naming the pull request (0.34651ms)
2026-10-18T12:08:47.8601540Z ✔ nothing built yet, or the last build went up long ago: build (5.550138ms)
2026-10-18T12:08:47.8601670Z ✔ a commit that is gone is never tried again, with or without backoff (0.216896ms)
2026-10-18T12:08:47.8601708Z ✔ each identical failure doubles the wait (0.311828ms)
2026-10-18T12:08:47.8601763Z ✔ three identical failures in a row stop it (0.170126ms)
2026-10-18T12:08:47.8601824Z ✔ a different error or commit starts the count again (0.180691ms)
2026-10-18T12:08:47.8602084Z ✔ a refused or skipped rebuild waits the base delay with backoff, not without (0.177046ms)
2026-10-18T12:08:48.0730911Z ✔ a deployment ships what no deployment shipped before, and stops at the last one's history (2.142064ms)
2026-10-18T12:08:48.0773403Z ✔ a change shipped is live from the deployment that first shipped it (0.880231ms)
2026-10-18T12:08:48.0781457Z ✔ a change not shipped is deploying, failed or waiting, by the production attempts after it (0.391287ms)
2026-10-18T12:08:48.0785556Z ✔ a change that landed before recording began goes live with the first success after it (0.294783ms)
2026-10-18T12:08:48.0801175Z ✔ only a production success is a shipment, linked to its page (0.415143ms)
2026-10-18T12:08:48.0807115Z ✔ addresses stay on the site (0.192489ms)
2026-10-18T12:08:48.2492106Z ✔ an app's OpenTelemetry variables point at the project, unless it set its own (6.449056ms)
2026-10-18T12:08:48.2510131Z ✔ tags and resource attributes name the project and deployment (0.335643ms)
2026-10-18T12:08:48.2521998Z ✔ Cloudflare's traces go to the destination, logs stay with the Tail Worker (0.301693ms)
2026-10-18T12:08:48.9635611Z ✔ a push to the production branch opens a production build the job runs, with no sandbox and nothing reserved (90.055242ms)
2026-10-18T12:08:48.9671813Z build dpl_01m57em821e2rsfzzyaxq7bvf4 started 
2026-10-18T12:08:48.9692790Z build dpl_01m57em821e2rsfzzyaxq7bvf4 finish 
2026-10-18T12:08:48.9768864Z build dpl_01m57em821e2rsfzzyaxq7bvf4 started 
2026-10-18T12:08:48.9888234Z build dpl_sandbox finish 
2026-10-18T12:08:48.9897525Z ✔ the job reports with the build's token, and its seconds are not charged again (25.818709ms)
2026-10-18T12:08:49.0004371Z build dpl_01m57em835ee3vjy2js2vqjp3d finish 
2026-10-18T12:08:49.0067330Z build dpl_01m57em83cefev60mvmrysynr5 fail npm run build failed
2026-10-18T12:08:49.0193372Z build dpl_owed finish 
2026-10-18T12:08:49.0198235Z ✔ a sandbox's build is still charged by the second; a workflow job's never is (31.354756ms)
2026-10-18T12:08:49.0222493Z build not charged yet dpl_owed billing is down
2026-10-18T12:08:49.0222546Z build charge left for the sweep dpl_owed 30
2026-10-18T12:08:49.0276629Z build not charged yet dpl_owed billing is down
2026-10-18T12:08:49.0497390Z could not remove orphans TypeError: (intermediate value) is not iterable
2026-10-18T12:08:49.0500287Z     at Deployments.removeOrphans (/home/runner/work/repo/services/deployments/src/index.ts:2633:26)
2026-10-18T12:08:49.0500425Z     at async Deployments.sweep (/home/runner/work/repo/services/deployments/src/index.ts:2560:5)
2026-10-18T12:08:49.0500486Z     at async Object.scheduled (/home/runner/work/repo/services/deployments/src/index.ts:2918:5)
2026-10-18T12:08:49.0500563Z     at async TestContext.<anonymous> (/home/runner/work/repo/services/deployments/src/workflow-builds.flow.test.ts:280:3)
2026-10-18T12:08:49.0500630Z     at async Test.run (node:internal/test_runner/test:1409:7)
2026-10-18T12:08:49.0500691Z     at async Test.processPendingSubtests (node:internal/test_runner/test:974:7)
2026-10-18T12:08:49.0558325Z build charged late dpl_owed 30
2026-10-18T12:08:49.0573801Z could not remove orphans TypeError: (intermediate value) is not iterable
2026-10-18T12:08:49.0573900Z     at Deployments.removeOrphans (/home/runner/work/repo/services/deployments/src/index.ts:2633:26)
2026-10-18T12:08:49.0573957Z     at async Deployments.sweep (/home/runner/work/repo/services/deployments/src/index.ts:2560:5)
2026-10-18T12:08:49.0574011Z     at async Object.scheduled (/home/runner/work/repo/services/deployments/src/index.ts:2918:5)
2026-10-18T12:08:49.0574102Z     at async TestContext.<anonymous> (/home/runner/work/repo/services/deployments/src/workflow-builds.flow.test.ts:285:3)
2026-10-18T12:08:49.0574154Z     at async Test.run (node:internal/test_runner/test:1409:7)
2026-10-18T12:08:49.0574199Z     at async Test.processPendingSubtests (node:internal/test_runner/test:974:7)
2026-10-18T12:08:49.0636108Z could not remove orphans TypeError: (intermediate value) is not iterable
2026-10-18T12:08:49.0636237Z     at Deployments.removeOrphans (/home/runner/work/repo/services/deployments/src/index.ts:2633:26)
2026-10-18T12:08:49.0636304Z     at async Deployments.sweep (/home/runner/work/repo/services/deployments/src/index.ts:2560:5)
2026-10-18T12:08:49.0636355Z     at async Object.scheduled (/home/runner/work/repo/services/deployments/src/index.ts:2918:5)
2026-10-18T12:08:49.0636424Z     at async TestContext.<anonymous> (/home/runner/work/repo/services/deployments/src/workflow-builds.flow.test.ts:286:3)
2026-10-18T12:08:49.0636474Z     at async Test.run (node:internal/test_runner/test:1409:7)
2026-10-18T12:08:49.0636536Z     at async Test.processPendingSubtests (node:internal/test_runner/test:974:7)
2026-10-18T12:08:49.0692641Z ✔ a build billing cannot charge still goes live and is announced; the sweep charges it once, later (50.650998ms)
2026-10-18T12:08:49.0821848Z ✔ another branch builds its preview; a pull request's run builds the pull request's (14.214007ms)
2026-10-18T12:08:49.1132426Z ✔ a pull request from a fork, or one that had to be approved, gets no build secrets (13.671513ms)
2026-10-18T12:08:49.1134447Z ✔ it is refused without a job's write token, after the job, without the plan, or with previews off (15.795861ms)
2026-10-18T12:08:49.1171037Z ✔ a job that ends without finishing its build fails the build at once, and leaves a finished one be (12.514738ms)
2026-10-18T12:08:49.6642403Z ✔ only a workflow job's token for the repository, with deployments: write, opens a build (3.075194ms)
2026-10-18T12:08:49.6652203Z ✔ a run on the production branch builds production; another branch, its preview; a pull request, its own (0.959189ms)
2026-10-18T12:08:49.6673508Z ✔ a run from a fork, from someone who cannot push, or one that needed approval gets no secrets (0.308643ms)
2026-10-18T12:08:49.6673830Z ✔ the commit is the run's unless one is given (0.563656ms)
2026-10-18T12:08:49.6678281Z ✔ the project is the one named, or the only one with Deployments on (0.897827ms)
2026-10-18T12:08:49.6681885Z ✔ a read-only token opens only a preview, and only from the deploy workflow g1t manages (0.767421ms)
2026-10-18T12:08:49.6686643Z ✔ a build its job left open says how the job ended (0.604618ms)
2026-10-18T12:08:49.6933086Z ℹ tests 95
2026-10-18T12:08:49.6933474Z ℹ suites 0
2026-10-18T12:08:49.6933659Z ℹ pass 95
2026-10-18T12:08:49.6933827Z ℹ fail 0
2026-10-18T12:08:49.6933995Z ℹ cancelled 0
2026-10-18T12:08:49.6934218Z ℹ skipped 0
2026-10-18T12:08:49.6934389Z ℹ todo 0
2026-10-18T12:08:49.6934541Z ℹ duration_ms 6652.808468
2026-10-18T12:08:49.7130280Z 
2026-10-18T12:08:49.7130697Z > @g1t/notify@0.1.0 test
2026-10-18T12:08:49.7130874Z > node --test src/*.test.ts
2026-10-18T12:08:49.7131043Z 
2026-10-18T12:08:49.9569471Z ✔ a device is an Expo push token, a platform and maybe a name (2.302525ms)
2026-10-18T12:08:50.1164525Z ✔ a message says what a browser push says, with where it is in chat (0.557456ms)
2026-10-18T12:08:50.1164672Z ✔ what is not said to you goes at normal priority; one with no conversation threads by itself (0.297296ms)
2026-10-18T12:08:50.1164711Z ✔ a card's place travels with it (0.359969ms)
2026-10-18T12:08:50.1164786Z ✔ tickets: ok counts, DeviceNotRegistered is gone, anything else is an error (0.427311ms)
2026-10-18T12:08:50.1164854Z ✔ sending: 100 to a request, JSON with Expo's headers, the access token only when set (36.518623ms)
2026-10-18T12:08:50.1164921Z ✔ a failed request counts nothing and the others still count (1.790357ms)
2026-10-18T12:08:50.1164987Z ✔ a notification of a message from before the clear is dropped; one after is told (1.381683ms)
2026-10-18T12:08:50.1165053Z ✔ forgetting is kept per workspace and conversation, and takes only chat's ids (0.462474ms)
2026-10-18T12:08:50.2660839Z ✔ the default hears of what is said to you or waits on you, not everything (2.492791ms)
2026-10-18T12:08:50.2715065Z ✔ a workspace's own level wins over the general one (0.451878ms)
2026-10-18T12:08:50.2715537Z ✔ changes are checked: unknown levels ignored, null clears, the same as the general level is no override (0.705759ms)
2026-10-18T12:08:50.2715652Z ✔ a tab counts as in front of you only while focused and recently heard from (0.289814ms)
2026-10-18T12:08:50.2715716Z ✔ push only when no tab is focused, there is a browser to push to, and the level wants it (0.686259ms)
2026-10-18T12:08:50.2715772Z ✔ notifications are cleaned: kinds checked, links kept on the site, text trimmed (3.052821ms)
2026-10-18T12:08:50.2724699Z ✔ settled threads are strings, each once, and bounded (0.774792ms)
2026-10-18T12:08:50.2749148Z ✔ a push is small and collapses by conversation (0.559459ms)
2026-10-18T12:08:50.2749946Z ✔ counts add up, replace on set, never go below zero, and keep mute (0.495744ms)
2026-10-18T12:08:50.2750186Z ✔ totals leave muted unread out, as the rail does, but count their mentions (0.903115ms)
2026-10-18T12:08:50.2750934Z ✔ a notification's card is checked: its place, its actions, links kept on the site (0.592769ms)
2026-10-18T12:08:50.2753491Z ✔ a push shows only the card's actions that need nothing typed or confirmed, two at most (0.42649ms)
2026-10-18T12:08:50.2753822Z ✔ a person with only the phone app is pushed to: the feed counts browsers and phones together (0.294202ms)
2026-10-18T12:08:50.5046519Z ✔ presence comes from the tabs: none is offline, all idle is away, one in use is active (1.837407ms)
2026-10-18T12:08:50.5087940Z ✔ a status is an emoji and a few words, trimmed, and clears at a time in the future (1.205709ms)
2026-10-18T12:08:50.5088049Z ✔ a status and Do Not Disturb are gone once their time passes (0.664427ms)
2026-10-18T12:08:50.5088127Z ✔ Do Not Disturb resumes with null, and refuses a time in the past (0.282694ms)
2026-10-18T12:08:50.5088192Z ✔ a calendar never replaces a status set by hand, but replaces its own (0.413861ms)
2026-10-18T12:08:50.5105552Z ✔ Do Not Disturb silences toasts and pushes; a test still shows (1.582795ms)
2026-10-18T12:08:50.5106863Z ✔ entries say how a person shows, and compare without their time (0.777306ms)
2026-10-18T12:08:50.5108076Z ✔ what is kept reads back, and anything else reads as nothing (0.691838ms)
2026-10-18T12:08:50.5109740Z ✔ a workspace's presence narrows to the people asked about (0.982764ms)
2026-10-18T12:08:50.5112696Z ✔ workspaces are slugs, lowercased and distinct (0.868774ms)
2026-10-18T12:08:50.7278734Z ✔ a workspace slug is lowercased and checked (1.942104ms)
2026-10-18T12:08:50.7295995Z ✔ the first mark starts a visit with nothing before it (1.726241ms)
2026-10-18T12:08:50.7299068Z ✔ marks close together are one visit; a gap starts the next (0.652389ms)
2026-10-18T12:08:50.7313100Z ✔ a mark never moves the visit back (0.880111ms)
2026-10-18T12:08:50.7313203Z ✔ a mark is never in the future, nor more than a day behind (0.633911ms)
2026-10-18T12:08:50.7313269Z ✔ last here: the visit before during one, its last mark after (0.28689ms)
2026-10-18T12:08:50.9101561Z ✔ a change keeps only what a change carries (3.243237ms)
2026-10-18T12:08:50.9106224Z ✔ what is not a change is dropped (0.620992ms)
2026-10-18T12:08:50.9119268Z ✔ changes go to their repositories in the order they came (6.152571ms)
2026-10-18T12:08:50.9124939Z ✔ each watcher hears the repository by the name it asked for (0.623836ms)
2026-10-18T12:08:50.9134468Z ✔ repository ids and paths are checked (0.374652ms)
2026-10-18T12:08:50.9134533Z ✔ a watch lasts its time and no longer (0.351598ms)
2026-10-18T12:08:50.9134610Z ✔ a workspace's changes keep only what one carries, by workspace (0.817997ms)
2026-10-18T12:08:51.0543933Z ✔ encryption reproduces RFC 8291's example byte for byte (17.762201ms)
2026-10-18T12:08:51.2071501Z ✔ the example's body decrypts with the subscriber's key (3.471539ms)
2026-10-18T12:08:51.2071604Z ✔ a fresh key and salt each time, and it still round-trips (9.568507ms)
2026-10-18T12:08:51.2071665Z ✔ too long a message for one record is refused (0.609145ms)
2026-10-18T12:08:51.2071754Z ✔ the VAPID JWT: ES256, the push service's origin, a 12-hour expiry, a subject, and a signature that verifies (4.267112ms)
2026-10-18T12:08:51.2071812Z ✔ a push is posted encrypted with its headers; 404 and 410 mean gone (50.211047ms)
2026-10-18T12:08:51.2071826Z ℹ tests 51
2026-10-18T12:08:51.2071835Z ℹ suites 0
2026-10-18T12:08:51.2071844Z ℹ pass 51
2026-10-18T12:08:51.2071853Z ℹ fail 0
2026-10-18T12:08:51.2071862Z ℹ cancelled 0
2026-10-18T12:08:51.2071872Z ℹ skipped 0
2026-10-18T12:08:51.2071880Z ℹ todo 0
2026-10-18T12:08:51.2071889Z ℹ duration_ms 1384.506974
2026-10-18T12:08:51.2071905Z 
2026-10-18T12:08:51.2071914Z > @g1t/og@0.1.0 test
2026-10-18T12:08:51.2071922Z > node --test src/*.test.ts
2026-10-18T12:08:51.2071930Z 
2026-10-18T12:08:51.3474648Z platform pause unreadable, so nothing is paused Error: platform_pause failed with status 500
2026-10-18T12:08:51.3504163Z ✔ while renders are paused, a miss gets the cached brand card, kept a minute (37.734669ms)
2026-10-18T12:08:51.3504272Z ✔ with no brand card cached, a miss is sent to the static logo (0.385699ms)
2026-10-18T12:08:51.3517328Z ✔ the platform pause is read once per 30 seconds, and nothing is paused when billing cannot say (2.469535ms)
2026-10-18T12:08:51.5071214Z ✔ paths are split and decoded, and anything else is refused (2.315294ms)
2026-10-18T12:08:51.5074052Z ✔ the site's own pages get their own cards, or the brand card (0.82658ms)
2026-10-18T12:08:51.5075963Z ✔ a workspace shows its name and how many projects are public (0.476606ms)
2026-10-18T12:08:51.5086956Z ✔ a person shows their name, bio and public work, looked up as no one (0.785148ms)
2026-10-18T12:08:51.5089409Z ✔ a public project shows its name, description and open work (0.514092ms)
2026-10-18T12:08:51.5095808Z ✔ work items, pull requests and Soon pages get cards of their own (1.948964ms)
2026-10-18T12:08:51.5098384Z ✔ nothing private ever reaches a card (0.734321ms)
2026-10-18T12:08:51.5100423Z ✔ a private project on a public repository keeps its name to itself (0.344527ms)
2026-10-18T12:08:51.5102347Z ✔ every lookup is made with no viewer (0.619409ms)
2026-10-18T12:08:51.5109505Z ✔ a service that fails gives the brand card, marked so it is not kept (3.761393ms)
2026-10-18T12:08:51.5110769Z ✔ a docs card is bounded, and has a title even without one (0.755223ms)
2026-10-18T12:08:51.5113432Z ✔ the cache key keeps only what changes the card (1.008894ms)
2026-10-18T12:08:51.5118687Z ✔ a v the site never writes is left out of the key (0.579981ms)
2026-10-18T12:08:51.5121652Z ✔ a path is keyed by the page whose card it shows (0.570657ms)
2026-10-18T12:08:51.5124510Z ✔ a path resolves to the same card as the page it is keyed by (0.520911ms)
2026-10-18T12:08:51.6607289Z ✔ an external production is visited only at a public address (2.377617ms)
2026-10-18T12:08:51.6631150Z ✔ an external request names a public http(s) address and a commit or a day (1.338749ms)
2026-10-18T12:08:51.6631486Z ✔ external screenshots are kept apart, by host (0.530677ms)
2026-10-18T12:08:51.6632099Z ✔ an external screenshot stands for a day, and not from before the deploy (0.443485ms)
2026-10-18T12:08:51.6632624Z ✔ the daily refresh takes the missing and the stalest first, up to its limit (0.442444ms)
2026-10-18T12:08:51.6641407Z ✔ only apps on g1t.page, with a commit, are taken (0.435193ms)
2026-10-18T12:08:51.6648929Z ✔ keys are by hostname (0.192438ms)
2026-10-18T12:08:51.6655924Z ✔ a failed attempt at a commit waits before it is tried again (0.262283ms)
2026-10-18T12:08:51.6664801Z ✔ a screenshot is current when it shows the commit and was taken after the deploy (1.585088ms)
2026-10-18T12:08:51.6686790Z ✔ kept objects expire after KEEP_DAYS (0.340852ms)
2026-10-18T12:08:51.6799464Z ℹ tests 28
2026-10-18T12:08:51.6799786Z ℹ suites 0
2026-10-18T12:08:51.6799932Z ℹ pass 28
2026-10-18T12:08:51.6800071Z ℹ fail 0
2026-10-18T12:08:51.6800208Z ℹ cancelled 0
2026-10-18T12:08:51.6800361Z ℹ skipped 0
2026-10-18T12:08:51.6800502Z ℹ todo 0
2026-10-18T12:08:51.6800666Z ℹ duration_ms 492.286371
2026-10-18T12:08:51.6893854Z 
2026-10-18T12:08:51.6894175Z > @g1t/pages@0.1.0 test
2026-10-18T12:08:51.6894349Z > node --test src/*.test.ts
2026-10-18T12:08:51.6894496Z 
2026-10-18T12:08:51.9186262Z g1t-request {
2026-10-18T12:08:51.9186568Z   id: 'ed297e941d53ba31',
2026-10-18T12:08:51.9186585Z   script: 'web-acme',
2026-10-18T12:08:51.9186632Z   trace_id: 'af835c334cf358151211d4077fe0b5f7',
2026-10-18T12:08:51.9186647Z   app: null
2026-10-18T12:08:51.9186660Z }
2026-10-18T12:08:51.9238913Z g1t-request {
2026-10-18T12:08:51.9239111Z   id: '557634fb2b175bf6',
2026-10-18T12:08:51.9239262Z   script: 'shop-acme',
2026-10-18T12:08:51.9239431Z   trace_id: '600c6e820f8151ee11e40a398d65fb40',
2026-10-18T12:08:51.9239603Z   app: null
2026-10-18T12:08:51.9239768Z }
2026-10-18T12:08:51.9264130Z g1t-request {
2026-10-18T12:08:51.9264164Z   id: '6cccfeb895193dd7',
2026-10-18T12:08:51.9264177Z   script: 'web-acme',
2026-10-18T12:08:51.9264207Z   trace_id: '48df8a8929b4ffbcf05305f2cd385fab',
2026-10-18T12:08:51.9264218Z   app: null
2026-10-18T12:08:51.9264226Z }
2026-10-18T12:08:51.9264234Z g1t-request {
2026-10-18T12:08:51.9264242Z   id: '1ba4e55c0568a48c',
2026-10-18T12:08:51.9264252Z   script: 'web-git-x-acme',
2026-10-18T12:08:51.9264268Z   trace_id: '56447c3d02cfc4a21a75d41a3391d3c8',
2026-10-18T12:08:51.9264277Z   app: null
2026-10-18T12:08:51.9264285Z }
2026-10-18T12:08:51.9269524Z g1t-request {
2026-10-18T12:08:51.9269555Z   id: '9fee479153095979',
2026-10-18T12:08:51.9269574Z   script: 'gone-acme',
2026-10-18T12:08:51.9269605Z   trace_id: '06450670d08aedaa397678b55142632a',
2026-10-18T12:08:51.9269619Z   app: null
2026-10-18T12:08:51.9269629Z }
2026-10-18T12:08:51.9292354Z g1t-request {
2026-10-18T12:08:51.9292386Z   id: '690207853a762004',
2026-10-18T12:08:51.9292410Z   script: 'lab-api-flagon-io',
2026-10-18T12:08:51.9292458Z   trace_id: '61be0d2b793b3c786cdc65333d8e2aa0',
2026-10-18T12:08:51.9292480Z   app: null
2026-10-18T12:08:51.9292493Z }
2026-10-18T12:08:51.9326102Z g1t-request {
2026-10-18T12:08:51.9326136Z   id: 'd81bb2690b352776',
2026-10-18T12:08:51.9326151Z   script: 'shop-acme',
2026-10-18T12:08:51.9326179Z   trace_id: '19796771f8941218654a7a6795c46f10',
2026-10-18T12:08:51.9326191Z   app: null
2026-10-18T12:08:51.9326199Z }
2026-10-18T12:08:51.9326207Z g1t-request {
2026-10-18T12:08:51.9326215Z   id: '27dc002578d47329',
2026-10-18T12:08:51.9326224Z   script: 'web-acme',
2026-10-18T12:08:51.9326244Z   trace_id: '9b4d94f7cd118cb16f7717d5afbb35db',
2026-10-18T12:08:51.9326254Z   app: null
2026-10-18T12:08:51.9326262Z }
2026-10-18T12:08:51.9389683Z ✔ hosts on g1t.page are the home page, the fallback origin, or an app (2.33256ms)
2026-10-18T12:08:51.9402221Z ✔ any other host is a custom domain (0.501853ms)
2026-10-18T12:08:51.9411772Z ✔ entries are read only when they are well formed (0.379409ms)
2026-10-18T12:08:51.9413375Z ✔ redirects keep the path and query (1.897508ms)
2026-10-18T12:08:51.9415519Z ✔ a custom domain is served by its project's app, with the request's host kept (39.225966ms)
2026-10-18T12:08:51.9443086Z ✔ a paired domain redirects with a 308, path and query kept (0.945198ms)
2026-10-18T12:08:51.9443170Z ✔ an unknown custom domain gets the branded 404 (1.169805ms)
2026-10-18T12:08:51.9444428Z ✔ a custom domain whose app is not up says so (1.419921ms)
2026-10-18T12:08:51.9449544Z ✔ g1t.page addresses dispatch by label as before (3.702826ms)
2026-10-18T12:08:51.9460023Z ✔ an app's old address redirects to its new one, whatever the old script answers (1.542334ms)
2026-10-18T12:08:51.9480293Z ✔ an app address with no redirect, or a failing lookup, is served as it is (0.869795ms)
2026-10-18T12:08:51.9480398Z ✔ every app runs within the limits, and one that goes over them says so (1.264056ms)
2026-10-18T12:08:51.9480470Z ✔ each request gets an id and continues the caller's trace, or starts one (0.495944ms)
2026-10-18T12:08:51.9480531Z ✔ an app's own entry carries what its requests are filed under (0.179229ms)
2026-10-18T12:08:51.9689840Z ℹ tests 14
2026-10-18T12:08:51.9690245Z ℹ suites 0
2026-10-18T12:08:51.9690448Z ℹ pass 14
2026-10-18T12:08:51.9690617Z ℹ fail 0
2026-10-18T12:08:51.9690828Z ℹ cancelled 0
2026-10-18T12:08:51.9690996Z ℹ skipped 0
2026-10-18T12:08:51.9691212Z ℹ todo 0
2026-10-18T12:08:51.9691397Z ℹ duration_ms 238.426922
2026-10-18T12:08:51.9823820Z 
2026-10-18T12:08:51.9824134Z > @g1t/projects@0.1.0 test
2026-10-18T12:08:51.9824305Z > node --test src/*.test.ts
2026-10-18T12:08:51.9824455Z 
2026-10-18T12:08:52.1869244Z ✔ a private project is seen by those who can read its repository (1.598929ms)
2026-10-18T12:08:52.3391987Z ✔ changing a project takes Maintain (0.809845ms)
2026-10-18T12:08:52.3392068Z ✔ a first piece of activity scores one (1.948373ms)
2026-10-18T12:08:52.3392146Z ✔ activity counts half as much a week later (0.265318ms)
2026-10-18T12:08:52.3392217Z ✔ a busy project outranks one busy long ago (0.541472ms)
2026-10-18T12:08:52.3392283Z ✔ an event delivered late never moves the time back (0.171928ms)
2026-10-18T12:08:52.3392299Z ✔ nonsense counts as nothing (0.269845ms)
2026-10-18T12:08:52.3392366Z ✔ pushes, work and deployments count; housekeeping does not (0.114282ms)
2026-10-18T12:08:52.3392431Z ✔ a work item's activity counts for every repository it is linked to (0.202264ms)
2026-10-18T12:08:52.4639245Z ✔ a change sets the description, clears it, or leaves it (1.374792ms)
2026-10-18T12:08:52.6885629Z ✔ a Composer package is a library; a Composer project is an app (3.948104ms)
2026-10-18T12:08:52.6890534Z ✔ package.json: an entry point without a start or dev script is a library (0.911157ms)
2026-10-18T12:08:52.6898141Z ✔ Cargo: a library and no binary is a library (0.651767ms)
2026-10-18T12:08:52.6904653Z ✔ Go: a module with no package main at its root is a library (0.625178ms)
2026-10-18T12:08:52.6908278Z ✔ Python: a build backend and no app framework is a library (1.136816ms)
2026-10-18T12:08:52.6921879Z ✔ the language's manifest decides before package.json, and a Workers config is always an app (2.582465ms)
2026-10-18T12:08:52.6921930Z ✔ the setting wins over everything (0.424257ms)
2026-10-18T12:08:52.6922018Z ✔ where it runs: set, or on g1t while Deployments are on, or nobody has said (0.68017ms)
2026-10-18T12:08:52.6937555Z ✔ an app that deploys production itself deploys itself, until something says otherwise (0.589725ms)
2026-10-18T12:08:52.6944408Z ✔ a change to the setting keeps it coherent (0.654352ms)
2026-10-18T12:08:52.6944642Z ✔ on auto: Deployments on, then packages, then files, then an app (0.340872ms)
2026-10-18T12:08:52.6944798Z ✔ an unknown setting is left to detection (0.147321ms)
2026-10-18T12:08:52.6949757Z ✔ detection says tool, and docs, where the files do (0.258858ms)
2026-10-18T12:08:52.8723248Z ✔ an address is http or https, with https added when none is given (3.811709ms)
2026-10-18T12:08:52.8723410Z ✔ anything else is refused, naming what it is (0.728183ms)
2026-10-18T12:08:52.8733997Z ✔ links: blank rows dropped, labels from the host, at most ten (1.040481ms)
2026-10-18T12:08:52.8742042Z ✔ stored links that cannot be read are none (0.350557ms)
2026-10-18T12:08:52.8752508Z ✔ a repository's own project follows its website until it has a homepage of its own (0.404307ms)
2026-10-18T12:08:53.0012275Z ✔ a pin goes at the end, or where it is asked for (1.809445ms)
2026-10-18T12:08:53.0035376Z ✔ pinning one already pinned moves it, never twice (0.210556ms)
2026-10-18T12:08:53.0099497Z ✔ a workspace holds a limited number of pins (0.243916ms)
2026-10-18T12:08:53.0100856Z ✔ reordering names every pin once and nothing else (0.329734ms)
2026-10-18T12:08:53.0102628Z ✔ recent leaves out what is pinned and keeps the latest few (0.276866ms)
2026-10-18T12:08:53.7546731Z ✔ a production image is a PNG, JPEG or WebP, by its bytes (1.145268ms)
2026-10-18T12:08:53.7546914Z ✔ an upload is checked: present, at most 5 MB, and an image (617.227085ms)
2026-10-18T12:08:53.7561794Z ✔ an image is kept by its hash, apart from avatars (8.600635ms)
2026-10-18T12:08:53.7567346Z ✔ the stored image, and whether it is preferred (1.035113ms)
2026-10-18T12:08:53.7575407Z ✔ only production elsewhere, at an address and not shown as an upload, is visited (0.212188ms)
2026-10-18T12:08:53.7577989Z ✔ the day a screenshot is versioned by (0.356464ms)
2026-10-18T12:08:53.9726625Z ✔ each statement is bound with as many values as it asks for (1.427722ms)
2026-10-18T12:08:53.9726966Z ✔ only stale slugs move, to the current one (1.456585ms)
2026-10-18T12:08:54.1654798Z ✔ each statement is bound with as many values as it asks for (2.723927ms)
2026-10-18T12:08:54.1655383Z ✔ projects move from the workspace the repository left to the one it is in (1.407922ms)
2026-10-18T12:08:54.1656305Z ✔ a delivery after the rows moved moves nothing but the path (0.399009ms)
2026-10-18T12:08:54.1656909Z ✔ a transfer keeps every slug (0.60655ms)
2026-10-18T12:08:54.1659567Z ✔ renamed, the repository's own project takes the new name as its slug if it is free (0.577716ms)
2026-10-18T12:08:54.1667718Z ✔ a rename of letter case alone keeps the slug (0.358578ms)
2026-10-18T12:08:54.1684045Z ✔ names become slugs as projects spell them (0.295132ms)
2026-10-18T12:08:54.1861651Z ℹ tests 48
2026-10-18T12:08:54.1862498Z ℹ suites 0
2026-10-18T12:08:54.1862976Z ℹ pass 48
2026-10-18T12:08:54.1863661Z ℹ fail 0
2026-10-18T12:08:54.1863719Z ℹ cancelled 0
2026-10-18T12:08:54.1864348Z ℹ skipped 0
2026-10-18T12:08:54.1864369Z ℹ todo 0
2026-10-18T12:08:54.1864786Z ℹ duration_ms 2141.764896
2026-10-18T12:08:54.1974540Z 
2026-10-18T12:08:54.1974596Z > @g1t/runner@0.1.0 test
2026-10-18T12:08:54.1974621Z > node --test src/*.test.ts
2026-10-18T12:08:54.1974632Z 
2026-10-18T12:08:54.4171463Z ✔ the sandbox gets its job and token, and no git credential (2.222975ms)
2026-10-18T12:08:54.5691129Z ✔ one sandbox per job (0.302143ms)
2026-10-18T12:08:54.5691283Z ✔ the pace comes from the variables, and 0 turns backups off (0.339619ms)
2026-10-18T12:08:54.8019712Z ✔ a request carrying a stand-in for its host is filled in, sent, and its answer scrubbed (86.138365ms)
2026-10-18T12:08:54.8019901Z ✔ a body is relayed, and one past the limit is refused (96.914263ms)
2026-10-18T12:08:54.8019972Z ✔ it is no open proxy: no stand-in, another host, or plain HTTP is refused and noted (3.503417ms)
2026-10-18T12:08:54.8031002Z ✔ only the job's current token opens it, and it must come as a header (1.45985ms)
2026-10-18T12:08:54.8031041Z ✔ a request has a time limit (2.721693ms)
2026-10-18T12:08:54.8036614Z ✔ an answer past the limit is refused by its length, or cut off as it streams (3.42599ms)
2026-10-18T12:08:54.8040793Z ✔ a value split across chunks is still scrubbed, and other bytes pass as they are (1.80608ms)
2026-10-18T12:08:54.8042487Z ✔ text bodies are scrubbed whatever their size; binary ones stream as they are (0.358818ms)
2026-10-18T12:08:54.8079111Z ✔ the request reads only in its own shape, and answer headers keep each cookie (10.895197ms)
2026-10-18T12:08:54.9991453Z ✔ stand-ins are found in the URL, the headers and Basic credentials (35.67621ms)
2026-10-18T12:08:54.9991611Z ✔ a stand-in in a header is filled in for its host (1.051647ms)
2026-10-18T12:08:55.0001353Z ✔ custom headers and token schemes are filled in as well (0.467992ms)
2026-10-18T12:08:55.0016949Z ✔ Basic credentials are decoded, filled in and encoded again (0.697656ms)
2026-10-18T12:08:55.0017027Z ✔ a stand-in in the query string is filled in, encoded (0.435994ms)
2026-10-18T12:08:55.0017084Z ✔ a stand-in sent to another host is left as it is and reported (2.003226ms)
2026-10-18T12:08:55.0017392Z ✔ a value is filled in only over HTTPS, even for its own host (0.43303ms)
2026-10-18T12:08:55.0017448Z ✔ a stand-in the job was not given is left alone, and not reported (0.270485ms)
2026-10-18T12:08:55.0075416Z ✔ a value echoed back is swapped for its stand-in again (0.813751ms)
2026-10-18T12:08:55.0075531Z ✔ only small, plain, uncompressed answers have their bodies rewritten (0.778097ms)
2026-10-18T12:08:55.0075594Z ✔ a misdirected secret is noted once per host (0.357646ms)
2026-10-18T12:08:55.1489754Z ✔ a well-formed update can start (1.741763ms)
2026-10-18T12:08:55.1501206Z ✔ the branch must be a security update's (0.48705ms)
2026-10-18T12:08:55.1512077Z ✔ names, versions and lockfiles are checked before anything starts (0.388664ms)
2026-10-18T12:08:55.1531148Z ✔ g1t acts as itself, a member of the workspace (1.110907ms)
2026-10-18T12:08:55.1531468Z ✔ the sandbox is given what bump mode reads (0.483215ms)
2026-10-18T12:08:55.1532662Z ✔ a version update names any branch git takes (0.883966ms)
2026-10-18T12:08:55.1533773Z ✔ a version update's packages, strategy and registries are checked (2.01284ms)
2026-10-18T12:08:55.1536096Z ✔ a version update's sandbox is told what to raise, how and from where (0.428193ms)
2026-10-18T12:08:55.2885040Z ✔ tokens are hashed the way identity stores them (5.819852ms)
2026-10-18T12:08:55.3218813Z ✔ a sandbox's credentials are bound to its run and revoked once when it stops (31.39769ms)
2026-10-18T12:08:55.3231933Z ✔ a sandbox with no run record still has its credentials revoked (1.950607ms)
2026-10-18T12:08:55.4438472Z ✔ a brokered secret's hosts match exactly, or by wildcard (1.797527ms)
2026-10-18T12:08:55.6591134Z ✔ hosts are compared without case, port or trailing dot (0.317135ms)
2026-10-18T12:08:55.6591236Z ✔ a wildcard covers subdomains at any depth, not the domain itself (0.188893ms)
2026-10-18T12:08:55.6591298Z ✔ the harness is told the run's time cap and branch, and nothing about the network (1.167321ms)
2026-10-18T12:08:55.6591610Z ✔ each sandbox class reports to its own namespace (0.29357ms)
2026-10-18T12:08:56.0484717Z egress upstream failed registry.npmjs.org GET try 1 of 3 Error: Network connection lost.
2026-10-18T12:08:56.0484872Z egress upstream failed registry.npmjs.org GET try 2 of 3 Error: Network connection lost.
2026-10-18T12:08:56.0528155Z egress upstream failed registry.npmjs.org GET try 1 of 3 Error: Network connection lost.
2026-10-18T12:08:56.0534016Z egress upstream failed registry.npmjs.org GET try 2 of 3 Error: Network connection lost.
2026-10-18T12:08:56.0534140Z egress upstream failed registry.npmjs.org GET try 3 of 3 Error: Network connection lost.
2026-10-18T12:08:56.0547844Z egress upstream failed api.example.com POST try 1 of 1 Error: Network connection lost.
2026-10-18T12:08:56.0627597Z egress upstream failed registry.npmjs.org GET try 1 of 3 Error: aborted
2026-10-18T12:08:56.0627682Z egress upstream failed registry.npmjs.org GET try 1 of 3 Error: aborted
2026-10-18T12:08:56.0627737Z egress upstream failed registry.npmjs.org GET try 2 of 3 Error: aborted
2026-10-18T12:08:56.0627932Z egress upstream failed registry.npmjs.org GET try 3 of 3 Error: aborted
2026-10-18T12:08:56.0678982Z egress body broke off registry.npmjs.org 3000000 of 8392704 bytes resuming, try 1 of 2 Error: aborted
2026-10-18T12:08:56.0768858Z egress body broke off registry.npmjs.org 6000000 of 8392704 bytes resuming, try 2 of 2 Error: aborted
2026-10-18T12:08:56.0991573Z egress body broke off registry.npmjs.org 3000000 of 8392704 bytes resuming, try 1 of 2 Error: aborted
2026-10-18T12:08:56.1031924Z egress body not resumed registry.npmjs.org 3000000 of 8392704 bytes the rest could not be had (206 bytes 3000000-8392703/8392704)
2026-10-18T12:08:56.1356764Z egress body broke off registry.npmjs.org 1000000 of 8392704 bytes resuming, try 1 of 2 Error: the answer ended after 1000000 of 8392704 bytes
2026-10-18T12:08:56.1644911Z egress body broke off registry.npmjs.org 1000000 of 8392704 bytes resuming, try 1 of 2 Error: aborted
2026-10-18T12:08:56.1702988Z egress body broke off registry.npmjs.org 2000000 of 8392704 bytes resuming, try 2 of 2 Error: aborted
2026-10-18T12:08:56.1755892Z egress body not resumed registry.npmjs.org 3000000 of 8392704 bytes Error: aborted
2026-10-18T12:08:56.1815349Z egress body broke off registry.npmjs.org 2000000 of 8392704 bytes resuming, try 1 of 2 Error: aborted
2026-10-18T12:08:56.1815763Z egress body broke off registry.npmjs.org 2000000 of 8392704 bytes resuming, try 2 of 2 Error: Network connection lost.
2026-10-18T12:08:56.2089930Z egress body broke off registry.npmjs.org 1000000 of 8392704 bytes resuming, try 1 of 2 Error: aborted
2026-10-18T12:08:56.2090091Z egress body not resumed registry.npmjs.org 1000000 of 8392704 bytes the rest could not be had (200 without a range)
2026-10-18T12:08:56.2153254Z ✔ a GET that fails is tried again, and its answer comes back (36.240967ms)
2026-10-18T12:08:56.2153627Z ✔ one that keeps failing gets a 502 naming the host and why, never a throw (1.608343ms)
2026-10-18T12:08:56.2153650Z ✔ a POST is never sent twice (0.873651ms)
2026-10-18T12:08:56.2153721Z ✔ an answer, even an error, is passed on as it is (2.996326ms)
2026-10-18T12:08:56.2154170Z ✔ a body that breaks off midway is tried again, and the whole answer comes back (2.169405ms)
2026-10-18T12:08:56.2154223Z ✔ a body that keeps breaking off ends as a 502, not a truncated answer (1.502835ms)
2026-10-18T12:08:56.2161807Z ✔ large, compressed or unsized answers stream as they come (1.023837ms)
2026-10-18T12:08:56.2168701Z ✔ a large tarball that breaks off midway is resumed from where it stopped, and arrives whole (31.483779ms)
2026-10-18T12:08:56.2173499Z ✔ a rest that comes compressed is never joined on to a body that came as it is (8.823439ms)
2026-10-18T12:08:56.2174616Z ✔ a large tarball sent whole streams as it is, asked for once (26.118999ms)
2026-10-18T12:08:56.2176476Z ✔ a body that ends short of its length is resumed too (32.023239ms)
2026-10-18T12:08:56.2178385Z ✔ a body that keeps breaking off errors after its resumptions, never handing on a short answer as whole (13.614397ms)
2026-10-18T12:08:56.2180768Z ✔ a resumption that fails to connect is tried again (27.359851ms)
2026-10-18T12:08:56.2185519Z ✔ no rest is joined on when the host answers a range with the whole file (5.661664ms)
2026-10-18T12:08:56.2186926Z ✔ only a whole, plain answer to a GET, from a host that takes ranges, is resumable (1.264007ms)
2026-10-18T12:08:56.4509229Z ✔ a paid workspace's start is reserved and goes ahead (43.864676ms)
2026-10-18T12:08:56.6167900Z ✔ billing's refusal is shown in its own words (6.575115ms)
2026-10-18T12:08:56.6168371Z ✔ a refusal without words gets g1t's, with what to do and where (2.002885ms)
2026-10-18T12:08:56.6168452Z ✔ a paused workspace starts nothing, and billing is not asked to reserve (0.890246ms)
2026-10-18T12:08:56.6168547Z ✔ an answer that holds compute back is kept seconds, one that lets it through half a minute (0.331558ms)
2026-10-18T12:08:56.6168942Z ✔ internal and enterprise plans pass even when billing refuses (1.69301ms)
2026-10-18T12:08:56.6169016Z ✔ a pause from billing holds for every plan: g1t's own budget and its daily breaker (1.349796ms)
2026-10-18T12:08:56.6169098Z ✔ billing down: free workspaces fail closed, paying ones go on (1.613771ms)
2026-10-18T12:08:56.6169155Z ✔ an answer that is not a refusal counts as billing being down (0.782945ms)
2026-10-18T12:08:56.6169228Z ✔ entitlements read in either case, and not at all without a plan (0.443646ms)
2026-10-18T12:08:56.6169297Z ✔ before they try: what a free workspace can start, by kind and repository (0.258328ms)
2026-10-18T12:08:56.6169353Z ✔ an estimate is the sandbox for its whole time cap (0.154982ms)
2026-10-18T12:08:56.6169411Z ✔ what work cost: its seconds at the sandbox price (0.369094ms)
2026-10-18T12:08:56.6169473Z ✔ the gate reads the sandbox price from the price book (0.536285ms)
2026-10-18T12:08:56.6169582Z ✔ the time cap is the lower of the guardrails' and the plan's (0.244687ms)
2026-10-18T12:08:56.6169642Z ✔ only a job that may be given brokered secrets passes the Worker (0.145499ms)
2026-10-18T12:08:56.6169705Z ✔ workflow jobs get Docker unless the operator turns it off (0.097757ms)
2026-10-18T12:08:56.6169847Z ✔ a stop that is told the first time is told once and logs nothing (2.200451ms)
2026-10-18T12:08:56.6170133Z ✔ a stop that fails once is tried again, and gets through (12.639525ms)
2026-10-18T12:08:56.6527288Z ✔ a stop that cannot be told never throws, and is logged with what and why (2.523426ms)
2026-10-18T12:08:56.6536572Z ✔ whatever is thrown, even nothing, is logged as one line (0.697256ms)
2026-10-18T12:08:56.6567412Z ✔ a service that cannot answer is a failure; one that refuses is not (38.712245ms)
2026-10-18T12:08:56.6567519Z ✔ a run inside its time cap is not stopped for inactivity (0.470736ms)
2026-10-18T12:08:56.6567620Z ✔ a sandbox with no cap or no start is stopped for inactivity as before (0.269143ms)
2026-10-18T12:08:56.6567691Z ✔ an earlier attempt's time cap does not stop the attempt running now (0.295604ms)
2026-10-18T12:08:56.6567754Z ✔ a sandbox with no run or no cap is never stopped for time (0.299769ms)
2026-10-18T12:08:56.6567818Z ✔ a sandbox g1t stopped fails even when its exit code says 0 (0.365028ms)
2026-10-18T12:08:56.6567887Z ✔ sandbox time billing confirms is forgotten; the rest is kept and tried again later (0.691607ms)
2026-10-18T12:08:56.6576058Z ✔ nothing kept means no retry; time tried for a week is given up (0.497075ms)
2026-10-18T12:08:56.6582557Z ✔ tries back off from 30 seconds to an hour (0.184166ms)
2026-10-18T12:08:56.7954142Z ✔ each label in the machine catalogue runs in its own class, bound and sized as wrangler.jsonc says (2.701364ms)
2026-10-18T12:08:56.7965584Z ✔ runs-on labels are the catalogue's, and a job is charged its minutes rounded up (0.687071ms)
2026-10-18T12:08:56.9545273Z self-hosted route unknown; using a sandbox Acme Error: runner_route failed with status 500
2026-10-18T12:08:56.9579510Z self-hosted task not cancelled do_3 Error: cancel_task failed with status 500
2026-10-18T12:08:56.9643929Z ✔ work goes to self-hosted runners only when the workspace says so (33.904511ms)
2026-10-18T12:08:56.9668885Z ✔ a task carries the sandbox's environment, without what only a sandbox has (0.461802ms)
2026-10-18T12:08:56.9682319Z ✔ handing over and withdrawing a task (2.065629ms)
2026-10-18T12:08:56.9682610Z ✔ the run says where it went (0.158588ms)
2026-10-18T12:08:56.9682696Z ✔ a task's repository comes from what the sandbox was started with (0.305328ms)
2026-10-18T12:08:56.9793049Z ℹ tests 91
2026-10-18T12:08:56.9793107Z ℹ suites 0
2026-10-18T12:08:56.9793130Z ℹ pass 91
2026-10-18T12:08:56.9793146Z ℹ fail 0
2026-10-18T12:08:56.9793327Z ℹ cancelled 0
2026-10-18T12:08:56.9793346Z ℹ skipped 0
2026-10-18T12:08:56.9793356Z ℹ todo 0
2026-10-18T12:08:56.9793734Z ℹ duration_ms 2727.564317
2026-10-18T12:08:56.9906261Z 
2026-10-18T12:08:56.9906628Z > @g1t/telemetry@0.1.0 test
2026-10-18T12:08:56.9906830Z > node --test src/*.test.ts src/otlp/*.test.ts
2026-10-18T12:08:56.9906989Z 
2026-10-18T12:08:57.1696745Z telemetry: usage not reported acme 2026-10 Error: billing answered 503
2026-10-18T12:08:57.1711293Z telemetry: a month that is over was not reported in full acme 2026-09 800
2026-10-18T12:08:57.1775678Z ✔ a free workspace's projects share one day's share, and a new day starts over (2.857608ms)
2026-10-18T12:08:57.1799716Z ✔ the plan last said holds; never said, it is unknown (0.58045ms)
2026-10-18T12:08:57.1800062Z ✔ on the plan, the month's total is reported, again when billing did not take it, and once it has, not again (3.289856ms)
2026-10-18T12:08:57.1800291Z ✔ the last report of a month goes before it ends (0.198348ms)
2026-10-18T12:08:57.1800530Z ✔ a month's last bytes are reported under that month after it ends; older months are not (1.482875ms)
2026-10-18T12:08:57.3352508Z ✔ a server span is a request, filed under its service and environment (2.356586ms)
2026-10-18T12:08:57.3377766Z ✔ an app on g1t.page has its requests counted from its tail events, not its SDK's spans (0.305408ms)
2026-10-18T12:08:57.3389259Z ✔ log records keep their severity, body and trace (5.374965ms)
2026-10-18T12:08:57.3389319Z ✔ metrics of each kind become points (1.823256ms)
2026-10-18T12:08:57.3398495Z ✔ a token names its project (0.281342ms)
2026-10-18T12:08:57.4958179Z ✔ a trace export in protobuf reads as OTLP/JSON does (3.984578ms)
2026-10-18T12:08:57.6430412Z ✔ logs and metrics in protobuf (2.965039ms)
2026-10-18T12:08:57.6430534Z ✔ a message cut short is refused, not read as garbage (0.57981ms)
2026-10-18T12:08:57.6430598Z ✔ a free workspace sends a thirtieth of 1 GB a day (0.845348ms)
2026-10-18T12:08:57.6430653Z ✔ past the day's share is over, and no cap never is (0.307421ms)
2026-10-18T12:08:57.6430727Z ✔ a held workspace takes nothing, a free one its day's share, the plan no cap; unknown is free (0.218168ms)
2026-10-18T12:08:57.6430783Z ✔ what is sent past the free amount costs by the GB; up to it, nothing (0.232338ms)
2026-10-18T12:08:57.6430806Z ✔ a row counts as what is kept of it (0.220811ms)
2026-10-18T12:08:57.7474083Z ✔ an error group linked to an issue keeps its old number when issues become work items (4.952351ms)
2026-10-18T12:08:57.7480743Z ✔ an error group's old number moves to legacy_number (3.269375ms)
2026-10-18T12:08:57.8878394Z ✔ routes lose their ids, keep their words (2.044588ms)
2026-10-18T12:08:57.8906633Z ✔ severities (0.262915ms)
2026-10-18T12:08:57.8908435Z ✔ ids and times (0.48631ms)
2026-10-18T12:08:57.8910373Z ✔ percentiles come from bucket counts, within a bucket of the truth (1.528713ms)
2026-10-18T12:08:57.8925722Z ✔ the same error thrown with different ids is one group (16.160608ms)
2026-10-18T12:08:58.0953023Z ✔ the dispatcher's half and the app's meet as one request, in either order (20.571907ms)
2026-10-18T12:08:58.1366407Z ✔ errors are grouped, counted, and open again when they come back (22.524667ms)
2026-10-18T12:08:58.1368816Z ✔ the overview counts requests, by minute and route, whether rolled up yet or not (26.05252ms)
2026-10-18T12:08:58.1474213Z ✔ a trace joins the request on g1t.page with the app's own spans and logs (12.731483ms)
2026-10-18T12:08:58.1594517Z ✔ logs are searched by words, levels and attributes, and paged (12.467186ms)
2026-10-18T12:08:58.1812243Z ✔ tokens: the deployments' one is kept and the same each time; others can be revoked (6.403458ms)
2026-10-18T12:08:58.1812402Z ✔ retention removes what is past it, and turning deployments off stops tail events (7.32427ms)
2026-10-18T12:08:58.1812474Z ✔ exports refuse addresses that loop or stay inside a network (5.907003ms)
2026-10-18T12:08:58.1812535Z ✔ search text, FTS queries and chart steps (0.383425ms)
2026-10-18T12:08:58.1871366Z ✔ a project of a workspace past its day's share is refused, and tail events keep only their requests (7.743788ms)
2026-10-18T12:08:58.2041437Z ℹ tests 35
2026-10-18T12:08:58.2041887Z ℹ suites 0
2026-10-18T12:08:58.2042104Z ℹ pass 35
2026-10-18T12:08:58.2042250Z ℹ fail 0
2026-10-18T12:08:58.2042422Z ℹ cancelled 0
2026-10-18T12:08:58.2042583Z ℹ skipped 0
2026-10-18T12:08:58.2042751Z ℹ todo 0
2026-10-18T12:08:58.2042922Z ℹ duration_ms 1165.003786
2026-10-18T12:08:58.2127619Z 
2026-10-18T12:08:58.2127960Z > @g1t/contracts@0.1.0 test
2026-10-18T12:08:58.2128143Z > node --test src/*.test.ts
2026-10-18T12:08:58.2128287Z 
2026-10-18T12:08:58.4304634Z ✔ formatting: bold, italic, strikethrough and code, as people and agents write them (3.332291ms)
2026-10-18T12:08:58.4304798Z ✔ words that only look like formatting stay words (1.718709ms)
2026-10-18T12:08:58.4304879Z ✔ mentions, channels and references; never inside code or a link's text (0.575704ms)
2026-10-18T12:08:58.4304940Z ✔ links go only to the web, mail or this site (0.508984ms)
2026-10-18T12:08:58.4305001Z ✔ XSS: script links, raw HTML and nested tricks are text (1.571388ms)
2026-10-18T12:08:58.4312758Z ✔ blocks: paragraphs keep their line breaks; code, lists, quotes, headings and rules (0.806279ms)
2026-10-18T12:08:58.4317231Z ✔ lists: numbered from where they start, nested by indenting, items with more than a line (0.456665ms)
2026-10-18T12:08:58.4321260Z ✔ deep nesting is bounded (4.167173ms)
2026-10-18T12:08:58.4322892Z ✔ plain text: the words without the marks, for previews (0.873671ms)
2026-10-18T12:08:58.4324744Z ✔ tables: a header, a --- row with its alignment, then rows (1.368163ms)
2026-10-18T12:08:58.5790460Z ✔ a member shows by their display name first (1.121342ms)
2026-10-18T12:08:58.7332194Z ✔ without a display name, a member shows by their username in its chosen case (0.289244ms)
2026-10-18T12:08:58.7332303Z ✔ a handle keeps its chosen case only when it is the same name (0.196625ms)
2026-10-18T12:08:58.7332367Z ✔ a coding agent is found by the address on its commits, not by its name (1.272099ms)
2026-10-18T12:08:58.7332449Z ✔ every agent has a unique id, lowercase addresses and logins, and a mark colour that is a hex or none (0.524678ms)
2026-10-18T12:08:58.8544155Z ✔ every connector has a unique id, a category and a scope (3.591239ms)
2026-10-18T12:08:58.8562139Z ✔ every category has connectors, and an available one in each scope it has is set up somewhere (0.876184ms)
2026-10-18T12:08:58.8591830Z ✔ every integration provider is an available connector, and no AI provider is one (0.8532ms)
2026-10-18T12:08:58.8594270Z ✔ only what g1t sets up end to end is available; the docs' Available today lists the same (1.030977ms)
2026-10-18T12:08:58.8594371Z ✔ a connector shows its personal side to you (0.417927ms)
2026-10-18T12:08:58.8594395Z ✔ a setup path names the workspace (0.235763ms)
2026-10-18T12:08:59.0281140Z ✔ timedD1 counts each statement's trip and each batch, and keeps bindings (2.877838ms)
2026-10-18T12:08:59.0300011Z ✔ openD1 reports the service time, the database time and the bookmark (35.971102ms)
2026-10-18T12:08:59.0305007Z ✔ openD1 without a session reads the primary and says so, with no db metric when nothing was read (0.861313ms)
2026-10-18T12:08:59.0316787Z ✔ sessionConstraint takes the two first-* words and a bookmark, and starts anything else on the primary (0.335914ms)
2026-10-18T12:08:59.1671455Z ✔ agrees with the Rust validator on every shared case (3.395364ms)
2026-10-18T12:08:59.1688335Z ✔ a parsed query keeps only what the catalog knows (0.870546ms)
2026-10-18T12:08:59.1713300Z ✔ every dataset has a time field and fields that are one thing each (0.338257ms)
2026-10-18T12:08:59.1713672Z ✔ a typed query is checked against the catalog (0.240912ms)
2026-10-18T12:08:59.1714436Z ✔ range ends are real dates or UTC times (0.284947ms)
2026-10-18T12:08:59.3419382Z ✔ a discovery document is read for its origins (2.227091ms)
2026-10-18T12:08:59.3431097Z ✔ anything else is not one (0.29287ms)
2026-10-18T12:08:59.3436036Z ✔ a connect link carries the site (0.270996ms)
2026-10-18T12:08:59.7561828Z ✔ agrees with the Rust validators on every shared case (3.241964ms)
2026-10-18T12:08:59.7561948Z ✔ addresses are flat, end in the id and survive renames (1.672089ms)
2026-10-18T12:08:59.7561985Z ✔ only a doc holds other folios (0.340681ms)
2026-10-18T12:08:59.7562005Z ✔ list queries are checked (0.335814ms)
2026-10-18T12:08:59.7562079Z ✔ the client calls exactly the artifacts service's folio methods (54.460434ms)
2026-10-18T12:08:59.7562112Z ✔ slides ops are checked by shape (0.589985ms)
2026-10-18T12:08:59.7562165Z ✔ design ops are checked by shape and size (23.49939ms)
2026-10-18T12:08:59.7562219Z ✔ dashboard ops check tiles, their queries and the grid (0.991038ms)
2026-10-18T12:08:59.8301644Z ✔ an id has its prefix and a 26-character suffix, and sorts by time (10.034826ms)
2026-10-18T12:08:59.8308451Z ✔ a floor bounds the ids of a span, as a range of any index that ends in the id (0.554342ms)
2026-10-18T12:09:00.0205878Z ✔ usernames take letters of either case, digits and single hyphens, up to 39 (3.079851ms)
2026-10-18T12:09:00.0239101Z ✔ reserved names are reserved in any case (0.376445ms)
2026-10-18T12:09:00.0239243Z ✔ a username is found lowercased and shown as written (0.564477ms)
2026-10-18T12:09:00.0263320Z ✔ the form's pattern says what the rule says (0.510926ms)
2026-10-18T12:09:00.0265892Z ✔ well-known GitHub action owners cannot be claimed, but stay valid names (0.385528ms)
2026-10-18T12:09:00.0433996Z ℹ tests 48
2026-10-18T12:09:00.0434699Z ℹ suites 0
2026-10-18T12:09:00.0435828Z ℹ pass 48
2026-10-18T12:09:00.0436007Z ℹ fail 0
2026-10-18T12:09:00.0436175Z ℹ cancelled 0
2026-10-18T12:09:00.0436387Z ℹ skipped 0
2026-10-18T12:09:00.0436556Z ℹ todo 0
2026-10-18T12:09:00.0436694Z ℹ duration_ms 1783.091492
