delete the batch practice-problems module (superseded by practice sessions)

Owner ruling 2026-10-04: the module is a sunk cost, retrievable from
history if ever revisited. Removed: core practice contracts + pipeline
helpers, the PracticeStore port + adapter + data dir path, server
service + API routes (sets, clusters picker, practice aborts), the
practice pages + dialog/exam/list UI, chain-table's Generate handoff,
sidebar nav, activity-dock practice rows, and the partitioner/
problemGenerator/grader model roles (BACKGROUND_MODEL_ROLES 8 → 5).

Survivors, moved to core/chains.ts (pure + browser-safe): ReasoningChain,
chainsForSelection, formatChainLine — the chain table and graph
emission still consume them.
This commit is contained in:
amosblomqvist
2026-10-04 21:34:24 +03:00
parent a2c1287415
commit 814c2ad412
50 changed files with 125 additions and 5767 deletions
+2 -4
View File
@@ -265,13 +265,12 @@ describe("ChainTableBody — the floating selection bar (never shifts layout)",
assert.ok(!html.includes('data-testid="chain-selection-bar"'));
});
it("appears with the derived N nodes → M chains + Clear + Generate + the FENCED Delete", () => {
it("appears with the derived N nodes → M chains + Clear + the FENCED Delete", () => {
const html = render({ selection: new Set(["a", "b", "c1"]) });
assert.ok(html.includes('data-testid="chain-selection-bar"'));
assert.ok(html.includes('data-testid="chain-selected-summary"'));
assert.ok(html.includes("3 nodes → 1 chain"));
assert.ok(html.includes('data-testid="chain-clear"'));
assert.ok(html.includes('data-testid="chain-generate"'));
// The danger fence (owner, 2026-09-29 night): a divider quarantines
// the destructive action at the bar's right end, red + trash icon,
// riding the same confirm dialog as the canvas delete.
@@ -280,8 +279,7 @@ describe("ChainTableBody — the floating selection bar (never shifts layout)",
assert.match(del, /border-destructive\/50/); // the destructive pair
assert.match(del, /aria-label="Delete 3 selected nodes"/);
assert.ok(html.includes("lucide-trash-2"), "the trash icon");
// the fence is AFTER generate in the DOM (right end of the bar)
assert.ok(html.indexOf('chain-generate"') < html.indexOf('chain-danger-divider"'));
// the fence is before Delete in the DOM (right end of the bar)
assert.ok(html.indexOf('chain-danger-divider"') < html.indexOf('chain-delete"'));
});