Skip to content

Re-vendor skill-lib at 32a8a9f (skill-lib#121: TypeScript reader fail-closed) - #82

Closed
erinepshovel-code wants to merge 3 commits into
mainfrom
sync/skill-lib-32a8a9f
Closed

erinepshovel-code wants to merge 3 commits into
mainfrom
sync/skill-lib-32a8a9f

Conversation

@erinepshovel-code

Copy link
Copy Markdown
Contributor

Re-vendors the root skill-lib/ snapshot to The-Interdependency/skill-lib 32a8a9f (the merge of skill-lib#121, TypeScript reader fail-closed), the same way #78 did for 1b1a947. Erin merges.

Warning

This PR does NOT fix the vm-mcp hole. The vendored skill-lib/vm-mcp still has the unauthenticated loopback admin_exec, exactly as at 1b1a947. It stays until skill-lib#123 merges and a later stack pin picks it up. (0e38909, which carried that fix, is in this compare range, but 2ecdc8f reverted it, so it nets to nothing here.)

Compare range

1b1a9473fcbaab16965af9907e4aafd12853a704..32a8a9f0fdb07e725c122bf45d58ed3169d409be: skill-lib#119 (3d42ca1), #122 (19b1988, consumer drift tools and wdll) and #121 (32a8a9f).

What's included

  • skill-lib/ re-vendored from git archive 32a8a9f. Stack tree HEAD:skill-lib = 027ab8ca7e1a9de8949c3820cdee6529a8ccd8b7 = skill-lib 32a8a9f^{tree}. All 244 entries match in path, mode and blob.
  • Pin sites moved from 1b1a947 to 32a8a9f: stack-manifest.json, STACK_MANIFEST.md, README.md, backend/fresh-making-provenance.json (doctrine and generator snapshot commits, plus skill_lib_compare = the range above), ahbg/integration/work-graph.json (consumed_commit and the decision text), and backend/deploy/VM_SETUP.md. work_graph_sha256 is recomputed to 7cdbe321…929b.
  • Generator-change notes in fresh-making-provenance.json (msdmd_generator_changes). fresh_making_doctrine_changed_in_range stays false (fresh-making/SKILL.md is unchanged in the range), and msdmd_generator_changed_in_range stays true.
  • backend/msdmd.py exit-3 hint. The collector's exit 3 now also means a failed or timed-out TypeScript reader or worker, so the refusal is renamed reader-runtime-missing → reader-runtime-failed. Its operator action now covers a missing runtime, reader or worker failure, and timeout, not just installing runtimes. New test: test_exit_3_hint_covers_reader_failures_and_timeouts.
  • Review P3: backend/ops/worker_sandbox_run.sh had # === END MODULE_BUILD === fused with the # Usage: line. They are now split. New test: test_module_build_marker_stands_alone.
  • VM_SETUP.md documents the new exit-3 cases and the deep-input behaviour.

Collector flags are unchanged.

Expected behaviour: deep TypeScript publishes at exit 0

Stack does not pass --strict. So a valid TypeScript file that is nested too deeply for the jitless reader publishes with a per-file typescript_input_too_deep diagnostic (error severity, no facts for that file) and the collector exits 0. That is expected. Other files are collected normally. I checked this locally with the vendored tree, Node 24 and TypeScript 5.8.3: a 4000-term chained + file gave exit 0, one typescript_input_too_deep, and the sibling file's facts intact.

Deploy notes

  • Derivations re-key. The collector sources changed, so the generator identity and every MSDMD derivation change on deploy (source digest b98837…8abc).
  • Rerun the sandboxed install probe (backend/ops/install_msdmd_runtime.sh, which probes through worker_sandbox_run.sh under the worker unit's MemoryDenyWriteExecute). The probe now loads the TypeScript compiler.
  • Still outstanding from chore(skill-lib): refresh root skill-lib snapshot to 1b1a947 (#120) #78: the real VM sandbox check and the 2 PostgreSQL tests.

Local checks

  • tools/check_stack_consistency.py: pass.
  • portfolio_plan.py validation and the ancestor check: OK.
  • bash -n backend/ops/*.sh: OK.
  • Backend tests: 43 run, 2 skipped (Postgres), on Python 3.13 with Node 24.
  • AHBG suites all OK: grok a0, grok ahbg, grok common-corpus, runtime, benchmark, integration and presentation, plus node --check board.js.

hmmm

  • research/weave/CYCLE_WORK_GRAPH.json still cites skill-lib 9867ab3, and backend/deploy/VM_CONTACT.md cites 222ba4d. These look like cycle-specific and producer records, not snapshot pins, so I left them.
  • .agents/skills/stack-update/PROVENANCE.json (a7b95f8) is an independent pin, and its blob is unchanged at 32a8a9f.
  • Stack's identity subprocess timeout (STACK_IDENTITY_TIMEOUT_SECONDS, default 120) equals skill-lib's new 120 s probe timeout. The probe takes about 0.4 s in practice.

Exact copy of git archive The-Interdependency/skill-lib@32a8a9f
(compare 1b1a947..32a8a9f): TypeScript reader failures and timeouts fail
closed (exit 3), deep valid input is a per-file typescript_input_too_deep
diagnostic, and #122's consumer-drift and wdll changes.
Moves every 1b1a947 citation to 32a8a9f, records the 1b1a947..32a8a9f
compare range and generator-change notes, recomputes work_graph_sha256,
and documents the new exit-3 and deep-input behaviour in VM_SETUP.
…MODULE_BUILD end marker

Since skill-lib#121, collector exit 3 also means a failed or timed-out
TypeScript reader or worker, so the refusal is renamed reader-runtime-failed
and its operator action no longer points only at installing runtimes.
worker_sandbox_run.sh had the END MODULE_BUILD marker fused with the Usage
comment (Review P3); they are now separate lines. Tests cover both.
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 11, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-11T19:59:06.791482Z 43096bd PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 43096bd56a

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +127 to +130
Since The-Interdependency/skill-lib#121 (in `32a8a9f`), any TypeScript reader
or worker failure (nonzero exit, signal, incomplete output, refused flag) and
any reader run past the 120-second default timeout makes the collector exit 3
without writing, and the worker records it as a `reader-runtime-failed`

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Keep the collector timeout below the backend timeout

When the TypeScript identity probe hangs, the backend paths inspected in generator_identity() and generator_components() impose their own 120-second timeout (backend/msdmd.py:195,221), while the new collector timeout also defaults to 120 seconds and starts later, after the collector has launched and hashed its sources. The outer timeout therefore wins: it kills only the collector Python process, so the collector never exits 3 or records reader-runtime-failed, and the Node process—started in a separate session by run_node()—can survive as an orphan. Pass a shorter --typescript-timeout from the backend, increase the outer timeout, or make the outer timeout kill the entire process group.

Useful? React with 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant