~bigbes/sourcehut-root

983bb99b7ddcfdd8f8e5aceec1ec8439eed45deb — Eugene Blikh 8 days ago 76024fa
fix: build-index.sh — accept .git gitlinks, not just directories

After `git submodule absorbgitdirs`, each subproject's worktree contains
a .git *file* pointing into .git/modules/<name>/, not a .git directory.
The old `find -type d` test silently skipped every submodule, leaving
INDEX.md empty of repo content. Widen the type filter to both files and
directories so submodule-backed clones are detected too.
2 files changed, 628 insertions(+), 3 deletions(-)

M .claude/INDEX.md
M .claude/scripts/build-index.sh
M .claude/INDEX.md => .claude/INDEX.md +624 -1
@@ 4,12 4,635 @@ Auto-generated by `.claude/scripts/build-index.sh`. Regenerated at the end of ev

Read this **before** grepping. Each section gives you the canonical place to look for symbols in that repo.

_Generated: 2026-05-19 10:09:28 UTC_
_Generated: 2026-05-19 10:12:35 UTC_

## Repos

- `api.sr.ht` — master
- `builds.sr.ht` — 0.103.12
- `core-go` — master
- `core.sr.ht` — 0.83.3
- `forgeperf` — master
- `gensokyo` — master
- `git-am.io` — master
- `git-rebase.io` — master
- `git-send-email.io` — 0.1.17
- `git.sr.ht` — 0.97.6
- `go-away-config` — main
- `gql.sr.ht` — master
- `hub.sr.ht` — 0.27.6
- `hut` — v0.8.0
- `lists.sr.ht` — 0.70.6
- `man.sr.ht` — 0.19.27
- `meta.sr.ht` — 0.88.4
- `pages.sr.ht` — 0.17.12
- `paste.sr.ht` — 0.19.1
- `sourcehut-go` — master
- `sourcehut-migrate` — v0.3.1
- `sourcehut-ssh` — 0.5.0
- `sourcehut.org` — master
- `sr.ht-apkbuilds` — master
- `sr.ht-docs` — master
- `sr.ht-nginx` — master
- `sr.ht-pkgbuilds` — master
- `srht.site` — master
- `status.sr.ht` — main
- `todo.sr.ht` — 0.84.4

## api.sr.ht

_Tag:_ `(branch: master)`

**Go files (root)**: auth.go, main.go

---

## builds.sr.ht

_Tag:_ `0.103.12`

**GraphQL types** (`buildsrht/schema.graphqls`)

- `type`: Artifact, EmailTrigger, Job, JobCursor, JobEvent, JobGroup, Log, Mutation, OAuthClient, PGPKey, Query, SSHKey, SecretCursor, SecretFile, Settings, Task, User, UserWebhookSubscription, Version, WebhookDelivery, WebhookDeliveryCursor, WebhookSubscriptionCursor, WebhookTrigger
- `input`: EmailTriggerInput, TriggerInput, UserWebhookInput, WebhookTriggerInput
- `enum`: AccessKind, AccessScope, JobStatus, TaskStatus, TriggerCondition, TriggerType, Visibility, WebhookEvent
- `interface`: Entity, Secret, Trigger, WebhookPayload, WebhookSubscription
- `scalar`: Binary, Cursor, File, Time

**SQL tables** (`schema.sql`)

artifact, gql_user_wh_delivery, gql_user_wh_sub, job, job_group, secret, task, trigger, user

_Migrations: 2 files, latest `migrations/0002_drop_legacy_tables.sql`_

**Python blueprints** (`buildsrht/blueprints/`): admin, jobs, secrets, settings

**Python GraphQL queries** (`buildsrht/graphql/`): builds, secrets

**Go binaries** (`cmd/`): api, worker

**Go packages**: `api, worker`

---

## core-go

_Tag:_ `(branch: master)`

**Go binaries** (`cmd/`): token

**Go files (root)**: placeholder.go

**Go packages**: `auth, client, config, crypto, database, email, errors, feature, model, objects, redis, server, valid, webhooks`

---

## core.sr.ht

_Tag:_ `0.83.3`

**Python modules** (`srht/`): api, assets, cache, config, crypto, database, debug, email, flagtype, gql_lexer, markdown, metrics, redis, rid, search, validation

**Python subpackages** (`srht/`): app, ariadne, graphql, icons, oauth, templates, webhook

---

## forgeperf

_Tag:_ `(branch: master)`

**Go files (root)**: main.go

**Go packages**: `schema`

---

## gensokyo

_Tag:_ `(branch: master)`

---

## git-am.io

_Tag:_ `(branch: master)`

---

## git-rebase.io

_Tag:_ `(branch: master)`

---

## git-send-email.io

_Tag:_ `0.1.17`

---

## git.sr.ht

_Tag:_ `0.97.6`

**GraphQL types** (`gitsrht/schema.graphqls`)

- `type`: ACL, ACLCursor, Artifact, ArtifactCursor, BinaryBlob, Commit, CommitCursor, Features, GitEvent, GitWebhookSubscription, Mutation, OAuthClient, Query, Redirect, Reference, ReferenceCursor, Repository, RepositoryCursor, RepositoryEvent, Settings, Signature, Tag, TextBlob, Trailer, Tree, TreeEntry, TreeEntryCursor, UpdatedRef, User, UserWebhookSubscription, Version, WebhookDelivery, WebhookDeliveryCursor, WebhookSubscriptionCursor
- `input`: Filter, GitEventInput, GitWebhookInput, RepoInput, UpdatedRefInput, UserWebhookInput
- `enum`: AccessKind, AccessMode, AccessScope, ObjectType, Visibility, WebhookEvent
- `interface`: Blob, Entity, Object, WebhookPayload, WebhookSubscription
- `scalar`: Cursor, Time, URL, Upload

**SQL tables** (`schema.sql`)

access, artifacts, gql_git_wh_delivery, gql_git_wh_sub, gql_user_wh_delivery, gql_user_wh_sub, redirect, repository, user

_Migrations: 6 files, latest `migrations/0006_add_resource_ids.sql`_

**Python blueprints** (`gitsrht/blueprints/`): artifacts, email, manage, public, repo

**Python GraphQL queries** (`gitsrht/graphql/`): artifacts, manage, settings

**Go binaries** (`cmd/`): api, http-clone, shell, update-hook

**Go packages**: `update-hook`

---

## go-away-config

_Tag:_ `(branch: main)`

---

## gql.sr.ht

_Tag:_ `(branch: master)`

**Go files (root)**: directives.go, email.go, server.go

**Go packages**: `auth, client, config, crypto, database, model, redis`

---

## hub.sr.ht

_Tag:_ `0.27.6`

**GraphQL types** (`hubsrht/schema.graphqls`)

- `type`: Features, MailingList, MailingListCursor, Mutation, Project, ProjectCursor, Query, SourceRepo, SourceRepoCursor, Tracker, TrackerCursor, User, Version
- `enum`: AccessKind, AccessScope, RepoType, Visibility
- `interface`: Entity, ProjectResource
- `scalar`: Cursor, Time, Upload

**SQL tables** (`schema.sql`)

event, event_project_association, features, mailing_list, project, redirect, source_repo, tracker, user, user_webhooks

_Migrations: 8 files, latest `migrations/0008_repo-type_enum.sql`_

**Python blueprints** (`hubsrht/blueprints/`): mailing_lists, projects, public, sources, trackers, users, webhooks

**Go packages**: `api`

---

## hut

_Tag:_ `v0.8.0`

**GraphQL types** (`srht/metasrht/schema.graphqls`)

- `type`: ACL, ACLCursor, ActivitySubscriptionCursor, Artifact, ArtifactCursor, Assignment, AuditLogCursor, AuditLogEntry, BillingAddress, BillingSubscription, BinaryBlob, ByteRange, Comment, Commit, CommitCursor, Created, DefaultACL, Email, EmailAddress, EmailCursor, EmailEvent, EmailTrigger, Event, EventCreated, EventCursor, ExternalUser, Features, File, FileCursor, GeneralACL, GitEvent, GitWebhookSubscription, Invoice, InvoiceCursor, Job, JobCursor, JobEvent, JobGroup, Label, LabelCursor, LabelEvent, LabelUpdate, Log, LoginSecurity, Mailbox, MailingList, MailingListACL, MailingListACLCursor, MailingListCursor, MailingListEvent, MailingListSubscription, MailingListWebhookSubscription, Mutation, NamedRevision, NamedRevisionCursor, OAuthClient, OAuthClientRegistration, OAuthGrant, OAuthGrantRegistration, OAuthPersonalToken, OAuthPersonalTokenRegistration, PGPKey, PGPKeyCursor, PGPKeyEvent, Paste, PasteCursor, PasteEvent, Patch, Patchset, PatchsetCursor, PatchsetEvent, PatchsetTool, PaymentMethod, PaymentOutcome, Preferences, Product, ProductPrice, ProfileUpdateEvent, ProfileWebhookSubscription, Project, ProjectCursor, Query, Redirect, Reference, ReferenceCursor, Repository, RepositoryCursor, RepositoryEvent, Revision, RevisionCursor, SSHKey, SSHKeyCursor, SSHKeyEvent, SecretCursor, SecretFile, Settings, Signature, Site, SiteACL, SiteACLCursor, SiteCursor, SiteEvent, SourceRepo, SourceRepoCursor, StatusChange, StripePaymentIntent, StripeSetupIntent, TOTPConfig, Tag, Task, TextBlob, Thread, ThreadBlock, ThreadCursor, Ticket, TicketCursor, TicketDeletedEvent, TicketEvent, TicketMention, TicketSubscription, TicketWebhookSubscription, Tracker, TrackerACL, TrackerCursor, TrackerEvent, TrackerSubscription, TrackerWebhookSubscription, Trailer, Tree, TreeEntry, TreeEntryCursor, UpdatedRef, User, UserMention, UserWebhookSubscription, Version, WebhookDelivery, WebhookDeliveryCursor, WebhookSubscriptionCursor, WebhookTrigger
- `input`: ACLInput, BillingAddressInput, EmailTriggerInput, FileConfig, FileOptions, Filter, GitEventInput, GitWebhookInput, ImportInput, MailingListInput, MailingListWebhookInput, PreferencesInput, ProductPriceInput, ProfileWebhookInput, RepoInput, SiteConfig, SubmitCommentEmailInput, SubmitCommentInput, SubmitTicketEmailInput, SubmitTicketInput, TicketWebhookInput, TrackerInput, TrackerWebhookInput, TriggerInput, UpdateBillingSubscriptionInput, UpdateLabelInput, UpdateStatusInput, UpdateTicketInput, UpdatedRefInput, UserInput, UserWebhookInput, WebhookTriggerInput
- `enum`: AccessKind, AccessMode, AccessScope, Authenticity, Currency, EmailCmd, EventType, JobStatus, ObjectType, PatchsetStatus, PaymentIntentStatus, PaymentInterval, PaymentStatus, Protocol, RepoType, SetupIntentStatus, SubscriptionStatus, TaskStatus, TicketResolution, TicketStatus, ToolIcon, TriggerCondition, TriggerType, UserType, Visibility, WebhookEvent
- `interface`: ACL, ActivitySubscription, Blob, Entity, EventDetail, Object, PaymentIntent, ProjectResource, Secret, SetupIntent, Trigger, WebhookPayload, WebhookSubscription
- `scalar`: Binary, ConfirmationToken, Country, Cursor, File, Time, URL, Upload

**Go files (root)**: builds.go, client.go, config.go, export.go, git.go, graphql.go, hg.go, hub.go, import.go, lists.go, main.go, meta.go, pager.go, pages.go, parsing_test.go, paste.go, project.go, todo.go

**Go packages**: `export, srht, termfmt`

---

## lists.sr.ht

_Tag:_ `0.70.6`

**GraphQL types** (`api/graph/schema.graphqls`)

- `type`: ActivitySubscriptionCursor, ByteRange, Email, EmailCursor, EmailEvent, GeneralACL, Mailbox, MailingList, MailingListACL, MailingListACLCursor, MailingListCursor, MailingListEvent, MailingListSubscription, MailingListWebhookSubscription, Mutation, OAuthClient, Patch, Patchset, PatchsetCursor, PatchsetEvent, PatchsetTool, Preferences, Query, Thread, ThreadBlock, ThreadCursor, Trailer, User, UserWebhookSubscription, Version, WebhookDelivery, WebhookDeliveryCursor, WebhookSubscriptionCursor
- `input`: ACLInput, MailingListInput, MailingListWebhookInput, PreferencesInput, UserWebhookInput
- `enum`: AccessKind, AccessScope, PatchsetStatus, ToolIcon, Visibility, WebhookEvent
- `interface`: ACL, ActivitySubscription, Entity, WebhookPayload, WebhookSubscription
- `scalar`: ConfirmationToken, Cursor, Time, URL, Upload

**SQL tables** (`schema.sql`)

access, email, gql_list_wh_delivery, gql_list_wh_sub, gql_user_wh_delivery, gql_user_wh_sub, list, mirror, patchset, patchset_tool, subscription, subscription_request, user

_Migrations: 10 files, latest `migrations/0010_add_supersedes_id.sql`_

**Python blueprints** (`listssrht/blueprints/`): archives, patches, settings, user

**Python GraphQL queries** (`listssrht/graphql/`): queries

**Go packages**: `api, ingress`

---

## man.sr.ht

_Tag:_ `0.19.27`

**GraphQL types** (`api/graph/schema.graphqls`)

- `type`: Mutation, Query, Version
- `scalar`: Cursor, Time, Upload

**SQL tables** (`schema.sql`)

backing_repo, root_wiki, user, wiki

_Migrations: 3 files, latest `migrations/0003_remove_backing_repo.sql`_

**Python blueprints** (`mansrht/blueprints/`): create, html, manage, public

**Go binaries** (`cmd/`): api

---

## meta.sr.ht

_Tag:_ `0.88.4`

**GraphQL types** (`metasrht/schema.graphqls`)

- `type`: AuditLogCursor, AuditLogEntry, BillingAddress, BillingSubscription, Features, Invoice, InvoiceCursor, LoginSecurity, Mutation, OAuthClient, OAuthClientRegistration, OAuthGrant, OAuthGrantRegistration, OAuthPersonalToken, OAuthPersonalTokenRegistration, PGPKey, PGPKeyCursor, PGPKeyEvent, PaymentMethod, PaymentOutcome, Product, ProductPrice, ProfileUpdateEvent, ProfileWebhookSubscription, Query, SSHKey, SSHKeyCursor, SSHKeyEvent, StripePaymentIntent, StripeSetupIntent, TOTPConfig, User, Version, WebhookDelivery, WebhookDeliveryCursor, WebhookSubscriptionCursor
- `input`: BillingAddressInput, ProductPriceInput, ProfileWebhookInput, UpdateBillingSubscriptionInput, UserInput
- `enum`: AccessKind, AccessScope, Currency, PaymentIntentStatus, PaymentInterval, PaymentStatus, SetupIntentStatus, SubscriptionStatus, UserType, WebhookEvent
- `interface`: Entity, PaymentIntent, SetupIntent, WebhookPayload, WebhookSubscription
- `scalar`: Country, Cursor, Time, URL, Upload

**SQL tables** (`schema.sql`)

audit_log_entry, billing_address, gql_profile_wh_delivery, gql_profile_wh_sub, invoice, oauth2_client, oauth2_grant, oauthclient, oauthtoken, payment_method, pgpkey, product, product_price, reserved_usernames, sshkey, subscription, user, user_auth_factor, user_email_change, user_notes, user_password_change, user_payment_processor, user_registration, user_webhook_delivery, user_webhook_subscription, webhook_subscription

_Migrations: 12 files, latest `migrations/0012_make_fingerprint_nullable.sql`_

**Python blueprints** (`metasrht/blueprints/`): auth, billing, keys, oauth2, privacy, profile, security, users

**Python GraphQL queries** (`metasrht/graphql/`): admin, auth, billing, email, keys, oauth2, profile, security

**Go binaries** (`cmd/`): api

---

## pages.sr.ht

_Tag:_ `0.17.12`

**GraphQL types** (`graph/schema.graphqls`)

- `type`: Mutation, OAuthClient, Query, Site, SiteACL, SiteACLCursor, SiteCursor, SiteEvent, User, UserWebhookSubscription, Version, WebhookDelivery, WebhookDeliveryCursor, WebhookSubscriptionCursor
- `input`: ACLInput, FileConfig, FileOptions, SiteConfig, UserWebhookInput
- `enum`: AccessKind, AccessScope, Protocol, WebhookEvent
- `interface`: ACL, Entity, WebhookPayload, WebhookSubscription
- `scalar`: Cursor, Time, Upload

**SQL tables** (`schema.sql`)

gql_user_wh_delivery, gql_user_wh_sub, site_access, sites, user

_Migrations: 1 files, latest `migrations/0001_switch_to_brant.sql`_

**Go binaries** (`cmd/`): daily, pages.sr.ht

**Go packages**: `account, graph, webhooks`

---

## paste.sr.ht

_Tag:_ `0.19.1`

**GraphQL types** (`pastesrht/schema.graphqls`)

- `type`: File, Mutation, OAuthClient, Paste, PasteCursor, PasteEvent, Query, User, UserWebhookSubscription, Version, WebhookDelivery, WebhookDeliveryCursor, WebhookSubscriptionCursor
- `input`: UserWebhookInput
- `enum`: AccessKind, AccessScope, Visibility, WebhookEvent
- `interface`: Entity, WebhookPayload, WebhookSubscription
- `scalar`: Cursor, Time, URL, Upload

**SQL tables** (`schema.sql`)

blob, gql_user_wh_delivery, gql_user_wh_sub, paste, paste_file, user

_Migrations: 3 files, latest `migrations/0003_drop_legacy_tables.sql`_

**Python blueprints** (`pastesrht/blueprints/`): public

**Python GraphQL queries** (`pastesrht/graphql/`): mutations

**Go binaries** (`cmd/`): api

---

## sourcehut-go

_Tag:_ `(branch: master)`

**Go binaries** (`cmd/`): git.sr.ht, meta.sr.ht

**Go files (root)**: client.go, config.go, doc.go, entry.go, resources.go

**Go packages**: `git.sr.ht, meta.sr.ht`

---

## sourcehut-migrate

_Tag:_ `v0.3.1`

**Go binaries** (`cmd/`): sourcehut-migrate

---

## sourcehut-ssh

_Tag:_ `0.5.0`

**Go binaries** (`cmd/`): sourcehut-ssh

**Go packages**: `dispatch, handler, meta, shell, ssh`

---

## sourcehut.org

_Tag:_ `(branch: master)`

---

## sr.ht-apkbuilds

_Tag:_ `(branch: master)`

---

## sr.ht-docs

_Tag:_ `(branch: master)`

---

## sr.ht-nginx

_Tag:_ `(branch: master)`

---

## sr.ht-pkgbuilds

_Tag:_ `(branch: master)`

---

## srht.site

_Tag:_ `(branch: master)`

---

## status.sr.ht

_Tag:_ `(branch: main)`

---

## todo.sr.ht

_Tag:_ `0.84.4`

**GraphQL types** (`todosrht/schema.graphqls`)

- `type`: ACLCursor, ActivitySubscriptionCursor, Assignment, Comment, Created, DefaultACL, EmailAddress, Event, EventCreated, EventCursor, ExternalUser, Label, LabelCursor, LabelEvent, LabelUpdate, Mutation, OAuthClient, Preferences, Query, StatusChange, Ticket, TicketCursor, TicketDeletedEvent, TicketEvent, TicketMention, TicketSubscription, TicketWebhookSubscription, Tracker, TrackerACL, TrackerCursor, TrackerEvent, TrackerSubscription, TrackerWebhookSubscription, User, UserMention, UserWebhookSubscription, Version, WebhookDelivery, WebhookDeliveryCursor, WebhookSubscriptionCursor
- `input`: ACLInput, ImportInput, PreferencesInput, SubmitCommentEmailInput, SubmitCommentInput, SubmitTicketEmailInput, SubmitTicketInput, TicketWebhookInput, TrackerInput, TrackerWebhookInput, UpdateLabelInput, UpdateStatusInput, UpdateTicketInput, UserWebhookInput
- `enum`: AccessKind, AccessScope, Authenticity, EmailCmd, EventType, TicketResolution, TicketStatus, Visibility, WebhookEvent
- `interface`: ACL, ActivitySubscription, Entity, EventDetail, WebhookPayload, WebhookSubscription
- `scalar`: Cursor, Time, URL, Upload

**SQL tables** (`schema.sql`)

event, event_notification, gql_ticket_wh_delivery, gql_ticket_wh_sub, gql_tracker_wh_delivery, gql_tracker_wh_sub, gql_user_wh_delivery, gql_user_wh_sub, label, participant, redirect, ticket, ticket_assignee, ticket_comment, ticket_label, ticket_subscription, tracker, user, user_access

_Migrations: 5 files, latest `migrations/0005_add_resource_ids.sql`_

**Python blueprints** (`todosrht/blueprints/`): html, settings, ticket, tracker

**Python GraphQL queries** (`todosrht/graphql/`): lmtp, settings, tickets, trackers

**Go binaries** (`cmd/`): api

**Go packages**: `api`

---

## Cross-repo GraphQL type map

When the same type name appears in multiple repos, it is a *different* type in each — they are not federated as one. Use this map to pick the right service before reading.

- `ACL` → git.sr.ht, hut
- `ACLCursor` → git.sr.ht, hut, todo.sr.ht
- `ACLInput` → hut, lists.sr.ht, pages.sr.ht, todo.sr.ht
- `AccessKind` → builds.sr.ht, git.sr.ht, hub.sr.ht, hut, lists.sr.ht, meta.sr.ht, pages.sr.ht, paste.sr.ht, todo.sr.ht
- `AccessMode` → git.sr.ht, hut
- `AccessScope` → builds.sr.ht, git.sr.ht, hub.sr.ht, hut, lists.sr.ht, meta.sr.ht, pages.sr.ht, paste.sr.ht, todo.sr.ht
- `ActivitySubscriptionCursor` → hut, lists.sr.ht, todo.sr.ht
- `Artifact` → builds.sr.ht, git.sr.ht, hut
- `ArtifactCursor` → git.sr.ht, hut
- `Assignment` → hut, todo.sr.ht
- `AuditLogCursor` → hut, meta.sr.ht
- `AuditLogEntry` → hut, meta.sr.ht
- `Authenticity` → hut, todo.sr.ht
- `BillingAddress` → hut, meta.sr.ht
- `BillingAddressInput` → hut, meta.sr.ht
- `BillingSubscription` → hut, meta.sr.ht
- `BinaryBlob` → git.sr.ht, hut
- `ByteRange` → hut, lists.sr.ht
- `Comment` → hut, todo.sr.ht
- `Commit` → git.sr.ht, hut
- `CommitCursor` → git.sr.ht, hut
- `Created` → hut, todo.sr.ht
- `Currency` → hut, meta.sr.ht
- `DefaultACL` → hut, todo.sr.ht
- `Email` → hut, lists.sr.ht
- `EmailAddress` → hut, todo.sr.ht
- `EmailCmd` → hut, todo.sr.ht
- `EmailCursor` → hut, lists.sr.ht
- `EmailEvent` → hut, lists.sr.ht
- `EmailTrigger` → builds.sr.ht, hut
- `EmailTriggerInput` → builds.sr.ht, hut
- `Event` → hut, todo.sr.ht
- `EventCreated` → hut, todo.sr.ht
- `EventCursor` → hut, todo.sr.ht
- `EventType` → hut, todo.sr.ht
- `ExternalUser` → hut, todo.sr.ht
- `Features` → git.sr.ht, hub.sr.ht, hut, meta.sr.ht
- `File` → hut, paste.sr.ht
- `FileConfig` → hut, pages.sr.ht
- `FileOptions` → hut, pages.sr.ht
- `Filter` → git.sr.ht, hut
- `GeneralACL` → hut, lists.sr.ht
- `GitEvent` → git.sr.ht, hut
- `GitEventInput` → git.sr.ht, hut
- `GitWebhookInput` → git.sr.ht, hut
- `GitWebhookSubscription` → git.sr.ht, hut
- `ImportInput` → hut, todo.sr.ht
- `Invoice` → hut, meta.sr.ht
- `InvoiceCursor` → hut, meta.sr.ht
- `Job` → builds.sr.ht, hut
- `JobCursor` → builds.sr.ht, hut
- `JobEvent` → builds.sr.ht, hut
- `JobGroup` → builds.sr.ht, hut
- `JobStatus` → builds.sr.ht, hut
- `Label` → hut, todo.sr.ht
- `LabelCursor` → hut, todo.sr.ht
- `LabelEvent` → hut, todo.sr.ht
- `LabelUpdate` → hut, todo.sr.ht
- `Log` → builds.sr.ht, hut
- `LoginSecurity` → hut, meta.sr.ht
- `Mailbox` → hut, lists.sr.ht
- `MailingList` → hub.sr.ht, hut, lists.sr.ht
- `MailingListACL` → hut, lists.sr.ht
- `MailingListACLCursor` → hut, lists.sr.ht
- `MailingListCursor` → hub.sr.ht, hut, lists.sr.ht
- `MailingListEvent` → hut, lists.sr.ht
- `MailingListInput` → hut, lists.sr.ht
- `MailingListSubscription` → hut, lists.sr.ht
- `MailingListWebhookInput` → hut, lists.sr.ht
- `MailingListWebhookSubscription` → hut, lists.sr.ht
- `Mutation` → builds.sr.ht, git.sr.ht, hub.sr.ht, hut, lists.sr.ht, man.sr.ht, meta.sr.ht, pages.sr.ht, paste.sr.ht, todo.sr.ht
- `OAuthClient` → builds.sr.ht, git.sr.ht, hut, lists.sr.ht, meta.sr.ht, pages.sr.ht, paste.sr.ht, todo.sr.ht
- `OAuthClientRegistration` → hut, meta.sr.ht
- `OAuthGrant` → hut, meta.sr.ht
- `OAuthGrantRegistration` → hut, meta.sr.ht
- `OAuthPersonalToken` → hut, meta.sr.ht
- `OAuthPersonalTokenRegistration` → hut, meta.sr.ht
- `ObjectType` → git.sr.ht, hut
- `PGPKey` → builds.sr.ht, hut, meta.sr.ht
- `PGPKeyCursor` → hut, meta.sr.ht
- `PGPKeyEvent` → hut, meta.sr.ht
- `Paste` → hut, paste.sr.ht
- `PasteCursor` → hut, paste.sr.ht
- `PasteEvent` → hut, paste.sr.ht
- `Patch` → hut, lists.sr.ht
- `Patchset` → hut, lists.sr.ht
- `PatchsetCursor` → hut, lists.sr.ht
- `PatchsetEvent` → hut, lists.sr.ht
- `PatchsetStatus` → hut, lists.sr.ht
- `PatchsetTool` → hut, lists.sr.ht
- `PaymentIntentStatus` → hut, meta.sr.ht
- `PaymentInterval` → hut, meta.sr.ht
- `PaymentMethod` → hut, meta.sr.ht
- `PaymentOutcome` → hut, meta.sr.ht
- `PaymentStatus` → hut, meta.sr.ht
- `Preferences` → hut, lists.sr.ht, todo.sr.ht
- `PreferencesInput` → hut, lists.sr.ht, todo.sr.ht
- `Product` → hut, meta.sr.ht
- `ProductPrice` → hut, meta.sr.ht
- `ProductPriceInput` → hut, meta.sr.ht
- `ProfileUpdateEvent` → hut, meta.sr.ht
- `ProfileWebhookInput` → hut, meta.sr.ht
- `ProfileWebhookSubscription` → hut, meta.sr.ht
- `Project` → hub.sr.ht, hut
- `ProjectCursor` → hub.sr.ht, hut
- `Protocol` → hut, pages.sr.ht
- `Query` → builds.sr.ht, git.sr.ht, hub.sr.ht, hut, lists.sr.ht, man.sr.ht, meta.sr.ht, pages.sr.ht, paste.sr.ht, todo.sr.ht
- `Redirect` → git.sr.ht, hut
- `Reference` → git.sr.ht, hut
- `ReferenceCursor` → git.sr.ht, hut
- `RepoInput` → git.sr.ht, hut
- `RepoType` → hub.sr.ht, hut
- `Repository` → git.sr.ht, hut
- `RepositoryCursor` → git.sr.ht, hut
- `RepositoryEvent` → git.sr.ht, hut
- `SSHKey` → builds.sr.ht, hut, meta.sr.ht
- `SSHKeyCursor` → hut, meta.sr.ht
- `SSHKeyEvent` → hut, meta.sr.ht
- `SecretCursor` → builds.sr.ht, hut
- `SecretFile` → builds.sr.ht, hut
- `Settings` → builds.sr.ht, git.sr.ht, hut
- `SetupIntentStatus` → hut, meta.sr.ht
- `Signature` → git.sr.ht, hut
- `Site` → hut, pages.sr.ht
- `SiteACL` → hut, pages.sr.ht
- `SiteACLCursor` → hut, pages.sr.ht
- `SiteConfig` → hut, pages.sr.ht
- `SiteCursor` → hut, pages.sr.ht
- `SiteEvent` → hut, pages.sr.ht
- `SourceRepo` → hub.sr.ht, hut
- `SourceRepoCursor` → hub.sr.ht, hut
- `StatusChange` → hut, todo.sr.ht
- `StripePaymentIntent` → hut, meta.sr.ht
- `StripeSetupIntent` → hut, meta.sr.ht
- `SubmitCommentEmailInput` → hut, todo.sr.ht
- `SubmitCommentInput` → hut, todo.sr.ht
- `SubmitTicketEmailInput` → hut, todo.sr.ht
- `SubmitTicketInput` → hut, todo.sr.ht
- `SubscriptionStatus` → hut, meta.sr.ht
- `TOTPConfig` → hut, meta.sr.ht
- `Tag` → git.sr.ht, hut
- `Task` → builds.sr.ht, hut
- `TaskStatus` → builds.sr.ht, hut
- `TextBlob` → git.sr.ht, hut
- `Thread` → hut, lists.sr.ht
- `ThreadBlock` → hut, lists.sr.ht
- `ThreadCursor` → hut, lists.sr.ht
- `Ticket` → hut, todo.sr.ht
- `TicketCursor` → hut, todo.sr.ht
- `TicketDeletedEvent` → hut, todo.sr.ht
- `TicketEvent` → hut, todo.sr.ht
- `TicketMention` → hut, todo.sr.ht
- `TicketResolution` → hut, todo.sr.ht
- `TicketStatus` → hut, todo.sr.ht
- `TicketSubscription` → hut, todo.sr.ht
- `TicketWebhookInput` → hut, todo.sr.ht
- `TicketWebhookSubscription` → hut, todo.sr.ht
- `ToolIcon` → hut, lists.sr.ht
- `Tracker` → hub.sr.ht, hut, todo.sr.ht
- `TrackerACL` → hut, todo.sr.ht
- `TrackerCursor` → hub.sr.ht, hut, todo.sr.ht
- `TrackerEvent` → hut, todo.sr.ht
- `TrackerInput` → hut, todo.sr.ht
- `TrackerSubscription` → hut, todo.sr.ht
- `TrackerWebhookInput` → hut, todo.sr.ht
- `TrackerWebhookSubscription` → hut, todo.sr.ht
- `Trailer` → git.sr.ht, hut, lists.sr.ht
- `Tree` → git.sr.ht, hut
- `TreeEntry` → git.sr.ht, hut
- `TreeEntryCursor` → git.sr.ht, hut
- `TriggerCondition` → builds.sr.ht, hut
- `TriggerInput` → builds.sr.ht, hut
- `TriggerType` → builds.sr.ht, hut
- `UpdateBillingSubscriptionInput` → hut, meta.sr.ht
- `UpdateLabelInput` → hut, todo.sr.ht
- `UpdateStatusInput` → hut, todo.sr.ht
- `UpdateTicketInput` → hut, todo.sr.ht
- `UpdatedRef` → git.sr.ht, hut
- `UpdatedRefInput` → git.sr.ht, hut
- `User` → builds.sr.ht, git.sr.ht, hub.sr.ht, hut, lists.sr.ht, meta.sr.ht, pages.sr.ht, paste.sr.ht, todo.sr.ht
- `UserInput` → hut, meta.sr.ht
- `UserMention` → hut, todo.sr.ht
- `UserType` → hut, meta.sr.ht
- `UserWebhookInput` → builds.sr.ht, git.sr.ht, hut, lists.sr.ht, pages.sr.ht, paste.sr.ht, todo.sr.ht
- `UserWebhookSubscription` → builds.sr.ht, git.sr.ht, hut, lists.sr.ht, pages.sr.ht, paste.sr.ht, todo.sr.ht
- `Version` → builds.sr.ht, git.sr.ht, hub.sr.ht, hut, lists.sr.ht, man.sr.ht, meta.sr.ht, pages.sr.ht, paste.sr.ht, todo.sr.ht
- `Visibility` → builds.sr.ht, git.sr.ht, hub.sr.ht, hut, lists.sr.ht, paste.sr.ht, todo.sr.ht
- `WebhookDelivery` → builds.sr.ht, git.sr.ht, hut, lists.sr.ht, meta.sr.ht, pages.sr.ht, paste.sr.ht, todo.sr.ht
- `WebhookDeliveryCursor` → builds.sr.ht, git.sr.ht, hut, lists.sr.ht, meta.sr.ht, pages.sr.ht, paste.sr.ht, todo.sr.ht
- `WebhookEvent` → builds.sr.ht, git.sr.ht, hut, lists.sr.ht, meta.sr.ht, pages.sr.ht, paste.sr.ht, todo.sr.ht
- `WebhookSubscriptionCursor` → builds.sr.ht, git.sr.ht, hut, lists.sr.ht, meta.sr.ht, pages.sr.ht, paste.sr.ht, todo.sr.ht
- `WebhookTrigger` → builds.sr.ht, hut
- `WebhookTriggerInput` → builds.sr.ht, hut

M .claude/scripts/build-index.sh => .claude/scripts/build-index.sh +4 -2
@@ 13,9 13,11 @@ OUT="$ROOT/.claude/INDEX.md"
# Comma-join stdin lines, sorted unique.
join_csv() { sort -u | paste -sd',' - | sed 's/,/, /g'; }

# Identify each direct child that is a git repo.
# Identify each direct child that is a git repo. Accept both regular .git
# directories (standalone clones) and .git files (submodule gitlinks, which
# is what this workspace uses after `git submodule absorbgitdirs`).
mapfile -t REPOS < <(
  find . -mindepth 2 -maxdepth 2 -name .git -type d 2>/dev/null \
  find . -mindepth 2 -maxdepth 2 -name .git \( -type d -o -type f \) 2>/dev/null \
    | sed -E 's:^\./([^/]+)/\.git$:\1:' \
    | sort
)