SQLite index — derivált, nem forrás
Amit tárol: entitások lapos táblái kereséshez, a traceability gráf éllistája, FTS5 teljes szöveges index, task-státuszok, utolsó ismert fájl-hash, entitás-revíziók.
Amit NEM tárol: semmi, ami nincs meg a JSON-okban.
CREATE TABLE entities (
id TEXT PRIMARY KEY, type TEXT, title TEXT, level INT,
status TEXT, path TEXT, content_hash TEXT, updated_at TEXT
);
CREATE TABLE edges (
from_id TEXT, to_id TEXT, kind TEXT, -- parent|screen|model|file|skill|component
PRIMARY KEY (from_id, to_id, kind)
);
CREATE VIRTUAL TABLE entities_fts USING fts5(id, title, body, content='');
CREATE TABLE tasks (id TEXT PRIMARY KEY, story_id TEXT, ac_id TEXT,
bundle_hash TEXT, status TEXT, updated_at TEXT);
Újraépítés
craftingtable-engine reindex — teljes SQLite eldobás és újraépítés a fájlokból. Automatikusan
fut, ha:
- hiányzik a db,
- a séma-verzió nem stimmel,
- a
manifest.jsonhash-ei eltérnek a fájloktól (pl. valakigit pull-t csinált az app mögött).
Fájlfigyelés — a round-trip engineering alapja
fsnotify a .craftingtable/ alatt → külső változás (git checkout, kézi szerkesztés, AI
ágens írása) → inkrementális reindex + esemény a UI-nak. Ez adja a „round-trip engineering"
alapját: a felület mindig azt mutatja, ami a lemezen van, akárki írta.
Backup szerep
A napi/óránkénti snapshot ZIP a .index/snapshots/ alá kerül. A snapshot a JSON-okat
tartalmazza, nem a db-t — a db bármikor újraépíthető.