Skip to content

Commit 83a1c28

Browse files
hyperpolymathclaude
andcommitted
fix: correct grade inflation and fill template stubs across docs
README, STATE.a2ml, and TOPOLOGY.md all claimed Grade A/B when READINESS.md honestly reports Grade D (Alpha) with 0 components at Grade C+. Aligned all documents to Grade D. Also: filled release workflow build stubs, removed template placeholders from SECURITY.md and CODE_OF_CONDUCT.md, expanded Justfile test recipe from 5/18 to all 17 cartridges, and updated ROADMAP.adoc checkboxes to match actual completion state. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent b31faf2 commit 83a1c28

9 files changed

Lines changed: 217 additions & 172 deletions

File tree

.github/CODE_OF_CONDUCT.md

Lines changed: 1 addition & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,5 @@
11
# Code of Conduct
22

3-
<!--
4-
============================================================================
5-
TEMPLATE INSTRUCTIONS (delete this block before publishing)
6-
============================================================================
7-
Replace all {{PLACEHOLDER}} values:
8-
boj-server - Your project name
9-
hyperpolymath - GitHub/GitLab username or org
10-
boj-server - Repository name
11-
j.d.a.jewell@open.ac.uk - Email for conduct reports
12-
conduct team - Name of conduct team/committee
13-
48 hours - Initial response SLA (e.g., 48 hours)
14-
2026 - Current year
15-
16-
Review and customise:
17-
- Adjust enforcement ladder for your community size
18-
- Add/remove examples based on your context
19-
- Ensure contact methods work for your team
20-
============================================================================
21-
-->
22-
233
## Our Pledge
244

255
We as members, contributors, and leaders pledge to make participation in boj-server a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, caste, colour, religion, or sexual identity and orientation.
@@ -138,7 +118,7 @@ If you experience or witness unacceptable behaviour, or have any other concerns,
138118
|--------|---------|----------|
139119
| **Email** | j.d.a.jewell@open.ac.uk | Detailed reports, sensitive matters |
140120
| **Private Message** | Contact any maintainer directly | Quick questions, minor issues |
141-
| **Anonymous Form** | [Link to form if available] | When you need anonymity |
121+
| **GitHub Issue** | [Open a private report](https://github.com/hyperpolymath/boj-server/security/advisories/new) | When you prefer not to use email |
142122

143123
**What to Include**
144124

.github/CONTRIBUTING.md

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,27 @@
1-
# Clone the repository
1+
# Contributing to boj-server
2+
3+
## Quick Start
4+
5+
### Clone the repository
6+
```bash
27
git clone https://github.com/hyperpolymath/boj-server.git
38
cd boj-server
9+
```
410

5-
# Using Nix (recommended for reproducibility)
11+
### Using Nix (recommended for reproducibility)
12+
```bash
613
nix develop
14+
```
715

8-
# Or using toolbox/distrobox
16+
### Or using toolbox/distrobox
17+
```bash
918
toolbox create boj-server-dev
1019
toolbox enter boj-server-dev
1120
# Install dependencies manually
21+
```
1222

13-
# Verify setup
23+
### Verify setup
24+
```bash
1425
just check # or: cargo check / mix compile / etc.
1526
just test # Run test suite
1627
```
@@ -119,3 +130,4 @@ We follow [Conventional Commits](https://www.conventionalcommits.org/):
119130
[optional body]
120131
121132
[optional footer]
133+
```

.github/SECURITY.md

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,5 @@
11
# Security Policy
22

3-
<!--
4-
============================================================================
5-
TEMPLATE INSTRUCTIONS (delete this block before publishing)
6-
============================================================================
7-
Replace all {{PLACEHOLDER}} values with your information:
8-
boj-server - Your project name
9-
hyperpolymath - GitHub username or org (e.g., hyperpolymath)
10-
boj-server - Repository name
11-
j.d.a.jewell@open.ac.uk - Security contact email
12-
See GitHub profile - Your PGP key fingerprint (40 chars, no spaces)
13-
https://github.com/hyperpolymath.gpg - URL to your public PGP key
14-
github.com/hyperpolymath - Your website/domain
15-
2026 - Current year for copyright
16-
17-
Optional: Remove sections that don't apply (e.g., PGP if you don't use it)
18-
============================================================================
19-
-->
20-
213
We take security seriously. We appreciate your efforts to responsibly disclose vulnerabilities and will make every effort to acknowledge your contributions.
224

235
## Table of Contents
@@ -60,7 +42,6 @@ If you cannot use GitHub Security Advisories, you may email us directly:
6042
|---|---|
6143
| **Email** | j.d.a.jewell@open.ac.uk |
6244
| **PGP Key** | [Download Public Key](https://github.com/hyperpolymath.gpg) |
63-
| **Fingerprint** | `See GitHub profile` |
6445

6546
```bash
6647
# Import our PGP key
@@ -335,8 +316,6 @@ To stay informed about security updates:
335316

336317
### Supported Versions
337318

338-
<!-- Adjust this table to match your actual version support policy -->
339-
340319
| Version | Supported | Notes |
341320
|---------|-----------|-------|
342321
| `main` branch | ✅ Yes | Latest development |

.github/workflows/release.yml

Lines changed: 54 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -19,24 +19,56 @@ jobs:
1919
runs-on: ubuntu-latest
2020
permissions:
2121
contents: read
22+
outputs:
23+
hashes: ${{ steps.hash.outputs.hashes }}
2224
steps:
2325
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
2426

25-
- name: Build
27+
- name: Install Zig
28+
uses: mlugg/setup-zig@d1434d08867e3ee9daa34448df10607b98908d29 # v2
29+
with:
30+
version: 0.15.2
31+
32+
- name: Build core FFI libraries
33+
run: cd ffi/zig && zig build -Doptimize=ReleaseSafe
34+
35+
- name: Build cartridge shared libraries
36+
run: |
37+
for cart in database-mcp fleet-mcp nesy-mcp agent-mcp cloud-mcp container-mcp k8s-mcp git-mcp secrets-mcp queues-mcp iac-mcp observe-mcp ssg-mcp proof-mcp lsp-mcp dap-mcp bsp-mcp feedback-mcp; do
38+
echo "Building $cart .so..."
39+
cd "cartridges/$cart/ffi" && zig build -Doptimize=ReleaseSafe
40+
cd "$GITHUB_WORKSPACE"
41+
done
42+
43+
- name: Collect release artifacts
44+
run: |
45+
mkdir -p release-artifacts/core release-artifacts/cartridges
46+
# Core static libraries and benchmark binary
47+
cp ffi/zig/zig-out/lib/*.a release-artifacts/core/
48+
cp ffi/zig/zig-out/bin/boj_bench release-artifacts/core/ 2>/dev/null || true
49+
# Cartridge shared libraries
50+
for cart in database-mcp fleet-mcp nesy-mcp agent-mcp cloud-mcp container-mcp k8s-mcp git-mcp secrets-mcp queues-mcp iac-mcp observe-mcp ssg-mcp proof-mcp lsp-mcp dap-mcp bsp-mcp feedback-mcp; do
51+
cp "cartridges/$cart/ffi/zig-out/lib/"*.so "release-artifacts/cartridges/" 2>/dev/null || true
52+
done
53+
54+
- name: Create release tarball
2655
run: |
27-
echo "Build your artifacts here"
28-
# TODO: Replace with your build commands
29-
# Examples:
30-
# cargo build --release
31-
# zig build -Doptimize=ReleaseFast
32-
# gleam build
33-
# mix release
34-
35-
# TODO: Upload build artifacts if needed
36-
# - uses: actions/upload-artifact@v4
37-
# with:
38-
# name: release-artifacts
39-
# path: target/release/
56+
VERSION="${GITHUB_REF_NAME#v}"
57+
tar czf "boj-server-${VERSION}-linux-x86_64.tar.gz" -C release-artifacts .
58+
59+
- name: Generate artifact hashes
60+
id: hash
61+
run: |
62+
VERSION="${GITHUB_REF_NAME#v}"
63+
HASHES=$(sha256sum "boj-server-${VERSION}-linux-x86_64.tar.gz" | base64 -w0)
64+
echo "hashes=${HASHES}" >> "$GITHUB_OUTPUT"
65+
66+
- name: Upload build artifacts
67+
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
68+
with:
69+
name: release-artifacts
70+
path: boj-server-*-linux-x86_64.tar.gz
71+
retention-days: 5
4072

4173
changelog:
4274
name: Generate Changelog
@@ -92,11 +124,11 @@ jobs:
92124
steps:
93125
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
94126

95-
# TODO: Download build artifacts if uploading to the release
96-
# - uses: actions/download-artifact@v4
97-
# with:
98-
# name: release-artifacts
99-
# path: artifacts/
127+
- name: Download build artifacts
128+
uses: actions/download-artifact@95815c38cf2ff2164869cbab79da8d1f422bc89e # v4.2.1
129+
with:
130+
name: release-artifacts
131+
path: artifacts/
100132

101133
- name: Create GitHub Release
102134
uses: softprops/action-gh-release@a06a81a03ee405af7f2048a818ed3f03bbf83c7b # v2
@@ -105,9 +137,8 @@ jobs:
105137
draft: false
106138
prerelease: ${{ contains(github.ref_name, '-rc') || contains(github.ref_name, '-beta') || contains(github.ref_name, '-alpha') }}
107139
generate_release_notes: false
108-
# TODO: Add artifact files to the release
109-
# files: |
110-
# artifacts/*
140+
files: |
141+
artifacts/*
111142
env:
112143
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
113144

@@ -122,7 +153,4 @@ jobs:
122153
# See: https://slsa.dev/spec/v1.0/requirements#build-l3
123154
uses: slsa-framework/slsa-github-generator/.github/workflows/generator_generic_slsa3.yml@f7dd8c54c2067bafc12ca7a55595d5ee9b75204a # v2.1.0
124155
with:
125-
base64-subjects: ""
126-
# TODO: Replace with actual artifact hashes
127-
# Generate with: sha256sum artifact | base64 -w0
128-
# base64-subjects: "${{ needs.build.outputs.hashes }}"
156+
base64-subjects: "${{ needs.build.outputs.hashes }}"

.machine_readable/STATE.a2ml

Lines changed: 20 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,16 @@ project = "boj-server"
88
version = "0.2.0"
99
last-updated = "2026-03-10"
1010
status = "active"
11-
grade = "A-production"
11+
grade = "D-alpha"
1212

1313
[project-context]
1414
name = "Bundle of Joy Server"
1515
purpose = "Unified server capability catalogue solving the combinatoric explosion of developer server protocols. Provides a 2D matrix of formally verified cartridges (protocol types x capability domains), distributed via community-hosted nodes with hash attestation and gossip protocol."
16-
completion-percentage = 100
16+
completion-percentage = 57
1717

1818
[position]
19-
phase = "rc"
20-
maturity = "release-candidate"
19+
phase = "alpha"
20+
maturity = "alpha"
2121

2222
[route-to-mvp]
2323
milestones = [
@@ -29,14 +29,14 @@ milestones = [
2929
{ name = "Phase 5: Umoja federation & PanLL panel", completion = 100 },
3030
{ name = "Phase 6: Remaining cartridges (fill the matrix)", completion = 100 },
3131
{ name = "Phase 7: Polystack deprecation (endgame)", completion = 100 },
32-
{ name = "Phase 8: Grade C→B (QUIC, multi-node, coprocessor, docs)", completion = 100 },
33-
{ name = "Phase 9: Grade B→A (SLA, community, SDP, seed nodes)", completion = 100 },
32+
{ name = "Phase 8: Grade D→C (QUIC, multi-node, coprocessor, docs)", completion = 40 },
33+
{ name = "Phase 9: Grade C→B (SLA, community, SDP, seed nodes)", completion = 20 },
3434
]
3535

3636
# Honest assessment notes:
37-
# - Phase 8 at 100%: QUIC transport (X25519+ChaCha20-Poly1305), multi-node testing (11 tests),
38-
# coprocessor dispatch (14 tests), Podman secure instance, API contract documentation
39-
# - All Grade C→B and B→A items complete
37+
# - Phase 8 partial: QUIC transport, multi-node testing, coprocessor dispatch code exists
38+
# but lacks external validation, release workflow is stub, placeholders remain
39+
# - Grade D (Alpha): 18 cartridges built as state machines, tests passing internally
4040
# - Federation tests: 40 (was 30, +10 QUIC tests)
4141
# - Coprocessor tests: 14, SLA tests: 11, Community tests: 11, SDP tests: 10
4242
# - Multi-node tests: 11 (shell tests)
@@ -75,13 +75,13 @@ must = [
7575
should = [
7676
"gRPC-compat adapter (done — JSON-over-HTTP with service/method paths)",
7777
"GraphQL subscriptions for mount/unmount events (done — polling)",
78-
"Readiness Grade A tests (done — 7 production tests)",
78+
"Readiness Grade D (Alpha) tests (done — 7 production tests)",
7979
"PanLL module mapping (DONE — 887-line view, 5 tabs, clade definition)",
8080
"Cartridge hot-reload (done — unmount/verify/remount)",
8181
"QUIC-first transport (DONE — X25519+ChaCha20-Poly1305, 10 QUIC tests)",
8282
"Multi-node federation testing (DONE — 11 tests, REST API peering)",
8383
"Coprocessor dispatch (DONE — Axiom.jl-style, 14 tests)",
84-
"Podman secure instance (DONE — quadlet, seccomp, read-only rootfs)",
84+
"Podman secure instance (configured-not-deployed — quadlet, seccomp, read-only rootfs defined, image not published)",
8585
"Stable API contract (DONE — docs/API-CONTRACT.md)",
8686
]
8787
could = [
@@ -91,8 +91,8 @@ could = [
9191
]
9292

9393
[blockers-and-issues]
94-
# No blockers. Grade A production code complete.
95-
# Remaining: deploy seed nodes, register domain.
94+
# No critical blockers. Grade D (Alpha) — 18 cartridges built, tests passing.
95+
# Remaining: external validation, release workflow, deploy seed nodes, register domain.
9696

9797
[critical-next-actions]
9898
actions = [
@@ -129,7 +129,7 @@ panll-routing = "done — bojRouting toggle on 10 panels (VeriSimDB, Editor Brid
129129
quic-transport = "done — X25519 ECDH + ChaCha20-Poly1305 AEAD, backward compatible"
130130
multinode-testing = "done — 2-node federation test script, REST API peering, 11 tests"
131131
coprocessor-dispatch = "done — detect→select→dispatch→fallback, env-driven, 14 tests"
132-
podman-secure = "done — quadlet + seccomp profile + read-only rootfs + resource limits"
132+
podman-secure = "configured-not-deployed — quadlet + seccomp profile + read-only rootfs defined, container image not published, untested in production"
133133
api-contract = "done — docs/API-CONTRACT.md, all endpoints documented"
134134
configurable-ports = "done — BOJ_REST_PORT, BOJ_GRPC_PORT, BOJ_GRAPHQL_PORT env vars"
135135

@@ -159,11 +159,12 @@ backend-axis = "stubbed — third dimension (domain x protocol x backend) for co
159159
extension-descriptor = "docs/examples/extension.a2ml"
160160
documentation = "docs/EXTENSIBILITY.md"
161161

162-
[grade-a-status]
163-
sla-monitoring = "done — 3-tier (community/standard/premium), percentile tracking, 11 tests"
164-
community-submissions = "done — Ayo tier, review state machine, hash validation, 11 tests"
165-
auto-sdp = "done — zero-trust perimeter, allow-list, auto-ban, open mode for bootstrapping, 10 tests"
166-
seed-nodes = "done — 4-continent config (EU-West, EU-Central, US-East, AP-South)"
162+
[grade-a-aspirations]
163+
# These are NOT Grade A — they are initial implementations needing external validation
164+
sla-monitoring = "initial — 3-tier (community/standard/premium), percentile tracking, 11 tests, no real-world usage"
165+
community-submissions = "initial — Ayo tier, review state machine, hash validation, 11 tests, no external submitters"
166+
auto-sdp = "initial — zero-trust perimeter, allow-list, auto-ban, open mode for bootstrapping, 10 tests, untested in production"
167+
seed-nodes = "config only — 4-continent config (EU-West, EU-Central, US-East, AP-South), not deployed"
167168

168169
[maintenance-status]
169170
last-run-utc = "2026-03-09"

0 commit comments

Comments
 (0)