What the AI reads¶
Each task reads what it needs and no more, from the files that the context step writes into .issue-assistant/.
- Every task reads the issue with all its comments, in
issue.md; the first answer to a discussion readsdiscussion.mdinstead, the discussion with its first 50 comments and their first 20 replies each, and the issues and discussions as a first analysis does. - A first analysis and a follow-up read a window of the repository: every open issue, but for the issue of the digest and those whose reporter keeps the AI out, and the 1,000 closed ones that changed last, each with an excerpt of 400 characters in
issues.jsonland its whole text inissues/<number>.md, the 1,000 discussions that changed last and the labels. GitHub's GraphQL API lists a hundred issues a page and no pull request, so a repository with 50,000 issues and pull requests costs a few calls instead of five hundred, and the context keeps its size.[context]inconfig.tomlsets both numbers. An excerpt keeps the words of the reporter: the text above the first field of an issue form, each answer of the form as a line with the label of its field, also when a label comes twice, and a###line in fenced code, such as a pasted changelog, as part of the text, so that the AI finds an error message above a form when it looks for duplicates. - A first analysis also searches. Up to 30 older issues that GitHub's search finds for the names of errors in the new issue, such as
TypeErrororECONNREFUSED, and the words of its title join the window, so that an old duplicate is found beyond it. A search that fails leaves the window, with a warning. With related repositories, the same search in each of them fillsrelated-issues.jsonlandrelated/. - A first analysis learns from the maintainers' corrections.
corrections.mdlists what the maintainers corrected of the analyses of the 30 issues analyzed last: a label of the AI that a maintainer removed within 14 days, one that a maintainer added within 7 days of the analysis, a duplicate notice that someone objected to and that didn't close, and an analysis that someone who may push gave a 👎. The prompt asks the AI not to repeat such a choice on an issue like it. GitHub is the record, so correcting the issue is all it takes, and the AI learns of nothing else: one line per issue with its number, its title as a JSON string and the labels oflabels.md, in a fence that no title can close. The issues come from the 500 newest comments of the repository and from the window above, so the AI can read each of them; their events are read once each, and the reactions only of an analysis with a 👎.[context] max_analyzedsets the number,0turns it off, and GitHub failing it is a warning. - A reply judges the comment of its event.
maintainer-reply,release-replyandmaintainer-questionread the issue andcomment.md, the comment whose event started the run, and nothing of the rest of the repository. A run can wait behind others for minutes, and a "still broken for me too" of someone else that comes in meanwhile never reopens an issue whose reporter just confirmed the fix. Theapplyjob reads that comment again and acts only when it is the reporter's, after a release, or a maintainer's, and for an answer a maintainer's/assistant ask. A run by hand judges the newest such comment. - Attached files and images are not read. A log, a diagnostics download or a screenshot that a reporter drags into an issue or a comment reaches the AI only as its link in the text: the
contextstep downloads nothing, and the AI can open no web page. The rules of the prompt tell it that such a link means that the reporter attached something, so that it doesn't ask for the file again, though it can't tell what is in it. Lines of a log that a reporter pastes into the text, best in a code block, are read, up to the 20,000 characters of each text.