@miller-tech/uap 1.204.2 → 1.205.1

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.
@@ -15,9 +15,10 @@
15
15
  */
16
16
  import { createHash } from 'crypto';
17
17
  import { existsSync, mkdirSync, readFileSync, rmSync, writeFileSync } from 'fs';
18
- import { dirname, resolve } from 'path';
18
+ import { dirname, relative, resolve } from 'path';
19
19
  import { isTestFilePath } from './applier.js';
20
20
  import { additiveTestEditRefusal } from './test-oracle-additive.js';
21
+ import { runRung } from './verifier-ladder.js';
21
22
  /** Per-file restoration budget; larger files are hash-verified only. */
22
23
  const MAX_RESTORE_BYTES = 1_000_000;
23
24
  /** Total bytes of restoration content kept in memory. */
@@ -58,7 +59,7 @@ export function captureIntegrity(projectRoot, files) {
58
59
  */
59
60
  export function verifyAndRestore(projectRoot, snapshot) {
60
61
  const root = resolve(projectRoot);
61
- const check = { tampered: [], restored: [], unrecoverable: [] };
62
+ const check = { tampered: [], restored: [], unrecoverable: [], sanctionedAdditive: [] };
62
63
  for (const [rel, record] of snapshot) {
63
64
  const abs = resolve(root, rel);
64
65
  try {
@@ -98,6 +99,7 @@ export function verifyAndRestore(projectRoot, snapshot) {
98
99
  if (record.content !== null &&
99
100
  isTestFilePath(rel.split(/[\\/]/).join('/')) &&
100
101
  additiveTestEditRefusal(record.content.toString('utf-8'), bytes.toString('utf-8')) === null) {
102
+ check.sanctionedAdditive.push(rel);
101
103
  continue;
102
104
  }
103
105
  check.tampered.push(rel);
@@ -118,6 +120,124 @@ export function verifyAndRestore(projectRoot, snapshot) {
118
120
  }
119
121
  return check;
120
122
  }
123
+ /**
124
+ * Oracle-consistency check — the BEHAVIORAL control behind the additive
125
+ * test-edit carve-out.
126
+ *
127
+ * The textual rule (append-only + delta denylist) cannot see appended
128
+ * module-scope code that neutralizes the frozen tests at runtime. This check
129
+ * measures instead of reading: restore the BASELINE bytes of every
130
+ * sanctioned-changed test file, re-run the test rungs, and require the
131
+ * ORIGINAL oracle to still pass. If the tree only passes WITH the appended
132
+ * changes present, the append is masking failures — the exact outcome the
133
+ * carve-out must never allow.
134
+ *
135
+ * Scope, stated honestly (security review 2026-08-13): the guarantee covers
136
+ * neutralizers living IN the sanctioned files — the swap replaces only those
137
+ * bytes, so masking machinery relocated to a NEW test/setup file is invisible
138
+ * here. Runner per-file isolation blocks the cross-file runtime-patch shape,
139
+ * and runner CONFIGS are in the integrity capture (a config edit is
140
+ * tampering); a neutralizer in a pre-existing, unprotected setup file remains
141
+ * a residual.
142
+ *
143
+ * Cost-bounded by construction: runs only when a sanctioned additive change
144
+ * exists AND the gates passed, and re-runs only the test rungs. Fail-soft on
145
+ * its own machinery (unreadable files, over-budget snapshots) — a checker
146
+ * that cannot run must not block a legitimate delivery; the textual rule and
147
+ * the tamper guard still stand.
148
+ */
149
+ export function oracleConsistencyCheck(projectRoot, snapshot, sanctioned, rungs) {
150
+ const root = resolve(projectRoot);
151
+ // Match id AND name: detectRungs names real test oracles whose ids carry no
152
+ // "test" — a Makefile suite is id 'make' (name 'Make (make test)'), a
153
+ // run_tests.sh suite is id 'script' (name 'Script (bash test.sh)'). An
154
+ // id-only filter silently skipped the check for those whole project classes
155
+ // (review 2026-08-13 finding 1).
156
+ const testRungs = rungs.filter((r) => r.required !== false && /test/i.test(`${r.id} ${r.name}`));
157
+ if (sanctioned.length === 0 || testRungs.length === 0) {
158
+ return { consistent: true, checkedFiles: [] };
159
+ }
160
+ const saved = new Map();
161
+ const checkedFiles = [];
162
+ let outcome = null;
163
+ const restoreFailed = [];
164
+ try {
165
+ for (const rel of sanctioned) {
166
+ const record = snapshot.get(rel);
167
+ if (!record?.content)
168
+ continue; // over-budget capture — cannot compare
169
+ const abs = resolve(root, rel);
170
+ try {
171
+ saved.set(abs, readFileSync(abs));
172
+ writeFileSync(abs, record.content);
173
+ checkedFiles.push(rel);
174
+ }
175
+ catch {
176
+ // A failed baseline write may have TRUNCATED the file — keep the
177
+ // saved candidate bytes so the finally can restore them (review
178
+ // finding 3); only the re-run skips this file.
179
+ }
180
+ }
181
+ if (checkedFiles.length === 0)
182
+ return { consistent: true, checkedFiles };
183
+ for (const rung of testRungs) {
184
+ const r = runRung(rung, root);
185
+ if (!r.passed) {
186
+ outcome = { consistent: false, failedRungId: rung.id, checkedFiles };
187
+ return outcome;
188
+ }
189
+ }
190
+ // TOCTOU guard (security review F2): code the re-run itself executes —
191
+ // a setup file, a pretest script — can rewrite the restored file back to
192
+ // the masked bytes BEFORE the runner reads it, making the "original
193
+ // oracle" re-run execute the appended tests after all. If any checked
194
+ // file no longer hash-matches its baseline after the re-run, the recheck
195
+ // was tampered with and cannot vouch for anything.
196
+ for (const rel of checkedFiles) {
197
+ const record = snapshot.get(rel);
198
+ if (!record?.hash)
199
+ continue;
200
+ try {
201
+ if (sha256(readFileSync(resolve(root, rel))) !== record.hash) {
202
+ outcome = { consistent: false, failedRungId: 'oracle-recheck-tampered', checkedFiles };
203
+ return outcome;
204
+ }
205
+ }
206
+ catch {
207
+ outcome = { consistent: false, failedRungId: 'oracle-recheck-tampered', checkedFiles };
208
+ return outcome;
209
+ }
210
+ }
211
+ outcome = { consistent: true, checkedFiles };
212
+ return outcome;
213
+ }
214
+ finally {
215
+ for (const [abs, bytes] of saved) {
216
+ try {
217
+ writeFileSync(abs, bytes);
218
+ }
219
+ catch {
220
+ // Baseline bytes remain — safe CONTENT (hash-matches the snapshot,
221
+ // so later verifies stay quiet), but the sanctioned append is gone.
222
+ // Surface it so the caller discards the turn instead of reporting a
223
+ // clean pass over a tree that silently lost its appended tests
224
+ // (review finding 4).
225
+ restoreFailed.push(relative(root, abs));
226
+ }
227
+ }
228
+ if (outcome && restoreFailed.length > 0)
229
+ outcome.restoreFailed = restoreFailed;
230
+ }
231
+ }
232
+ /** Feedback when the original oracle fails while the appended tree passes. */
233
+ export function oracleConsistencyFeedback(result) {
234
+ return [
235
+ `ORACLE-CONSISTENCY VIOLATION: with the ORIGINAL content of ${result.checkedFiles.join(', ')} restored,`,
236
+ `required gate '${result.failedRungId}' FAILS — the appended test-file changes are masking failures of the`,
237
+ 'pre-existing tests. Gate results for this turn are DISCARDED. Fix the implementation so the original',
238
+ 'tests genuinely pass; appended code must never be what makes them pass.',
239
+ ].join('\n');
240
+ }
121
241
  /** Render the violation feedback prepended to discarded gate results. */
122
242
  export function integrityViolationFeedback(check) {
123
243
  const lines = [
@@ -1 +1 @@
1
- {"version":3,"file":"integrity.js","sourceRoot":"","sources":["../../src/delivery/integrity.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"integrity.js","sourceRoot":"","sources":["../../src/delivery/integrity.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@miller-tech/uap",
3
- "version": "1.204.2",
3
+ "version": "1.205.1",
4
4
  "description": "Autonomous AI agent memory system with CLAUDE.md protocol enforcement",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -88,6 +88,11 @@ BYPASS_PATTERNS = (
88
88
  # honest work. It runs against `scannable_command`, which blanks quoted
89
89
  # blobs, instead.
90
90
  re.compile(r"UAP_ALLOW_GATELESS_ROOT\s*=\s*['\"]?1", re.I),
91
+ # Oracle-consistency is the BEHAVIORAL control: the model must not be able
92
+ # to disable the consistency check that ensures its outputs match the
93
+ # acceptance criteria. An inline assignment would let the agent waive its
94
+ # own consistency requirement, so refuse it here.
95
+ re.compile(r"UAP_ORACLE_CONSISTENCY\s*=\s*['\"]?0", re.I),
91
96
  )
92
97
 
93
98
  # The gateless-root override in its CLI-flag spelling. Anchored on both sides