zara-coding: validate and freeze SPECs with trusted assertions #461

Open
nsaspy wants to merge 12 commits from rage/1-zara-coding-spec-compile into main
Owner

Advances #1 from normalization into Prolog-RLM's canonical trusted validation/freezing path.

Adds a fixed plugin-owned assertion registry and coding.spec.compile:

  • uses canonical rlm_spec_lang:spec_source_compile/4 (normalize -> registry validation -> freeze);
  • SPEC source is bounded and passed only over stdin;
  • registry is immutable shipped code, never model-generated or dynamically registered;
  • admitted assertions are only repository_head and repository_clean v1;
  • both require current evidence with trust class trusted or observed;
  • both have observer:none, so compiling a SPEC cannot inspect files, run Git, or acquire capabilities;
  • pure evaluators are present for later evidence reconciliation through rlm_verify;
  • coding.spec.catalog now uses the exact same registry, so advertised assertions and admitted assertions cannot drift;
  • rejected Prolog-RLM outcomes remain explicit rejected evidence.

RED-first commit: 48d84cd6. No Core or external todo changes. Planning/execution and cross-plugin calls remain blocked behind Zara Core #400 rather than being duplicated here.

Full compatibility gate, registry/plugin tests and Nix package builds required before merge.

Advances #1 from normalization into Prolog-RLM's canonical trusted validation/freezing path. Adds a fixed plugin-owned assertion registry and `coding.spec.compile`: - uses canonical `rlm_spec_lang:spec_source_compile/4` (normalize -> registry validation -> freeze); - SPEC source is bounded and passed only over stdin; - registry is immutable shipped code, never model-generated or dynamically registered; - admitted assertions are only `repository_head` and `repository_clean` v1; - both require current evidence with trust class `trusted` or `observed`; - both have `observer:none`, so compiling a SPEC cannot inspect files, run Git, or acquire capabilities; - pure evaluators are present for later evidence reconciliation through `rlm_verify`; - `coding.spec.catalog` now uses the exact same registry, so advertised assertions and admitted assertions cannot drift; - rejected Prolog-RLM outcomes remain explicit `rejected` evidence. RED-first commit: `48d84cd6`. No Core or external todo changes. Planning/execution and cross-plugin calls remain blocked behind Zara Core #400 rather than being duplicated here. Full compatibility gate, registry/plugin tests and Nix package builds required before merge.
Some checks failed
CI / test (pull_request) Failing after 17s
This pull request has changes conflicting with the target branch.
  • plugins/zara-coding/README.md
  • plugins/zara-coding/lib/zara_coding/plugin.py
  • plugins/zara-coding/prolog/zara_coding_assertions.pl
  • plugins/zara-coding/test/test_plugin.py
View command line instructions

Manual merge helper

Use this merge commit message when completing the merge manually.

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin rage/1-zara-coding-spec-compile:rage/1-zara-coding-spec-compile
git switch rage/1-zara-coding-spec-compile

Merge

Merge the changes and update on Forgejo.

Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.

git switch main
git merge --no-ff rage/1-zara-coding-spec-compile
git switch rage/1-zara-coding-spec-compile
git rebase main
git switch main
git merge --ff-only rage/1-zara-coding-spec-compile
git switch rage/1-zara-coding-spec-compile
git rebase main
git switch main
git merge --no-ff rage/1-zara-coding-spec-compile
git switch main
git merge --squash rage/1-zara-coding-spec-compile
git switch main
git merge --ff-only rage/1-zara-coding-spec-compile
git switch main
git merge rage/1-zara-coding-spec-compile
git push origin main
Sign in to join this conversation.
No description provided.