One shared Roslyn base for every agent working in a C# or Unity workspace.
This release contains 114 commits across 257 files since v0.7.12. It makes shared mode the recommended multi agent workflow, expands compiler and evidence queries, strengthens Unity project awareness, and makes full and incremental refreshes easier to verify.
Install or update
dotnet tool install --global Lifeblood
dotnet tool install --global Lifeblood.Server.McpExisting installations can use dotnet tool update --global with the same package names. Start the MCP server with lifeblood-mcp --shared so agents in the same workspace reuse one current semantic and Roslyn base.
Shared workspace and multi agent workflow
- Same workspace clients now connect through thin stdio proxies to one daemon selected by canonical workspace identity.
- Immutable publications carry unique snapshot ids. Exact leases keep graph, compiler state, evidence, and identity consistent for every in flight query.
- Compatible full and incremental requests coalesce. Caller cancellation stays isolated and an abandoned last waiter cannot publish stale work.
- Serial batches, snapshot preconditions, and bounded graph history support coordinated agent handoffs without retaining another Roslyn base.
- The latest graph remains available after the last client disconnects by default. Idle reclamation is explicit and opt in.
- Direct MCP clients and the Unity bridge now use the same installed
lifeblood-mcp --sharedcommand. - Shared transport now reports its tested
recommendedmaturity through capabilities.
Full and incremental analysis
- The first full scan builds the verified baseline. Incremental scans reuse it and reanalyze only affected modules after source, project, asmdef, package, or profile changes.
- Warm incremental admission no longer performs a duplicate all source content read before Roslyn analysis.
- Incremental results now explain the exact accepted change set, including reanalysis, content edits, timestamp touches, descriptor changes, and deletions.
- Full fallback preserves Editor and Player profile identity and clearly distinguishes reanalysis from actual source change.
- Analyze responses are summary first for package visibility and profile applicability, with bounded detail available when requested.
- Recoverable Roslyn emit faults are contained per module instead of aborting an otherwise useful analysis.
Unity and Roslyn
- Editor and Player profiles, asmdef boundaries, package descriptors, package sources, references, source generators, MonoBehaviour messages, Unity attributes, and resolved UnityEvent targets are part of the C# analysis.
- External local Unity packages now keep one logical
Packages/{name}identity across discovery, compilation, graph paths, fingerprints, and incremental receipts. - Analyze and compile check report package source visibility and explain excluded or unbound package files.
- The canonical UPM bridge exposes the curated pollable Lifeblood tools and mirrors the server input contracts.
- Lifeblood can read selected scene, prefab, and asset YAML for resolved UnityEvent and reachability evidence. It does not control scenes or the Editor. Use Unity MCP for Editor control.
- Multi profile operation audits can query another committed profile sequentially without retaining another profile heap.
Contract and source evidence
- One bounded contract audit engine now evaluates consumer owned operation, argument, value, cadence, route, state, temporal, and ownership rules.
- Required facts, route equivalence, allowed route ownership, and profile aware call routes share the same neutral operation stream.
- Shared state access is classified as readonly table, initialized once cache, runtime mutable, shared scratch, or unknown with bounded evidence.
- Temporal rules preserve exact conditional arms and distinguish a clean finding set from missing evidence.
- Targeted contract scans filter before projecting expensive operation evidence and use only a request scoped symbol cache.
- The C# playbook adds a contract derived numerical probe workflow without adding an audio runner or another policy database.
- Source evidence reuses retained Roslyn syntax trees for comments, strings, declarations, tests, and invariant coverage.
- Generated evidence drift compares a repository owned baseline with the exact leased graph and a live invariant audit.
- Compact invariant audit mode preserves totals, categories, warnings, duplicates, and coverage without repeating empty ledgers.
Diagnostics, impact, and source control
lifeblood_compile_checkaccepts bounded changed sets of 1 to 32 files and reports per file ownership, profile, and diagnostics.- Diagnostic ownership joins the current Roslyn diagnostics to bounded Git working tree, staged, since commit, or explicit file evidence without compiling a baseline.
- File scoped compilation ownership now fails closed on ambiguous paths instead of selecting the first suffix match.
- Source control provenance follows the workspace being analyzed through one bounded Git adapter and one Application port.
- Optional file impact receipts name unsupported source file IO relationships without inventing semantic graph edges.
Runtime performance evidence
lifeblood_performance_evidenceimports bounded generic JSON or CSV and structural Unity ProfilerRecorder receipts.- Captures correlate to the leased graph, source, invariant, and test authorities and compare only after explicit identity and unit validation.
- The adapter does not read proprietary Unity profiler binaries, retain captures, start a profiler, or create another semantic base.
- Analysis usage now reports start, end, delta, and absolute peak working set and private bytes for retained session diagnosis.
Correctness and documentation
- Statement branch bodies are no longer projected as value inputs. Conditional expressions still preserve their true and false value arms.
- Successful tool responses identify confidence, source, staleness, limitations, snapshot identity, and release provenance.
- The README and NuGet metadata now lead with Lifeblood as a Roslyn powered C# and Unity analyzer.
- The architecture reference and diagram now separate adapters, the pure core, shared publication, agent queries, evidence ownership, and Unity Editor control.
DAWG production receipt
Measured on the DAWG Unity workspace with Editor and Player profiles:
- Project size: 4,559 source files, 118 modules, 6,348 types, 97,037 symbols, and 383,285 semantic edges.
- Cold full scan: 43.732 seconds inside Lifeblood and 60.133 seconds through the Unity bridge.
- Full scan CPU: 157.562 CPU seconds, averaging 3.60 cores on a 32 logical core machine.
- Full scan memory: 3.56 GiB peak working set and 3.83 GiB peak private bytes.
- No change incremental scan: 7.541 seconds, zero changed files, and the same graph reused.
These are measured process peaks on one large project and machine, not fixed requirements for every workspace.
Verification
- Local Release build: 0 warnings and 0 errors.
- Tests: 1,709 total, 1,698 passed, 11 documented native Clang toolchain skips, 0 failed.
- Self analysis: 8,503 symbols, 45,055 edges, 13 modules, 907 types, 9 cycles, and 0 rule violations.
- Full and no change incremental analysis produced identical graphs.
- TypeScript and Python self analysis and golden repositories passed.
- No vulnerable direct or transitive NuGet dependencies were reported.
- Linux build, tests, adapters, and dogfood passed.
- Windows build and tests passed.
- Tagged release verification and NuGet publish passed.
See the complete v0.7.13 changelog and full comparison with v0.7.12.