activity log.

every meaningful change. one file per day in vault/10-Activity-Log/. read top-down for the timeline.

thu · 2026-06-11

Decisions / rules

  • Subagent model routing updated: Fable 5 added as premium tier alongside Opus. Max ONE premium agent (Fable OR Opus combined) running at a time; all parallel siblings go to haiku/sonnet. Locked in CLAUDE.md § Orchestrator pattern.
mon · 2026-06-08
Cosmo , New "Polish" status: frontend shipped, backend handoff for Leor (2026-06-08)
  • New quota status Polish = a playable currently in_progress that has ALREADY been to TL/PG review at least once (auditor reworking after review feedback). Splits the catch-all in_progress so TL/PG/leads see rework vs first-pass. revision_round unrelated (it's a task type).
  • Investigated the status convention first (Ishai: be consistent, don't invent). Backend recon: statuses are computed-on-read in _effective_quota_status() (weekly_data.py) + persisted-on-webhook in _recompute_quota_status() (quota_rollup_service.py), ranked by _QUOTA_STATUS_RANK; canonical set = shared QuotaStatus enum. unfillable set the precedent for a new status not yet in the shared enum (local raw string until coordinated pkg release). The "has been to review" signal EXISTS in orchestration_states (append-only event log, indexed) but is NOT exposed to the frontend. So Polish must be BACKEND-computed (quota_status='polish'), same pattern as the others; frontend renders it like any status.
  • Frontend shipped (commit 9d142eb, work/live, front-only, tsc clean): teal (aquamarine tone) + Brush-icon Polish pill in StatsBar STATUS after In Progress; clickable filter w/ the selected/unselected dim coordination; shows at count 0 (never hides); no double-count with In Progress. Added STATUS_LABELS.polish, FiltersPicker option, matchesStatus accepts 'polish'. Presentation-local | 'polish' type widenings + as QuotaStatus casts (all commented) avoid editing no-touch data/types.ts. Verified live: pill renders teal (bg rgba(97,226,209,.2)/border .5/text rgb(1,165,168)), clickable, dims siblings, count 0, position 3.
  • PlyCard chip not touched , it flows from quota_status through the no-touch helpers, so it renders Polish automatically once Leor adds 'polish' to data/helpers.ts (STATUS_LABEL + STATUS_TONE) + the backend sends it.
  • Handoff written: vault/08-Design-specs/polish-status-backend-handoff.md , 6 backend sync points + 4 data/ contract points + the unfillable-precedent + verify steps. To go to Leor with his other items (his handoff branch is stale June-7; route via PR body / refreshed branch / Slack , Ishai's call). Polish lights up end-to-end the moment backend sends quota_status='polish'.
  • Pending: get the handoff to Leor; once backend lands, remove the presentation-local widenings; demo + PR (Ishai publishes).
The Platform (SETT Studio) , project kickoff + knowledge foundation (2026-06-08)
  • New STANDALONE customer-facing product kicked off (Sergey's spec). Customer/partner-facing playable review app; CP reviews -> Approve/Revise/Reject; AI turns vague feedback into a clean change request that flows into Cosmo as feedback on the existing playable work item. NOT part of Cosmo; own milestone track (PM1), own lab folder, own future repo. Per Ishai: "It's a new project, not part of Cosmo, don't declare it in the same milestones." CP = Creative Producer (the reviewer at the partner).
  • Created platform-design/ lab (raw/ specs/ research/ prototypes/ site/). Dropped Sergey's spec verbatim into platform-design/raw/2026-06-08-sergey-platform-spec.md.
  • Wrote the knowledge layer: UX-IA-SPEC (6-screen IA + the Revise flow + Cosmo bridge + scope split), JTBD, CP + PG personas, concept-ai-change-request (hero flow), concept-ack-rulebook, ACTION-ITEMS (PM1 milestone + gaps), IDEAS-AND-THOUGHTS (naming, design-language Option C recommendation, one-loop framing). Vault mirror: vault/11-Subjects/SUB-022-the-platform.md.
  • Built a browsable HTML knowledge site at platform-design/site/index.html (warm editorial doc-site, all 10 docs, works file://). For Ishai to read in-browser instead of Obsidian.
  • Gave Ishai a 7-cluster product-research-directions doc for his own mood-board hunt (Frame.io as the closest cousin). Visual research = Ishai's hand.
  • Vault precursor was McSett; this supersedes it. M4 ("Client platform") in vault is the same product but stays as a vault note; the live home is SUB-022 + platform-design/, on its own milestone clock.
Cosmo , Weekly stats bar redesign + responsive header: PR #300 (2026-06-08)
  • Opened PR #300 (github.com/sett-backend/cosmo/pull/300, branch pr/stats-header-responsive off origin/main, 6 commits, 5 files: tag.tsx, components.css, StatsBar.tsx, TopBar.tsx, weekly-page.css). Scope = stats + header responsiveness ONLY (no segtabs/ply-detail/8pt/nav bleed). Ishai's explicit "open the PR".
  • Feature recap (built over the prior session + today on work/live): 3-state status pills (regular/selected/unselected, new Tag unselected prop , selecting one filter dims the rest across all sections); per-pill min-width floors (R/V static, STATUS->icon+count, TL/PG short label) with a hard .stats-bar min-width bottom-out; continuous flex-driven label truncation replacing the JS ResizeObserver (Gali CSS-over-JS rule); "Review" dropped from TL/PG; Unfillable hidden at count 0; applied-filter space reserved at the chip's slot position (no jump on toggle); narrow/tablet stacks the stats onto its own row below the toolbar (left-aligned, taller header) via @media(max-width:1320px), inline single row when wide.
  • PR built in an ISOLATED worktree (/tmp/cosmo-pr-stats) off origin/main so work/live (the user's live :5174 view) was never reparented. Cherry-picked 6 stats commits; the one conflict (TopBar Pill->Chip divergence , origin/main already had AppliedFiltersChip) resolved by keeping the chip wiring + dropping the now-dead resize hooks import. tsc --noEmit clean on the PR branch (node_modules symlinked from main worktree).
  • Skipped the flush-left commit + its revert (net-zero) from the cherry-pick set.
  • Pending (Ishai's hand): attach the demo video to PR #300 (Gali rule , capture list: 3 pill states, no-jump filter toggle, tablet stack, truncation ladder); merge. Worktree /tmp/cosmo-pr-stats stays until merge, then remove.
Decision , 8-point grid is the spacing convention (locked 2026-06-08)
  • Ishai: stop using the random-feeling 5px scale; adopt the 8pt grid (8/16/24/32/48/64, 4px sub-step). Web-validated (Material + Apple HIG). Typography exempt (font-size 14/18/20 ok); line-height should be a multiple of 8.
  • Locked in .claude/rules/cosmo-design-system.md. Migration approach (Ishai's call): PARALLEL scale, not a remap , added --s-4 .. --s-64 to cosmo-prod tokens.css alongside the legacy 5px --space-* (untouched so no consumer shifts); new work uses --s-*, old surfaces migrate gradually. Committed (tokens cosmo-prod e517c41-ish; rule in workspace repo).
  • The stacked-header padding is currently 20px (off-grid; Ishai chose "keep 20 + see how it looks"). When eyeballed, snap to --s-16 or --s-24. Weekly-surface spacing migration to --s-* is a separate planned pass.
Done , Cosmo
  • Fixed three Weekly topbar menus rendering light cream in dark theme (Filters, Games, Team picker). Root cause both spots: --color-white (hardcoded #fefcf9, no dark override). Fixes: components/ui/multi-select.tsx:80 bg-[var(--color-white)] -> bg-popover (Filters + Games, shared primitive); design-system/components.css:3275 .popover-menu background --color-white -> --bg-panel (Team picker + any .popover-menu consumer). bg-popover->--popover->--bg-panel, which flips dark under [data-theme="dark"]. tsc clean, both themes verified. On work/live, scoped commits, not pushed.
Knowledge , Ingested Cosmos "Specs" index + 3 linked pages (SUB-020)
  • From Confluence eng "Specs" (816906278): fetched the 3 net-new linked pages (4th, PG Operational Flows, already in SUB-017). Author Sergey.
  • Cosmos Weekly Board Product Spec (816906298), Glossary (816939017), Status Alignment (816742434).
  • Wrote SUB-020. Headlines: full quota data model (commitment+wrapper, 2 flavors, 4 composition tiers CR/LM/HP/Regular, bundle=2, 3 attach mechanisms, detach-on-submit, roll-up); the 3 canonical status vocabularies (Apollo Task / Orchestration / Quota) + mapping , RESOLVES our old C1 lifecycle-vocab conflict; "revision = client-returned only, company-wide" , RESOLVES C3 origin-conflation; "completed != delivered" (board is auditor-production view) , the mechanism behind the SUB-019 divergence; Sergey's own 11 "broken today" rules (HP-not-solo, grow-to-3, refill divergence, saved-vs-live status lag, version-count pollution, revision-age-from-latest-round) , map to our pain clusters.
  • Updated entity glossary with a canonical "Quota model" section (quota, work item, composition tiers, bundle, attach, orchestration, 3 status vocabularies, Polishing, canonical Revision).
  • Flagged (not done): reconcile Playable-Schema.md against the 3-vocabulary model (big job, confirm first); mark C1/C3 spec-resolved in SUB-018; resolve answered items in Open-Questions/PG.md.
Knowledge , Consolidated PG Jobs-to-Be-Done into one canonical doc (SUB-021)
  • Found 5 fragmented PG-JTBD docs; consolidated into ONE canonical SUB-021-pg-jobs-to-be-done.md using the jobs-to-be-done skill (Christensen) + Ulwick ODI hybrid (web-researched the method to confirm the scale; Christensen alone scored insufficient, added ODI outcome statements + job map).
  • 10 big jobs (each: When/I-want/so-I-can statement + functional/emotional/social + 4 forces + what's-hired-today + big-vs-little hire + ODI sub-job outcomes). 8 consolidated from the old docs; 2 NET-NEW from recent ingests (PG-BJ-9 capture-knowledge, PG-BJ-10 pre-send-QA) + 6 new sub-jobs (Apollo-review triage, Mark-as-Sent quota choice, partner-ID matching, network-rejection recovery, Slack-send fallback, build_id concept). Forces rewritten on BJ-4 (revision=client-returned-only) + BJ-5 (completed!=delivered) + BJ-8 (two-signal quality model).
  • Self-scored 8/10 vs JTBD rubric; gap to 10 = an Opportunity Landscape from 10-15 PG interviews (Importance+Satisfaction scoring). Flagged as the highest-value next research action.
  • Built the presentable infographic cosmo-design/designs/pg-jtbd.html (frontend-design skill; editorial, the 10 jobs as expandable cards + job map + adoption-forces callout + non-obvious-competition + 8/10 score). Structurally verified (JS clean, ids matched, 0 dashes); NOT pixel-verified (Playwright browser locked by another session).
  • Archived 4 superseded docs to vault/_archive/jtbd-superseded-2026-06-08/ (SUB-012 draft + enrichment, the 2 03-Cosmo-pages JTBD docs). Left vault/02-Users/Jobs-to-be-Done.md in place (multi-role) with a pointer to SUB-021 for the PG section.
Cosmo , Week switcher: dropdown -> inline switcher, promoted to DS, PR #295 (2026-06-08)
  • Rebuilt WeekSelector from a popover dropdown into an inline switcher (prev/next chevrons + center calendar button) per Figma node 82:23752 (file DXwDrK80JIeHenmr2I0NsM). Center is inert CalendarRange (muted) on this week; becomes CalendarArrowDown (accent) "back to this week" on other weeks. Arrows step one week, clamp at range bounds.
  • Promoted pages/weekly/WeekSelector.tsx -> components/ui/week-selector.tsx as a DS composite nesting FButton variant="subtle" primitives (chevrons match sibling topbar icons). Old file deleted, TopBar repointed.
  • Iteration: chevrons swapped from shadcn Button-ghost to FButton-subtle (color match); label/date stack tightened 4px (label line-height 20->16); calendar-to-text gap loosened 4->8px.
  • Showcase added on Sett Design website (cosmo-ds-site, :5175) PATTERNS > Week Selector. @front alias confirmed resolving to canonical cosmo-prod (no divergence). No showcase code in product repo.
  • Code review vs Gali standards = KOSHER. Reviewer's CSS-spacing-token flags rejected: cosmo scale is 5px-based, no token fits the Figma-exact 4/8/9/1px literals (figma-to-code rule permits literals when no token matches). Raw center
  • Sliced WeekSelector-only commit off tangled work/live (SegmentedTabs leftover left unstaged + stashed). Branch feat/weekly-week-switcher off fresh origin/main, TopBar import conflict resolved, tsc clean, no no-touch zones. Pushed + opened PR #295 (Ishai's explicit go). Snapshot tag recover/worklive-1780899312.
  • Pending: Ishai attaches demo video + merges (both his hand). PR flags WeekOption type-import from data/ for Leor's awareness.
  • Week switcher range cap (PR #295 update): discovered backend /api/weekly/weeks serves 5 weeks (offsets -2..+2 via range(-2,3) in weekly_data.py), not 3. Ishai: cap forward at +1 (Next Week is furthest future), keep all past weeks. Implemented as a frontend-only filter in components/ui/week-selector.tsx (visibleWeeks = weeks.filter((_,i) => i-realIdx <= 1)), recompute prev/next/clamp against it. No backend touch. Committed b5c041c on work/live, cherry-picked onto feat/weekly-week-switcher, pushed (PR #295 now 2 commits), PR body rewritten to reflect real range + flag for Leor to widen backend PAST range if more depth wanted. tsc clean, :5174 200. Snapshot recover/worklive-1780906007.
Cosmo , Re-enabled editable difficulty dropdown in ply-detail panel (2026-06-08)
  • The DifficultyDropdown + handleSetDifficulty + useSetDifficulty hook were already on work/live but gated off (canEditDifficulty = false, "temporarily HIDDEN 2026-06-04"). Flipped to canEditDifficulty = true (open to everyone; tighten to a role check later). Dropped the dead useAuth import the subagent had added via || true.
  • Feature is fully built FE + writes to DB via existing PATCH /api/delivery/feedback/{id} (complexity_level), optimistic cache + rollback in hooks/useSetDifficulty.ts. Backend endpoint exists, so NO new backend data needed , it is a REVIEW-ONLY item for Lior. Left a // LIOR (review only) code note at the .mutate(...) call.
  • Landed ADDITIVELY on work/live: snapshot tags (recover/worklive-prediff-*, recover/worklive-preland), resolved in an isolated worktree (cosmo-prod-graft), TWICE caught + dropped a stale June-4 weekly-page.css topbar revert that the cherry-pick tried to drag in (would have clobbered another session's live topbar tuning). Final landed commit touches ONLY PlyDetailDrawer.tsx. tsc + build clean, :5174 200. Worktree removed.
  • Original source branch feat/difficulty-dropdown (c132342 + b617686) turned out unneeded , feature was already merged, just disabled.
  • Pushed to Lior's branch: refreshed handoff/frontend-for-lior on origin (5fa5cbd -> c246ffc) to current work/live frontend + rewrote HANDOFF-FOR-LIOR.md. Doc now has Part 1 (3 panel backend-data needs: solution_paths, customer_feedback, revision_difficulty-read) + Part 2 (difficulty editing = REVIEW-ONLY, already writes via PATCH /api/delivery/feedback/{id}, no new data). Built in isolated worktree (cosmo-prod-handoff on temp branch handoff-build off work/live commit), force-with-lease pushed, worktree removed, local handoff ref synced. work/live worktree never touched. Snapshot recover/worklive-prehandoff (e517c41). Branch is a handoff artifact, NOT merged to main.
Decision , Scope PG JTBD to the playable workflow only (locked 2026-06-08)
  • Ishai: the lens is the playable. PG-BJ-1 "grow the studio relationship (land and expand)" was too broad. Rescoped to "Manage the partner conversation a playable needs" , playable-facing communication only (right delivery info out, clean feedback in, delivery expectations per playable).
  • OUT of scope for our PG work: land-and-expand / account growth, dealmaking, winning/retaining partners, the studio-level business relationship, and video content (separate PG workstream on Monday.com).
  • IN: everything a playable needs idea->delivered->revised; partner comms only where a specific playable needs it.
  • Applied to SUB-021 (scope boundary section + BJ-1 rewrite + map row + design-implication + forces-summary + single-source note), the infographic pg-jtbd.html (BJ-1 entry, scope note under the masthead, competition line), and locked the rule in the entity glossary PG entry.
sun · 2026-06-07
# 2026-06-07

Done

Cosmo , Weekly stats bar responsivity: floors + no-jump + Review-removal + zero-unfillable (2026-06-07, on work/live)
  • Squeeze model rebuilt (continuing the 3-state pill work). Replaced the brittle px-threshold @container ladder with flex-driven continuous truncation: the pill LABEL is the flexible element (min-width:0 chain + flex-shrink:1 on label, flex-shrink:0 protecting icon + count). Labels truncate with ellipsis as the bar tightens; section gaps stay full the whole time (user rule: gaps never merge until pills squeeze). weekly-page.css STATS BAR section.
  • Per-pill minimum floors (user: "define the minimum size for each type, then it stops"). R/V tags flex-shrink:0 + min-width ~34-42px, NEVER shrink/clip (user: "don't touch them, they're at minimum"). STATUS pills floor = icon + count (label hidden via the one remaining @container step), flex-shrink:0 once floored. LAST MILE floor = "TL"/"PG" + count. .stats-bar { min-width: 500px } so the whole component bottoms out and stops shrinking; below that it may overflow the cell and the topbar/next-solution takes over. Verified live: at viewport 900 bar floors at 500px (was 448), all pills legible, no clip, one row.
  • No-jump filter reservation (user: the AppliedFiltersChip mounts/unmounts via if(!count) return null, so toggling a filter jumped the bar). .app-topbar-end { min-width: 580px; justify-content: flex-end; padding-left: var(--space-6) } reserves the chip's max footprint always, so center/stats width is constant whether the chip is present or not (measured: center 795px both states). The padding-left also adds the "more space between action bar and stats" the user wanted.
  • "Review" removed from TL/PG permanently (user request). Dropped the .stats-pill-label-suffix spans entirely; TL/PG now always render "TL "/"PG " (their permanent min form). Added .stats-pill-lastmile marker class so CSS distinguishes STATUS vs LAST MILE pills by class instead of the now-gone :has(.stats-pill-label-suffix). (Note: title="TL Review" tooltip still on the pill , flag to revisit per tooltip-label-only convention.)
  • Unfillable hidden at zero (user rule: unfillable = quotas without enough ideas to start; if 0, do not present it). STATUS_PILLS .filter() skips the unfillable entry when its count is falsy , the pill is absent from the DOM at 0, appears only when >0. Other 3 status pills always shown.
  • Dead-query cleanup: the prior Step C/D gap-tighten @container rules were self-referential (.stats-bar both the container AND the styled element , an element can't query itself), so they never fired in Chrome. Removed them; the min-width floor handles bottom-out instead. Container ladder is now minimal (one STATUS label-hide step; truncation is pure flex).
  • Also: useMemo removed from StatsBar.tsx (React 19 compiler handles it, per banned-list) , incidental to the unfillable edit. tsc clean throughout. Stale-Vite AppliedFiltersPill 404 (from another session's file rename folding into work/live) cleared with a clean dev-server restart (rm .vite + restart).
  • All on work/live (shared workbench), not committed as a discrete feature commit yet beyond the earlier 360d6ae checkpoint. Local-only, no push/PR.
  • LOST + RE-APPLIED (later that night). Another session's merge into work/live (commits f204a74 ply-detail + 31caecb segtabs, then 046530e AppliedFiltersChip rename) swapped the working tree and CLOBBERED all 4 of the above layers, which were still UNCOMMITTED (only the 3-state pill work at 360d6ae had been committed, so it survived; floors / no-jump / Review-removal / unfillable were dirty-tree and wiped). Not recoverable from git (not in any stash/branch/dangling commit , pure uncommitted state). Confirmed nothing conflicted (no other session had touched StatsBar.tsx or the stats CSS since 360d6ae; only components.css got +215 unrelated lines). Re-applied the full consolidated end-state in one pass from the spec above, verified live (no overflow at any width, bar floors at 500px, suffix=0, unfillable absent at 0, R/V rigid, STATUS icon+count floor, one row, end reserves 580px), then COMMITTED as adefe3d so it can never be clobbered again. Lesson: commit work/live feature layers immediately after each verified iteration; do not leave them as dirty tree on a shared branch other sessions check out.
Knowledge , Ingested 2 auth-gated HTML artifacts from Sergey (SUB-019)
  • Both pages sit behind @sett.ai Google SSO; unauthenticated fetch returned only login screens. Ishai saved both logged-in to ~/Downloads (with _files/ asset dirs); ingested the local saves.
  • Revision Count Divergence report (sett-internal-decks.vercel.app/reports/revision-divergence/, snapshot 2026-06-05): SQL-level reconciliation of the Cosmo-vs-Cosmos revision-count mismatch = our cluster C2. Finding: the two pages count different objects (Cosmo = orchestrations revision_count>0 no-week-no-quota-filter; Cosmos = current-week revision quotas, rollup from Apollo, quotas can bundle orchs). 112 Cosmo = 92 shared + 20 Cosmo-only; 97 Cosmos = 92 shared + 5 Cosmos-only; 97->94 via bundling. Gap fully decomposes into 5 SQL-checkable problems (P1 detached/no-quota +11, P2 advanced-to-build +6, P3 prior-week +3, P4 fake-revision-quota +5 all one PG, P5 bundling -3). Ships a verbatim re-run agent prompt (targets Marty/Yoni's Agent/Logos). Data caveat: don't trust orchestration.updated_at, use max(orchestration_states.created_at). RESOLVES C2 at the mechanism level.
  • SETT Eval / Quality Pulse (sett-eval-tiktok.vercel.app/pulse, live): net-new creative-quality surface. Expert BAD/OK/GOOD ratings of delivered playables. BAD% 23.5% last 14d (down 16.5pts), split 23.5/42.6/33.9, 115 ratings, coverage 430/1489 (28.9%, matches Scorecard Delivered 430). Qualitative hot-takes feed = the revision-cause signal the never-built 6-type taxonomy (C3) was meant to capture.
  • Wrote SUB-019; cross-linked C2 in SUB-018 as mechanism-resolved.
Knowledge , Re-ingested Sergey's PG Operational Flows doc (v13 -> v18)
  • Re-fetched Confluence eng page 802881537 (now v18, last edited 2026-06-04 by Sergey; was v13 when first ingested 2026-06-03). Diffed against SUB-017 capture, routed all new material into the vault.
  • SUB-017 updated with a "v13 -> v18 delta" section: flow 1 (no brief/asset ingest into ACK; can create ideas pre-core taking a half-baked build_id on a WIP core), flow 4 (NC creation paths , Cosmo batch prompt / Atlas chat / Monday ticket for new core max 1x/month; "Missing Helix at scale", Shahaf gatekeeps Helix compat, asset-manager bottleneck), flow 5 (no ACK knowledge invalidation; manual-only save; 💡 auto-save-to-ACK-on-revision), flow 6 (Approve vs Add-a-feedback split; happy/unhappy build flow; mobile-play friction; hard to find PG-review tasks in Apollo), flow 7 (explicit QA checklist + Fix-menu annotations; History = PG+customer revisions only).
  • Glossary (vault/98-References/Cosmo-PG-entity-glossary.md) gained 5 entities: Shahaf, asset manager (Helix), NC, WIP core / half-baked build_id, Add-a-feedback.
  • Open-Questions/PG.md gained a dated section with Sergey's 5 open items + 8 glossary unknowns (ACK, Logos, Helix, build_id, Dead Ends/Pending Allocation, partner-ID matching, approved-core gate, auto-save-to-ACK).
Cosmo , Weekly stats bar: 3-state pills + CSS-driven responsivity (2026-06-07)
  • Root-caused two breakages in the weekly topbar stats bar (QUOTAS/STATUS/LAST MILE counts): (1) the responsive CSS targeted dead .stats-pill* classes from the old hand-rolled markup, but StatsBar.tsx renders the Tag component (.sds-tag) , so the whole full/compact/wrap ladder never fired; (2) responsivity ran on a JS ResizeObserver + magic widths in TopBar.tsx, violating Gali's "CSS over JS for responsive" hard rule.
  • Source of truth: Figma node 39:5863 (Sett-Design). Spec sheet defines 3 pill states + a 5-step responsive ladder. Branch feat/weekly-stats-states off main.
  • New Unselected state added to Tag (cosmo-prod/packages/front/src/components/ui/tag.tsx): unselected?: boolean prop -> data-unselected, forces --_tag-bg: transparent while keeping border (/100) + text (/400); also sets --_tag-hover: transparent so it stays flat on hover. components.css: .sds-tag[data-unselected]{background:transparent}. This is the third state (Regular=/50 bg, Selected=/100 bg swap which already worked, Unselected=transparent). One component + boolean flags, no sibling component (Gali rule).
  • Pill box matched to Figma: .sds-tag--pill padding 1px 4px -> 1px 7px; pill icons 14px -> 12px (scoped to .sds-tag--pill .sds-tag-icon, non-pill tags keep 14px). Verified live via getComputedStyle: height 20px, padding 1px 7px, gap 4px, radius 9999px, icon 12px , all match.
  • Global dim coordination (StatsBar.tsx): anySelected = active.size>0 || vActive || rActive; every pill gets unselected={anySelected && !isThisOne}. Selecting any one filter dims every other pill across ALL 3 sections (confirmed decision). Verified live: clicking In Progress -> it fills, all others go transparent.
  • JS responsive deleted, replaced with CSS container queries: TopBar.tsx lost TopBarFit/FULL_STATS_W/COMPACT_STATS_W/SAFETY_GAP/getInitialFit/the fit useState/the ResizeObserver useEffect/topbarRef + 3 dead imports; data-fit removed from the header. weekly-page.css: dead .stats-pill* + .stats-vr* + .stats-divider + the data-fit wrap-to-row-2 block removed; new @container stats ladder (full labels -> ellipsis truncate -> icon+count only; TL/PG short labels persist longest; NO second-row wrap, per Figma).
  • Container-collapse bug found + fixed: container-type: inline-size on the grid track .app-topbar-center size-collapsed it to 40px (queries always fired tightest step). Fix: container moved to .stats-bar with width:100%; min-width:0, and .app-topbar-center justify-self start -> stretch so the child gets a definite parent width. Verified live: container reports real widths (864px wide / 244px narrow), ladder fires correctly at each step, bar stays one row at realistic widths.
  • tsc clean. Local-only, not committed/pushed, no PR. Showcase (3 Tag states) for the Sett Design website still pending (decision: website only, not cosmo-prod DesignSystemPage).
  • KNOWN FOLLOW-UPS: (a) container-query thresholds (720/620/520/430) are first-pass guesses , truncation starts later than the Figma 5-step cadence; tune live. (b) at extreme-narrow (~244px) bar height grows to 50px (minor wrap); fine at >=1024px. (c) the Wave-1 components.css stats hunks got bundled into rogue commit e76b319 on feat/ply-detail-panel-content during an agent git-dance; extracted cleanly onto the stats branch via patch, but e76b319 still carries them mixed with View-all work , needs splitting before that branch's PR. (d) tabs-legacy carried edit is isolated in stash (On feat/weekly-stats-states: pre-ply-detail-verify-stash) + QuotaBacklog edit in another stash.
Cosmo , SegmentedTabs redesign + QuotaBacklog wiring (2026-06-07)
  • Renamed + archived: old SegmentedTabs (outdated All/Game/Auditor design) -> SegmentedTabsLegacy (cosmo-prod/packages/front/src/components/ui/segmented-tabs-legacy.tsx, CSS .tabs-legacy / .tabs-legacy-item); FToggle (the current, good design) -> SegmentedTabs (cosmo-prod/packages/front/src/components/ui/segmented-tabs.tsx, CSS .segmented-tabs). All consumers + CSS classes migrated. QuotaBacklog repointed from Legacy to new SegmentedTabs.
  • Redesigned .segmented-tabs CSS from Figma node 85:3810 / 85:3888 (Sett Design file). Track + hover backgrounds now use design-system cream tokens at reduced opacity via color-mix(in oklch, var(--cream-400) 20%, transparent) (track) and color-mix(in oklch, var(--cream-300) 50%, transparent) (hover). Selected pill = var(--cream-50) solid. Text colors: --ink-600 idle/hover, --ink-700 selected, --ink-200 disabled. Track radius 10px, tab radius 8px, tab padding 0 9px. Rationale: using color-mix with token-based opacity instead of hardcoded rgba keeps the component linked to the token system so future token edits cascade in automatically.
  • Product wiring: QuotaBacklog grouping toggle (All / Game / Auditor) swapped from SegmentedTabsLegacy to new SegmentedTabs. Added stretched prop so tabs fill the header edge-to-edge with equal width (.segmented-tabs--stretched, each tab flex:1). Prop API identical (value/onChange/options/ariaLabel), so real grouping logic (buildBacklogGroups) preserved unchanged.
  • DS website updated: cosmo-ds-site/packages/design-system-site/src/pages/. "Toggle" showcase page became "Segmented Tabs"; new "Segmented Tabs (Legacy)" page added. Both consume real components via @front alias (resolves to cosmo-prod/packages/front/src).
  • Local-only, not committed/pushed. Ready for PR + demo video when Ishai approves.

Deferred

Decisions / rules

  • Design System / Color-mix pattern. When a DS component needs a translucent version of an existing token (e.g. a track background that's cream-based but requires reduced opacity to layer over varied backgrounds), use color-mix(in oklch, var(--token) N%, transparent) instead of a hardcoded rgba literal. This keeps the component linked to the token system so future token edits cascade in automatically. Example: SegmentedTabs track uses color-mix(in oklch, var(--cream-400) 20%, transparent) instead of rgba(212, 201, 185, 0.2). Locked 2026-06-07 per Ishai's rationale for SegmentedTabs redesign.
Cosmo , PlyCard tooltips + 6 PRs + StatsBar restore (2026-06-07)
  • Added CopyTip (HoverCard-backed click-to-copy tooltip) + wired Tip/CopyTip across PlyCard (id/game/title copy, chips descriptive). Fixed asChild={false} rail-overlap regression. Added Tooltip showcase page to DS website (+ tw-animate-css so Radix anim utilities resolve).
  • Split the PlayCard effort into 6 clean reviewed branches off origin/main + opened PRs: #272 CopyTip, #273 Tag states, #274 ply-card rail, #275 main-nav, #276 ply-card tooltips (base 274), #277 showcase (base 276). Converged all 6 into local main (11 ahead, local only). ds-site website pile committed locally (01fa6bc).
  • INCIDENT: converging local main excluded StatsBar (parked as non-PlayCard), so the StatsBar Tag-pill work vanished from :5174. Work was safe (stash@{0} + feat/ply-card-responsive + tag wip/playcard-tangle-snapshot), restored to main as commit 773d35f. The 8 separate DS-component files (ftoggle/menu/data-grid/field/check/fcheckbox/radio-group/applied-filters-chip) remain safe in stash@{0} (untracked, captured via --include-untracked), pending their own PRs.

Decisions / rules

  • Locked HARD RULE in .claude/rules/cosmo-v2-frontend.md "Never let a visible feature vanish from :5174": before any branch switch/convergence that changes the live working state, diff the visible surface and carry-forward or explicitly flag any dropped feature. The user's screen must never lose something they were just looking at. Parked-from-a-PR != removed-from-view.
Cosmo , nav effort converged to local main + Gali PR fixes + card/tag tweaks (2026-06-07 PM)
  • Converged the full MainNav effort + StatsBar into local main (FF). Applied Gali's two PR-review fixes onto main: #274 ply-card rail JS ResizeObserver -> CSS @container query (then made .ply-card-tags flex-wrap:wrap so chips never clip outside the card regardless of count); #276 chip tooltips moved INTO the Tag component via a tooltip prop (like Button) , removed call-site +.ply-card-chip-wrap. CopyTip on id/name/title preserved.
  • Ply-card difficulty chip is now ICON-ONLY (label dropped from card; word lives in tooltip + detail panel). Removed the now-moot difficulty-label-collapse @container logic.
  • .sds-tag horizontal padding set 7px -> 4px (commit 4e6bf79). NOTE: this had no prior committed record , sds-tag was 7px since creation; the 4px intent had been lost. Now recorded here.

Decisions / rules

  • .sds-tag rounded-tag horizontal padding = 4px (padding: 1px 4px). Locked 2026-06-07. (Was 7px, undocumented; reset to 4px per Ishai.)
  • Locked in cosmo-prod/packages/front/CLAUDE.md: (1) component behavior via a prop not call-site wrapping (Button tooltip pattern); (2) CSS over JS for layout/responsive; (3) every product-visible PR needs a demo video, orchestrator prompts before opening; (4) fixing sibling PR branches uses an isolated worktree so :5174 never reparents (from Gali's review + the branch-park regression).
Cosmo , nav 15-step compliance pass (2026-06-07)
  • Executed adversarial audit pass on MainNav/NavButton: 15 steps, commit 521811b on main.
  • Behavior changes: (1) disabled NavButton items now keyboard-focusable + announce aria-disabled (removed tabIndex={-1}); (2) border-radius now var(--radius-sm) -> squares in wireframe theme; (3) collapse trigger migrated to NavButton primitive + nav-button--compact modifier (focus ring + hover now consistent with rest of nav).
  • Token fixes: --text-2xs (12.5px) + --text-3xs (10px) added to tokens.css; all hardcoded font-size 10/10.5/12.5px across components.css replaced with token vars.
  • Structure: .nav-button-icon and .nav-button-trailing deduplicated to delegate to .icon-16/.icon-12; 7x cubic-bezier literals replaced with var(--ease-out); height 40px -> var(--space-8); line-height 18.13px -> 1.45 unitless.
  • A11y: aria-expanded on both expand+collapse toggles; role=group + aria-labelledby on section divs; .main-nav--collapsed .main-nav-user-text gains visibility:hidden for AT.
  • CosmoMark extracted to components/ui/cosmo-mark.tsx; data-collapsed attr removed; letter-fade now driven by .main-nav--collapsed parent class.
  • Showcase: NavButton + MainNav sections added to DesignSystemPage. DESIGN.md primitive count 23 -> 25.
Sett OS , concept + spec + presentation (multi-session, 2026-06-01 -> 06-03, documented 06-07)
  • Built the full Sett OS concept (working name was "Claude OS"): a personal command-center over the vault as a single Knowledge Bank that is Claude's memory + context. Studio = the build/interface; Sett OS = the system.
  • Spec folder (was vault/08-Design-specs/studio/) moved OUT of the vault to sett-os/concept/studio/ (25 files) so the concept stays insulated from the vault structure it redefines until a deliberate migration. Presentation at sett-os/presentation/sett-os-concept-v2.html. Subject copies in sett-os/subjects/.
  • Foundation = _tech-databank-schema.md: the data-bank schema + librarian routing contract. Two primitives , Area (stable per-system home, multi-valued, fills the missing main-project gap) + Scope (dynamic cross-area relevance lens, v1 = named saved-query, lifecycle deferred to v2). Tag schema: Type/Area/Scope/Importance/Impact/Effort/Timing/Business-goal/trust. Merged Aviran's (brother's) v6 architecture: intent-vs-event input, 6-stage librarian, two stores (Vault=intent / Artifact=record) + both tag + commit gate + reconciliation, Spine/Augmentation/Overlays vault structure, views-by-kind, agent-layer build list.
  • Trust layer: one trust field, ladder floating -> reviewing -> verified -> stale, verified = LOCKED, only a human sets verified. Concrete first use = org tree + role definitions.
  • Section specs drafted: Home, Daily Ingest, Gallery, Subjects (+off-keyboard capture, Inbox removed), Tasks (Linear backend), Milestones (command center + Confluence mirror), Documentation (verification console), Commands (launch button + action component), Activity Log (low-pri), Workflow Observability (agent + skills health). + tech pages for each.
  • Subjects created: SUB-016 (command-center concept from the Aviran conversation), SUB-017 (measuring success / OKRs), SUB-018 (pluggable Knowledge Bank via MCP). SUB-014 (weekly proactive-comms) created earlier in the run.
  • Presentation: 16 sections, then an /impeccable pass (one-time exception, Ishai approved by name) , editorial restyle (Fraunces + Source Serif 4 + IBM Plex Mono, warm paper, hairline rules, 8 SVG diagrams: pipeline, tag-anatomy, impact-effort 2x2, area-vs-scope map, trust ladder, views hub-spoke, agent layer, prior-art lanes).
  • Prior-art research: Scope = known pattern (Tana supertags/live-search, Capacities Queries, Obsidian Bases); vault-as-MCP = commodity (basic-memory, obsidian-web-mcp); verified/unverified = Guru + Notion verified-pages. The MOAT (nobody ships it): connecting the trust layer to the prioritization layer.
  • Linear: stood up a Studio project + 13 issues + owner labels, then CANCELED all 13 (Ishai wants to restructure tasks fresh after the system is hashed out); project + labels kept as scaffolding.

Open / next

  • Ishai to do his own scan of the Sett OS spec + presentation, then give comments. Concept stage only , no real vault/system changes yet.
  • 5 decisions applied this session (naming=Knowledge Bank; Sett OS vs Studio; cloud=read-only; Scope v1-simple; Linear backend + tags-in-vault). Still open: goals-bank location, success metrics (SUB-017), Spine/Augmentation vault migration plan, private-overrides-shared overlay design (SUB-018).
Cosmo , git workbench model (2026-06-07)
  • Adopted integration/workbench branch model for parallel screen-area work. ONE long-lived local branch work/live holds all in-progress work; :5174 always shows the union; orchestrator never switches the working tree out from under Ishai (root cause of vanishing-work was git checkout swapping the whole tree). Commits scoped per-feature so each slices out cleanly. Shipping is per-feature (cherry-pick that feature's commits onto a fresh branch off origin/main), never all-or-nothing. PR -> origin/main (= the product); local main is a read-only downstream mirror, never a push target. Worktrees only on demand for side-by-side viewing.
  • Renamed feat/weekly-stats-states (already a 38-commit de-facto workbench) -> work/live, rebased onto fresh origin/main (clean, no conflicts, 3 already-landed commits auto-skipped), restored 5 dirty files via stash. :5174 verified 200, nothing lost.
  • Rule locked: .claude/rules/cosmo-v2-frontend.md § "The workbench model , ONE live branch holds all in-progress work (HARD RULE)".
---
Daily ingest (22:56) - WIDE SWEEP 2026-05-24 to 2026-06-07
Window: 2026-05-24 00:00 to 2026-06-07 22:56 Asia/Jerusalem (14-day wide sweep; last ingest was 2026-05-31 09:48) Sources scanned:
  • Notion: meeting notes query FAILED (operator format mismatch across both attempts), not swept
  • Slack: #cosmo-v2 full 14d, #cosmo-support search, #pa-general search, group TL DM, selected DMs - ~80 msgs with signal
  • Gmail: 19 threads scanned, 12 project-relevant (calendar invites, Confluence digests, "Intro - Product" follow-up)
  • Calendar: 17 events pulled 2026-05-24 to 2026-06-14
  • Confluence: 10 pages found via CQL; PG Operational Flows (page 802881537) confirmed present + last edited 2026-06-04 by Sergey (already ingested today via git commits 227c75e + 4c579f4 + 80961e6); 6 new Yuval Balak Eng-space pages created 2026-06-07 (Quality+Evals, Work Process Lifecycle, Persona TLs, Cosmo-Apollo Integration, Persona Auditors, Persona CPs) - FYI, not Ishai-authored
  • Jira: not swept (no project-signal query run)
  • Git (sett-ux): 7 commits in window (see Product changes below)
  • Comms gaps: run against stakeholder-comms.md
Decisions (7 net-new since last ingest): 1. Manage quotas / Revisions. Revision canonical definition locked: "a request that came back from a client after it was delivered." Shipped in #pa-general release notes by Sergey 2026-06-02. Source: https://sett-ai.slack.com/archives/C0A89ME20FP/p1780414547459489. See vault/08-Design-specs/manage-quotas-modal.md. 2. Manage quotas / PG Internal Reject. PG fix request on a Ready-to-Send task (approved + built) NO LONGER counted as a revision. Apollo task returns to In Progress; quota returns to Last Mile. Shipped 2026-06-02 (Matan + Lior). Source: same #pa-general post. See vault/08-Design-specs/manage-quotas-modal.md. 3. Manage quotas / Auto-refill. When LAST orchestration of a quota is cancelled, quota auto-fills from available tasks or ideas. Shipped 2026-06-02. Source: same release note. 4. Manage quotas / build_id mandatory. Cosmo Ideation: adding a prompt now requires build_id. Adding a build to a previously blocked idea unblocks it. Shipped 2026-06-02. Source: same release note. 5. Manage quotas / High Priority ideas. High Priority ideas always get a dedicated quota. Shipped 2026-06-02, fixing a prior detach-reattachment bug. Source: same release note. 6. Auto-refill detail rules (locked 2026-05-26 by Lior in #cosmo-v2). (a) auto-refill fires only on LAST orchestration cancellation; (b) same-auditor priority order: same auditor > no-auditor/other with no prior work > all others; (c) delete quota = archive with attribution (TLs/PGs can access); (d) rollover = move everything, no stale task filtering; (e) explore Sun-Sat week (Mon-Sun is current). Source: https://sett-ai.slack.com/archives/C0AUCBKUKN3/p1779722382711649. 7. PR workflow rule (Yuval DM 2026-06-04). Small color/style changes = FYI in #cosmo-v2. Logic changes = send PR link. Applies to Cosmo V2 frontend. New tasks (4):
  • Address Gali Pruzansky's code review comments on PR #274 (ply-card responsive tag rail) and PR #276 (tooltips/click-to-copy). Both active reviews. Route to vault/00-Action-Items.md Design Tasks. Source: PR notifications + prior session context.
  • Fix null-TL bug: applyClientFilters excludes quotas with tl_name=null - Duskin found 2026-05-28, proposed fix is render under "Unassigned TL" lane. Route to Design Tasks.
  • Fix quota FE allocation bug: revision quotas incorrectly counted in min/max calculation (should count only version quotas). Sergey raised 2026-06-04 in #cosmo-v2. Route to Design Tasks.
  • Week switcher design update: Ishai has a corrective design ready (per DM to Sergey 2026-06-07). Route to Design Tasks - apply new week switcher design to header.
Status changes (4):
  • Cosmo/Cosmos data divergence is now the TOP priority for week of 2026-06-07. Yuval announced in #cosmo-v2 2026-06-07: "we need to focus this week in data alignment between Cosmo and Cosmos. Find the missing logics that fucks us and present different data." Sergey running daily reports at sett-internal-decks.vercel.app/reports/revision-divergence/. Lior working on fixes.
  • Lior Finkelman absent 2026-06-07. Yuval skipped daily standup and announced it.
  • Ishai OOF starts 2026-06-14. (Seen in calendar from prior session context.)
  • Cosmos V2 UI updates shipped 2026-06-04 by Ishai (per #cosmo-support announcement): lighter color palette for tags/statuses; Quota details panel now matches quota card layout; game names capitalized ("Two Dots" not "two-dots"); collapsed columns now default.
Meeting notes (6 meetings identified, not yet filed as vault notes):
  • 2026-05-24: Ishai/Sergey 1:1 (calendar entry)
  • 2026-05-25: Elad Werber / Ishai PG walkthrough (already filed this session)
  • 2026-05-25: Yuval Arbel / Ishai (calendar, already filed this session)
  • 2026-05-26: "Cosmos sync" (Yuval B + Sergey + Lior + Matan + Einat + Ishai; already filed as vault/10-Activity-Log/... entry)
  • 2026-05-28: "Cosmos & Cosmo" (Einat organizer; agenda = why old Cosmo, how revisions, what missing; attendees: Sergey, Mykyta, Marija, Daria, Tatiana, Volodymyr, Aleksa, Ishai). Not yet filed.
  • 2026-06-03: Ishai/Sergey 1:1 + Sergey/Elad (calendar). "PG Flows contd." (Sergey + Dafna + Elad + Ishai, 10:30-11am). Gemini notes likely exist.
  • 2026-06-04: Lior/Ishai 1:1 (Lior accepted). "Sett Up" all-hands (monthly, last Thursday, Gemini notes likely).
User-role insights (TLs, from group DM 2026-06-05):
  • Tatiana: needs customer feedback text 100% visible in Cosmos (currently must go to old Cosmo). Not switching between weeks at all (no use for week switcher in Tatiana's workflow). Source: https://sett-ai.slack.com/archives/C0B4JJ17HHA/p1780639501021289.
  • Tatiana (2026-05-26 #cosmo-support): needs "reset" button and specific page from old system in Cosmos.
  • Aleksa (same group DM, prior session): wants Apollo thumbnails embedded for task identification.
New Confluence pages (Yuval Balak, Eng space, created 2026-06-07) - FYI only:
  • "Quality and Evals - Overview" (page 823132429) - Apollo quality discipline landing
  • "Work Process - Effort Lifecycle and Ceremonies" (page 823066719) - Apollo squad process
  • "Persona - Team Leads and Auditor Operations" (page 823066690) - TL persona doc
  • "Cosmo + Apollo - Orchestration and Quota Integration" (page 823034022) - integration seam
  • "Persona - Auditors" (page 823033942) - auditor persona
  • "Persona - Creative Producers" (page 822968425) - CP persona
  • "Playable QA Agent - Overview" (page 822968609) - QA agent PRD
  • "Creative Quality - Quality Checklist PRD" (page 822968664) - quality checklist
  • "Cosmos Weekly Board - Product Spec" (page 816906298, Sergey author, last edited 2026-06-04) - Cosmos spec
These are Yuval-owned Eng-space docs, not UX space. Potentially useful context for integration design. Upcoming meetings (from calendar):
  • Mon 2026-06-08 10am-11:30am IDT: "Platform" (Sergey organizer). UNREAD invite.
  • Tue 2026-06-09 10am-10:30am IDT: "cosmo - brain storming" (Einat organizer, Gal Vitner also invited). UNREAD invite.
  • Recurring: "Cosmos Daily" standups (Sun-Thu, ~3:50pm IDT) - Yuval running.
Product changes (sett-ux, 7 commits in window):
  • c162459 2026-05-30 recover(studio): restore lost cosmetic-surgery work from session transcripts (vault/spec files, 12+ files)
  • 533cd16 2026-06-07 feat(sett-os): concept + spec + presentation for the Knowledge Bank command center (sett-os/, vault subjects, .claude/ files, N files)
  • fd869dc 2026-06-07 rules(cosmo-v2): lock branch-park corollary + visible-surface protection (.claude/rules/cosmo-v2-frontend.md, 1 file)
  • 3e018b6 2026-06-07 rules(cosmo-v2): adopt work/live integration-branch model (.claude/rules/cosmo-v2-frontend.md, 1 file)
  • 227c75e 2026-06-07 knowledge(pg): re-ingest Sergey PG Operational Flows v13->v18 (vault/11-Subjects/SUB-017, 2 files)
  • 4c579f4 2026-06-07 research(pg): deep-dive pain correlation + Sergey-doc contribution + HTML viz (vault/11-Subjects/SUB-018, cosmo-design/screens/, N files)
  • 80961e6 2026-06-07 knowledge(pg): ingest Sergey revision-divergence report + Quality Pulse (vault/11-Subjects/SUB-019, 1 file)
Comms gaps:
  • Harel Pick: OVERDUE. Last contact: never. Cadence: weekly. 7+ weeks since AB-016 opened. Run /comms Harel for a draft.
  • Tatiana Iudina: DUE. Last Ishai-sent Slack DM: 2026-05-03. Active in group DM 2026-06-05 (she wrote, Ishai may not have replied). Cadence: weekly. Run /comms Tatiana.
  • Gali Pruzansky: OVERDUE. Last Ishai-sent DM: 2026-05-06. Has active PR review comments on #274 + #276. Cadence: 2-3x/week. Run /comms Gali.
  • Omer Duskin: note - Duskin replaced as Cosmo dev by Yuval Balak + Leor Finkelman (per memory 2026-05-18). Comms map stale. Lior Finkelman now the relevant dev contact.
Refused (0): none in this sweep. Unrouted (2):
  • Notion meeting notes: query API failed (both attempts), not swept this run. Retry with correct one_week_ago relative filter next ingest.
  • "Intro - Product" org meeting 2026-05-26 (Gemini follow-up email from Sergey): Typeform feedback poll + deck link. Organizational context only, no Cosmo design action.
> Source: Slack (multi-channel), Gmail (19 threads), Google Calendar (17 events), Confluence CQL (10 pages), git log (sett-ux) on 2026-06-07
sat · 2026-06-06
# 2026-06-06

Done

Cosmo , Ply card rail: id truncates first, wrap as last resort
  • Refined the crowded-rail rule per Ishai: the quota id (least important) is the sole flex-shrink target and truncates toward zero FIRST while every tag keeps full shape and the assign button stays put. Only when the id is gone AND tags+assign still overflow does the rail wrap the assign to a second row.
  • CSS can't express "shrink then wrap" on one flex container (wrap breaks the line before shrinking), so PlyCardBody now measures rail overflow via a ResizeObserver (in nowrap mode) and toggles .ply-card-tags--wrap. id is a direct rail child (margin-left:auto, flex-shrink:1, ellipsis); assign wrapped in .ply-card-assign (flex-shrink:0). Order of tags unchanged.
  • Verified live :5175 across 240/210/180/150: 1-4 chip cards stay single-row with id truncating (idW shrinks to ~7px, ellipsis), tags full + assign in; 5-6 chip cards wrap (tags row1, id+assign row2), id full, nothing clipped. cosmo-prod tsc clean.
  • Ply card rail fix #2: grouped id + assign into one .ply-card-end-cluster (margin-left:auto, nowrap internally) so they always stay together + right-aligned and the assign never drops to its own left-aligned line. id is the sole shrink target inside the cluster (truncates first). Rail is flex-wrap:wrap; cluster wraps as one unit. Removed the flaky ResizeObserver wrap-toggle (was causing spurious 2nd rows + an occasional 3rd row). Verified at 224: all cards <=2 rows, cluster right-aligned, assign on same row as id, in-bounds.
  • Ply card rail fix #3 (final): a second line is now strictly last resort. Rail is flex-wrap:nowrap so the id truncates all the way to nothing first (single row preserved). PlyCardBody measures: only when the id has fully collapsed (clientWidth<=1) AND the rail still overflows does it set .ply-card-tags--wrap, dropping the id+assign cluster to row 2 (assign never clipped, stays grouped+right). Verified at 224/200/180: light cards stay 1 row with id truncated; crowded cards wrap only after id gone. (6-chip card still 3 rows below ~200px, physical limit, not a real board width.)
Cosmo , Main side-nav pattern component (Figma 75:1832)
  • Built the new left-rail navigation as production DS components in cosmo-prod (per Ishai: new DS component + showcase first, do NOT touch live WeeklyPage yet).
- components/ui/nav-button.tsx , NavButton primitive: open (icon+label, full width) vs collapsed (40px icon-only), states regular/hover(--bg-sunken)/selected(--accent-soft + --accent). Props: icon, label, collapsed, selected, leading (for avatar), onClick. - components/ui/main-nav.tsx , MainNav pattern: full-height rail, brand logo (reuses CosmoLogoFull/Icon), data-driven grouped sections (heading + NavButtons), collapse toggle (PanelLeftClose/Open), footer + user slots. Open 294px / collapsed 88px. - CSS recipes in components.css (.nav-button*, .main-nav*), tokens only, dark-mode-safe.
  • Website (design-system-site): new Patterns > Navigation page (MainNavPage) showing Open + Collapsed (interactive collapse + active selection) + NavButton states; Code tab with usage. Added to Sidebar Patterns + App routing.
  • Verified live :5175: open=294px, collapsed=88px, selected=accent-soft, logo + collapse toggle + footer + user all render. cosmo-prod + site tsc clean. NOT wired into the live product (separate step pending Ishai's go).
  • MainNav fixes: (1) collapsed expand toggle (PanelLeftOpen) moved to the TOP of the body as the first nav item (per Figma 75:1834), out of the footer. (2) Added width transition (220ms ease, reduced-motion safe) to .main-nav so collapse/expand animates like the prototype. Verified live :5175.
  • MainNav: replaced logo with the new "Cosmos" wordmark (orbit glyph + Cosmos lettering + 3 sparkles; icon-only variant = orbit + 2 sparkles), sourced from cosmo-lab lab-shell. Updated shared Logo.tsx (CosmoLogoFull viewBox 0 0 151 35 overflow visible; CosmoLogoIcon 0 0 42 35) , propagates to product + nav.
  • Reworked the collapse animation to match the prototype (analyzed cosmo-lab/weekly-v1.html): nav-button now transitions max-width (220px<->40px) + padding over 0.28s cubic-bezier(0.4,0,0.2,1) with overflow:hidden, label stays in DOM and slides out under the clip (no pop), icon fixed; rail width transitions 0.22s. Verified live :5175 (open logo viewBox 151x35, label in DOM, transitions correct). tsc clean.
  • MainNav anti-jump animation rework (analyzed lab-shell prototype exactly): killed every discrete swap that caused "snap then animate":
- Logo: ONE full Cosmos SVG, left-anchored, never swapped to the icon variant; rail overflow:hidden clips the wordmark on collapse so the orbit glyph stays in place (was: swapping to centered icon -> jumped right). Dropped CosmoLogoIcon import in main-nav. - Removed all align-items:center swaps on collapse (main-nav, body, section, footer). Rows stay width:100% + left-anchored; collapse only transitions padding (16->12) + gap (8->0), so the icon glides to its slot. - Label is a separate element: max-width 200->0 + opacity, 400ms, transition-delay 80ms on open / 0 on close (staggered fade, no pop). - User row: single .main-nav-user (avatar fixed, .main-nav-user-text fades+clips) instead of swapping a NavButton<->div (was: avatar cropped + jumped). - Easing changed to cubic-bezier(0.16,1,0.3,1) @ 400ms (expo-out, smooth decelerate) on rail width + row padding/gap + label; reduced-motion safe. - Showcase user block updated to the single-row markup. tsc clean both packages.
  • MainNav refinements: (1) Logo now morphs , split CosmoLogoFull SVG into .cosmo-logo-mark (orbit glyph + C + o + glyph sparkles, always visible) and .cosmo-logo-word (smos + trailing sparkle); the word group fades via opacity (250ms, 80ms stagger) when .main-nav-logo[data-collapsed]. Collapsed shows the orbit glyph only, not a stuck full wordmark. (2) Section titles fade instead of snapping , .main-nav-section-head now stays mounted and transitions height+opacity to 0 on collapse (was conditionally unmounted = snap); collapse toggle inside is the only thing removed when collapsed. Verified live :5175: open word/head opacity 1, collapsed 0. tsc clean.
  • MainNav logo: split wordmark into per-letter groups (.cosmo-logo-letter), staggered opacity fade (collapse right->left, open left->right, ~50ms steps). Dropped the first "o" from the always-on mark group into the word group , collapsed now shows orbit glyph + C only.
  • Ply card 3-line fix: in wrap mode the id+assign cluster now flows inline (margin-left:0) + flex:1 1 auto so it fills the last tag line and the id truncates there instead of forcing a 3rd row. Verified @224 (real board): both crowded(5-chip) + max(6-chip) cards = 2 lines, assign in-bounds. NOTE: a 6-chip card below ~200px still hits 3 lines (6 full tags physically overflow); flagged to Ishai , would need difficulty-label-collapse to guarantee 2 lines at every width.
  • Ply card 3-line bug fully fixed: the wrapped id+assign cluster was flex-basis:auto, so the wrap algorithm pushed it to a fresh 3rd line when the trailing tag (Hard) sat alone on line 2. Changed to flex:1 1 0 (basis 0) + min-width:0 , the cluster now keeps to the SAME line as the trailing tag and the id truncates to fit. Verified Max(6-chip) card = 2 lines at every width 140-224 (was 3); id truncates on line 2; assign in-bounds.
  • Ply card flash fixed + 3-line eliminated, pure CSS now. Removed the ResizeObserver/railWrap JS (it left the rail in a clipping nowrap state for one frame -> the assign-icon flash before wrapping). Rail is now always flex-wrap:wrap; the .ply-card-end-cluster is flex:1 1 0 + justify-content:flex-end, so its zero base size keeps it on the trailing tag's line, it grows to fill, and the id truncates there. Verified all 7 cards <=2 lines across 140-224px, id truncates first, assign always in-bounds, no flash. Dropped unused useEffect/useRef/useState imports.
  • Ply card assign-overlap fix: the flex:1 1 0 cluster could collapse to 0 width on a full tag line, so the non-shrinking assign icon overlapped the last tag (Hard). Set .ply-card-end-cluster min-width:24px (the assign's width) so the cluster wraps to the next line when there's no room instead of collapsing. Verified all 7 cards across 160-224px: no tag/assign overlap, <=2 lines, assign in-bounds, id truncates first.
  • Playable card page brought in line with the other DS-site pages: added the hero panel (live card at 224px) on top, and moved content into label-column .sds-desc-row sections , "Density" (card across chip loads) + "Responsiveness" (the interactive lane-width slider playground). Description/Code tab shell unchanged. tsc clean.
  • Ply card degradation order corrected per Ishai: now id-truncate -> difficulty-label-collapse-to-icon -> wrap (in that order, applied only as far as needed). PlyCardBody measures pre-paint in a useLayoutEffect (no flash) and adds .ply-card-tags--effort-icon then --wrap to the nowrap rail until it fits one line. Only the type tag keeps text under pressure; difficulty drops to its icon before any wrap. Verified: Max(6-chip) card now 1 line at 160-224 (Hard->icon, id truncated, assign in, no overlap); crowded(5-chip) keeps "Hard" label + 1 line. Stale-HMR railRef errors were transient; live module clean, 10 cards render.
Cosmo , ported 4 component families from lab DS into production DS + DS website
  • Built 6 React primitives in cosmo-prod/packages/front/src/components/ui/: ftoggle.tsx (segmented control, Figma 670:18003, sunken pill + lift, adaptive/stretched, 4 states), data-grid.tsx (columns+rows config, interactive/scroll/empty variants, ellipsis cells, Tag/Badge slot in), field.tsx (TextInput: label + hint + error, covers search/plain/date/error states), menu.tsx (slot-based, all 6 lab variants: action+section, simple action, switch, buttons+select, full filter, applied-removable; reuses FCheckbox/Check/Switch), applied-filters-chip.tsx (the new two-zone chip: revert X + count badge + label + chevron, opens a Popover-wrapped Menu).
  • Added matching CSS recipes to design-system/components.css (.ftoggle, .dt-table/.dt-scroll, .menu*, .applied-filters-chip*), token-mapped (no hardcoded hexes; auto-adapts to dark/wireframe).
  • Added 4 DS-website pages (cosmo-ds-site/.../pages/): TogglePage, TextInputPage, DataGridPage, MenuPage; wired into Sidebar (Components + Patterns groups) + App.tsx routing. Radio already existed (radio-group.tsx).
  • Fix: Menu row was a
  • Verified live :5175 all 4 pages + Playable card: zero console errors on fresh load (the earlier railRef/idRef + nested-button errors were stale-HMR accumulation). cosmo-prod + site tsc clean (lone site error is pre-existing api-client import.meta.env via PlyCardPage's @front transitive import, not from this work). Local-only, nothing pushed.
fri · 2026-06-05
# 2026-06-05

Done

Cosmo
  • Tag component: added selection states (selection prop: regular/selected/unselected). regular=bg/50 border/100, selected=bg/100 border/50 (swap), unselected=transparent bg border/100, text stays /400. Per Figma 39:5863. Verified live: click flips alpha 0.2<->0.5.
  • StatsBar: replaced status + last-mile pills with Tag component (tones: Not Started=neutral, In Progress=active, Complete=positive, Unfillable=negative, TL=violet, PG=purple; icons Ban/RefreshCw/CircleCheckBig/Hourglass per Figma 39:4998), removed both stats-dividers, wired selection=selected on active filter. QUOTAS total + R/V left as-is for now. Verified live :5174: 0 dividers, 6 tags, correct refreshed-palette tones, selection swap works. Still on feat/palette-refresh-v2 branch (stacked on palette refresh #271).
Cosmo , Sett Design website (DS site)
  • Clarified: "the website" = cosmo-ds-site/packages/design-system-site/ (:5175), the standalone Sett Design site. NOT the cosmo-prod /design-system route. Locked terminology rule in .claude/rules/design-system-source-of-truth.md + topic-index pointer in CLAUDE.md.
  • Repointed the site's @front alias (vite.config.ts + .js + tsconfig paths) from the local cosmo-ds-site worktree's ../front/src to the canonical cosmo-prod/packages/front/src. Per Ishai's call: one source of truth, site never drifts from merged product. Fixes blank Color page (worktree copy had diverged from main: different palette values + --color-* prefix scheme).
  • ColorPage SCALES updated to canonical --color-* names + added Bordo. Verified live :5175: 65 swatches, 0 empty, values match main (green-400 #0dab4b, bordo-400 #dc1367).
  • Ported fcheckbox.tsx (was worktree-only, blocked the site boot once aliased to main) into cosmo-prod main components/ui/ + added a token-based .fcheck recipe to main components.css (the .fcheck CSS had never existed anywhere; component referenced it).
  • Pending: add the Playable-card showcase page to the website (today's ply-card responsiveness work was built in the wrong viewer , cosmo-prod's /design-system route).
Cosmo , Checkbox/Check/Radio ported to production components + website
  • Ported the lab DS input controls (cosmo-design/design-system, Figma 843:66791/66792/67104) into cosmo-prod main as real React components: FCheckbox (.fcheck box, accent fill + white check), Check (.fcheck-bare borderless checkmark), RadioGroup+Radio (.fradio circle + accent dot). All Radix-backed, Gali standards (arrow fn, named export, inline props). CSS recipes added to cosmo-prod components.css (token-only). Replaced the earlier stopgap fcheck CSS.
  • Website (design-system-site, :5175): rewrote CheckboxPage desc; added CheckPage, RadioPage, PlyCardPage; wired App.tsx switch + Sidebar nav (Components: +Check, reordered; Patterns: +Playable card). Verified live: checkbox accent-fill+check, radio dot, borderless check, ply-card playground (7 cards, slider, tags hold h20).
  • Note: site tsc --noEmit flags one pre-existing error in cosmo-prod api-client.ts (import.meta.env needs vite/client types in site tsconfig) , not from this work; dev/build unaffected. Flag for later tsconfig fix.
Cosmo , DS website new page layout (all pages)
  • New component-page layout applied across the Sett Design website (design-system-site, :5175), per Figma 67:5881: interactive HERO panel on top (every case live), then a renamed tab strip + structured "Description" sections (label column + bordered example card, label-col/card row layout). Tag page built as the template, then Button/Checkbox/Check/Radio/Switch via parallel subagents; PlyCard + Color got Code tabs.
  • Tabs trimmed to Description + Code only (removed Usage + Changelog). Code tab now holds usage instructions via new CodeBlock component (import + snippets per component).
  • Removed all empty/stub pages from nav + deleted StubPage.tsx. Nav now: Foundations(Color); Components(Button, Tag, Checkbox, Check, Radio, Switch); Patterns(Playable card).
  • New CSS in sett-design-site.css: .sds-hero/.sds-hero-row, .sds-desc-row/.sds-desc-label/.sds-desc-card/.sds-desc-cards/.sds-desc-subcard, .sds-code-tab/.sds-code-pre. New components: CodeBlock.tsx.
  • Verified live: all 8 pages render, tabs Description+Code, heroes on component pages, desc-rows populated. Typecheck clean (1 pre-existing api-client import.meta.env error in site tsconfig, unrelated).
Cosmo , DS website SHELL rebuilt (Figma 67:5881)
  • Moved brand (SETT Design logo) + theme switcher (Light/Dark/Wire segmented) into the LEFT sidebar top; removed the top Topbar entirely (deleted Topbar.tsx). Content is the right column, padding 32/128.
  • Sidebar: width 272, p-32 gap-32. Nav groups now COLLAPSIBLE , header = label + flex divider line + ChevronUp toggle (SidebarGroup useState open). Nav buttons restyled per Figma: h-24, p-8, rounded-4, active = --accent-wash bg + --accent text. NavItem icon slot removed.
  • Theme toggle restyled to segmented control (bg-sunken, rounded-8, active button bg-panel).
  • New CSS in sett-design-site.css (sds-sidebar/-brand/-groups/-group-header/-group-divider/-group-chevron/-items, sds-nav-item, sds-theme-toggle). Verified live :5175 after dev restart (cleared stale HMR ghosts of deleted Topbar/StubPage). Typecheck clean.
Cosmo , DS website Playable-card assign button restored
  • The website PlyCardPage rendered PlyCardBody with showAssign={false} (set earlier to dodge the provider deps), hiding the assign-auditor control. Restored: wrapped the page in QueryClientProvider (local QueryClient, retry:false) + WeeklyStateProvider, flipped to showAssign default (true). Added @tanstack/react-query to the site package.json deps (was only in front's tree; tsc couldn't resolve it).
  • Verified live :5175: all 7 cards show the 24x24 UserRoundPlus assign button. Expected /api/weekly/teams CORS/network errors only (no backend behind the DS site) , no QueryClient context error, button renders + opens. Typecheck clean.
Cosmo , Ply card tag rail wraps instead of clipping (Figma 2026-06-05)
  • Extreme-crowding behavior changed: when chips + id + assign don't fit one line, the rail now WRAPS to a second row instead of truncating the id / clipping the assign button. .ply-card-tags = flex-wrap:wrap + row-gap:4px; .ply-card-row-end (id + assign) is flex-shrink:0 and wraps as one intact unit, margin-left:auto keeps it right-aligned on whatever line it lands.
  • Removed the count-based difficulty collapse (effortCollapsedByCount + --effort-collapsed) , labels stay full, wrap handles crowding. Kept a deep-fallback container-query collapse at <=168px lane only. Removed id flex-shrink/ellipsis truncation (id stays full).
  • Verified live :5175: light cards single-row; crowded/max cards wrap (tags row1, id+assign row2 right). id full + not clipped, assign button always >=24px and inside the card at 224/200/170. Matches Figma. cosmo-prod tsc clean.
thu · 2026-06-04
Cosmo
  • Fixed FButton Down state ignoring physical hover (worktree cosmo-ds-site). Root cause: .fbtn--primary:hover:not(:disabled) specificity (0,3,0) beat .fbtn--primary.is-down (0,2,0), so hovering a static Down button flipped it to the hover look. Added :not(:disabled) to the down/active/selected rules (primary + secondary + subtle) to lift them to (0,3,0); source-order-later breaks the tie in their favour. Verified live while hovered: down stays orange-600, no inset shadow, no 2px raise. Also fixed the same latent bug on subtle's .is-selected.
  • Split the two weekly text-display changes into two independent branches off fresh main (cosmo-prod), committed locally (I don't push/PR):
- feat/weekly-game-name (READY): displayGameName() helper + 4 call sites (PlyCard, PlyDetailDrawer, QuotaBacklog, QuotaBugReportDialog). Pure frontend. Build green. Commit 2f45950. - feat/weekly-multi-prompt (BLOCKED on Leor backend): +N card render + types.ts optional fields (prompt_count, first_prompt_name) + .ply-card-prompt-more css. Ships dark with safe fallback. Build green. Commit b8bc9e0. Needs rebase onto main after the game-name PR merges (small PlyCard overlap). - Handed Ishai the gh push + gh pr create commands for both (multi-prompt as --draft).
  • DS-site (cosmo-ds-site) refresh no longer resets to Tag: mirrored active nav item to the URL hash (#Button etc.) in App.tsx, init from hash, hashchange listener for back/forward. tsc clean, verified live at :5175 (#Switch reload stays on Switch).
  • Pushed feat/weekly-game-name + opened PR #263 (title-case game names) on Ishai's go. Ready to merge. Multi-prompt branch still local/draft, blocked on Leor.
  • FButton (cosmo-ds-site worktree): removed the inset bottom line on hover for primary + secondary (box-shadow: inset 0 -2px 0 ...). Hover now signals via the 2px content raise alone. Verified primary state colors against tokens live: Regular #dc6821 (orange-400), Hover #cf3f00 (orange-500), Down #b43600 (orange-600), all box-shadow none. Confirmed orange-400 token value matches Ishai's Figma value #DC6821 exactly, no color revisit needed.
  • FButton outline ring on hover FIXED (real root cause). The thin "outline" tracing the rounded corners on hover was: inset box-shadow + the 1px transparent border + default background-clip: border-box = shadow drawn offset 1px, tracing a ring on the radius. Fix: background-clip: padding-box on base .fbtn + converted all 13 variant background: shorthands to background-color: (shorthand was resetting the clip back to border-box). Kept the hard inset 0 -2px 0 depth as designed (not blurred). Verified by decoding hover screenshot corner+bottom pixels: clean 2px dark inset band at bottom, single AA pixel at corner, no ring. Earlier wrong attempts: removed the shadow entirely, then blurred it, both wrong, Ishai wanted the hard shadow minus the ring.
  • FButton secondary hover inset: color changed to cream-300 (match the border, was --line), then reduced from 2px to 1px since secondary already has a visible 1px border (2px read as 3px total). Primary stays 2px (no border). Verified icon stroke-width already 1.5px on all 44 FButton icons+chevrons in the DS-site (FButton passes strokeWidth={1.5}); no change needed there. If thicker strokes appear, it's the product's separate Button component, not FButton.
  • FButton icon stroke fixed properly. Two findings: (1) a CSS rule .fbtn svg path,circle,...{stroke-width} overrides the lucide strokeWidth prop, so changing the TSX prop did nothing, the CSS rule is the real control. (2) lucide viewBox is 24 but icons render at 16px, so stroke-width scales x0.667; a raw 1.5 rendered ~1px (too thin). Set the CSS rule to 2.25 so effective visual = 1.5px (the Figma value): 2.25 x 16/24 = 1.5. Verified Plus + funnel both compute effective 1.5px. The Plus looked thinner than the funnel only because straight pixel-aligned lines read lighter than diagonal/closed shapes at the same stroke, optical not code.
  • FButton regular primary icon color changed cream-300 -> cream-50 (match text), per Ishai. Reverses the earlier "icon dimmer than text in regular" decision for primary regular; icon + chev now equal the cream-50 text. Verified computed icon color === text color.
  • Built DS-site Color page (cosmo-ds-site, ColorPage.tsx + nav route #Color + CSS). Shows 10 scales / 40 swatches: chip + token name + live-resolved sRGB hex + raw declared value when different. Reads tokens live (probe element) so it reflects real tokens.css and distinguishes token-vs-component mismatch. Surfaced: orange is the only hex-declared scale (rest oklch); orange-400 #dc6821 / 500 #cf3f00 / 600 #b43600 resolve exactly. tsc clean.
  • FButton hover raise reduced 2px -> 1px (primary + secondary .fbtn-inner), per Ishai (he'd designed 1px). Verified matrix -1.
  • Color page expanded to the FULL token universe (was missing the tag color families). Added: Tag colors palette (13 --tagc--text: gray/green/red/eggyolk/blue/purple/darkblue/pink/aquamarine/lightblue/yellow/orange/peach), Tag color tints (-50/-100), Tag tones semantic (--tag--bg/border/text, 8 tones). 13 sections total. tagc tokens live in tokens.css (60 of them), not components.css. tsc clean.
  • Color page reworked to base-only, grouped by color type (Ishai: drop semantic/alias/usage duplicates, just the raw scales). Sections: Orange, Cream, Ink, Green, Amber, Red, Extended hues (13 --tagc base colors). Removed accent/surfaces/lines/tag-tone/tint sections + dead TAG_COLORS/TAG_TONES consts. 40 swatches, tsc clean, verified live render.
  • Hid difficulty/effort editing in production (PlyDetailDrawer) per Ishai (push now). Set canEditDifficulty=false: SET difficulty renders read-only tag (no dropdown chevron, not clickable), UNSET suppresses the editable "Effort" empty state. Removed now-unused useAuth import. Branch fix/hide-difficulty-editing off main, tsc+build clean, pushed, PR #264. DifficultyDropdown + useSetDifficulty wiring left intact for one-line re-enable.
  • Palette refactor (cosmo-ds-site worktree, subagent): unified all color tokens to Figma base palette (node 14:889), --- naming (yellow/egg-yolk/orange/red/pink/purple/dark-blue/blue/light-blue/aquamarine/green/cream/ink/white), 50/100 alpha hex + 200/400 solid. Retired --tagc-*, --amber-*, peach. Repointed --tag--* + accent + 60 amber consumers + badge/tag tones. Light+dark+wireframe. Rebuilt Color page. tsc clean both packages, grep-clean of old tokens. NOT committed (worktree, awaiting Ishai visual review).
  • Palette migration strategy decided (Ishai): parallel-then-shift, NOT big-bang. Discovered production main still has OLD oklch colors (orange-500=oklch, not #cf3f00); refreshed hexes never merged. New palette ships under --color-- prefix in parallel to legacy --orange/--red/--amber/--tagc/--chip, migrate surface-by-surface, retire legacy last.
  • PR #265 (feat/palette-base-tokens, off main): additive --color-* base palette (61 tokens, Figma node 14:889) in :root only. Zero existing token changed, zero consumer touched, zero visual change. Build clean. Foundation PR. Scrapped the subagent's big-bang tokens.css in favor of this additive approach. Per-surface migration PRs + final retire-PR to follow.
  • Tag component aligned to new --color-* palette (worktree, for review at :5175/#Tag). Reset worktree's prod-shared files (tokens/components/tag/badge) to origin/main first (dropped the scrapped big-bang contamination), confirmed #265 merged to prod main (--color-* present). Then: .sds-tag font 10->12px, icon+chevron stroke-width 1->1.2; repointed all 13 --tag--* aliases to --color-* (neutral->ink, positive->green, negative->red, midd->egg-yolk, active->blue, violet->purple, purple->dark-blue, magenta->pink, aquamarine, lightblue->light-blue, yellow, orange; peach temporarily->orange, no peach hue in new palette, flagged); made tag.tsx uniform (zero --tagc- refs). Verified: font 12px, stroke 1.2px, tag-positive-text=#00853f=color-green-400. tsc clean. NOT committed, awaiting Ishai review then Tag PR into prod.
  • Tag icon stroke fix (viewBox-scale trap, same as FButton): raw 1.2 rendered only 0.7px visual (24 viewBox scaled to 14px icon / 13px chevron). Compensated to definite VISUAL 1.2px: icon stroke-width 2.06 (1.2 / (14/24)), chevron 2.22 (1.2 / (13/24)). Verified effective 1.202px / 1.203px. Font already 12px.
  • Tag dark mode fixed (broke when tones moved to theme-independent --color-* palette: dark-green-400 text on dark bg = unreadable, light tints washed out). Added [data-theme="dark"] --tag--* override block replicating the proven old tagc dark model: bg/border = saturated --color--400 at 22%/45% via color-mix to transparent, text = light --color--200 tint. All 13 tones. Verified dark positive text=rgb(130,239,170) light green, bg=22% alpha. Light mode unchanged.
  • Partner Request icon: parked. User's Figma megaphone (filled, bell-right, handle loop) differs from lucide Megaphone (thin tilted outline). lucide has no match; needs custom SVG from Figma. Deferred.
  • Locked DS single-source-of-truth workflow (Ishai): DS lives in cosmo-prod/packages/front; product (:5174) + DS website both consume the SAME files (DS-site via @front alias, proven: imports @front/components/ui/tag = product's real Tag, no copy). Edit once, both update, never diverge. Test local first, push after. Rule: .claude/rules/design-system-source-of-truth.md + memory. Root cause of session's FButton wipe + divergence = editing the worktree's copy of front/src instead of cosmo-prod; banned going forward.
  • Applied Tag palette migration + difficulty-hide directly in cosmo-prod (branch feat/tag-palette-migration, what :5174 serves), per the new workflow: tag.tsx uniform (--tag- for all 13 tones), tokens.css light tag aliases -> --color-*, dark [data-theme=dark] tag block (color-mix 22/45% + -200 text), components.css .sds-tag 12px + icon stroke 2.06/chev 2.22 (visual 1.2px). canEditDifficulty=false already present. tsc clean, :5174 = 200.
  • Backend was hung on dead DB connections (VPN had dropped: psycopg2 timeout to sett-db RDS) -> :5174 stuck on skeleton. Ishai reconnected VPN; restarted uvicorn, /docs=200, board=422 (healthy), DB reachable. Not a code issue.
  • Pushed Tag palette-migration PR #266 (feat/tag-palette-migration) after Ishai verified tags live at :5174. 3 files (tag.tsx uniform tones, tokens.css light+dark --tag->--color- aliases, components.css .sds-tag 12px + stroke 2.06/2.22). No API break, legacy --tagc- left intact (parallel). First component migrated onto --color-*.
  • Consolidated to main. All 4 PRs merged to main (game-name #263, difficulty-hide #264, palette #265, tag-migration #266) , Ishai merged them on GitHub. Switched local :5174 off the stale feat/weekly-text-display branch onto main + pulled, so local now shows everything together (game names title-cased was missing only because local was on the pre-split branch). Pruned 4 dead merged branches. Locked "always converge to main / local works from main" rule in cosmo-v2-frontend.md.
  • Ported FButton into cosmo-prod (branch feat/fbutton-component off main), per single-source rule (was worktree-only). fbutton.tsx copied; .fbtn CSS appended to components.css with light-mode tokens remapped to --color-* (orange-400/accent/cream/ink/green -> --color-*; dark [data-theme=dark] rules already --color-*, kept). Showcase "Button (F)" section + nav entry added to DesignSystemPage.tsx. Verified live :5174/design-system#fbutton: 12 buttons, primary bg #dc6821 (=--color-orange-400 Figma hex), text cream-50. tsc + build clean. Not committed yet (awaiting Ishai review). Next: PR component, then wire into TopBar action bar LOCALLY (no PR) to try.
  • Pushed FButton component PR #267 (feat/fbutton-component): fbutton.tsx + .fbtn CSS (light on --color-*, dark per Figma) + "Button (F)" showcase. Additive, no consumer yet, zero visual change to existing screens. Build clean. Next (after merge): sync local to main, wire FButton into TopBar action bar LOCALLY to try (no PR).
  • FButton hover raise fixed 2px->1px (the 1px tweak from earlier never made it into the merged component; rebuild used 2px). Isolated to its own PR #268 (fix/fbutton-hover-raise-1px) off main, components.css only, all variants light+dark. The action-bar experiment (TeamPicker trigger -> FButton) stays local on try/fbutton-in-action-bar; verified click opens the dropdown (Radix popover wiring intact, FButton dropdown prop is visual-only). Both visible locally at :5174.
  • Action-bar experiment (local, try/fbutton-in-action-bar): header height -> 83px (--topbar-h). Converted all 5 TopBar end-cluster triggers to FButton: GameFilter + FiltersPicker (via shared MultiSelect trigger, only 2 consumers) + ViewOptionsPicker = subtle icon-only; WeekSelector + TeamPicker = secondary labeled w/ dropdown. WeekSelector rebuilt as FButton dropdown (This Week first / Last / Next, relative label on button, date range inside menu, checkmark on active, onSelectWeek->setCurrentWeekStart; dropped prev/next arrows). All dropdowns open via Radix popover (FButton dropdown prop = visual only). tsc clean, removed dead Button imports + 3 dead week-nav funcs. NOT pushed.
  • Action bar PR #269 (feat/action-bar-fbuttons): all 5 TopBar triggers -> FButton (3 subtle icon-only: game/filter/view-options; 2 secondary: WeekSelector + TeamPicker), header 83px, WeekSelector rebuilt as This/Last/Next FButton dropdown. Excluded the redundant components.css 1px-raise (already on main via #268) by rebranching off fresh main + restoring only the 7 action-bar files. tsc+build clean. Deleted the try/fbutton-in-action-bar experiment branch (content in PR).
  • Menu polish PR #270 (feat/menu-white-bg-cleanup, follow-up to merged #269): all popover menus -> --color-white #fefcf9 (.popover-menu + MultiSelect filter menus; MultiSelect Command set bg-transparent so inner inherits white instead of cream --bg-popover). TeamPicker: removed divider + "Teams" title. GameFilter+FiltersPicker: red presence dot repinned to icon-button top-right corner (5px/5px, 7px, white ring) instead of floating off-side (broke when trigger became icon-only FButton). tsc+build clean. #269 (action bar) confirmed merged to main; deleted that branch, back on main.
  • Palette refresh PR #271 (feat/palette-refresh-v2): updated ALL --color-* to current Figma node 14:889 (hues re-tuned brighter since initial import) + added new bordo hue. green-400 #00853f->#0dab4b, blue #3a66da->#4b86fa, orange-500 #cf3f00->#e12d00, ink-400 ->#8c8781, cream-50 ->#fef8f1, etc. Cascade: Tag/FButton pick up new values automatically (verified tag-positive-text=#0dab4b live). Foundation for StatsBar tag work. Legacy COLOR_FAMILIES showcase (old oklch tokens) left untouched (out of scope).
  • StatsBar plan (from Figma 39:4998 + select-states 39:5863, via subagent): step1=palette refresh (#271 done). Remaining: (2) add Tag selected/unselected states = /50<->/100 swap, unselected=border-only no bg, text stays /400, no hover/ring/flip; (3) StatsBar pills->Tag (Not started=neutral/ink, In Progress=blue refresh-cw, Complete=green circle-check-big, TL=purple hourglass, PG=dark-blue hourglass, R=egg-yolk, V=green; rounded-full pills px7, R/V rounded-4 px5 no icon) + remove 2 dividers; (4) responsiveness (label truncate -> count-only -> wrap). Polish tag deferred (TL+PG only for now).
wed · 2026-06-03
# 2026-06-03

Done

Cosmo
  • Started DS-in-production workflow. Synced cosmo-prod local main to edc06cc (was 88 commits behind). Locked workflow: per-component branch off fresh main + PR per change for Leor.
  • Audited current DS (packages/front/): 23 primitives, 2-pattern hybrid (A CSS-class / B cva+Tailwind), only 6/23 showcased, ~19 files drift from Gali's syntax standards (React-namespace import + function keyword), flat tokens.css.
  • Researched + wrote vault/11-Subjects/SUB-019-sett-design-system-spec.md , "Sett Design" DS website + component library spec modeled on atlassian.design (4-tab pages, top-bar IA, 3-state maturity), Base-UI-v1-go-forward build stack for a 1-2 dev team, 3-tier token model (no Style Dictionary), phased roadmap 0-7. Memory pointer saved.
  • Investigated public hosting of /design-system: it's auth-gated (Cognito via AuthProvider in main.tsx:13), already deploys to staging/prod via deploy-front.yml but bounces public visitors to login. Decided: standalone static site, Sett AWS, inside cosmo-prod as packages/design-system-site/.
  • Built packages/design-system-site/ LOCALLY as proof (NOT committed/deployed, Leor not looped). Shares front's DS source via @front alias to ../front/src (zero drift), no auth/backend, Google Fonts for Barlow/Red Hat Text/Rubik, build clean (0 TS errors), dev at localhost:5175, Pattern B components render styled.
  • Got the local Cosmo V2 backend running against staging data (21:00-21:40 IDT). Frontend already on :5174; backend was down + venv empty. Root blocker was private dep sett-infra>=0.6.150 (not on PyPI, lives in AWS CodeArtifact). Used BALAC's onboarding links (Confluence pageId 348913669 + sett-onboard.txt) to extract hardcoded AWS values. Set up ~/.aws/config (SSO profile main); discovered Ishai's only AWS role is aws-others (NOT developers/product , those denied), account 664134625559. aws sso login succeeded after role fix. Refreshed CodeArtifact token into backend .venv/pip.conf, pip install -r requirements.txt then pulled sett-infra clean. Wrote cosmo-prod/packages/backend/.env (SETT_ENV=local + staging DB creds, gitignored). SETT_ENV=local auto-maps to sett_db_staging schema + mock-user auth bypass. uvicorn up on :8000, /docs=200, Application startup complete, connected to sett_db_staging. Verified data endpoints reachable (422 on missing query param = healthy).
  • Wrote .claude/rules/cosmo-local-backend.md (full reproducible setup: AWS SSO config, CodeArtifact dance, .env, daily-restart vs full-refresh commands, health checks; DB password kept OUT of tracked file). Added topic-index pointer + session-boot step 7 to CLAUDE.md.

Decisions / rules

  • Always log to the activity log; never ask first (21:41 IDT). Ishai: "log everything, always. You don't have to ask me." Locked as standing rule in CLAUDE.md , append to the day's log after any meaningful change without prompting.
  • Auto-start local Cosmo backend on relevant sessions. When a session is about Cosmo V2 / the product / running it locally, orchestrator silently checks :8000; if down, starts it (no AWS needed unless deps must reinstall); if up, leaves it alone. Not run for vault/design/Apollo sessions. Rule in .claude/rules/cosmo-local-backend.md + CLAUDE.md boot step 7.
  • Ishai's AWS access = role aws-others, account 664134625559 only. SSO start https://d-99675dba7f.awsapps.com/start, region eu-central-1. SSO session ~12h; only needed to (re)install Python deps, not to keep the running backend serving data.
  • Sett Design website effort ON HOLD (13:10 IDT). Pivot to working on the components themselves against the /design-system route (needs no DB / local Cosmo backend, which Ishai currently lacks access to in a parallel session). Standalone-site scaffold parked, ready to resume on Ishai's say-so.
  • Net-new strategic decision logged for Gali sign-off: Radix as legacy / Base UI v1 as go-forward primitive layer (she co-owns frontend-development-standards.md which hard-codes Radix).

Deferred

  • Public DS hosting: commit + PR of the standalone package, AWS wiring (deploy-ds-site.yml + public S3/CloudFront, Leor's territory). Resume when website track un-holds.
tue · 2026-06-02
# 2026-06-02

Done

Cosmo
  • Scanned #cosmo-support + #cosmo-bug-reports (May 7 to Jun 2) for UX insights. Wrote vault/11-Subjects/SUB-015-cosmo-support-ux-insights.md. 11 insights; top themes: Apollo-Cosmo sync gaps, data-trust on counts/statuses, silent board mutation, cryptic errors, meaningless labels (Last Mile / Unfillable).
Personal / concepts
  • Brother conversation on "agentic to-do / command center" (3 voice files, ~83 min). ChatGPT transcript came back with unrecoverable Hebrew mojibake; re-transcribed locally via whisper.cpp (large-v3-turbo, -l he) — clean. Raw audio + per-file txt/srt + full Hebrew transcript stored in vault/11-Subjects/raw-audio/2026-06-02-brother-agentic-todo/. Wrote subject summary SUB-016-agentic-todo-command-center.md and a clean shareable write-up SHARE-agentic-todo-writeup.md (for the brother). Key concepts: data-bank-as-single-source-of-truth, the Scope model (dynamic relevance-based lens, not folders), primary/secondary/focus + motivator bank, project lifecycle + JTBD, goals triad, concept/feature-flag engine, Figma indexing gap.
  • Built a single-file visual explainer of the command-center concept: vault/11-Subjects/raw-audio/2026-06-02-brother-agentic-todo/command-center-explainer.html (12 sections, diagram-heavy, ADHD-friendly + presentable). Served locally on :8799.
  • Connected the concept to Studio: wrote vault/08-Design-specs/studio/_handoff-command-center-concept.md (concept→Studio-section mapping table) + pointer in studio-spec.md. The command-center conversation IS Studio's conceptual backbone (same architecture: vault = single source of truth, Studio = view/control layer). Biggest unclaimed idea for Studio: the Scope relevance-lens primitive. Decision flagged: markdown-as-DB (Ishai) vs Linear/existing-API (Aviran) — Studio already sits on Ishai's side, worth declining the API option consciously.
  • Follow-up: Ishai also ran files 1-2 through ivrit.ai (diarized PDFs). Stored both PDFs in the data bank. ivrit.ai's 0/1 speaker labels are unreliable (flip between files), so attributed by content: Ishai = vision/designer/PM with the running vault+librarian; brother = eng/data/management lens. Folded ivrit.ai corrections into both docs: "Claude OS" term, "view not folders" reframe, and a new backbone + augmentation layers + Certified/slop + shared-vs-private DB section. File 03 (60 min) not in ivrit.ai — whisper remains its only source.

Deferred

Decisions / rules

sun · 2026-05-31
# 2026-05-31 (Sun)

Done

Studio site
  • c162459 — recovered lost cosmetic-surgery work from session transcripts (Ishai Revach, 2026-05-30). Replayed 247 Edit/Write events from ~10 Claude sessions (2026-05-16 to 2026-05-17) in timestamp order. 19 files changed, 2047 insertions. See Product changes section below.
---
Daily ingest (09:48)
Window: 2026-05-30 09:46 -> 2026-05-31 09:46 Asia/Jerusalem Sources scanned:
  • Notion: 2 meeting notes retrieved (2026-05-25 + 2026-05-26); keyword search returned 0 additional pages
  • Slack: 6 searches across public + private + DM space; ~35 messages with project signal across #cosmo-support, #cosmo-bug-reports, #playables-ops-status-update, #einat-and-yonis-agent, #structured-ideation
  • Gmail: 3 threads reviewed, 1 project-relevant (GitHub PR #35 Qodo bot comment); 1 Figma receipt skipped (financial); 1 Cline newsletter skipped (noise)
  • Calendar: 1 event in extended window (2026-05-28 "Cosmos & Cosmo" team meeting, 15:00-15:30 IDT)
  • Atlassian (Confluence + Jira): unavailable this run (cloud connector access error "not explicitly granted by user")
  • Git: 1 commit in window (c162459, Studio site recovery, 2026-05-30)
  • Merged PRs: not scanned (Atlassian unavailable; GitHub search deferred)
--- Decisions (2):
  • Cosmo V2 / revision-age display. Lior Finkelman clarified in #cosmo-support (2026-05-30) that two separate age values exist: (1) R1 age = how long ago the revision request was created; (2) Status Age at the top = how long the quota has been in its current status. These are intentionally different fields, not a bug. Sergey asked, Lior confirmed. See vault/08-Design-specs/manage-quotas-modal.md — "Recent decisions" updated below.
> Source: slack:#cosmo-support on 2026-05-31
  • Studio site cosmetic surgery. Committed as recoverable, canonical state in sites/studio/. Geist typography sitewide, edge-to-edge divider removal, dark/light theme toggle (replaced 5-swatch picker), Figma logo in sidebar, removed section-number markers, homepage gallery-cards section first, milestone cards. Root cause of prior loss: edits sat uncommitted in working tree. Fix: commit after each session.
> Source: git:c162459 on 2026-05-30 --- New tasks (2):
  • Re-authenticate Atlassian MCP connector (claude.ai connector not granted access this run). Manual step: re-auth via claude.ai integrations settings. Add to AB as housekeeping. -> vault/00-Action-Items.md (Design Tasks)
> Source: atlassian-mcp-error on 2026-05-31
  • Game onboarding UX is a pain point (Elad + PG in Notion 2026-05-25 meeting: "headache in onboarding a new game, it's triggered from Monday/CRM but the flow needs UX review"). Flag for M2 scope discussion. -> vault/00-Action-Items.md (Open Design Questions)
> Source: notion:36b8755ea8a180f9b232fdbb09109283 on 2026-05-25 --- Status changes (2):
  • Build pipeline freeze (Cosmo production). 7 orchestrations entered build/in_progress within a 13-minute window (2026-05-29 18:22-18:35 UTC) and never cleared, now 27h+. Games: clash-royale (orches 4858, 4666, 4662) + bestplay (5683, 5682, 5672, 5676) + jewelscape (5816, added next day). Apollo-agent assessed: Apollo tasks succeeded; block is on Cosmo's state machine missing build-completion callbacks. Monday ticket created (Critical, Ready for Dev). Escalated in #cosmo-support by Yoni's Agent. Status as of 2026-05-30 21:17 UTC: still frozen.
> Source: slack:#cosmo-support + #cosmo-bug-reports on 2026-05-30 > FYI only — ops/backend issue, no UX action required. Logged for context.
  • Apollo agent image-vision ticket created. Apollo-agent created Monday ticket "Hook up Apollo Agent with Slack attachment / image-vision support" (item 2952205529, Sprint 2026_Q1_C1_S14, Epic: apollo, Priority: Medium, Status: Ready 2 Start). Yuval approved.
> Source: slack:#cosmo-support on 2026-05-29 > FYI only. --- Meeting notes (2 reviewed): 1. Elad / Ishai 1:1 — PG Operational page prototype review (2026-05-25)
  • Notion: https://www.notion.so/36b8755ea8a180f9b232fdbb09109283
  • Attendees: Ishai + Elad Werber (1:1, confirmed from page parent "elad / Ishai")
  • Key signal extracted:
- Ishai demonstrated new playables interface (the Workshop v1 / PG Operational prototype) to Elad - Revision tracking (R1, R2, R3) with actions at start of label — Elad positive - Horizontal scrolling for smaller screens noted - Custom tags (high priority, custom request) visible on hover — Elad engaged - Views system: Launchpad, Pending PG, custom groupings — Elad asked Ishai to define Top 5 criteria - Top 5 feature discussion: Elad's ranking priorities by status: Revisions = time most critical (some sit 25+ days), Pending Customer = time + "tick tock" cadence urgency, Ready to Send = less time-driven, more tier/priority/custom-request - Save views / save filters: deferred (Elad agreed too complex for MVP) - History + Feedback panel: Elad loved consolidated timeline from idea creation through builds/reviews - Atlas vs Cosmo IDS split: Ishai proposed two models — (a) leave IDS in Atlas, Cosmo gets ideas automatically; (b) bring IDS into Cosmo. Elad leaned toward workspace-per-game view to reduce multi-tab switching. No decision locked. - Game onboarding: flagged as pain point (new games arrive from Monday/CRM trigger, flow needs review) - Yuval Balak confirmed as Cosmo platform owner - Action items from note: send link to new interface when ready; define Top 5 criteria per status; add save views (future); add reference/attachment linking to ideas in Atlas; review game onboarding UX
  • Filed as meeting note: vault/06-Meeting-notes/2026-05-25-elad-pg-operational-prototype-review.md (written below)
> Source: notion:36b8755ea8a180f9b232fdbb09109283 on 2026-05-25 2. "Cosmos & Cosmo" team session (2026-05-26)
  • Notion: https://www.notion.so/36c8755ea8a18028b32acd625a934764
  • Attendees: Sergey Bukhman, Mykyta Assieiev, Marija Tatar, Ishai Revach, Einat Harmelin (organizer), Daria Yakusheva, Volo Storozhuk, Aleksa Bogdanovich, Gal Vitner (optional), Yuval Balak — confirmed via Calendar event 2026-05-28 (same recurring session, 15:00-15:30 IDT). Tatiana Iudina declined.
  • Calendar description: "why are we using old cosmo? how we need to work with revisions? what are we missing in new cosmos?"
  • Key signal from Notion transcript (machine-translated, quality varies):
- Backlog not filtered by team lead / team selection — open question whether this is old Cosmo lag or a V2 bug needing fix. Ishai's position: not a pressure issue even if there's legacy behavior from old system. - Detached tasks discussion: clarification on how detached tasks should be handled vs active ideas in quota allocation flow - "Delete is actually an archive" — clarified to the group - Rollover + Sunday behavior raised as known items - PG pages and filters deferred to end of meeting - MVP goal stated: complete by end of the week (i.e., by 2026-05-29) - Figma updated version mentioned (Ishai said he has a "better version") - Tips received from Elad Werber and Yuval on design improvements (validates this was the 2026-05-25 1:1 readout context) - Game-team-auditor relationship: data may not align with assumptions; "current system has complexities" - Action items: send follow-up email; aim to complete MVP by end of week; review and address bug from end of week; share work for review
  • Filed as meeting note: vault/06-Meeting-notes/2026-05-26-cosmos-cosmo-team-session.md (written below)
> Source: notion:36c8755ea8a18028b32acd625a934764 on 2026-05-26 --- FYI / context-only (4):
  • Weekly playables ops (week of 2026-05-25 to 2026-05-29): Volo posted in #playables-ops-status-update. Auditors: 33 FT + 1 PT + 5 TLs. Week totals: Mon 96 (32 new / 64 rev), Tue 67 (42/25), Wed 35 (18/17), Thu 43 (34/9), Fri 61 (52/11). No UX action. Context only.
> Source: slack:#playables-ops-status-update on 2026-05-29
  • GitHub PR #35 (Daily ingest 2026-05-29) — Qodo bot paused. Qodo code review bot left a comment on sett-backend/sett-ux#35 saying reviews are paused (user needs a paid seat + linked Git account). No blocking issue for vault work. FYI.
> Source: gmail:thread 19e7526319adc8e7 on 2026-05-29
  • Heroes vs Hordes V2 briefs report posted by Yoni's Agent in #structured-ideation (2026-05-30). S3 presigned link. Ops/production signal, no UX action.
> Source: slack:#structured-ideation on 2026-05-30
  • Setto / injection issue in #cosmo-support (2026-05-31 morning): Matan asked about ANTHROPIC_API_KEY and "something breaking the injection process," tagged Peter Hutsul + Shay Zilberman. Backend ops issue, no UX action.
> Source: slack:#cosmo-support on 2026-05-31 --- Refused (1):
  • Gmail: Figma receipt from Stripe (invoice+statements+acct...@stripe.com) — skipped: financial figure. [REDACTED - sensitive, review manually]
--- Unrouted (1):
  • Atlassian (Confluence + Jira): source unavailable this run — connector access not granted. Re-auth needed. Last known Confluence activity: Quota Manager spec page 765296641 (rev 2, 2026-05-13). Check manually for any UX-space page updates since 2026-05-20.
--- Product changes (1 commit, Studio surface):
  • Studio site. c162459 (Ishai Revach, 2026-05-30, 19 files, +2047/-280). Recovered lost cosmetic-surgery session work: Geist typography sitewide; edge-to-edge divider removal; dark/light theme toggle replacing 5-swatch picker + search bar removal; Figma logo + nav redesign in sidebar; paper background; removed section-number markers; homepage gallery-cards section moved first after KPI, milestone cards added; deduped double escapeRegex/daysBetween/loadActiveGalleryItems block in vault.ts; fixed duplicate gallery grid above title on homepage. Root cause of original loss: edits were uncommitted in working tree and silently overwritten. Fix: commit after every session.
--- Comms gaps: comms-gap: stakeholder map present, pass attempted. Primary-tier stakeholders per personal/stakeholder-comms.md:
  • Lior Finkelman: active in #cosmo-support (2026-05-30, revision-age clarification to Sergey). No direct Ishai DM found in window. Last ingest flagged him as active on Quota Manager. Status: in-flight, no action needed.
  • Yuval Balak: active in #cosmo-support (2026-05-29, approved Apollo image-vision ticket). No Ishai DM in window.
  • Sergey Bukhman: active (revision-age question in #cosmo-support 2026-05-30; attended Cosmos & Cosmo meeting 2026-05-28). No Ishai DM in window.
  • Harel Pick: no signal in window. Last flagged OVERDUE (8+ days, weekly cadence) in 2026-05-20 ingest. Now 11+ days. Still flagged. Run /comms Harel.
  • Tatiana Iudina: declined the 2026-05-28 Cosmos & Cosmo meeting. No other signal. Last flagged OVERDUE in 2026-05-20 ingest. Run /comms Tatiana.
  • Gali Pruzansky: no signal in window. Last flagged DUE in 2026-05-20 ingest. Now 11 days since that flag. Run /comms Gali.
Comms gaps (3):
  • Harel Pick: OVERDUE (11+ days, weekly cadence). Suggested send window: today (Sunday). Run /comms Harel.
  • Tatiana Iudina: OVERDUE (11+ days, weekly cadence). Declined last team meeting. Run /comms Tatiana.
  • Gali Pruzansky: DUE (11 days since last flag, 2-3x/week cadence). Run /comms Gali.
---

Decisions / rules

  • Cosmo V2 / Manage Quotas. Revision-age (R1 label) and Status Age (header) are intentionally two different values, not a bug. Lior Finkelman confirmed to Sergey in #cosmo-support 2026-05-30. See vault/08-Design-specs/manage-quotas-modal.md.
  • Studio site. After any cosmetic-surgery session, commit before ending. Uncommitted working-tree edits can be silently overwritten. Rule applies to all sites/studio/ work.
mon · 2026-05-25
# 2026-05-25 (Mon)

Done

Cosmo (DS - chip CSS promoted to components.css)
  • Moved all 13 .applied-filters-chip* CSS rule blocks verbatim from screens/components/topbar.css into design-system/components.css (new labeled section at bottom). Tombstone comment left in topbar.css. Cache-busters bumped to ?v=2026-05-25-chip-promoted on design-system/index.html, cosmo-lab/weekly-v1.html, cosmo-lab/pg-v1.html, cosmo-lab/settings-v1.html. Chip now styled in DS showcase without topbar.css dependency. Backups: design-system/versions/components-2026-05-25-pre-chip-promote.css, screens/components/versions/topbar-2026-05-25-pre-chip-promote.css.
Cosmo (DS - topbar button migration to .fbtn)
  • Migrated all topbar buttons in cosmo-lab/weekly-v1.html (3 icon + 2 pill) and cosmo-lab/pg-v1.html (5 icon + 3 pill) to canonical DS .fbtn family. Icon buttons: .fbtn.fbtn--subtle.fbtn--icon-only. Pill buttons: .fbtn.fbtn--secondary with .fbtn-chev. Dot indicator .topbar-icon-btn-dot renamed .fbtn-dot and promoted to design-system/components.css under .fbtn--icon-only.is-active. Legacy .topbar-icon-btn, .topbar-icon-btn-dot, .topbar-pill-btn rule blocks deleted from screens/components/topbar.css (tombstone comments left). Cache-busters bumped. CHANGELOG updated. Backups in cosmo-lab/versions/ and screens/components/versions/.
Cosmo (DS - Applied Filters chip extraction)
  • Extracted Applied Filters chip from inline markup in 4 consumers into shared component cosmo-design/screens/components/applied-filters-chip.js. API: mountAppliedFiltersChip(containerSel, { getCount, getRemovables, onClearAll }) returns { update, destroy }. Revert icon swapped from rotate-ccw to x. Consumers: cosmo-lab/weekly-v1.html, cosmo-lab/pg-v1.html, clean-lab/weekly.html, clean-lab/deliver.html. DS showcase entry added to design-system/index.html with 0/1/3 filter demos. Removed: _buildSelectedFiltersConfig, _selectedFiltersCtrl, _mountPgAppliedFiltersChip from all pages. CHANGELOG updated.
Cosmo (continued)
  • Ingested Elad Werber / Ishai meeting (2026-05-25 11:45 IDT). Meeting note file: vault/06-Meeting-notes/2026-05-25-elad-werber-ishai-pg-walkthrough.md. Key findings: (1) "Ready to Send" canonical definition confirmed (passed PG review, built clean). (2) Revision time-in-process is killer signal (25+ days). (3) Top 5 per-status criteria vary by status (Ready to Send, Pending Customer, Revisions each need distinct logic). (4) Save filters + save views are real needs (planned future). (5) Game onboarding pain point identified as NP-5 (NEW), unreviewed UX flow from Monday/CRM trigger to Cosmo allocation. Added to SUB-012 enrichment section + Problem catalogue as P69 (Medium severity).
  • Ingested Yuval Arbel braindump (2026-05-25 ~13:16 IDT, no Notion recording). Meeting note file: vault/06-Meeting-notes/2026-05-25-yuval-arbel-pg-feedback-braindump.md. Key findings: (1) Launchpad has zero value to PGs (2-source pattern with Elad). (2) Ready to Send is primary work area (reconfirms). (3) Side-by-side preview pattern: playable + artifacts + concept in one screen, history/feedback secondary. (4) Ideation should stay in Cosmo, redesigned around per-game counts, bulk-request, inline editing. (5) CONTRADICTION FLAGGED: Elad says move ideation to Atlas, Yuval Arbel says keep in Cosmo. Needs reconciliation. Added to SUB-012 enrichment section + Action Items for design-team sync.
Cosmo
  • Applied Omer Barzel meeting findings (2026-05-24) to vault/08-Design-specs/playable-lifecycle-pg-share-draft.md: rev 2. Status flow now canonical (Waiting for Your Review → approve → Build → Ready to Send → send → Pending Customer → Completed). Stage 5 explicit Waiting-for-Your-Review status (does not exist in Cosmo today, only Apollo). Stage 6 Build placement moved (between approval + Ready to Send, 5 min to 2 hr). Stage 7 lane names corrected to PG Deliver vocabulary. SLA semantics added (timer starts at request entry, not work start). Dispatch view Top-5 vs Show-All raised. Atlas → Apollo reference flow gap added. Morph table Status row updated.
  • Published Confluence page: "Playable Lifecycle , end-to-end (review draft rev 2)" to UX space (id 791511125). URL: https://sett-ai.atlassian.net/wiki/spaces/UX/pages/791511125. Per Ishai explicit "publish to Confluence" trigger. Curated, Ishai-authored doc. Parent auto-attached to UX space root.
  • Published Confluence page: "PG Jobs to be Done (review draft)" to UX space (id 792100865). URL: https://sett-ai.atlassian.net/wiki/spaces/UX/pages/792100865. Curated PG-facing version of vault/11-Subjects/SUB-012-pg-jtbd-draft.md. Stripped P-numbers, status_key meta, source list. 27 JTBDs + 4 new pain points + coverage scorecard + 5 review prompts at end.
  • Archived cosmo-lab/workshop-v1.html to _archive/. Removed live references from lab-shell (already clean), settings-v1 (nav item lines 2513-2516), panel-milestones.js (prompt example), milestones-_.json (M1 pages array), nav-panel.css (comment), nav-panel.js (usage example), mock-loader.js (consumer comment).
  • DS website section header unification. All 19 component/pattern sections in cosmo-design/design-system/index.html + 4 sections in foundations.html migrated to a single unified header pattern: Row 1 = eyebrow (left) + Design/Code toggle (right) in .section-head flex row; Row 2 = title; Row 3 = single plain-English description (no Figma node, source path, or class dump in chrome). Body = Design pane (visual showcase) and Code pane (flat class-ref table + HTML snippet + .ds-code-meta for Figma/source + optional variant matrix). Toggle added only to sections with code content (foundations swatches/scales = chrome-only, no toggle). 5 variants found in survey collapsed to 1. Eyebrows renumbered: Variant A took Components · 01-06 (fbtn, ftoggle, fgrid, fnav, fstatus, ftag); inputs renumbered 03→07, icons renumbered 07→08; Patterns numbering preserved with gaps; menu added as Patterns · 26. CSS scaffolding in components.css (.section-head, .ds-code-snippet, .ds-code-meta, .ds-variant-matrix, .comp-tab-pane[data-tab="code"] .ds-class-ref flatten rules). JS toggle handler extended to resolve data-scope="X" to getElementById("X-tabs") with fallback to legacy closest('.comp-tab-section'). Inline duplicate of .section-head CSS (introduced during Variant A migration) removed from index.html