Repository navigation
TXT1a-1a (v2): Ahem through HarfBuzz, and the zoomInput platform rule, restacked onto INL1a C2 - #101
Merged
Merged
Conversation
…fec4d6): txt1a-1a's own change (inl1a-compiler..txt1a-1a 4834ada88, without its regenerated outputs), applied cleanly: Ahem through HarfBuzz, and a planted platform rule that resolves the environment through zoomInput
…ixed point after 2 passes). Only the translated engines (the fault keys, platform rule and layout.ts environment call), the corpus digests and lanes.json host lanes (pass on ios and android) change; every capture, vector, break, pixel and profile output is byte-identical
…ine_breaker.cc) and text-shaper-host.ts hanKerningOf (han_kerning.cc) as references (PORT-0, on master since the branch was written); THIRD_PARTY_NOTICES.md unchanged (pnpm notices:gen)
…line boxes; review of #91) into txt1a-1a-v2. Conflicts: block.ts and harness.ts take TXT1a-1's shaping faults and master's order faults
# Conflicts: # packages/translate/harness/harness.ts
…-lanes-v2 merged forward): /tmp/heavy-lease.sh pnpm regen (fixed point after 3 passes). The translated engines and harnesses (shaping and order faults), corpus digests and lanes.json host lanes
… Conflicts: layout index.ts exports both TXT1a-1's shaping API and master's ANIM-b1 rt roots and transform helpers; pipeline.ts takes master's fixtureCompileInput and keeps TXT1a-1's removal of the Ahem-only referenceMeasurer (the engine lane measures through referenceShapedMeasurer)
…d fonts (TXT1a-1: the engine shapes Ahem through HarfBuzz over vendor/fonts/Ahem.ttf); pnpm regen's read trace refused dpr-vectors for reading Ahem.ttf outside its cache key, and hit-vectors and break-vectors lay text out the same way
…der-radius on iOS and Android, rebuilt from #80/#81 on master Carries the radius half of #80 (paint-radius.ts, its harness cases, vectors input generator and host plumbing) and #81 (parsing, computed values, lowering, emission, rounded background, border and clip stages, the radius-square plant, the pnt1-radius proofs and fixtures) onto master's per-feature registries, and adds -webkit-border-radius with Chrome's legacy two-value parsing, the radius-longhands fixture, and native refusals for rounded html, body and replaced elements.
…does not model rounded corners yet), the identity check strips the corner radii added since its base, and pnt1-radius covers radius-longhands
Commands: pnpm regen --skip lanes-host --skip tw-sweep (macos-26) and pnpm regen --only lanes-host (xcode-27), alternated to a fixed point, then pnpm regen --only tw-sweep (macos-26). Base: 61f24f0 Run: https://github.com/compiled-run/dragoncss/actions/runs/37382572332
…mily registers between pointer-events and transform, and a rounded box leaves the hit facts unchanged (the hit lane refuses rounded cases by name)
…a corner longhand is refused by name
# Conflicts: # packages/parity/src/hit-capture.ts
Commands: pnpm regen --skip lanes-host --skip tw-sweep (macos-26) and pnpm regen --only lanes-host (xcode-27), alternated to a fixed point, then pnpm regen --only tw-sweep (macos-26). Base: 4094fb1 Run: https://github.com/compiled-run/dragoncss/actions/runs/37389802133
# Conflicts: # packages/layout/test/paint-seams.test.ts # packages/translate/harness/harness.ts
…orthands/radius.ts cites css_parsing_utils.cc ConsumeRadii); no uncited replaced_painter.cc reference
…job.sh pnpm regen: fixed point after 3 passes, 27 steps)
…acy shorthand (PNT1-radius), so it leaves the still-refused list
…rget, as Chrome drops it; any other encoding, form or position is refused - css/at-rules/charset.ts: the handler, one line in AT_RULE_HANDLERS, and a 'drop' AtRuleOutcome the driver skips; the at-rule context carries its source text and whether it starts the sheet. - Fixture group charset: charset-utf8 and charset-utf8-upper must render as charset-none in Chrome (dragon/test/charset.test.ts), and three rejects (another encoding, not at the start, single quotes). - seams.test.ts: charset leaves the refused list with its own handler; the byte-identical pin is the base's hash without it.
…t-regen2: pnpm regen, fixed point): the charset fixtures' captures, emitted CSS, vectors and break vectors, the profiles (proof cases added, no row or status changed), the native lanes record, the hit facts and the translate corpus
…ocal prep; lane-contract queued-parent exception). Conflicts: platform-check.ts takes master's nativeLayoutProjection and keeps TXT1a-1's referenceShapedMeasurer; regen.ts takes master's LEGACY_STEPS split (FIXTURES, FONTS and ENGINE_SOURCES now come from regen-steps/step.ts)
…, margin, padding and border-width longhands The coverage-rank alias probes (-webkit-justify-content, -webkit-flex-direction, -webkit-box-sizing, -webkit-margin-before and the rest, about 320 reach-points) are refused only because no fixture used inherit on these longhands; the resolver handles inherit the same way for every longhand. One fixture in ltr and rtl: an inheriting flex container (direction, wrap, justify, align-items, align-content, column-gap), inheriting flex items (grow, shrink, basis, align-self, order), inherited box-sizing, margins, paddings, border widths and their logical forms, each checked in Chrome to move a frame, plus the block-flow forms the probes use (computed values). Group inherit-contexts, one GROUPS line
Commands: pnpm regen; pnpm run parity:devices; pnpm regen
Commands: pnpm regen; pnpm run parity:devices; pnpm regen
@charset "utf-8"; at the start of a sheet is a no-op on every target (Chrome drops it); other encodings and positions refused
Commands: pnpm regen; pnpm run parity:devices; pnpm regen
Commands: pnpm regen; pnpm run parity:devices; pnpm regen
thejackshelton
pushed a commit
that referenced
this pull request
Oct 9, 2026
…-longhands: no source conflicts; generated files keep this side until the CI regen Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WSkSiXMPXTAsNpS9BD9LDR
thejackshelton
pushed a commit
that referenced
this pull request
Oct 9, 2026
…flicts Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WSkSiXMPXTAsNpS9BD9LDR
thejackshelton
pushed a commit
that referenced
this pull request
Oct 9, 2026
…conflicts locally (GitHub's conflict is in generated outputs; regen rebuilds them) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WSkSiXMPXTAsNpS9BD9LDR
thejackshelton
pushed a commit
that referenced
this pull request
Oct 9, 2026
This was referenced Oct 9, 2026
Merged
thejackshelton
pushed a commit
that referenced
this pull request
Oct 9, 2026
…er with #101, #210, #208, #198, #216, #218) into txt1a-1-v2 (prep, no PR changes until #102 merges). Conflicts: ios-layout's Lowerer carries both TXT1a-1's lowering mode and master's propagated viewport-overflow element, and lowerTree passes both; project.ts checkCases takes master's @Property registrations and checkComputed faults argument and keeps TXT1a-1's font deferrals beside master's native-scroll check; the band passes pass both the shared font deferrals and the registrations; native lowering runs master's per-band loop in native mode, then TXT1a-1's engine-mode lowering of the native band's cases. Generated outputs: this side's, regenerated after #102 merges. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WSkSiXMPXTAsNpS9BD9LDR
thejackshelton
pushed a commit
that referenced
this pull request
Oct 9, 2026
#203) into grid-g1a-engine-v2. Conflict: rt-hit.ts imports keep GRID's NO_GRID_FAULTS and OVFL's isScrollContainer beside resolveBorder. Master's grid input (input.ts, validate.ts) is unchanged here; the engine reads it as is. Generated files keep the merge result until the CI regen Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WSkSiXMPXTAsNpS9BD9LDR
thejackshelton
pushed a commit
that referenced
this pull request
Oct 9, 2026
#203) into form-a-v2 Conflicts, both sides kept: - rt-hit.ts: master's isScrollContainer import beside FORM-a's controlAsBox. - validate.ts: FORM-a's checkControl and master's OVFL clipsOnly, both whole. - expected-dump.test.ts, pixel-reference.ts: the union of both sides' imports. - p1-floor.json (structural): the union of the extended names (engine-inline, engine-overflow) and the larger count of each; nothing lowered. Semantic: master's overflow.ts (OVFL scrollMetrics) skipped ControlBox children silently. It now refuses a form control with an OverflowRefusal (overflow.test.ts pins it; it fails without the refusal), since its scrollable overflow has no Chrome proof. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WSkSiXMPXTAsNpS9BD9LDR
thejackshelton
pushed a commit
that referenced
this pull request
Oct 9, 2026
…, #208, #200) into mq-r1-runtime Conflicts, both sides kept: - emit/runtime/state.ts: the machine takes MQ-R1's viewport, band and initial band and ANIM-b1's anim tables (last, defaulted); input() lays out at the live viewport and patches the animator's frame lengths; startAnimator resolves its inputs at the current viewport; the mount sizes its media root and takes the band before starting the animator and the first render, renders into the media root, and keeps master's shown/stale/display driver; scripts run on the mount, advancing through machine.advance. A program with animation tables and a band or a resize step is refused at emit (the animator resolves its inputs once), with a test. - emit/runtime/index.ts: media module registered first so the support order ends clock, state, anim as before. - parity/src/native-host.ts: state emits are stateEmits, frameEmits, resizeEmits, envEmits. - dragon/test/state-program.test.ts: master's ANIM-b1 setter/onChange/shown patterns with MQ-R1's media root and m.machine.set; anim-runtime.test.ts's advance pattern retargeted to m.machine.advance (scripts run on the mount). Generated files keep the auto-merge until the CI regen. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WSkSiXMPXTAsNpS9BD9LDR
thejackshelton
pushed a commit
that referenced
this pull request
Oct 9, 2026
…#216/#102) into ANIM-b1 part 2 Conflicts: state.ts keeps this branch's hooks-only form (the adapter in anim.ts draws the background through dragonBackground); anim-runtime.test keeps the hooks test and carries master's check that the frame colour never goes straight to the platform property; device-jobs.ts imports both ANIM_LANE and isBlockReason.
This was referenced Oct 9, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stacked, lands as the text-stack train after train 3. This branch is a restack onto INL1a (#88 B1, #89 B2, #90 C1, #91 C2), made by intent: C2 plus this branch's own change. Its base is
review/inl1a-lowering, pushed at inl1a-lowering's head afec4d6, so the diff is this branch's alone. The text stack lands as one train after train 3; master is merged in during the train's catch-up. Host-only: no device run yet (pending-device).What changed
txt1a-1a(4834ada88): Ahem is shaped through HarfBuzz on the host (text-shaper-host.ts,shaping.ts), and a planted platform rule resolves the environment throughzoomInput, which keepszoomInputreached in the translated engine.docs/ports.json: block.ts (thenoReshapeAtBreakplant cites shaping_line_breaker.cc) and text-shaper-host.tshanKerningOf(han_kerning.cc) are added as references. PORT-0 landed on master after the branch was written. THIRD_PARTY_NOTICES.md does not change.Tests and pins changed, with reasons
text-latin.test.tsphase A).What passed earlier (host-side, superseded head c0d4cd2, before the cloud migration)
/tmp/heavy-lease.sh pnpm regenreaches a fixed point; its outputs are in their own commit, whose message names the command.pnpm typecheckpasses.pnpm test: everything passes except the 12 device-record tests that need a fresh device run (lanes,lanes-records,lanes-concurrent,device-failures,p6a-promotion): device step pending. The first full run failedchrome-ports.test.tson the two citations above. They are fixed in this branch, andchrome-ports.test.tspasses (13/13).Catch-up with master (2026-10-08, land-prep)
git merge origin/master(157 commits, including INL1a 5/5 (C2): lowering inline boxes and <br>s, native runtime emit, 7 inline fixtures and lanes #91 INL1a C2, the cloud migration, OVFL A: scroll containers (overflow auto, scroll, clip), viewport propagation and Chrome scroll metrics, rebuilt on master (supersedes #96/#97) #194 and CASC 1: @supports decided at build time as Chrome 145 decides it; revert and revert-layer; CSS-wide keyword rows #200) as merge commit 6c5575f. Only one file conflicted as text:packages/translate/harness/harness.tsFAULT_KEYS: this branch adds the eight text faults (advanceNot16_16...latinCheckSkipped) and master addsgutterReserved,overflowIgnoresPadding. Resolved as the union, every key from both sides kept, in the existing order (branch keys, thenorderHalfEven,orderUnclamped, then master's two).decodeFaultsauto-merged with all keys from both sides.pnpm install --frozen-lockfilewas clean.Tests changed at the catch-up
Review round 1 (independent review at 0c6b3ee, two Medium findings), commit 76150ba
latinCheckSkippedwas inert, and the harness ran shaping plants inert.shapedMeasurerForwraps the measurer inlatinScopedMeasurer(shaping.ts), which refuses text with any code point outside Latin, Common and Inherited (isLatinText, script-data.ts) with a new typed code,text-script(unsupported.ts, sectionnotes/T056-txt1a-spec.md R4).latinCheckSkippedskips exactly that check. The shaping core (shapedText) stays script-agnostic, because the TXT1-S gate shapes every script. This is observable on Ahem: the bundled Ahem.ttf has glyphs for 45 non-Latin code points (for example U+03A9 and U+6C34), which shaped Ahem measured before this change.MeasureResultfailures now carrycode: 'text-glyph' | 'text-script', and inline.ts raises each code as a literal (unsupported.test.ts requires every code to be raised literally).runEngineCase) now reports a harness error for any shaping plant (advanceNot16_16throughlatinCheckSkipped). It lays out with measurerFor's Ahem measurer, so before this change those plants did nothing there. No corpus line sets one (the corpus fault lists are fixed and exclude them), so the corpus outputs are unchanged.metricRoundingSwappedwas planted in text-latin.test.ts. The header now states exactly what is proven, and each shaping plant has evidence:wholePixelPositionschanges the committedtext-fractional-font-sizevector.advanceNot16_16anddoubleAccumulationchange no committed vector (measured: 0 of the committed vectors). They do change widths in T082's committed Chrome runs (7.77px, 93 or more glyphs), and they are asserted to miss Chrome there.kerningDropped,noReshapeAtBreakandsoftHyphenWidthMissingcannot act on Ahem through the engine's measurer, and are pinned inert on every committed vector with the evidence asserted:noReshapeAtBreakandsoftHyphenWidthMissingact only inShapedText.line, whichTextMeasurerdoes not expose.Tests changed, with reasons (review round 1)
packages/parity/test/text-latin.test.ts: four tests added (wholePixelPositions; advanceNot16_16 and doubleAccumulation against Chrome; the three inert plants with evidence; R4text-scriptand thelatinCheckSkippedplant, which changes the outcome to the line breaker's later refusal and makes the measurer return ok) and one inert guard forlatinCheckSkippedon the committed vectors. The header claim is narrowed to what is proven. The R4 test fails without the fix.packages/layout/test/inline.test.ts: added a test that a measurer'stext-scriptrefusal reaches the layout result with its own code and section. It also asserts the section of the existingtext-glyphrefusal.packages/layout/test/font-data.test.ts: the old-measurer stub's refusal carriescode: 'text-glyph', becauseMeasureResultgained the field. The assertions are unchanged.packages/translate/test/translate.test.ts: added a test that the harness reports a harness error naming each of the 8 shaping plants, and lays out the same input without one.What passed on head 09fff4c
pnpm ci:regen txt1a-1a-v2 --head 76150ba95a1d138afa520caee0cb899b4a5b2df4 --once: regen commit 09fff4c, https://github.com/compiled-run/dragoncss/actions/runs/37858585385. The earlier catch-up regen (6c5575f -> 0c6b3ee) was https://github.com/compiled-run/dragoncss/actions/runs/37849014715.pnpm typecheck(local): passes.packages/layout/test/{font-data,inline,vectors,dpr-vectors}.test.tsandpackages/dragon/test/{registry-claims,profile-index}.test.ts: 6 files, 762 tests passed.pnpm ci:test-files 09fff4cafd... --once, https://github.com/compiled-run/dragoncss/actions/runs/37862735384 (tested 09fff4cafdaff3a6912c0d2318622d9e8e0ccfb5), all passed:pnpm -s pr:review 101 --once: exit 0 (CIcheckssuccess; 0 unanswered findings; UNREVIEWED, because Macroscope is at its monthly spending limit).🤖 Generated with Claude Code
Generated by Claude Code