devlyn-cli 4.2.24 → 4.2.26
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/bin/codex-projection.js +129 -0
- package/bin/devlyn.js +12 -0
- package/bin/engines.js +35 -0
- package/bin/harness-activation.js +427 -0
- package/bin/harness-status.js +171 -0
- package/bin/instructions.js +13 -3
- package/bin/release.js +368 -0
- package/bin/skill-history.json +7 -0
- package/config/skills/_shared/adapters/omp.md +3 -0
- package/config/skills/_shared/runtime-principles.md +12 -2
- package/config/skills/_shared/task-complete.py +5 -0
- package/config/skills/_shared/task-completion.md +15 -4
- package/config/skills/_shared/warm-build-dirs.py +970 -0
- package/config/skills/devlyn-ideate/references/loop.md +2 -0
- package/package.json +7 -1
|
@@ -264,7 +264,12 @@ def allocate(args, *, exclude_receipts=()):
|
|
|
264
264
|
receipt["worktree_identity"] = workspace_identity(target, Path(receipt["worktree_gitdir"]))
|
|
265
265
|
receipt["allocation"] = "owned"
|
|
266
266
|
atomic_json(path, receipt)
|
|
267
|
+
# Owned first: an interrupted warm-up leaves a usable allocation whose build starts cold.
|
|
268
|
+
with locked_receipt(path) as owned:
|
|
269
|
+
owned["build_dirs"] = shared("warm-build-dirs")["warm"](target, work, scratch)
|
|
270
|
+
atomic_json(path, owned)
|
|
267
271
|
return {"status": "ALLOCATED", "receipt": str(path), "worktree": str(target), "scratch": str(scratch),
|
|
272
|
+
"build_dirs": owned["build_dirs"],
|
|
268
273
|
"reconciled": [] if local else reconcile(common, path, work, exclude_receipts=exclude_receipts)}
|
|
269
274
|
|
|
270
275
|
|
|
@@ -106,10 +106,21 @@ require the affected checks again.
|
|
|
106
106
|
Keep the original edits through pending or failed delivery; only reconciliation
|
|
107
107
|
removes them. Preserve all other work and report anything left behind.
|
|
108
108
|
|
|
109
|
-
|
|
110
|
-
build
|
|
111
|
-
|
|
112
|
-
|
|
109
|
+
Build in the task worktree's own default build directory, never in one
|
|
110
|
+
another checkout builds in, even one build at a time: tools such as Cargo take
|
|
111
|
+
one checkout's outputs as fresh for the other. When a Cargo workspace's
|
|
112
|
+
Cargo.toml sets `[workspace.metadata.devlyn] warm-build-dirs = true`,
|
|
113
|
+
allocation seeds that directory from a built checkout of the repository, so
|
|
114
|
+
the first build does not rebuild every dependency; `build_dirs` in its result
|
|
115
|
+
and receipt says what it did, and a skip means an ordinary cold build. The
|
|
116
|
+
opt-in is the workspace's: seeding keeps dependency outputs that may hold the
|
|
117
|
+
other checkout's paths, and those follow that checkout's later rebuilds. `warm-build-dirs.py <worktree>` does the same for a
|
|
118
|
+
worktree made without allocation. A warmed directory leaves with the worktree
|
|
119
|
+
after merge, so a pending, failed or local-only task keeps it.
|
|
120
|
+
|
|
121
|
+
Allocation also returns a receipt-owned `scratch` directory for other
|
|
122
|
+
disposable build files, such as writable tool caches. Keep source checkouts,
|
|
123
|
+
Git data, lockfiles, reports and restart evidence outside scratch. Do not create unowned
|
|
113
124
|
temporary build trees or preserve them by copying them into evidence custody.
|
|
114
125
|
Prefer `TemporaryDirectory`/`finally` for short-lived test fixtures.
|
|
115
126
|
|