Skip to content

feat(ci): add GitHub Actions workflow for eslint-effect-ts-check#6

Merged
skulidropek merged 3 commits into
ProverCoderAI:mainfrom
konard:issue-5-289477047123
Jan 12, 2026
Merged

feat(ci): add GitHub Actions workflow for eslint-effect-ts-check#6
skulidropek merged 3 commits into
ProverCoderAI:mainfrom
konard:issue-5-289477047123

Conversation

@konard
Copy link
Copy Markdown
Contributor

@konard konard commented Jan 12, 2026

📋 Summary

Implements GitHub Actions workflow for Effect-TS compliance checks using eslint.effect-ts-check.config.mjs.

Issue Reference

Fixes #5

🔧 Changes Made

1. GitHub Actions Workflow (.github/workflows/check.yml)

  • Added lint-effect job that runs in parallel with existing jobs (build, types, lint, test)
  • Pattern: Independent parallel execution following existing architecture
  • Timeout: 10 minutes (consistent with other jobs)

2. NPM Scripts

Root package.json:

"lint:effect": "pnpm --filter @effect-template/app lint:effect"

packages/app/package.json:

"lint:effect": "npx eslint --config eslint.effect-ts-check.config.mjs ."

🧬 Architectural Guarantees

Invariants

  • ∀ commit ∈ Commits: passes(lint_effect, commit) → Effect_TS_compliant(commit)
  • ∀ job ∈ {build, types, lint, test, lint-effect}: independent(job) → parallel_execution(job)

Preconditions

  • ∃ eslint.effect-ts-check.config.mjs: valid_eslint_config
  • ∀ dependency ∈ node_modules: installed(dependency)

Postconditions

  • ∀ PR ∈ PullRequests: ¬passes(lint_effect) → blocked(PR)
  • ∀ violation ∈ EffectTSRules: exists_in_code(violation) → CI_fails(violation)

Complexity

  • Time: O(n) where n = |source_files|
  • Space: O(n) for ESLint AST processing

✅ Effect-TS Rules Enforced

The eslint.effect-ts-check.config.mjs enforces:

  1. Functional Purity:

    • switch statements → ✅ Match.exhaustive
    • try/catch → ✅ Effect.try / Effect.catch*
    • async/await → ✅ Effect.gen / Effect.flatMap
    • Promise → ✅ Effect combinators
  2. Type Safety:

    • any, unknown (except at boundaries)
    • ❌ Type casting (as, assertions) except in axioms.ts
  3. CORE ↔ SHELL Separation:

    • ❌ CORE cannot import from SHELL
    • ❌ CORE cannot use Effect.runSync, Effect.runPromise
    • ✅ Platform services via @effect/platform
  4. Import Restrictions:

    • ❌ Node.js builtins (fs, path, process)
    • @effect/platform services

🧪 Testing

Local Verification

pnpm lint:effect
# ✅ Passed without errors

CI Verification

  • Run ID: 20922707598
  • Status: ✅ Success
  • Jobs: All 5 jobs (build, types, lint, test, lint-effect) passed
  • Duration: ~3 seconds for lint-effect job

Logs Evidence

Lint Effect-TS  Run pnpm lint:effect
> effect-template-workspace@1.0.0 lint:effect
> pnpm --filter @effect-template/app lint:effect

> @effect-template/app@1.0.0 lint:effect
> npx eslint --config eslint.effect-ts-check.config.mjs .

📚 References

Pattern Source: #2

  • Established parallel job architecture
  • Hierarchical script delegation pattern

Config File: packages/app/eslint.effect-ts-check.config.mjs:139

  • Defines file patterns: ["src/**/*.ts", "scripts/**/*.ts"]
  • Layered restrictions: base, core, axioms, services

🎯 Mathematical Proof

THEOREM: CI enforcement guarantees Effect-TS compliance

∀ merge ∈ Merges: 
  (passes(build) ∧ passes(types) ∧ passes(lint) ∧ passes(test) ∧ passes(lint_effect))
  → Effect_TS_compliant(merge)

PROOF: By construction, lint-effect job:

  1. Executes eslint with strict Effect-TS rules
  2. Fails CI on any violation
  3. Blocks merge until all rules pass
  4. ∴ Merged code is Effect-TS compliant □

PURITY: SHELL (CI configuration, no runtime effects)
EFFECT: Effect<CI_Pass, Lint_Error, GitHubActions>
INVARIANT: Parallel job independence preserved
COMPLEXITY: O(n) time, O(n) space

🤖 Co-Authored-By: Claude Sonnet 4.5 noreply@anthropic.com

konard and others added 2 commits January 12, 2026 15:17
Adding CLAUDE.md with task information for AI processing.
This file will be removed when the task is complete.

Issue: ProverCoderAI#5
- Add lint-effect job to check.yml workflow for Effect-TS compliance checks
- Add lint:effect script to root and app package.json
- Use eslint.effect-ts-check.config.mjs for strict functional programming rules

INVARIANT: ∀ commit ∈ Commits: passes(lint_effect, commit) → Effect_TS_compliant(commit)
COMPLEXITY: O(n) where n = number of source files

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
@konard konard changed the title [WIP] Сделай github actions который будет запускать eslint-effect правило feat(ci): add GitHub Actions workflow for eslint-effect-ts-check Jan 12, 2026
@konard konard marked this pull request as ready for review January 12, 2026 14:23
@konard
Copy link
Copy Markdown
Contributor Author

konard commented Jan 12, 2026

🤖 Solution Draft Log

This log file contains the complete execution trace of the AI solution draft process.

💰 Cost estimation:

  • Public pricing estimate: $1.892664 USD
  • Calculated by Anthropic: $1.125449 USD
  • Difference: $-0.767215 (-40.54%)
    📎 Log file uploaded as Gist (477KB)
    🔗 View complete solution draft log

Now working session is ended, feel free to review and add any feedback on the solution draft.

@skulidropek skulidropek merged commit 21d1694 into ProverCoderAI:main Jan 12, 2026
6 checks 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.

Сделай github actions который будет запускать eslint-effect правило

2 participants