Package-level declarations
Types
Where the frozen corpus is hosted and the hashes a download must match.
Builds the triage corpus. Each repo is paged newest first into <work>/<owner>__<name>.jsonl (already redacted, one canonical JSON issue per line) with a .state file beside it, so a stopped run resumes at the last whole page. assemble sorts everything into one file whose bytes depend only on those lines.
Redaction and hashing for stored issue text. A login becomes u and twelve hex digits of HMAC-SHA256 keyed with the manifest salt over the lowercase login, so it cannot be looked up in a table of unsalted hashes.
Downloads the frozen corpus; a file that differs from the manifest hash or size is refused.
An issue as stored: no raw login, and the title and body pass through CorpusClean.
Reads the corpus file written by CorpusBuild.assemble, one issue at a time.
One tracker in triage/corpus.yml. formPolicy is the issue template policy of the repo.
Scores the free-text extractor on the corpus. A form body (### Label sections, from a repo whose issue template is a form) states its environment under labelled headings; the facts read from those sections are the truth. The sections that gave a fact are cut out of the body and the extractor runs again on what is left, so the tool-output, key-value and pattern paths are judged against what the reporter typed into the form fields. Facts on keys the form did not label cannot be judged and are not scored. Heading-to-key mapping and value normalization are shared between the truth and the extractor, so the section path itself is not measured here.
GitHub issues through gh api graphql, which lists issues only and never pull requests.
GitLab issues through glab api, paged by number; the cursor is the next page number.
Sends each repo to the source for its host.