Eric
|
894d1a7a95
|
[eric] gitignore: ignore the repo-root test-results/ playwright drops when run from the root
|
2026-05-28 21:51:49 -07:00 |
|
Eric
|
9aaf503b03
|
[eric] e2e: expose the redux store deterministically via webPreferences.additionalArguments, fix visibility capture (read the chromium trace from tracingComplete, resolve click targets to the control, drop the dead contextBridge ipc wrap), harden onboarding/settings/combinatorial specs and add multi-window-stress
|
2026-05-28 21:41:01 -07:00 |
|
Eric
|
41031a7790
|
[eric] backend: load_settings never bricks boot on a corrupt or version-drifted settings.json - preserve unparseable files aside and drop only the invalid fields instead of raising, plus a migration test suite
|
2026-05-28 21:41:01 -07:00 |
|
Eric
|
f1a3ec2598
|
[eric] electron: fix the electron 42 windows build - electronLanguages en to en-US so the renderer gets a non-empty --lang (electron 42 renamed en.pak to en-US.pak; empty locale crashed blink LCIDFromLocaleInternal with 0xC0000005), bump electron-builder 25.1.8 to 26.8.1 + migrate win.sign to signtoolOptions, after-pack hook restores the 9router node_modules eb26 drops from extraResources so the subscription service stops hanging, and verify-locale-paks + verify-router-deps gate both in verify-all
|
2026-05-28 21:41:01 -07:00 |
|
Eric
|
0d90a469aa
|
[eric] e2e: onboarding-completion gains OPENSWARM_E2E_REAL_UI=1 mode that drives each step's actual primary user action via the DOM - settings open + Models tab, customization to Actions/Skills, dashboard New Agent + Browser webview mount, Add App picker - so animation-timing and AC-runtime bugs surface rather than only slice state corruption, with agent-touching send-message gated on ANTHROPIC_API_KEY/etc being wired
|
2026-05-28 09:38:43 -07:00 |
|
Eric
|
c55f802731
|
[eric] e2e: settings-pairwise gains OPENSWARM_E2E_THROUGH_BACKEND=1 mode that issues the real PUT /api/settings round-trip using the renderer auth token and dispatches the response, exercising the backend pydantic validation, write-lock, and slice-shape contract instead of bypassing them with a local fulfilled-action dispatch
|
2026-05-28 09:38:35 -07:00 |
|
Eric
|
6353bbddda
|
[eric] electron+e2e: close the init-script race - main reads OPENSWARM_E2E env on startup and appends an --openswarm-e2e chromium switch, preload reads the switch BEFORE any page script parses and contextBridge-exposes __OPENSWARM_E2E__=true so the production store-on-window gate fires deterministically rather than racing addInitScript against bundle parse
|
2026-05-28 09:38:29 -07:00 |
|
Eric
|
d8c4aeb137
|
[eric] e2e+ci: addInitScript in launchApp setting __OPENSWARM_E2E__=true before bundle.js parses so the production-build store-on-window gate fires for specs that drive Redux directly, plus chain selftest-pairwise into verify-all and the e2e workflow so the covering-array math is validated on every CI push
|
2026-05-28 09:35:27 -07:00 |
|
Eric
|
b0d7d8209c
|
[eric] e2e: add onboarding-completion spec that drives every step via markStepCompleted/unmarkStepCompleted across three orderings (sequential 1-8, skip pattern 1-2-4-3-5-7-6-8, full unmark+re-mark idempotency) plus same-id idempotency and roadmap-counter agreement, regressing the AC animation leak class historically caused by re-firing completed-step transitions
|
2026-05-28 09:35:21 -07:00 |
|
Eric
|
510d2bdd42
|
[eric] e2e: add settings-pairwise spec that applies each generated row via the settings/update/fulfilled action, asserts every switch persisted + theme localStorage took + zero renderer crash + zero unexpected console errors, with OPENSWARM_E2E_EXHAUSTIVE=1 switching to the full sixty-four-row cartesian
|
2026-05-28 09:35:15 -07:00 |
|
Eric
|
27b31c80f1
|
[eric] ci: add selftest-pairwise that vendors the pairwise generator and asserts every-pair-covered, deterministic, bounded, and isCovering correctly fails on incomplete row sets, catching a future regression that drops the all-pairs guarantee before any e2e spec runs
|
2026-05-28 09:35:15 -07:00 |
|
Eric
|
8bcc18c99c
|
[eric] e2e: add helpers/pairwise with an IPO-style covering-array generator that seeds each row from an uncovered pair (fixing the greedy tie-break bug a pure-greedy hits) plus cartesian for opt-in exhaustive mode, returning eight rows that cover all sixty pairs of the six binary settings instead of the full sixty-four
|
2026-05-28 09:35:07 -07:00 |
|
Eric
|
643f159205
|
[eric] ci: change dogfood cron from every-six-hours to every-two-hours so twelve consecutive clean runs accrue in twenty-four hours instead of three days while keeping cost at roughly one third of an every-thirty-minutes cadence
|
2026-05-28 09:24:01 -07:00 |
|
Eric
|
d6dd58bc65
|
[eric] ci: add dogfood.yml scheduled every six hours across windows-latest+macos-13+macos-14 that builds, runs verify-dogfood, uploads the per-leg manifest, then aggregates into preflight-tunings.json; gate both release-windows and release-macos on a release-gate job that downloads the latest tunings via gh run download and runs verify-release-readiness so a v* tag halts before signing if the dogfood loop has not validated twelve consecutive clean runs per platform
|
2026-05-28 09:17:21 -07:00 |
|
Eric
|
b0b3bff91d
|
[eric] ci: add dogfood-aggregator that walks the rolling manifest, computes per-platform per-check warn/fail rates, emits preflight-tunings.json with a demote list when a check exceeds 2x the false-positive tolerance, and writes a release-readiness block the v* gate reads; preflight.js loadTunings/applyTunings honors the demote list at runtime so a chronically-noisy check gets silently downgraded to warn on subsequent boots
|
2026-05-28 09:17:15 -07:00 |
|
Eric
|
db6419fe7e
|
[eric] ci: add verify-dogfood that launches the packaged app, parses the [preflight2] line, INDEPENDENTLY verifies boot evidence (provenance==HEAD, perf marks ordered, health 200, no renderer-gone), and fails red when verdict and reality disagree, recording every run to dogfood-manifest.jsonl for the aggregator
|
2026-05-28 09:17:07 -07:00 |
|
Eric
|
d5491ff15e
|
[eric] ci: add verify-packaging-parity that pulls every $STAGING_DIR/<x> from build-app.sh and every Join-Path $Staging '<x>' from build-app-win.ps1 then asserts both stage the same set of dirs and that every extraResources from in electron/package.json is staged by both, with webapp-template-node-modules as the one documented mac-only exception
|
2026-05-28 02:49:22 -07:00 |
|
Eric
|
c7a195198a
|
[eric] ci: extend selftest-gate with cross-gate preflight mutation tests so a regression that turns withTimeout into fail-on-hang or readCache into stale-version-passes makes the boot-pipeline gate selftest also go red
|
2026-05-28 02:49:16 -07:00 |
|
Eric
|
7fb57cea5e
|
[eric] electron: defer the preflight cache-write until both preflight finished AND backend-http-ready fired so a kill in the window between cannot leave a verdict=ok token that masks a real boot break on the next launch, plus honor settings.preflight_enabled and a deterministic installation_id-bucket cohort gate
|
2026-05-28 02:49:11 -07:00 |
|
Eric
|
e8fd9ceb5a
|
[eric] backend: add preflight_enabled (default true) and preflight_rollout_pct (default 100) to AppSettings so the runtime preflight can be killed per-install via the existing settings sync or staged 5/25/100 by the cloud cohort gate without a release
|
2026-05-28 02:49:06 -07:00 |
|
Eric
|
6fc7e23bbe
|
[eric] ci: chain the four new preflight verifiers (selftest, rigs, race, matrix) at the head of verify-all and add hostile-env legs to e2e.yml so network=blocked + appdata=readonly + lang=de-DE all run on every push
|
2026-05-28 02:13:21 -07:00 |
|
Eric
|
1396372c8f
|
[eric] electron: wire the preflight module into main next to logPreflight, honor OPENSWARM_DISABLE_PREFLIGHT=1 kill switch, fire async so it overlaps with backend spawn instead of adding to boot, emit a [preflight2] verdict line and fold the result into the boot beacon payload
|
2026-05-28 02:13:14 -07:00 |
|
Eric
|
3faacf761c
|
[eric] ci: add verify-preflight Layer 5 matrix verifier that reads OPENSWARM_TEST_NETWORK/_APPDATA/_LANG and asserts the verdict matches the expected envelope per scenario, catching the false-positive class where network=blocked produces fail instead of warn
|
2026-05-28 02:13:09 -07:00 |
|
Eric
|
051ddf5cd7
|
[eric] ci: add verify-preflight-race Layer 4 that runs twenty parallel preflights asserting no cache contention, then writes a version-keyed token + corrupts it + asserts the next read returns null so mid-boot kill cannot poison a future boots cached verdict
|
2026-05-28 02:13:09 -07:00 |
|
Eric
|
ddcf2f08df
|
[eric] ci: add verify-preflight-rigs Layer 3 that spins up hanging http, 500 server, close-mid-handshake, EACCES writeFileSync, and a German pwsh stub then drives the WHOLE preflight against each rig asserting the failing-check name + no neighbor corruption + total runtime under budget
|
2026-05-28 02:13:00 -07:00 |
|
Eric
|
83182b0dfd
|
[eric] ci: add selftest-preflight Layer 1+2 with thirty-eight assertions covering happy paths plus every production failure branch (mips arch, German PowerShell output, statfs throws, dns module missing) and never-resolving fakes for hang fuzz
|
2026-05-28 02:13:00 -07:00 |
|
Eric
|
4843d993d3
|
[eric] electron: add preflight module with nine env-injected checks (os, resources, appdata-writable, security-block, system-libs, network, gpu, dual-stack, clock) each wrapped by withTimeout that turns hangs into warn-not-fail, plus version-keyed cache read/write/prune so subsequent launches skip the work and a version bump deletes the stale token
|
2026-05-28 02:12:52 -07:00 |
|
Eric
|
f9e596160c
|
[eric] ci: chain the five new gates (python-health, mcp-bundles, update-feed, 9router-functional, clean-profile) into verify-all so every leg now exercises bundled-python, mcp init handshake, update feed sha512, router functional routing, and the truly-empty-profile invariant
|
2026-05-28 01:25:14 -07:00 |
|
Eric
|
485ddaf86d
|
[eric] ci: extend selftest-gate with mutation tests for the new update-feed parser (good yaml passes, missing files[] returns zero) and confirm all twenty-eight discriminators still discriminate
|
2026-05-28 01:25:08 -07:00 |
|
Eric
|
739d73ac4c
|
[eric] ci: add verify-9router-functional that polls GET :20128/api/providers and asserts 200+JSON so a router that listens on the tcp port but 500s every real request fails red instead of being silently masked by the tcp-only probe in verify-network
|
2026-05-28 01:25:03 -07:00 |
|
Eric
|
f28c9afac9
|
[eric] ci: add verify-clean-profile (ci-only, gated on CI=true or OPENSWARM_E2E_WIPE=1) that wipes the user data dir, launches, and asserts the app boots+serves+populates backend.log/auth.token from a truly empty profile so first-time-user code paths cant assume prior state
|
2026-05-28 01:24:56 -07:00 |
|
Eric
|
806b4fba44
|
[eric] ci: add verify-artifact-manifest that sha256s every file in the packaged dist and either writes a baseline (--write) or diffs against the committed one, catching non-deterministic build steps that survive even fully-pinned dependencies
|
2026-05-28 01:24:51 -07:00 |
|
Eric
|
0b10fd9ba8
|
[eric] ci: add verify-update-feed that parses latest.yml/latest-mac*.yml without applying an update, asserts every advertised file exists on disk and its sha512+size match, so a release with a busted feed cant ship an update that bricks on apply
|
2026-05-28 01:24:45 -07:00 |
|
Eric
|
44233419e4
|
[eric] ci: add verify-mcp-bundles that spawns each vendored bundle (notion, reddit-buddy, softeria-ms365) under the bundled node and asserts an mcp initialize round-trip so a corrupted esbuild output cant ship green
|
2026-05-28 01:24:40 -07:00 |
|
Eric
|
41117d6185
|
[eric] ci: add verify-python-health that execs the bundled interpreter, asserts python 3.13+, and imports the heaviest backend deps so a missing vcredist dll or half-extracted python-env fails the build red instead of giving users a renderer-up-but-backend-dead boot
|
2026-05-28 01:24:35 -07:00 |
|
Eric
|
32fb3091be
|
[eric] ci: chain deps-pinned and host-leakage first in verify-all so the cheap pure-logic gates fail fast before the build-launch gates spend minutes booting an already-doomed artifact
|
2026-05-28 00:56:04 -07:00 |
|
Eric
|
c5bfc00540
|
[eric] ci: extend selftest-gate with mutation tests for the new deps-pinned and host-leakage gates so a future weakening of either guard is caught before the build leg runs
|
2026-05-28 00:55:59 -07:00 |
|
Eric
|
e8f32da42d
|
[eric] backend: pin the six previously-unpinned requirements (jsonschema, fastapi, pillow, httpx, trafilatura, tzlocal) to the exact versions baked into the last working packaged build so deps-pinned passes and reproducibility actually matches the header comment
|
2026-05-28 00:55:55 -07:00 |
|
Eric
|
d7b7128c6e
|
[eric] ci: add verify-deps-pinned that fails when backend/requirements.txt has any bare-name, floor (>=), or compat (~=) entry since pip would otherwise resolve those to latest-matching and two builds from the same git sha would ship different bytes
|
2026-05-28 00:55:50 -07:00 |
|
Eric
|
19ca4d81ae
|
[eric] ci: add verify-host-leakage that string-scans the packaged artifact (text files + app.asar) for the build hosts username and home dir, with PEP 610 dist-info metadata auto-allowed since it does not affect runtime
|
2026-05-28 00:55:45 -07:00 |
|
Eric
|
fc51057158
|
[eric] e2e: wire a11y+heap snapshots, opt-in visual-diff baselines, and an aftereach failure dump into the combinatorial spec so every test now leaves a forensic trail
|
2026-05-28 00:41:30 -07:00 |
|
Eric
|
4b6040ade0
|
[eric] e2e: extend visibility to capture redux diffs, ipc invokes with timings, electron main stdout/stderr, chromium perfetto trace, js+css coverage, on-demand heap and a11y snapshots, plus per-test failure dumps with redux state and event tail
|
2026-05-28 00:41:26 -07:00 |
|
Eric
|
c44bd07fe7
|
[eric] frontend: extend the store-on-window gate so an init-script flag also exposes it on production builds, letting e2e subscribe to redux diffs against the packaged app
|
2026-05-28 00:41:21 -07:00 |
|
Eric
|
969cc07a5e
|
[eric] ci: gitignore the per-run e2e trace dir and upload it as an artifact on every leg so a failed run is downloadable, not a black box
|
2026-05-28 00:35:20 -07:00 |
|
Eric
|
4e7b8a93e9
|
[eric] e2e: wire the visibility recorder into the combinatorial and round-trip specs so every action gets a per-test timeline file alongside the playwright trace
|
2026-05-28 00:35:16 -07:00 |
|
Eric
|
ff93a24d74
|
[eric] e2e: add a visibility recorder that streams playwright trace, console+network+pageerror, websocket frames, mouse/wheel/keys with high-res timestamps, longtask events, and live backend log into a per-test directory so a failure shows the full causal chain
|
2026-05-28 00:35:11 -07:00 |
|
Eric
|
4f45857cae
|
[eric] e2e: add a real-agent-roundtrip spec that types a tiny prompt, sends it, and asserts an assistant bubble arrives with non-empty text, auto-skipping when no provider env key is wired
|
2026-05-27 23:25:51 -07:00 |
|
Eric
|
6ec943666a
|
[eric] e2e: extend the launch seed to pull provider api keys from env so nothing lives on disk outside the per-user app-support settings file
|
2026-05-27 23:25:46 -07:00 |
|
Eric
|
1efaf7135c
|
[eric] e2e: add a combinatorial-flows spec with strict post-conditions, page+console error capture, and a self-check that proves must() actually fails
|
2026-05-27 23:22:03 -07:00 |
|
Eric
|
ac2662353e
|
[eric] e2e: make deep-coverages safeclick throw on missing required targets instead of annotating a skip and passing
|
2026-05-27 23:21:59 -07:00 |
|