Skip to content

Commit 07df044

Browse files
hyperpolymathclaude
andcommitted
chore: commit outstanding work
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 3bbcafb commit 07df044

464 files changed

Lines changed: 39379 additions & 0 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# SPDX-License-Identifier: PMPL-1.0-or-later
2+
# Feedback-o-Tron Integration — Autonomous Bug Reporting
3+
4+
[integration]
5+
name = "feedback-o-tron"
6+
type = "bug-reporter"
7+
repository = "https://github.com/hyperpolymath/feedback-o-tron"
8+
9+
[reporting-config]
10+
platforms = ["github", "gitlab", "bugzilla"]
11+
deduplication = true
12+
audit-logging = true
13+
auto-file-upstream = "on-external-dependency-failure"
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# SPDX-License-Identifier: PMPL-1.0-or-later
2+
# Proven Integration — Formally Verified Safety Library
3+
4+
[integration]
5+
name = "proven"
6+
type = "safety-library"
7+
repository = "https://github.com/hyperpolymath/proven"
8+
version = "1.2.0"
9+
10+
[binding-policy]
11+
approach = "thin-ffi-wrapper"
12+
unsafe-patterns = "replace-with-proven-equivalent"
13+
modules-available = ["SafeMath", "SafeString", "SafeJSON", "SafeURL", "SafeRegex", "SafeSQL", "SafeFile", "SafeTemplate", "SafeCrypto"]
14+
15+
[adoption-guidance]
16+
priority = "high"
17+
scope = "all-string-json-url-crypto-operations"
18+
migration = "incremental — replace unsafe patterns as encountered"
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# SPDX-License-Identifier: PMPL-1.0-or-later
2+
# VeriSimDB Feed — Cross-Repo Analytics Data Store
3+
4+
[integration]
5+
name = "verisimdb"
6+
type = "data-feed"
7+
repository = "https://github.com/hyperpolymath/nextgen-databases"
8+
data-store = "verisimdb-data"
9+
10+
[feed-config]
11+
emit-scan-results = true
12+
emit-build-metrics = true
13+
emit-dependency-graph = true
14+
format = "hexad"
15+
destination = "verisimdb-data/feeds/"
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# SPDX-License-Identifier: PMPL-1.0-or-later
2+
# Vexometer Integration — Irritation Surface Analysis
3+
4+
[integration]
5+
name = "vexometer"
6+
type = "friction-measurement"
7+
repository = "https://github.com/hyperpolymath/vexometer"
8+
9+
[measurement-config]
10+
dimensions = 10
11+
emit-isa-reports = true
12+
lazy-eliminator = true
13+
satellite-interventions = true
14+
15+
[hooks]
16+
cli-tools = "measure-on-error"
17+
ui-panels = "measure-on-interaction"
18+
build-failures = "measure-on-failure"

justfile

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,3 +30,7 @@ clean:
3030
build-riscv:
3131
@echo "Building for RISC-V..."
3232
cross build --target riscv64gc-unknown-linux-gnu
33+
34+
# Run panic-attacker pre-commit scan
35+
assail:
36+
@command -v panic-attack >/dev/null 2>&1 && panic-attack assail . || echo "panic-attack not found — install from https://github.com/hyperpolymath/panic-attacker"
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
nodejs 22.13.1
Lines changed: 153 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,153 @@
1+
-- SPDX-License-Identifier: PMPL-1.0-or-later
2+
-- Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) <j.d.a.jewell@open.ac.uk>
3+
--
4+
||| Gnosis API ABI Types
5+
|||
6+
||| Dependent type definitions for the Gnosis stateful artefacts rendering API.
7+
||| These types prove correctness of the API contract at compile-time.
8+
|||
9+
||| The Gnosis API exposes three operations across all three interfaces
10+
||| (REST, gRPC, GraphQL):
11+
||| 1. Render — hydrate a template against 6scm context
12+
||| 2. Context — dump all resolved keys from 6scm files
13+
||| 3. Health — check engine availability
14+
15+
module Gnosis.ABI.Types
16+
17+
import Data.So
18+
import Data.Vect
19+
20+
%default total
21+
22+
--------------------------------------------------------------------------------
23+
-- Render Mode
24+
--------------------------------------------------------------------------------
25+
26+
||| Render mode determines output format.
27+
public export
28+
data RenderMode = Plain | Badges
29+
30+
||| Proof that render mode is one of exactly two values.
31+
public export
32+
renderModeExhaustive : (m : RenderMode) -> Either (m = Plain) (m = Badges)
33+
renderModeExhaustive Plain = Left Refl
34+
renderModeExhaustive Badges = Right Refl
35+
36+
--------------------------------------------------------------------------------
37+
-- Request Types
38+
--------------------------------------------------------------------------------
39+
40+
||| A render request must have either a template body or a template path.
41+
||| This is enforced at the type level.
42+
public export
43+
data TemplateSource
44+
= Inline (body : String)
45+
| FromFile (path : String)
46+
47+
||| Proof that a template source is non-empty.
48+
public export
49+
data NonEmptySource : TemplateSource -> Type where
50+
InlineNonEmpty : So (length body > 0) -> NonEmptySource (Inline body)
51+
FileNonEmpty : So (length path > 0) -> NonEmptySource (FromFile path)
52+
53+
||| A validated render request.
54+
public export
55+
record RenderRequest where
56+
constructor MkRenderRequest
57+
source : TemplateSource
58+
scmPath : String
59+
mode : RenderMode
60+
{auto 0 sourceValid : NonEmptySource source}
61+
62+
||| A context dump request requires a valid SCM path.
63+
public export
64+
record ContextRequest where
65+
constructor MkContextRequest
66+
scmPath : String
67+
68+
--------------------------------------------------------------------------------
69+
-- Response Types
70+
--------------------------------------------------------------------------------
71+
72+
||| Result of a successful render operation.
73+
public export
74+
record RenderResponse where
75+
constructor MkRenderResponse
76+
output : String
77+
keysCount : Nat
78+
79+
||| A single context entry (key-value pair from 6scm).
80+
public export
81+
record ContextEntry where
82+
constructor MkContextEntry
83+
key : String
84+
value : String
85+
86+
||| Result of a context dump.
87+
public export
88+
record ContextResponse where
89+
constructor MkContextResponse
90+
entries : List ContextEntry
91+
count : Nat
92+
{auto 0 countCorrect : count = length entries}
93+
94+
||| Health check result.
95+
public export
96+
data HealthStatus = Serving | NotServing
97+
98+
||| Proof that health status maps to gRPC standard.
99+
public export
100+
healthStatusString : HealthStatus -> String
101+
healthStatusString Serving = "SERVING"
102+
healthStatusString NotServing = "NOT_SERVING"
103+
104+
public export
105+
record HealthResponse where
106+
constructor MkHealthResponse
107+
status : HealthStatus
108+
version : String
109+
110+
--------------------------------------------------------------------------------
111+
-- API Contract
112+
--------------------------------------------------------------------------------
113+
114+
||| The Gnosis API contract: every operation returns a well-typed response.
115+
||| This interface is implemented by all three transports (REST, gRPC, GraphQL).
116+
public export
117+
interface GnosisAPI (m : Type -> Type) where
118+
render : RenderRequest -> m (Either String RenderResponse)
119+
context : ContextRequest -> m (Either String ContextResponse)
120+
health : m HealthResponse
121+
122+
||| Proof that a render response with keysCount > 0 means the engine found data.
123+
public export
124+
renderFoundData : (resp : RenderResponse) -> So (resp.keysCount > 0) -> So (length resp.output > 0)
125+
renderFoundData resp prf = ?renderFoundDataProof
126+
127+
--------------------------------------------------------------------------------
128+
-- Transport Identifiers
129+
--------------------------------------------------------------------------------
130+
131+
||| The three API transports, each on a consecutive port.
132+
public export
133+
data Transport = REST | GRPC | GraphQL
134+
135+
||| Port offset for each transport.
136+
public export
137+
portOffset : Transport -> Nat
138+
portOffset REST = 1
139+
portOffset GRPC = 2
140+
portOffset GraphQL = 3
141+
142+
||| Proof that all transports have distinct offsets.
143+
public export
144+
transportDistinct : (a : Transport) -> (b : Transport) -> Not (a = b) -> Not (portOffset a = portOffset b)
145+
transportDistinct REST REST contra = absurd (contra Refl)
146+
transportDistinct REST GRPC _ = \h => absurd h
147+
transportDistinct REST GraphQL _ = \h => absurd h
148+
transportDistinct GRPC REST _ = \h => absurd h
149+
transportDistinct GRPC GRPC contra = absurd (contra Refl)
150+
transportDistinct GRPC GraphQL _ = \h => absurd h
151+
transportDistinct GraphQL REST _ = \h => absurd h
152+
transportDistinct GraphQL GRPC _ = \h => absurd h
153+
transportDistinct GraphQL GraphQL contra = absurd (contra Refl)
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
// SPDX-License-Identifier: PMPL-1.0-or-later
2+
// V-API-Interfaces - Unified Hexadeca-Connector standard for V-lang.
3+
//
4+
// Consolidates sixteen bidirectional API interfaces into a single high-rigor suite.
5+
6+
module v_api_interfaces
7+
8+
import v_ecosystem.v_api_interfaces.v_grpc
9+
import v_ecosystem.v_api_interfaces.v_graphql
10+
import v_ecosystem.v_api_interfaces.v_rest
11+
import v_ecosystem.v_api_interfaces.v_flatbuffers
12+
import v_ecosystem.v_api_interfaces.v_bebop
13+
import v_ecosystem.v_api_interfaces.v_jsonrpc
14+
import v_ecosystem.v_api_interfaces.v_websocket
15+
import v_ecosystem.v_api_interfaces.v_mqtt
16+
import v_ecosystem.v_api_interfaces.v_trpc
17+
import v_ecosystem.v_api_interfaces.v_capnproto
18+
import v_ecosystem.v_api_interfaces.v_soap
19+
import v_ecosystem.v_api_interfaces.verisimdb_rest
20+
21+
// --- The Adapter Clade (Simplification) ---
22+
23+
pub interface ProtocolAdapter {
24+
mut:
25+
port int
26+
start()
27+
}
28+
29+
// New High-Rigor clades
30+
pub struct BSPServer { pub mut: port int }
31+
pub fn (s BSPServer) start() { println('V-BSP (Build Server Protocol) starting on port ${s.port}...') }
32+
33+
pub struct SCIPServer { pub mut: port int }
34+
pub fn (s SCIPServer) start() { println('V-SCIP (Index Server) starting on port ${s.port}...') }
35+
36+
pub struct IPFSStore { pub mut: port int }
37+
pub fn (s IPFSStore) start() { println('V-IPFS (Umoja Layer) starting on port ${s.port}...') }
38+
39+
pub struct ArrowFlight { pub mut: port int }
40+
pub fn (s ArrowFlight) start() { println('V-ArrowFlight (Big Data) starting on port ${s.port}...') }
41+
42+
pub struct HexadecaSuite {
43+
pub mut:
44+
adapters map[string]ProtocolAdapter
45+
}
46+
47+
pub fn new_hexadeca_suite(base_port int) &HexadecaSuite {
48+
mut suite := &HexadecaSuite{
49+
adapters: map[string]ProtocolAdapter{}
50+
}
51+
52+
// Core 12
53+
suite.adapters['grpc'] = v_grpc.new_server(base_port + 1)
54+
suite.adapters['graphql'] = v_graphql.new_server(base_port + 2)
55+
suite.adapters['rest'] = v_rest.new_server(base_port + 3)
56+
suite.adapters['flatbuffers'] = v_flatbuffers.new_server(base_port + 4)
57+
suite.adapters['bebop'] = v_bebop.new_server(base_port + 5)
58+
suite.adapters['jsonrpc'] = v_jsonrpc.new_server(base_port + 6)
59+
suite.adapters['websocket'] = v_websocket.new_server(base_port + 7)
60+
suite.adapters['mqtt'] = v_mqtt.new_server(base_port + 8)
61+
suite.adapters['trpc'] = v_trpc.new_server(base_port + 9)
62+
suite.adapters['capnproto'] = v_capnproto.new_server(base_port + 10)
63+
suite.adapters['soap'] = v_soap.new_server(base_port + 11)
64+
suite.adapters['verisimdb'] = verisimdb_rest.new_server(base_port + 12)
65+
66+
// New 4 (Building the Umoja Substrate)
67+
suite.adapters['bsp'] = &BSPServer{base_port + 13}
68+
suite.adapters['scip'] = &SCIPServer{base_port + 14}
69+
suite.adapters['ipfs'] = &IPFSStore{base_port + 15}
70+
suite.adapters['arrow'] = &ArrowFlight{base_port + 16}
71+
72+
return suite
73+
}
74+
75+
// Backward compatibility
76+
pub fn new_suite(port int) &HexadecaSuite {
77+
return new_hexadeca_suite(port)
78+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
// SPDX-License-Identifier: PMPL-1.0-or-later
2+
module v_bebop
3+
4+
pub struct Server {
5+
pub mut:
6+
port int
7+
}
8+
9+
pub fn new_server(port int) &Server {
10+
return &Server{
11+
port: port
12+
}
13+
}
14+
15+
pub fn (s Server) start() {
16+
println('V-Bebop (Dodeca-API) starting on port ${s.port}...')
17+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
= v-capnproto
2+
// SPDX-License-Identifier: PMPL-1.0-or-later
3+
4+
Cap'n Proto-style zero-copy message builder for the V-Ecosystem API interfaces layer.
5+
Implements flat serialisation into contiguous word-aligned byte segments where deserialisation is a bounds check rather than a copy, following the core principle of the Cap'n Proto wire format.
6+
Provides a message builder with typed field writers/readers (u8 through u64, byte slices, length-prefixed text), struct allocation with data/pointer sections, and a simple RPC header format for request/response framing.
7+
8+
== Author
9+
10+
Jonathan D.A. Jewell
11+
12+
== Source
13+
14+
`src/capnproto.v`

0 commit comments

Comments
 (0)