@kungfu-tech/kfd 1.0.0-alpha.18 → 1.0.0-alpha.19
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/.buildchain/kfd-1/contract-world.witness.json +39 -23
- package/.buildchain/kfd-2/public-release-trust.claim.json +18 -18
- package/.buildchain/kfd-3/collaboration-interface.artifact.json +47 -37
- package/.buildchain/kfd-3/collaboration-interface.json +1 -1
- package/.buildchain/kfd-3/collaboration-interface.prebuild.json +24 -14
- package/README.md +30 -4
- package/buildchain.contract-lock.json +20 -5
- package/decisions/kfd-4.md +182 -0
- package/docs/MAP.md +4 -1
- package/kfd.release.json +1 -1
- package/package.json +1 -1
- package/registry.json +10 -0
- package/release-impact.json +6 -6
- package/schemas/kfd-4/observer-perspective.schema.json +272 -0
- package/scripts/check.mjs +30 -5
- package/scripts/update-kfd-3-witness.mjs +1 -0
- package/scripts/update-site-bundle.mjs +19 -1
- package/site/kfd-site.json +36 -7
- package/standards.json +49 -0
package/scripts/check.mjs
CHANGED
|
@@ -76,7 +76,7 @@ if (!Array.isArray(siteBundle.homepage?.sections) || siteBundle.homepage.section
|
|
|
76
76
|
if (!siteBundle.homepage?.displayPlan?.firstScreen?.include?.includes("foundation-triad")) {
|
|
77
77
|
fail("site bundle homepage displayPlan firstScreen must include foundation-triad");
|
|
78
78
|
}
|
|
79
|
-
for (const requiredSection of ["foundation-triad", "foundation-model", "adoption-boundary", "product-proof-path", "agent-quickstart", "decision-metadata"]) {
|
|
79
|
+
for (const requiredSection of ["foundation-triad", "foundation-model", "adoption-boundary", "practice-guidelines", "product-proof-path", "agent-quickstart", "decision-metadata"]) {
|
|
80
80
|
if (!siteBundle.homepage.sections.some((entry) => entry.id === requiredSection && entry.sourcePath === "README.md" && entry.markdown)) {
|
|
81
81
|
fail(`site bundle homepage.sections must include README projection ${requiredSection}`);
|
|
82
82
|
}
|
|
@@ -366,18 +366,43 @@ for (const concept of ["participant", "collaborationInterface", "minimalEntrypoi
|
|
|
366
366
|
for (const iface of ["collaborationInterface", "witness"]) {
|
|
367
367
|
if (!kfd3?.interfaces?.[iface]) fail(`KFD-3 standards metadata missing interface ${iface}`);
|
|
368
368
|
}
|
|
369
|
+
const kfd4 = standardsMetadata.standards?.["kfd-4"];
|
|
370
|
+
if (kfd4?.schemaIds?.observerPerspective !== "https://kfd.libkungfu.dev/schemas/kfd-4/observer-perspective.schema.json") {
|
|
371
|
+
fail("KFD-4 standards metadata must expose the canonical observerPerspective schema URI");
|
|
372
|
+
}
|
|
373
|
+
if (kfd4?.schemaPaths?.observerPerspective !== "schemas/kfd-4/observer-perspective.schema.json") {
|
|
374
|
+
fail("KFD-4 standards metadata must expose the observerPerspective schema path");
|
|
375
|
+
}
|
|
376
|
+
const kfd4ObserverPerspectiveSchema = JSON.parse(readFileSync("schemas/kfd-4/observer-perspective.schema.json", "utf8"));
|
|
377
|
+
if (kfd4ObserverPerspectiveSchema.properties?.contract?.const !== "kfd-4-observer-perspective") {
|
|
378
|
+
fail("KFD-4 observerPerspective schema must describe the kfd-4-observer-perspective contract");
|
|
379
|
+
}
|
|
380
|
+
for (const concept of ["observer", "declaredPerspective", "observerPerspective", "acceptedFacts", "projectionPolicy", "causalDominance", "degradedEvidence", "timeline"]) {
|
|
381
|
+
if (!kfd4?.concepts?.[concept]) fail(`KFD-4 standards metadata missing concept ${concept}`);
|
|
382
|
+
}
|
|
383
|
+
if (!kfd4?.interfaces?.observerPerspective) fail("KFD-4 standards metadata missing interface observerPerspective");
|
|
369
384
|
for (const [id, successors] of superseded) {
|
|
370
385
|
for (const successor of successors) {
|
|
371
386
|
if (!registry.entries.some((e) => e.id === successor)) fail(`${id} cites missing successor ${successor}`);
|
|
372
387
|
}
|
|
373
388
|
}
|
|
374
389
|
const siteCommitments = new Map((siteBundle.homepage?.foundationTriad?.commitments ?? []).map((item) => [item.id, item]));
|
|
375
|
-
for (const
|
|
376
|
-
if (!siteCommitments.has(
|
|
390
|
+
for (const id of ["KFD-1", "KFD-2", "KFD-3"]) {
|
|
391
|
+
if (!siteCommitments.has(id)) fail(`site bundle foundationTriad missing ${id}`);
|
|
392
|
+
}
|
|
393
|
+
for (const id of siteCommitments.keys()) {
|
|
394
|
+
if (!["KFD-1", "KFD-2", "KFD-3"].includes(id)) fail(`site bundle foundationTriad must not include practice guideline ${id}`);
|
|
377
395
|
}
|
|
378
396
|
const siteLayers = new Map((siteBundle.homepage?.foundationModel?.layers ?? []).map((item) => [item.decision, item]));
|
|
379
|
-
for (const
|
|
380
|
-
if (!siteLayers.has(
|
|
397
|
+
for (const id of ["KFD-1", "KFD-2", "KFD-3"]) {
|
|
398
|
+
if (!siteLayers.has(id)) fail(`site bundle foundationModel missing ${id}`);
|
|
399
|
+
}
|
|
400
|
+
for (const id of siteLayers.keys()) {
|
|
401
|
+
if (!["KFD-1", "KFD-2", "KFD-3"].includes(id)) fail(`site bundle foundationModel must not include practice guideline ${id}`);
|
|
402
|
+
}
|
|
403
|
+
const practiceGuidelines = new Map((siteBundle.homepage?.practiceGuidelines?.guidelines ?? []).map((item) => [item.decision, item]));
|
|
404
|
+
for (const e of registry.entries.filter((entry) => !["KFD-1", "KFD-2", "KFD-3"].includes(entry.id))) {
|
|
405
|
+
if (!practiceGuidelines.has(e.id)) fail(`site bundle practiceGuidelines missing ${e.id}`);
|
|
381
406
|
}
|
|
382
407
|
const boundary = siteBundle.renderingBoundary ?? {};
|
|
383
408
|
if (!Array.isArray(boundary.ownedByKfd) || !boundary.ownedByKfd.includes("homepage title and text")) {
|
|
@@ -41,6 +41,7 @@ const schemaSurfaces = [
|
|
|
41
41
|
"schemas/kfd-2/release-trust-passport.schema.json",
|
|
42
42
|
"schemas/kfd-3/collaboration-interface.schema.json",
|
|
43
43
|
"schemas/kfd-3/witness.schema.json",
|
|
44
|
+
"schemas/kfd-4/observer-perspective.schema.json",
|
|
44
45
|
].map((filePath) => ({
|
|
45
46
|
id: `schema:${filePath.replace(/^schemas\//, "").replace(/\.schema\.json$/, "").replace(/\//g, ":")}`,
|
|
46
47
|
sourcePath: filePath,
|
|
@@ -93,6 +93,13 @@ const parseFoundationModel = (markdown) => {
|
|
|
93
93
|
};
|
|
94
94
|
};
|
|
95
95
|
|
|
96
|
+
const parsePracticeGuidelines = (markdown) => ({
|
|
97
|
+
heading: "Practice guidelines",
|
|
98
|
+
intro: paragraphBlocks(markdown)[0] || "",
|
|
99
|
+
guidelines: parseMarkdownTable(markdown),
|
|
100
|
+
explanation: paragraphBlocks(markdown).slice(1),
|
|
101
|
+
});
|
|
102
|
+
|
|
96
103
|
const parseProductProofPath = (markdown) => ({
|
|
97
104
|
heading: "Product proof path",
|
|
98
105
|
body: paragraphBlocks(markdown)[0] || "",
|
|
@@ -115,6 +122,7 @@ export const buildSiteBundle = ({ readmeText, registry }) => {
|
|
|
115
122
|
const { lead, decisionKinds } = introLead(readme.intro);
|
|
116
123
|
const foundationTriad = parseFoundationTriad(readme.sections["Foundation triad"] || "");
|
|
117
124
|
const foundationModel = parseFoundationModel(readme.sections["Foundation model"] || "");
|
|
125
|
+
const practiceGuidelines = parsePracticeGuidelines(readme.sections["Practice guidelines"] || "");
|
|
118
126
|
const productProofPath = parseProductProofPath(readme.sections["Product proof path"] || "");
|
|
119
127
|
const entries = registry.entries || [];
|
|
120
128
|
|
|
@@ -148,6 +156,15 @@ export const buildSiteBundle = ({ readmeText, registry }) => {
|
|
|
148
156
|
priority: 25,
|
|
149
157
|
presentation: "boundary-note",
|
|
150
158
|
}),
|
|
159
|
+
section({
|
|
160
|
+
id: "practice-guidelines",
|
|
161
|
+
sourceHeading: "Practice guidelines",
|
|
162
|
+
title: "Practice guidelines",
|
|
163
|
+
markdown: readme.sections["Practice guidelines"],
|
|
164
|
+
role: "primary",
|
|
165
|
+
priority: 27,
|
|
166
|
+
presentation: "practice-table",
|
|
167
|
+
}),
|
|
151
168
|
section({
|
|
152
169
|
id: "product-proof-path",
|
|
153
170
|
sourceHeading: "Product proof path",
|
|
@@ -198,6 +215,7 @@ export const buildSiteBundle = ({ readmeText, registry }) => {
|
|
|
198
215
|
decisionKinds,
|
|
199
216
|
foundationTriad,
|
|
200
217
|
foundationModel,
|
|
218
|
+
practiceGuidelines,
|
|
201
219
|
productProofPath,
|
|
202
220
|
currentDecisions: {
|
|
203
221
|
heading: "Current decisions",
|
|
@@ -210,7 +228,7 @@ export const buildSiteBundle = ({ readmeText, registry }) => {
|
|
|
210
228
|
maxPrimarySections: 2,
|
|
211
229
|
note: "The first viewport should establish KFD identity and the three-decision worldview without showing renderer or developer contract text.",
|
|
212
230
|
},
|
|
213
|
-
primary: ["foundation-triad", "foundation-model", "adoption-boundary", "product-proof-path"],
|
|
231
|
+
primary: ["foundation-triad", "foundation-model", "adoption-boundary", "practice-guidelines", "product-proof-path"],
|
|
214
232
|
support: ["agent-quickstart", "decision-metadata"],
|
|
215
233
|
currentDecisions: {
|
|
216
234
|
source: REGISTRY_PATH,
|
package/site/kfd-site.json
CHANGED
|
@@ -65,12 +65,28 @@
|
|
|
65
65
|
"Real-world agent work turns ordinary work into a dense system of products, files, repositories, traces, policies, humans, and agents. In that world, complexity cannot be made safe by hidden state or forced compliance. It has to be compressed through non-drifting facts, inspectable trust, and voluntary cooperation. The goal is not to force increasingly capable participants into compliance through stronger pressure. It is to give humans and agents a shared worldview for adapting to a more complex world.",
|
|
66
66
|
"This also changes what a product interface means. Agent-facing CLI, API, documentation, envelopes, and local fact surfaces are not secondary integration channels after the human GUI. They are first-class interfaces for intelligent participants that may use the system more frequently than humans do. A control plane in this model is a shared work environment for humans and agents, not only a human dashboard over agent activity.",
|
|
67
67
|
"This model used to be expensive to practice. Stable facts require engineering, iteration, and disciplined evidence paths, so older systems often survived by leaning on cheaper substitutes such as authority, habit, reputation, or intuition. Agents change both sides of that equation: they make the world more complex, and they also provide more intelligence for building fact-bearing systems. KFD is part of that bootstrap: the worldview is forged through the same transparent and inspectable mechanisms it asks products to provide.",
|
|
68
|
-
"This README states the architecture; KFD-1, KFD-2, and KFD-3 provide the
|
|
68
|
+
"This README states the architecture; KFD-1, KFD-2, and KFD-3 provide the foundation rules."
|
|
69
|
+
]
|
|
70
|
+
},
|
|
71
|
+
"practiceGuidelines": {
|
|
72
|
+
"heading": "Practice guidelines",
|
|
73
|
+
"intro": "KFDs after the foundation triad may define practice guidelines: procedures that apply the foundation to a specific class of real-world product behavior. They do not expand the foundation triad; they show how the foundation behaves when a product must make a concrete kind of reality legible.",
|
|
74
|
+
"guidelines": [
|
|
75
|
+
{
|
|
76
|
+
"layer": "Perspective-bearing views",
|
|
77
|
+
"decision": "KFD-4",
|
|
78
|
+
"readerQuestion": "How should a product show time, history, replay, sync, or mixed-source work state?",
|
|
79
|
+
"commitment": "Timelines must declare their observer: a useful view states who is observing, which facts were accepted, and how concurrent facts were projected."
|
|
80
|
+
}
|
|
81
|
+
],
|
|
82
|
+
"explanation": [
|
|
83
|
+
"| Layer | Decision | Reader question | Commitment | |---|---|---|---| | Perspective-bearing views | KFD-4 | How should a product show time, history, replay, sync, or mixed-source work state? | Timelines must declare their observer: a useful view states who is observing, which facts were accepted, and how concurrent facts were projected. |",
|
|
84
|
+
"KFD-4 is the first such guideline. It applies KFD-1/2/3 to the problem of perspective and timeline order. In a multi-machine or multi-agent world, a product should not pretend to own a universal global clock. It should preserve non-drifting facts, make trust start from those facts, and let participants cooperate by exposing the observer, accepted ranges, causal constraints, and projection policy behind the view."
|
|
69
85
|
]
|
|
70
86
|
},
|
|
71
87
|
"productProofPath": {
|
|
72
88
|
"heading": "Product proof path",
|
|
73
|
-
"body": "KFDs are not a detached manifesto, but they are not a demand that readers adopt a Kungfu product before understanding the decisions. A philosophy becomes load-bearing only when it can be seen in a concrete case. The first concrete case is this package itself: `standards.json`, `schemas/`, `docs/`, `site/kfd-site.json`, and `scripts/check.mjs` show how KFD-1, KFD-2, and KFD-
|
|
89
|
+
"body": "KFDs are not a detached manifesto, but they are not a demand that readers adopt a Kungfu product before understanding the decisions. A philosophy becomes load-bearing only when it can be seen in a concrete case. The first concrete case is this package itself: `standards.json`, `schemas/`, `docs/`, `site/kfd-site.json`, and `scripts/check.mjs` show how KFD-1, KFD-2, KFD-3, and KFD-4 are expressed as consumable interfaces for both humans and agents. For the broader product case, use the main Kungfu product entrypoint (`https://kungfu.tech`) for product philosophy, and Buildchain (`https://buildchain.libkungfu.dev`) for release and provenance accountability. This registry states the commitments; this package and those entrypoints show how the commitments are meant to be borne in practice."
|
|
74
90
|
},
|
|
75
91
|
"currentDecisions": {
|
|
76
92
|
"heading": "Current decisions",
|
|
@@ -97,7 +113,7 @@
|
|
|
97
113
|
"homepagePriority": 20,
|
|
98
114
|
"defaultPresentation": "layered-model",
|
|
99
115
|
"includeInFirstScreen": true,
|
|
100
|
-
"markdown": "The triad is intentionally ordered. It is a compact model for surviving and\nevolving in complex systems, especially in a world where agents can observe,\nact, delegate, and remember across many surfaces.\n\n| Layer | Decision | Reader question | Commitment |\n|---|---|---|---|\n| Fact-source ontology | KFD-1 | What can count as a fact? | Facts must not drift: a load-bearing contract world comes from one declared fact source. |\n| Participant-to-object trust | KFD-2 | When can a user or agent trust a claim, product, artifact, or control surface? | Trust starts from inspectable facts and responsibility state. |\n| Participant-to-participant cooperation | KFD-3 | How should peer intelligent participants cooperate? | Cooperation starts from trusted value: value becomes trustable through transparent facts, stable choice, and explainable constraints. |\n\nIn short:\n\n```text\nnon-drifting facts -> inspectable trust -> trusted value -> voluntary cooperation\n```\n\nThis is why KFDs are not only internal governance text. KFD-1 gives the\nfoundation model its first layer by making fact sources operational: a\nfact-bearing contract world must be declared, inspectable, and unable to drift\ninvisibly. KFD-2 then defines how trust can stand on those facts. KFD-3\ndefines how humans and agents can cooperate once facts and trust are visible.\n\nReal-world agent work turns ordinary work into a dense system of products,\nfiles, repositories, traces, policies, humans, and agents. In that world,\ncomplexity cannot be made safe by hidden state or forced compliance. It has to\nbe compressed through non-drifting facts, inspectable trust, and voluntary\ncooperation. The goal is not to force increasingly capable participants into\ncompliance through stronger pressure. It is to give humans and agents a shared\nworldview for adapting to a more complex world.\n\nThis also changes what a product interface means. Agent-facing CLI, API,\ndocumentation, envelopes, and local fact surfaces are not secondary integration\nchannels after the human GUI. They are first-class interfaces for intelligent\nparticipants that may use the system more frequently than humans do. A control\nplane in this model is a shared work environment for humans and agents, not\nonly a human dashboard over agent activity.\n\nThis model used to be expensive to practice. Stable facts require engineering,\niteration, and disciplined evidence paths, so older systems often survived by\nleaning on cheaper substitutes such as authority, habit, reputation, or\nintuition. Agents change both sides of that equation: they make the world more\ncomplex, and they also provide more intelligence for building fact-bearing\nsystems. KFD is part of that bootstrap: the worldview is forged through the same\ntransparent and inspectable mechanisms it asks products to provide.\n\nThis README states the architecture; KFD-1, KFD-2, and KFD-3 provide the\
|
|
116
|
+
"markdown": "The triad is intentionally ordered. It is a compact model for surviving and\nevolving in complex systems, especially in a world where agents can observe,\nact, delegate, and remember across many surfaces.\n\n| Layer | Decision | Reader question | Commitment |\n|---|---|---|---|\n| Fact-source ontology | KFD-1 | What can count as a fact? | Facts must not drift: a load-bearing contract world comes from one declared fact source. |\n| Participant-to-object trust | KFD-2 | When can a user or agent trust a claim, product, artifact, or control surface? | Trust starts from inspectable facts and responsibility state. |\n| Participant-to-participant cooperation | KFD-3 | How should peer intelligent participants cooperate? | Cooperation starts from trusted value: value becomes trustable through transparent facts, stable choice, and explainable constraints. |\n\nIn short:\n\n```text\nnon-drifting facts -> inspectable trust -> trusted value -> voluntary cooperation\n```\n\nThis is why KFDs are not only internal governance text. KFD-1 gives the\nfoundation model its first layer by making fact sources operational: a\nfact-bearing contract world must be declared, inspectable, and unable to drift\ninvisibly. KFD-2 then defines how trust can stand on those facts. KFD-3\ndefines how humans and agents can cooperate once facts and trust are visible.\n\nReal-world agent work turns ordinary work into a dense system of products,\nfiles, repositories, traces, policies, humans, and agents. In that world,\ncomplexity cannot be made safe by hidden state or forced compliance. It has to\nbe compressed through non-drifting facts, inspectable trust, and voluntary\ncooperation. The goal is not to force increasingly capable participants into\ncompliance through stronger pressure. It is to give humans and agents a shared\nworldview for adapting to a more complex world.\n\nThis also changes what a product interface means. Agent-facing CLI, API,\ndocumentation, envelopes, and local fact surfaces are not secondary integration\nchannels after the human GUI. They are first-class interfaces for intelligent\nparticipants that may use the system more frequently than humans do. A control\nplane in this model is a shared work environment for humans and agents, not\nonly a human dashboard over agent activity.\n\nThis model used to be expensive to practice. Stable facts require engineering,\niteration, and disciplined evidence paths, so older systems often survived by\nleaning on cheaper substitutes such as authority, habit, reputation, or\nintuition. Agents change both sides of that equation: they make the world more\ncomplex, and they also provide more intelligence for building fact-bearing\nsystems. KFD is part of that bootstrap: the worldview is forged through the same\ntransparent and inspectable mechanisms it asks products to provide.\n\nThis README states the architecture; KFD-1, KFD-2, and KFD-3 provide the\nfoundation rules."
|
|
101
117
|
},
|
|
102
118
|
{
|
|
103
119
|
"id": "adoption-boundary",
|
|
@@ -110,6 +126,17 @@
|
|
|
110
126
|
"includeInFirstScreen": false,
|
|
111
127
|
"markdown": "KFD is an engineering discipline, not a belief test.\nKFD governs systems before it judges people.\nNo one should be pressured to adopt KFD in the name of KFD.\nDisagreement is a valid cooperation state.\n\nA constraint can be strict and still KFD-compatible when it is fact-bound,\nexplainable, auditable, and proportionate."
|
|
112
128
|
},
|
|
129
|
+
{
|
|
130
|
+
"id": "practice-guidelines",
|
|
131
|
+
"sourcePath": "README.md",
|
|
132
|
+
"sourceHeading": "Practice guidelines",
|
|
133
|
+
"title": "Practice guidelines",
|
|
134
|
+
"renderRole": "primary",
|
|
135
|
+
"homepagePriority": 27,
|
|
136
|
+
"defaultPresentation": "practice-table",
|
|
137
|
+
"includeInFirstScreen": false,
|
|
138
|
+
"markdown": "KFDs after the foundation triad may define practice guidelines: procedures\nthat apply the foundation to a specific class of real-world product behavior.\nThey do not expand the foundation triad; they show how the foundation behaves\nwhen a product must make a concrete kind of reality legible.\n\n| Layer | Decision | Reader question | Commitment |\n|---|---|---|---|\n| Perspective-bearing views | KFD-4 | How should a product show time, history, replay, sync, or mixed-source work state? | Timelines must declare their observer: a useful view states who is observing, which facts were accepted, and how concurrent facts were projected. |\n\nKFD-4 is the first such guideline. It applies KFD-1/2/3 to the problem of\nperspective and timeline order. In a multi-machine or multi-agent world, a\nproduct should not pretend to own a universal global clock. It should preserve\nnon-drifting facts, make trust start from those facts, and let participants\ncooperate by exposing the observer, accepted ranges, causal constraints, and\nprojection policy behind the view."
|
|
139
|
+
},
|
|
113
140
|
{
|
|
114
141
|
"id": "product-proof-path",
|
|
115
142
|
"sourcePath": "README.md",
|
|
@@ -119,7 +146,7 @@
|
|
|
119
146
|
"homepagePriority": 30,
|
|
120
147
|
"defaultPresentation": "proof-path",
|
|
121
148
|
"includeInFirstScreen": false,
|
|
122
|
-
"markdown": "KFDs are not a detached manifesto, but they are not a demand that readers adopt\na Kungfu product before understanding the decisions. A philosophy becomes\nload-bearing only when it can be seen in a concrete case. The first concrete\ncase is this package itself: `standards.json`, `schemas/`, `docs/`,\n`site/kfd-site.json`, and `scripts/check.mjs` show how KFD-1, KFD-2,
|
|
149
|
+
"markdown": "KFDs are not a detached manifesto, but they are not a demand that readers adopt\na Kungfu product before understanding the decisions. A philosophy becomes\nload-bearing only when it can be seen in a concrete case. The first concrete\ncase is this package itself: `standards.json`, `schemas/`, `docs/`,\n`site/kfd-site.json`, and `scripts/check.mjs` show how KFD-1, KFD-2, KFD-3,\nand KFD-4 are expressed as consumable interfaces for both humans and agents.\nFor the broader product case, use the main Kungfu product entrypoint\n(`https://kungfu.tech`) for product philosophy, and Buildchain\n(`https://buildchain.libkungfu.dev`) for release and provenance\naccountability. This registry states the commitments; this package and those\nentrypoints show how the commitments are meant to be borne in practice.\n\nRendered index: `https://kfd.libkungfu.dev` (stable machine path per entry,\ne.g. `https://kfd.libkungfu.dev/1`). This repository publishes\n`@kungfu-tech/kfd` — the decision texts plus a machine-readable\n`registry.json` — which the site consumes as its single fact source.\n\nMachine consumers that need KFD-owned standard identity should read\n`standards.json`. It is the versioned metadata surface for stable standard\nkeys, document routes and SHA-256 digests, schema IDs, KFD-owned concept names,\nand machine-interface contract versions. In Node or TypeScript projects, import\nit as:\n\n```js\nimport standards from \"@kungfu-tech/kfd/standards.json\" with { type: \"json\" };\n```"
|
|
123
150
|
},
|
|
124
151
|
{
|
|
125
152
|
"id": "agent-quickstart",
|
|
@@ -130,7 +157,7 @@
|
|
|
130
157
|
"homepagePriority": 40,
|
|
131
158
|
"defaultPresentation": "ordered-steps",
|
|
132
159
|
"includeInFirstScreen": false,
|
|
133
|
-
"markdown": "Agents consuming this package should start from the same sources as humans:\n\n1. Read this README for the foundation model and package map.\n2. Read `standards.json` for canonical KFD numbers, schema IDs, concept names,\n and interface contracts.\n3. Use `site/kfd-site.json` decision metadata or the KFD-3 collaboration\n interface fact-source metadata to identify the public KFD fact source.\n4. Use `schemas/kfd-2/trust-taxonomy.schema.json` for KFD-2 residual-risk and\n trust-downgrade values. Unknown taxonomy values are invalid.\n5. Use `schemas/kfd-3/collaboration-interface.schema.json` and\n `schemas/kfd-3/witness.schema.json` to inspect collaboration interfaces.\n6. If a needed KFD-2 taxonomy value is missing, open a KFD GitHub issue rather\n than inventing a local value:\n `https://github.com/kungfu-systems/kfd/issues/new?title=KFD-2%20trust%20taxonomy%20extension%20request`.\n\nKFD package semver is only the distribution version. KFD-owned machine\ninterfaces carry their own `schemaVersion` and `contract` fields. Compatible\nadditions may keep the same interface version; semantic changes, required-field\nchanges, verification meaning changes, or responsibility-boundary changes must\nuse a new interface version or contract.\n\nKFD-2 publishes trust-taxonomy, release-claims, and release-trust-passport\nschemas under `schemas/kfd-2/`. These schemas let Buildchain and other release\nsystems audit whether public release claims are bound to source facts,\nevidence, hashes, audit boundaries, residual risk, and responsibility state. See\n[`docs/kfd-2-release-trust.md`](docs/kfd-2-release-trust.md).\n\nKFD-3 also publishes a general collaboration-interface schema and witness\nschema under `schemas/kfd-3/`. These schemas are for participant-facing product\ninterfaces, not only agent APIs. A product such as Kungfu may implement an\nagent-first profile, but that profile remains a product-specific realization of\nKFD-3. The KFD-owned boundary is the standard vocabulary, schema IDs, and\nclosed-world evidence shape. See\n[`docs/kfd-3-collaboration-interface.md`](docs/kfd-3-collaboration-interface.md)."
|
|
160
|
+
"markdown": "Agents consuming this package should start from the same sources as humans:\n\n1. Read this README for the foundation model and package map.\n2. Read `standards.json` for canonical KFD numbers, schema IDs, concept names,\n and interface contracts.\n3. Use `site/kfd-site.json` decision metadata or the KFD-3 collaboration\n interface fact-source metadata to identify the public KFD fact source.\n4. Use `schemas/kfd-2/trust-taxonomy.schema.json` for KFD-2 residual-risk and\n trust-downgrade values. Unknown taxonomy values are invalid.\n5. Use `schemas/kfd-3/collaboration-interface.schema.json` and\n `schemas/kfd-3/witness.schema.json` to inspect collaboration interfaces.\n6. If a needed KFD-2 taxonomy value is missing, open a KFD GitHub issue rather\n than inventing a local value:\n `https://github.com/kungfu-systems/kfd/issues/new?title=KFD-2%20trust%20taxonomy%20extension%20request`.\n\nKFD package semver is only the distribution version. KFD-owned machine\ninterfaces carry their own `schemaVersion` and `contract` fields. Compatible\nadditions may keep the same interface version; semantic changes, required-field\nchanges, verification meaning changes, or responsibility-boundary changes must\nuse a new interface version or contract.\n\nKFD-2 publishes trust-taxonomy, release-claims, and release-trust-passport\nschemas under `schemas/kfd-2/`. These schemas let Buildchain and other release\nsystems audit whether public release claims are bound to source facts,\nevidence, hashes, audit boundaries, residual risk, and responsibility state. See\n[`docs/kfd-2-release-trust.md`](docs/kfd-2-release-trust.md).\n\nKFD-3 also publishes a general collaboration-interface schema and witness\nschema under `schemas/kfd-3/`. These schemas are for participant-facing product\ninterfaces, not only agent APIs. A product such as Kungfu may implement an\nagent-first profile, but that profile remains a product-specific realization of\nKFD-3. The KFD-owned boundary is the standard vocabulary, schema IDs, and\nclosed-world evidence shape. See\n[`docs/kfd-3-collaboration-interface.md`](docs/kfd-3-collaboration-interface.md).\n\nKFD-4 publishes an observer-perspective schema under `schemas/kfd-4/`. It gives\nhumans and agents a standard vocabulary for observer, accepted facts,\nprojection policy, causal constraints, degraded evidence, and verification\nstate when a product shows a perspective-bearing timeline."
|
|
134
161
|
},
|
|
135
162
|
{
|
|
136
163
|
"id": "decision-metadata",
|
|
@@ -159,6 +186,7 @@
|
|
|
159
186
|
"foundation-triad",
|
|
160
187
|
"foundation-model",
|
|
161
188
|
"adoption-boundary",
|
|
189
|
+
"practice-guidelines",
|
|
162
190
|
"product-proof-path"
|
|
163
191
|
],
|
|
164
192
|
"support": [
|
|
@@ -171,7 +199,8 @@
|
|
|
171
199
|
"ids": [
|
|
172
200
|
"KFD-1",
|
|
173
201
|
"KFD-2",
|
|
174
|
-
"KFD-3"
|
|
202
|
+
"KFD-3",
|
|
203
|
+
"KFD-4"
|
|
175
204
|
]
|
|
176
205
|
}
|
|
177
206
|
},
|
|
@@ -184,7 +213,7 @@
|
|
|
184
213
|
"homepagePriority": 90,
|
|
185
214
|
"defaultPresentation": "developer-note",
|
|
186
215
|
"includeInFirstScreen": false,
|
|
187
|
-
"markdown": "This README is also the homepage text source for `https://kfd.libkungfu.dev`.\nWhen `site-libkungfu-dev` consumes the `@kungfu-tech/kfd` npm package to render\nthe KFD site, it should treat this file as the canonical homepage copy, not as\nan implementation note to paraphrase in the site repository.\n\nThe first screen should be derived from this README:\n\n- Page identity: the top-level heading.\n- Lead: the opening paragraph that defines KFD as the organization-wide\n decision registry.\n- Foundation signal: the `Foundation triad` section, especially the three\n one-line commitments.\n- First-screen explanation: the beginning of `Foundation model`, ending at the\n `non-drifting facts -> inspectable trust -> trusted value -> voluntary\n cooperation` chain.\n\nDecision cards, detail links, and machine paths should come from\n`registry.json`. The machine-readable site bundle lives at `site/kfd-site.json`\nand gives renderers stable fields for the homepage, foundation model, product\nproof path, decision routes, and rendering boundary. A site renderer may adapt\nlayout, navigation, typography, and visual assets, but it should not maintain\nseparate homepage wording that can drift from this package.\n\n`site/kfd-site.json` is generated from this README by\n`scripts/update-site-bundle.mjs`. The generated bundle exposes both compatible\ntop-level homepage fields and ordered `homepage.sections` entries. The\n`homepage.displayPlan` tells renderers which sections belong in the first\nscreen, primary narrative, and support area. Site repositories should consume\nthat bundle instead of parsing this README themselves. The renderer contract is\nexposed as machine/implementation metadata, not as ordinary homepage content.",
|
|
216
|
+
"markdown": "This README is also the homepage text source for `https://kfd.libkungfu.dev`.\nWhen `site-libkungfu-dev` consumes the `@kungfu-tech/kfd` npm package to render\nthe KFD site, it should treat this file as the canonical homepage copy, not as\nan implementation note to paraphrase in the site repository.\n\nThe first screen should be derived from this README:\n\n- Page identity: the top-level heading.\n- Lead: the opening paragraph that defines KFD as the organization-wide\n decision registry.\n- Foundation signal: the `Foundation triad` section, especially the three\n one-line commitments.\n- First-screen explanation: the beginning of `Foundation model`, ending at the\n `non-drifting facts -> inspectable trust -> trusted value -> voluntary\n cooperation` chain.\n- Practice signal: the `Practice guidelines` section, starting with KFD-4 as\n the declared-observer rule for perspective-bearing timeline views.\n\nDecision cards, detail links, and machine paths should come from\n`registry.json`. The machine-readable site bundle lives at `site/kfd-site.json`\nand gives renderers stable fields for the homepage, foundation model, product\nproof path, decision routes, and rendering boundary. A site renderer may adapt\nlayout, navigation, typography, and visual assets, but it should not maintain\nseparate homepage wording that can drift from this package.\n\n`site/kfd-site.json` is generated from this README by\n`scripts/update-site-bundle.mjs`. The generated bundle exposes both compatible\ntop-level homepage fields and ordered `homepage.sections` entries. The\n`homepage.displayPlan` tells renderers which sections belong in the first\nscreen, primary narrative, and support area. Site repositories should consume\nthat bundle instead of parsing this README themselves. The renderer contract is\nexposed as machine/implementation metadata, not as ordinary homepage content.",
|
|
188
217
|
"renderAsHomepageContent": false,
|
|
189
218
|
"note": "This is a machine/renderer contract for site implementers. It should not be rendered as ordinary homepage content."
|
|
190
219
|
}
|
package/standards.json
CHANGED
|
@@ -201,6 +201,55 @@
|
|
|
201
201
|
"extensionRequest": "extension request",
|
|
202
202
|
"extensionPath": "extension path"
|
|
203
203
|
}
|
|
204
|
+
},
|
|
205
|
+
"kfd-4": {
|
|
206
|
+
"key": "kfd-4",
|
|
207
|
+
"id": "KFD-4",
|
|
208
|
+
"number": 4,
|
|
209
|
+
"label": "KFD-4",
|
|
210
|
+
"title": "Timelines must declare their observer: useful views need a stated perspective",
|
|
211
|
+
"kind": "procedure",
|
|
212
|
+
"status": "active",
|
|
213
|
+
"revision": 1,
|
|
214
|
+
"metadataSchemaVersion": "1",
|
|
215
|
+
"document": {
|
|
216
|
+
"path": "decisions/kfd-4.md",
|
|
217
|
+
"url": "https://kfd.libkungfu.dev/4",
|
|
218
|
+
"sha256": "7077a6446c8baa60d85426780cb7b2bee488133196b6f53d74f0eb151f6e26e4"
|
|
219
|
+
},
|
|
220
|
+
"compatibility": {
|
|
221
|
+
"packageLine": "v1.0",
|
|
222
|
+
"registrySchemaVersion": 1,
|
|
223
|
+
"metadataSchemaVersion": "1",
|
|
224
|
+
"rule": "Substantive semantic changes mint a new KFD; compatible metadata additions keep schemaVersion 1."
|
|
225
|
+
},
|
|
226
|
+
"schemaIds": {
|
|
227
|
+
"metadata": "https://kfd.libkungfu.dev/schemas/kfd-standards.schema.json",
|
|
228
|
+
"observerPerspective": "https://kfd.libkungfu.dev/schemas/kfd-4/observer-perspective.schema.json"
|
|
229
|
+
},
|
|
230
|
+
"schemaPaths": {
|
|
231
|
+
"metadata": "schemas/kfd-standards.schema.json",
|
|
232
|
+
"observerPerspective": "schemas/kfd-4/observer-perspective.schema.json"
|
|
233
|
+
},
|
|
234
|
+
"interfaces": {
|
|
235
|
+
"observerPerspective": {
|
|
236
|
+
"contract": "kfd-4-observer-perspective",
|
|
237
|
+
"schemaVersion": 1,
|
|
238
|
+
"schemaId": "https://kfd.libkungfu.dev/schemas/kfd-4/observer-perspective.schema.json",
|
|
239
|
+
"schemaPath": "schemas/kfd-4/observer-perspective.schema.json",
|
|
240
|
+
"compatibilityRule": "Compatible additions may keep schemaVersion 1; semantic or required-field changes require a new interface version or contract."
|
|
241
|
+
}
|
|
242
|
+
},
|
|
243
|
+
"concepts": {
|
|
244
|
+
"observer": "observer",
|
|
245
|
+
"declaredPerspective": "declared perspective",
|
|
246
|
+
"observerPerspective": "observer perspective",
|
|
247
|
+
"acceptedFacts": "accepted facts",
|
|
248
|
+
"projectionPolicy": "projection policy",
|
|
249
|
+
"causalDominance": "causal dominance",
|
|
250
|
+
"degradedEvidence": "degraded evidence",
|
|
251
|
+
"timeline": "perspective-bearing timeline"
|
|
252
|
+
}
|
|
204
253
|
}
|
|
205
254
|
}
|
|
206
255
|
}
|