fix(data-integrity): keep controlled value sync atomic - #201
Conversation
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: trueThanks 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 |
|
@coderabbitai review Please review exact current head |
Rate Limit Exceeded
|
There was a problem hiding this comment.
Review (head 9fd9a28)
No blocking product defect in the standalone-editor integrity slice. This lane already implements the residual gap called out on #228:
editable/hideToolbaraccept only omitted defaults or exact booleans;"false"throws the payload-redactedRangeErrors before TipTap/accessibility/frame setup.value/defaultValue/formResetValueaccept onlyundefinedor string.- Controlled replacement is parsed once, previewed through current transaction policy, and rolled back on live divergence.
Integration
Base is still historical 50ac98c. Live protected main is e8109ec / the #118 v0.6.0 candidate. Predecessor CI on this head is not current-head evidence. After #118, reconverge non-destructively with the then-live tip and regenerate exact-head gates before any readiness decision.
Keep Draft. This comment is not a qualifying independent approval. Do not open a competing CwlEditor.tsx writer; continue #252/#263 here.
Sent by Cursor Automation: Fix Issues


Closes #200.
Closes #252.
Closes #263.
Closes #267.
Closes #271.
Scope
Draft standalone
CwlEditorintegrity lane. This remains the active Inkspan source writer forsrc/components/CwlEditor.tsx; stacked browser assurance remains in Draft #380.Behavior contracts
editableand toolbar visibility inputs fail closed on invalid runtime types;valuereceived during composition is deferred and the latest host value is applied after composition ends;onChangevalue stream but are excluded from strongonDocumentChangesnapshot callbacks until composition is no longer active.Composition lifecycle tracking is installed synchronously from TipTap
onCreateonto the created editor view's DOM before the publiconReadycallback runs, and is removed during TipTaponDestroy. This keeps lifecycle ownership on TipTap creation/destruction rather than a callback-sensitive React effect while making the immediate-post-ready composition boundary executable.These are standalone editor/document semantics only. This PR adds no transport, authentication, tenancy, durable persistence, credentials, migrations, retention, deployment, durable audit, model/provider, network, durable PDF, or host-owned Yjs authority.
Verification discipline
The realistic composition regression is
src/components/CwlEditor.controlledValueComposition.test.tsx; it exercises a composition that starts immediately after editor readiness, performs an intermediate document change, and requires the strong snapshot callback to remain silent until composition ends. Do not weaken or replace that regression to obtain a green run.Do not embed mutable PR-head SHAs, protected-main SHAs, workflow run IDs, review counts, mergeability snapshots, or child-stack heads in this body as durable truth. Before any lifecycle action, independently refetch:
mainand this PR's exact current head/live base;Pending, queued, skipped-required, cancelled, absent, neutral, failed, stale, predecessor, status-only, synthetic-source, wrong-checkout, model-only, or otherwise vacuous evidence is non-passing. Repository CI success is technical evidence only and does not substitute for qualifying independent approval or correct central security/review workflows.
Ownership / governance boundary
Keep this PR Draft until its behavior and exact-current evidence satisfy then-live governance. Draft #380 owns browser harness/spec/config evidence only and must not re-own this PR's production source. Central reusable workflow defects belong to their existing
.githubowner paths, not to an Inkspan-local workaround.Do not mark Ready, merge, tag, publish, transfer predecessor evidence, self-approve, weaken gates, create a competing source/workflow writer, force-push/destructively rebase, or fabricate release identity. Protected shipped truth remains whatever exact
mainresolves to at decision time; #118 remains the canonical stable-release operational-acceptance boundary.