Add normalized skill catalog graph #256

Merged
lost-rob0t merged 1 commit from rage/250-skill-catalog-graph into main 2026-08-27 03:43:15 +00:00
lost-rob0t commented 2026-08-26 18:10:48 +00:00 (Migrated from github.com)

Advances #250.

RAGE slice

Starts from exact canonical main 267697bef10a3fffff7c093e1435ece770e7444b and reuses the existing rage/250-skill-catalog-graph transaction rather than replacing it. Downstream evidence in a0-symbolics and agentProlog keeps generic skill graph construction upstream in Prolog-RLM.

TDD / regression evidence

The original exact head 6f7d809049aace02e1604330dcb82469ea631525 was exercised by canonical deterministic CI: 79 suites / 898 discovered / 897 passed / exactly 1 failed. The sole failure was standard_skill_projects_to_isolated_inert_node with an instantiation error at test/rlm_skill_graph_test.pl:40.

That failure was a PlUnit binding bug in the test, not desired-red evidence and not a production graph failure: Node was bound inside assertion(Graph.nodes = [Node]) and dereferenced afterward. Commit 3d391781e20421c94635ebd92d16178883b7e6dd moves only that binding outside assertion/1; the graph contract and all assertions remain intact. The recovery diff is exactly one test-line replacement.

Realization

rlm_skill_graph is a read-only projection over already-normalized rlm_skill catalog records. It exposes deterministic inert nodes, typed requires / suggests / conflicts / supersedes edges, diagnostics, structural validation, and a material fingerprint. It does not reparse skill packages, load bodies/resources, select provider context, grant authority/capability/effects, or execute metadata.

Adversarial review / decision

GO for this slice.

  • graph membership is not activation or authority;
  • bodies/resources cannot create edges;
  • hard dependency/supersession cycles and contradictions fail explicitly;
  • unresolved hard skill requirements fail, while soft/external targets remain diagnostics;
  • output is deterministic/ground and contains no handler path;
  • relationship material participates in the deterministic graph/fingerprint material without introducing a second source of skill truth;
  • rlm_prompt_compiler remains the sole provider-selection authority;
  • no Agent Zero / AgentProlog product logic is introduced.

Exact-head verification

Candidate head: 3d391781e20421c94635ebd92d16178883b7e6dd.

Fresh verification on that immutable head is green:

  • canonical PlUnit: 79 suites / 898 discovered / 898 passed / 0 failed / 0 timeout / 0 blocked / 0 fixme;
  • deterministic benchmark/conformance: 16/16 pass;
  • deterministic deep-recursion experiment: 15/15 pass;
  • credential-free CLI/trace smoke: pass;
  • fresh-process persistent graph and artifact restart checks: pass;
  • whitespace: pass;
  • credential-backed REAL OpenRouter core, structured repair, benchmark, depth 0/1/2 recursion, and CLI smoke: pass;
  • pinned Paid OpenRouter: pass;
  • Nix flake: pass;
  • clean SWI pack install: pass;
  • Tree-sitter FFI: pass.

Current review submissions, conversation comments, and unresolved review threads are empty. GitHub reports the PR mergeable against unchanged main.

Old 6f7d809... evidence is retained as deterministic regression evidence but is not reused as green verification.

Merge remains subject to the repository's stronger explicit merge-on-green authorization gate.

Advances #250. ## RAGE slice Starts from exact canonical `main` `267697bef10a3fffff7c093e1435ece770e7444b` and reuses the existing `rage/250-skill-catalog-graph` transaction rather than replacing it. Downstream evidence in `a0-symbolics` and `agentProlog` keeps generic skill graph construction upstream in Prolog-RLM. ## TDD / regression evidence The original exact head `6f7d809049aace02e1604330dcb82469ea631525` was exercised by canonical deterministic CI: **79 suites / 898 discovered / 897 passed / exactly 1 failed**. The sole failure was `standard_skill_projects_to_isolated_inert_node` with an instantiation error at `test/rlm_skill_graph_test.pl:40`. That failure was a PlUnit binding bug in the test, not desired-red evidence and not a production graph failure: `Node` was bound inside `assertion(Graph.nodes = [Node])` and dereferenced afterward. Commit `3d391781e20421c94635ebd92d16178883b7e6dd` moves only that binding outside `assertion/1`; the graph contract and all assertions remain intact. The recovery diff is exactly one test-line replacement. ## Realization `rlm_skill_graph` is a read-only projection over already-normalized `rlm_skill` catalog records. It exposes deterministic inert nodes, typed `requires` / `suggests` / `conflicts` / `supersedes` edges, diagnostics, structural validation, and a material fingerprint. It does not reparse skill packages, load bodies/resources, select provider context, grant authority/capability/effects, or execute metadata. ## Adversarial review / decision **GO** for this slice. - graph membership is not activation or authority; - bodies/resources cannot create edges; - hard dependency/supersession cycles and contradictions fail explicitly; - unresolved hard skill requirements fail, while soft/external targets remain diagnostics; - output is deterministic/ground and contains no handler path; - relationship material participates in the deterministic graph/fingerprint material without introducing a second source of skill truth; - `rlm_prompt_compiler` remains the sole provider-selection authority; - no Agent Zero / AgentProlog product logic is introduced. ## Exact-head verification Candidate head: `3d391781e20421c94635ebd92d16178883b7e6dd`. Fresh verification on that immutable head is green: - canonical PlUnit: **79 suites / 898 discovered / 898 passed / 0 failed / 0 timeout / 0 blocked / 0 fixme**; - deterministic benchmark/conformance: 16/16 pass; - deterministic deep-recursion experiment: 15/15 pass; - credential-free CLI/trace smoke: pass; - fresh-process persistent graph and artifact restart checks: pass; - whitespace: pass; - credential-backed REAL OpenRouter core, structured repair, benchmark, depth 0/1/2 recursion, and CLI smoke: pass; - pinned Paid OpenRouter: pass; - Nix flake: pass; - clean SWI pack install: pass; - Tree-sitter FFI: pass. Current review submissions, conversation comments, and unresolved review threads are empty. GitHub reports the PR mergeable against unchanged `main`. Old `6f7d809...` evidence is retained as deterministic regression evidence but is not reused as green verification. Merge remains subject to the repository's stronger explicit merge-on-green authorization gate.
Sign in to join this conversation.
No description provided.