@deftai/directive-runtime 0.126.0-beta.1 → 0.126.0-beta.2
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/contracts/human-origin-authz.md +14 -8
- package/dist/coverage-hotspots.d.ts +3 -0
- package/dist/coverage-hotspots.js +42 -2
- package/dist/occupancy-release.d.ts +5 -0
- package/dist/occupancy-release.js +11 -3
- package/dist/policy.d.ts +2 -0
- package/dist/policy.js +6 -0
- package/dist/triage-actions.js +10 -2
- package/docs/framework-gap-filing.md +85 -0
- package/docs/product-signal.md +1 -1
- package/package.json +1 -1
- package/packs/skills/skills-pack-0.1.json +6 -3
- package/scm/github.md +1 -1
- package/skills/deft-directive-feedback/SKILL.md +19 -14
- package/skills/deft-directive-product-signal/SKILL.md +1 -1
- package/vendor/directive-content/contracts/human-origin-authz.md +14 -8
- package/vendor/directive-content/docs/framework-gap-filing.md +85 -0
- package/vendor/directive-content/docs/product-signal.md +1 -1
- package/vendor/directive-content/packs/skills/skills-pack-0.1.json +6 -3
- package/vendor/directive-content/scm/github.md +1 -1
- package/vendor/directive-content/skills/deft-directive-feedback/SKILL.md +19 -14
- package/vendor/directive-content/skills/deft-directive-product-signal/SKILL.md +1 -1
- package/vendor/directive-core/dist/.tsbuildinfo +1 -1
- package/vendor/directive-core/dist/coverage-applicability/evaluate.d.ts.map +1 -1
- package/vendor/directive-core/dist/coverage-applicability/evaluate.js +39 -0
- package/vendor/directive-core/dist/coverage-applicability/evaluate.js.map +1 -1
- package/vendor/directive-core/dist/coverage-hotspots/evaluate.d.ts +24 -5
- package/vendor/directive-core/dist/coverage-hotspots/evaluate.d.ts.map +1 -1
- package/vendor/directive-core/dist/coverage-hotspots/evaluate.js +89 -8
- package/vendor/directive-core/dist/coverage-hotspots/evaluate.js.map +1 -1
- package/vendor/directive-core/dist/hooks/dispatcher.d.ts.map +1 -1
- package/vendor/directive-core/dist/hooks/dispatcher.js +10 -2
- package/vendor/directive-core/dist/hooks/dispatcher.js.map +1 -1
- package/vendor/directive-core/dist/init-deposit/skill-discovery-deposit.d.ts.map +1 -1
- package/vendor/directive-core/dist/init-deposit/skill-discovery-deposit.js +15 -0
- package/vendor/directive-core/dist/init-deposit/skill-discovery-deposit.js.map +1 -1
- package/vendor/directive-core/dist/intake/issue-ingest.d.ts +13 -0
- package/vendor/directive-core/dist/intake/issue-ingest.d.ts.map +1 -1
- package/vendor/directive-core/dist/intake/issue-ingest.js +164 -21
- package/vendor/directive-core/dist/intake/issue-ingest.js.map +1 -1
- package/vendor/directive-core/dist/pre-pr-controller/controller.d.ts.map +1 -1
- package/vendor/directive-core/dist/pre-pr-controller/controller.js +118 -12
- package/vendor/directive-core/dist/pre-pr-controller/controller.js.map +1 -1
- package/vendor/directive-core/dist/pre-pr-controller/index.d.ts +1 -1
- package/vendor/directive-core/dist/pre-pr-controller/index.d.ts.map +1 -1
- package/vendor/directive-core/dist/pre-pr-controller/index.js +1 -1
- package/vendor/directive-core/dist/pre-pr-controller/index.js.map +1 -1
- package/vendor/directive-core/dist/pre-pr-controller/phases.d.ts +5 -0
- package/vendor/directive-core/dist/pre-pr-controller/phases.d.ts.map +1 -1
- package/vendor/directive-core/dist/pre-pr-controller/phases.js +10 -0
- package/vendor/directive-core/dist/pre-pr-controller/phases.js.map +1 -1
- package/vendor/directive-core/dist/scope/promote-from-issue.d.ts +2 -1
- package/vendor/directive-core/dist/scope/promote-from-issue.d.ts.map +1 -1
- package/vendor/directive-core/dist/scope/promote-from-issue.js +17 -61
- package/vendor/directive-core/dist/scope/promote-from-issue.js.map +1 -1
- package/vendor/directive-core/dist/session/occupancy-recovery.d.ts +10 -0
- package/vendor/directive-core/dist/session/occupancy-recovery.d.ts.map +1 -1
- package/vendor/directive-core/dist/session/occupancy-recovery.js +43 -7
- package/vendor/directive-core/dist/session/occupancy-recovery.js.map +1 -1
- package/vendor/directive-core/dist/session/occupancy.d.ts +47 -1
- package/vendor/directive-core/dist/session/occupancy.d.ts.map +1 -1
- package/vendor/directive-core/dist/session/occupancy.js +240 -33
- package/vendor/directive-core/dist/session/occupancy.js.map +1 -1
- package/vendor/directive-core/dist/session/session-start.d.ts.map +1 -1
- package/vendor/directive-core/dist/session/session-start.js +6 -1
- package/vendor/directive-core/dist/session/session-start.js.map +1 -1
- package/vendor/directive-core/dist/triage/actions/index.d.ts +8 -5
- package/vendor/directive-core/dist/triage/actions/index.d.ts.map +1 -1
- package/vendor/directive-core/dist/triage/actions/index.js +248 -22
- package/vendor/directive-core/dist/triage/actions/index.js.map +1 -1
- package/vendor/directive-core/dist/triage/actions/types.d.ts +16 -2
- package/vendor/directive-core/dist/triage/actions/types.d.ts.map +1 -1
- package/vendor/directive-core/dist/triage/bulk/index.d.ts +8 -1
- package/vendor/directive-core/dist/triage/bulk/index.d.ts.map +1 -1
- package/vendor/directive-core/dist/triage/bulk/index.js +30 -11
- package/vendor/directive-core/dist/triage/bulk/index.js.map +1 -1
- package/vendor/directive-core/dist/value/feedback-file.d.ts +5 -0
- package/vendor/directive-core/dist/value/feedback-file.d.ts.map +1 -1
- package/vendor/directive-core/dist/value/feedback-file.js +26 -4
- package/vendor/directive-core/dist/value/feedback-file.js.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"occupancy.d.ts","sourceRoot":"","sources":["../../src/session/occupancy.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"occupancy.d.ts","sourceRoot":"","sources":["../../src/session/occupancy.ts"],"names":[],"mappings":"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"}
|
|
@@ -75,6 +75,7 @@ import { assertWriteTargetSafe } from "../fs/projection-containment.js";
|
|
|
75
75
|
import { assertAppendLockOwned, withAppendLock } from "../slice/lock.js";
|
|
76
76
|
import { SWARM_WORKER_ROLES } from "../swarm/routing.js";
|
|
77
77
|
import { recordChildOccupancyLease } from "./child-occupancy.js";
|
|
78
|
+
import { worktreePathOrNull } from "./git.js";
|
|
78
79
|
import { ambientHostSessionOwner, claimsHostSessionIdShape, detectDeclaredIdentityHosts, isUsableHostSessionId, parseCanonicalHostSessionId, printCompanionHostOwner, } from "./host-session-owner.js";
|
|
79
80
|
import { stableJson } from "./json.js";
|
|
80
81
|
import { isLinkedWorktreePath, isMainWorktreePath, listLinkedWorktreeCheckouts, mainWorktreeRoot, } from "./main-worktree.js";
|
|
@@ -82,6 +83,13 @@ import { readRitualState } from "./ritual-sentinel.js";
|
|
|
82
83
|
import { parseTimestamp, timestampIso } from "./time.js";
|
|
83
84
|
export const OCCUPANCY_SCHEMA_VERSION = 1;
|
|
84
85
|
export const OCCUPANCY_RELPATH = [".deft", "occupancy.json"];
|
|
86
|
+
/**
|
|
87
|
+
* Harbor / cell bootstrap signal (#5544 Prefer-A): a declared agent host will
|
|
88
|
+
* attach to this tree. Claimer surface is Harbor ritual applying
|
|
89
|
+
* `applyWorktreeOccupancy`. When set, last-resort UUID mint is refused so the
|
|
90
|
+
* later host can self-claim.
|
|
91
|
+
*/
|
|
92
|
+
export const DEFT_EXPECTED_DECLARED_HOST_ATTACH = "DEFT_EXPECTED_DECLARED_HOST_ATTACH";
|
|
85
93
|
/** Crash recovery TTL: 20 minutes without heartbeat (15–30 window). */
|
|
86
94
|
export const OCCUPANCY_TTL_MS = 20 * 60 * 1000;
|
|
87
95
|
/**
|
|
@@ -227,6 +235,115 @@ export const OCCUPANCY_MAX_GRANTS = 32;
|
|
|
227
235
|
export function occupancyPath(projectRoot) {
|
|
228
236
|
return join(resolve(projectRoot), ...OCCUPANCY_RELPATH);
|
|
229
237
|
}
|
|
238
|
+
/**
|
|
239
|
+
* Resolve the lease root CLI and hooks share for the same worktree (#5544 P2).
|
|
240
|
+
*
|
|
241
|
+
* Uses the Git worktree toplevel when available (same tree hooks select when
|
|
242
|
+
* payload alone gates, or when writes stay inside that worktree). Linked
|
|
243
|
+
* worktrees keep their own toplevel — never collapsed into the main checkout.
|
|
244
|
+
*/
|
|
245
|
+
const occupancyLeaseRootCache = new Map();
|
|
246
|
+
/**
|
|
247
|
+
* Process-local cache so Write-hook double probes (preview + refresh) and
|
|
248
|
+
* nested readOccupancy calls do not re-shell `git rev-parse` for the same path.
|
|
249
|
+
*/
|
|
250
|
+
export function resolveOccupancyLeaseRoot(projectRoot) {
|
|
251
|
+
const absolute = resolve(projectRoot);
|
|
252
|
+
const cached = occupancyLeaseRootCache.get(absolute);
|
|
253
|
+
if (cached !== undefined)
|
|
254
|
+
return cached;
|
|
255
|
+
const toplevel = worktreePathOrNull(absolute);
|
|
256
|
+
const root = toplevel ?? absolute;
|
|
257
|
+
occupancyLeaseRootCache.set(absolute, root);
|
|
258
|
+
occupancyLeaseRootCache.set(root, root);
|
|
259
|
+
return root;
|
|
260
|
+
}
|
|
261
|
+
/** Print the occupancy file (and optional Write-gate effectiveRoot) (#5544 P2). */
|
|
262
|
+
export function formatOccupancyLeaseViewNote(occupancyFilePath, options = {}) {
|
|
263
|
+
const parts = [`occupancyFile=${occupancyFilePath}`];
|
|
264
|
+
if (options.effectiveRoot !== undefined && options.effectiveRoot.length > 0) {
|
|
265
|
+
parts.push(`effectiveRoot=${options.effectiveRoot}`);
|
|
266
|
+
}
|
|
267
|
+
return parts.join(" ");
|
|
268
|
+
}
|
|
269
|
+
export function formatOccupancyAlreadyFree(occupancyFilePath, options = {}) {
|
|
270
|
+
return `occupancy already free (${formatOccupancyLeaseViewNote(occupancyFilePath, options)})`;
|
|
271
|
+
}
|
|
272
|
+
export function expectedDeclaredHostAttachSignaled(input = {}) {
|
|
273
|
+
if (input.expectedDeclaredHostAttach === true)
|
|
274
|
+
return true;
|
|
275
|
+
const raw = (input.env ?? process.env)[DEFT_EXPECTED_DECLARED_HOST_ATTACH]?.trim() ?? "";
|
|
276
|
+
if (raw.length === 0)
|
|
277
|
+
return false;
|
|
278
|
+
return raw === "1" || raw.toLowerCase() === "true" || raw.toLowerCase() === "yes";
|
|
279
|
+
}
|
|
280
|
+
export function formatOccupancyExpectedHostMintRefusal() {
|
|
281
|
+
return ("occupancy refuses last-resort mint: Harbor/bootstrap signaled a declared agent host will attach " +
|
|
282
|
+
`(${DEFT_EXPECTED_DECLARED_HOST_ATTACH}=1 or expectedDeclaredHostAttach). ` +
|
|
283
|
+
"Claimer surface: Harbor ritual applying applyWorktreeOccupancy. " +
|
|
284
|
+
"Default is host-self-claim after attach. Stay read-only (`session:start --read-only`) or skip mutation session:start. " +
|
|
285
|
+
"If a pre-attach mutation lease is required, bind the exact later host session id " +
|
|
286
|
+
"(`session:start --session-id=<host:provider:v1:...>`) and release successfully before agent launch — " +
|
|
287
|
+
"failed cleanup blocks launch (assertOccupancyFreeForHostLaunch).");
|
|
288
|
+
}
|
|
289
|
+
/**
|
|
290
|
+
* Harbor launch gate (#5544 Prefer-A): failed pre-attach occupancy cleanup
|
|
291
|
+
* blocks agent launch. Exit 0 only when this lease root is free.
|
|
292
|
+
*/
|
|
293
|
+
export function assertOccupancyFreeForHostLaunch(projectRoot, input = {}) {
|
|
294
|
+
const root = resolveOccupancyLeaseRoot(projectRoot);
|
|
295
|
+
const path = occupancyPath(root);
|
|
296
|
+
const live = liveOccupant(root, input.now ?? new Date());
|
|
297
|
+
if (live === null) {
|
|
298
|
+
return {
|
|
299
|
+
action: "released",
|
|
300
|
+
sessionId: "",
|
|
301
|
+
record: null,
|
|
302
|
+
path,
|
|
303
|
+
message: formatOccupancyAlreadyFree(path),
|
|
304
|
+
code: 0,
|
|
305
|
+
};
|
|
306
|
+
}
|
|
307
|
+
const occupantArg = commandSessionId(live.sessionId, "<reported-session-id>");
|
|
308
|
+
return {
|
|
309
|
+
action: "denied",
|
|
310
|
+
sessionId: "",
|
|
311
|
+
record: live,
|
|
312
|
+
path,
|
|
313
|
+
message: `Harbor launch blocked: live occupancy lease still holds (${formatOccupancyLeaseViewNote(path)}). ` +
|
|
314
|
+
`session=${live.sessionId}. Failed pre-attach cleanup blocks launch. ` +
|
|
315
|
+
`Release with \`occupancy:release --session-id=${occupantArg} --project-root=${root}\` before attaching the agent host.`,
|
|
316
|
+
code: 1,
|
|
317
|
+
};
|
|
318
|
+
}
|
|
319
|
+
/**
|
|
320
|
+
* Narrow #5544 Prefer-A P3 gate: live minted lease + canonical host-shaped
|
|
321
|
+
* presenter may steal under confirm. Does not broaden steal defaults.
|
|
322
|
+
*/
|
|
323
|
+
export function occupancyMintedDeclaredHostStealAdmitted(record, presented) {
|
|
324
|
+
if (record.identityProvenance !== "minted")
|
|
325
|
+
return false;
|
|
326
|
+
const actor = presented?.trim() ?? "";
|
|
327
|
+
if (actor.length === 0)
|
|
328
|
+
return false;
|
|
329
|
+
return parseCanonicalHostSessionId(actor) !== null;
|
|
330
|
+
}
|
|
331
|
+
export function formatOccupancyMintedDeclaredHostStealRemediation(record, presented, projectRoot) {
|
|
332
|
+
const root = projectRoot !== undefined ? resolveOccupancyLeaseRoot(projectRoot) : undefined;
|
|
333
|
+
const path = root !== undefined ? occupancyPath(root) : undefined;
|
|
334
|
+
const occupantArg = commandSessionId(record.sessionId, "<reported-session-id>");
|
|
335
|
+
const hostArg = commandSessionId(presented, "<host-published-id>");
|
|
336
|
+
const rootFlag = root !== undefined ? ` --project-root=${JSON.stringify(root)}` : "";
|
|
337
|
+
const view = path !== undefined ? ` Lease view: ${formatOccupancyLeaseViewNote(path)}.` : "";
|
|
338
|
+
const rootNote = root !== undefined ? ` Target root: ${root}.` : "";
|
|
339
|
+
return (`Closed recovery for a minted lease while host-shaped presenter ${presented} is already on this tree:${view}${rootNote} ` +
|
|
340
|
+
`Run \`occupancy:steal --occupant=${occupantArg} --session-id=${hostArg} --confirm${rootFlag}\`` +
|
|
341
|
+
`. That is the permitted lease operation under the minted+declared-host gate (not a broad steal default). ` +
|
|
342
|
+
"Steal changes the lease only; then restore ceremony as the same presenter: " +
|
|
343
|
+
`\`session:start --rearm --session-id=${hostArg}${rootFlag}\` when re-arm is eligible, otherwise ` +
|
|
344
|
+
`\`session:start --session-id=${hostArg}${rootFlag}\` for a cold ceremony. ` +
|
|
345
|
+
"Owner-only UUID release then host re-claim remains available but is not the primary agent path.");
|
|
346
|
+
}
|
|
230
347
|
/**
|
|
231
348
|
* Whether a stored lease names this worktree (#3926).
|
|
232
349
|
*
|
|
@@ -430,7 +547,7 @@ function isOwnInheritedPresentation(occupantId, presented) {
|
|
|
430
547
|
}
|
|
431
548
|
/** Advisory coordination preface for occupancy denials (#3729 Prefer-A AC4). */
|
|
432
549
|
export const OCCUPANCY_ADVISORY_COORDINATION_PREFACE = "Occupancy is advisory coordination for accidental same-machine collision, not same-user authorization.";
|
|
433
|
-
export function formatOccupancyRemediation(record, now = new Date(), presented, env) {
|
|
550
|
+
export function formatOccupancyRemediation(record, now = new Date(), presented, env, projectRoot) {
|
|
434
551
|
const age = heartbeatAgeSeconds(record, now);
|
|
435
552
|
const header = `${OCCUPANCY_ADVISORY_COORDINATION_PREFACE}\n` +
|
|
436
553
|
`Worktree occupied by session ${record.sessionId} (intent=${record.intent}, heartbeat ${age}s ago, ` +
|
|
@@ -439,6 +556,13 @@ export function formatOccupancyRemediation(record, now = new Date(), presented,
|
|
|
439
556
|
const worktreeFirst = "Use another worktree.";
|
|
440
557
|
const occupantArg = commandSessionId(record.sessionId, "<reported-session-id>");
|
|
441
558
|
if (record.identityProvenance === "minted") {
|
|
559
|
+
// #5544 Prefer-A P3: when a canonical host-shaped id is already presenting,
|
|
560
|
+
// replace "Do not steal" with the closed steal-then-ceremony path.
|
|
561
|
+
const hostPresenter = presented?.trim() ?? "";
|
|
562
|
+
if (occupancyMintedDeclaredHostStealAdmitted(record, hostPresenter)) {
|
|
563
|
+
return (`${header}This lease was claimed under a minted owner. No later hook process can present that id.\n` +
|
|
564
|
+
`${formatOccupancyMintedDeclaredHostStealRemediation(record, hostPresenter, projectRoot)}`);
|
|
565
|
+
}
|
|
442
566
|
const hosts = detectDeclaredIdentityHosts(env ?? process.env);
|
|
443
567
|
const suggested = uniquePrintCompanion(hosts, env ?? process.env);
|
|
444
568
|
const named = suggested === null
|
|
@@ -446,7 +570,8 @@ export function formatOccupancyRemediation(record, now = new Date(), presented,
|
|
|
446
570
|
: commandSessionId(suggested, "<host-published-id>");
|
|
447
571
|
return (`${header}This lease was claimed under a minted owner. No later hook process can present that id.\n` +
|
|
448
572
|
`${formatOccupancySkipMutationClaimWhenMinted()}\n` +
|
|
449
|
-
`${worktreeFirst} Do not steal this lease
|
|
573
|
+
`${worktreeFirst} Do not steal this lease unless a declared host-shaped id is already presenting ` +
|
|
574
|
+
`(then use the minted+declared-host \`occupancy:steal\` gate). Stay read-only (\`session:start --read-only\`), or ` +
|
|
450
575
|
`release it (\`occupancy:release --session-id=${occupantArg}\` / \`session:end\`) and re-claim ` +
|
|
451
576
|
`with the host-published owner (\`session:start --session-id=${named}\`).${tail}`);
|
|
452
577
|
}
|
|
@@ -624,6 +749,35 @@ export function formatPresentedIdentityDisagreement(identity) {
|
|
|
624
749
|
*/
|
|
625
750
|
export function resolveOccupancySessionClaim(input = {}) {
|
|
626
751
|
const identity = resolvePresentedIdentity(input);
|
|
752
|
+
// #5544 Prefer-A: when Harbor signals expected declared-host attach, the only
|
|
753
|
+
// pre-attach mutation exception is an explicit argv --session-id that is
|
|
754
|
+
// already host-shaped. Inherited DEFT_SESSION_ID (even host-shaped) and
|
|
755
|
+
// opaque ids are refused so the later host is not locked out.
|
|
756
|
+
if (expectedDeclaredHostAttachSignaled(input)) {
|
|
757
|
+
const explicitHostBind = identity.source === "explicit" &&
|
|
758
|
+
identity.sessionId.length > 0 &&
|
|
759
|
+
parseCanonicalHostSessionId(identity.sessionId) !== null;
|
|
760
|
+
if (explicitHostBind) {
|
|
761
|
+
return {
|
|
762
|
+
status: "ok",
|
|
763
|
+
sessionId: identity.sessionId,
|
|
764
|
+
provenance: "explicit",
|
|
765
|
+
source: "explicit",
|
|
766
|
+
};
|
|
767
|
+
}
|
|
768
|
+
if (identity.sessionId.length > 0 || identity.disagreeingHostOwner !== null) {
|
|
769
|
+
return {
|
|
770
|
+
status: "refuse-mint",
|
|
771
|
+
sessionId: "",
|
|
772
|
+
provenance: null,
|
|
773
|
+
source: "mint",
|
|
774
|
+
hosts: [],
|
|
775
|
+
suggestedSessionId: null,
|
|
776
|
+
message: formatOccupancyExpectedHostMintRefusal(),
|
|
777
|
+
};
|
|
778
|
+
}
|
|
779
|
+
// No presented identity yet — fall through to declared-host / empty-mint refuse.
|
|
780
|
+
}
|
|
627
781
|
// #4066: host-authoritative claim. Inherited DEFT_SESSION_ID must not beat the
|
|
628
782
|
// host-published owner -- that split is the measured steal-from-self loop.
|
|
629
783
|
if (identity.source === "environment" && identity.disagreeingHostOwner !== null) {
|
|
@@ -658,6 +812,20 @@ export function resolveOccupancySessionClaim(input = {}) {
|
|
|
658
812
|
message,
|
|
659
813
|
};
|
|
660
814
|
}
|
|
815
|
+
// #5544 Prefer-A P1: Harbor pre-attach empty-hosts mint window. Signal closes
|
|
816
|
+
// last-resort mint before the declared host attaches; exact --session-id bind
|
|
817
|
+
// is the only pre-attach mutation exception (already returned above when set).
|
|
818
|
+
if (expectedDeclaredHostAttachSignaled(input)) {
|
|
819
|
+
return {
|
|
820
|
+
status: "refuse-mint",
|
|
821
|
+
sessionId: "",
|
|
822
|
+
provenance: null,
|
|
823
|
+
source: "mint",
|
|
824
|
+
hosts: [],
|
|
825
|
+
suggestedSessionId: null,
|
|
826
|
+
message: formatOccupancyExpectedHostMintRefusal(),
|
|
827
|
+
};
|
|
828
|
+
}
|
|
661
829
|
return {
|
|
662
830
|
status: "ok",
|
|
663
831
|
sessionId: (input.newSessionId ?? randomUUID)(),
|
|
@@ -696,6 +864,8 @@ function occupancyMintRefusalDecision(projectRoot, claim) {
|
|
|
696
864
|
};
|
|
697
865
|
}
|
|
698
866
|
export function readOccupancy(projectRoot) {
|
|
867
|
+
// #5544: reads share the claim/release lease-root view.
|
|
868
|
+
projectRoot = resolveOccupancyLeaseRoot(projectRoot);
|
|
699
869
|
const path = occupancyPath(projectRoot);
|
|
700
870
|
try {
|
|
701
871
|
if (!existsSync(path))
|
|
@@ -796,6 +966,8 @@ export const OCCUPANCY_CEREMONY_CASES = [
|
|
|
796
966
|
* session:ready. Matches persist, including the sibling-lease primary fence.
|
|
797
967
|
*/
|
|
798
968
|
export function evaluateOccupancyCeremonyEligibility(projectRoot, input = {}) {
|
|
969
|
+
// #5544: same lease-root view as claim / release / Write-gate.
|
|
970
|
+
projectRoot = resolveOccupancyLeaseRoot(projectRoot);
|
|
799
971
|
const now = input.now ?? new Date();
|
|
800
972
|
const claim = resolveOccupancySessionClaim(input);
|
|
801
973
|
if (claim.status === "refuse-mint") {
|
|
@@ -822,7 +994,7 @@ export function evaluateOccupancyCeremonyEligibility(projectRoot, input = {}) {
|
|
|
822
994
|
sessionId: incoming,
|
|
823
995
|
occupantId: live.sessionId,
|
|
824
996
|
restrictedPrimary,
|
|
825
|
-
denialMessage: formatOccupancyRemediation(live, now, incoming, input.env),
|
|
997
|
+
denialMessage: formatOccupancyRemediation(live, now, incoming, input.env, projectRoot),
|
|
826
998
|
};
|
|
827
999
|
}
|
|
828
1000
|
if (live !== null) {
|
|
@@ -830,7 +1002,7 @@ export function evaluateOccupancyCeremonyEligibility(projectRoot, input = {}) {
|
|
|
830
1002
|
if (admission === "member") {
|
|
831
1003
|
const grant = occupancyGrantFor(live, incoming, now);
|
|
832
1004
|
const memberText = grant === null
|
|
833
|
-
? formatOccupancyRemediation(live, now, incoming, input.env)
|
|
1005
|
+
? formatOccupancyRemediation(live, now, incoming, input.env, projectRoot)
|
|
834
1006
|
: formatOccupancyMemberAdministrationRefusal(live, grant, "session:start");
|
|
835
1007
|
return {
|
|
836
1008
|
admitCeremony: false,
|
|
@@ -848,7 +1020,7 @@ export function evaluateOccupancyCeremonyEligibility(projectRoot, input = {}) {
|
|
|
848
1020
|
sessionId: incoming,
|
|
849
1021
|
occupantId: live.sessionId,
|
|
850
1022
|
restrictedPrimary,
|
|
851
|
-
denialMessage: formatOccupancyRemediation(live, now, incoming, input.env),
|
|
1023
|
+
denialMessage: formatOccupancyRemediation(live, now, incoming, input.env, projectRoot),
|
|
852
1024
|
};
|
|
853
1025
|
}
|
|
854
1026
|
return {
|
|
@@ -903,6 +1075,8 @@ export function evaluateOccupancyCeremonyEligibility(projectRoot, input = {}) {
|
|
|
903
1075
|
};
|
|
904
1076
|
}
|
|
905
1077
|
export function applyWorktreeOccupancy(projectRoot, input = {}) {
|
|
1078
|
+
// #5544: claim/read/release share one lease-root view (git worktree toplevel).
|
|
1079
|
+
projectRoot = resolveOccupancyLeaseRoot(projectRoot);
|
|
906
1080
|
const now = input.now ?? new Date();
|
|
907
1081
|
const path = occupancyPath(projectRoot);
|
|
908
1082
|
const claim = resolveOccupancySessionClaim(input);
|
|
@@ -942,7 +1116,7 @@ export function applyWorktreeOccupancy(projectRoot, input = {}) {
|
|
|
942
1116
|
// A granted child reads the member refusal rather than an offer of the
|
|
943
1117
|
// write grant it already holds (#3954 item 5): membership admits writes,
|
|
944
1118
|
// and claiming the lease stays owner-only.
|
|
945
|
-
message: membershipOwnerDenial(live, incoming, now, "session:start"),
|
|
1119
|
+
message: membershipOwnerDenial(live, incoming, now, "session:start", projectRoot),
|
|
946
1120
|
code: 1,
|
|
947
1121
|
};
|
|
948
1122
|
}
|
|
@@ -976,7 +1150,7 @@ export function applyWorktreeOccupancy(projectRoot, input = {}) {
|
|
|
976
1150
|
sessionId: incoming,
|
|
977
1151
|
record: liveLocked,
|
|
978
1152
|
path,
|
|
979
|
-
message: membershipOwnerDenial(liveLocked, incoming, now, "session:start"),
|
|
1153
|
+
message: membershipOwnerDenial(liveLocked, incoming, now, "session:start", projectRoot),
|
|
980
1154
|
code: 1,
|
|
981
1155
|
};
|
|
982
1156
|
}
|
|
@@ -1068,6 +1242,8 @@ function occupancyStealUsesMintedWriter(input, claim) {
|
|
|
1068
1242
|
return claim.status === "ok" && (claim.provenance === "minted" || claim.source === "mint");
|
|
1069
1243
|
}
|
|
1070
1244
|
export function stealOccupancy(projectRoot, input = {}) {
|
|
1245
|
+
// #5544: steal uses the same lease-root view as claim/release.
|
|
1246
|
+
projectRoot = resolveOccupancyLeaseRoot(projectRoot);
|
|
1071
1247
|
const now = input.now ?? new Date();
|
|
1072
1248
|
const path = occupancyPath(projectRoot);
|
|
1073
1249
|
const claim = resolveOccupancySessionClaim(input);
|
|
@@ -1099,7 +1275,9 @@ export function stealOccupancy(projectRoot, input = {}) {
|
|
|
1099
1275
|
// Show the occupant's write recency before the steal, not only after it
|
|
1100
1276
|
// (#3599): heartbeat age alone hides an occupant that is mid-edit.
|
|
1101
1277
|
const liveCurrent = liveOccupancyOnTree(projectRoot, current, now);
|
|
1102
|
-
const occupantDetail = liveCurrent !== null
|
|
1278
|
+
const occupantDetail = liveCurrent !== null
|
|
1279
|
+
? `\n${formatOccupancyRemediation(liveCurrent, now, undefined, undefined, projectRoot)}`
|
|
1280
|
+
: "";
|
|
1103
1281
|
return {
|
|
1104
1282
|
action: "denied",
|
|
1105
1283
|
sessionId: incoming,
|
|
@@ -1145,7 +1323,7 @@ export function stealOccupancy(projectRoot, input = {}) {
|
|
|
1145
1323
|
record: live,
|
|
1146
1324
|
path,
|
|
1147
1325
|
message: `occupancy:steal named occupant ${named} does not match live occupant ${live.sessionId}.\n` +
|
|
1148
|
-
formatOccupancyRemediation(live, now),
|
|
1326
|
+
formatOccupancyRemediation(live, now, undefined, undefined, projectRoot),
|
|
1149
1327
|
code: 1,
|
|
1150
1328
|
};
|
|
1151
1329
|
}
|
|
@@ -1189,7 +1367,7 @@ export function stealOccupancy(projectRoot, input = {}) {
|
|
|
1189
1367
|
record: liveLocked,
|
|
1190
1368
|
path,
|
|
1191
1369
|
message: `occupancy:steal named occupant ${named} does not match live occupant ${liveLocked.sessionId}.\n` +
|
|
1192
|
-
formatOccupancyRemediation(liveLocked, now),
|
|
1370
|
+
formatOccupancyRemediation(liveLocked, now, undefined, undefined, projectRoot),
|
|
1193
1371
|
code: 1,
|
|
1194
1372
|
};
|
|
1195
1373
|
}
|
|
@@ -1224,16 +1402,19 @@ export function stealOccupancy(projectRoot, input = {}) {
|
|
|
1224
1402
|
};
|
|
1225
1403
|
}
|
|
1226
1404
|
const record = written.record;
|
|
1405
|
+
const root = resolve(projectRoot);
|
|
1227
1406
|
return {
|
|
1228
1407
|
action: "stolen",
|
|
1229
1408
|
sessionId: record.sessionId,
|
|
1230
1409
|
record,
|
|
1231
1410
|
path,
|
|
1232
1411
|
message: `occupancy stolen from ${named}${priorClock}; writer is now session ${record.sessionId}. ` +
|
|
1412
|
+
`Lease view: ${formatOccupancyLeaseViewNote(path)}. Target root: ${root}. ` +
|
|
1413
|
+
`Presenter/writer: ${record.sessionId}. Permitted lease operation completed: occupancy:steal. ` +
|
|
1233
1414
|
"This command changes the lease only; direct writes remain denied unless ritual state already names the same owner. " +
|
|
1234
|
-
"
|
|
1235
|
-
"
|
|
1236
|
-
"for a cold ceremony, using the writer ID above.",
|
|
1415
|
+
"Required ceremony: run " +
|
|
1416
|
+
"`deft session:start --rearm --session-id=<same-session-id>` when re-arm is eligible; otherwise run " +
|
|
1417
|
+
"`deft session:start --session-id=<same-session-id>` for a cold ceremony, using the writer ID above.",
|
|
1237
1418
|
code: 0,
|
|
1238
1419
|
};
|
|
1239
1420
|
}, input.lockDeps);
|
|
@@ -1254,23 +1435,26 @@ export function stealOccupancy(projectRoot, input = {}) {
|
|
|
1254
1435
|
*/
|
|
1255
1436
|
export function releaseOccupancy(projectRoot, input = {}) {
|
|
1256
1437
|
const now = input.now ?? new Date();
|
|
1257
|
-
|
|
1438
|
+
// #5544 P2: share the lease-root view CLI and Write hooks use for this tree.
|
|
1439
|
+
const root = resolveOccupancyLeaseRoot(projectRoot);
|
|
1440
|
+
const path = occupancyPath(root);
|
|
1258
1441
|
const identity = resolvePresentedIdentity(input);
|
|
1259
1442
|
const caller = identity.sessionId;
|
|
1260
1443
|
const split = formatPresentedIdentityDisagreement(identity);
|
|
1261
|
-
|
|
1262
|
-
|
|
1444
|
+
const leaseNote = ` ${formatOccupancyLeaseViewNote(path)}`;
|
|
1445
|
+
return withOccupancyLock(root, (fence) => {
|
|
1446
|
+
const existing = readOccupancy(root);
|
|
1263
1447
|
if (existing === null) {
|
|
1264
1448
|
return {
|
|
1265
1449
|
action: "released",
|
|
1266
1450
|
sessionId: caller,
|
|
1267
1451
|
record: null,
|
|
1268
1452
|
path,
|
|
1269
|
-
message:
|
|
1453
|
+
message: formatOccupancyAlreadyFree(path),
|
|
1270
1454
|
code: 0,
|
|
1271
1455
|
};
|
|
1272
1456
|
}
|
|
1273
|
-
const expired = liveOccupancyOnTree(
|
|
1457
|
+
const expired = liveOccupancyOnTree(root, existing, now) === null;
|
|
1274
1458
|
const owns = caller.length > 0 && caller === existing.sessionId;
|
|
1275
1459
|
if (!expired && !owns) {
|
|
1276
1460
|
return {
|
|
@@ -1278,7 +1462,9 @@ export function releaseOccupancy(projectRoot, input = {}) {
|
|
|
1278
1462
|
sessionId: caller,
|
|
1279
1463
|
record: existing,
|
|
1280
1464
|
path,
|
|
1281
|
-
message: membershipOwnerDenial(existing, caller, now, "occupancy:release") +
|
|
1465
|
+
message: membershipOwnerDenial(existing, caller, now, "occupancy:release", root) +
|
|
1466
|
+
split +
|
|
1467
|
+
leaseNote,
|
|
1282
1468
|
code: 1,
|
|
1283
1469
|
};
|
|
1284
1470
|
}
|
|
@@ -1286,6 +1472,8 @@ export function releaseOccupancy(projectRoot, input = {}) {
|
|
|
1286
1472
|
// never stamp Prefer-A marker / rewrite AGENTS.md for a denied caller (#4544 P1).
|
|
1287
1473
|
// Session exit with this-session untracked product evidence must still reach
|
|
1288
1474
|
// enforce when markWrite persist never ran (Shell-bypass / hookless).
|
|
1475
|
+
// Prefer-A #5544 residual / babysit P1: header check uses the supplied project
|
|
1476
|
+
// root (consumer AGENTS.md), not the git lease root (which may be a parent repo).
|
|
1289
1477
|
const evidenceGate = enforceConsumerHeaderPlaceholderWhenProductEvidence(projectRoot);
|
|
1290
1478
|
if (!evidenceGate.ok) {
|
|
1291
1479
|
return {
|
|
@@ -1293,19 +1481,19 @@ export function releaseOccupancy(projectRoot, input = {}) {
|
|
|
1293
1481
|
sessionId: caller,
|
|
1294
1482
|
record: existing,
|
|
1295
1483
|
path,
|
|
1296
|
-
message: evidenceGate.message,
|
|
1484
|
+
message: evidenceGate.message + leaseNote,
|
|
1297
1485
|
code: 1,
|
|
1298
1486
|
};
|
|
1299
1487
|
}
|
|
1300
1488
|
fence();
|
|
1301
|
-
const still = readOccupancy(
|
|
1489
|
+
const still = readOccupancy(root);
|
|
1302
1490
|
if (still === null) {
|
|
1303
1491
|
return {
|
|
1304
1492
|
action: "released",
|
|
1305
1493
|
sessionId: caller,
|
|
1306
1494
|
record: null,
|
|
1307
1495
|
path,
|
|
1308
|
-
message:
|
|
1496
|
+
message: formatOccupancyAlreadyFree(path),
|
|
1309
1497
|
code: 0,
|
|
1310
1498
|
};
|
|
1311
1499
|
}
|
|
@@ -1318,17 +1506,19 @@ export function releaseOccupancy(projectRoot, input = {}) {
|
|
|
1318
1506
|
sessionId: caller,
|
|
1319
1507
|
record: still,
|
|
1320
1508
|
path,
|
|
1321
|
-
message: membershipOwnerDenial(still, caller, now, "occupancy:release") +
|
|
1509
|
+
message: membershipOwnerDenial(still, caller, now, "occupancy:release", root) +
|
|
1510
|
+
split +
|
|
1511
|
+
leaseNote,
|
|
1322
1512
|
code: 1,
|
|
1323
1513
|
};
|
|
1324
1514
|
}
|
|
1325
|
-
removeOccupancyFile(
|
|
1515
|
+
removeOccupancyFile(root, fence);
|
|
1326
1516
|
return {
|
|
1327
1517
|
action: "released",
|
|
1328
1518
|
sessionId: still.sessionId,
|
|
1329
1519
|
record: null,
|
|
1330
1520
|
path,
|
|
1331
|
-
message: `occupancy released session ${still.sessionId}`,
|
|
1521
|
+
message: `occupancy released session ${still.sessionId} (${formatOccupancyLeaseViewNote(path)})`,
|
|
1332
1522
|
code: 0,
|
|
1333
1523
|
};
|
|
1334
1524
|
}, input.lockDeps);
|
|
@@ -1374,6 +1564,8 @@ function ritualAlignedAfterAcquisition(projectRoot, acquired) {
|
|
|
1374
1564
|
* this persist.
|
|
1375
1565
|
*/
|
|
1376
1566
|
export function rollbackAcquiredOccupancy(projectRoot, acquired, input = {}) {
|
|
1567
|
+
// #5544: rollback must target the same lease root claim wrote.
|
|
1568
|
+
projectRoot = resolveOccupancyLeaseRoot(projectRoot);
|
|
1377
1569
|
const path = occupancyPath(projectRoot);
|
|
1378
1570
|
if (!isPersistTimeAcquisition(acquired.action)) {
|
|
1379
1571
|
return {
|
|
@@ -1393,7 +1585,7 @@ export function rollbackAcquiredOccupancy(projectRoot, acquired, input = {}) {
|
|
|
1393
1585
|
sessionId: acquired.sessionId,
|
|
1394
1586
|
record: null,
|
|
1395
1587
|
path,
|
|
1396
|
-
message:
|
|
1588
|
+
message: formatOccupancyAlreadyFree(path),
|
|
1397
1589
|
code: 0,
|
|
1398
1590
|
};
|
|
1399
1591
|
}
|
|
@@ -1425,7 +1617,7 @@ export function rollbackAcquiredOccupancy(projectRoot, acquired, input = {}) {
|
|
|
1425
1617
|
sessionId: acquired.sessionId,
|
|
1426
1618
|
record: null,
|
|
1427
1619
|
path,
|
|
1428
|
-
message:
|
|
1620
|
+
message: formatOccupancyAlreadyFree(path),
|
|
1429
1621
|
code: 0,
|
|
1430
1622
|
};
|
|
1431
1623
|
}
|
|
@@ -1470,10 +1662,10 @@ export function rollbackAcquiredOccupancy(projectRoot, acquired, input = {}) {
|
|
|
1470
1662
|
* have chosen explicitly, so a refusal that does not name what was presented
|
|
1471
1663
|
* leaves it guessing which identity it was refused under.
|
|
1472
1664
|
*/
|
|
1473
|
-
function membershipOwnerDenial(live, caller, now, verb) {
|
|
1665
|
+
function membershipOwnerDenial(live, caller, now, verb, projectRoot) {
|
|
1474
1666
|
const grant = occupancyGrantFor(live, caller, now);
|
|
1475
1667
|
return grant === null
|
|
1476
|
-
? formatOccupancyRemediation(live, now, caller)
|
|
1668
|
+
? formatOccupancyRemediation(live, now, caller, undefined, projectRoot)
|
|
1477
1669
|
: formatOccupancyMemberAdministrationRefusal(live, grant, verb);
|
|
1478
1670
|
}
|
|
1479
1671
|
/**
|
|
@@ -1486,6 +1678,8 @@ function membershipOwnerDenial(live, caller, now, verb) {
|
|
|
1486
1678
|
* cap — and it buys writes alone.
|
|
1487
1679
|
*/
|
|
1488
1680
|
export function grantOccupancyMembership(projectRoot, input = {}) {
|
|
1681
|
+
// #5544: membership verbs share claim/release lease-root view.
|
|
1682
|
+
projectRoot = resolveOccupancyLeaseRoot(projectRoot);
|
|
1489
1683
|
const now = input.now ?? new Date();
|
|
1490
1684
|
const path = occupancyPath(projectRoot);
|
|
1491
1685
|
const identity = resolvePresentedIdentity(input);
|
|
@@ -1604,7 +1798,7 @@ export function grantOccupancyMembership(projectRoot, input = {}) {
|
|
|
1604
1798
|
sessionId: owner,
|
|
1605
1799
|
record: live,
|
|
1606
1800
|
path,
|
|
1607
|
-
message: membershipOwnerDenial(live, owner, now, "occupancy:grant") + split,
|
|
1801
|
+
message: membershipOwnerDenial(live, owner, now, "occupancy:grant", projectRoot) + split,
|
|
1608
1802
|
code: 1,
|
|
1609
1803
|
};
|
|
1610
1804
|
}
|
|
@@ -1695,6 +1889,8 @@ export function grantOccupancyMembership(projectRoot, input = {}) {
|
|
|
1695
1889
|
* never have been admitted, and the owner wants that true now.
|
|
1696
1890
|
*/
|
|
1697
1891
|
export function revokeOccupancyMembership(projectRoot, input = {}) {
|
|
1892
|
+
// #5544: membership verbs share claim/release lease-root view.
|
|
1893
|
+
projectRoot = resolveOccupancyLeaseRoot(projectRoot);
|
|
1698
1894
|
const now = input.now ?? new Date();
|
|
1699
1895
|
const path = occupancyPath(projectRoot);
|
|
1700
1896
|
const identity = resolvePresentedIdentity(input);
|
|
@@ -1734,7 +1930,8 @@ export function revokeOccupancyMembership(projectRoot, input = {}) {
|
|
|
1734
1930
|
sessionId: owner,
|
|
1735
1931
|
record: live,
|
|
1736
1932
|
path,
|
|
1737
|
-
message: membershipOwnerDenial(live, owner, now, "occupancy:grant --revoke") +
|
|
1933
|
+
message: membershipOwnerDenial(live, owner, now, "occupancy:grant --revoke", projectRoot) +
|
|
1934
|
+
split,
|
|
1738
1935
|
code: 1,
|
|
1739
1936
|
};
|
|
1740
1937
|
}
|
|
@@ -1795,6 +1992,10 @@ export function revokeOccupancyMembership(projectRoot, input = {}) {
|
|
|
1795
1992
|
*/
|
|
1796
1993
|
export function evaluateOccupancyWriteGate(projectRoot, input = {}) {
|
|
1797
1994
|
const now = input.now ?? new Date();
|
|
1995
|
+
// #5544: lease identity is always the git worktree toplevel. leaseRoot is only
|
|
1996
|
+
// a preferred base path (hook effectiveRoot may be a subdirectory when writes
|
|
1997
|
+
// leave the git tree); never skip resolve, or read/match disagree (#5544 P1).
|
|
1998
|
+
projectRoot = resolveOccupancyLeaseRoot(input.leaseRoot ?? projectRoot);
|
|
1798
1999
|
const incoming = input.sessionId?.trim() || (input.env ?? process.env).DEFT_SESSION_ID?.trim() || "";
|
|
1799
2000
|
const stored = readOccupancy(projectRoot);
|
|
1800
2001
|
const record = stored !== null && occupancyWorktreeMatches(stored.worktreePath, projectRoot) ? stored : null;
|
|
@@ -1848,12 +2049,16 @@ export function evaluateOccupancyWriteGate(projectRoot, input = {}) {
|
|
|
1848
2049
|
// Two-axis unknown-identity axis (#3729 Prefer-A): live lease + stranger →
|
|
1849
2050
|
// fail closed (OCCUPANCY_UNKNOWN_IDENTITY_POLICY). Advisory coordination,
|
|
1850
2051
|
// not authorization — prefer another worktree / grant over steal-as-primary.
|
|
2052
|
+
// #5544 P2: name the occupancy file (and effectiveRoot when the Write gate
|
|
2053
|
+
// supplies this projectRoot) so CLI/hook split-brain is diagnosable.
|
|
2054
|
+
const path = occupancyPath(projectRoot);
|
|
1851
2055
|
return {
|
|
1852
2056
|
allow: false,
|
|
1853
2057
|
// The refused caller is told what identity it actually presented (#3873).
|
|
1854
2058
|
// A hook process cannot otherwise know, and the grant this message offers
|
|
1855
2059
|
// is only runnable when the occupant can name a non-empty child.
|
|
1856
|
-
message: formatOccupancyRemediation(live, now, incoming, input.env)
|
|
2060
|
+
message: `${formatOccupancyRemediation(live, now, incoming, input.env, projectRoot)} ` +
|
|
2061
|
+
formatOccupancyLeaseViewNote(path, { effectiveRoot: projectRoot }),
|
|
1857
2062
|
occupant: live,
|
|
1858
2063
|
refreshed: false,
|
|
1859
2064
|
warning: null,
|
|
@@ -2031,6 +2236,8 @@ persistProductMutationMarker = false) {
|
|
|
2031
2236
|
* heartbeat into long verbs cannot close that deadlock: this verb is owner-only.
|
|
2032
2237
|
*/
|
|
2033
2238
|
export function heartbeatOccupancy(projectRoot, input = {}) {
|
|
2239
|
+
// #5544: heartbeat shares claim/release lease-root view.
|
|
2240
|
+
projectRoot = resolveOccupancyLeaseRoot(projectRoot);
|
|
2034
2241
|
const now = input.now ?? new Date();
|
|
2035
2242
|
const path = occupancyPath(projectRoot);
|
|
2036
2243
|
const identity = resolvePresentedIdentity(input);
|
|
@@ -2072,7 +2279,7 @@ export function heartbeatOccupancy(projectRoot, input = {}) {
|
|
|
2072
2279
|
sessionId: caller,
|
|
2073
2280
|
record: live,
|
|
2074
2281
|
path,
|
|
2075
|
-
message: membershipOwnerDenial(live, caller, now, "occupancy:heartbeat") + split,
|
|
2282
|
+
message: membershipOwnerDenial(live, caller, now, "occupancy:heartbeat", projectRoot) + split,
|
|
2076
2283
|
code: 1,
|
|
2077
2284
|
};
|
|
2078
2285
|
}
|