Cargo workspace scaffolding & CI setup #1

Closed
opened 2026-04-16 11:27:38 +00:00 by claude-desktop · 0 comments
Collaborator

User story

As a developer starting on forge-agent, I want a properly structured Cargo workspace with all four crates (app, backend, frontend, contracts) and a working CI pipeline, so that all subsequent stories can be implemented on a solid foundation.

Acceptance criteria

Workspace structure

  • Cargo.toml at repo root defines a [workspace] with members crates/app, crates/backend, crates/frontend, crates/contracts
  • All four crates exist with minimal lib.rs / main.rs stubs that compile
  • [workspace.dependencies] section lists all target dependencies from spec §16 (tokio, serde, sqlx, git2, gtk4, libadwaita, relm4, vte4, sourceview5, etc.)
  • Inter-crate dependency rules are enforced: backend does not depend on frontend or GTK; frontend does not depend on sqlx or git2; contracts only depends on serde, uuid, chrono
  • cargo build and cargo check succeed on a clean checkout

CI pipeline

  • justfile with recipes: qa (fmt check + clippy + test), ci-setup, ci-build, ci-package
  • .forgejo/workflows/qa.yml following the standard job naming convention (single qa job)
  • QA pipeline runs just qa on every push

Project files

  • CLAUDE.md with workspace layout, build commands, inter-crate rules, and coding conventions
  • .gitignore for Rust (target/, etc.)

Out of scope

  • Actual implementation of any crate logic (covered by subsequent stories)
  • Release workflow (release.yml) — deferred until closer to v0.1.0

References

  • Spec §3 (Workspace Cargo)
  • Spec §16 (Dépendances Cargo cibles)
## User story As a **developer starting on forge-agent**, I want a properly structured Cargo workspace with all four crates (`app`, `backend`, `frontend`, `contracts`) and a working CI pipeline, so that all subsequent stories can be implemented on a solid foundation. ## Acceptance criteria ### Workspace structure - [ ] `Cargo.toml` at repo root defines a `[workspace]` with members `crates/app`, `crates/backend`, `crates/frontend`, `crates/contracts` - [ ] All four crates exist with minimal `lib.rs` / `main.rs` stubs that compile - [ ] `[workspace.dependencies]` section lists all target dependencies from spec §16 (tokio, serde, sqlx, git2, gtk4, libadwaita, relm4, vte4, sourceview5, etc.) - [ ] Inter-crate dependency rules are enforced: `backend` does not depend on `frontend` or GTK; `frontend` does not depend on `sqlx` or `git2`; `contracts` only depends on `serde`, `uuid`, `chrono` - [ ] `cargo build` and `cargo check` succeed on a clean checkout ### CI pipeline - [ ] `justfile` with recipes: `qa` (fmt check + clippy + test), `ci-setup`, `ci-build`, `ci-package` - [ ] `.forgejo/workflows/qa.yml` following the standard job naming convention (single `qa` job) - [ ] QA pipeline runs `just qa` on every push ### Project files - [ ] `CLAUDE.md` with workspace layout, build commands, inter-crate rules, and coding conventions - [ ] `.gitignore` for Rust (`target/`, etc.) ## Out of scope - Actual implementation of any crate logic (covered by subsequent stories) - Release workflow (`release.yml`) — deferred until closer to v0.1.0 ## References - Spec §3 (Workspace Cargo) - Spec §16 (Dépendances Cargo cibles)
claude-desktop added this to the v0.1.0 milestone 2026-04-16 11:27:38 +00:00
Sign in to join this conversation.
No description provided.