@rubytech/create-maxy-code 0.1.210 → 0.1.212

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.
@@ -8,7 +8,7 @@ import { loadConfig } from './config.js';
8
8
  import { buildSystemdRunArgv, defaultSystemctlRunner, reapOrphanNonPtyScopes, scopeUnitName, } from './systemd-scope.js';
9
9
  import { buildHttpApp } from './http-server.js';
10
10
  import { systemdSpawn } from './systemd-spawn.js';
11
- import { forEachLivePty, livePtyCount, extractServerNameFromQualifiedTool } from './pty-spawner.js';
11
+ import { forEachLivePty, livePtyCount, extractServerNameFromQualifiedTool, runPostArchiveSweep } from './pty-spawner.js';
12
12
  import { loadToolSurface, ToolSurfaceError } from './tool-surface.js';
13
13
  import { createSpawnRateLimiter } from './spawn-rate-limiter.js';
14
14
  import { createAuditRegistry } from './public-tool-audit.js';
@@ -524,12 +524,40 @@ async function main() {
524
524
  // journalctl-based fast-exit diagnostic.
525
525
  systemdSpawn: (p) => systemdSpawn({ ...p, runSystemctl: defaultSystemctlRunner }),
526
526
  });
527
+ // Task 558 — independent post-archive fd sweep. Runs on a fixed
528
+ // interval (60 s), decoupled from spawn/archive request traffic so a
529
+ // master-fd leak surfaces within one sweep interval even with zero
530
+ // user activity. The `runPostArchiveSweep` helper owns the
531
+ // `livePtys` walk; this closure supplies the watcher-derived row
532
+ // state (archived/live) and the archive timestamp. `unref()` keeps
533
+ // the timer from blocking process exit.
534
+ const POST_ARCHIVE_SWEEP_INTERVAL_MS = 60_000;
535
+ const ORPHAN_MASTER_ESCALATE_MS = 300_000;
536
+ const postArchiveSweepTimer = setInterval(() => {
537
+ try {
538
+ runPostArchiveSweep({
539
+ logger: log,
540
+ isArchived: (sessionId) => watcher.getBySessionId(sessionId)?.state === 'archived',
541
+ liveSessionIds: () => watcher.all().filter((r) => r.state !== 'archived').map((r) => r.sessionId),
542
+ archivedAtMs: (sessionId) => {
543
+ const row = watcher.getBySessionId(sessionId);
544
+ return row && row.state === 'archived' && row.updatedAt > 0 ? row.updatedAt : null;
545
+ },
546
+ ageEscalateMs: ORPHAN_MASTER_ESCALATE_MS,
547
+ });
548
+ }
549
+ catch (err) {
550
+ log(`[fd-audit] op=post-archive-sweep-error err=${err instanceof Error ? err.message : String(err)}`);
551
+ }
552
+ }, POST_ARCHIVE_SWEEP_INTERVAL_MS);
553
+ postArchiveSweepTimer.unref();
527
554
  const shutdown = (signal) => {
528
555
  log(`shutdown signal=${signal} sessions=${livePtyCount()}`);
529
556
  publicToolAudit.drain();
530
557
  rcDaemon.stop();
531
558
  reaper.stop();
532
559
  watcher.close();
560
+ clearInterval(postArchiveSweepTimer);
533
561
  // Task 250 + 260 — manager shutdown NO LONGER kills the PTYs.
534
562
  // Each claude PTY lives in its own `claude-session-<token>.scope`
535
563
  // cgroup owned by user systemd; on manager restart, only the
@@ -538,17 +566,29 @@ async function main() {
538
566
  // fd closes here. We still release the master fd locally — that's
539
567
  // manager-owned state — and walk the module-scoped tracker map
540
568
  // (Task 260) instead of the deleted SessionStore.
569
+ //
570
+ // Task 558 — quantify the master-audit at shutdown so the
571
+ // out-of-scope "does manager restart kill on-device live sessions"
572
+ // question is answered by a logged number, not speculation. `held`
573
+ // is the count of trackers in `livePtys` at shutdown entry;
574
+ // `liveSessionsClosed` is the subset whose `master-fd=released`
575
+ // here (i.e. node-pty masters destroyed by this shutdown call).
576
+ let held = 0;
577
+ let liveSessionsClosed = 0;
541
578
  forEachLivePty((t) => {
579
+ held++;
542
580
  const unit = scopeUnitName(t.scopeUnitToken);
543
- const released = t.fdReleased;
544
- if (!released) {
581
+ const releasedBefore = t.fdReleased;
582
+ if (!releasedBefore) {
545
583
  try {
546
584
  t.pty.destroy?.();
585
+ liveSessionsClosed++;
547
586
  }
548
587
  catch { /* fd may already be gone */ }
549
588
  }
550
- log(`[manager-shutdown] survives unit=${unit} sessionId=${t.sessionId} pid=${t.pid} master-fd=${released ? 'closed' : 'released'}`);
589
+ log(`[manager-shutdown] survives unit=${unit} sessionId=${t.sessionId} pid=${t.pid} master-fd=${releasedBefore ? 'closed' : 'released'}`);
551
590
  });
591
+ log(`[manager-shutdown] op=master-audit held=${held} liveSessionsClosed=${liveSessionsClosed}`);
552
592
  process.exit(0);
553
593
  };
554
594
  process.on('SIGTERM', () => shutdown('SIGTERM'));
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -562,6 +562,56 @@ export declare const killSession: typeof stopSession;
562
562
  * log lines so an rc-spawn leak is visible as `openFds` rising while
563
563
  * `livePtys` stays flat across successive spawns. */
564
564
  export declare function openFdCount(): number;
565
+ /** Task 558 — independent post-archive fd sweep. Runs on a timer (see
566
+ * `index.ts`), decoupled from spawn/archive request traffic so a leak
567
+ * surfaces within one sweep interval even with zero user activity.
568
+ *
569
+ * Inputs are functions, not data, because the watcher's row state is
570
+ * owned by `index.ts`; this module owns `livePtys`. The sweep is the
571
+ * bidirectional reconciliation between them:
572
+ *
573
+ * - For every entry in `livePtys` where `isArchived(sessionId)` →
574
+ * `archivedWithMaster` (the fd leak). Emits `op=orphan-master` and,
575
+ * if held longer than `ageEscalateMs` past tracker registration,
576
+ * `op=orphan-master-escalate`.
577
+ * - For every live (un-archived) session that the watcher knows
578
+ * about where `!livePtys.has(sessionId)` →
579
+ * `orphanLiveSessionsNoMaster` (the inverse defect; a live session
580
+ * that cannot operate because its master is gone).
581
+ *
582
+ * Emits `op=post-archive-sweep` and `op=master-reconcile` once per
583
+ * invocation regardless of findings — the "zero leaks" steady state is
584
+ * itself a signal the sweep ran.
585
+ *
586
+ * `archivedAtMs(sessionId)` is consulted per orphan-master; if the
587
+ * watcher cannot supply an archive timestamp, the sweep falls back to
588
+ * `trackerRegisteredAt` (the master cannot have been held longer than
589
+ * the manager has known about its tracker). `heldSinceArchiveMs` is
590
+ * the gap from that timestamp to wall-clock now.
591
+ *
592
+ * The per-orphan `fd=` field is `unknown` today: node-pty's IPty does
593
+ * not expose its master fd number through the typed surface this
594
+ * manager imports, and walking `/proc/<pid>/fd/*` lsof-style is out of
595
+ * scope. The orphan's identity is the sessionId + pid; the missing fd
596
+ * number does not change the alarm semantics. */
597
+ export interface PostArchiveSweepDeps {
598
+ logger: Logger;
599
+ isArchived(sessionId: string): boolean;
600
+ liveSessionIds(): string[];
601
+ archivedAtMs(sessionId: string): number | null;
602
+ ageEscalateMs: number;
603
+ now?(): number;
604
+ }
605
+ export interface PostArchiveSweepSummary {
606
+ archivedSessions: number;
607
+ orphanMasters: number;
608
+ liveTrackers: number;
609
+ liveSessions: number;
610
+ archivedWithMaster: number;
611
+ orphanLiveSessionsNoMaster: number;
612
+ escalated: number;
613
+ }
614
+ export declare function runPostArchiveSweep(deps: PostArchiveSweepDeps): PostArchiveSweepSummary;
565
615
  /** Task 557 — register an rc-spawn PTY in the live tracker map so the
566
616
  * master fd has a defined owner and release path. Mirrors the tracker
567
617
  * shape `spawnClaudeSession` writes (Task 260), but skips the spawn
@@ -575,15 +625,15 @@ export declare function openFdCount(): number;
575
625
  export declare function registerRcSpawnPty(deps: {
576
626
  logger: Logger;
577
627
  }, sessionId: string, pty: PtyHandle, unitToken: string): PtyTracker;
578
- /** Task 557release the master fd at the rc-spawn safe-release point
579
- * (post session-ready) and unregister the tracker. Idempotent via
580
- * `tracker.fdReleased`. Once `destroy()` closes node-pty's internal
581
- * socket, `pty.onExit` no longer fires for the surviving child (the
582
- * scope's `trap "" HUP` + `script(1)` wrap keep claude alive in its own
583
- * cgroup), so the tracker entry must be deleted here otherwise it
584
- * accumulates one stale entry per rc-spawn. Returns the log suffix and
585
- * the post-release fd count so the caller can emit the lifecycle line
586
- * and the `[fd-census]` line in a single point-of-truth. */
628
+ /** Task 558 — the rc-spawn `op=fd-release trigger=session-ready` path
629
+ * (Task 557) is gone: the master IS the live session, not a reclaimable
630
+ * spawn artifact. The tracker is now released only by `handlePtyNaturalExit`
631
+ * (the slave exited on its own) or by `stopSession`'s `op=archive-release`
632
+ * (operator teardown). This export remains only because tests under
633
+ * `__tests__/` reach for it directly; its body is the same idempotent
634
+ * release-and-detach, called solely from those tests. Once those tests
635
+ * switch to the `op=archive-release` shape (Task 558 verification), this
636
+ * export can go. */
587
637
  export declare function releaseAndUnregisterRcSpawnPty(deps: {
588
638
  logger: Logger;
589
639
  }, tracker: PtyTracker, trigger: string): {
@@ -1 +1 @@
1
- {"version":3,"file":"pty-spawner.d.ts","sourceRoot":"","sources":["../src/pty-spawner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pty-spawner.d.ts","sourceRoot":"","sources":["../src/pty-spawner.ts"],"names":[],"mappings":"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"}
@@ -85,6 +85,12 @@ import { discoverHooks } from './hooks-discovery.js';
85
85
  // when investigating a "stop did nothing" report.
86
86
  const livePtys = new Map();
87
87
  const priorExitedBySessionId = new Map();
88
+ /** Task 558 — track when each tracker was registered (manager-process
89
+ * wall clock, ms). The post-archive sweep uses this as the lower
90
+ * bound for `heldSinceArchiveMs`: the master cannot have been held
91
+ * longer than the manager has known about its tracker. Module-scoped
92
+ * so the existing PtyTracker shape stays unchanged. */
93
+ const trackerRegisteredAt = new Map();
88
94
  /** Task 455 — canonical alive resolver. Returns the tracker for
89
95
  * `sessionId` only when an entry exists AND it has not been marked
90
96
  * exited. Module-private; the public readers below thread through
@@ -155,6 +161,7 @@ export function livePtyCount() {
155
161
  export function __resetPtyTrackerForTests() {
156
162
  livePtys.clear();
157
163
  priorExitedBySessionId.clear();
164
+ trackerRegisteredAt.clear();
158
165
  }
159
166
  /** Test-only — clear the exit-history counter between vitest cases.
160
167
  * Production never invokes this; the counter resets naturally on
@@ -170,6 +177,7 @@ export function __resetExitHistoryForTests() {
170
177
  * `killSession` / `handlePtyNaturalExit` against it. */
171
178
  export function __registerPtyTrackerForTests(tracker) {
172
179
  livePtys.set(tracker.sessionId, tracker);
180
+ trackerRegisteredAt.set(tracker.sessionId, Date.now());
173
181
  }
174
182
  /** Task 171 — specialists whose `--agent <name>` spawn has no human in the
175
183
  * loop: no operator browser tab, no chat channel, no `claude.ai/code/session_<id>`
@@ -539,6 +547,7 @@ function checkSlotsAndMaybeEvict(deps, args) {
539
547
  void stopScopeUnit(run, victim.scopeUnitToken).catch(() => { });
540
548
  }
541
549
  livePtys.delete(idleOldest.sessionId);
550
+ trackerRegisteredAt.delete(idleOldest.sessionId);
542
551
  deps.logger(`[pty-cap] specialist-cap-reached account=${deps.accountId} current=${specialistRows.length} cap=${deps.specialistCap} evicted=${idleOldest.sessionId} pty-tracker-size=${livePtys.size}`);
543
552
  }
544
553
  if (liveRows.length >= deps.totalPtyCap - deps.operatorReserve) {
@@ -1394,6 +1403,7 @@ export async function spawnClaudeSession(deps, args) {
1394
1403
  scopeUnitToken: unitToken,
1395
1404
  };
1396
1405
  livePtys.set(sessionId, tracker);
1406
+ trackerRegisteredAt.set(sessionId, Date.now());
1397
1407
  deps.logger(`[pty-tracker] op=spawn sessionId=${sessionId.slice(0, 8)} pid=${pty.pid} size=${livePtys.size}`);
1398
1408
  if (hidden) {
1399
1409
  deps.logger(`hidden-spawn specialist=${specialist ?? 'none'} sessionId=${sessionId} pid=${pty.pid}`);
@@ -1595,8 +1605,10 @@ export function handlePtyNaturalExit(deps, tracker, exit, stderrTail) {
1595
1605
  // A subsequent spawn could have replaced the entry under the same
1596
1606
  // sessionId (LRU recycle in production; cross-fixture sessionId
1597
1607
  // collision in tests).
1598
- if (livePtys.get(tracker.sessionId) === tracker)
1608
+ if (livePtys.get(tracker.sessionId) === tracker) {
1599
1609
  livePtys.delete(tracker.sessionId);
1610
+ trackerRegisteredAt.delete(tracker.sessionId);
1611
+ }
1600
1612
  deps.logger(`kill pid=${tracker.pid} reason=process-exited exit-code=${exit.exitCode} signal=${exit.signal ?? 'none'} stderr-tail=${formatTailForLog(stderrTail)} ${fdSuffix}`);
1601
1613
  deps.logger(`[pty-tracker] op=exit sessionId=${tracker.sessionId.slice(0, 8)} pid=${tracker.pid} size=${livePtys.size}`);
1602
1614
  }
@@ -1617,6 +1629,55 @@ function releasePtyMasterFd(t) {
1617
1629
  return `master-fd=close-failed err=${JSON.stringify(msg)}`;
1618
1630
  }
1619
1631
  }
1632
+ /** Task 558 — `op=archive-release` shape. The operator-archive (UI End
1633
+ * click → `/stop`) is the canonical and ONLY master-fd release point
1634
+ * for an rc-spawn or operator session. This helper performs the release
1635
+ * with full verification:
1636
+ *
1637
+ * 1. Snapshot `/proc/self/fd` BEFORE the destroy (set of fd numbers).
1638
+ * 2. Run `releasePtyMasterFd` — captures `master-fd=<closed|close-failed>`.
1639
+ * 3. Snapshot `/proc/self/fd` AFTER. The set-difference is the
1640
+ * released fd number(s); the single-fd case is the happy path.
1641
+ * 4. Delete the tracker from `livePtys` + `trackerRegisteredAt` if
1642
+ * identity still matches (LRU-recycle guard).
1643
+ * 5. Emit `[rc-spawn] op=archive-release sessionId=… pid=…
1644
+ * master-fd=<status> fdBefore=N fdAfter=N fdDelta=N
1645
+ * removedFds=<list> trackerRemoved=<bool> verified=<bool>`.
1646
+ *
1647
+ * `verified=true` iff `master-fd=closed` AND `fdDelta>=1` AND
1648
+ * `trackerRemoved=true`. `master-fd=close-failed` is logged at error
1649
+ * level (`[rc-spawn-error]` prefix) — never swallowed; the next
1650
+ * post-archive sweep is the catch-net for that surface.
1651
+ *
1652
+ * Procfs absent (darwin dev Mac): `readOpenFdSet()` returns an empty
1653
+ * Set, so `fdBefore`/`fdAfter`/`fdDelta` all report 0 and `verified`
1654
+ * collapses to `master-fd=closed && trackerRemoved`. The verification
1655
+ * is best-effort on platforms without procfs — the manager process
1656
+ * itself only runs on linux in production. */
1657
+ function archiveReleaseTracker(deps, t, sessionId) {
1658
+ const fdBeforeSet = readOpenFdSet();
1659
+ const suffix = t.fdReleased ? 'master-fd=closed' : releasePtyMasterFd(t);
1660
+ if (suffix === 'master-fd=closed')
1661
+ t.fdReleased = true;
1662
+ const fdAfterSet = readOpenFdSet();
1663
+ let trackerRemoved = false;
1664
+ if (livePtys.get(sessionId) === t) {
1665
+ livePtys.delete(sessionId);
1666
+ trackerRegisteredAt.delete(sessionId);
1667
+ trackerRemoved = true;
1668
+ }
1669
+ const fdBefore = fdBeforeSet.size;
1670
+ const fdAfter = fdAfterSet.size;
1671
+ const fdDelta = fdBefore - fdAfter;
1672
+ const removed = [];
1673
+ for (const fd of fdBeforeSet)
1674
+ if (!fdAfterSet.has(fd))
1675
+ removed.push(fd);
1676
+ const verified = suffix === 'master-fd=closed' && fdDelta >= 1 && trackerRemoved;
1677
+ const prefix = suffix.startsWith('master-fd=close-failed') ? '[rc-spawn-error]' : '[rc-spawn]';
1678
+ deps.logger(`${prefix} op=archive-release sessionId=${sessionId.slice(0, 8)} pid=${t.pid} ${suffix} fdBefore=${fdBefore} fdAfter=${fdAfter} fdDelta=${fdDelta} removedFds=${removed.length === 0 ? 'none' : removed.join(',')} trackerRemoved=${trackerRemoved} verified=${verified}`);
1679
+ return { suffix, verified };
1680
+ }
1620
1681
  /** Task 250 + 260 — operator-request stop. Issues `systemctl --user
1621
1682
  * stop --no-block <scope>` against the PTY's scope unit (Task 250)
1622
1683
  * instead of `pty.kill('SIGTERM')`; the scope's TimeoutStopSec=5 handles
@@ -1683,11 +1744,7 @@ export async function stopSession(deps, sessionId) {
1683
1744
  // branch unreachable on entry: an exited tracker never resolves.
1684
1745
  // The check is kept as belt-and-braces in case `t.exited` flips
1685
1746
  // to true during a future `await` inserted into the happy path.
1686
- const fdSuffix = t.fdReleased ? 'master-fd=closed' : releasePtyMasterFd(t);
1687
- if (fdSuffix === 'master-fd=closed')
1688
- t.fdReleased = true;
1689
- if (livePtys.get(sessionId) === t)
1690
- livePtys.delete(sessionId);
1747
+ const { suffix: fdSuffix } = archiveReleaseTracker({ logger: deps.logger }, t, sessionId);
1691
1748
  deps.logger(`[stop-session] systemd-scope-stop unit=${unit} outcome=already-exited ms=${Date.now() - start} sessionId=${sessionId} pid=${t.pid} ${fdSuffix}`);
1692
1749
  deps.logger(`[pty-tracker] op=exit sessionId=${sessionId.slice(0, 8)} pid=${t.pid} size=${livePtys.size}`);
1693
1750
  return { existed: true, path: 'liveptys', scopeOutcome: 'already-gone', exitCode: null };
@@ -1704,12 +1761,11 @@ export async function stopSession(deps, sessionId) {
1704
1761
  // outcome=ok or already-gone — both mean the scope is on its way out (or
1705
1762
  // already retired). Release the manager-side master fd and drop the
1706
1763
  // tracker entry; the watcher will observe Claude Code's PID-file delete
1707
- // shortly and emit the archive transition.
1708
- const fdSuffix = t.fdReleased ? 'master-fd=closed' : releasePtyMasterFd(t);
1709
- if (fdSuffix === 'master-fd=closed')
1710
- t.fdReleased = true;
1711
- if (livePtys.get(sessionId) === t)
1712
- livePtys.delete(sessionId);
1764
+ // shortly and emit the archive transition. Task 558 routes the release
1765
+ // through `archiveReleaseTracker` so every operator-stop emits a
1766
+ // verified `op=archive-release` line — the only window a real
1767
+ // master-fd leak can exist.
1768
+ const { suffix: fdSuffix } = archiveReleaseTracker({ logger: deps.logger }, t, sessionId);
1713
1769
  deps.logger(`[stop-session] systemd-scope-stop unit=${unit} outcome=${stop.outcome} ms=${Date.now() - start} sessionId=${sessionId} pid=${t.pid} ${fdSuffix}`);
1714
1770
  deps.logger(`[pty-tracker] op=exit sessionId=${sessionId.slice(0, 8)} pid=${t.pid} size=${livePtys.size}`);
1715
1771
  return {
@@ -1735,6 +1791,60 @@ export function openFdCount() {
1735
1791
  return -1;
1736
1792
  }
1737
1793
  }
1794
+ /** Task 558 — set-valued companion to `openFdCount`. Returns the set of
1795
+ * fd numbers (as strings) in `/proc/self/fd`. Empty Set on platforms
1796
+ * without procfs (darwin) or on read failure — distinguishable from a
1797
+ * genuinely-empty fd set because the manager process always holds at
1798
+ * least stdin/stdout/stderr. Callers that need to identify a specific
1799
+ * closed fd take the set-difference (before − after). */
1800
+ function readOpenFdSet() {
1801
+ try {
1802
+ return new Set(readdirSync('/proc/self/fd'));
1803
+ }
1804
+ catch {
1805
+ return new Set();
1806
+ }
1807
+ }
1808
+ export function runPostArchiveSweep(deps) {
1809
+ const now = (deps.now ?? Date.now)();
1810
+ const liveSessionIds = deps.liveSessionIds();
1811
+ const liveSessionSet = new Set(liveSessionIds);
1812
+ let archivedWithMaster = 0;
1813
+ let escalated = 0;
1814
+ for (const [sessionId, tracker] of livePtys.entries()) {
1815
+ if (!deps.isArchived(sessionId))
1816
+ continue;
1817
+ archivedWithMaster++;
1818
+ const archivedAt = deps.archivedAtMs(sessionId) ?? trackerRegisteredAt.get(sessionId) ?? now;
1819
+ const heldSinceArchiveMs = Math.max(0, now - archivedAt);
1820
+ deps.logger(`[fd-audit] op=orphan-master sessionId=${sessionId.slice(0, 8)} pid=${tracker.pid} archivedAt=${archivedAt} heldSinceArchiveMs=${heldSinceArchiveMs} fd=unknown`);
1821
+ if (heldSinceArchiveMs >= deps.ageEscalateMs) {
1822
+ escalated++;
1823
+ deps.logger(`[fd-audit] op=orphan-master-escalate sessionId=${sessionId.slice(0, 8)} fd=unknown heldSinceArchiveMs=${heldSinceArchiveMs}`);
1824
+ }
1825
+ }
1826
+ let orphanLiveSessionsNoMaster = 0;
1827
+ for (const sessionId of liveSessionIds) {
1828
+ if (!livePtys.has(sessionId))
1829
+ orphanLiveSessionsNoMaster++;
1830
+ }
1831
+ let archivedSessions = 0;
1832
+ for (const sessionId of livePtys.keys())
1833
+ if (deps.isArchived(sessionId))
1834
+ archivedSessions++;
1835
+ const summary = {
1836
+ archivedSessions,
1837
+ orphanMasters: archivedWithMaster,
1838
+ liveTrackers: livePtys.size,
1839
+ liveSessions: liveSessionSet.size,
1840
+ archivedWithMaster,
1841
+ orphanLiveSessionsNoMaster,
1842
+ escalated,
1843
+ };
1844
+ deps.logger(`[fd-audit] op=post-archive-sweep archivedSessions=${summary.archivedSessions} orphanMasters=${summary.orphanMasters} openFds=${openFdCount()} livePtys=${summary.liveTrackers}`);
1845
+ deps.logger(`[fd-audit] op=master-reconcile liveTrackers=${summary.liveTrackers} liveSessions=${summary.liveSessions} archivedWithMaster=${summary.archivedWithMaster} orphanLiveSessionsNoMaster=${summary.orphanLiveSessionsNoMaster}`);
1846
+ return summary;
1847
+ }
1738
1848
  /** Task 557 — register an rc-spawn PTY in the live tracker map so the
1739
1849
  * master fd has a defined owner and release path. Mirrors the tracker
1740
1850
  * shape `spawnClaudeSession` writes (Task 260), but skips the spawn
@@ -1759,27 +1869,30 @@ export function registerRcSpawnPty(deps, sessionId, pty, unitToken) {
1759
1869
  scopeUnitToken: unitToken,
1760
1870
  };
1761
1871
  livePtys.set(sessionId, tracker);
1872
+ trackerRegisteredAt.set(sessionId, Date.now());
1762
1873
  deps.logger(`[pty-tracker] op=spawn sessionId=${sessionId.slice(0, 8)} pid=${pty.pid} size=${livePtys.size}`);
1763
1874
  pty.onExit((e) => {
1764
1875
  handlePtyNaturalExit(deps, tracker, e, '');
1765
1876
  });
1766
1877
  return tracker;
1767
1878
  }
1768
- /** Task 557release the master fd at the rc-spawn safe-release point
1769
- * (post session-ready) and unregister the tracker. Idempotent via
1770
- * `tracker.fdReleased`. Once `destroy()` closes node-pty's internal
1771
- * socket, `pty.onExit` no longer fires for the surviving child (the
1772
- * scope's `trap "" HUP` + `script(1)` wrap keep claude alive in its own
1773
- * cgroup), so the tracker entry must be deleted here otherwise it
1774
- * accumulates one stale entry per rc-spawn. Returns the log suffix and
1775
- * the post-release fd count so the caller can emit the lifecycle line
1776
- * and the `[fd-census]` line in a single point-of-truth. */
1879
+ /** Task 558 — the rc-spawn `op=fd-release trigger=session-ready` path
1880
+ * (Task 557) is gone: the master IS the live session, not a reclaimable
1881
+ * spawn artifact. The tracker is now released only by `handlePtyNaturalExit`
1882
+ * (the slave exited on its own) or by `stopSession`'s `op=archive-release`
1883
+ * (operator teardown). This export remains only because tests under
1884
+ * `__tests__/` reach for it directly; its body is the same idempotent
1885
+ * release-and-detach, called solely from those tests. Once those tests
1886
+ * switch to the `op=archive-release` shape (Task 558 verification), this
1887
+ * export can go. */
1777
1888
  export function releaseAndUnregisterRcSpawnPty(deps, tracker, trigger) {
1778
1889
  const suffix = tracker.fdReleased ? 'master-fd=closed' : releasePtyMasterFd(tracker);
1779
1890
  if (suffix === 'master-fd=closed')
1780
1891
  tracker.fdReleased = true;
1781
- if (livePtys.get(tracker.sessionId) === tracker)
1892
+ if (livePtys.get(tracker.sessionId) === tracker) {
1782
1893
  livePtys.delete(tracker.sessionId);
1894
+ trackerRegisteredAt.delete(tracker.sessionId);
1895
+ }
1783
1896
  deps.logger(`[pty-tracker] op=detach sessionId=${tracker.sessionId.slice(0, 8)} pid=${tracker.pid} trigger=${trigger} size=${livePtys.size}`);
1784
1897
  return { suffix, openFds: openFdCount() };
1785
1898
  }