Commit Graph
3400 Commits
Author SHA1 Message Date
montjeffrey 7497de02ab test(carriers): pin member calls and deeply nested computed arguments
Two first-round review findings were never addressed, and both reproduce
on the current head:

- records.require('./label'), obj?.import('./x') and obj . require('./y')
  are method calls, but the call pattern's word boundary is satisfied by
  the dot, so a self-contained object method fails every projection for a
  file the script never loads.
- The dynamic-argument pattern allows one level of nested parentheses, so
  require(path.join(__dirname, getName())) produces no dynamic warning
  while require(getName()) does.

Control: a genuine require beside the member calls is still a dependency.
2026-10-10 18:00:50 -04:00
montjeffrey d9fe97171d docs(carriers): record the third closure review follow-up 2026-10-10 18:00:50 -04:00
montjeffrey 498da59b3c fix(carriers): follow Node's CommonJS candidates, see regex after a block, ignore non-import from
- An extensionless require now tries only the path, .js, .json, and a
  directory's index.js/index.json, as Node does; .cjs and .mjs must be
  named, so require('./helper') no longer passes on helper.cjs alone.
- Treat `}` as a statement boundary, so a regex after a block is read as
  a regex and cannot swallow a later require.
- Decide whether a paren opens a condition from the token before the
  keyword, ignoring whitespace, so `obj.\nif(x) / 2` and
  `obj?. while(x) / 2` stay method calls followed by division.
- Record which slots came from template literals and skip them for
  static `from` and side-effect `import`, which accept only a quoted
  string; a tagged template named `from` is no longer an import.
  A template passed to import() is still a dependency.

Rescanning all 802 repository JavaScript files against dd14493e changes
no result, and the real registry still reports 35/35 resolved with zero
failures or warnings.
2026-10-10 18:00:50 -04:00
montjeffrey 21784add5d test(carriers): pin CommonJS require candidates, regex after a block, and non-import from
Review on dd14493e found four more ways the closure gate misjudges a
carrier, each reproduced against that head:

- require('./helper') resolves when only helper.cjs or helper.mjs is
  planned, but Node's CommonJS search tries only .js, .json and .node.
- In `if (ok) {} /"/.test(text); require(...)` the regex after the block
  is read as division and its quote swallows the require.
- `obj.\nif(x) / 2` is a method call, but the condition check only saw
  the character immediately before `if`, so the division read as a regex
  and swallowed a later require. Introduced by the previous fix.
- A tagged template named `from` was recorded as an import; with exact
  import resolution it now fails a carrier that never loads that path.
  Introduced by the previous fix.

Controls: an extensionless require still resolves to a .json file, and a
template literal passed to import() is still a dependency.
2026-10-10 18:00:50 -04:00
montjeffrey a1d9eeed2f docs(carriers): record the second closure review follow-up 2026-10-10 18:00:50 -04:00
montjeffrey a22c65aa6a fix(carriers): resolve imports exactly, reject backslash separators, see regex after a condition
- Track whether each relative specifier arrives through require or
  through import()/static import, and resolve the import forms by exact
  path. Node's ESM resolver adds no extension and rejects directory
  imports even from a CommonJS file, so import('./helper') and
  import('./data') no longer pass on helper.js or data/index.json alone.
  require keeps the CommonJS extension and index candidates.
- Stop normalizing backslashes in relative specifiers. Linux and macOS
  read them as filename characters, so require('./lib\helper.js') now
  fails as non-portable-separator instead of resolving to lib/helper.js.
- Record whether each closing paren ends an if/while/for/with condition,
  so a `/` right after one starts a regex. A method named `if` and calls
  nested inside a condition still read as division.

extractReferences gains an `imports` list. Rescanning all 802 repository
JavaScript files against the previous scanner changes no result, and the
real registry still reports 35/35 resolved with zero failures.
2026-10-10 18:00:50 -04:00
montjeffrey df82e75a4c test(carriers): pin exact import resolution, portable separators, and regex after a condition
Review on aec97150 found four ways the closure gate passes a carrier that
fails at run time. Each is reproduced here against the current head:

- import('./helper') with only helper.js planned is accepted, but Node's
  ESM resolver does no extension search.
- import('./data') with only data/index.json (or index.js) planned is
  accepted, but Node rejects directory imports even from CommonJS.
- require('./lib\helper.js') with lib/helper.js planned is accepted
  because backslashes were normalized, but Linux and macOS read the
  backslash as part of the filename.
- In `if (ok) /['"]/.test(text); require('./missing')` the regex after
  the condition's closing paren is read as division, its quote opens a
  fake string, and the require disappears.

Controls that must keep passing: an exact import() of a planned file, an
extensionless require through the CommonJS search, and division after a
method named `if` or a call nested inside a condition. extractReferences
gains an `imports` list so the resolver can tell the two forms apart.
2026-10-10 18:00:50 -04:00
montjeffrey bf729d56ba docs(carriers): record the closure review follow-up 2026-10-10 18:00:50 -04:00
montjeffrey 40e426eafc fix(carriers): keep keyword patterns from spanning an interpolation 2026-10-10 18:00:50 -04:00
montjeffrey 50d59dd1f9 test(carriers): an interpolated from identifier is not an import 2026-10-10 18:00:50 -04:00
montjeffrey cd83d3ce22 fix(carriers): match spaced calls, cook escapes, treat Windows and file URLs as absolute 2026-10-10 18:00:50 -04:00
montjeffrey 4cd7741e74 test(carriers): cover spaced calls, escaped specifiers, Windows paths and index.json 2026-10-10 18:00:50 -04:00
montjeffrey 9d08271638 feat(carriers): flag absolute and package imports a carrier cannot ship 2026-10-10 18:00:50 -04:00
montjeffrey d606375366 test(carriers): flag absolute and package imports a carrier cannot ship 2026-10-10 18:00:49 -04:00
montjeffrey be604c073a test(carriers): pin scanner edge cases and share one registry run 2026-10-10 18:00:49 -04:00
montjeffrey 4814561d1a docs(carriers): record the runtime-closure gate slice 2026-10-10 18:00:49 -04:00
montjeffrey d3e6ce84cd feat(carriers): validate carrier runtime closure in CI 2026-10-10 18:00:49 -04:00
montjeffrey ca739b11d8 test(carriers): pin runtime closure checks 2026-10-10 18:00:32 -04:00
haelyraandGitHub 4eb71d92a3 Merge pull request #3484 from affaan-m/integration/ecc-043-20261009-verified
fix: guard literal Git include redirects and env split arguments
2026-10-09 21:41:12 -04:00
34a97fa898 fix: reject unsupported env split-string escapes
Validate env -S and --split-string escape syntax before shell scanning or
opaque fallback. Preserve literal single-quoted data and charge each
validation character against the shared input-proportional work budget.

Verified 787 focused cases and 290 real Git/config, harmless native env
and registered-routing controls. Keeps the prior paid-copy protection.

Co-authored-by: Nguyen Thanh Dat <ntdat812.dev@gmail.com>
Co-authored-by: Davemaina1 <dmain7015@gmail.com>
2026-10-09 21:04:20 -04:00
993b5f230f fix: guard literal Git hook redirects and env split arguments
Carry forward bounded literal include/includeIf configuration capabilities
and env -S/--split-string words from PRs #2858 and #2897. Charge array
copy and expansion work before allocation to preserve the shared quota.

Verified 731 hook cases and 60 real Git/config and registered-route
controls. Dynamic remainder and original full source PRs remain held.

Co-authored-by: Nguyen Thanh Dat <ntdat812.dev@gmail.com>
Co-authored-by: Davemaina1 <dmain7015@gmail.com>
2026-10-09 20:41:09 -04:00
haelyraandGitHub 8384d609a0 Merge pull request #3479 from affaan-m/integration/ecc-043-20261009-verified
Integrate reviewed installer, hook, state, and workflow fixes
2026-10-09 20:07:13 -04:00
haelyra aac9b3d34b fix: preserve activity errors, asset bytes and runner summaries
Treat non-2xx activity responses as feed errors, preserve non-Markdown Copilot agent assets, and apply the reviewed reference escape parity correction with regenerated bindings. Allow the test runner to drain piped output on its existing success or failure exit status. Validate installed workflows and bounded real Node20/24 pipe regressions.
2026-10-09 19:33:37 -04:00
haelyra 984d4f0701 fix: preserve Hookify Windows missing-device identity
Match the Windows missing volume-serial exception while retaining strict reported-device, inode, ownership, permission, link and snapshot checks. Add loader warning/block and race regression controls with isolated platform metadata injection.
2026-10-09 19:10:06 -04:00
haelyra 5930511997 Merge reviewed #3277 ancestry with the stronger tested config 2026-10-09 18:54:52 -04:00
haelyra 5981dd7092 fix: complete reviewed integration workflows and safety checks 2026-10-09 18:54:39 -04:00
haelyra 0cb1476f9d fix: pin and bound Hookify rule reads
Open with supported no-follow and nonblocking flags before relying on file metadata. Validate descriptor, pathname and rule-directory consistency before and after reading at most64KiB plus one overflow byte. Reject observed replacement, mutation, premature EOF and non-regular files, and close descriptors on every outcome.

Add12 race and I/O regressions. Keep the Hermes uppercase protected-file fixture real on case-sensitive filesystems and verify that the installed guard still permits first-time creation.

Validation: full6688 reported tests across347 files,12 race tests, full80% coverage gates, scoped Hookify coverage, installed Hookify and Hermes workflows, packed artifact lifecycle, lint, signatures and IOC.
2026-10-09 17:54:01 -04:00
haelyra 53e606b78e merge: preserve reviewed original and refreshed source ancestry
Keep tested tree 655e700d82 unchanged. Preserve original 3049, 3055, 3115 and 3119 heads alongside their accepted attributed carry-forwards. Preserve parent-approved live 3257 and 3265 heads without replaying generated bindings, old locks, superseded migrations or discarded hook code.
2026-10-09 17:27:57 -04:00
haelyra ba0520340f fix: reconcile reviewed sources and generated integration surfaces 2026-10-09 17:27:37 -04:00
haelyra b6e2cfe5e4 merge: preserve tested installer extraction 3187 and Copilot ownership fixture 2026-10-09 17:05:03 -04:00
haelyra 5bf248d51d merge: preserve source-verified tinystruct documentation 3231 2026-10-09 17:04:47 -04:00
haelyra b6e0261903 merge: preserve static MCP dependency review source 3239 2026-10-09 17:04:33 -04:00
haelyra d38daabd98 merge: preserve Ruby reviewer source 3227 with nil and false semantics 2026-10-09 17:04:15 -04:00
haelyra d854a4a280 merge: preserve OSINT source 3198 and upstream license bytes 2026-10-09 17:03:58 -04:00
haelyra a5432e84f7 merge: preserve tested stocktake discovery and save source 3220 2026-10-09 17:03:20 -04:00
haelyra b6416b07e8 merge: preserve role sample source 3219 and user model choices 2026-10-09 17:03:10 -04:00
haelyra d312d6f35c merge: preserve project and user Codex configuration source 3253 2026-10-09 17:02:47 -04:00
haelyra c27de0c55c merge: preserve reviewed main integration ancestry for 2914 2026-10-09 16:52:43 -04:00
haelyra eed806bf4a fix: restore unskipped installer refactor validation
Follow up PR #3187 at 38b8c07f while preserving the original contribution history and all current-main helper bodies. Remove both CI safety-suite exclusions, clean stale imports and the warning glyph, retain shipped test/coverage entrypoints, and keep unknown test totals honest. The tree matches the fully tested 6246-pass/325-file tree; disposable Claude/OpenCode lifecycle passes.
2026-10-09 16:32:47 -04:00
haelyraandGitHub 5cc14d7c31 Merge pull request #2914 from santhiprakash/fix/plan-orchestrate-retired-orchestrate
fix(skills): reduce plan-orchestrate to a registry-validated command router
2026-10-09 16:30:24 -04:00
haelyra 67c89375c3 merge: preserve serialized store source 3252 with portable cache fixtures 2026-10-09 16:28:34 -04:00
haelyra 0aebb36af2 merge: preserve cache guidance source 3173 with measured cost boundaries 2026-10-09 16:27:29 -04:00
haelyra 206ad23125 merge: preserve payment source 2575 with tested origin and approval boundaries 2026-10-09 16:27:03 -04:00
haelyra d5abc5c8fc merge: preserve reviewed plan registry source 2914 2026-10-09 16:27:02 -04:00
haelyra 958f54eac1 merge: preserve tested dependency source 3049 and bound brace expansion 2026-10-09 16:24:59 -04:00
haelyra 195301cb04 merge: preserve tested optional dependency carry-forward 3119 2026-10-09 16:21:29 -04:00
haelyra cc288b6e28 merge: reconcile tested OpenCode home carry-forward with Copilot transforms 2026-10-09 16:20:04 -04:00
haelyra 7265b989c4 merge: preserve tested bounded Hookify carry-forward candidate 3055 2026-10-09 16:17:57 -04:00
haelyra 46ec7aca9b merge: preserve tested SQL wrapper guard source 3050 2026-10-09 16:16:43 -04:00
haelyra 117cda3538 merge: retain original 3002 ancestry with current tested parser 2026-10-09 16:16:31 -04:00