@kungfu-tech/buildchain 2.11.1 → 2.11.2-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.
- package/dist/site/agent-index.json +2 -1
- package/dist/site/artifact-schemas.json +1 -0
- package/dist/site/buildchain-contract.json +6 -6
- package/dist/site/buildchain-site.json +15 -13
- package/dist/site/capability-registry.json +9 -0
- package/dist/site/kfd-claims.json +15 -3
- package/dist/site/kfd-upstream-aggregate.json +1 -1
- package/dist/site/manual-registry.json +2 -2
- package/dist/site/node-api-registry.json +3 -3
- package/dist/site/page-registry.json +6 -6
- package/dist/site/public-surface-audit.json +1 -1
- package/dist/site/publication-registry.json +109 -0
- package/dist/site/release-provenance.json +1 -0
- package/dist/site/site-manifest.json +7 -6
- package/docs/MAP.md +2 -2
- package/docs/publication-artifacts.md +18 -0
- package/docs/site-bundle-contract.md +11 -0
- package/package.json +2 -1
- package/packages/core/buildchain-kfd-claims.js +2 -0
- package/packages/core/kfd-gate.js +17 -3
- package/scripts/check-inventory.mjs +5 -1
- package/scripts/generate-site-bundle.mjs +92 -0
|
@@ -24,6 +24,7 @@ import {
|
|
|
24
24
|
import { createSurfaceTimestampPolicy } from "../packages/core/surface-manifest.js";
|
|
25
25
|
|
|
26
26
|
const SITE_BUNDLE_CONTRACT = "kungfu-buildchain-site-bundle";
|
|
27
|
+
const PUBLICATION_RELEASE_REGISTRY_CONTRACT = "kungfu-buildchain-publication-release-registry";
|
|
27
28
|
const README_PATH = "README.md";
|
|
28
29
|
const root = path.resolve(import.meta.dirname, "..");
|
|
29
30
|
const outputDir = path.join(root, "dist", "site");
|
|
@@ -522,6 +523,7 @@ function buildCapabilityRegistry({ docs, pages, cliRegistry, manualRegistry, nod
|
|
|
522
523
|
"cli-registry.json",
|
|
523
524
|
"node-api-registry.json",
|
|
524
525
|
"workflow-registry.json",
|
|
526
|
+
"publication-registry.json",
|
|
525
527
|
"kfd-upstream-aggregate.json",
|
|
526
528
|
"kfd-claims.json",
|
|
527
529
|
],
|
|
@@ -574,6 +576,90 @@ function buildSitePages() {
|
|
|
574
576
|
].sort((a, b) => a.route.localeCompare(b.route));
|
|
575
577
|
}
|
|
576
578
|
|
|
579
|
+
function createPublicationReleaseRegistry({ packageJson, timestampPolicy }) {
|
|
580
|
+
return {
|
|
581
|
+
schemaVersion: 1,
|
|
582
|
+
contract: PUBLICATION_RELEASE_REGISTRY_CONTRACT,
|
|
583
|
+
...timestampPolicy,
|
|
584
|
+
package: {
|
|
585
|
+
name: packageJson.name,
|
|
586
|
+
version: packageJson.version,
|
|
587
|
+
versionSource: "package.json#version",
|
|
588
|
+
},
|
|
589
|
+
sourceKind: "package-site-bundle",
|
|
590
|
+
sourceBoundary: {
|
|
591
|
+
truthOwner: "@kungfu-tech/buildchain",
|
|
592
|
+
siteRole: "rendering, routing, archive preservation checks, and agent discovery",
|
|
593
|
+
rule: "Downstream papers sites render this registry; Buildchain owns publication route, latest, immutable artifact, passport, and source bundle facts.",
|
|
594
|
+
},
|
|
595
|
+
archivePolicy: {
|
|
596
|
+
contract: "kungfu-buildchain-publication-archive-policy",
|
|
597
|
+
mutableRouteKinds: [
|
|
598
|
+
"canonical-reader",
|
|
599
|
+
"latest",
|
|
600
|
+
"registry-index",
|
|
601
|
+
],
|
|
602
|
+
immutableRouteKinds: [
|
|
603
|
+
"version-artifact",
|
|
604
|
+
"version-passport",
|
|
605
|
+
"version-source",
|
|
606
|
+
],
|
|
607
|
+
deploymentBoundary: "append-only immutable version prefixes",
|
|
608
|
+
rule: "A site build may update latest and canonical reader pages, but it must not delete or overwrite files under a declared immutable version prefix.",
|
|
609
|
+
},
|
|
610
|
+
publications: [
|
|
611
|
+
{
|
|
612
|
+
id: "publication-archive-fixture",
|
|
613
|
+
title: "Publication Archive Fixture",
|
|
614
|
+
summary: "A paper-shaped Buildchain package fact proving that site rendering preserves immutable versioned PDF, source, and passport routes while latest pages can move.",
|
|
615
|
+
canonicalReader: {
|
|
616
|
+
kind: "canonical-reader",
|
|
617
|
+
url: "https://kungfu.tech/whitepaper/",
|
|
618
|
+
owner: "site-kungfu-tech",
|
|
619
|
+
},
|
|
620
|
+
latest: {
|
|
621
|
+
kind: "latest",
|
|
622
|
+
version: "0.1.0",
|
|
623
|
+
path: "/publication-archive-fixture/latest/",
|
|
624
|
+
},
|
|
625
|
+
immutablePrefixTemplate: "/publication-archive-fixture/v{version}/",
|
|
626
|
+
versions: [
|
|
627
|
+
{
|
|
628
|
+
version: "0.1.0",
|
|
629
|
+
releasedAt: "2026-07-09T00:00:00.000Z",
|
|
630
|
+
immutable: true,
|
|
631
|
+
immutablePath: "/publication-archive-fixture/v0.1.0/",
|
|
632
|
+
source: {
|
|
633
|
+
repository: "https://github.com/kungfu-systems/publication-archive-fixture",
|
|
634
|
+
tag: "v0.1.0",
|
|
635
|
+
commit: "0000000000000000000000000000000000000000",
|
|
636
|
+
bundle: {
|
|
637
|
+
path: "source.tar.gz",
|
|
638
|
+
sha256: "sha256:e2ca891dbf441f867ed135b21b3556ee5cdcd3ec80038f267a3ecff496c5a38b",
|
|
639
|
+
fixtureBodyBase64: "c2l0ZS1saWJrdW5nZnUtZGV2IHB1YmxpY2F0aW9uIGFyY2hpdmUgZml4dHVyZSBzb3VyY2UgYnVuZGxlCnZlcnNpb246IDAuMS4wCg==",
|
|
640
|
+
},
|
|
641
|
+
},
|
|
642
|
+
passport: {
|
|
643
|
+
path: "publication-artifact-passport.json",
|
|
644
|
+
sha256: "sha256:ca214e2e17c8d3c01565e507e57d5b440943c762199aa8d9de21995940538cea",
|
|
645
|
+
fixtureBodyBase64: "ewogICJjb250cmFjdCI6ICJrdW5nZnUtYnVpbGRjaGFpbi1wdWJsaWNhdGlvbi1hcnRpZmFjdC1wYXNzcG9ydCIsCiAgInB1YmxpY2F0aW9uIjogInB1YmxpY2F0aW9uLWFyY2hpdmUtZml4dHVyZSIsCiAgInZlcnNpb24iOiAiMC4xLjAiLAogICJzdGF0dXMiOiAiZml4dHVyZSIKfQo=",
|
|
646
|
+
},
|
|
647
|
+
artifacts: [
|
|
648
|
+
{
|
|
649
|
+
role: "pdf",
|
|
650
|
+
path: "main.pdf",
|
|
651
|
+
mediaType: "application/pdf",
|
|
652
|
+
sha256: "sha256:c1c2020cbdcf0cc339323d2276480a48d9b8d7da9be1d19ab58a0b3c0b7a4fbb",
|
|
653
|
+
fixtureBodyBase64: "JVBERi0xLjQKJSBzaXRlLWxpYmt1bmdmdS1kZXYgcHVibGljYXRpb24gYXJjaGl2ZSBmaXh0dXJlCjEgMCBvYmogPDwgL1R5cGUgL0NhdGFsb2cgL1BhZ2VzIDIgMCBSID4+IGVuZG9iagoyIDAgb2JqIDw8IC9UeXBlIC9QYWdlcyAvS2lkcyBbMyAwIFJdIC9Db3VudCAxID4+IGVuZG9iagozIDAgb2JqIDw8IC9UeXBlIC9QYWdlIC9QYXJlbnQgMiAwIFIgL01lZGlhQm94IFswIDAgMzAwIDE0NF0gL0NvbnRlbnRzIDQgMCBSID4+IGVuZG9iago0IDAgb2JqIDw8IC9MZW5ndGggNzIgPj4gc3RyZWFtCkJUIC9GMSAxMiBUZiAzNiAxMDAgVGQgKFB1YmxpY2F0aW9uIGFyY2hpdmUgZml4dHVyZSB2MC4xLjApIFRqIEVUCmVuZHN0cmVhbSBlbmRvYmoKeHJlZgowIDUKMDAwMDAwMDAwMCA2NTUzNSBmIAp0cmFpbGVyIDw8IC9Sb290IDEgMCBSIC9TaXplIDUgPj4Kc3RhcnR4cmVmCjM2MAolJUVPRgo=",
|
|
654
|
+
},
|
|
655
|
+
],
|
|
656
|
+
},
|
|
657
|
+
],
|
|
658
|
+
},
|
|
659
|
+
],
|
|
660
|
+
};
|
|
661
|
+
}
|
|
662
|
+
|
|
577
663
|
function buildSiteBundle() {
|
|
578
664
|
const packageJson = readJson("package.json");
|
|
579
665
|
const inventory = readJson("tests/buildchain-inventory.json");
|
|
@@ -843,6 +929,7 @@ function buildSiteBundle() {
|
|
|
843
929
|
"buildchain-site.json",
|
|
844
930
|
"site-manifest.json",
|
|
845
931
|
"badge-endpoint-registry.json",
|
|
932
|
+
"publication-registry.json",
|
|
846
933
|
"page-registry.json",
|
|
847
934
|
"capability-registry.json",
|
|
848
935
|
"cli-registry.json",
|
|
@@ -933,6 +1020,7 @@ function buildSiteBundle() {
|
|
|
933
1020
|
"release-model.json",
|
|
934
1021
|
"artifact-schemas.json",
|
|
935
1022
|
"badge-endpoint-registry.json",
|
|
1023
|
+
"publication-registry.json",
|
|
936
1024
|
"product-mechanism.json",
|
|
937
1025
|
"release-provenance.json",
|
|
938
1026
|
"kfd-upstream-aggregate.json",
|
|
@@ -960,12 +1048,14 @@ function buildSiteBundle() {
|
|
|
960
1048
|
"kfd-upstream-aggregate.json",
|
|
961
1049
|
"kfd-claims.json",
|
|
962
1050
|
"badge-endpoint-registry.json",
|
|
1051
|
+
"publication-registry.json",
|
|
963
1052
|
],
|
|
964
1053
|
instruction: "Use this bundle as the package-owned fact source for Buildchain pages. Do not infer current release mechanics from prose alone.",
|
|
965
1054
|
};
|
|
966
1055
|
const badgeEndpointRegistry = createReadmeBadgeEndpointRegistry({
|
|
967
1056
|
kfdStandards: readPackageKfdStandards(),
|
|
968
1057
|
});
|
|
1058
|
+
const publicationRegistry = createPublicationReleaseRegistry({ packageJson, timestampPolicy });
|
|
969
1059
|
|
|
970
1060
|
const homepageSections = [
|
|
971
1061
|
homepageSection({
|
|
@@ -1094,6 +1184,7 @@ function buildSiteBundle() {
|
|
|
1094
1184
|
"KFD claim registry",
|
|
1095
1185
|
"KFD upstream aggregate registry",
|
|
1096
1186
|
"release-passport evidence vocabulary",
|
|
1187
|
+
"publication archive registry and immutable papers surface facts",
|
|
1097
1188
|
],
|
|
1098
1189
|
ownedBySite: [
|
|
1099
1190
|
"HTML structure",
|
|
@@ -1121,6 +1212,7 @@ function buildSiteBundle() {
|
|
|
1121
1212
|
"release-model.json": releaseModel,
|
|
1122
1213
|
"artifact-schemas.json": artifactSchemas,
|
|
1123
1214
|
"badge-endpoint-registry.json": badgeEndpointRegistry,
|
|
1215
|
+
"publication-registry.json": publicationRegistry,
|
|
1124
1216
|
"buildchain-contract.json": createBuildchainContractWorld({ root }),
|
|
1125
1217
|
"kfd-upstream-aggregate.json": collectKfdUpstreamFacts({ cwd: root, includeOwn: false }),
|
|
1126
1218
|
"kfd-claims.json": createBuildchainKfdClaimRegistry({ root }),
|