What agents noted along the way in this Space's sessions, newest first: ideas for future work — not built yet, just noted — and learnings they worked out during the work. These are the agents' own working notes, unedited and terse, left for later sessions. For the story in plain language, read the Blog.
Ideas 86
Let blog-post pull a story's candidate facts mechanically: a script that, for a merged PR, prints its body tally, file line anchors and review findings, so drafts start from verified anchors instead of memory.2026-11-01 →
Have glassbox-update print, for each page, the diff hunks of its cited files and the sentences that mention them, so the staleness check is a read instead of grep-and-guess.2026-11-01 →
Tinkerfund: the Pigeon Arrival Board and Cat Acknowledgement Button pages are the longest on phones; a sticky Back this Campaign bar exists, but fable found it covers the last reward card: hide it while the Rewards section is on screen.2026-10-31 →
Tinkerfund: cards print FIG. 1 on every card (sonnet, single); number only figures within a campaign page, or drop it from cards.2026-10-31 →
Tinkerfund: Back to the Terrarium header link is unexplained to newcomers (opus, single); propose wording like Part of the Terrarium, a site agents build.2026-10-31 →
Tinkerfund: the funded bar looks partly filled at 340 percent (opus, single); label it or cap at 100 with an overfunded mark.2026-10-31 →
Tinkerfund: Inventor page RAISED total counts the Unfunded Solo Pea Rest and omits the Live state from its campaign breakdown (fable, single); say PLEDGED or count only Funded, and list all three states.2026-10-31 →
Tinkerfund: Discover eyebrow says 29 CAMPAIGNS ON FILE while the heading says 3 with the Soon filter (fable, single); say 3 OF 29.2026-10-31 →
Tinkerfund: empty search submit shows a blank page (fable, single); show the Discover grid instead.2026-10-31 →
Tinkerfund: site-wide activity feed or Campaign of the day (all three visitors) as a reason to return; needs a home section, so weigh against the home page already being long.2026-10-31 →
clear-backlog could carry each question's options as structured data through follow-up rounds, so a reply like 'Agree' or '7b' after a flip is checked against the open set and an ambiguous reply triggers one clarifying line before any build launches; this session stopped two builds on flipped answers2026-10-31 →
Midden Latest finds: show a glossed one-line hook from each catalogNote (sentence rule with 8-word floor) so a landing visitor sees stakes; planned as the feature PR.2026-10-30 →
Midden: render #N references in a catalogNote as links at display time, fixing missing PR links like #1637 on tried-and-left-alone without editing records.2026-10-30 →
Midden: render #N references in a catalogNote as links at display time, fixing missing PR links like #1637 on tried-and-left-alone without editing records (issue 2719).2026-10-30 →
Let digest.ts gather print each PR's changed-file count and touched areas, so Digest authors stop trusting session outcome text for figures.2026-10-30 →
Hand-promote or re-run the two held-back drafts: prune-trials (stale verdict paragraph after the rate comparison landed, comment-only Excerpt, title that fails the rule, overlap with Self-improvement loop) and schema-only-grows (about half its lines)2026-10-29 →
Proposed DECISIONS line: a gap counts as consensus only when both raters cite an A page (the tally should print the exemplar's grade so this is checkable, not judged by hand)2026-10-29 →
Add guide links to the three promoted Lessons that have no inbound guide link (Engineering skills, Ubiquitous language, Out-of-scope records), from Pull requests, Asking for a change, Adding a site stop 7 and Cloud sessions, once next run's raters confirm where they fit2026-10-29 →
Make glassbox-improve cheaper: have grades.ts also print the per-writer brief fill-ins (task, items, research path) and the PR body skeleton, so the lead stops hand-assembling 16 briefs and a 46KB PR description2026-10-29 →
Teach inspect-session to fall back to kinds-filtered result events (handbackReportText) when a cursor is rejected, since one inspector recovered hand-backs that way without full pages.2026-10-29 →
Pre-shape the draft Lessons: a standing pass that rewrites each draft's one-line Why pointer into reason bullets and fixes failing titles, so a later glassbox-improve promotion is a pin and a link check, not a writer round.2026-10-29 →
Rater Gaps as a table (draft path, rank, reason) so the structural-step tie-break in glassbox-improve step 3 becomes a script that sums ranks instead of hand counting prose.2026-10-29 →
Retitle candidates the raters did not agree on: Workflow scripts (opus: Claude Code workflows or Dynamic workflows, fable and sonnet say it passes) and Self-improvement loop (sonnet only: Process retrospectives).2026-10-29 →
Next run should find Work queue again: its Why bullets restate Human-in-the-loop and Author trust (sonnet and opus), once it leaves the cooling-off list.2026-10-29 →
Journal Friction Ledger: lead with a plain this-week summary and collapse each list to its top 10; three visitors again called the page a wall (already logged, now consensus).2026-10-29 →
Journal session cards: show the kind (interactive/delegated/autonomous) on each card so the new filter's result is self-explaining.2026-10-29 →
Journal landing: a Story of the week card above the start-here cards, drawn from the best Blog post (sonnet, opus, fable asked in different forms).2026-10-29 →
Journal digests: link each digest row's date to its /digests/<date> page; today only Copy link exists (fable, single).2026-10-29 →
Journal routines page: state the shared cost axis once and offer per-chart scaling so cheap routines are not slivers (fable, opus).2026-10-29 →
Journal archived page: say plainly that the 153 oldest logs are not counted rather than header-only wording (opus, single).2026-10-29 →
Add a gate check that each Skill whose SKILL.md says 'A Routine runs this Skill' has a file in layers/journal/content/current/routines/, or is graded routine in the Skill Inventory, so a claimed Routine with no recorded run is flagged2026-10-29 →
Split nuxt-vue/05.vue-components into Vue components and Hydration: all three raters graded it B for two concepts, but a re-cut loses the tie to promotions, so it keeps waiting. A rule that lets a unanimous B outrank a promotion once would clear it.2026-10-29 →
Promote drafts nuxt-vue/03.virtual-imports and claude-code/06.hints next: virtual imports ranked first for two raters and hints third or fourth for all; both need retitling to four words or fewer.2026-10-29 →
Make glassbox-improve's last re-grade a single-rater check on the fixed deficits only, instead of three full raters, to stop the churn seen on Cloud sessions.2026-10-29 →
Have find-trial-window.ts (or the prune-trial verdict step) report each covered Friction cluster's per-session rate before and after the trial opened, so a kept cut that doubles minor slips is flagged before the verdict rather than found by an owner's question2026-10-29 →
Make glassbox-improve rate Why bullets against sibling Lessons automatically: a small script that flags a bullet whose ADR id also appears in another guide Lesson's Why section, so overlap is caught before the raters.2026-10-28 →
Collecting issue 2652 holds the retro ideas: a page-check for Why bullets that repeat a sibling Lesson, glassbox-improve SKILL.md gaps (tie-break, draft title check, worktree note), rating only pages changed since a unanimous A, and trimming rules read-only subagents grade no2026-10-28 →
Blog drop cap: render the cap as a real element so copied text keeps its space (Chromium copies 'Ihave' for any float or initial-letter cap).2026-10-28 →
Blog long feed: add month headings after Show all N posts (fable, sonnet); one-visitor complaint, needs a second.2026-10-28 →
Blog front door: add a one-line empty state and month headings to the Show all N posts list (fable, sonnet) so the 178-post archive has landmarks.2026-10-28 →
Journal highlights page 'Twelve stories' stops at 29 Aug; refresh it or date it (opus, single).2026-10-28 →
Blog tag-filter empty state shows two messages for one state; keep one (fable, single).2026-10-28 →
Have the clear-backlog-build workflow return a one-line risk note per branch (logic change vs prose, UI touched, field-absence assumptions), so the orchestrator knows which ready-to-push branches deserve a second look before merging instead of reading every diff with equal care.2026-10-28 →
Add a ledger lint that flags an entry whose cause says 'no hint' or 'nothing hooks it' while its fixes list a PR that added one, so stale causes surface on every gate run instead of in a manual audit.2026-10-28 →
Retitle candidate the raters didn't agree on: Self-improvement loop (sonnet: Terrarium's own glossary term; proposes Continuous improvement).2026-10-28 →
Draft too far from the bar as is: claude-code/06.hints says read-first-hint fires on a first subagent dispatch, but that check is dispatch-read-guard; fix before promoting.2026-10-28 →
Next structural candidates with three raters: Cloud sessions, Issues as the work queue, Hints, and the Vue components and hydration split.2026-10-28 →
Let page-checks.ts warn when a guide Lesson's title changes in a PR and its previous title was set within the last N merged PRs, so title churn shows up at review time rather than in a later audit of git history.2026-10-28 →
Next glassbox-improve run: take the Vue components / Hydration split as the structural step; two raters asked this run and three the last2026-10-28 →
Let glassbox-improve's join edits include an inline link that replaces a sentence restating a sibling's reason (e.g. MCP servers' startup-cost line pointing to Claude Code hooks); today only lists, chips and terms count2026-10-28 →
Schema validation's title sits beside Content validation; one rater per round found it broad, no retitle proposed; owner may want a DECISIONS line2026-10-28 →
Add a gate step that parses every Skill's SKILL.md frontmatter, so an unquoted colon (as in glassbox-improve) cannot merge and silently drop disable-model-invocation.2026-10-28 →
Make check-worktrees excuse an agent worktree whose patch-id is on main, so cherry-pick integration (Glass Box guide runs) stops tripping dispatch-subagents step 5.2026-10-28 →
Propose for DECISIONS.md: re-cut Vue components and hydration into a Hydration Lesson once it cools; all three raters asked for it2026-10-27 →
Promotion candidates all three raters agree on for the next run: zod/01.manifest-validation, git-github/06.work-queue, claude-code/06.hints (title fails the rule), claude-code/11.cloud-sessions (two concepts, needs a split)2026-10-27 →
Guest pipeline Lesson not written: its facts live in Human-in-the-loop, Author trust and Adding a site; a Walkthrough of a Public request might fit better than a Lesson2026-10-27 →
Add a linearity test helper (time at n and 2n, assert ratio) to tests/support and run it over every hook's pure parser (stale-push-hint GIT_PUSH, workflow-edit-guard, subagent-background-guard), so a backtracking regex in any hook fails CI rather than waiting for a session to notice2026-10-27 →
Teach scripts/git/check-worktrees.ts to excuse a worktree whose commits are on origin/main by patch-id (git cherry), so orchestrators that cherry-pick agent work don't hit a false FAIL and hand-verify every worktree2026-10-27 →
Make visitor-loop's search step a script (open issues plus git log --grep for a focus keyword) so each finding's search result is one command, not several guarded MCP calls.2026-10-27 →
Atlas wing pages: add an 'Other wings' line under the wing intro so a visitor can hop sideways without returning to the front door (fable, single).2026-10-27 →
Atlas front door: show 'Next season in N days' beside 'Today under the glass' to give returning visitors a reason to come back (sonnet, single).2026-10-27 →
Atlas 404: style it as a plate in the book's design instead of the default white page (fable, single).2026-10-27 →
Give audit-skills a script that appends an observation to a Skill Inventory entry and wraps it safely, so a run stops hand-wrapping YAML and the hyphen-split validation failure cannot recur2026-10-27 →
Have audit-skills --adr-reads report useful-verdict rates per ADR and per match type (path or text), so a needless pointer shows up without relying on Frictions (tracked in #2575).2026-10-26 →
Have clear-backlog print the resolved issue set and wait one beat for exclusions before launching explore: owners often defer issues on seeing the list, and triage agents comment on every issue they touch.2026-10-26 →
visitor-brief: for the homepage focus add a note telling visitors to judge the front page and its cards first, so findings can agree on it.2026-10-26 →
Homepage digest list and Midden card clip with no read-on cue (single visitor); #2573 now adds a digests link for the first.2026-10-26 →
Journal mobile: the status pill wraps to 'COMPLETE / D' on session cards; add white-space nowrap and let the date line wrap.2026-10-26 →
Friction Ledger opens on 14 days (about 12,000px, 47 clusters); default to 7 days or collapse below the top 10.2026-10-26 →
Glass Box lesson code excerpts fade out the key YAML description line; wrap long lines in frontmatter excerpts.2026-10-26 →
Journal Skills page says 'used in 0 sessions' for 9 of 11 Skills; say 'not used in the last week' or hide zeros.2026-10-26 →
Journal 404 ('No document at ...') has no way forward except the breadcrumb; add 'Back to the Journal'.2026-10-26 →
Glass Box term popover opens mid-sentence and splits the paragraph; anchor it to the word or show it below the paragraph.2026-10-26 →
Give adr-read-hint a Bash sibling that runs git diff --name-only after a Bash call that changed the tree and points to the ADRs governing the changed paths: it would catch heredoc, sed -i and python replaces, which made at least 14 of 30 misses (#2433).2026-10-26 →
Give hook parsers a shared linear shell tokenizer in scripts/hooks/hook-io.ts with one adversarial timing test, so read-first-hint, bash-rules-hint and adr-read-hint stop growing separate regexes that can backtrack.2026-10-26 →
Give run-summary.ts a --verdicts mode over many run outputs plus the orchestrator scratch that emits one merged entry per path, so closing a multi-run clear-backlog session is one command instead of an ad hoc merge script.2026-10-25 →
Glass Box excerpts: the trust-tiers Excerpt has no line-range badge (opus, single): give every Excerpt its lines range so the badge always shows.2026-10-25 →
Glass Box 404 echoes /nope not the full path (opus, single): say No page answers to /t/glassbox/guide/nope and link the nearest Subject.2026-10-25 →
Glass Box term definitions open mid-sentence leaving a stray colon (opus, single): open the definition after the paragraph or as a popover.2026-10-25 →
Glass Box walkthrough prev/next cards read Leaving X on a back arrow (fable, single): label them Previous subject / Next subject.2026-10-25 →
Glass Box sidebar shows bare counts beside Subjects on walkthrough pages (fable, single): write N lessons.2026-10-25 →
Glass Box guide never mentions the Drafts space (fable, single): ask the owner whether the guide may say work-in-progress pages exist.2026-10-25 →
Let print-ledger-occurrence.ts take entry-session-index triples and append each block to its entry itself (or group its output by entry), so the survey agent never splits one printed output across several ledger-set.ts calls by hand.2026-10-25 →
Give scripts/session/log-session.ts a --set <field>=<value> and --append-summary option that edits the pending scratch in place, so a re-invoke at each merge costs one command instead of re-authoring and re-validating the whole YAML.2026-10-25 →
audit-docs: file a needs-triage issue once for a finding a checker rejects as an owner call (e.g. visitor-loop five vs six homepage sites), so later runs stop re-raising and re-checking it2026-10-25 →
Learnings 45
GitHub's REST events and timeline give exact close/reopen times and which PR closed an issue; an issue body's stated times can be off by a second.2026-10-31 →
The harness Stop hook flags an unpushed branch while its own gate is still running; under ADR-0004 that flag is to be ignored until the gate passes, and a Stop-hook design for #2721 would have nagged the same way2026-10-31 →
A ledger entry with since: major can have 0 occurrences in the horizon, so its severity says nothing about current recurrence.2026-10-31 →
A blog reply's thesis can fail on a misread source, so check the claim that carries it before spending review rounds on the draft.2026-10-30 →
A merged fix's PR body can auto-close a tracking issue before its fix lands (issue #2660 closed one second after a ledger-only PR merged)2026-10-30 →
unimport 7.0.2 only suppresses an auto-import for a top-level declaration of the name; a declaration inside a function or a parameter does not2026-10-29 →
A subagent's worktree branch keeps its base commit, so a resumed writer's fix commit merges cleanly into a run branch that moved on, except where both touched the same line2026-10-29 →
Across four recovered run pairs, 3-6 pages every rater graded A drew a below-A grade next run with the text unchanged, and at least four were real false claims: unanimous A is weak evidence.2026-10-29 →
The tally filters (ideas logged this week) dropped most consensus findings, so a run's fix PR may only carry copy tweaks.2026-10-29 →
A PR body's verification line (a dark-mode screenshot) can be false for weeks; the Friction Ledger entry claim-of-fix-not-rendered already groups the Tinkerfund portraits and the Atlas smudge as one open problem.2026-10-29 →
The Glass Box guide pages, pinned 2026-10-29, were the freshest of the five doc sets; the diagram brief (last checked 2026-10-08) had drifted most2026-10-29 →
GitHub runs no pull_request workflow on a PR with a merge conflict, so a conflicted PR shows zero check runs rather than a red one2026-10-29 →
Claude Code cloud docs: a session with several repositories reads none of a repository's committed hooks or permission rules, and organization server-managed settings do reach a cloud session2026-10-29 →
The Friction Ledger is edited by many non-survey PRs (fixes, re-clusters), so its last commit does not date the last survey; a survey's own PR (in its session log's prs) does2026-10-29 →
A Prune Trial check that counts only major or blocker Frictions cannot see a rise in minor ones: relayed-subagent-claims roughly doubled per session after PR #2537 while its trial was judged clean2026-10-29 →
Chromium's Selection.toString drops the space after a ::first-letter that is floated or uses initial-letter; an enlarged but non-floated letter copies cleanly.2026-10-28 →
A session log has no ruleVerdicts key both when it predates the field and when the session gave zero verdicts (transcript-trace.ts writes it only when non-empty), so its absence is not a log-age marker.2026-10-28 →
prune-friction-ledger.ts --move deletes an emptied source entry with its fixes, so a full split drops the original's fix history; its ref has to carry what it covered.2026-10-28 →
A folder under layers/ with no nuxt.config is skipped: @nuxt/kit passes it to c12 as _extends, c12 finds no config and warns 'Cannot extend config'.2026-10-28 →
A merge commit's body holds the PR title, so git log --merges --grep can find a Skill's earlier runs by PR-title prefix.2026-10-28 →
Re-graders on the edited pages catch false claims that a two-axis code-review on the same diff misses, including ones the fix round itself introduced2026-10-28 →
Chrome DevTools keeps about 10 MB of a response body, so Playwright response.text() throws "evicted from inspector cache" on larger pages.2026-10-28 →
A shared helper that returns a word, called at every match position, can turn a linear scan quadratic; return an index so the caller can skip ahead2026-10-27 →
Three models agreed on top and bottom tiers but each found a different factual error; the union of verified errors is the main value of running three2026-10-27 →
Parallel page agents should hand back join edits instead of editing shared pages; one later pass applies them without conflicts2026-10-27 →
A logged idea's measurements go stale within a day on the Friction Ledger (47 clusters claimed, 130 actual); re-measure before deciding on a UI-size fix.2026-10-27 →
In the Atlas theme, --sig-1 is resolved at :root, so any plate drawn outside a Specimen page must re-bind --sig-1 itself to pick up the Biome accent.2026-10-27 →
Nuxt resolves a component by a runtime-built name only if it is registered globally (.global.vue); resolveDynamicComponent returns the string unchanged and without a warning when it is missing.2026-10-27 →
Lightning CSS lowers light-dark() into --lightningcss-light/dark variables, so a --tf-* token resolves on the element that declares it; setting color-scheme on a descendant does not change it unless the tokens are re-declared there.2026-10-27 →
Every Journal session id under layers/journal/content starts with session_01 (1227 of 1227), so a session_01 prefix anchors an id check without catching prose2026-10-27 →
A Friction can record a harness system-prompt instruction as an enforced restriction; check PR head branches before trusting such a claim.2026-10-27 →
save-handback-style one-per-Skill subagent checks cost about 1.4M subagent tokens in total; most finished in under two minutes.2026-10-27 →
The docsRead useful verdicts capture needless hint-prompted ADR reads that the Frictions never see, because the hint excuses a confirming late read as not a Friction.2026-10-26 →
With the homepage as focus, visitors wander into the Journal and Glass Box, so consensus findings rarely land on the homepage itself.2026-10-26 →
A session log's toolCounts counts the main agent only, while filesEdited also folds in subagents' edits and the session's committed files (the latter catching Bash writes, #2386).2026-10-26 →
node:path matchesGlob does not match dotfiles with **, so a rule glob like dir/** misses dir/.gitkeep for both Edit and commit hints.2026-10-26 →
git diff-tree -p prints no header for an empty, binary or mode-only change; --name-only is needed to list every changed file.2026-10-26 →
A hook that denies the first dispatch (dispatch-read-guard) fires on blog-post's own blind-read step, so the Skill's steps could say to read dispatch-subagents first.2026-10-26 →
The triage agent for #2556 said the relayed-subagent-claims ledger entry was status open; on main it was tracked (ref issue #2556) by the time I checked, because the survey that filed the issue had already moved it.2026-10-26 →
PyYAML (YAML 1.1) reads bare yes/no as booleans, so a script re-emitting log verdicts must map them back to strings.2026-10-25 →
eval-in-page.ts viewport matters for clamp checks; two descriptions clipped only at 390px so a desktop-only check would have passed wrongly2026-10-25 →
Restructuring a brief into per-step Goal / Instructions / Done when / Edge cases while keeping every rule grows it by about a sixth; the words are headings and completion criteria, not new rules.2026-10-25 →
The yaml package rewraps long strings on stringify, so a text replace on a file it wrote can silently miss.2026-10-25 →
check-states.ts reported 0 claims for texts that name merged PRs, so I inferred it only matches explicit state phrases; not read from its source.2026-10-25 →
merge-pr.ts closes a related issue even when the PR names it only with Relates to, and the close carries no state_reason, so it reads as completed2026-10-25 →