chore: revert pty-smoke harness experiments (race-retry + CI debug step)

Diagnosis is conclusive and the experiments aren't the fix, so restore the
harness to its original state (net-zero diff vs main for both files).

What the CI debug step proved: `claude -p` returns READY — claude v2.1.187 fully
DISCOVERS /office-hours from the symlinked registry. Only the interactive PTY TUI
rejects it as "Unknown command" (and it received the full command text). So the
e2e-pty-plan-smoke failure is a claude 2.1.187 interactive-TUI regression (skills
discovered by `claude -p` aren't exposed as TUI slash commands), pre-existing in
the #2077 harness and failing identically on its own origin branch — unrelated to
this activation PR. The race-retry can't help (the TUI genuinely lacks the
command); the debug step also tripped actionlint (shellcheck SC2012). Both reverted.
This commit is contained in:
Garry Tan
2026-06-24 08:16:04 -07:00
parent 9e85de551e
commit 525254455a
2 changed files with 2 additions and 36 deletions
+2 -18
View File
@@ -1605,7 +1605,7 @@ export async function runPlanSkillObservation(opts: {
// command.
await Bun.sleep(3000);
}
let since = session.mark();
const since = session.mark();
session.send(`/${opts.skillName}\r`);
const budgetMs = opts.timeoutMs ?? 180_000;
@@ -1619,7 +1619,6 @@ export async function runPlanSkillObservation(opts: {
// even if the current state is 'working'.
let proseAUQEverObserved = false;
let waitingEverObserved = false;
let unknownCmdRetries = 0;
const JUDGE_AFTER_MS = 60_000;
const JUDGE_INTERVAL_MS = 30_000;
while (Date.now() - start < budgetMs) {
@@ -1635,24 +1634,9 @@ export async function runPlanSkillObservation(opts: {
};
}
if (visible.includes('Unknown command:')) {
// Skill-discovery race: in a cold CI container the overlay-FS scan of
// the symlinked ~/.claude/skills registry can finish AFTER the boot
// grace, so the first `/skill` send reaches claude before the skill is
// indexed and is rejected as unknown. (Reproduces only in CI — passes
// locally where claude is warm and discovery is instant.) Re-send the
// command a few times, re-marking first so the stale "Unknown command:"
// line in scrollback can't immediately re-trip this check, before
// concluding the skill is genuinely unregistered.
if (unknownCmdRetries < 3) {
unknownCmdRetries++;
await Bun.sleep(6000);
since = session.mark();
session.send(`/${opts.skillName}\r`);
continue;
}
return {
outcome: 'exited',
summary: `claude rejected /${opts.skillName} as unknown command after ${unknownCmdRetries} retries (skill not registered in this cwd)`,
summary: `claude rejected /${opts.skillName} as unknown command (skill not registered in this cwd)`,
evidence: visible.slice(-2000),
elapsedMs: Date.now() - startedAt,
};