fix(cogitate): one approved journal-command vocabulary
Define {identity, health, talent} once in cogitate_contract.py and render it
into the policy, the prompt lint, the inventory scan, the runtime preamble,
both model-visible tool descriptions, and the sol-tool hint. The preamble no
longer bans bare `journal ...` while policy allows three families; it now
states the positive rule — normal access is `sol` / `sol call`, the three
approved host families run directly as `journal <family> ...` and must not be
prefixed with `sol call`.
Refuse the two forms seen in the stuck production run before execution, each
with the working repair: `sol call journal <family> ...` for any of the three
families, and the bare `journal search` / `journal facet` retries.
feat(core): create derived-edge schema in native indexer
The native solstone-core indexer now creates the edge_files and edges tables, the three edge indexes (edges_path, idx_edges_src, idx_edges_dst), and the edge schema-version sentinel row (edge_files path='edges:__schema__', mtime=1) as part of the index DB, matching Python's _ensure_edges_schema exactly. Tables are created empty (sentinel only) - edge extraction/population remains a later lode. This makes a native-built index a safe drop-in for readers that query edges/edge_files.
All schema DDL (files, chunks, edge_files, edges, indexes) plus the sentinel now commit in a single transaction so an interrupted setup never leaves tables without the sentinel. A committed golden fixture (core/fixtures/edge_schema.json), generated from Python's real _ensure_edges_schema via scripts/build_core_fixtures.py, backstops schema drift; a Rust PRAGMA-introspection test asserts native/Python parity.
No edge extraction, no --rebuild-edges subcommand, and no port of Python's in-place schema-version migration branch (native targets fresh/--reset DBs only).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>