a42aee9585
Builds on webtecnica's escape-aware _split_key_path (#84152, cherry-picked with authorship preserved; earliest fix in the family was RelaxJonh's #80253 greedy-match approach — both behaviors now ship together): - _greedy_literal_match: when navigating an EXISTING mapping, prefer an existing literal key equal to the dot-join of the next N path segments (longest match wins). Dotted model IDs are the norm, so the common unescaped command (config set providers.p.models.grok-4.6.supports_vision true) now hits the real key across set/get/unset instead of creating a phantom sibling. Plain dotted paths with no dotted-key collision split exactly as before. - _phantom_sibling + ValueError in _set_nested: refuse to CREATE a new intermediate mapping that would shadow an existing dotted literal sibling (Soju06's fail-loudly suggestion on #84064); set_config_value surfaces it as a clean CLI error with the escaped spelling to use. - utils.py::atomic_roundtrip_yaml_update (the second split site, #91607 — /model + TUI persistence) now uses the same escape-aware split + greedy literal matching. - CFG-04 empty-segment guard now splits escape-aware so escaped keys are not misclassified. - Tests for every repro shape in the family: #84064 provider model keys, #80006 Matrix room IDs, #91095 dotted models under custom_providers list index (incl. escaped creation-when-absent), #91607 model_overrides via atomic_roundtrip_yaml_update, #99124 dotted leaf keys; plus backward-compat coverage. Also fixed the carrier's one stale assertion (structured-value coercion landed on main after #84152 branched) and removed its dead _MCP_SECRETS_CONFIG fixture flagged in review. - Docs: 'Dots inside key names' section in website/docs/reference/cli-commands.md. Fixes #84064, fixes #80006, fixes #91095, fixes #91607, fixes #99124
Website
This website is built using Docusaurus, a modern static website generator.
Installation
yarn
Local Development
yarn start
This command starts a local development server and opens up a browser window. Most changes are reflected live without having to restart the server.
Build
yarn build
This command generates static content into the build directory and can be served using any static contents hosting service.
Deployment
Using SSH:
USE_SSH=true yarn deploy
Not using SSH:
GIT_USER=<Your GitHub username> yarn deploy
If you are using GitHub pages for hosting, this command is a convenient way to build the website and push to the gh-pages branch.
Diagram Linting
CI runs ascii-guard to lint docs for ASCII box diagrams. Use Mermaid (````mermaid`) or plain lists/tables instead of ASCII boxes to avoid CI failures.