Files
chemenu/instructions/migrations/10.0.0-settings-tiers.md
T
torbenandClaude Code db8f90c229
CI / verify (push) Failing after 7m41s
CI / pwsh (push) Successful in 2m32s
Release / release (push) Successful in 37s
Release / wiki-mirror (push) Skipped
settings: the four per-feature files .wikitool-remotes/-telemetry/-upload/-tasks.json move into the three tiers and disappear; new command config migrate; 10.0.0-beta.1 (#208)
Files changed:
- .gitignore
- AGENTS.md
- CHANGES.md
- INSTALL.md
- VERSION
- docs/explanation/knowledge-and-commitment.md
- docs/explanation/telemetry-and-evaluation.md
- docs/explanation/why-gates-are-code.md
- docs/how-to/run-the-weekly-review.md
- docs/how-to/set-up-the-mcp-server.md
- docs/how-to/trace-and-score-sessions.md
- docs/how-to/troubleshoot.md
- docs/reference/commands/README.md
- docs/reference/commands/configuration.md
- docs/reference/commands/finding-and-checking.md
- docs/reference/commands/git.md
- docs/reference/commands/instance-health.md
- docs/reference/commands/pages.md
- docs/reference/commands/raw-material-and-uploads.md
- docs/reference/configuration.md
- docs/reference/exit-codes.md
- instructions/dev/doc-pull-through.md
- instructions/dev/tracker-testing.md
- instructions/gates.md
- instructions/ingest-queue.md
- instructions/mcp-read-server.md
- instructions/migrate-corpus.md
- instructions/migrations/10.0.0-settings-tiers.md
- instructions/setup-instance.md
- raw/CONTRACT.md
- reports/CONTRACT.md
- tools/CONTRACT.md
- tools/README.md
- tools/bugreport.py
- tools/chemenu/cli_contract.py
- tools/chemenu/commands/_util.py
- tools/chemenu/commands/config_cmd.py
- tools/chemenu/commands/docs_verify.py
- tools/chemenu/commands/doctor.py
- tools/chemenu/commands/export_cmd.py
- tools/chemenu/commands/git_publish.py
- tools/chemenu/commands/new_page.py
- tools/chemenu/commands/review_cmd.py
- tools/chemenu/commands/task_cmd.py
- tools/chemenu/commands/upload_cmd.py
- tools/chemenu/config.py
- tools/chemenu/config_shapes.py
- tools/chemenu/legacy_settings.py
- tools/chemenu/mcp/__main__.py
- tools/chemenu/mcp/server.py
- tools/chemenu/reference_doc.py
- tools/chemenu/review.py
- tools/chemenu/settings.py
- tools/chemenu/tasks/__init__.py
- tools/chemenu/tasks/caldav.py
- tools/chemenu/tasks/config.py
- tools/chemenu/tasks/superproductivity.py
- tools/chemenu/telemetry/policy.py
- tools/chemenu/tests/conftest.py
- tools/chemenu/tests/record_sp_fixtures.py
- tools/chemenu/tests/test_bugreport.py
- tools/chemenu/tests/test_caldav.py
- tools/chemenu/tests/test_config_shapes.py
- tools/chemenu/tests/test_doctor.py
- tools/chemenu/tests/test_git_publish.py
- tools/chemenu/tests/test_legacy_settings.py
- tools/chemenu/tests/test_mcp_server.py
- tools/chemenu/tests/test_new_page.py
- tools/chemenu/tests/test_review.py
- tools/chemenu/tests/test_settings.py
- tools/chemenu/tests/test_sp_recorded.py
- tools/chemenu/tests/test_superproductivity.py
- tools/chemenu/tests/test_task_cmd.py
- tools/chemenu/tests/test_tasks_config.py
- tools/chemenu/tests/test_telemetry_policy.py
- tools/chemenu/tests/test_tracker_live.py
- tools/chemenu/tests/test_upload.py
- tools/chemenu/tests/tracker_live.py
- tools/chemenu/upload.py

Co-Authored-By: Claude Code <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SnAJ7Z3CpVD3PRbN73QtU2
2026-10-11 06:54:35 +02:00

5.5 KiB

type, name, description, manual, migrates_to, migration_kind, obligation
type name description manual migrates_to migration_kind obligation
types/instruction.md 10.0.0-settings-tiers Move the settings of the four per-feature files .wikitool-telemetry.json, .wikitool-remotes.json, .wikitool-upload.json and .wikitool-tasks.json into the tiered settings with `wikitool config migrate` - run once per checkout; without it the Publish-Remote Gate and the upload limits are not in effect and the commands that need them exit 42. true 10.0.0 mechanical required

Move the per-feature settings files into the tiered settings (10.0.0)

Until 10.0.0 four features kept their settings in a file of their own at the root of the checkout: .wikitool-telemetry.json, .wikitool-remotes.json, .wikitool-upload.json and .wikitool-tasks.json. 10.0.0 reads none of them. The same settings are now sections of the tiered settings - telemetry, remotes, upload, and tasks with superproductivity and caldav - and each field sits in the file its tier names: wikitool.json (committed) for what is the same in every clone, .wikitool-local.json for what is true of one checkout, and for a token or a password the secrets file, with only a reference in wikitool.json.

A file that is left behind is not read, so the setting it held is not in effect: no Publish-Remote Gate, no upload limits, no tracker. wikitool config migrate moves the content and removes the old files. It is mechanical because nothing is decided per file: every setting keeps its effective value, defaults included.

Contents

When to run

After installing 10.0.0 machinery over an instance on 9.x - step 12 of upgrade-instance.md, once tools/wikitool migrate status names this document - in every checkout of the instance that has one of the four files. The files are per checkout and gitignored, so another clone does not see them and runs the step for itself. Until it has run, tools/wikitool doctor reports each leftover as a FAIL, and publish (with a .wikitool-remotes.json), task, review and new project (with a .wikitool-tasks.json) and the MCP server (with a .wikitool-upload.json) exit 42 and name the command below.

Steps

  1. See what is there:

    tools/wikitool doctor
    

    Each old file that is still present is one legacy-settings line. None, and the checkout has nothing to move: go to step 4.

  2. Move it:

    tools/wikitool config migrate
    

    It prints, per setting, which file the value went to - never the value. A secret's value goes into the secrets file in the user's configuration directory, and only a reference into wikitool.json. It writes the new files first, reads them back and checks them, and only then removes the old ones; if anything fails, nothing is changed and the old files are as they were. A second run says there is nothing to move.

  3. Check it:

    tools/wikitool doctor
    git status --short
    

    doctor shows no legacy-settings line, and the settings lines are OK. git status shows wikitool.json as new or changed: it holds the instance-tier values and the references, and it is committed with the next publish. .wikitool-local.json does not appear, being ignored.

  4. Record it, once per instance - not once per checkout:

    tools/wikitool migrate done 10.0.0 --pages 0
    

    --pages 0 because no kb/ page changes. The migration is required, so this advances kb_version.

How to tell a migrated checkout from an unmigrated one

An unmigrated checkout has at least one of the four files at its root, and doctor names each. A migrated one has none; .wikitool-tools.json is not among them and stays.

Decision points

  • config migrate stops: a key already holds a different value? The target files already have the key, set by hand or by config set, and the old file says something else. It cannot know which one stands. Decide, remove the other from its file, and run it again.
  • A value was read before but only coerced - a number written as a string, say? It is carried over as the number it was read as. Anything an old file held that was never read (an unknown key, the section of a provider that is not chosen) is named in the output and not carried over.
  • The old Publish-Remote allowlist or upload limits go where? Into .wikitool-local.json: both affect a gate, so config set does not write them, and the migration is the one command that does. Later changes to them are the user's own edit.
  • A profile file WIKITOOL_TASKS_CONFIG points at still holds a plain token? It is not touched by config migrate, and it is no longer read as the old format: a profile has the layout of .wikitool-local.json and holds references only (Profiles). Rewrite it by hand, with the value in WIKITOOL_SECRET_<NAME> or the secrets file.

Scope

The four files named above, in the checkout the command runs in. .wikitool-tools.json and the two tiered settings files are not old files. The machinery - the readers, config migrate, doctor's check - arrived with dist upgrade and needs nothing from this document.