### publish attempts # The required repeated-publish check was attempted against a temporary fixture vault. $ LD_LIBRARY_PATH=/tmp/libxml-compat swift run banal publish --json --vault $ LD_LIBRARY_PATH=/tmp/libxml-compat swift run banal publish --json --vault # Run 1 exit: 1 # Run 2 exit: 1 # Both attempts failed before publish execution; no JSON summaries, compiler names, or artifact paths were produced. ### compiler output /Sources/BANALCore/Assets/AssetManager.swift:2:8: error: no such module 'UniformTypeIdentifiers' # Initial execution without the compatibility shim also failed before command execution: error while loading shared libraries: libxml2.so.2: cannot open shared object file # The target is a macOS-only Swift package; these Linux build errors prevented runtime artifact comparison. ### publish path evidence // Sources/BANALPublisher/PublishModels.swift:34-41 public static func `default`(for vault: VaultConfiguration, fileManager: FileManager = .default) -> PublishConfiguration { PublishConfiguration( siteTitle: vault.siteTitle, siteBaseURL: vault.siteBaseURL, artifactDirectory: vault.publishURL, stagingDirectory: vault.metadataURL.appendingPathComponent("stage", isDirectory: true), borisBinaryURL: BorisLocator.resolve(configured: vault.borisBinaryPath, fileManager: fileManager), oliverBinaryURL: OliverLocator.resolve(configured: vault.oliverBinaryPath, fileManager: fileManager) ) } // Sources/BANALPublisher/BANALPublisher.swift:57-68 let staged = try BorisAdapter.stage( notes: compiled, configuration: configuration, assetsSource: vault.assetsURL, fileManager: fileManager ) let compile = try compiler.compile( stagingDirectory: configuration.stagingDirectory, artifactDirectory: configuration.artifactDirectory, pages: staged.pages, configuration: configuration ) // Sources/BANALPublisher/BorisAdapter.swift:140-147 let staging = configuration.stagingDirectory if fileManager.fileExists(atPath: staging.path) { try fileManager.removeItem(at: staging) } let content = staging.appendingPathComponent("content", isDirectory: true) let layouts = staging.appendingPathComponent("layouts", isDirectory: true) try fileManager.createDirectory(at: content, withIntermediateDirectories: true) try fileManager.createDirectory(at: layouts, withIntermediateDirectories: true) // Sources/BANALPublisher/SiteCompiler.swift:33-43 let fileManager = FileManager.default 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) } # Source review finding: every invocation derives the same vault-relative .banal/stage and .publish paths. # A later invocation removes the shared staging directory while an earlier invocation may still be reading or writing it. # The compiler likewise removes and recreates the shared artifact directory, so rapid runs are not isolated. # final result: BF-RAPID-1 failed. Runtime reproduction was blocked by the Linux/macOS build environment, but the production code directly shows shared mutable paths and destructive cleanup that violate the independent-run contract.