Skip to content

Test phase 8: graph checked on monorepo layouts; known gaps listed - #191

Merged
jburrow merged 1 commit into
mainfrom
claude/project-thread-bssnnv
Oct 23, 2026
Merged

jburrow merged 1 commit into
mainfrom
claude/project-thread-bssnnv

Conversation

@jburrow

@jburrow jburrow commented Oct 23, 2026

Copy link
Copy Markdown
Owner

Phase 8 of the test plan: generated corpora shaped like real repositories for the import-graph oracle, and baselines turned into a list of documented gaps.

Generated layouts

  • scripts/graph-oracle/layouts.py (grimp): monorepo (services and libraries side by side, each a project with its own src/ and pyproject.toml), root-init (root folder is a package, run with the root on sys.path, .git present), namespace (a PEP 420 package split over src/ and plugins/src/). Writes oracle.env telling the oracle what is on sys.path.
  • scripts/graph-oracle/ts_layouts.mjs (TypeScript): npm workspaces installed as symlinks, tsconfig.base.json paths that each project extends, an app alias, barrels, .mts/.cts, import type, import(), require, JSON, plus the unhandled forms on purpose (#imports, exports subpath, folder package.json main).

Results (seed 1): root-init 468/468; TS workspaces 388/390 (one #name, one exports subpath); monorepo 368/698, namespace 98/162 — every miss is an import into another sys.path folder (another project's src/, or the other portion of a namespace package), the documented "other sys.path entries" gap. No extra edges anywhere.

Known gaps instead of counts

benches/graph/known_gaps.toml lists every edge fcs misses or draws wrongly on each CI corpus (Django, deep trees, Vite, the layouts), with the graph-support row it is and its exact count. graph_oracle --gaps FILE --corpus NAME fails on an edge that fits no gap (a bug, or a gap to document) and on a count that changed (a fix: lower or remove the gap). Vite's --max-missing 7 --max-extra 1 becomes 4 #name, 2 folder main, and one ./x.js where x.ts also exists (plus its extra side).

Oracle

src/check/oracle/py.py builds one graph across ROOT and ROOT/src (so imports between them are compared), plus FCS_ORACLE_PY_PATHS / FCS_ORACLE_PY_NAMESPACES. Django unchanged: 3,041 of 3,041.

Docs: graph-support page (namespace packages row, monorepo note, .js/.ts tie, checked-corpora table), testing page, CHANGELOG.


Generated by Claude Code

Generated repositories shaped like real monorepos, checked against grimp
and TypeScript:
- scripts/graph-oracle/layouts.py: Python projects side by side each with
  its own src/ (monorepo), a root folder that is a package (root-init),
  and a namespace package split over two folders (namespace);
- scripts/graph-oracle/ts_layouts.mjs: npm workspaces installed as
  symlinks, tsconfig.base.json paths that projects extend, barrels,
  .mts/.cts, import type, import(), require, and the forms fcs does not
  handle (#imports, exports subpaths, a folder's own package.json main).

Baselines become a list: benches/graph/known_gaps.toml names every edge
fcs misses or draws wrongly on each CI corpus (Django, Vite, the deep
trees, the layouts), with its reason (a row of the graph-support page)
and exact count. graph_oracle --gaps/--corpus fails on an edge that fits
no gap and on a count that changed.

The Python oracle builds one graph across ROOT and ROOT/src, plus
FCS_ORACLE_PY_PATHS and FCS_ORACLE_PY_NAMESPACES for the layouts.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EkCcM7SF9X6MgaCjoysdAw
@coderabbitai

coderabbitai Bot commented Oct 23, 2026

Copy link
Copy Markdown

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

⚙️ Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 8a803f10-e4c2-4074-9ad2-2181e230703a
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@jburrow
jburrow merged commit f2497a7 into main Oct 23, 2026
10 checks passed
@jburrow
jburrow deleted the claude/project-thread-bssnnv branch October 23, 2026 22:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants