@telora/daemon 0.22.189 → 0.22.208
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/build-info.json +6 -3
- package/dist/backends/index.d.ts.map +1 -1
- package/dist/backends/index.js +2 -0
- package/dist/backends/index.js.map +1 -1
- package/dist/completion/completion-fact-readers.d.ts +35 -0
- package/dist/completion/completion-fact-readers.d.ts.map +1 -0
- package/dist/completion/completion-fact-readers.js +70 -0
- package/dist/completion/completion-fact-readers.js.map +1 -0
- package/dist/completion/event-dep-defaults.d.ts +27 -0
- package/dist/completion/event-dep-defaults.d.ts.map +1 -0
- package/dist/completion/event-dep-defaults.js +30 -0
- package/dist/completion/event-dep-defaults.js.map +1 -0
- package/dist/completion/event-phases.d.ts.map +1 -1
- package/dist/completion/event-phases.js +5 -13
- package/dist/completion/event-phases.js.map +1 -1
- package/dist/completion/event.d.ts +32 -0
- package/dist/completion/event.d.ts.map +1 -1
- package/dist/completion/event.js +31 -25
- package/dist/completion/event.js.map +1 -1
- package/dist/completion/session-hold.d.ts +13 -1
- package/dist/completion/session-hold.d.ts.map +1 -1
- package/dist/completion/session-hold.js +18 -0
- package/dist/completion/session-hold.js.map +1 -1
- package/dist/completion/team-phase.d.ts.map +1 -1
- package/dist/completion/team-phase.js +1 -0
- package/dist/completion/team-phase.js.map +1 -1
- package/dist/completion/unclaimed-migration-notice-phase.d.ts +97 -0
- package/dist/completion/unclaimed-migration-notice-phase.d.ts.map +1 -0
- package/dist/completion/unclaimed-migration-notice-phase.js +270 -0
- package/dist/completion/unclaimed-migration-notice-phase.js.map +1 -0
- package/dist/directive/directive-executor.d.ts.map +1 -1
- package/dist/directive/directive-executor.js +1 -20
- package/dist/directive/directive-executor.js.map +1 -1
- package/dist/focus/focus-executor.d.ts +1 -0
- package/dist/focus/focus-executor.d.ts.map +1 -1
- package/dist/focus/focus-executor.js +18 -17
- package/dist/focus/focus-executor.js.map +1 -1
- package/dist/focus/focus-team-state.js +1 -1
- package/dist/focus/listener-spawn.d.ts.map +1 -1
- package/dist/focus/listener-spawn.js +5 -20
- package/dist/focus/listener-spawn.js.map +1 -1
- package/dist/focus/listener-state.d.ts.map +1 -1
- package/dist/focus/listener-state.js +1 -0
- package/dist/focus/listener-state.js.map +1 -1
- package/dist/focus/listener.d.ts +1 -0
- package/dist/focus/listener.d.ts.map +1 -1
- package/dist/focus/listener.js +9 -0
- package/dist/focus/listener.js.map +1 -1
- package/dist/focus/migration-claim-pass.d.ts +50 -0
- package/dist/focus/migration-claim-pass.d.ts.map +1 -0
- package/dist/focus/migration-claim-pass.js +234 -0
- package/dist/focus/migration-claim-pass.js.map +1 -0
- package/dist/focus/pending-spawn-pass-deps.d.ts.map +1 -1
- package/dist/focus/pending-spawn-pass-deps.js +2 -1
- package/dist/focus/pending-spawn-pass-deps.js.map +1 -1
- package/dist/focus/team-actionable-work.d.ts +21 -0
- package/dist/focus/team-actionable-work.d.ts.map +1 -1
- package/dist/focus/team-actionable-work.js +3 -0
- package/dist/focus/team-actionable-work.js.map +1 -1
- package/dist/git/types.d.ts.map +1 -1
- package/dist/git/types.js +2 -1
- package/dist/git/types.js.map +1 -1
- package/dist/loops/llm-client.d.ts.map +1 -1
- package/dist/loops/llm-client.js +11 -1
- package/dist/loops/llm-client.js.map +1 -1
- package/dist/migrations/migration-claim-lifecycle.d.ts +166 -0
- package/dist/migrations/migration-claim-lifecycle.d.ts.map +1 -0
- package/dist/migrations/migration-claim-lifecycle.js +198 -0
- package/dist/migrations/migration-claim-lifecycle.js.map +1 -0
- package/dist/migrations/migration-held-set.d.ts +171 -0
- package/dist/migrations/migration-held-set.d.ts.map +1 -0
- package/dist/migrations/migration-held-set.js +295 -0
- package/dist/migrations/migration-held-set.js.map +1 -0
- package/dist/migrations/migration-inventory.d.ts +187 -0
- package/dist/migrations/migration-inventory.d.ts.map +1 -0
- package/dist/migrations/migration-inventory.js +253 -0
- package/dist/migrations/migration-inventory.js.map +1 -0
- package/dist/migrations/migration-manifest.d.ts +114 -0
- package/dist/migrations/migration-manifest.d.ts.map +1 -0
- package/dist/migrations/migration-manifest.js +295 -0
- package/dist/migrations/migration-manifest.js.map +1 -0
- package/dist/prompt/team-prompt-base.js +1 -1
- package/dist/prompt-sections/migration-numbering-section.d.ts +58 -0
- package/dist/prompt-sections/migration-numbering-section.d.ts.map +1 -0
- package/dist/prompt-sections/migration-numbering-section.js +70 -0
- package/dist/prompt-sections/migration-numbering-section.js.map +1 -0
- package/dist/prompt-sections/migration-numbering-state.d.ts +30 -0
- package/dist/prompt-sections/migration-numbering-state.d.ts.map +1 -0
- package/dist/prompt-sections/migration-numbering-state.js +24 -0
- package/dist/prompt-sections/migration-numbering-state.js.map +1 -0
- package/dist/prompt-sections/unclaimed-migration-section.d.ts +38 -0
- package/dist/prompt-sections/unclaimed-migration-section.d.ts.map +1 -0
- package/dist/prompt-sections/unclaimed-migration-section.js +57 -0
- package/dist/prompt-sections/unclaimed-migration-section.js.map +1 -0
- package/dist/queries/claim-pass-focuses.d.ts +19 -0
- package/dist/queries/claim-pass-focuses.d.ts.map +1 -0
- package/dist/queries/claim-pass-focuses.js +72 -0
- package/dist/queries/claim-pass-focuses.js.map +1 -0
- package/dist/queries/daemon-connection.d.ts.map +1 -1
- package/dist/queries/daemon-connection.js +1 -0
- package/dist/queries/daemon-connection.js.map +1 -1
- package/dist/queries/focus-discovery.d.ts +25 -2
- package/dist/queries/focus-discovery.d.ts.map +1 -1
- package/dist/queries/focus-discovery.js +16 -9
- package/dist/queries/focus-discovery.js.map +1 -1
- package/dist/queries/focus-unclaimed-migration.d.ts +146 -0
- package/dist/queries/focus-unclaimed-migration.d.ts.map +1 -0
- package/dist/queries/focus-unclaimed-migration.js +266 -0
- package/dist/queries/focus-unclaimed-migration.js.map +1 -0
- package/dist/queries/live-focus-branches.d.ts +32 -0
- package/dist/queries/live-focus-branches.d.ts.map +1 -0
- package/dist/queries/live-focus-branches.js +66 -0
- package/dist/queries/live-focus-branches.js.map +1 -0
- package/dist/queries/migration-claims.d.ts +25 -0
- package/dist/queries/migration-claims.d.ts.map +1 -0
- package/dist/queries/migration-claims.js +79 -0
- package/dist/queries/migration-claims.js.map +1 -0
- package/dist/queries/schemas.d.ts +2 -0
- package/dist/queries/schemas.d.ts.map +1 -1
- package/dist/queries/schemas.js +6 -0
- package/dist/queries/schemas.js.map +1 -1
- package/dist/queries/shared.js +1 -1
- package/dist/session/session-lineage.d.ts.map +1 -1
- package/dist/session/session-lineage.js +3 -0
- package/dist/session/session-lineage.js.map +1 -1
- package/dist/shell/heartbeat-metadata.d.ts +48 -2
- package/dist/shell/heartbeat-metadata.d.ts.map +1 -1
- package/dist/shell/heartbeat-metadata.js +80 -3
- package/dist/shell/heartbeat-metadata.js.map +1 -1
- package/dist/shell/heartbeat.d.ts +13 -0
- package/dist/shell/heartbeat.d.ts.map +1 -1
- package/dist/shell/heartbeat.js +31 -10
- package/dist/shell/heartbeat.js.map +1 -1
- package/dist/shell/mcp-resolution.js +1 -1
- package/dist/shell/mcp-resolution.js.map +1 -1
- package/dist/shell/migration-held-set-publish.d.ts +170 -0
- package/dist/shell/migration-held-set-publish.d.ts.map +1 -0
- package/dist/shell/migration-held-set-publish.js +172 -0
- package/dist/shell/migration-held-set-publish.js.map +1 -0
- package/dist/shell/worker-pidfile.d.ts.map +1 -1
- package/dist/shell/worker-pidfile.js +1 -0
- package/dist/shell/worker-pidfile.js.map +1 -1
- package/dist/spawn/helpers.d.ts.map +1 -1
- package/dist/spawn/helpers.js +1 -0
- package/dist/spawn/helpers.js.map +1 -1
- package/dist/spawn/lead-launch.d.ts.map +1 -1
- package/dist/spawn/lead-launch.js +1 -0
- package/dist/spawn/lead-launch.js.map +1 -1
- package/dist/spawn/lead-process-ownership.d.ts.map +1 -1
- package/dist/spawn/lead-process-ownership.js +1 -0
- package/dist/spawn/lead-process-ownership.js.map +1 -1
- package/dist/spawn/process-group-kill.d.ts.map +1 -1
- package/dist/spawn/process-group-kill.js +1 -0
- package/dist/spawn/process-group-kill.js.map +1 -1
- package/dist/spawn/process-spawn.d.ts +18 -1
- package/dist/spawn/process-spawn.d.ts.map +1 -1
- package/dist/spawn/process-spawn.js +11 -6
- package/dist/spawn/process-spawn.js.map +1 -1
- package/dist/spawn/prompt-assembly.d.ts +115 -18
- package/dist/spawn/prompt-assembly.d.ts.map +1 -1
- package/dist/spawn/prompt-assembly.js +121 -2
- package/dist/spawn/prompt-assembly.js.map +1 -1
- package/dist/spawn/spawn-and-acknowledge.d.ts +61 -0
- package/dist/spawn/spawn-and-acknowledge.d.ts.map +1 -0
- package/dist/spawn/spawn-and-acknowledge.js +117 -0
- package/dist/spawn/spawn-and-acknowledge.js.map +1 -0
- package/dist/spawn/spawn-cooldown.js +1 -1
- package/dist/spawn/spawn-decision.d.ts +10 -10
- package/dist/spawn/spawn-decision.d.ts.map +1 -1
- package/dist/spawn/spawn-decision.js +33 -5
- package/dist/spawn/spawn-decision.js.map +1 -1
- package/dist/templates/claude-md.d.ts +1 -1
- package/dist/templates/claude-md.d.ts.map +1 -1
- package/dist/templates/claude-md.js +24 -0
- package/dist/templates/claude-md.js.map +1 -1
- package/dist/testing/fixtures/index.js +1 -1
- package/dist/testing/fixtures/migration-namespace-repo.d.ts +63 -0
- package/dist/testing/fixtures/migration-namespace-repo.d.ts.map +1 -0
- package/dist/testing/fixtures/migration-namespace-repo.js +164 -0
- package/dist/testing/fixtures/migration-namespace-repo.js.map +1 -0
- package/dist/testing/fixtures/stubborn-lead-process.d.ts.map +1 -1
- package/dist/testing/fixtures/stubborn-lead-process.js +1 -0
- package/dist/testing/fixtures/stubborn-lead-process.js.map +1 -1
- package/dist/types/index.js +1 -1
- package/dist/verify/no-own-delta-verdict.d.ts +16 -2
- package/dist/verify/no-own-delta-verdict.d.ts.map +1 -1
- package/dist/verify/no-own-delta-verdict.js +18 -2
- package/dist/verify/no-own-delta-verdict.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/** One migration a branch holds: its ordinal and its tag. */
|
|
2
|
+
export interface FixtureMigration {
|
|
3
|
+
ordinal: string;
|
|
4
|
+
tag: string;
|
|
5
|
+
/**
|
|
6
|
+
* Register the migration in the journal but write NO file.
|
|
7
|
+
*
|
|
8
|
+
* A real state on a hand-registered product -- a file mid-rename, removed
|
|
9
|
+
* with its entry left, or a journal edited ahead of the file -- and the one
|
|
10
|
+
* that shows whether a held set built from filenames alone reports a
|
|
11
|
+
* registered number as free. Ignored by a layout with no journal.
|
|
12
|
+
*/
|
|
13
|
+
journalOnly?: boolean;
|
|
14
|
+
}
|
|
15
|
+
/** A branch cut from the shared merge base, and what it adds on top of it. */
|
|
16
|
+
export interface FixtureBranch {
|
|
17
|
+
name: string;
|
|
18
|
+
migrations: readonly FixtureMigration[];
|
|
19
|
+
}
|
|
20
|
+
/** Which declared layout the fixture repo ships. */
|
|
21
|
+
export type FixtureLayout = 'timestamp' | 'sequential';
|
|
22
|
+
export interface MigrationRepoOptions {
|
|
23
|
+
/** Which declared layout the repo ships. Default: 'timestamp'. */
|
|
24
|
+
layout?: FixtureLayout;
|
|
25
|
+
/** Migrations present at the merge base, shared by every branch. Default: one. */
|
|
26
|
+
base?: readonly FixtureMigration[];
|
|
27
|
+
/** Branches cut from the base, created in order. */
|
|
28
|
+
branches?: readonly FixtureBranch[];
|
|
29
|
+
/** Omit the repo's telora.migrations.json entirely (the 'undeclared' state). */
|
|
30
|
+
undeclared?: boolean;
|
|
31
|
+
/** Write a declaration that cannot be parsed (the 'declarationUnreadable' state). */
|
|
32
|
+
malformedDeclaration?: boolean;
|
|
33
|
+
}
|
|
34
|
+
export interface MigrationFixtureRepo {
|
|
35
|
+
/** Absolute path of the repository. */
|
|
36
|
+
repoPath: string;
|
|
37
|
+
/** The branch the fixture leaves checked out (the merge base). */
|
|
38
|
+
baseBranch: string;
|
|
39
|
+
/**
|
|
40
|
+
* Add and commit a migration on `branch` AFTER the fixture was built.
|
|
41
|
+
*
|
|
42
|
+
* For the case the allocator's snapshot cannot see: a branch that moves
|
|
43
|
+
* between a published reading and a claim. The fixture returns to the base
|
|
44
|
+
* branch afterwards, so the working tree is never one of the branches under
|
|
45
|
+
* test.
|
|
46
|
+
*/
|
|
47
|
+
advanceBranch(branch: string, migration: FixtureMigration): void;
|
|
48
|
+
/** Delete the temp directory. */
|
|
49
|
+
cleanup(): void;
|
|
50
|
+
}
|
|
51
|
+
/** The merge base's branch name. Every other branch is cut from it. */
|
|
52
|
+
export declare const BASE_BRANCH = "base";
|
|
53
|
+
/**
|
|
54
|
+
* Build a repository whose branches all diverge from ONE merge base, each
|
|
55
|
+
* adding the migrations it holds.
|
|
56
|
+
*
|
|
57
|
+
* Every branch is cut from {@link BASE_BRANCH}, so two of them holding the same
|
|
58
|
+
* ordinal is exactly the 2026-09-22 situation: neither branch's history is
|
|
59
|
+
* wrong, only their combination -- and the fixture leaves the base checked out,
|
|
60
|
+
* so the branches under test are never the working tree.
|
|
61
|
+
*/
|
|
62
|
+
export declare function makeMigrationFixtureRepo(options?: MigrationRepoOptions): MigrationFixtureRepo;
|
|
63
|
+
//# sourceMappingURL=migration-namespace-repo.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migration-namespace-repo.d.ts","sourceRoot":"","sources":["../../../src/testing/fixtures/migration-namespace-repo.ts"],"names":[],"mappings":"AA8CA,6DAA6D;AAC7D,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,8EAA8E;AAC9E,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,SAAS,gBAAgB,EAAE,CAAC;CACzC;AAED,oDAAoD;AACpD,MAAM,MAAM,aAAa,GAAG,WAAW,GAAG,YAAY,CAAC;AAEvD,MAAM,WAAW,oBAAoB;IACnC,kEAAkE;IAClE,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,kFAAkF;IAClF,IAAI,CAAC,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACnC,oDAAoD;IACpD,QAAQ,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;IACpC,gFAAgF;IAChF,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,qFAAqF;IACrF,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAED,MAAM,WAAW,oBAAoB;IACnC,uCAAuC;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,kEAAkE;IAClE,UAAU,EAAE,MAAM,CAAC;IACnB;;;;;;;OAOG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACjE,iCAAiC;IACjC,OAAO,IAAI,IAAI,CAAC;CACjB;AAiBD,uEAAuE;AACvE,eAAO,MAAM,WAAW,SAAS,CAAC;AAmElC;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,GAAE,oBAAyB,GACjC,oBAAoB,CAgDtB"}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
// PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
|
|
2
|
+
// Pinned by: packages/daemon/src/focus/migration-claim-poll-wiring.test.ts,
|
|
3
|
+
// packages/daemon/src/migrations/claim-end-to-end.test.ts,
|
|
4
|
+
// packages/daemon/src/migrations/claim-production-wiring.test.ts,
|
|
5
|
+
// packages/daemon/src/migrations/concurrent-claim-regression.test.ts,
|
|
6
|
+
// packages/daemon/src/migrations/migration-held-set.test.ts,
|
|
7
|
+
// packages/daemon/src/migrations/migration-inventory.test.ts,
|
|
8
|
+
// packages/daemon/src/shell/heartbeat-migration-held-set.test.ts
|
|
9
|
+
// PINNED-BY-END
|
|
10
|
+
/**
|
|
11
|
+
* A REAL git repository whose branches each hold migrations, for exercising the
|
|
12
|
+
* migration-namespace reader against refs that are never checked out.
|
|
13
|
+
*
|
|
14
|
+
* WHY A REAL REPO AND NOT A STUB
|
|
15
|
+
* ------------------------------
|
|
16
|
+
* The reader's whole claim is that it can answer "what does this branch hold?"
|
|
17
|
+
* WITHOUT a checkout -- by reading the object database. A stub that returned an
|
|
18
|
+
* inventory would pin none of that: it could not show that a branch left
|
|
19
|
+
* un-checked-out is still askable, which is the one property the allocator
|
|
20
|
+
* depends on (the daemon never checks out a sibling focus's branch).
|
|
21
|
+
*
|
|
22
|
+
* It also lets the tests show the shape of the defect: two migrations at one
|
|
23
|
+
* number live in DIFFERENTLY NAMED files, so both survive a merge and git
|
|
24
|
+
* reports no conflict. That is why a number has to be claimed before the file
|
|
25
|
+
* exists -- there is nothing for git to catch afterwards.
|
|
26
|
+
*
|
|
27
|
+
* BOTH LIVE LAYOUTS are buildable, because a mechanism that only served
|
|
28
|
+
* generated migrations would serve one product and not the other:
|
|
29
|
+
* - `timestamp`: `supabase/migrations/<14 digits>_<tag>.sql`, no journal
|
|
30
|
+
* (this repo).
|
|
31
|
+
* - `sequential`: `lib/db/migrations/<4 digits>_<tag>.sql` plus a
|
|
32
|
+
* hand-maintained `meta/_journal.json` registering each migration by `idx`
|
|
33
|
+
* and `tag` (Tinker Tailor, where `db:generate` is unusable, so both the
|
|
34
|
+
* file and its journal entry are written by hand -- as they are here).
|
|
35
|
+
*
|
|
36
|
+
* @module testing/fixtures/migration-namespace-repo
|
|
37
|
+
*/
|
|
38
|
+
import { mkdirSync, mkdtempSync, readFileSync, rmSync, writeFileSync } from 'node:fs';
|
|
39
|
+
import { join } from 'node:path';
|
|
40
|
+
import { tmpdir } from 'node:os';
|
|
41
|
+
import { runGitSync } from '../../git/types.js';
|
|
42
|
+
import { MIGRATION_MANIFEST_FILENAME } from '../../migrations/migration-manifest.js';
|
|
43
|
+
const LAYOUTS = {
|
|
44
|
+
timestamp: {
|
|
45
|
+
dir: 'supabase/migrations',
|
|
46
|
+
filePattern: '^(?<ordinal>\\d{14})_(?<tag>.+)\\.sql$',
|
|
47
|
+
scheme: 'timestamp',
|
|
48
|
+
journal: undefined,
|
|
49
|
+
},
|
|
50
|
+
sequential: {
|
|
51
|
+
dir: 'lib/db/migrations',
|
|
52
|
+
filePattern: '^(?<ordinal>\\d{4})_(?<tag>.+)\\.sql$',
|
|
53
|
+
scheme: 'sequential',
|
|
54
|
+
journal: 'lib/db/migrations/meta/_journal.json',
|
|
55
|
+
},
|
|
56
|
+
};
|
|
57
|
+
/** The merge base's branch name. Every other branch is cut from it. */
|
|
58
|
+
export const BASE_BRANCH = 'base';
|
|
59
|
+
function git(repoPath, args) {
|
|
60
|
+
const result = runGitSync(args, repoPath);
|
|
61
|
+
if (!result.success) {
|
|
62
|
+
throw new Error(`fixture git ${args.join(' ')} failed: ${result.error || result.output}`);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
/** Write a migration file, and register it in the journal when the layout has one. */
|
|
66
|
+
function addMigration(repoPath, layout, migration) {
|
|
67
|
+
const spec = LAYOUTS[layout];
|
|
68
|
+
mkdirSync(join(repoPath, spec.dir), { recursive: true });
|
|
69
|
+
if (migration.journalOnly !== true) {
|
|
70
|
+
writeFileSync(join(repoPath, spec.dir, `${migration.ordinal}_${migration.tag}.sql`), `-- ${migration.tag}\nSELECT 1;\n`);
|
|
71
|
+
}
|
|
72
|
+
if (spec.journal === undefined)
|
|
73
|
+
return;
|
|
74
|
+
const journalPath = join(repoPath, spec.journal);
|
|
75
|
+
mkdirSync(join(repoPath, spec.journal.slice(0, spec.journal.lastIndexOf('/'))), {
|
|
76
|
+
recursive: true,
|
|
77
|
+
});
|
|
78
|
+
let document;
|
|
79
|
+
try {
|
|
80
|
+
document = JSON.parse(readFileSync(journalPath, 'utf-8'));
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
document = { entries: [] };
|
|
84
|
+
}
|
|
85
|
+
// Hand-registered, exactly as the product that cannot run db:generate does it:
|
|
86
|
+
// the idx IS the filename's ordinal.
|
|
87
|
+
document.entries.push({
|
|
88
|
+
idx: Number(migration.ordinal),
|
|
89
|
+
tag: `${migration.ordinal}_${migration.tag}`,
|
|
90
|
+
});
|
|
91
|
+
writeFileSync(journalPath, `${JSON.stringify(document, null, 2)}\n`);
|
|
92
|
+
}
|
|
93
|
+
/** The declaration text this repo ships, or nothing when the fixture omits it. */
|
|
94
|
+
function writeDeclaration(repoPath, layout, options) {
|
|
95
|
+
const spec = LAYOUTS[layout];
|
|
96
|
+
if (options.malformedDeclaration === true) {
|
|
97
|
+
writeFileSync(join(repoPath, MIGRATION_MANIFEST_FILENAME), '{ "dir": ');
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
if (options.undeclared === true)
|
|
101
|
+
return;
|
|
102
|
+
writeFileSync(join(repoPath, MIGRATION_MANIFEST_FILENAME), `${JSON.stringify({
|
|
103
|
+
dir: spec.dir,
|
|
104
|
+
filePattern: spec.filePattern,
|
|
105
|
+
scheme: spec.scheme,
|
|
106
|
+
...(spec.journal !== undefined ? { journal: { path: spec.journal } } : {}),
|
|
107
|
+
}, null, 2)}\n`);
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Build a repository whose branches all diverge from ONE merge base, each
|
|
111
|
+
* adding the migrations it holds.
|
|
112
|
+
*
|
|
113
|
+
* Every branch is cut from {@link BASE_BRANCH}, so two of them holding the same
|
|
114
|
+
* ordinal is exactly the 2026-09-22 situation: neither branch's history is
|
|
115
|
+
* wrong, only their combination -- and the fixture leaves the base checked out,
|
|
116
|
+
* so the branches under test are never the working tree.
|
|
117
|
+
*/
|
|
118
|
+
export function makeMigrationFixtureRepo(options = {}) {
|
|
119
|
+
const layout = options.layout ?? 'timestamp';
|
|
120
|
+
const base = options.base ?? [
|
|
121
|
+
{ ordinal: layout === 'sequential' ? '0001' : '20260101000000', tag: 'genesis_schema' },
|
|
122
|
+
];
|
|
123
|
+
const repoPath = mkdtempSync(join(tmpdir(), 'telora-migration-namespace-'));
|
|
124
|
+
git(repoPath, ['init', '--quiet']);
|
|
125
|
+
git(repoPath, ['config', 'user.email', 'fixture@telora.test']);
|
|
126
|
+
git(repoPath, ['config', 'user.name', 'Telora Fixture']);
|
|
127
|
+
git(repoPath, ['config', 'commit.gpgsign', 'false']);
|
|
128
|
+
git(repoPath, ['config', 'core.hooksPath', join(repoPath, '.no-hooks')]);
|
|
129
|
+
writeDeclaration(repoPath, layout, options);
|
|
130
|
+
for (const migration of base)
|
|
131
|
+
addMigration(repoPath, layout, migration);
|
|
132
|
+
git(repoPath, ['add', '-A']);
|
|
133
|
+
git(repoPath, ['commit', '--quiet', '-m', 'the merge base every branch is cut from']);
|
|
134
|
+
git(repoPath, ['branch', '-M', BASE_BRANCH]);
|
|
135
|
+
for (const branch of options.branches ?? []) {
|
|
136
|
+
git(repoPath, ['checkout', '--quiet', '-b', branch.name, BASE_BRANCH]);
|
|
137
|
+
for (const migration of branch.migrations) {
|
|
138
|
+
addMigration(repoPath, layout, migration);
|
|
139
|
+
git(repoPath, ['add', '-A']);
|
|
140
|
+
git(repoPath, [
|
|
141
|
+
'commit',
|
|
142
|
+
'--quiet',
|
|
143
|
+
'-m',
|
|
144
|
+
`add migration ${migration.ordinal}_${migration.tag}`,
|
|
145
|
+
]);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
git(repoPath, ['checkout', '--quiet', BASE_BRANCH]);
|
|
149
|
+
return {
|
|
150
|
+
repoPath,
|
|
151
|
+
baseBranch: BASE_BRANCH,
|
|
152
|
+
advanceBranch(branch, migration) {
|
|
153
|
+
git(repoPath, ['checkout', '--quiet', branch]);
|
|
154
|
+
addMigration(repoPath, layout, migration);
|
|
155
|
+
git(repoPath, ['add', '-A']);
|
|
156
|
+
git(repoPath, [
|
|
157
|
+
'commit', '--quiet', '-m', `add migration ${migration.ordinal}_${migration.tag}`,
|
|
158
|
+
]);
|
|
159
|
+
git(repoPath, ['checkout', '--quiet', BASE_BRANCH]);
|
|
160
|
+
},
|
|
161
|
+
cleanup: () => rmSync(repoPath, { recursive: true, force: true }),
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
//# sourceMappingURL=migration-namespace-repo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migration-namespace-repo.js","sourceRoot":"","sources":["../../../src/testing/fixtures/migration-namespace-repo.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,4EAA4E;AAC5E,6DAA6D;AAC7D,oEAAoE;AACpE,wEAAwE;AACxE,+DAA+D;AAC/D,gEAAgE;AAChE,mEAAmE;AACnE,gBAAgB;AAEhB;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACtF,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,2BAA2B,EAAE,MAAM,wCAAwC,CAAC;AAyDrF,MAAM,OAAO,GAAG;IACd,SAAS,EAAE;QACT,GAAG,EAAE,qBAAqB;QAC1B,WAAW,EAAE,wCAAwC;QACrD,MAAM,EAAE,WAAW;QACnB,OAAO,EAAE,SAAS;KACnB;IACD,UAAU,EAAE;QACV,GAAG,EAAE,mBAAmB;QACxB,WAAW,EAAE,uCAAuC;QACpD,MAAM,EAAE,YAAY;QACpB,OAAO,EAAE,sCAAsC;KAChD;CACO,CAAC;AAEX,uEAAuE;AACvE,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC;AAElC,SAAS,GAAG,CAAC,QAAgB,EAAE,IAAc;IAC3C,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC1C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5F,CAAC;AACH,CAAC;AAED,sFAAsF;AACtF,SAAS,YAAY,CACnB,QAAgB,EAChB,MAAqB,EACrB,SAA2B;IAE3B,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7B,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzD,IAAI,SAAS,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;QACnC,aAAa,CACX,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,OAAO,IAAI,SAAS,CAAC,GAAG,MAAM,CAAC,EACrE,MAAM,SAAS,CAAC,GAAG,eAAe,CACnC,CAAC;IACJ,CAAC;IACD,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS;QAAE,OAAO;IAEvC,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACjD,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;QAC9E,SAAS,EAAE,IAAI;KAChB,CAAC,CAAC;IACH,IAAI,QAA0D,CAAC;IAC/D,IAAI,CAAC;QACH,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAoB,CAAC;IAC/E,CAAC;IAAC,MAAM,CAAC;QACP,QAAQ,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IAC7B,CAAC;IACD,+EAA+E;IAC/E,qCAAqC;IACrC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC;QACpB,GAAG,EAAE,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC;QAC9B,GAAG,EAAE,GAAG,SAAS,CAAC,OAAO,IAAI,SAAS,CAAC,GAAG,EAAE;KAC7C,CAAC,CAAC;IACH,aAAa,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACvE,CAAC;AAED,kFAAkF;AAClF,SAAS,gBAAgB,CAAC,QAAgB,EAAE,MAAqB,EAAE,OAA6B;IAC9F,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7B,IAAI,OAAO,CAAC,oBAAoB,KAAK,IAAI,EAAE,CAAC;QAC1C,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,2BAA2B,CAAC,EAAE,WAAW,CAAC,CAAC;QACxE,OAAO;IACT,CAAC;IACD,IAAI,OAAO,CAAC,UAAU,KAAK,IAAI;QAAE,OAAO;IACxC,aAAa,CACX,IAAI,CAAC,QAAQ,EAAE,2BAA2B,CAAC,EAC3C,GAAG,IAAI,CAAC,SAAS,CACf;QACE,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,GAAG,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC3E,EACD,IAAI,EACJ,CAAC,CACF,IAAI,CACN,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,wBAAwB,CACtC,UAAgC,EAAE;IAElC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,WAAW,CAAC;IAC7C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI;QAC3B,EAAE,OAAO,EAAE,MAAM,KAAK,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,gBAAgB,EAAE,GAAG,EAAE,gBAAgB,EAAE;KACxF,CAAC;IAEF,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,6BAA6B,CAAC,CAAC,CAAC;IAC5E,GAAG,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;IACnC,GAAG,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,YAAY,EAAE,qBAAqB,CAAC,CAAC,CAAC;IAC/D,GAAG,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,gBAAgB,CAAC,CAAC,CAAC;IACzD,GAAG,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,gBAAgB,EAAE,OAAO,CAAC,CAAC,CAAC;IACrD,GAAG,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,gBAAgB,EAAE,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IAEzE,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5C,KAAK,MAAM,SAAS,IAAI,IAAI;QAAE,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;IACxE,GAAG,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;IAC7B,GAAG,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,yCAAyC,CAAC,CAAC,CAAC;IACtF,GAAG,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC;IAE7C,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;QAC5C,GAAG,CAAC,QAAQ,EAAE,CAAC,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC;QACvE,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YAC1C,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;YAC1C,GAAG,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;YAC7B,GAAG,CAAC,QAAQ,EAAE;gBACZ,QAAQ;gBACR,SAAS;gBACT,IAAI;gBACJ,iBAAiB,SAAS,CAAC,OAAO,IAAI,SAAS,CAAC,GAAG,EAAE;aACtD,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,GAAG,CAAC,QAAQ,EAAE,CAAC,UAAU,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;IAEpD,OAAO;QACL,QAAQ;QACR,UAAU,EAAE,WAAW;QACvB,aAAa,CAAC,MAAM,EAAE,SAAS;YAC7B,GAAG,CAAC,QAAQ,EAAE,CAAC,UAAU,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;YAC/C,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;YAC1C,GAAG,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;YAC7B,GAAG,CAAC,QAAQ,EAAE;gBACZ,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,iBAAiB,SAAS,CAAC,OAAO,IAAI,SAAS,CAAC,GAAG,EAAE;aACjF,CAAC,CAAC;YACH,GAAG,CAAC,QAAQ,EAAE,CAAC,UAAU,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;QACtD,CAAC;QACD,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;KAClE,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stubborn-lead-process.d.ts","sourceRoot":"","sources":["../../../src/testing/fixtures/stubborn-lead-process.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"stubborn-lead-process.d.ts","sourceRoot":"","sources":["../../../src/testing/fixtures/stubborn-lead-process.ts"],"names":[],"mappings":"AAYA;;;;;;;;GAQG;AAEH,OAAO,EAAS,KAAK,8BAA8B,EAAE,MAAM,oBAAoB,CAAC;AAkBhF,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,8BAA8B,CAAC;IACrC,0DAA0D;IAC1D,OAAO,EAAE,MAAM,CAAC;IAChB,uDAAuD;IACvD,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,qFAAqF;AACrF,wBAAsB,iBAAiB,CAAC,SAAS,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,CAqBjF;AAED,yEAAyE;AACzE,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,CAI9D"}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
// packages/daemon/src/spawn/lead-launch.test.ts,
|
|
6
6
|
// packages/daemon/src/spawn/one-shot-process-ownership.test.ts,
|
|
7
7
|
// packages/daemon/src/spawn/process-group-kill.test.ts,
|
|
8
|
+
// packages/daemon/src/spawn/spawn-and-acknowledge.test.ts,
|
|
8
9
|
// packages/daemon/src/spawn/spawn-team-process-ownership.test.ts,
|
|
9
10
|
// packages/daemon/src/spawn/untracked-lead-sweep.test.ts
|
|
10
11
|
// PINNED-BY-END
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stubborn-lead-process.js","sourceRoot":"","sources":["../../../src/testing/fixtures/stubborn-lead-process.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,uFAAuF;AACvF,6DAA6D;AAC7D,iEAAiE;AACjE,mDAAmD;AACnD,kEAAkE;AAClE,0DAA0D;AAC1D,oEAAoE;AACpE,2DAA2D;AAC3D,gBAAgB;AAEhB;;;;;;;;GAQG;AAEH,OAAO,EAAE,KAAK,EAAuC,MAAM,oBAAoB,CAAC;AAEhF,MAAM,iBAAiB,GAAG;;;;CAIzB,CAAC;AAEF,MAAM,WAAW,GAAG;;;;;4CAKwB,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC;;;CAG5E,CAAC;AAUF,qFAAqF;AACrF,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,SAAS,GAAG,MAAM;IACxD,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE;QACxD,QAAQ,EAAE,IAAI;QACd,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;KAChC,CAAmC,CAAC;IACrC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC;IACzB,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IAChF,MAAM,aAAa,GAAG,MAAM,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAClE,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;QACvG,IAAI,QAAQ,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;YACvC,QAAQ,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC7B,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACrC,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBAClD,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpB,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;YACxB,CAAC;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IACH,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC;AAC1C,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,qBAAqB,CAAC,IAAkB;IACtD,KAAK,MAAM,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACvE,IAAI,CAAC;YAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC;IACvE,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"stubborn-lead-process.js","sourceRoot":"","sources":["../../../src/testing/fixtures/stubborn-lead-process.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,uFAAuF;AACvF,6DAA6D;AAC7D,iEAAiE;AACjE,mDAAmD;AACnD,kEAAkE;AAClE,0DAA0D;AAC1D,6DAA6D;AAC7D,oEAAoE;AACpE,2DAA2D;AAC3D,gBAAgB;AAEhB;;;;;;;;GAQG;AAEH,OAAO,EAAE,KAAK,EAAuC,MAAM,oBAAoB,CAAC;AAEhF,MAAM,iBAAiB,GAAG;;;;CAIzB,CAAC;AAEF,MAAM,WAAW,GAAG;;;;;4CAKwB,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC;;;CAG5E,CAAC;AAUF,qFAAqF;AACrF,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,SAAS,GAAG,MAAM;IACxD,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE;QACxD,QAAQ,EAAE,IAAI;QACd,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;KAChC,CAAmC,CAAC;IACrC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC;IACzB,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IAChF,MAAM,aAAa,GAAG,MAAM,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAClE,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;QACvG,IAAI,QAAQ,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;YACvC,QAAQ,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC7B,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACrC,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBAClD,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpB,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;YACxB,CAAC;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IACH,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC;AAC1C,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,qBAAqB,CAAC,IAAkB;IACtD,KAAK,MAAM,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACvE,IAAI,CAAC;YAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC;IACvE,CAAC;AACH,CAAC"}
|
package/dist/types/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
|
|
2
|
-
// Pinned by:
|
|
2
|
+
// Pinned by: 224 tests -- run: npm run gen:pinned-by -- --list packages/daemon/src/types/index.ts
|
|
3
3
|
// PINNED-BY-END
|
|
4
4
|
/**
|
|
5
5
|
* Domain-specific type re-exports.
|
|
@@ -12,9 +12,23 @@
|
|
|
12
12
|
* it exactly as on any recorded verdict -- its state follows from what its own
|
|
13
13
|
* commits earned, and it is never stranded waiting on a run that must not happen.
|
|
14
14
|
*
|
|
15
|
+
* Only a PASSING verdict is carried, and the asymmetry is the point. A pass is
|
|
16
|
+
* safe to carry: the focus added nothing, so it cannot have broken anything of
|
|
17
|
+
* its own. A failure is not, because the run that recorded it judged the whole
|
|
18
|
+
* tip -- every foreign commit since the focus's own work included -- so the
|
|
19
|
+
* failure may be a sibling's, and the very foreign commits being carried over
|
|
20
|
+
* may already have FIXED it. Carrying it anyway leaves no path back to green:
|
|
21
|
+
* each later foreign-only tip carries the same stale failure and no run is ever
|
|
22
|
+
* dispatched. Measured on focus 406cfd99, 2026-09-23/24: a run at 2f322c040
|
|
23
|
+
* failed on one foreign test; ea29a7949 -- the sibling commit that FIXES that
|
|
24
|
+
* test -- carried the failure, and e2c2d8985 carried it again, while the stage
|
|
25
|
+
* was green (1578 passed, 0 failed) at both.
|
|
26
|
+
*
|
|
15
27
|
* Anything short of proof -- an own or unattributed commit since the judged
|
|
16
|
-
* ancestor,
|
|
17
|
-
* carries nothing, and the dispatch runs the
|
|
28
|
+
* ancestor, a judged ancestor that did not pass, no judged ancestor within the
|
|
29
|
+
* search depth, an unreadable read -- carries nothing, and the dispatch runs the
|
|
30
|
+
* gate as before. That is the same posture git/focus-own-delta.ts takes on a read
|
|
31
|
+
* it cannot make: fail toward judging, never toward asserting a state unproven.
|
|
18
32
|
*
|
|
19
33
|
* @module verify/no-own-delta-verdict
|
|
20
34
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"no-own-delta-verdict.d.ts","sourceRoot":"","sources":["../../src/verify/no-own-delta-verdict.ts"],"names":[],"mappings":"AAKA
|
|
1
|
+
{"version":3,"file":"no-own-delta-verdict.d.ts","sourceRoot":"","sources":["../../src/verify/no-own-delta-verdict.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAA6C,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtG,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAExG;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,MAAwB,CAAC;AAElE,oDAAoD;AACpD,MAAM,WAAW,kBAAkB;IACjC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,6DAA6D;IAC7D,mBAAmB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACxD,qEAAqE;IACrE,oBAAoB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAAC;IACtE,iBAAiB,EAAE,mBAAmB,CAAC;IACvC,+EAA+E;IAC/E,aAAa,CAAC,EAAE,cAAc,CAAC;IAC/B,sBAAsB,CAAC,EAAE,OAAO,sBAAsB,CAAC;CACxD;AAED,uEAAuE;AACvE,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,aAAa,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,iBAAiB,EACvB,IAAI,EAAE,kBAAkB,GACvB,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAgChC"}
|
|
@@ -16,9 +16,23 @@
|
|
|
16
16
|
* it exactly as on any recorded verdict -- its state follows from what its own
|
|
17
17
|
* commits earned, and it is never stranded waiting on a run that must not happen.
|
|
18
18
|
*
|
|
19
|
+
* Only a PASSING verdict is carried, and the asymmetry is the point. A pass is
|
|
20
|
+
* safe to carry: the focus added nothing, so it cannot have broken anything of
|
|
21
|
+
* its own. A failure is not, because the run that recorded it judged the whole
|
|
22
|
+
* tip -- every foreign commit since the focus's own work included -- so the
|
|
23
|
+
* failure may be a sibling's, and the very foreign commits being carried over
|
|
24
|
+
* may already have FIXED it. Carrying it anyway leaves no path back to green:
|
|
25
|
+
* each later foreign-only tip carries the same stale failure and no run is ever
|
|
26
|
+
* dispatched. Measured on focus 406cfd99, 2026-09-23/24: a run at 2f322c040
|
|
27
|
+
* failed on one foreign test; ea29a7949 -- the sibling commit that FIXES that
|
|
28
|
+
* test -- carried the failure, and e2c2d8985 carried it again, while the stage
|
|
29
|
+
* was green (1578 passed, 0 failed) at both.
|
|
30
|
+
*
|
|
19
31
|
* Anything short of proof -- an own or unattributed commit since the judged
|
|
20
|
-
* ancestor,
|
|
21
|
-
* carries nothing, and the dispatch runs the
|
|
32
|
+
* ancestor, a judged ancestor that did not pass, no judged ancestor within the
|
|
33
|
+
* search depth, an unreadable read -- carries nothing, and the dispatch runs the
|
|
34
|
+
* gate as before. That is the same posture git/focus-own-delta.ts takes on a read
|
|
35
|
+
* it cannot make: fail toward judging, never toward asserting a state unproven.
|
|
22
36
|
*
|
|
23
37
|
* @module verify/no-own-delta-verdict
|
|
24
38
|
*/
|
|
@@ -46,6 +60,8 @@ export async function resolveCarriedVerdict(productId, focusId, head, gate, deps
|
|
|
46
60
|
if (!found)
|
|
47
61
|
return null;
|
|
48
62
|
const { sha: judged, verdict: recorded } = found;
|
|
63
|
+
if (recorded.outcome !== 'passed')
|
|
64
|
+
return null;
|
|
49
65
|
let ids;
|
|
50
66
|
try {
|
|
51
67
|
ids = await deps.listFocusDeliveryIds(focusId);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"no-own-delta-verdict.js","sourceRoot":"","sources":["../../src/verify/no-own-delta-verdict.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,8FAA8F;AAC9F,mEAAmE;AACnE,gBAAgB;AAEhB
|
|
1
|
+
{"version":3,"file":"no-own-delta-verdict.js","sourceRoot":"","sources":["../../src/verify/no-own-delta-verdict.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,8FAA8F;AAC9F,mEAAmE;AACnE,gBAAgB;AAEhB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAuB,MAAM,sBAAsB,CAAC;AAGtG;;;;GAIG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,qBAAqB,CAAC;AAqBlE;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,SAAiB,EACjB,OAAe,EACf,IAAY,EACZ,IAAuB,EACvB,IAAwB;IAExB,MAAM,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;IACvD,IAAI,CAAC,YAAY;QAAE,OAAO,IAAI,CAAC;IAC/B,MAAM,KAAK,GAAG,kBAAkB,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE;QAC/D,YAAY;QACZ,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;QACzC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACrE,CAAC,CAAC;IACH,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IACjD,IAAI,QAAQ,CAAC,OAAO,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC/C,IAAI,GAAsB,CAAC;IAC3B,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;IACjD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,WAAW,GAAG,CAAC,IAAI,CAAC,sBAAsB,IAAI,sBAAsB,CAAC,CACzE,YAAY,EAAE,IAAI,CAAC,iBAAiB,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC,GAAG,CAAC,CACjE,CAAC;IACF,IAAI,CAAC,WAAW;QAAE,OAAO,IAAI,CAAC;IAC9B,MAAM,UAAU,GAAG,gBAAgB,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,iEAAiE;UAClH,kDAAkD,CAAC;IACvD,OAAO;QACL,WAAW,EAAE,MAAM;QACnB,OAAO,EAAE;YACP,GAAG,QAAQ;YACX,GAAG,EAAE,IAAI;YACT,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACpC,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,UAAU,KAAK,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,UAAU;SACpF;KACF,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@telora/daemon",
|
|
3
|
-
"version": "0.22.
|
|
3
|
+
"version": "0.22.208",
|
|
4
4
|
"description": "Agent orchestration daemon for Telora - spawns and manages Claude Code instances",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"//testRunner": "Uses Node.js built-in test runner (node:test) via tsx for TypeScript support. The root package uses Vitest; this is a deliberate choice for the daemon package to avoid framework dependencies. Test files live beside the modules they exercise (owner-directory layout); the runner discovers them recursively.",
|
|
39
39
|
"dependencies": {
|
|
40
40
|
"@telora/daemon-core": "^0.2.99",
|
|
41
|
-
"@telora/mcp-products": "^0.22.
|
|
41
|
+
"@telora/mcp-products": "^0.22.165",
|
|
42
42
|
"commander": "^14.0.3",
|
|
43
43
|
"yaml": "^2.4.0",
|
|
44
44
|
"zod": "^4.3.6"
|