← Back to suites
careervector-domain-unit zero-budget semantic-index

CareerVector domain unit

Pin the pure-function surface of @cv/domain: the LLM cascade (resolver, seed/consensus, chain-config loader, callWithChain, model catalog, AI LED), salary extraction repair, cell-origin and audit projections, scoring + hard-fact normalization, views rule engine, columns + order + import/export, locale + language helpers, scrape URL normalize, Google Maps directions wrapper, the singleflight compute lock, protected-fields gate, pipeline stage executors + xstate machine, BYOK key helpers, workspace settings helpers, ruler/measure source (with optional typst CLI integration) + fragment cache, font fallback registry, node-to-typst + preview-segments, jobcache row builders + workspace read chain, Zod schema defaults, gateway sinks, slug ID bookkeeping, industries enum, translate, and the cross-bundle equivalence check that catches bundler drift.

Behaviours 0 Tests 979 Graph 980 nodes · 984 edges Runner - CircleCI lib_domain_unit Source qa/suites/careervector-domain-unit.yaml

Test witnesses

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

TestStatusImplementationOpen
does not treat enrichment research scrape as LLM availability
@cv/api · vitest · src/lib/server/chain-availability.test.ts
catalogmissing implementation linkTest
marks a stage unavailable when one required consumer has no usable chain
@cv/api · vitest · src/lib/server/chain-availability.test.ts
catalogmissing implementation linkTest
requires resolved chains, not just provider keys
@cv/api · vitest · src/lib/server/chain-availability.test.ts
catalogmissing implementation linkTest
uses the same stage and consumer identifiers as execution
@cv/api · vitest · src/lib/server/chain-availability.test.ts
catalogmissing implementation linkTest
batches the queued rerun side effect before committing the ad update
@cv/api · vitest · src/lib/server/process-commands.test.ts
catalogmissing implementation linkTest
keeps browser/UI-originated reruns browser-first by default
@cv/api · vitest · src/lib/server/process-commands.test.ts
catalogmissing implementation linkTest
kicks the per-workspace fallback executor with bypassStaleAge for MCP-initiated requests
@cv/api · vitest · src/lib/server/process-commands.test.ts
catalogmissing implementation linkTest
reads evaluate criteria from the settings sub-doc only
@cv/api · vitest · src/lib/server/process-commands.test.ts
catalogmissing implementation linkTest
requires the target job in the jobs sub-doc before side effects
@cv/api · vitest · src/lib/server/process-commands.test.ts
catalogmissing implementation linkTest
rolls back the relational queue batch when the workspace commit fails
@cv/api · vitest · src/lib/server/process-commands.test.ts
catalogmissing implementation linkTest
skips the immediate dispatch when the caller opts out via skipServerDispatch
@cv/api · vitest · src/lib/server/process-commands.test.ts
catalogmissing implementation linkTest
critic passes on last provider even if critic fails
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
critic rejection falls through to next provider
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
does not replay active cooldown for duplicate provider-model keys
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
falls through to next provider on error
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
handles no retry timing
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
includes providers and retry timing in message
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
is instanceof Error
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
malformed-output on fireworks does not leak the API key
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
malformed-output on groq does not leak the API key
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
malformed-output on openrouter does not leak the API key
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
malformed-output on together does not leak the API key
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
normalizes malformed-output on fireworks into ChainExhaustionError
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
normalizes malformed-output on groq into ChainExhaustionError
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
normalizes malformed-output on openrouter into ChainExhaustionError
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
normalizes malformed-output on together into ChainExhaustionError
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
normalizes quota-exhausted on fireworks into RateLimitError
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
normalizes quota-exhausted on groq into RateLimitError
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
normalizes quota-exhausted on openrouter into RateLimitError
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
normalizes quota-exhausted on together into RateLimitError
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
normalizes refusal on fireworks into ChainExhaustionError
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
normalizes refusal on groq into ChainExhaustionError
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
normalizes refusal on openrouter into ChainExhaustionError
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
normalizes refusal on together into ChainExhaustionError
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
normalizes server-5xx on fireworks into ChainExhaustionError
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
normalizes server-5xx on groq into ChainExhaustionError
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
normalizes server-5xx on openrouter into ChainExhaustionError
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
normalizes server-5xx on together into ChainExhaustionError
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
normalizes timeout on fireworks into ChainExhaustionError
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
normalizes timeout on groq into ChainExhaustionError
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
normalizes timeout on openrouter into ChainExhaustionError
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
normalizes timeout on together into ChainExhaustionError
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
notifies the attempt observer as each provider is classified
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
provider-neutral shape: same fields populated regardless of which provider failed
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
quota-exhausted on fireworks does not leak the API key
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
quota-exhausted on groq does not leak the API key
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
quota-exhausted on openrouter does not leak the API key
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
quota-exhausted on together does not leak the API key
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
records provider cooldown attempts after a rate limit
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
refusal on fireworks does not leak the API key
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
refusal on groq does not leak the API key
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
refusal on openrouter does not leak the API key
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
refusal on together does not leak the API key
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
returns result from first provider on success
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
server-5xx on fireworks does not leak the API key
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
server-5xx on groq does not leak the API key
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
server-5xx on openrouter does not leak the API key
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
server-5xx on together does not leak the API key
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
throws RateLimitError when all providers are rate-limited
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
throws regular error when some providers fail with non-429 errors
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
throws when chain is empty
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
timeout on fireworks does not leak the API key
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
timeout on groq does not leak the API key
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
timeout on openrouter does not leak the API key
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
timeout on together does not leak the API key
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
times out a stalled provider attempt and falls through
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
audit query distinguishes them
@cv/domain · vitest · tests/audit.test.ts
catalogmissing implementation linkTest
caps results at the supplied limit
@cv/domain · vitest · tests/audit.test.ts
catalogmissing implementation linkTest
combines provider + model patterns with AND on the actor_id
@cv/domain · vitest · tests/audit.test.ts
catalogmissing implementation linkTest
drops rows older than sinceMs
@cv/domain · vitest · tests/audit.test.ts
catalogmissing implementation linkTest
filters then folds: only the matching ops drive the projection
@cv/domain · vitest · tests/audit.test.ts
catalogmissing implementation linkTest
folds rows through projectCellOrigins to yield the cell-origin map
@cv/domain · vitest · tests/audit.test.ts
catalogmissing implementation linkTest
formatActorId composes a valid actor_id
@cv/domain · vitest · tests/audit.test.ts
catalogmissing implementation linkTest
honors the workspace_id filter
@cv/domain · vitest · tests/audit.test.ts
catalogmissing implementation linkTest
integration trail rows survive findCellsProducedBy verbatim
@cv/domain · vitest · tests/audit.test.ts
catalogmissing implementation linkTest
limits to one actorClass when supplied
@cv/domain · vitest · tests/audit.test.ts
catalogmissing implementation linkTest
parseActorId round-trips structured ids
@cv/domain · vitest · tests/audit.test.ts
catalogmissing implementation linkTest
returns every row when filter is empty
@cv/domain · vitest · tests/audit.test.ts
catalogmissing implementation linkTest
returns rows matching the provider pattern (pipeline + agent shapes)
@cv/domain · vitest · tests/audit.test.ts
catalogmissing implementation linkTest
applyOp produces equivalent Y.Doc projections across both bundles
@cv/domain · vitest · tests/bundle-equivalence.test.ts
catalogmissing implementation linkTest
latestOriginsForCells agrees on partial-match lookups
@cv/domain · vitest · tests/bundle-equivalence.test.ts
catalogmissing implementation linkTest
nodeToTypst on a synthetic variant-pool tree agrees across both bundles
@cv/domain · vitest · tests/bundle-equivalence.test.ts
catalogmissing implementation linkTest
nodeToTypst on the default CL-de tree agrees across both bundles
@cv/domain · vitest · tests/bundle-equivalence.test.ts
catalogmissing implementation linkTest
nodeToTypst on the default CV-en tree agrees across both bundles
@cv/domain · vitest · tests/bundle-equivalence.test.ts
catalogmissing implementation linkTest
projectCellOrigins agrees across browser + worker bundles for a mixed-actor fixture
@cv/domain · vitest · tests/bundle-equivalence.test.ts
catalogmissing implementation linkTest
providerIdFromActorId agrees on every actor-class branch
@cv/domain · vitest · tests/bundle-equivalence.test.ts
catalogmissing implementation linkTest
runEnrichStage produces equivalent patches with stubbed commute + salary
@cv/domain · vitest · tests/bundle-equivalence.test.ts
catalogmissing implementation linkTest
runEvaluateStage produces equivalent patches with scoring against the full job
@cv/domain · vitest · tests/bundle-equivalence.test.ts
catalogmissing implementation linkTest
runExtractStage produces equivalent patches for a curated LLM response
@cv/domain · vitest · tests/bundle-equivalence.test.ts
catalogmissing implementation linkTest
runRadarStage produces equivalent patches with a stubbed scrape result
@cv/domain · vitest · tests/bundle-equivalence.test.ts
catalogmissing implementation linkTest
runTailorStage early-return shape agrees across both bundles
@cv/domain · vitest · tests/bundle-equivalence.test.ts
catalogmissing implementation linkTest
runTailorStage empty-quarry guard error message agrees across both bundles
@cv/domain · vitest · tests/bundle-equivalence.test.ts
catalogmissing implementation linkTest
unknown_op_kind error message agrees across both bundles
@cv/domain · vitest · tests/bundle-equivalence.test.ts
catalogmissing implementation linkTest
applies last-write-wins on the same cell
@cv/domain · vitest · tests/cell-origins.test.ts
catalogmissing implementation linkTest
coerces null actorId to an empty string in the response
@cv/domain · vitest · tests/cell-origins.test.ts
catalogmissing implementation linkTest
descends into batch sub-ops inheriting outer actor
@cv/domain · vitest · tests/cell-origins.test.ts
catalogmissing implementation linkTest
descends into batch sub-ops, inheriting the outer actor
@cv/domain · vitest · tests/cell-origins.test.ts
catalogmissing implementation linkTest
does not treat default empty job.create seed values as human edits
@cv/domain · vitest · tests/cell-origins.test.ts
catalogmissing implementation linkTest
drops the row on job.delete
@cv/domain · vitest · tests/cell-origins.test.ts
catalogmissing implementation linkTest
falls back to null for agent actor_id without a provider segment
@cv/domain · vitest · tests/cell-origins.test.ts
catalogmissing implementation linkTest
fans out evaluations.* keys into bare col ids
@cv/domain · vitest · tests/cell-origins.test.ts
catalogmissing implementation linkTest
handles a race: same cell, two distinct writers, clock decides
@cv/domain · vitest · tests/cell-origins.test.ts
catalogmissing implementation linkTest
handles system writers (commute, follow-up auto, etc.)
@cv/domain · vitest · tests/cell-origins.test.ts
catalogmissing implementation linkTest
ignores empty job.create seed values during latest-origin lookup
@cv/domain · vitest · tests/cell-origins.test.ts
catalogmissing implementation linkTest
ignores entries for other jobs
@cv/domain · vitest · tests/cell-origins.test.ts
catalogmissing implementation linkTest
ignores ops with no dashboard-cell impact
@cv/domain · vitest · tests/cell-origins.test.ts
catalogmissing implementation linkTest
parses agent actor_id as <agent>:<provider>:<model>
@cv/domain · vitest · tests/cell-origins.test.ts
catalogmissing implementation linkTest
parses pipeline actor_id as <provider>:<model>
@cv/domain · vitest · tests/cell-origins.test.ts
catalogmissing implementation linkTest
projects a single job.update patch into per-column origins
@cv/domain · vitest · tests/cell-origins.test.ts
catalogmissing implementation linkTest
records job.create seed columns
@cv/domain · vitest · tests/cell-origins.test.ts
catalogmissing implementation linkTest
resolves fan-out keys by inner colId
@cv/domain · vitest · tests/cell-origins.test.ts
catalogmissing implementation linkTest
respects last-write-wins across the reverse walk
@cv/domain · vitest · tests/cell-origins.test.ts
catalogmissing implementation linkTest
returns an empty map when no entries
@cv/domain · vitest · tests/cell-origins.test.ts
catalogmissing implementation linkTest
returns an empty record for empty colIds list
@cv/domain · vitest · tests/cell-origins.test.ts
catalogmissing implementation linkTest
returns null after a job.delete for the job
@cv/domain · vitest · tests/cell-origins.test.ts
catalogmissing implementation linkTest
returns null for empty jobId or colId
@cv/domain · vitest · tests/cell-origins.test.ts
catalogmissing implementation linkTest
returns null for human; returns the provider segment for system
@cv/domain · vitest · tests/cell-origins.test.ts
catalogmissing implementation linkTest
returns null when actorId is empty
@cv/domain · vitest · tests/cell-origins.test.ts
catalogmissing implementation linkTest
returns null when the cell has never been written
@cv/domain · vitest · tests/cell-origins.test.ts
catalogmissing implementation linkTest
returns origins for every requested cell that has a writer
@cv/domain · vitest · tests/cell-origins.test.ts
catalogmissing implementation linkTest
returns the latest writer for a hot cell
@cv/domain · vitest · tests/cell-origins.test.ts
catalogmissing implementation linkTest
returns the single segment when pipeline actor_id has no model suffix
@cv/domain · vitest · tests/cell-origins.test.ts
catalogmissing implementation linkTest
short-circuits after a job.delete
@cv/domain · vitest · tests/cell-origins.test.ts
catalogmissing implementation linkTest
skips ALWAYS_SYSTEM_FIELDS (score, score_details, timestamps)
@cv/domain · vitest · tests/cell-origins.test.ts
catalogmissing implementation linkTest
skips an op when its kind is unknown
@cv/domain · vitest · tests/cell-origins.test.ts
catalogmissing implementation linkTest
strips a previously-tinted cell when a human job.update overwrites it
@cv/domain · vitest · tests/cell-origins.test.ts
catalogmissing implementation linkTest
a single fetch is shared across consumers of the same workspace loader
@cv/domain · vitest · tests/chain-loader.test.ts
catalogmissing implementation linkTest
invalidate fans out to every consumer holding the same loader (bug H4)
@cv/domain · vitest · tests/chain-loader.test.ts
catalogmissing implementation linkTest
invalidate of an unknown workspace is a safe no-op
@cv/domain · vitest · tests/chain-loader.test.ts
catalogmissing implementation linkTest
invalidateChainConfigLoader drops the cached promise so the next get refetches
@cv/domain · vitest · tests/chain-loader.test.ts
catalogmissing implementation linkTest
resets cache on fetch failure so the next call retries
@cv/domain · vitest · tests/chain-loader.test.ts
catalogmissing implementation linkTest
returns distinct loaders for different workspace ids
@cv/domain · vitest · tests/chain-loader.test.ts
catalogmissing implementation linkTest
returns the same loader instance for the same workspace id
@cv/domain · vitest · tests/chain-loader.test.ts
catalogmissing implementation linkTest
two independently-created loaders DO NOT cross-invalidate (the bug rationale)
@cv/domain · vitest · tests/chain-loader.test.ts
catalogmissing implementation linkTest
preserves entered key order by default
@cv/domain · vitest · tests/chain.test.ts
catalogmissing implementation linkTest
preserves entered key order when usage is ordered
@cv/domain · vitest · tests/chain.test.ts
catalogmissing implementation linkTest
rotates the first attempted key when usage is balanced
@cv/domain · vitest · tests/chain.test.ts
catalogmissing implementation linkTest
"Act" is a special group
@cv/domain · vitest · tests/columns.test.ts
catalogmissing implementation linkTest
"Category" is a special group
@cv/domain · vitest · tests/columns.test.ts
catalogmissing implementation linkTest
"Identity" is NOT a special group
@cv/domain · vitest · tests/columns.test.ts
catalogmissing implementation linkTest
"Opportunity" is NOT a special group
@cv/domain · vitest · tests/columns.test.ts
catalogmissing implementation linkTest
"Pipeline" is NOT a special group
@cv/domain · vitest · tests/columns.test.ts
catalogmissing implementation linkTest
"Scorecard" is NOT a special group
@cv/domain · vitest · tests/columns.test.ts
catalogmissing implementation linkTest
"Sort" is a special group
@cv/domain · vitest · tests/columns.test.ts
catalogmissing implementation linkTest
all columns hidden returns empty array
@cv/domain · vitest · tests/columns.test.ts
catalogmissing implementation linkTest
built-in "score" returns superHeader "Scorecard"
@cv/domain · vitest · tests/columns.test.ts
catalogmissing implementation linkTest
built-in "status" returns label "Status" and superHeader "Pipeline"
@cv/domain · vitest · tests/columns.test.ts
catalogmissing implementation linkTest
built-in "title" returns label "Job" and superHeader "Opportunity"
@cv/domain · vitest · tests/columns.test.ts
catalogmissing implementation linkTest
custom column "eval_culture" returns stripped label "culture"
@cv/domain · vitest · tests/columns.test.ts
catalogmissing implementation linkTest
custom column inherits template properties
@cv/domain · vitest · tests/columns.test.ts
catalogmissing implementation linkTest
different superHeaders create separate groups
@cv/domain · vitest · tests/columns.test.ts
catalogmissing implementation linkTest
empty column order returns 0
@cv/domain · vitest · tests/columns.test.ts
catalogmissing implementation linkTest
empty string is a special group
@cv/domain · vitest · tests/columns.test.ts
catalogmissing implementation linkTest
groups adjacent columns with the same superHeader
@cv/domain · vitest · tests/columns.test.ts
catalogmissing implementation linkTest
hidden columns are excluded from the sum
@cv/domain · vitest · tests/columns.test.ts
catalogmissing implementation linkTest
layout override takes precedence over defaults
@cv/domain · vitest · tests/columns.test.ts
catalogmissing implementation linkTest
layout width overrides default width
@cv/domain · vitest · tests/columns.test.ts
catalogmissing implementation linkTest
non-adjacent same superHeader columns create separate groups
@cv/domain · vitest · tests/columns.test.ts
catalogmissing implementation linkTest
single column group works
@cv/domain · vitest · tests/columns.test.ts
catalogmissing implementation linkTest
skips hidden columns
@cv/domain · vitest · tests/columns.test.ts
catalogmissing implementation linkTest
sums widths of visible columns
@cv/domain · vitest · tests/columns.test.ts
catalogmissing implementation linkTest
unknown column "xyz" returns fallback with label "xyz", superHeader "Unknown"
@cv/domain · vitest · tests/columns.test.ts
catalogmissing implementation linkTest
builds the upload filename from nameForFile + jobOrg + docType
@cv/domain · vitest · tests/document.test.ts
catalogmissing implementation linkTest
does not mutate the input tree
@cv/domain · vitest · tests/document.test.ts
catalogmissing implementation linkTest
injects header, subject, opening, and closing context for fixed sections
@cv/domain · vitest · tests/document.test.ts
catalogmissing implementation linkTest
strips non-clonable proxies before sending data to the Typst worker
@cv/domain · vitest · tests/document.test.ts
catalogmissing implementation linkTest
Act group columns (e.g. delete) are excluded
@cv/domain · vitest · tests/export.test.ts
catalogmissing implementation linkTest
Files group columns (cv, cl) are excluded
@cv/domain · vitest · tests/export.test.ts
catalogmissing implementation linkTest
Sort group columns (e.g. _drag, _category) are excluded
@cv/domain · vitest · tests/export.test.ts
catalogmissing implementation linkTest
boolean evaluation false is formatted as "No"
@cv/domain · vitest · tests/export.test.ts
catalogmissing implementation linkTest
boolean evaluation true is formatted as "Yes"
@cv/domain · vitest · tests/export.test.ts
catalogmissing implementation linkTest
category column absent when no jobs have categoryName
@cv/domain · vitest · tests/export.test.ts
catalogmissing implementation linkTest
category column appears first when jobs have categoryName
@cv/domain · vitest · tests/export.test.ts
catalogmissing implementation linkTest
custom eval columns use eval_ prefix and resolve label from settings
@cv/domain · vitest · tests/export.test.ts
catalogmissing implementation linkTest
empty jobs array produces empty exportData
@cv/domain · vitest · tests/export.test.ts
catalogmissing implementation linkTest
eval_ prefix is stripped for visibility lookup
@cv/domain · vitest · tests/export.test.ts
catalogmissing implementation linkTest
hidden columns (visibility false) are excluded
@cv/domain · vitest · tests/export.test.ts
catalogmissing implementation linkTest
null values become empty strings
@cv/domain · vitest · tests/export.test.ts
catalogmissing implementation linkTest
preserves column order from orderedColumnIds
@cv/domain · vitest · tests/export.test.ts
catalogmissing implementation linkTest
reversed order is preserved
@cv/domain · vitest · tests/export.test.ts
catalogmissing implementation linkTest
status_id is resolved to status name in export data
@cv/domain · vitest · tests/export.test.ts
catalogmissing implementation linkTest
undefined values become empty strings
@cv/domain · vitest · tests/export.test.ts
catalogmissing implementation linkTest
unknown status_id resolves to empty string
@cv/domain · vitest · tests/export.test.ts
catalogmissing implementation linkTest
default fallback is one of the loaded families
@cv/domain · vitest · tests/font-fallback.test.ts
catalogmissing implementation linkTest
lists exactly the fonts the Typst worker loads
@cv/domain · vitest · tests/font-fallback.test.ts
catalogmissing implementation linkTest
returns a warning for an unknown font with the configured fallback
@cv/domain · vitest · tests/font-fallback.test.ts
catalogmissing implementation linkTest
returns false for null/empty/whitespace
@cv/domain · vitest · tests/font-fallback.test.ts
catalogmissing implementation linkTest
returns null when no font is configured
@cv/domain · vitest · tests/font-fallback.test.ts
catalogmissing implementation linkTest
returns null when the requested font is loaded
@cv/domain · vitest · tests/font-fallback.test.ts
catalogmissing implementation linkTest
returns true for loaded families and false otherwise
@cv/domain · vitest · tests/font-fallback.test.ts
catalogmissing implementation linkTest
accepts writes without error
@cv/domain · vitest · tests/gateway.test.ts
catalogmissing implementation linkTest
calls db.execute with correct args and swallows errors
@cv/domain · vitest · tests/gateway.test.ts
catalogmissing implementation linkTest
classifies 429 as rate_limited
@cv/domain · vitest · tests/gateway.test.ts
catalogmissing implementation linkTest
classifies rate limit in result.error
@cv/domain · vitest · tests/gateway.test.ts
catalogmissing implementation linkTest
classifies timeout errors
@cv/domain · vitest · tests/gateway.test.ts
catalogmissing implementation linkTest
fans out to all sinks
@cv/domain · vitest · tests/gateway.test.ts
catalogmissing implementation linkTest
geocodeAddress pattern: failure logs error without throwing
@cv/domain · vitest · tests/gateway.test.ts
catalogmissing implementation linkTest
geocodeAddress pattern: success flows through gwResult
@cv/domain · vitest · tests/gateway.test.ts
catalogmissing implementation linkTest
measures latency
@cv/domain · vitest · tests/gateway.test.ts
catalogmissing implementation linkTest
passes through workspace and job context
@cv/domain · vitest · tests/gateway.test.ts
catalogmissing implementation linkTest
re-throws if callFn itself throws
@cv/domain · vitest · tests/gateway.test.ts
catalogmissing implementation linkTest
re-throws on error and writes an error record
@cv/domain · vitest · tests/gateway.test.ts
catalogmissing implementation linkTest
returns the call result on success
@cv/domain · vitest · tests/gateway.test.ts
catalogmissing implementation linkTest
returns the result object on success
@cv/domain · vitest · tests/gateway.test.ts
catalogmissing implementation linkTest
translate pattern: error re-throws and logs
@cv/domain · vitest · tests/gateway.test.ts
catalogmissing implementation linkTest
translate pattern: success flows through gw
@cv/domain · vitest · tests/gateway.test.ts
catalogmissing implementation linkTest
writes an ok record on success
@cv/domain · vitest · tests/gateway.test.ts
catalogmissing implementation linkTest
writes error record when success=false (does not throw)
@cv/domain · vitest · tests/gateway.test.ts
catalogmissing implementation linkTest
writes ok record when success=true
@cv/domain · vitest · tests/gateway.test.ts
catalogmissing implementation linkTest
writes structured JSON to console.log
@cv/domain · vitest · tests/gateway.test.ts
catalogmissing implementation linkTest
does not report disabled/unconfigured LLM stages as failures
@cv/domain · vitest · tests/health.test.ts
catalogmissing implementation linkTest
still reports real LLM stage failures as red
@cv/domain · vitest · tests/health.test.ts
catalogmissing implementation linkTest
SlugIndex handles rapid successive heading changes
@cv/domain · vitest · tests/ids.test.ts
catalogmissing implementation linkTest
assigns ID to new item (no collision)
@cv/domain · vitest · tests/ids.test.ts
catalogmissing implementation linkTest
assigns plain slugs for unique headings
@cv/domain · vitest · tests/ids.test.ts
catalogmissing implementation linkTest
detects stale IDs after reorder
@cv/domain · vitest · tests/ids.test.ts
catalogmissing implementation linkTest
disambiguates duplicates by position
@cv/domain · vitest · tests/ids.test.ts
catalogmissing implementation linkTest
disambiguates when rename creates collision
@cv/domain · vitest · tests/ids.test.ts
catalogmissing implementation linkTest
disambiguates with -a on first collision
@cv/domain · vitest · tests/ids.test.ts
catalogmissing implementation linkTest
disambiguates with -b, -c on subsequent collisions
@cv/domain · vitest · tests/ids.test.ts
catalogmissing implementation linkTest
handles *...* markers
@cv/domain · vitest · tests/ids.test.ts
catalogmissing implementation linkTest
handles 26+ collisions with timestamp fallback
@cv/domain · vitest · tests/ids.test.ts
catalogmissing implementation linkTest
handles all empty headings
@cv/domain · vitest · tests/ids.test.ts
catalogmissing implementation linkTest
handles empty label
@cv/domain · vitest · tests/ids.test.ts
catalogmissing implementation linkTest
idMap derived from updates preserves Set<string> membership across rename
@cv/domain · vitest · tests/ids.test.ts
catalogmissing implementation linkTest
lowercases and strips non-alphanumeric
@cv/domain · vitest · tests/ids.test.ts
catalogmissing implementation linkTest
normalizes B.Sc. and M.Sc.
@cv/domain · vitest · tests/ids.test.ts
catalogmissing implementation linkTest
re-letters disambiguation group by new position
@cv/domain · vitest · tests/ids.test.ts
catalogmissing implementation linkTest
rebuilds from headings
@cv/domain · vitest · tests/ids.test.ts
catalogmissing implementation linkTest
reconcileGroup handles items without IDs
@cv/domain · vitest · tests/ids.test.ts
catalogmissing implementation linkTest
reorder detects changed groups
@cv/domain · vitest · tests/ids.test.ts
catalogmissing implementation linkTest
reorder returns empty when no disambiguation groups changed
@cv/domain · vitest · tests/ids.test.ts
catalogmissing implementation linkTest
returns "section" for empty input
@cv/domain · vitest · tests/ids.test.ts
catalogmissing implementation linkTest
returns empty when no disambiguation groups exist
@cv/domain · vitest · tests/ids.test.ts
catalogmissing implementation linkTest
returns empty when slug unchanged
@cv/domain · vitest · tests/ids.test.ts
catalogmissing implementation linkTest
returns plain slug when no collision
@cv/domain · vitest · tests/ids.test.ts
catalogmissing implementation linkTest
slugify handles mixed scripts gracefully
@cv/domain · vitest · tests/ids.test.ts
catalogmissing implementation linkTest
strips *...* bold toggle markers
@cv/domain · vitest · tests/ids.test.ts
catalogmissing implementation linkTest
strips suffix when rename removes collision
@cv/domain · vitest · tests/ids.test.ts
catalogmissing implementation linkTest
strips trailing colon after marker removal
@cv/domain · vitest · tests/ids.test.ts
catalogmissing implementation linkTest
transliterates German characters
@cv/domain · vitest · tests/ids.test.ts
catalogmissing implementation linkTest
transliterates accented characters
@cv/domain · vitest · tests/ids.test.ts
catalogmissing implementation linkTest
truncates at word boundary within 32 chars
@cv/domain · vitest · tests/ids.test.ts
catalogmissing implementation linkTest
updateHeading returns null when slug unchanged
@cv/domain · vitest · tests/ids.test.ts
catalogmissing implementation linkTest
updateHeading tracks group changes
@cv/domain · vitest · tests/ids.test.ts
catalogmissing implementation linkTest
"false" evaluates to boolean false
@cv/domain · vitest · tests/import.test.ts
catalogmissing implementation linkTest
"ja" evaluates to boolean true
@cv/domain · vitest · tests/import.test.ts
catalogmissing implementation linkTest
"nein" evaluates to boolean false
@cv/domain · vitest · tests/import.test.ts
catalogmissing implementation linkTest
"no" evaluates to boolean false
@cv/domain · vitest · tests/import.test.ts
catalogmissing implementation linkTest
"true" evaluates to boolean true
@cv/domain · vitest · tests/import.test.ts
catalogmissing implementation linkTest
"yes" evaluates to boolean true
@cv/domain · vitest · tests/import.test.ts
catalogmissing implementation linkTest
case-insensitive status match
@cv/domain · vitest · tests/import.test.ts
catalogmissing implementation linkTest
contains match works (e.g. "Phone Interview" matches "Interview")
@cv/domain · vitest · tests/import.test.ts
catalogmissing implementation linkTest
copies location from mapped column
@cv/domain · vitest · tests/import.test.ts
catalogmissing implementation linkTest
copies organization from mapped column
@cv/domain · vitest · tests/import.test.ts
catalogmissing implementation linkTest
copies title from mapped column
@cv/domain · vitest · tests/import.test.ts
catalogmissing implementation linkTest
default source is "Imported"
@cv/domain · vitest · tests/import.test.ts
catalogmissing implementation linkTest
default workload is "100"
@cv/domain · vitest · tests/import.test.ts
catalogmissing implementation linkTest
each job gets a unique ID starting with "imported-"
@cv/domain · vitest · tests/import.test.ts
catalogmissing implementation linkTest
empty rawData returns empty array
@cv/domain · vitest · tests/import.test.ts
catalogmissing implementation linkTest
exact status name match sets status_id
@cv/domain · vitest · tests/import.test.ts
catalogmissing implementation linkTest
maps multiple string fields in a single row
@cv/domain · vitest · tests/import.test.ts
catalogmissing implementation linkTest
null values in raw data are skipped (defaults remain)
@cv/domain · vitest · tests/import.test.ts
catalogmissing implementation linkTest
numeric salary is converted to string
@cv/domain · vitest · tests/import.test.ts
catalogmissing implementation linkTest
numeric string "7.5" evaluates to number 7.5
@cv/domain · vitest · tests/import.test.ts
catalogmissing implementation linkTest
raw number value 9 evaluates to number 9
@cv/domain · vitest · tests/import.test.ts
catalogmissing implementation linkTest
salary is preserved as string
@cv/domain · vitest · tests/import.test.ts
catalogmissing implementation linkTest
undefined values in raw data are skipped (defaults remain)
@cv/domain · vitest · tests/import.test.ts
catalogmissing implementation linkTest
unmapped columns (empty targetColumnId) are ignored
@cv/domain · vitest · tests/import.test.ts
catalogmissing implementation linkTest
unrecognized status keeps default status_id
@cv/domain · vitest · tests/import.test.ts
catalogmissing implementation linkTest
checks custom list first, falls back to defaults
@cv/domain · vitest · tests/industry.test.ts
catalogmissing implementation linkTest
handles custom list
@cv/domain · vitest · tests/industry.test.ts
catalogmissing implementation linkTest
normalizes free-text to enum ids (keyword matching)
@cv/domain · vitest · tests/industry.test.ts
catalogmissing implementation linkTest
passes through valid enum ids
@cv/domain · vitest · tests/industry.test.ts
catalogmissing implementation linkTest
returns "other" for unknown/null/empty
@cv/domain · vitest · tests/industry.test.ts
catalogmissing implementation linkTest
returns "other" for unrecognized text
@cv/domain · vitest · tests/industry.test.ts
catalogmissing implementation linkTest
returns comma-separated list of all default ids
@cv/domain · vitest · tests/industry.test.ts
catalogmissing implementation linkTest
returns empty string for null/empty/whitespace
@cv/domain · vitest · tests/industry.test.ts
catalogmissing implementation linkTest
returns empty when the custom list omits "other"
@cv/domain · vitest · tests/industry.test.ts
catalogmissing implementation linkTest
returns icon/label for valid id, fallback for unknown
@cv/domain · vitest · tests/industry.test.ts
catalogmissing implementation linkTest
returns the correct entry for a valid id
@cv/domain · vitest · tests/industry.test.ts
catalogmissing implementation linkTest
treats the custom list as an authoritative whitelist
@cv/domain · vitest · tests/industry.test.ts
catalogmissing implementation linkTest
uses custom list when provided
@cv/domain · vitest · tests/industry.test.ts
catalogmissing implementation linkTest
builds deterministic D1 command fields from workspace id and URL
@cv/domain · vitest · tests/jobcache.test.ts
catalogmissing implementation linkTest
builds deterministic command fields with server-side ad and role ids
@cv/domain · vitest · tests/jobcache.test.ts
catalogmissing implementation linkTest
copies attributes from a single ad
@cv/domain · vitest · tests/jobcache.test.ts
catalogmissing implementation linkTest
does not compress keys missing from any ad
@cv/domain · vitest · tests/jobcache.test.ts
catalogmissing implementation linkTest
ensures role and ad rows with role_id
@cv/domain · vitest · tests/jobcache.test.ts
catalogmissing implementation linkTest
keeps changed fact payloads distinct and serializes keys stably
@cv/domain · vitest · tests/jobcache.test.ts
catalogmissing implementation linkTest
keeps changed payloads distinct for the same workspace ad
@cv/domain · vitest · tests/jobcache.test.ts
catalogmissing implementation linkTest
keeps command ids workspace-scoped while sharing ad identity
@cv/domain · vitest · tests/jobcache.test.ts
catalogmissing implementation linkTest
keeps only keys all ads agree on
@cv/domain · vitest · tests/jobcache.test.ts
catalogmissing implementation linkTest
normalizes URL variants into one ad and initial role
@cv/domain · vitest · tests/jobcache.test.ts
catalogmissing implementation linkTest
recomputes role attributes from ads
@cv/domain · vitest · tests/jobcache.test.ts
catalogmissing implementation linkTest
rejects empty facts before creating command ids
@cv/domain · vitest · tests/jobcache.test.ts
catalogmissing implementation linkTest
rejects empty workspace ids before creating command ids
@cv/domain · vitest · tests/jobcache.test.ts
catalogmissing implementation linkTest
rejects non-JSON fact values
@cv/domain · vitest · tests/jobcache.test.ts
catalogmissing implementation linkTest
serializes payloads with stable key order
@cv/domain · vitest · tests/jobcache.test.ts
catalogmissing implementation linkTest
treats null as a stored value when every ad agrees
@cv/domain · vitest · tests/jobcache.test.ts
catalogmissing implementation linkTest
detects free key from :fx suffix
@cv/domain · vitest · tests/keys.test.ts
catalogmissing implementation linkTest
detects masked keys
@cv/domain · vitest · tests/keys.test.ts
catalogmissing implementation linkTest
detects pro key without :fx suffix
@cv/domain · vitest · tests/keys.test.ts
catalogmissing implementation linkTest
fully masks 8-char keys
@cv/domain · vitest · tests/keys.test.ts
catalogmissing implementation linkTest
fully masks short keys (<=8 chars)
@cv/domain · vitest · tests/keys.test.ts
catalogmissing implementation linkTest
honours an explicit empty chains object from the caller (does NOT fall back to existing)
@cv/domain · vitest · tests/keys.test.ts
catalogmissing implementation linkTest
masks all provider keys
@cv/domain · vitest · tests/keys.test.ts
catalogmissing implementation linkTest
masks long keys showing first 4 and last 4
@cv/domain · vitest · tests/keys.test.ts
catalogmissing implementation linkTest
masks multi-key providers
@cv/domain · vitest · tests/keys.test.ts
catalogmissing implementation linkTest
matches masked keys by mask value when a previous slot was removed
@cv/domain · vitest · tests/keys.test.ts
catalogmissing implementation linkTest
merges multi-key arrays position-by-position
@cv/domain · vitest · tests/keys.test.ts
catalogmissing implementation linkTest
overlays incoming top-level fields on top of existing
@cv/domain · vitest · tests/keys.test.ts
catalogmissing implementation linkTest
parses valid JSON
@cv/domain · vitest · tests/keys.test.ts
catalogmissing implementation linkTest
persists key usage metadata on save
@cv/domain · vitest · tests/keys.test.ts
catalogmissing implementation linkTest
preserves chains from incoming
@cv/domain · vitest · tests/keys.test.ts
catalogmissing implementation linkTest
preserves chains unchanged
@cv/domain · vitest · tests/keys.test.ts
catalogmissing implementation linkTest
preserves colons inside a single credential
@cv/domain · vitest · tests/keys.test.ts
catalogmissing implementation linkTest
preserves existing chains when incoming.chains is undefined
@cv/domain · vitest · tests/keys.test.ts
catalogmissing implementation linkTest
preserves existing key when incoming is masked
@cv/domain · vitest · tests/keys.test.ts
catalogmissing implementation linkTest
preserves key usage metadata
@cv/domain · vitest · tests/keys.test.ts
catalogmissing implementation linkTest
preserves seedVersion across providers-only PATCH
@cv/domain · vitest · tests/keys.test.ts
catalogmissing implementation linkTest
rejects non-masked keys
@cv/domain · vitest · tests/keys.test.ts
catalogmissing implementation linkTest
rejects null/undefined
@cv/domain · vitest · tests/keys.test.ts
catalogmissing implementation linkTest
replaces key when incoming is a new full key
@cv/domain · vitest · tests/keys.test.ts
catalogmissing implementation linkTest
returns an empty list for missing or blank input
@cv/domain · vitest · tests/keys.test.ts
catalogmissing implementation linkTest
returns empty for empty input
@cv/domain · vitest · tests/keys.test.ts
catalogmissing implementation linkTest
returns empty for whitespace-only input
@cv/domain · vitest · tests/keys.test.ts
catalogmissing implementation linkTest
returns env key in dev mode
@cv/domain · vitest · tests/keys.test.ts
catalogmissing implementation linkTest
returns null for empty key
@cv/domain · vitest · tests/keys.test.ts
catalogmissing implementation linkTest
returns null for empty string
@cv/domain · vitest · tests/keys.test.ts
catalogmissing implementation linkTest
returns null for empty workspace key
@cv/domain · vitest · tests/keys.test.ts
catalogmissing implementation linkTest
returns null for invalid JSON
@cv/domain · vitest · tests/keys.test.ts
catalogmissing implementation linkTest
returns null for null cloud keys
@cv/domain · vitest · tests/keys.test.ts
catalogmissing implementation linkTest
returns null for null incoming
@cv/domain · vitest · tests/keys.test.ts
catalogmissing implementation linkTest
returns null for null input
@cv/domain · vitest · tests/keys.test.ts
catalogmissing implementation linkTest
returns null for undefined input
@cv/domain · vitest · tests/keys.test.ts
catalogmissing implementation linkTest
returns null for unknown service
@cv/domain · vitest · tests/keys.test.ts
catalogmissing implementation linkTest
returns null when env key is missing
@cv/domain · vitest · tests/keys.test.ts
catalogmissing implementation linkTest
returns null when no key
@cv/domain · vitest · tests/keys.test.ts
catalogmissing implementation linkTest
returns server Jina key
@cv/domain · vitest · tests/keys.test.ts
catalogmissing implementation linkTest
returns server SerpApi key
@cv/domain · vitest · tests/keys.test.ts
catalogmissing implementation linkTest
returns server TinyFish and Tavily scrape keys
@cv/domain · vitest · tests/keys.test.ts
catalogmissing implementation linkTest
returns workspace Jina key
@cv/domain · vitest · tests/keys.test.ts
catalogmissing implementation linkTest
returns workspace Maps key
@cv/domain · vitest · tests/keys.test.ts
catalogmissing implementation linkTest
returns workspace SerpApi key
@cv/domain · vitest · tests/keys.test.ts
catalogmissing implementation linkTest
returns workspace TinyFish and Tavily scrape keys
@cv/domain · vitest · tests/keys.test.ts
catalogmissing implementation linkTest
returns workspace key in production
@cv/domain · vitest · tests/keys.test.ts
catalogmissing implementation linkTest
splits comma-separated rotation keys
@cv/domain · vitest · tests/keys.test.ts
catalogmissing implementation linkTest
splits newline-separated rotation keys
@cv/domain · vitest · tests/keys.test.ts
catalogmissing implementation linkTest
throws MaskedKeyWithoutCounterpartError when masked key has no existing counterpart (null existing)
@cv/domain · vitest · tests/keys.test.ts
catalogmissing implementation linkTest
throws MaskedKeyWithoutCounterpartError when masked key has no existing counterpart (provider missing)
@cv/domain · vitest · tests/keys.test.ts
catalogmissing implementation linkTest
throws MaskedKeyWithoutCounterpartError when masked key index exceeds existing array
@cv/domain · vitest · tests/keys.test.ts
catalogmissing implementation linkTest
uses the first server key when dev env contains a rotation list
@cv/domain · vitest · tests/keys.test.ts
catalogmissing implementation linkTest
is sorted alphabetically by display name
@cv/domain · vitest · tests/languages.test.ts
catalogmissing implementation linkTest
maps special cases for DeepL
@cv/domain · vitest · tests/languages.test.ts
catalogmissing implementation linkTest
matches full language names (case-insensitive)
@cv/domain · vitest · tests/languages.test.ts
catalogmissing implementation linkTest
normalizes case
@cv/domain · vitest · tests/languages.test.ts
catalogmissing implementation linkTest
preserves BCP 47 regional variants when supported
@cv/domain · vitest · tests/languages.test.ts
catalogmissing implementation linkTest
returns display name, uppercased code for unknown
@cv/domain · vitest · tests/languages.test.ts
catalogmissing implementation linkTest
returns false for unsupported/empty
@cv/domain · vitest · tests/languages.test.ts
catalogmissing implementation linkTest
returns null for unrecognizable input
@cv/domain · vitest · tests/languages.test.ts
catalogmissing implementation linkTest
returns true for supported codes (case-insensitive)
@cv/domain · vitest · tests/languages.test.ts
catalogmissing implementation linkTest
trims whitespace
@cv/domain · vitest · tests/languages.test.ts
catalogmissing implementation linkTest
uppercases standard codes
@cv/domain · vitest · tests/languages.test.ts
catalogmissing implementation linkTest
converts Swiss cities
@cv/domain · vitest · tests/location.test.ts
catalogmissing implementation linkTest
converts international cities
@cv/domain · vitest · tests/location.test.ts
catalogmissing implementation linkTest
falls back to first 3 chars for unknown cities
@cv/domain · vitest · tests/location.test.ts
catalogmissing implementation linkTest
handles remote
@cv/domain · vitest · tests/location.test.ts
catalogmissing implementation linkTest
handles single city name (no comma)
@cv/domain · vitest · tests/location.test.ts
catalogmissing implementation linkTest
returns empty for empty/whitespace
@cv/domain · vitest · tests/location.test.ts
catalogmissing implementation linkTest
TASK_TTL constants exist and are positive integers
@cv/domain · vitest · tests/lock.test.ts
catalogmissing implementation linkTest
after concurrent acquire, winner can release and a new caller wins
@cv/domain · vitest · tests/lock.test.ts
catalogmissing implementation linkTest
allows re-acquisition after release
@cv/domain · vitest · tests/lock.test.ts
catalogmissing implementation linkTest
cleans up an expired lock and allows re-acquisition
@cv/domain · vitest · tests/lock.test.ts
catalogmissing implementation linkTest
custom ttl=120s — 60-second-old lock is still fresh
@cv/domain · vitest · tests/lock.test.ts
catalogmissing implementation linkTest
custom ttl=1s — 2-second-old lock is expired
@cv/domain · vitest · tests/lock.test.ts
catalogmissing implementation linkTest
does not release a lock owned by another caller
@cv/domain · vitest · tests/lock.test.ts
catalogmissing implementation linkTest
does not remove a fresh lock during cleanup phase
@cv/domain · vitest · tests/lock.test.ts
catalogmissing implementation linkTest
evaluate TTL (120 s) is strictly greater than scrape TTL (60 s)
@cv/domain · vitest · tests/lock.test.ts
catalogmissing implementation linkTest
evaluate lock acquired 70 s ago is NOT expired under TASK_TTL.evaluate (120 s)
@cv/domain · vitest · tests/lock.test.ts
catalogmissing implementation linkTest
exactly one of five concurrent callers wins
@cv/domain · vitest · tests/lock.test.ts
catalogmissing implementation linkTest
exactly one of three concurrent callers wins
@cv/domain · vitest · tests/lock.test.ts
catalogmissing implementation linkTest
extract lock acquired 130 s ago is NOT expired under TASK_TTL.extract (240 s)
@cv/domain · vitest · tests/lock.test.ts
catalogmissing implementation linkTest
full round-trip: acquire, block second, release, third wins
@cv/domain · vitest · tests/lock.test.ts
catalogmissing implementation linkTest
is a no-op when lock does not exist (no throw)
@cv/domain · vitest · tests/lock.test.ts
catalogmissing implementation linkTest
keeps ownerless release behavior for legacy/server callers
@cv/domain · vitest · tests/lock.test.ts
catalogmissing implementation linkTest
lock 100 ms within TTL is not expired (still fresh)
@cv/domain · vitest · tests/lock.test.ts
catalogmissing implementation linkTest
lock past TTL boundary is expired and allows re-acquisition
@cv/domain · vitest · tests/lock.test.ts
catalogmissing implementation linkTest
only one caller wins when two concurrent calls race the same key
@cv/domain · vitest · tests/lock.test.ts
catalogmissing implementation linkTest
only removes the targeted (jobId, task) pair
@cv/domain · vitest · tests/lock.test.ts
catalogmissing implementation linkTest
removes an existing lock row
@cv/domain · vitest · tests/lock.test.ts
catalogmissing implementation linkTest
respects custom ttlSeconds — fresh lock is not expired
@cv/domain · vitest · tests/lock.test.ts
catalogmissing implementation linkTest
returns a boolean (proper shape)
@cv/domain · vitest · tests/lock.test.ts
catalogmissing implementation linkTest
returns false when lock is already held by another caller
@cv/domain · vitest · tests/lock.test.ts
catalogmissing implementation linkTest
returns true when no lock exists (first caller wins)
@cv/domain · vitest · tests/lock.test.ts
catalogmissing implementation linkTest
salary TTL (30 s) is the smallest
@cv/domain · vitest · tests/lock.test.ts
catalogmissing implementation linkTest
salary lock acquired 20 s ago is NOT expired under TASK_TTL.salary (30 s)
@cv/domain · vitest · tests/lock.test.ts
catalogmissing implementation linkTest
salary lock acquired 35 s ago IS expired under TASK_TTL.salary (30 s)
@cv/domain · vitest · tests/lock.test.ts
catalogmissing implementation linkTest
same jobId but different task can both be acquired
@cv/domain · vitest · tests/lock.test.ts
catalogmissing implementation linkTest
same public job id can be acquired independently in different workspaces
@cv/domain · vitest · tests/lock.test.ts
catalogmissing implementation linkTest
stores the owner id on acquisition
@cv/domain · vitest · tests/lock.test.ts
catalogmissing implementation linkTest
sweeps globally expired orphan rows without touching fresh unrelated locks
@cv/domain · vitest · tests/lock.test.ts
catalogmissing implementation linkTest
tailor TTL (300 s) is strictly greater than evaluate TTL (120 s)
@cv/domain · vitest · tests/lock.test.ts
catalogmissing implementation linkTest
tailor lock acquired 90 s ago WOULD be expired under the old uniform 60 s TTL (regression guard)
@cv/domain · vitest · tests/lock.test.ts
catalogmissing implementation linkTest
tailor lock acquired 90 s ago is NOT expired under TASK_TTL.tailor (300 s)
@cv/domain · vitest · tests/lock.test.ts
catalogmissing implementation linkTest
two different (jobId, task) keys can both be acquired
@cv/domain · vitest · tests/lock.test.ts
catalogmissing implementation linkTest
two different keys can each be won once in parallel
@cv/domain · vitest · tests/lock.test.ts
catalogmissing implementation linkTest
French: number before street ("10 Rue de Paris")
@cv/domain · vitest · tests/maps.test.ts
catalogmissing implementation linkTest
German: street before number ("Friedrichstraße 43")
@cv/domain · vitest · tests/maps.test.ts
catalogmissing implementation linkTest
Swiss/German: street before number ("Bahnhofstrasse 10")
@cv/domain · vitest · tests/maps.test.ts
catalogmissing implementation linkTest
US/UK: number before street ("123 Main Street")
@cv/domain · vitest · tests/maps.test.ts
catalogmissing implementation linkTest
converts Places format (longText/shortText) to Geocoding format (long_name/short_name)
@cv/domain · vitest · tests/maps.test.ts
catalogmissing implementation linkTest
handles empty array
@cv/domain · vitest · tests/maps.test.ts
catalogmissing implementation linkTest
no country: defaults to number-first
@cv/domain · vitest · tests/maps.test.ts
catalogmissing implementation linkTest
normalized Places components work with parseAddressComponents
@cv/domain · vitest · tests/maps.test.ts
catalogmissing implementation linkTest
returns empty object for empty array
@cv/domain · vitest · tests/maps.test.ts
catalogmissing implementation linkTest
returns empty object for undefined components
@cv/domain · vitest · tests/maps.test.ts
catalogmissing implementation linkTest
returns only locality when no postal code
@cv/domain · vitest · tests/maps.test.ts
catalogmissing implementation linkTest
returns route only when no street number
@cv/domain · vitest · tests/maps.test.ts
catalogmissing implementation linkTest
sends place IDs without the retired Directions API place_id prefix
@cv/domain · vitest · tests/maps.test.ts
catalogmissing implementation linkTest
surfaces Routes API errors in the existing success false shape
@cv/domain · vitest · tests/maps.test.ts
catalogmissing implementation linkTest
uses admin area when locality is missing
@cv/domain · vitest · tests/maps.test.ts
catalogmissing implementation linkTest
uses the current Routes API computeRoutes endpoint
@cv/domain · vitest · tests/maps.test.ts
catalogmissing implementation linkTest
changes on any measured format field
@cv/domain · vitest · tests/measure-cache.test.ts
catalogmissing implementation linkTest
changes on font / size / heading-size / leading changes
@cv/domain · vitest · tests/measure-cache.test.ts
catalogmissing implementation linkTest
changes when font changes
@cv/domain · vitest · tests/measure-cache.test.ts
catalogmissing implementation linkTest
changes when item.fontSize changes
@cv/domain · vitest · tests/measure-cache.test.ts
catalogmissing implementation linkTest
changes when item.text changes
@cv/domain · vitest · tests/measure-cache.test.ts
catalogmissing implementation linkTest
changes when item.usableWidthPt changes
@cv/domain · vitest · tests/measure-cache.test.ts
catalogmissing implementation linkTest
changes when item.weight changes
@cv/domain · vitest · tests/measure-cache.test.ts
catalogmissing implementation linkTest
changes when leading changes
@cv/domain · vitest · tests/measure-cache.test.ts
catalogmissing implementation linkTest
clears wipes everything
@cv/domain · vitest · tests/measure-cache.test.ts
catalogmissing implementation linkTest
converts absolute leading to em based on fontSize
@cv/domain · vitest · tests/measure-cache.test.ts
catalogmissing implementation linkTest
ignores fields that do not affect the measurement (id, pageSize, margins)
@cv/domain · vitest · tests/measure-cache.test.ts
catalogmissing implementation linkTest
is collision-resistant against delimiter-like characters in text
@cv/domain · vitest · tests/measure-cache.test.ts
catalogmissing implementation linkTest
is deterministic for identical inputs
@cv/domain · vitest · tests/measure-cache.test.ts
catalogmissing implementation linkTest
returns the relative value when leading is relative
@cv/domain · vitest · tests/measure-cache.test.ts
catalogmissing implementation linkTest
same text, different font → different keys
@cv/domain · vitest · tests/measure-cache.test.ts
catalogmissing implementation linkTest
stable across non-calibration-affecting fields
@cv/domain · vitest · tests/measure-cache.test.ts
catalogmissing implementation linkTest
stores and retrieves by key
@cv/domain · vitest · tests/measure-cache.test.ts
catalogmissing implementation linkTest
Archivo calibration is stable — guards against typst/font drift
@cv/domain · vitest · tests/measure-source.integration.test.ts
catalogmissing implementation linkTest
a realistic 2-line bullet wraps correctly
@cv/domain · vitest · tests/measure-source.integration.test.ts
catalogmissing implementation linkTest
bracket-containing text compiles and renders (the escape bug fix)
@cv/domain · vitest · tests/measure-source.integration.test.ts
catalogmissing implementation linkTest
emits parseable Typst and returns the 4 calibration probes
@cv/domain · vitest · tests/measure-source.integration.test.ts
catalogmissing implementation linkTest
empty text returns w=0 and derived lines=1
@cv/domain · vitest · tests/measure-source.integration.test.ts
catalogmissing implementation linkTest
handles all escaped special characters without parse error
@cv/domain · vitest · tests/measure-source.integration.test.ts
catalogmissing implementation linkTest
ids containing a double-quote round-trip through query JSON
@cv/domain · vitest · tests/measure-source.integration.test.ts
catalogmissing implementation linkTest
line count matches wrap behavior at base size
@cv/domain · vitest · tests/measure-source.integration.test.ts
catalogmissing implementation linkTest
line count scales correctly across font sizes (the scaling bug fix)
@cv/domain · vitest · tests/measure-source.integration.test.ts
catalogmissing implementation linkTest
preserves *bold* and _italic_ markup — bold text is wider than plain
@cv/domain · vitest · tests/measure-source.integration.test.ts
catalogmissing implementation linkTest
clamps to at least 1 for heights below firstLine (e.g. empty text)
@cv/domain · vitest · tests/measure-source.test.ts
catalogmissing implementation linkTest
computes ratios from probe heights
@cv/domain · vitest · tests/measure-source.test.ts
catalogmissing implementation linkTest
converts absolute leading to em for par.leading
@cv/domain · vitest · tests/measure-source.test.ts
catalogmissing implementation linkTest
defends against zero/negative advance (malformed calibration)
@cv/domain · vitest · tests/measure-source.test.ts
catalogmissing implementation linkTest
does not escape asterisks or underscores (markup preserved)
@cv/domain · vitest · tests/measure-source.test.ts
catalogmissing implementation linkTest
emits default format when no FormatSettings passed
@cv/domain · vitest · tests/measure-source.test.ts
catalogmissing implementation linkTest
emits the 4 calibration probes regardless of fragment count
@cv/domain · vitest · tests/measure-source.test.ts
catalogmissing implementation linkTest
emits weight correctly per fragment
@cv/domain · vitest · tests/measure-source.test.ts
catalogmissing implementation linkTest
escapes all Typst content-mode specials
@cv/domain · vitest · tests/measure-source.test.ts
catalogmissing implementation linkTest
escapes backslash before quote (order matters)
@cv/domain · vitest · tests/measure-source.test.ts
catalogmissing implementation linkTest
escapes backslash first to avoid double-escaping introduced escapes
@cv/domain · vitest · tests/measure-source.test.ts
catalogmissing implementation linkTest
escapes brackets in fragment text
@cv/domain · vitest · tests/measure-source.test.ts
catalogmissing implementation linkTest
escapes double quotes
@cv/domain · vitest · tests/measure-source.test.ts
catalogmissing implementation linkTest
escapes quotes in ids so they round-trip through JSON
@cv/domain · vitest · tests/measure-source.test.ts
catalogmissing implementation linkTest
escapes square brackets (the critical bracket-balance fix)
@cv/domain · vitest · tests/measure-source.test.ts
catalogmissing implementation linkTest
honors us-letter page size
@cv/domain · vitest · tests/measure-source.test.ts
catalogmissing implementation linkTest
labels every metadata with <cv-ruler-v1> for query()
@cv/domain · vitest · tests/measure-source.test.ts
catalogmissing implementation linkTest
passes relative leading through directly
@cv/domain · vitest · tests/measure-source.test.ts
catalogmissing implementation linkTest
passes through slug-safe ids
@cv/domain · vitest · tests/measure-source.test.ts
catalogmissing implementation linkTest
passes unicode through
@cv/domain · vitest · tests/measure-source.test.ts
catalogmissing implementation linkTest
preserves bold and italic markers
@cv/domain · vitest · tests/measure-source.test.ts
catalogmissing implementation linkTest
preserves plain text unchanged
@cv/domain · vitest · tests/measure-source.test.ts
catalogmissing implementation linkTest
returns 1 for single-line height at base size
@cv/domain · vitest · tests/measure-source.test.ts
catalogmissing implementation linkTest
returns 2 for double-line height at base size
@cv/domain · vitest · tests/measure-source.test.ts
catalogmissing implementation linkTest
returns 3 for triple-line height at base size
@cv/domain · vitest · tests/measure-source.test.ts
catalogmissing implementation linkTest
returns empty string for empty/nullish input
@cv/domain · vitest · tests/measure-source.test.ts
catalogmissing implementation linkTest
returns negative chars over when text overflows
@cv/domain · vitest · tests/measure-source.test.ts
catalogmissing implementation linkTest
returns null for empty text (avoid divide-by-zero)
@cv/domain · vitest · tests/measure-source.test.ts
catalogmissing implementation linkTest
returns null for zero/negative width (malformed measurement)
@cv/domain · vitest · tests/measure-source.test.ts
catalogmissing implementation linkTest
returns positive chars remaining when text fits
@cv/domain · vitest · tests/measure-source.test.ts
catalogmissing implementation linkTest
scales to different font sizes (the 8pt-paragraph bug fix)
@cv/domain · vitest · tests/measure-source.test.ts
catalogmissing implementation linkTest
scales to heading size + bold
@cv/domain · vitest · tests/measure-source.test.ts
catalogmissing implementation linkTest
deduplicates duplicate model ids from the same provider
@cv/domain · vitest · tests/models-catalog.test.ts
catalogmissing implementation linkTest
CL with hero=true on a list section emits the hero #block(...)
@cv/domain · vitest · tests/node-to-typst.test.ts
catalogmissing implementation linkTest
CL-de: output is deterministic across consecutive calls
@cv/domain · vitest · tests/node-to-typst.test.ts
catalogmissing implementation linkTest
CL-de: serializes to non-empty Typst source
@cv/domain · vitest · tests/node-to-typst.test.ts
catalogmissing implementation linkTest
CL-en: output is deterministic across consecutive calls
@cv/domain · vitest · tests/node-to-typst.test.ts
catalogmissing implementation linkTest
CL-en: serializes to non-empty Typst source
@cv/domain · vitest · tests/node-to-typst.test.ts
catalogmissing implementation linkTest
CV without hero=true sections emits no hero block
@cv/domain · vitest · tests/node-to-typst.test.ts
catalogmissing implementation linkTest
CV-de: output is deterministic across consecutive calls
@cv/domain · vitest · tests/node-to-typst.test.ts
catalogmissing implementation linkTest
CV-de: serializes to non-empty Typst source
@cv/domain · vitest · tests/node-to-typst.test.ts
catalogmissing implementation linkTest
CV-en: output is deterministic across consecutive calls
@cv/domain · vitest · tests/node-to-typst.test.ts
catalogmissing implementation linkTest
CV-en: serializes to non-empty Typst source
@cv/domain · vitest · tests/node-to-typst.test.ts
catalogmissing implementation linkTest
does not emit the personal-info section directly
@cv/domain · vitest · tests/node-to-typst.test.ts
catalogmissing implementation linkTest
adds a new view with sorted groups
@cv/domain · vitest · tests/order.test.ts
catalogmissing implementation linkTest
adds new custom columns to existing order
@cv/domain · vitest · tests/order.test.ts
catalogmissing implementation linkTest
adds new groups to existing view
@cv/domain · vitest · tests/order.test.ts
catalogmissing implementation linkTest
adds new views to existing order
@cv/domain · vitest · tests/order.test.ts
catalogmissing implementation linkTest
appends unpositioned jobs after manually positioned ones
@cv/domain · vitest · tests/order.test.ts
catalogmissing implementation linkTest
applies manual order when present
@cv/domain · vitest · tests/order.test.ts
catalogmissing implementation linkTest
clamps block end to array length
@cv/domain · vitest · tests/order.test.ts
catalogmissing implementation linkTest
creates column order from DEFAULT_COLUMNS + custom columns
@cv/domain · vitest · tests/order.test.ts
catalogmissing implementation linkTest
creates manual order from allJobIds when none exists
@cv/domain · vitest · tests/order.test.ts
catalogmissing implementation linkTest
creates view order from view groups sorted by order
@cv/domain · vitest · tests/order.test.ts
catalogmissing implementation linkTest
does not add duplicate column
@cv/domain · vitest · tests/order.test.ts
catalogmissing implementation linkTest
does not overwrite existing view
@cv/domain · vitest · tests/order.test.ts
catalogmissing implementation linkTest
falls back to view default order when no order state
@cv/domain · vitest · tests/order.test.ts
catalogmissing implementation linkTest
filters out hidden columns
@cv/domain · vitest · tests/order.test.ts
catalogmissing implementation linkTest
groups adjacent columns by superHeader
@cv/domain · vitest · tests/order.test.ts
catalogmissing implementation linkTest
ignores ids in newColIds that are not in order.columns
@cv/domain · vitest · tests/order.test.ts
catalogmissing implementation linkTest
includes newly added groups not in order state
@cv/domain · vitest · tests/order.test.ts
catalogmissing implementation linkTest
initializes empty job order per view
@cv/domain · vitest · tests/order.test.ts
catalogmissing implementation linkTest
inserts column at correct position by order value
@cv/domain · vitest · tests/order.test.ts
catalogmissing implementation linkTest
moves a contiguous block backward
@cv/domain · vitest · tests/order.test.ts
catalogmissing implementation linkTest
moves a contiguous block forward
@cv/domain · vitest · tests/order.test.ts
catalogmissing implementation linkTest
moves a group to a new position
@cv/domain · vitest · tests/order.test.ts
catalogmissing implementation linkTest
moves column to new position
@cv/domain · vitest · tests/order.test.ts
catalogmissing implementation linkTest
moves item backward
@cv/domain · vitest · tests/order.test.ts
catalogmissing implementation linkTest
moves item forward
@cv/domain · vitest · tests/order.test.ts
catalogmissing implementation linkTest
preserves columns from other groups in their relative positions
@cv/domain · vitest · tests/order.test.ts
catalogmissing implementation linkTest
preserves existing manual order and adds missing jobs
@cv/domain · vitest · tests/order.test.ts
catalogmissing implementation linkTest
preserves other views
@cv/domain · vitest · tests/order.test.ts
catalogmissing implementation linkTest
preserves unknown eval_* ids (cross-machine import — S10)
@cv/domain · vitest · tests/order.test.ts
catalogmissing implementation linkTest
removes a column
@cv/domain · vitest · tests/order.test.ts
catalogmissing implementation linkTest
removes a view
@cv/domain · vitest · tests/order.test.ts
catalogmissing implementation linkTest
removes deleted views from existing order
@cv/domain · vitest · tests/order.test.ts
catalogmissing implementation linkTest
removes job from old category manual order
@cv/domain · vitest · tests/order.test.ts
catalogmissing implementation linkTest
removes manual order for a category
@cv/domain · vitest · tests/order.test.ts
catalogmissing implementation linkTest
replaces the order for a named super-header group
@cv/domain · vitest · tests/order.test.ts
catalogmissing implementation linkTest
returns columns belonging to a specific super header
@cv/domain · vitest · tests/order.test.ts
catalogmissing implementation linkTest
returns default when no existing order
@cv/domain · vitest · tests/order.test.ts
catalogmissing implementation linkTest
returns existing order when present (with migration)
@cv/domain · vitest · tests/order.test.ts
catalogmissing implementation linkTest
returns group IDs as strings
@cv/domain · vitest · tests/order.test.ts
catalogmissing implementation linkTest
returns groups in order state order
@cv/domain · vitest · tests/order.test.ts
catalogmissing implementation linkTest
returns jobs in original order when no manual order or sort
@cv/domain · vitest · tests/order.test.ts
catalogmissing implementation linkTest
returns same array for out-of-bounds fromIndex
@cv/domain · vitest · tests/order.test.ts
catalogmissing implementation linkTest
returns same array for out-of-bounds start
@cv/domain · vitest · tests/order.test.ts
catalogmissing implementation linkTest
returns same array for out-of-bounds toIndex
@cv/domain · vitest · tests/order.test.ts
catalogmissing implementation linkTest
returns same array for zero-length block
@cv/domain · vitest · tests/order.test.ts
catalogmissing implementation linkTest
returns same array when from === to
@cv/domain · vitest · tests/order.test.ts
catalogmissing implementation linkTest
returns same order when column not found
@cv/domain · vitest · tests/order.test.ts
catalogmissing implementation linkTest
returns same order when group not found
@cv/domain · vitest · tests/order.test.ts
catalogmissing implementation linkTest
returns same order when job not found in list
@cv/domain · vitest · tests/order.test.ts
catalogmissing implementation linkTest
returns same order when job not in manual order
@cv/domain · vitest · tests/order.test.ts
catalogmissing implementation linkTest
returns same order when source === target
@cv/domain · vitest · tests/order.test.ts
catalogmissing implementation linkTest
returns same order when view not found
@cv/domain · vitest · tests/order.test.ts
catalogmissing implementation linkTest
returns the columns array
@cv/domain · vitest · tests/order.test.ts
catalogmissing implementation linkTest
returns the same order when superHeader is not found
@cv/domain · vitest · tests/order.test.ts
catalogmissing implementation linkTest
returns unchanged order when column not present
@cv/domain · vitest · tests/order.test.ts
catalogmissing implementation linkTest
returns unique super headers in display order
@cv/domain · vitest · tests/order.test.ts
catalogmissing implementation linkTest
shows all columns when visibility is empty (default visible)
@cv/domain · vitest · tests/order.test.ts
catalogmissing implementation linkTest
sorts by evaluation columns
@cv/domain · vitest · tests/order.test.ts
catalogmissing implementation linkTest
sorts by string columns alphabetically
@cv/domain · vitest · tests/order.test.ts
catalogmissing implementation linkTest
sorts columns by order value
@cv/domain · vitest · tests/order.test.ts
catalogmissing implementation linkTest
sorts descending when direction is desc
@cv/domain · vitest · tests/order.test.ts
catalogmissing implementation linkTest
strips unknown non-eval built-in ids (legacy column names)
@cv/domain · vitest · tests/order.test.ts
catalogmissing implementation linkTest
uses sort order when sort columns are active (ignores manual)
@cv/domain · vitest · tests/order.test.ts
catalogmissing implementation linkTest
adds a new key to an existing map
@cv/domain · vitest · tests/origin.test.ts
catalogmissing implementation linkTest
concurrent writes produce independent new maps (no shared reference)
@cv/domain · vitest · tests/origin.test.ts
catalogmissing implementation linkTest
creates a new entry on an empty map
@cv/domain · vitest · tests/origin.test.ts
catalogmissing implementation linkTest
creates a new map entry on an undefined base
@cv/domain · vitest · tests/origin.test.ts
catalogmissing implementation linkTest
does NOT mutate the original map (returns new object)
@cv/domain · vitest · tests/origin.test.ts
catalogmissing implementation linkTest
handles "system" as a valid origin value
@cv/domain · vitest · tests/origin.test.ts
catalogmissing implementation linkTest
handles arbitrary unknown provider IDs
@cv/domain · vitest · tests/origin.test.ts
catalogmissing implementation linkTest
overwrites an existing key
@cv/domain · vitest · tests/origin.test.ts
catalogmissing implementation linkTest
returns "system" origin correctly
@cv/domain · vitest · tests/origin.test.ts
catalogmissing implementation linkTest
returns an unknown provider origin correctly
@cv/domain · vitest · tests/origin.test.ts
catalogmissing implementation linkTest
returns false for any non-human origin string
@cv/domain · vitest · tests/origin.test.ts
catalogmissing implementation linkTest
returns false when origin is "system"
@cv/domain · vitest · tests/origin.test.ts
catalogmissing implementation linkTest
returns false when origin is an AI provider
@cv/domain · vitest · tests/origin.test.ts
catalogmissing implementation linkTest
returns null for a key not in the map
@cv/domain · vitest · tests/origin.test.ts
catalogmissing implementation linkTest
returns null for an empty map
@cv/domain · vitest · tests/origin.test.ts
catalogmissing implementation linkTest
returns null for undefined map
@cv/domain · vitest · tests/origin.test.ts
catalogmissing implementation linkTest
returns the origin when present
@cv/domain · vitest · tests/origin.test.ts
catalogmissing implementation linkTest
returns true for key absent from map
@cv/domain · vitest · tests/origin.test.ts
catalogmissing implementation linkTest
returns true for undefined map (no origin = human by convention)
@cv/domain · vitest · tests/origin.test.ts
catalogmissing implementation linkTest
returns true when origin is "human"
@cv/domain · vitest · tests/origin.test.ts
catalogmissing implementation linkTest
converts 0 to false
@cv/domain · vitest · tests/parseJobRow.test.ts
catalogmissing implementation linkTest
converts 1 to true
@cv/domain · vitest · tests/parseJobRow.test.ts
catalogmissing implementation linkTest
empty object JSON string parses to empty object
@cv/domain · vitest · tests/parseJobRow.test.ts
catalogmissing implementation linkTest
empty object string defaults missing fields
@cv/domain · vitest · tests/parseJobRow.test.ts
catalogmissing implementation linkTest
null evaluations become empty object
@cv/domain · vitest · tests/parseJobRow.test.ts
catalogmissing implementation linkTest
null files defaults to { cv: null, cl: null, misc: [] }
@cv/domain · vitest · tests/parseJobRow.test.ts
catalogmissing implementation linkTest
nullable fields remain null when null in row
@cv/domain · vitest · tests/parseJobRow.test.ts
catalogmissing implementation linkTest
parses JSON string into files object
@cv/domain · vitest · tests/parseJobRow.test.ts
catalogmissing implementation linkTest
parses JSON string into object
@cv/domain · vitest · tests/parseJobRow.test.ts
catalogmissing implementation linkTest
preserves all standard fields
@cv/domain · vitest · tests/parseJobRow.test.ts
catalogmissing implementation linkTest
does not emit eval_reasoning when LLM returned no salary value
@cv/domain · vitest · tests/pipeline-stages.test.ts
catalogmissing implementation linkTest
forwards the AbortSignal into callWithChain so aborts cancel the LLM call
@cv/domain · vitest · tests/pipeline-stages.test.ts
catalogmissing implementation linkTest
hydrates missing fields from jobcache before invoking the LLM
@cv/domain · vitest · tests/pipeline-stages.test.ts
catalogmissing implementation linkTest
passes through commute without invoking the cascade when only commute work is needed
@cv/domain · vitest · tests/pipeline-stages.test.ts
catalogmissing implementation linkTest
preserves the salary estimator reasoning as eval_reasoning.salary (drift #3)
@cv/domain · vitest · tests/pipeline-stages.test.ts
catalogmissing implementation linkTest
produces a patch with extracted fields and preserves salary_note as eval_reasoning.salary (drift #2)
@cv/domain · vitest · tests/pipeline-stages.test.ts
catalogmissing implementation linkTest
returns the patch + origins + telemetry for a successful scrape
@cv/domain · vitest · tests/pipeline-stages.test.ts
catalogmissing implementation linkTest
scores against the FULL job — salary + commute hard facts feed the score (drift #4)
@cv/domain · vitest · tests/pipeline-stages.test.ts
catalogmissing implementation linkTest
skips the LLM when jobcache fills every missing extract field
@cv/domain · vitest · tests/pipeline-stages.test.ts
catalogmissing implementation linkTest
skips the cascade when no missing columns remain (fast path recomputes score only)
@cv/domain · vitest · tests/pipeline-stages.test.ts
catalogmissing implementation linkTest
surfaces ChainExhaustionError when callWithChain throws (cascade exhausted)
@cv/domain · vitest · tests/pipeline-stages.test.ts
catalogmissing implementation linkTest
threads the AbortSignal through to the cascade
@cv/domain · vitest · tests/pipeline-stages.test.ts
catalogmissing implementation linkTest
throws AbortError when the signal is already aborted
@cv/domain · vitest · tests/pipeline-stages.test.ts
catalogmissing implementation linkTest
throws when the scrape chain is empty
@cv/domain · vitest · tests/pipeline-stages.test.ts
catalogmissing implementation linkTest
DATA_CHANGED from done re-enters routing
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
DATA_CHANGED from error re-enters routing
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
active takes priority over error for same LED
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
all LEDs are green when all actors are done
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
allows forced enrich to retry a blocked commute route
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
can retry after a lost lock when job data changes
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
caps labelJobs at 3 entries
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
defines limits for all active stages
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
does not let queued process markers bypass the durable claim path
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
does not spin when another tab holds a compute lock
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
excludes disabled stages from tooltip progress lines
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
goes to error on stage failure and recovers with RETRY
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
handles ABORT in active state
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
handles single job processing
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
has correct afterEval advancement
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
has correct afterRadar advancement
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
has correct afterTailoring advancement
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
has correct score threshold
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
honors explicit ENRICH rerun commands for already enriched jobs
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
honors explicit EVALUATE rerun commands when all evaluations are filled
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
honors explicit RADAR rerun commands even when description exists
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
honors explicit TAILOR rerun commands when application files already exist
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
ignores legacy auto-enrich false settings
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
ignores legacy auto-evaluate false settings
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
ignores legacy auto-scrape false settings
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
ignores terminal EVALUATE rerun commands after completion
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
includes errored jobs in labelJobs with failed stage abbreviation
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
includes job names in LED tooltips
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
maps stages to correct LED keys
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
returns all green when no actors
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
returns empty labelJobs when all actors are done
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
returns empty labelJobs when idle
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
returns false when URL is whitespace only
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
returns false when all evaluations filled
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
returns false when all fields filled
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
returns false when auto-CV disabled
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
returns false when both CV and CL files exist
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
returns false when commute already calculated
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
returns false when commute route was already attempted and no route exists
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
returns false when job already has description
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
returns false when job has no URL
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
returns false when job has no location
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
returns false when location is empty string with an extraction origin
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
returns false when no LLM key
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
returns false when no custom columns
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
returns false when no description
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
returns false when no home location
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
returns false when organization is missing (optional field)
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
returns false when route provider key is missing
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
returns false when salary is missing (salary has its own enrichment pipeline)
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
returns false when title is empty string with an extraction origin
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
returns full label when no @ separator
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
returns labelJobs with short label and stage abbreviation
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
returns multiple labelJobs for concurrent processing
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
returns null label when all actors are done
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
returns null label when no actors are active
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
returns true when company context is missing
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
returns true when custom columns have missing evaluations
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
returns true when evaluation is null
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
returns true when job has URL but no description
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
returns true when job has description but missing fields
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
returns true when job has description but no CV or CL files
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
returns true when job has location but no commute
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
returns true when language is missing
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
returns true when location is empty string without an extraction origin
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
returns true when location is null (never extracted)
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
returns true when only CL file exists (missing CV)
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
returns true when only CV file exists (missing CL)
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
returns true when organization is a known placeholder
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
returns true when title is empty string without an extraction origin
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
returns true when title is null (never extracted)
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
shows "Ready" tooltip when idle
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
shows "Ready" with unavailable phases when idle
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
shows active for LED with processing actors
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
shows error marker with error message for errored jobs
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
shows highest active step when multiple stages active
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
shows job names in labelTooltip for active stages
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
shows multiple job sections separated by blank line
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
shows neutral off state for unavailable phases
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
shows no completed line when at first stage
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
shows per-job tooltip section with heading and progress markers
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
shows red for errored phases
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
shows stageDetail in tooltip for current stage
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
shows step label for active stage
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
starts in idle state
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
transitions idle → routing → done when no work needed
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
transitions idle → routing → radar when URL present but no description
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
truncates job names at 3 in LED tooltip with +N more
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
uses the research scrape chain for company context independently of salary estimation
@cv/domain · vitest · tests/pipeline.test.ts
catalogmissing implementation linkTest
filters root.selection.active to children that survive into the segment
@cv/domain · vitest · tests/preview-segments.test.ts
catalogmissing implementation linkTest
preserves root metadata in each segment
@cv/domain · vitest · tests/preview-segments.test.ts
catalogmissing implementation linkTest
returns null for pagebreak layouts that would create empty segments
@cv/domain · vitest · tests/preview-segments.test.ts
catalogmissing implementation linkTest
returns null when there are no pagebreaks
@cv/domain · vitest · tests/preview-segments.test.ts
catalogmissing implementation linkTest
splits the tree on explicit pagebreak children
@cv/domain · vitest · tests/preview-segments.test.ts
catalogmissing implementation linkTest
does NOT include prose-bearing fields
@cv/domain · vitest · tests/protected-fields.test.ts
catalogmissing implementation linkTest
does not mutate the input patch object
@cv/domain · vitest · tests/protected-fields.test.ts
catalogmissing implementation linkTest
drops a pipeline overwrite of a human-set title
@cv/domain · vitest · tests/protected-fields.test.ts
catalogmissing implementation linkTest
drops a single inner evaluations key whose latest writer was human
@cv/domain · vitest · tests/protected-fields.test.ts
catalogmissing implementation linkTest
drops some keys and keeps others in the same patch
@cv/domain · vitest · tests/protected-fields.test.ts
catalogmissing implementation linkTest
drops the entire evaluations container when every inner key was human-set
@cv/domain · vitest · tests/protected-fields.test.ts
catalogmissing implementation linkTest
exposes isProtectedJobKey predicate for top-level keys
@cv/domain · vitest · tests/protected-fields.test.ts
catalogmissing implementation linkTest
force: true bypasses the gate for agent writes
@cv/domain · vitest · tests/protected-fields.test.ts
catalogmissing implementation linkTest
force: true bypasses the gate for pipeline writes
@cv/domain · vitest · tests/protected-fields.test.ts
catalogmissing implementation linkTest
force:true bypasses the gate for system writes
@cv/domain · vitest · tests/protected-fields.test.ts
catalogmissing implementation linkTest
handles eval_reasoning fan-out symmetrically
@cv/domain · vitest · tests/protected-fields.test.ts
catalogmissing implementation linkTest
includes the canonical structured-identity fields
@cv/domain · vitest · tests/protected-fields.test.ts
catalogmissing implementation linkTest
isFanOutContainerKey identifies evaluations and eval_reasoning
@cv/domain · vitest · tests/protected-fields.test.ts
catalogmissing implementation linkTest
keeps a pipeline overwrite of a pipeline-set title
@cv/domain · vitest · tests/protected-fields.test.ts
catalogmissing implementation linkTest
keeps a pipeline write on a never-written protected cell
@cv/domain · vitest · tests/protected-fields.test.ts
catalogmissing implementation linkTest
keeps a pipeline write on an unprotected (prose) field
@cv/domain · vitest · tests/protected-fields.test.ts
catalogmissing implementation linkTest
mixes fan-out drops with top-level drops, all sorted
@cv/domain · vitest · tests/protected-fields.test.ts
catalogmissing implementation linkTest
passes human writes through unchanged
@cv/domain · vitest · tests/protected-fields.test.ts
catalogmissing implementation linkTest
returns empty result for empty jobId
@cv/domain · vitest · tests/protected-fields.test.ts
catalogmissing implementation linkTest
returns the original patch reference when nothing was dropped
@cv/domain · vitest · tests/protected-fields.test.ts
catalogmissing implementation linkTest
skips fan-out when the container value is null or not an object
@cv/domain · vitest · tests/protected-fields.test.ts
catalogmissing implementation linkTest
system writes are gated against human writes (unified post-pipeline-collapse)
@cv/domain · vitest · tests/protected-fields.test.ts
catalogmissing implementation linkTest
uses the pre-resolved origins map instead of a function lookup
@cv/domain · vitest · tests/protected-fields.test.ts
catalogmissing implementation linkTest
degrades gracefully when globalReader is null
@cv/domain · vitest · tests/read-chain.test.ts
catalogmissing implementation linkTest
degrades to workspace-only when globalReader is null
@cv/domain · vitest · tests/read-chain.test.ts
catalogmissing implementation linkTest
does not read hidden rows when the server-side link is absent
@cv/domain · vitest · tests/read-chain.test.ts
catalogmissing implementation linkTest
falls back to ad attribute when workspace has no override
@cv/domain · vitest · tests/read-chain.test.ts
catalogmissing implementation linkTest
falls back to role attribute when neither workspace nor ad has it
@cv/domain · vitest · tests/read-chain.test.ts
catalogmissing implementation linkTest
falls back to the server-side role link when the ad row is missing
@cv/domain · vitest · tests/read-chain.test.ts
catalogmissing implementation linkTest
resolves several attributes from the same job in one global fetch
@cv/domain · vitest · tests/read-chain.test.ts
catalogmissing implementation linkTest
returns null for an untracked workspace job without reading hidden ad or role rows
@cv/domain · vitest · tests/read-chain.test.ts
catalogmissing implementation linkTest
returns null values for an untracked workspace job without reading hidden ad or role rows
@cv/domain · vitest · tests/read-chain.test.ts
catalogmissing implementation linkTest
returns null when the attribute is absent everywhere
@cv/domain · vitest · tests/read-chain.test.ts
catalogmissing implementation linkTest
returns the resolved workspace projection when the job is tracked
@cv/domain · vitest · tests/read-chain.test.ts
catalogmissing implementation linkTest
returns the workspace override when present
@cv/domain · vitest · tests/read-chain.test.ts
catalogmissing implementation linkTest
returns the workspace-only projection when the server-side link is absent
@cv/domain · vitest · tests/read-chain.test.ts
catalogmissing implementation linkTest
returns workspace values and null fallbacks when the server-side link is absent
@cv/domain · vitest · tests/read-chain.test.ts
catalogmissing implementation linkTest
throws when job_id is empty
@cv/domain · vitest · tests/read-chain.test.ts
catalogmissing implementation linkTest
treats stored null as a real value
@cv/domain · vitest · tests/read-chain.test.ts
catalogmissing implementation linkTest
uses getAdAndRole when present
@cv/domain · vitest · tests/read-chain.test.ts
catalogmissing implementation linkTest
uses the server-side role link after getAdAndRole misses the role row
@cv/domain · vitest · tests/read-chain.test.ts
catalogmissing implementation linkTest
derives usable widths from the live format math
@cv/domain · vitest · tests/ruler-items.test.ts
catalogmissing implementation linkTest
uses contact size and printable width
@cv/domain · vitest · tests/ruler-items.test.ts
catalogmissing implementation linkTest
applies defaults for minimal input
@cv/domain · vitest · tests/schemas.test.ts
catalogmissing implementation linkTest
empty object gets all defaults
@cv/domain · vitest · tests/schemas.test.ts
catalogmissing implementation linkTest
explicit values override defaults
@cv/domain · vitest · tests/schemas.test.ts
catalogmissing implementation linkTest
full config roundtrips
@cv/domain · vitest · tests/schemas.test.ts
catalogmissing implementation linkTest
handles recursive nesting (AND inside OR)
@cv/domain · vitest · tests/schemas.test.ts
catalogmissing implementation linkTest
isPreset defaults to false
@cv/domain · vitest · tests/schemas.test.ts
catalogmissing implementation linkTest
parses compound AND/OR
@cv/domain · vitest · tests/schemas.test.ts
catalogmissing implementation linkTest
parses simple conditions
@cv/domain · vitest · tests/schemas.test.ts
catalogmissing implementation linkTest
all outputs are in [0, 10] range
@cv/domain · vitest · tests/scoring-algo.test.ts
catalogmissing implementation linkTest
clamps values outside range
@cv/domain · vitest · tests/scoring-algo.test.ts
catalogmissing implementation linkTest
degenerate range (min === max) returns 10 when value >= boundary
@cv/domain · vitest · tests/scoring-algo.test.ts
catalogmissing implementation linkTest
handles min=0 without blowing up (log(0) guard)
@cv/domain · vitest · tests/scoring-algo.test.ts
catalogmissing implementation linkTest
handles swapped min/max gracefully
@cv/domain · vitest · tests/scoring-algo.test.ts
catalogmissing implementation linkTest
higher_is_better: (e^u - 1)/(e - 1) — convex
@cv/domain · vitest · tests/scoring-algo.test.ts
catalogmissing implementation linkTest
higher_is_better: diminishing returns
@cv/domain · vitest · tests/scoring-algo.test.ts
catalogmissing implementation linkTest
higher_is_better: min → 0, max → 10, mid → 5
@cv/domain · vitest · tests/scoring-algo.test.ts
catalogmissing implementation linkTest
higher_is_better: u^2 curve — top-heavy rewards
@cv/domain · vitest · tests/scoring-algo.test.ts
catalogmissing implementation linkTest
lower_is_better: 1-(1-u)^2 curve — last hours hurt more
@cv/domain · vitest · tests/scoring-algo.test.ts
catalogmissing implementation linkTest
lower_is_better: best → 10, worst → 0, mid → 5
@cv/domain · vitest · tests/scoring-algo.test.ts
catalogmissing implementation linkTest
lower_is_better: concave curve
@cv/domain · vitest · tests/scoring-algo.test.ts
catalogmissing implementation linkTest
lower_is_better: first hours hurt more
@cv/domain · vitest · tests/scoring-algo.test.ts
catalogmissing implementation linkTest
output is always a finite number
@cv/domain · vitest · tests/scoring-algo.test.ts
catalogmissing implementation linkTest
NaN evaluation string → treated as 0 → harmonic score 0
@cv/domain · vitest · tests/scoring.test.ts
catalogmissing implementation linkTest
all weights zero → score 0
@cv/domain · vitest · tests/scoring.test.ts
catalogmissing implementation linkTest
arithmetic mean of [8, 2] (equal weight): (50*8+50*2)/100 = 5.0
@cv/domain · vitest · tests/scoring.test.ts
catalogmissing implementation linkTest
combined: salary + commute + numbers + booleans all active
@cv/domain · vitest · tests/scoring.test.ts
catalogmissing implementation linkTest
commute="0" (zero-minute commute, best case) is NOT dropped — scores 10 (A1)
@cv/domain · vitest · tests/scoring.test.ts
catalogmissing implementation linkTest
disabled boolean → no penalty regardless of value
@cv/domain · vitest · tests/scoring.test.ts
catalogmissing implementation linkTest
empty string salary → not scored (correctly skipped)
@cv/domain · vitest · tests/scoring.test.ts
catalogmissing implementation linkTest
equal values → all three means are equal
@cv/domain · vitest · tests/scoring.test.ts
catalogmissing implementation linkTest
evaluated false boolean → penalty IS applied
@cv/domain · vitest · tests/scoring.test.ts
catalogmissing implementation linkTest
evaluated true boolean → no penalty
@cv/domain · vitest · tests/scoring.test.ts
catalogmissing implementation linkTest
fallback commuteConf uses worstCase=900, not 15 (A2)
@cv/domain · vitest · tests/scoring.test.ts
catalogmissing implementation linkTest
handles "120" (Swiss apostrophe notation irrelevant in kCHF)
@cv/domain · vitest · tests/scoring.test.ts
catalogmissing implementation linkTest
handles "90k" string (strips k)
@cv/domain · vitest · tests/scoring.test.ts
catalogmissing implementation linkTest
harmonic mean of [8, 2] (equal weight): 2*50/(50/8+50/2) = 100/(6.25+25) = 3.2
@cv/domain · vitest · tests/scoring.test.ts
catalogmissing implementation linkTest
harmonic mean: penalizes low outliers (H < G < A)
@cv/domain · vitest · tests/scoring.test.ts
catalogmissing implementation linkTest
knockout not triggered when boolean is true (penalty not applied)
@cv/domain · vitest · tests/scoring.test.ts
catalogmissing implementation linkTest
negate=true: penalty applies when checked (true)
@cv/domain · vitest · tests/scoring.test.ts
catalogmissing implementation linkTest
no active numeric components → score 0
@cv/domain · vitest · tests/scoring.test.ts
catalogmissing implementation linkTest
null salary → not scored (correctly skipped)
@cv/domain · vitest · tests/scoring.test.ts
catalogmissing implementation linkTest
penalty=0 sets isKnockout=true and score to 0
@cv/domain · vitest · tests/scoring.test.ts
catalogmissing implementation linkTest
salary="0" is NOT silently dropped — intern/unpaid salary is scored as minimum (A1)
@cv/domain · vitest · tests/scoring.test.ts
catalogmissing implementation linkTest
scores "90" against kCHF config range
@cv/domain · vitest · tests/scoring.test.ts
catalogmissing implementation linkTest
scoring disabled → returns null
@cv/domain · vitest · tests/scoring.test.ts
catalogmissing implementation linkTest
unevaluated booleans (null/undefined) → NO penalty applied
@cv/domain · vitest · tests/scoring.test.ts
catalogmissing implementation linkTest
unevaluated numeric column (null) → skipped from aggregation (A4)
@cv/domain · vitest · tests/scoring.test.ts
catalogmissing implementation linkTest
unevaluated numeric column (undefined) → skipped from aggregation (A4)
@cv/domain · vitest · tests/scoring.test.ts
catalogmissing implementation linkTest
zero numeric eval → 0 score in harmonic (absorbing identity) (A5)
@cv/domain · vitest · tests/scoring.test.ts
catalogmissing implementation linkTest
canonicalizes LinkedIn /jobs/view/ URLs by path job id
@cv/domain · vitest · tests/scrape.test.ts
catalogmissing implementation linkTest
canonicalizes LinkedIn /jobs/view/ URLs with slug
@cv/domain · vitest · tests/scrape.test.ts
catalogmissing implementation linkTest
does not fall back to unauthenticated Jina when an explicit chain resolves no providers
@cv/domain · vitest · tests/scrape.test.ts
catalogmissing implementation linkTest
does one full-page request for unknown sites
@cv/domain · vitest · tests/scrape.test.ts
catalogmissing implementation linkTest
falls back from TinyFish to Jina when TinyFish returns a per-url error
@cv/domain · vitest · tests/scrape.test.ts
catalogmissing implementation linkTest
ignores LinkedIn URLs without currentJobId param
@cv/domain · vitest · tests/scrape.test.ts
catalogmissing implementation linkTest
ignores non-numeric currentJobId
@cv/domain · vitest · tests/scrape.test.ts
catalogmissing implementation linkTest
passes through Greenhouse URLs unchanged
@cv/domain · vitest · tests/scrape.test.ts
catalogmissing implementation linkTest
passes through Indeed URLs unchanged
@cv/domain · vitest · tests/scrape.test.ts
catalogmissing implementation linkTest
passes through jobs.ch detail URLs unchanged
@cv/domain · vitest · tests/scrape.test.ts
catalogmissing implementation linkTest
returns invalid URLs as-is
@cv/domain · vitest · tests/scrape.test.ts
catalogmissing implementation linkTest
rewrites LinkedIn collections URL with currentJobId
@cv/domain · vitest · tests/scrape.test.ts
catalogmissing implementation linkTest
rewrites LinkedIn search URL with currentJobId
@cv/domain · vitest · tests/scrape.test.ts
catalogmissing implementation linkTest
rewrites LinkedIn without www
@cv/domain · vitest · tests/scrape.test.ts
catalogmissing implementation linkTest
rewrites jobs.ch search URL with jobid to detail URL
@cv/domain · vitest · tests/scrape.test.ts
catalogmissing implementation linkTest
uses Tavily Extract as a scrape provider
@cv/domain · vitest · tests/scrape.test.ts
catalogmissing implementation linkTest
uses TinyFish when the scrape chain starts with TinyFish
@cv/domain · vitest · tests/scrape.test.ts
catalogmissing implementation linkTest
Borda scoring: position 0 gets most points
@cv/domain · vitest · tests/seed.test.ts
catalogmissing implementation linkTest
L0 (stage prefix) = 3 slots
@cv/domain · vitest · tests/seed.test.ts
catalogmissing implementation linkTest
L0 slots respect max slot limit of 3
@cv/domain · vitest · tests/seed.test.ts
catalogmissing implementation linkTest
L1 (consumer) = 2 slots
@cv/domain · vitest · tests/seed.test.ts
catalogmissing implementation linkTest
L1 comes before L0
@cv/domain · vitest · tests/seed.test.ts
catalogmissing implementation linkTest
L1 slots respect max slot limit of 2
@cv/domain · vitest · tests/seed.test.ts
catalogmissing implementation linkTest
L2 (instance) = 1 slot
@cv/domain · vitest · tests/seed.test.ts
catalogmissing implementation linkTest
L2 overrides everything
@cv/domain · vitest · tests/seed.test.ts
catalogmissing implementation linkTest
consumer without L1 gets only L0
@cv/domain · vitest · tests/seed.test.ts
catalogmissing implementation linkTest
creates L0 for every pipeline stage with available providers
@cv/domain · vitest · tests/seed.test.ts
catalogmissing implementation linkTest
creates L1 deviations for evaluate columns with unique seeds
@cv/domain · vitest · tests/seed.test.ts
catalogmissing implementation linkTest
creates L1 deviations for tailor consumers
@cv/domain · vitest · tests/seed.test.ts
catalogmissing implementation linkTest
deduplicates across levels
@cv/domain · vitest · tests/seed.test.ts
catalogmissing implementation linkTest
deduplicates after replacement (two old models → same new model)
@cv/domain · vitest · tests/seed.test.ts
catalogmissing implementation linkTest
does not overwrite customized culture-fit chains
@cv/domain · vitest · tests/seed.test.ts
catalogmissing implementation linkTest
does not seed Groq Qwen for structured-output stages
@cv/domain · vitest · tests/seed.test.ts
catalogmissing implementation linkTest
evaluate L0 has volume providers (Mistral + Cerebras)
@cv/domain · vitest · tests/seed.test.ts
catalogmissing implementation linkTest
every evaluate column has L1 quality picks
@cv/domain · vitest · tests/seed.test.ts
catalogmissing implementation linkTest
filters out providers without keys
@cv/domain · vitest · tests/seed.test.ts
catalogmissing implementation linkTest
migrates Groq Qwen structured-output defaults and deduplicates the replacement
@cv/domain · vitest · tests/seed.test.ts
catalogmissing implementation linkTest
migrates evaluation L1 defaults away from NVIDIA Qwen throttling
@cv/domain · vitest · tests/seed.test.ts
catalogmissing implementation linkTest
migrates old culture-fit L1 defaults through the chain seed path
@cv/domain · vitest · tests/seed.test.ts
catalogmissing implementation linkTest
no provider appears in both L1 and L0 with same model (would be deduplicated)
@cv/domain · vitest · tests/seed.test.ts
catalogmissing implementation linkTest
patches a missing consumer from keyed BYOK fallback when existing L0 has only unkeyed defaults
@cv/domain · vitest · tests/seed.test.ts
catalogmissing implementation linkTest
preserves user customizations (unknown models not in migration map)
@cv/domain · vitest · tests/seed.test.ts
catalogmissing implementation linkTest
produces chains when providers are available
@cv/domain · vitest · tests/seed.test.ts
catalogmissing implementation linkTest
produces no chains when no providers are available
@cv/domain · vitest · tests/seed.test.ts
catalogmissing implementation linkTest
quorum: model in only 1 of 2+ ballots is excluded
@cv/domain · vitest · tests/seed.test.ts
catalogmissing implementation linkTest
replaces deprecated models with current-gen equivalents
@cv/domain · vitest · tests/seed.test.ts
catalogmissing implementation linkTest
respects maxSlots
@cv/domain · vitest · tests/seed.test.ts
catalogmissing implementation linkTest
returns null when already at current version
@cv/domain · vitest · tests/seed.test.ts
catalogmissing implementation linkTest
seeds AI safety and ownership away from the throttled NVIDIA Qwen default
@cv/domain · vitest · tests/seed.test.ts
catalogmissing implementation linkTest
seeds TinyFish, Jina, then Tavily for URL scraping
@cv/domain · vitest · tests/seed.test.ts
catalogmissing implementation linkTest
seeds address translation through the translate/address/translate chain
@cv/domain · vitest · tests/seed.test.ts
catalogmissing implementation linkTest
seeds chat stages from common BYOK providers when curated providers are absent
@cv/domain · vitest · tests/seed.test.ts
catalogmissing implementation linkTest
seeds company research through the enrich/research/scrape chain
@cv/domain · vitest · tests/seed.test.ts
catalogmissing implementation linkTest
seeds culture fit with resilient L1 quality picks
@cv/domain · vitest · tests/seed.test.ts
catalogmissing implementation linkTest
single ballot → all entries flow to L0
@cv/domain · vitest · tests/seed.test.ts
catalogmissing implementation linkTest
tailor L0 has volume providers
@cv/domain · vitest · tests/seed.test.ts
catalogmissing implementation linkTest
tailor consumers have L1 quality picks
@cv/domain · vitest · tests/seed.test.ts
catalogmissing implementation linkTest
total effective chain depth per consumer is >= 3
@cv/domain · vitest · tests/seed.test.ts
catalogmissing implementation linkTest
upgrades old Jina-only scrape defaults to the provider scrape chain
@cv/domain · vitest · tests/seed.test.ts
catalogmissing implementation linkTest
adds correct days based on snooze count
@cv/domain · vitest · tests/settings.test.ts
catalogmissing implementation linkTest
clamps to last interval beyond array length
@cv/domain · vitest · tests/settings.test.ts
catalogmissing implementation linkTest
falls back to default interval when no phase rule
@cv/domain · vitest · tests/settings.test.ts
catalogmissing implementation linkTest
finds phase by ID
@cv/domain · vitest · tests/settings.test.ts
catalogmissing implementation linkTest
finds status by ID
@cv/domain · vitest · tests/settings.test.ts
catalogmissing implementation linkTest
handles reversed phase input
@cv/domain · vitest · tests/settings.test.ts
catalogmissing implementation linkTest
includes core columns
@cv/domain · vitest · tests/settings.test.ts
catalogmissing implementation linkTest
includes document columns
@cv/domain · vitest · tests/settings.test.ts
catalogmissing implementation linkTest
returns "Today" for today
@cv/domain · vitest · tests/settings.test.ts
catalogmissing implementation linkTest
returns "Tomorrow" for tomorrow
@cv/domain · vitest · tests/settings.test.ts
catalogmissing implementation linkTest
returns "Xd overdue" for past dates
@cv/domain · vitest · tests/settings.test.ts
catalogmissing implementation linkTest
returns "Xd" for future dates
@cv/domain · vitest · tests/settings.test.ts
catalogmissing implementation linkTest
returns a date string in ISO format
@cv/domain · vitest · tests/settings.test.ts
catalogmissing implementation linkTest
returns empty string for undefined
@cv/domain · vitest · tests/settings.test.ts
catalogmissing implementation linkTest
returns escalated intervals
@cv/domain · vitest · tests/settings.test.ts
catalogmissing implementation linkTest
returns false for discovery phase
@cv/domain · vitest · tests/settings.test.ts
catalogmissing implementation linkTest
returns false for future date
@cv/domain · vitest · tests/settings.test.ts
catalogmissing implementation linkTest
returns false for non-terminal statuses
@cv/domain · vitest · tests/settings.test.ts
catalogmissing implementation linkTest
returns false for undefined
@cv/domain · vitest · tests/settings.test.ts
catalogmissing implementation linkTest
returns false for unknown status
@cv/domain · vitest · tests/settings.test.ts
catalogmissing implementation linkTest
returns first interval for count 0
@cv/domain · vitest · tests/settings.test.ts
catalogmissing implementation linkTest
returns phase containing the status
@cv/domain · vitest · tests/settings.test.ts
catalogmissing implementation linkTest
returns true for applied phase statuses
@cv/domain · vitest · tests/settings.test.ts
catalogmissing implementation linkTest
returns true for past date
@cv/domain · vitest · tests/settings.test.ts
catalogmissing implementation linkTest
returns true for terminal phase statuses
@cv/domain · vitest · tests/settings.test.ts
catalogmissing implementation linkTest
returns true for today
@cv/domain · vitest · tests/settings.test.ts
catalogmissing implementation linkTest
returns undefined for unknown ID
@cv/domain · vitest · tests/settings.test.ts
catalogmissing implementation linkTest
returns undefined for unknown status
@cv/domain · vitest · tests/settings.test.ts
catalogmissing implementation linkTest
sorts by phase order then status order
@cv/domain · vitest · tests/settings.test.ts
catalogmissing implementation linkTest
starts auto-compute enabled for all pipeline gates
@cv/domain · vitest · tests/settings.test.ts
catalogmissing implementation linkTest
uses phase-specific rule when defined
@cv/domain · vitest · tests/settings.test.ts
catalogmissing implementation linkTest
calls DeepL API with correct parameters
@cv/domain · vitest · tests/translate.test.ts
catalogmissing implementation linkTest
handles city only (no country)
@cv/domain · vitest · tests/translate.test.ts
catalogmissing implementation linkTest
omits source_lang when not provided (auto-detect)
@cv/domain · vitest · tests/translate.test.ts
catalogmissing implementation linkTest
returns empty array for empty input
@cv/domain · vitest · tests/translate.test.ts
catalogmissing implementation linkTest
returns empty object when no translatable fields
@cv/domain · vitest · tests/translate.test.ts
catalogmissing implementation linkTest
skips translation when source equals target
@cv/domain · vitest · tests/translate.test.ts
catalogmissing implementation linkTest
throws on API error
@cv/domain · vitest · tests/translate.test.ts
catalogmissing implementation linkTest
translates city and country together in one API call
@cv/domain · vitest · tests/translate.test.ts
catalogmissing implementation linkTest
translates for English too (Google returns local names like Zürich)
@cv/domain · vitest · tests/translate.test.ts
catalogmissing implementation linkTest
translates multiple texts in one call
@cv/domain · vitest · tests/translate.test.ts
catalogmissing implementation linkTest
uses ZH-HANS for Chinese target
@cv/domain · vitest · tests/translate.test.ts
catalogmissing implementation linkTest
uses regional variant for English target
@cv/domain · vitest · tests/translate.test.ts
catalogmissing implementation linkTest
clears a hallucinated organization
@cv/domain · vitest · tests/verify-extraction.test.ts
catalogmissing implementation linkTest
clears a hallucinated title
@cv/domain · vitest · tests/verify-extraction.test.ts
catalogmissing implementation linkTest
clears both if both are hallucinated
@cv/domain · vitest · tests/verify-extraction.test.ts
catalogmissing implementation linkTest
clears field when only minority of words match
@cv/domain · vitest · tests/verify-extraction.test.ts
catalogmissing implementation linkTest
clears known placeholder title and organization values
@cv/domain · vitest · tests/verify-extraction.test.ts
catalogmissing implementation linkTest
clears partial hallucinations with many non-matching words
@cv/domain · vitest · tests/verify-extraction.test.ts
catalogmissing implementation linkTest
converts full units to thousands
@cv/domain · vitest · tests/verify-extraction.test.ts
catalogmissing implementation linkTest
does not touch non-checked fields
@cv/domain · vitest · tests/verify-extraction.test.ts
catalogmissing implementation linkTest
extracts LinkedIn metadata from TinyFish markdown output
@cv/domain · vitest · tests/verify-extraction.test.ts
catalogmissing implementation linkTest
extracts high-confidence LinkedIn metadata from Jina headers
@cv/domain · vitest · tests/verify-extraction.test.ts
catalogmissing implementation linkTest
handles compound names with separators
@cv/domain · vitest · tests/verify-extraction.test.ts
catalogmissing implementation linkTest
handles edge cases at the boundary
@cv/domain · vitest · tests/verify-extraction.test.ts
catalogmissing implementation linkTest
ignores short words (< 3 chars) when checking
@cv/domain · vitest · tests/verify-extraction.test.ts
catalogmissing implementation linkTest
is case insensitive
@cv/domain · vitest · tests/verify-extraction.test.ts
catalogmissing implementation linkTest
keeps fields that appear in source
@cv/domain · vitest · tests/verify-extraction.test.ts
catalogmissing implementation linkTest
keeps when majority of words match
@cv/domain · vitest · tests/verify-extraction.test.ts
catalogmissing implementation linkTest
passes through normal kCHF values
@cv/domain · vitest · tests/verify-extraction.test.ts
catalogmissing implementation linkTest
preserves empty fields
@cv/domain · vitest · tests/verify-extraction.test.ts
catalogmissing implementation linkTest
recognizes title and organization placeholders
@cv/domain · vitest · tests/verify-extraction.test.ts
catalogmissing implementation linkTest
repairs placeholder extraction output from LinkedIn metadata
@cv/domain · vitest · tests/verify-extraction.test.ts
catalogmissing implementation linkTest
requires majority of significant words to match
@cv/domain · vitest · tests/verify-extraction.test.ts
catalogmissing implementation linkTest
returns empty for non-numeric input
@cv/domain · vitest · tests/verify-extraction.test.ts
catalogmissing implementation linkTest
returns empty for zero or negative values
@cv/domain · vitest · tests/verify-extraction.test.ts
catalogmissing implementation linkTest
rounds to integer
@cv/domain · vitest · tests/verify-extraction.test.ts
catalogmissing implementation linkTest
strips currency formatting
@cv/domain · vitest · tests/verify-extraction.test.ts
catalogmissing implementation linkTest
AND — all conditions must be true
@cv/domain · vitest · tests/views.test.ts
catalogmissing implementation linkTest
AND — fails if any condition is false
@cv/domain · vitest · tests/views.test.ts
catalogmissing implementation linkTest
OR — any condition can be true
@cv/domain · vitest · tests/views.test.ts
catalogmissing implementation linkTest
OR — fails if all conditions are false
@cv/domain · vitest · tests/views.test.ts
catalogmissing implementation linkTest
all groups are initialized as empty arrays
@cv/domain · vitest · tests/views.test.ts
catalogmissing implementation linkTest
always — always matches
@cv/domain · vitest · tests/views.test.ts
catalogmissing implementation linkTest
assigns jobs to the correct group by rule condition
@cv/domain · vitest · tests/views.test.ts
catalogmissing implementation linkTest
boolean field does NOT match numeric comparisons
@cv/domain · vitest · tests/views.test.ts
catalogmissing implementation linkTest
compound with empty conditions array matches nothing (no children = no match)
@cv/domain · vitest · tests/views.test.ts
catalogmissing implementation linkTest
compound with non-array conditions does not throw
@cv/domain · vitest · tests/views.test.ts
catalogmissing implementation linkTest
compound with undefined conditions does not throw — rule matches nothing
@cv/domain · vitest · tests/views.test.ts
catalogmissing implementation linkTest
contains — case-insensitive substring
@cv/domain · vitest · tests/views.test.ts
catalogmissing implementation linkTest
contains — no match returns false
@cv/domain · vitest · tests/views.test.ts
catalogmissing implementation linkTest
creates "uncategorized" bucket for unassigned jobs when no group has that id
@cv/domain · vitest · tests/views.test.ts
catalogmissing implementation linkTest
disabled rules are skipped
@cv/domain · vitest · tests/views.test.ts
catalogmissing implementation linkTest
does not mutate the original view groups
@cv/domain · vitest · tests/views.test.ts
catalogmissing implementation linkTest
empty jobs array results in all groups empty
@cv/domain · vitest · tests/views.test.ts
catalogmissing implementation linkTest
ends_with — case-insensitive suffix match
@cv/domain · vitest · tests/views.test.ts
catalogmissing implementation linkTest
eq — case-insensitive string equality
@cv/domain · vitest · tests/views.test.ts
catalogmissing implementation linkTest
eq — mismatch returns false
@cv/domain · vitest · tests/views.test.ts
catalogmissing implementation linkTest
finds a group by ID
@cv/domain · vitest · tests/views.test.ts
catalogmissing implementation linkTest
finds a view by ID
@cv/domain · vitest · tests/views.test.ts
catalogmissing implementation linkTest
first match wins — job matched by rule 1 is not re-assigned by rule 2
@cv/domain · vitest · tests/views.test.ts
catalogmissing implementation linkTest
gt — empty-string field does NOT match
@cv/domain · vitest · tests/views.test.ts
catalogmissing implementation linkTest
gt — equal value returns false
@cv/domain · vitest · tests/views.test.ts
catalogmissing implementation linkTest
gt — numeric comparison with string parsing
@cv/domain · vitest · tests/views.test.ts
catalogmissing implementation linkTest
gt — text-only field does NOT match
@cv/domain · vitest · tests/views.test.ts
catalogmissing implementation linkTest
gte — equal value returns true
@cv/domain · vitest · tests/views.test.ts
catalogmissing implementation linkTest
gte — non-numeric value side does NOT match (mirror behaviour)
@cv/domain · vitest · tests/views.test.ts
catalogmissing implementation linkTest
gte — numeric strings still parse and compare correctly
@cv/domain · vitest · tests/views.test.ts
catalogmissing implementation linkTest
in — matches if value is in the set
@cv/domain · vitest · tests/views.test.ts
catalogmissing implementation linkTest
in_phase — status belongs to specified phase
@cv/domain · vitest · tests/views.test.ts
catalogmissing implementation linkTest
in_phase — status does not belong to specified phase
@cv/domain · vitest · tests/views.test.ts
catalogmissing implementation linkTest
is_empty — empty string matches
@cv/domain · vitest · tests/views.test.ts
catalogmissing implementation linkTest
is_empty — non-empty returns false
@cv/domain · vitest · tests/views.test.ts
catalogmissing implementation linkTest
is_empty — null matches
@cv/domain · vitest · tests/views.test.ts
catalogmissing implementation linkTest
is_empty — undefined matches
@cv/domain · vitest · tests/views.test.ts
catalogmissing implementation linkTest
is_not_empty — non-empty matches
@cv/domain · vitest · tests/views.test.ts
catalogmissing implementation linkTest
is_not_empty — null returns false
@cv/domain · vitest · tests/views.test.ts
catalogmissing implementation linkTest
is_overdue — future follow_up_at does not match
@cv/domain · vitest · tests/views.test.ts
catalogmissing implementation linkTest
is_overdue — past follow_up_at matches
@cv/domain · vitest · tests/views.test.ts
catalogmissing implementation linkTest
is_terminal — status in non-terminal phase does not match (value=true)
@cv/domain · vitest · tests/views.test.ts
catalogmissing implementation linkTest
is_terminal — status in terminal phase matches (value=true)
@cv/domain · vitest · tests/views.test.ts
catalogmissing implementation linkTest
lt — actual zero still matches lt 30 (zero is a real number)
@cv/domain · vitest · tests/views.test.ts
catalogmissing implementation linkTest
lt — numeric less than
@cv/domain · vitest · tests/views.test.ts
catalogmissing implementation linkTest
lte — empty-string field does NOT match (was: matched because "" → 0)
@cv/domain · vitest · tests/views.test.ts
catalogmissing implementation linkTest
lte — equal value returns true
@cv/domain · vitest · tests/views.test.ts
catalogmissing implementation linkTest
lte — null field does NOT match
@cv/domain · vitest · tests/views.test.ts
catalogmissing implementation linkTest
lte — strings with units (e.g. "120k") parse the digits
@cv/domain · vitest · tests/views.test.ts
catalogmissing implementation linkTest
lte — text-only string ("hybrid") does NOT match
@cv/domain · vitest · tests/views.test.ts
catalogmissing implementation linkTest
lte — undefined field does NOT match
@cv/domain · vitest · tests/views.test.ts
catalogmissing implementation linkTest
neq — inverse of eq
@cv/domain · vitest · tests/views.test.ts
catalogmissing implementation linkTest
neq — same value returns false
@cv/domain · vitest · tests/views.test.ts
catalogmissing implementation linkTest
nested AND inside OR
@cv/domain · vitest · tests/views.test.ts
catalogmissing implementation linkTest
nested compound with malformed inner branch does not throw
@cv/domain · vitest · tests/views.test.ts
catalogmissing implementation linkTest
not_contains — inverse of contains
@cv/domain · vitest · tests/views.test.ts
catalogmissing implementation linkTest
not_in — matches if value is not in the set
@cv/domain · vitest · tests/views.test.ts
catalogmissing implementation linkTest
null condition does not throw — entire rule is skipped
@cv/domain · vitest · tests/views.test.ts
catalogmissing implementation linkTest
one malformed rule does not poison subsequent rules
@cv/domain · vitest · tests/views.test.ts
catalogmissing implementation linkTest
returns groups sorted by order
@cv/domain · vitest · tests/views.test.ts
catalogmissing implementation linkTest
returns undefined for missing ID
@cv/domain · vitest · tests/views.test.ts
catalogmissing implementation linkTest
returns undefined for missing group
@cv/domain · vitest · tests/views.test.ts
catalogmissing implementation linkTest
rule with undefined condition is skipped — no crash
@cv/domain · vitest · tests/views.test.ts
catalogmissing implementation linkTest
simple condition with undefined operator falls through to default → false
@cv/domain · vitest · tests/views.test.ts
catalogmissing implementation linkTest
starts_with — case-insensitive prefix match
@cv/domain · vitest · tests/views.test.ts
catalogmissing implementation linkTest
unassigned jobs go to "uncategorized" group when it exists
@cv/domain · vitest · tests/views.test.ts
catalogmissing implementation linkTest