← Back to suites
careervector-mutations zero-budget semantic-index

CareerVector mutations apply

Pin the typed op catalog and Yjs apply runtime: job.* / node.* / tailored.* / selection.update / translate, cvl.* action expansion into batched sub-ops, the unified batch primitive (single-sub-doc collapse + cross-sub-doc atomic dispatch), variant-pool wrapper transparency, Y.Text seeding for collaborative prose, multi-tab CRDT convergence fuzz, validate gate, migration id collision repair, and fast-check property invariants for the recursive Node tree.

Behaviours 0 Tests 247 Graph 248 nodes · 247 edges Runner - CircleCI lib_mutations_unit Source qa/suites/careervector-mutations.yaml

Test witnesses

These tests belong to the suite. Missing implementation links stay visible until a code-backed graph claim records them.

TestStatusImplementationOpen
atomicity model: if any sub-op throws, no sub-doc is mutated
@cv/mutations · vitest · src/apply.batch.test.ts
catalogmissing implementation linkTest
dispatches each sub-op to the matching per-sub-doc Y.Doc
@cv/mutations · vitest · src/apply.batch.test.ts
catalogmissing implementation linkTest
empty batch is a no-op (no error, no tree change)
@cv/mutations · vitest · src/apply.batch.test.ts
catalogmissing implementation linkTest
empty batch returns []
@cv/mutations · vitest · src/apply.batch.test.ts
catalogmissing implementation linkTest
failure in middle sub-op rolls back the whole batch (no partial state)
@cv/mutations · vitest · src/apply.batch.test.ts
catalogmissing implementation linkTest
falls back to routeFn when neither subDoc nor primary is set
@cv/mutations · vitest · src/apply.batch.test.ts
catalogmissing implementation linkTest
honours explicit subDoc when supplied
@cv/mutations · vitest · src/apply.batch.test.ts
catalogmissing implementation linkTest
inherits primary sub-doc when sub-op omits subDoc
@cv/mutations · vitest · src/apply.batch.test.ts
catalogmissing implementation linkTest
rejects malformed sub-op entries (missing op)
@cv/mutations · vitest · src/apply.batch.test.ts
catalogmissing implementation linkTest
rejects nested batch
@cv/mutations · vitest · src/apply.batch.test.ts
catalogmissing implementation linkTest
rejects route mismatch (explicit subDoc != natural route)
@cv/mutations · vitest · src/apply.batch.test.ts
catalogmissing implementation linkTest
rejects sub-op with kind outside the catalog
@cv/mutations · vitest · src/apply.batch.test.ts
catalogmissing implementation linkTest
rejects when called with non-batch op
@cv/mutations · vitest · src/apply.batch.test.ts
catalogmissing implementation linkTest
single sub-op batch is equivalent to the bare op
@cv/mutations · vitest · src/apply.batch.test.ts
catalogmissing implementation linkTest
sub-ops with matching explicit subDoc are allowed (single-sub-doc shape)
@cv/mutations · vitest · src/apply.batch.test.ts
catalogmissing implementation linkTest
three-op toggleVariant sequence (create wrapper + move source + create dup) lands in one Yjs update
@cv/mutations · vitest · src/apply.batch.test.ts
catalogmissing implementation linkTest
throws when sub-ops declare DIFFERENT explicit subDocs (cross-sub-doc — use planBatch + dispatch)
@cv/mutations · vitest · src/apply.batch.test.ts
catalogmissing implementation linkTest
collapses a 2-member wrapper to two solo siblings (wrapper deleted)
@cv/mutations · vitest · src/apply.cvl-actions.test.ts
catalogmissing implementation linkTest
demotes a bullet into the previous bullet, becomes its last sub, in one update
@cv/mutations · vitest · src/apply.cvl-actions.test.ts
catalogmissing implementation linkTest
duplicate clones data deeply (independent edit later)
@cv/mutations · vitest · src/apply.cvl-actions.test.ts
catalogmissing implementation linkTest
extracts a member from a multi-member wrapper, lands after wrapper
@cv/mutations · vitest · src/apply.cvl-actions.test.ts
catalogmissing implementation linkTest
honors caller-supplied new_wrapper_id (client/server id-sync)
@cv/mutations · vitest · src/apply.cvl-actions.test.ts
catalogmissing implementation linkTest
promotes a sub to bullet, inserted right after the source bullet, in one update
@cv/mutations · vitest · src/apply.cvl-actions.test.ts
catalogmissing implementation linkTest
skips subheadings when finding the previous bullet
@cv/mutations · vitest · src/apply.cvl-actions.test.ts
catalogmissing implementation linkTest
source is already wrapped — appends to existing wrapper (1 sub-op)
@cv/mutations · vitest · src/apply.cvl-actions.test.ts
catalogmissing implementation linkTest
source is not wrapped — wraps + duplicates in one Yjs update
@cv/mutations · vitest · src/apply.cvl-actions.test.ts
catalogmissing implementation linkTest
source not found → throws
@cv/mutations · vitest · src/apply.cvl-actions.test.ts
catalogmissing implementation linkTest
throws when bullet has no previous bullet
@cv/mutations · vitest · src/apply.cvl-actions.test.ts
catalogmissing implementation linkTest
throws when node is not inside a variant-pool wrapper
@cv/mutations · vitest · src/apply.cvl-actions.test.ts
catalogmissing implementation linkTest
throws when target is not a sub-Node
@cv/mutations · vitest · src/apply.cvl-actions.test.ts
catalogmissing implementation linkTest
depth 1: resolves a wrapped section by id under root (regression baseline)
@cv/mutations · vitest · src/apply.nested-variant-pool.test.ts
catalogmissing implementation linkTest
depth 2: resolves a bullet wrapped inside a list-item (no wrapper at root)
@cv/mutations · vitest · src/apply.nested-variant-pool.test.ts
catalogmissing implementation linkTest
depth 3: also resolves when path explicitly includes wrapper segments
@cv/mutations · vitest · src/apply.nested-variant-pool.test.ts
catalogmissing implementation linkTest
depth 3: resolves a sub wrapped inside a bullet wrapped inside a list-item
@cv/mutations · vitest · src/apply.nested-variant-pool.test.ts
catalogmissing implementation linkTest
OP_CATALOG_VERSION is 10
@cv/mutations · vitest · src/apply.test.ts
catalogmissing implementation linkTest
cl_profile branch writes attributes.tailored_cl
@cv/mutations · vitest · src/apply.test.ts
catalogmissing implementation linkTest
creates the lang map and writes the tree
@cv/mutations · vitest · src/apply.test.ts
catalogmissing implementation linkTest
cv_profile branch writes attributes.tailored_cv
@cv/mutations · vitest · src/apply.test.ts
catalogmissing implementation linkTest
dedups when two URLs differ only in tracking params
@cv/mutations · vitest · src/apply.test.ts
catalogmissing implementation linkTest
derives the workspace job id from URL and inserts a public workspace job
@cv/mutations · vitest · src/apply.test.ts
catalogmissing implementation linkTest
does not queue shared jobcache work for workspace-local URLs
@cv/mutations · vitest · src/apply.test.ts
catalogmissing implementation linkTest
is idempotent: same URL twice → same job_id, no second row
@cv/mutations · vitest · src/apply.test.ts
catalogmissing implementation linkTest
job.create writes only the workspace jobs Y.Map
@cv/mutations · vitest · src/apply.test.ts
catalogmissing implementation linkTest
merges patch keys into workspace.jobs[job_id].attributes
@cv/mutations · vitest · src/apply.test.ts
catalogmissing implementation linkTest
omitting the hook is supported (browser optimistic apply path)
@cv/mutations · vitest · src/apply.test.ts
catalogmissing implementation linkTest
overlapping evaluations key is overwritten by the later write
@cv/mutations · vitest · src/apply.test.ts
catalogmissing implementation linkTest
overlapping human evaluations preserve per-actor votes
@cv/mutations · vitest · src/apply.test.ts
catalogmissing implementation linkTest
overwrites an existing settings key
@cv/mutations · vitest · src/apply.test.ts
catalogmissing implementation linkTest
preserves the submitted URL while deriving ids from normalized URL identity
@cv/mutations · vitest · src/apply.test.ts
catalogmissing implementation linkTest
queues normalized shared URL identity when hook is attached
@cv/mutations · vitest · src/apply.test.ts
catalogmissing implementation linkTest
rejects camel-case hidden envelope fields in create attributes
@cv/mutations · vitest · src/apply.test.ts
catalogmissing implementation linkTest
rejects camel-case hidden envelope fields in update patches
@cv/mutations · vitest · src/apply.test.ts
catalogmissing implementation linkTest
rejects reserved envelope fields in create attributes without writing a job
@cv/mutations · vitest · src/apply.test.ts
catalogmissing implementation linkTest
rejects reserved envelope fields in update patches
@cv/mutations · vitest · src/apply.test.ts
catalogmissing implementation linkTest
rejects url in create attributes because the URL is the job envelope
@cv/mutations · vitest · src/apply.test.ts
catalogmissing implementation linkTest
rejects url updates because the URL is the immutable job envelope
@cv/mutations · vitest · src/apply.test.ts
catalogmissing implementation linkTest
removes workspace.jobs[job_id]
@cv/mutations · vitest · src/apply.test.ts
catalogmissing implementation linkTest
scalar fields replace (no merge): title, salary, status_id
@cv/mutations · vitest · src/apply.test.ts
catalogmissing implementation linkTest
skips the hook on the idempotent path (existing workspace job id)
@cv/mutations · vitest · src/apply.test.ts
catalogmissing implementation linkTest
stores the sparse attributes map when provided
@cv/mutations · vitest · src/apply.test.ts
catalogmissing implementation linkTest
strips hidden ids inside JSON-string create attributes
@cv/mutations · vitest · src/apply.test.ts
catalogmissing implementation linkTest
strips hidden ids inside JSON-string update patches
@cv/mutations · vitest · src/apply.test.ts
catalogmissing implementation linkTest
strips nested hidden shared ids from create attributes
@cv/mutations · vitest · src/apply.test.ts
catalogmissing implementation linkTest
strips nested hidden shared ids from update patches
@cv/mutations · vitest · src/apply.test.ts
catalogmissing implementation linkTest
the source-ad op kinds are no longer workspace SDK ops
@cv/mutations · vitest · src/apply.test.ts
catalogmissing implementation linkTest
throws WorkspaceOpRouteError when job_id is empty
@cv/mutations · vitest · src/apply.test.ts
catalogmissing implementation linkTest
throws WorkspaceOpRouteError when job_id is missing/empty
@cv/mutations · vitest · src/apply.test.ts
catalogmissing implementation linkTest
throws WorkspaceOpRouteError when url is empty
@cv/mutations · vitest · src/apply.test.ts
catalogmissing implementation linkTest
throws WorkspaceOpRouteError when url is missing
@cv/mutations · vitest · src/apply.test.ts
catalogmissing implementation linkTest
throws when job_id is unknown
@cv/mutations · vitest · src/apply.test.ts
catalogmissing implementation linkTest
throws with OP_CATALOG_VERSION in the message
@cv/mutations · vitest · src/apply.test.ts
catalogmissing implementation linkTest
two disjoint eval_reasoning writes both survive
@cv/mutations · vitest · src/apply.test.ts
catalogmissing implementation linkTest
two disjoint evaluations writes both survive
@cv/mutations · vitest · src/apply.test.ts
catalogmissing implementation linkTest
two disjoint origins writes both survive
@cv/mutations · vitest · src/apply.test.ts
catalogmissing implementation linkTest
writes key-value pairs to the layout map
@cv/mutations · vitest · src/apply.test.ts
catalogmissing implementation linkTest
writes key-value pairs to the order_state map
@cv/mutations · vitest · src/apply.test.ts
catalogmissing implementation linkTest
writes key-value pairs to the settings map
@cv/mutations · vitest · src/apply.test.ts
catalogmissing implementation linkTest
node.delete on a wrapped member removes it from the wrapper
@cv/mutations · vitest · src/apply.variant-pool.test.ts
catalogmissing implementation linkTest
node.update on a wrapped member resolves through the wrapper
@cv/mutations · vitest · src/apply.variant-pool.test.ts
catalogmissing implementation linkTest
also fires for cl_profile.replace
@cv/mutations · vitest · src/apply.ytext-replace.test.ts
catalogmissing implementation linkTest
enables character-level CRDT merge via concurrent updates
@cv/mutations · vitest · src/apply.ytext-replace.test.ts
catalogmissing implementation linkTest
seeds bullet.data.text as a Y.Text instance (not a plain string)
@cv/mutations · vitest · src/apply.ytext-replace.test.ts
catalogmissing implementation linkTest
seeds list-item.data.heading as Y.Text alongside scalars
@cv/mutations · vitest · src/apply.ytext-replace.test.ts
catalogmissing implementation linkTest
survives encode/decode roundtrip with Y.Text intact
@cv/mutations · vitest · src/apply.ytext-replace.test.ts
catalogmissing implementation linkTest
a middle insert produces a single delete+insert delta
@cv/mutations · vitest · src/apply.ytext.test.ts
catalogmissing implementation linkTest
a no-op update (same text) does not mutate the Y.Text
@cv/mutations · vitest · src/apply.ytext.test.ts
catalogmissing implementation linkTest
a single-character append to a bullet preserves the SAME Y.Text instance
@cv/mutations · vitest · src/apply.ytext.test.ts
catalogmissing implementation linkTest
bullet data is stored as Y.Map with Y.Text inside (storage contract)
@cv/mutations · vitest · src/apply.ytext.test.ts
catalogmissing implementation linkTest
bullet seeded with data.text round-trips through Y.Map.toJSON()
@cv/mutations · vitest · src/apply.ytext.test.ts
catalogmissing implementation linkTest
list-item seeded with data.heading round-trips
@cv/mutations · vitest · src/apply.ytext.test.ts
catalogmissing implementation linkTest
merges two same-bullet browser updates without clobbering either edit
@cv/mutations · vitest · src/apply.ytext.test.ts
catalogmissing implementation linkTest
non-prose data fields keep Y.Map scalar storage (e.g. label, archetype)
@cv/mutations · vitest · src/apply.ytext.test.ts
catalogmissing implementation linkTest
rejects non-human yjs.update writes
@cv/mutations · vitest · src/apply.ytext.test.ts
catalogmissing implementation linkTest
scalar-only data nodes (e.g. variant-pool) keep plain JS object storage
@cv/mutations · vitest · src/apply.ytext.test.ts
catalogmissing implementation linkTest
sub seeded with data.text round-trips
@cv/mutations · vitest · src/apply.ytext.test.ts
catalogmissing implementation linkTest
subheading seeded with data.text round-trips
@cv/mutations · vitest · src/apply.ytext.test.ts
catalogmissing implementation linkTest
text-archetype section seeded with data.text round-trips
@cv/mutations · vitest · src/apply.ytext.test.ts
catalogmissing implementation linkTest
assigns distinct ids to two siblings that share the same raw id
@cv/mutations · vitest · src/migration.test.ts
catalogmissing implementation linkTest
clamps active=4 to index 2 when group has 3 members (off-by-one boundary)
@cv/mutations · vitest · src/migration.test.ts
catalogmissing implementation linkTest
clamps active=5 to index 2 when group has only 3 members
@cv/mutations · vitest · src/migration.test.ts
catalogmissing implementation linkTest
does not touch non-colliding siblings
@cv/mutations · vitest · src/migration.test.ts
catalogmissing implementation linkTest
group with active=0 and 0 members produces empty selection.active
@cv/mutations · vitest · src/migration.test.ts
catalogmissing implementation linkTest
group with no groupState entry defaults to active=0 and included=true
@cv/mutations · vitest · src/migration.test.ts
catalogmissing implementation linkTest
group without included flag (no groupState key) migrates as included
@cv/mutations · vitest · src/migration.test.ts
catalogmissing implementation linkTest
in-range active=1 selects second member without clamping
@cv/mutations · vitest · src/migration.test.ts
catalogmissing implementation linkTest
keeps every singleton duplicate active after id reminting
@cv/mutations · vitest · src/migration.test.ts
catalogmissing implementation linkTest
places the correct id in selection.active[] when the active child is the first (non-reminted) occurrence
@cv/mutations · vitest · src/migration.test.ts
catalogmissing implementation linkTest
places the reminted id in selection.active[] when the active child is a non-first (reminted) occurrence
@cv/mutations · vitest · src/migration.test.ts
catalogmissing implementation linkTest
preserves section archetype and variantGroup metadata for reverse conversion
@cv/mutations · vitest · src/migration.test.ts
catalogmissing implementation linkTest
preserves section ids when there are no collisions
@cv/mutations · vitest · src/migration.test.ts
catalogmissing implementation linkTest
produces no duplicate ids across all children when collisions exist
@cv/mutations · vitest · src/migration.test.ts
catalogmissing implementation linkTest
puts singleton (no variantGroup) section ids in selection.active
@cv/mutations · vitest · src/migration.test.ts
catalogmissing implementation linkTest
respects groupState.included=false — excluded group not in active
@cv/mutations · vitest · src/migration.test.ts
catalogmissing implementation linkTest
selection.active[] is a subset of children ids after active-index clamping
@cv/mutations · vitest · src/migration.test.ts
catalogmissing implementation linkTest
selection.active[] only references ids that exist in children
@cv/mutations · vitest · src/migration.test.ts
catalogmissing implementation linkTest
Variant 1 — convergence baseline: N=10 tabs, 100 random ops
@cv/mutations · vitest · src/multi-tab-fuzz.test.ts
catalogmissing implementation linkTest
Variant 1 — convergence baseline: N=3 tabs, 100 random ops
@cv/mutations · vitest · src/multi-tab-fuzz.test.ts
catalogmissing implementation linkTest
Variant 1 — convergence baseline: N=5 tabs, 100 random ops
@cv/mutations · vitest · src/multi-tab-fuzz.test.ts
catalogmissing implementation linkTest
Variant 2 — concurrent same-target edits: 2 tabs edit same node simultaneously
@cv/mutations · vitest · src/multi-tab-fuzz.test.ts
catalogmissing implementation linkTest
Variant 3 — insert-during-delete: tab A inserts child while tab B deletes parent
@cv/mutations · vitest · src/multi-tab-fuzz.test.ts
catalogmissing implementation linkTest
Variant 4 — high-frequency updates: 1000 small ops across 3 tabs
@cv/mutations · vitest · src/multi-tab-fuzz.test.ts
catalogmissing implementation linkTest
Variant 5 — disconnect/reconnect: tab C queues 50 ops offline, then replays all at once
@cv/mutations · vitest · src/multi-tab-fuzz.test.ts
catalogmissing implementation linkTest
falls back to ["text"] for section-level nodes with archetype="text"
@cv/schemas · vitest · src/node.schema.test.ts
catalogmissing implementation linkTest
is false for list-archetype section nodes
@cv/schemas · vitest · src/node.schema.test.ts
catalogmissing implementation linkTest
is false for variant-pool wrappers
@cv/schemas · vitest · src/node.schema.test.ts
catalogmissing implementation linkTest
is true for list-kind nodes
@cv/schemas · vitest · src/node.schema.test.ts
catalogmissing implementation linkTest
is true for section-level nodes with archetype="text"
@cv/schemas · vitest · src/node.schema.test.ts
catalogmissing implementation linkTest
returns ["heading"] for list-item
@cv/schemas · vitest · src/node.schema.test.ts
catalogmissing implementation linkTest
returns ["text"] for bullet, sub, subheading
@cv/schemas · vitest · src/node.schema.test.ts
catalogmissing implementation linkTest
returns [] for section-level nodes with non-text archetype
@cv/schemas · vitest · src/node.schema.test.ts
catalogmissing implementation linkTest
returns [] for unknown / section-level kinds (use proseDataKeysForNode for those)
@cv/schemas · vitest · src/node.schema.test.ts
catalogmissing implementation linkTest
returns [] for variant-pool wrappers
@cv/schemas · vitest · src/node.schema.test.ts
catalogmissing implementation linkTest
returns [] for variant-pool wrappers regardless of data
@cv/schemas · vitest · src/node.schema.test.ts
catalogmissing implementation linkTest
returns [] when data is missing or empty
@cv/schemas · vitest · src/node.schema.test.ts
catalogmissing implementation linkTest
returns the kind-based keys when the node has a known list-kind
@cv/schemas · vitest · src/node.schema.test.ts
catalogmissing implementation linkTest
BIRTH: appends a child to the parent, auto-generates id when omitted
@cv/mutations · vitest · src/nodes.test.ts
catalogmissing implementation linkTest
REMOVE: removes the node from parent.children
@cv/mutations · vitest · src/nodes.test.ts
catalogmissing implementation linkTest
add: appends ids to active[] idempotently
@cv/mutations · vitest · src/nodes.test.ts
catalogmissing implementation linkTest
allows humans to edit FIXED node data directly
@cv/mutations · vitest · src/nodes.test.ts
catalogmissing implementation linkTest
atomically scrubs the deleted id from parent.selection.active[]
@cv/mutations · vitest · src/nodes.test.ts
catalogmissing implementation linkTest
branch_path:cl_profile always adds edited node as new variant sibling in cl_profile quarry
@cv/mutations · vitest · src/nodes.test.ts
catalogmissing implementation linkTest
branch_path:cl_profile copies cl_profile quarry into tailored_cl
@cv/mutations · vitest · src/nodes.test.ts
catalogmissing implementation linkTest
branch_path:cv_profile always adds edited node as new variant sibling in cv_profile quarry
@cv/mutations · vitest · src/nodes.test.ts
catalogmissing implementation linkTest
branch_path:cv_profile copies cv_profile quarry into workspace.jobs[job_id].attributes.tailored_cv
@cv/mutations · vitest · src/nodes.test.ts
catalogmissing implementation linkTest
cl_profile uses an isolated root from cv_profile
@cv/mutations · vitest · src/nodes.test.ts
catalogmissing implementation linkTest
creates deeply nested nodes (parent_path includes intermediate ids)
@cv/mutations · vitest · src/nodes.test.ts
catalogmissing implementation linkTest
minCount/maxCount: rejects impossible bounds before mutation
@cv/mutations · vitest · src/nodes.test.ts
catalogmissing implementation linkTest
minCount/maxCount: sets and clears cardinality bounds
@cv/mutations · vitest · src/nodes.test.ts
catalogmissing implementation linkTest
moves a node between parents atomically
@cv/mutations · vitest · src/nodes.test.ts
catalogmissing implementation linkTest
node.create produces a broker-acceptable update
@cv/mutations · vitest · src/nodes.test.ts
catalogmissing implementation linkTest
overwrites a previously-populated lang slot
@cv/mutations · vitest · src/nodes.test.ts
catalogmissing implementation linkTest
patches mutable fields (data, prompt, kind, tier)
@cv/mutations · vitest · src/nodes.test.ts
catalogmissing implementation linkTest
promote always creates a variant, never replaces (no mode arg)
@cv/mutations · vitest · src/nodes.test.ts
catalogmissing implementation linkTest
rejects active[] entries not in children (invariant #3)
@cv/mutations · vitest · src/nodes.test.ts
catalogmissing implementation linkTest
rejects forbidden patches atomically -- earlier fields NOT mutated
@cv/mutations · vitest · src/nodes.test.ts
catalogmissing implementation linkTest
rejects non-human updates to FIXED nodes regardless of force policy
@cv/mutations · vitest · src/nodes.test.ts
catalogmissing implementation linkTest
remove: removes ids from active[]
@cv/mutations · vitest · src/nodes.test.ts
catalogmissing implementation linkTest
respects explicit id when provided
@cv/mutations · vitest · src/nodes.test.ts
catalogmissing implementation linkTest
same-parent reorder: to_index 0 moves to front (post-removal index)
@cv/mutations · vitest · src/nodes.test.ts
catalogmissing implementation linkTest
same-parent reorder: to_index 1 swaps b1 with b2
@cv/mutations · vitest · src/nodes.test.ts
catalogmissing implementation linkTest
same-parent reorder: to_index past end appends
@cv/mutations · vitest · src/nodes.test.ts
catalogmissing implementation linkTest
seeds a language slot with a root node tree
@cv/mutations · vitest · src/nodes.test.ts
catalogmissing implementation linkTest
selection.update produces a broker-acceptable update
@cv/mutations · vitest · src/nodes.test.ts
catalogmissing implementation linkTest
setActive: replaces active[] wholesale
@cv/mutations · vitest · src/nodes.test.ts
catalogmissing implementation linkTest
throws on duplicate id within the same parent
@cv/mutations · vitest · src/nodes.test.ts
catalogmissing implementation linkTest
throws on id collision at destination
@cv/mutations · vitest · src/nodes.test.ts
catalogmissing implementation linkTest
throws on single-segment node_path (must include parent)
@cv/mutations · vitest · src/nodes.test.ts
catalogmissing implementation linkTest
throws when branch has no tree (unseeded)
@cv/mutations · vitest · src/nodes.test.ts
catalogmissing implementation linkTest
throws when job not found
@cv/mutations · vitest · src/nodes.test.ts
catalogmissing implementation linkTest
throws when node id not found in parent
@cv/mutations · vitest · src/nodes.test.ts
catalogmissing implementation linkTest
throws when parent_path does not match root id
@cv/mutations · vitest · src/nodes.test.ts
catalogmissing implementation linkTest
throws when patching children (use node.create/delete)
@cv/mutations · vitest · src/nodes.test.ts
catalogmissing implementation linkTest
throws when patching id (immutable)
@cv/mutations · vitest · src/nodes.test.ts
catalogmissing implementation linkTest
to_index 0: inserts at the start of the destination
@cv/mutations · vitest · src/nodes.test.ts
catalogmissing implementation linkTest
to_index clamped to end when larger than children.length
@cv/mutations · vitest · src/nodes.test.ts
catalogmissing implementation linkTest
to_index in middle of destination splices at the requested slot
@cv/mutations · vitest · src/nodes.test.ts
catalogmissing implementation linkTest
to_index undefined: appends at destination (legacy default)
@cv/mutations · vitest · src/nodes.test.ts
catalogmissing implementation linkTest
two clients creating different nodes concurrently merge cleanly
@cv/mutations · vitest · src/nodes.test.ts
catalogmissing implementation linkTest
two clients updating different fields of the same node merge cleanly
@cv/mutations · vitest · src/nodes.test.ts
catalogmissing implementation linkTest
copies a source node to the target language tree with translated fields
@cv/mutations · vitest · src/translate.test.ts
catalogmissing implementation linkTest
leaves canonical doc unchanged when probe-clone throws mid-op
@cv/mutations · vitest · src/translate.test.ts
catalogmissing implementation linkTest
overwrites existing target node with translated content
@cv/mutations · vitest · src/translate.test.ts
catalogmissing implementation linkTest
rejects when source_lang equals target_lang
@cv/mutations · vitest · src/translate.test.ts
catalogmissing implementation linkTest
rejects when source_path and target_path reference the same language tree
@cv/mutations · vitest · src/translate.test.ts
catalogmissing implementation linkTest
rejects when source_path has invalid format
@cv/mutations · vitest · src/translate.test.ts
catalogmissing implementation linkTest
rejects when translated_node is missing required fields
@cv/mutations · vitest · src/translate.test.ts
catalogmissing implementation linkTest
returns ok for a well-formed op
@cv/mutations · vitest · src/translate.test.ts
catalogmissing implementation linkTest
throws when source path does not exist
@cv/mutations · vitest · src/translate.test.ts
catalogmissing implementation linkTest
throws when source_path has wrong format (too few segments)
@cv/mutations · vitest · src/translate.test.ts
catalogmissing implementation linkTest
throws when target tree (lang slot) does not exist
@cv/mutations · vitest · src/translate.test.ts
catalogmissing implementation linkTest
translates into cl_profile too (not just cv_profile)
@cv/mutations · vitest · src/translate.test.ts
catalogmissing implementation linkTest
0 guard: update touching only known roots is not treated as blocked
@cv/mutations · vitest · src/validate.test.ts
catalogmissing implementation linkTest
accepts a notes XmlFragment update
@cv/mutations · vitest · src/validate.test.ts
catalogmissing implementation linkTest
accepts a valid job update through the broker contract
@cv/mutations · vitest · src/validate.test.ts
catalogmissing implementation linkTest
accepts a valid layout update
@cv/mutations · vitest · src/validate.test.ts
catalogmissing implementation linkTest
accepts a valid order_state update
@cv/mutations · vitest · src/validate.test.ts
catalogmissing implementation linkTest
accepts an empty notes fragment touch (no children yet)
@cv/mutations · vitest · src/validate.test.ts
catalogmissing implementation linkTest
accepts generalized n-of-m selections inside bounds
@cv/mutations · vitest · src/validate.test.ts
catalogmissing implementation linkTest
accepts the legacy sentinel for the matching class
@cv/mutations · vitest · src/validate.test.ts
catalogmissing implementation linkTest
accepts valid 2-char lang codes
@cv/mutations · vitest · src/validate.test.ts
catalogmissing implementation linkTest
allows legitimate (non-cloud_keys) updates through
@cv/mutations · vitest · src/validate.test.ts
catalogmissing implementation linkTest
blocked_path error message is non-empty and identifies cloud_keys
@cv/mutations · vitest · src/validate.test.ts
catalogmissing implementation linkTest
canonical Y.Doc cloud_keys is unchanged after rejection
@cv/mutations · vitest · src/validate.test.ts
catalogmissing implementation linkTest
disconnect/reconnect catch-up: client receives diff for missed ops
@cv/mutations · vitest · src/validate.test.ts
catalogmissing implementation linkTest
does not corrupt the canonical Y.Doc when the notes shape is rejected
@cv/mutations · vitest · src/validate.test.ts
catalogmissing implementation linkTest
lets humans and force-approved agents exceed cardinality policy
@cv/mutations · vitest · src/validate.test.ts
catalogmissing implementation linkTest
rejects a cloud_keys write via WebSocket (blocked_path)
@cv/mutations · vitest · src/validate.test.ts
catalogmissing implementation linkTest
rejects a layout update with a non-numeric column width
@cv/mutations · vitest · src/validate.test.ts
catalogmissing implementation linkTest
rejects a non-map root (e.g. Y.Array at "layout") without throwing
@cv/mutations · vitest · src/validate.test.ts
catalogmissing implementation linkTest
rejects a notes update that registers Y.Array carrying a Y.Map
@cv/mutations · vitest · src/validate.test.ts
catalogmissing implementation linkTest
rejects a notes update that registers Y.Array of primitives
@cv/mutations · vitest · src/validate.test.ts
catalogmissing implementation linkTest
rejects a notes update that registers Y.Map at the root
@cv/mutations · vitest · src/validate.test.ts
catalogmissing implementation linkTest
rejects a raw workspace job entry without an attributes container
@cv/mutations · vitest · src/validate.test.ts
catalogmissing implementation linkTest
rejects an unknown root path
@cv/mutations · vitest · src/validate.test.ts
catalogmissing implementation linkTest
rejects camel-case raw hidden ids in workspace job entries
@cv/mutations · vitest · src/validate.test.ts
catalogmissing implementation linkTest
rejects hidden shared ids inside JSON-string raw workspace job attributes
@cv/mutations · vitest · src/validate.test.ts
catalogmissing implementation linkTest
rejects nested hidden shared ids inside raw workspace job attributes
@cv/mutations · vitest · src/validate.test.ts
catalogmissing implementation linkTest
rejects pipeline selections above maxCount
@cv/mutations · vitest · src/validate.test.ts
catalogmissing implementation linkTest
rejects pipeline selections below minCount
@cv/mutations · vitest · src/validate.test.ts
catalogmissing implementation linkTest
rejects raw hidden shared ids in workspace job entries
@cv/mutations · vitest · src/validate.test.ts
catalogmissing implementation linkTest
rejects same source_lang and target_lang (same-lang guard)
@cv/mutations · vitest · src/validate.test.ts
catalogmissing implementation linkTest
rejects source_lang with only 1 character
@cv/mutations · vitest · src/validate.test.ts
catalogmissing implementation linkTest
rejects stripped extra fields under a known root (strict-keys)
@cv/mutations · vitest · src/validate.test.ts
catalogmissing implementation linkTest
rejects target_lang with only 1 character
@cv/mutations · vitest · src/validate.test.ts
catalogmissing implementation linkTest
rejects the legacy sentinel for the wrong class
@cv/mutations · vitest · src/validate.test.ts
catalogmissing implementation linkTest
rejects url inside raw workspace job attributes
@cv/mutations · vitest · src/validate.test.ts
catalogmissing implementation linkTest
returns null and reports when malformed
@cv/mutations · vitest · src/validate.test.ts
catalogmissing implementation linkTest
returns null and reports when missing
@cv/mutations · vitest · src/validate.test.ts
catalogmissing implementation linkTest
returns the input when format matches the class
@cv/mutations · vitest · src/validate.test.ts
catalogmissing implementation linkTest
two-client sync: apply both clients sequentially via validateUpdate
@cv/mutations · vitest · src/validate.test.ts
catalogmissing implementation linkTest
unknown_path error message contains the dot-joined path segments
@cv/mutations · vitest · src/validate.test.ts
catalogmissing implementation linkTest
adding the same ids twice results in no duplicates in active[]
@cv/mutations · vitest · test/properties.test.ts
catalogmissing implementation linkTest
children ids are unique after N creates
@cv/mutations · vitest · test/properties.test.ts
catalogmissing implementation linkTest
deleted id is absent from parent.selection.active after delete
@cv/mutations · vitest · test/properties.test.ts
catalogmissing implementation linkTest
every child of the translated_node appears in the target slot
@cv/mutations · vitest · test/properties.test.ts
catalogmissing implementation linkTest
holds after N create + select ops
@cv/mutations · vitest · test/properties.test.ts
catalogmissing implementation linkTest
holds after profile.replace with a two-level tree
@cv/mutations · vitest · test/properties.test.ts
catalogmissing implementation linkTest
holds for any valid node seeded into a Y.Doc
@cv/mutations · vitest · test/properties.test.ts
catalogmissing implementation linkTest
maxCount
@cv/mutations · vitest · test/properties.test.ts
catalogmissing implementation linkTest
maxCount for pipeline actor
@cv/mutations · vitest · test/properties.test.ts
catalogmissing implementation linkTest
node.create rejects a duplicate id
@cv/mutations · vitest · test/properties.test.ts
catalogmissing implementation linkTest
returns ok:true even when active.length >> maxCount
@cv/mutations · vitest · test/properties.test.ts
catalogmissing implementation linkTest
returns ok:true when active.length <= maxCount for pipeline
@cv/mutations · vitest · test/properties.test.ts
catalogmissing implementation linkTest
selection.active is [] at root regardless of incoming tree's active list
@cv/mutations · vitest · test/properties.test.ts
catalogmissing implementation linkTest
selection.active is unchanged after a data patch
@cv/mutations · vitest · test/properties.test.ts
catalogmissing implementation linkTest
snapshot then read-back produces identical Node structure
@cv/mutations · vitest · test/properties.test.ts
catalogmissing implementation linkTest
target slot has exactly the translated node's children after overwrite
@cv/mutations · vitest · test/properties.test.ts
catalogmissing implementation linkTest