Skip to content

chore(ci): Fix CI infra failures (orphan submodule, setuptools, diagram-output) - #21835

Open
drussell23 wants to merge 3 commits into
mainfrom
chore/ci-infra-cleanup
Open

chore(ci): Fix CI infra failures (orphan submodule, setuptools, diagram-output)#21835
drussell23 wants to merge 3 commits into
mainfrom
chore/ci-infra-cleanup

Conversation

@drussell23

@drussell23 drussell23 commented Apr 26, 2026

Copy link
Copy Markdown
Owner

Summary

Resolves three of the four CI infra issues filed during the §23 Reverse Russian Doll PRD admin-merge (#21749b4706e455d). All three were verified as infra-only failures unrelated to any code change. Each is a small, surgical fix with its own commit for clean revert.

The fourth issue (#21797 Vercel) is external — the Vercel GitHub App posts the status check directly, not from a workflow file, and the jarvis-cloud/.vercel/vercel.json is real production cron config that must not be touched. It will be addressed by a comment on the issue with operator-action context (resolve account block, remove integration, or mark not-required in branch protection).

Commits (one per issue, squash on merge)

1. chore(ci): Remove orphan JARVIS-AI.wiki submodule gitlinkCloses #21795

The repo tree carried a gitlink (mode 160000, commit 99cd9e07d36b840) at JARVIS-AI.wiki/ with no corresponding entry in .gitmodules. Likely an accidental git add from a sibling local clone. The orphan caused every workflow that runs git submodule foreach --recursive to emit fatal: No url found for submodule path 'JARVIS-AI.wiki' in .gitmodules.

Fix: git rm --cached JARVIS-AI.wiki removes the gitlink from the index without deleting any local working-tree contents. deploy-wiki.sh continues to clone the wiki as a sibling working dir — its workflow is unaffected. Added JARVIS-AI.wiki/ to .gitignore so the orphan cannot be re-added accidentally.

2. chore(ci): Install setuptools+wheel on Mock + Integration testing runnersCloses #21796

Mock Testing (Safe) and Integration Testing jobs in screen-lock-e2e-test.yml failed with ModuleNotFoundError: No module named 'pkg_resources'. Root cause: pkg_resources was removed from Python 3.12+ stdlib (it now lives only in setuptools), and actions/setup-python@v5 does not pre-install setuptools by default on newer Python versions.

Fix: change pip install --upgrade pippip install --upgrade pip setuptools wheel in both jobs. The Real E2E Testing (Self-Hosted) job uses a different setup pattern and is unaffected.

3. chore(ci): Use jq -Rsc for compact GITHUB_OUTPUT in auto-diagram discoverCloses #21798

The 🔍 Discover & Analyze Diagrams step in auto-diagram-generator.yml failed with ##[error]Unable to process file command 'output' successfully. ##[error]Invalid format ' "docs/architecture/OUROBOROS_VENOM_PRD.md"'. Root cause: the step writes a JSON array to $GITHUB_OUTPUT via echo "name=$json" >> $GITHUB_OUTPUT, but jq -Rs emits pretty-printed multi-line JSON by default. $GITHUB_OUTPUT's name=value syntax only accepts single-line values; multi-line writes need heredoc syntax.

Fix: add -c (compact) flag → jq -Rsc. Single-line JSON, same array shape, no behavior change beyond the format fix. Same potential issue exists with the diagram_matrix output but it's already constructed via bash concatenation that produces single-line output, so no change needed there.

What's NOT in this PR

  • ops: resolve Vercel account block (deployment check failing on every PR) #21797 (Vercel): external, not code-resolvable. Will receive an operator-action comment on the issue. No vercel.json edits — that's real prod cron config (/api/ouroboros/submit daily, /api/devices/health daily) and must stay untouched without explicit ops approval.
  • No code in backend/ modified
  • No tests added or modified
  • No env flags introduced

Diff stats

  • 3 files changed
  • +9 insertions, −5 deletions
  • One per-issue commit; squash on merge to keep main history linear

Test plan

  • git rm --cached preserves local JARVIS-AI.wiki/ working dir (deploy-wiki.sh untouched)
  • Both pip install lines updated to include setuptools wheel
  • jq -Rsc produces single-line JSON (verified spec — -c flag standard)
  • No workflow YAML structural change beyond the targeted lines

Revert path

Three independent commits — each can be reverted in isolation if any single fix proves wrong. After squash-merge, single revert restores all three.

🤖 Generated with Claude Code


Summary by cubic

Fixes three CI workflow failures to restore reliable runs. Removes an orphan wiki submodule, installs missing Python build tools, and outputs compact JSON in the diagram discovery step.

  • Bug Fixes
    • Removed orphan JARVIS-AI.wiki submodule gitlink and added to .gitignore; deploy-wiki.sh behavior unchanged.
    • Updated test jobs to pip install --upgrade pip setuptools wheel to restore pkg_resources on Python 3.12+ (actions/setup-python@v5).
    • Switched to jq -Rsc so JSON written to $GITHUB_OUTPUT is single-line and accepted by the runner.

Written for commit 7ab0c76. Summary will update on new commits.

drussell23 and others added 3 commits April 26, 2026 10:30
The repo tree contained a gitlink (mode 160000, commit 99cd9e07d36b840) at
JARVIS-AI.wiki/ with no corresponding entry in .gitmodules — likely an
accidental `git add` from a sibling local clone. The orphan caused every
workflow that runs `git submodule foreach --recursive` to emit:

  fatal: No url found for submodule path 'JARVIS-AI.wiki' in .gitmodules
  ##[warning]The process '/usr/bin/git' failed with exit code 128

Two real workflows depended on the wiki being a sibling working tree, NOT a
submodule: deploy-wiki.sh clones from
https://github.com/drussell23/JARVIS-AI.wiki.git into a local
JARVIS-AI.wiki/ directory at deploy time. The orphan gitlink was never the
intended representation.

Fix: `git rm --cached JARVIS-AI.wiki` removes the gitlink from the index
without deleting any local working-tree contents (deploy-wiki.sh remains
fully functional). Added JARVIS-AI.wiki/ to .gitignore so it cannot be
re-added accidentally.

Closes #21795

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…ners

Both jobs in screen-lock-e2e-test.yml fail with `ModuleNotFoundError: No
module named 'pkg_resources'` during dependency resolution. Root cause:
pkg_resources was removed from the Python 3.12+ stdlib (it now lives only
in the setuptools package), and the runner image's `setup-python` action
does not pre-install setuptools by default on newer Python versions. Tests
never run because the import fails at boot.

Fix: extend `pip install --upgrade pip` → `pip install --upgrade pip
setuptools wheel` in the two affected jobs (Mock Testing + Integration
Testing). The "real" E2E job is unaffected (different setup pattern, runs
only on self-hosted runners).

Closes #21796

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…over

The discover-diagrams step writes a JSON array of changed files to
$GITHUB_OUTPUT via `echo "changed_files=$json" >> "$GITHUB_OUTPUT"`. The
runner rejects this format because $GITHUB_OUTPUT's `name=value` writes
require a single-line value, but `jq -Rs` emits pretty-printed multi-line
JSON by default. Failure log:

  ##[error]Unable to process file command 'output' successfully.
  ##[error]Invalid format '  "docs/architecture/OUROBOROS_VENOM_PRD.md"'

(The leading whitespace + quote is jq's pretty-print indentation, which is
the smoking gun.)

Fix: add -c (compact) flag → `jq -Rsc 'split("\n") | map(select(length >
0))'` emits single-line JSON suitable for $GITHUB_OUTPUT. Behavior is
otherwise identical — same array shape, same content, just no whitespace.
For multi-line outputs that genuinely need newlines, the heredoc syntax
(`name<<EOF` / value / `EOF`) is the alternative; here the value is
naturally single-line so -c is the cleaner fix.

Closes #21798

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No issues found across 4 files

@github-actions

github-actions Bot commented Apr 26, 2026

Copy link
Copy Markdown

📊 PR Size Analysis

Size: XS
Files Changed: 4
Lines Added: +11
Lines Deleted: -5
Total Changes: 16

Review Checklist

  • All tests passing
  • Code follows project style guidelines
  • Documentation updated if needed
  • No sensitive data exposed
  • Breaking changes documented

@github-actions

Copy link
Copy Markdown

🤖 CI/CD Pipeline Results

Status: success
Branch: 21835/merge
Commit: 050aa047eedecf243c5a3afb1bdd62b8a44b0262

Pipeline Stages

  • Code Quality: ❌
  • Build & Test: ❌
  • Architecture: ❌
  • Security Scan: ❌

View full workflow run

@github-actions

Copy link
Copy Markdown

🚨 CI/CD Failure Detected

The Environment Variable Validation workflow failed for this PR.

Action Required

A tracking PR has been automatically created to help resolve this issue:
🔗 #21873

Quick Links

Please review the analysis and implement the suggested fixes.


🤖 Auto-generated by JARVIS CI/CD Manager

@github-actions

Copy link
Copy Markdown

🚨 CI/CD Failure Detected

The Database Connection Validation workflow failed for this PR.

Action Required

A tracking PR has been automatically created to help resolve this issue:
🔗 #21875

Quick Links

Please review the analysis and implement the suggested fixes.


🤖 Auto-generated by JARVIS CI/CD Manager

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

1 participant