The six-repo consolidation is published: main is the consolidated tree, teeny is preserved, CI is merged and green, and fastfields-dlpack builds against the new layout. Two items could not be completed by the migrating session and are handed off here.
1. Transfer the 41 open issues (blocked on permissions)
GitHub exposes issue transfer only through the GraphQL transferIssue mutation. The migrating session's GraphQL was restricted to a pinned set of PR-review operations, and the REST API has no transfer endpoint at all.
This was deliberately not worked around by recreating the issues: that loses original authorship and comment history, does not close the originals, and would strand 41 open issues in repos about to become read-only.
The full inventory — every open issue by source repo and original number — is in MIGRATION-PROVENANCE.md §3, with a new column to fill in as they move.
| repo | open |
|---|
fastfields-cpu-lib | 8 |
fastfields-cuda-lib | 5 |
fastfields-cpu-impl | 6 |
fastfields-cuda-impl | 8 |
fastfields-kernels | 14 |
Only open issues move. Closed ones stay as history. Pull requests cannot be transferred at all and will remain at their original URLs permanently.
Transfers renumber, so please record old→new in MIGRATION-PROVENANCE.md as you go — §2 of that file explains why leaving the mapping unrecorded is actively dangerous here: #55, #66 and #47 each name two different open issues in two different source repos.
2. Archive the five repos — strictly after (1)
Do not archive before the transfer completes. Archived repositories are read-only, and an issue cannot be transferred out of one without unarchiving it first. Archiving early converts a permissions blocker into a manual unarchive/re-archive cycle.
Per repo, in this order: write the README notice first (archived repos are read-only), then archive.
This repository was consolidated into fastfields/fastfields-lib on 2026-08-19 and is read-only. Its source now lives at <prefix>/ in that repository — see MIGRATION-PROVENANCE.md.
Path prefixes: cpu-lib → include/fastfields/api/cpu/ + src/lib-cpu/; cuda-lib → include/fastfields/api/cuda/ + src/lib-cuda/; cpu-impl → include/fastfields/impl/cpu/; cuda-impl → include/fastfields/impl/cuda/; kernels → include/fastfields/impl/kernels/.
3. Then remove the two dead org reusable workflows
fastfields/.github's cpp-submodule-bump.yml and cpp-submodule-staleness.yml.
Not yet dead. Four of the five repos still have live workflows calling them (fastfields-cpu-lib, fastfields-cuda-lib, fastfields-cpu-impl, fastfields-cuda-impl each ship submodule-bump.yaml and submodule-staleness.yaml; fastfields-kernels does not). They stop being consumers only once those repos are archived, so this step is gated on (2). Removing them now would break real CI.
Note on the teeny branch
Merging main into teeny currently produces exactly one conflict, in CLAUDE.md — both branches edited it. make/common.mk (the .DEFAULT_GOAL fix) auto-merges cleanly. Nothing structural.
And per MIGRATION-PROVENANCE.md §4: claude-fastfields-to-teeny PRs target teeny, not main.
The six-repo consolidation is published:
mainis the consolidated tree,teenyis preserved, CI is merged and green, andfastfields-dlpackbuilds against the new layout. Two items could not be completed by the migrating session and are handed off here.1. Transfer the 41 open issues (blocked on permissions)
GitHub exposes issue transfer only through the GraphQL
transferIssuemutation. The migrating session's GraphQL was restricted to a pinned set of PR-review operations, and the REST API has no transfer endpoint at all.This was deliberately not worked around by recreating the issues: that loses original authorship and comment history, does not close the originals, and would strand 41 open issues in repos about to become read-only.
The full inventory — every open issue by source repo and original number — is in
MIGRATION-PROVENANCE.md§3, with anewcolumn to fill in as they move.fastfields-cpu-libfastfields-cuda-libfastfields-cpu-implfastfields-cuda-implfastfields-kernelsOnly open issues move. Closed ones stay as history. Pull requests cannot be transferred at all and will remain at their original URLs permanently.
Transfers renumber, so please record old→new in
MIGRATION-PROVENANCE.mdas you go — §2 of that file explains why leaving the mapping unrecorded is actively dangerous here:#55,#66and#47each name two different open issues in two different source repos.2. Archive the five repos — strictly after (1)
Do not archive before the transfer completes. Archived repositories are read-only, and an issue cannot be transferred out of one without unarchiving it first. Archiving early converts a permissions blocker into a manual unarchive/re-archive cycle.
Per repo, in this order: write the README notice first (archived repos are read-only), then archive.
Path prefixes:
cpu-lib→include/fastfields/api/cpu/+src/lib-cpu/;cuda-lib→include/fastfields/api/cuda/+src/lib-cuda/;cpu-impl→include/fastfields/impl/cpu/;cuda-impl→include/fastfields/impl/cuda/;kernels→include/fastfields/impl/kernels/.3. Then remove the two dead org reusable workflows
fastfields/.github'scpp-submodule-bump.ymlandcpp-submodule-staleness.yml.Not yet dead. Four of the five repos still have live workflows calling them (
fastfields-cpu-lib,fastfields-cuda-lib,fastfields-cpu-impl,fastfields-cuda-impleach shipsubmodule-bump.yamlandsubmodule-staleness.yaml;fastfields-kernelsdoes not). They stop being consumers only once those repos are archived, so this step is gated on (2). Removing them now would break real CI.Note on the
teenybranchMerging
mainintoteenycurrently produces exactly one conflict, inCLAUDE.md— both branches edited it.make/common.mk(the.DEFAULT_GOALfix) auto-merges cleanly. Nothing structural.And per
MIGRATION-PROVENANCE.md§4:claude-fastfields-to-teenyPRs targetteeny, notmain.