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