Skip to content

Commit 7578e9e

Browse files
committed
fix: roast remediation — Edge BFO type, v3.5 core.ttl, proof/schema alignment
Ontology roast fixes (49 issues → addressing critical + major): v3.5 core.ttl: - Version: v1.3.11-DRAFT-01 → v3.5.0, date 2026-03-26 - Edge: bfo:0000040 (MaterialEntity) → bfo:0000031 (GenDependentContinuant) - Added: EXTENDS, COMPOSES, TRIGGERS edge predicates - Added: GovernanceMode (STRICT/RELAXED/AUTONOMOUS) as Disposition - Added: Action class (subClassOf bfo:0000015 Process) - Added: InformationEntity (referenced by workflow.ttl, was undefined) - Added: owl:imports for base-instances.ttl and proof.ttl v3.4 core.ttl: - Edge BFO type: same fix (0000040 → 0000031) proof.ttl: - Added: checked_at property on ProofRecord - Updated: svid marked as required in comment base-instances.ttl: - Updated: data property marked required in comment schema.yaml (both versions): - Edge class_uri: bfo:0000040 → bfo:0000031 - FolderStructure: pre-Three-Loops layout → storage/ layout - ProofRecord: svid required, checked_at added - SealedInstance: data required
1 parent bd9d701 commit 7578e9e

6 files changed

Lines changed: 141 additions & 36 deletions

File tree

docs/public/ontology/v3.4/core.ttl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -122,14 +122,14 @@ ckp:hasNotificationContract a owl:ObjectProperty ;
122122
rdfs:label "has notification contract"@en .
123123

124124
#################################################################
125-
# Edge (Independent Continuant - Relational Entity)
125+
# Edge (Generically Dependent Continuant - Relational Entity)
126126
# Implementation: /core/src/EdgeKernel.js
127127
#################################################################
128128

129129
ckp:Edge a owl:Class ;
130-
rdfs:subClassOf bfo:0000040 ; # bfo:IndependentContinuant
130+
rdfs:subClassOf bfo:0000031 ; # bfo:GenericallyDependentContinuant
131131
rdfs:label "Edge"@en ;
132-
rdfs:comment "A persistent relationship between two kernels - the ONLY mechanism for inter-Kernel communication."@en ;
132+
rdfs:comment "An abstract relationship between two kernels - the ONLY mechanism for inter-Kernel communication. Edges are information entities that depend on the kernels they connect."@en ;
133133
dc:description "Implemented in /core/src/EdgeKernel.js:1-448" ;
134134
dc:description "Edge kernel structure created in /edges/{EdgeType}.{Source}.{Target}/" ;
135135
ckp:implementationStatus "WELL_IMPLEMENTED"^^xsd:string ;

docs/public/ontology/v3.4/schema.yaml

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -98,8 +98,8 @@ classes:
9898
multivalued: true
9999

100100
Edge:
101-
class_uri: bfo:0000040
102-
description: First-class BFO Material Entity mediating K-to-K communication
101+
class_uri: bfo:0000031
102+
description: First-class BFO GenericallyDependentContinuant (information entity) mediating K-to-K communication
103103
attributes:
104104
target_kernel: { required: true }
105105
predicate: { range: EdgePredicate, required: true }
@@ -152,17 +152,26 @@ classes:
152152

153153
FolderStructure:
154154
description: >
155-
Required folders and files for every CK. The scaffolding tool
156-
reads this to create compliant CK directories.
155+
Three Loops directory structure for every CK. The scaffolding tool
156+
reads this to create compliant CK directories. Each loop is an
157+
independently-versioned volume on SeaweedFS.
157158
attributes:
158-
required_folders:
159+
ck_loop_files:
159160
range: string
160161
multivalued: true
161-
ifabsent: '["tool", "llm", "log", "web", "instances", "inbox"]'
162-
required_files:
162+
ifabsent: '["conceptkernel.yaml", ".ck-guid", "README.md", "CLAUDE.md", "SKILL.md", "CHANGELOG.md", "ontology.yaml", "rules.shacl", "serving.json"]'
163+
description: "Files at CK root (identity loop — ck-{guid}-ck volume)"
164+
tool_dir:
165+
ifabsent: "tool/"
166+
description: "Tool loop directory (capability — ck-{guid}-tool volume)"
167+
storage_dir:
168+
ifabsent: "storage/"
169+
description: "Data loop directory (knowledge — ck-{guid}-storage volume)"
170+
storage_subdirs:
163171
range: string
164172
multivalued: true
165-
ifabsent: '["conceptkernel.yaml", "tool/processor.py", "llm/CLAUDE.md", "web/index.html"]'
173+
ifabsent: '["instances/", "ledger/", "proof/", "index/", "llm/", "web/"]'
174+
description: "Required subdirectories under storage/"
166175
instance_prefix:
167176
ifabsent: "i-"
168177
description: "Instance folder prefix"

docs/public/ontology/v3.5/base-instances.ttl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ ckp:data a owl:DatatypeProperty ;
9999
rdfs:domain ckp:SealedInstance ;
100100
rdfs:range xsd:string ;
101101
rdfs:label "data"@en ;
102-
rdfs:comment "JSON-serialized output data of the sealed instance (stored as data.json)"@en .
102+
rdfs:comment "JSON-serialized output data of the sealed instance (stored as data.json). Required — every SealedInstance must contain data."@en .
103103

104104
ckp:tool_ref a owl:DatatypeProperty , owl:FunctionalProperty ;
105105
rdfs:domain ckp:SealedInstance ;

docs/public/ontology/v3.5/core.ttl

Lines changed: 89 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# ConceptKernel Base BFO Ontology
2-
# Version: v1.3.11-DRAFT-01
3-
# Date: 2025-11-23
2+
# Version: v3.5.0
3+
# Date: 2026-03-26
44
# Purpose: Core BFO mappings for ConceptKernel continuants
55

66
@prefix : <https://conceptkernel.org/ontology/v3.5/> .
@@ -17,10 +17,12 @@
1717
dc:title "ConceptKernel BFO Base Ontology" ;
1818
dc:description "Formal ontology mapping ConceptKernel entities to Basic Formal Ontology (BFO) classes" ;
1919
dcterms:created "2025-11-23"^^xsd:date ;
20-
dcterms:modified "2025-11-23"^^xsd:date ;
21-
owl:versionInfo "v1.3.11-DRAFT-01" ;
22-
rdfs:comment "Defines core continuants: Kernel, Edge, Instance, Ontology" ;
23-
owl:imports <http://purl.obolibrary.org/obo/bfo.owl> .
20+
dcterms:modified "2026-03-26"^^xsd:date ;
21+
owl:versionInfo "v3.5.0" ;
22+
rdfs:comment "Core continuants and occurrents: Kernel, Edge, Instance, Ontology, Action, GovernanceMode"@en ;
23+
owl:imports <http://purl.obolibrary.org/obo/bfo.owl> ,
24+
<https://conceptkernel.org/ontology/v3.5/base-instances.ttl> ,
25+
<https://conceptkernel.org/ontology/v3.5/proof.ttl> .
2426

2527
#################################################################
2628
# Continuants - Entities that persist through time
@@ -122,14 +124,23 @@ ckp:hasNotificationContract a owl:ObjectProperty ;
122124
rdfs:label "has notification contract"@en .
123125

124126
#################################################################
125-
# Edge (Independent Continuant - Relational Entity)
127+
# InformationEntity (Generically Dependent Continuant)
128+
#################################################################
129+
130+
ckp:InformationEntity a owl:Class ;
131+
rdfs:subClassOf bfo:0000031 ; # bfo:GenericallyDependentContinuant
132+
rdfs:label "Information Entity"@en ;
133+
rdfs:comment "An abstract information-bearing entity that can be concretized in multiple bearers. Base class for Instance, Edge, and other information artifacts."@en .
134+
135+
#################################################################
136+
# Edge (Generically Dependent Continuant - Relational Entity)
126137
# Implementation: /core/src/EdgeKernel.js
127138
#################################################################
128139

129140
ckp:Edge a owl:Class ;
130-
rdfs:subClassOf bfo:0000040 ; # bfo:IndependentContinuant
141+
rdfs:subClassOf bfo:0000031 ; # bfo:GenericallyDependentContinuant
131142
rdfs:label "Edge"@en ;
132-
rdfs:comment "A persistent relationship between two kernels - the ONLY mechanism for inter-Kernel communication."@en ;
143+
rdfs:comment "An abstract relationship between two kernels - the ONLY mechanism for inter-Kernel communication. Edges are information entities that depend on the kernels they connect."@en ;
133144
dc:description "Implemented in /core/src/EdgeKernel.js:1-448" ;
134145
dc:description "Edge kernel structure created in /edges/{EdgeType}.{Source}.{Target}/" ;
135146
ckp:implementationStatus "WELL_IMPLEMENTED"^^xsd:string ;
@@ -167,6 +178,20 @@ ckp:TRANSFORMS a ckp:RelationshipType ;
167178
rdfs:label "TRANSFORMS"@en ;
168179
rdfs:comment "Source data is transformed by target"@en .
169180

181+
### v3.5 Edge Predicates (governance-loop relationship types)
182+
183+
ckp:EXTENDS a ckp:RelationshipType ;
184+
rdfs:label "EXTENDS"@en ;
185+
rdfs:comment "Source kernel extends target kernel's capabilities (inheritance-like composition)"@en .
186+
187+
ckp:COMPOSES a ckp:RelationshipType ;
188+
rdfs:label "COMPOSES"@en ;
189+
rdfs:comment "Source kernel composes target kernel's actions into its own pipeline"@en .
190+
191+
ckp:TRIGGERS a ckp:RelationshipType ;
192+
rdfs:label "TRIGGERS"@en ;
193+
rdfs:comment "Source kernel triggers execution of target kernel (event-driven activation)"@en .
194+
170195
### Edge Properties
171196

172197
ckp:hasSource a owl:ObjectProperty , owl:FunctionalProperty ;
@@ -187,7 +212,7 @@ ckp:hasRelationshipType a owl:ObjectProperty , owl:FunctionalProperty ;
187212
rdfs:domain ckp:Edge ;
188213
rdfs:range ckp:RelationshipType ;
189214
rdfs:label "has relationship type"@en ;
190-
rdfs:comment "The semantic type of the relationship (PRODUCES, NOTIFIES, etc.)"@en .
215+
rdfs:comment "The semantic type of the relationship (PRODUCES, NOTIFIES, TRIGGERS, etc.)"@en .
191216

192217
ckp:hasOutgoingEdge a owl:ObjectProperty ;
193218
rdfs:domain ckp:Kernel ;
@@ -213,7 +238,7 @@ ckp:isAuthorized a owl:DatatypeProperty ;
213238
dc:description "Validated in /core/src/EdgeKernel.js:validateAuthorization():259-286" .
214239

215240
#################################################################
216-
# Instance (Independent Continuant - Immaterial Entity)
241+
# Instance (Generically Dependent Continuant - Information Entity)
217242
# Implementation: /core/src/drivers/FileSystemDriver.js
218243
#################################################################
219244

@@ -262,6 +287,56 @@ ckp:producesInstance a owl:ObjectProperty ;
262287
rdfs:comment "An instance produced by this kernel"@en ;
263288
owl:inverseOf ckp:createdByKernel .
264289

290+
#################################################################
291+
# Action (Occurrent - Process)
292+
# v3.5: Actions are the executable operations a kernel exposes
293+
#################################################################
294+
295+
ckp:Action a owl:Class ;
296+
rdfs:subClassOf bfo:0000015 ; # bfo:Process
297+
rdfs:label "Action"@en ;
298+
rdfs:comment "An executable operation exposed by a kernel. Actions are processes that transform inputs into instances. Defined in conceptkernel.yaml under spec.actions."@en .
299+
300+
ckp:hasAction a owl:ObjectProperty ;
301+
rdfs:domain ckp:Kernel ;
302+
rdfs:range ckp:Action ;
303+
rdfs:label "has action"@en ;
304+
rdfs:comment "An action exposed by this kernel"@en .
305+
306+
ckp:hasAccessLevel a owl:DatatypeProperty , owl:FunctionalProperty ;
307+
rdfs:domain ckp:Action ;
308+
rdfs:range xsd:string ;
309+
rdfs:label "has access level"@en ;
310+
rdfs:comment "Access control level for the action: anon, auth, admin"@en .
311+
312+
#################################################################
313+
# GovernanceMode (Disposition)
314+
# v3.5: How a kernel governs itself
315+
#################################################################
316+
317+
ckp:GovernanceMode a owl:Class ;
318+
rdfs:subClassOf bfo:0000016 ; # bfo:Disposition
319+
rdfs:label "Governance Mode"@en ;
320+
rdfs:comment "The governance disposition of a kernel, determining how decisions are made and enforced."@en .
321+
322+
ckp:STRICT a ckp:GovernanceMode ;
323+
rdfs:label "STRICT"@en ;
324+
rdfs:comment "All changes require consensus approval before execution"@en .
325+
326+
ckp:RELAXED a ckp:GovernanceMode ;
327+
rdfs:label "RELAXED"@en ;
328+
rdfs:comment "Changes proceed with post-hoc review; consensus is advisory"@en .
329+
330+
ckp:AUTONOMOUS a ckp:GovernanceMode ;
331+
rdfs:label "AUTONOMOUS"@en ;
332+
rdfs:comment "Kernel self-governs without external consensus requirements"@en .
333+
334+
ckp:hasGovernanceMode a owl:ObjectProperty , owl:FunctionalProperty ;
335+
rdfs:domain ckp:Kernel ;
336+
rdfs:range ckp:GovernanceMode ;
337+
rdfs:label "has governance mode"@en ;
338+
rdfs:comment "The governance disposition of this kernel"@en .
339+
265340
#################################################################
266341
# Ontology (Dependent Continuant - Universal)
267342
# Implementation: /core/src/drivers/localstorage/ontology.js
@@ -350,7 +425,7 @@ ckp:mediatesEdge a owl:ObjectProperty ;
350425
#################################################################
351426

352427
### Constraint 1: Communication requires Edge
353-
# kernels A, B: canCommunicate(A, B) ↔ ∃ edge E: connected_by(A, B, E)
428+
# kernels A, B: canCommunicate(A, B) <-> edge E: connected_by(A, B, E)
354429

355430
ckp:canCommunicateWith a owl:ObjectProperty ;
356431
rdfs:domain ckp:Kernel ;
@@ -367,7 +442,7 @@ ckp:CommunicatingKernels a owl:Class ;
367442
] .
368443

369444
### Constraint 2: Edge creation requires authorization
370-
# edge E: created(E) authorized(E)
445+
# edge E: created(E) -> authorized(E)
371446

372447
ckp:AuthorizedEdge a owl:Class ;
373448
rdfs:subClassOf ckp:Edge ;
@@ -418,5 +493,5 @@ ckp:criticalGap a owl:AnnotationProperty ;
418493
rdfs:comment "Overall BFO alignment: Continuants (85%), Occurrents (45%)"@en .
419494

420495
#################################################################
421-
# End of ConceptKernel Base BFO Ontology
496+
# End of ConceptKernel Base BFO Ontology v3.5.0
422497
#################################################################

docs/public/ontology/v3.5/proof.ttl

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,11 +84,17 @@ ckp:checked_by_identity a owl:DatatypeProperty , owl:FunctionalProperty ;
8484
rdfs:label "checked by identity"@en ;
8585
rdfs:comment "The kernel URN identity that performed the verification"@en .
8686

87+
ckp:checked_at a owl:DatatypeProperty , owl:FunctionalProperty ;
88+
rdfs:domain ckp:ProofRecord ;
89+
rdfs:range xsd:dateTime ;
90+
rdfs:label "checked at"@en ;
91+
rdfs:comment "ISO 8601 timestamp of when the proof verification was performed"@en .
92+
8793
ckp:svid a owl:DatatypeProperty , owl:FunctionalProperty ;
8894
rdfs:domain ckp:ProofRecord ;
8995
rdfs:range xsd:string ;
9096
rdfs:label "SVID"@en ;
91-
rdfs:comment "SPIFFE Verifiable Identity Document of the verifier, enabling trust chain validation"@en .
97+
rdfs:comment "SPIFFE Verifiable Identity Document of the verifier, enabling trust chain validation. Required per spec — every ProofRecord must carry the verifier's SVID for trust chain validation."@en .
9298

9399
#################################################################
94100
# ProofCheck — individual verification check

docs/public/ontology/v3.5/schema.yaml

Lines changed: 24 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -98,8 +98,8 @@ classes:
9898
multivalued: true
9999

100100
Edge:
101-
class_uri: bfo:0000040
102-
description: First-class BFO Material Entity mediating K-to-K communication
101+
class_uri: bfo:0000031
102+
description: First-class BFO GenericallyDependentContinuant (information entity) mediating K-to-K communication
103103
attributes:
104104
target_kernel: { required: true }
105105
predicate: { range: EdgePredicate, required: true }
@@ -183,6 +183,7 @@ classes:
183183
and CK reference. Once sealed, contents cannot be modified.
184184
attributes:
185185
data:
186+
required: true
186187
description: "JSON-serialized output data (stored as data.json)"
187188
tool_ref:
188189
description: "Reference to the tool loop processor (e.g., tool/processor.py)"
@@ -234,8 +235,13 @@ classes:
234235
description: "Kernel class name that performed verification"
235236
checked_by_identity:
236237
description: "Kernel URN identity that performed verification"
238+
checked_at:
239+
range: datetime
240+
required: true
241+
description: "ISO 8601 timestamp of when the proof verification was performed"
237242
svid:
238-
description: "SPIFFE Verifiable Identity Document of the verifier"
243+
required: true
244+
description: "SPIFFE Verifiable Identity Document of the verifier — required for trust chain validation"
239245

240246
ProofCheck:
241247
class_uri: bfo:0000031
@@ -257,17 +263,26 @@ classes:
257263

258264
FolderStructure:
259265
description: >
260-
Required folders and files for every CK. The scaffolding tool
261-
reads this to create compliant CK directories.
266+
Three Loops directory structure for every CK. The scaffolding tool
267+
reads this to create compliant CK directories. Each loop is an
268+
independently-versioned volume on SeaweedFS.
262269
attributes:
263-
required_folders:
270+
ck_loop_files:
264271
range: string
265272
multivalued: true
266-
ifabsent: '["tool", "llm", "log", "web", "instances", "inbox"]'
267-
required_files:
273+
ifabsent: '["conceptkernel.yaml", ".ck-guid", "README.md", "CLAUDE.md", "SKILL.md", "CHANGELOG.md", "ontology.yaml", "rules.shacl", "serving.json"]'
274+
description: "Files at CK root (identity loop — ck-{guid}-ck volume)"
275+
tool_dir:
276+
ifabsent: "tool/"
277+
description: "Tool loop directory (capability — ck-{guid}-tool volume)"
278+
storage_dir:
279+
ifabsent: "storage/"
280+
description: "Data loop directory (knowledge — ck-{guid}-storage volume)"
281+
storage_subdirs:
268282
range: string
269283
multivalued: true
270-
ifabsent: '["conceptkernel.yaml", "tool/processor.py", "llm/CLAUDE.md", "web/index.html"]'
284+
ifabsent: '["instances/", "ledger/", "proof/", "index/", "llm/", "web/"]'
285+
description: "Required subdirectories under storage/"
271286
instance_prefix:
272287
ifabsent: "i-"
273288
description: "Instance folder prefix"

0 commit comments

Comments
 (0)