You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
CI Infrastructure Remediation: Jest, ESLint, and Validation Configuration #2760
This issue tracks remediation of pre-existing CI infrastructure failures identified during Phase 5 Goal 4 implementation (PR #2692). These issues are unrelated to Phase 5 Goal 4 and require separate infrastructure work.
Pre-existing Failures
Test Suite Configuration
Jest ESM/CommonJS module conflicts requiring configuration fixes
Missing test fixture directories referenced in tests
Module resolution errors in test environment
Linting Configuration
ESLint undefined globals (URL, fetch) in certain files
TypeScript type declaration resolution issues
Node.js global APIs not properly declared
Validation Infrastructure
Frontmatter schema validation warnings across repository files
README structure validation issues at repository level
Scope
Fix all CI check failures by addressing:
Jest configuration for ESM/CommonJS handling
ESLint globals configuration for Node.js APIs
TypeScript configuration and type resolution
Frontmatter schema standardization
Success Criteria
All test suite checks pass (Jest configuration)
Linting checks pass (ESLint globals and TypeScript fixes)
Validation checks pass (Frontmatter and README validation)
Partial status update on item 2 of this issue's scope ("Linting checks pass (ESLint globals and TypeScript fixes)").
The umbrella items are still open, but the mechanism behind the linting failures is now identified and being fixed, so this no longer needs to be treated as unknown.
ESLint was not running in CI at all.git grep -n "lint:js" -- .github/workflows returns exactly one hit, in archived/2026-09-11/testing/testing.yml. The archived 2026-09-11 testing workflow carried the lint step; archiving the workflow archived the step, and no replacement was written. Sixteen active workflows, none invoking ESLint.
That accounts for the reported symptoms without needing a separate root cause per symptom:
Symptom reported here
What is actually happening
ESLint undefined globals (URL, fetch)
Mostly fixed already. eslint.config.cjs declares both in nodeGlobals, and the figma globals in the agent-script block. The residual 110 no-undef errors are a different set — mostly under agents/**/figma*/scripts/*.js.
TypeScript declaration resolution
25 no-undef and 15 @typescript-eslint/* errors, all in .ts files. Small and enumerable.
Leaving this umbrella open is right: Jest config and the validation-infrastructure items here are untouched by that work. Flagging only that the linting item now has a root cause and an owner, and that the previous "ESLint errors are 0" assumption is not sound — see the correction on #1238.
Activity
linear-code commentedon Sep 4, 2026
LS-3061
github-actions commentedon Sep 4, 2026
Missing required section(s): Definition of Ready (DoR), Definition of Done (DoD)
The issue will remain open and flagged until the body is corrected.
Please update the issue with one of the official templates:
If this was opened by automation, update the automation to preserve the template sections before creating the issue.
docs(phase-5-supplementary): Add CI infrastructure hardening task doc…
ashleyshaw commentedon Sep 4, 2026
Project Documentation & Planning
This supplementary CI infrastructure hardening task is now fully documented in the Phase 5 Goal 4 active project:
Related Documentation
Implementation Plan
The CI hardening task is broken down into 5 phases (~9 hours total effort):
See CI_HARDENING.md for complete implementation details, success criteria, and interdependencies.
🤖 Generated with Claude Code
https://claude.ai/code/session_01KXvNViVb3zeXoFYyz6QygR
Generated by Claude Code
docs(phase-5-openspec): Update to v1.0.1 with CI hardening reference
github-actions commentedon Sep 8, 2026
This issue has labels that are not in the canonical taxonomy:
migrate:priority:normalmigrate:status:needs-triagemigrate:status:needs-more-infoValid Canonical Labels
Please use labels with a prefix from the canonical taxonomy:
type:bug,type:feature,type:task,type:documentation, etc.status:needs-triage,status:in-progress,status:done, etc.priority:critical,priority:high,priority:normal,priority:lowarea:ci,area:docs,area:labels,area:security, etc.meta:needs-changelog,meta:duplicate,meta:blocked, etc.For the complete list, see .github/labels.yml.
eleshar commentedon Oct 1, 2026
Partial status update on item 2 of this issue's scope ("Linting checks pass (ESLint globals and TypeScript fixes)").
The umbrella items are still open, but the mechanism behind the linting failures is now identified and being fixed, so this no longer needs to be treated as unknown.
ESLint was not running in CI at all.
git grep -n "lint:js" -- .github/workflowsreturns exactly one hit, inarchived/2026-09-11/testing/testing.yml. The archived 2026-09-11 testing workflow carried the lint step; archiving the workflow archived the step, and no replacement was written. Sixteen active workflows, none invoking ESLint.That accounts for the reported symptoms without needing a separate root cause per symptom:
URL,fetch)eslint.config.cjsdeclares both innodeGlobals, and the figma globals in the agent-script block. The residual 110no-undeferrors are a different set — mostly underagents/**/figma*/scripts/*.js.no-undefand 15@typescript-eslint/*errors, all in.tsfiles. Small and enumerable.nodeGlobalscoversprocess,Buffer,__dirname,__filename, timers,AbortController,URL,URLSearchParams,fetch,TextEncoder/TextDecoder.Now tracked separately
.cjs/.mjsand records the 189 existing errors ineslint-suppressions.json, so they are enumerated per file and rule instead of asserted to be zero.Leaving this umbrella open is right: Jest config and the validation-infrastructure items here are untouched by that work. Flagging only that the linting item now has a root cause and an owner, and that the previous "ESLint errors are 0" assumption is not sound — see the correction on #1238.
Not proposing any change of state here.