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