Skip to content

[Epic][LLM Wiki v2] Evaluate reference engines, harden contracts, and govern migration #871

Closed

Description

@tommy-ca

Purpose

Successor to completed #863 (do not reopen or rewrite historical receipts). Evaluate adoption/migration of the PStack project-local .llm-wiki/ against:

  • atomicstrata/llm-wiki-compiler @ 0f8ff86ef0a28f4c15627a2ea5e94a96cadd834e (v1.5.0, candidate compiler and review pipeline)
  • geronimo-iia/llm-wiki @ 9d974c9e4d9d6c21638a5f520e6d89f79647724e (Rust headless Git/Markdown search, typed graph and MCP/ACP)
  • PStack @ e21a196797969691106e6bba095c4438b9ffe643
  • QStack governance and historical consolidation #2624, @ 149b6082fe7bcd00e86a13ed48fbf8ee51268882.

Decision policy

Compare keep minimal, optional external engines, full migration in an evidence-based Arena. Default is keep the Python/Markdown baseline until parity, safety, provenance and cost thresholds justify change. No migration by analogy. Avoid requiring Node 24, a daemon, provider credentials, or Rust for the six-host offline portability baseline.

PStack: project-local docs and verification; raw bytes immutable once ingested, no unsafe path traversal, derived index and no silent claims of schema compliance.
QStack: its existing knowledge/ canonical store, knowledge/operations.jsonl authoritative log, .wiki/ quarantine, and governed publisher MUST remain sole mutation authority. Engine output is untrusted candidate/optional projection, not direct publisher. Keep nine stable semantic responsibilities and explicit source/claim provenance.

Audit findings to validate in first child

  • scripts/llm_wiki.py::ingest_file writes dest.write_bytes(content) even when raw/sources/<name> already exists, contradicting raw immutability.
  • check_wiki checks file presence and Markdown links but does not actually validate typed page schemas, source hashes, or index equivalence. Path confinement and symlink handling need negative controls before trusting an untrusted source.
  • index --write has no atomic replace; indexing scans category root *.md only; whether that is deliberate must be specified.
    These are source-inspection findings, not executed exploit or runtime proof.

DAG (logical dependencies, not GitHub-native subissues)

S0 exact-head inventory/security+requirements -> A0 scored Arena benchmark -> F1 verification contracts, F2 optional candidate adapter proof -> F3 docs/wiki and semantic primitive alignment -> V0 independent Thermos, Swarm/Arena/Interrogate, exact-head suite and release decision -> root.
F1 and F2 may run in parallel after A0. Migration and canonical publication are separate decisions. Each child must link code/PR, exact revision, reproducible commands, failure-first results (FAIL > BLOCKED > UNTESTED > PASS) and negative controls.

Exit criteria

  • Source and schema crosswalk with data/code flow and rollback.
  • Real user-path verifier generated using create-verification-skill and formal model/check generated using create-formal-verification-skill, with executable negative controls; absent checker means BLOCKED, not PASS.
  • Rights-safe source-capture, symlink/path escape, concurrent writes, crash recovery, stale CAS, review approval and ledger identity tests.
  • Side-by-side corpus compile / retrieval / failure / footprint benchmark, sources and model versions pinned; independently reviewed.
  • No merge on incomplete CI or invented multi-model evidence. A draft planning PR is not a migration implementation.

Materialized graph (2026-10-31)

Draft research PR: #878 on research/llm-wiki-reference-eval-871 (planning-only, not a verified migration).
Design/spec source: docs/research/llm-wiki-reference-evaluation-2026-10-31.md.
Compiled wiki analysis: .llm-wiki/wiki/analyses/llm-wiki-reference-evaluation.md.

flowchart TD
  S0["#872 S0 inventory/security"] --> A0["#873 A0 Arena"]
  A0 --> F1["#874 F1 verification + formal"]
  A0 --> F2["#875 F2 candidate adapter pilot"]
  F1 --> F3["#876 F3 specs + wiki"]
  F2 --> F3
  F3 --> V0["#877 V0 Thermos + Interrogate"]
  V0 --> Root["#871 acceptance"]
Loading

Initial frontier: #872. S0/A0/F1/F2/F3/V0 were created as open work, not verified completion. Logical links exist in bodies; no GitHub-native parent linkage claimed. Do not close this epic when merely creating the plan. If the #875 pilot is explicitly deferred by #873, mark it not_planned with rationale rather than fabricating its results.

Implementation follow-on, verified offline slice (2026-10-31)

Stacked mainline restoration and formal specs (2026-10-31)

Activity

  1. tommy-ca commented on Oct 31, 2026

    @tommy-ca
    OwnerAuthor

    Epic #871 Completion and Closeout Record

    All deliverables, acceptance gates, and child issues under Epic #871 have been completed, verified by independent functional subagents, and merged into main:

    1. Merged Pull Requests

    2. Verification Receipts

    • python3 scripts/llm_wiki.py check: PASS (0 broken links, fully indexed).
    • python3 scripts/worktree_protocol.py check: PASS (all worktrees strictly confined to .worktrees/).
    • pytest tests/test_llm_wiki*.py tests/test_worktree_protocol.py: 48/48 passed.
    • python3 scripts/verify_portable.py check-staleness: ALL FRESH across matrix.
    • python3 scripts/verify_portable.py check-evidence: PASS (packaged).
    • Full repository test suite: 1404 passed, 10 skipped (0 failures).

    Zero open issues remain. Epic #871 is formally RESOLVED and CLOSED.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions