import assert from "node:assert/strict";
import { readFile } from "node:fs/promises";
import { dirname, join } from "node:path";
import { fileURLToPath } from "node:url";

const here = dirname(fileURLToPath(import.meta.url));
const outputs = join(here, "outputs");
const auditText = await readFile(join(outputs, "orangeboard-audit.json"), "utf8");
const captureText = await readFile(join(outputs, "orangeboard-live-capture.json"), "utf8");
const audit = JSON.parse(auditText);
const capture = JSON.parse(captureText);
const landing = await readFile(join(outputs, "orangeboard-landing-live.png"));
const map = await readFile(join(outputs, "orangeboard-map-live.png"));

assert.equal(audit.schemaVersion, 1);
assert.equal(audit.repository.remote, "https://github.com/jasonsuhari/orangeboard.git");
assert.equal(audit.repository.commit, "dd29e3daddaedf21d52115b35dd6e42d0b797c42");
assert.equal(audit.repository.workingTreeClean, true);
assert.equal(audit.hackathonWindow.elapsedMilliseconds, 71_509_000);
assert.equal(audit.groundedData.permittedBillboards, 559);
assert.equal(audit.groundedData.roadSegments, 52_377);
assert.equal(audit.groundedData.vehicleRoadSegments, 13_090);
assert.equal(audit.groundedData.pedestrianRoadSegments, 39_287);
assert.equal(audit.groundedData.enrichedBillboardRecords, 462);
assert.equal(audit.groundedData.businessAssociations, 1_385);
assert.equal(audit.runtimeModel.baselinePedestrians, 150);
assert.equal(audit.runtimeModel.baselineCars, 80);
assert.equal(audit.runtimeModel.syntheticBusFallbackCount, 16);
assert.deepEqual(audit.runtimeModel.syntheticViewerDwellMilliseconds, [600, 1100, 2200, 4200]);
assert.equal(audit.runtimeModel.fixationMilliseconds, 230);
assert.equal(audit.runtimeModel.owlCandidateTopK, 12);
assert.equal(audit.runtimeModel.owlBlankContentFloor, 0.15);
assert.equal(audit.runtimeModel.owlContentWeight, 0.85);

assert.equal(capture.schemaVersion, 1);
assert.equal(capture.landingTitle, "Peel by Orangeboard — AI Out-of-Home Advertising");
assert.equal(capture.mapBillboardLabel, "559 SF billboards");
assert.deepEqual(capture.pageErrors, []);
assert.deepEqual(capture.blockingNetworkFailures, []);

for (const [name, png] of [["landing", landing], ["map", map]]) {
  assert.equal(png.subarray(1, 4).toString("ascii"), "PNG", `${name} capture is not a PNG.`);
  assert.equal(png.readUInt32BE(16), 1440, `${name} capture width drifted.`);
  assert.equal(png.readUInt32BE(20), 900, `${name} capture height drifted.`);
}

assert.ok(!/p[ks]\.[A-Za-z0-9._-]{20,}/.test(`${auditText}\n${captureText}`), "Artifact contains a token-like string.");

console.log("Orangeboard article artifact verification passed.");
console.log("Checked the git window, grounded datasets, simulation constants, attention model, live captures, error boundary, and token safety.");
