RAGE #5: preserve mutable Prolog config beside provisioned base #244

Closed
nsaspy wants to merge 0 commits from rage/zara-004-config-durability into master
Owner

Consumes reopened regression #5 from exact master 7e72d98e0cfc262294f01ed177416a3b2c3bf275.

RAGE state: implementation candidate / exact-head gate pending.

TDD sequence:

  • regression tests were written first;
  • the first apparent full-suite green exposed a false-green SWI/PLUnit launcher;
  • the focused launcher was repaired without production changes and a real RED was established;
  • the smallest loader implementation now adds a separate mutable config.local.pl overlay beside provisioned config.pl.

Current invariants:

  • config.pl remains the backwards-compatible provisioned/base layer and is never rewritten when already present;
  • config.local.pl is user-owned, never auto-created, and may remain absent;
  • base + local layers are both parsed/validated before live tracked clauses are replaced;
  • base facts load before local facts, so the local layer deterministically wins while preserving base/default fallback;
  • reload removes the previous tracked generation rather than accumulating duplicates;
  • server scope applies the existing semantic-only validator to both layers and still rejects device-only facts;
  • no private config/secrets are copied into Git, templates, or Nix-store-owned state.

No Android production changes, no dotfiles/Home Manager repository changes, no second runtime, and no Prolog-RLM work.

Do not merge until the focused config test, complete repository/Nix/package gates, exact-head Actions, mergeability and review/thread checks are conclusively green. The PR remains draft until that evidence exists.

Closes #5.

Consumes reopened regression #5 from exact master `7e72d98e0cfc262294f01ed177416a3b2c3bf275`. RAGE state: **implementation candidate / exact-head gate pending**. TDD sequence: - regression tests were written first; - the first apparent full-suite green exposed a false-green SWI/PLUnit launcher; - the focused launcher was repaired without production changes and a real RED was established; - the smallest loader implementation now adds a separate mutable `config.local.pl` overlay beside provisioned `config.pl`. Current invariants: - `config.pl` remains the backwards-compatible provisioned/base layer and is never rewritten when already present; - `config.local.pl` is user-owned, never auto-created, and may remain absent; - base + local layers are both parsed/validated before live tracked clauses are replaced; - base facts load before local facts, so the local layer deterministically wins while preserving base/default fallback; - reload removes the previous tracked generation rather than accumulating duplicates; - server scope applies the existing semantic-only validator to both layers and still rejects device-only facts; - no private config/secrets are copied into Git, templates, or Nix-store-owned state. No Android production changes, no dotfiles/Home Manager repository changes, no second runtime, and no Prolog-RLM work. Do not merge until the focused config test, complete repository/Nix/package gates, exact-head Actions, mergeability and review/thread checks are conclusively green. The PR remains draft until that evidence exists. Closes #5.
nsaspy closed this pull request 2026-09-04 23:10:25 +00:00
Some checks failed
CI / test (pull_request) Failing after 8s
CI / android skeleton gate (pull_request) Failing after 7s
CI / shared mic / Ubuntu 24.04 (pull_request) Failing after 6m19s
CI / shared mic / Arch Linux (pull_request) Failing after 11m33s

Pull request closed

Sign in to join this conversation.
No description provided.