Commit Graph

  • 70d84fbfd7 ci(integration): print the runner facts that rules 79 and 81 assert (#3237) bvandeusen 2026-08-31 08:20:11 -04:00
  • 9d8104f7a5 fix(embeddings): key_share alone is FOR NO KEY UPDATE, not FOR KEY SHARE (#3262) bvandeusen 2026-08-31 08:13:29 -04:00
  • 7827b4ce63 fix(embeddings): the index refresh loses the race it used to deadlock (#3262) bvandeusen 2026-08-31 08:09:09 -04:00
  • 69ce7afc45 fix(ci): /api/version reported the channel where the build belongs (rule 149) bvandeusenandClaude Opus 5 2026-08-31 00:45:22 -04:00
  • b267037911 Two milestones: a note can carry its own check (317), and a rule keeps what it used to say (323) (#135) bvandeusen 2026-08-31 00:01:15 -04:00
  • 7985f8c7d7 fix(scribe): a delete must not depend on the lookup that names it (#3273) bvandeusenandClaude Opus 5 2026-08-30 13:17:52 -04:00
  • efabba58dd fix(rules): the staleness signal must not wait for prior art to match (#3244) bvandeusenandClaude Opus 5 2026-08-30 13:10:04 -04:00
  • 5c9bb40777 feat(rules): a session is told when its rules move under it (#3244, milestone 323 step 5) bvandeusenandClaude Opus 5 2026-08-30 13:02:00 -04:00
  • a8b2040216 feat(rules): the edit history is visible in the slide-over (#3243, milestone 323 step 4) bvandeusenandClaude Opus 5 2026-08-30 12:52:07 -04:00
  • 0704988528 feat(rules): the history is readable — service, REST and MCP (#3242, milestone 323 step 3) bvandeusenandClaude Opus 5 2026-08-29 23:46:15 -04:00
  • 255c43a8fe fix(tests): the rule-history fixture must not delete a book the embedder is still writing (#3241) bvandeusenandClaude Opus 5 2026-08-29 23:28:03 -04:00
  • 6fa66f202b feat(rules): an edit leaves behind what it replaced (#3241, milestone 323 step 2) bvandeusenandClaude Opus 5 2026-08-29 23:01:16 -04:00
  • 7a0dc93270 fix(tests): the rule-version round trip must not touch Postgres after dispose (#3240) bvandeusenandClaude Opus 5 2026-08-29 18:41:18 -04:00
  • 9006affda8 feat(rules): a rule keeps what it used to say — rule_versions (#3240, milestone 323 step 1) bvandeusenandClaude Opus 5 2026-08-29 18:38:16 -04:00
  • 9657478500 docs(notes): the guidance gains the sharper test and the three false candidates (#3180, milestone 317 step 6) bvandeusen 2026-08-29 00:16:18 -04:00
  • 1d65e98ac2 docs(notes): the surfaces say WHEN a note earns a check, and a guard keeps them saying it (#3168, milestone 317 step 5) bvandeusen 2026-08-29 00:10:43 -04:00
  • 1ec44071d2 feat(ui): a note's check is editable, dated and sweepable (#3167, milestone 317 step 4) bvandeusen 2026-08-28 22:04:00 -04:00
  • b51621fca7 fix(tests): the sweep assertions read the WHERE clause, not the SELECT list (#3166) bvandeusen 2026-08-28 16:59:41 -04:00
  • 8489206224 feat(notes): the sweep — which notes assert a fact nobody has confirmed (#3166, milestone 317 step 3) bvandeusen 2026-08-28 16:39:50 -04:00
  • 4736a0a0ba fix(tests): the recurrence stand-ins come from fake_note, not a bare MagicMock (#3164) bvandeusen 2026-08-28 16:01:28 -04:00
  • 700ef20eb0 feat(notes): a note's check is writable through both doors, and empty means empty (#3164, milestone 317 step 2) bvandeusen 2026-08-28 15:42:12 -04:00
  • b134fe9aa1 fix(tests): the column guard names join tables as _BACKED_UP holds them (#3182) bvandeusen 2026-08-28 15:24:38 -04:00
  • a6ef3a6a5a fix(backup): a restore stops flattening the record vocabulary, and a column guard stops the next one (#3182) bvandeusen 2026-08-28 15:22:50 -04:00
  • 2263fd04a4 fix(tests): the notes table has 27 columns — deleted_batch_id is the second deliberate exclusion (#3165) bvandeusen 2026-08-28 14:55:44 -04:00
  • 2065781302 feat(notes): a note can carry its own check — verify_with, expires_when, verified_at (#3165, milestone 317 step 1) bvandeusen 2026-08-28 14:54:07 -04:00
  • 454c617ca0 docs(models): the record-splitting rule gets a findable home — note 3163 (#3128 rec 9) bvandeusen 2026-08-28 13:11:02 -04:00
  • f80401d58e fix(knowledge): the browse vocabulary catches up three kinds, and a snippet's mirror survives the generic door (#3128 recs 2-6) bvandeusen 2026-08-28 12:06:43 -04:00
  • d0a2733cb6 fix(design): text on a tint of itself now clears AA app-wide, and the check gates it (#3141) bvandeusenandClaude Opus 5 2026-08-27 21:38:09 -04:00
  • 93d660b710 Tool disambiguators, kind badges, and a badge layer that clears AA (#3123, #3124, #3132) bvandeusen 2026-08-27 21:28:48 -04:00
  • ce1376edc9 refactor(ui): the badge layer gets one owner per shape (#3132 items 1-3) bvandeusenandClaude Opus 5 2026-08-27 20:41:58 -04:00
  • 0c74dc8275 fix(design): badge text clears AA — the ladder was painting a hue on a tint of itself (#3132) bvandeusenandClaude Opus 5 2026-08-27 19:11:14 -04:00
  • a0b54ff6a3 feat(ui): task rows show their kind — a badge for issue and spike (#3124) bvandeusenandClaude Opus 5 2026-08-27 18:43:45 -04:00
  • 16805ca22c docs(mcp): every create_* tool says what it is NOT for (#3123) bvandeusenandClaude Opus 5 2026-08-27 18:18:42 -04:00
  • 056c7c75da A task's kind is correctable — the Kind select stops lying (#3129) bvandeusen 2026-08-27 18:05:16 -04:00
  • 63036ed52e merge: bring main's rebased history into dev after PR #132 bvandeusen 2026-08-27 18:00:32 -04:00
  • 2e39dca9cf fix(tasks): import minted_kind by name — a stubbed service must not stub the guard (#3129) bvandeusenandClaude Opus 5 2026-08-27 15:57:06 -04:00
  • 69d93898d9 fix(tasks): a task's kind is correctable — the Kind select stops lying (#3129) bvandeusenandClaude Opus 5 2026-08-27 15:55:04 -04:00
  • 5aabc31ee7 Rules that can go stale say so — verify_with, expires_when, the sweep, and task_kind='spike' (milestone 312, steps 1–5) bvandeusen 2026-08-27 13:43:57 -04:00
  • 4be1eaecf6 fix(tests): a Note's is_task cannot be set — status is what makes one (#3099) bvandeusenandClaude Opus 5 2026-08-27 12:05:07 -04:00
  • e2e64b94c0 feat(tasks): task_kind gains 'spike' — the investigation, not the change (#3099, milestone 312 step 5) bvandeusenandClaude Opus 5 2026-08-27 12:02:41 -04:00
  • 3345be84d1 feat(rules): the check is editable, visible, and sweepable in the UI (#3098, milestone 312 step 4) bvandeusenandClaude Opus 5 2026-08-27 11:53:35 -04:00
  • 35c632f834 docs(rules): a project rule is shaped differently, not just scoped differently (milestone 312) bvandeusenandClaude Opus 5 2026-08-27 11:29:10 -04:00
  • b97f57ee7f feat(rules): the staleness sweep — which standing rules assert a fact nobody has confirmed (#3097, milestone 312 step 3) bvandeusenandClaude Opus 5 2026-08-27 10:49:47 -04:00
  • 874f7cacdb test(rules): the kwargs assertion learns about clear (#3096, milestone 312 step 2) bvandeusenandClaude Opus 5 2026-08-27 09:31:30 -04:00
  • 91b34619f9 feat(rules): the write path carries a rule's check, and empty finally means empty (#3096, milestone 312 step 2) bvandeusenandClaude Opus 5 2026-08-27 09:28:03 -04:00
  • 3d4f5be711 feat(rules): a rule can carry its own check — verify_with, expires_when, verified_at (#3095, milestone 312 step 1) bvandeusenandClaude Opus 5 2026-08-27 07:44:13 -04:00
  • 15659e2c57 fix(tests): a Note's is_task cannot be set — status is what makes one (#3099) bvandeusenandClaude Opus 5 2026-08-27 12:05:07 -04:00
  • 88e9c0b0bd feat(tasks): task_kind gains 'spike' — the investigation, not the change (#3099, milestone 312 step 5) bvandeusenandClaude Opus 5 2026-08-27 12:02:41 -04:00
  • c83bedf3be feat(rules): the check is editable, visible, and sweepable in the UI (#3098, milestone 312 step 4) bvandeusenandClaude Opus 5 2026-08-27 11:53:35 -04:00
  • 9d7485df2d docs(rules): a project rule is shaped differently, not just scoped differently (milestone 312) bvandeusenandClaude Opus 5 2026-08-27 11:29:10 -04:00
  • 410d616c22 feat(rules): the staleness sweep — which standing rules assert a fact nobody has confirmed (#3097, milestone 312 step 3) bvandeusenandClaude Opus 5 2026-08-27 10:49:47 -04:00
  • 469b43f222 test(rules): the kwargs assertion learns about clear (#3096, milestone 312 step 2) bvandeusenandClaude Opus 5 2026-08-27 09:31:30 -04:00
  • c61925be76 feat(rules): the write path carries a rule's check, and empty finally means empty (#3096, milestone 312 step 2) bvandeusenandClaude Opus 5 2026-08-27 09:28:03 -04:00
  • e08e999406 feat(rules): a rule can carry its own check — verify_with, expires_when, verified_at (#3095, milestone 312 step 1) bvandeusenandClaude Opus 5 2026-08-27 07:44:13 -04:00
  • 0e5aed58a9 Rules become findable: canon catalog, triggers, tiers, edges, retrieval, surfacing (milestone 307, steps 1–5) (#131) bvandeusen 2026-08-26 17:12:40 -04:00
  • 02c1e37620 feat(rules): the write path can notice a standing rule it was never given (#3031, milestone 307 step 5, hook arm) bvandeusenandClaude Opus 5 2026-08-26 16:35:36 -04:00
  • 4585cda3ff fix(rules): import or_ in rulebooks — the tier gate used it unimported (#3031) bvandeusenandClaude Opus 5 2026-08-26 15:13:40 -04:00
  • cd9aa87aa4 feat(rules): tier 1 preloads, tier 2 arrives by area — and a split rule can no longer be read half-way (#3031, milestone 307 step 5) bvandeusenandClaude Opus 5 2026-08-26 15:10:41 -04:00
  • 6ada97bb0b fix(rules): resolve the Rule forward ref for ruff and readers (#3030) bvandeusenandClaude Opus 5 2026-08-26 15:03:40 -04:00
  • 95a37318fc feat(rules): rules become findable by meaning (#3030, milestone 307 step 4) bvandeusenandClaude Opus 5 2026-08-26 15:00:49 -04:00
  • 682bea5257 fix(rules): the third row literal — fetchRules builds a list row too (#3029) bvandeusenandClaude Opus 5 2026-08-26 14:26:20 -04:00
  • 8b60d552d2 feat(rules): the rule editor asks when it applies, and the list shows its age (#3029, milestone 307 step 3, UI) bvandeusenandClaude Opus 5 2026-08-26 14:23:40 -04:00
  • ffb7a0fe38 feat(rules): both doors carry the trigger, the tier, the areas and the edges (#3029, milestone 307 step 3, surfaces) bvandeusenandClaude Opus 5 2026-08-26 14:17:41 -04:00
  • 6ddb8bf859 feat(rules): a rule can say when it applies, which area it is about, and what it belongs with (#3029, milestone 307 step 3, schema) bvandeusenandClaude Opus 5 2026-08-26 14:11:32 -04:00
  • 67874268bb test(systems): move the name-gate cases to the service the gate moved into (#3028) bvandeusenandClaude Opus 5 2026-08-26 13:02:09 -04:00
  • c58529718b feat(systems): the catalog reaches the moment a name is minted, and gets a face (#3028, milestone 307 step 2) bvandeusenandClaude Opus 5 2026-08-26 12:58:30 -04:00
  • 879ef3053e fix(systems): the bootstrap ask reads the catalog, so its test must supply one (#3027) bvandeusenandClaude Opus 5 2026-08-26 12:34:29 -04:00
  • a97547fbc6 feat(systems): the area vocabulary becomes a global table so a rule can point at one (#3027, milestone 307 step 1) bvandeusenandClaude Opus 5 2026-08-26 12:31:18 -04:00
  • 6b1f5e8031 Merge pull request 'Three fixes where the capability already existed and only the door was missing (#2782, #2975, #2278)' (#130) from dev into main bvandeusen 2026-08-24 07:56:44 -04:00
  • a8f35e465e refactor(plugin+tests): the last two parallel-family gaps — pageable list tools, one config preamble (#2278) bvandeusenandClaude Fable 5 2026-08-24 01:28:07 -04:00
  • 64bfa5725f feat(telemetry): a read surface over retrieval_logs — the tuning loop had no read half (#2975) bvandeusenandClaude Fable 5 2026-08-23 22:48:54 -04:00
  • 446d6da0d7 fix(snippets): an annotated record is not a diverged one — a standing verdict vouches at its commit (#2782) bvandeusenandClaude Fable 5 2026-08-23 22:36:04 -04:00
  • 136dbc16a6 Merge pull request 'Dead CSS deleted, and the instrument that found it sharpened (#2962, #2970)' (#129) from dev into main bvandeusen 2026-08-23 21:34:17 -04:00
  • 6871c25445 docs(frontend): the task-body comment no longer points at a class that was deleted (#2962) bvandeusenandClaude Fable 5 2026-08-23 21:32:11 -04:00
  • 57f6982f56 test(ledger): the transition/prefix references clear the flag end to end; plugin 0.1.45 (#2970) bvandeusenandClaude Fable 5 2026-08-23 21:30:21 -04:00
  • df18e897af feat(ledger): the consumer map reads transition names and concatenated prefixes (#2970) bvandeusenandClaude Fable 5 2026-08-23 21:27:27 -04:00
  • 4179f3e560 refactor(frontend): the second sweep — scoped rules that no longer match their own template (#2962) bvandeusenandClaude Fable 5 2026-08-23 21:21:43 -04:00
  • c5faaf38fb refactor(frontend): delete the dead CSS the consumer map surfaced — 102 classes, 588 lines (#2962) bvandeusenandClaude Fable 5 2026-08-23 21:16:06 -04:00
  • 649fdff2ea Merge pull request 'The CSS pay-down: 72 name families derived or dismissed with the consumer map in hand (milestone 302 step 4)' (#128) from dev into main bvandeusen 2026-08-23 21:03:33 -04:00
  • 9190fa0f10 refactor(frontend): the pay-down edits the first script dropped after its assertion stop — SharedWithMe/ProjectView page-header+empty-msg remainders, DesignSystems/Settings field-hint+.input trims, pane form-buttons deletions (milestone 302 step 4) bvandeusenandClaude Fable 5 2026-08-23 17:34:07 -04:00
  • 6fb0cb38a5 refactor(frontend): CSS pay-down, derive batch (milestone 302 step 4) — page-header, error-msg/state-msg/empty-msg, empty-title/empty-sub, required, field-hint recipes into components.css; form-buttons into rules-shared.css; scoped copies trimmed to remainders/overrides; the three views' .input becomes fs-input + width/box-sizing remainder (canon #2336) bvandeusenandClaude Fable 5 2026-08-23 17:30:43 -04:00
  • cba542a3ec Merge pull request 'Hooks say when Scribe didn't answer; the CSS consumer map (milestone 302 steps 1–3)' (#127) from dev into main bvandeusen 2026-08-23 14:18:32 -04:00
  • c28c87c39e test(ledger): the consumer-map integration test owns its unreferenced rule — the seeded button.css row vanishes under the test's own tree (#2936) bvandeusenandClaude Fable 5 2026-08-23 14:09:04 -04:00
  • 8664d8ad14 feat(ledger): the consumer map surfaces — every css row carries used_by on list_shapes, flag="unused-css" (the map's negative space, surfaced never deleted), derive groups and the write-path family carry consumers, the derive line says "used by N template(s)", coverage payload unused_css + the standing block; docs, SKILL, plugin 0.1.44; the two step-2 tests expected 5 edges where fan-out makes 6 (milestone 302 step 3, #2936) bvandeusenandClaude Fable 5 2026-08-23 14:03:35 -04:00
  • ffbdf19116 feat(ledger): the CSS consumer map — code_shape_consumers edges (shape → file whose markup names the class, count), migration 0086, resolve_consumers (own-file row when the template defines the class, else every other definition), sync_repo_consumers rebuilt from the archive on every refresh, consumers_of; derived, so not backed up (milestone 302 step 2, #2935) bvandeusenandClaude Fable 5 2026-08-23 13:59:55 -04:00
  • dffbf43d84 feat(coverage): class_references + scan_archive — each template-bearing file's class tokens (static class=/className=, Vue :class object/array/ternary, React className={…}, Svelte class:x) read in the same tar walk as definitions; the CSS consumer map's extractor (milestone 302 step 1, #2934) bvandeusenandClaude Fable 5 2026-08-23 13:57:13 -04:00
  • 31383bcebe test(hooks): the two tests that read a refused connection as "nothing recorded" now answer through a sink, and the silence case removes the shape it had left behind (#2932) bvandeusenandClaude Fable 5 2026-08-23 11:05:42 -04:00
  • 0ab94b2a00 fix(plugin): write-path hooks say when Scribe did not answer — once per outage, shared marker, record nudge withheld on an unanswered call; check_plugin allows exactly that line when unreachable; plugin 0.1.43 (#2932) bvandeusenandClaude Fable 5 2026-08-23 10:59:54 -04:00
  • 9c00a4b6e1 fix(plugin): after-write hook waits 8s on the prior-art call — a cold-start round-trip (~4.6s after a redeploy) failed open at 4s and dropped the ledger line on the first write; plugin 0.1.42 bvandeusenandClaude Fable 5 2026-08-23 01:06:08 -04:00
  • 144192754c Merge pull request 'Derive pay-down + CSS families by name (milestone 299 steps 5–6, note #2917)' (#126) from dev into main bvandeusen 2026-08-23 00:32:07 -04:00
  • 85111442a6 feat(ledger): CSS derive families are names, never bodies — name floor 2 for css, dup: grouping sym-only; derive line says "repeated name" and dismisses scoped-css; plugin 0.1.41 (note #2917) bvandeusenandClaude Fable 5 2026-08-23 00:21:17 -04:00
  • a2b377b74d chore(plugin): 0.1.40 — the extractor rule change in scribe_defs.sh ships to the executing cache (#2904) bvandeusenandClaude Fable 5 2026-08-22 15:12:54 -04:00
  • 590203a293 refactor(tests+frontend): one http_sink helper for the hook tests; apiErrorMessage replaces ten hand-rolled error-body parses; type X, import specifiers are not definitions (#2904, milestone 299 step 6) bvandeusenandClaude Fable 5 2026-08-22 15:07:23 -04:00
  • 449f437048 refactor(frontend): the near-duplicate report rules shared via dup-report.css — KnowledgeView and SnippetListView carried identical scoped copies (#2903, milestone 299 step 5, part 2) bvandeusenandClaude Fable 5 2026-08-22 15:03:12 -04:00
  • 48f0630dab test(coverage): the two-declaration floor check compares two multi-line rules — formatting is part of the fingerprint, as before (#2903) bvandeusenandClaude Fable 5 2026-08-22 14:59:38 -04:00
  • a72605de8f refactor(frontend): the last pay-down, part 1 — three dead views deleted, editor rules shared, .page-container + .fs-input canon, rules-shared.css; a one-declaration CSS body is not a shape (#2903, milestone 299 step 5) bvandeusenandClaude Fable 5 2026-08-22 14:55:28 -04:00
  • 4fa8158329 Merge pull request 'Self-surfacing DRY — duplicate families named at the write and on arrival, tool-agnostic (milestone 299 steps 1–4)' (#125) from dev into main bvandeusen 2026-08-22 13:41:24 -04:00
  • 10687120a5 docs(self-surfacing): derive groups are drift not audit material — shape-accounting + reusing-code skills, static floor, plugin README (after-write hook), api-reference rows (#2902, milestone 299 step 4) bvandeusenandClaude Fable 5 2026-08-22 13:38:06 -04:00
  • b88225eeb3 fix(hooks): after-write dedups its channel files; prior-art tests follow the extractor and skip list into scribe_defs.sh (#2901) bvandeusenandClaude Fable 5 2026-08-22 13:38:06 -04:00
  • 5925335ca0 feat(plugin): after-write hook — PostToolUse on Bash diffs the working tree and runs the prior-art + ledger arms on what was just written; shared scribe_defs.sh; plugin 0.1.39 (#2901, milestone 299 step 3) bvandeusenandClaude Fable 5 2026-08-22 13:35:45 -04:00