HKUDS/DeepTutor · error · ValueError
unknown layer {layer!r}
Error message
unknown layer {layer!r} What it means
merge's _path_for is identical in spirit to dedup's: it resolves a memory file path per layer and only knows 'L2' and 'L3'. An unrecognized layer string raises ValueError inside run_merge before any merge work starts.
Source
Thrown at deeptutor/services/memory/consolidator/modes/merge.py:213
if resolved is None or resolved in seen:
continue
seen.add(resolved)
new_refs.append(resolved)
else:
if ref in seen:
continue
seen.add(ref)
new_refs.append(ref)
entry.refs = new_refs
return migrated
def _path_for(layer: str, key: str):
if layer == "L2":
return paths.l2_file(key) # type: ignore[arg-type]
if layer == "L3":
return paths.l3_file(key) # type: ignore[arg-type]
raise ValueError(f"unknown layer {layer!r}")
def _default_title(layer: str, key: str) -> str:
if layer == "L2":
return f"{key} memory"
return {
"recent": "Recent summary",
"profile": "User profile",
"scope": "Knowledge scope",
"preferences": "Preferences",
}.get(key, f"{key} memory")
__all__ = ["MergeResult", "run_merge"]
View on GitHub (pinned to 3e82f13042)
Solutions
- Pass exactly 'L2' or 'L3'
- Whitelist-validate the layer parameter where it enters your program
- Define a Literal['L2','L3'] type or enum shared with dedup/update/audit
Example fix
# before await run_merge(layer="L3 ", keys=[...]) # after await run_merge(layer="L3", keys=[...])
Defensive patterns
Strategy: type-guard
Validate before calling
if layer not in ("L2", "L3"):
raise ValueError("layer must be 'L2' or 'L3'") Type guard
from typing import Literal, TypeGuard
Layer = Literal["L2", "L3"]
def is_layer(v: object) -> TypeGuard[Layer]:
return isinstance(v, str) and v in ("L2", "L3") Prevention
- Whitelist-validate layer before calling run_merge
- Strip and uppercase user-supplied layer values
When it happens
Trigger: Calling run_merge with a layer value other than the exact strings 'L2' or 'L3' (typos, casing, or an unvalidated external parameter).
Common situations: CLI or API exposure of the layer parameter without whitelist validation; inconsistent constants after upgrading the memory package.
Related errors
AI-assisted analysis of HKUDS/DeepTutor@3e82f13042 (2026-08-27).
Data as JSON: /api/errors/4f1aa873a542c514.
Report an issue: GitHub.