@patronage/software-factory 1.0.0-alpha.27 → 1.0.0-alpha.29

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/schemas.d.ts CHANGED
@@ -531,6 +531,33 @@ interface PrVerifyCommandResult {
531
531
  name: string;
532
532
  scope: "docs-only" | "trivial" | "full";
533
533
  }
534
+ /**
535
+ * One failing test a verification command reported (#1035).
536
+ *
537
+ * The proof keeps the failing test's IDENTITY and its failure CLASS, and
538
+ * nothing else. That is enough to decide retry-or-fix — a `timeout` under
539
+ * machine load is a flake, an `assertion` is a real break — without rerunning
540
+ * the aggregate to read a title off the console.
541
+ *
542
+ * It deliberately keeps no raw output tail and no error message body. This
543
+ * payload is transmitted to HQ ingest, and arbitrary command output can carry
544
+ * secrets (an echoed environment, a connection string inside a stack frame). A
545
+ * file path, a test title, and a closed `kind` enum cannot. The cost is the
546
+ * assertion diff and the stack frames: they help you FIX a failure, and the
547
+ * operator still reads them from the run's own console output.
548
+ */
549
+ interface PrVerifyTestFailure {
550
+ /** The test file the reporter named, as the reporter wrote it. */
551
+ file: string;
552
+ /**
553
+ * The failure class. `timeout` is the test-timeout error vitest raises at
554
+ * its own ceiling; `assertion` is a failed expectation; `error` is every
555
+ * other thrown failure.
556
+ */
557
+ kind: "assertion" | "error" | "timeout";
558
+ /** The full test title, suite names included, as the reporter wrote it. */
559
+ title: string;
560
+ }
534
561
  interface PrVerifyExecutedCommand {
535
562
  command: string;
536
563
  counts?: {
@@ -539,6 +566,12 @@ interface PrVerifyExecutedCommand {
539
566
  };
540
567
  durationMs: number;
541
568
  exitCode: number;
569
+ /**
570
+ * The failing tests this command reported (#1035). Present only when the
571
+ * command produced parseable failures, so a passing command's record is
572
+ * byte-identical to the one it wrote before this field existed.
573
+ */
574
+ failures?: PrVerifyTestFailure[];
542
575
  name: string;
543
576
  scope: "docs-only" | "trivial" | "full";
544
577
  }
@@ -640,6 +673,15 @@ declare const prVerifyProofSchema: z.ZodObject<{
640
673
  }, z.core.$strip>>;
641
674
  durationMs: z.ZodNumber;
642
675
  exitCode: z.ZodNumber;
676
+ failures: z.ZodOptional<z.ZodArray<z.ZodObject<{
677
+ file: z.ZodString;
678
+ kind: z.ZodEnum<{
679
+ error: "error";
680
+ assertion: "assertion";
681
+ timeout: "timeout";
682
+ }>;
683
+ title: z.ZodString;
684
+ }, z.core.$strip>>>;
643
685
  name: z.ZodString;
644
686
  scope: z.ZodEnum<{
645
687
  trivial: "trivial";
@@ -734,6 +776,14 @@ interface PrReadyProof {
734
776
  headSha: string;
735
777
  outcome: "armed" | "merged" | "not-armed";
736
778
  };
779
+ /**
780
+ * The authoring session readiness resolved for the review-independence
781
+ * cross-check (#1037). Recorded so the branded check can print it beside the
782
+ * review session, model, and producer the ledger already carries — the four
783
+ * identities a human weighs at merge time. Additive and optional: proofs
784
+ * written before it carry no field, so no schema version moves.
785
+ */
786
+ authoringSession?: string;
737
787
  /**
738
788
  * Why this run blocked, one entry per refusing demand (#391): `code` is the
739
789
  * demand key from the resolver's vocabulary, `detail` the one-sentence
@@ -853,8 +903,8 @@ declare const closeoutArtifactSchema: z.ZodObject<{
853
903
  }, z.core.$strict>;
854
904
  unit: z.ZodEnum<{
855
905
  boolean: "boolean";
856
- count: "count";
857
906
  text: "text";
907
+ count: "count";
858
908
  tokens: "tokens";
859
909
  usd: "usd";
860
910
  }>;
@@ -1014,6 +1064,7 @@ declare const prReadyProofSchema: z.ZodObject<{
1014
1064
  "not-armed": "not-armed";
1015
1065
  }>;
1016
1066
  }, z.core.$strip>>;
1067
+ authoringSession: z.ZodOptional<z.ZodString>;
1017
1068
  blockedReasons: z.ZodOptional<z.ZodArray<z.ZodObject<{
1018
1069
  code: z.ZodString;
1019
1070
  detail: z.ZodString;
package/dist/schemas.js CHANGED
@@ -1171,6 +1171,15 @@ const assertPrVerifyProofRules = (proof, context) => {
1171
1171
  * factory must adopt this release before HQ ingests its pr:verify proofs.
1172
1172
  */
1173
1173
  const SUPPORTED_PR_VERIFY_SCHEMA_VERSIONS = [4];
1174
+ const prVerifyTestFailureSchema = z.object({
1175
+ file: z.string().min(1),
1176
+ kind: z.enum([
1177
+ "assertion",
1178
+ "error",
1179
+ "timeout"
1180
+ ]),
1181
+ title: z.string().min(1)
1182
+ });
1174
1183
  const executedCommandSchema = z.object({
1175
1184
  command: z.string().min(1),
1176
1185
  counts: z.object({
@@ -1179,6 +1188,7 @@ const executedCommandSchema = z.object({
1179
1188
  }).optional(),
1180
1189
  durationMs: z.number().nonnegative(),
1181
1190
  exitCode: z.number(),
1191
+ failures: z.array(prVerifyTestFailureSchema).min(1).optional(),
1182
1192
  name: z.string().min(1),
1183
1193
  scope: z.enum([
1184
1194
  "docs-only",
@@ -1614,6 +1624,7 @@ const prReadyProofSchema = z.object({
1614
1624
  "not-armed"
1615
1625
  ])
1616
1626
  }).optional(),
1627
+ authoringSession: z.string().min(1).optional(),
1617
1628
  blockedReasons: blockedReasonsSchema.optional(),
1618
1629
  blockingReasons: z.array(z.string()),
1619
1630
  command: z.literal("patronage-factory pr:ready"),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@patronage/software-factory",
3
- "version": "1.0.0-alpha.27",
3
+ "version": "1.0.0-alpha.29",
4
4
  "description": "Shared Patronage software factory CLI and project-profile validation tools",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -37,7 +37,7 @@
37
37
  "picomatch": "^4.0.5",
38
38
  "yaml": "^2.9.0",
39
39
  "zod": "4.4.3",
40
- "@patronage/factory-ci": "1.0.0-alpha.27"
40
+ "@patronage/factory-ci": "1.0.0-alpha.29"
41
41
  },
42
42
  "devDependencies": {
43
43
  "@types/node": "24.13.3",