Skip to content

Commit 7d3ed3b

Browse files
Jonathan D.A. Jewellclaude
andcommitted
chore: sync template files and configuration
Co-Authored-By: Claude Opus 4.5 <[email protected]>
1 parent 680af42 commit 7d3ed3b

32 files changed

+3086
-0
lines changed

CHANGELOG.md

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
# Changelog
2+
3+
All notable changes to this project will be documented in this file.
4+
5+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7+
8+
## [Unreleased]
9+
10+
### Added
11+
12+
#### CLI Features (SHOULD - P2)
13+
- `vordr doctor` command with 5 check categories (runtime, networking, kernel, state, gatekeeper)
14+
- `vordr system df/prune/info/reset` commands with dry-run support
15+
- `vordr compose up/down/ps/logs/config` with explicit unsupported key warnings
16+
- `vordr login/logout` with registry authentication
17+
- `vordr auth ls` for credential management
18+
- `vordr completion bash|zsh|fish` for shell completions
19+
20+
#### CLI Features (COULD - P3)
21+
- `vordr profile ls/show/diff/set-default/create` for security profile management
22+
- `vordr explain` command for policy rejection diagnostics
23+
- Three built-in security profiles: strict, balanced, dev
24+
25+
#### Documentation
26+
- `docs/troubleshooting.adoc` - Top 20 failure modes with doctor integration
27+
- `docs/mental-model.adoc` - Minimal user guide (under 2 pages)
28+
- `docs/surface-contract.adoc` - API stability contract with exit codes
29+
30+
#### Quality Assurance
31+
- `CHECKLIST-QOL.adoc` - QoL completion checklist with ratings
32+
- `EVALUATION-REPORT.adoc` - Veridical evaluation template
33+
- JSON schemas for CLI output (`spec/schemas/*.v1.json`)
34+
- Spec version pinning (`spec/SPEC_VERSION`)
35+
36+
#### CI/CD
37+
- `doctor-smoke.yml` - Doctor command smoke tests
38+
- `e2e-readme.yml` - README happy path tests
39+
- `schema-lint.yml` - JSON schema validation
40+
- `surface-contract-lint.yml` - Surface change detection
41+
- `conformance-consumer.yml` - Spec conformance tests
42+
- `release.yml` - Multi-platform release with SBOM and provenance
43+
44+
#### Developer Experience
45+
- PR template with surface/seam impact checkboxes
46+
- Evidence directory for evaluation artifacts
47+
48+
### Changed
49+
- Exit codes now follow documented taxonomy (see `docs/surface-contract.adoc`)
50+
51+
### Fixed
52+
- Doctor command JSON output now matches schema
53+
54+
## [0.1.0] - Unreleased
55+
56+
### Added
57+
- Initial Vordr container engine implementation
58+
- Container lifecycle: create, start, stop, pause, resume, kill, delete
59+
- OCI runtime integration (youki/runc)
60+
- Netavark networking backend
61+
- SQLite state management with WAL mode
62+
- Gatekeeper FFI stub for SPARK integration
63+
- Registry client with auth support
64+
- MCP server for AI-assisted management

CONTRIBUTING.md

Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
1+
# Clone the repository
2+
git clone https://{{FORGE}}/{{OWNER}}/{{REPO}}.git
3+
cd {{REPO}}
4+
5+
# Using Nix (recommended for reproducibility)
6+
nix develop
7+
8+
# Or using toolbox/distrobox
9+
toolbox create {{REPO}}-dev
10+
toolbox enter {{REPO}}-dev
11+
# Install dependencies manually
12+
13+
# Verify setup
14+
just check # or: cargo check / mix compile / etc.
15+
just test # Run test suite
16+
```
17+
18+
### Repository Structure
19+
```
20+
{{REPO}}/
21+
├── src/ # Source code (Perimeter 1-2)
22+
├── lib/ # Library code (Perimeter 1-2)
23+
├── extensions/ # Extensions (Perimeter 2)
24+
├── plugins/ # Plugins (Perimeter 2)
25+
├── tools/ # Tooling (Perimeter 2)
26+
├── docs/ # Documentation (Perimeter 3)
27+
│ ├── architecture/ # ADRs, specs (Perimeter 2)
28+
│ └── proposals/ # RFCs (Perimeter 3)
29+
├── examples/ # Examples (Perimeter 3)
30+
├── spec/ # Spec tests (Perimeter 3)
31+
├── tests/ # Test suite (Perimeter 2-3)
32+
├── .well-known/ # Protocol files (Perimeter 1-3)
33+
├── .github/ # GitHub config (Perimeter 1)
34+
│ ├── ISSUE_TEMPLATE/
35+
│ └── workflows/
36+
├── CHANGELOG.md
37+
├── CODE_OF_CONDUCT.md
38+
├── CONTRIBUTING.md # This file
39+
├── GOVERNANCE.md
40+
├── LICENSE
41+
├── MAINTAINERS.md
42+
├── README.adoc
43+
├── SECURITY.md
44+
├── flake.nix # Nix flake (Perimeter 1)
45+
└── justfile # Task runner (Perimeter 1)
46+
```
47+
48+
---
49+
50+
## How to Contribute
51+
52+
### Reporting Bugs
53+
54+
**Before reporting**:
55+
1. Search existing issues
56+
2. Check if it's already fixed in `{{MAIN_BRANCH}}`
57+
3. Determine which perimeter the bug affects
58+
59+
**When reporting**:
60+
61+
Use the [bug report template](.github/ISSUE_TEMPLATE/bug_report.md) and include:
62+
63+
- Clear, descriptive title
64+
- Environment details (OS, versions, toolchain)
65+
- Steps to reproduce
66+
- Expected vs actual behaviour
67+
- Logs, screenshots, or minimal reproduction
68+
69+
### Suggesting Features
70+
71+
**Before suggesting**:
72+
1. Check the [roadmap](ROADMAP.md) if available
73+
2. Search existing issues and discussions
74+
3. Consider which perimeter the feature belongs to
75+
76+
**When suggesting**:
77+
78+
Use the [feature request template](.github/ISSUE_TEMPLATE/feature_request.md) and include:
79+
80+
- Problem statement (what pain point does this solve?)
81+
- Proposed solution
82+
- Alternatives considered
83+
- Which perimeter this affects
84+
85+
### Your First Contribution
86+
87+
Look for issues labelled:
88+
89+
- [`good first issue`](https://{{FORGE}}/{{OWNER}}/{{REPO}}/labels/good%20first%20issue) — Simple Perimeter 3 tasks
90+
- [`help wanted`](https://{{FORGE}}/{{OWNER}}/{{REPO}}/labels/help%20wanted) — Community help needed
91+
- [`documentation`](https://{{FORGE}}/{{OWNER}}/{{REPO}}/labels/documentation) — Docs improvements
92+
- [`perimeter-3`](https://{{FORGE}}/{{OWNER}}/{{REPO}}/labels/perimeter-3) — Community sandbox scope
93+
94+
---
95+
96+
## Development Workflow
97+
98+
### Branch Naming
99+
```
100+
docs/short-description # Documentation (P3)
101+
test/what-added # Test additions (P3)
102+
feat/short-description # New features (P2)
103+
fix/issue-number-description # Bug fixes (P2)
104+
refactor/what-changed # Code improvements (P2)
105+
security/what-fixed # Security fixes (P1-2)
106+
```
107+
108+
### Commit Messages
109+
110+
We follow [Conventional Commits](https://www.conventionalcommits.org/):
111+
```
112+
<type>(<scope>): <description>
113+
114+
[optional body]
115+
116+
[optional footer]

MVP.adoc

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
// SPDX-License-Identifier: PMPL-1.0 OR PMPL-1.0-or-later
2+
= Svalinn MVP Checklist
3+
:toc: preamble
4+
:toclevels: 2
5+
6+
This checklist scopes the MVP to a single-image CI pipeline with a policy gate
7+
and single-node scheduling.
8+
9+
== MVP Targets
10+
11+
* Single signer + single transparency log
12+
* Policy gate requires signer match + required predicates
13+
* Single-node scheduling only (local host)
14+
15+
== Required Deliverables
16+
17+
=== 1. Gateway API (ReScript/Deno)
18+
19+
* [ ] `POST /verify` to validate a bundle against trust store + policy
20+
* [ ] `POST /run` to schedule and start a container after verification
21+
* [ ] JSON responses using `error-response.v1.json`
22+
* [ ] MVP gateway: `tools/mvp/svalinn_gateway.ts`
23+
24+
=== 2. Gatekeeper Policy
25+
26+
* [ ] Implement schema `spec/schemas/gatekeeper-policy.v1.json`
27+
* [ ] Load policy from file and enforce:
28+
- required predicate types
29+
- allowed signer key IDs
30+
- log quorum (set to `1` for MVP)
31+
* [ ] MVP policy example at `spec/policy/mvp-policy.json`
32+
* [ ] MVP verifier helper in `tools/mvp/svalinn_gate.py`
33+
34+
=== 3. Single-Node Scheduling
35+
36+
* [ ] FIFO queue for pending containers
37+
* [ ] Local-only placement (no multi-node logic)
38+
* [ ] Simple status model: queued, starting, running, failed, stopped
39+
* [ ] MVP queue stub in `tools/mvp/svalinn_gateway.ts`
40+
41+
=== 4. Vordr Delegation
42+
43+
* [ ] Translate request to Vordr CLI or API
44+
* [ ] Capture execution metadata for audit logs
45+
* [ ] MVP CLI delegation from `tools/mvp/svalinn_gateway.ts`
46+
47+
== Deferred to 1.0
48+
49+
* Multi-log quorum enforcement (>=2)
50+
* Threshold signatures
51+
* Multi-node scheduling and service discovery
52+
* Authn/authz and rate limiting

docs/cli-ux-compat.adoc

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
// SPDX-License-Identifier: PMPL-1.0 OR PMPL-1.0-or-later
2+
= CLI UX Compatibility Rules
3+
:toc: preamble
4+
:toclevels: 2
5+
6+
This document defines command and flag compatibility goals with Docker, Podman,
7+
and nerdctl to reduce user friction.
8+
9+
== 1. Command Parity (MVP)
10+
11+
Implement (or alias) these commands with the same semantics:
12+
13+
* `run`, `ps`, `stop`, `rm`, `pull`
14+
* `image ls` (alias `images`)
15+
* `logs`, `inspect`
16+
* `login`, `logout`
17+
18+
== 2. Flag Compatibility (MVP)
19+
20+
For `vordr run`, accept and preserve the common flags:
21+
22+
* `-d`, `--detach`
23+
* `--rm`, `--remove-on-exit` (prefer new flag; accept old for migration)
24+
* `--name <name>`
25+
* `-p`, `--publish <host:container>`
26+
* `-e`, `--env <KEY=VALUE>`
27+
* `-v`, `--volume <host:container>`
28+
* `--network <name>`
29+
* `--pull <policy>`
30+
* `--entrypoint <cmd>`
31+
* `-w`, `--workdir <path>`
32+
* `-u`, `--user <uid[:gid]>`
33+
* `--read-only`
34+
* `--tmpfs <path>`
35+
* `--cap-add <cap>`, `--cap-drop <cap>`
36+
37+
== 3. Argument Ordering Rules
38+
39+
* Flags are order-independent.
40+
* Repeated flags append (e.g., multiple `-e` or `-v`).
41+
* Accept both `--flag value` and `--flag=value`.
42+
* Allow `--` to separate run command arguments.
43+
44+
== 4. Migration Rules
45+
46+
* If a Docker/Podman flag is unsupported, emit:
47+
- `ERR_USAGE` with a short explanation
48+
- a replacement suggestion when available
49+
* Preserve exit codes as defined in `docs/surface-contract.adoc`.
50+
* Keep `--rm` as a deprecated alias of `--remove-on-exit` until v1.0.
51+
52+
== 5. 1.0 Parity Goals
53+
54+
* `exec`, `stats`, `top`
55+
* `network ls/create/rm`
56+
* `volume ls/create/rm`
57+
* `system df/prune`

0 commit comments

Comments
 (0)