@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/README.md
CHANGED
|
@@ -73,7 +73,25 @@ systems. KFD is part of that bootstrap: the worldview is forged through the same
|
|
|
73
73
|
transparent and inspectable mechanisms it asks products to provide.
|
|
74
74
|
|
|
75
75
|
This README states the architecture; KFD-1, KFD-2, and KFD-3 provide the
|
|
76
|
-
|
|
76
|
+
foundation rules.
|
|
77
|
+
|
|
78
|
+
## Practice guidelines
|
|
79
|
+
|
|
80
|
+
KFDs after the foundation triad may define practice guidelines: procedures
|
|
81
|
+
that apply the foundation to a specific class of real-world product behavior.
|
|
82
|
+
They do not expand the foundation triad; they show how the foundation behaves
|
|
83
|
+
when a product must make a concrete kind of reality legible.
|
|
84
|
+
|
|
85
|
+
| Layer | Decision | Reader question | Commitment |
|
|
86
|
+
|---|---|---|---|
|
|
87
|
+
| 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. |
|
|
88
|
+
|
|
89
|
+
KFD-4 is the first such guideline. It applies KFD-1/2/3 to the problem of
|
|
90
|
+
perspective and timeline order. In a multi-machine or multi-agent world, a
|
|
91
|
+
product should not pretend to own a universal global clock. It should preserve
|
|
92
|
+
non-drifting facts, make trust start from those facts, and let participants
|
|
93
|
+
cooperate by exposing the observer, accepted ranges, causal constraints, and
|
|
94
|
+
projection policy behind the view.
|
|
77
95
|
|
|
78
96
|
## Adoption boundary
|
|
79
97
|
|
|
@@ -102,6 +120,8 @@ The first screen should be derived from this README:
|
|
|
102
120
|
- First-screen explanation: the beginning of `Foundation model`, ending at the
|
|
103
121
|
`non-drifting facts -> inspectable trust -> trusted value -> voluntary
|
|
104
122
|
cooperation` chain.
|
|
123
|
+
- Practice signal: the `Practice guidelines` section, starting with KFD-4 as
|
|
124
|
+
the declared-observer rule for perspective-bearing timeline views.
|
|
105
125
|
|
|
106
126
|
Decision cards, detail links, and machine paths should come from
|
|
107
127
|
`registry.json`. The machine-readable site bundle lives at `site/kfd-site.json`
|
|
@@ -124,9 +144,9 @@ KFDs are not a detached manifesto, but they are not a demand that readers adopt
|
|
|
124
144
|
a Kungfu product before understanding the decisions. A philosophy becomes
|
|
125
145
|
load-bearing only when it can be seen in a concrete case. The first concrete
|
|
126
146
|
case is this package itself: `standards.json`, `schemas/`, `docs/`,
|
|
127
|
-
`site/kfd-site.json`, and `scripts/check.mjs` show how KFD-1, KFD-2,
|
|
128
|
-
are expressed as consumable interfaces for both humans and agents.
|
|
129
|
-
broader product case, use the main Kungfu product entrypoint
|
|
147
|
+
`site/kfd-site.json`, and `scripts/check.mjs` show how KFD-1, KFD-2, KFD-3,
|
|
148
|
+
and KFD-4 are expressed as consumable interfaces for both humans and agents.
|
|
149
|
+
For the broader product case, use the main Kungfu product entrypoint
|
|
130
150
|
(`https://kungfu.tech`) for product philosophy, and Buildchain
|
|
131
151
|
(`https://buildchain.libkungfu.dev`) for release and provenance
|
|
132
152
|
accountability. This registry states the commitments; this package and those
|
|
@@ -184,6 +204,11 @@ KFD-3. The KFD-owned boundary is the standard vocabulary, schema IDs, and
|
|
|
184
204
|
closed-world evidence shape. See
|
|
185
205
|
[`docs/kfd-3-collaboration-interface.md`](docs/kfd-3-collaboration-interface.md).
|
|
186
206
|
|
|
207
|
+
KFD-4 publishes an observer-perspective schema under `schemas/kfd-4/`. It gives
|
|
208
|
+
humans and agents a standard vocabulary for observer, accepted facts,
|
|
209
|
+
projection policy, causal constraints, degraded evidence, and verification
|
|
210
|
+
state when a product shows a perspective-bearing timeline.
|
|
211
|
+
|
|
187
212
|
## Current decisions
|
|
188
213
|
|
|
189
214
|
| ID | Kind | Axiom | Status |
|
|
@@ -191,6 +216,7 @@ closed-world evidence shape. See
|
|
|
191
216
|
| [KFD-1](decisions/kfd-1.md) | procedure | Facts must not drift. | active |
|
|
192
217
|
| [KFD-2](decisions/kfd-2.md) | principle | Trust must start from facts. | active |
|
|
193
218
|
| [KFD-3](decisions/kfd-3.md) | principle | Cooperation must start from trusted value. | active |
|
|
219
|
+
| [KFD-4](decisions/kfd-4.md) | procedure | Timelines must declare their observer. | active |
|
|
194
220
|
|
|
195
221
|
## Decision metadata
|
|
196
222
|
|
|
@@ -3,13 +3,13 @@
|
|
|
3
3
|
"contract": "kungfu-buildchain-contract-lock",
|
|
4
4
|
"buildchain": {
|
|
5
5
|
"ref": "v2",
|
|
6
|
-
"resolvedSha": "
|
|
6
|
+
"resolvedSha": "aa039c39e7d5a5a74d078025a21a47676fadca82",
|
|
7
7
|
"contract": "kungfu-buildchain-runtime-contract-world",
|
|
8
|
-
"contractDigest": "sha256:
|
|
9
|
-
"compatibilityDigest": "sha256:
|
|
8
|
+
"contractDigest": "sha256:590724458a59dfed521c876c24cedec43124409b4be79f4ce839ce26ce9f98de",
|
|
9
|
+
"compatibilityDigest": "sha256:407d6d5ee6a96a34d2cc30db9ac64cf4b1819ab6d77bd7a57a07a124f22101ca",
|
|
10
10
|
"majorLine": "v2",
|
|
11
11
|
"compatibilityPolicy": "major-compatible",
|
|
12
|
-
"acceptedAt": "2026-07-
|
|
12
|
+
"acceptedAt": "2026-07-08T02:03:03.789Z",
|
|
13
13
|
"surfaces": [
|
|
14
14
|
{
|
|
15
15
|
"id": "reusable-build",
|
|
@@ -21,6 +21,11 @@
|
|
|
21
21
|
"kind": "workflow",
|
|
22
22
|
"breakingDigest": "sha256:403d2fcdb0c5eabe749e89102defad69745f70a1556707bec7831fcc2e9fa8f8"
|
|
23
23
|
},
|
|
24
|
+
{
|
|
25
|
+
"id": "web-surface",
|
|
26
|
+
"kind": "workflow",
|
|
27
|
+
"breakingDigest": "sha256:82ee63cb336e40d832dfff4a1c5e6cbfa221a4fc8b2359990033bc931bffc43a"
|
|
28
|
+
},
|
|
24
29
|
{
|
|
25
30
|
"id": "promote-buildchain-ref-action",
|
|
26
31
|
"kind": "action",
|
|
@@ -54,7 +59,17 @@
|
|
|
54
59
|
{
|
|
55
60
|
"id": "buildchain-cli",
|
|
56
61
|
"kind": "cli",
|
|
57
|
-
"breakingDigest": "sha256:
|
|
62
|
+
"breakingDigest": "sha256:90a73892b2d6c214048448d5f45df75639bdf7b7e8fefd9c596e04b087407bcc"
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"id": "homebrew-distribution-index",
|
|
66
|
+
"kind": "node-api",
|
|
67
|
+
"breakingDigest": "sha256:148c0387ff4cea76433bbde80cd9d77c5aa67e1a29856ced33e4d819366f2213"
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"id": "readme-badge-facts",
|
|
71
|
+
"kind": "node-api",
|
|
72
|
+
"breakingDigest": "sha256:bcd72ad6dfba8013c96f8b2f7b0a307d2e7713972a1219348f0d5ecc493939a0"
|
|
58
73
|
},
|
|
59
74
|
{
|
|
60
75
|
"id": "agent-manual-registry",
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
# KFD-4: Timelines must declare their observer — useful views need a stated perspective
|
|
2
|
+
|
|
3
|
+
- Status: active
|
|
4
|
+
- Number: 4
|
|
5
|
+
- Kind: procedure
|
|
6
|
+
- Applies to: every kungfu-systems product, repository, release surface, extension surface, hosted surface, and agent-facing interface that represents time, ordering, history, timelines, sync, replay, or mixed-source work facts
|
|
7
|
+
|
|
8
|
+
## One sentence
|
|
9
|
+
|
|
10
|
+
Timelines must declare their observer.
|
|
11
|
+
|
|
12
|
+
A product must not present a mixed-source ordering as an absolute view from
|
|
13
|
+
nowhere. A useful view of reality must state who is observing, which facts were
|
|
14
|
+
accepted, and how concurrent facts were projected.
|
|
15
|
+
|
|
16
|
+
## Decision type
|
|
17
|
+
|
|
18
|
+
KFDs can be principles or procedures:
|
|
19
|
+
|
|
20
|
+
- A **principle** states what must remain true across kungfu-systems even as
|
|
21
|
+
products, repositories, and release lines change.
|
|
22
|
+
- A **procedure** states how a class of work enforces or protects a principle.
|
|
23
|
+
|
|
24
|
+
This KFD is a procedure. It is not a fourth foundation principle beside
|
|
25
|
+
KFD-1/2/3. It is the first practice guideline derived from the foundation
|
|
26
|
+
triad: once facts are non-drifting, trust starts from facts, and cooperation
|
|
27
|
+
starts from trusted value, a product still has to say from which perspective a
|
|
28
|
+
time-ordered view is being offered.
|
|
29
|
+
|
|
30
|
+
## Practice role
|
|
31
|
+
|
|
32
|
+
Within the KFD structure, KFD-1/2/3 form the foundation:
|
|
33
|
+
|
|
34
|
+
```text
|
|
35
|
+
facts must not drift
|
|
36
|
+
-> trust must start from facts
|
|
37
|
+
-> cooperation must start from trusted value
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
KFD-4 applies that foundation to perspective, ordering, and action. It answers
|
|
41
|
+
this practice question:
|
|
42
|
+
|
|
43
|
+
```text
|
|
44
|
+
In a complex world, from which declared perspective is this view useful,
|
|
45
|
+
stable, and trustworthy?
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## Procedure
|
|
49
|
+
|
|
50
|
+
When a product combines facts from multiple machines, agents, processes,
|
|
51
|
+
sessions, sources, repositories, providers, or external systems, it should
|
|
52
|
+
treat the visible timeline as an observer-relative projection over accepted
|
|
53
|
+
facts, not as a claim that the product has found one absolute global clock.
|
|
54
|
+
|
|
55
|
+
The authoritative record should be facts and evidence:
|
|
56
|
+
|
|
57
|
+
- source-local records and their local order;
|
|
58
|
+
- provenance for source, participant, location, session, run, or adapter;
|
|
59
|
+
- accepted ranges, heads, cursors, watermarks, and capture boundaries;
|
|
60
|
+
- causal links between observations, decisions, actions, and results;
|
|
61
|
+
- payload hashes, schema bindings, receipts, redaction states, and verification
|
|
62
|
+
results.
|
|
63
|
+
|
|
64
|
+
The visible timeline is a view over those facts. Its perspective must be
|
|
65
|
+
declared enough that another human or agent can reproduce the same view from
|
|
66
|
+
the same accepted facts.
|
|
67
|
+
|
|
68
|
+
## What a declared perspective should include
|
|
69
|
+
|
|
70
|
+
A perspective-bearing timeline should identify, where applicable:
|
|
71
|
+
|
|
72
|
+
- the observer or observer location whose view is being presented;
|
|
73
|
+
- the accepted fact sources, ranges, watermarks, and freshness boundaries;
|
|
74
|
+
- the projection policy version;
|
|
75
|
+
- the ordering rule for concurrent or causally unrelated facts;
|
|
76
|
+
- the deterministic tie-breaker used when policy and source-local order are not
|
|
77
|
+
enough;
|
|
78
|
+
- the degraded state when causality, payloads, schemas, accepted ranges, or
|
|
79
|
+
freshness are incomplete.
|
|
80
|
+
|
|
81
|
+
Causal facts dominate projection policy. A product may order concurrent facts
|
|
82
|
+
by observer policy, source priority, or deterministic tie-breaker, but it must
|
|
83
|
+
not invert a known causal dependency. If it cannot produce a valid total order
|
|
84
|
+
without hiding missing causality or missing evidence, it should report a
|
|
85
|
+
degraded view rather than silently sorting by wall-clock time.
|
|
86
|
+
|
|
87
|
+
## What it requires
|
|
88
|
+
|
|
89
|
+
- GUI, CLI, API, export, and agent-facing timeline surfaces should make the
|
|
90
|
+
observer or projection policy inspectable when they mix sources.
|
|
91
|
+
- Wall-clock time may be used for display, latency, diagnostics, and
|
|
92
|
+
source-local ordering, but it must not be the only proof of cross-source
|
|
93
|
+
order.
|
|
94
|
+
- Exported bundles that claim a timeline order should carry enough perspective
|
|
95
|
+
metadata for another consumer to reproduce that order.
|
|
96
|
+
- Storage and sync systems should preserve source provenance, accepted ranges,
|
|
97
|
+
and causal links rather than flattening remote facts into anonymous local
|
|
98
|
+
records.
|
|
99
|
+
- Fsck, release gates, or other verification systems should eventually be able
|
|
100
|
+
to check that a projected view does not contradict known facts, invert known
|
|
101
|
+
causality, or hide an incomplete accepted range.
|
|
102
|
+
|
|
103
|
+
## What it does not require
|
|
104
|
+
|
|
105
|
+
- It does not say there are no facts. Facts and causality remain load-bearing.
|
|
106
|
+
- It does not permit arbitrary narratives, invented evidence, or convenient
|
|
107
|
+
ordering.
|
|
108
|
+
- It does not require a universal global clock, a permanent global sequencer,
|
|
109
|
+
or distributed consensus for every timeline.
|
|
110
|
+
- It does not forbid a product from having a default observer policy.
|
|
111
|
+
- It does not solve conflicts between independently written authority roots.
|
|
112
|
+
Conflict policy must be explicit when it exists.
|
|
113
|
+
- It does not supersede KFD-1, KFD-2, or KFD-3. It applies them to
|
|
114
|
+
perspective-bearing views.
|
|
115
|
+
|
|
116
|
+
## Relation to KFD-1, KFD-2, and KFD-3
|
|
117
|
+
|
|
118
|
+
KFD-1 says facts must not drift. KFD-4 depends on that: a perspective-bearing
|
|
119
|
+
timeline must stand on accepted facts, not on a driftable story.
|
|
120
|
+
|
|
121
|
+
KFD-2 says trust must start from facts. KFD-4 applies that to ordering: trust
|
|
122
|
+
in a timeline comes from reproducibility under declared facts and declared
|
|
123
|
+
projection policy, not from an undeclared claim to absolute time.
|
|
124
|
+
|
|
125
|
+
KFD-3 says cooperation must start from trusted value. KFD-4 applies that to
|
|
126
|
+
multi-participant work: humans and agents may carry different perspectives,
|
|
127
|
+
but cooperation becomes possible when those perspectives expose their facts,
|
|
128
|
+
constraints, and view policies instead of forcing everyone into a hidden
|
|
129
|
+
ordering.
|
|
130
|
+
|
|
131
|
+
Together:
|
|
132
|
+
|
|
133
|
+
```text
|
|
134
|
+
KFD-1: facts must not drift.
|
|
135
|
+
KFD-2: trust must start from facts.
|
|
136
|
+
KFD-3: cooperation must start from trusted value.
|
|
137
|
+
KFD-4: timelines must declare their observer.
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
The first three define the foundation. KFD-4 is a practice guideline for how
|
|
141
|
+
that foundation behaves when a product shows time, history, replay, sync, or
|
|
142
|
+
mixed-source work state.
|
|
143
|
+
|
|
144
|
+
## Implementation case: Kungfu observer timelines
|
|
145
|
+
|
|
146
|
+
Kungfu's observer-relative timeline design is the first concrete product case.
|
|
147
|
+
Kungfu stores causal runtime facts, source provenance, accepted ranges,
|
|
148
|
+
manifests, payload evidence, and verification results. A mixed-source timeline
|
|
149
|
+
is a deterministic projection from an explicit observer policy; it is not a
|
|
150
|
+
claim that Kungfu has discovered one universal global clock.
|
|
151
|
+
|
|
152
|
+
That design lets a local user sync facts from another machine, inspect agent
|
|
153
|
+
work that happened elsewhere, and still ask precise questions:
|
|
154
|
+
|
|
155
|
+
```text
|
|
156
|
+
which facts did this observer accept?
|
|
157
|
+
which source or location did each fact come from?
|
|
158
|
+
which causal links constrain the order?
|
|
159
|
+
which concurrent facts were ordered by policy?
|
|
160
|
+
can another consumer reproduce the same view?
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
This is the product-level form of the KFD-4 procedure.
|
|
164
|
+
|
|
165
|
+
## Implementation case: the KFD package
|
|
166
|
+
|
|
167
|
+
The `@kungfu-tech/kfd` npm package publishes a KFD-4 observer-perspective
|
|
168
|
+
schema under `schemas/kfd-4/observer-perspective.schema.json`. The schema is
|
|
169
|
+
not a mandatory runtime data model for every adopter. It is the KFD-owned
|
|
170
|
+
vocabulary for declaring observer, accepted facts, projection policy, causal
|
|
171
|
+
constraints, and degraded evidence state in products that need a
|
|
172
|
+
perspective-bearing timeline.
|
|
173
|
+
|
|
174
|
+
## Adopters
|
|
175
|
+
|
|
176
|
+
Each adopting repository cites this KFD when designing or changing a timeline,
|
|
177
|
+
history view, replay view, source sync flow, multi-machine view, multi-agent
|
|
178
|
+
view, audit bundle, or exported record that orders facts from more than one
|
|
179
|
+
source or perspective.
|
|
180
|
+
|
|
181
|
+
Adopters should keep local implementation detail in repository documents and
|
|
182
|
+
reference this KFD rather than restating it.
|
package/docs/MAP.md
CHANGED
|
@@ -5,8 +5,11 @@
|
|
|
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) |
|
|
8
11
|
| How should an agent quickly understand this package? | [`../README.md`](../README.md#agent-quickstart) |
|
|
9
|
-
| What is the concrete self-proof case for KFD-1/2/3? | [`../README.md`](../README.md#product-proof-path) and the implementation case in each KFD |
|
|
12
|
+
| 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 |
|
|
10
13
|
| Where is the public KFD fact source? | [`../README.md`](../README.md#decision-metadata) and [`../site/kfd-site.json`](../site/kfd-site.json) decision metadata |
|
|
11
14
|
| What does Apache-2.0 cover, and what remains official/trademark-bound? | [`../TRADEMARKS.md`](../TRADEMARKS.md) |
|
|
12
15
|
| What should a site renderer consume to render `kfd.libkungfu.dev`? | [`../site/kfd-site.json`](../site/kfd-site.json) |
|
package/kfd.release.json
CHANGED
package/package.json
CHANGED
package/registry.json
CHANGED
|
@@ -31,6 +31,16 @@
|
|
|
31
31
|
"status": "active",
|
|
32
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
|
}
|
package/release-impact.json
CHANGED
|
@@ -9,14 +9,14 @@
|
|
|
9
9
|
"versionImpact": {
|
|
10
10
|
"final": "minor",
|
|
11
11
|
"source": "kfd-surface-register",
|
|
12
|
-
"rationale": "This change additively registers KFD-owned standards metadata, the KFD-2 trust taxonomy, KFD-2 release trust schemas, KFD-3 collaboration-interface schemas, KFD-3 self-verification witnesses, KFD-1 document/interface integrity bindings, and the README-backed KFD site homepage projection while keeping existing registry and decision surfaces compatible."
|
|
12
|
+
"rationale": "This change additively registers KFD-owned standards metadata, the KFD-2 trust taxonomy, KFD-2 release trust schemas, KFD-3 collaboration-interface schemas, KFD-3 self-verification witnesses, KFD-4 observer-perspective schema, KFD-1 document/interface integrity bindings, and the README-backed KFD site homepage projection while keeping existing registry and decision surfaces compatible."
|
|
13
13
|
},
|
|
14
14
|
"surfaceImpacts": [
|
|
15
15
|
{
|
|
16
16
|
"id": "kfd-content",
|
|
17
17
|
"impact": "patch",
|
|
18
18
|
"class": "content",
|
|
19
|
-
"rationale": "KFD documents are append-only content coordinates; current documentation changes add
|
|
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
20
|
},
|
|
21
21
|
{
|
|
22
22
|
"id": "kfd-registry-schema",
|
|
@@ -28,13 +28,13 @@
|
|
|
28
28
|
"id": "kfd-standards-metadata",
|
|
29
29
|
"impact": "minor",
|
|
30
30
|
"class": "additive",
|
|
31
|
-
"rationale": "standards.json and schemas/ add the KFD-2 trust-taxonomy schema ID, release-claims and release-trust-passport schema IDs, explicit KFD-1/2/3 interface versions, KFD document SHA-256 bindings, KFD-owned concept names, KFD-3 fact-source interface metadata, and official-status interface metadata for downstream consumers."
|
|
31
|
+
"rationale": "standards.json and schemas/ add the KFD-2 trust-taxonomy schema ID, 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
32
|
},
|
|
33
33
|
{
|
|
34
34
|
"id": "kfd-package-structure",
|
|
35
35
|
"impact": "minor",
|
|
36
36
|
"class": "additive",
|
|
37
|
-
"rationale": "The npm package now publishes the KFD-2 trust taxonomy, KFD-2 schemas, KFD-2 documentation, KFD-3 self collaboration-interface witnesses, 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 existing README.md, decisions/, registry.json, and site/ paths."
|
|
37
|
+
"rationale": "The npm package now publishes the KFD-2 trust taxonomy, KFD-2 schemas, KFD-2 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 existing README.md, decisions/, registry.json, and site/ paths."
|
|
38
38
|
},
|
|
39
39
|
{
|
|
40
40
|
"id": "kfd-buildchain-contract-lock",
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
"id": "kfd-site-homepage-bundle",
|
|
47
47
|
"impact": "minor",
|
|
48
48
|
"class": "additive",
|
|
49
|
-
"rationale": "site/kfd-site.json now exposes generated README-backed homepage.sections and homepage.displayPlan fields, including the adoption-boundary homepage
|
|
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
50
|
},
|
|
51
51
|
{
|
|
52
52
|
"id": "kfd-3-self-collaboration",
|
|
@@ -73,5 +73,5 @@
|
|
|
73
73
|
"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."
|
|
74
74
|
}
|
|
75
75
|
],
|
|
76
|
-
"summary": "KFD v1.0 production promotion is minor-impact because it additively exposes KFD-2 trust taxonomy and release trust metadata, KFD-1/2/3 interface version metadata, KFD-3 self-verification witnesses, Buildchain contract lock metadata, document integrity bindings, a README-backed homepage bundle/display plan, and a corrected site release-propagation target for Buildchain and other consumers; existing registry, decision text, site bundle, and propagation graph contracts remain compatible."
|
|
76
|
+
"summary": "KFD v1.0 production promotion is minor-impact because it additively exposes KFD-2 trust taxonomy and release trust metadata, KFD-1/2/3/4 interface version metadata, KFD-3 self-verification witnesses, KFD-4 observer-perspective schema, Buildchain contract lock metadata, document integrity bindings, a README-backed homepage bundle/display plan, and a corrected site release-propagation target for Buildchain and other consumers; existing registry, decision text, site bundle, and propagation graph contracts remain compatible."
|
|
77
77
|
}
|
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://kfd.libkungfu.dev/schemas/kfd-4/observer-perspective.schema.json",
|
|
4
|
+
"title": "KFD-4 observer perspective",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"required": [
|
|
7
|
+
"schemaVersion",
|
|
8
|
+
"contract",
|
|
9
|
+
"standard",
|
|
10
|
+
"id",
|
|
11
|
+
"observer",
|
|
12
|
+
"acceptedFacts",
|
|
13
|
+
"projectionPolicy",
|
|
14
|
+
"verification"
|
|
15
|
+
],
|
|
16
|
+
"properties": {
|
|
17
|
+
"schemaVersion": {
|
|
18
|
+
"const": 1
|
|
19
|
+
},
|
|
20
|
+
"contract": {
|
|
21
|
+
"const": "kfd-4-observer-perspective"
|
|
22
|
+
},
|
|
23
|
+
"standard": {
|
|
24
|
+
"const": "kfd-4"
|
|
25
|
+
},
|
|
26
|
+
"id": {
|
|
27
|
+
"type": "string",
|
|
28
|
+
"minLength": 1
|
|
29
|
+
},
|
|
30
|
+
"observer": {
|
|
31
|
+
"$ref": "#/$defs/observer"
|
|
32
|
+
},
|
|
33
|
+
"acceptedFacts": {
|
|
34
|
+
"type": "array",
|
|
35
|
+
"items": {
|
|
36
|
+
"$ref": "#/$defs/acceptedFactSource"
|
|
37
|
+
},
|
|
38
|
+
"minItems": 1
|
|
39
|
+
},
|
|
40
|
+
"projectionPolicy": {
|
|
41
|
+
"$ref": "#/$defs/projectionPolicy"
|
|
42
|
+
},
|
|
43
|
+
"causalConstraints": {
|
|
44
|
+
"type": "array",
|
|
45
|
+
"items": {
|
|
46
|
+
"$ref": "#/$defs/causalConstraint"
|
|
47
|
+
},
|
|
48
|
+
"default": []
|
|
49
|
+
},
|
|
50
|
+
"degradedEvidence": {
|
|
51
|
+
"type": "array",
|
|
52
|
+
"items": {
|
|
53
|
+
"$ref": "#/$defs/degradedEvidence"
|
|
54
|
+
},
|
|
55
|
+
"default": []
|
|
56
|
+
},
|
|
57
|
+
"verification": {
|
|
58
|
+
"$ref": "#/$defs/verification"
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
"additionalProperties": false,
|
|
62
|
+
"$defs": {
|
|
63
|
+
"observer": {
|
|
64
|
+
"type": "object",
|
|
65
|
+
"required": [
|
|
66
|
+
"id",
|
|
67
|
+
"kind"
|
|
68
|
+
],
|
|
69
|
+
"properties": {
|
|
70
|
+
"id": {
|
|
71
|
+
"type": "string",
|
|
72
|
+
"minLength": 1
|
|
73
|
+
},
|
|
74
|
+
"kind": {
|
|
75
|
+
"enum": [
|
|
76
|
+
"human",
|
|
77
|
+
"agent",
|
|
78
|
+
"runtime-location",
|
|
79
|
+
"product-view",
|
|
80
|
+
"service",
|
|
81
|
+
"other"
|
|
82
|
+
]
|
|
83
|
+
},
|
|
84
|
+
"location": {
|
|
85
|
+
"type": "string"
|
|
86
|
+
},
|
|
87
|
+
"description": {
|
|
88
|
+
"type": "string"
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
"additionalProperties": false
|
|
92
|
+
},
|
|
93
|
+
"acceptedFactSource": {
|
|
94
|
+
"type": "object",
|
|
95
|
+
"required": [
|
|
96
|
+
"sourceId",
|
|
97
|
+
"sourceKind"
|
|
98
|
+
],
|
|
99
|
+
"properties": {
|
|
100
|
+
"sourceId": {
|
|
101
|
+
"type": "string",
|
|
102
|
+
"minLength": 1
|
|
103
|
+
},
|
|
104
|
+
"sourceKind": {
|
|
105
|
+
"enum": [
|
|
106
|
+
"local-runtime",
|
|
107
|
+
"remote-runtime",
|
|
108
|
+
"imported-bundle",
|
|
109
|
+
"adapter",
|
|
110
|
+
"repository",
|
|
111
|
+
"release-artifact",
|
|
112
|
+
"external-system",
|
|
113
|
+
"other"
|
|
114
|
+
]
|
|
115
|
+
},
|
|
116
|
+
"location": {
|
|
117
|
+
"type": "string"
|
|
118
|
+
},
|
|
119
|
+
"acceptedRange": {
|
|
120
|
+
"type": "string"
|
|
121
|
+
},
|
|
122
|
+
"watermark": {
|
|
123
|
+
"type": "string"
|
|
124
|
+
},
|
|
125
|
+
"manifest": {
|
|
126
|
+
"type": "string"
|
|
127
|
+
},
|
|
128
|
+
"freshness": {
|
|
129
|
+
"type": "string"
|
|
130
|
+
},
|
|
131
|
+
"provenance": {
|
|
132
|
+
"type": "string"
|
|
133
|
+
}
|
|
134
|
+
},
|
|
135
|
+
"additionalProperties": false
|
|
136
|
+
},
|
|
137
|
+
"projectionPolicy": {
|
|
138
|
+
"type": "object",
|
|
139
|
+
"required": [
|
|
140
|
+
"policyVersion",
|
|
141
|
+
"causalDominance",
|
|
142
|
+
"tieBreaker"
|
|
143
|
+
],
|
|
144
|
+
"properties": {
|
|
145
|
+
"policyVersion": {
|
|
146
|
+
"type": "string",
|
|
147
|
+
"minLength": 1
|
|
148
|
+
},
|
|
149
|
+
"observerLocation": {
|
|
150
|
+
"type": "string"
|
|
151
|
+
},
|
|
152
|
+
"sourcePriority": {
|
|
153
|
+
"type": "array",
|
|
154
|
+
"items": {
|
|
155
|
+
"type": "string"
|
|
156
|
+
},
|
|
157
|
+
"default": []
|
|
158
|
+
},
|
|
159
|
+
"causalDominance": {
|
|
160
|
+
"const": true
|
|
161
|
+
},
|
|
162
|
+
"concurrentOrdering": {
|
|
163
|
+
"type": "string",
|
|
164
|
+
"description": "How concurrent or causally unrelated facts are ordered under this perspective."
|
|
165
|
+
},
|
|
166
|
+
"tieBreaker": {
|
|
167
|
+
"type": "string",
|
|
168
|
+
"minLength": 1
|
|
169
|
+
}
|
|
170
|
+
},
|
|
171
|
+
"additionalProperties": false
|
|
172
|
+
},
|
|
173
|
+
"causalConstraint": {
|
|
174
|
+
"type": "object",
|
|
175
|
+
"required": [
|
|
176
|
+
"before",
|
|
177
|
+
"after",
|
|
178
|
+
"basis"
|
|
179
|
+
],
|
|
180
|
+
"properties": {
|
|
181
|
+
"before": {
|
|
182
|
+
"type": "string",
|
|
183
|
+
"minLength": 1
|
|
184
|
+
},
|
|
185
|
+
"after": {
|
|
186
|
+
"type": "string",
|
|
187
|
+
"minLength": 1
|
|
188
|
+
},
|
|
189
|
+
"basis": {
|
|
190
|
+
"enum": [
|
|
191
|
+
"causal-parent",
|
|
192
|
+
"trigger-frame",
|
|
193
|
+
"stream-topology",
|
|
194
|
+
"manifest-boundary",
|
|
195
|
+
"accepted-range",
|
|
196
|
+
"source-local-order",
|
|
197
|
+
"other"
|
|
198
|
+
]
|
|
199
|
+
},
|
|
200
|
+
"evidence": {
|
|
201
|
+
"type": "string"
|
|
202
|
+
}
|
|
203
|
+
},
|
|
204
|
+
"additionalProperties": false
|
|
205
|
+
},
|
|
206
|
+
"degradedEvidence": {
|
|
207
|
+
"type": "object",
|
|
208
|
+
"required": [
|
|
209
|
+
"id",
|
|
210
|
+
"state",
|
|
211
|
+
"reason"
|
|
212
|
+
],
|
|
213
|
+
"properties": {
|
|
214
|
+
"id": {
|
|
215
|
+
"type": "string",
|
|
216
|
+
"minLength": 1
|
|
217
|
+
},
|
|
218
|
+
"state": {
|
|
219
|
+
"enum": [
|
|
220
|
+
"missing-causality",
|
|
221
|
+
"missing-payload",
|
|
222
|
+
"missing-schema",
|
|
223
|
+
"stale-source",
|
|
224
|
+
"incomplete-range",
|
|
225
|
+
"unknown-policy-version",
|
|
226
|
+
"unverified-source",
|
|
227
|
+
"other"
|
|
228
|
+
]
|
|
229
|
+
},
|
|
230
|
+
"reason": {
|
|
231
|
+
"type": "string",
|
|
232
|
+
"minLength": 1
|
|
233
|
+
},
|
|
234
|
+
"impact": {
|
|
235
|
+
"enum": [
|
|
236
|
+
"display-warning",
|
|
237
|
+
"trust-downgrade",
|
|
238
|
+
"view-invalid",
|
|
239
|
+
"action-required"
|
|
240
|
+
]
|
|
241
|
+
}
|
|
242
|
+
},
|
|
243
|
+
"additionalProperties": false
|
|
244
|
+
},
|
|
245
|
+
"verification": {
|
|
246
|
+
"type": "object",
|
|
247
|
+
"required": [
|
|
248
|
+
"result"
|
|
249
|
+
],
|
|
250
|
+
"properties": {
|
|
251
|
+
"result": {
|
|
252
|
+
"enum": [
|
|
253
|
+
"pass",
|
|
254
|
+
"degraded",
|
|
255
|
+
"fail",
|
|
256
|
+
"not-checked"
|
|
257
|
+
]
|
|
258
|
+
},
|
|
259
|
+
"command": {
|
|
260
|
+
"type": "string"
|
|
261
|
+
},
|
|
262
|
+
"checkedAt": {
|
|
263
|
+
"type": "string"
|
|
264
|
+
},
|
|
265
|
+
"notes": {
|
|
266
|
+
"type": "string"
|
|
267
|
+
}
|
|
268
|
+
},
|
|
269
|
+
"additionalProperties": false
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
}
|