@mrciphersmith/keryx 0.3.131 → 0.3.132

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/dist/core.js CHANGED
@@ -29211,6 +29211,39 @@ function decisionWriters(kind, packageArg = "<review-dir>") {
29211
29211
  import { existsSync as existsSync7 } from "fs";
29212
29212
  import { cp, mkdir as mkdir9, mkdtemp, readFile as readFile22, readdir as readdir11, realpath as realpath12, rm as rm3, symlink, writeFile as writeFile6 } from "fs/promises";
29213
29213
  import path50 from "path";
29214
+
29215
+ // src/lib/git-env.ts
29216
+ var GIT_DISCOVERY_OVERRIDE_VARS = [
29217
+ "GIT_DIR",
29218
+ "GIT_WORK_TREE",
29219
+ "GIT_INDEX_FILE",
29220
+ "GIT_OBJECT_DIRECTORY",
29221
+ "GIT_ALTERNATE_OBJECT_DIRECTORIES",
29222
+ "GIT_COMMON_DIR"
29223
+ ];
29224
+ function withoutGitDiscoveryOverrides(env) {
29225
+ const clean = {};
29226
+ for (const [key, value] of Object.entries(env)) {
29227
+ if (value !== undefined && !GIT_DISCOVERY_OVERRIDE_VARS.includes(key)) {
29228
+ clean[key] = value;
29229
+ }
29230
+ }
29231
+ return clean;
29232
+ }
29233
+
29234
+ // src/review/worktree-provenance.ts
29235
+ var REVIEW_PACKAGES_DIR = ".metaproject/reviews";
29236
+ var EXCLUDE_REVIEW_PACKAGES = `:(exclude)${REVIEW_PACKAGES_DIR}`;
29237
+ var DEFAULT_PROVENANCE_LIMITS = {
29238
+ maxUntrackedFiles: 20000,
29239
+ maxHashedFileBytes: 10 * 1024 * 1024,
29240
+ maxGitOutputBytes: 64 * 1024 * 1024,
29241
+ maxTotalBytes: 256 * 1024 * 1024,
29242
+ gitTimeoutMs: 60000,
29243
+ maxMs: 120000
29244
+ };
29245
+
29246
+ // src/review/mutate.ts
29214
29247
  var MUTANT_KINDS = ["behavior", "presentation"];
29215
29248
  var MUTANTS_SPEC = "mutants.json";
29216
29249
  var EVIDENCE_DIR = "research-evidence";
@@ -38343,25 +38376,6 @@ init_contained_write();
38343
38376
  import { existsSync as existsSync17 } from "fs";
38344
38377
  import { readFile as readFile61, readdir as readdir20 } from "fs/promises";
38345
38378
  import path119 from "path";
38346
-
38347
- // src/lib/git-env.ts
38348
- var GIT_DISCOVERY_OVERRIDE_VARS = [
38349
- "GIT_DIR",
38350
- "GIT_WORK_TREE",
38351
- "GIT_INDEX_FILE",
38352
- "GIT_OBJECT_DIRECTORY",
38353
- "GIT_ALTERNATE_OBJECT_DIRECTORIES",
38354
- "GIT_COMMON_DIR"
38355
- ];
38356
- function withoutGitDiscoveryOverrides(env) {
38357
- const clean = {};
38358
- for (const [key, value] of Object.entries(env)) {
38359
- if (value !== undefined && !GIT_DISCOVERY_OVERRIDE_VARS.includes(key)) {
38360
- clean[key] = value;
38361
- }
38362
- }
38363
- return clean;
38364
- }
38365
38379
  // src/metrics/lifecycle.ts
38366
38380
  init_fs();
38367
38381
  init_guard();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mrciphersmith/keryx",
3
- "version": "0.3.131",
3
+ "version": "0.3.132",
4
4
  "description": "Version-controlled project context for AI coding agents: code graph, architecture wiki, project memory, relevant tests, quality signals, and task flows.",
5
5
  "private": false,
6
6
  "publishConfig": {
@@ -775,6 +775,20 @@ and `.json`. A mutant is `killed` (the suite went red), `survived` (nothing pins
775
775
  behaviour), `timeout`, or `invalid` (anchor missing or not unique, file outside the copy).
776
776
  A survivor is evidence for the finding that names it.
777
777
 
778
+ When `--test` is a plain `[env] [NAME=value] bun test <paths>` command, each mutant runs with
779
+ `--bail` inserted right after `bun test`: the first red test ends that run, so a killed mutant
780
+ costs the time to its first failure, not the whole suite. The baseline always runs in full, and
781
+ a green run is the same with or without the flag, so a survivor stays a survivor. One verdict can move: a mutant that fails an early test and would hang in a later one is `killed` with bail and `timeout` without it. Any other command shape
782
+ (`sh script`, quotes, pipes, `bunx`) runs as given. `--no-bail` turns this off and takes no value.
783
+ The `.json` record carries `bail: true` when it was applied; always `startedAt`, `loadavg` (sampled
784
+ at the start of the pass), `provenanceMs`, `copyMs` and `mutantsMs`; and `head` and `treeHash` only
785
+ when the worktree is the root of a git checkout and the size and time limits of that step held.
786
+ `treeHash` hashes the tracked changes against HEAD (staged or not) and the untracked, non-ignored
787
+ files, so two passes over the same code agree. It leaves out the review packages under
788
+ `.metaproject/reviews`, ignored files (the scratch copy still includes them), the inside of an
789
+ untracked nested repository, and the content of an untracked file over 10 MiB (counted by size).
790
+ Records written before these fields exist stay valid.
791
+
778
792
  `keryx review complete` refuses while proposed mutants are unrun on an attended round, unless the
779
793
  operator waived the pass themselves: the `review_waive_mutation` card in keryx shell, or their answer to
780
794
  the host question recorded with `keryx review waive-mutation --package <review-dir> --reason "<why>"