carveout 0.1.0 → 0.1.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.
package/README.md CHANGED
@@ -1,4 +1,38 @@
1
- # carveout
1
+ <h1 align="center">carveout</h1>
2
+
3
+ <p align="center">
4
+ <strong>Zero-trust handoff for your codebase.</strong><br>
5
+ They see one folder. None of their code runs until you've read it.
6
+ </p>
7
+
8
+ <p align="center">
9
+ <a href="https://www.npmjs.com/package/carveout"><img src="https://img.shields.io/npm/v/carveout?style=flat-square&label=npm" alt="npm version"></a>
10
+ <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-green?style=flat-square" alt="MIT license"></a>
11
+ <a href="SKILL.md"><img src="https://img.shields.io/badge/Claude_Code-skill-D97757?style=flat-square" alt="Claude Code skill"></a>
12
+ <a href="#limits"><img src="https://img.shields.io/badge/TypeScript-repositories-3178C6?style=flat-square" alt="TypeScript repositories"></a>
13
+ </p>
14
+
15
+ <p align="center">
16
+ <img src="assets/hero.png" width="100%" alt="Zero-trust handoff for your codebase. A contractor sees 0.7% of the repository's source (median of 8 slices of a 245k-line TypeScript repository), and 0 lines of their code run before you read the patch: CI and hook files, manifests, lockfiles, deleted or weakened tests, new network or disk access and files outside the slice are kept out.">
17
+ </p>
18
+
19
+ <table>
20
+ <tr>
21
+ <td align="center" width="25%"><h3>under 1%</h3>of the repository<br>is what they see<br><sub>median 0.7% of 245k lines</sub></td>
22
+ <td align="center" width="25%"><h3>0 lines</h3>of their code run<br>to make the patch<br><sub>it is read, never executed</sub></td>
23
+ <td align="center" width="25%"><h3>52 of 52</h3>returned patches<br>applied to the repository<br><sub>real commits, sliced and merged back</sub></td>
24
+ <td align="center" width="25%"><h3>89%</h3>still apply after<br>the repository moved on<br><sub>every one typechecks</sub></td>
25
+ </tr>
26
+ </table>
27
+
28
+ <p align="center">
29
+ <a href="#handing-a-slice-to-a-contractor">Handoff</a> •
30
+ <a href="#commands">Commands</a> •
31
+ <a href="#also-checking-a-change-in-the-repository">Impact and gate</a> •
32
+ <a href="#experiments">Experiments</a> •
33
+ <a href="#limits">Limits</a> •
34
+ <a href="experiments/RESULTS.md">RESULTS.md</a>
35
+ </p>
2
36
 
3
37
  Hand one part of a closed TypeScript repository to an outside contractor,
4
38
  and take their work back, without showing them the rest.
@@ -450,6 +484,11 @@ class, `never[]` under the relaxed `noImplicitAny`).
450
484
  `experiments/` holds the pre-registered experiments and their data
451
485
  ([RESULTS.md](experiments/RESULTS.md)).
452
486
 
487
+ - **What a slice shows.** Over the eight sandbox-factory slices in
488
+ `slices.json`, a default cut copies a median of 0.7% of the repository's
489
+ 245k lines of TypeScript as source (0.03 to 2.4%); with
490
+ `--whole-package --with-tests --copy-pure`, 11% (0.3 to 24%)
491
+ ([hero-exposure.mjs](experiments/hero-exposure.mjs)).
453
492
  - **Agents in a slice (Phases 5 to 8).** An agent given a slice instead of
454
493
  the repository did not get cheaper or better: it read 17 to 24% more
455
494
  input, passed hidden tests 5 to 10 points less often, and a weaker model
package/dist/src/carve.js CHANGED
@@ -29,7 +29,7 @@ import { extensionStyles, packageFolder, restoreImports, specifiersOf, undoRewri
29
29
  import { moduleSpecifiers, parseSource } from "./specifiers.js";
30
30
  import { scanSecrets, secretBlockers } from "./project/secrets.js";
31
31
  import { checkRecordPaths, handoffPolicy, trustedRepo } from "./policy.js";
32
- export const CARVEOUT_VERSION = "0.1.0";
32
+ export const CARVEOUT_VERSION = "0.1.1";
33
33
  export const RECORD_PATH = "carveout.json";
34
34
  export const RECORD_SCHEMA_VERSION = 1;
35
35
  /** Blockers that stop a cut before it writes anything. */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "carveout",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "Hand one part of a closed TypeScript repository to an outside contractor: a slice, stubbed and mocked, that installs, builds and tests on its own, and a checked patch back. Also checks a change made in the repository: what it reaches, the tests to run, and weakened tests or config edits.",
5
5
  "keywords": [
6
6
  "carveout",