@inixiative/config 0.5.82 → 0.5.84
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 +1 -1
- package/dist/cli.js +18 -9
- package/package.json +1 -1
- package/versions.json +3 -3
package/README.md
CHANGED
|
@@ -85,7 +85,7 @@ Lanes stand alone. A lane with a package missing a checkout, or claimed by ambig
|
|
|
85
85
|
Blessing is two-phase, so a dependent that needs work never deadlocks a release:
|
|
86
86
|
|
|
87
87
|
1. **Candidate.** A published version is recorded under `candidates`, and the config release that ends the train carries it, so `check` in any repo's CI accepts it from then on.
|
|
88
|
-
2. **Adopt.** A repo (lane checkout or consumer) whose check fails against the candidates it was moved onto doesn't stop the train. Its checkout is put back as it was, and the train opens `train/adopt-<pkg>-<version>` in a worktree (with the repo's ignored `.env*` files copied in
|
|
88
|
+
2. **Adopt.** A repo (lane checkout or consumer) whose check fails against the candidates it was moved onto doesn't stop the train. Its checkout is put back as it was, and the train opens `train/adopt-<pkg>-<version>` in a worktree (the repo's own `worktree:create <base> <branch>` when it declares one, so a template-based repo gets its slot's databases, released with its `worktree:destroy`; otherwise a temporary linked worktree; either way with the repo's ignored `.env*` files copied in where missing): the same bump and re-lock, then the repo's `train:adopt` script if its package.json declares one (Foundry's re-records cassettes with `bun run test:live`), all committed, and re-locked onto the new config release so the PR's CI judges it against the candidates. A lane checkout that adopts publishes nothing this run. A consumer that passes against candidates gets the same branch name: its default branch is still on the previous versions until the branch merges. If the adoption's commit is refused (its hooks typecheck), the branch is deleted and the summary says to adopt by hand.
|
|
89
89
|
3. **Promote.** At the end of each run a candidate is blessed (moved into its lane's section) unless something holds it: its lane stopped; a repo has an adoption branch for it that is not yet on its default branch (opened this run, unmerged, or committed but never pushed); or a repo that declares it was not walked to an outcome this run — another lane's checkout, a skipped or failed one, a consumer without a checkout. A later train finds a waiting adoption branch and opens nothing new; once it merges, the repo is on the candidate and the train promotes it. A candidate every dependent already accepts is blessed in the run that published it. An adoption PR closed without merging holds its candidates until its branch is deleted.
|
|
90
90
|
|
|
91
91
|
The summary lists what was blessed, every candidate with what holds it, and each pending adoption branch with its PR when `gh` can find one.
|
package/dist/cli.js
CHANGED
|
@@ -1274,10 +1274,16 @@ if (command === "train") {
|
|
|
1274
1274
|
const waiting = [];
|
|
1275
1275
|
const walked = /* @__PURE__ */ new Set();
|
|
1276
1276
|
const worktrees = [];
|
|
1277
|
+
const removeWorktree = ({ repo, path, tooling }) => {
|
|
1278
|
+
if (tooling) {
|
|
1279
|
+
spawnSync2("bun", ["run", "worktree:destroy", basename(path), "--force"], {
|
|
1280
|
+
cwd: repo,
|
|
1281
|
+
stdio: "inherit"
|
|
1282
|
+
});
|
|
1283
|
+
} else git(repo, "worktree", "remove", "--force", path);
|
|
1284
|
+
};
|
|
1277
1285
|
process.on("exit", () => {
|
|
1278
|
-
for (const
|
|
1279
|
-
git(repo, "worktree", "remove", "--force", path);
|
|
1280
|
-
}
|
|
1286
|
+
for (const entry of worktrees.splice(0)) removeWorktree(entry);
|
|
1281
1287
|
});
|
|
1282
1288
|
const target = () => adoptionTarget(manifest);
|
|
1283
1289
|
const ready = (checkout) => {
|
|
@@ -1393,11 +1399,14 @@ if (command === "train") {
|
|
|
1393
1399
|
return true;
|
|
1394
1400
|
};
|
|
1395
1401
|
const worktree = (checkout, branch) => {
|
|
1396
|
-
const
|
|
1397
|
-
|
|
1398
|
-
|
|
1399
|
-
|
|
1400
|
-
|
|
1402
|
+
const tooling = !!checkout.pkg.scripts?.["worktree:create"];
|
|
1403
|
+
const path = tooling ? join2(checkout.dir, ".worktrees", branch.replaceAll("/", "-")) : join2(mkdtempSync(join2(tmpdir(), "inixiative-train-")), basename(checkout.dir));
|
|
1404
|
+
const created = tooling ? spawnSync2("bun", ["run", "worktree:create", defaultBranch(checkout.dir), branch], {
|
|
1405
|
+
cwd: checkout.dir,
|
|
1406
|
+
stdio: "inherit"
|
|
1407
|
+
}).status === 0 && existsSync2(path) : git(checkout.dir, "worktree", "add", "--quiet", "-b", branch, path, "HEAD").status === 0;
|
|
1408
|
+
if (!created) throw new Abort(`could not create ${branch} in ${checkout.name}`);
|
|
1409
|
+
worktrees.push({ repo: checkout.dir, path, tooling });
|
|
1401
1410
|
const envFiles = git(
|
|
1402
1411
|
checkout.dir,
|
|
1403
1412
|
"ls-files",
|
|
@@ -1421,7 +1430,7 @@ if (command === "train") {
|
|
|
1421
1430
|
(tree) => tree.repo === checkout.dir && currentBranch(tree.path) === branch
|
|
1422
1431
|
);
|
|
1423
1432
|
if (entry) {
|
|
1424
|
-
|
|
1433
|
+
removeWorktree(entry);
|
|
1425
1434
|
worktrees.splice(worktrees.indexOf(entry), 1);
|
|
1426
1435
|
}
|
|
1427
1436
|
git(checkout.dir, "branch", "-D", branch);
|
package/package.json
CHANGED
package/versions.json
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"@types/bun"
|
|
14
14
|
],
|
|
15
15
|
"ecosystem": {
|
|
16
|
-
"@inixiative/config": "0.5.
|
|
16
|
+
"@inixiative/config": "0.5.84",
|
|
17
17
|
"@inixiative/json-rules": "3.5.4",
|
|
18
18
|
"@inixiative/permissions": "0.4.0",
|
|
19
19
|
"@inixiative/transitions": "0.5.0",
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"agentic": {
|
|
26
26
|
"@inixiative/signet": "0.4.0",
|
|
27
27
|
"@inixiative/archive": "0.19.0",
|
|
28
|
-
"@inixiative/agent-session": "0.6.
|
|
28
|
+
"@inixiative/agent-session": "0.6.4",
|
|
29
29
|
"@inixiative/foundry-core": "0.5.1",
|
|
30
30
|
"@inixiative/foundry": "0.5.3",
|
|
31
31
|
"@inixiative/foundry-acp": "0.1.1"
|
|
@@ -50,6 +50,6 @@
|
|
|
50
50
|
}
|
|
51
51
|
},
|
|
52
52
|
"candidates": {
|
|
53
|
-
"@inixiative/agent-session": "0.6.
|
|
53
|
+
"@inixiative/agent-session": "0.6.5"
|
|
54
54
|
}
|
|
55
55
|
}
|