@coderifts/agent-guard 4.0.0 → 4.2.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 +8 -0
- package/dist/cjs/conditional-write.d.ts +92 -0
- package/dist/cjs/conditional-write.d.ts.map +1 -0
- package/dist/cjs/conditional-write.js +96 -0
- package/dist/cjs/conditional-write.js.map +1 -0
- package/dist/cjs/coverage-report.d.ts +10 -0
- package/dist/cjs/coverage-report.d.ts.map +1 -1
- package/dist/cjs/coverage-report.js +11 -0
- package/dist/cjs/coverage-report.js.map +1 -1
- package/dist/cjs/execution-proof.d.ts +13 -0
- package/dist/cjs/execution-proof.d.ts.map +1 -1
- package/dist/cjs/execution-proof.js +11 -0
- package/dist/cjs/execution-proof.js.map +1 -1
- package/dist/cjs/guard.d.ts +5 -4
- package/dist/cjs/guard.d.ts.map +1 -1
- package/dist/cjs/guard.js +110 -43
- package/dist/cjs/guard.js.map +1 -1
- package/dist/cjs/index.d.ts +3 -1
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +8 -2
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/types.d.ts +21 -2
- package/dist/cjs/types.d.ts.map +1 -1
- package/dist/cjs/with-coderifts.d.ts +6 -0
- package/dist/cjs/with-coderifts.d.ts.map +1 -1
- package/dist/cjs/with-coderifts.js +8 -0
- package/dist/cjs/with-coderifts.js.map +1 -1
- package/dist/esm/conditional-write.d.ts +92 -0
- package/dist/esm/conditional-write.d.ts.map +1 -0
- package/dist/esm/conditional-write.js +91 -0
- package/dist/esm/conditional-write.js.map +1 -0
- package/dist/esm/coverage-report.d.ts +10 -0
- package/dist/esm/coverage-report.d.ts.map +1 -1
- package/dist/esm/coverage-report.js +11 -0
- package/dist/esm/coverage-report.js.map +1 -1
- package/dist/esm/execution-proof.d.ts +13 -0
- package/dist/esm/execution-proof.d.ts.map +1 -1
- package/dist/esm/execution-proof.js +11 -0
- package/dist/esm/execution-proof.js.map +1 -1
- package/dist/esm/guard.d.ts +5 -4
- package/dist/esm/guard.d.ts.map +1 -1
- package/dist/esm/guard.js +110 -43
- package/dist/esm/guard.js.map +1 -1
- package/dist/esm/index.d.ts +3 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +2 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/types.d.ts +21 -2
- package/dist/esm/types.d.ts.map +1 -1
- package/dist/esm/with-coderifts.d.ts +6 -0
- package/dist/esm/with-coderifts.d.ts.map +1 -1
- package/dist/esm/with-coderifts.js +8 -0
- package/dist/esm/with-coderifts.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -186,6 +186,8 @@ const { tools, composition_assurance } = withCodeRifts({
|
|
|
186
186
|
|
|
187
187
|
const report = coverageReport({
|
|
188
188
|
applicability: { /* host-known — see warning below */ runtime: true, merge: true, deploy: true, content: true },
|
|
189
|
+
// Required for FULLY_ENFORCED: absence is not attestation (RT-P-16).
|
|
190
|
+
applicability_attested: true,
|
|
189
191
|
runtime: composition_assurance, // complete RuntimePlacementInput — no remapping
|
|
190
192
|
// merge / deploy / content: host still supplies (see next)
|
|
191
193
|
});
|
|
@@ -214,6 +216,12 @@ claiming three enforcement boundaries are irrelevant to them; the aggregate repo
|
|
|
214
216
|
placements as `EXCLUDED` and will not residual or cap them. Do not set three falses just to typecheck.
|
|
215
217
|
That overstates coverage.
|
|
216
218
|
|
|
219
|
+
**`applicability_attested` (RT-P-16).** The map alone is not enough for a full-tetrad claim. Pass
|
|
220
|
+
`applicability_attested: true` only when the host has deliberately decided which placements apply.
|
|
221
|
+
If the field is absent or false, `coverageReport` names residual `applicability_unattested` and will
|
|
222
|
+
not return `FULLY_ENFORCED` even when every applicable placement is ENFORCING (downgrade to
|
|
223
|
+
`PARTIALLY_ENFORCED`). Absence is not attestation.
|
|
224
|
+
|
|
217
225
|
`withCodeRifts` does not call `coverageReport` itself: it can only speak for the runtime placement, and
|
|
218
226
|
a report it produced alone would either guess the other three or assert they do not apply — neither is
|
|
219
227
|
honest, so the composition hands the caller the piece it owns and stops.
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Conditional-execution surface (reporting only — this package never writes).
|
|
3
|
+
*
|
|
4
|
+
* ACTIVE + FRESH only proves content matched at measurement time. A host that resolves
|
|
5
|
+
* then writes unconditionally still races; the conditional write itself is the host's job.
|
|
6
|
+
* We define the surface, demand it by policy, and report whether the host said it happened.
|
|
7
|
+
*
|
|
8
|
+
* Host contract (executeIfUnchanged):
|
|
9
|
+
* The host SHOULD perform writes via executeIfUnchanged(write, expected_token) (or
|
|
10
|
+
* equivalent: only apply the mutation if the resource still holds expected_token).
|
|
11
|
+
* After the attempt, the host reports on the call context:
|
|
12
|
+
* - conditional_write: true — write was conditioned on a version token
|
|
13
|
+
* - conditional_write: false — write was unconditional (host admits it)
|
|
14
|
+
* - conditional_write: 'not_reported' — host did not report (DEFAULT; absence ≠ false)
|
|
15
|
+
* When true, conditioned_on_token is the opaque token the host conditioned on.
|
|
16
|
+
* Tokens are host-defined (git blob sha, etag, mtime-hash, …). This package never
|
|
17
|
+
* interprets them — only carries them and compares for equality (===).
|
|
18
|
+
*/
|
|
19
|
+
/** Host-defined opaque version token. Compared only by string equality. */
|
|
20
|
+
export type VersionToken = string;
|
|
21
|
+
/**
|
|
22
|
+
* Host resolution surface: content plus an opaque version token.
|
|
23
|
+
* Returned by host resolvers that support conditional execution.
|
|
24
|
+
*/
|
|
25
|
+
export type VersionedContent = {
|
|
26
|
+
content: string;
|
|
27
|
+
version_token: VersionToken;
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Host report of whether the write was conditioned on a version token.
|
|
31
|
+
* `not_reported` is the default — absence of a report is not false
|
|
32
|
+
* (absent ≠ 0 ≠ null ≠ unknown).
|
|
33
|
+
*/
|
|
34
|
+
export type ConditionalWriteReport = true | false | 'not_reported';
|
|
35
|
+
/**
|
|
36
|
+
* Per-call forensic basis for conditional write (on every GuardOutcome).
|
|
37
|
+
* Survives replay unchanged when recorded.
|
|
38
|
+
*/
|
|
39
|
+
export type ConditionalWriteBasis = {
|
|
40
|
+
conditional_write: ConditionalWriteReport;
|
|
41
|
+
/**
|
|
42
|
+
* When conditional_write === true, the token the host says it conditioned on.
|
|
43
|
+
* Omitted when not_reported / false / not supplied.
|
|
44
|
+
*/
|
|
45
|
+
conditioned_on_token?: VersionToken | null;
|
|
46
|
+
/** Config requireConditionalWrite for this call (policy). */
|
|
47
|
+
require_conditional_write: boolean;
|
|
48
|
+
/** Whether this call was treated as write-style. */
|
|
49
|
+
write_style: boolean;
|
|
50
|
+
};
|
|
51
|
+
/**
|
|
52
|
+
* Values the RUNNER collected / host reported before the pure guard path.
|
|
53
|
+
* Default when omitted: conditional_write 'not_reported'.
|
|
54
|
+
*/
|
|
55
|
+
export type ConditionalWriteCallContext = {
|
|
56
|
+
conditional_write?: ConditionalWriteReport;
|
|
57
|
+
conditioned_on_token?: VersionToken | null;
|
|
58
|
+
/** Optional versioned content for token carry (equality only). */
|
|
59
|
+
versioned_content?: VersionedContent | null;
|
|
60
|
+
};
|
|
61
|
+
/** Equality compare only — never semantic interpretation of the token. */
|
|
62
|
+
export declare function tokensEqual(a: VersionToken | null | undefined, b: VersionToken | null | undefined): boolean;
|
|
63
|
+
/**
|
|
64
|
+
* Build per-call conditional-write basis + optional enforce block.
|
|
65
|
+
* Pure once the host report is a value (no I/O).
|
|
66
|
+
*
|
|
67
|
+
* Policy (mirrors requireFreshness Decision-1): when requireConditionalWrite is true
|
|
68
|
+
* and the call is write-style, conditional_write must be true for enforced execution
|
|
69
|
+
* to be eligible. false and not_reported both refuse (distinct from "host said false"
|
|
70
|
+
* vs "host silent" only on the basis field — both block under policy).
|
|
71
|
+
*/
|
|
72
|
+
export declare function buildConditionalWriteBasis(input: {
|
|
73
|
+
writeStyle: boolean;
|
|
74
|
+
requireConditionalWrite: boolean;
|
|
75
|
+
ctx?: ConditionalWriteCallContext | null;
|
|
76
|
+
}): {
|
|
77
|
+
basis: ConditionalWriteBasis;
|
|
78
|
+
/** If set, enforced execution must not proceed. */
|
|
79
|
+
blockCause?: 'CONDITIONAL_WRITE_REQUIRED';
|
|
80
|
+
};
|
|
81
|
+
/** Residual name when policy requires conditional write but host did not report true. */
|
|
82
|
+
export declare const RESIDUAL_UNCONDITIONAL_WRITE = "composition_unconditional_write_under_policy";
|
|
83
|
+
/**
|
|
84
|
+
* Coverage residual when requireConditionalWrite is on and the host report is not true.
|
|
85
|
+
* inescapable_runtime must stay false — we report what the host told us, never claim compliance.
|
|
86
|
+
*/
|
|
87
|
+
export declare function conditionalWriteResidual(input: {
|
|
88
|
+
requireConditionalWrite: boolean;
|
|
89
|
+
writeStyle: boolean;
|
|
90
|
+
conditionalWrite: ConditionalWriteReport;
|
|
91
|
+
}): string | null;
|
|
92
|
+
//# sourceMappingURL=conditional-write.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conditional-write.d.ts","sourceRoot":"","sources":["../../src/conditional-write.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAIH,2EAA2E;AAC3E,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC;AAElC;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,YAAY,CAAC;CAC7B,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,sBAAsB,GAAG,IAAI,GAAG,KAAK,GAAG,cAAc,CAAC;AAEnE;;;GAGG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC,iBAAiB,EAAE,sBAAsB,CAAC;IAC1C;;;OAGG;IACH,oBAAoB,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IAC3C,6DAA6D;IAC7D,yBAAyB,EAAE,OAAO,CAAC;IACnC,oDAAoD;IACpD,WAAW,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,2BAA2B,GAAG;IACxC,iBAAiB,CAAC,EAAE,sBAAsB,CAAC;IAC3C,oBAAoB,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IAC3C,kEAAkE;IAClE,iBAAiB,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;CAC7C,CAAC;AAEF,0EAA0E;AAC1E,wBAAgB,WAAW,CACzB,CAAC,EAAE,YAAY,GAAG,IAAI,GAAG,SAAS,EAClC,CAAC,EAAE,YAAY,GAAG,IAAI,GAAG,SAAS,GACjC,OAAO,CAIT;AASD;;;;;;;;GAQG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE;IAChD,UAAU,EAAE,OAAO,CAAC;IACpB,uBAAuB,EAAE,OAAO,CAAC;IACjC,GAAG,CAAC,EAAE,2BAA2B,GAAG,IAAI,CAAC;CAC1C,GAAG;IACF,KAAK,EAAE,qBAAqB,CAAC;IAC7B,mDAAmD;IACnD,UAAU,CAAC,EAAE,4BAA4B,CAAC;CAC3C,CAgCA;AAED,yFAAyF;AACzF,eAAO,MAAM,4BAA4B,iDAAiD,CAAC;AAE3F;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE;IAC9C,uBAAuB,EAAE,OAAO,CAAC;IACjC,UAAU,EAAE,OAAO,CAAC;IACpB,gBAAgB,EAAE,sBAAsB,CAAC;CAC1C,GAAG,MAAM,GAAG,IAAI,CAKhB"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Conditional-execution surface (reporting only — this package never writes).
|
|
3
|
+
*
|
|
4
|
+
* ACTIVE + FRESH only proves content matched at measurement time. A host that resolves
|
|
5
|
+
* then writes unconditionally still races; the conditional write itself is the host's job.
|
|
6
|
+
* We define the surface, demand it by policy, and report whether the host said it happened.
|
|
7
|
+
*
|
|
8
|
+
* Host contract (executeIfUnchanged):
|
|
9
|
+
* The host SHOULD perform writes via executeIfUnchanged(write, expected_token) (or
|
|
10
|
+
* equivalent: only apply the mutation if the resource still holds expected_token).
|
|
11
|
+
* After the attempt, the host reports on the call context:
|
|
12
|
+
* - conditional_write: true — write was conditioned on a version token
|
|
13
|
+
* - conditional_write: false — write was unconditional (host admits it)
|
|
14
|
+
* - conditional_write: 'not_reported' — host did not report (DEFAULT; absence ≠ false)
|
|
15
|
+
* When true, conditioned_on_token is the opaque token the host conditioned on.
|
|
16
|
+
* Tokens are host-defined (git blob sha, etag, mtime-hash, …). This package never
|
|
17
|
+
* interprets them — only carries them and compares for equality (===).
|
|
18
|
+
*/
|
|
19
|
+
'use strict';
|
|
20
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21
|
+
exports.RESIDUAL_UNCONDITIONAL_WRITE = void 0;
|
|
22
|
+
exports.tokensEqual = tokensEqual;
|
|
23
|
+
exports.buildConditionalWriteBasis = buildConditionalWriteBasis;
|
|
24
|
+
exports.conditionalWriteResidual = conditionalWriteResidual;
|
|
25
|
+
/** Equality compare only — never semantic interpretation of the token. */
|
|
26
|
+
function tokensEqual(a, b) {
|
|
27
|
+
if (a == null || b == null)
|
|
28
|
+
return false;
|
|
29
|
+
if (typeof a !== 'string' || typeof b !== 'string')
|
|
30
|
+
return false;
|
|
31
|
+
return a === b;
|
|
32
|
+
}
|
|
33
|
+
function normalizeReport(raw) {
|
|
34
|
+
if (raw === true)
|
|
35
|
+
return true;
|
|
36
|
+
if (raw === false)
|
|
37
|
+
return false;
|
|
38
|
+
if (raw === 'not_reported')
|
|
39
|
+
return 'not_reported';
|
|
40
|
+
return 'not_reported';
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Build per-call conditional-write basis + optional enforce block.
|
|
44
|
+
* Pure once the host report is a value (no I/O).
|
|
45
|
+
*
|
|
46
|
+
* Policy (mirrors requireFreshness Decision-1): when requireConditionalWrite is true
|
|
47
|
+
* and the call is write-style, conditional_write must be true for enforced execution
|
|
48
|
+
* to be eligible. false and not_reported both refuse (distinct from "host said false"
|
|
49
|
+
* vs "host silent" only on the basis field — both block under policy).
|
|
50
|
+
*/
|
|
51
|
+
function buildConditionalWriteBasis(input) {
|
|
52
|
+
const require_conditional_write = input.requireConditionalWrite === true;
|
|
53
|
+
const write_style = input.writeStyle === true;
|
|
54
|
+
const ctx = input.ctx && typeof input.ctx === 'object' ? input.ctx : {};
|
|
55
|
+
const conditional_write = normalizeReport(ctx.conditional_write);
|
|
56
|
+
const basis = {
|
|
57
|
+
conditional_write,
|
|
58
|
+
require_conditional_write,
|
|
59
|
+
write_style,
|
|
60
|
+
};
|
|
61
|
+
// Token carry: prefer explicit conditioned_on_token, else versioned_content.version_token.
|
|
62
|
+
if (conditional_write === true) {
|
|
63
|
+
if (typeof ctx.conditioned_on_token === 'string') {
|
|
64
|
+
basis.conditioned_on_token = ctx.conditioned_on_token;
|
|
65
|
+
}
|
|
66
|
+
else if (ctx.versioned_content
|
|
67
|
+
&& typeof ctx.versioned_content === 'object'
|
|
68
|
+
&& typeof ctx.versioned_content.version_token === 'string') {
|
|
69
|
+
basis.conditioned_on_token = ctx.versioned_content.version_token;
|
|
70
|
+
}
|
|
71
|
+
else if (ctx.conditioned_on_token === null) {
|
|
72
|
+
basis.conditioned_on_token = null;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
// Policy on write: only conditional_write:true is eligible for enforced:true.
|
|
76
|
+
if (write_style && require_conditional_write && conditional_write !== true) {
|
|
77
|
+
return { basis, blockCause: 'CONDITIONAL_WRITE_REQUIRED' };
|
|
78
|
+
}
|
|
79
|
+
return { basis };
|
|
80
|
+
}
|
|
81
|
+
/** Residual name when policy requires conditional write but host did not report true. */
|
|
82
|
+
exports.RESIDUAL_UNCONDITIONAL_WRITE = 'composition_unconditional_write_under_policy';
|
|
83
|
+
/**
|
|
84
|
+
* Coverage residual when requireConditionalWrite is on and the host report is not true.
|
|
85
|
+
* inescapable_runtime must stay false — we report what the host told us, never claim compliance.
|
|
86
|
+
*/
|
|
87
|
+
function conditionalWriteResidual(input) {
|
|
88
|
+
if (input.requireConditionalWrite !== true)
|
|
89
|
+
return null;
|
|
90
|
+
if (input.writeStyle !== true)
|
|
91
|
+
return null;
|
|
92
|
+
if (input.conditionalWrite === true)
|
|
93
|
+
return null;
|
|
94
|
+
return exports.RESIDUAL_UNCONDITIONAL_WRITE;
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=conditional-write.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conditional-write.js","sourceRoot":"","sources":["../../src/conditional-write.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,YAAY,CAAC;;;AAkDb,kCAOC;AAkBD,gEAwCC;AASD,4DASC;AApFD,0EAA0E;AAC1E,SAAgB,WAAW,CACzB,CAAkC,EAClC,CAAkC;IAElC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI;QAAE,OAAO,KAAK,CAAC;IACzC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACjE,OAAO,CAAC,KAAK,CAAC,CAAC;AACjB,CAAC;AAED,SAAS,eAAe,CAAC,GAAY;IACnC,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC9B,IAAI,GAAG,KAAK,KAAK;QAAE,OAAO,KAAK,CAAC;IAChC,IAAI,GAAG,KAAK,cAAc;QAAE,OAAO,cAAc,CAAC;IAClD,OAAO,cAAc,CAAC;AACxB,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,0BAA0B,CAAC,KAI1C;IAKC,MAAM,yBAAyB,GAAG,KAAK,CAAC,uBAAuB,KAAK,IAAI,CAAC;IACzE,MAAM,WAAW,GAAG,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;IAC9C,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,OAAO,KAAK,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACxE,MAAM,iBAAiB,GAAG,eAAe,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAEjE,MAAM,KAAK,GAA0B;QACnC,iBAAiB;QACjB,yBAAyB;QACzB,WAAW;KACZ,CAAC;IAEF,2FAA2F;IAC3F,IAAI,iBAAiB,KAAK,IAAI,EAAE,CAAC;QAC/B,IAAI,OAAO,GAAG,CAAC,oBAAoB,KAAK,QAAQ,EAAE,CAAC;YACjD,KAAK,CAAC,oBAAoB,GAAG,GAAG,CAAC,oBAAoB,CAAC;QACxD,CAAC;aAAM,IACL,GAAG,CAAC,iBAAiB;eAClB,OAAO,GAAG,CAAC,iBAAiB,KAAK,QAAQ;eACzC,OAAO,GAAG,CAAC,iBAAiB,CAAC,aAAa,KAAK,QAAQ,EAC1D,CAAC;YACD,KAAK,CAAC,oBAAoB,GAAG,GAAG,CAAC,iBAAiB,CAAC,aAAa,CAAC;QACnE,CAAC;aAAM,IAAI,GAAG,CAAC,oBAAoB,KAAK,IAAI,EAAE,CAAC;YAC7C,KAAK,CAAC,oBAAoB,GAAG,IAAI,CAAC;QACpC,CAAC;IACH,CAAC;IAED,8EAA8E;IAC9E,IAAI,WAAW,IAAI,yBAAyB,IAAI,iBAAiB,KAAK,IAAI,EAAE,CAAC;QAC3E,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,4BAA4B,EAAE,CAAC;IAC7D,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,CAAC;AACnB,CAAC;AAED,yFAAyF;AAC5E,QAAA,4BAA4B,GAAG,8CAA8C,CAAC;AAE3F;;;GAGG;AACH,SAAgB,wBAAwB,CAAC,KAIxC;IACC,IAAI,KAAK,CAAC,uBAAuB,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACxD,IAAI,KAAK,CAAC,UAAU,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC3C,IAAI,KAAK,CAAC,gBAAgB,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACjD,OAAO,oCAA4B,CAAC;AACtC,CAAC"}
|
|
@@ -49,6 +49,16 @@ export type ContentPlacementInput = {
|
|
|
49
49
|
};
|
|
50
50
|
export type CoverageReportInput = {
|
|
51
51
|
applicability: Applicability;
|
|
52
|
+
/**
|
|
53
|
+
* Host attestation that the `applicability` map is complete and intentional (RT-P-16).
|
|
54
|
+
*
|
|
55
|
+
* **Absence semantics (not_reported discipline):** missing or any value other than
|
|
56
|
+
* strictly `true` is false-equivalent for claims. Unattested applicability can never
|
|
57
|
+
* support `FULLY_ENFORCED` (downgraded to `PARTIALLY_ENFORCED` when placements would
|
|
58
|
+
* otherwise all be ENFORCING) and always names residual `applicability_unattested`
|
|
59
|
+
* when at least one placement is applicable. Absence is not attestation.
|
|
60
|
+
*/
|
|
61
|
+
applicability_attested?: boolean;
|
|
52
62
|
runtime?: RuntimePlacementInput | null;
|
|
53
63
|
merge?: MergePlacementInput | null;
|
|
54
64
|
deploy?: DeployPlacementInput | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coverage-report.d.ts","sourceRoot":"","sources":["../../src/coverage-report.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"coverage-report.d.ts","sourceRoot":"","sources":["../../src/coverage-report.ts"],"names":[],"mappings":"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"}
|
|
@@ -170,12 +170,22 @@ function coverageReport(input) {
|
|
|
170
170
|
else { // no WEAK, not all ENFORCING → some UNKNOWN
|
|
171
171
|
overall = 'UNKNOWN';
|
|
172
172
|
}
|
|
173
|
+
// RT-P-16: applicability attestation (not_reported). Only strict true is attestation.
|
|
174
|
+
// Absence / false can never support FULLY — a green tetrad with unattested scope is PARTIAL.
|
|
175
|
+
const applicabilityAttested = input.applicability_attested === true;
|
|
176
|
+
if (!applicabilityAttested && overall === 'FULLY_ENFORCED') {
|
|
177
|
+
overall = 'PARTIALLY_ENFORCED';
|
|
178
|
+
}
|
|
173
179
|
// §4.3 — residuals: union of applicable placements only, sorted unique (EXCLUDED contribute none).
|
|
174
180
|
const residualSet = new Set();
|
|
175
181
|
for (const p of order)
|
|
176
182
|
if (isApplicable(p))
|
|
177
183
|
for (const r of computed[p].residuals)
|
|
178
184
|
residualSet.add(r);
|
|
185
|
+
// RT-P-16 residual: named whenever applicability is not attested and something is in scope.
|
|
186
|
+
if (!applicabilityAttested && applicableStrengths.length > 0) {
|
|
187
|
+
residualSet.add('applicability_unattested');
|
|
188
|
+
}
|
|
179
189
|
const residuals = [...residualSet].sort();
|
|
180
190
|
// §4.4 — claim key + deterministic honest language.
|
|
181
191
|
const honest_claim_key = OVERALL_TO_KEY[overall];
|
|
@@ -183,6 +193,7 @@ function coverageReport(input) {
|
|
|
183
193
|
// §4.5 — flags (must not disagree with overall). RT-P-13: a per-placement inescapable claim tracks
|
|
184
194
|
// the COMPUTED strength (flag ∧ consistent enforcement), never the raw flag alone — so an
|
|
185
195
|
// inconsistent inescapable_* claim cannot leak into a may_claim_* true.
|
|
196
|
+
// may_claim_full_tetrad tracks overall only (which already requires attestation for FULLY).
|
|
186
197
|
const flags = {
|
|
187
198
|
may_claim_inescapable_runtime: isApplicable('runtime') && computed.runtime.strength === 'ENFORCING',
|
|
188
199
|
may_claim_inescapable_merge: isApplicable('merge') && computed.merge.strength === 'ENFORCING',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coverage-report.js","sourceRoot":"","sources":["../../src/coverage-report.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;
|
|
1
|
+
{"version":3,"file":"coverage-report.js","sourceRoot":"","sources":["../../src/coverage-report.ts"],"names":[],"mappings":"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"}
|
|
@@ -108,16 +108,29 @@ export type ProofBuildInput = {
|
|
|
108
108
|
result?: unknown;
|
|
109
109
|
/** Present only when factory threw. */
|
|
110
110
|
error?: unknown;
|
|
111
|
+
/** Optional conditional-write basis for the enforced+policy invariant. */
|
|
112
|
+
conditionalWriteBasis?: {
|
|
113
|
+
require_conditional_write: boolean;
|
|
114
|
+
write_style: boolean;
|
|
115
|
+
conditional_write: true | false | 'not_reported';
|
|
116
|
+
};
|
|
111
117
|
};
|
|
112
118
|
/**
|
|
113
119
|
* Runtime twin of the type-level enforced⟺receiptVerified invariant.
|
|
114
120
|
* Throws if enforced:true is paired with anything other than receiptVerified+preflighted.
|
|
121
|
+
* When requireConditionalWrite+writeStyle: enforced:true also requires conditional_write:true
|
|
122
|
+
* (same refusal class as the permission gate — not a parallel path).
|
|
115
123
|
* The proof block is read by consumers that do not have our TypeScript brands.
|
|
116
124
|
*/
|
|
117
125
|
export declare function assertEnforcedReceiptInvariant(input: {
|
|
118
126
|
enforced: boolean;
|
|
119
127
|
preflighted: boolean;
|
|
120
128
|
receiptVerified: boolean;
|
|
129
|
+
/** Policy requireConditionalWrite for this call (optional; omit = not checked here). */
|
|
130
|
+
requireConditionalWrite?: boolean;
|
|
131
|
+
writeStyle?: boolean;
|
|
132
|
+
/** Host report: true | false | 'not_reported'. */
|
|
133
|
+
conditionalWrite?: true | false | 'not_reported';
|
|
121
134
|
}): void;
|
|
122
135
|
/**
|
|
123
136
|
* Honest byte hash of a factory return. Only string / Buffer / Uint8Array are hashed as raw bytes.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execution-proof.d.ts","sourceRoot":"","sources":["../../src/execution-proof.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,iDAAiD;AACjD,eAAO,MAAM,oBAAoB,EAAG,0BAAmC,CAAC;AAExE;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,mBAAmB,GAC3B;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,SAAS,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACxD;IACE,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EACF,cAAc,GACd,iBAAiB,GACjB,wBAAwB,GACxB,yBAAyB,CAAC;CAC/B,CAAC;AAEN,MAAM,MAAM,mBAAmB,GAAG;IAChC,UAAU,EAAE,OAAO,oBAAoB,CAAC;IACxC,uGAAuG;IACvG,WAAW,EAAE,OAAO,CAAC;IACrB,4EAA4E;IAC5E,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,OAAO,EAAE;QACP;;;WAGG;QACH,QAAQ,EAAE,OAAO,CAAC;QAClB;;;WAGG;QACH,MAAM,EAAE,kBAAkB,GAAG,IAAI,CAAC;QAClC,sEAAsE;QACtE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;KAC3B,CAAC;IACF;;;;OAIG;IACH,QAAQ,EAAE;QACR,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QACzB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;KAC1B,GAAG,IAAI,CAAC;IACT;;;;OAIG;IACH,oBAAoB,EAAE,OAAO,GAAG,IAAI,CAAC;IACrC,SAAS,EAAE;QACT,SAAS,EAAE,OAAO,CAAC;QACnB,QAAQ,EAAE,OAAO,CAAC;QAClB,QAAQ,EAAE,OAAO,CAAC;KACnB,CAAC;IACF;;;OAGG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB,qBAAqB,EAAE,mBAAmB,CAAC;IAC3C;;OAEG;IACH,MAAM,EAAE;QACN,0BAA0B,EAAE,IAAI,CAAC;QACjC,iCAAiC,EAAE,IAAI,CAAC;QACxC,yCAAyC,EAAE,IAAI,CAAC;QAChD,+CAA+C,EAAE,IAAI,CAAC;QACtD,oCAAoC,EAAE,IAAI,CAAC;QAC3C,iDAAiD,EAAE,IAAI,CAAC;KACzD,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,WAAW,EAAE,OAAO,CAAC;IACrB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,YAAY,CAAC;IACtB,0DAA0D;IAC1D,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,uCAAuC;IACvC,KAAK,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"execution-proof.d.ts","sourceRoot":"","sources":["../../src/execution-proof.ts"],"names":[],"mappings":"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"}
|
|
@@ -37,6 +37,8 @@ const LIMITS = Object.freeze({
|
|
|
37
37
|
/**
|
|
38
38
|
* Runtime twin of the type-level enforced⟺receiptVerified invariant.
|
|
39
39
|
* Throws if enforced:true is paired with anything other than receiptVerified+preflighted.
|
|
40
|
+
* When requireConditionalWrite+writeStyle: enforced:true also requires conditional_write:true
|
|
41
|
+
* (same refusal class as the permission gate — not a parallel path).
|
|
40
42
|
* The proof block is read by consumers that do not have our TypeScript brands.
|
|
41
43
|
*/
|
|
42
44
|
function assertEnforcedReceiptInvariant(input) {
|
|
@@ -44,6 +46,11 @@ function assertEnforcedReceiptInvariant(input) {
|
|
|
44
46
|
if (input.preflighted !== true || input.receiptVerified !== true) {
|
|
45
47
|
throw new Error('@coderifts/agent-guard: enforced:true without receiptVerified+preflighted (runtime invariant)');
|
|
46
48
|
}
|
|
49
|
+
if (input.requireConditionalWrite === true && input.writeStyle === true) {
|
|
50
|
+
if (input.conditionalWrite !== true) {
|
|
51
|
+
throw new Error('@coderifts/agent-guard: enforced:true without conditional_write:true under requireConditionalWrite (runtime invariant)');
|
|
52
|
+
}
|
|
53
|
+
}
|
|
47
54
|
}
|
|
48
55
|
}
|
|
49
56
|
function receiptVerifiedOf(verdict) {
|
|
@@ -104,10 +111,14 @@ function executionResultHashOf(input) {
|
|
|
104
111
|
*/
|
|
105
112
|
function buildExecutionProof(input) {
|
|
106
113
|
const receiptVerified = receiptVerifiedOf(input.verdict);
|
|
114
|
+
const cwb = input.conditionalWriteBasis;
|
|
107
115
|
assertEnforcedReceiptInvariant({
|
|
108
116
|
enforced: input.enforced,
|
|
109
117
|
preflighted: input.preflighted,
|
|
110
118
|
receiptVerified,
|
|
119
|
+
requireConditionalWrite: cwb?.require_conditional_write,
|
|
120
|
+
writeStyle: cwb?.write_style,
|
|
121
|
+
conditionalWrite: cwb?.conditional_write,
|
|
111
122
|
});
|
|
112
123
|
const env = envelopeOf(input.verdict);
|
|
113
124
|
const hasEnvelope = env !== null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execution-proof.js","sourceRoot":"","sources":["../../src/execution-proof.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;GAkBG;;;
|
|
1
|
+
{"version":3,"file":"execution-proof.js","sourceRoot":"","sources":["../../src/execution-proof.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/guard.d.ts
CHANGED
|
@@ -9,10 +9,11 @@
|
|
|
9
9
|
*/
|
|
10
10
|
import type { GuardConfig, GuardOutcome, ToolCallDescriptor, ExecuteFactory } from './types.js';
|
|
11
11
|
import { type FreshnessCallContext } from './freshness.js';
|
|
12
|
+
import { type ConditionalWriteCallContext } from './conditional-write.js';
|
|
12
13
|
/**
|
|
13
|
-
* @param callContext Runner-collected freshness values (optional)
|
|
14
|
-
*
|
|
15
|
-
* calls collectFreshnessCallContext and passes the result
|
|
14
|
+
* @param callContext Runner-collected freshness values (optional) plus optional conditional-write
|
|
15
|
+
* host report fields. When omitted, freshness wiring is NOT_CONFIGURED and conditional_write is
|
|
16
|
+
* not_reported. The tool-registry runner calls collectFreshnessCallContext and passes the result.
|
|
16
17
|
*/
|
|
17
|
-
export declare function guardToolCall<T>(call: ToolCallDescriptor, executeFactory: ExecuteFactory<T>, config: GuardConfig, callContext?: FreshnessCallContext): Promise<GuardOutcome<T>>;
|
|
18
|
+
export declare function guardToolCall<T>(call: ToolCallDescriptor, executeFactory: ExecuteFactory<T>, config: GuardConfig, callContext?: FreshnessCallContext & ConditionalWriteCallContext): Promise<GuardOutcome<T>>;
|
|
18
19
|
//# sourceMappingURL=guard.d.ts.map
|
package/dist/cjs/guard.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guard.d.ts","sourceRoot":"","sources":["../../src/guard.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EACV,WAAW,EAAE,YAAY,EACT,kBAAkB,EAAE,cAAc,EAEnD,MAAM,YAAY,CAAC;AAMpB,OAAO,EAIL,KAAK,oBAAoB,EAC1B,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"guard.d.ts","sourceRoot":"","sources":["../../src/guard.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EACV,WAAW,EAAE,YAAY,EACT,kBAAkB,EAAE,cAAc,EAEnD,MAAM,YAAY,CAAC;AAMpB,OAAO,EAIL,KAAK,oBAAoB,EAC1B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAGL,KAAK,2BAA2B,EACjC,MAAM,wBAAwB,CAAC;AAoShC;;;;GAIG;AACH,wBAAsB,aAAa,CAAC,CAAC,EACnC,IAAI,EAAE,kBAAkB,EACxB,cAAc,EAAE,cAAc,CAAC,CAAC,CAAC,EACjC,MAAM,EAAE,WAAW,EACnB,WAAW,CAAC,EAAE,oBAAoB,GAAG,2BAA2B,GAC/D,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAsQ1B"}
|