Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 20 additions & 20 deletions capability-ledger.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,45 +4,45 @@
{
"capabilityId": "portable-identity",
"title": "Portable opaque identity contract",
"specification": "draft",
"specification": "canonical",
"implementation": "partial",
"repository": "draft-pr",
"repository": "merged",
"verification": "fixture-proven",
"activation": "inactive",
"authority": "none",
"evidence": [
{ "type": "repo-path", "ref": "modules/jarvos-control-plane/src/identity.js" },
{ "type": "test", "ref": "modules/jarvos-control-plane/test/identity.test.js" },
{ "type": "document", "ref": "docs/architecture/capability-truth-ledger.md" },
{ "type": "pull-request", "ref": "pull/257" }
{ "type": "commit", "ref": "03b5263e3b273ea7a3e76581fd73c6059fd90ada" }
],
"assertedOn": "2026-08-31",
"notes": "Draft-PR validator, exports, and unit tests exist; no product consumer issues identifiers yet."
"assertedOn": "2026-09-01",
"notes": "Merged validator, exports, and unit tests exist; no product consumer issues identifiers yet."
},
{
"capabilityId": "capability-truth-ledger",
"title": "Capability truth ledger contract",
"specification": "draft",
"specification": "canonical",
"implementation": "partial",
"repository": "draft-pr",
"repository": "merged",
"verification": "fixture-proven",
"activation": "inactive",
"authority": "none",
"evidence": [
{ "type": "repo-path", "ref": "scripts/lib/capability-ledger.js" },
{ "type": "document", "ref": "docs/architecture/capability-truth-ledger.md" },
{ "type": "repo-path", "ref": "capability-ledger.json" },
{ "type": "pull-request", "ref": "pull/257" }
{ "type": "commit", "ref": "03b5263e3b273ea7a3e76581fd73c6059fd90ada" }
],
"assertedOn": "2026-08-31",
"notes": "This draft-PR ledger validates against its own contract; no automated reporter consumes it yet."
"assertedOn": "2026-09-01",
"notes": "This merged ledger validates against its own contract; no automated reporter consumes it yet."
},
{
"capabilityId": "candidate-envelope",
"title": "Non-authoritative candidate envelope contract",
"specification": "draft",
"specification": "canonical",
"implementation": "partial",
"repository": "draft-pr",
"repository": "merged",
"verification": "fixture-proven",
"activation": "inactive",
"authority": "none",
Expand All @@ -51,17 +51,17 @@
{ "type": "test", "ref": "modules/jarvos-secondbrain/packages/jarvos-ambient/test/candidate-contract.test.js" },
{ "type": "document", "ref": "modules/jarvos-secondbrain/docs/contracts/CANDIDATE_ENVELOPE.md" },
{ "type": "test", "ref": "tests/fixtures/foundation-contracts/manifest.json" },
{ "type": "pull-request", "ref": "pull/257" }
{ "type": "commit", "ref": "03b5263e3b273ea7a3e76581fd73c6059fd90ada" }
],
"assertedOn": "2026-08-31",
"notes": "Draft-PR validator, exports, unit tests, and shared conformance fixtures exist; no source adapter or promotion consumer constructs candidates yet."
"assertedOn": "2026-09-01",
"notes": "Merged validator, exports, unit tests, and shared conformance fixtures exist; no source adapter or promotion consumer constructs candidates yet."
},
{
"capabilityId": "promotion-receipt",
"title": "Cross-surface promotion receipt envelope contract",
"specification": "draft",
"specification": "canonical",
"implementation": "partial",
"repository": "draft-pr",
"repository": "merged",
"verification": "fixture-proven",
"activation": "inactive",
"authority": "none",
Expand All @@ -70,10 +70,10 @@
{ "type": "test", "ref": "modules/jarvos-control-plane/test/promotion-receipt.test.js" },
{ "type": "document", "ref": "modules/jarvos-control-plane/README.md" },
{ "type": "test", "ref": "tests/fixtures/foundation-contracts/manifest.json" },
{ "type": "pull-request", "ref": "pull/257" }
{ "type": "commit", "ref": "03b5263e3b273ea7a3e76581fd73c6059fd90ada" }
],
"assertedOn": "2026-08-31",
"notes": "Draft-PR validator, exports, unit tests, and shared conformance fixtures exist; no destination writer emits this envelope yet."
"assertedOn": "2026-09-01",
"notes": "Merged validator, exports, unit tests, and shared conformance fixtures exist; no destination writer emits this envelope yet."
}
]
}
17 changes: 9 additions & 8 deletions docs/architecture/capability-truth-ledger.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,11 +53,12 @@ contain `..` traversal, and cannot carry a `file:` or other URI scheme.

## Seed ledger

The tracked `capability-ledger.json` seed describes only the foundation work in
draft pull request 257. Its identity, truth-ledger, candidate-envelope, and
promotion-receipt contracts are asserted at `specification: draft`,
`implementation: partial`, and `verification: fixture-proven` because their
validators and tests exist but no installed product consumer activates them.
Every seed record is `repository: draft-pr`, `activation: inactive`, and
`authority: none`. Merge and release are separate future observations; neither
is inferred from this branch.
The tracked `capability-ledger.json` seed describes foundation work merged in
commit `03b5263e3b273ea7a3e76581fd73c6059fd90ada`. Its identity, truth-ledger,
candidate-envelope, and promotion-receipt contracts are asserted at
`specification: canonical`, `implementation: partial`, and
`verification: fixture-proven` because their validators and tests exist but no
installed product consumer activates them. Every seed record is
`repository: merged`, `activation: inactive`, and `authority: none`. A merge
establishes repository state only; activation, authority, and release remain
separate observations and are never inferred from that commit.
Original file line number Diff line number Diff line change
Expand Up @@ -92,14 +92,22 @@ test('capability ledger rejects sparse record and evidence arrays', () => {
assert.ok(validateCapabilityLedger(sparseEvidence).length > 0);
});

test('the tracked foundation ledger does not overstate an open draft pull request', () => {
test('the tracked foundation ledger records merged foundation contracts conservatively', () => {
const ledger = readJson(path.join(ROOT, 'capability-ledger.json'));
for (const record of ledger.records) {
assert.equal(record.specification, 'draft', `${record.capabilityId} must remain draft`);
assert.equal(record.repository, 'draft-pr', `${record.capabilityId} must remain draft-pr`);
assert.equal(record.specification, 'canonical', `${record.capabilityId} must be canonical after merge`);
assert.equal(record.repository, 'merged', `${record.capabilityId} must record merged repository state`);
assert.equal(record.verification, 'fixture-proven', `${record.capabilityId} must not overstate verification`);
assert.equal(record.activation, 'inactive', `${record.capabilityId} must not infer activation from merge`);
assert.equal(record.authority, 'none', `${record.capabilityId} must not infer authority from merge`);
assert.ok(
record.evidence.some((entry) => entry.type === 'commit' && entry.ref === '03b5263e3b273ea7a3e76581fd73c6059fd90ada'),
`${record.capabilityId} must identify its merged commit evidence`,
);
assert.equal(
record.evidence.some((entry) => entry.type === 'pull-request' && entry.ref === 'pull/257'),
`${record.capabilityId} must identify its draft pull request evidence`,
false,
`${record.capabilityId} must not retain draft pull request evidence`,
);
}
});
Expand Down
Loading