websem: retain complete blend-source domains - #138
Conversation
Preserve complete source domains without fake paint; admit the bounded solid-stroke omission profile with 44 exact Chromium cells. Deliberately promote two obsolete refusal witnesses into positive evidence and retain six new source-domain/root refusals. No checklist ticks or tolerance changes.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Advanced Run ID: ⛔ Files ignored due to path filters (96)
📒 Files selected for processing (20)
Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review. WalkthroughThis change adds checked ChangesBlend source-domain contract
SVG source-domain lowering
Glyphless compilation and execution
Fixtures and capability records
Estimated code review effort: 4 (Complex) | ~60 minutes Merge Risk: ⚪ Minimal · up to The implementation and cross-layer contracts are covered by passing checks, with no actionable merge-blocking risk identified. Sequence Diagram(s)sequenceDiagram
participant SVG
participant Frame
participant Glyphless
participant Canvas
SVG->>Frame: attach validated BlendSourceDomain
Frame->>Glyphless: compile source-domain profile
Glyphless->>Glyphless: map and preflight domain for current view
Glyphless->>Canvas: execute after successful preflight
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
Full details: Docstring CoverageExplanation Docstring coverage is 74.58% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 59 functions across 9 files. (11 skipped: 10 unsupported, 1 too large.)
✨ Finishing Touches 💡 1📝 Generate docstrings 💡
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
Hosted review completed with no actionable code findings. The generic docstring warning was checked against the new public surface: BlendSourceDomain, its validation/refusal semantics, ScopeBlend integration, and the consumer profile are documented and independently reviewed. No concrete documentation gap was identified; named test/helper functions are not receiving repetitive metric-only comments. Independent TICK/LAW and REPRO both pass after the root correction. All completed CI checks are green; the final dependent Clippy job is still running. |
What this unlocks
A rectangular linear-gradient blend source can now keep the source contribution
of a transparent or zero-alpha solid local stroke without inventing visible
stroke paint. This follows B2a (#137), which correctly refused
these cases after discovering their source-origin sensitivity.
The decisive test was information loss, not another blend-equation adjustment.
With only the prior guard bypassed, all facts of the old resolved Frame were
equal across none/transparent/zero-alpha/zero-width/wider-stroke sources:
owners, bounds, geometry, transforms, scopes and paint programs. Yet Chromium
distinguishes positive-width invisible strokes: 30/102 pixels for
Multiply/Screen, maximum channel delta one. Width eight gives 14/25; zero width
is identical to none. Actual strict and best-effort command runs confirmed the
guarded baseline and the diagnostic's silent mismatch. These necessity pairs
are measured, not additional committed cells. The diagnostic was restored
before implementation.
Smallest contract and bounded consumers
An independent rframe maintainer counter-proposed and implemented one checked,
optional
BlendSourceDomainon the existingScopeBlend. It is the complete,already-enclosed source-local domain and its exact map into the containing
stream, before final blend/opacity. It is not an allocation hint, damage box,
clip, fake paint or second scene tree. Thirteen producer-only tests and the
full rframe suite passed before the two consumers were changed.
Web lowering initially declares only the proven unmapped rectangle profile.
The glyphless consumer independently validates that profile, retains the
declaration in raster identity, and maps it through the current host view at
execution. Bad device bounds refuse by owner before canvas mutation. An
independent illustration verifies changed-view reuse equals fresh, balanced
saves and no geometry/coverage changes. Untimed trace confirms the larger
source extent still uses one layer; no timing improvement or new cache is
claimed.
Transformed/nested source spaces, nonpainted siblings, unresolved/context
strokes, non-scaling invisible strokes, incomplete pattern-sibling domains,
resource source programs, wider geometry and other blend modes remain guarded.
The final numeric probe found an inward-float-enclosure case that failed the
consumer preflight late without emitting pixels. Its named refusal now occurs
at the SVG group path, letting best-effort roll back that group normally.
Evidence and refusal promotion
44 new exact Chromium-gated cells cover the omitted-stroke spellings, positions
and widths, combined/outer opacity, source union/order, leaf and neutral-group
ownership, inherited/currentColor and px/percentage stroke routes, multiple
ramps and live strokes, ancestor clips and local instances. Every candidate
also ran through
cargo run -p n0_cli --bin n0in both admissions.All captures and bakes use the unchanged hash-pinned Chromium module. Existing
oracles are untouched, manifest changes are additions-only, and no tolerance
was added. Corpus: 1,467 primitives, 329 named refusals; unchanged 16 sampled
frames, 16 text-pixel cells and eight text-geometry witnesses. No checklist
ticks, score, FLIP record or baseline change.
Captured-essence promotion: the old
stroke-transparentrefusal is now theexact Multiply fractional cell, and
stroke-opacity-zerois the exact Screenzeroalpha cell. Their obsolete unsupported assertions are deliberately dropped,
not their visual witnesses. Six new refusal witnesses guard the
remaining source-domain boundaries.
Independent TICK/LAW found a real root escape: the omission exemption could
reach the separately lowered root, where no domain was attached. Both actual
admissions silently differed at 85 pixels / delta 6 on transparent-stroke and bare
linear sources under root Multiply/Screen; a full-canvas backdrop hid it.
These root sources now refuse by name in both admissions. The regression test
fails before the guard; two registered witnesses preserve the newly exposed
and pre-existing cases. Attaching a domain alone is not claimed as the fix.
Sensitivity is demonstrated: disabling only consumption of the declaration
makes
just gatefail on 37 new cells, including the original 30/102-pixel pair.Six sibling-origin/live-stroke controls retain the same derived origin; the
elided Normal control has no physical source. These seven remain exact.
Restoring the painter byte-for-byte re-gates green.
Verification
No Workflow runner is exposed in this environment, so
.agents/workflows/verify-rung.jscould not be invoked through a Workflow tool.Its independent TICK/LAW and REPRO roles were reproduced manually; final
verdicts are both pass after applying the root finding. No must_fix or
should_fix remains. REPRO independently renewed the original matrices,
24 root refusal checks and 12 exact neighboring renders, plus gate/status and
all manifest/bake hashes. No claim that the saved Workflow script ran.
Local verification is green:
textlayout and n0_cli tests; full Web compiler/CLI suites rerun after the
final root guard.
cargo fmt --all -- --check,cargo clippy --no-deps -- -D warnings.just bake, restoredjust gate,just status; 95 new local-link checks,additions-only manifest/oracle audit and pre-PR OSS/security cleaning pass.
This rung does not fold in the separate native-opacity work in
#136, generic damage/coverage in #87/#88, text,
external I/O or the other deliberately separate follow-ups. It establishes the
bounded source-domain contract before any wider source-space admission.
Position: #43.
Final hosted verification at
8f356cc1: every check is green, including thecomplete test-crates workflow and its dependent Clippy job, consolidation
gates, both builds and deployment. CodeRabbit completed with no actionable
findings and there are no unresolved review threads. Its generic docstring
warning was evaluated: the added public contract is documented, and no concrete
missing documentation was identified. Both independent manual roles also pass.