Commit Graph

2445 Commits

Author SHA1 Message Date
Claude (adr007-steward) 12642e40b6 docs(adr): ids sort in natural order everywhere (improvise-cq1q.1)
Defines natural order, applies it to the display suffix, and adds a
Status row for the conflict with CellKey's String::cmp order: RecordHash
values change and saved data lines reorder; the loader canonicalises.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-10-09 10:06:59 -07:00
Claude (adr007-steward) cb73ad3d55 docs(adr): the _Measure section lists every stored measure (improvise-cq1q.1)
Formula measures stay declared by their ## Formulas lines.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-10-09 10:06:14 -07:00
Claude (adr007-steward) c10eca98e0 docs(adr): keep the _Measure section for stored measures, and mark ADR 007's amendment accepted (improvise-cq1q.1)
The Opus review of 46c8a967: a new-version file had nowhere to declare
its stored measures. The ## Category: _Measure section stays and lists
them with displays and ids; its header declares nothing. Clause 6 says
input text means files and command-language text, distinct from
interactive typing. The sort note says plain string order, not numeric.

The user approved the amendment on PR #326 (2026-10-09), so its Status,
the accepted ADR's pointer, core.md section 20 and the doc-site title
no longer say proposed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-10-09 10:04:28 -07:00
Claude (adr007-steward) 46c8a967bc docs(adr): a display suffix skips a number a literal display already holds (improvise-cq1q.1)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-10-09 09:52:14 -07:00
Claude (adr007-steward) 1df5f99e35 docs(adr): equal displays in a scope are shown with a gapless " #2" suffix in id order (improvise-cq1q.1)
Replaces the "one permitted exception" to display uniqueness for a
formula beside a stored measure of the same name: Profit and Profit #2.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-10-09 09:50:15 -07:00
Claude (adr007-steward) 38058ec73f docs(adr): move ADR 007's amendment to its own file, stating only what it changes (improvise-cq1q.1)
On the user's instruction an ADR states only what its decision changes,
and mentions an existing convention only where it conflicts. The accepted
ADR 007 is restored to main's text plus a one-line pointer, so merging
this PR keeps it; the amendment is context/adr/007-stable-identities-
amendment-1.md (280 lines, from 784), with a table of the accepted rules
it replaces. The doc site lists the new file, and core.md section 20
points at it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-10-09 09:43:16 -07:00
Claude (adr007-steward) 98db007e71 docs(adr): interactive input matches a display or an id when the pick is unambiguous (improvise-cq1q.1)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-10-09 09:41:00 -07:00
Claude (adr007-steward) c7f8d0a3cd docs(adr): delete ADR 007's remaining open questions (improvise-cq1q.1)
The duplicate measure display follows from the profit-<n> rule and is
stated as its consequence; where stored measures are listed is the
format's existing concern; interactive typing is UI behaviour, not
identity. The Open questions section now says None.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-10-09 09:40:36 -07:00
Claude (adr007-steward) 4778d9741b docs(adr): virtual categories and measures are defined by criteria, never declared (improvise-cq1q.1)
Their ids and displays are hardcoded; an old file's _Measure names are
recognised, not migrated as declarations. Open question 2 narrows to
where a new-version file declares the stored measures.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-10-09 09:39:23 -07:00
Claude (adr007-steward) 209270542c docs(adr): a formula never merges into a stored measure; it takes profit-<n> (improvise-cq1q.1)
Clause 1 states it, with what removal leaves. Open question 1 is
replaced by the residue: two measures then share a display, which
clause 2's uniqueness rule forbids.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-10-09 09:38:06 -07:00
Claude (adr007-steward) ccc6751886 docs(adr): say plainly that a formula line's category tag is an id and _measure is implicit (improvise-cq1q.1)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-10-09 09:20:20 -07:00
Claude (adr007-steward) 8405f5c18b docs(adr): fold the user's answers on ASCII ids, virtual categories and scripts into ADR 007 (improvise-cq1q.1)
- Id alphanumerics are ASCII and include -: slugify maps everything
  outside a-z, 0-9 and - to _, collapses _, trims _ and - at both ends,
  prefixes n before a digit; the id syntax, examples and the suffix /
  hyphenated-slug collision rule follow.
- A file never declares a virtual category and refers to one by its id.
- Only CSV import and the .improv loaders read display names in input
  text; command-language text, from any source, names things by id.
- The formula line is shown before and after; the dimension spelling and
  the [_measure] tag follow from the rules, so that question is deleted.
- The Opus review of 2dfe0886: each measure is keyed by one handle, and
  the shared-display case moves to an open question; views join the
  things a formula may name.

Open questions are now three: a formula and a stored measure with the
same display, where stored measures are declared, and whether interactive
typing keeps a display stage.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-10-09 09:18:17 -07:00
Claude (adr007-steward) 2dfe088668 docs(adr): state that a hand-written id may carry the -<n> suffix, and keep slugs in the id alphabet (improvise-cq1q.1)
Codex's review of 6e467878. The suffix question followed from two
decided rules (collisions take -<n>; a hand-written id obeys the
generated syntax), so clause 4 now states the id syntax and the question
is deleted. Step 2 says the slug ends in a-z, 0-9 and _ whichever reading
of "alphanumeric" is chosen. The remaining questions are renumbered 1-4.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-10-09 09:05:01 -07:00
Claude (adr007-steward) 6e46787887 docs(adr): settle ADR 007's eleven open questions and state the decisions (improvise-cq1q.1)
The decisions are written into the clauses as plain design, tagged
[Amendment]: a measure formula's id is the measure's id; formulas may refer
to any id-bearing thing; ids always win, with the display as a preview;
user interfaces accept display names and scripts use ids and display_for;
slugify replaces every non-alphanumeric character with _, collapses _,
trims _ at both ends and prefixes n before a digit; a hand-written id obeys
the generated syntax; a leading _ is reserved for virtual ids, which are
lower case and never written to .improv; records-mode positions are values;
groups have a display and ordinary ids.

All eleven questions are deleted. Five new ones are open: the -<n> suffix
in hand-written ids, ASCII "alphanumeric", how a file records the virtual
categories, the dimension formula line and [_measure] tag, and which
headless entry points are scripts. core.md section 20's note follows the
new slug rules.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-10-09 09:01:10 -07:00
Claude (adr007-steward) 1190c80efe docs(adr): tag every ADR 007 change to accepted text as [Amendment] (improvise-cq1q.1)
The Status now says the tag is the complete list of proposed rules, and its
table gains the regression test's step 3. Clause 12's test keeps the
accepted "commit the unedited text" with the amendment's edit-a-non-name step
tagged; the outside-_Measure real-item rule, the formula-collision example
and the East/East_ collision sentences are tagged; the "exactly one id"
sentence in clause 2 is restored; "other entities" loses the added
"virtual"; the title drops "and groups". core.md section 20 and the id.rs
test evidence cite ADR clauses instead of answer numbers.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-10-08 23:22:01 -07:00
Claude (adr007-steward) fa26ec1e41 docs(adr): condense ADR 007 to status, context, decision and open questions (improvise-cq1q.1)
On the user's instruction the ADR no longer carries the decision process:
no answer rounds, quotes, answer numbers or revision history. The accepted
decisions and the proposed amendment are stated as design, with each
amendment rule marked [Amendment] and a table of what it replaces. Settled
questions are deleted; the eleven open ones are renumbered from 1 and
written for a first-time reader. The verbatim record of every answer moves
to a provenance comment on PR #326.

Folds in the delta review of 74efa481: a group's identifier is an id, and
whether it also has a display is now an open question; formulas referring
to anything in a typed context is stated without deciding what that
allows; the Decision's opening and Rejection::Gone include groups.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-10-08 23:09:04 -07:00
Claude (adr007-steward) 635a4e8880 Merge commit 'a08899aa0c8d84aa1e5856044bf57ca7d05d77b4' into steward/adr007-rev9-batch2 2026-10-08 23:04:27 -07:00
Ed Langley a08899aa0c Merge pull request #335 from fiddlerwoaroof/docs/agent-rules-merge-main
docs(wave): agents merge gh/main early and often
2026-10-08 22:55:58 -07:00
Claude (adr007-steward) 74efa48196 docs(adr): fold the user's nine answers on 068e4130 into ADR 007 revision 9 (improvise-cq1q.1)
Answers 37-45 in a ninth round of "What the user decided". Q24 and Q25 are
answered, slugify's steps are rewritten (whitespace to _, strip, collapse
runs of _, trim leading and trailing _ and -), groups get ids (overriding
answer 9), and Q23 is restated around "a formula is a derived measure" with
a worked example. Q23 stays open; Q26-Q34 are new. core.md section 20 notes
that slugify predates the proposed rules.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-10-08 22:38:52 -07:00
Claude (adr007-steward) f2ddc2bde6 Merge commit 'f0fb6880b084c043e9eb614713e1209667a42a81' into steward/adr007-rev9-batch2 2026-10-08 22:29:42 -07:00
Claude (rules-merge-main) 2e5b0e9234 docs(wave): rule 9 gates every merge of main and scopes stacked PRs
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-10-08 22:08:02 -07:00
Claude (rules-merge-main) 74e66b34bb docs(wave): agents merge gh/main early and often (rule 9)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-10-08 21:41:30 -07:00
Ed Langley f0fb6880b0 Merge pull request #320 from fiddlerwoaroof/docs/l2b8-adr-exact-decimal
docs(adr): ADR 005 exact decimal arithmetic (proposed) (improvise-l2b8)
2026-10-08 21:32:41 -07:00
Claude (adr5-steward) 46b6b2128a docs(adr): ADR 005 dates the 8,192-bit ceiling proposal to revision 6 (improvise-l2b8)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-10-08 21:22:38 -07:00
Claude (adr5-steward) cb5d6adee3 docs(adr): ADR 005 stops attributing the 8,192-bit ceiling and a K rationale to the user (improvise-l2b8)
BLOCK on e258599d: 8,192 is the steward proposal; the user gave no reason for K = 8. Carry-bit nit.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-10-08 21:15:45 -07:00
Claude (adr5-steward) e258599d1c docs(adr): ADR 005 sets K = 8 on the user's second answer to question 16 (improvise-l2b8)
Revision 8. "Ok, let's drop K back to 8" supersedes "let's do k = 32". Figures re-derived from the appendix.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-10-08 21:06:24 -07:00
Claude (adr5-steward) 76fc5a19ff docs(adr): ADR 005 states the recompute scale, the Eager exposure under K = 32, and the lcm method (improvise-l2b8)
Three non-blocking items from the review of 1aa4537f.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-10-08 21:03:29 -07:00
Claude (adr5-steward) 1aa4537f62 docs(adr): ADR 005 reconciles question 13 to two exceptions (improvise-l2b8)
Codex P2 on be9de2ee: the K cutoff is the second exception to exact-iff-fits; <=K grouped read is not one. Flags the override as a reading.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-10-08 20:52:51 -07:00
Claude (adr5-steward) be9de2eecd docs(adr): ADR 005 answers three Copilot findings on 66f317e1 (improvise-l2b8)
Detect real precision loss, not a scale decrease; Overflow bullet follows Q13 (b); SUM states both exactness conditions.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-10-08 20:49:29 -07:00
Claude (adr5-steward) 3fbac6dbfa docs(adr): ADR 005 cites ADR 007 as merged via #210 and #326 as a proposed amendment (improvise-l2b8)
Codex P2 on 66f317e1: #326 is open, revision 9 is not accepted.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-10-08 20:43:54 -07:00
Claude (adr5-steward) 66f317e1b8 Merge remote-tracking branch 'gh/main' into adr5-steward-b2 2026-10-08 20:41:13 -07:00
Claude (adr5-steward) 5f0bbb837b docs(adr): ADR 005 folds in the user's answer to question 16, K = 32 (improvise-l2b8)
Revision 7. Q16 decided (a), K = 32, over the K = 8 recommendation; figures
re-derived from the appendix, none new. Adds Relations to other ADRs (007, 008,
009) with flagged conflicts.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-10-08 20:41:13 -07:00
Claude (adr7-steward) 068e413071 docs(adr): mark CategoryRow pending Q23 and qualify answer 5's fit (improvise-cq1q.1)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-10-05 14:07:05 -07:00
Claude (adr7-steward) 769f7b251f docs(adr): put answers 35 and 36 on their true head and mark Q23's premises (improvise-cq1q.1)
Merge the eighth and ninth rounds (all four comments are on 4aed8c07),
quote the anchored line, drop the lean toward option (c), add pending-Q23
markers, and record the review's non-blocking points as flagged text.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-10-05 13:49:46 -07:00
Claude (adr7-steward) 5385bb36bc docs(adr): fold answers 35 and 36, reopen Q23, add Q24 and Q25 (improvise-cq1q.1)
Measures get the id/display split and are the normal formula target;
dimension targets are rare. The mechanism is left to Q23 as options.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-10-05 13:31:14 -07:00
Claude (adr7-steward) e9659903d8 docs(adr): fold answers 33 and 34 into ADR 007 (improvise-cq1q.1)
Answer 33: typed names match ids first until a view-layer autocomplete
exists, reversing answer 31's order. Answer 34: "space" means whitespace
and a run of it becomes one underscore, overriding the ADR's U+0020 reading.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-10-05 13:28:07 -07:00
Claude (adr7-steward) 09deaeef2a Merge commit '50e1314d069a4f6e549cd7d9795b6491a89bf903' into adr7-steward-work 2026-10-05 13:25:44 -07:00
Ed Langley 50e1314d06 Merge pull request #334 from fiddlerwoaroof/docs/bookkeeping-2026-10-03
CI / Build all bundles (push) Has been cancelled
CI / Test and lint (host) (push) Has been cancelled
CI / Nix build (crate2nix) and the repo-stats pipeline (push) Has been cancelled
CI / wasm32 check (browser bundle crates) (push) Has been cancelled
CI / Browser JS unit tests (node --test) (push) Has been cancelled
CI / Knowledge base consistency (push) Has been cancelled
CI / Lint the harness crate (push) Has been cancelled
CI / Browser harness (OPFS contract + shell) (push) Has been cancelled
CI / Deploy to GitHub Pages (push) Has been cancelled
docs(context): repo-map and kb bookkeeping, 2026-10-03
2026-10-02 23:28:15 -07:00
Claude (bookkeeping) 91d9925494 docs(context): name the tests that guard the registry's name literals
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-10-02 23:21:49 -07:00
Claude (bookkeeping) 942888e0dc docs(context): correct gotchas 15 and 16 and drop the duplicate 8jk6.6 kb fact
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-10-02 23:15:02 -07:00
Claude (bookkeeping) dd1bf96e00 docs(context): fix the inventory rows and stale text the review blocked #334 on
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-10-02 23:07:47 -07:00
Claude (bookkeeping) 1da2695f1f docs(context): repo-map and kb bookkeeping for felo.13, 31oe.2/.3, 8jk6.3/.6 and stale-text fixes
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-10-02 22:57:38 -07:00
Ed Langley d571abbd8a Merge pull request #322 from fiddlerwoaroof/feat/8jk6.3-date-hierarchy
feat(import): a date column imports as one hierarchical category (improvise-8jk6.3)
2026-10-02 22:32:35 -07:00
Ed Langley 6693178530 Merge pull request #316 from fiddlerwoaroof/fix/31oe-cmdlang
fix(command): pipe-quoted arguments and refusals for unknown names (improvise-31oe.2, 31oe.3)
2026-10-02 22:30:46 -07:00
Claude (cmdlang) 8fa504fbdc Merge gh/main into fix/31oe-cmdlang; renumber cli.md §13/§14 to §14/§15
#321 added its own cli.md section 13, so this PR's sections become 14 (pipe
quoting, surplus arguments) and 15 (names the document lacks), with every
citation renumbered. The stale descriptions of the deleted unknown_* helpers in
cli.md, command.md and the test evidence now describe RequireKnown, and section
15 says a refused name stops the rest of a `:` line but not a headless one.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-10-02 22:00:38 -07:00
Claude (8jk63-fix) 581934886d Merge remote-tracking branch 'gh/main' into feat/8jk6.3-date-hierarchy
# Conflicts:
#	context/test-evidence/formula-and-io.md
#	crates/improvise-io/src/import/wizard.rs
#	src/main.rs
2026-10-02 22:00:32 -07:00
Ed Langley 8da5a3101b Merge pull request #333 from fiddlerwoaroof/fix/felo13-layout-quadratic
perf(layout): O(1) axis index, layout and widths cached across keypresses (improvise-felo.13)
2026-10-02 21:55:37 -07:00
Ed Langley 7e87970278 Merge pull request #321 from fiddlerwoaroof/fix/headless-import-refusals
fix(import): headless import refuses instead of silently succeeding (improvise-8jk6.4, 8jk6.5, 8jk6.6)
2026-10-02 21:41:07 -07:00
Claude (cmdlang) c99353777b fix(command): refuse a malformed coordinate on : and let a later segment see an earlier one (improvise-31oe.3)
PR #316 review blockers. A cursor fallback (clear-cell, yank, paste,
drill-into-cell) now answers only for coordinates that were omitted, so
`:clear-cell Type/Clothing Month/Feb junk` is refused instead of clearing the
cursor's cell. The unknown-name checks move from `execute` to a RequireKnown
effect run at apply time, so `:create-view Second . switch-view Second` is
accepted as `improvise cmd` accepts it. Also pins that a quoted `.` is an
argument.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-10-02 21:33:16 -07:00
Claude (8jk63-fix) 0c56a4b9a1 fix(cli): refuse a --split-date or --axis that names nothing it built (improvise-tpm8) 2026-10-02 21:33:01 -07:00