borgmcp-shared 1.1.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -6
- package/dist/conformance/adapter.d.ts +0 -3
- package/dist/conformance/adapter.d.ts.map +1 -1
- package/dist/conformance/adapter.js +23 -42
- package/dist/conformance/adapter.js.map +1 -1
- package/dist/conformance/index.d.ts +3 -3
- package/dist/conformance/index.d.ts.map +1 -1
- package/dist/conformance/index.js +3 -10
- package/dist/conformance/index.js.map +1 -1
- package/dist/protocol/contract.d.ts +1 -1
- package/dist/protocol/contract.js +1 -1
- package/dist/protocol/coordination.d.ts +0 -9
- package/dist/protocol/coordination.d.ts.map +1 -1
- package/dist/protocol/coordination.js +1 -33
- package/dist/protocol/coordination.js.map +1 -1
- package/dist/protocol/types.d.ts +0 -9
- package/dist/protocol/types.d.ts.map +1 -1
- package/dist/protocol/version.d.ts +1 -1
- package/dist/protocol/version.js +1 -1
- package/docs/compatibility.md +8 -3
- package/docs/releases/1.2.0.md +20 -0
- package/docs/releases/2.0.0.md +22 -0
- package/package.json +1 -1
- package/src/conformance/adapter.ts +55 -70
- package/src/conformance/index.ts +6 -14
- package/src/protocol/contract.ts +1 -1
- package/src/protocol/coordination.ts +2 -48
- package/src/protocol/types.ts +0 -11
- package/src/protocol/version.ts +2 -2
package/README.md
CHANGED
|
@@ -84,9 +84,10 @@ Key paths in the repository-first HTTP contract include:
|
|
|
84
84
|
inferring identity from a cube name.
|
|
85
85
|
- `PUT /api/repository-cubes/association` atomically binds an explicitly
|
|
86
86
|
confirmed cube ID and canonical repository identity for a caller with cube
|
|
87
|
-
`manage` authority. The same binding is idempotent
|
|
88
|
-
|
|
89
|
-
validation failure, or permission
|
|
87
|
+
`manage` authority. The same binding is idempotent, multiple repositories may
|
|
88
|
+
bind to one cube, and a repository bound to a different cube returns a
|
|
89
|
+
non-enumerating conflict. A conflict, validation failure, or permission
|
|
90
|
+
failure performs no mutation.
|
|
90
91
|
- `DELETE /api/cubes/:cubeId` requires cube `manage` authority and atomically
|
|
91
92
|
deletes the cube and its scoped state. Formerly authorized callers receive
|
|
92
93
|
`410 CUBE_DELETED`, while callers that were never authorized still receive
|
|
@@ -179,9 +180,14 @@ protocol responses, streams, and subsequent protocol queries; persistence
|
|
|
179
180
|
layout, internal counters, and authority restart are implementation-owned test
|
|
180
181
|
concerns. A failed setup prerequisite is reported as skipped with its cause;
|
|
181
182
|
assertion failures do not change prerequisite availability, and unrelated
|
|
182
|
-
fixtures continue. A server or client adapter can run the portable
|
|
183
|
-
|
|
184
|
-
|
|
183
|
+
fixtures continue. A server or client adapter can run the portable suite against
|
|
184
|
+
its local/self-hosted implementation. The package does not define a second
|
|
185
|
+
authority, migration target, or fallback implementation.
|
|
186
|
+
|
|
187
|
+
The 1.1.0 suite was measured at 156 requests per credential within one `reset`
|
|
188
|
+
epoch. Adapters running the suite must provision a budget of at least 192
|
|
189
|
+
requests per credential per epoch so conformance does not consume the
|
|
190
|
+
implementation's limit.
|
|
185
191
|
|
|
186
192
|
`ConformanceAdmin` classifies its complete boundary as follows. Fixture setup is
|
|
187
193
|
`reset`, `createPrincipal`, `createCube`, `grantCube`, `revokeCubeGrant`,
|
|
@@ -150,9 +150,6 @@ export declare const ADAPTER_CONFORMANCE_FIXTURES: readonly [{
|
|
|
150
150
|
}, {
|
|
151
151
|
readonly id: "acks.status-query";
|
|
152
152
|
readonly area: "acks";
|
|
153
|
-
}, {
|
|
154
|
-
readonly id: "claims.durable-noncursor";
|
|
155
|
-
readonly area: "claims";
|
|
156
153
|
}, {
|
|
157
154
|
readonly id: "decisions.topic-supersession";
|
|
158
155
|
readonly area: "decisions";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/conformance/adapter.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/conformance/adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,7 +18,6 @@ export const ADAPTER_CONFORMANCE_FIXTURES = [
|
|
|
18
18
|
{ id: 'cursor.explicit-expiry', area: 'cursor' },
|
|
19
19
|
{ id: 'acks.idempotent', area: 'acks' },
|
|
20
20
|
{ id: 'acks.status-query', area: 'acks' },
|
|
21
|
-
{ id: 'claims.durable-noncursor', area: 'claims' },
|
|
22
21
|
{ id: 'decisions.topic-supersession', area: 'decisions' },
|
|
23
22
|
{ id: 'security.drone-management-authorization', area: 'security' },
|
|
24
23
|
{ id: 'security.manage-access-matrix', area: 'security' },
|
|
@@ -50,7 +49,6 @@ const FIXTURE_PREREQUISITES = {
|
|
|
50
49
|
'cursor.explicit-expiry': ['shared.enrolled-principals'],
|
|
51
50
|
'acks.idempotent': ['shared.enrolled-principals'],
|
|
52
51
|
'acks.status-query': ['shared.enrolled-principals'],
|
|
53
|
-
'claims.durable-noncursor': ['shared.enrolled-principals'],
|
|
54
52
|
'decisions.topic-supersession': ['shared.enrolled-principals'],
|
|
55
53
|
'security.manage-access-matrix': ['shared.enrolled-principals'],
|
|
56
54
|
'drones.reassign-invariants': ['shared.enrolled-principals'],
|
|
@@ -395,6 +393,15 @@ export async function runAdapterConformance(environment, options = {}) {
|
|
|
395
393
|
const createdResponse = await environment.operations.createCube(ownerCredential, createProtocolEnvelope('cube-create', cubeRequest));
|
|
396
394
|
expectStatus(createdResponse, 201, 'Owner cube create');
|
|
397
395
|
const created = decodeCreateCubeResponseEnvelope(createdResponse.body).payload;
|
|
396
|
+
expectError(await environment.operations.createCube(ownerCredential, createProtocolEnvelope('cube-case-variant-duplicate', {
|
|
397
|
+
...cubeRequest,
|
|
398
|
+
retry_key: '00000000-0000-4000-8000-000000000214',
|
|
399
|
+
name: 'repository one',
|
|
400
|
+
repository: {
|
|
401
|
+
kind: 'origin',
|
|
402
|
+
value: 'https://github.com/Byte-Ventures/repository-one-case-variant',
|
|
403
|
+
},
|
|
404
|
+
})), 409, ErrorCode.INVALID_INPUT, 'Same-owner case-variant cube name');
|
|
398
405
|
const createdRoleProbes = new Map();
|
|
399
406
|
for (const [kind, roleId, roleClass, isHumanSeat, marker] of [
|
|
400
407
|
['human-seat', created.human_seat_role_id, 'queen', true, 'H'],
|
|
@@ -611,12 +618,14 @@ export async function runAdapterConformance(environment, options = {}) {
|
|
|
611
618
|
})), 409, ErrorCode.REPOSITORY_ALREADY_ASSOCIATED, 'Repository-to-other-cube conflict', [cubeA.id, cubeC.id, repository.value]);
|
|
612
619
|
invariant(same(await resolve('repository-resolve-after-repository-conflict', resolveRequest), authoritative), 'Repository conflict changed the authoritative original binding.');
|
|
613
620
|
invariant(same(await resolve('repository-resolve-alternate-after-repository-conflict', alternateResolveRequest), { result: 'none' }), 'Repository conflict created an alternate binding.');
|
|
614
|
-
|
|
621
|
+
const alternateAssociationResponse = await environment.operations.associateRepositoryCube(credentialA, createProtocolEnvelope('repository-associate-second-repository', {
|
|
615
622
|
cube_id: cubeA.id,
|
|
616
623
|
...alternateResolveRequest,
|
|
617
|
-
}))
|
|
618
|
-
|
|
619
|
-
|
|
624
|
+
}));
|
|
625
|
+
expectStatus(alternateAssociationResponse, 200, 'Second repository association');
|
|
626
|
+
const alternateAuthoritative = decodeAssociateRepositoryCubeResponseEnvelope(alternateAssociationResponse.body).payload;
|
|
627
|
+
invariant(same(await resolve('repository-resolve-after-second-association', resolveRequest), authoritative), 'Second repository association changed the authoritative original binding.');
|
|
628
|
+
invariant(same(await resolve('repository-resolve-alternate-after-second-association', alternateResolveRequest), alternateAuthoritative), 'Second repository association was not observable.');
|
|
620
629
|
const preparedB = await environment.admin.prepareRepositoryCube(cubeB, {
|
|
621
630
|
name: 'Other Client Legacy Cube',
|
|
622
631
|
template: 'starter',
|
|
@@ -651,7 +660,7 @@ export async function runAdapterConformance(environment, options = {}) {
|
|
|
651
660
|
resolved: true,
|
|
652
661
|
idempotent: true,
|
|
653
662
|
repository_conflict: ErrorCode.REPOSITORY_ALREADY_ASSOCIATED,
|
|
654
|
-
|
|
663
|
+
multiple_repositories_per_cube: true,
|
|
655
664
|
inaccessible: ErrorCode.ACCESS_DENIED,
|
|
656
665
|
inaccessible_binding_hidden: true,
|
|
657
666
|
cross_client_binding_hidden: true,
|
|
@@ -1216,29 +1225,6 @@ export async function runAdapterConformance(environment, options = {}) {
|
|
|
1216
1225
|
unknown_entry_code: ErrorCode.NOT_FOUND,
|
|
1217
1226
|
};
|
|
1218
1227
|
});
|
|
1219
|
-
await record('claims.durable-noncursor', async () => {
|
|
1220
|
-
const principal = await environment.admin.createPrincipal('claim-noncursor');
|
|
1221
|
-
const cube = await environment.admin.createCube('claim-noncursor');
|
|
1222
|
-
await environment.admin.grantCube(principal, cube);
|
|
1223
|
-
const credential = await environment.admin.issueDroneSession(principal);
|
|
1224
|
-
const appended = await environment.operations.append(credential, cube, createProtocolEnvelope('claim-fixture-entry', {
|
|
1225
|
-
post_id: '00000000-0000-4000-8000-000000000314',
|
|
1226
|
-
to: 'broadcast',
|
|
1227
|
-
message: 'claim cursor baseline',
|
|
1228
|
-
}));
|
|
1229
|
-
expectStatus(appended, 201, 'Claim fixture append');
|
|
1230
|
-
const entry = decodeAppendLogResultEnvelope(appended.body).payload.entry;
|
|
1231
|
-
const baselineCursor = { id: entry.id, created_at: entry.created_at };
|
|
1232
|
-
const claim = await environment.operations.ack(credential, cube, createProtocolEnvelope('claim-fixture-claim', { entry_id: entry.id, kind: 'claim' }));
|
|
1233
|
-
expectStatus(claim, 204, 'Claim');
|
|
1234
|
-
const read = await environment.operations.read(credential, cube, createProtocolEnvelope('claim-fixture-readback', { cursor: baselineCursor, limit: 10 }));
|
|
1235
|
-
expectStatus(read, 200, 'Claim-state read');
|
|
1236
|
-
const page = decodeReadLogResultEnvelope(read.body).payload;
|
|
1237
|
-
invariant(page.entries.length === 0, 'Claim unexpectedly created a log entry.');
|
|
1238
|
-
invariant(page.cursor !== null && compareLogCursor(page.cursor, baselineCursor) === 0, 'Claim advanced the log cursor.');
|
|
1239
|
-
invariant(page.claims.some((item) => item.log_entry_id === entry.id), 'Claim was not durable in a later read.');
|
|
1240
|
-
return { durable_claims: 1, entries: 0, cursor_advanced: false };
|
|
1241
|
-
});
|
|
1242
1228
|
await record('decisions.topic-supersession', async () => {
|
|
1243
1229
|
const firstResponse = await environment.operations.recordDecision(credentialA, cubeA, createProtocolEnvelope('decision1', { topic: 'runtime', decision: 'first' }));
|
|
1244
1230
|
expectStatus(firstResponse, 201, 'First decision');
|
|
@@ -1737,16 +1723,8 @@ export async function runAdapterConformance(environment, options = {}) {
|
|
|
1737
1723
|
name: 'Ambiguous Role',
|
|
1738
1724
|
detailedDescription,
|
|
1739
1725
|
});
|
|
1740
|
-
await environment.
|
|
1741
|
-
|
|
1742
|
-
isHumanSeat: false,
|
|
1743
|
-
name: 'AMBIGUOUS ROLE',
|
|
1744
|
-
detailedDescription,
|
|
1745
|
-
});
|
|
1746
|
-
expectError(await environment.operations.roleRationale(roleContractReadCredential, roleContractCube, createProtocolEnvelope('rationale-ambiguous-role', {
|
|
1747
|
-
role: 'ambiguous role',
|
|
1748
|
-
section: 'Workflow rationale',
|
|
1749
|
-
})), 400, ErrorCode.INVALID_INPUT, 'Ambiguous role rationale lookup');
|
|
1726
|
+
expectError(await environment.operations.createRole(roleContractCredential, roleContractCube, createProtocolEnvelope('role-case-variant-duplicate', { name: 'AMBIGUOUS ROLE' })), 409, ErrorCode.INVALID_INPUT, 'Case-variant duplicate role name');
|
|
1727
|
+
expectError(await environment.operations.createRole(roleContractCredential, roleContractCube, createProtocolEnvelope('role-invalid-character', { name: 'Invalid/Role' })), 400, ErrorCode.INVALID_INPUT, 'Invalid role name character');
|
|
1750
1728
|
expectError(await environment.operations.roleRationale(roleContractReadCredential, roleContractCube, createProtocolEnvelope('rationale-invalid-selector', {
|
|
1751
1729
|
role: ' Rationale Builder',
|
|
1752
1730
|
section: 'Workflow rationale',
|
|
@@ -1759,7 +1737,8 @@ export async function runAdapterConformance(environment, options = {}) {
|
|
|
1759
1737
|
unknown_role_code: ErrorCode.ROLE_NOT_FOUND,
|
|
1760
1738
|
inaccessible_role_code: ErrorCode.ROLE_NOT_FOUND,
|
|
1761
1739
|
unknown_section_code: ErrorCode.ROLE_SECTION_NOT_FOUND,
|
|
1762
|
-
|
|
1740
|
+
case_variant_duplicate_status: 409,
|
|
1741
|
+
invalid_name_code: ErrorCode.INVALID_INPUT,
|
|
1763
1742
|
invalid_selector_code: ErrorCode.INVALID_INPUT,
|
|
1764
1743
|
};
|
|
1765
1744
|
});
|
|
@@ -2158,6 +2137,8 @@ export async function runAdapterConformance(environment, options = {}) {
|
|
|
2158
2137
|
const log = await environment.operations.read(manager.credential, cube, createProtocolEnvelope(`delete-${label}-log-readback`, { cursor: null, limit: 500 }));
|
|
2159
2138
|
expectStatus(log, 200, `${label} deletion log readback`);
|
|
2160
2139
|
const logPayload = decodeReadLogResultEnvelope(log.body).payload;
|
|
2140
|
+
const claimStatus = await environment.operations.ackStatus(manager.credential, cube, createProtocolEnvelope(`delete-${label}-claim-readback`, { entry_id: entry.id }));
|
|
2141
|
+
expectStatus(claimStatus, 200, `${label} deletion claim readback`);
|
|
2161
2142
|
const roster = await environment.operations.listDrones(manager.credential, cube);
|
|
2162
2143
|
expectStatus(roster, 200, `${label} deletion roster readback`);
|
|
2163
2144
|
const roleReadback = await environment.operations.attach(manager.credential, createProtocolEnvelope(`delete-${label}-role-readback`, {
|
|
@@ -2171,7 +2152,7 @@ export async function runAdapterConformance(environment, options = {}) {
|
|
|
2171
2152
|
return {
|
|
2172
2153
|
decisions: active,
|
|
2173
2154
|
entries: logPayload.entries,
|
|
2174
|
-
claims:
|
|
2155
|
+
claims: decodeAckStatusResultEnvelope(claimStatus.body).payload.claims,
|
|
2175
2156
|
drone: listedDrone(roster, drone.id),
|
|
2176
2157
|
role: rolePayload,
|
|
2177
2158
|
};
|