Drop the orphaned runs.git_dir column
Its only consumer was the CI mirror helper, now removed; nothing reads or writes the column since. ALTER TABLE DROP COLUMN suffices because git_dir appears in no CHECK constraint or index.
Assisted-by: GLM-5.2 via pi
diff --git a/docs/CI-STATE.md b/docs/CI-STATE.md
index 6faadb2..30c6698 100644
--- a/docs/CI-STATE.md
+++ b/docs/CI-STATE.md
@@ -236,7 +236,7 @@ Two things in `CI.md` that the code does *not* yet implement at this layer:
| `run_token` | `Runs::create` (API sessions only) | `verify_run_token` middleware |
| `traceparent` | `Run::store_bootstrap_data` (API sessions only) | bootstrap endpoint |
-Migration 0007 dropped eight columns that carried no live data with the Process executor: `container_id`, `workspace_path`, `image_tag`, `build_started_at_ms`, `build_finished_at_ms`, `container_started_at_ms`, `container_stopped_at_ms`, and `sentry_trace_id`. The first five were Docker-executor placeholders; `workspace_path` was written at create time but reconstructable from `<base_dir>/<run_id>/workspace`; `sentry_trace_id` was added in migration 0004 and superseded by `traceparent` before it was ever used.
+Migration 0007 dropped eight columns that carried no live data with the Process executor: `container_id`, `workspace_path`, `image_tag`, `build_started_at_ms`, `build_finished_at_ms`, `container_started_at_ms`, `container_stopped_at_ms`, and `sentry_trace_id`. The first five were Docker-executor placeholders; `workspace_path` was written at create time but reconstructable from `<base_dir>/<run_id>/workspace`; `sentry_trace_id` was added in migration 0004 and superseded by `traceparent` before it was ever used. Migration 0011 dropped `git_dir`, whose only consumer was the CI mirror helper removed in favor of server-side mirroring.
### `jobs` table
diff --git a/quire-server/migrations/0011_drop_git_dir.sql b/quire-server/migrations/0011_drop_git_dir.sql
new file mode 100644
index 0000000..b2b3eed
--- /dev/null
+++ b/quire-server/migrations/0011_drop_git_dir.sql
@@ -0,0 +1,13 @@
+-- Drop runs.git_dir.
+--
+-- Added in 0004 to carry the bare repo path through the bootstrap
+-- response to quire-ci; the quire.stdlib mirror helper was its only
+-- consumer, and mirror has been removed from CI (server-side
+-- mirroring already runs on every push). quire-ci runs against the
+-- materialized workspace and derives sha/ref host-side via --git-dir
+-- in local mode, so the column is dead.
+--
+-- No CHECK constraint or index references git_dir, so ALTER TABLE
+-- DROP COLUMN suffices (SQLite 3.35.0+); no table recreation.
+
+ALTER TABLE runs DROP COLUMN git_dir;
diff --git a/quire-server/src/db.rs b/quire-server/src/db.rs
index 5d0fb0e..83a4d46 100644
--- a/quire-server/src/db.rs
+++ b/quire-server/src/db.rs
@@ -22,6 +22,7 @@ static MIGRATIONS: std::sync::LazyLock<Migrations<'static>> = std::sync::LazyLoc
M::up(include_str!("../migrations/0008_rename_sh.sql")),
M::up(include_str!("../migrations/0009_rename_ci_vocab.sql")),
M::up(include_str!("../migrations/0010_outcome_schema.sql")),
+ M::up(include_str!("../migrations/0011_drop_git_dir.sql")),
])
});