Status: active milestone, scope frozen Framing: internal milestone (not a public release) Goal: prove the architecture works end-to-end against synthetic fixtures, ship when CI is green
burling's value as a wedge depends on shipping something that runs the conformance loop end-to-end before the matrix gets bigger. The four-project sprawl risk identified in strategy review is real: without a declared finish line, v0.1 quietly becomes v0.9 forever.
This document defines what "shipped" means concretely. Anything outside this scope is v0.2 or later, no exceptions.
| Module | Checks | Count |
|---|---|---|
Identity Document Validation (internal/identity) |
ID-01 through ID-09 | 9 |
Compact Mode JWT/Ed25519 (internal/compact) |
CM-01 through CM-09 | 9 |
| Total live | 18 of 43 |
Every other module returns a single INFO finding "module deferred to v0.2"
and exits cleanly. Stubs exist so the CLI can dispatch to them without
panicking; no validation logic.
| Module | Reason |
|---|---|
| Scope attenuation (SA-01–06) | Operates on chains; meaningful only with chained mode |
| Chained mode (CH-01–05) | Already declared v0.1 stub in conformance matrix |
| Bounded delegation depth (BD-01–03) | Chain-dependent |
| Delegation context (DC-01–04) | Chain-dependent |
| Completion blocks (CB-01–04) | Chain-dependent |
| MCP binding (MB-01–03) | Transport-level; gated on real MCP test target |
| Command | Status in v0.1 |
|---|---|
burling validate <token-file> |
Works for compact tokens |
burling validate-identity <url|file> |
Fully works |
burling lint <token-file> |
JSON output, all live findings |
burling audit-chain <token-file> |
Stub: "chained mode deferred to v0.2" |
Shared flags --format json|text and --strict work across all commands.
ERROR always fails exit code; --strict promotes WARNING to failing.
- Synthetic, generated programmatically (Ed25519 keypairs created per test run; no static crypto fixtures committed)
- Each live check has at least one passing and one failing fixture
- Minimum: 18 checks × 2 = 36 fixture cases
- Generators committed under
testdata/<module>/and reusable for v0.2
go test ./... -race -coverpassesgolangci-lint runpasses- Coverage ≥80% on every live module package, with one exception:
internal/identity/jcs.goallowed ≥70% if uncovered lines are exclusively in theTODO(jcs-numbers)exponent path
- One end-to-end CLI test per command, exercising real fixture files
- README updated: "v0.1 implements 18 of 43 checks. Six modules stubbed, will land in v0.2."
- New file
docs/CONFORMANCE.md: status table for all 43 check IDs (live / stubbed / deferred), updated as work lands - One worked example in README: sample token + command + JSON output
These are deliberate exclusions, not oversights:
- Any external AIP implementation tested against (no others exist yet; v0.2 milestone will be tied to first external reference)
- Public announcement, blog post, social outreach
- Performance benchmarks
- Any check beyond the 18 above
- Any module beyond identity and compact
- Biscuit dependency decision (deferred to v0.2 per house style)
- Model-integrity scanning, general-purpose policy framework, or any scope expansion that conceptually rhymes with IBCTs but isn't AIP
internal/report: implemented, 94.7% coverage, passinginternal/identity: empty directoryinternal/compact: empty directory- All other
internal/*: empty directories cmd/burling: empty directorypkg/burling: empty directory- Git history: 1 commit (initial scaffolding)
Distance to v0.1: 0 of 18 live checks. Identity package and compact package both built from scratch.
Follows docs/conformance-matrix.md order, narrowed to v0.1 scope:
internal/identity— JCS canonicalizer + Ed25519 verify + 9 checksinternal/compact— JWT parse + Ed25519 verify + 9 checks- Stub packages for the six deferred modules (each returns one INFO)
cmd/burling— wire all four CLI commands- Fixtures, CI hardening, README + CONFORMANCE.md
-
internal/identityimplemented, 9 checks tested, ≥80% coverage (jcs.go ≥70% with documented exemption) -
internal/compactimplemented, 9 checks tested, ≥80% coverage - Six stub packages return INFO findings without panicking
- All four CLI commands dispatch correctly
-
--format json|textand--stricthonored across CLI - 36+ fixture cases passing
-
go test ./... -race -covergreen -
golangci-lint rungreen -
docs/CONFORMANCE.mdexists and accurate - README declares 18 of 43 status
- Worked example in README runs against committed fixture
When every box is checked, v0.1 is shipped. Tag v0.1.0. Move to v0.2
planning.