Skip to content

Commit 8651d89

Browse files
hyperpolymathclaude
andcommitted
chore: add K9 Kennel-level metadata guard
MCP invariants: 96+ cartridges, 7 safety modules required, port 7700, Containerfile registration contract. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent add8229 commit 8651d89

1 file changed

Lines changed: 92 additions & 0 deletions

File tree

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
K9!
2+
# SPDX-License-Identifier: PMPL-1.0-or-later
3+
# Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) <j.d.a.jewell@open.ac.uk>
4+
# K9 Kennel-level guard: boj-server project metadata and MCP invariants
5+
# Security Level: Kennel (data-only, no execution)
6+
# No signature required
7+
8+
{
9+
pedigree = {
10+
schema_version = "1.0.0",
11+
component_type = "mcp-server-metadata",
12+
security = {
13+
leash = 'Kennel,
14+
trust_level = "data-only",
15+
allow_network = false,
16+
allow_filesystem_write = false,
17+
allow_subprocess = false,
18+
},
19+
metadata = {
20+
name = "boj-server-metadata",
21+
version = "0.3.1",
22+
description = "BoJ Server: MCP cartridge host with 96 tools — project invariants",
23+
author = "Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>",
24+
},
25+
},
26+
27+
# Project configuration
28+
config = {
29+
# MCP server invariants
30+
mcp = {
31+
# Minimum cartridge count that must be present
32+
min_cartridge_count = 96,
33+
# All cartridges must be registered in Containerfile
34+
containerfile_registration_required = true,
35+
# Port assignment
36+
default_port = 7700,
37+
},
38+
39+
# Safety module requirements (CRITICAL for MCP security)
40+
safety_modules = {
41+
required_modules = [
42+
"input-validation",
43+
"rate-limiting",
44+
"authentication",
45+
"audit-logging",
46+
"sandboxing",
47+
"secret-detection",
48+
"output-sanitization",
49+
],
50+
min_module_count = 7,
51+
},
52+
53+
# Safety invariants
54+
safety = {
55+
forbidden_patterns = [
56+
"unwrap()",
57+
"expect()",
58+
"todo!()",
59+
"unimplemented!()",
60+
],
61+
},
62+
63+
# Test requirements
64+
tests = {
65+
min_unit_tests = 300,
66+
cartridge_smoke_tests_required = true,
67+
safety_module_tests_required = true,
68+
},
69+
70+
# Build/runtime
71+
build = {
72+
primary_language = "deno",
73+
containerfile_name = "Containerfile",
74+
runtime = "podman",
75+
},
76+
77+
# Language policy
78+
banned_files = ["Makefile", "Dockerfile"],
79+
banned_languages = ["python", "typescript", "go"],
80+
},
81+
82+
# RSR compliance
83+
rsr = {
84+
explainme = true,
85+
ai_manifest = true,
86+
machine_readable = true,
87+
spdx_headers_required = true,
88+
security_md_required = true,
89+
idris2_abi = true,
90+
zig_ffi = true,
91+
},
92+
}

0 commit comments

Comments
 (0)