- Added dependency-free Free Pascal and Lazarus language support for source discovery, structural parsing, module identity, import resolution, search, and boundary analysis.
- Added focused regressions for Pascal dependency isolation, resolver errors,
source-path restoration, and public
analyze/boundaryoutput. - Added one immutable discovery-exclusion contract shared by source, language-configuration, package, and LSP project discovery.
- Added repository-owned
.gitignoreresolution through Git with tracked-path matching and machine-global ignore rules disabled. - Added focused issue #7 regression coverage for repeatable CLI basenames, cross-platform validation, TypeScript configuration, language package discovery, tracked ignored snapshots, and cache provenance.
- Surfaced Pascal resolver read failures instead of silently publishing partial import and type indexes.
- Normalized temporary discovery roots so Pascal backup-directory coverage is portable across macOS path aliases.
- Removed TypeScript alias discovery's private skip list so it consumes the same policy as every other target-root walk.
- Prevented POSIX and Windows path forms from entering the basename-only public CLI contract.
- Extend architecture discovery to Free Pascal and Lazarus repositories while preserving fail-closed resolution and language-scoped dependency loading.
- Keep tracked snapshots and repository-ignored source-shaped artifacts out of search, reverse-dependency, and architecture-violation results without duplicating Git ignore semantics.
- Added a dynamically loaded Ruby adapter under
scripts/lang/rubyusing the official Pythontree-sitter-rubygrammar, with.rb/.rakediscovery, declarations, qualified modules, methods, inheritance, and explicit requires. - Added project-local Rails/Zeitwerk resolution for application roots, custom static autoload roots, acronyms, concerns, associations, callbacks, jobs, mailers, specs, and inherited constants.
- Added explicit
:association,:concern,:callback,:job,:mailer, and:specrelationship metadata while keeping ambiguous and polymorphic targets fail-closed. - Added an exact Ruby-only dependency manifest so repositories without Ruby do not install or load the Ruby grammar.
- Added a language-neutral
Languageprotocol and registry for source ownership, parsing, import resolution, module IDs, output codes, and LSP configuration. - Moved Python parsing and import resolution to
scripts/lang/pythonand TypeScript/TSX parsing and import resolution toscripts/lang/typescript. - Added a Rust adapter under
scripts/lang/rustwith Tree-sitter entity extraction, trait and inherent implementation methods, Cargo workspace resolution, and rust-analyzer metadata. - Added official Tree-sitter adapters for C#, Java, and Go with language-owned parsing, project recognition, module identity, local import resolution, and language-server metadata.
- Moved Tree-sitter packages into exact per-language requirement files and made parser loading, dependency validation, and cache provenance depend only on languages discovered in the target repository.
- Added focused registry, script-mode CLI, Rust parser, and Cargo dependency tests while retaining the hardened builder and TypeScript recall coverage.
- Rewrote the README and public descriptions around user questions, quick code search, dependency graphs, blast-radius analysis, supported languages, and AI-agent workflows.
- Verified Ruby support on
/Users/alexeus/src/masha: all 244 Ruby/Rake files parsed without syntax errors in 2.82 seconds, producing 244 nodes, 881 entities, and 852 edges in a 120,660-byte map. A second build reused all 244 cached results and completed in 2.04 seconds. - A source-independent static oracle matched all reviewable inheritance (67), concern (11), association (30), job (9), mailer (2), and spec-impact (94) edges, measuring 100% precision and recall for each category. The constant index uniquely resolved 343 references, left 6 ambiguous references unlinked, and classified the remaining 337 as external or dynamic.
- Prevented RSpec
include(...)matchers from appearing as concern edges, resolved constants inherited from local Ruby superclasses, respected associationsource, and left polymorphic associations open. - Parser dispatch now surfaces unsupported languages and parse failures instead of silently dropping failed files.
- Preserved the hardened explicit-root, collision, cache-provenance, atomic publication, locking, and safe-query contracts while extracting languages.
- Compared the extracted Python and TypeScript adapters with the upstream pre-extraction builder on the current Upgraide mono checkout: all 7,215 files, 7,215 nodes, and 55,972 edges produced identical facts and graph hashes.
- Verified Rust support against
diskd-cli: all 4 tracked Rust files were discovered, all 256 source-oracle entities matched, and both local crate dependency edges matched, with 100% precision and recall. - Verified C# on
avsync-api-core: 254/254 authored files, 286/286 entities, and 728/728 source-derived local import edges matched with no parse errors. - Verified Java on
nextnet-tangerine-service: 28/28 files, 28/28 entities, and 46/46 source-derived local import edges matched with no parse errors. - Verified Go on the Avionica
go-gobwastarget: 1/1 file and 14/14 entities matched with no parse errors; its source has no local package-import recall denominator, so a focused multi-package fixture verified both expected local package edges instead. - Excluded .NET build output and Go vendored dependencies, and required an actual type reference before resolving C# namespaces or Java wildcards.
- Verified a Python-only build with no site packages and a C#-only build with
only
tree-sitterandtree-sitter-c-sharpinstalled; missing TypeScript packages now produce a targeted install command without publishing artifacts.
- Make Rails model, concern, service, job, mailer, and spec blast-radius search useful without booting the application or installing Ruby dependencies for repositories that do not contain Ruby.
- Make new source-language support additive at one explicit boundary, prove Rust, C#, Java, and Go coverage on real source repositories, and make the project easier to find and use without weakening existing graph correctness guarantees.
- Added regression coverage for completion-order stability, module-ID collisions, cache provenance, atomic publication, writer locking, explicit roots/output, additional literal TypeScript imports, quoted paths, malformed maps, unsafe patterns, and invalid depths.
- Added exact Python dependency pins and explicit builder/query path contracts.
- Resolved
CALLS_APIproviders through consumer imports and failed closed when an unqualified provider name remained ambiguous. - Sorted parsed results and rejected every colliding normalized module ID before cache or map publication.
- Added cache/map schema validation, builder fingerprints, atomic replacement, and a per-project non-blocking writer lock.
- Replaced user-controlled regular expressions with a bounded linear pattern grammar and surfaced numeric, source-read, and structural map errors.
- Encoded unsafe paths as quoted definitions and recognized TypeScript
import = require()and literal template imports.
- GitHub issue #1 reproduced silent semantic changes, discarded modules, stale cache trust, unsafe concurrent writes, ambiguous targeting, and unbounded query input. These changes make correctness deterministic and failures local, explicit, and non-destructive.
- Added focused regression coverage for TSX imports, re-exports, literal runtime imports, project-scoped aliases, exact aliases, and package self-imports.
- Resolved TypeScript and TSX dependencies through the same module resolver.
- Kept duplicate path aliases within their owning
tsconfig.jsonboundary and supported exact aliases plus multiple configured targets. - Added import edges for
export ... from, literalimport(), and literalrequire()forms. - Resolved exact package self-imports to the nearest owning package source entrypoint without shadowing installed dependencies.
- An author-run external monorepo compiler oracle measured 99.899% local dependency recall and 99.832% precision. The oracle and dataset are not committed here, so this is provenance for the change rather than a reproducible repository benchmark.
- Added focused regression evals for cache validity, Python and TypeScript import impact, LSP batch progress, source-root resolution, layer classification, deterministic output, language gating, and infrastructure diagnostics.
- Made the existing belief-search tests load the checked-out repository script instead of a machine-specific installed path.
- Invalidated incremental cache entries by complete SHA-256 content hash instead of mtime and partial-file hashing.
- Restored source-aware queries by resolving source paths from the directory containing the belief map.
- Prevented reference-only LSP batches from looping without progress.
- Included nested and parent-relative Python imports in dependency edges.
- Resolved TypeScript ESM
.jsimport specifiers to their checked-in.tsand.tsxsources. - Stopped backend modules named as stores from being classified as UI unless their path has a frontend boundary.
- Removed generated timestamps from the semantic map and made empty infrastructure output name its supported formats.
- Canonicalized the scan root once so macOS path aliases do not leak into module IDs.
- The audit findings were reproducible on isolated fixtures and a large polyrepo workspace; these changes address the smallest correctness blockers while leaving unsupported languages and infrastructure formats explicit.
- Removed the obsolete
.agentsinfrastructure-topology design notes and their README tree entry.
- The topology builder is implemented in the source, so retaining its original design notes duplicated completed work and left an unused
.agentsdirectory.
- Updated the codespaces skill workflow so agents are directed to query the belief map before reading source and to use
quickas a first-passanalyzeshortcut. - Changed
belief_search.py quickto run fullanalyzeoutput instead of boundary-only output, and made it resolve legacy path-map aliases found in raw belief-map hits. - Added focused unit coverage for quick analyze output, alias resolution from raw hits, boundary files-only output, and no-match suggestions.
- Session-log review showed that agents usually used
searchandanalyzeafter activation, but often queried too late and did not discover shortcut or boundary commands.