Skip to content

feat(tools): Categorize the impls igraph 1.0 adds, and stop on any without a category - #2998

Merged
krlmlr merged 1 commit into
claude/f3-pin-engine-changesfrom
claude/k1-categorize-up-front
Oct 18, 2026
Merged

krlmlr merged 1 commit into
claude/f3-pin-engine-changesfrom
claude/k1-categorize-up-front

Conversation

@krlmlr

@krlmlr krlmlr commented Oct 18, 2026 •

Copy link
Copy Markdown
Contributor

The generated interface no longer has an "uncategorized" bucket: every *_impl() that the C core 1.0 adds has its category on main already, and the split of the generated R code stops on a function without one. It is stacked on #2997.

What it changes

tools/aaa-categories.yaml places the 22 functions that igraph 1.0 generates but the vendored C core on main does not, among them igraph_community_leiden_simple, the _bliss isomorphism variants, igraph_hamming and igraph_lcf, and the proximity graphs and igraph_spatial_edge_lengths in two new subcategories of spatial. tools/split-aaa-auto.R ignores entries for functions it does not see, so these entries change nothing on main, and a rebuild of the vendoring series from main no longer writes R/aaa-uncategorized.R. tools/rebuild-cats.R keeps these entries instead of removing them as stale, and says why.

tools/split-aaa-auto.R now stops with an error listing every generated function without a category, before it removes any R/aaa-*.R, instead of writing it to R/aaa-uncategorized.R with a warning. Listing a function under a top-level uncategorized: key is the explicit opt-out. The Stimulus page of the handbook (handbook/architecture/stimulus/) describes both rules.

Checks

  • Regenerating the interface with Stimulus (make -f Makefile-cigraph r_wrappers) writes 28 R/aaa-<category>.R files with 490 impls and changes no file; no R/aaa-uncategorized.R appears.
  • tools/rebuild-cats.R reproduces tools/aaa-categories.yaml byte for byte.
  • With igraph_degree removed from the YAML, the split stops with "impls without a category" naming degree_impl, and leaves R/ untouched.
  • devtools::document() and air format change nothing, and the handbook check script is clean.

LLM use: this PR was prepared with Claude Code (Claude Opus 5.5), at the maintainer's request. The change comes from the subsession https://claude.ai/code/session_01Qv1u8Hr4XRrZgbEsS2y7ku.

  • By submitting this pull request, I assign the copyright of my contribution to The igraph development team.

🤖 Generated with Claude Code

https://claude.ai/code/session_01JXnA76zWTu4ZD8BQCSYRpk

…thout a category

`tools/aaa-categories.yaml` now places the 22 functions
that the vendored C core on `main` does not generate yet,
but igraph 1.0 does.
`tools/split-aaa-auto.R` ignores entries for functions it does not see,
so a rebuild of the series from `main` no longer writes `R/aaa-uncategorized.R`.
`tools/rebuild-cats.R` keeps these entries instead of removing them as stale.

`tools/split-aaa-auto.R` now stops on a generated function without a category,
before it removes any `R/aaa-*.R`.
Listing a function under a top-level `uncategorized:` key is the explicit opt-out.

Regenerating on `main` changes no generated file.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Qv1u8Hr4XRrZgbEsS2y7ku
@krlmlr
krlmlr added this pull request to stack #3001 October 18, 2026 13:00
@krlmlr
krlmlr merged commit f1c42d9 into main Oct 18, 2026
9 checks passed
@krlmlr
krlmlr deleted the claude/k1-categorize-up-front branch October 18, 2026 18:40
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