Commit Graph
9 Commits
Author SHA1 Message Date
jpmschweitzerandClaude Opus 4.8 2953207960 ci(soak): abrupt-death ConPTY orphan probe (the failure-mode the clean soak misses)
The clean-path soak found no leak on windows-latest — because orderly close()
reaps every host. That never exercises the freeze hypothesis (T-424), which is
the parent dying WITHOUT teardown while a child is live.

This probe does. conpty_orphan_probe.dart starts N real WindowsPty sessions on
long-lived children and blocks WITHOUT ever calling close(); soak-conpty-kill.ps1
force-kills only the dart.exe parent (taskkill /F, no /T) once the hosts are up
and counts the conhost/OpenConsole/cmd processes that SURVIVE. Absent a
kill-on-close Job Object, abrupt parent death should orphan them — a survivor
count that climbs across cycles is the leak signature. The same probe will prove
the T-424 fix: with the job, survivors should drop to ~0.

Wired as a second job in windows-soak.yml (workflow_dispatch + when the kit
changes). Diagnostic only, never a gate, always exits 0; publishes the verdict
to the job summary and uploads the CSV. Not part of the regular test suite.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-15 08:58:14 +02:00
jpmschweitzerandClaude Opus 4.8 4b55bc23f1 ci: run the ConPTY orphan-leak soak on a GitHub Windows runner (no VM)
The freeze diagnosis (T-424) was going to need a dedicated Windows VM to soak-
test. It doesn't: GitHub's windows-latest already runs our ConPTY suite green,
and tools/windows-verify/soak-conpty.ps1 detects the leak by counting the
conhost/OpenConsole hosts that survive each run — it never tries to crash the
box, so a throwaway runner works. The repeated runs happen inside one job, so
the orphan count can climb there even though the runner is discarded after.

New windows-soak.yml: workflow_dispatch + triggers when the soak kit changes.
Diagnostic only (always exits 0); publishes the verdict to the job summary and
uploads the CSV. This removes the GCP/VM requirement from the human entirely.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-15 00:50:48 +02:00
jpmschweitzerandClaude Opus 4.8 7136e33fdf ci: sync decisions from the DQR tree too (decision-query tests)
`pql plan import` materializes tickets from the changelog; decisions come from
the governance/ DQR markdown via `pql decisions sync`. The remaining 4 unit
failures were decisionList/decisionShow/decisionRead hitting exit 66. Run the
sync after the import.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-15 00:00:33 +02:00
jpmschweitzerandClaude Opus 4.8 e9247c1761 ci: rebuild .pql/pql.db from the changelog after installing pql
Installing pql cut the failures 36→8, but the remaining ticket-query tests run
against the working directory's `.pql/pql.db`, which is gitignored — the
post-checkout hook normally rebuilds it from the committed `.pql/changelog/`.
A fresh CI checkout has the changelog but no db, so pql reports vault-not-found
(exit 66). Run `pql plan import` after the install to materialize it.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 23:50:23 +02:00
jpmschweitzerandClaude Opus 4.8 f3d2b8bb57 ci: install pql in the test / integration / bundle jobs
The daemon pql command tests (test/daemon/pql_commands_test.dart, 36 cases)
shell out to the real pql binary, and the app boot exercises it too — GitHub
runners don't ship pql. Every prior run failed in the parallel pool before
reaching the serial pass that holds these tests; now that the pool is green,
they surface. Download the latest pql Linux release onto PATH in the three jobs
that run tests / boot the app. (The repo is pql-centric; this also future-proofs
adding the decisions gate to CI.)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 23:35:02 +02:00
jpmschweitzerandClaude Opus 4.8 41d77fddb2 ci(release): use the version's CHANGELOG section as release notes
The version-gated build already builds + attaches the version-stamped Linux and
Windows bundles. Now the GitHub Release body is the `## [<version>]` CHANGELOG
section (the cut the version-bump commit lands per the changelog discipline),
with the auto-generated commit list appended — tying pubspec version, changelog,
and built artifacts together in one release.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 23:13:22 +02:00
jpmschweitzerandClaude Opus 4.8 42d1d4acea ci(windows): drop redundant flutter analyze, reach the ConPTY tests
The Windows job failed at `flutter analyze` on the missing (gitignored,
generated) lib/src/build_info.g.dart — it never ran gen-build-info. But analyze
is platform-agnostic: the Linux job already statically analyzes windows_pty.dart
and everything else, and the flutter-build-windows release job catches
Windows-specific compile errors. Dropping it unblocks the job's real purpose —
running ConPTY under dart test — without needing build_info (the pty tests
import the pty libraries directly, not the build_info-bearing barrel).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 22:28:07 +02:00
jpmschweitzerandClaude Opus 4.8 8e0f33b79f ci: move Linux CI to GitHub Actions (.github/workflows/test.yml)
CI consolidates onto GitHub (primary remote); Gitea (secondary) has Actions
disabled. Move the Linux pipeline — unit + widget + golden + a11y + coverage
gate, integration_test (xvfb), bundle smoke, dart doc — verbatim from
.gitea/workflows/test.yml (its own header said to copy it here on GitHub), and
delete the dead Gitea copy. Joins windows.yml + release.yml.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 21:44:20 +02:00
jpmschweitzerandClaude Opus 4.8 45aa2d924e ci: GitHub Actions — Windows tests + version-tagged release builds
- windows.yml: flutter analyze + the ConPTY/pty suite on windows-latest (the
  first real execution of lib/src/pty/windows_pty.dart). Keep out of required
  checks until reliably green (after T-424); uploads artifacts.
- release.yml: on a pubspec.yaml version bump on main, build Linux + Windows
  bundles via `make build` and publish a v<version> GitHub Release. First cut —
  Windows has never been built, so expect to iterate from the first run's logs.

GitHub is the primary remote and the only host with Windows runners; the Gitea
secondary has Actions disabled.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 21:41:40 +02:00