Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .cursorrules
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@

Read **`AGENTS.md`** for mission, non-goals, public contracts, engineering rules, verification, and docs policy. **`CLAUDE.md`** is a short index for Claude Code / Cursor.

Quick verify (uv): `uv sync --frozen --extra dev`, then `uv run python -m ruff check src tests`, `uv run python -m pytest`, `uv run python scripts/quickstart_smoke.py` (pip/venv equivalents in `DEVELOPMENT.md`; on Windows, `py -3` if needed).
Quick verify (uv): `uv sync --frozen --extra dev`, then `uv run python -m ruff check src tests`, `uv run python -m pytest`, `uv run flightdeck-quickstart-verify` (pip/venv equivalents in `DEVELOPMENT.md`; on Windows, `py -3` if needed). After **`web/src/`** edits: `cd web && npm ci && npm run build`, commit **`src/flightdeck/server/static/`** if it changes; optionally `npm run test:e2e` (see **`web/README.md`**).

Normative v1 direction: https://github.com/flightdeckdev/flightdeck/blob/main/docs/spec-v1-forward.md · backlog: https://github.com/flightdeckdev/flightdeck/blob/main/docs/v1-next-steps.md · CLI: https://github.com/flightdeckdev/flightdeck/blob/main/docs/cli.md
Normative v1 direction: https://github.com/flightdeckdev/flightdeck/blob/main/RELEASE_NOTES.md · backlog: https://github.com/flightdeckdev/flightdeck/blob/main/ROADMAP.md · CLI: https://github.com/flightdeckdev/flightdeck/blob/main/README.md
6 changes: 6 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -1,2 +1,8 @@
# Golden bundle checksum is sensitive to line endings on checkout (see CHANGELOG 0.7.0).
tests/fixtures/golden_bundle/** text eol=lf

# Vite build output must stay LF so `git diff --exit-code` matches on Windows CI/workstations.
src/flightdeck/server/static/** text eol=lf

# Post-build Node scripts committed under web/ (avoid CRLF churn on Windows checkouts).
web/scripts/** text eol=lf
20 changes: 17 additions & 3 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,18 @@

## Validation

- [ ] `python -m ruff check src tests`
- [ ] `python -m pytest`
- [ ] CLI smoke test, if relevant
Run the same checks as **CI** (see **`.github/workflows/ci.yml`**) before opening / updating the PR:

- [ ] `uv sync --frozen --extra dev`
- [ ] `uv run python -m ruff check src tests`
- [ ] `uv run python -m pytest`
- [ ] `uv run python scripts/generate_schemas.py` then `git diff --exit-code schemas/` (if models/schemas touched)
- [ ] `cd web && npm ci && npm run build && cd .. && git diff --exit-code src/flightdeck/server/static/` (if **`web/src/`** or deps changed)
- [ ] `cd web && npx playwright install chromium && npm run test:e2e` (if **`web/`** changed)
- [ ] `uv run flightdeck-quickstart-verify`
- [ ] `uv run flightdeck --help`

With **pip** / venv only, use **`python -m …`** equivalents from **`DEVELOPMENT.md`**.

## Schema / Storage Impact

Expand All @@ -18,4 +27,9 @@

## Risk

## Review

- [ ] **Requested review** from maintainers (**[CODEOWNERS](.github/CODEOWNERS)** → **`@flightdeckdev/maintainers`** on the org repo). On a **fork**, GitHub may not auto-request; use **Reviewers** on the PR.
- [ ] PR is **small and scoped** (see **`AGENTS.md`**); linked issue or release note intent noted if helpful.

## Notes
48 changes: 46 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,13 @@ jobs:
- name: Checkout
uses: actions/checkout@v4

- name: Set up Node
uses: actions/setup-node@v4
with:
node-version: "22"
cache: npm
cache-dependency-path: web/package-lock.json

- name: Set up uv
uses: astral-sh/setup-uv@v5
with:
Expand All @@ -26,6 +33,20 @@ jobs:
- name: Sync dependencies
run: uv sync --frozen --extra dev

- name: Build web UI
run: |
cd web
npm ci
npm run build
cd ..
git diff --exit-code src/flightdeck/server/static/

- name: Playwright E2E (served UI)
run: |
cd web
npx playwright install chromium
npm run test:e2e

- name: Lint
run: uv run python -m ruff check src tests

Expand All @@ -38,7 +59,7 @@ jobs:
git diff --exit-code schemas/

- name: Quickstart smoke (cross-platform)
run: uv run python scripts/quickstart_smoke.py
run: uv run flightdeck-quickstart-verify

- name: CLI smoke
run: uv run flightdeck --help
Expand All @@ -54,6 +75,13 @@ jobs:
- name: Checkout
uses: actions/checkout@v4

- name: Set up Node
uses: actions/setup-node@v4
with:
node-version: "22"
cache: npm
cache-dependency-path: web/package-lock.json

- name: Set up uv
uses: astral-sh/setup-uv@v5
with:
Expand All @@ -63,6 +91,22 @@ jobs:
- name: Sync dependencies
run: uv sync --frozen --extra dev

- name: Build web UI
shell: bash
run: |
cd web
npm ci
npm run build
cd ..
git diff --exit-code src/flightdeck/server/static/

- name: Playwright E2E (served UI)
shell: bash
run: |
cd web
npx playwright install chromium
npm run test:e2e

- name: Lint
run: uv run python -m ruff check src tests

Expand All @@ -75,7 +119,7 @@ jobs:
git diff --exit-code schemas/

- name: Quickstart smoke (cross-platform)
run: uv run python scripts/quickstart_smoke.py
run: uv run flightdeck-quickstart-verify

- name: CLI smoke
run: uv run flightdeck --help
24 changes: 24 additions & 0 deletions .github/workflows/release-pypi.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,13 @@ jobs:
- name: Checkout
uses: actions/checkout@v4

- name: Set up Node
uses: actions/setup-node@v4
with:
node-version: "22"
cache: npm
cache-dependency-path: web/package-lock.json

- name: Set up uv
uses: astral-sh/setup-uv@v5
with:
Expand All @@ -32,6 +39,20 @@ jobs:
- name: Sync locked dev environment
run: uv sync --frozen --extra dev

- name: Build web UI
run: |
cd web
npm ci
npm run build
cd ..
git diff --exit-code src/flightdeck/server/static/

- name: Playwright E2E (served UI)
run: |
cd web
npx playwright install chromium
npm run test:e2e

- name: Verify tag matches declared package versions
shell: bash
env:
Expand Down Expand Up @@ -74,6 +95,9 @@ jobs:
uv run python scripts/generate_schemas.py
git diff --exit-code schemas/

- name: Quickstart smoke
run: uv run flightdeck-quickstart-verify

- name: Build distributions
run: uv build

Expand Down
14 changes: 14 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,27 @@ pytest-cache-files-*/
.ruff_cache/
.tmp/
.venv/
web/node_modules/
.tools/
build/
dist/
*.egg-info/
.coverage
htmlcov/
.DS_Store
Thumbs.db
desktop.ini

# npm / package managers (noise at repo root or under web/)
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*

# TypeScript / editor noise
*.tsbuildinfo
*.swp
*~

# Local FlightDeck workspace (SQLite ledger + local config); never commit.
.flightdeck/
Expand Down
16 changes: 8 additions & 8 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@

This tree is usually a **personal-account research repo** (`origin` → your GitHub user): local experimentation, WIP, and broad refactors are acceptable.

**Organization repos** — canonical product: **[github.com/flightdeckdev/flightdeck](https://github.com/flightdeckdev/flightdeck)** under [flightdeckdev](https://github.com/flightdeckdev). Only **relevant**, standards-meeting changes (tests, ruff, no secrets, changelog/version when releasing) should be pushed or PR’d there—typically via a second remote **`org`** (workflow: [git remotes](https://github.com/flightdeckdev/flightdeck/blob/main/docs/git-remotes.md)).
**Organization repos** — canonical product: **[github.com/flightdeckdev/flightdeck](https://github.com/flightdeckdev/flightdeck)** under [flightdeckdev](https://github.com/flightdeckdev). Only **relevant**, standards-meeting changes (tests, ruff, no secrets, changelog/version when releasing) should be pushed or PR’d there—typically via a second remote **`org`** (workflow notes live in **`CONTRIBUTING.md`** in this clone).

When implementing features, prefer **small, PR-shaped slices** that could ship to an org repo without extra cleanup. Do not conflate “saved in research” with “ready for org push.”

Extended maintainer docs (research workflow, org checklist, canonical publish) live on **`main`** in that repository (for example [research workflow](https://github.com/flightdeckdev/flightdeck/blob/main/docs/research-workflow.md), [GitHub organization](https://github.com/flightdeckdev/flightdeck/blob/main/docs/github-organization.md)). This clone may omit those paths to stay small. Claude Code / short entrypoint: **`CLAUDE.md`**.
Extended maintainer docs (research workflow, org checklist, canonical publish) live on **`main`** in that repository. This clone stays compact and keeps practical contributor guidance in **`CONTRIBUTING.md`**. Claude Code / short entrypoint: **`CLAUDE.md`**.

## Mission

Expand Down Expand Up @@ -36,10 +36,10 @@ Do not add:

Treat these as **stable API** unless a change explicitly marks an experimental path:

- **CLI:** synopsis, flags, exit codes — canonical reference: **[docs/cli.md](https://github.com/flightdeckdev/flightdeck/blob/main/docs/cli.md)** (normative for scripting).
- **On-disk / wire:** `release.yaml`, run events, pricing imports, policy shape — **`schemas/`** (generated; drift caught in CI), **[docs/spec.md](https://github.com/flightdeckdev/flightdeck/blob/main/docs/spec.md)** (0.x snapshot of what the code does today).
- **v1 / GA direction** (migrations, checksums, trust boundaries, defaults): **[docs/spec-v1-forward.md](https://github.com/flightdeckdev/flightdeck/blob/main/docs/spec-v1-forward.md)**. Prefer updating the forward spec for new v1 contracts; avoid expanding **`docs/spec.md`** as the rolling GA target.
- **Backlog and review status:** **[docs/v1-next-steps.md](https://github.com/flightdeckdev/flightdeck/blob/main/docs/v1-next-steps.md)**.
- **CLI:** synopsis, flags, exit codes — `flightdeck --help` plus command help output (normative for scripting in this slim clone).
- **On-disk / wire:** `release.yaml`, run events, pricing imports, policy shape — **`schemas/`** (generated; drift caught in CI) plus compatibility notes in **`RELEASE_NOTES.md`**.
- **v1 / GA direction** (migrations, checksums, trust boundaries, defaults): **`RELEASE_NOTES.md`** and shipped CLI/schema behavior.
- **Backlog and milestone status:** **`ROADMAP.md`**.

## Engineering rules

Expand Down Expand Up @@ -67,7 +67,7 @@ Recommended (**[uv](https://docs.astral.sh/uv/)** — see **`DEVELOPMENT.md`**):
uv sync --frozen --extra dev
uv run python -m ruff check src tests
uv run python -m pytest
uv run python scripts/quickstart_smoke.py
uv run flightdeck-quickstart-verify
```

After editing Pydantic models, regenerate schemas and ensure a clean diff:
Expand All @@ -81,7 +81,7 @@ Fallback (activated **venv** or global tools): the same steps with **`python -m

On **Windows**, use `py -3` in place of `python` if that is how your environment is set up. If pytest temp dirs fail with permissions, see **`DEVELOPMENT.md`** / **`tests/conftest.py`**.

**CI bar** (mirrors **`.github/workflows/ci.yml`** on **CPython 3.14**): **`uv sync --frozen --extra dev`**, **`uv run python -m ruff check src tests`**, **`uv run python -m pytest`**, **`uv run python scripts/generate_schemas.py`** + no **`schemas/`** diff, **`uv run python scripts/quickstart_smoke.py`**, **`uv run flightdeck --help`**.
**CI bar** (mirrors **`.github/workflows/ci.yml`** on **CPython 3.14**): see the workflow for the exact sequence; includes **`uv sync --frozen --extra dev`**, **`web/`** **`npm ci`** + **`npm run build`** + **`git diff --exit-code`** on **`static/`**, Playwright **`npm run test:e2e`**, **ruff**, **pytest**, schema drift check, **`flightdeck-quickstart-verify`**, **`flightdeck --help`**.

Use a repo-local temp directory if the OS temp directory is restricted.

Expand Down
Loading
Loading