787e354b9b
The `build` job fails on main and on every branch merged from it: doc-site: context/code/pr-review.md is neither published nor a named omission NOT a merge loss -- scripts/build-doc-site.mjs in this branch is byte-identical to main's, and neither lists the file. PR #96 added context/code/pr-review.md without a manifest line, which is exactly the gate improvise-res9 added: a doc added without a line publishes nothing and says nothing, so the generator refuses. Omitted rather than published, and the line is cloud-agents.md's rather than tooling.md's. tooling.md explains checkers a reader of the code will meet; pr-review.md is about THIS REPOSITORY'S PROCESS -- where a Codex review appears, how to tell it from our own agents' comments, why absence is not approval. Nobody visiting a website is about to read a PR thread. Both homes updated, because an omission is restated beside the manifest AND in doc-site.md section 2, and the prose there counted them ("Neither is referenced...") so it went stale at three. This strays into scripts/, which is Wave N's ground. Flagged in the hand-back; it is a one-line data entry either way if the orchestrator would rather publish it. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FC2jVn8Au7E9JPkw6bwXXH
21 lines
42 KiB
HTML
21 lines
42 KiB
HTML
<!doctype html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
<title>Ticket index — improvise docs</title>
|
|
<link rel="stylesheet" href="style.css" />
|
|
</head>
|
|
<body>
|
|
<div class="shell">
|
|
<nav class="side"><a class="brand" href="index.html">improvise docs</a><input type="checkbox" id="navtoggle" class="navtoggle" /><label class="navsummary" for="navtoggle">Pages</label><div class="navlinks"><ul><li><a href="../index.html">← Project home</a></li><li><a href="../app/">Browser demo</a></li><li><a href="https://github.com/fiddlerwoaroof/improvise">Source on GitHub</a></li></ul><h3>Start here</h3><ul><li><a href="design-notes.html">Design notes</a></li><li><a href="design-principles.html">Design principles</a></li><li><a href="repo-map.html">Repository map</a></li></ul><h3>Decision records</h3><ul><li><a href="adr/001-concurrent-edits.html">ADR 001 — Concurrent edits</a></li><li><a href="adr/002-naming-a-cell.html">ADR 002 — Naming a cell</a></li><li><a href="adr/003-live-backed-models.html">ADR 003 — Live-backed models</a></li></ul><h3>The arguments, by area</h3><ul><li><a href="code/core.html">improvise-core</a></li><li><a href="code/formula-and-io.html">improvise-formula and improvise-io</a></li><li><a href="code/protocol.html">improvise-protocol</a></li><li><a href="code/command.html">improvise-command</a></li><li><a href="code/clients.html">The clients</a></li><li><a href="code/tui.html">The TUI</a></li><li><a href="code/gp.html">gp-tree and improvise-gp</a></li><li><a href="code/kb-tool.html">The kb tool</a></li><li><a href="code/tooling.html">The repository's own checkers</a></li></ul><h3>Test evidence</h3><ul><li><a href="test-evidence/core.html">improvise-core</a></li><li><a href="test-evidence/formula-and-io.html">improvise-formula and improvise-io</a></li><li><a href="test-evidence/protocol.html">improvise-protocol</a></li><li><a href="test-evidence/command.html">improvise-command</a></li><li><a href="test-evidence/clients.html">The clients</a></li><li><a href="test-evidence/tui.html">The TUI</a></li><li><a href="test-evidence/gp.html">gp-tree and improvise-gp</a></li><li><a href="test-evidence/tooling.html">The repository's own gates</a></li></ul><h3>About this site</h3><ul><li><a href="doc-site.html">About this site</a></li></ul><h3>Reference</h3><ul><li><a href="tickets.html" class="here">Ticket index</a></li></ul></div></nav>
|
|
<main>
|
|
<h1>Ticket index</h1>
|
|
<p class="lede">The prose on this site cites issue ids like <code>improvise-9c8c</code>. They are this project's own tracker ids, kept in-repo with <a href="https://github.com/gastownhall/beads">beads</a>; there is no public issue URL to link to, so this page is what they resolve to. Titles come from <a href="https://github.com/fiddlerwoaroof/improvise/blob/main/.beads/issues.jsonl">.beads/issues.jsonl</a>, a passive export that lags the database — an id it does not carry is listed here without a title and is not linked from the prose.</p>
|
|
<p class="lede">254 ids are cited, of which 254 resolve.</p>
|
|
<table class="tickets"><thead><tr><th>Id</th><th>Status</th><th>Title</th></tr></thead><tbody><tr id="improvise-08wb"><td>improvise-08wb</td><td class="st">closed</td><td>[bug] A refused ClientFrame::Commands keeps the commands before the refusal</td></tr><tr id="improvise-0ai"><td>improvise-0ai</td><td class="st">closed</td><td>gp-tree: expose a fit/evolve entry point in the library</td></tr><tr id="improvise-0bf"><td>improvise-0bf</td><td class="st">closed</td><td>Inconsistent float-equality tolerance in formula eval</td></tr><tr id="improvise-0hb"><td>improvise-0hb</td><td class="st">deferred</td><td>Make Sequence bindings transactional at command level</td></tr><tr id="improvise-0o6x"><td>improvise-0o6x</td><td class="st">closed</td><td>A group header first on its axis is never drawn, so a leading collapsed group has no way back</td></tr><tr id="improvise-0x9u"><td>improvise-0x9u</td><td class="st">closed</td><td>A click cannot move the grid selection while an editor is open</td></tr><tr id="improvise-0yq8"><td>improvise-0yq8</td><td class="st">closed</td><td>Move ClientState and keys.rs::step into improvise-protocol</td></tr><tr id="improvise-1125"><td>improvise-1125</td><td class="st">closed</td><td>Row-header width is computed per frame in the widget</td></tr><tr id="improvise-1c9"><td>improvise-1c9</td><td class="st">closed</td><td>ExportPrompt mode shows no status-bar hint</td></tr><tr id="improvise-1cz"><td>improvise-1cz</td><td class="st">closed</td><td>export_csv emits unquoted CSV — commas in values corrupt output</td></tr><tr id="improvise-1ey"><td>improvise-1ey</td><td class="st">open</td><td>Browser frontend MVP: end-to-end working demo</td></tr><tr id="improvise-1l9o"><td>improvise-1l9o</td><td class="st">closed</td><td>furnished_client hand-builds a basis instead of taking the server's</td></tr><tr id="improvise-1wl0"><td>improvise-1wl0</td><td class="st">closed</td><td>AxisFrame::first is serde(default), so a frame with no origin claims it leads the axis</td></tr><tr id="improvise-21d"><td>improvise-21d</td><td class="st">closed</td><td>Epic: Integrate gp-tree — fit interpretable decision trees as computed measures</td></tr><tr id="improvise-23qd"><td>improvise-23qd</td><td class="st">closed</td><td>The Projection::Basis record set is derived twice, and the second copy is the tests' yardstick</td></tr><tr id="improvise-26dm"><td>improvise-26dm</td><td class="st">closed</td><td>The fourth length-not-completeness list: cases.len() == 13 in ui/effect.rs</td></tr><tr id="improvise-2avl"><td>improvise-2avl</td><td class="st">closed</td><td>layout_version moved outside the effect loop and neither abort arm is tested</td></tr><tr id="improvise-2hi"><td>improvise-2hi</td><td class="st">closed</td><td>Extract AppMode dispatch methods (mode_label, mode_style, mode_key)</td></tr><tr id="improvise-2lh"><td>improvise-2lh</td><td class="st">closed</td><td>Migrate name-string comparisons to CategoryKind enum checks</td></tr><tr id="improvise-2oxt"><td>improvise-2oxt</td><td class="st">closed</td><td>The landing page's casts predate the records columns and show the recorder's shell prompt</td></tr><tr id="improvise-2wm"><td>improvise-2wm</td><td class="st">closed</td><td>WizardKey effect embeds the import-wizard state machine inside Effect::apply</td></tr><tr id="improvise-2yc2"><td>improvise-2yc2</td><td class="st">closed</td><td>DataStore::live_records walks a HashMap -- decide its order before writing the caller</td></tr><tr id="improvise-2zq"><td>improvise-2zq</td><td class="st">closed</td><td>Records mode has no inline way to add a category, unlike the + column for measures</td></tr><tr id="improvise-349m"><td>improvise-349m</td><td class="st">closed</td><td>format_md/parse_md is not idempotent when a .improv file has two Category sections with the same name</td></tr><tr id="improvise-35e"><td>improvise-35e</td><td class="st">closed</td><td>Temporary adapter: RenderCache::from_app bridge for incremental widget migration</td></tr><tr id="improvise-368h"><td>improvise-368h</td><td class="st">closed</td><td>[bug] No client on any transport can ask its host to save</td></tr><tr id="improvise-3gy"><td>improvise-3gy</td><td class="st">closed</td><td>4.2 Enable GitHub Pages</td></tr><tr id="improvise-3vr"><td>improvise-3vr</td><td class="st">closed</td><td>vb4 step 1: scaffold ModelState and ViewState types</td></tr><tr id="improvise-3x3u"><td>improvise-3x3u</td><td class="st">closed</td><td>Resolve the two unaddressed nullary wire variants before concurrency lands</td></tr><tr id="improvise-3zq"><td>improvise-3zq</td><td class="st">closed</td><td>Records-mode Enter/Tab at bottom-right: persist empty record, re-enter editing</td></tr><tr id="improvise-44ad"><td>improvise-44ad</td><td class="st">closed</td><td>ColWidths is redundant under the label fold, and the test that would change is gotcha 33(c)'s evidence</td></tr><tr id="improvise-4bwa"><td>improvise-4bwa</td><td class="st">closed</td><td>Three bindings improvise-e24v listed as needing no enrichment do need it</td></tr><tr id="improvise-4dpj"><td>improvise-4dpj</td><td class="st">closed</td><td>The RecordsNormal-to-Normal arm of settle_normal_mode has zero coverage, and it is live</td></tr><tr id="improvise-4ju"><td>improvise-4ju</td><td class="st">closed</td><td>Make EditOrDrill mode-agnostic; delete EnterEditMode</td></tr><tr id="improvise-4ktt"><td>improvise-4ktt</td><td class="st">closed</td><td>The js job's bundle-freedom is a convention, not a gate</td></tr><tr id="improvise-4pg"><td>improvise-4pg</td><td class="st">closed</td><td>Extract panel mode keymap template</td></tr><tr id="improvise-4s8"><td>improvise-4s8</td><td class="st">closed</td><td>Extract a gp-tree feature matrix from a View's records</td></tr><tr id="improvise-4yc"><td>improvise-4yc</td><td class="st">closed</td><td>Malformed numbers in .improv file silently become 0.0</td></tr><tr id="improvise-4zl7"><td>improvise-4zl7</td><td class="st">closed</td><td>A fitted tree must route per record and aggregate the results, not route on the aggregate</td></tr><tr id="improvise-56ek"><td>improvise-56ek</td><td class="st">closed</td><td>SetPanelOpen maps a Panel to a field twice, in two crates</td></tr><tr id="improvise-5j9"><td>improvise-5j9</td><td class="st">closed</td><td>ImportPipeline silently skips records missing category values</td></tr><tr id="improvise-5jm5"><td>improvise-5jm5</td><td class="st">closed</td><td>Model::evaluate_aggregated takes a list it only tests for emptiness</td></tr><tr id="improvise-5jna"><td>improvise-5jna</td><td class="st">closed</td><td>The browser page does not paint the title bar it is now told about</td></tr><tr id="improvise-5ray"><td>improvise-5ray</td><td class="st">closed</td><td>check-evidence ignores #### headings and every browser-test entry uses them</td></tr><tr id="improvise-5ubs"><td>improvise-5ubs</td><td class="st">closed</td><td>A cyclic-successor all() can silently omit a variant while its doc says it cannot</td></tr><tr id="improvise-60z"><td>improvise-60z</td><td class="st">closed</td><td>Virtual views _Records and _Drill should not be persisted to .improv files</td></tr><tr id="improvise-61f"><td>improvise-61f</td><td class="st">closed</td><td>Add invariant test for command registry name mapping</td></tr><tr id="improvise-669b"><td>improvise-669b</td><td class="st">closed</td><td>The harness spec and the page can still disagree about HANDSHAKE_TIMEOUT_MS through a stale assemble</td></tr><tr id="improvise-6c6q"><td>improvise-6c6q</td><td class="st">closed</td><td>[bug] apply_switch relays a refused switch to everyone but the asker</td></tr><tr id="improvise-6kj"><td>improvise-6kj</td><td class="st">closed</td><td>Pest parse errors lack file:line context for users</td></tr><tr id="improvise-6mq"><td>improvise-6mq</td><td class="st">closed</td><td>Introduce Storage/VFS abstraction in persistence layer</td></tr><tr id="improvise-6nsd"><td>improvise-6nsd</td><td class="st">open</td><td>A prune-by-write renumbers the grid without moving layout_version -- ADR 001 middle tier</td></tr><tr id="improvise-6os"><td>improvise-6os</td><td class="st">closed</td><td>O(n^2) stem deduplication in recompute_formulas</td></tr><tr id="improvise-6sq"><td>improvise-6sq</td><td class="st">closed</td><td>Merge EditOrDrill and EnterEditAtCursorCmd into EnterEdit{mode}</td></tr><tr id="improvise-6t3"><td>improvise-6t3</td><td class="st">closed</td><td>Unify Commit{Formula,CategoryAdd,ItemAdd} into CommitBuffer(kind)</td></tr><tr id="improvise-711n"><td>improvise-711n</td><td class="st">closed</td><td>parse_number_format silently yields 0 decimals for the ,.2f spelling our own docs show</td></tr><tr id="improvise-748f"><td>improvise-748f</td><td class="st">closed</td><td>A drill exited with no edits, and view-back, mark the document dirty</td></tr><tr id="improvise-75ld"><td>improvise-75ld</td><td class="st">closed</td><td>A refused or no-op AddCategory still bumps layout_version and raises dirty</td></tr><tr id="improvise-764"><td>improvise-764</td><td class="st">closed</td><td>Migrate import wizard widget and state to consume RenderCache</td></tr><tr id="improvise-78v6"><td>improvise-78v6</td><td class="st">closed</td><td>PR #61 deleted the help-overlay spec and nothing replaced it</td></tr><tr id="improvise-7kvw"><td>improvise-7kvw</td><td class="st">closed</td><td>SetPageSelection renumbers the grid under prune_empty and does not reset the cursor</td></tr><tr id="improvise-7na"><td>improvise-7na</td><td class="st">closed</td><td>Decide whether fitted gp-tree models are persisted alongside the formula</td></tr><tr id="improvise-7v62"><td>improvise-7v62</td><td class="st">closed</td><td>Checked does not bind the App it was checked against</td></tr><tr id="improvise-7ybz"><td>improvise-7ybz</td><td class="st">closed</td><td>The browser category panel has no pointer affordance at all</td></tr><tr id="improvise-7yx"><td>improvise-7yx</td><td class="st">closed</td><td>Close test gaps flagged by deep review</td></tr><tr id="improvise-864a"><td>improvise-864a</td><td class="st">open</td><td>Concurrent merges to main race on one Pages environment and the superseded deploys fail</td></tr><tr id="improvise-8ec3"><td>improvise-8ec3</td><td class="st">closed</td><td>improvise-io's test binary breaches the 2s per-binary rule on some machines, and the pinned figure is not reproducible</td></tr><tr id="improvise-8fy"><td>improvise-8fy</td><td class="st">closed</td><td>Introduce simple_effect! macro for single-field setter effects</td></tr><tr id="improvise-8qlr"><td>improvise-8qlr</td><td class="st">closed</td><td>Column-group run coalescing is derived twice, and the agreement test does not pin the TUI arm</td></tr><tr id="improvise-8shu"><td>improvise-8shu</td><td class="st">closed</td><td>Constrain the .improv grammar generator's strategy; improvise-io's lib binary is the run's outlier</td></tr><tr id="improvise-8tk"><td>improvise-8tk</td><td class="st">closed</td><td>ZZ / :wq quits even when the save fails, silently discarding the model</td></tr><tr id="improvise-8uj8"><td>improvise-8uj8</td><td class="st">closed</td><td>every_rejection_message_says_the_edit_did_not_land covers five of seven variants</td></tr><tr id="improvise-8uz"><td>improvise-8uz</td><td class="st">closed</td><td>Cursor and scroll are per-client state stored in the shared View</td></tr><tr id="improvise-8xhy"><td>improvise-8xhy</td><td class="st">closed</td><td>[bug] A fit over a categorical feature emits an unevaluable formula</td></tr><tr id="improvise-907"><td>improvise-907</td><td class="st">closed</td><td>Import wizard step machine: validate early, allow going back, make the terminal step real</td></tr><tr id="improvise-955n"><td>improvise-955n</td><td class="st">closed</td><td>[bug] Host::commands applies a batch partially before rejecting</td></tr><tr id="improvise-9c8c"><td>improvise-9c8c</td><td class="st">closed</td><td>Move the reasoning out of code comments into context/ prose, cap comments at two lines</td></tr><tr id="improvise-9c9o"><td>improvise-9c9o</td><td class="st">closed</td><td>A geometry effect right after a mid-batch SwitchView skips the cursor check entirely</td></tr><tr id="improvise-9cn"><td>improvise-9cn</td><td class="st">closed</td><td>Introduce register_cmd! macro to prevent name drift</td></tr><tr id="improvise-9ix"><td>improvise-9ix</td><td class="st">closed</td><td>SQLite persistence format (alternative save/restore)</td></tr><tr id="improvise-9iyv"><td>improvise-9iyv</td><td class="st">open</td><td>The route-then-aggregate fold's cost, measured</td></tr><tr id="improvise-9mo9"><td>improvise-9mo9</td><td class="st">closed</td><td>[bug] Geometry effects that renumber the grid but never reset the cursor</td></tr><tr id="improvise-9v0j"><td>improvise-9v0j</td><td class="st">open</td><td>view_frame and view_shape are separated by example, not by property</td></tr><tr id="improvise-9x6"><td>improvise-9x6</td><td class="st">closed</td><td>Worker-hosted server bundle (wasm, MessageChannel transport)</td></tr><tr id="improvise-9za9"><td>improvise-9za9</td><td class="st">closed</td><td>Demoting an evidence heading to prose is an unguarded escape hatch</td></tr><tr id="improvise-a2x"><td>improvise-a2x</td><td class="st">closed</td><td>Derive Serialize/Deserialize for the ViewState field types</td></tr><tr id="improvise-aaw"><td>improvise-aaw</td><td class="st">closed</td><td>Replace CreateAndSwitchView with Binding::Sequence</td></tr><tr id="improvise-ac2z"><td>improvise-ac2z</td><td class="st">open</td><td>A host's none_cats leak into another view's grid: formula columns vanish</td></tr><tr id="improvise-ahdf"><td>improvise-ahdf</td><td class="st">closed</td><td>repo-map gotchas 36 and 43 still name Sessions::apply as the production door</td></tr><tr id="improvise-anr9"><td>improvise-anr9</td><td class="st">closed</td><td>Project the five grid-frame facts: unblocks H, z, gz and fixes Food/Alice at once</td></tr><tr id="improvise-azhb"><td>improvise-azhb</td><td class="st">open</td><td>Decide who sets a document's default view now that a switch does not</td></tr><tr id="improvise-bck"><td>improvise-bck</td><td class="st">open</td><td>Standalone web MVP: end-to-end offline demo</td></tr><tr id="improvise-bgtf"><td>improvise-bgtf</td><td class="st">closed</td><td>The landing page is served by the harness and asserted by nothing</td></tr><tr id="improvise-bidq"><td>improvise-bidq</td><td class="st">closed</td><td>Two answers to 'is this category virtual', four lines apart in view/types.rs</td></tr><tr id="improvise-bpq2"><td>improvise-bpq2</td><td class="st">closed</td><td>Client-side key resolution: what must the projections carry?</td></tr><tr id="improvise-byz"><td>improvise-byz</td><td class="st">closed</td><td>records_display returns Some("") for out-of-bounds columns instead of None</td></tr><tr id="improvise-c5v"><td>improvise-c5v</td><td class="st">closed</td><td>Improve records view data entry by making each measure a normal value column (wide format instead of synthetic Value column)</td></tr><tr id="improvise-c6j"><td>improvise-c6j</td><td class="st">closed</td><td>WizardStep::Done is unreachable from the UI</td></tr><tr id="improvise-cl7y"><td>improvise-cl7y</td><td class="st">closed</td><td>A browser reports "Formula added" for a formula only the host can parse</td></tr><tr id="improvise-cqi"><td>improvise-cqi</td><td class="st">closed</td><td>Extract improvise-protocol crate (Command, ViewState, reduce_view)</td></tr><tr id="improvise-cqq"><td>improvise-cqq</td><td class="st">closed</td><td>Server-side projection emission layer + per-client viewport tracking</td></tr><tr id="improvise-cr3"><td>improvise-cr3</td><td class="st">closed</td><td>DOM renderer for browser grid (reads ViewState + render cache)</td></tr><tr id="improvise-ct5"><td>improvise-ct5</td><td class="st">closed</td><td>i on an empty records grid reports 'cannot drill', leaking a pivot-mode concept</td></tr><tr id="improvise-d44s"><td>improvise-d44s</td><td class="st">closed</td><td>gp_tree::data::preprocess writes to stderr from library code</td></tr><tr id="improvise-djm"><td>improvise-djm</td><td class="st">closed</td><td>Standalone main-thread bundle: wasm-client + worker transport</td></tr><tr id="improvise-djn"><td>improvise-djn</td><td class="st">closed</td><td>AddCategory effect silently swallows failures</td></tr><tr id="improvise-djoo"><td>improvise-djoo</td><td class="st">closed</td><td>Publish the context/ prose as a documentation site folded into GitHub Pages</td></tr><tr id="improvise-dkqn"><td>improvise-dkqn</td><td class="st">closed</td><td>gp-tree::fit should take one slice of rows, not parallel x/y slices</td></tr><tr id="improvise-dqn"><td>improvise-dqn</td><td class="st">closed</td><td>CyclePanelFocus does not actually cycle between panels</td></tr><tr id="improvise-drg"><td>improvise-drg</td><td class="st">closed</td><td>vb4 step 5: narrow Effect::apply signatures where one-slice</td></tr><tr id="improvise-dz8"><td>improvise-dz8</td><td class="st">closed</td><td>Add Axis::Filter for drill-fixed coordinates</td></tr><tr id="improvise-e24v"><td>improvise-e24v</td><td class="st">closed</td><td>Second tranche of client-side key resolution: ~15 bindings needing no enrichment</td></tr><tr id="improvise-e5pf"><td>improvise-e5pf</td><td class="st">open</td><td>Command::ChangeMode(Normal) is on the wire and reduce_view folds it without the records resolution</td></tr><tr id="improvise-e8no"><td>improvise-e8no</td><td class="st">open</td><td>A wide numeric category now refuses a fit that used to ignore it</td></tr><tr id="improvise-edp"><td>improvise-edp</td><td class="st">closed</td><td>Establish ViewModel layer: derived data between RenderCache and widgets</td></tr><tr id="improvise-ehz"><td>improvise-ehz</td><td class="st">closed</td><td>EnterEditAtCursor effect calls rebuild_layout and builds a CmdContext inside apply</td></tr><tr id="improvise-ete"><td>improvise-ete</td><td class="st">closed</td><td>Add Model/Category getter methods to absorb .unwrap().items/groups chains</td></tr><tr id="improvise-ew0"><td>improvise-ew0</td><td class="st">closed</td><td>vb4 step 3: move UI session fields into ViewState</td></tr><tr id="improvise-fdt6"><td>improvise-fdt6</td><td class="st">closed</td><td>A browser cannot add a formula, so FormulaEdit is a room that swallows typing</td></tr><tr id="improvise-fkfg"><td>improvise-fkfg</td><td class="st">closed</td><td>ADR-001 b: ModelCommand carries its basis; Applied gains a rejected case</td></tr><tr id="improvise-fuj"><td>improvise-fuj</td><td class="st">closed</td><td>Two effects read files directly instead of going through Storage</td></tr><tr id="improvise-g0f"><td>improvise-g0f</td><td class="st">closed</td><td>Decide whether two clients may view different views</td></tr><tr id="improvise-g6s1"><td>improvise-g6s1</td><td class="st">closed</td><td>WizardStep::Preview has no characterization fixture</td></tr><tr id="improvise-gcvb"><td>improvise-gcvb</td><td class="st">closed</td><td>The browser cannot commit a records-mode creating column, though it is now nameable</td></tr><tr id="improvise-gd28"><td>improvise-gd28</td><td class="st">open</td><td>Drill over the wire needs the addressed command form</td></tr><tr id="improvise-gd83"><td>improvise-gd83</td><td class="st">closed</td><td>AxisEntry carries no group-end boundary, so group_of gives an ungrouped item the preceding group</td></tr><tr id="improvise-gdl"><td>improvise-gdl</td><td class="st">closed</td><td>SetBuffer effect special-cases the "search" buffer name</td></tr><tr id="improvise-gfq"><td>improvise-gfq</td><td class="st">closed</td><td>Import wizard defers the 'no category accepted' failure to the very last keystroke</td></tr><tr id="improvise-git"><td>improvise-git</td><td class="st">closed</td><td>Replace SaveAndQuit with Binding::Sequence in keymap</td></tr><tr id="improvise-gv9r"><td>improvise-gv9r</td><td class="st">closed</td><td>[bug] A wire model command never marks the document dirty</td></tr><tr id="improvise-gvnb"><td>improvise-gvnb</td><td class="st">closed</td><td>[bug] A geometry command resets the App cursor but not the session mirrors</td></tr><tr id="improvise-gxi"><td>improvise-gxi</td><td class="st">closed</td><td>Define unified reduce_full(&mut App, &Command) -> Vec<Command></td></tr><tr id="improvise-h04z"><td>improvise-h04z</td><td class="st">open</td><td>Decide whether UI glyphs move to the protocol, as short_label() did</td></tr><tr id="improvise-h074"><td>improvise-h074</td><td class="st">in_progress</td><td>Two edges of App::resolve_view: a worse panic message, and a host-side DeleteView bypass</td></tr><tr id="improvise-h0b"><td>improvise-h0b</td><td class="st">closed</td><td>Evict wizard and drill_state from ViewState (bootstrap-snapshot hygiene)</td></tr><tr id="improvise-h0iv"><td>improvise-h0iv</td><td class="st">closed</td><td>group_runs coalesces by name alone, so two runs under different headers merge</td></tr><tr id="improvise-hkr8"><td>improvise-hkr8</td><td class="st">closed</td><td>A click that cannot compose its activation keeps the prefix and drops the payload</td></tr><tr id="improvise-hkt6"><td>improvise-hkt6</td><td class="st">closed</td><td>Three small totality gaps found in review</td></tr><tr id="improvise-hmu"><td>improvise-hmu</td><td class="st">closed</td><td>TAB/Enter on bottom-right of records view should insert record below (TAB→first cell, Enter→same column); o inserts below cursor</td></tr><tr id="improvise-hmws"><td>improvise-hmws</td><td class="st">closed</td><td>Storage cannot expose an async seam through Box<dyn Storage></td></tr><tr id="improvise-hsoe"><td>improvise-hsoe</td><td class="st">closed</td><td>check-evidence cannot see a duplicate heading, and three exist</td></tr><tr id="improvise-hwpi"><td>improvise-hwpi</td><td class="st">closed</td><td>The browser shell fails quietly, and never reads a key</td></tr><tr id="improvise-i2m5"><td>improvise-i2m5</td><td class="st">closed</td><td>improvise-io still carries its own pipe-quoting copy, without the keyword guard</td></tr><tr id="improvise-i34"><td>improvise-i34</td><td class="st">closed</td><td>OPFS-backed Storage implementation for wasm target</td></tr><tr id="improvise-i5tk"><td>improvise-i5tk</td><td class="st">closed</td><td>Narrow the TUI's GridCache to its viewport -- benchmark first</td></tr><tr id="improvise-igxp"><td>improvise-igxp</td><td class="st">closed</td><td>The browser help overlay's rows are asserted as present, never as content</td></tr><tr id="improvise-iioi"><td>improvise-iioi</td><td class="st">closed</td><td>The view and formula panels have no pointer affordance while the category panel does</td></tr><tr id="improvise-ijql"><td>improvise-ijql</td><td class="st">closed</td><td>check-comment-runs.py --check-evidence silently skips the comment-run cap it is named for</td></tr><tr id="improvise-iot6"><td>improvise-iot6</td><td class="st">closed</td><td>render_csv builds GridLayout::new, so CSV export carries rows the view prunes</td></tr><tr id="improvise-ir7l"><td>improvise-ir7l</td><td class="st">closed</td><td>[bug] A formula cell is offered as editable and silently reverts</td></tr><tr id="improvise-izk"><td>improvise-izk</td><td class="st">closed</td><td>gp-tree step 1: emit a fitted Tree as an improvise formula string</td></tr><tr id="improvise-j31x"><td>improvise-j31x</td><td class="st">closed</td><td>Server hosts several documents: a registry above Sessions</td></tr><tr id="improvise-j7v6"><td>improvise-j7v6</td><td class="st">closed</td><td>The typed-string classification lives in two crates, and its guard test asserts by hand</td></tr><tr id="improvise-jc8"><td>improvise-jc8</td><td class="st">closed</td><td>Evict host-only state from ViewState: flip the transient-keymap Arc</td></tr><tr id="improvise-jjx"><td>improvise-jjx</td><td class="st">closed</td><td>Scrolled grid suppresses first visible row-header label</td></tr><tr id="improvise-jmjz"><td>improvise-jmjz</td><td class="st">closed</td><td>grid_of evaluates the whole grid three times per frame; compute_col_widths is ~45% of it</td></tr><tr id="improvise-jq8l"><td>improvise-jq8l</td><td class="st">closed</td><td>web/app.js never calls scrollIntoView, so a selection can sit outside the window</td></tr><tr id="improvise-jytm"><td>improvise-jytm</td><td class="st">closed</td><td>Split active_view: document default vs per-client authoritative (improvise-g0f)</td></tr><tr id="improvise-k099"><td>improvise-k099</td><td class="st">closed</td><td>AppMode::hint_text/label put terminal UI strings on a serde wire enum</td></tr><tr id="improvise-k2i4"><td>improvise-k2i4</td><td class="st">closed</td><td>The two nullary model commands are unaddressed and act on one client's staged state</td></tr><tr id="improvise-k69y"><td>improvise-k69y</td><td class="st">closed</td><td>[bug] draw_status reads the document's active view, not the client's</td></tr><tr id="improvise-k8h"><td>improvise-k8h</td><td class="st">closed</td><td>Tie MinibufferConfig.buffer_key to the keymap's buffer name</td></tr><tr id="improvise-k8i"><td>improvise-k8i</td><td class="st">closed</td><td>CSV import silently drops columns when row widths mismatch</td></tr><tr id="improvise-kc7n"><td>improvise-kc7n</td><td class="st">closed</td><td>improvise-ws-server never checks Origin, so any page a user visits can drive their session</td></tr><tr id="improvise-kdp"><td>improvise-kdp</td><td class="st">closed</td><td>Duplicated aggregation dispatch block</td></tr><tr id="improvise-kh8"><td>improvise-kh8</td><td class="st">closed</td><td>Phase 4: Landing page (optional)</td></tr><tr id="improvise-kmgs"><td>improvise-kmgs</td><td class="st">closed</td><td>Derive the model half of the Command vocabulary from the EffectKind::Model effects</td></tr><tr id="improvise-kos"><td>improvise-kos</td><td class="st">closed</td><td>_Dim and _Index should work as pivot axes outside Records/Drill view; must default to None axis on non-records views including empty models</td></tr><tr id="improvise-kpnr"><td>improvise-kpnr</td><td class="st">open</td><td>improvise-ws-server has no authentication, and the documented sharing path now exposes it</td></tr><tr id="improvise-ksst"><td>improvise-ksst</td><td class="st">closed</td><td>A gp-tree fit records its seed but not its GA config</td></tr><tr id="improvise-ktv1"><td>improvise-ktv1</td><td class="st">closed</td><td>Move the help content into the shared layer so a browser can show help</td></tr><tr id="improvise-l4qx"><td>improvise-l4qx</td><td class="st">closed</td><td>[bug] A text cell is invisible whenever any category is on the None axis</td></tr><tr id="improvise-l8rh"><td>improvise-l8rh</td><td class="st">closed</td><td>The ambiguous-date heuristic reads American-first, so a European CSV imports with days and months swapped</td></tr><tr id="improvise-lae"><td>improvise-lae</td><td class="st">closed</td><td>ZZ / :wq with no file path should prompt for a path instead of only erroring</td></tr><tr id="improvise-lltt"><td>improvise-lltt</td><td class="st">open</td><td>[bug] A view-scoped ModelCommand names no view, so it lands on the host's</td></tr><tr id="improvise-lyyc"><td>improvise-lyyc</td><td class="st">closed</td><td>check-evidence is one-directional: a test citing the evidence file can have no entry</td></tr><tr id="improvise-m91"><td>improvise-m91</td><td class="st">deferred</td><td>(Stretch) Command log + native undo/replay</td></tr><tr id="improvise-mae"><td>improvise-mae</td><td class="st">closed</td><td>Tag existing effects as model / view / projection-emitting</td></tr><tr id="improvise-mai9"><td>improvise-mai9</td><td class="st">closed</td><td>A status message written while a minibuffer is open is never drawn</td></tr><tr id="improvise-mcq4"><td>improvise-mcq4</td><td class="st">open</td><td>The frame fingerprint is a 4x regression on the held-key path improvise-748f just optimized</td></tr><tr id="improvise-mzv"><td>improvise-mzv</td><td class="st">closed</td><td>Import wizard does not pre-check 12-category limit</td></tr><tr id="improvise-n10"><td>improvise-n10</td><td class="st">closed</td><td>Migrate GridWidget to consume RenderCache + ViewState (not &App)</td></tr><tr id="improvise-n3wt"><td>improvise-n3wt</td><td class="st">closed</td><td>prune_axis_items: keep-slice length invariant is only a debug_assert</td></tr><tr id="improvise-n89z"><td>improvise-n89z</td><td class="st">closed</td><td>Three Projection mutations have no producer</td></tr><tr id="improvise-ni6k"><td>improvise-ni6k</td><td class="st">closed</td><td>Invalidate the cursor by observing the grid frame, not by a per-effect table</td></tr><tr id="improvise-nrs"><td>improvise-nrs</td><td class="st">closed</td><td>Duplicated find_item_category helper in eval paths</td></tr><tr id="improvise-nynk"><td>improvise-nynk</td><td class="st">closed</td><td>adopt_cursor_epoch resets every client's cursor, including clients on a view nothing reshaped</td></tr><tr id="improvise-o1c"><td>improvise-o1c</td><td class="st">closed</td><td>Import wizard has no way back; Esc discards all field decisions silently</td></tr><tr id="improvise-o31u"><td>improvise-o31u</td><td class="st">closed</td><td>The landing page's casts render at a 4.8px font on a phone, and it is now the site root</td></tr><tr id="improvise-oaq"><td>improvise-oaq</td><td class="st">closed</td><td>Redundant file re-read in ImportJsonHeadless effect</td></tr><tr id="improvise-odbc"><td>improvise-odbc</td><td class="st">closed</td><td>[bug] bank-info.improv in the repo root does not parse</td></tr><tr id="improvise-ondj"><td>improvise-ondj</td><td class="st">closed</td><td>[bug] reduce_full/apply_command apply a Command::Model without the basis check</td></tr><tr id="improvise-p1ym"><td>improvise-p1ym</td><td class="st">closed</td><td>Project the page-axis item lists so [ and ] work in a browser</td></tr><tr id="improvise-pca"><td>improvise-pca</td><td class="st">closed</td><td>Migrate panel widgets (category/formula/view/tile_bar) to consume RenderCache</td></tr><tr id="improvise-pczv"><td>improvise-pczv</td><td class="st">closed</td><td>.improv section headers are a second, unquoted naming rule</td></tr><tr id="improvise-pdvm"><td>improvise-pdvm</td><td class="st">closed</td><td>AddItem/RemoveItem reshape the grid but declare CellData, so layout_version and cursor_epoch disagree</td></tr><tr id="improvise-plcx"><td>improvise-plcx</td><td class="st">closed</td><td>The browser harness needs a grouped, multi-level fixture — the demo has neither</td></tr><tr id="improvise-poia"><td>improvise-poia</td><td class="st">closed</td><td>The records-mode + column has no projected identity</td></tr><tr id="improvise-pubt"><td>improvise-pubt</td><td class="st">closed</td><td>[bug] display_value_in reads the host's drill edits against a foreign layout</td></tr><tr id="improvise-q08"><td>improvise-q08</td><td class="st">closed</td><td>improvise-ws-server binary (tokio + tungstenite session wrapper)</td></tr><tr id="improvise-q0vb"><td>improvise-q0vb</td><td class="st">closed</td><td>Pad the import wizard's hint line to the panel width</td></tr><tr id="improvise-qf57"><td>improvise-qf57</td><td class="st">closed</td><td>The formula-row click test lost its no-editor-opened assertion in the #61 relocation</td></tr><tr id="improvise-qsmp"><td>improvise-qsmp</td><td class="st">closed</td><td>App::cmd_context's panel-open propagator is untested: C cannot open a closed panel and nothing fails</td></tr><tr id="improvise-r08u"><td>improvise-r08u</td><td class="st">closed</td><td>IS and WHERE differ on trailing word boundary in formula.pest</td></tr><tr id="improvise-r4lo"><td>improvise-r4lo</td><td class="st">closed</td><td>Two answers to what a typed string means, and they are adjacent</td></tr><tr id="improvise-res9"><td>improvise-res9</td><td class="st">closed</td><td>Doc site: derive the published set, so an unpublished context/ doc fails the build</td></tr><tr id="improvise-rkeq"><td>improvise-rkeq</td><td class="st">closed</td><td>Decide RenderCache's shape: grid-only wire type vs per-widget sub-caches</td></tr><tr id="improvise-rm4s"><td>improvise-rm4s</td><td class="st">closed</td><td>The evidence check accepts headings naming tests that never run</td></tr><tr id="improvise-rml"><td>improvise-rml</td><td class="st">closed</td><td>Consolidate Axis display into a method on Axis</td></tr><tr id="improvise-rmvx"><td>improvise-rmvx</td><td class="st">closed</td><td>Six advertised keys do nothing in the browser, and the guard is scoped to one mode</td></tr><tr id="improvise-rucf"><td>improvise-rucf</td><td class="st">deferred</td><td>Read arbitrary SQLite databases as a data source</td></tr><tr id="improvise-ry89"><td>improvise-ry89</td><td class="st">closed</td><td>cv_regress/cv_classify with k=1 now return plausible numbers instead of NaN</td></tr><tr id="improvise-s13"><td>improvise-s13</td><td class="st">closed</td><td>Delete mode-entry shim commands; use enter-mode with arg</td></tr><tr id="improvise-s17o"><td>improvise-s17o</td><td class="st">closed</td><td>reduce_full and apply_command's view-slice arm have no production caller</td></tr><tr id="improvise-seik"><td>improvise-seik</td><td class="st">closed</td><td>Client::viewport is kept for a reason web/app.js falsified in the same wave</td></tr><tr id="improvise-shyt"><td>improvise-shyt</td><td class="st">closed</td><td>[bug] Records-mode row order is not stable across processes</td></tr><tr id="improvise-sihr"><td>improvise-sihr</td><td class="st">closed</td><td>Every minibuffer mode entered from records mode exits to plain Normal while the layout is still records</td></tr><tr id="improvise-sxsf"><td>improvise-sxsf</td><td class="st">open</td><td>cargo test -- --list cannot name the binary, so two crates could share a full test path</td></tr><tr id="improvise-t3ux"><td>improvise-t3ux</td><td class="st">closed</td><td>cv_regress and cv_classify are O(n-squared)</td></tr><tr id="improvise-t6db"><td>improvise-t6db</td><td class="st">closed</td><td>grid_in ignored prune_empty for a non-active view, hiding a staleness bug</td></tr><tr id="improvise-t8s"><td>improvise-t8s</td><td class="st">closed</td><td>View::axis_of panics on missing category</td></tr><tr id="improvise-taxx"><td>improvise-taxx</td><td class="st">closed</td><td>[bug] The socket close listener overwrites a precise error with disconnected</td></tr><tr id="improvise-th7m"><td>improvise-th7m</td><td class="st">closed</td><td>Dead F(1) binding: bound to bare 'enter-mode' then immediately rebound</td></tr><tr id="improvise-thpe"><td>improvise-thpe</td><td class="st">closed</td><td>help::compact discriminates a chord by parsing a string it formatted</td></tr><tr id="improvise-tm6"><td>improvise-tm6</td><td class="st">open</td><td>Epic: Standalone static-web deployment via wasm + VFS storage</td></tr><tr id="improvise-toc"><td>improvise-toc</td><td class="st">closed</td><td>Effect::changes_mode() is a static flag but ViewBack/ViewForward/StartImportWizard change the mode conditionally</td></tr><tr id="improvise-tom1"><td>improvise-tom1</td><td class="st">closed</td><td>Drill pending edits are invisible to remote clients, and there are now three answers to 'what text is in this cell'</td></tr><tr id="improvise-trd3"><td>improvise-trd3</td><td class="st">open</td><td>Help pages clamp at both ends; decide whether they should wrap</td></tr><tr id="improvise-tvt"><td>improvise-tvt</td><td class="st">closed</td><td>Route mutations through Workbook facade instead of app.workbook.model chains</td></tr><tr id="improvise-ut7p"><td>improvise-ut7p</td><td class="st">closed</td><td>improvise-gp fit_from_gen0 is a third copy of the GA loop</td></tr><tr id="improvise-vhcz"><td>improvise-vhcz</td><td class="st">closed</td><td>[bug] OpfsFs::list disagrees with the other backends on path shape</td></tr><tr id="improvise-vjms"><td>improvise-vjms</td><td class="st">closed</td><td>Decide whether a category panel shows the virtual categories</td></tr><tr id="improvise-vvl3"><td>improvise-vvl3</td><td class="st">closed</td><td>A headless browser harness: run storage_contract and the shell assertions under Playwright</td></tr><tr id="improvise-vx3"><td>improvise-vx3</td><td class="st">closed</td><td>fit-measure command: fit a tree and add it as a formula</td></tr><tr id="improvise-w3q"><td>improvise-w3q</td><td class="st">closed</td><td>Extract text-entry keymap template for minibuffer modes</td></tr><tr id="improvise-wd6n"><td>improvise-wd6n</td><td class="st">closed</td><td>A fit may still not split on col.missing or a date sub-feature</td></tr><tr id="improvise-wsaw"><td>improvise-wsaw</td><td class="st">closed</td><td>The browser ignores category_panel_open, so C toggles nothing visible</td></tr><tr id="improvise-x1ns"><td>improvise-x1ns</td><td class="st">closed</td><td>encoded_width undercounts a forced category that has a missing coordinate</td></tr><tr id="improvise-x2c"><td>improvise-x2c</td><td class="st">closed</td><td>vb4 step 2: move workbook/file_path/dirty into ModelState</td></tr><tr id="improvise-x7cq"><td>improvise-x7cq</td><td class="st">closed</td><td>A kb.pl inconsistency can still reach the published site</td></tr><tr id="improvise-x7sw"><td>improvise-x7sw</td><td class="st">closed</td><td>Which-key hints have no protocol home (the open half of improvise-jb3)</td></tr><tr id="improvise-xf1"><td>improvise-xf1</td><td class="st">deferred</td><td>Verify OpfsFs against Safari — Chromium and Firefox are covered</td></tr><tr id="improvise-xks6"><td>improvise-xks6</td><td class="st">closed</td><td>One home for the client/server frame envelopes</td></tr><tr id="improvise-xps8"><td>improvise-xps8</td><td class="st">closed</td><td>The handshake watchdog overwrites a genuine mid-session disconnect eight seconds later</td></tr><tr id="improvise-xwi6"><td>improvise-xwi6</td><td class="st">closed</td><td>Concurrent edits: basis check (ADR 001, layer 1 — the correctness floor)</td></tr><tr id="improvise-y4xg"><td>improvise-y4xg</td><td class="st">closed</td><td>CmdContext carries a fourth Panel-to-field mapping, and it is completely unguarded</td></tr><tr id="improvise-ych"><td>improvise-ych</td><td class="st">closed</td><td>Null category values become the literal item "null" on import</td></tr><tr id="improvise-ywd"><td>improvise-ywd</td><td class="st">closed</td><td>Wasm compatibility audit and fixes across core/formula/command/io</td></tr><tr id="improvise-z05r"><td>improvise-z05r</td><td class="st">closed</td><td>CommitExport does not bail on an empty path, and ExportCsv does not abort the batch</td></tr><tr id="improvise-z5eg"><td>improvise-z5eg</td><td class="st">closed</td><td>Gate improvise-gp in the CI wasm job</td></tr><tr id="improvise-z754"><td>improvise-z754</td><td class="st">closed</td><td>Document name, dirty flag and file path have no home a client can read</td></tr><tr id="improvise-zgb"><td>improvise-zgb</td><td class="st">closed</td><td>.improv formula loader mis-splits category suffix via rfind(" [")</td></tr><tr id="improvise-zkkw"><td>improvise-zkkw</td><td class="st">closed</td><td>The browser shell is only ever run on Chromium, but improvise-bck's criterion says Firefox too</td></tr><tr id="improvise-zv8t"><td>improvise-zv8t</td><td class="st">closed</td><td>fit_measure never tells preprocess which columns are categories, so a numeric- or date-valued category is unspellable</td></tr></tbody></table>
|
|
</main>
|
|
</div>
|
|
</body>
|
|
</html>
|