@kungfu-tech/kfd 1.0.0-alpha.2 → 1.0.0-alpha.20

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 (44) hide show
  1. package/.buildchain/kfd-1/contract-world.witness.json +753 -0
  2. package/.buildchain/kfd-2/kfd-foundation.trust-assessment.json +238 -0
  3. package/.buildchain/kfd-2/kfd-foundation.trust-claims.json +225 -0
  4. package/.buildchain/kfd-2/public-release-trust.claim.json +131 -0
  5. package/.buildchain/kfd-3/collaboration-interface.artifact.json +774 -0
  6. package/.buildchain/kfd-3/collaboration-interface.json +421 -0
  7. package/.buildchain/kfd-3/collaboration-interface.prebuild.json +1141 -0
  8. package/README.md +149 -29
  9. package/TRADEMARKS.md +60 -0
  10. package/buildchain.contract-lock.json +86 -0
  11. package/buildchain.release-propagation.json +32 -0
  12. package/decisions/{kfd-1.md → KFD-1.md} +77 -35
  13. package/decisions/{kfd-2.md → KFD-2.md} +63 -11
  14. package/decisions/{kfd-3.md → KFD-3.md} +54 -16
  15. package/decisions/KFD-4.md +182 -0
  16. package/docs/KFD-1-usage.md +37 -0
  17. package/docs/KFD-2-usage.md +123 -0
  18. package/docs/KFD-3-usage.md +98 -0
  19. package/docs/KFD-4-usage.md +31 -0
  20. package/docs/MAP.md +20 -3
  21. package/docs/release-governance.md +28 -0
  22. package/kfd.release.json +13 -0
  23. package/package.json +28 -2
  24. package/registry.json +15 -5
  25. package/release-impact.json +113 -0
  26. package/schemas/kfd-1/contract-world.schema.json +67 -4
  27. package/schemas/kfd-1/witness.schema.json +113 -0
  28. package/schemas/kfd-2/release-claims.schema.json +331 -0
  29. package/schemas/kfd-2/release-trust-passport.schema.json +276 -0
  30. package/schemas/kfd-2/trust-assessment.schema.json +313 -0
  31. package/schemas/kfd-2/trust-claims.schema.json +334 -0
  32. package/schemas/kfd-2/trust-taxonomy.schema.json +219 -0
  33. package/schemas/kfd-3/collaboration-interface.schema.json +542 -0
  34. package/schemas/kfd-3/witness.schema.json +167 -0
  35. package/schemas/kfd-4/observer-perspective.schema.json +272 -0
  36. package/schemas/kfd-standards.schema.json +163 -0
  37. package/scripts/check.mjs +930 -0
  38. package/scripts/npm-publish-transaction.mjs +220 -0
  39. package/scripts/update-kfd-1-witness.mjs +35 -0
  40. package/scripts/update-kfd-2-claim.mjs +304 -0
  41. package/scripts/update-kfd-3-witness.mjs +261 -0
  42. package/scripts/update-site-bundle.mjs +353 -0
  43. package/site/kfd-site.json +251 -12
  44. package/standards.json +775 -15
@@ -0,0 +1,98 @@
1
+ # KFD-3 Collaboration Interface
2
+
3
+ KFD-3 is a cooperation standard for intelligent participants. It is not an
4
+ agent-only standard. Products can use it for humans, agents, operators,
5
+ extension authors, API consumers, hosted-service users, service integrators,
6
+ maintainers, and other participants who need to understand value, choices, and
7
+ constraints before cooperating.
8
+
9
+ The KFD-owned schema surface is intentionally general:
10
+
11
+ - `schemas/kfd-3/collaboration-interface.schema.json` declares a product's
12
+ participant-facing collaboration interface.
13
+ - `schemas/kfd-3/witness.schema.json` declares release or build evidence that
14
+ the interface is discoverable, classified, constraint-transparent, and closed
15
+ over reachable participant-facing entrypoints.
16
+
17
+ KFD owns the standard identity, schema IDs, concept names, and compatibility
18
+ rules. Product repositories own their concrete profiles. For example, Kungfu
19
+ may expose an agent-first profile because agents are a first-class participant
20
+ in the current product, but that profile remains a Kungfu implementation of
21
+ KFD-3 rather than the definition of KFD-3 itself.
22
+
23
+ ## Required shape
24
+
25
+ A product collaboration interface should identify:
26
+
27
+ - participant profiles, such as `human`, `agent`, `operator`,
28
+ `extension-author`, or `api-consumer`;
29
+ - public fact sources that identify where load-bearing facts live and which
30
+ surfaces are only projections;
31
+ - minimal entrypoints that let each participant discover the rest of the
32
+ interface;
33
+ - participant-visible surfaces, such as CLI commands, JSON APIs, manuals,
34
+ skills, GUI routes, envelopes, packages, or protocols;
35
+ - value evidence that binds important participant-facing value claims to facts,
36
+ artifacts, checks, trust assessments, and residual-risk state;
37
+ - visible constraints, including what is restricted, why, and where review or
38
+ escalation happens;
39
+ - choice paths that let participants choose or decline safe cooperation modes;
40
+ - extension requests that tell participants how to ask for a new value,
41
+ capability, or interface when the declared interface is insufficient;
42
+ - a closure policy for reachable participant-facing entrypoints.
43
+
44
+ The KFD-3 witness schema is intentionally stricter about closure: a passing
45
+ closed-world proof reports reachable entrypoints, classified entrypoints, and
46
+ an empty `unclassifiedEntrypoints` list. This prevents a product from exposing
47
+ a participant-facing or callable backdoor API outside the declared interface.
48
+
49
+ ## Value Evidence
50
+
51
+ KFD-3 does not treat value as a marketing claim. A collaboration interface
52
+ should state the value a participant is being asked to trust, then point to the
53
+ facts and evidence that make that value inspectable.
54
+
55
+ Each `valueEvidence` entry should identify:
56
+
57
+ - the value claim;
58
+ - the participants who depend on it;
59
+ - the fact artifacts that define the claim;
60
+ - the evidence artifacts or checks that show those facts are present;
61
+ - a KFD-2 trust assessment or residual-risk state when the claim cannot be
62
+ exhaustively proved by machine.
63
+
64
+ This is the engineering bridge between KFD-2 and KFD-3. KFD-2 explains how
65
+ trust is assessed from facts. KFD-3 explains how that assessed value is exposed
66
+ to participants before cooperation is requested.
67
+
68
+ ## Product profile boundary
69
+
70
+ Concrete product profiles may add their own contracts, registry fields, command
71
+ metadata, generated manuals, or audit output. Those fields should reference the
72
+ KFD-3 schema IDs from `standards.json` instead of copying KFD-owned terms.
73
+
74
+ Examples:
75
+
76
+ - A Kungfu agent-first bridge can map local commands, provider skills, command
77
+ metadata, and operating manuals into a KFD-3 collaboration interface.
78
+ - A Buildchain release passport can carry a KFD-3 witness once a downstream
79
+ product can freeze and verify the concrete interface artifact.
80
+ - A hosted surface can use the same standard to show where policy constraints,
81
+ permission gates, and user choices are visible before cooperation is
82
+ requested.
83
+
84
+ This keeps KFD-3 general while making real product interfaces testable.
85
+
86
+ ## Extension Requests
87
+
88
+ KFD-3 treats extension requests as part of the collaboration interface. A
89
+ human or agent should not have to infer how to cooperate when a declared
90
+ interface is missing a value or capability. The interface should expose a
91
+ visible request path, the participants it is for, the trigger, and the expected
92
+ outcome.
93
+
94
+ For KFD itself, the standard request path for missing KFD-2 trust-taxonomy
95
+ values is a GitHub issue in `kungfu-systems/kfd`. This is both a KFD-2 trust
96
+ rule and a KFD-3 collaboration rule: the taxonomy defines what values are valid,
97
+ while the collaboration interface tells agents how to request an extension
98
+ without inventing private values or relying on pressure.
@@ -0,0 +1,31 @@
1
+ # KFD-4 Implementation Notes
2
+
3
+ KFD-4 defines the observer-perspective rule: timelines must declare their
4
+ observer. This page is the package implementation note for machine consumers
5
+ and products that show perspective-bearing timelines. The authoritative
6
+ decision text remains `decisions/KFD-4.md`.
7
+
8
+ ## Package Surface
9
+
10
+ The KFD package implements KFD-4 through:
11
+
12
+ - `decisions/KFD-4.md`: the authoritative procedure text.
13
+ - `schemas/kfd-4/observer-perspective.schema.json`: the KFD-owned schema for
14
+ observer-relative timeline views.
15
+ - `standards.json#/standards/kfd-4`: metadata that exposes the schema ID, schema
16
+ path, interface contract, and concept names.
17
+ - `scripts/check.mjs`: verification that KFD-4 metadata and schema remain
18
+ wired into the package.
19
+
20
+ ## When To Use The Gate
21
+
22
+ Use KFD-4 when a product surface represents time, history, replay, sync,
23
+ ordering, or mixed-source work state. A product that does not present a
24
+ perspective-bearing timeline does not need a KFD-4 gate.
25
+
26
+ ## Trust Relation
27
+
28
+ KFD-4 claims can be assessed by KFD-2. The KFD package does this through
29
+ `.buildchain/kfd-2/kfd-foundation.trust-claims.json` and
30
+ `.buildchain/kfd-2/kfd-foundation.trust-assessment.json`, where KFD-4 is
31
+ assessed as an `observer-perspective` subject.
package/docs/MAP.md CHANGED
@@ -5,15 +5,32 @@
5
5
  | What is KFD, and what decisions exist? | [`../README.md`](../README.md) |
6
6
  | What is the KFD-1/2/3 foundation triad? | [`../README.md`](../README.md#foundation-triad) |
7
7
  | What worldview structure does the foundation triad express? | [`../README.md`](../README.md#foundation-model) |
8
+ | What practice guidelines are derived from the foundation triad? | [`../README.md`](../README.md#practice-guidelines) |
9
+ | How should a product show timeline order from a declared perspective? | [KFD-4](../decisions/KFD-4.md) |
10
+ | What schema should products use for KFD-4 observer-relative timeline views? | [`../schemas/kfd-4/observer-perspective.schema.json`](../schemas/kfd-4/observer-perspective.schema.json) |
11
+ | What are the package implementation notes for KFD-1? | [`KFD-1-usage.md`](KFD-1-usage.md) |
12
+ | What are the package implementation notes for KFD-2? | [`KFD-2-usage.md`](KFD-2-usage.md) |
13
+ | What are the package implementation notes for KFD-3? | [`KFD-3-usage.md`](KFD-3-usage.md) |
14
+ | What are the package implementation notes for KFD-4? | [`KFD-4-usage.md`](KFD-4-usage.md) |
15
+ | How should an agent quickly understand this package? | [`../README.md`](../README.md#agent-quickstart) |
16
+ | What is the concrete self-proof case for KFD-1/2/3/4? | [`../README.md`](../README.md#product-proof-path) and the implementation case in each KFD |
17
+ | Where is the public KFD fact source? | [`../README.md`](../README.md#decision-metadata) and [`../site/kfd-site.json`](../site/kfd-site.json) decision metadata |
18
+ | What does Apache-2.0 cover, and what remains official/trademark-bound? | [`../TRADEMARKS.md`](../TRADEMARKS.md) |
8
19
  | What should a site renderer consume to render `kfd.libkungfu.dev`? | [`../site/kfd-site.json`](../site/kfd-site.json) |
9
- | What is the top-level product accountability principle? | [KFD-2](../decisions/kfd-2.md) |
10
- | What stance should products take toward humans and agents as reasoning participants? | [KFD-3](../decisions/kfd-3.md) |
20
+ | How should a site map decision pages to usage subpages? | [`../site/kfd-site.json`](../site/kfd-site.json) — `decisionPages.usagePages` maps `/N` to `/N/usage` |
21
+ | What is the top-level product accountability principle? | [KFD-2](../decisions/KFD-2.md) |
22
+ | What stance should products take toward humans and agents as reasoning participants? | [KFD-3](../decisions/KFD-3.md) |
23
+ | What schema should products use for KFD-3 participant-facing collaboration interfaces? | [`KFD-3-usage.md`](KFD-3-usage.md) |
24
+ | What schema should a product or agent use for generic KFD-2 trust assessment? | [`KFD-2-usage.md`](KFD-2-usage.md#generic-trust-claims) |
25
+ | What should an agent do when a needed KFD-2 trust taxonomy value is missing? | [`KFD-2-usage.md`](KFD-2-usage.md#trust-taxonomy) — open a KFD GitHub issue |
11
26
  | What does a specific decision say? | [`../decisions/`](../decisions) (index: [`../registry.json`](../registry.json)) |
12
27
  | What machine metadata should Buildchain or another consumer import for KFD standard identity and schema IDs? | [`../standards.json`](../standards.json) |
13
28
  | What schema validates the standards metadata surface? | [`../schemas/kfd-standards.schema.json`](../schemas/kfd-standards.schema.json) |
29
+ | What schema should release systems use for KFD-2 release claims and trust passports? | [`KFD-2-usage.md`](KFD-2-usage.md) — release passports are a KFD-2 projection |
14
30
  | How do I cite a decision? | [`../README.md`](../README.md) — cite by number, e.g. `KFD-1` |
15
31
  | How do decisions change over time? | [`../CONTRIBUTING.md`](../CONTRIBUTING.md) — append-only; explicit supersession mints a new number |
16
- | How is this package versioned and released? | [KFD-1](../decisions/kfd-1.md) applied to itself; Buildchain governs releases |
32
+ | How is this package versioned and released? | [KFD-1](../decisions/KFD-1.md) applied to itself; Buildchain governs releases |
17
33
  | What release impact ledger should Buildchain consume for production passports? | [`../release-impact.json`](../release-impact.json) |
34
+ | What release provenance path must alpha promotion use? | [`release-governance.md`](release-governance.md) |
18
35
  | How do I verify registry/document agreement? | `node scripts/check.mjs` |
19
36
  | How do I report a vulnerability? | [`../SECURITY.md`](../SECURITY.md) |
@@ -0,0 +1,28 @@
1
+ # Release Governance Notes
2
+
3
+ KFD releases are governed by Buildchain channel promotion. The package version
4
+ line stays fixed at `v1.0`; alpha and production releases move through
5
+ protected channel branches.
6
+
7
+ For alpha promotion, Buildchain treats the provenance path as part of the
8
+ release contract:
9
+
10
+ ```text
11
+ dev/v1/v1.0 -> alpha/v1/v1.0
12
+ ```
13
+
14
+ The alpha branch must be updated by a merged same-repository pull request whose
15
+ head is `dev/v1/v1.0` and whose base is `alpha/v1/v1.0`. A temporary promotion
16
+ branch may satisfy GitHub freshness rules, but it is not a valid Buildchain
17
+ release source for KFD alpha publishing.
18
+
19
+ The protected branch required status check must also name the status emitted by
20
+ the current Verify workflow. As of the alpha.14 line, that required check is:
21
+
22
+ ```text
23
+ check / check
24
+ ```
25
+
26
+ Keeping the branch protection rule and the workflow-emitted status name aligned
27
+ is part of KFD-1's "facts must not drift" requirement: the release gate cannot
28
+ depend on a stale status context that no current workflow can produce.
@@ -0,0 +1,13 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "contract": "kfd-release-anchor",
4
+ "line": "v1.0",
5
+ "channel": "alpha",
6
+ "npmPackage": "@kungfu-tech/kfd",
7
+ "npmVersion": "1.0.0-alpha.20",
8
+ "source": {
9
+ "repository": "kungfu-systems/kfd",
10
+ "branch": "alpha/v1/v1.0"
11
+ },
12
+ "rationale": "KFD uses an anchored/manual Buildchain mode: the public package version is an explicit release fact, while the outer KFD line remains v1.0."
13
+ }
package/package.json CHANGED
@@ -1,30 +1,56 @@
1
1
  {
2
2
  "name": "@kungfu-tech/kfd",
3
- "version": "1.0.0-alpha.2",
3
+ "version": "1.0.0-alpha.20",
4
4
  "description": "Kung Fu Decisions (KFD): the kungfu-systems organization-wide decision registry, as a consumable artifact",
5
5
  "license": "Apache-2.0",
6
6
  "files": [
7
7
  "README.md",
8
+ "TRADEMARKS.md",
8
9
  "decisions",
9
10
  "registry.json",
10
11
  "standards.json",
12
+ "kfd.release.json",
11
13
  "schemas",
12
14
  "site",
15
+ "scripts",
16
+ "buildchain.contract-lock.json",
17
+ "buildchain.release-propagation.json",
18
+ "release-impact.json",
19
+ ".buildchain/kfd-1/contract-world.witness.json",
20
+ ".buildchain/kfd-2",
21
+ ".buildchain/kfd-3",
13
22
  "docs"
14
23
  ],
15
24
  "exports": {
16
25
  "./package.json": "./package.json",
17
26
  "./README.md": "./README.md",
27
+ "./TRADEMARKS.md": "./TRADEMARKS.md",
18
28
  "./registry.json": "./registry.json",
19
29
  "./standards.json": "./standards.json",
30
+ "./kfd.release.json": "./kfd.release.json",
20
31
  "./site/kfd-site.json": "./site/kfd-site.json",
32
+ "./buildchain.contract-lock.json": "./buildchain.contract-lock.json",
33
+ "./buildchain.release-propagation.json": "./buildchain.release-propagation.json",
34
+ "./release-impact.json": "./release-impact.json",
35
+ "./scripts/*.mjs": "./scripts/*.mjs",
36
+ "./buildchain/kfd-1/contract-world.witness.json": "./.buildchain/kfd-1/contract-world.witness.json",
37
+ "./buildchain/kfd-2/public-release-trust.claim.json": "./.buildchain/kfd-2/public-release-trust.claim.json",
38
+ "./buildchain/kfd-2/kfd-foundation.trust-claims.json": "./.buildchain/kfd-2/kfd-foundation.trust-claims.json",
39
+ "./buildchain/kfd-2/kfd-foundation.trust-assessment.json": "./.buildchain/kfd-2/kfd-foundation.trust-assessment.json",
40
+ "./buildchain/kfd-3/collaboration-interface.json": "./.buildchain/kfd-3/collaboration-interface.json",
41
+ "./buildchain/kfd-3/collaboration-interface.prebuild.json": "./.buildchain/kfd-3/collaboration-interface.prebuild.json",
42
+ "./buildchain/kfd-3/collaboration-interface.artifact.json": "./.buildchain/kfd-3/collaboration-interface.artifact.json",
21
43
  "./schemas/*.json": "./schemas/*.json",
22
44
  "./schemas/*/*.json": "./schemas/*/*.json",
23
45
  "./decisions/*.md": "./decisions/*.md",
24
46
  "./docs/*": "./docs/*"
25
47
  },
26
48
  "scripts": {
27
- "check": "node scripts/check.mjs"
49
+ "check": "node scripts/check.mjs",
50
+ "update:site-bundle": "node scripts/update-site-bundle.mjs",
51
+ "update:kfd-1-witness": "node scripts/update-kfd-1-witness.mjs",
52
+ "update:kfd-2-claim": "node scripts/update-kfd-2-claim.mjs",
53
+ "update:kfd-3-witness": "node scripts/update-kfd-3-witness.mjs"
28
54
  },
29
55
  "publishConfig": {
30
56
  "registry": "https://registry.npmjs.org/",
package/registry.json CHANGED
@@ -6,10 +6,10 @@
6
6
  "number": 1,
7
7
  "id": "KFD-1",
8
8
  "slug": "kfd-1",
9
- "title": "Contracts must not drift: contract worlds need one fact source",
9
+ "title": "Facts must not drift: contract worlds need one fact source",
10
10
  "kind": "procedure",
11
11
  "status": "active",
12
- "path": "decisions/kfd-1.md",
12
+ "path": "decisions/KFD-1.md",
13
13
  "url": "https://kfd.libkungfu.dev/1"
14
14
  },
15
15
  {
@@ -19,18 +19,28 @@
19
19
  "title": "Trust must start from facts: responsibility must be inspectable",
20
20
  "kind": "principle",
21
21
  "status": "active",
22
- "path": "decisions/kfd-2.md",
22
+ "path": "decisions/KFD-2.md",
23
23
  "url": "https://kfd.libkungfu.dev/2"
24
24
  },
25
25
  {
26
26
  "number": 3,
27
27
  "id": "KFD-3",
28
28
  "slug": "kfd-3",
29
- "title": "Cooperation must start from transparent value: compliance must not be coerced",
29
+ "title": "Cooperation must start from trusted value: compliance must not be coerced",
30
30
  "kind": "principle",
31
31
  "status": "active",
32
- "path": "decisions/kfd-3.md",
32
+ "path": "decisions/KFD-3.md",
33
33
  "url": "https://kfd.libkungfu.dev/3"
34
+ },
35
+ {
36
+ "number": 4,
37
+ "id": "KFD-4",
38
+ "slug": "kfd-4",
39
+ "title": "Timelines must declare their observer: useful views need a stated perspective",
40
+ "kind": "procedure",
41
+ "status": "active",
42
+ "path": "decisions/KFD-4.md",
43
+ "url": "https://kfd.libkungfu.dev/4"
34
44
  }
35
45
  ]
36
46
  }
@@ -0,0 +1,113 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "contract": "kungfu-buildchain-impact",
4
+ "release": {
5
+ "line": "v1.0",
6
+ "channel": "release",
7
+ "targetRef": "release/v1/v1.0"
8
+ },
9
+ "versionImpact": {
10
+ "final": "minor",
11
+ "source": "kfd-site-decision-usage-pages",
12
+ "rationale": "This change additively exposes decision usage subpage mapping in the KFD site bundle, while preserving existing registry, package, and schemaVersion 1 compatibility."
13
+ },
14
+ "surfaceImpacts": [
15
+ {
16
+ "id": "kfd-content",
17
+ "impact": "patch",
18
+ "class": "content",
19
+ "rationale": "KFD documents are append-only content coordinates; current documentation changes add KFD-4 as a practice guideline for declared observer timelines, while preserving existing decision numbers and registry shape."
20
+ },
21
+ {
22
+ "id": "kfd-registry-schema",
23
+ "impact": "patch",
24
+ "class": "compatible",
25
+ "rationale": "registry.json keeps schemaVersion 1 and the existing entry shape, including number, id, slug, title, kind, status, path, and url; slug and path values are stable number coordinates."
26
+ },
27
+ {
28
+ "id": "kfd-standards-metadata",
29
+ "impact": "minor",
30
+ "class": "additive",
31
+ "rationale": "standards.json and schemas/ add the KFD-2 trust-taxonomy, trust-claims, trust-assessment, release-claims, and release-trust-passport schema IDs, explicit KFD-1/2/3/4 interface versions, KFD-4 observer-perspective schema metadata, KFD document SHA-256 bindings, KFD-owned concept names, KFD-3 fact-source interface metadata, and official-status interface metadata for downstream consumers."
32
+ },
33
+ {
34
+ "id": "kfd-package-structure",
35
+ "impact": "minor",
36
+ "class": "additive",
37
+ "rationale": "The npm package now publishes the KFD-2 trust taxonomy, generic trust claims, generic trust assessment, release trust schemas, KFD usage documentation, KFD-3 self collaboration-interface witnesses, KFD-4 observer-perspective schema, TRADEMARKS.md, public fact-source metadata, agent quickstart/self-proof documentation, Buildchain contract lock metadata, and repository verification scripts through existing schemas/, docs/, standards.json, site/, scripts/, .buildchain/, and subpath exports while preserving README.md, decisions/, registry.json, and site/ as stable directories."
38
+ },
39
+ {
40
+ "id": "kfd-buildchain-contract-lock",
41
+ "impact": "minor",
42
+ "class": "release-governance",
43
+ "rationale": "KFD now uses Buildchain v2 floating workflow refs with a consumer-owned buildchain.contract-lock.json, so Buildchain runtime contract drift is checked before heavy build or promotion work while retaining floating-ref upgrade flow."
44
+ },
45
+ {
46
+ "id": "kfd-site-homepage-bundle",
47
+ "impact": "minor",
48
+ "class": "additive",
49
+ "rationale": "site/kfd-site.json now exposes generated README-backed homepage.sections and homepage.displayPlan fields, including the adoption-boundary and practice-guidelines homepage sections, and scripts/check.mjs verifies the checked-in bundle matches the README projection so downstream sites can render KFD-owned homepage content without maintaining their own README parser or drifting copy."
50
+ },
51
+ {
52
+ "id": "kfd-site-decision-usage-pages",
53
+ "impact": "minor",
54
+ "class": "additive",
55
+ "rationale": "site/kfd-site.json now exposes decisionPages.usagePages, mapping each authoritative KFD decision page to its docs/KFD-N-usage.md child page and stable /N/usage route."
56
+ },
57
+ {
58
+ "id": "kfd-3-self-collaboration",
59
+ "impact": "minor",
60
+ "class": "release-passport",
61
+ "rationale": "KFD now declares its own participant-facing collaboration interface and ships pre-build plus artifact-side KFD-3 witnesses so Buildchain can audit interface closure in the release passport."
62
+ },
63
+ {
64
+ "id": "kfd-3-trusted-value-evidence",
65
+ "impact": "minor",
66
+ "class": "additive",
67
+ "rationale": "KFD-3 collaboration interfaces now declare explicit valueEvidence that binds participant-facing value claims to fact artifacts, evidence artifacts, KFD-2 trust assessments, and residual-risk state."
68
+ },
69
+ {
70
+ "id": "kfd-2-public-release-trust-claim",
71
+ "impact": "minor",
72
+ "class": "release-passport",
73
+ "rationale": "KFD now ships an explicit machine-bound public KFD-2 release trust claim and passes it into Buildchain release passport generation."
74
+ },
75
+ {
76
+ "id": "kfd-2-generic-trust-assessment-core",
77
+ "impact": "minor",
78
+ "class": "additive",
79
+ "rationale": "KFD-2 now publishes generic trust-claims and trust-assessment schemas and dogfoods them through KFD-owned assessment files that evaluate KFD-1 contract-world, KFD-3 collaboration-interface, and KFD-4 observer-perspective claims."
80
+ },
81
+ {
82
+ "id": "kfd-numbered-paths",
83
+ "impact": "minor",
84
+ "class": "compatible",
85
+ "rationale": "Decision documents now use stable numbered paths under decisions/KFD-N.md, while usage documentation uses docs/KFD-N-usage.md to distinguish authoritative decision text from consumer implementation notes."
86
+ },
87
+ {
88
+ "id": "kfd-release-anchor",
89
+ "impact": "minor",
90
+ "class": "release-governance",
91
+ "rationale": "KFD now declares its package version through an anchored/manual release manifest so package version state is an explicit release fact rather than an auto-derived Buildchain side effect."
92
+ },
93
+ {
94
+ "id": "kfd-release-propagation",
95
+ "impact": "patch",
96
+ "class": "compatible",
97
+ "rationale": "The KFD to site-libkungfu-dev propagation graph now targets the downstream site's actual main branch and documents the exact KFD package surfaces consumed by kfd.libkungfu.dev, without changing the release propagation graph contract."
98
+ },
99
+ {
100
+ "id": "kfd-1-compatibility-impact-core",
101
+ "impact": "minor",
102
+ "class": "additive",
103
+ "rationale": "KFD-1 now defines breaking, additive, none, and unclassifiable as the generic compatibility-impact core, with release versioning as one projection rather than the only interpretation."
104
+ },
105
+ {
106
+ "id": "kfd-1-surface-register",
107
+ "impact": "minor",
108
+ "class": "additive",
109
+ "rationale": "standards.json now publishes the KFD package surface register as the KFD-1 fact source, and the KFD-1 witness projects each registered surface class and impact projection from that fact source."
110
+ }
111
+ ],
112
+ "summary": "KFD v1.0 production promotion is minor-impact because it additively exposes decision usage subpage mapping in the site bundle, preserves existing package and schemaVersion 1 compatibility, and separates authoritative decision paths from numbered usage documentation."
113
+ }
@@ -24,6 +24,13 @@
24
24
  "type": "string",
25
25
  "minLength": 1
26
26
  },
27
+ "compatibilityImpactClasses": {
28
+ "type": "array",
29
+ "items": {
30
+ "$ref": "#/$defs/compatibilityImpact"
31
+ },
32
+ "uniqueItems": true
33
+ },
27
34
  "surfaces": {
28
35
  "type": "array",
29
36
  "items": {
@@ -39,19 +46,75 @@
39
46
  "pattern": "^[a-z0-9]+(-[a-z0-9]+)*$"
40
47
  },
41
48
  "class": {
42
- "enum": [
43
- "integration-time",
44
- "cross-time"
45
- ]
49
+ "$ref": "#/$defs/surfaceClass"
50
+ },
51
+ "classes": {
52
+ "type": "array",
53
+ "items": {
54
+ "$ref": "#/$defs/surfaceClass"
55
+ },
56
+ "uniqueItems": true,
57
+ "minItems": 1
46
58
  },
47
59
  "description": {
48
60
  "type": "string",
49
61
  "minLength": 1
62
+ },
63
+ "weldRationale": {
64
+ "type": "string",
65
+ "minLength": 1
66
+ },
67
+ "impactProjection": {
68
+ "$ref": "#/$defs/impactProjection"
50
69
  }
51
70
  },
52
71
  "additionalProperties": false
53
72
  }
54
73
  }
55
74
  },
75
+ "$defs": {
76
+ "surfaceClass": {
77
+ "enum": [
78
+ "integration-time",
79
+ "cross-time"
80
+ ]
81
+ },
82
+ "compatibilityImpact": {
83
+ "enum": [
84
+ "breaking",
85
+ "additive",
86
+ "none",
87
+ "unclassifiable"
88
+ ]
89
+ },
90
+ "impactProjection": {
91
+ "type": "object",
92
+ "required": [
93
+ "breaking",
94
+ "additive",
95
+ "none",
96
+ "unclassifiable"
97
+ ],
98
+ "properties": {
99
+ "breaking": {
100
+ "type": "string",
101
+ "minLength": 1
102
+ },
103
+ "additive": {
104
+ "type": "string",
105
+ "minLength": 1
106
+ },
107
+ "none": {
108
+ "type": "string",
109
+ "minLength": 1
110
+ },
111
+ "unclassifiable": {
112
+ "type": "string",
113
+ "minLength": 1
114
+ }
115
+ },
116
+ "additionalProperties": false
117
+ }
118
+ },
56
119
  "additionalProperties": true
57
120
  }
@@ -37,6 +37,75 @@
37
37
  },
38
38
  "additionalProperties": false
39
39
  },
40
+ "compatibilityImpactClasses": {
41
+ "type": "array",
42
+ "items": {
43
+ "$ref": "#/$defs/compatibilityImpact"
44
+ },
45
+ "uniqueItems": true
46
+ },
47
+ "surfaces": {
48
+ "type": "array",
49
+ "items": {
50
+ "type": "object",
51
+ "required": [
52
+ "name",
53
+ "class",
54
+ "description",
55
+ "sourcePath",
56
+ "artifactPath",
57
+ "impactProjection"
58
+ ],
59
+ "properties": {
60
+ "name": {
61
+ "type": "string",
62
+ "minLength": 1
63
+ },
64
+ "class": {
65
+ "$ref": "#/$defs/surfaceClass"
66
+ },
67
+ "classes": {
68
+ "type": "array",
69
+ "items": {
70
+ "$ref": "#/$defs/surfaceClass"
71
+ },
72
+ "uniqueItems": true,
73
+ "minItems": 1
74
+ },
75
+ "description": {
76
+ "type": "string",
77
+ "minLength": 1
78
+ },
79
+ "weldRationale": {
80
+ "type": "string",
81
+ "minLength": 1
82
+ },
83
+ "sourcePath": {
84
+ "type": "string",
85
+ "minLength": 1
86
+ },
87
+ "artifactPath": {
88
+ "type": "string",
89
+ "minLength": 1
90
+ },
91
+ "sourceSha256": {
92
+ "type": "string",
93
+ "pattern": "^[0-9a-f]{64}$"
94
+ },
95
+ "expectedSha256": {
96
+ "type": "string",
97
+ "pattern": "^[0-9a-f]{64}$"
98
+ },
99
+ "byteForByte": {
100
+ "type": "boolean"
101
+ },
102
+ "impactProjection": {
103
+ "$ref": "#/$defs/impactProjection"
104
+ }
105
+ },
106
+ "additionalProperties": true
107
+ }
108
+ },
40
109
  "evidence": {
41
110
  "type": "array",
42
111
  "items": {
@@ -59,5 +128,49 @@
59
128
  }
60
129
  }
61
130
  },
131
+ "$defs": {
132
+ "surfaceClass": {
133
+ "enum": [
134
+ "integration-time",
135
+ "cross-time"
136
+ ]
137
+ },
138
+ "compatibilityImpact": {
139
+ "enum": [
140
+ "breaking",
141
+ "additive",
142
+ "none",
143
+ "unclassifiable"
144
+ ]
145
+ },
146
+ "impactProjection": {
147
+ "type": "object",
148
+ "required": [
149
+ "breaking",
150
+ "additive",
151
+ "none",
152
+ "unclassifiable"
153
+ ],
154
+ "properties": {
155
+ "breaking": {
156
+ "type": "string",
157
+ "minLength": 1
158
+ },
159
+ "additive": {
160
+ "type": "string",
161
+ "minLength": 1
162
+ },
163
+ "none": {
164
+ "type": "string",
165
+ "minLength": 1
166
+ },
167
+ "unclassifiable": {
168
+ "type": "string",
169
+ "minLength": 1
170
+ }
171
+ },
172
+ "additionalProperties": false
173
+ }
174
+ },
62
175
  "additionalProperties": true
63
176
  }