Skip to content

feat(security): autonomous no-fix VEX + documenting PR - #83

Merged
ry-ops merged 1 commit into
mainfrom
feat/vex-no-fix-autonomous
Jun 25, 2026
Merged

feat(security): autonomous no-fix VEX + documenting PR#83
ry-ops merged 1 commit into
mainfrom
feat/vex-no-fix-autonomous

Conversation

@ry-ops

@ry-ops ry-ops commented Jun 25, 2026

Copy link
Copy Markdown
Owner

What & why

You asked: VEX is state, but a PR still needs to be created to identify the no-fix state and document that a dependency has no available fix β€” and vex-no-fix.mjs should run autonomously. This does both.

Before

  • No-fix alerts were only VEX'd affected after a 3-sweep ADR-006 hard-stop.
  • vex-no-fix.mjs (which writes the honest under_investigation state) was manual β€” keytar-only auth, never in the heartbeat β€” and produced no artifact in the target repo.

Now

vex-no-fix.mjs:

  1. Dual-auth (GH_TOKEN in CI, keytar locally) β†’ runs unattended.
  2. Records OpenVEX under_investigation to git-steer-state (_vex + vex.jsonl) β€” unchanged.
  3. Opens/refreshes a documenting PR in each affected repo committing an OpenVEX 0.2.0 doc at .well-known/openvex/no-fix.openvex.json β€” a visible, machine-consumable artifact stating no fix is available, plus a human-readable PR body table.
    • Doc-only β†’ merged directly (no functional-integrity gate; nothing to build). If branch protection blocks, labeled needs-human-merge.
    • Idempotent: skips when the repo's doc already matches; entries clear automatically as upstream fixes land.
  4. Wired into the daily heartbeat after the escalation sweep.

under_investigation is the honest automated state; a maintainer later promotes each to not_affected (+justification) or affected (+action_statement) via vex_set.

Verified

  • toOpenVex produces valid OpenVEX 0.2.0 (tested with real DriveIQ no-fix advisories: nltk, torch).
  • Build clean, 42 tests pass, heartbeat + script syntax valid.

πŸ€– Generated with Claude Code

…-003)

Closes the gap where alerts with no upstream fix were only VEX'd
`affected` after a 3-sweep hard-stop, and the no-fix VEX script was
manual (keytar-only) and never created a repo-visible artifact.

vex-no-fix.mjs now:
- dual-auth (GH_TOKEN in CI, keytar locally), so it runs unattended;
- still records OpenVEX `under_investigation` to git-steer-state; and
- opens/refreshes a documenting PR in each affected repo committing an
  OpenVEX 0.2.0 doc at `.well-known/openvex/no-fix.openvex.json` β€”
  visible, machine-consumable proof that no fix is currently available.
  Doc-only, so it's merged directly (no functional-integrity gate);
  if branch protection blocks, it's labeled needs-human-merge.
  Idempotent: skips when the doc already matches; clears as fixes land.

Wired into the daily heartbeat after the escalation sweep, so it's
autonomous.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@ry-ops
ry-ops merged commit ea83441 into main Jun 25, 2026
3 checks passed
@ry-ops
ry-ops deleted the feat/vex-no-fix-autonomous branch June 25, 2026 10:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant