Skip to content

config.example.json ships a _comment in retrieval, which sialib rejects: every fresh install lands in state degraded #9

Description

@Enor75

Summary

config.example.json ships a _comment key inside the retrieval block, but sialib.py accepts only associative_rerank there. Since install.sh installs that example file as the instance config, every fresh install lands in state degraded with a permanent config error.

Evidence

The validator is an exact set difference, with no _comment exemption:

# bin/sialib.py:153-158
retrieval = value.get("retrieval", {})
if not isinstance(retrieval, dict):
    _record_config_error("retrieval-must-be-object")
else:
    if set(retrieval) - {"associative_rerank"}:
        _record_config_error("retrieval-unknown-key")

The shipped example carries two keys:

$ python3 -c "import json;print(list(json.load(open('config.example.json'))['retrieval']))"
['_comment', 'associative_rerank']

And the installer publishes that file as the live config:

# install.sh:9354
atomic_install_file "$REPO/config.example.json" ...

Observed

Immediately after a successful install (SIA 1.7.8, Omarchy/Arch):

SIA · state degraded · pulse 50
  readiness READY — corpus, PGLite, and graph reconciled
  chains   pass (sia:pass)
  errors   {'sense_custom:0': [{'config': 'config.json', 'error': 'retrieval-unknown-key'}]}
  config   [{'config': 'config.json', 'error': 'retrieval-unknown-key'}]

Removing the single _comment key from retrieval and restarting sia-brainstem.service clears it:

SIA · state thinking · pulse 52
  readiness READY — corpus, PGLite, and graph reconciled

Note that readiness was READY and every chain passed in both cases — only the config validator dissents, so the degraded badge is misleading about the brain's actual health.

Impact

Every install starts degraded. The error names the key but not which block it came from, and the sense_custom:0 prefix points at custom senses, which is where I first looked — the offending key is in retrieval.

Suggested fix

Either accept _comment in retrieval the way the other blocks tolerate it, or drop the key from config.example.json. The first is more consistent: judge, senses, skills, custom_senses and chains all carry a _comment and validate fine.

Environment: SIA 1.7.8, Omarchy/Arch, Linux 7.2.3-arch1-3, Python 3.14.7.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions