Development record
abcd handles inbound security advisories and issues, and cuts the release, for every managed repo. The 2026-08-27 security-advisory pilot proved the loop by hand across two independent operators: advisory and issue intake, recall-dedup triage against the ledger, record-first fixes in isolated worktrees, one integration branch, an independent adversarial gate over the assembled diff, auto-merge armed only after APPROVE, and a derived release cut through the semantic-receipt gates. This intent automates that loop as abcd capability for any managed repo, with findings F-A through F-W of the pilot note as the acceptance-criteria source and F-U (re-run every required pass against the final content commit; never transfer a verdict) and F-Q (the two release gates are human-by-design) load-bearing.
Press Release
Seeded from a quoted-text intent capture. Expand into the full press-release narrative before planning.
Why This Matters
abcd handles inbound security advisories and issues, and cuts the release, for every managed repo. The 2026-08-27 security-advisory pilot proved the loop by hand across two independent operators: advisory and issue intake, recall-dedup triage against the ledger, record-first fixes in isolated worktrees, one integration branch, an independent adversarial gate over the assembled diff, auto-merge armed only after APPROVE, and a derived release cut through the semantic-receipt gates. This intent automates that loop as abcd capability for any managed repo, with findings F-A through F-W of the pilot note as the acceptance-criteria source and F-U (re-run every required pass against the final content commit; never transfer a verdict) and F-Q (the two release gates are human-by-design) load-bearing.
Acceptance Criteria
Required (the itd-1 discipline): add at least one Given-When-Then bullet describing the verifiable bar for "shipped" before this draft can be planned.
SOTA
Surveyed on 2026-10-23; sources, evidence tiers and the local fit risks are in the install-update-release SOTA note. The 2026-08-27 pilot note (F-A to F-W) is the acceptance-criteria source and is reused, not redone; the bullets below are what the forge and the disclosure bodies document that the pilot did by hand.
- Private vulnerability reporting has a full API surface: reporters file
at
POST /repos/{owner}/{repo}/security-advisories/reports; maintainers list bystate=triage, accept into a draft, open a temporary private fork (asynchronous, "up to 5 minutes"), and add collaborators. OpenSSF warns that such forks "do not have access to integration like CI systems", so tests run locally, which is the pilot's worktree discipline (F-C). - The triage guidance looks for an AI-assistance disclosure: it tells the maintainer to review "any disclosure of AI assistance"; no structured field is documented, so the disclosure is whatever the reporter volunteers, a provenance signal the pilot's F-H intake records when it is there, not one it can rely on.
- The forge offers ten credit types, and three of the pilot's four roles
have one: of
analyst,finder,reporter,coordinator,remediation_developer,remediation_reviewer,remediation_verifier,tool,sponsorandother,finderorreportercovers F-I's reporter,remediation_developerthe author of record, andremediation_reviewerorremediation_verifierthe independent gate; the authoriser has no direct type (coordinatororotherare the candidates), so the advisory carries most, not all, of the roles the commit trailers carry. - Timelines have reference points (OpenSSF maintainer guide): acknowledge
within 1–2 days; embargo defaults of under 7 days (distros), 45 days
(CERT/CC) and 90 days (Google), "90 days is the longest"; publish the OSV
entry with the CVE; withholding exploit details helps "for a few days at
most"; a partial fix that breaks the exploitation chain beats none and is
documented as partial.
SECURITY.mdpromises acknowledgement within a week, slower than the guide's 1–2 day target; whether to tighten it is a question for the loop's intake stage. - Only reviewed advisories drive Dependabot; a repository advisory becomes reviewed through the forge's post-publication review.
- Attribution still reads the running model (pilot F-G): no source opened records which model assisted a fix; the transcript stays the only authority.
Path 2 — native loop on the pilot's protocol, shaped to the OpenSSF maintainer flow and the forge's advisory API, with the forge adapter as the seam: intake records an AI-assistance disclosure as provenance where the report volunteers one, credits are filed by the types that match (the authoriser's is open below), the adversarial gate over the assembled diff (F-D) is a host agent, and the two human gates (PROMOTE and publish, F-Q) stay human. itd-2609151658486398 is this loop's last stage and ships first. No new Go dependency. The independent fit-challenge runs at plan time.
Open Questions
- (SOTA 2026-10-23) Does the loop's intake record the report's AI-assistance disclosure on the ledger record, beside the external-contributor provenance F-H asks for?
- (SOTA 2026-10-23) Which forge credit type the authoriser takes
(
coordinator,other, or none), which types the loop stamps itself, and which only on a person's say-so (credit is opt-in on the credited side, so none shows before acceptance)? - (SOTA 2026-10-23) Does
SECURITY.md's promise of an acknowledgement within a week tighten to the OpenSSF guide's 1–2 days once the loop has an intake stage to keep it? - (SOTA 2026-10-23) Does the shell guard judge
gh apiadvisory bodies the way it judgesgh prandgh issuetext, so no unpublished GHSA id leaves the machine in a comment?
Audit Notes
Empty. Populated by intent-auditor when intent moves to shipped/.
Frontmatter
| id | itd-149 |
|---|---|
| type | intent |
| lifecycle | drafts |
| severity | minor |
.abcd/development/intents/drafts/itd-149-abcd-handles-inbound-security-advisories.md
open on GitHub ↗ · commit history ↗
Referenced by2
- adr-2610120558328615A private advisory's record never enters the public ledger, its store is never committed, and nothing public carries an advisory id or hintrelated
- itd-2609221842494980A dependency bump lands without a person re-authoring it, and no machine enters the contributor graphrelated
mentions6
- iss-2608271817300337ADR seed from the security-advisory pilot's verified trust rules (itd-149 decomposition, part 2): auto-merge arms only after a comprehensive no-bypass required-check set AND an independent adversarial APPROVE, never on CI-green alone (F-N); the two release gates that are human-by-design stay human (F-Q); a verdict is never transferred — every required pass re-runs against the final content commit (F-U). These are trust-boundary rules, not intent scope: file the ADR with its brief invariant, then link itd-149 to it at planning.
- iss-2608271817309715principle seed from the pilot's F-W (itd-149 decomposition, part 3): the authorship default for external contributions is to ADOPT the contributor's commit, preserving their contributor-graph authorship; re-authoring with a Reported-by trailer is the honest fallback only when there is no branch to adopt, and the ACKNOWLEDGEMENTS entry rides the fix in the same change. No existing principle covers the authorship default; file it under development/principles/ (or fold into CONTRIBUTING) as its own act.
- iss-2610150749053362Several draft intents carry H1 titles that read badly now that the out-of-scope drafts index is generated from each record's H1: itd-70's H1 is the placeholder 'Drawn-out intent', itd-2610070544145422's H1 is cut off mid-sentence ('…and it just works: the'), and eleven drafts have paragraph-length H1s of 300 to 1,093 characters (for example itd-2609150819440345 and itd-149).
- itd-1Every Intent Has Acceptance Criteria; Every Audit Verifies Them
- itd-2609151658486398A release cut publishes the security advisories its fixes close: when the release workflow cuts a version, every draft advisory whose fixing record shipped in that cut is published with the fixed version stamped and its opt-in credits, and an advisory whose record was closed as won't-fix is closed as not a vulnerability, so no fixed advisory sits unpublished after its release and no hand step decides which ones publish
- itd-2610112239022766Private security reports stay private until their fix ships