-
ee18b71aca
Text Projection 0.2.0: the gate was lossy, and the cause was one missing rule
Levi Neuwirth
2026-07-09 21:34:36 -0400
-
0ba9bb2dd8
Text Projection design gate: the companion the core spec delegates to
Levi Neuwirth
2026-07-09 21:13:40 -0400
-
3baf8d050d
Push 5 / P5: the missing inverse -- bytes back to an operation envelope
Levi Neuwirth
2026-07-09 20:59:43 -0400
-
567e8214a4
One tag vocabulary the compiler owns, and ratify the corpus in the companion
Levi Neuwirth
2026-07-09 20:32:35 -0400
-
a41596d329
Push 5 / P4: the decode conformance corpus, and the tag it could not read back
Levi Neuwirth
2026-07-09 20:16:15 -0400
-
09a7f62802
Make the exhaustive tests exhaustive, and stop the record overclaiming
Levi Neuwirth
2026-07-09 19:39:30 -0400
-
7de9e479c4
Push 5 / P3: fuzz the bundle wire, and find a lenient codec hiding behind a guard
Levi Neuwirth
2026-07-09 19:12:34 -0400
-
9596d1e824
Push 5 / P2: fuzz the ops decode surface, and find the guard's blind spot
Levi Neuwirth
2026-07-09 18:43:21 -0400
-
958fffad4e
The pitch/spelling undo unit is broader than the transpose, on purpose
Levi Neuwirth
2026-07-09 18:15:43 -0400
-
23521b4bcf
P13-S3: the engraved spelling set is a shared undo key, not the transpose's
Levi Neuwirth
2026-07-09 17:29:05 -0400
-
655cf8ef5b
TransposeInterval becomes undoable; the frozen Transpose stays un-undoable
Levi Neuwirth
2026-07-09 16:45:57 -0400
-
6369d331f1
A transposition moves the authored spelling; recording Propagated is not enough
Levi Neuwirth
2026-07-09 16:40:06 -0400
-
4228320f88
Transposition must refuse an extreme interval, not panic on it
Levi Neuwirth
2026-07-09 16:33:42 -0400
-
582b0ca234
File what Push 4a found and did not fix
Levi Neuwirth
2026-07-09 15:51:24 -0400
-
91a99b2093
Stop the conformance suite from authoring the frozen operation
Levi Neuwirth
2026-07-09 15:50:22 -0400
-
2740a6c53c
TransposeInterval: the faithful transpose, and the frozen one it replaces
Levi Neuwirth
2026-07-09 15:46:43 -0400
-
27c80a0d83
Pin the interval algebra on the type that already carried it
Levi Neuwirth
2026-07-09 15:29:44 -0400
-
357e8b9eeb
Push 4a design gate: pin the transpose algebra, freeze the old operation
Levi Neuwirth
2026-07-09 15:25:27 -0400
-
beb61fca2f
P13-I3: delete the hand-written notehead anchors; teach the extractor
Levi Neuwirth
2026-07-09 14:53:47 -0400
-
afb487c24d
P13-I2: Staff::default_clef is the fallback, not decoration
Levi Neuwirth
2026-07-09 14:47:42 -0400
-
b7dab0fd44
Pass 13 reopens; P13-I1: complete the ConstrainedLayoutIR listing
Levi Neuwirth
2026-07-09 14:42:32 -0400
-
24b6a34db9
Slurs: side from the stems, endpoints on the notes, apex clear of both
Levi Neuwirth
2026-07-09 13:58:56 -0400
-
7aa0b938e2
Stems point away from the middle line, and reach it
Levi Neuwirth
2026-07-09 13:47:47 -0400
-
86635e43e1
Two-sided inter-staff renegotiation, and the cascade defect it uncovered
Levi Neuwirth
2026-07-09 13:32:37 -0400
-
029039bf35
Straighten the QMC version story in the docs that assert it
Levi Neuwirth
2026-07-09 11:54:25 -0400
-
5b016f33b7
Two more glyph-members assumptions in the vertical-density axis (QMC 0.3.0)
Levi Neuwirth
2026-07-09 11:39:28 -0400
-
43215c7d67
The inter-staff gap band becomes a height model; fix a non-conforming metric
Levi Neuwirth
2026-07-09 11:16:31 -0400
-
ab411f4cae
Reconcile a process claim: park the listing gap, do not fake a Pass-13 row
Levi Neuwirth
2026-07-09 11:02:20 -0400
-
ced4b7255e
Rescope the band-ownership MUST to the constrained stage; ratify it
Levi Neuwirth
2026-07-09 11:00:09 -0400
-
fc411ea7ac
Ratify primitive band ownership in Chapter 7; scope canonical_bytes' doc
Levi Neuwirth
2026-07-09 10:50:10 -0400
-
efaebb9acd
Let the band model carry staff attribution instead of inferring it
Levi Neuwirth
2026-07-09 10:37:27 -0400
-
f7350362a3
Close the inter-staff residual risk: a three-staff cascade fixture
Levi Neuwirth
2026-07-09 10:20:35 -0400
-
b1bfe04d6c
Inter-staff review fix: attribute a curve by its arc, not its nearest glyph
Levi Neuwirth
2026-07-09 10:05:14 -0400
-
4132a7ac05
Inter-staff review fix: make staff attribution y-aware (stems tore off)
Levi Neuwirth
2026-07-09 09:42:51 -0400
-
3978225e06
Inter-staff slice 2/2: renegotiate the gaps between a system's staves
Levi Neuwirth
2026-07-08 23:04:25 -0400
-
f103641013
Inter-staff slice 1/2: a two-staff pressure fixture
Levi Neuwirth
2026-07-08 22:48:39 -0400
-
177bcdb43b
Optimal-break review fix: restore an overflow safety net in walk_region
Levi Neuwirth
2026-07-08 21:48:31 -0400
-
c818992835
Push 3 Standard-tier: optimal break search (replace greedy first-fit)
Levi Neuwirth
2026-07-08 21:29:08 -0400
-
0db005db9a
Vertical justification review follow-up: document + test the metric trade-off
Levi Neuwirth
2026-07-08 20:50:17 -0400
-
69e0430062
Push 3 Standard-tier: vertical justification (fill non-final pages)
Levi Neuwirth
2026-07-08 20:36:18 -0400
-
fea446a182
Justification review fix: keep stems attached to their noteheads
Levi Neuwirth
2026-07-08 19:54:18 -0400
-
7c038721d7
Push 3 Standard-tier: per-system justification (fill the content width)
Levi Neuwirth
2026-07-08 19:21:46 -0400
-
ca687d8e7e
Push 3 audit follow-up: modify anchor validation, spaced slur_shape, stale docs
Levi Neuwirth
2026-07-08 18:54:39 -0400
-
430214d619
Pass 13 — P13-D2: tombstone before the graph delete, closing the cue-cascade trail
Levi Neuwirth
2026-07-08 18:25:37 -0400
-
79c8e1da2e
Pass 13 — P13-D1: run the ledger re-anchor for undo-driven event tombstones
Levi Neuwirth
2026-07-08 18:17:51 -0400
-
382aff23a2
Pass 13 — P13-K1: reject a ModifyEvent introducing a never-minted system pitch
Levi Neuwirth
2026-07-08 18:08:48 -0400
-
cd998142f5
Pass 13 — P13-D3: reject spanners anchored to a missing region/measure
Levi Neuwirth
2026-07-08 18:01:08 -0400
-
e6308371d5
Push 3 slur review fix: measure slur_shape on whole slurs, not split fragments
Levi Neuwirth
2026-07-08 17:56:11 -0400
-
449dd2ef8e
Push 3 ratify: extend the slur-rendering requirement + refresh slur_shape
Levi Neuwirth
2026-07-08 17:33:11 -0400
-
7d61271069
Push 3 (slur quality) 3/3: measure slur_shape_penalty (off the 0.0 placeholder)
Levi Neuwirth
2026-07-08 17:28:28 -0400
-
586969125e
Push 3 (slur quality) 2/3: split break-spanning slur curves (de Casteljau)
Levi Neuwirth
2026-07-08 17:21:19 -0400
-
c5173d275e
Push 3 (slur quality) 1/3: render dashed/dotted slurs faithfully
Levi Neuwirth
2026-07-08 17:13:32 -0400
-
693150e43e
Schema major 2 Phase F: ratify repeat + slur rendering into Chapter 7
Levi Neuwirth
2026-07-08 16:23:12 -0400
-
28f210e16f
E2 follow-up: surface slur style deferral, conservative curve hit capsule
Levi Neuwirth
2026-07-08 16:07:13 -0400
-
81b7f42f0a
Schema major 2 Phase E2: slur curves + cubic-bézier primitive
Levi Neuwirth
2026-07-08 15:33:00 -0400
-
6651ae5fce
E1 follow-up: slot-relative glyph remap (same-slot spacing preserved)
Levi Neuwirth
2026-07-07 22:16:54 -0400
-
7a9bf42119
Schema major 2 Phase E1: repeat barlines + volta brackets render
Levi Neuwirth
2026-07-07 21:51:11 -0400
-
58eef41c7e
Phase D follow-up: anchor-site liveness and containment, all object kinds
Levi Neuwirth
2026-07-07 20:18:29 -0400
-
9b5339f8f3
Schema major 2 Phase D: the repeat-authoring pair (code tranche)
Levi Neuwirth
2026-07-07 20:06:18 -0400
-
b816144a43
Schema major 2 Phase D: ratify the repeat-authoring pair (spec tranche)
Levi Neuwirth
2026-07-07 17:31:51 -0400
-
437e0758a0
Phase B follow-up: real acceleration-snapshot path + base role bound
Levi Neuwirth
2026-07-07 16:54:06 -0400
-
794400c4c7
Schema major 2 Phase B: snapshot side + honest stamps (data-model fills)
Levi Neuwirth
2026-07-07 16:30:07 -0400
-
7c9d1c40aa
Schema major 2 Phase A: ratify the v2 data-model wire form (spec only)
Levi Neuwirth
2026-07-07 15:05:48 -0400
-
93f3dfde93
G-pass follow-up: unsupported pre-pass algorithm ids error
Levi Neuwirth
2026-07-07 11:32:05 -0400
-
e4edea6a3e
Pass 12 G-pass: code tranche (K3/K9/C4/H7) + review fixes
Levi Neuwirth
2026-07-07 11:21:22 -0400
-
aff1809421
Pass 12 G-pass: ratify the full batch (28 rows) — spec tranche
Levi Neuwirth
2026-07-07 10:23:30 -0400
-
7e7a43b050
Fuzzer P1: adversarial decode fuzz + strict-canonical decode + bounded counts
Levi Neuwirth
2026-07-07 09:42:04 -0400
-
7045a13a18
Schema major 1 Phase F: ratify engrave I8/I9/I10 + process trail
Levi Neuwirth
2026-07-06 17:40:38 -0400
-
64de92605f
Schema major 1 Phase E: resolved-layout length prefixes u64 -> u32
Levi Neuwirth
2026-07-06 13:20:40 -0400
-
4598f30ddd
Schema major 1 Phase D2: CreateRegion op-block major + cross-major read-only
Levi Neuwirth
2026-07-06 12:09:30 -0400
-
03758bbae0
Schema major 1 Phase D1: Instrument.range + Region flag (snapshot side)
Levi Neuwirth
2026-07-06 11:14:52 -0400
-
e199fabe3f
Schema major 1 Phase C: Canvas.layout_defaults + real migrate-on-read
Levi Neuwirth
2026-07-05 20:37:36 -0400
-
9f688cc592
Schema major 1 Phase B: the dispatch seam + version infrastructure (no-op)
Levi Neuwirth
2026-07-05 19:21:11 -0400
-
f4a2f1fdf0
Schema major 1 Phase A: ratify the v1 wire form + migration (spec only)
Levi Neuwirth
2026-07-05 18:05:38 -0400
-
9d28dd6615
Clear P12-I12: scope spacing_distortion to rhythmic columns (QMC 0.2.0)
Levi Neuwirth
2026-07-05 13:57:10 -0400
-
bc9fb27d36
Clear P12-I11: casting-off widow-rebalance evens the stub last system
Levi Neuwirth
2026-07-03 19:09:51 -0400
-
b9a9921d50
Phase 3 tranche 2: quality conformance companions, real metrics, multi-system click fix
Levi Neuwirth
2026-07-03 10:39:05 -0400
-
0316160395
Phase 3 tranche 1: casting-off, K1 schema-fill, value-restoring undo
Levi Neuwirth
2026-07-02 21:55:26 -0400
-
3e91a8302a
Push 4: Binary Format companion, F1 benches, subquadratic reduction order
Levi Neuwirth
2026-07-02 19:02:07 -0400
-
92aaccf7e2
Pushes 1+3: fix the MUST-level violations, wire the types-only machinery
Levi Neuwirth
2026-07-02 17:10:50 -0400
-
80e3fed99c
spec: Pass 12 tranche 1 — align spec text with ratified dispositions
Levi Neuwirth
2026-07-02 17:04:14 -0400
-
7f8d1a1f95
editor-core: a meter-derived default grid for click-to-insert
Levi Neuwirth
2026-06-30 17:38:58 -0400
-
1496c81302
editor-gui: undo/redo buttons and shortcuts
Levi Neuwirth
2026-06-30 17:21:02 -0400
-
285d7bfd95
editor-core: undo/redo by re-reducing the op-log prefix
Levi Neuwirth
2026-06-30 17:12:02 -0400
-
872ff03dd5
editor-gui: a duration palette over set_selection_duration
Levi Neuwirth
2026-06-30 16:32:30 -0400
-
0f298508af
editor-core: a set_selection_duration intent with make-room overwrite
Levi Neuwirth
2026-06-30 16:25:14 -0400
-
7387eeafc5
editor-core: resolved-spelling-aware chord stacking
Levi Neuwirth
2026-06-30 14:44:27 -0400
-
ba84df67fb
editor-gui: a pencil mode that clicks notes onto the staff
Levi Neuwirth
2026-06-30 13:17:32 -0400
-
ce37de8834
editor-core: an insert_note_at click→insert with make-room overwrite
Levi Neuwirth
2026-06-30 12:35:39 -0400
-
b3403c1d6a
ops: ModifyEvent materializes metric placement changes (trim/move)
Levi Neuwirth
2026-06-30 10:43:10 -0400
-
1ab3e5f298
editor-core: a position_at click→beat-grid horizontal inverse
Levi Neuwirth
2026-06-29 21:46:11 -0400
-
8bffd2f2fd
editor-core: a staff_pitch_at click→pitch vertical inverse
Levi Neuwirth
2026-06-29 18:56:34 -0400
-
e5efe22d5b
layout-ir: staff_step_pitch, the clef-relative position inverse
Levi Neuwirth
2026-06-29 17:28:23 -0400
-
9539b1652b
layout-ir, engrave: ledger lines
Levi Neuwirth
2026-06-29 17:12:56 -0400
-
c56ea4845f
editor-gui: a thin native (egui) editor over the editor-core seam
Levi Neuwirth
2026-06-29 11:47:25 -0400
-
d16435f2a9
editor-core: expose the resolved layout for renderers
Levi Neuwirth
2026-06-29 11:46:31 -0400
-
d6fb8afcdc
editor-core: override-carrying insert_note_after_selection
Levi Neuwirth
2026-06-29 10:35:35 -0400
-
703d9d7e35
editor-core: override-aware move_selection_staff_step
Levi Neuwirth
2026-06-29 10:30:21 -0400
-
f770f9acf2
editor-core: transaction-aware apply
Levi Neuwirth
2026-06-29 10:18:11 -0400
-
6a8de4bdea
editor-core: an insert_note_after_selection new-event intent
Levi Neuwirth
2026-06-28 17:20:34 -0400