@patronage/software-factory 1.0.0-alpha.0 → 1.0.0-alpha.10
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/CONTEXT.md +10 -0
- package/README.md +14 -6
- package/dist/index.d.ts +26 -27
- package/dist/index.js +1299 -491
- package/dist/schemas.d.ts +6 -4
- package/dist/schemas.js +10 -8
- package/package.json +7 -3
package/dist/schemas.d.ts
CHANGED
|
@@ -493,11 +493,11 @@ interface PrReadyProof {
|
|
|
493
493
|
*/
|
|
494
494
|
declare const impactStampSchema: z.ZodObject<{
|
|
495
495
|
basis: z.ZodEnum<{
|
|
496
|
-
"
|
|
496
|
+
"target-scoped": "target-scoped";
|
|
497
497
|
conservative: "conservative";
|
|
498
498
|
}>;
|
|
499
499
|
reasons: z.ZodArray<z.ZodString>;
|
|
500
|
-
stampVersion: z.ZodLiteral<
|
|
500
|
+
stampVersion: z.ZodLiteral<3>;
|
|
501
501
|
targets: z.ZodArray<z.ZodObject<{
|
|
502
502
|
basis: z.ZodString;
|
|
503
503
|
impact: z.ZodEnum<{
|
|
@@ -506,6 +506,7 @@ declare const impactStampSchema: z.ZodObject<{
|
|
|
506
506
|
}>;
|
|
507
507
|
name: z.ZodString;
|
|
508
508
|
}, z.core.$strip>>;
|
|
509
|
+
unsubscribedPaths: z.ZodArray<z.ZodString>;
|
|
509
510
|
}, z.core.$strip>;
|
|
510
511
|
type ImpactStamp = z.infer<typeof impactStampSchema>;
|
|
511
512
|
//#endregion
|
|
@@ -1362,11 +1363,11 @@ declare const prVerifyProofSchema: z.ZodObject<{
|
|
|
1362
1363
|
headSha: z.ZodString;
|
|
1363
1364
|
impactStamp: z.ZodOptional<z.ZodObject<{
|
|
1364
1365
|
basis: z.ZodEnum<{
|
|
1365
|
-
"
|
|
1366
|
+
"target-scoped": "target-scoped";
|
|
1366
1367
|
conservative: "conservative";
|
|
1367
1368
|
}>;
|
|
1368
1369
|
reasons: z.ZodArray<z.ZodString>;
|
|
1369
|
-
stampVersion: z.ZodLiteral<
|
|
1370
|
+
stampVersion: z.ZodLiteral<3>;
|
|
1370
1371
|
targets: z.ZodArray<z.ZodObject<{
|
|
1371
1372
|
basis: z.ZodString;
|
|
1372
1373
|
impact: z.ZodEnum<{
|
|
@@ -1375,6 +1376,7 @@ declare const prVerifyProofSchema: z.ZodObject<{
|
|
|
1375
1376
|
}>;
|
|
1376
1377
|
name: z.ZodString;
|
|
1377
1378
|
}, z.core.$strip>>;
|
|
1379
|
+
unsubscribedPaths: z.ZodArray<z.ZodString>;
|
|
1378
1380
|
}, z.core.$strip>>;
|
|
1379
1381
|
mergeBaseSha: z.ZodOptional<z.ZodString>;
|
|
1380
1382
|
mode: z.ZodEnum<{
|
package/dist/schemas.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import "yaml";
|
|
3
|
+
import "picomatch";
|
|
3
4
|
//#region src/review-rungs.ts
|
|
4
5
|
const EVIDENCE_REVIEW_RUNGS$1 = [
|
|
5
6
|
"independent-model",
|
|
@@ -239,16 +240,17 @@ const impactStampTargetSchema = z.object({
|
|
|
239
240
|
* input widened every target to full impact.
|
|
240
241
|
*/
|
|
241
242
|
const impactStampSchema = z.object({
|
|
242
|
-
basis: z.enum(["
|
|
243
|
+
basis: z.enum(["target-scoped", "conservative"]),
|
|
243
244
|
reasons: z.array(z.string()),
|
|
244
|
-
stampVersion: z.literal(
|
|
245
|
+
stampVersion: z.literal(3),
|
|
245
246
|
targets: z.array(impactStampTargetSchema).superRefine((targets, context) => {
|
|
246
247
|
const names = targets.map((target) => target.name);
|
|
247
248
|
if (new Set(names).size !== names.length) context.addIssue({
|
|
248
249
|
code: "custom",
|
|
249
250
|
message: "impact stamp targets must have distinct names."
|
|
250
251
|
});
|
|
251
|
-
})
|
|
252
|
+
}),
|
|
253
|
+
unsubscribedPaths: z.array(z.string())
|
|
252
254
|
});
|
|
253
255
|
/**
|
|
254
256
|
* The surfaces that consume the stamp. One classification, consumed
|
|
@@ -267,7 +269,7 @@ const IMPACT_SCOPE_SURFACES = {
|
|
|
267
269
|
* external proof demand (#542 wave 2), a verification-battery command, or a
|
|
268
270
|
* preview (Alchemy) lifecycle stack (#430 wave 3).
|
|
269
271
|
*
|
|
270
|
-
* The only release path is a `
|
|
272
|
+
* The only release path is a `target-scoped` stamp of exactly this build's
|
|
271
273
|
* stamp version whose target entry for exactly this name is provably
|
|
272
274
|
* `not-affected`. Every other input — no trusted stamp, an unknown stamp
|
|
273
275
|
* version, a conservative stamp, a name the stamp does not classify, or an
|
|
@@ -286,11 +288,11 @@ const impactStampScopeDecision = ({ stamp, surface, targetName }) => {
|
|
|
286
288
|
reason: `no trusted identity-bound impact stamp covers this candidate; ${floor}`,
|
|
287
289
|
scoped: false
|
|
288
290
|
};
|
|
289
|
-
if (stamp.stampVersion !==
|
|
290
|
-
reason: `impact stamp version ${String(stamp.stampVersion)} is not this build's version
|
|
291
|
+
if (stamp.stampVersion !== 3) return {
|
|
292
|
+
reason: `impact stamp version ${String(stamp.stampVersion)} is not this build's version 3; ${floor}`,
|
|
291
293
|
scoped: false
|
|
292
294
|
};
|
|
293
|
-
if (stamp.basis !== "
|
|
295
|
+
if (stamp.basis !== "target-scoped") return {
|
|
294
296
|
reason: `impact stamp is conservative (full impact assumed); ${floor}`,
|
|
295
297
|
scoped: false
|
|
296
298
|
};
|
|
@@ -435,7 +437,7 @@ const assertBatteryCompleteness = (proof, context) => {
|
|
|
435
437
|
* so authorization is bound to the same identities the proof binds. The
|
|
436
438
|
* predicate is the shared {@link impactStampScopeDecision}, not a second
|
|
437
439
|
* reading of the stamp: an entry is authorized exactly when the stamp would
|
|
438
|
-
* have released that target's command in the first place (
|
|
440
|
+
* have released that target's command in the first place (target-scoped
|
|
439
441
|
* basis, this build's stamp version, exactly one row for the target,
|
|
440
442
|
* `not-affected`). A conservative stamp, an unknown version, a
|
|
441
443
|
* self-contradictory stamp, an unclassified name, or an `affected` verdict all
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@patronage/software-factory",
|
|
3
|
-
"version": "1.0.0-alpha.
|
|
3
|
+
"version": "1.0.0-alpha.10",
|
|
4
4
|
"description": "Shared Patronage software factory CLI and project-profile validation tools",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -29,13 +29,15 @@
|
|
|
29
29
|
}
|
|
30
30
|
},
|
|
31
31
|
"publishConfig": {
|
|
32
|
-
"access": "public"
|
|
32
|
+
"access": "public",
|
|
33
|
+
"tag": "next"
|
|
33
34
|
},
|
|
34
35
|
"dependencies": {
|
|
35
36
|
"commander": "14.0.3",
|
|
36
37
|
"picomatch": "^4.0.5",
|
|
37
38
|
"yaml": "^2.9.0",
|
|
38
|
-
"zod": "4.4.3"
|
|
39
|
+
"zod": "4.4.3",
|
|
40
|
+
"@patronage/factory-ci": "1.0.0-alpha.10"
|
|
39
41
|
},
|
|
40
42
|
"devDependencies": {
|
|
41
43
|
"@types/node": "24.13.3",
|
|
@@ -75,6 +77,8 @@
|
|
|
75
77
|
"profile:schema": "tsx scripts/generate-profile-schema.ts",
|
|
76
78
|
"pretest": "bash ../scripts/ensure-worktree-bootstrap.sh",
|
|
77
79
|
"test": "vitest run",
|
|
80
|
+
"pretest:profile": "bash ../scripts/ensure-worktree-bootstrap.sh",
|
|
81
|
+
"test:profile": "tsx scripts/vitest-profile.ts",
|
|
78
82
|
"pretest:stress": "bash ../scripts/ensure-worktree-bootstrap.sh",
|
|
79
83
|
"test:stress": "node scripts/stress-tests.mjs",
|
|
80
84
|
"pretypecheck": "bash ../scripts/ensure-worktree-bootstrap.sh",
|