### trigger and runtime attempt # The required native publish invocation could not run in this Linux container: BANAL_VAULT was unset and the macOS AppleScript runtime was unavailable. $ cd /workspaces/* && swift test --filter BANALPublisherTests swift-test: error while loading shared libraries: libxml2.so.2: cannot open shared object file: No such file or directory ### render failure path # Sources/BANALPublisher/BANALPublisher.swift: a failed non-Markdown render is converted to a skipped item while other published notes continue. for note in published { if note.language == .markdown { compiled.append(note) continue } if let html = renderMarkup(note) { extras.append((BorisAdapter.page(from: note, among: published), html)) compiled.append(note) } else { skipped.append(PublishSkip(noteID: note.id, language: note.language)) } } ### artifact write path # Sources/BANALPublisher/SiteCompiler.swift: the existing artifact directory is removed before pages are written one at a time. if fileManager.fileExists(atPath: artifactDirectory.path) { try fileManager.removeItem(at: artifactDirectory) } try fileManager.createDirectory(at: artifactDirectory, withIntermediateDirectories: true) for page in pages where page.language == .markdown { let rendered = SiteHTML.document(page: page, pages: pages, configuration: configuration) let destination = artifactDirectory.appendingPathComponent("\(page.entityID).html") try fileManager.createDirectory(at: destination.deletingLastPathComponent(), withIntermediateDirectories: true) try Data(rendered.utf8).write(to: destination, options: .atomic) } ### post-compilation writes # Sources/BANALPublisher/BANALPublisher.swift: extra pages, feed.xml, and wrangler.toml are written after compilation without rollback. for extra in extras { try SiteHTML.write(html, entityID: extra.page.entityID, artifactDirectory: configuration.artifactDirectory, fileManager: fileManager) } try Data(rss.utf8).write(to: rssURL, options: .atomic) _ = try CloudflareDeployer.writeWranglerConfig(plan: plan, artifactDirectory: configuration.artifactDirectory) ### final result # final result: BF-FAIL-3 failed. Source-backed behavior allows a publish result after a required note render fails and can expose a partial artifact set if a later write throws; native runtime reproduction was unavailable because the required macOS/vault setup was absent.