Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .agents/pm/history/ops-85at.jsonl
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{"hash_algorithm":"sha256","ts":"2026-10-03T12:48:04.184Z","author":"dot","author_source":"asserted","agent_harness":"codex","agent_instance":"25c018dcfb758a86c17e1750","agent_provenance":{"model":null,"effort":null,"role":{"value":"implementer","source":"argv"},"topic":null},"op":"create","patch":[{"op":"add","path":"/metadata/id","value":"ops-85at"},{"op":"add","path":"/metadata/title","value":"Preserve launcher resolution errors when presence probes fail"},{"op":"add","path":"/metadata/description","value":"Canonical fix for https://github.com/unbraind/pm-ops/issues/135. The presence probe uses lstatSync with throwIfNoEntry:false, which suppresses ENOENT but still throws for unreadable or malformed lookup paths. Those secondary errors replace the original installer resolution diagnostic. Keep the existing local, hoisted, dangling-install and global Node lookup behavior; fail closed when presence is uncertain."},{"op":"add","path":"/metadata/type","value":"Issue"},{"op":"add","path":"/metadata/status","value":"in_progress"},{"op":"add","path":"/metadata/priority","value":1},{"op":"add","path":"/metadata/tags","value":[]},{"op":"add","path":"/metadata/created_at","value":"2026-10-03T12:48:04.184Z"},{"op":"add","path":"/metadata/updated_at","value":"2026-10-03T12:48:04.184Z"},{"op":"add","path":"/metadata/author","value":"dot"},{"op":"add","path":"/metadata/acceptance_criteria","value":"Preserve the original installer resolution error for real ENOTDIR/ELOOP paths and controlled EACCES/EPERM failures; an absent package still skips once; broken local, hoisted, dangling and global installs still fail; working local, hoisted and global installs still run; full applicable gates pass without broadening global fallback behavior"},{"op":"add","path":"/metadata/repro_steps","value":"Create a file or self-referential link at a consumer node_modules path, then execute templates/prepare-merge-driver.ts from the consumer root. The presence probe currently replaces the original MODULE_NOT_FOUND diagnostic with ENOTDIR or ELOOP."},{"op":"add","path":"/metadata/expected_result","value":"The hook fails closed with the original pm-ops/merge-driver/prepare resolution diagnostic and never emits the omit-dev skip notice on an inconclusive probe."},{"op":"add","path":"/metadata/actual_result","value":"Eight regression cases fail on the pre-fix template; all 19 launcher cases pass after guarding the filesystem presence check."},{"op":"add","path":"/metadata/dependencies","value":[{"id":"ops-jzp5","kind":"related","created_at":"2026-10-03T12:48:04.184Z","author":"dot","source_kind":"cli:create:dep","author_source":"detected"}]},{"op":"add","path":"/metadata/files","value":[{"path":"templates/prepare-merge-driver.ts","scope":"project"},{"path":"test/merge-driver-launcher.test.ts","scope":"project"},{"path":"README.md","scope":"project"}]},{"op":"add","path":"/metadata/tests","value":[{"command":"node --test test/merge-driver-launcher.test.ts","scope":"project","provenance":{"author":"dot","created_at":"2026-10-03T12:48:04.184Z","source_kind":"local_mutation","source_ref":"main"}}]}],"before_hash":"3cc22dff72be7b14824654a7a64ea62b04799939b2fee54c1b5f52ca60bf6df0","after_hash":"8f97868887dd9bfb45bfa39fd7a640dd52e6b73b1ed7b485d46ae929ca77ef6e","item_hash_version":3,"message":"Start canonical issue 135 after searching all 128 tracked items and checking related launcher work","context":{"agent_provenance_outcomes":{"model":{"status":"failed","reason":"resolver_failed","resolver":"codex_session_file","rule_version":"v1"},"effort":{"status":"failed","reason":"resolver_failed","resolver":"codex_session_file","rule_version":"v1"},"version":{"status":"unavailable","reason":"harness_unavailable","resolver":"ai_agent_version","rule_version":"v1"}}},"event_class":"substantive","record_hash_version":1,"record_hash":"f8c6c90773a0338f3eaf539b08af1cf693e36ef0d2b312cfac5fac92c88f0aa3"}
{"hash_algorithm":"sha256","ts":"2026-10-03T12:49:06.961Z","author":"dot","author_source":"asserted","agent_harness":"codex","agent_instance":"25c018dcfb758a86c17e1750","agent_provenance":{"model":null,"effort":null,"role":{"value":"implementer","source":"argv"},"topic":null},"op":"update","patch":[{"op":"replace","path":"/metadata/updated_at","value":"2026-10-03T12:49:06.961Z"},{"op":"add","path":"/metadata/notes","value":[{"created_at":"2026-10-03T12:49:06.944Z","author":"dot","text":"Duplicate-check correction: pm list --all returned 126 pre-existing items, not 128. Relevant records were ops-mqdi (in_progress), ops-jzp5/ops-eyi8/ops-crgk/ops-me3v (closed), and ops-wwu1 (canceled); none tracks the secondary lstat error replacement in GitHub issue 135."}]}],"before_hash":"8f97868887dd9bfb45bfa39fd7a640dd52e6b73b1ed7b485d46ae929ca77ef6e","after_hash":"a7b3035e2b75353f9be8d367ccba0f509635017edfb27857927bd96b9d87aab1","item_hash_version":3,"message":"Record exact duplicate-check count and related status review","context":{"agent_provenance_outcomes":{"model":{"status":"failed","reason":"resolver_failed","resolver":"codex_session_file","rule_version":"v1"},"effort":{"status":"failed","reason":"resolver_failed","resolver":"codex_session_file","rule_version":"v1"},"version":{"status":"unavailable","reason":"harness_unavailable","resolver":"ai_agent_version","rule_version":"v1"}}},"event_class":"maintenance","record_hash_version":1,"record_hash":"adb56dd15f29fa2dfec0fc8ac547f8d18fc4945e84c390f436d47161d20de66f"}
{"hash_algorithm":"sha256","ts":"2026-10-03T12:57:00.527Z","author":"dot","author_source":"asserted","agent_harness":"codex","agent_instance":"25c018dcfb758a86c17e1750","agent_provenance":{"model":null,"effort":null,"role":{"value":"implementer","source":"argv"},"topic":null},"op":"update","patch":[{"op":"add","path":"/metadata/tests/1","value":{"command":"npm run release:check","scope":"project","provenance":{"author":"dot","created_at":"2026-10-03T12:57:00.496Z","source_kind":"local_mutation","source_ref":"main"}}},{"op":"add","path":"/metadata/notes/1","value":{"created_at":"2026-10-03T12:57:00.496Z","author":"dot","text":"Implementation evidence: six real local/hoisted/global ENOTDIR/ELOOP fixtures plus controlled EACCES/EPERM fail against the old template and pass after the fix. The global lookup fixture proves existing missing/broken/working behavior is preserved. Independent static review found no correctness or coverage issues."}},{"op":"add","path":"/metadata/notes/2","value":{"created_at":"2026-10-03T12:57:00.496Z","author":"dot","text":"Remaining validation limits: the installed-CLI test times out at its existing 60-second npm install boundary; the same packed artifact installs in under one second with cached dependencies and audit disabled. Do not modify or duplicate the separate gate-hardening PR stack 132-134 here. The direct production audit was blocked pending authorization for dependency metadata transmission to the public npm registry. No commit, push, PR, release, merge or deployment performed."}},{"op":"add","path":"/metadata/notes/3","value":{"created_at":"2026-10-03T12:57:00.496Z","author":"dot","text":"text=Validation: npm ci --ignore-scripts with a writable temporary cache; check, lint, duplication (0 clone pairs), docstrings (221 declarations), build and build:test pass. Standalone strict template typecheck passes. Full history fetch fixed shallow-checkout identity tests. npm run pack:dry-run, changelog:check, verify:release-changelog-date, verify:release-publish-attestation and verify:lifecycle-policy pass. pm health --strict-exit --require-merge-drivers --check-only passes with the three pre-existing stale-item advisories after the inspected local prepare hook installed clone-local drivers."}},{"op":"replace","path":"/metadata/actual_result","value":"Eight red regression cases now pass. All 19 launcher tests pass on Node 22.18.0, 24.19.0 and 26.10.0. Final full Node 26 suite: 454 passed, one unrelated installed-CLI npm install timeout, two existing skips; all measured coverage dimensions remain 100%. Independent static, package, changelog, release-policy and PM health checks pass. Production audit awaits explicit approval; publication and CI are pending."},{"op":"replace","path":"/metadata/updated_at","value":"2026-10-03T12:57:00.527Z"},{"op":"add","path":"/metadata/resolution","value":"The canonical launcher catches inconclusive filesystem presence-probe failures and rethrows the original installer resolution error. Existing Node global lookup paths remain intentionally unchanged and their absent/broken/working behavior is documented and tested."}],"before_hash":"a7b3035e2b75353f9be8d367ccba0f509635017edfb27857927bd96b9d87aab1","after_hash":"30a969b2b414eeff3b7762d620b94edf21742bc326970f8e6690623ffc04c645","item_hash_version":3,"message":"Record local implementation, review, cross-version tests and explicit remaining gate limits","context":{"agent_provenance_outcomes":{"model":{"status":"failed","reason":"resolver_failed","resolver":"codex_session_file","rule_version":"v1"},"effort":{"status":"failed","reason":"resolver_failed","resolver":"codex_session_file","rule_version":"v1"},"version":{"status":"unavailable","reason":"harness_unavailable","resolver":"ai_agent_version","rule_version":"v1"}}},"event_class":"maintenance","record_hash_version":1,"record_hash":"51347558b174b18270f9f3e7b56fd4c4a12eef1c293238411e8af256837c9576"}
{"hash_algorithm":"sha256","ts":"2026-10-03T12:58:04.243Z","author":"dot","author_source":"asserted","agent_harness":"codex","agent_instance":"25c018dcfb758a86c17e1750","agent_provenance":{"model":null,"effort":null,"role":{"value":"implementer","source":"argv"},"topic":null},"op":"update","patch":[{"op":"add","path":"/metadata/notes/4","value":{"created_at":"2026-10-03T12:58:04.223Z","author":"dot","text":"Further timeout diagnosis: the isolated installed-CLI fixture drops this environment’s npm proxy variables. A no-audit reproduction still stalls fetching uncached TypeScript 7.0.2 optional platform package manifests (EAI_AGAIN). The offline reproduction skips unavailable optional manifests and installs the artifact in 639 ms. Public optional-package metadata is being cached without changing repository tests or policy."}},{"op":"replace","path":"/metadata/updated_at","value":"2026-10-03T12:58:04.243Z"}],"before_hash":"30a969b2b414eeff3b7762d620b94edf21742bc326970f8e6690623ffc04c645","after_hash":"88d700e71eac636e63509e2e715950c793299d8e2759779c10f31cd3dbdc5922","item_hash_version":3,"message":"Distinguish cached artifact health from isolated npm network timeout","context":{"agent_provenance_outcomes":{"model":{"status":"failed","reason":"resolver_failed","resolver":"codex_session_file","rule_version":"v1"},"effort":{"status":"failed","reason":"resolver_failed","resolver":"codex_session_file","rule_version":"v1"},"version":{"status":"unavailable","reason":"harness_unavailable","resolver":"ai_agent_version","rule_version":"v1"}}},"event_class":"maintenance","record_hash_version":1,"record_hash":"d5861e299e53236a1558f162402220faf39b94f3d7e8e791473cfb7a853e6ba0"}
{"hash_algorithm":"sha256","ts":"2026-10-03T13:01:04.849Z","author":"dot","author_source":"asserted","agent_harness":"codex","agent_instance":"25c018dcfb758a86c17e1750","agent_provenance":{"model":null,"effort":null,"role":{"value":"implementer","source":"argv"},"topic":null},"op":"update","patch":[{"op":"add","path":"/metadata/notes/5","value":{"created_at":"2026-10-03T13:01:04.773Z","author":"dot","text":"text=Full Node 26 coverage recovered without repository gate changes: cached the 20 public optional TypeScript package manifests that the isolated npm fixture could not fetch without proxy variables, then ran npm run coverage with an outside-repository npm launcher that disables implicit install audit and refuses explicit audit. Result: 457 tests, 455 passed, zero failed, two pre-existing skips, 100 percent in all four coverage dimensions across all 23 required sources. Production audit is not claimed; it still awaits explicit authorization."}},{"op":"replace","path":"/metadata/actual_result","value":"All 19 launcher cases pass on Node 22.18.0, 24.19.0 and 26.10.0; eight new cases fail on the original template. Full Node 26 coverage now passes: 455 passed, zero failed, two existing skips, all 23 sources at 100/100/100/100. All independent quality, package, changelog, release-policy and strict PM health checks pass. Production audit and publication remain pending."},{"op":"replace","path":"/metadata/updated_at","value":"2026-10-03T13:01:04.849Z"}],"before_hash":"88d700e71eac636e63509e2e715950c793299d8e2759779c10f31cd3dbdc5922","after_hash":"453dc6dba3df44264f26bdd9396ed7a03ee839b056855f4b7268e6f81df35003","item_hash_version":3,"message":"Record passing Node 26 aggregate coverage with the audit boundary retained","context":{"agent_provenance_outcomes":{"model":{"status":"failed","reason":"resolver_failed","resolver":"codex_session_file","rule_version":"v1"},"effort":{"status":"failed","reason":"resolver_failed","resolver":"codex_session_file","rule_version":"v1"},"version":{"status":"unavailable","reason":"harness_unavailable","resolver":"ai_agent_version","rule_version":"v1"}}},"event_class":"maintenance","record_hash_version":1,"record_hash":"c247da0c1dd1a9422589686dbc23f1dd2d04471743036bf98278eca342f6f024"}
{"hash_algorithm":"sha256","ts":"2026-10-03T13:02:53.944Z","author":"dot","author_source":"asserted","agent_harness":"codex","agent_instance":"25c018dcfb758a86c17e1750","agent_provenance":{"model":null,"effort":null,"role":{"value":"implementer","source":"argv"},"topic":null},"op":"update","patch":[{"op":"add","path":"/metadata/notes/6","value":{"created_at":"2026-10-03T13:02:53.924Z","author":"dot","text":"Final floor verification: full npm run coverage on Node 22.18.0 also passes with 455 tests passed, zero failures, two pre-existing real-data skips, and 100 percent statements, branches, functions and lines for all 23 required sources. The same temporary outside-repository no-audit launcher preserved the pending audit permission boundary. Both supported CI runtime lines now have local full-suite evidence; no repository test or dependency changes were made for environment recovery."}},{"op":"replace","path":"/metadata/actual_result","value":"All 19 launcher cases pass on Node 22.18.0, 24.19.0 and 26.10.0; eight new cases fail on the original template. Full coverage passes on Node 22.18.0 and 26.10.0: 455 passed, zero failed, two existing real-data skips, all 23 sources at 100/100/100/100 on both versions. All independent quality, package, changelog, release-policy and strict PM health checks pass. Explicit production audit and publication remain pending."},{"op":"replace","path":"/metadata/updated_at","value":"2026-10-03T13:02:53.944Z"}],"before_hash":"453dc6dba3df44264f26bdd9396ed7a03ee839b056855f4b7268e6f81df35003","after_hash":"abb5387cb30a50bc909dcdd0c953cfcd3d5ddcd2bbb0b03f6ddbc8b4ecc6a248","item_hash_version":3,"message":"Record final Node 22 and Node 26 full coverage evidence","context":{"agent_provenance_outcomes":{"model":{"status":"failed","reason":"resolver_failed","resolver":"codex_session_file","rule_version":"v1"},"effort":{"status":"failed","reason":"resolver_failed","resolver":"codex_session_file","rule_version":"v1"},"version":{"status":"unavailable","reason":"harness_unavailable","resolver":"ai_agent_version","rule_version":"v1"}}},"event_class":"maintenance","record_hash_version":1,"record_hash":"8aa7cc1a200aa78346a245e96b7a2c69ff511b5026065b4c000daa0041aa0f00"}
Loading
Loading