feat(scaffold): project skeleton with uv + pytest + forgejo CI #1

Merged
goldstein merged 5 commits from feat/scaffold into main 2026-04-18 08:42:57 +00:00
Owner

Lands the empty-project skeleton so subsequent tasks have somewhere to land.

  • pyproject with dep groups, pytest/ruff/mypy config
  • live marker for Ollama/Surya-dependent tests (off in CI)
  • Forgejo Actions workflow against a Postgres 16 service container
  • .env.example documents every IX_* var
  • Smoke test passes locally: uv run pytest tests/unit -v → 1 passed

Task 1.1 of implementation plan (docs/superpowers/plans/2026-04-18-ix-mvp-implementation.md).

Lands the empty-project skeleton so subsequent tasks have somewhere to land. - pyproject with dep groups, pytest/ruff/mypy config - `live` marker for Ollama/Surya-dependent tests (off in CI) - Forgejo Actions workflow against a Postgres 16 service container - .env.example documents every IX_* var - Smoke test passes locally: `uv run pytest tests/unit -v` → 1 passed Task 1.1 of implementation plan (docs/superpowers/plans/2026-04-18-ix-mvp-implementation.md).
goldstein added 1 commit 2026-04-18 08:36:55 +00:00
feat(scaffold): project skeleton with uv + pytest + forgejo CI
Some checks failed
CI / test (pull_request) Failing after 4s
57cdfd73fb
- pyproject.toml: runtime deps (FastAPI, SQLAlchemy async, Pydantic, PyMuPDF,
  python-magic, Pillow, dateutil), dev group (pytest, pytest-asyncio,
  pytest-httpx, ruff, mypy), optional `ocr` extra that pulls surya-ocr + torch
  (kept optional so CI without GPU can run the base package).
- pytest config: asyncio_mode=auto; `live` marker for tests that need a real
  Ollama/Surya (gated on IX_TEST_OLLAMA=1).
- Single smoke test (tests/unit/test_scaffolding.py) verifies the package
  imports and exposes __version__ — keeps CI green until the real test
  modules land in later chunks.
- .forgejo/workflows/ci.yml: runs ruff + pytest against a Postgres 16 service
  container. Explicit IX_TEST_MODE=fake keeps real-client tests out.
- .env.example: every IX_* var from spec §9 with on-prem-friendly defaults.
- uv.lock committed for reproducible builds.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
goldstein added 1 commit 2026-04-18 08:37:57 +00:00
fix(ci): match mammon's Forgejo Actions pattern (no explicit container image)
Some checks failed
tests / test (pull_request) Failing after 59s
a71f023ed9
The previous python:3.12-slim container lacked node, which actions/checkout@v4
requires. The Forgejo runner's default image includes node + apt + curl, so
we can bootstrap python + uv the same way mammon does.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
goldstein added 1 commit 2026-04-18 08:39:29 +00:00
fix(ci): create empty tests/integration so pytest doesn't error on missing dir
All checks were successful
tests / test (pull_request) Successful in 1m4s
7e141829ac
Integration tests land in Chunk 3; until then CI needs the directory to exist.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
goldstein added 1 commit 2026-04-18 08:40:47 +00:00
ci: run on every push (not just main) so feat branches also get CI
Some checks are pending
tests / test (push) Waiting to run
tests / test (pull_request) Successful in 57s
097ebf5db7
Matches mammon's pattern more closely and makes PR CI reliable.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
goldstein closed this pull request 2026-04-18 08:41:30 +00:00
goldstein reopened this pull request 2026-04-18 08:41:33 +00:00
goldstein added 1 commit 2026-04-18 08:42:00 +00:00
ci: trigger re-run
All checks were successful
tests / test (push) Successful in 1m0s
tests / test (pull_request) Successful in 57s
4120d106aa
goldstein merged commit 663cb4ae10 into main 2026-04-18 08:42:57 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: goldstein/infoxtractor#1
No description provided.