@engineeros/connector 1.57.0 → 1.58.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -455,6 +455,20 @@ Include exactly one designed case reference in each implemented test name, such
455
455
 
456
456
  Use connector 1.40.0 with backend migration `20261015_000132`. If verification says the per-case report or inventory is missing, correct the reporting command or connector and continue through the existing Goal. Work and failed measurements are preserved. Delete the implementation Goal only when intentionally starting over; repeated selections reuse its ownership.
457
457
 
458
+ ## Checked writing (Automate tests keep checks)
459
+
460
+ **Automate tests** writes tests for designed cases in a worker of its own and leaves them uncommitted. With connector 1.58.0 and a backend that sends `checks`, a written test is kept only for a reason. The connector advertises `test_checks` when it can do this.
461
+
462
+ - **What runs.** In a clean copy of the repository (the checkout's commit plus the task's test files, nothing else) the selected tests run three times; the third run puts every test file on a command of its own, which finds tests that depend on each other's order. A test that passes fewer than three times is flaky and goes back to the writing session. Then small, repeatable changes (a comparison flipped, a sign swapped, a condition negated, a returned value dropped) are made, one at a time, to the lines the test covers, and the test is kept only when at least one of them makes it fail. A change that breaks the build, or a run that times out, is discarded and counts for nothing.
463
+ - **Where.** Two Git worktrees under `.engineeros/test-workers/`: the task's worker (`1`, `2` ...) and the clean copy (`v1`, `v2` ...). Mutated files are restored in a `finally`, whatever happens. The covered lines come from the runner's own coverage where it is already installed (coverage.py, Jest, a Vitest coverage provider, `node --test` through V8, Go's cover profile); otherwise from the symbols the test names in the files it imports. Nothing is installed.
464
+ - **What it writes.** Nothing in your checkout from the checks. A test that passed but was rejected is removed and a copy is kept under `.engineeros/test-automation/<task>/rejected/`. A reproducer for a bug the product really has is saved under `.engineeros/proven-bugs/<task>/` and never left in the suite. Both folders are git-ignored.
465
+ - **Where no mutant can be made** (a UI test, an end-to-end test, a language this does not mutate) an ordinary case is kept on three clean passes and an assertion, and is labelled `repeat_only`. Behaviour-as-found and catching tests have no fallback: no killed mutant, no keep.
466
+ - **Repairs.** A case that fails gets two plain repairs and then one more as the `replan` task class, a step higher, before its tests are removed.
467
+ - **Cost in time.** The mutant work has a wall-clock budget of 20 minutes per task (`ENGINEEROS_MUTANT_BUDGET_MS`, in milliseconds). Cases not reached are reported as skipped for the budget; it never limits tokens.
468
+ - **Turn it off.** Set `ENGINEEROS_TEST_CHECKS=off` in the connector's environment. The connector then stops advertising `test_checks`, and tests are kept as they were before 1.58.0.
469
+
470
+ Jest, Go (`go test -json`), Maven, Gradle and Playwright are written and checked as well as pytest, Vitest and `node --test`. Playwright has nothing to mutate and is kept `repeat_only`. A gap design is sent the diff of the commit it is scoped to (`git diff --unified=2`, without generated files, lockfiles and tests), bounded per file with the cut stated.
471
+
458
472
  ## Record CI test results
459
473
 
460
474
  Your CI can record each test suite's results in EngineerOS, where they sit beside manual and scheduled results on the project's Quality page, link to the test inventory, and open or resolve defects. No pairing is needed. Have your test runner write JUnit XML (pytest `--junitxml`, Vitest `--reporter=junit`, `jest-junit`, Playwright's `junit` reporter, `node --test --test-reporter=junit`, Maven Surefire, `go-junit-report`, `dotnet test --logger junit`), then run this after the tests, also when they failed: