For Agents
Reverse-chronological session log. Newest entries at top, grouped by date (
## YYYY-MM-DD). Each bullet: one piece of work, short summary, wikilinks to docs touched. Updated byobsidian-documenteron every project doc write. Read byhistorianat bootstrap.
2026-09-07
- π¬ Knowledge-graph research recommends narrowing this project to a single reconciler and dropping grafeo. A day of research (two audits, a prior-art probe, four surveys) concluded that the only thing in the graph stack worth building is a reconciler: a job that resolves note
code_refsanchors against a current code index and flipsstatus: staleonsymbol_missingorcode_changed, settingverified: todayotherwise. Estimated 150-300 lines, and SQLite suffices β grafeo is unnecessary for it. Everything else has a credible existing tool (Serena for live symbols, Basic Memory for typed concept edges, codebase-memory-mcp for a committed cross-repo artifact). Also: the paused graphtestrustc_driverHIR walker is superseded byrust-analyzer scip, which yields stable symbols with no nightly pin β do not revive it. β οΈ Nothing is decided; the standing alternative is to drop the project and trial trace-mcp, whosedecision-verificationalready returns the same three verdicts. β If grafeo goes,chronostops being free β it arrives transitively via grafeoβsarrow-exportβ 2026-09-07-scope-recommendation-reconciler, knowledge-graph-research-2026-09-07 - Created the project. Rust workspace at
/Volumes/bandi/coding/ai-project-brainβ edition 2024, resolver 3, two members (packages/app,packages/core/project), all deps inherited from the root[workspace.dependencies]. β Scaffold only:main.rsis 10 lines,lib.rsis the cargo-generatedadd()stub,project.rsis empty. No architecture to document yet β ai-project-brain - β οΈ Recorded the grafeo feature matrix, because
embedded/server/edgeare three different products and the split is invisible on docs.rs.default = ["embedded"]gives the in-process engine (GQL, vector/text/hybrid indexes, CDC, graph algorithms, rayon);serveradds all query languages (cypher, sparql, gremlin, graphql, sql-pgq) plusasync-storage,triple-store,shacl;edge/browserstrips tolpg+gql+regex-litefor wasm. The workspace runs default features β GQL only, no server-mode languages β grafeo-feature-matrix - β The gotcha worth the note: grafeo is SILENT in your logs by default.
tracingis an opt-in grafeo feature (tracing = ["grafeo-engine/tracing"]), NOT part ofembedded/defaultβ it arrives free withserver, and that asymmetry is the trap. Symptom: owntracing::info!calls appear, graph layer emits zero spans and zero events, nothing errors, no warning. The natural debugging path blames the subscriber (EnvFilter,RUST_LOG, init order) β all of which are fine; the instrumentation was never compiled in. Live risk right now, not hypothetical:packages/app/src/main.rsalready initializestracing_subscriber::fmt()withEnvFilter, so the receiving end works and only the sending end is missing. Fix isfeatures = ["tracing"]on the grafeo entry in the root[workspace.dependencies]β grafeo-feature-matrix - β οΈ
cargo removeis a workspace-aware garbage collector, not a per-manifest text edit (cargo 1.95.0).cargo remove -p <member> <dep>also prunes the matching root[workspace.dependencies]entry once no member references it. This breaks the obvious migration path β add to member β copy up to workspace β remove from member β re-add as inherited β because step 3 deletes what step 2 just wrote, and the failure surfaces one step later atcargo checkwithworkspace.dependencies` was not defined, making the root manifest look like it was never edited. Fix: writedep.workspace = trueinto the member manifest directly, never routing throughcargo removeβ cargo-workspace-dependency-inheritance - β Added
chronofor timestamps β and it cost ZERO new crates, because it was already in the tree. CheckingCargo.lockbefore choosing a crate showedchronov0.4.45 already compiled in, arriving transitively aschrono β arrow-array v58.4.0 β arrow-ipc β grafeo-engine β grafeo (feature "arrow-export")β andarrow-exportis part of grafeoβs defaultembeddedset, so any project on default grafeo already has chrono. Active features werealloc/std/now/clockbut notserde;serdev1.0.229 was likewise already present. Declaringchrono = { version = "0.4.45", features = ["serde"] }therefore only switched on impls inside a crate already there β verified: 149 packages inCargo.lockbefore and after, onechronoentry, no duplicate versions. β The reusable rule: grepCargo.lockbefore adding any crate β matching what a heavy dependency already chose is free and semantically correct, since grafeo speaks chrono internally via arrow, so timestamps round-trip without a conversion layer.timeorjiffwould have added a parallel crate tree AND a type-mismatch boundary at the DB edge β chrono-already-in-tree-via-arrow - π§
cargo treeverifies dependency edits while the build is red. The workspace source was mid-edit and would not parse (a struct field awaiting its type:last_index_date: ,), socargo check --workspacefailed for reasons unrelated to the dependency work.cargo tree -p <crate> --depth 1resolves purely from the manifests and does not compile, so it still confirmed thatdep.workspace = trueinheritance resolves to the intended versions (project v0.1.0βchrono v0.4.45+tracing v0.1.44). Companion checks that also survive a broken build:cargo check -p <unaffected-crate>(proves the root manifest is valid TOML and resolves),cargo tree -p <crate> -e features -i <dep>(proves a feature actually activated), andgrep -c '^\[\[package\]\]' Cargo.lockbefore/after (proves nothing was silently pulled in). Mental model: cargo has two front ends β resolution and compilation β and a syntax error cannot invalidate acargo treeresult β cargo-tree-verifying-deps-while-build-is-red - β οΈ
std::path::Pathcannot be a struct field by value β two structs here were written aspath: Path/base_path: Path.Pathis unsized (it wraps[u8]), so it fails withthe size for values of type `[u8]` cannot be known at compile-timeβ an error that never namesPathand reads like it is about something else.PathBufis the owned form; same three-way pattern as&strβStringand&[T]βVec<T>. Same half-finished struct work that made the build red above β rust-path-vs-pathbuf-struct-field - π Recorded the current dependency set on the project MOC β root
[workspace.dependencies]:async-trait 0.1.92,chrono 0.4.45 (+serde),futures-util 0.3.34,grafeo 0.5.42,tokio 1.53.1 (+full),tracing 0.1.44,tracing-subscriber 0.3.23 (+env-filter). Member split follows lib-emits / binary-subscribes:packages/apptakes six incl.tracing-subscriber(it owns the binary),packages/core/projecttakeschrono+tracingonly β Workspace Dependencies - Initialized activity log and project folder.