SFTP shim: coerce vfs.readFile via normalizeVfsBytesForSftp before storing

handles; use f.buf == null instead of !f.buf so empty buffers/strings do not
force SSH_FX_FAILURE on READ. READ accepts Buffer, typed views, or string after
WRITE.

Earlier in this branch: enqueueSftpReply(reqid) + FAILURE on errors; REQUEST.READ
validation in vendor bare-ssh2; coerce typed arrays to Buffer in SFTP.data and
Protocol.channelData/channelExtData. CHANGELOG notes.
This commit is contained in:
Raven Scott
2026-04-21 18:12:56 -04:00
parent baae7b3482
commit ac699f308e
11 changed files with 409 additions and 383 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
{
"schemaVersion": 1,
"generatedAt": "2026-04-21T22:05:46.195Z",
"generatedAt": "2026-04-21T22:11:57.526Z",
"normativeManifest": "packages/bare-os-booter/lib/bare-module-manifest.json",
"buildTool": "packages/bare-os-bare-libs/build.mjs",
"bundles": [
+1 -1
View File
@@ -1,7 +1,7 @@
{
"schema": 2,
"profileId": "bare-os-posix-like",
"generatedAt": "2026-04-21T22:05:44.363Z",
"generatedAt": "2026-04-21T22:11:56.311Z",
"note": "Sparse POSIX Issue 7 coverage hints for /bin utilities. Omitted command names are not yet profiled here.",
"commandIndex": [
{
+184 -184
View File
@@ -37,12 +37,6 @@
"protomux"
]
},
{
"path": "/lib/bare/bundles/barePath.js",
"keys": [
"barePath"
]
},
{
"path": "/lib/bare/bundles/bareEvents.js",
"keys": [
@@ -55,6 +49,12 @@
"bareEncoding"
]
},
{
"path": "/lib/bare/bundles/barePath.js",
"keys": [
"barePath"
]
},
{
"path": "/lib/bare/bundles/bareAbort.js",
"keys": [
@@ -67,12 +67,6 @@
"bareAbortController"
]
},
{
"path": "/lib/bare/bundles/bareAnsiEscapes.js",
"keys": [
"bareAnsiEscapes"
]
},
{
"path": "/lib/bare/bundles/bareAddonResolve.js",
"keys": [
@@ -91,6 +85,24 @@
"bareCrypto"
]
},
{
"path": "/lib/bare/bundles/bareAnsiEscapes.js",
"keys": [
"bareAnsiEscapes"
]
},
{
"path": "/lib/bare/bundles/fetch.js",
"keys": [
"fetch"
]
},
{
"path": "/lib/bare/bundles/bareAsyncHooks.js",
"keys": [
"bareAsyncHooks"
]
},
{
"path": "/lib/bare/bundles/bareAppKit.js",
"keys": [
@@ -103,24 +115,12 @@
"bareAssert"
]
},
{
"path": "/lib/bare/bundles/bareAsyncHooks.js",
"keys": [
"bareAsyncHooks"
]
},
{
"path": "/lib/bare/bundles/bareAtomics.js",
"keys": [
"bareAtomics"
]
},
{
"path": "/lib/bare/bundles/fetch.js",
"keys": [
"fetch"
]
},
{
"path": "/lib/bare/bundles/bareBmp.js",
"keys": [
@@ -133,12 +133,6 @@
"bareBuffer"
]
},
{
"path": "/lib/bare/bundles/bareBundleCompile.js",
"keys": [
"bareBundleCompile"
]
},
{
"path": "/lib/bare/bundles/bareBundle.js",
"keys": [
@@ -158,15 +152,15 @@
]
},
{
"path": "/lib/bare/bundles/bareConsole.js",
"path": "/lib/bare/bundles/bareBundleCompile.js",
"keys": [
"bareConsole"
"bareBundleCompile"
]
},
{
"path": "/lib/bare/bundles/bareChannel.js",
"path": "/lib/bare/bundles/bareConsole.js",
"keys": [
"bareChannel"
"bareConsole"
]
},
{
@@ -181,6 +175,12 @@
"bareBoot"
]
},
{
"path": "/lib/bare/bundles/bareChannel.js",
"keys": [
"bareChannel"
]
},
{
"path": "/lib/bare/bundles/bareDebugLog.js",
"keys": [
@@ -194,9 +194,9 @@
]
},
{
"path": "/lib/bare/bundles/bareDiagnosticsChannel.js",
"path": "/lib/bare/bundles/bareCov.js",
"keys": [
"bareDiagnosticsChannel"
"bareCov"
]
},
{
@@ -205,12 +205,6 @@
"bareBundleId"
]
},
{
"path": "/lib/bare/bundles/bareCov.js",
"keys": [
"bareCov"
]
},
{
"path": "/lib/bare/bundles/bareDns.js",
"keys": [
@@ -218,9 +212,9 @@
]
},
{
"path": "/lib/bare/bundles/bareEnv.js",
"path": "/lib/bare/bundles/bareDiagnosticsChannel.js",
"keys": [
"bareEnv"
"bareDiagnosticsChannel"
]
},
{
@@ -235,6 +229,12 @@
"bareExif"
]
},
{
"path": "/lib/bare/bundles/bareEnv.js",
"keys": [
"bareEnv"
]
},
{
"path": "/lib/bare/bundles/bareDgram.js",
"keys": [
@@ -271,18 +271,18 @@
"bareGif"
]
},
{
"path": "/lib/bare/bundles/bareFileLogger.js",
"keys": [
"bareFileLogger"
]
},
{
"path": "/lib/bare/bundles/bareGtk.js",
"keys": [
"bareGtk"
]
},
{
"path": "/lib/bare/bundles/bareHeif.js",
"keys": [
"bareHeif"
]
},
{
"path": "/lib/bare/bundles/bareHrtime.js",
"keys": [
@@ -290,9 +290,9 @@
]
},
{
"path": "/lib/bare/bundles/bareHeif.js",
"path": "/lib/bare/bundles/bareFileLogger.js",
"keys": [
"bareHeif"
"bareFileLogger"
]
},
{
@@ -355,30 +355,24 @@
"bareIpc"
]
},
{
"path": "/lib/bare/bundles/bareInspector.js",
"keys": [
"bareInspector"
]
},
{
"path": "/lib/bare/bundles/bareLogger.js",
"keys": [
"bareLogger"
]
},
{
"path": "/lib/bare/bundles/bareInspector.js",
"keys": [
"bareInspector"
]
},
{
"path": "/lib/bare/bundles/bareLief.js",
"keys": [
"bareLief"
]
},
{
"path": "/lib/bare/bundles/bareMake.js",
"keys": [
"bareMake"
]
},
{
"path": "/lib/bare/bundles/bareLink.js",
"keys": [
@@ -386,15 +380,9 @@
]
},
{
"path": "/lib/bare/bundles/bareModuleResolve.js",
"path": "/lib/bare/bundles/bareMake.js",
"keys": [
"bareModuleResolve"
]
},
{
"path": "/lib/bare/bundles/bareModuleLexer.js",
"keys": [
"bareModuleLexer"
"bareMake"
]
},
{
@@ -403,6 +391,12 @@
"bareModule"
]
},
{
"path": "/lib/bare/bundles/bareModuleLexer.js",
"keys": [
"bareModuleLexer"
]
},
{
"path": "/lib/bare/bundles/bareMedia.js",
"keys": [
@@ -410,15 +404,9 @@
]
},
{
"path": "/lib/bare/bundles/bareNative.js",
"path": "/lib/bare/bundles/bareModuleResolve.js",
"keys": [
"bareNative"
]
},
{
"path": "/lib/bare/bundles/bareModuleTraverse.js",
"keys": [
"bareModuleTraverse"
"bareModuleResolve"
]
},
{
@@ -427,12 +415,6 @@
"bareNdk"
]
},
{
"path": "/lib/bare/bundles/bareNet.js",
"keys": [
"bareNet"
]
},
{
"path": "/lib/bare/bundles/bareNodeFetch.js",
"keys": [
@@ -440,9 +422,9 @@
]
},
{
"path": "/lib/bare/bundles/bareOs.js",
"path": "/lib/bare/bundles/bareNative.js",
"keys": [
"bareOs"
"bareNative"
]
},
{
@@ -452,15 +434,15 @@
]
},
{
"path": "/lib/bare/bundles/barePipe.js",
"path": "/lib/bare/bundles/bareModuleTraverse.js",
"keys": [
"barePipe"
"bareModuleTraverse"
]
},
{
"path": "/lib/bare/bundles/barePerformance.js",
"path": "/lib/bare/bundles/bareNet.js",
"keys": [
"barePerformance"
"bareNet"
]
},
{
@@ -470,9 +452,9 @@
]
},
{
"path": "/lib/bare/bundles/barePack.js",
"path": "/lib/bare/bundles/bareOs.js",
"keys": [
"barePack"
"bareOs"
]
},
{
@@ -482,9 +464,9 @@
]
},
{
"path": "/lib/bare/bundles/barePunycode.js",
"path": "/lib/bare/bundles/barePerformance.js",
"keys": [
"barePunycode"
"barePerformance"
]
},
{
@@ -493,12 +475,42 @@
"bareNodeRuntime"
]
},
{
"path": "/lib/bare/bundles/barePipe.js",
"keys": [
"barePipe"
]
},
{
"path": "/lib/bare/bundles/barePunycode.js",
"keys": [
"barePunycode"
]
},
{
"path": "/lib/bare/bundles/barePack.js",
"keys": [
"barePack"
]
},
{
"path": "/lib/bare/bundles/bareProcess.js",
"keys": [
"bareProcess"
]
},
{
"path": "/lib/bare/bundles/barePackDrive.js",
"keys": [
"barePackDrive"
]
},
{
"path": "/lib/bare/bundles/barePrebuild.js",
"keys": [
"barePrebuild"
]
},
{
"path": "/lib/bare/bundles/bareQuerystring.js",
"keys": [
@@ -511,24 +523,18 @@
"bareQueueMicrotask"
]
},
{
"path": "/lib/bare/bundles/barePrebuild.js",
"keys": [
"barePrebuild"
]
},
{
"path": "/lib/bare/bundles/bareProcess.js",
"keys": [
"bareProcess"
]
},
{
"path": "/lib/bare/bundles/bareRealm.js",
"keys": [
"bareRealm"
]
},
{
"path": "/lib/bare/bundles/bareSdl.js",
"keys": [
"bareSdl"
]
},
{
"path": "/lib/bare/bundles/bareRpc.js",
"keys": [
@@ -541,12 +547,6 @@
"barePromClient"
]
},
{
"path": "/lib/bare/bundles/bareRepl.js",
"keys": [
"bareRepl"
]
},
{
"path": "/lib/bare/bundles/bareRuntime.js",
"keys": [
@@ -560,15 +560,9 @@
]
},
{
"path": "/lib/bare/bundles/bareSdl.js",
"path": "/lib/bare/bundles/bareRepl.js",
"keys": [
"bareSdl"
]
},
{
"path": "/lib/bare/bundles/bareRun.js",
"keys": [
"bareRun"
"bareRepl"
]
},
{
@@ -577,6 +571,12 @@
"bareSignals"
]
},
{
"path": "/lib/bare/bundles/bareRun.js",
"keys": [
"bareRun"
]
},
{
"path": "/lib/bare/bundles/bareStdio.js",
"keys": [
@@ -590,9 +590,9 @@
]
},
{
"path": "/lib/bare/bundles/bareStorage.js",
"path": "/lib/bare/bundles/bareSidecar.js",
"keys": [
"bareStorage"
"bareSidecar"
]
},
{
@@ -601,12 +601,6 @@
"bareStream"
]
},
{
"path": "/lib/bare/bundles/bareSidecar.js",
"keys": [
"bareSidecar"
]
},
{
"path": "/lib/bare/bundles/bareStructuredClone.js",
"keys": [
@@ -620,9 +614,9 @@
]
},
{
"path": "/lib/bare/bundles/bareTap.js",
"path": "/lib/bare/bundles/bareStorage.js",
"keys": [
"bareTap"
"bareStorage"
]
},
{
@@ -631,6 +625,12 @@
"bareSubprocess"
]
},
{
"path": "/lib/bare/bundles/bareTap.js",
"keys": [
"bareTap"
]
},
{
"path": "/lib/bare/bundles/bareSystemLogger.js",
"keys": [
@@ -643,30 +643,24 @@
"bareTiff"
]
},
{
"path": "/lib/bare/bundles/bareTcp.js",
"keys": [
"bareTcp"
]
},
{
"path": "/lib/bare/bundles/bareTimers.js",
"keys": [
"bareTimers"
]
},
{
"path": "/lib/bare/bundles/bareThread.js",
"keys": [
"bareThread"
]
},
{
"path": "/lib/bare/bundles/bareTpl.js",
"keys": [
"bareTpl"
]
},
{
"path": "/lib/bare/bundles/bareTcp.js",
"keys": [
"bareTcp"
]
},
{
"path": "/lib/bare/bundles/bareType.js",
"keys": [
@@ -679,12 +673,6 @@
"bareTls"
]
},
{
"path": "/lib/bare/bundles/bareUiKit.js",
"keys": [
"bareUiKit"
]
},
{
"path": "/lib/bare/bundles/bareTty.js",
"keys": [
@@ -692,9 +680,15 @@
]
},
{
"path": "/lib/bare/bundles/bareV8.js",
"path": "/lib/bare/bundles/bareUiKit.js",
"keys": [
"bareV8"
"bareUiKit"
]
},
{
"path": "/lib/bare/bundles/bareThread.js",
"keys": [
"bareThread"
]
},
{
@@ -703,24 +697,42 @@
"bareUnpack"
]
},
{
"path": "/lib/bare/bundles/bareVm.js",
"keys": [
"bareVm"
]
},
{
"path": "/lib/bare/bundles/bareWalkHandles.js",
"keys": [
"bareWalkHandles"
]
},
{
"path": "/lib/bare/bundles/bareV8.js",
"keys": [
"bareV8"
]
},
{
"path": "/lib/bare/bundles/bareVm.js",
"keys": [
"bareVm"
]
},
{
"path": "/lib/bare/bundles/bareWebp.js",
"keys": [
"bareWebp"
]
},
{
"path": "/lib/bare/bundles/bareWebKit.js",
"keys": [
"bareWebKit"
]
},
{
"path": "/lib/bare/bundles/bareWebKitGtk.js",
"keys": [
"bareWebKitGtk"
]
},
{
"path": "/lib/bare/bundles/bareUnionBundle.js",
"keys": [
@@ -733,30 +745,12 @@
"bareUtils"
]
},
{
"path": "/lib/bare/bundles/bareWebp.js",
"keys": [
"bareWebp"
]
},
{
"path": "/lib/bare/bundles/bareWebKitGtk.js",
"keys": [
"bareWebKitGtk"
]
},
{
"path": "/lib/bare/bundles/bareV8ToIstanbul.js",
"keys": [
"bareV8ToIstanbul"
]
},
{
"path": "/lib/bare/bundles/bareWhich.js",
"keys": [
"bareWhich"
]
},
{
"path": "/lib/bare/bundles/bareWinUi.js",
"keys": [
@@ -769,24 +763,30 @@
"bareXdiff"
]
},
{
"path": "/lib/bare/bundles/bareWhich.js",
"keys": [
"bareWhich"
]
},
{
"path": "/lib/bare/bundles/bareZlib.js",
"keys": [
"bareZlib"
]
},
{
"path": "/lib/bare/bundles/bareWs.js",
"keys": [
"bareWs"
]
},
{
"path": "/lib/bare/bundles/bareZmq.js",
"keys": [
"bareZmq"
]
},
{
"path": "/lib/bare/bundles/bareWs.js",
"keys": [
"bareWs"
]
},
{
"path": "/lib/bare/bundles/bareWorker.js",
"keys": [
@@ -1607,8 +1607,8 @@
],
"bundleProvenance": {
"schemaVersion": 1,
"generatedAt": "2026-04-21T22:05:46.163Z",
"gitCommit": "0359129a729d59ceafe77eb71347a43a4a67ccbf",
"generatedAt": "2026-04-21T22:11:57.514Z",
"gitCommit": "baae7b34821921606d1995b3a4365d307577b662",
"nodeVersion": "v20.20.2",
"bundleTier": "all",
"normativeManifest": "packages/bare-os-booter/lib/bare-module-manifest.json",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"schema": 1,
"atMs": 1776809144362,
"atMs": 1776809516310,
"commands": [
"arch",
"awk",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"schemaVersion": 1,
"generatedAt": "2026-04-21T22:05:44.530Z",
"generatedAt": "2026-04-21T22:11:56.476Z",
"pages": [
{
"name": "arch",
@@ -158,6 +158,22 @@ function joinDirEntry(dirAbs, name) {
return d === '/' ? '/' + n : d + '/' + n
}
/**
* Coerce vfs.readFile results for SFTP OPEN/READ. Empty string is falsy and used to make
* READ return SSH_FX_FAILURE; ArrayBuffer and non-Buffer views may lack `.subarray`.
* @param {unknown} x
* @returns {Buffer | null}
*/
function normalizeVfsBytesForSftp(x) {
if (x == null) return null
if (typeof x === 'string') return Buffer.from(x, 'utf8')
if (Buffer.isBuffer(x)) return x
if (x instanceof ArrayBuffer) return Buffer.from(x)
if (ArrayBuffer.isView(x))
return Buffer.from(x.buffer, x.byteOffset, x.byteLength)
return null
}
/**
* @param {import('events').EventEmitter} sftp
* @param {Record<string, unknown>} vfs
@@ -173,7 +189,7 @@ export function attachBareOsSftp(
sftpConsts
) {
const { OPEN_MODE, STATUS_CODE } = sftpConsts
/** @type {Map<number, { path: string, buf?: Uint8Array | null, pos: number, write?: boolean }>} */
/** @type {Map<number, { path: string, buf?: Buffer | null, pos: number, write?: boolean }>} */
const handles = new Map()
/** @type {Map<number, { path: string, entries?: string[], idx: number }>} */
const dirs = new Map()
@@ -365,7 +381,7 @@ export function attachBareOsSftp(
const wantWrite =
!!(flags & OPEN_MODE.WRITE) || !!(flags & OPEN_MODE.APPEND)
const wantCreat = !!(flags & OPEN_MODE.CREAT)
try {
try {
let buf = null
if (!wantCreat) {
try {
@@ -374,11 +390,12 @@ export function attachBareOsSftp(
buf = null
}
}
buf = normalizeVfsBytesForSftp(buf)
if (buf == null && !wantCreat && wantRead) {
return sftp.status(reqid, STATUS_CODE.NO_SUCH_FILE)
}
if (buf == null && wantCreat) buf = new Uint8Array(0)
if (buf == null) buf = new Uint8Array(0)
if (buf == null && wantCreat) buf = Buffer.alloc(0)
if (buf == null) buf = Buffer.alloc(0)
const h = Buffer.alloc(4)
const id = nextHandleId++
h.writeUInt32BE(id, 0)
@@ -403,15 +420,23 @@ export function attachBareOsSftp(
}
const id = handle.readUInt32BE(0)
const f = handles.get(id)
if (!f || !f.buf) return sftp.status(reqid, STATUS_CODE.FAILURE)
if (!f || f.buf == null) return sftp.status(reqid, STATUS_CODE.FAILURE)
const raw = f.buf
const body =
Buffer.isBuffer(raw) || ArrayBuffer.isView(raw)
? raw
: typeof raw === 'string'
? Buffer.from(raw, 'utf8')
: null
if (!body) return sftp.status(reqid, STATUS_CODE.FAILURE)
const off = Number(offset)
const len = Number(length)
if (!Number.isFinite(off) || !Number.isFinite(len)) {
return sftp.status(reqid, STATUS_CODE.FAILURE)
}
const end = Math.min(off + len, f.buf.length)
if (off >= f.buf.length) return sftp.status(reqid, STATUS_CODE.EOF)
let slice = f.buf.subarray(off, end)
const end = Math.min(off + len, body.length)
if (off >= body.length) return sftp.status(reqid, STATUS_CODE.EOF)
let slice = body.subarray(off, end)
if (!Buffer.isBuffer(slice)) {
slice = Buffer.from(slice.buffer, slice.byteOffset, slice.byteLength)
}
+1
View File
@@ -5,3 +5,4 @@
- **SFTP stability:** Harden `REQUEST.READ` parsing in vendored `bare-ssh2` (`handle` / `offset` / `len` must be defined before emit). Align `WRITE` and `FSETSTAT` guards with other handle-based handlers.
- **Bare OS SFTP shim:** `enqueueSftpReply` now takes `reqid` and sends `SSH_FX_FAILURE` if the queued handler throws or rejects, avoiding stalled clients and reducing risk of uncaught SFTP-path errors surfacing as native aborts (`bad_optional_access` under `-fno-exceptions`) after the serialized-reply ordering change.
- **SFTP DATA / channel binary:** Coerce `Uint8Array` (and other typed views) to `Buffer` in `SFTP.prototype.data` and `Protocol.channelData` / `channelExtData`. VFS-backed file buffers are often typed arrays; treating them as UTF-8 strings when `Buffer.isBuffer` is false corrupted SSH channel packets and could abort the runtime with `bad_optional_access`.
- **SFTP OPEN/READ:** Normalize `vfs.readFile` results to `Buffer` before storing handles; treat empty buffer as readable (`!f.buf` wrongly failed for `""` / edge cases). READ accepts `Buffer` or typed views after WRITE.
@@ -1,7 +1,7 @@
{
"schema": 2,
"profileId": "bare-os-posix-like",
"generatedAt": "2026-04-21T22:05:44.363Z",
"generatedAt": "2026-04-21T22:11:56.311Z",
"note": "Sparse POSIX Issue 7 coverage hints for /bin utilities. Omitted command names are not yet profiled here.",
"commandIndex": [
{
@@ -37,12 +37,6 @@
"protomux"
]
},
{
"path": "/lib/bare/bundles/barePath.js",
"keys": [
"barePath"
]
},
{
"path": "/lib/bare/bundles/bareEvents.js",
"keys": [
@@ -55,6 +49,12 @@
"bareEncoding"
]
},
{
"path": "/lib/bare/bundles/barePath.js",
"keys": [
"barePath"
]
},
{
"path": "/lib/bare/bundles/bareAbort.js",
"keys": [
@@ -67,12 +67,6 @@
"bareAbortController"
]
},
{
"path": "/lib/bare/bundles/bareAnsiEscapes.js",
"keys": [
"bareAnsiEscapes"
]
},
{
"path": "/lib/bare/bundles/bareAddonResolve.js",
"keys": [
@@ -91,6 +85,24 @@
"bareCrypto"
]
},
{
"path": "/lib/bare/bundles/bareAnsiEscapes.js",
"keys": [
"bareAnsiEscapes"
]
},
{
"path": "/lib/bare/bundles/fetch.js",
"keys": [
"fetch"
]
},
{
"path": "/lib/bare/bundles/bareAsyncHooks.js",
"keys": [
"bareAsyncHooks"
]
},
{
"path": "/lib/bare/bundles/bareAppKit.js",
"keys": [
@@ -103,24 +115,12 @@
"bareAssert"
]
},
{
"path": "/lib/bare/bundles/bareAsyncHooks.js",
"keys": [
"bareAsyncHooks"
]
},
{
"path": "/lib/bare/bundles/bareAtomics.js",
"keys": [
"bareAtomics"
]
},
{
"path": "/lib/bare/bundles/fetch.js",
"keys": [
"fetch"
]
},
{
"path": "/lib/bare/bundles/bareBmp.js",
"keys": [
@@ -133,12 +133,6 @@
"bareBuffer"
]
},
{
"path": "/lib/bare/bundles/bareBundleCompile.js",
"keys": [
"bareBundleCompile"
]
},
{
"path": "/lib/bare/bundles/bareBundle.js",
"keys": [
@@ -158,15 +152,15 @@
]
},
{
"path": "/lib/bare/bundles/bareConsole.js",
"path": "/lib/bare/bundles/bareBundleCompile.js",
"keys": [
"bareConsole"
"bareBundleCompile"
]
},
{
"path": "/lib/bare/bundles/bareChannel.js",
"path": "/lib/bare/bundles/bareConsole.js",
"keys": [
"bareChannel"
"bareConsole"
]
},
{
@@ -181,6 +175,12 @@
"bareBoot"
]
},
{
"path": "/lib/bare/bundles/bareChannel.js",
"keys": [
"bareChannel"
]
},
{
"path": "/lib/bare/bundles/bareDebugLog.js",
"keys": [
@@ -194,9 +194,9 @@
]
},
{
"path": "/lib/bare/bundles/bareDiagnosticsChannel.js",
"path": "/lib/bare/bundles/bareCov.js",
"keys": [
"bareDiagnosticsChannel"
"bareCov"
]
},
{
@@ -205,12 +205,6 @@
"bareBundleId"
]
},
{
"path": "/lib/bare/bundles/bareCov.js",
"keys": [
"bareCov"
]
},
{
"path": "/lib/bare/bundles/bareDns.js",
"keys": [
@@ -218,9 +212,9 @@
]
},
{
"path": "/lib/bare/bundles/bareEnv.js",
"path": "/lib/bare/bundles/bareDiagnosticsChannel.js",
"keys": [
"bareEnv"
"bareDiagnosticsChannel"
]
},
{
@@ -235,6 +229,12 @@
"bareExif"
]
},
{
"path": "/lib/bare/bundles/bareEnv.js",
"keys": [
"bareEnv"
]
},
{
"path": "/lib/bare/bundles/bareDgram.js",
"keys": [
@@ -271,18 +271,18 @@
"bareGif"
]
},
{
"path": "/lib/bare/bundles/bareFileLogger.js",
"keys": [
"bareFileLogger"
]
},
{
"path": "/lib/bare/bundles/bareGtk.js",
"keys": [
"bareGtk"
]
},
{
"path": "/lib/bare/bundles/bareHeif.js",
"keys": [
"bareHeif"
]
},
{
"path": "/lib/bare/bundles/bareHrtime.js",
"keys": [
@@ -290,9 +290,9 @@
]
},
{
"path": "/lib/bare/bundles/bareHeif.js",
"path": "/lib/bare/bundles/bareFileLogger.js",
"keys": [
"bareHeif"
"bareFileLogger"
]
},
{
@@ -355,30 +355,24 @@
"bareIpc"
]
},
{
"path": "/lib/bare/bundles/bareInspector.js",
"keys": [
"bareInspector"
]
},
{
"path": "/lib/bare/bundles/bareLogger.js",
"keys": [
"bareLogger"
]
},
{
"path": "/lib/bare/bundles/bareInspector.js",
"keys": [
"bareInspector"
]
},
{
"path": "/lib/bare/bundles/bareLief.js",
"keys": [
"bareLief"
]
},
{
"path": "/lib/bare/bundles/bareMake.js",
"keys": [
"bareMake"
]
},
{
"path": "/lib/bare/bundles/bareLink.js",
"keys": [
@@ -386,15 +380,9 @@
]
},
{
"path": "/lib/bare/bundles/bareModuleResolve.js",
"path": "/lib/bare/bundles/bareMake.js",
"keys": [
"bareModuleResolve"
]
},
{
"path": "/lib/bare/bundles/bareModuleLexer.js",
"keys": [
"bareModuleLexer"
"bareMake"
]
},
{
@@ -403,6 +391,12 @@
"bareModule"
]
},
{
"path": "/lib/bare/bundles/bareModuleLexer.js",
"keys": [
"bareModuleLexer"
]
},
{
"path": "/lib/bare/bundles/bareMedia.js",
"keys": [
@@ -410,15 +404,9 @@
]
},
{
"path": "/lib/bare/bundles/bareNative.js",
"path": "/lib/bare/bundles/bareModuleResolve.js",
"keys": [
"bareNative"
]
},
{
"path": "/lib/bare/bundles/bareModuleTraverse.js",
"keys": [
"bareModuleTraverse"
"bareModuleResolve"
]
},
{
@@ -427,12 +415,6 @@
"bareNdk"
]
},
{
"path": "/lib/bare/bundles/bareNet.js",
"keys": [
"bareNet"
]
},
{
"path": "/lib/bare/bundles/bareNodeFetch.js",
"keys": [
@@ -440,9 +422,9 @@
]
},
{
"path": "/lib/bare/bundles/bareOs.js",
"path": "/lib/bare/bundles/bareNative.js",
"keys": [
"bareOs"
"bareNative"
]
},
{
@@ -452,15 +434,15 @@
]
},
{
"path": "/lib/bare/bundles/barePipe.js",
"path": "/lib/bare/bundles/bareModuleTraverse.js",
"keys": [
"barePipe"
"bareModuleTraverse"
]
},
{
"path": "/lib/bare/bundles/barePerformance.js",
"path": "/lib/bare/bundles/bareNet.js",
"keys": [
"barePerformance"
"bareNet"
]
},
{
@@ -470,9 +452,9 @@
]
},
{
"path": "/lib/bare/bundles/barePack.js",
"path": "/lib/bare/bundles/bareOs.js",
"keys": [
"barePack"
"bareOs"
]
},
{
@@ -482,9 +464,9 @@
]
},
{
"path": "/lib/bare/bundles/barePunycode.js",
"path": "/lib/bare/bundles/barePerformance.js",
"keys": [
"barePunycode"
"barePerformance"
]
},
{
@@ -493,12 +475,42 @@
"bareNodeRuntime"
]
},
{
"path": "/lib/bare/bundles/barePipe.js",
"keys": [
"barePipe"
]
},
{
"path": "/lib/bare/bundles/barePunycode.js",
"keys": [
"barePunycode"
]
},
{
"path": "/lib/bare/bundles/barePack.js",
"keys": [
"barePack"
]
},
{
"path": "/lib/bare/bundles/bareProcess.js",
"keys": [
"bareProcess"
]
},
{
"path": "/lib/bare/bundles/barePackDrive.js",
"keys": [
"barePackDrive"
]
},
{
"path": "/lib/bare/bundles/barePrebuild.js",
"keys": [
"barePrebuild"
]
},
{
"path": "/lib/bare/bundles/bareQuerystring.js",
"keys": [
@@ -511,24 +523,18 @@
"bareQueueMicrotask"
]
},
{
"path": "/lib/bare/bundles/barePrebuild.js",
"keys": [
"barePrebuild"
]
},
{
"path": "/lib/bare/bundles/bareProcess.js",
"keys": [
"bareProcess"
]
},
{
"path": "/lib/bare/bundles/bareRealm.js",
"keys": [
"bareRealm"
]
},
{
"path": "/lib/bare/bundles/bareSdl.js",
"keys": [
"bareSdl"
]
},
{
"path": "/lib/bare/bundles/bareRpc.js",
"keys": [
@@ -541,12 +547,6 @@
"barePromClient"
]
},
{
"path": "/lib/bare/bundles/bareRepl.js",
"keys": [
"bareRepl"
]
},
{
"path": "/lib/bare/bundles/bareRuntime.js",
"keys": [
@@ -560,15 +560,9 @@
]
},
{
"path": "/lib/bare/bundles/bareSdl.js",
"path": "/lib/bare/bundles/bareRepl.js",
"keys": [
"bareSdl"
]
},
{
"path": "/lib/bare/bundles/bareRun.js",
"keys": [
"bareRun"
"bareRepl"
]
},
{
@@ -577,6 +571,12 @@
"bareSignals"
]
},
{
"path": "/lib/bare/bundles/bareRun.js",
"keys": [
"bareRun"
]
},
{
"path": "/lib/bare/bundles/bareStdio.js",
"keys": [
@@ -590,9 +590,9 @@
]
},
{
"path": "/lib/bare/bundles/bareStorage.js",
"path": "/lib/bare/bundles/bareSidecar.js",
"keys": [
"bareStorage"
"bareSidecar"
]
},
{
@@ -601,12 +601,6 @@
"bareStream"
]
},
{
"path": "/lib/bare/bundles/bareSidecar.js",
"keys": [
"bareSidecar"
]
},
{
"path": "/lib/bare/bundles/bareStructuredClone.js",
"keys": [
@@ -620,9 +614,9 @@
]
},
{
"path": "/lib/bare/bundles/bareTap.js",
"path": "/lib/bare/bundles/bareStorage.js",
"keys": [
"bareTap"
"bareStorage"
]
},
{
@@ -631,6 +625,12 @@
"bareSubprocess"
]
},
{
"path": "/lib/bare/bundles/bareTap.js",
"keys": [
"bareTap"
]
},
{
"path": "/lib/bare/bundles/bareSystemLogger.js",
"keys": [
@@ -643,30 +643,24 @@
"bareTiff"
]
},
{
"path": "/lib/bare/bundles/bareTcp.js",
"keys": [
"bareTcp"
]
},
{
"path": "/lib/bare/bundles/bareTimers.js",
"keys": [
"bareTimers"
]
},
{
"path": "/lib/bare/bundles/bareThread.js",
"keys": [
"bareThread"
]
},
{
"path": "/lib/bare/bundles/bareTpl.js",
"keys": [
"bareTpl"
]
},
{
"path": "/lib/bare/bundles/bareTcp.js",
"keys": [
"bareTcp"
]
},
{
"path": "/lib/bare/bundles/bareType.js",
"keys": [
@@ -679,12 +673,6 @@
"bareTls"
]
},
{
"path": "/lib/bare/bundles/bareUiKit.js",
"keys": [
"bareUiKit"
]
},
{
"path": "/lib/bare/bundles/bareTty.js",
"keys": [
@@ -692,9 +680,15 @@
]
},
{
"path": "/lib/bare/bundles/bareV8.js",
"path": "/lib/bare/bundles/bareUiKit.js",
"keys": [
"bareV8"
"bareUiKit"
]
},
{
"path": "/lib/bare/bundles/bareThread.js",
"keys": [
"bareThread"
]
},
{
@@ -703,24 +697,42 @@
"bareUnpack"
]
},
{
"path": "/lib/bare/bundles/bareVm.js",
"keys": [
"bareVm"
]
},
{
"path": "/lib/bare/bundles/bareWalkHandles.js",
"keys": [
"bareWalkHandles"
]
},
{
"path": "/lib/bare/bundles/bareV8.js",
"keys": [
"bareV8"
]
},
{
"path": "/lib/bare/bundles/bareVm.js",
"keys": [
"bareVm"
]
},
{
"path": "/lib/bare/bundles/bareWebp.js",
"keys": [
"bareWebp"
]
},
{
"path": "/lib/bare/bundles/bareWebKit.js",
"keys": [
"bareWebKit"
]
},
{
"path": "/lib/bare/bundles/bareWebKitGtk.js",
"keys": [
"bareWebKitGtk"
]
},
{
"path": "/lib/bare/bundles/bareUnionBundle.js",
"keys": [
@@ -733,30 +745,12 @@
"bareUtils"
]
},
{
"path": "/lib/bare/bundles/bareWebp.js",
"keys": [
"bareWebp"
]
},
{
"path": "/lib/bare/bundles/bareWebKitGtk.js",
"keys": [
"bareWebKitGtk"
]
},
{
"path": "/lib/bare/bundles/bareV8ToIstanbul.js",
"keys": [
"bareV8ToIstanbul"
]
},
{
"path": "/lib/bare/bundles/bareWhich.js",
"keys": [
"bareWhich"
]
},
{
"path": "/lib/bare/bundles/bareWinUi.js",
"keys": [
@@ -769,24 +763,30 @@
"bareXdiff"
]
},
{
"path": "/lib/bare/bundles/bareWhich.js",
"keys": [
"bareWhich"
]
},
{
"path": "/lib/bare/bundles/bareZlib.js",
"keys": [
"bareZlib"
]
},
{
"path": "/lib/bare/bundles/bareWs.js",
"keys": [
"bareWs"
]
},
{
"path": "/lib/bare/bundles/bareZmq.js",
"keys": [
"bareZmq"
]
},
{
"path": "/lib/bare/bundles/bareWs.js",
"keys": [
"bareWs"
]
},
{
"path": "/lib/bare/bundles/bareWorker.js",
"keys": [
@@ -1607,8 +1607,8 @@
],
"bundleProvenance": {
"schemaVersion": 1,
"generatedAt": "2026-04-21T22:05:46.163Z",
"gitCommit": "0359129a729d59ceafe77eb71347a43a4a67ccbf",
"generatedAt": "2026-04-21T22:11:57.514Z",
"gitCommit": "baae7b34821921606d1995b3a4365d307577b662",
"nodeVersion": "v20.20.2",
"bundleTier": "all",
"normativeManifest": "packages/bare-os-booter/lib/bare-module-manifest.json",
@@ -1,6 +1,6 @@
{
"schema": 1,
"atMs": 1776809144362,
"atMs": 1776809516310,
"commands": [
"arch",
"awk",
@@ -1,6 +1,6 @@
{
"schemaVersion": 1,
"generatedAt": "2026-04-21T22:05:44.530Z",
"generatedAt": "2026-04-21T22:11:56.476Z",
"pages": [
{
"name": "arch",