Skip to content

feat(enrichment): end-of-life runtime regression analyzer (endoflife.date) - #1532

Merged
JSONbored merged 1 commit into
mainfrom
feat/enrichment-eol
Jun 26, 2026
Merged

feat(enrichment): end-of-life runtime regression analyzer (endoflife.date)#1532
JSONbored merged 1 commit into
mainfrom
feat/enrichment-eol

Conversation

@JSONbored

Copy link
Copy Markdown
Owner

Sixth REES analyzer. Parses runtime/base-image/engine pins a PR changes (Dockerfile FROM, .nvmrc, go.mod) and checks endoflife.date (free, no key) — flags a pin onto a release past end-of-support or EOL within 90 days. Injectable now for deterministic tests. 4 new node:test units (27 total) + a live check. Closes #1504.

…date)

Sixth REES analyzer. Parses runtime/base-image/engine pins a PR changes (Dockerfile FROM,
.nvmrc, go.mod) and checks endoflife.date (free, no key) — flagging a pin onto a release that
is already past end-of-support or goes EOL within 90 days. Injectable now for deterministic
tests. 4 new node:test units (27 total) + a live endoflife.date check. Closes #1504.
@dosubot dosubot Bot added the size:L label Jun 26, 2026
@superagent-security

Copy link
Copy Markdown
Contributor

Superagent didn't find any vulnerabilities or security issues in this PR.

@JSONbored
JSONbored merged commit c37c2bc into main Jun 26, 2026
14 checks passed
@JSONbored
JSONbored deleted the feat/enrichment-eol branch June 26, 2026 19:54
andriypolanski pushed a commit to andriypolanski/gittensory that referenced this pull request Jun 27, 2026
…rdening (JSONbored#1099)

* fix(guardrail): fail-closed on KV outage + broaden crucial-path coverage

Flood-readiness (emission weights rose on metagraphed + gittensory; a contributor
wave is imminent). Two guardrail hardenings:

1. Fail-CLOSED on a KV read fault. loadHardGuardrailGlobs previously fell back to the
   narrow default (.github/workflows + scripts) on a THROWN read, so a KV outage
   correlated with a flood would silently shrink the guarded surface and let
   crown-jewel edits (scoring/auth/rules/the gate) auto-merge. A thrown read now
   returns FAIL_CLOSED_GUARDRAIL_GLOBS = ['**'] → every PR is held for human review
   until the read recovers. A legitimately-absent key still uses the narrow default
   so a freshly-installed repo can operate.

2. Broadened the LIVE per-repo KV globs (done out-of-band, effective immediately):
   - gittensory: added src/upstream/**, src/settings/**, src/review/**,
     src/services/**, src/github/**, src/config/** — the gate/decision/reviewer/
     scoring/auth engine that lived OUTSIDE the old dir-prefix guards (e.g.
     score-breakdown.ts, command-authorization.ts, agent-actions.ts, ai-review.ts,
     ruleset.ts). This is the awesome-claude JSONbored#4196 incident class.
   - metagraphed: added src/** (the old config guarded specific .mjs files but NOT
     src/mcp-server.mjs — the file PR JSONbored#1528 touched).

Tests: change-guardrail asserts the crucial out-of-dir files now hit the guardrail
while infra/data/registry/docs/tests still auto-merge; guardrail-config asserts the
outage path fails closed. Full suite green (3489).

* fix(review): break the Gittensory Gate self-deadlock that froze reviews under load

ROOT CAUSE of the stall (diagnosed from the LIVE audit_events ledger, not the frozen
review_targets/review_audit): the Gittensory Gate is a REQUIRED check, and
fetchLiveCiAggregate counted it like any other CI. A review posts the gate as
in_progress, then prReadyForReview waits for ALL required CI to finish — but the gate
never finishes (it's only concluded by the very review being deferred). So every
green-CI PR deferred forever as 'CI still running' (38 review_deferred_ci_pending in 30
min; metagraphed JSONbored#1532 deferred 4x with all checks green).

Fix: fetchLiveCiAggregate now SKIPS the bot's own GITTENSORY_GATE_CHECK_NAME in both the
check-runs and commit-status loops, so the bot waits on real CI only and never on its
own gate. Test: a green 'test' check + an in_progress 'Gittensory Gate' (gate in the
required set) now reports ciState 'passed', not 'pending'.
andriypolanski pushed a commit to andriypolanski/gittensory that referenced this pull request Jun 27, 2026
…it — completes the self-deadlock fix (JSONbored#1105)

JSONbored#1099 excluded only Gittensory Gate, but the bot posts TWO checks as in_progress while reviewing —
Gittensory Gate AND Gittensory Context (app.ts:23-24). Counting Context re-created the exact same
self-deadlock: green-CI PRs (e.g. metagraphed JSONbored#1532, all real checks success/neutral) deferred forever as
'CI still running' because the bot waited on its own in_progress Context check. Generalize the exclusion to
a BOT_OWNED_CHECK_NAMES set so the bot never waits on ANY check it posts itself. Test now asserts both
in_progress bot checks are ignored -> ciState 'passed'.
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.

feat(enrichment): EOL runtime & version-floor regression — endoflife.date

1 participant