@kungfu-tech/buildchain 3.0.8 → 3.0.9-alpha.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.
Files changed (79) hide show
  1. package/actions/promote-buildchain-ref/README.md +8 -7
  2. package/bin/buildchain.mjs +34 -33
  3. package/bin/internal/trust-release-release-handlers.mjs +5 -0
  4. package/contracts/fixtures/kfd-adopter-release-v1/kfd-4-perspective.json +16 -0
  5. package/contracts/fixtures/kfd-adopter-release-v1/kfd-4-replay.json +57 -0
  6. package/contracts/release-cut-v1.schema.json +1 -0
  7. package/contracts/release-train-transition-v1.schema.json +1 -0
  8. package/dist/site/agent-index.json +0 -1
  9. package/dist/site/artifact-schemas.json +0 -2
  10. package/dist/site/badge-endpoint-registry.json +9 -9
  11. package/dist/site/badges/v1/kfd-8/aligned.json +1 -1
  12. package/dist/site/badges/v1/kfd-8/declared.json +1 -1
  13. package/dist/site/badges/v1/kfd-8/downgraded.json +1 -1
  14. package/dist/site/badges/v1/kfd-8/draft.json +1 -1
  15. package/dist/site/badges/v1/kfd-8/failed.json +1 -1
  16. package/dist/site/badges/v1/kfd-8/missing.json +1 -1
  17. package/dist/site/badges/v1/kfd-8/passed.json +1 -1
  18. package/dist/site/badges/v1/kfd-8/planned.json +1 -1
  19. package/dist/site/buildchain-contract.json +38 -34
  20. package/dist/site/buildchain-site.json +59 -39
  21. package/dist/site/capability-registry.json +1 -1
  22. package/dist/site/cli-registry.json +8 -7
  23. package/dist/site/controller-registry.json +13 -5
  24. package/dist/site/kfd-claims.json +35 -8
  25. package/dist/site/kfd-upstream-aggregate.json +10 -10
  26. package/dist/site/manual-registry.json +9 -9
  27. package/dist/site/node-api-registry.json +1143 -320
  28. package/dist/site/page-registry.json +46 -26
  29. package/dist/site/public-surface-audit.json +19 -9
  30. package/dist/site/publication-registry.json +4 -4
  31. package/dist/site/release-passport-check-manifest.json +33 -5
  32. package/dist/site/release-provenance.json +2 -1
  33. package/dist/site/schemas/release-passport-v1.schema.json +3 -0
  34. package/dist/site/site-manifest.json +13 -13
  35. package/dist/site/workflow-registry.json +19 -9
  36. package/docs/aws-us-elastic-runner-burst-plane.md +15 -3
  37. package/docs/cli-reference.md +6 -6
  38. package/docs/cli.md +2 -3
  39. package/docs/dev-alpha-candidate-patrol.md +45 -20
  40. package/docs/dev-delivery-warrant.md +12 -2
  41. package/docs/kfd-support.md +7 -7
  42. package/docs/node-api-reference.md +295 -246
  43. package/docs/release-passport.md +25 -12
  44. package/docs/release-train.md +54 -4
  45. package/docs/reusable-build-surface.md +26 -9
  46. package/docs/runtime-train-validation.md +6 -0
  47. package/docs/versioning.md +3 -2
  48. package/package.json +4 -3
  49. package/packages/core/artifact-verification-envelope.js +114 -0
  50. package/packages/core/buildchain-channel-identity.js +119 -0
  51. package/packages/core/buildchain-compatibility-proof.js +32 -0
  52. package/packages/core/buildchain-contract.js +7 -0
  53. package/packages/core/controller-evidence.js +2 -1
  54. package/packages/core/dev-alpha-active-release-train.js +460 -0
  55. package/packages/core/dev-alpha-candidate-selection.js +181 -0
  56. package/packages/core/dev-delivery-warrant.js +15 -4
  57. package/packages/core/index.js +4 -5
  58. package/packages/core/kfd-adopter-manifest.js +390 -0
  59. package/packages/core/kfd-product-gates.js +0 -300
  60. package/packages/core/release-blocker-priority.js +192 -0
  61. package/packages/core/release-passport-contract.js +219 -6
  62. package/packages/core/release-passport.js +139 -242
  63. package/packages/core/release-train.js +220 -0
  64. package/scripts/aws-macos-jit-controller-core.mjs +76 -0
  65. package/scripts/aws-macos-jit-controller.mjs +29 -0
  66. package/scripts/aws-macos-jit-source-rebind.mjs +503 -0
  67. package/scripts/buildchain-channel-router.mjs +18 -2
  68. package/scripts/buildchain-cli-help.mjs +4 -2
  69. package/scripts/buildchain-contract-lock.mjs +11 -1
  70. package/scripts/check-inventory.mjs +4 -4
  71. package/scripts/dev-alpha-candidate-patrol.mjs +196 -201
  72. package/scripts/generate-buildchain-kfd-witnesses.mjs +88 -94
  73. package/scripts/generate-channel-build-workflow.mjs +78 -31
  74. package/scripts/generate-site-bundle.mjs +1 -8
  75. package/scripts/promotion-channel-router.mjs +5 -3
  76. package/scripts/release-train-self-dogfood.mjs +579 -0
  77. package/scripts/runtime-ref-core.mjs +4 -17
  78. package/scripts/site-capability-metadata.mjs +3 -1
  79. package/dist/site/schemas/kfd-support-projection-v1.schema.json +0 -106
@@ -403,13 +403,14 @@ product-owned `release-passport-kfd-3-artifact-verify-command` such as
403
403
  `kungfu agent verify --json`. Buildchain compares declared shipped public
404
404
  surfaces with artifact-exposed public surfaces and writes the result under the
405
405
  KFD-provided `kfd-3` passport section.
406
- Set `release-passport-kfd-support-matrix-json` to the product-owned KFD-1..13
407
- support matrix and `release-passport-kfd-product-gate-jsons` to the
408
- newline-separated KFD-4, KFD-5, and KFD-7 gate results. Buildchain verifies
409
- their exact source, freshness, KFD package revision, matrix barriers, and
410
- gate/matrix agreement, then writes the immutable `kfd-support.json` sibling and
411
- embeds the same projection in `buildchain.release.json`. This projection cannot
412
- self-qualify or widen candidate, unsupported, draft, or non-shipped states.
406
+ Set `release-passport-kfd-adopter-manifest-json` to the standard full-cut
407
+ adopter manifest and `release-passport-kfd-product-gate-jsons` to the
408
+ newline-separated KFD-4, KFD-5, and KFD-7 gate results. Buildchain binds the
409
+ exact published KFD package, registry, verifier set, source, decision witness,
410
+ and product-gate roots into both Passport and artifact evidence. The optional
411
+ `release-passport-kfd-support-matrix-json` is comparison-only; it must exactly
412
+ match the derived `kfd-support.json` compatibility projection and cannot widen
413
+ candidate, unsupported, draft, or non-shipped states.
413
414
  Set `release-passport-invariant-passport-jsons` to one or more product-owned
414
415
  invariant Passport paths, or set `release-passport-invariant-passport-command`
415
416
  to a command that emits one canonical Passport JSON document. Buildchain does
@@ -80,11 +80,14 @@ import {
80
80
  registerKfd3Surfaces,
81
81
  } from "../packages/core/kfd3-surface-register.js";
82
82
  import {
83
- createKfdSupportProjection,
84
83
  evaluateKfdProductGate,
85
84
  validateKfdProductGateResult,
86
- validateKfdSupportProjection,
87
85
  } from "../packages/core/kfd-product-gates.js";
86
+ import {
87
+ createKfdLegacySupportMatrixProjection,
88
+ validateKfdAdopterManifestGate,
89
+ validateKfdLegacySupportMatrixProjection,
90
+ } from "../packages/core/kfd-adopter-manifest.js";
88
91
  import { createBuildchainLayoutDiscovery } from "../packages/core/buildchain-layout.js";
89
92
  import { createPortableDevCachePlan, createPortableDevCacheReceipt } from "../packages/core/portable-dev-cache.js";
90
93
  import {
@@ -727,56 +730,54 @@ function runKfdSupportCli(args = []) {
727
730
  const [action = "", ...rest] = args;
728
731
  const cwd = path.resolve(readFlag(rest, "cwd", process.cwd()));
729
732
  const json = readBooleanFlag(rest, "json");
730
- const checkedAt = readFlag(rest, "checked-at", "") || new Date().toISOString();
733
+ const requestedCheckedAt = readFlag(rest, "checked-at", "");
731
734
  const expectedSourceSha = readFlag(rest, "expected-source-sha", "");
732
735
  if (action === "project") {
733
- const matrixInput = readFlag(rest, "matrix-json", "");
734
- if (!matrixInput) {
735
- throw new Error("buildchain kfd support project requires --matrix-json <file-or-json>");
736
- }
737
- const matrix = readJsonInput(matrixInput, { cwd, label: "KFD support matrix" });
738
- const matrixPath = path.resolve(cwd, matrixInput);
739
- const matrixRoot = fs.existsSync(matrixPath)
740
- ? `sha256:${crypto.createHash("sha256").update(fs.readFileSync(matrixPath)).digest("hex")}`
741
- : "";
742
- const gateResults = readRepeatedJsonInputs(rest, "gate-json", {
743
- cwd,
744
- label: "KFD product gate result",
745
- });
746
- const result = createKfdSupportProjection({
747
- matrix,
748
- matrixRoot,
749
- gateResults,
736
+ const manifestInput = readFlag(rest, "manifest-json", "");
737
+ const gateInput = readFlag(rest, "manifest-gate-json", "");
738
+ if (!manifestInput || !gateInput) {
739
+ throw new Error("buildchain kfd support project requires --manifest-json and --manifest-gate-json");
740
+ }
741
+ const manifest = readJsonInput(manifestInput, { cwd, label: "KFD adopter manifest" });
742
+ const manifestGate = readJsonInput(gateInput, { cwd, label: "KFD adopter manifest gate" });
743
+ const gateValidation = validateKfdAdopterManifestGate(manifestGate, {
750
744
  expectedSourceSha,
751
- checkedAt,
745
+ checkedAt: requestedCheckedAt || manifestGate.checkedAt,
752
746
  });
747
+ if (!gateValidation.valid) throw new Error(`KFD adopter manifest gate is invalid: ${JSON.stringify(gateValidation.issues)}`);
748
+ const result = createKfdLegacySupportMatrixProjection({ manifest, manifestGate });
753
749
  const output = readFlag(rest, "output", "");
754
750
  if (output) writeJsonFile(path.resolve(cwd, output), result);
755
751
  if (json || !output) {
756
752
  printJson(result);
757
753
  } else {
758
- process.stdout.write(`KFD support projection: ${result.status} -> ${output}\n`);
759
- for (const entry of result.issues) {
760
- process.stdout.write(`- ${entry.code}: ${entry.path}: ${entry.message}\n`);
761
- }
754
+ process.stdout.write(`KFD support projection: passed -> ${output}\n`);
762
755
  }
763
- if (result.status !== "passed") process.exitCode = 1;
764
756
  return;
765
757
  }
766
758
  if (action === "verify") {
767
759
  const projectionInput = readFlag(rest, "projection-json", "");
768
- if (!projectionInput) {
769
- throw new Error("buildchain kfd support verify requires --projection-json <file-or-json>");
770
- }
771
- const result = validateKfdSupportProjection(
760
+ const manifestInput = readFlag(rest, "manifest-json", "");
761
+ const gateInput = readFlag(rest, "manifest-gate-json", "");
762
+ if (!projectionInput || !manifestInput || !gateInput) {
763
+ throw new Error("buildchain kfd support verify requires --projection-json, --manifest-json, and --manifest-gate-json");
764
+ }
765
+ const manifest = readJsonInput(manifestInput, { cwd, label: "KFD adopter manifest" });
766
+ const manifestGate = readJsonInput(gateInput, { cwd, label: "KFD adopter manifest gate" });
767
+ const gateValidation = validateKfdAdopterManifestGate(manifestGate, {
768
+ expectedSourceSha,
769
+ checkedAt: requestedCheckedAt || manifestGate.checkedAt,
770
+ });
771
+ const result = validateKfdLegacySupportMatrixProjection(
772
772
  readJsonInput(projectionInput, { cwd, label: "KFD support projection" }),
773
- { expectedSourceSha, checkedAt },
773
+ { manifest, manifestGate },
774
774
  );
775
+ const issues = [...gateValidation.issues, ...result.issues];
775
776
  const report = {
776
777
  schemaVersion: 1,
777
778
  contract: "kungfu-buildchain-kfd-support-projection-verification",
778
- ok: result.valid,
779
- issues: result.issues,
779
+ ok: issues.length === 0,
780
+ issues,
780
781
  };
781
782
  if (json) printJson(report);
782
783
  else process.stdout.write(`KFD support projection verify: ${report.ok ? "passed" : "failed"}\n`);
@@ -242,6 +242,11 @@ async function handleCollectCommand({ args, runScript, packageVersion }) {
242
242
  "kfd-3-artifact-verify-cmd",
243
243
  "",
244
244
  ),
245
+ kfdAdopterManifestJson: readFlag(
246
+ collectArgs,
247
+ "kfd-adopter-manifest-json",
248
+ "",
249
+ ),
245
250
  kfdSupportMatrixJson: readFlag(collectArgs, "kfd-support-matrix-json", ""),
246
251
  kfdProductGateJsons: readRepeatedFlag(collectArgs, "kfd-product-gate-json"),
247
252
  invariantPassportJsons: readRepeatedFlag(
@@ -0,0 +1,16 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "contract": "kfd-4-observer-perspective",
4
+ "standard": "kfd-4",
5
+ "id": "buildchain-release-maintainer-view",
6
+ "observer": { "id": "buildchain-release-maintainer", "kind": "human" },
7
+ "acceptedFacts": [
8
+ { "sourceId": "kungfu-systems/buildchain@{{SOURCE_SHA}}", "sourceKind": "repository" }
9
+ ],
10
+ "projectionPolicy": {
11
+ "policyVersion": "1",
12
+ "causalDominance": true,
13
+ "tieBreaker": "source-coordinate"
14
+ },
15
+ "verification": { "result": "pass" }
16
+ }
@@ -0,0 +1,57 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "contract": "kfd-4-perspective-replay",
4
+ "standard": "kfd-4",
5
+ "replayId": "buildchain-release-product-contrast",
6
+ "mode": "contrastive",
7
+ "sourceViews": [
8
+ {
9
+ "id": "maintainer",
10
+ "kind": "observer-view",
11
+ "coordinate": "git://kungfu-systems/buildchain@{{SOURCE_SHA}}",
12
+ "observer": "buildchain-release-maintainer",
13
+ "perspective": "release-integrity",
14
+ "acceptedFactCut": "git://kungfu-systems/buildchain@{{SOURCE_SHA}}",
15
+ "naturalObjects": ["release"],
16
+ "consequences": ["published artifact"],
17
+ "knownGaps": []
18
+ },
19
+ {
20
+ "id": "consumer",
21
+ "kind": "observer-view",
22
+ "coordinate": "npm://@kungfu-tech/buildchain@{{SOURCE_SHA}}",
23
+ "observer": "buildchain-release-consumer",
24
+ "perspective": "artifact-consumption",
25
+ "acceptedFactCut": "artifact://published-package",
26
+ "naturalObjects": ["installed package"],
27
+ "consequences": ["local build execution"],
28
+ "knownGaps": ["consumer runtime state"]
29
+ }
30
+ ],
31
+ "replayObserver": {
32
+ "id": "buildchain",
33
+ "kind": "service",
34
+ "purpose": "retain source and artifact fact boundaries"
35
+ },
36
+ "reconstruction": {
37
+ "policyVersion": "1",
38
+ "sharedContext": "same source-bound release",
39
+ "preservedElements": ["observer", "accepted-fact-cut", "evidence-boundary"],
40
+ "declaredLoss": ["consumer runtime state"],
41
+ "degradedState": "none"
42
+ },
43
+ "contrast": {
44
+ "dimensions": ["evidence-boundary"],
45
+ "mismatches": [
46
+ {
47
+ "sourceViewIds": ["maintainer", "consumer"],
48
+ "observation": "source and installed artifact evidence have different custody",
49
+ "primitiveSignal": "inconclusive"
50
+ }
51
+ ]
52
+ },
53
+ "verification": {
54
+ "result": "pass",
55
+ "evidence": ["evidence/projection-fsck.json"]
56
+ }
57
+ }
@@ -49,6 +49,7 @@
49
49
  "properties": {
50
50
  "cause": {
51
51
  "enum": [
52
+ "release-blocker-repair",
52
53
  "incompatible-semantics",
53
54
  "alpha-base-incompatibility",
54
55
  "invalid-authority",
@@ -75,6 +75,7 @@
75
75
  },
76
76
  "supersessionCause": {
77
77
  "enum": [
78
+ "release-blocker-repair",
78
79
  "incompatible-semantics",
79
80
  "alpha-base-incompatibility",
80
81
  "invalid-authority",
@@ -22,7 +22,6 @@
22
22
  "schemas/release-tail-provider-bindings-v1.schema.json",
23
23
  "schemas/kfd-agent-hub-adoption.schema.json",
24
24
  "schemas/kfd-product-gate-input-v1.schema.json",
25
- "schemas/kfd-support-projection-v1.schema.json",
26
25
  "buildchain-contract.json",
27
26
  "kfd-upstream-aggregate.json",
28
27
  "kfd-claims.json",
@@ -10,7 +10,6 @@
10
10
  "schemas/release-tail-provider-bindings-v1.schema.json",
11
11
  "schemas/kfd-agent-hub-adoption.schema.json",
12
12
  "schemas/kfd-product-gate-input-v1.schema.json",
13
- "schemas/kfd-support-projection-v1.schema.json",
14
13
  "kfd-support.json",
15
14
  "artifact-evidence.json",
16
15
  "product-mechanism.json",
@@ -48,7 +47,6 @@
48
47
  "schemas/release-tail-provider-bindings-v1.schema.json",
49
48
  "schemas/kfd-agent-hub-adoption.schema.json",
50
49
  "schemas/kfd-product-gate-input-v1.schema.json",
51
- "schemas/kfd-support-projection-v1.schema.json",
52
50
  "buildchain-contract.json",
53
51
  "kfd-claims.json",
54
52
  "product-mechanism.json",
@@ -1138,7 +1138,7 @@
1138
1138
  {
1139
1139
  "id": "kfd-8",
1140
1140
  "label": "KFD-8",
1141
- "messageTemplate": "independently addressable perspective coordinate bound to a perspective holder, declared vantage or decision purpose, admitted Fact cut, typed source authority, freshness conditions, omissions, conflicts, unknowns, and declared transformation loss {state}",
1141
+ "messageTemplate": "KFD-8 {state}",
1142
1142
  "linkRole": "repository-release-passport",
1143
1143
  "states": [
1144
1144
  {
@@ -1148,7 +1148,7 @@
1148
1148
  "payload": {
1149
1149
  "schemaVersion": 1,
1150
1150
  "label": "KFD-8",
1151
- "message": "independently addressable perspective coordinate bound to a perspective holder, declared vantage or decision purpose, admitted Fact cut, typed source authority, freshness conditions, omissions, conflicts, unknowns, and declared transformation loss passed",
1151
+ "message": "KFD-8 passed",
1152
1152
  "color": "2ea44f",
1153
1153
  "logoPolicy": {
1154
1154
  "contract": "kungfu-buildchain-badge-logo-policy",
@@ -1167,7 +1167,7 @@
1167
1167
  "payload": {
1168
1168
  "schemaVersion": 1,
1169
1169
  "label": "KFD-8",
1170
- "message": "independently addressable perspective coordinate bound to a perspective holder, declared vantage or decision purpose, admitted Fact cut, typed source authority, freshness conditions, omissions, conflicts, unknowns, and declared transformation loss aligned",
1170
+ "message": "KFD-8 aligned",
1171
1171
  "color": "0969da",
1172
1172
  "logoPolicy": {
1173
1173
  "contract": "kungfu-buildchain-badge-logo-policy",
@@ -1186,7 +1186,7 @@
1186
1186
  "payload": {
1187
1187
  "schemaVersion": 1,
1188
1188
  "label": "KFD-8",
1189
- "message": "independently addressable perspective coordinate bound to a perspective holder, declared vantage or decision purpose, admitted Fact cut, typed source authority, freshness conditions, omissions, conflicts, unknowns, and declared transformation loss declared",
1189
+ "message": "KFD-8 declared",
1190
1190
  "color": "6e7781",
1191
1191
  "logoPolicy": {
1192
1192
  "contract": "kungfu-buildchain-badge-logo-policy",
@@ -1205,7 +1205,7 @@
1205
1205
  "payload": {
1206
1206
  "schemaVersion": 1,
1207
1207
  "label": "KFD-8",
1208
- "message": "independently addressable perspective coordinate bound to a perspective holder, declared vantage or decision purpose, admitted Fact cut, typed source authority, freshness conditions, omissions, conflicts, unknowns, and declared transformation loss planned",
1208
+ "message": "KFD-8 planned",
1209
1209
  "color": "bf8700",
1210
1210
  "logoPolicy": {
1211
1211
  "contract": "kungfu-buildchain-badge-logo-policy",
@@ -1224,7 +1224,7 @@
1224
1224
  "payload": {
1225
1225
  "schemaVersion": 1,
1226
1226
  "label": "KFD-8",
1227
- "message": "independently addressable perspective coordinate bound to a perspective holder, declared vantage or decision purpose, admitted Fact cut, typed source authority, freshness conditions, omissions, conflicts, unknowns, and declared transformation loss draft",
1227
+ "message": "KFD-8 draft",
1228
1228
  "color": "8250df",
1229
1229
  "logoPolicy": {
1230
1230
  "contract": "kungfu-buildchain-badge-logo-policy",
@@ -1243,7 +1243,7 @@
1243
1243
  "payload": {
1244
1244
  "schemaVersion": 1,
1245
1245
  "label": "KFD-8",
1246
- "message": "independently addressable perspective coordinate bound to a perspective holder, declared vantage or decision purpose, admitted Fact cut, typed source authority, freshness conditions, omissions, conflicts, unknowns, and declared transformation loss downgraded",
1246
+ "message": "KFD-8 downgraded",
1247
1247
  "color": "bf8700",
1248
1248
  "logoPolicy": {
1249
1249
  "contract": "kungfu-buildchain-badge-logo-policy",
@@ -1262,7 +1262,7 @@
1262
1262
  "payload": {
1263
1263
  "schemaVersion": 1,
1264
1264
  "label": "KFD-8",
1265
- "message": "independently addressable perspective coordinate bound to a perspective holder, declared vantage or decision purpose, admitted Fact cut, typed source authority, freshness conditions, omissions, conflicts, unknowns, and declared transformation loss failed",
1265
+ "message": "KFD-8 failed",
1266
1266
  "color": "cf222e",
1267
1267
  "logoPolicy": {
1268
1268
  "contract": "kungfu-buildchain-badge-logo-policy",
@@ -1281,7 +1281,7 @@
1281
1281
  "payload": {
1282
1282
  "schemaVersion": 1,
1283
1283
  "label": "KFD-8",
1284
- "message": "independently addressable perspective coordinate bound to a perspective holder, declared vantage or decision purpose, admitted Fact cut, typed source authority, freshness conditions, omissions, conflicts, unknowns, and declared transformation loss missing",
1284
+ "message": "KFD-8 missing",
1285
1285
  "color": "6e7781",
1286
1286
  "logoPolicy": {
1287
1287
  "contract": "kungfu-buildchain-badge-logo-policy",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
3
  "label": "KFD-8",
4
- "message": "independently addressable perspective coordinate bound to a perspective holder, declared vantage or decision purpose, admitted Fact cut, typed source authority, freshness conditions, omissions, conflicts, unknowns, and declared transformation loss aligned",
4
+ "message": "KFD-8 aligned",
5
5
  "color": "0969da",
6
6
  "logoPolicy": {
7
7
  "contract": "kungfu-buildchain-badge-logo-policy",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
3
  "label": "KFD-8",
4
- "message": "independently addressable perspective coordinate bound to a perspective holder, declared vantage or decision purpose, admitted Fact cut, typed source authority, freshness conditions, omissions, conflicts, unknowns, and declared transformation loss declared",
4
+ "message": "KFD-8 declared",
5
5
  "color": "6e7781",
6
6
  "logoPolicy": {
7
7
  "contract": "kungfu-buildchain-badge-logo-policy",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
3
  "label": "KFD-8",
4
- "message": "independently addressable perspective coordinate bound to a perspective holder, declared vantage or decision purpose, admitted Fact cut, typed source authority, freshness conditions, omissions, conflicts, unknowns, and declared transformation loss downgraded",
4
+ "message": "KFD-8 downgraded",
5
5
  "color": "bf8700",
6
6
  "logoPolicy": {
7
7
  "contract": "kungfu-buildchain-badge-logo-policy",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
3
  "label": "KFD-8",
4
- "message": "independently addressable perspective coordinate bound to a perspective holder, declared vantage or decision purpose, admitted Fact cut, typed source authority, freshness conditions, omissions, conflicts, unknowns, and declared transformation loss draft",
4
+ "message": "KFD-8 draft",
5
5
  "color": "8250df",
6
6
  "logoPolicy": {
7
7
  "contract": "kungfu-buildchain-badge-logo-policy",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
3
  "label": "KFD-8",
4
- "message": "independently addressable perspective coordinate bound to a perspective holder, declared vantage or decision purpose, admitted Fact cut, typed source authority, freshness conditions, omissions, conflicts, unknowns, and declared transformation loss failed",
4
+ "message": "KFD-8 failed",
5
5
  "color": "cf222e",
6
6
  "logoPolicy": {
7
7
  "contract": "kungfu-buildchain-badge-logo-policy",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
3
  "label": "KFD-8",
4
- "message": "independently addressable perspective coordinate bound to a perspective holder, declared vantage or decision purpose, admitted Fact cut, typed source authority, freshness conditions, omissions, conflicts, unknowns, and declared transformation loss missing",
4
+ "message": "KFD-8 missing",
5
5
  "color": "6e7781",
6
6
  "logoPolicy": {
7
7
  "contract": "kungfu-buildchain-badge-logo-policy",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
3
  "label": "KFD-8",
4
- "message": "independently addressable perspective coordinate bound to a perspective holder, declared vantage or decision purpose, admitted Fact cut, typed source authority, freshness conditions, omissions, conflicts, unknowns, and declared transformation loss passed",
4
+ "message": "KFD-8 passed",
5
5
  "color": "2ea44f",
6
6
  "logoPolicy": {
7
7
  "contract": "kungfu-buildchain-badge-logo-policy",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
3
  "label": "KFD-8",
4
- "message": "independently addressable perspective coordinate bound to a perspective holder, declared vantage or decision purpose, admitted Fact cut, typed source authority, freshness conditions, omissions, conflicts, unknowns, and declared transformation loss planned",
4
+ "message": "KFD-8 planned",
5
5
  "color": "bf8700",
6
6
  "logoPolicy": {
7
7
  "contract": "kungfu-buildchain-badge-logo-policy",