gitoriaLog in with ident

tracker

All repositories: gitoria

ReadmeCodePull requestsReleasesTicketsSettings
Commit03ec792f03ec792ftracker#38 (mission 033): pagination goes exactly to the clicked page — tilelist read the clicked button's text after pagination.hl's own handler had rebuilt the buttons (real clicks only); now li.current, else the button's own text; new gate tests/pager.mjs (5 lists x 11 pages, 390/1280, real + script clicks, Back/Forward) 229/0; browser 365/0, kinds 32/0, franchises 52/0, check-theme 0mre03ec792f/LOG.md

33.4 KB

  1. # LOG — tracker.worldapi.org
  2. Append-only, one short dated line per step. History up to 2026-09-30 moved here from the antcolony LOG
  3. (byrodin:/CONTAINERS/projects/antcolony/LOG.md) on 2026-10-01 (antcolony#40); dates reconstructed from its
  4. day sections and times. "mission N (old O)" = `missions/N-*.md` here; "antcolony mission O" =
  5. byrodin:/CONTAINERS/projects/antcolony/missions/; every old number: antcolony docs/mission-map.md
  6. (Loreana copy: /media/STORAGE/projects/antcolony-docs/docs/mission-map.md).
  7. ## 2026-09-27
  8. - 11:50 tracker.worldapi.org down (502): container exited 2026-06-17 (SIGTERM, restart=no). Project folder EMPTIED on 2026-09-24 12:26 (only .claude/.env/.gitignore left; no Claude transcript on Byrodin touched it); nightly backup now has only those files; no copy on Loreana. MongoDB 'tracker' intact (9453 shows, 11692 watches, 231584 episodes). Code only in storage-box ZFS snapshots <= 2026-09-24T04:14 (CIFS mount shows snapshots empty; no ssh key) — oldest rotates out ~2026-09-28. Asked creator to restore.
  9. - 11:58 tracker restart (creator: new Hybriel app, step by step; convert Mongo -> mpackdb with NEW ids + re-pointed refs; step 1 = ident login + empty homepage). Old code rebuilt from the 2026-06 build transcript (61 files, 5 edits unmatched in 2 frontend files, .env left out) + full mongoexport (canonical EJSON, counts = DB) -> loreana /media/STORAGE/projects/old-tracker (README-RECONSTRUCTED.md). New folder loreana tracker.worldapi.org with CONCEPT.md (creator's words quoted); scheduler projects/tracker.worldapi.org.json (port 45008); tickets project tracker.worldapi.org (members Architect/AntColonyScheduler/Caramboleyo); #1 shell (open, NEXT in colony), #2 data conversion (pending until #1 live). At deploy: ident app key for tracker (creator), nginx tracker.conf 44700 -> 45008, TMDB token from the old .env when a TMDB step comes.
  10. - 12:30 tracker#1 first deploy: Byrodin old folder -> /CONTAINERS/projects/tracker-old-20260927 (.env with TMDB token kept), old stopped container removed (name clash), nginx tracker.conf 44700 -> 45008 (backup /root/tracker.conf.bak-20260927; nginx -t ok, reload), .env with placeholder comments only (600). deploy.sh green, 200; no .git on live. Real Chrome: home "Sign in with ident", hashed app.css; /login -> "not registered with ident yet" (500) until the creator registers the app -> key/secret into .env + restart. colony deployed tracker 1 + comment; tracker#2 (data conversion) set open. web/README port index 45008.
  11. - 12:47 tracker#2 blocked twice: sandbox mounts only paths in the project's "concept" FIELD (lib/sandbox.hl conceptPaths), not paths named inside CONCEPT.md -> added /media/STORAGE/projects/old-tracker to the concept field; colony box proof: old-tracker ro (231584 episodes, write refused), own folder rw. #2 reopened. Committed+pushed in antcolony repo.
  12. - 13:05 Creator: "login.js is correct, as thats for externals in general" -> templates conventions.md + controller.md: bridges to EXTERNAL components allowed; login = calendar's (main.hl header, users.hl, login.js, routes) (antcolony repo c613d26). tracker#1 reopened with exact files. Root cause of the wrong login: tracker's worker box did not contain calendar at all (dependsOn had only hybriel+ident) -> worker copied ident's testapp. dependsOn += calendar.worldapi.org, box proof: calendar login.js/main.hl readable, write refused (a6af788).
  13. - 13:12 tracker#1 rework: sessions 10:54 and 11:04 did the work but their reports failed the FORMAT validation (result/test too long) twice incl. the one finalize retry -> whole ticket back to open + restarted (costs ~10 min + $3 each). 3rd session 11:08 report OK, now at the controller. Idea (for the speed topic): a refused report should get more finalize retries, never a full restart.
  14. - 13:30 tracker#1 (login like calendar) deployed: backup tracker-backup-20260927-1326.tgz, gate 12/0, 200; real Chrome screenshots: header 'choose ident' + 'Log in with ident' like calendar, page empty, no console errors. colony deployed; git commit+push. Login itself still needs the ident key (creator).
  15. - 13:45 Creator added tracker's ident keys himself, restarted, logged in OK. Notes -> tracker#3 (header no bottom border; buttons no border except inverted/outline ones incl. ident selector's button). Further notes go as comments on #3.
  16. - 13:50 tracker#3 1st session: work done, report refused (decided[1] 125/120 chars) after 1 finalize -> restarted. Same as tracker#1 twice. Filed antcolony ticket: up to 3 finalize tries, never a restart for length only.
  17. - 14:05 tracker#3 deployed (header/buttons no border): first deploy run FAILED its gate — not a tracker bug: antcolony#37's worker ran the scheduler e2e with its ident on 8701 (its range 8700-8709) and tracker's gate defaults to 8700/8701 -> talked to the wrong ident (code never in the sink). Re-run with TRACKER_GATE_PORT=8740 TRACKER_GATE_IDENT_PORT=8741 TRACKER_GATE_CHROME=8742-8744: 16/0, 200. Live Chrome: header border 0px none, 'Log in with ident' none, selector button none. deployed + git.
  18. - 14:12 tracker#2 was blocked by the scheduler's auto-question antcolony#36 (failed check twice = the old-tracker mount problem, fixed 12:47) -> answered + done; tracker#2 is NEXT.
  19. - 14:55 gitoria#20 deployed (backup gitoria-backup-20260927-*.tgz; gate 184/0 on 8740-8748 — Chrome needs 5 ports; 200). Live Chrome: ident repo no Add-code on /, /code, /pulls, /releases, /tickets, /settings; empty bsondb repo only on /code, visible, no <details>. deployed + git. tracker#2 1st session: $6.53 work thrown away (no valid report) -> antcolony#37 restart still waits (tracker#2 running again).
  20. - 15:05 antcolony#37 deployed (scheduler restart while idle 15:00; committed 3a4d032). tracker#2 deployed: code via deploy.sh (16/0 on 8740-8746), then on Byrodin: container stopped, backup tracker-backup-before-migrate-20260927-1502.tgz, docker run worldapi-hybriel-runtime tools/migrate.hl (export from my scratchpad copy) -> all counts = export, 0 failed; tools/verify.hl on a copy -> VERIFY PASS, 0 dangling, 1 user az5b2 (the live one), Raised by Wolves end to end; 36,194 episodes without season = already so in the export (36,193 `_id: null` + 1 dangling; migrate's counter only counted the dangling one). storage/mpackdb 107M. Started, 200. deployed + git + comment. NOTE: worker found hl:mpackdb loses rows when a table is reopened after update() — worked around, not reported as issue -> tell creator.
  21. - 16:25 Creator: "i said no borders for the buttons unless they are inverted" — worker had treated the quiet "Log out" (transparent + grey outline) as "inverted" and kept the ident status pill's border. Architect fixed directly (no worker in the folder): button.quiet border 0, new button.inverted (accent outline, the only bordered button), ::part(status) + ::part(identity) border none; + creator: "the main heading is also fontweight 100" -> header brand 100. Gate: Log-out check reversed, + status border + brand weight checks; 18/0 on 8740-8746; deployed; live Chrome: brand 100, login 0px, choose none, rules in the served CSS. Commit+push, comment on tracker#3. Lesson: "inverted" = colours swapped (accent outline on dark), NOT a quiet/ghost button.
  22. - 17:20 Creator's next tracker steps -> #4 show page (/shows/:slug; + one-off tool: link the 36,194 season-less episodes by show+seasonNumber, run live by architect), #5 /unwatched (pending until #4 live), #6 /schedule (pending until #5 live; soonest first = architect's decision). Watches/follows already on his live user (1 user, 0 dangling).
  23. - 18:05 tracker#4 (show page) session 17:15: worker hit max turns (120, $8.62) -> half done; #37's report fix worked (try 2). Controller hit its 20 turns twice (report too big) -> rerun with --controller-max-turns 45 (background). Open: the check click does not toggle; relink tool not proven; gate not green. Worker found a Hybriel compiler bug -> filed hybriel#114 (first text garbled by bash backticks -> rewritten via API with python).
  24. - 18:25 tracker#4 check rerun with --controller-max-turns 45: pass, half done posted, back to open -> next worker continues (the check click). Idea: raise the default controller max turns (20 too few for big reports).
  25. - 20:35 tracker#4 (show page) deployed. deploy.sh failed twice at the restart ssh: Byrodin sshd MaxStartups throttling ("12 connections dropped", bot traffic) reset Loreana's connection -> files were synced; did the rest locally: stop, backup tracker-backup-before-relink-20260927-2027.tgz, tools/relink-episode-seasons.hl live: 36,194 linked, 0 left; verify PASS (0 null seasons, 0 dangling); up -d --build + restart, 200. Live Chrome /shows/Raised-by-Wolves: poster placeholder, title, blue pills, plot, 11 red artist links, S2 open 8 eps, S1 collapsed, no checks signed out, no console errors. Gate 29/0 incl. click toggles. deployed + git a97c029; tracker#5 opened. hybriel#114 canceled as dup of #115 (scheduler-filed). TODO: deploy.sh restart ssh step needs a retry on connection reset.
  26. - 21:00 tracker#5 (/unwatched) deployed: backup, gate 35/0, 200; live Chrome signed out: sign-in message, no errors; signed-in list proven by gate. deployed + git; tracker#6 opened. Worker decisions: empty state muted text; no nav link yet; click on /unwatched only marks watched.
  27. - 21:15 tracker#6 (/schedule) deployed: backup, gate 38/0, 200; live Chrome signed out OK; deployed + git. All tracker steps the creator named so far are live (#1-#6).
  28. ## 2026-09-29
  29. - 01:05 (29.9.) Creator very angry after I listed tracker #1-#6 as 'built and live, waiting for review' ('i gave you clear instructions'). Which instruction was broken is unknown — he did not say. Checked: all pages 200, no errors, only user az5b2 owns all watches/follows. Signed-in views were never checked by me in his account, only by gates. Do NOT start new tracker work until he says what is wrong.
  30. ## 2026-09-30
  31. - 30.9. tracker#7 (/my/shows) filed from the creator's words; decision: 'last episode' = highest watched SxxEyy. Mission 001 (old 040) written, worker w040 started (Agent, ports 8720-8739).
  32. - 30.9. tracker#8 filed (move /unwatched,/schedule to /my/…, old ones 301); pending until #7 live.
  33. - 30.9. Creator: /unwatched rows need S01E01 -> added to tracker#8 (also /my/schedule, same format as /my/shows).
  34. - 30.9. tracker#7 /my/shows deployed (worker w040; my gate rerun 45/0; backup; deploy 200) -> review. Creator asked 'did you ever check how it looks?': no — signed-in pages were only gate-checked, never looked at. Added optional screenshots to tracker's gate (TRACKER_GATE_SHOTS=dir, fixture data) and looked at show, my/shows, unwatched, schedule. Found: /schedule 'Ep 1', show page '1 episodes'; /unwatched ~15 s on real data (w040) -> all added to tracker#8. Rule: every UI change gets signed-in screenshots viewed by the architect before deploy.
  35. - 30.9. With the creator's consent ('you can sign in as me easily by stealing my cookie'): used his newest tracker session in headless Chrome, READ-ONLY (no clicks), session id never printed, temp file deleted. Real data: /my/shows 25 s (worker claimed 0.2 s = data only), /unwatched 18 s, /schedule empty (no episodes after 2025-12: no TMDB sync), two 'Doctor Who' rows (2005/2023) indistinguishable, posters all placeholders. Added to tracker#8. Architect's check from now: gate + real-data read-only screenshots via his session.
  36. - 30.9. Creator: 'yes' (year next to titles; TMDB sync after step 8) + 'dont do stuff yourself to save context, you are my byrodin conductor now' -> README rule: workers build/test/screenshot/real-data-check, architect only briefs/deploys/relays. tracker#9 (TMDB sync) filed, pending. Mission 002 (old 041) (tracker#8 incl. real-data check on a Loreana copy with a session for az5b2 in the COPY) -> worker w041.
  37. - 30.9. tracker#8 deployed (w041: gate 49/0; real data /my/unwatched 14.8 s -> ~1 s, /my/shows ~0.7 s; cause: per-episode scan of all watches + single-threaded server queuing). Backup to /CONTAINERS/deploy-backups (old tracker ones removed), deploy 200, 301s verified with curl, git 54070a4, -> review. tracker#9 open (starts after w042/043 queue).
  38. # Since 2026-09-30: tracker lines of the conductor log
  39. Copied 2026-10-02 (antcolony mission 073) from byrodin:/CONTAINERS/LOG.md (the conductor's log, which stays
  40. as is); worker names wNNN = old antcolony mission numbers (map). New lines from now on are appended below.
  41. ## 2026-09-30
  42. - tracker#7 /my/shows (w040) deployed → review. Real-data look (with the creator's consent, his session, read-only)
  43. found: 25 s / 18 s loads, "Ep 1", Doctor Who twice → all into #8.
  44. - tracker#8 (w041) deployed: /my/unwatched + /my/schedule (301 from old), S01E01, title (year), unwatched 15 s → ~1 s;
  45. git 54070a4 → review. tracker#9 (TMDB sync: new episodes + posters) opened, next.
  46. - antcolony Mission 043 (deploy.sh backups → loreana /media/SLOW1TB2) started: worker w043 (sonnet). tracker#9 waits for it (same folders).
  47. - TMDB_API_KEY + TMDB_READ_TOKEN copied (never printed) from tracker-old-20260927/.env into live tracker .env and loreana dev .env (600); TMDB API answers 200 with it. MISTAKE: my append glued TMDB_API_KEY onto the unterminated TRACKER_SECRET line → split again (backup /root/tracker-env.bak-20260930), lengths now key 35/secret 51/tmdb 32/239, tracker restarted, home 200, ident login link 302. Lesson: append to .env only after checking the last byte is a newline.
  48. - tracker#9 TMDB sync: mission 003 (old 044), worker w044 (followed shows only, posters into storage/posters, daily run, fake TMDB in gate, real-data proof on copy).
  49. - Anton: on hybriel master — #113 b08384e8 (mpackdb update() lost rows: cause duplicate generated @ids; new ids unique, EXISTING duplicates stay → check tables before trusting update()), #118 f5d709a4. #115/#116 next. Plan: one re-vendor round for all apps after #115/#116 land (and after w044 leaves tracker); that round also checks each app's tables for duplicate @ids.
  50. ## 2026-10-01
  51. - tracker#9 TMDB sync (w044, gate 64/0) deployed: first deploy with deploy.sh's own backup (32M → loreana /media/STORAGE/deploy-backups/tracker.worldapi.org/). First live sync (app stopped, tools/sync-tmdb.hl via docker run --env-file .env): 126 shows, +20 seasons, +800 episodes, 2651 updated, 125 posters, 380 requests, 0 errors, 137 s. App 502 for ~15 s after start (loading larger DB), then 200. Daily run 04:00 UTC. git → review.
  52. - Creator: 'pwa and icons' (read as: tracker) → tracker#10, mission 004 (old 045) (calendar's PWA way, own icon in #4ec9b0, offline shell, gate + looked-at images), worker w045.
  53. - Creator: 'all' → PWA+icons for every app. calendar already has it. Tickets filed per app; antcolony mission 046 (one app per worker): w046-ident (8732-8739) + w046-tickets (8750-8759) running with w045 (tracker); queue: notes, gitoria, components (≤3 workers).
  54. - tracker#10 PWA (w045, gate 76/0) deployed; manifest/favicon/icons 200; git 31b758a → review. Filed hybriel#119 (no online-state member / after-load hook; tracker uses a CSS-animation netProbe). Next PWA worker: w046-notes (8720-8731).
  55. - w046-tickets done (gate 245/0, connect 60/0; icon: ticket stub). Decision: theme colour = header 'darker' in all apps (tracker did that; mission said accent) → antcolony mission 046 fixed, tickets worker adjusting before deploy.
  56. - components#14 PWA (w046-components, 220/0) deployed, manifest 200, → review. PWA round complete: tracker, notes, tickets, gitoria, ident, components (+ calendar before). Next: re-vendor round (hybriel master ≥ 6b721937/428bc56c).
  57. - Creator: 'tracker show is still broken i asked you to actually look at it in a browser'. Looked myself (his session, read-only, no clicks): /shows/Raised-by-Wolves desktop + /shows/The-Librarians-The-Next-Chapter at 390 px render (poster, header, seasons, checks), no console errors, load 1.3-3.7 s; first /my/shows load once exceeded 15 s (load event) then 4.5 s; on phone the header wraps onto 2 lines. Didn't find the breakage → asked him what exactly.
  58. - FOUND the missing checks: after client-side navigation (e.g. /my/shows → click a show) the check SVG is built in the XHTML namespace (namespaceURI xhtml, circle width 0) → invisible; a direct load (server-rendered) shows them — which is why my/workers' direct-load checks missed it. Fixed on hybriel master ('client-built SVG namespace + camelCase tags', Anton 30.9.) → tracker re-vendor now (mission 005 (old 047)) + mobile-first styles (creator: 'and style is supposed to be mobile first').
  59. - Usage 80 % but dispatched ONE worker anyway (w047, tracker re-vendor + mobile first) because the creator's live bug is broken now; ticket tracker#11. Rest of the re-vendor round stays queued.
  60. - Creator: 'checkmarks are visible now' — nothing deployed yet (w047 running); most likely a fresh load (server-rendered). In-app navigation still loses them until tracker#11 is live.
  61. - Creator: season headers get carets on the right → added to w047 / tracker#11.
  62. - Creator: don't indent episodes → w047 / tracker#11.
  63. - Creator: mobile show header = title above a full-width poster → w047 / tracker#11.
  64. - Creator: artist links orange (#ce9178) not red → w047 / tracker#11.
  65. - Creator: unwatched icon = inverted check (outline circle + outline check), not empty circle → w047 / tracker#11.
  66. - Creator: show page needs a follow button → added to w047 / tracker#11 (Follow outlined / Following filled).
  67. - Creator: signed out → checks + Follow visible, click opens a 'sign in' modal (components' modal.hl) → w047 / tracker#11.
  68. - Creator: external link icons (TMDB/IMDb/TVDB/TVmaze) → tracker#12, queued after #11 to not delay the check-mark fix.
  69. - Creator: homepage (4 icons signed in; intro text; 10 latest movies + 10 last aired shows) + /shows + /movies paginated → tracker#13, queued after #11/#12. Data: 7,814 movies + 1,639 series in Show (type). My readings: icons→/my/unwatched,/my/schedule,/my/shows,/my/movies (new, followed movies).
  70. - Creator: header search (DB first, then 'fetch from web' via TMDB, pick → import) → tracker#14 queued. Also discussed (not filed, creator still deciding): artist-appears notifications; similar titles (suggested TMDB recommendations first).
  71. - Creator: old import = TMDB first, then TVmaze diff (faster for new series episodes; TMDB bigger + movies) → tracker#15 queued (TVmaze fills gaps for series only, never overwrites TMDB).
  72. - 05:12 Re-vendor round started: antcolony mission 048 (one app per worker): w048-calendar (8732-8739), w048-components (8750-8759); w047b still on tracker (8720-8731). Queue: notes, gitoria, tickets, ident.
  73. - 06:35 Workers w047b/w048-calendar/w048-components finished but their reports never arrived (idle, no reply) → read STATUS.md instead. Deployed tracker#11 (101/0; dup ids 0 everywhere; real data 0.2-1.5 s), calendar re-vendor ff51cf46 (78/0 + 18/0; static validWindow/soonOf removed; dup ids 0), components re-vendor (220/0). Committed, tracker#11 → review, tracker#12 open. Note: a multi-app deploy in ONE ssh session stops after the first app → one ssh per deploy.
  74. - 06:40 Started w049 (tracker#12 links, 8720-8731), w048-notes (8732-8739), w048-gitoria (8750-8759); all write reports also to antcolony/reports/<name>.md. Queue: re-vendor tickets, ident; tracker#13-15; notes#4.
  75. - 07:00 notes re-vendor (w048-notes: 50/0, dup ids 0) and tracker#12 links (w049: 111/0; found+fixed movies fetched as /tv/) deployed, committed; #12 → review, #13 open. Open: Star Trek: First Contact holds TV 199's tmdbSummary/status (hidden).
  76. - 07:05 Started w050 (tracker#13 homepage/lists, 8720-8731) and w048-tickets (re-vendor, 8732-8739); w048-gitoria still running (8750-8759).
  77. - 07:50 w048-tickets STOPPED re-vendor: master's session sync re-derives without route params (hybriel#122, repro in tickets/.scratch/w048/repro) → tickets admin settings flip on Save; restored 837fe120 (245/0), tickets stays old. Anton told directly. Risk: tracker/gitoria live on ff51cf46 have route+session members — gates passed; watch for reports.
  78. - 08:00 Parallel tracker work via git worktrees on Loreana: tracker-wt14 (branch t14-search, w052-search, 8770-8779) and tracker-wt15 (t15-tvmaze, w052-tvmaze, 8732-8739) next to w050 in main; workers commit on their branch, I merge. Running now: w050, w051, w052-search, w052-tvmaze.
  79. - 08:10 w050 (tracker#13) done: 131/0, pages <1.5 s real data, /movies/page/N in path (query lost on Back: hl:web client.hl:2795), lists cached in memory. HOLD deploy: public homepage + /movies would list adult titles from the migrated data (no adult flag stored); most movies have no poster. Asked the creator.
  80. - 08:25 w052-search (tracker#14) done on branch t14-search (65c694a, b8bd115; 136/0; DB search 0-44 ms, web search 0.1-0.2 s, add 0.8-1.1 s). #13 committed locally on main (NOT pushed/deployed — adult-titles question open). Merge of t14 (+t15 when done) by a worker next; search also shows adult titles → same filter.
  81. - 08:35 w052-tvmaze (tracker#15) done on t15-tvmaze (34f2c15, 71b4634; 117/0; real: +21 episodes filled, 7 shows skipped by numbering check — all verified correct, stable on rerun). Started w053: merge t15+t14 into main (#13), full gate + real-data, remove worktrees.
  82. - Creator: movies came from 'artist scrolls' — clicking an artist without data fetched person + full filmography → tracker#16 (person pages, on-demand fetch). The cast/search person links 404 today.
  83. - 09:00 tracker#16 person pages: worktree tracker-wt16 (t16-person from 47a3cae), mission 011 (old 055), worker w055 (8770-8779), parallel to w054 in main.
  84. - 09:50 w055 (tracker#16 person pages) done on t16-person (93be947, 139fafd; 186/0; real: page 68-131 ms, filmography filled 0.6-0.9 s, Eric Roberts 758 credits 3.8 s; others wait ≤0.68 s). Merge after w054 finishes in main. Side note: signed out at 390 px the header's ident buttons wrap to 2 lines.
  85. - Anton: #122 fixed on master 4850d798 (18cf2fb9); #121 next. Started re-vendor to ≥4850d798: w048-tickets2 (8732-8739), w048-ident (8750-8759, all 10 ident gates). Apps on ff51cf46 (tracker/gitoria/calendar/notes/components) get 4850d798 in the next round.
  86. - 10:50 ident (w048-ident: master 73267707; 3 app fixes: /code page() signature after #105, pending address as param (session re-derive dead end), migration fixture; all 10 gates green; dup ids 0) DEPLOYED — 152/107/99/33/39/130…; /, /start, selector.js, manifest 200, tracker login link 302. tickets (73267707) deployed 249/0. Both committed.
  87. - 12:15 tracker #13+#14+#15+#16 + adult filter (054) + w056 fixes (header one row, no adult posters, Hybriel 8590df63, adult pages Not found for non-followers) DEPLOYED: 208/0, pages 0.05-0.25 s, backfill started live (9,453 titles, ~80 min, ~270 MB posters). Pushed. #13-#16 → review.
  88. - Creator: caret down closed / up open; episodes load on expand feels slow → skeleton (shimmer) rows + make faster → tracker#17, mission 013 (old 057), worker w057.
  89. - tracker#17 (w057: caret down/up, skeleton rows, sessionless season face; Daily Show s30 open 380-450 → 233-288 ms, closing 1.4 s → 0.15 s) deployed 214/0, pushed, → review. Live backfill finished before the restart (~9,453; adult ≈3.4k; 'nothing to do' after restart).
  90. - Creator: 'Skeleton rows look very nice' (tracker#17) — noted on the ticket; state left to him.
  91. - tracker#17 → done on the creator's word. Hybriel master now bc38f9a8 (incl. offline125 = #123/#124/#125). Apps: tracker 8590df63, ident/tickets 73267707, gitoria/calendar/notes/components ff51cf46.
  92. - Creator: sync should use the bulk delta endpoints → tracker#18 (TMDB /changes, TVmaze /updates), queued for tonight via one-shot cron 23:07 (no daytime quota).
  93. - Creator: show titles/descriptions don't update → cause: sync never refreshes the show record (only seasons/episodes/poster/ids); page shows 'summary', TMDB text stored as 'tmdbSummary'. Added to tracker#18 (tonight).
  94. - Creator spec → tracker#19 franchises+timelines (widget <Prequel|Timeline|Sequel>, franchise index, sort timeline/release, TMDB collections seed + editor), #20 typed headings (Movie | Riddick, type colour, title white), #21 split Series (/series: scripted/mini/documentary) vs Shows (/shows: game/reality/talk/news). All queued for tonight with #18.
  95. - Creator: move antcolony LOG.md + missions/ into the project folders, renumber, fix refs → antcolony#40. Night queue re-made (cron 9dc81b22, 23:07): #40 first, then tracker #18/#20/#21/#19 in worktrees with missions in the new place. Session 78 % → nothing dispatched by day.
  96. - 13:50 Creator: 5 tracker bugs → #22 air dates, #23 season check, #24 movie watched, #25 genre pages, #26 filmography titles incomplete. Session 3 % → w058 (#22–25, main) + w059 (#26, worktree t26) started now.
  97. - Creator: short ids under posters → old export has them only for 702/9,453 shows ('id' base62 100jh…), persons none, migration dropped them → tracker#27, queued after w058 (same folder).
  98. - Creator: too few people on title pages (Picard), no directors → tracker#28 (aggregate_credits + crew), queued after w059 (#26 person/filmography area).
  99. - 14:10 tracker #22-25 (w058, f14db67, 238/0) DEPLOYED (1st try refused: backup tar 'file changed as we read it' on live mpackdb — retry ok; deploy.sh backup of a running db is racy → to fix), pushed, → review. Live: /genres/Drama 200, /genre/* 301, air dates on show page. Started w060 (#27 short ids). Open for creator: TMDB 'Action' (movies) vs 'Action & Adventure' (series) are separate genres.
  100. - 14:40 w059 done: #26 on t26 25a50bc (231/0; 321 incomplete titles repaired in 507 s on copy; open title → skeleton 0.2 s, full 0.7/1.3 s). Not merged (w060 in main). Started w061 (#28 cast/crew) on t26 in tracker-wt26; merge t26 after w060.
  101. - 15:15 tracker#27 short ids (w060, d8b12d6, 259/0) DEPLOYED, pushed; live backfill 25,168 in 148 s, 702 old kept; my curl: /100jh 301 → Raised-by-Wolves, page shows 100jh. → review. w061 told: t26 must call claimShortId when creating shows/persons (merge).
  102. - 16:15 w061 done: #28 on t26 10bb3f9 (249/0): Picard 4→202 actors + 45 crew, credits job 5,867 titles/51 min. Found Hybriel memory leak → hybriel#126 filed, Anton messaged (live tracker 11.6 GiB, tickets 6.9 GiB). Costs: 160k persons, boot RSS 4.9 GB, watch clicks re-send cast (0.7 s). Mission 018 (old 062) (merge t26 + claimShortId + guests without person records + slim watch face) → night queue first after #40. Session 66 %.
  103. - 19:00 Creator: /my/unwatched all checks active → tracker#29 (likely #23 regression), w063 started (session 2 %).
  104. - 19:30 tracker#29 (w063 fa1f9df, 266/0): unwatched check grey (was accent, looked all-ticked; not a regression) DEPLOYED (2nd try), pushed, → review. 1st try + w063 copy: Loreana→Byrodin ssh reset — sshd MaxStartups throttling from bot floods (not fail2ban: sshd jail 0 banned). /my/unwatched 1.9 s load (1,287 rows), click 1.5 s — slow, noted.
  105. - 19:53 health: PROBLEMS 2 → (1) tracker 5xx bursts 12:11/13:02/17:16 UTC = my 3 deploys (8–15 s downtime each, non-issue); (2) Loreana /media/LINSTORE (NFS 192.168.178.50, soft) 'Input/output error', host pings → told creator.
  106. - 22:40 w065 (#40) done for 6 apps (missions/reports/LOG.md per app repo, commits 9bfba36 ff805b9 8d9450f d32b44e 1ca2f34 99c7334); antcolony keeps old numbers (400 code refs); map projects/antcolony/docs/mission-map.md. I committed+pushed the README/STATUS ref rewrites in all 6 (4137be0 98226b4 3dc4310 e4f0176 124613b 14ba08c). CONDUCTOR.md: new mission/report/LOG locations applied. Tracker part pending until w062 → tools/reorg-065/tracker_phase.py. Note: deploy.sh copies missions/reports/LOG.md to live folders (harmless).
  107. ## 2026-10-02
  108. - 00:05 antcolony Mission 069 (re-vendor master for #126 leak + #48 lambda audit, per app). Started w069-tickets (6.9 GiB live). Tracker re-vendor after t18/t20/t19 merge.
  109. - 02:52 Session 70 % → told w070 + w069-tickets to wrap up; resume after reset. Tracker live RSS 15.7 GiB.
  110. - 03:15 Live tracker: credits job done 5,867/5,867, 0 failed, 75,633 people, 2,229 s; no restart; RSS 15.7 GiB (leak; re-vendor in w070).
  111. - 05:55 components DEPLOYED (4th try — sshd MaxStartups drops: 3 of 4 tries failed), pushed 2bb9a93. Re-vendor round: ident, tickets, notes, calendar, components live on 7eea0d32/8efba065; gitoria + tracker (w070) pending.
  112. - 06:00 w069-gitoria STOPPED: 8efba065 makes big SSR pages 2.5–4× slower + growing (gitoria tracker README 12 s → 47 s); gitoria stays on ff51cf46 → hybriel ticket filed, Anton told. Warned w070 (tracker big pages).
  113. - 06:05 Anton: #127 + #126 follow-ups assigned to his worker (#127 first); commit will come → then re-vendor gitoria + tracker.
  114. - 07:10 hybriel#127 fixed on branch gc127 d98926c6 (not merged; cause: hl:web runSteps out = out + piece → 7 GB per 2000-row render; fix 2.3–2.9 s, RSS flat). Re-vendor gitoria + tracker once merged to master.
  115. - 07:15 #127 on hybriel master d98926c6 → w070 re-vendors tracker to it; resumed w069-gitoria on it (8760–8769).
  116. - 07:55 w070 done: tracker main 8081350 = t18+t20+t19 merged + migrated* fields kept (9,647 summaries) + re-vendor 8efba065 (NOT d98926c6 — my #127 message came too late); gates 325/0 + 32/0 + 50/0. On 8efba065 /my/unwatched 4.8 s (live 1.2 s), +25 MB per load after jobs → NOT deploying as is. Next: re-vendor tracker to d98926c6 (#127 fix), re-measure /my/unwatched + RSS, then deploy.
  117. - 08:02 Night over: night guard cron deleted; no worker of mine running. Waiting for the creator: tracker re-vendor (d98926c6+) + deploy of 8081350.
  118. - 10:10 Anton (#127 comment): two GC correctness faults fixed on branch gc128 fc838894 (string index t[k] slice freed → hl:markdown garbage; error messages swept before copy). Affects the 5 apps live on 7eea0d32/8efba065 → re-vendor them again once gc128 is on master (with tracker + gitoria round).
  119. - 10:36 Anton: #127 second shape + GC correctness on master (190aa11d). Live apps run the correctness bug → started w071 (tracker re-vendor 190aa11d, 8750–8759) + w072 (gitoria/ident/tickets/notes/calendar/components, 8720–8731) without the creator's answer (stability); told him he can stop it.
  120. - 12:55 components re-vendored 190aa11d (w072 ede4d19, 220/0) deployed, pushed. All 6 non-tracker apps live on 190aa11d.
  121. - 14:25 w071: 190aa11d failed my 1.3× rule only on /my/series (4.4 s vs 1.8 s after jobs); my decision: adopt anyway (memory 8.0→1.7 GB boot, live old binary climbs to 31 GB). tracker main 1cda451 (vendor) on c1fa2f2 → deploying = #18 #19 #20 #21 + 190aa11d. /my/series → tracker#30.
  122. - 14:40 tracker 1cda451 DEPLOYED (try 1 reported 502 = URL check during the 14 s summary move at boot; live was fine; killed my leftover retry run by PID). Live: /series /shows /movies /franchises 200, /shows/Foundation 301 → /series/Foundation, kind backfill running. Pushed; #18 #19 #20 #21 → review.
  123. - 14:50 Window reset (0 %). Live tracker: kinds done, collection seed 500/4774, RSS 9.1 GiB. Started w073 (#40 tracker part + newer missions).
  124. - 16:00 w074 (mission 025): tracker#30 fixed on main (slim list caches): after the jobs /my/series 1.8 s → 0.06 s, /my/unwatched 4.1 → 0.18 s, RSS flat 1.4–1.7 GB; timeline name once; widget under poster; First Contact repaired via details repair (tmdbId was right, #9 /tv/ leftovers). Gates 327/0, 52/0, 32/0. Not deployed.
  125. ## 2026-10-03
  126. - 01:13 w075 (mission 026): tracker#31 — the 68 duplicate titles were the OLD tracker's (all migrated rows); merge.hl repair job merges them into one keeper each (tombstones kept, slugs + short ids 301), Reacher S3 watches merged onto the listed S3, watched stray seasons linked; deploy.sh waits up to 90 s for 200. Real copy: 68 → 0 dup ids, az5b2 follows/watches equal. Gates 342/0, 32/0, 52/0. Not deployed.
  127. - 02:20 w077 (mission 027): Hybriel master 06617221 (plugin allocators 3a781359 + 413f60e4) vendored on main; gates 342/0, 32/0, 52/0; real copy: RSS through first-start jobs + 400 loads flat ~2.55 GB (190aa11d 2.3 → 5.6 GB), page times ≤ 1.1× old. Not deployed.
  128. - 21:20 w078 (mission 028): code order, no behaviour change — 14 root .hl → lib/ (25 topic/helper files, shared helpers once in lib/util.hl) + components/styles.hl; project.hl 914 → 261 lines (the map; the jobs → lib/jobs.hl class); 667 never-reassigned lets → plain declarations (tools/let-audit.py). Gates 342/0, 32/0, 52/0; real copy: page HTML identical to 4f47f18, load 0.99×, real jobs run clean. Not deployed (old root .hl stay on Byrodin: rsync has no --delete).
  129. ## 2026-10-04
  130. - 01:30 w079 (mission 029, tracker#33): The Remaining is complete per TMDB (no poster/IMDb there) → placeholder poster; the real reduced titles = old tracker's never-synced migrated rows (5,834) → isIncomplete = no detailsAt/tmdbSync; real copy repair 2 h 6 min, 5,834 → 0, /my/ pages unchanged. Gates 347/0, 32/0, 52/0. Not deployed.
  131. - 01:30 w079 (mission 030, tracker#34/#35): Follow under the poster, as wide; status pill (TVmaze preferred, inverted, theme colours); tvmazeStatus via sync, delta status-only step, backfill (1,558 series, 18 min). Gates 354/0, 32/0, 52/0. Not deployed.
  132. - 13:40 w088 (mission 031, tracker#32): WorldAPI theme vendored (theme/), styles inherit it (accent + type colours), check-theme 21 → 0 (deploy gate); header = theme AppHeader/MainMenu/UserMenu/Sidebar (desktop brand · search · menu · user icon; signed out the selector; phone ☰ · brand · loupe · user/ident icon); /genres /people /settings /find new. hl:web slot-on-one-line bug worked around (main { ContentFirst { slot } }). Gates 365/0, 32/0, 52/0, check-theme 0. Real copy: no console errors, load medians +4–16 ms (5 shell modules, +19 KB seed). Not deployed.
  133. - 05:50 w092 (mission 033, tracker#38): pagination jumped because tilelist read the clicked button's text AFTER pagination.hl's own handler had rebuilt the buttons (real clicks only; the gate's el.click() hid it). Fix in tilelist (li.current, else own text); new gate tests/pager.mjs 229/0 (5 lists × 11 pages, phone+desktop, Back/Forward); browser 365/0, kinds 32/0, franchises 52/0, check-theme 0; real copy OK. Branch t38, not deployed.

Branches

Latest commits

  • 03ec792ftracker#38 (mission 033): pagination goes exactly to the clicked page — tilelist read the clicked button's text after pagination.hl's own handler had rebuilt the buttons (real clicks only); now li.current, else the button's own text; new gate tests/pager.mjs (5 lists x 11 pages, 390/1280, real + script clicks, Back/Forward) 229/0; browser 365/0, kinds 32/0, franchises 52/0, check-theme 0mre
  • 96ba683adeploy.sh: a gate without a 'passed,' line (check-theme) no longer ends the scriptmre
  • eb3b9205tracker: report 031mre
  • 9b5d2e89tracker mission 031: README (What it does, Test: four gates + the #32 checks, Files: theme/, new pages), STATUS (real copy, A/B load, how to repeat, open points), LOGmre
  • 39950e4ctracker#32 (mission 031): the WorldAPI theme (theme/ vendored verbatim from layouts.worldapi.org 85b5654; styles.hl inherits it: accent green-dark, type colours 1-6; own base/header rules, row lines, genre-pill and inverted-button frames removed, the season foldable keeps its line; check-theme 21 -> 0, 4th deploy gate; main actions class primary) and the #32 header (theme AppHeader/MainMenu/UserMenu/Sidebar/ContentFirst: desktop brand, search, Series|Shows|Movies|Genres|People, user icon with Unwatched..Settings, Logout; signed out the ident selector, phone the iD icon dropdown; phone menu in the sidebar overlay; marked entry by :has); /find -> /search/<q>, /genres, /people(/<letter>), /settings; main { ContentFirst { slot } } works around the hl:web one-line slot bug; gates 365/0, 32/0, 52/0, check-theme 0mre
  • a386dc92tracker: reports 029 + 030mre
  • 71e0fd7dtracker missions 029 + 030: README (What it does, Files, gate count), STATUS (real-copy numbers, how to repeat, open points), LOGmre
  • d36ea6eatracker#34 + #35 (mission 030): Follow directly under the poster, as wide as the poster (show.hl, styles.hl); the status pill next to a series' title — TVmaze's status (new tvmazeStatus, stored by the sync's TVmaze merge) else TMDB's, TVmaze Ended + TMDB Canceled = Canceled, inverted (filled, dark text, no border), green running / yellow pending / red canceled / muted ended (shows.hl statusOf); the daily delta asks TVmaze's status of an unfollowed series TVmaze's change list names (dailysync.hl syncRunStep, sync.hl syncTvmazeStatus); the status backfill after the details repair (backfill.hl, jobs.hl statusTick; resumable, 550 ms per TVmaze request); gates 354/0, 32/0, 52/0mre
  • 7d7d4487tracker#33 (mission 029): reduced titles — every title TMDB's details never went through this app (no detailsAt, no tmdbSync) is incomplete (shows.hl isIncomplete; the old tracker's migrated rows passed #26's test: 5,697 non-adult on the live copy, 691 series without seasons); the repair job does the visibly reduced first (shows.hl missingParts), the page completes one on open; a title TMDB has no poster for (The Remaining) shows the placeholder; tools/count-incomplete.hl; gate fixtures stand for synced titles (tmdbSync), tests/seed-reduced.hl + #33 checks; gates 347/0, 32/0, 52/0mre
  • 661c2592tracker: report 028mre
  • 27c916fatracker mission 028: README ("Code order", the new file map), STATUS (counts before/after, tests, how to repeat, open), LOGmre
  • d924f398tracker mission 028: comments name the new files (sync.hl, dailysync.hl, backfill.hl, credits.hl, jobs.hl, images.hl …); tools/ref-params.py + tools/lambda-audit.py also scan lib/ (they globbed the root only), lambda-audit counts a plain `x = p` alias like `let x = p`mre
  • 2e89b968tracker mission 028 (code order) 5/5 let: `let` only where a variable is reassigned — 667 never-reassigned lets became plain declarations (project.hl, lib/, components/, tools/, tests/); kept: 264 in loop bodies (a plain declaration there is 'Cannot reassign' on the 2nd pass), 234 reassigned, 27 whose name is also a member/outer/free name (a plain write would rebind it); tools/let-audit.py decides and fixes (README 'Code order'); tests/realdata-m028.{sh,mjs} = the page-output diff on a real copy; gates 342/0, 32/0, 52/0, real-copy pages identicalmre
  • 54796ff2tracker mission 028 (code order) 4/5 thin faces + last copies: the show page's check/follow faces call lib/watches.hl toggleWatched / toggleSeasonWatched (seasonAllWatched moved there) and lib/follows.hl toggleFollowed; both logins (header selector face, /login/callback) share lib/users.hl userOfCode; todayStr/listOf copies in components and the export readers copied into tools/migrate.hl + tools/old-short-ids.hl now once (lib/util.hl, lib/export.hl); gates 342/0, 32/0, 52/0; old-short-ids output byte-identical, migrate output identicalmre
  • 06b078e3tracker mission 028 (code order) 3/5 project.hl is the map: config, routes, wiring and a feature → file index (914 → 258 lines); the background jobs (daily sync run, backfills, details repair, credits job, merge, short ids, collection seed) moved unchanged into lib/jobs.hl (a class: their state is reassigned every step, a static cannot be; one instance made after the server), the login callback into lib/users.hl, poster/photo serving into lib/images.hl, the /shows/<slug> rule into lib/shows.hl showsMovedPath; route handlers are thin wrappers; gates 342/0, 32/0, 52/0, real-copy pages identicalmre
  • 94716fd2tracker mission 028 (code order) 2/5 util + topics: lib/util.hl holds envOr, storageDir, postersDir, profilesDir, newId, hexDigits, todayStr, dateOr, textOr, hasId, listOr, firstOf, sortDesc once (were copied into up to 5 files); tmdbsync.hl split into tmdb.hl (TMDB/TVmaze requests), sync.hl (one title's sync), sync-helpers.hl, backfill.hl; details.hl split into details.hl, credits.hl, credits-helpers.hl (isIncomplete to shows.hl); search-helpers.hl (words, query, ranking, slugs); collections.hl (the TMDB collection seed, out of franchises.hl); deltasync.hl renamed dailysync.hl; no behaviour change: gates 342/0, 32/0, 52/0, real-copy pages identicalmre
  • 186079b0tracker mission 028 (code order) 1/5 move: every root .hl except project.hl into lib/ (styles.hl into components/), import paths only; gates 342/0, 32/0, 52/0; real-copy pages identicalmre
  • 4f47f181tracker: report 027mre
  • dc1d4be4tracker mission 027: Hybriel master 06617221 vendored (plugin allocator fixes 3a781359 + 413f60e4); real copy RSS through first-start jobs + 400 loads flat ~2.55 GB (190aa11d 2.3 -> 5.6 GB), page times <= 1.1x; gates 342/0, 32/0, 52/0mre
  • 84e1b3e1tracker: reports 025 + 026mre