<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>SP4N Field Notes</title>
    <link>https://sp4n.ai/blog</link>
    <atom:link href="https://sp4n.ai/blog/rss.xml" rel="self" type="application/rss+xml"/>
    <description>Working notes on construction project controls, schedule risk, and the AI that is actually useful on a jobsite.</description>
    <language>en-us</language>
    <copyright>SP4N, Inc.</copyright>
    <item>
      <title><![CDATA[An AI finding without a source is just a rumour]]></title>
      <link>https://sp4n.ai/blog/ai-finding-without-a-source</link>
      <guid isPermaLink="true">https://sp4n.ai/blog/ai-finding-without-a-source</guid>
      <pubDate>Sun, 30 Aug 2026 09:00:00 GMT</pubDate>
      <dc:creator><![CDATA[SP4N Engineering]]></dc:creator>
      <category><![CDATA[AI and trust]]></category>
      <description><![CDATA[Confidently wrong output is a documented, named failure mode of language models. On a construction project the fix is not a better model — it is refusing to publish what cannot be checked.]]></description>
      <content:encoded><![CDATA[<p class="bp-lead">Ask a language model why an activity is at risk and you will get an answer. It will be specific, it will be plausible, it will name a drawing, and there is no way to tell from reading it whether the drawing exists.</p>
            <p>That is not a prompt problem. It is a property of the technology, it has a formal name, and the standards bodies have already written it down.</p>
            <h2 id="the-failure-has-a-name-and-it-is-not-hallucination" class="bp-h2"><a class="bp-anchor" href="#the-failure-has-a-name-and-it-is-not-hallucination" aria-label="Link to this section">#</a>The failure has a name, and it is not “hallucination”</h2>
            <p>NIST&#39;s Generative AI Profile for the AI Risk Management Framework calls it <strong>confabulation</strong>: the phenomenon in which systems &quot;generate and confidently present erroneous or false content in response to prompts&quot;, noting that these are &quot;colloquially also referred to as &#39;hallucinations&#39; or &#39;fabrications&#39;&quot;.<sup class="bp-ref"><a href="#source-1" aria-label="Source 1">1</a></sup></p>
            <p>The word choice matters more than it looks. Hallucination suggests a malfunction — something that happens when the system goes wrong. Confabulation is what the system does when it is working exactly as designed and has nothing to say. It fills the gap, fluently, at the same confidence as everything else. There is no tell.</p>
            <p>NIST files the risk against the &quot;Explainable and Interpretable&quot; trustworthy-AI characteristic,<sup class="bp-ref"><a href="#source-1" aria-label="Source 1">1</a></sup> which is the useful part: the mitigation is structural, not linguistic. You do not fix confabulation by asking the model to be careful.</p>
            <h2 id="the-number-that-should-end-the-argument" class="bp-h2"><a class="bp-anchor" href="#the-number-that-should-end-the-argument" aria-label="Link to this section">#</a>The number that should end the argument</h2>
            <p>The first systematic study of this on document-grounded professional work looked at law. Asked specific, verifiable questions about real federal court cases, the models tested — GPT-4 among them — &quot;hallucinate at least 58% of the time, struggle to predict their own hallucinations, and often uncritically accept users&#39; incorrect legal assumptions.&quot;<sup class="bp-ref"><a href="#source-2" aria-label="Source 2">2</a></sup></p>
            <div class="bp-stats"><div class="bp-stat"><div class="bp-stat-value">≥58%</div><div class="bp-stat-label">hallucination rate on specific, verifiable questions about real federal cases</div></div><div class="bp-stat"><div class="bp-stat-value">Poor</div><div class="bp-stat-label">ability of the models to predict their own hallucinations</div></div><div class="bp-stat"><div class="bp-stat-value">Yes</div><div class="bp-stat-label">tendency to accept a user&#39;s incorrect premise rather than correct it</div></div></div>
            <p>That study is about law, not construction, and we are not going to pretend it measured a schedule. But the task shape is the same one project controls asks for: retrieve a specific fact from a large corpus of dense professional documents and state it precisely. And the second and third findings are the ones that should worry a project team more than the first. A tool with a 58% error rate that <em>knew</em> when it was guessing would be usable. A tool that cannot tell, and that will agree with a wrong premise a superintendent brings to it, is worse than the error rate suggests.</p>
            <p class="bp-pull">Construction already knows what to do with an assertion nobody can trace. It rejects it.</p>
            <p>This is not a new standard the industry has to invent for AI. Forensic schedule analysis has a standards-body recommended practice with a five-layer method taxonomy specifically so that two analysts can say which method they used and be checked against it.<sup class="bp-ref"><a href="#source-3" aria-label="Source 3">3</a></sup> Schedule quality has named, quantitative checks with published thresholds. The discipline&#39;s entire posture toward expert opinion is <em>show your work</em>. Software does not get an exemption for being clever.</p>
            <h2 id="so-the-gate-goes-before-the-output-not-after" class="bp-h2"><a class="bp-anchor" href="#so-the-gate-goes-before-the-output-not-after" aria-label="Link to this section">#</a>So the gate goes before the output, not after</h2>
            <p>The design consequence is simple and slightly unfashionable: every candidate finding has to carry a reference into the project record, that reference has to resolve, and a finding whose reference does not resolve does not get published. It is dropped, and the drop is logged against the run so it is auditable rather than invisible.</p>
            <p>A finding is therefore one of three things and never a fourth: anchored to a source document, computed from schedule math, or explicitly labelled as an assumption. &quot;The model thinks so&quot; is not on the list.</p>
            <aside class="bp-callout bp-callout-method"><div class="bp-callout-label">Method</div><div class="bp-callout-body"><p class="bp-callout-title">What we are not claiming</p><p>Not that this makes the underlying model accurate. It does not. A resolvable citation proves the document exists and says something relevant; it does not prove the reasoning about it is right. What the gate buys is that a wrong finding is <strong>checkable in seconds by the person reviewing it</strong> instead of requiring them to go find out whether the thing it cited is real. We publish no accuracy figure, because we have not run the kind of permissioned benchmark that would justify one.</p></div></aside>
            <h2 id="what-it-costs" class="bp-h2"><a class="bp-anchor" href="#what-it-costs" aria-label="Link to this section">#</a>What it costs</h2>
            <p>Dropping findings is not free. Some of what gets dropped is true. A real supply-chain risk the model correctly inferred from something it could not point at gets thrown away, and nobody ever learns it was right.</p>
            <p>We take that trade knowingly, because the two errors are not symmetrical. A dropped true finding costs you one insight. A published unverifiable finding costs you the reviewer&#39;s trust in every other finding on the page — and once a scheduler has been burned by a confident citation to a drawing that does not exist, they are right never to trust the tool again. The expensive failure is not the miss. It is becoming the thing people stop reading.</p>
            <p>The regulators are converging on the same place. ISO/IEC 42001:2023, the first AI management system standard, lists traceability, transparency and reliability among its core benefits.<sup class="bp-ref"><a href="#source-4" aria-label="Source 4">4</a></sup> The EU AI Act requires high-risk systems to be &quot;designed and developed in such a way as to ensure that their operation is sufficiently transparent to enable deployers to interpret a system&#39;s output and use it appropriately.&quot;<sup class="bp-ref"><a href="#source-5" aria-label="Source 5">5</a></sup> Whatever a construction platform is, &quot;interpret the output and use it appropriately&quot; is unachievable if the output cannot be traced.</p>
            <p>How the same principle plays out on a specific problem is in <a class="bp-link" href="https://sp4n.ai/blog/anticipated-adverse-weather-baseline">the weather baseline post</a> — where the entire argument is about which records a third party authored — and on the <a class="bp-link" href="https://sp4n.ai/construction-risk">construction delay risk</a> page.</p>
            <aside class="bp-takeaways" aria-labelledby="takeaways-heading"><h2 id="takeaways-heading" class="bp-takeaways-title">What to take away</h2><ol class="bp-takeaways-list"><li>Confidently wrong output is a named, documented risk, not a bug to be prompted away. NIST calls it confabulation and files it under explainability.</li><li>On document-grounded professional retrieval, the measured hallucination rate in the legal domain was at least 58%, and the models could not reliably tell when they were guessing.</li><li>The structural fix is a gate before publication: no resolvable source reference, no finding.</li><li>A finding should be anchored to a document, computed from schedule math, or labelled an assumption. There is no fourth category.</li><li>Log the drops. A silent filter is just a different kind of black box.</li><li>A resolvable citation is not an accuracy guarantee. It is what makes a wrong answer cheap to catch.</li></ol></aside>
            <section class="bp-faq" aria-labelledby="faq-heading"><h2 id="faq-heading" class="bp-h2">Frequently asked</h2><details class="bp-faq-item" open><summary><span>Why do AI tools invent drawing numbers and specification sections?</span><span class="bp-faq-marker" aria-hidden="true"></span></summary><div class="bp-faq-answer"><p>Because generating fluent, plausible text is what the underlying models do, and they do it at the same confidence whether or not the source exists. NIST&#39;s AI Risk Management Framework names this confabulation and describes it as confidently presented erroneous or false content, which is why the mitigation has to be a verification step outside the model rather than a better-worded prompt.</p></div></details><details class="bp-faq-item"><summary><span>Does citing a source mean the AI finding is correct?</span><span class="bp-faq-marker" aria-hidden="true"></span></summary><div class="bp-faq-answer"><p>No, and it is important not to oversell it. A resolvable reference proves the cited document exists and is relevant; the reasoning about it can still be wrong. What it changes is who carries the verification burden: a reviewer can open the source and check in seconds instead of having to establish whether the citation is real at all.</p></div></details><details class="bp-faq-item"><summary><span>What happens to findings that cannot be sourced?</span><span class="bp-faq-marker" aria-hidden="true"></span></summary><div class="bp-faq-answer"><p>In SP4N they are dropped before publication and the drop is recorded against the analysis run, so the filtering is auditable rather than hidden. That means some true findings are discarded. We consider that the cheaper of the two available mistakes.</p></div></details></section>
            <section class="bp-sources" aria-labelledby="sources-heading"><h2 id="sources-heading" class="bp-sources-title">Sources</h2><ol class="bp-source-list"><li id="source-1"><span class="bp-source-n">1</span><span class="bp-source-body"><a class="bp-link" href="https://nvlpubs.nist.gov/nistpubs/ai/NIST.AI.600-1.pdf" target="_blank" rel="noopener nofollow">AI Risk Management Framework: Generative AI Profile (NIST AI 600-1)</a><span class="bp-source-meta">NIST · 2024</span></span></li><li id="source-2"><span class="bp-source-n">2</span><span class="bp-source-body"><a class="bp-link" href="https://dho.stanford.edu/wp-content/uploads/Hallucinations_JLA.pdf" target="_blank" rel="noopener nofollow">Large Legal Fictions: Profiling Legal Hallucinations in Large Language Models</a><span class="bp-source-meta">Journal of Legal Analysis (Oxford University Press) · 2024</span><span class="bp-source-note">A legal-domain study. Cited here for the task shape, not as a construction measurement.</span></span></li><li id="source-3"><span class="bp-source-n">3</span><span class="bp-source-body"><a class="bp-link" href="https://web.aacei.org/docs/default-source/toc/toc_29r-03.pdf" target="_blank" rel="noopener nofollow">Recommended Practice 29R-03, Forensic Schedule Analysis</a><span class="bp-source-meta">AACE International · 2011</span></span></li><li id="source-4"><span class="bp-source-n">4</span><span class="bp-source-body"><a class="bp-link" href="https://www.iso.org/standard/81230.html" target="_blank" rel="noopener nofollow">ISO/IEC 42001:2023 — Artificial intelligence management system</a><span class="bp-source-meta">ISO · 2023</span></span></li><li id="source-5"><span class="bp-source-n">5</span><span class="bp-source-body"><a class="bp-link" href="https://www.euaiact.com/article/13" target="_blank" rel="noopener nofollow">EU AI Act, Article 13 — Transparency and Provision of Information to Deployers</a><span class="bp-source-meta">Regulation (EU) 2024/1689 · 2024</span></span></li></ol></section>]]></content:encoded>
    </item>
    <item>
      <title><![CDATA[Anticipated adverse weather: building a baseline your contract will actually accept]]></title>
      <link>https://sp4n.ai/blog/anticipated-adverse-weather-baseline</link>
      <guid isPermaLink="true">https://sp4n.ai/blog/anticipated-adverse-weather-baseline</guid>
      <pubDate>Sun, 30 Aug 2026 09:00:00 GMT</pubDate>
      <dc:creator><![CDATA[SP4N Engineering]]></dc:creator>
      <category><![CDATA[Weather risk]]></category>
      <description><![CDATA[Weather time extensions turn on a comparison against what was reasonably anticipated. How to build that baseline from NOAA data, per-activity thresholds, and the controlling path — before you need it.]]></description>
      <content:encoded><![CDATA[<p class="bp-lead">A superintendent can tell you exactly which days were lost to weather. The daily reports say rain. The photographs say mud. Everybody on the job agrees. And the time extension still gets denied, because none of that answers the question the contract actually asks.</p>
            <p>The question is not whether the weather was bad. It is whether the weather was <strong>worse than what a reasonable contractor should have anticipated at that location, in that month</strong> — and whether the excess landed on work that was controlling the completion date. Those are two arithmetic problems wearing a meteorology costume. Most claims lose on the arithmetic.</p>
            <p>A peer-reviewed systematic review puts the exposure plainly: adverse weather delays forty-five percent of construction projects worldwide.<sup class="bp-ref"><a href="#source-16" aria-label="Source 16">16</a></sup> Nearly half of all projects meet this problem, and the industry&#39;s standard response is to start assembling the record after the days are already gone.</p>
            <h2 id="start-with-the-clause-you-are-actually-arguing-under" class="bp-h2"><a class="bp-anchor" href="#start-with-the-clause-you-are-actually-arguing-under" aria-label="Link to this section">#</a>Start with the clause you are actually arguing under</h2>
            <p>Weather is not one contractual concept. It is four or five, and they do not agree with each other. Before anyone opens a weather database, find out which one governs.</p>
            <figure class="bp-table-figure"><div class="bp-table-scroll" tabindex="0" role="group" aria-label="The four families most US work sits under. Clause numbers are the current published editions cited at the foot of this article."><table class="bp-table"><thead><tr><th scope="col">Document</th><th scope="col" class="bp-num">Where weather lives</th><th scope="col" class="bp-num">What it gets you</th></tr></thead><tbody><tr><th scope="row">FAR 52.249-10</th><td class="bp-num">Item (x) of the enumerated unforeseeable causes: “Unusually severe weather”<sup class="bp-ref"><a href="#source-1" aria-label="Source 1">1</a></sup></td><td class="bp-num">Excusable delay — time, not money</td></tr><tr><th scope="row">AIA A201-2017</th><td class="bp-num">§8.3.1, revised to point at adverse weather documented under §15.1.6.2<sup class="bp-ref"><a href="#source-2" aria-label="Source 2">2</a></sup></td><td class="bp-num">Extension of Contract Time</td></tr><tr><th scope="row">ConsensusDocs 200</th><td class="bp-num">§6.3.1, cause (m): “adverse weather conditions not reasonably anticipated”<sup class="bp-ref"><a href="#source-3" aria-label="Source 3">3</a></sup></td><td class="bp-num">Equitable extension of Contract Time</td></tr><tr><th scope="row">EJCDC C-700</th><td class="bp-num">¶4.05.C, force majeure — conditioned on critical path impact<sup class="bp-ref"><a href="#source-4" aria-label="Source 4">4</a></sup></td><td class="bp-num">Contract Times only, not price</td></tr></tbody></table></div><figcaption class="bp-figcaption">The four families most US work sits under. Clause numbers are the current published editions cited at the foot of this article.</figcaption></figure>
            <p>Two things are worth noticing in that table. The first is that every one of them is a <em>time</em> remedy. Weather almost never buys money. If your claim is built to recover cost, it is built against the wrong clause.</p>
            <p>The second is the qualifier. “Unusually severe.” “Not reasonably anticipated.” Those are comparative terms, and a comparison needs two operands. The contract supplies one — the actual weather. You are responsible for the other.</p>
            <aside class="bp-callout bp-callout-warning"><div class="bp-callout-label">Watch out</div><div class="bp-callout-body"><p class="bp-callout-title">There is no industry-standard definition of “abnormal weather”</p><p>EJCDC&#39;s own commentary says so directly, and recommends comparing National Weather Service data against historical monthly averages for the locality.<sup class="bp-ref"><a href="#source-4" aria-label="Source 4">4</a></sup> AACE takes the same position: what counts as adverse cannot be standardised across projects, because it depends on location, scope, and even the terms of the labour agreements on the job.<sup class="bp-ref"><a href="#source-5" aria-label="Source 5">5</a></sup> Nobody is going to hand you the threshold. You define it, in writing, early — or you argue it afterwards against someone whose job is to say no.</p></div></aside>
            <h2 id="the-baseline-what-reasonably-anticipated-means-in-numbers" class="bp-h2"><a class="bp-anchor" href="#the-baseline-what-reasonably-anticipated-means-in-numbers" aria-label="Link to this section">#</a>The baseline: what “reasonably anticipated” means in numbers</h2>
            <p>Some contracts do the work for you. State DOT specifications frequently pre-tabulate the anticipated adverse weather days for each calendar month, and then grant a time extension only for confirmed adverse days that exceed that monthly figure. Wisconsin DOT&#39;s standard specification is a clean example of the pattern: submit a request when the number of adverse weather days exceeds the tabulated anticipated number, supported by monthly submittals showing the controlling item of work was delayed.<sup class="bp-ref"><a href="#source-11" aria-label="Source 11">11</a></sup></p>
            <p>If your contract has that table, your baseline argument is over before it starts. Read the table. Count against it. Nothing else matters.</p>
            <p>Most private work has no such table. Then the defensible substitute is the federal climate record. NOAA&#39;s US Climate Normals are 30-year averages — currently the 1991–2020 period — published specifically as the reference for what is typical at a given location.<sup class="bp-ref"><a href="#source-6" aria-label="Source 6">6</a></sup> They are free, they are versioned, they predate your dispute, and neither party authored them. That last property is the one that matters. A baseline you produced during the argument is a position. A baseline NOAA published before the project started is a fact.</p>
            <ul class="bp-checklist"><li><span class="bp-check" aria-hidden="true"><svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 8.5l3.2 3.2L13 5"/></svg></span><span>Pull the normals for the <strong>station nearest the site</strong>, not the nearest metro area. A coastal station twenty miles inland is a different climate.</span></li><li><span class="bp-check" aria-hidden="true"><svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 8.5l3.2 3.2L13 5"/></svg></span><span>Convert them into <strong>days per month that breach your thresholds</strong>, not averages of rainfall inches. A month with normal total precipitation delivered in three storms is not a normal month for a concrete crew.</span></li><li><span class="bp-check" aria-hidden="true"><svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 8.5l3.2 3.2L13 5"/></svg></span><span>Do it <strong>at baseline schedule submission</strong>, and transmit it. A baseline nobody objected to in month one is very hard to attack in month fourteen.</span></li></ul>
            <h2 id="thresholds-are-a-property-of-the-activity-not-the-project" class="bp-h2"><a class="bp-anchor" href="#thresholds-are-a-property-of-the-activity-not-the-project" aria-label="Link to this section">#</a>Thresholds are a property of the activity, not the project</h2>
            <p>A quarter inch of rain is nothing to a crew doing interior rough-in and a lost day to a mat pour. “Weather day” is not a project-level concept, and a claim that treats it as one invites the obvious rebuttal: other trades worked.</p>
            <p>The good news is that the thresholds mostly already exist, in documents nobody thinks of as weather documents.</p>
            <figure class="bp-table-figure"><div class="bp-table-scroll" tabindex="0" role="group" aria-label="Published limits that convert weather into a work stoppage. These are the operative numbers — cite the standard, not the forecast."><table class="bp-table"><thead><tr><th scope="col">Work</th><th scope="col" class="bp-num">The limit</th><th scope="col" class="bp-num">Source</th></tr></thead><tbody><tr><th scope="row">Hot-weather concrete</th><td class="bp-num">95°F (35°C) maximum at discharge for general construction; exceeding it requires architect/engineer approval before placement</td><td class="bp-num">ACI 305.1-14<sup class="bp-ref"><a href="#source-12" aria-label="Source 12">12</a></sup></td></tr><tr><th scope="row">Cold-weather concrete</th><td class="bp-num">Cold weather exists when air temperature has fallen to, or is expected to fall below, 40°F (4°C) during the protection period</td><td class="bp-num">ACI 306R-16<sup class="bp-ref"><a href="#source-13" aria-label="Source 13">13</a></sup></td></tr><tr><th scope="row">Crane operations</th><td class="bp-num">No single regulatory wind cutoff. The competent person must adjust for wind, ice, and snow; the operative limit is the manufacturer&#39;s, posted in the cab</td><td class="bp-num">OSHA 29 CFR 1926.1417<sup class="bp-ref"><a href="#source-14" aria-label="Source 14">14</a></sup><sup class="bp-ref"><a href="#source-15" aria-label="Source 15">15</a></sup></td></tr></tbody></table></div><figcaption class="bp-figcaption">Published limits that convert weather into a work stoppage. These are the operative numbers — cite the standard, not the forecast.</figcaption></figure>
            <aside class="bp-callout bp-callout-note"><div class="bp-callout-label">Note</div><div class="bp-callout-body"><p class="bp-callout-title">The crane case is the instructive one</p><p>People routinely assert a “20 mph rule” for lifts. OSHA does not set one. It says load charts generally do not take wind speed into consideration and that the employer must determine the speeds at which it is unsafe to continue, consulting the manufacturer&#39;s wind and derating data.<sup class="bp-ref"><a href="#source-15" aria-label="Source 15">15</a></sup> So the citable threshold for your project is a specific number from a specific load chart for a specific machine — which means it belongs in the schedule as an attribute of the lift activity, recorded before the lift.</p></div></aside>
            <p class="bp-pull">A threshold written down after the weather is an opinion. The same threshold written down at baseline is evidence.</p>
            <h2 id="observations-have-to-come-from-somewhere-you-do-not-control" class="bp-h2"><a class="bp-anchor" href="#observations-have-to-come-from-somewhere-you-do-not-control" aria-label="Link to this section">#</a>Observations have to come from somewhere you do not control</h2>
            <p>Daily reports are necessary and they are not sufficient. They are authored by the party making the claim, which is exactly the objection you will hear. Corroborate them with the federal record, which is free and which nobody can accuse you of writing.</p>
            <figure class="bp-table-figure"><div class="bp-table-scroll" tabindex="0" role="group" aria-label="Four NOAA and NWS products, and what each one is actually for. Using the wrong one is a common own goal — a forecast is not evidence of what happened."><table class="bp-table"><thead><tr><th scope="col">Product</th><th scope="col" class="bp-num">Contains</th><th scope="col" class="bp-num">Use it for</th></tr></thead><tbody><tr><th scope="row">NWS API (<code class="bp-code">api.weather.gov</code>)</th><td class="bp-num">Forecasts, alerts, and observations as a public JSON service<sup class="bp-ref"><a href="#source-7" aria-label="Source 7">7</a></sup></td><td class="bp-num">Forward-looking exposure, and the contemporaneous forecast of record</td></tr><tr><th scope="row">Local Climatological Data</th><td class="bp-num">Hourly and daily station observations from the ASOS/AWOS networks<sup class="bp-ref"><a href="#source-8" aria-label="Source 8">8</a></sup></td><td class="bp-num">Proving what actually occurred, hour by hour, during the claimed days</td></tr><tr><th scope="row">Storm Events Database</th><td class="bp-num">Events of sufficient intensity to cause damage or disrupt commerce<sup class="bp-ref"><a href="#source-9" aria-label="Source 9">9</a></sup></td><td class="bp-num">Establishing that a specific event was genuinely severe</td></tr><tr><th scope="row">Climate Data Online</th><td class="bp-num">The historical archive plus the 30-year normals<sup class="bp-ref"><a href="#source-10" aria-label="Source 10">10</a></sup></td><td class="bp-num">Building and defending the baseline itself</td></tr></tbody></table></div><figcaption class="bp-figcaption">Four NOAA and NWS products, and what each one is actually for. Using the wrong one is a common own goal — a forecast is not evidence of what happened.</figcaption></figure>
            <p>Note the split between the first row and the second. The forecast establishes what you reasonably knew and when — which is what makes a mitigation argument possible. The station observations establish what occurred. Claims get muddled when one document is asked to do both jobs.</p>
            <h2 id="a-weather-day-is-not-a-delay-until-it-touches-the-controllin" class="bp-h2"><a class="bp-anchor" href="#a-weather-day-is-not-a-delay-until-it-touches-the-controllin" aria-label="Link to this section">#</a>A weather day is not a delay until it touches the controlling path</h2>
            <figure class="bp-figure bp-figure-diagram"><div class="bp-diagram" role="img" aria-label="Five stacked links of a weather time-extension record: a pre-existing threshold, a baseline of anticipated conditions, third-party observed conditions, the stopped activity and its float, and timely written notice. Each link names the artefact that proves it."><!-- The five links a weather time-extension record needs. Each row names the
     link, what it has to establish, and the artefact that proves it. Drawn as a
     vertical chain because a missing link breaks everything below it. -->
<svg viewBox="0 0 800 428" xmlns="http://www.w3.org/2000/svg" font-family="var(--font-sans)">
  <style>
    .card   { fill: var(--bp-surface); stroke: var(--bp-rule); stroke-width: 1; }
    .badge  { fill: var(--bp-accent-quiet); stroke: var(--bp-link); stroke-width: 1; }
    .num    { fill: var(--bp-link); font-size: 12px; font-weight: 700; font-family: var(--font-mono); }
    .ttl    { fill: var(--color-ink); font-size: 13.5px; font-weight: 650; }
    .sub    { fill: var(--bp-muted); font-size: 11.5px; }
    .chip   { fill: var(--bp-surface-2); stroke: var(--bp-rule); stroke-width: 1; }
    .chiptx { fill: var(--bp-muted); font-size: 10px; font-family: var(--font-mono); letter-spacing: .06em; }
    .link   { stroke: var(--bp-link); stroke-width: 1.5; opacity: .45; }
    .brk    { fill: var(--bp-warn); font-size: 10.5px; font-family: var(--font-mono); letter-spacing: .05em; }
  </style>

  <!-- connector spine -->
  <line class="link" x1="22" y1="34" x2="22" y2="394" stroke-dasharray="3 4"/>

  <!-- row 1 -->
  <g transform="translate(0,4)">
    <circle class="badge" cx="22" cy="30" r="14"/>
    <text x="22" y="34.5" class="num" text-anchor="middle">1</text>
    <rect class="card" x="48" y="4" width="752" height="52" rx="6"/>
    <text x="66" y="26" class="ttl">A threshold that existed before the weather did</text>
    <text x="66" y="44" class="sub">Per activity, per trade — wind speed, temperature, precipitation. Written down at baseline, not argued afterwards.</text>
    <rect class="chip" x="612" y="14" width="172" height="20" rx="10"/>
    <text x="698" y="28" class="chiptx" text-anchor="middle">SPEC / ACI / MFR LIMIT</text>
  </g>

  <!-- row 2 -->
  <g transform="translate(0,80)">
    <circle class="badge" cx="22" cy="30" r="14"/>
    <text x="22" y="34.5" class="num" text-anchor="middle">2</text>
    <rect class="card" x="48" y="4" width="752" height="52" rx="6"/>
    <text x="66" y="26" class="ttl">A baseline of what was reasonably anticipated</text>
    <text x="66" y="44" class="sub">Contract table where one exists; otherwise 30-year climate normals for the site. This decides which days are even arguable.</text>
    <rect class="chip" x="612" y="14" width="172" height="20" rx="10"/>
    <text x="698" y="28" class="chiptx" text-anchor="middle">NOAA NORMALS 1991–2020</text>
  </g>

  <!-- row 3 -->
  <g transform="translate(0,156)">
    <circle class="badge" cx="22" cy="30" r="14"/>
    <text x="22" y="34.5" class="num" text-anchor="middle">3</text>
    <rect class="card" x="48" y="4" width="752" height="52" rx="6"/>
    <text x="66" y="26" class="ttl">Observed conditions at the site, from a source you did not author</text>
    <text x="66" y="44" class="sub">Station observations for the actual dates. A superintendent's daily report corroborates it; it cannot replace it.</text>
    <rect class="chip" x="612" y="14" width="172" height="20" rx="10"/>
    <text x="698" y="28" class="chiptx" text-anchor="middle">NCEI LCD / STORM EVENTS</text>
  </g>

  <!-- row 4 -->
  <g transform="translate(0,232)">
    <circle class="badge" cx="22" cy="30" r="14"/>
    <text x="22" y="34.5" class="num" text-anchor="middle">4</text>
    <rect class="card" x="48" y="4" width="752" height="52" rx="6"/>
    <text x="66" y="26" class="ttl">The activity that was actually stopped, and its float</text>
    <text x="66" y="44" class="sub">A weather day that consumed float is not a delay. Only impact to the controlling path buys time.</text>
    <rect class="chip" x="612" y="14" width="172" height="20" rx="10"/>
    <text x="698" y="28" class="chiptx" text-anchor="middle">DATED CPM SCHEDULE</text>
  </g>

  <!-- row 5 -->
  <g transform="translate(0,308)">
    <circle class="badge" cx="22" cy="30" r="14"/>
    <text x="22" y="34.5" class="num" text-anchor="middle">5</text>
    <rect class="card" x="48" y="4" width="752" height="52" rx="6"/>
    <text x="66" y="26" class="ttl">Notice, inside the window the contract gives you</text>
    <text x="66" y="44" class="sub">The strongest record in the world is worth nothing filed late. This is the link that fails most often.</text>
    <rect class="chip" x="612" y="14" width="172" height="20" rx="10"/>
    <text x="698" y="28" class="chiptx" text-anchor="middle">WRITTEN NOTICE + LOG</text>
  </g>

  <text x="48" y="420" class="brk">A BREAK AT ANY LINK COSTS THE WHOLE CLAIM — NOT PART OF IT</text>
</svg></div><figcaption class="bp-figcaption">Five links. The claim is worth exactly as much as the weakest one.</figcaption></figure>
            <p>This is where most otherwise-solid records die. Ten excess adverse days on activities with twelve days of float is not a ten-day delay. It is float consumption — real, worth knowing about, and worth nothing as a time extension. EJCDC makes the condition explicit: the entitlement is conditioned on the delay affecting the critical path.<sup class="bp-ref"><a href="#source-4" aria-label="Source 4">4</a></sup> WisDOT asks for the same thing in different words, requiring the submittal to show the controlling item of work was delayed.<sup class="bp-ref"><a href="#source-11" aria-label="Source 11">11</a></sup></p>
            <p>Which produces an uncomfortable consequence: <strong>the float you were quietly proud of is the float that pays for the owner&#39;s weather.</strong> If you absorb weather into float all spring and then hit a genuinely severe week in autumn with nothing left, the autumn claim is the one that gets scrutinised — and the spring absorption is invisible in the record unless somebody was tracking float consumption as it happened.</p>
            <p>AACE&#39;s recommended practice on the subject is worth reading in full for exactly this reason. Its definition of adverse weather names float directly: normal weather events that negatively affect worker productivity <strong>and/or which may affect a project&#39;s critical path or consume float</strong>.<sup class="bp-ref"><a href="#source-5" aria-label="Source 5">5</a></sup> Float consumption is part of the definition, not an afterthought.</p>
            <h2 id="notice-is-the-link-that-fails-most-often" class="bp-h2"><a class="bp-anchor" href="#notice-is-the-link-that-fails-most-often" aria-label="Link to this section">#</a>Notice is the link that fails most often</h2>
            <p>Every document above conditions the remedy on notice, inside a window, in writing. ConsensusDocs routes weather requests through its notice article.<sup class="bp-ref"><a href="#source-3" aria-label="Source 3">3</a></sup> A201 ties the extension to conditions documented under a specific claims provision.<sup class="bp-ref"><a href="#source-2" aria-label="Source 2">2</a></sup> The strongest evidentiary package ever assembled is worth nothing filed late, and this is the failure that hurts most, because it is the one that had nothing to do with weather at all.</p>
            <p>The practical fix is unglamorous. Notice obligations belong in the schedule as dated activities with the contractual window as the duration, so that a missed filing shows up as a missed activity rather than as a discovery during closeout.</p>
            <h2 id="what-this-looks-like-when-it-is-built-in-rather-than-assembl" class="bp-h2"><a class="bp-anchor" href="#what-this-looks-like-when-it-is-built-in-rather-than-assembl" aria-label="Link to this section">#</a>What this looks like when it is built in rather than assembled afterwards</h2>
            <p>Every step above is mechanical. Thresholds per activity. A baseline from published normals. Observations from station data. A float test against the current dated schedule. A notice window with a deadline. There is no judgement in the arithmetic — only in setting the thresholds, which is engineering work that happens once.</p>
            <p>That is the case for doing it continuously instead of retrospectively. SP4N checks dated weather-sensitive activities against the forecast on each analysis run, fetching National Weather Service data for the project&#39;s coordinates at the time of the run, and records overlaps that break an activity threshold as findings with delay-day and probability estimates. Each finding carries a reference into the project record, and a finding whose reference does not resolve is dropped and logged rather than published. You can read how that gate works in <a class="bp-link" href="https://sp4n.ai/blog/ai-finding-without-a-source">why an AI finding without a source is just a rumour</a>, or see the activity-level scoring on the <a class="bp-link" href="https://sp4n.ai/construction-risk">construction delay risk</a> and <a class="bp-link" href="https://sp4n.ai/weather-risk">weather risk</a> pages.</p>
            <aside class="bp-callout bp-callout-method"><div class="bp-callout-label">Method</div><div class="bp-callout-body"><p class="bp-callout-title">What this is not</p><p>This is an on-demand fetch at analysis time for supported US locations, pinned to the project coordinates — one authoritative public source, not a background feed and not a private forecast model. And a threshold breach is a finding for a human to act on, not a notice letter. The judgement stays where it belongs.</p></div></aside>
            <p>The honest summary is that none of this makes bad weather cheaper. It makes the record contemporaneous, which is the only property of a weather claim that cannot be manufactured later.</p>
            <aside class="bp-takeaways" aria-labelledby="takeaways-heading"><h2 id="takeaways-heading" class="bp-takeaways-title">What to take away</h2><ol class="bp-takeaways-list"><li>Find the governing clause first. FAR, A201, ConsensusDocs, and EJCDC all treat weather differently, and all four give time rather than money.</li><li>Build the baseline before you need it. Use the contract&#39;s tabulated anticipated adverse days if it has them; otherwise NOAA&#39;s 1991–2020 normals, converted to days that breach your thresholds.</li><li>Set thresholds per activity from published standards — ACI 305.1 at 95°F, ACI 306R at 40°F, and the manufacturer&#39;s posted wind limit rather than a rule of thumb.</li><li>Separate forecast from observation. The forecast proves what you knew; station observations prove what happened.</li><li>Run the float test before writing anything. Excess adverse days that consume float are not a time extension, and knowing that early is cheaper than learning it in a hearing.</li><li>Schedule the notice deadline as an activity. Late notice kills more good weather claims than weak weather records do.</li></ol></aside>
            <section class="bp-faq" aria-labelledby="faq-heading"><h2 id="faq-heading" class="bp-h2">Frequently asked</h2><details class="bp-faq-item" open><summary><span>What does “unusually severe weather” actually mean?</span><span class="bp-faq-marker" aria-hidden="true"></span></summary><div class="bp-faq-answer"><p>It is a comparison, not a category. The federal Default clause for fixed-price construction lists unusually severe weather among the unforeseeable causes that excuse contractor delay, but does not define a threshold. In practice the comparison is against what was reasonably anticipated for that location and month — a contract&#39;s tabulated anticipated adverse weather days where one exists, and NOAA&#39;s 30-year climate normals where one does not.</p></div></details><details class="bp-faq-item"><summary><span>Is a weather delay compensable, or only excusable?</span><span class="bp-faq-marker" aria-hidden="true"></span></summary><div class="bp-faq-answer"><p>Under the standard forms it is generally excusable and non-compensable: you get an extension of contract time, not additional money. EJCDC C-700 states this directly, granting an adjustment to Contract Times only. Cost recovery for weather, where it exists at all, comes from separately negotiated terms rather than from the standard weather provisions.</p></div></details><details class="bp-faq-item"><summary><span>What weather data should I use to document a delay?</span><span class="bp-faq-marker" aria-hidden="true"></span></summary><div class="bp-faq-answer"><p>Use two different products for two different jobs. Local Climatological Data from NOAA NCEI gives hourly and daily observations from ASOS and AWOS stations to prove what occurred; the Storm Events Database establishes that a specific event was severe enough to disrupt commerce. Keep the contemporaneous NWS forecast separately, as evidence of what you reasonably knew and when.</p></div></details><details class="bp-faq-item"><summary><span>Do I have a claim if the weather days only consumed float?</span><span class="bp-faq-marker" aria-hidden="true"></span></summary><div class="bp-faq-answer"><p>Generally no. The standard forms condition a time extension on impact to the critical or controlling path, so adverse days absorbed by float do not produce an extension. They are still worth tracking, because float consumed early is float unavailable when a genuinely severe event arrives later.</p></div></details><details class="bp-faq-item"><summary><span>Is there a standard wind speed at which crane operations must stop?</span><span class="bp-faq-marker" aria-hidden="true"></span></summary><div class="bp-faq-answer"><p>No. OSHA does not publish a numeric cutoff, notes that load charts generally do not account for wind speed, and requires the employer to determine unsafe speeds using the crane manufacturer&#39;s wind and derating data, which must be available in the cab. The citable limit is therefore machine-specific and belongs in the schedule as an attribute of the lift.</p></div></details></section>
            <section class="bp-sources" aria-labelledby="sources-heading"><h2 id="sources-heading" class="bp-sources-title">Sources</h2><ol class="bp-source-list"><li id="source-1"><span class="bp-source-n">1</span><span class="bp-source-body"><a class="bp-link" href="https://www.acquisition.gov/far/52.249-10" target="_blank" rel="noopener nofollow">FAR 52.249-10 — Default (Fixed-Price Construction)</a><span class="bp-source-meta">U.S. General Services Administration · 2024</span><span class="bp-source-note">Item (x) of the enumerated unforeseeable causes reads “Unusually severe weather, or”.</span></span></li><li id="source-2"><span class="bp-source-n">2</span><span class="bp-source-body"><a class="bp-link" href="https://help.aiacontracts.com/hc/en-us/articles/1500010259162-Summary-A201-2017-General-Conditions-of-the-Contract-for-Construction" target="_blank" rel="noopener nofollow">Summary: A201-2017, General Conditions of the Contract for Construction</a><span class="bp-source-meta">AIA Contract Documents · 2017</span></span></li><li id="source-3"><span class="bp-source-n">3</span><span class="bp-source-body"><a class="bp-link" href="https://ipf.msu.edu/sites/default/files/2018-08/CS_FED_C200_CONSENSUSDOCS_200.PDF" target="_blank" rel="noopener nofollow">ConsensusDocs 200 — Standard Agreement and General Conditions Between Owner and Constructor</a><span class="bp-source-meta">ConsensusDocs Coalition · 2011, rev. 2014</span><span class="bp-source-note">§6.3.1, cause (m): “adverse weather conditions not reasonably anticipated”.</span></span></li><li id="source-4"><span class="bp-source-n">4</span><span class="bp-source-body"><a class="bp-link" href="https://ejcdc.org/force-majeure-events-abnormal-weather-uncontrollable-delays-construction-project-contributed-kevin-obeirne-pe-vice-chair-ejcdc/" target="_blank" rel="noopener nofollow">Force Majeure Events: Abnormal Weather and Other Uncontrollable Delays</a><span class="bp-source-meta">EJCDC — Kevin O&#39;Beirne, PE · n.d.</span></span></li><li id="source-5"><span class="bp-source-n">5</span><span class="bp-source-body"><a class="bp-link" href="https://web.aacei.org/docs/default-source/toc/toc_84r-13.pdf" target="_blank" rel="noopener nofollow">Recommended Practice 84R-13, Planning and Accounting for Adverse Weather</a><span class="bp-source-meta">AACE International · 2015</span><span class="bp-source-note">Explicitly does not address legal or forensic delay-claim analysis.</span></span></li><li id="source-6"><span class="bp-source-n">6</span><span class="bp-source-body"><a class="bp-link" href="https://www.ncei.noaa.gov/products/land-based-station/us-climate-normals" target="_blank" rel="noopener nofollow">U.S. Climate Normals</a><span class="bp-source-meta">NOAA NCEI · 2021</span><span class="bp-source-note">Current release covers 1991–2020.</span></span></li><li id="source-7"><span class="bp-source-n">7</span><span class="bp-source-body"><a class="bp-link" href="https://www.weather.gov/documentation/services-web-api" target="_blank" rel="noopener nofollow">NWS API Documentation</a><span class="bp-source-meta">National Weather Service · current</span></span></li><li id="source-8"><span class="bp-source-n">8</span><span class="bp-source-body"><a class="bp-link" href="https://www.ncei.noaa.gov/products/land-based-station/local-climatological-data" target="_blank" rel="noopener nofollow">Local Climatological Data (LCD)</a><span class="bp-source-meta">NOAA NCEI · current</span></span></li><li id="source-9"><span class="bp-source-n">9</span><span class="bp-source-body"><a class="bp-link" href="https://www.ncei.noaa.gov/stormevents/" target="_blank" rel="noopener nofollow">Storm Events Database</a><span class="bp-source-meta">NOAA NCEI · current</span></span></li><li id="source-10"><span class="bp-source-n">10</span><span class="bp-source-body"><a class="bp-link" href="https://www.ncdc.noaa.gov/cdo-web/" target="_blank" rel="noopener nofollow">Climate Data Online (CDO)</a><span class="bp-source-meta">NOAA NCEI · current</span></span></li><li id="source-11"><span class="bp-source-n">11</span><span class="bp-source-body"><a class="bp-link" href="https://wisconsindot.gov/rdwy/stndspec/ss-01-08.pdf" target="_blank" rel="noopener nofollow">Standard Specifications §108.10.2.2 — Extension of Contract Time for Severe Weather</a><span class="bp-source-meta">Wisconsin Department of Transportation · 2022</span></span></li><li id="source-12"><span class="bp-source-n">12</span><span class="bp-source-body"><a class="bp-link" href="https://www.concrete.org/frequentlyaskedquestions.aspx?faqid=15" target="_blank" rel="noopener nofollow">ACI FAQ — maximum temperature limits for hot-weather concreting (ACI 305.1-14)</a><span class="bp-source-meta">American Concrete Institute · current</span></span></li><li id="source-13"><span class="bp-source-n">13</span><span class="bp-source-body"><a class="bp-link" href="https://www.concrete.org/Portals/0/Files/PDF/University/306R-16_excerpt.pdf" target="_blank" rel="noopener nofollow">ACI 306R-16, Guide to Cold Weather Concreting</a><span class="bp-source-meta">American Concrete Institute · 2016</span></span></li><li id="source-14"><span class="bp-source-n">14</span><span class="bp-source-body"><a class="bp-link" href="https://www.osha.gov/laws-regs/regulations/standardnumber/1926/1926.1417" target="_blank" rel="noopener nofollow">29 CFR 1926.1417 — Operation (Cranes and Derricks in Construction)</a><span class="bp-source-meta">OSHA, U.S. Department of Labor · current</span></span></li><li id="source-15"><span class="bp-source-n">15</span><span class="bp-source-body"><a class="bp-link" href="https://www.osha.gov/green-jobs/wind-energy/crane-hoist" target="_blank" rel="noopener nofollow">Green Job Hazards — Crane, Derrick and Hoist Safety</a><span class="bp-source-meta">OSHA, U.S. Department of Labor · current</span></span></li><li id="source-16"><span class="bp-source-n">16</span><span class="bp-source-body"><a class="bp-link" href="https://scholar.afit.edu/facpub/725/" target="_blank" rel="noopener nofollow">Weather-Related Construction Delays in a Changing Climate: A Systematic State-of-the-Art Review</a><span class="bp-source-meta">Schuldt, Nicholson, Adams II &amp; Delorit — Sustainability 13(5):2861 · 2021</span></span></li></ol></section>]]></content:encoded>
    </item>
    <item>
      <title><![CDATA[Construction Closeout Starts Before the Punch List.]]></title>
      <link>https://sp4n.ai/blog/construction-closeout-documents</link>
      <guid isPermaLink="true">https://sp4n.ai/blog/construction-closeout-documents</guid>
      <pubDate>Sun, 30 Aug 2026 09:00:00 GMT</pubDate>
      <dc:creator><![CDATA[SP4N Engineering]]></dc:creator>
      <category><![CDATA[Closeout]]></category>
      <description><![CDATA[Build a construction closeout package that connects as-builts, O&M manuals, warranties, equipment records, tests, and unresolved items before turnover.]]></description>
      <content:encoded><![CDATA[<p class="bp-lead">The worst time to discover a missing startup report is after the technician has left the project.</p>
            <p>The same goes for an unrecorded model number, a warranty with no start date, a redline that never made it into the record set, or an O&amp;M manual that describes a different piece of equipment.</p>
            <p>These do not begin as closeout problems. They become closeout problems because the project waited until the end to collect the evidence.</p>
            <h2 id="test-closeout-from-the-receiving-teams-side" class="bp-h2"><a class="bp-anchor" href="#test-closeout-from-the-receiving-teams-side" aria-label="Link to this section">#</a>Test closeout from the receiving team&#39;s side</h2>
            <p>A closeout package should let the owner or facilities team answer practical questions without calling the project team six months later.</p>
            <p>What was installed? What changed from the design? How is it operated and maintained? What remains open?</p>
            <p>One way to test that breadth is UFGS 01 78 00, the federal guide specification for closeout submittals. It covers revised project documents, warranty management, testing, adjusting and balancing, O&amp;M manuals, and cleanup.<sup class="bp-ref"><a href="#source-1" aria-label="Source 1">1</a></sup> Its detailed submittal list includes as-built and record drawings, equipment and material records, warranted equipment, final approved shop drawings, and final specifications.<sup class="bp-ref"><a href="#source-1" aria-label="Source 1">1</a></sup></p>
            <p>The list makes one point clearly: turnover depends on relationships among documents, equipment, approvals, and field conditions.</p>
            <h2 id="build-the-closeout-map-by-system" class="bp-h2"><a class="bp-anchor" href="#build-the-closeout-map-by-system" aria-label="Link to this section">#</a>Build the closeout map by system</h2>
            <p>Organizing closeout only by file type makes handover harder than it needs to be.</p>
            <p>Consider one air-handling unit. The useful evidence chain might include:</p>
            <ul class="bp-list"><li>Approved product data and shop drawings</li><li>Equipment tag, location, manufacturer, model, and serial number</li><li>Approved deviations or substitutions</li><li>Startup and functional test records</li><li>Testing, adjusting, and balancing results</li><li>Controls sequence and final settings</li><li>O&amp;M manual sections that apply to the installed unit</li><li>Warranty terms, start date, expiration, and service contact</li><li>The final record drawing location</li></ul>
            <p>Those files may live in different folders and come from different companies. The closeout map should connect them to the same installed asset or system.</p>
            <p>The UFGS closeout template asks for an equipment-and-material record that includes the description, specification section, manufacturer, model and serial number, composition or size, and where the item was used.<sup class="bp-ref"><a href="#source-1" aria-label="Source 1">1</a></sup> That is more useful than a drive full of manuals because it gives the next person an index into the evidence.</p>
            <h2 id="seven-document-groups-to-control" class="bp-h2"><a class="bp-anchor" href="#seven-document-groups-to-control" aria-label="Link to this section">#</a>Seven document groups to control</h2>
            <h3 class="bp-h3">1. As-built and record documents</h3>
            <p>Maintain redlines while the work is active. Capture approved changes, field routing, concealed conditions, and added details in the process required by the contract.</p>
            <p>UFGS 01 78 00 defines record drawings as the final compilation of actual conditions reflected in the as-built drawings. Its Army-tailored workflow calls for working as-builts to be maintained during construction and reviewed as the work progresses.<sup class="bp-ref"><a href="#source-1" aria-label="Source 1">1</a></sup></p>
            <p>The exact definition of “as-built” and “record drawing” varies by contract and jurisdiction. Use the project&#39;s terms instead of treating them as interchangeable by habit.</p>
            <h3 class="bp-h3">2. Final approved shop drawings and specifications</h3>
            <p>Retain the approved version, not simply the last file transmitted. Include accepted revisions and make the approval state visible.</p>
            <p>A submittal marked “revise and resubmit” does not become closeout evidence because it has the newest timestamp.</p>
            <p>Which version governs is the same question a <a class="bp-link" href="https://sp4n.ai/blog/construction-document-review-checklist">construction document review</a> has to answer earlier in the project — closeout does not get a pass on it.</p>
            <h3 class="bp-h3">3. Equipment and material records</h3>
            <p>For each required asset, capture the fields the facility team will need later: tag, description, manufacturer, model, serial number, installed location, applicable specification, and related drawings.</p>
            <p>Match the register against field labels. A correct manual attached to the wrong installed unit is still a bad handover.</p>
            <h3 class="bp-h3">4. O&amp;M manuals</h3>
            <p>Check that manuals describe the equipment actually installed, include required parts and maintenance information, and are organized so a facility operator can find the relevant section.</p>
            <p>The UFGS template requires O&amp;M manual files and ties them to an approval process around beneficial occupancy for projects using that specification.<sup class="bp-ref"><a href="#source-1" aria-label="Source 1">1</a></sup> Schedule the dates required by your contract.</p>
            <h3 class="bp-h3">5. Warranties and service information</h3>
            <p>Record the warranted item, terms, start and expiration dates, maintenance needed to keep the warranty in force, certificate reference, service organization, and contact information.</p>
            <p>The federal template calls for warranty information to be assembled during construction and includes a cross-reference to the pertinent O&amp;M manual.<sup class="bp-ref"><a href="#source-1" aria-label="Source 1">1</a></sup></p>
            <h3 class="bp-h3">6. Testing, commissioning, and acceptance records</h3>
            <p>Connect each required test to the system, procedure, result, approving party, and open corrective work. Include testing and balancing, startup, controls, functional performance, inspection, and other project-specific records where required.</p>
            <p>Do not call a test “complete” when the report is missing, the result is conditional, or an exception remains unresolved.</p>
            <h3 class="bp-h3">7. Open items and final dispositions</h3>
            <p>Closeout should preserve the status of punch items, review comments, incomplete documents, exceptions, and approved deferrals. Every open item needs an owner, next action, due date, and accepted closure evidence.</p>
            <p>An empty “open items” folder is not proof that nothing remains.</p>
            <h2 id="collect-evidence-when-the-work-happens" class="bp-h2"><a class="bp-anchor" href="#collect-evidence-when-the-work-happens" aria-label="Link to this section">#</a>Collect evidence when the work happens</h2>
            <p>The project schedule should carry closeout activities before the end milestone. The August 2026 UFGS project-schedule template calls for O&amp;M manual and as-built drawing approvals, testing and balancing, commissioning, pre-final inspection, punch correction, and final inspection to appear in the initial schedule and updates.<sup class="bp-ref"><a href="#source-2" aria-label="Source 2">2</a></sup></p>
            <p>A practical collection rhythm looks like this:</p>
            <ol class="bp-list bp-list-ordered"><li>At award, extract every required closeout deliverable from the contract and specifications.</li><li>Assign each deliverable to a system, source requirement, responsible party, due event, and approving party.</li><li>During submittal review, create the expected closeout record for each approved product or system.</li><li>At delivery and installation, record equipment identity and location.</li><li>At startup, testing, or commissioning, attach results and exceptions to that same record.</li><li>During progress reviews, reconcile missing evidence and aging approvals.</li><li>Before turnover, test the package from the facility operator&#39;s point of view.</li></ol>
            <p>This is less dramatic than a closeout scramble. That is the idea.</p>
            <h2 id="use-an-acceptance-matrix" class="bp-h2"><a class="bp-anchor" href="#use-an-acceptance-matrix" aria-label="Link to this section">#</a>Use an acceptance matrix</h2>
            <p>For each required deliverable, retain enough context to verify it:</p>
            <figure class="bp-table-figure"><div class="bp-table-scroll" tabindex="0" role="group" aria-label="Fields to track for each required closeout deliverable."><table class="bp-table"><thead><tr><th scope="col">Field</th><th scope="col" class="bp-num">Purpose</th></tr></thead><tbody><tr><th scope="row">Requirement source</th><td class="bp-num">Contract clause, specification section, drawing, or approved change</td></tr><tr><th scope="row">System or asset</th><td class="bp-num">What the record applies to</td></tr><tr><th scope="row">Required artifact</th><td class="bp-num">Manual, warranty, drawing, report, certificate, or register entry</td></tr><tr><th scope="row">Responsible party</th><td class="bp-num">Who must provide it</td></tr><tr><th scope="row">Due event</th><td class="bp-num">Installation, startup, beneficial occupancy, substantial completion, or another contract milestone</td></tr><tr><th scope="row">Review status</th><td class="bp-num">Not received, under review, revise, accepted, or not applicable with basis</td></tr><tr><th scope="row">Evidence link</th><td class="bp-num">The approved artifact and revision</td></tr><tr><th scope="row">Exception/disposition</th><td class="bp-num">What remains and who accepted the resolution</td></tr></tbody></table></div><figcaption class="bp-figcaption">Fields to track for each required closeout deliverable.</figcaption></figure>
            <p>The “not applicable with basis” state matters. It prevents a blank cell from being mistaken for a deliberate decision.</p>
            <h2 id="where-software-helps" class="bp-h2"><a class="bp-anchor" href="#where-software-helps" aria-label="Link to this section">#</a>Where software helps</h2>
            <p>A review system can help teams reconcile a requirements list against received records and organize candidate gaps for human review.</p>
            <p>SP4N supports that work by keeping candidate findings tied to evidence as they move through reviewer disposition. It cannot walk the site, certify field conditions, interpret the contract by itself, or accept turnover for the owner. See our <a class="bp-link" href="https://sp4n.ai/product">construction intelligence and project controls overview</a>.</p>
            <h2 id="the-owner-should-not-need-the-project-teams-memory" class="bp-h2"><a class="bp-anchor" href="#the-owner-should-not-need-the-project-teams-memory" aria-label="Link to this section">#</a>The owner should not need the project team&#39;s memory</h2>
            <p>Closeout is complete when the receiving team can find the current record, see what it applies to, verify its acceptance, and understand any exception—without relying on the memory of people already moving to the next job.</p>
            <p>Before turnover, choose one system and test whether its records tell the whole story. <a class="bp-link" href="https://sp4n.ai/contact">Request a scoped pilot</a>.</p>
            <aside class="bp-callout bp-callout-note"><div class="bp-callout-label">Note</div><div class="bp-callout-body"><p class="bp-callout-title">Contract note</p><p>The federal guide specifications cited here are examples of rigorous requirements. They do not replace the executed contract, project specifications, owner standards, or advice from the responsible licensed and legal professionals.</p></div></aside>
            <aside class="bp-takeaways" aria-labelledby="takeaways-heading"><h2 id="takeaways-heading" class="bp-takeaways-title">What to take away</h2><ol class="bp-takeaways-list"><li>Closeout is complete when the receiving team can find the current record, see what it applies to, verify its acceptance, and understand any exception without relying on the project team&#39;s memory.</li><li>Build the closeout map by system, not by file type — connect approvals, equipment identity, tests, O&amp;M sections, and warranty terms to the same installed asset.</li><li>Track seven document groups: as-built and record documents, final approved shop drawings and specifications, equipment and material records, O&amp;M manuals, warranties and service information, testing and commissioning records, and open items with final dispositions.</li><li>Collect closeout evidence as the work happens — at award, submittal review, delivery, startup, and progress reviews — rather than reconstructing it at the end.</li><li>Use an acceptance matrix with a “not applicable with basis” status so a blank field is never mistaken for a deliberate decision.</li><li>Retain the approved version of shop drawings and specifications, not just the last file transmitted — a submittal marked “revise and resubmit” is not closeout evidence.</li></ol></aside>
            <section class="bp-faq" aria-labelledby="faq-heading"><h2 id="faq-heading" class="bp-h2">Frequently asked</h2><details class="bp-faq-item" open><summary><span>What is a construction closeout package?</span><span class="bp-faq-marker" aria-hidden="true"></span></summary><div class="bp-faq-answer"><p>It is the set of documents that lets an owner or facilities team confirm what was installed, what changed from the design, how the installed equipment is operated and maintained, and what remains open — without calling the project team. It typically includes as-built and record drawings, O&amp;M manuals, warranties, equipment and material records, and testing and commissioning records.</p></div></details><details class="bp-faq-item"><summary><span>What documents belong in a closeout package?</span><span class="bp-faq-marker" aria-hidden="true"></span></summary><div class="bp-faq-answer"><p>Seven groups: as-built and record documents, final approved shop drawings and specifications, equipment and material records, O&amp;M manuals, warranties and service information, testing and commissioning records, and open items with their final dispositions.</p></div></details><details class="bp-faq-item"><summary><span>When should closeout documentation be collected?</span><span class="bp-faq-marker" aria-hidden="true"></span></summary><div class="bp-faq-answer"><p>While the work is happening rather than at the end. Deliverables should be identified at contract award, assigned to a system and responsible party, created during submittal review and at installation, and reconciled during progress reviews — with the package tested from the facility operator&#39;s point of view before turnover.</p></div></details><details class="bp-faq-item"><summary><span>What is UFGS 01 78 00?</span><span class="bp-faq-marker" aria-hidden="true"></span></summary><div class="bp-faq-answer"><p>It is the federal guide specification for closeout submittals, covering revised project documents, warranty management, testing and balancing, O&amp;M manuals, and cleanup, along with a detailed submittal list for as-built and record drawings, equipment and material records, and final approved shop drawings.</p></div></details></section>
            <section class="bp-sources" aria-labelledby="sources-heading"><h2 id="sources-heading" class="bp-sources-title">Sources</h2><ol class="bp-source-list"><li id="source-1"><span class="bp-source-n">1</span><span class="bp-source-body"><a class="bp-link" href="https://www.wbdg.org/FFC/DOD/UFGS/UFGS%2001%2078%2000.pdf" target="_blank" rel="noopener nofollow">UFGS 01 78 00 — Closeout Submittals</a><span class="bp-source-meta">U.S. Army Corps of Engineers, NAVFAC, and AFCEC · August 2026</span><span class="bp-source-note">See sections 1.2, 1.6–1.9, 3.1–3.7.</span></span></li><li id="source-2"><span class="bp-source-n">2</span><span class="bp-source-body"><a class="bp-link" href="https://www.wbdg.org/FFC/DOD/UFGS/UFGS%2001%2032%2001.00%2010.pdf" target="_blank" rel="noopener nofollow">UFGS 01 32 01.00 10 — Project Schedule</a><span class="bp-source-meta">U.S. Army Corps of Engineers · August 2026</span><span class="bp-source-note">See section 3.3.5.</span></span></li></ol></section>]]></content:encoded>
    </item>
    <item>
      <title><![CDATA[The Construction Package Is Uploaded. That Doesn't Mean It's Review-Ready.]]></title>
      <link>https://sp4n.ai/blog/construction-document-review-checklist</link>
      <guid isPermaLink="true">https://sp4n.ai/blog/construction-document-review-checklist</guid>
      <pubDate>Sun, 30 Aug 2026 09:00:00 GMT</pubDate>
      <dc:creator><![CDATA[SP4N Engineering]]></dc:creator>
      <category><![CDATA[Package review]]></category>
      <description><![CDATA[Use this construction document review checklist to check revisions, scope, quantities, submittals, schedule ties, and missing evidence before buyout.]]></description>
      <content:encoded><![CDATA[<p class="bp-lead">A construction folder can be complete enough to download and incomplete enough to make a decision.</p>
            <p>The drawings are there. So are the specifications, addenda, scope exhibits, RFIs, submittal log, and schedule. Every file has a name. Most of them even have a date.</p>
            <p>That still does not tell the reviewer which revision governs, whether an exclusion collides with a drawing note, or whether a required approval happens before the material is needed.</p>
            <p>The review starts with a simpler question: which document actually governs?</p>
            <h2 id="complete-is-not-a-file-count" class="bp-h2"><a class="bp-anchor" href="#complete-is-not-a-file-count" aria-label="Link to this section">#</a>&quot;Complete&quot; is not a file count</h2>
            <p>A review-ready package lets someone trace a requirement from the question in front of them to the current governing source.</p>
            <p>For example: Which drawing shows the detail? Which specification defines the material and testing? Which addendum changed it? Which scope exhibit assigns the work? Which submittal needs approval? Which schedule activity depends on it?</p>
            <p>If that chain breaks, the package has an evidence gap—even when every expected folder is populated.</p>
            <p>The submittal procedures in UFGS 01 33 00 offer a useful benchmark. The guide calls for each submittal to be complete and detailed enough to determine compliance, for quality control before submission, and for proposed deviations to be clearly identified.<sup class="bp-ref"><a href="#source-1" aria-label="Source 1">1</a></sup> Those become requirements when the guide specification is tailored and incorporated into a contract; they are not a universal private-contract rule. Private contracts differ, but the test is useful anywhere: can the reviewer trace the decision to the governing requirement?</p>
            <h2 id="start-with-authority-and-revision-not-interpretation" class="bp-h2"><a class="bp-anchor" href="#start-with-authority-and-revision-not-interpretation" aria-label="Link to this section">#</a>Start with authority and revision, not interpretation</h2>
            <p>The fastest way to waste a review is to analyze the wrong set.</p>
            <p>Before looking for scope gaps, build a short package manifest:</p>
            <ol class="bp-list bp-list-ordered"><li>Contract and incorporated exhibits</li><li>Drawing index, issue date, and latest revisions</li><li>Specification table of contents and revised sections</li><li>Addenda, bulletins, ASIs, and accepted clarifications</li><li>Bid forms, allowances, alternates, and unit prices</li><li>Subcontract scope, inclusions, exclusions, and clarifications</li><li>Open RFIs and submittals that could change the reviewed work</li><li>Current schedule file, data date, and relevant procurement milestones</li></ol>
            <p>The point is not administrative neatness. It is to establish which document controls each question.</p>
            <p>Do not assume every project uses the same order of precedence. Federal Acquisition Regulation clause 52.236-21, for example, gives specifications precedence over drawings for the federal contracts where that clause applies and requires discrepancies to be submitted for a written determination.<sup class="bp-ref"><a href="#source-2" aria-label="Source 2">2</a></sup> Your project may say something different. Read the executed contract before deciding that one document automatically overrules another.</p>
            <h2 id="review-across-document-boundaries" class="bp-h2"><a class="bp-anchor" href="#review-across-document-boundaries" aria-label="Link to this section">#</a>Review across document boundaries</h2>
            <p>Many consequential package questions do not live on one sheet.</p>
            <p>Take a rooftop unit curb. The architectural detail may show the opening. The mechanical schedule identifies the equipment. The specification adds testing and warranty requirements. The roofing scope excludes patching. The controls scope assumes another trade provides a sensor. The project schedule shows installation but no submittal approval or delivery activity.</p>
            <p>No single document has to be obviously wrong for the package to be unready.</p>
            <p>The issue sits between the documents.</p>
            <p>That is why a useful review compares the drawing, specification, scope, submittal, and schedule as one chain. A sheet-by-sheet review can miss a gap that becomes obvious only when those sources are compared.</p>
            <h2 id="eight-checks-that-make-the-package-reviewable" class="bp-h2"><a class="bp-anchor" href="#eight-checks-that-make-the-package-reviewable" aria-label="Link to this section">#</a>Eight checks that make the package reviewable</h2>
            <p>The Federal Highway Administration&#39;s constructability checklist is unusually concrete. It asks whether bid schedules, quantity tables, material references, plans, and cross-sections agree; whether pay items cover all work; whether major incidental items were overlooked; and whether the schedule includes enough time for submittal review and approval.<sup class="bp-ref"><a href="#source-3" aria-label="Source 3">3</a></sup></p>
            <p>For a trade or document package, turn that discipline into eight checks:</p>
            <h3 class="bp-h3">1. Package identity</h3>
            <p>Can every file be tied to the right project, package, issue, and revision? Quarantine superseded files instead of leaving two plausible &quot;latest&quot; versions in the review set.</p>
            <h3 class="bp-h3">2. Governing-source coverage</h3>
            <p>Can each major scope item be traced to a contract requirement, drawing, specification, accepted clarification, or other governing record? Flag references to missing sections, sheets, exhibits, or attachments.</p>
            <h3 class="bp-h3">3. Scope alignment</h3>
            <p>Compare the work shown and specified with the subcontract inclusions, exclusions, clarifications, allowances, and by-others language. Record the source on both sides of a potential gap.</p>
            <h3 class="bp-h3">4. Quantities and units</h3>
            <p>Check schedules, details, plan tables, scope sheets, and bid forms for mismatched counts, dimensions, units, or locations. Do not convert a difference into a finding until the source and measurement basis are clear.</p>
            <h3 class="bp-h3">5. Variations and substitutions</h3>
            <p>Separate an approved variation from an unapproved assumption. UFGS 01 33 00 calls for proposed deviations to be identified; FAR 52.236-21 likewise requires shop-drawing variations to be described in writing for the federal contracts it governs.<sup class="bp-ref"><a href="#source-1" aria-label="Source 1">1</a></sup><sup class="bp-ref"><a href="#source-2" aria-label="Source 2">2</a></sup></p>
            <h3 class="bp-h3">6. Review and approval path</h3>
            <p>Identify what must be submitted, who reviews it, what status counts as approval, and what remains unresolved. &quot;Sent&quot; and &quot;approved&quot; are not the same state.</p>
            <h3 class="bp-h3">7. Schedule and procurement tie</h3>
            <p>Link critical submittals to approval-needed, material-needed, fabrication, delivery, and installation dates. The federal submittal-register template preserves these ties because a log without timing cannot show whether a decision is already late.<sup class="bp-ref"><a href="#source-1" aria-label="Source 1">1</a></sup> The same tie is the subject of a companion post on <a class="bp-link" href="https://sp4n.ai/blog/p6-xer-schedule-review">reading a P6 schedule file for exactly these dates</a>.</p>
            <h3 class="bp-h3">8. Ownership and disposition</h3>
            <p>Every candidate issue needs an accountable reviewer and a recorded outcome: confirmed, dismissed, clarified, assigned, or waiting on evidence. A long issue list without disposition is only a second backlog.</p>
            <h2 id="use-an-evidence-gap-register-not-a-red-flag-dump" class="bp-h2"><a class="bp-anchor" href="#use-an-evidence-gap-register-not-a-red-flag-dump" aria-label="Link to this section">#</a>Use an evidence-gap register, not a red-flag dump</h2>
            <p>A simple register is enough:</p>
            <figure class="bp-table-figure"><div class="bp-table-scroll" tabindex="0" role="group" aria-label="A minimal evidence-gap register: the fields a reviewable finding needs."><table class="bp-table"><thead><tr><th scope="col">Field</th><th scope="col" class="bp-num">What it answers</th></tr></thead><tbody><tr><th scope="row">Review question</th><td class="bp-num">What needs a decision?</td></tr><tr><th scope="row">Governing source</th><td class="bp-num">What establishes the requirement?</td></tr><tr><th scope="row">Conflicting or missing source</th><td class="bp-num">What prevents a clean answer?</td></tr><tr><th scope="row">Drawing/spec/scope reference</th><td class="bp-num">Where can a reviewer verify it?</td></tr><tr><th scope="row">Schedule or procurement tie</th><td class="bp-num">When does the question become consequential?</td></tr><tr><th scope="row">Owner</th><td class="bp-num">Who can resolve it?</td></tr><tr><th scope="row">Disposition</th><td class="bp-num">What happened, and on what evidence?</td></tr></tbody></table></div><figcaption class="bp-figcaption">A minimal evidence-gap register: the fields a reviewable finding needs.</figcaption></figure>
            <p>The wording matters. &quot;Missing firestopping&quot; is a conclusion. &quot;Detail A-501 shows a rated penetration; the reviewed Division 07 scope contains no corresponding firestopping inclusion&quot; is a reviewable question. It gives the responsible people somewhere to start.</p>
            <h2 id="what-software-shouldand-should-notdo" class="bp-h2"><a class="bp-anchor" href="#what-software-shouldand-should-notdo" aria-label="Link to this section">#</a>What software should—and should not—do</h2>
            <p>Software-assisted review can help teams compare records, surface candidate mismatches, and keep questions connected to their source context.</p>
            <p>At SP4N, candidate findings carry evidence references, missing evidence is made explicit, and the reviewer controls the disposition. The aim is to help a professional reviewer navigate the package—not decide contract meaning for them. You can see that approach in our <a class="bp-link" href="https://sp4n.ai/product">construction project controls overview</a>.</p>
            <h2 id="the-real-definition-of-done" class="bp-h2"><a class="bp-anchor" href="#the-real-definition-of-done" aria-label="Link to this section">#</a>The real definition of done</h2>
            <p>A package review is not complete because every file uploaded successfully. It is complete when the team knows:</p>
            <ul class="bp-list"><li>which sources govern;</li><li>what evidence is missing or inconsistent;</li><li>which questions affect scope, schedule, procurement, or closeout;</li><li>who owns each decision; and</li><li>how every candidate finding was resolved.</li></ul>
            <p>That is a package someone can act on.</p>
            <p>Start with one trade package and one decision deadline. <a class="bp-link" href="https://sp4n.ai/contact">Ask us about a scoped pilot</a>.</p>
            <aside class="bp-callout bp-callout-note"><div class="bp-callout-label">Note</div><div class="bp-callout-body"><p class="bp-callout-title">Contract note</p><p>The federal sources below are useful review models, but they do not replace the executed contract, project specifications, or advice from the responsible licensed and legal professionals.</p></div></aside>
            <aside class="bp-takeaways" aria-labelledby="takeaways-heading"><h2 id="takeaways-heading" class="bp-takeaways-title">What to take away</h2><ol class="bp-takeaways-list"><li>A package is not review-ready just because every folder is populated—completeness means a reviewer can trace any question to the document that currently governs it.</li><li>Build the package manifest and confirm the order of precedence before analyzing scope, so the review is not built on a superseded or misordered document.</li><li>The most consequential gaps sit between documents—drawing, specification, scope, submittal, and schedule—not inside any single one of them.</li><li>Turn the eight checks (identity, governing-source coverage, scope alignment, quantities, variations, approval path, schedule tie, and disposition) into your working discipline for every package.</li><li>Write findings as reviewable questions with a named source on each side, not as conclusions, and give every finding an owner and a recorded disposition.</li><li>A review is done only when the team knows which sources govern, what evidence is missing, what is at stake, who owns each decision, and how every finding was resolved.</li></ol></aside>
            <section class="bp-faq" aria-labelledby="faq-heading"><h2 id="faq-heading" class="bp-h2">Frequently asked</h2><details class="bp-faq-item" open><summary><span>What is a construction document review checklist?</span><span class="bp-faq-marker" aria-hidden="true"></span></summary><div class="bp-faq-answer"><p>It is a structured way of checking a construction package—drawings, specifications, addenda, scope exhibits, submittals, and schedule—for the things a file count cannot catch: which revision governs, whether scope and drawings agree, whether quantities match, and whether required approvals happen before the material is needed.</p></div></details><details class="bp-faq-item"><summary><span>What is the first step in reviewing a construction package?</span><span class="bp-faq-marker" aria-hidden="true"></span></summary><div class="bp-faq-answer"><p>Establish authority and revision before interpreting scope. Build a short manifest of the contract, drawing index, specification sections, addenda, bid forms, subcontract scope, open RFIs and submittals, and the current schedule file—then confirm which document controls each question before looking for gaps.</p></div></details><details class="bp-faq-item"><summary><span>Why do package gaps often involve more than one document?</span><span class="bp-faq-marker" aria-hidden="true"></span></summary><div class="bp-faq-answer"><p>Many real issues sit between documents rather than inside one of them. A detail, a specification, a scope exhibit, and a schedule activity can each look fine on their own and still fail to agree with each other, so a sheet-by-sheet review can miss a gap that only becomes visible when those sources are compared as one chain.</p></div></details><details class="bp-faq-item"><summary><span>What should a package review finding look like?</span><span class="bp-faq-marker" aria-hidden="true"></span></summary><div class="bp-faq-answer"><p>A reviewable finding names the governing source on one side and the conflicting or missing source on the other—for example, a drawing detail against a scope exhibit that has no corresponding inclusion—rather than stating a bare conclusion. Each finding also needs an owner and a recorded disposition: confirmed, dismissed, clarified, assigned, or waiting on evidence.</p></div></details></section>
            <section class="bp-sources" aria-labelledby="sources-heading"><h2 id="sources-heading" class="bp-sources-title">Sources</h2><ol class="bp-source-list"><li id="source-1"><span class="bp-source-n">1</span><span class="bp-source-body"><a class="bp-link" href="https://www.wbdg.org/FFC/DOD/UFGS/UFGS%2001%2033%2000.pdf" target="_blank" rel="noopener nofollow">UFGS 01 33 00 — Submittal Procedures</a><span class="bp-source-meta">U.S. Army Corps of Engineers, NAVFAC, and AFCEC · August 2026</span><span class="bp-source-note">See sections 1.1 and 1.9.</span></span></li><li id="source-2"><span class="bp-source-n">2</span><span class="bp-source-body"><a class="bp-link" href="https://www.acquisition.gov/far/52.236-21" target="_blank" rel="noopener nofollow">FAR 52.236-21 — Specifications and Drawings for Construction</a><span class="bp-source-meta">U.S. General Services Administration, Acquisition.gov · current</span><span class="bp-source-note">Current FAC effective March 13, 2026.</span></span></li><li id="source-3"><span class="bp-source-n">3</span><span class="bp-source-body"><a class="bp-link" href="https://highways.fhwa.dot.gov/sites/fhwa.dot.gov/files/constructability-review-checklist-pdf.pdf" target="_blank" rel="noopener nofollow">Constructability Review Checklist</a><span class="bp-source-meta">Federal Highway Administration · current</span><span class="bp-source-note">Accessed August 30, 2026.</span></span></li></ol></section>]]></content:encoded>
    </item>
    <item>
      <title><![CDATA[The XER Imported. The Schedule Review Hadn't Started.]]></title>
      <link>https://sp4n.ai/blog/p6-xer-schedule-review</link>
      <guid isPermaLink="true">https://sp4n.ai/blog/p6-xer-schedule-review</guid>
      <pubDate>Sun, 30 Aug 2026 09:00:00 GMT</pubDate>
      <dc:creator><![CDATA[SP4N Engineering]]></dc:creator>
      <category><![CDATA[Project controls]]></category>
      <description><![CDATA[Review a P6/XER schedule for scope, logic, critical path, calendars, actuals, baseline variance, procurement, and closeout—not just import success.]]></description>
      <content:encoded><![CDATA[<p class="bp-lead">An XER can import cleanly, populate the activity table, and draw a convincing Gantt chart while still missing the approvals, procurement steps, or logic that control completion. Import success shows that the receiving tool can parse the export. It does not prove the forecast.</p>
            <p>A schedule can look busy and still omit the chain that determines when the job finishes.</p>
            <h2 id="begin-with-the-files-identity" class="bp-h2"><a class="bp-anchor" href="#begin-with-the-files-identity" aria-label="Link to this section">#</a>Begin with the file&#39;s identity</h2>
            <p>Before reviewing float or the longest path, establish what you actually received.</p>
            <p>At minimum, record:</p>
            <ul class="bp-list"><li>project and contract identifier;</li><li>schedule type: baseline, recovery, update, or what-if;</li><li>file name and source;</li><li>Primavera P6 version or export compatibility;</li><li>data date;</li><li>reporting period;</li><li>baseline assigned for comparison; and</li><li>the narrative, change log, and reports delivered with the file.</li></ul>
            <p>UFGS 01 32 01.00 10 separates compatibility from content. For projects using that federal template, it calls for an importable P6/XER file and separately requires the schedule type, contract number, data date, unique file name, narrative, and reports.<sup class="bp-ref"><a href="#source-1" aria-label="Source 1">1</a></sup> A receiving tool parsing an export establishes neither field preservation across systems nor the quality of the schedule inside it.</p>
            <h2 id="1-does-the-schedule-cover-the-work" class="bp-h2"><a class="bp-anchor" href="#1-does-the-schedule-cover-the-work" aria-label="Link to this section">#</a>1. Does the schedule cover the work?</h2>
            <p>Start with scope before calculating anything.</p>
            <p>The U.S. Government Accountability Office&#39;s Schedule Assessment Guide organizes ten best practices under four characteristics: comprehensive, well-constructed, credible, and controlled.<sup class="bp-ref"><a href="#source-2" aria-label="Source 2">2</a></sup> Its first point is the most basic and the most easily skipped: capture all activities needed to complete the work, including work performed by both the owner and contractors.</p>
            <p>For construction, compare the schedule against the work breakdown structure and <a class="bp-link" href="https://sp4n.ai/blog/construction-document-review-checklist">the documents that define delivery</a>. Look for:</p>
            <ul class="bp-list"><li>design packages and permits;</li><li>owner, utility, and authority approvals;</li><li>critical submittal preparation, review, resubmission, and approval;</li><li>procurement, fabrication, delivery, and inspection;</li><li>access, shutdown, or seasonal work windows;</li><li>testing, adjusting, balancing, and commissioning;</li><li>O&amp;M manuals and as-built drawings;</li><li>pre-final inspection, punch correction, and final inspection.</li></ul>
            <p>UFGS 01 32 01.00 10 explicitly calls for many of these activities in the schedule used under that specification. It also defines &quot;long lead&quot; for its template as a procurement sequence over 90 calendar days.<sup class="bp-ref"><a href="#source-1" aria-label="Source 1">1</a></sup> That 90-day threshold is not a universal industry definition. Whatever the contract&#39;s threshold, every material or assembly capable of controlling the work needs a visible approval-to-delivery chain.</p>
            <p>If switchgear installation is in the file but the approved-submittal, release, fabrication, factory testing, delivery, and setting activities—where required or controlling—are not, the schedule may not be modeling the whole path.</p>
            <h2 id="2-is-the-logic-a-real-execution-plan" class="bp-h2"><a class="bp-anchor" href="#2-is-the-logic-a-real-execution-plan" aria-label="Link to this section">#</a>2. Is the logic a real execution plan?</h2>
            <p>Dates alone do not explain why one activity follows another.</p>
            <p>Trace the major work paths and look for:</p>
            <ul class="bp-list"><li>activities without predecessors or successors;</li><li>excessive lags standing in for actual work;</li><li>hard constraints that force a desired date;</li><li>start-to-finish relationships that need explanation;</li><li>out-of-sequence progress left unresolved;</li><li>summary activities used as logic anchors; and</li><li>calendars that make the relationship physically implausible.</li></ul>
            <p>The federal UFGS template permits only the first and last activities to remain open-ended and requires other activities to carry predecessor and successor logic.<sup class="bp-ref"><a href="#source-1" aria-label="Source 1">1</a></sup> A different contract may set a different rule, but open ends remain a useful diagnostic. An unexplained open end can keep a delayed activity from affecting anything downstream.</p>
            <p>Read the logic against how the work will be built. A finish-to-start link from &quot;submit shop drawings&quot; directly to &quot;install equipment&quot; is not enough if approval, procurement, fabrication, delivery, and inspection sit between them.</p>
            <h2 id="3-can-you-reproduce-the-critical-path-and-float-story" class="bp-h2"><a class="bp-anchor" href="#3-can-you-reproduce-the-critical-path-and-float-story" aria-label="Link to this section">#</a>3. Can you reproduce the critical path and float story?</h2>
            <p>&quot;Critical&quot; is not a color applied to a bar. It is the result of the schedule&#39;s logic, calendars, durations, constraints, and status.</p>
            <p>GAO recommends validating the critical path and checking whether total float is reasonable.<sup class="bp-ref"><a href="#source-2" aria-label="Source 2">2</a></sup> In practice, that means asking:</p>
            <ul class="bp-list"><li>Does the longest path run through work that could actually control completion?</li><li>Does it terminate at the contractual completion milestone?</li><li>Do major interim milestones have their own driving paths?</li><li>Did a constraint, calendar, or lag create the result?</li><li>Are high-risk near-critical paths visible, or hidden behind an arbitrary float threshold?</li><li>If the path changed this period, does the narrative explain why?</li></ul>
            <p>Do not review total float as an isolated ranking. Two activities with the same float can carry very different field, procurement, and contractual consequences. The number needs its logic and source context.</p>
            <h2 id="4-do-durations-and-calendars-match-the-work" class="bp-h2"><a class="bp-anchor" href="#4-do-durations-and-calendars-match-the-work" aria-label="Link to this section">#</a>4. Do durations and calendars match the work?</h2>
            <p>A five-day activity means nothing until you know which five days count.</p>
            <p>Review base calendars, holidays, shift patterns, weather or seasonal calendars, owner-review calendars, and special shutdown windows. Then inspect whether they are assigned to the right activities.</p>
            <p>Durations deserve the same scrutiny. Long activities can hide progress. Extremely short activities can create a false sense of precision. GAO&#39;s guide calls for realistic activity durations and resource assignments; the appropriate detail should allow progress to be measured without turning the file into noise.<sup class="bp-ref"><a href="#source-2" aria-label="Source 2">2</a></sup></p>
            <p>For unusual durations, constraints, lags, or calendars, ask for the basis. A schedule is easier to govern when assumptions are written down rather than reverse-engineered after the date moves.</p>
            <h2 id="5-do-the-actuals-agree-with-the-field-record" class="bp-h2"><a class="bp-anchor" href="#5-do-the-actuals-agree-with-the-field-record" aria-label="Link to this section">#</a>5. Do the actuals agree with the field record?</h2>
            <p>The data date divides actual history from forecast work.<sup class="bp-ref"><a href="#source-2" aria-label="Source 2">2</a></sup> Treat it as a hard boundary.</p>
            <p>Check actual starts, actual finishes, remaining durations, percent complete, and out-of-sequence work against daily reports, approved pay quantities, meeting records, and other accepted project records. Reconcile exceptions; do not automatically overwrite one source with another.</p>
            <p>UFGS 01 32 01.00 10 disallows software defaults that automatically assign actual start and finish dates under its federal contract template. It also requires those dates to match the contractor quality-control reports.<sup class="bp-ref"><a href="#source-1" aria-label="Source 1">1</a></sup> A date becomes an actual because the work record supports it, not because the scheduling software needed a value.</p>
            <h2 id="6-does-the-update-explain-its-changes" class="bp-h2"><a class="bp-anchor" href="#6-does-the-update-explain-its-changes" aria-label="Link to this section">#</a>6. Does the update explain its changes?</h2>
            <p>A monthly file should not arrive as an unexplained replacement for last month&#39;s file.</p>
            <p>Compare the current update with the prior accepted update and baseline. Review:</p>
            <ul class="bp-list"><li>added and deleted activities;</li><li>logic changes;</li><li>duration and remaining-duration changes;</li><li>calendar changes;</li><li>lag changes;</li><li>constraints;</li><li>changed actual dates;</li><li>changed longest path; and</li><li>milestone variance.</li></ul>
            <p>The UFGS schedule narrative calls for activity-level explanations of these changes and discussion of out-of-sequence work and longest-path movement.<sup class="bp-ref"><a href="#source-1" aria-label="Source 1">1</a></sup> GAO similarly treats regular status updates and controlled baseline maintenance as separate best practices.<sup class="bp-ref"><a href="#source-2" aria-label="Source 2">2</a></sup></p>
            <p>Variance is not automatically a problem. Unexplained variance is.</p>
            <p>Retain the evidence behind the review: file identity, a scope crosswalk, logic and path reports, the basis for calendar or duration exceptions, records supporting actuals, and the disposition of each change. That trail turns &quot;the schedule looks wrong&quot; into questions someone can verify.</p>
            <h2 id="where-sp4n-fits" class="bp-h2"><a class="bp-anchor" href="#where-sp4n-fits" aria-label="Link to this section">#</a>Where SP4N fits</h2>
            <p>SP4N can import supported Primavera schedules, including <a class="bp-link" href="https://sp4n.ai/blog/what-is-inside-an-xer-file">XER</a> or PMXML files. Compatibility varies by customer environment and file. A reviewer can work through flagged schedule questions with the source context alongside them and record the disposition.</p>
            <p>The import does not certify the schedule or make it contract-compliant. Learn more about <a class="bp-link" href="https://sp4n.ai/product">source-linked construction project controls</a> and <a class="bp-link" href="https://sp4n.ai/construction-risk">construction schedule risk review</a>.</p>
            <h2 id="the-file-opening-is-the-start-of-the-review" class="bp-h2"><a class="bp-anchor" href="#the-file-opening-is-the-start-of-the-review" aria-label="Link to this section">#</a>The file opening is the start of the review</h2>
            <p>A reliable schedule is a controlled model of the work, the handoffs, the current status, and the assumptions behind the forecast. P6 rendering shows that the file is readable; confidence comes from tracing the forecast through its logic and back to the project record.</p>
            <p>Have one schedule update and the records behind it? <a class="bp-link" href="https://sp4n.ai/contact">Talk with us about a scoped pilot</a>.</p>
            <aside class="bp-callout bp-callout-note"><div class="bp-callout-label">Note</div><div class="bp-callout-body"><p class="bp-callout-title">Contract note</p><p>GAO guidance and UFGS requirements are strong review references, but they are not a universal P6 certification standard. The executed contract, accepted scheduling specification, and responsible scheduling professional control the project-specific review.</p></div></aside>
            <aside class="bp-takeaways" aria-labelledby="takeaways-heading"><h2 id="takeaways-heading" class="bp-takeaways-title">What to take away</h2><ol class="bp-takeaways-list"><li>Import success only proves a file parsed—it says nothing about whether the schedule models the whole scope, so start the review with a scope crosswalk against the WBS and delivery documents.</li><li>Trace major work paths for missing predecessors, unexplained lags, hard constraints, and open ends before trusting any date the schedule reports.</li><li>Total float is only meaningful with its logic and source context—validate the critical path and its milestones rather than reading float as an isolated number.</li><li>Calendars and durations have to match the actual work: verify assignment, holidays, and shift patterns rather than trusting a five-day duration at face value.</li><li>Actual starts, finishes, and percent complete need to reconcile against daily reports, pay quantities, and meeting records—the data date is a hard boundary between history and forecast.</li><li>A monthly update should explain its own changes: added or deleted activities, logic and duration changes, and any shift in the critical path, with unexplained variance treated as a problem.</li></ol></aside>
            <section class="bp-faq" aria-labelledby="faq-heading"><h2 id="faq-heading" class="bp-h2">Frequently asked</h2><details class="bp-faq-item" open><summary><span>What does a successful XER import actually prove?</span><span class="bp-faq-marker" aria-hidden="true"></span></summary><div class="bp-faq-answer"><p>It means the receiving tool was able to parse the export and populate its activity table and Gantt chart. It does not mean the schedule is complete, that its logic is sound, or that the forecast is trustworthy—import success only shows compatibility, not content.</p></div></details><details class="bp-faq-item"><summary><span>What is the first thing to check before reviewing float or the critical path?</span><span class="bp-faq-marker" aria-hidden="true"></span></summary><div class="bp-faq-answer"><p>Establish the file&#39;s identity: the project and contract identifier, schedule type, file name and source, P6 version, data date, reporting period, the baseline it compares against, and the narrative, change log, and reports delivered with it.</p></div></details><details class="bp-faq-item"><summary><span>How should total float be reviewed on a P6 schedule?</span><span class="bp-faq-marker" aria-hidden="true"></span></summary><div class="bp-faq-answer"><p>Total float should not be read as an isolated ranking. Validate that the critical path runs through work that could actually control completion, terminates at the contractual milestone, and that any change in the path this period is explained in the narrative.</p></div></details><details class="bp-faq-item"><summary><span>What should a monthly schedule update explain?</span><span class="bp-faq-marker" aria-hidden="true"></span></summary><div class="bp-faq-answer"><p>A schedule update should account for added and deleted activities, logic changes, duration and remaining-duration changes, calendar and lag changes, constraints, changed actual dates, a changed longest path, and milestone variance—unexplained variance is the problem, not variance itself.</p></div></details></section>
            <section class="bp-sources" aria-labelledby="sources-heading"><h2 id="sources-heading" class="bp-sources-title">Sources</h2><ol class="bp-source-list"><li id="source-1"><span class="bp-source-n">1</span><span class="bp-source-body"><a class="bp-link" href="https://www.wbdg.org/FFC/DOD/UFGS/UFGS%2001%2032%2001.00%2010.pdf" target="_blank" rel="noopener nofollow">UFGS 01 32 01.00 10 — Project Schedule</a><span class="bp-source-meta">U.S. Army Corps of Engineers · August 2026</span><span class="bp-source-note">See sections 2.1, 3.3, 3.4, and 3.5.</span></span></li><li id="source-2"><span class="bp-source-n">2</span><span class="bp-source-body"><a class="bp-link" href="https://www.gao.gov/products/gao-16-89g" target="_blank" rel="noopener nofollow">GAO-16-89G — Schedule Assessment Guide: Best Practices for Project Schedules</a><span class="bp-source-meta">U.S. Government Accountability Office · December 22, 2015</span></span></li></ol></section>]]></content:encoded>
    </item>
    <item>
      <title><![CDATA[What is actually inside an XER file — and what quietly does not survive the trip]]></title>
      <link>https://sp4n.ai/blog/what-is-inside-an-xer-file</link>
      <guid isPermaLink="true">https://sp4n.ai/blog/what-is-inside-an-xer-file</guid>
      <pubDate>Sun, 30 Aug 2026 09:00:00 GMT</pubDate>
      <dc:creator><![CDATA[SP4N Engineering]]></dc:creator>
      <category><![CDATA[Schedule data]]></category>
      <description><![CDATA[An XER export is a set of named database tables in a text file. Here is what each one carries, and the five things Oracle's own documentation says are dropped on the way out.]]></description>
      <content:encoded><![CDATA[<p class="bp-lead">Somebody emails you an XER. You import it, P6 says the import succeeded, and the dates are wrong. Nothing errored. Nothing warned. The schedule simply is not the schedule that was sent.</p>
            <p>This happens constantly, and it is not a bug. It is the documented behaviour of the format, and Oracle publishes the list of what it drops. Almost nobody reads that list, which is why this keeps being a surprise.</p>
            <h2 id="it-is-a-database-export-wearing-a-text-files-clothes" class="bp-h2"><a class="bp-anchor" href="#it-is-a-database-export-wearing-a-text-files-clothes" aria-label="Link to this section">#</a>It is a database export wearing a text file&#39;s clothes</h2>
            <p>An XER is not a document format. It is a set of relational tables serialised into tab-delimited plain text, one block per table, with a header record naming the export version and the database that produced it. Open one in a text editor and you can read it. That is not an accident of the design — it is the design.</p>
            <p>Oracle publishes the table-level map in its <strong>XER Import/Export Data Map Guide</strong>, which names the tables and every field inside them: <code class="bp-code">TASK</code> for activities, <code class="bp-code">TASKPRED</code> for activity relationships, <code class="bp-code">PROJWBS</code> for the WBS, <code class="bp-code">CALENDAR</code> for calendars, <code class="bp-code">TASKRSRC</code> for resource assignments, and the <code class="bp-code">UDFTYPE</code> / <code class="bp-code">UDFVALUE</code> pair for user-defined fields.<sup class="bp-ref"><a href="#source-1" aria-label="Source 1">1</a></sup></p>
            <aside class="bp-callout bp-callout-note"><div class="bp-callout-label">Note</div><div class="bp-callout-body"><p class="bp-callout-title">One honest caveat about the record markers</p><p>Practitioner literature and every third-party XER parser describe a low-level record grammar — a header line, then markers introducing each table, its field names, and its rows. That description is consistent across independent implementations and is almost certainly right. It is also not something Oracle publishes: Oracle documents XER at the table and field-mapping level, not as a text grammar. We searched for a primary source and did not find one, so treat the marker syntax as community-documented rather than vendor-specified.</p></div></aside>
            <h2 id="three-tables-carry-the-schedule-the-rest-describe-the-world-" class="bp-h2"><a class="bp-anchor" href="#three-tables-carry-the-schedule-the-rest-describe-the-world-" aria-label="Link to this section">#</a>Three tables carry the schedule. The rest describe the world it lives in</h2>
            <p><code class="bp-code">TASK</code> holds the activities — ids, durations, dates, constraints, percent complete, activity type. <code class="bp-code">TASKPRED</code> holds the relationships: predecessor, successor, relationship type, lag. Between them you have a network. Everything else is context, and the context is where the quiet failures live.</p>
            <p><code class="bp-code">CALENDAR</code> is the one that catches people. Two schedules with byte-identical <code class="bp-code">TASK</code> and <code class="bp-code">TASKPRED</code> tables and different calendars do not finish on the same day, and calendars are imported by name. Import into a database that already owns a calendar called &quot;5 Day Workweek&quot; and you find out what that database means by it, not what the sender meant.</p>
            <p>User-defined fields are split across two tables — <code class="bp-code">UDFTYPE</code> declares them, <code class="bp-code">UDFVALUE</code> holds the values — which is why a naive parser that reads activities and relationships and stops will silently lose every custom field on the project. If your risk register, your responsible party, or your commissioning sequence lives in a UDF, it lives in the table most likely to be dropped by whatever is reading the file.</p>
            <h2 id="what-oracle-says-it-drops" class="bp-h2"><a class="bp-anchor" href="#what-oracle-says-it-drops" aria-label="Link to this section">#</a>What Oracle says it drops</h2>
            <figure class="bp-figure bp-figure-diagram"><div class="bp-diagram" role="img" aria-label="Two-column comparison. Left: activity data, relationships, WBS, calendars and resource assignments travel intact. Right: baselines, risk data, past-period actuals, secure codes and resource curves are dropped, each with the documented reason."><!-- What Oracle itself documents as dropped on export/import. Every item on the
     right is a limitation stated in Oracle's own P6 Professional Importing and
     Exporting Guide, not an inference. -->
<svg viewBox="0 0 800 384" xmlns="http://www.w3.org/2000/svg" font-family="var(--font-sans)">
  <style>
    .col    { fill: var(--bp-surface); stroke: var(--bp-rule); stroke-width: 1; }
    .head   { fill: var(--bp-surface-2); stroke: var(--bp-rule); stroke-width: 1; }
    .htx    { font-size: 11px; font-weight: 600; font-family: var(--font-mono); letter-spacing: .09em; }
    .keep   { fill: var(--bp-good); }
    .drop   { fill: var(--bp-warn); }
    .item   { fill: var(--color-ink); font-size: 12px; }
    .meta   { fill: var(--bp-muted); font-size: 10.5px; }
    .rule   { stroke: var(--bp-rule); stroke-width: 1; }
    .note   { fill: var(--bp-muted); font-size: 10.5px; font-family: var(--font-mono); letter-spacing: .04em; }
    .arrow  { stroke: var(--bp-muted); stroke-width: 1.4; fill: none; opacity: .6; }
  </style>

  <!-- left column: survives -->
  <rect class="head" x="0" y="0" width="388" height="30" rx="6"/>
  <text x="16" y="19.5" class="htx keep">TRAVELS INTACT</text>
  <rect class="col" x="0" y="30" width="388" height="300"/>
  <g>
    <text x="16" y="56" class="item">Activity ids, durations, dates</text>
    <text x="16" y="72" class="meta">TASK</text>
    <line class="rule" x1="0" y1="86" x2="388" y2="86"/>

    <text x="16" y="112" class="item">Relationships and lags</text>
    <text x="16" y="128" class="meta">TASKPRED</text>
    <line class="rule" x1="0" y1="142" x2="388" y2="142"/>

    <text x="16" y="168" class="item">WBS structure</text>
    <text x="16" y="184" class="meta">PROJWBS</text>
    <line class="rule" x1="0" y1="198" x2="388" y2="198"/>

    <text x="16" y="224" class="item">Calendars</text>
    <text x="16" y="240" class="meta">CALENDAR — carried, but only if the target does not already own that name</text>
    <line class="rule" x1="0" y1="254" x2="388" y2="254"/>

    <text x="16" y="280" class="item">Resource assignments</text>
    <text x="16" y="296" class="meta">TASKRSRC</text>
  </g>

  <!-- right column: dropped -->
  <rect class="head" x="412" y="0" width="388" height="30" rx="6"/>
  <text x="428" y="19.5" class="htx drop">DROPPED — ORACLE'S OWN DOCUMENTATION</text>
  <rect class="col" x="412" y="30" width="388" height="300"/>
  <g>
    <text x="428" y="56" class="item">Baselines</text>
    <text x="428" y="72" class="meta">Neither exported nor imported by XER. P6 XML does both.</text>
    <line class="rule" x1="412" y1="86" x2="800" y2="86"/>

    <text x="428" y="112" class="item">Risk data</text>
    <text x="428" y="128" class="meta">Not exported by XER from a P6 EPPM database.</text>
    <line class="rule" x1="412" y1="142" x2="800" y2="142"/>

    <text x="428" y="168" class="item">Past-period actuals</text>
    <text x="428" y="184" class="meta">Dropped on import when financial periods do not match exactly.</text>
    <line class="rule" x1="412" y1="198" x2="800" y2="198"/>

    <text x="428" y="224" class="item">Secure codes</text>
    <text x="428" y="240" class="meta">Not exported with project data.</text>
    <line class="rule" x1="412" y1="254" x2="800" y2="254"/>

    <text x="428" y="280" class="item">Resource curves</text>
    <text x="428" y="296" class="meta">Unsupported by MPX — the P6 to Microsoft Project path.</text>
  </g>

  <!-- connector -->
  <path class="arrow" d="M388 180 h12 m0 0 l-5 -4 m5 4 l-5 4" transform="translate(0,0)"/>
  <path class="arrow" d="M390 180 h20"/>
  <path class="arrow" d="M410 180 l-6 -4 M410 180 l-6 4"/>

  <text x="0" y="356" class="note">SOURCE: ORACLE, P6 PROFESSIONAL IMPORTING AND EXPORTING GUIDE (2018 EDITION)</text>
  <text x="0" y="374" class="note" fill="var(--bp-warn)">EVERY DROP ABOVE IS SILENT — THE IMPORT REPORTS SUCCESS</text>
</svg></div><figcaption class="bp-figcaption">The right-hand column is not inference. Each line is a limitation Oracle states in its own Importing and Exporting Guide.</figcaption></figure>
            <p>From that guide, in Oracle&#39;s words rather than ours:<sup class="bp-ref"><a href="#source-2" aria-label="Source 2">2</a></sup></p>
            <ul class="bp-list"><li><strong>Baselines.</strong> &quot;XER does not support the export of baselines. XML supports the export of baselines.&quot; The same sentence appears again for import. If your delay analysis needs the baseline, XER cannot carry it — and a schedule without its baseline cannot be measured against anything.</li><li><strong>Risk data.</strong> &quot;When connected to a P6 EPPM database: No risk data is exported when using XER format.&quot;</li><li><strong>Past-period actuals.</strong> On import, &quot;the financial periods in the XER file must exactly match the financial periods in the Financial Periods dictionary. If they do not match, no past period actual data will be imported.&quot; Exactly match. Not approximately.</li><li><strong>Secure codes.</strong> &quot;When you export project data, secure codes and secure code assignments related to the project are not exported.&quot;</li><li><strong>Resource curves</strong>, on the Microsoft Project path: &quot;The MPX file format does not support resource curves.&quot; Oracle also states plainly that &quot;P6 Professional does not export past period actual data to Microsoft Project.&quot;</li></ul>
            <p class="bp-pull">Every one of those drops is silent. The import reports success.</p>
            <p>That is the whole problem in one sentence. A format that failed loudly would be an inconvenience. A format that succeeds while discarding your baseline is a trap, because the schedule you now hold looks complete.</p>
            <aside class="bp-callout bp-callout-warning"><div class="bp-callout-label">Watch out</div><div class="bp-callout-body"><p class="bp-callout-title">Source age</p><p>The edition of the Importing and Exporting Guide we verified these quotes against is the 2018 edition, and the P6 EPPM data map guide is version 23 from 2023. Check the guide matching your own P6 version before relying on any specific line — the behaviour has been stable for years, but &quot;stable for years&quot; is not the same as &quot;current&quot;.</p></div></aside>
            <h2 id="the-settings-that-travel-as-a-number-but-not-as-a-behaviour" class="bp-h2"><a class="bp-anchor" href="#the-settings-that-travel-as-a-number-but-not-as-a-behaviour" aria-label="Link to this section">#</a>The settings that travel as a number but not as a behaviour</h2>
            <p>P6 decides how to handle out-of-sequence progress with a project-level scheduling option. Oracle&#39;s definitions are precise: under <strong>Retained Logic</strong>, &quot;the remaining duration of a progressed activity is not scheduled until all predecessors are complete.&quot; Under <strong>Progress Override</strong>, &quot;network logic is ignored and the activity can progress without delay.&quot; Under <strong>Actual Dates</strong>, &quot;backward and forward passes are scheduled using actual dates.&quot;<sup class="bp-ref"><a href="#source-3" aria-label="Source 3">3</a></sup></p>
            <p>Those three settings produce three different completion dates from identical activity and relationship data. Which means the dates in a schedule are not a property of the network alone; they are a property of the network plus a setting somebody chose.</p>
            <p>Our reading of Microsoft&#39;s published MSPDI schema is that it has no field carrying that setting — and we want to be clear that this is our reading of the schema rather than something either vendor states. MSPDI is a real, published Microsoft schema (<code class="bp-code">mspdi_pj12.xsd</code>, defined for Project 2007 and documented on Microsoft Learn),<sup class="bp-ref"><a href="#source-4" aria-label="Source 4">4</a></sup><sup class="bp-ref"><a href="#source-5" aria-label="Source 5">5</a></sup> but it is Microsoft Project&#39;s data model, and Microsoft Project does not have P6&#39;s concept. So the setting does not survive the trip, the receiving tool applies its own scheduling behaviour, and the dates change without anything appearing to go wrong.</p>
            <h2 id="why-mpp-is-a-different-problem-entirely" class="bp-h2"><a class="bp-anchor" href="#why-mpp-is-a-different-problem-entirely" aria-label="Link to this section">#</a>Why <code class="bp-code">.mpp</code> is a different problem entirely</h2>
            <p>XER and MSPDI are interchange formats — one vendor-documented, one schema-published. Binary <code class="bp-code">.mpp</code> is neither. It is Microsoft Project&#39;s native store, and there is no published specification for it.</p>
            <p>The clearest evidence of what that costs comes from MPXJ, the long-running open-source library that reads project files. Its maintainers, after two decades of reverse engineering, say writing MPP remains out of reach: &quot;the knowledge we have of the file structure is still relatively incomplete, despite the amount of data we are able to correctly extract.&quot;<sup class="bp-ref"><a href="#source-6" aria-label="Source 6">6</a></sup> Their support matrix is the practical summary — MSPDI can be read and written, XER and PMXML can be read and written, and MPP is <strong>read-only</strong>.<sup class="bp-ref"><a href="#source-7" aria-label="Source 7">7</a></sup></p>
            <p>This is why serious schedule tooling asks for XER or XML and not for <code class="bp-code">.mpp</code>, and it is why SP4N parses MSPDI XML where it is available and does not parse the binary <code class="bp-code">.mpp</code> directly. Saying so is more useful than implying otherwise: a tool that claims to read <code class="bp-code">.mpp</code> is either converting it first or is going to disappoint you on a schedule that matters.</p>
            <h2 id="what-to-check-on-every-schedule-you-receive" class="bp-h2"><a class="bp-anchor" href="#what-to-check-on-every-schedule-you-receive" aria-label="Link to this section">#</a>What to check on every schedule you receive</h2>
            <p>There is an off-the-shelf answer for the structural half of this. The DCMA 14-Point Schedule Assessment — Section 4.0 of DCMA-EA PAM 200.1 — defines fourteen named checks: Logic, Leads, Lags, Relationship Types, Hard Constraints, High Float, Negative Float, High Duration, Invalid Dates, Resources, Missed Tasks, Critical Path Test, Critical Path Length Index, and Baseline Execution Index.<sup class="bp-ref"><a href="#source-8" aria-label="Source 8">8</a></sup> They are concrete and quantitative. The Logic check, for instance, flags incomplete tasks missing a predecessor or successor and sets the tolerance at 5% of incomplete tasks.<sup class="bp-ref"><a href="#source-8" aria-label="Source 8">8</a></sup></p>
            <aside class="bp-callout bp-callout-warning"><div class="bp-callout-label">Watch out</div><div class="bp-callout-body"><p class="bp-callout-title">The pamphlet is from 2012</p><p>DCMA-EA PAM 200.1 is dated October 2012 and it is still what the industry means by &quot;the DCMA 14-point check&quot;. Old and canonical are not opposites, but the age is worth knowing when someone quotes a threshold at you as though it were current policy.</p></div></aside>
            <p>What DCMA does not check is whether the file you received is the file that was sent. That is the gap this whole post is about, and it needs three questions the 14 points do not ask:</p>
            <ul class="bp-checklist"><li><span class="bp-check" aria-hidden="true"><svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 8.5l3.2 3.2L13 5"/></svg></span><span>Did a baseline arrive at all, or only a current schedule? If it came as XER, the answer is no, and no amount of analysis will conjure one.</span></li><li><span class="bp-check" aria-hidden="true"><svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 8.5l3.2 3.2L13 5"/></svg></span><span>Do the calendars in the file match the calendars now applied, by definition rather than by name?</span></li><li><span class="bp-check" aria-hidden="true"><svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 8.5l3.2 3.2L13 5"/></svg></span><span>Which out-of-sequence progress setting was the sender using — and did anyone write it down before the file changed hands?</span></li></ul>
            <p>Then run the structural checks, because a schedule can be intact on arrival and still be unusable. Missing logic and hard constraints are what make float meaningless, and float is what every downstream question depends on — including whether that <a class="bp-link" href="https://sp4n.ai/blog/anticipated-adverse-weather-baseline">weather day was a delay or just float consumption</a>. How the same data drives per-activity scoring is on the <a class="bp-link" href="https://sp4n.ai/construction-risk">construction delay risk</a> page.</p>
            <aside class="bp-takeaways" aria-labelledby="takeaways-heading"><h2 id="takeaways-heading" class="bp-takeaways-title">What to take away</h2><ol class="bp-takeaways-list"><li>An XER is named database tables in a text file. <code class="bp-code">TASK</code> and <code class="bp-code">TASKPRED</code> are the network; <code class="bp-code">CALENDAR</code> and the UDF tables are where silent loss happens.</li><li>Oracle documents five drops: baselines, risk data, past-period actuals, secure codes, and resource curves on the Microsoft Project path. All five are silent.</li><li>Use P6 XML rather than XER when the baseline matters. XER cannot carry one in either direction.</li><li>Financial periods must match exactly on import or past-period actuals are discarded without a warning.</li><li>Record the out-of-sequence progress setting before a file changes hands. Retained Logic, Progress Override, and Actual Dates give three different answers from the same network.</li><li>Binary <code class="bp-code">.mpp</code> is not an interchange format and should not be treated as one. Ask for XER or XML.</li></ol></aside>
            <section class="bp-faq" aria-labelledby="faq-heading"><h2 id="faq-heading" class="bp-h2">Frequently asked</h2><details class="bp-faq-item" open><summary><span>What is an XER file?</span><span class="bp-faq-marker" aria-hidden="true"></span></summary><div class="bp-faq-answer"><p>It is Primavera P6&#39;s proprietary export format: a set of named relational tables serialised as tab-delimited plain text, with a header record identifying the export version and source database. Oracle publishes the table and field map, which names TASK, TASKPRED, PROJWBS, CALENDAR, TASKRSRC, UDFTYPE and UDFVALUE among others.</p></div></details><details class="bp-faq-item"><summary><span>Does an XER file contain the baseline?</span><span class="bp-faq-marker" aria-hidden="true"></span></summary><div class="bp-faq-answer"><p>No. Oracle states that XER supports neither the export nor the import of baselines, and that P6 XML supports both. If you need the baseline for delay analysis or variance reporting, request P6 XML instead.</p></div></details><details class="bp-faq-item"><summary><span>Why do my dates change after importing a schedule?</span><span class="bp-faq-marker" aria-hidden="true"></span></summary><div class="bp-faq-answer"><p>The two usual causes are calendars and scheduling settings. Calendars are matched by name, so importing into a database that already has a calendar of that name applies the local definition. Separately, P6&#39;s out-of-sequence progress option — Retained Logic, Progress Override, or Actual Dates — changes calculated dates, and it is a setting rather than part of the network.</p></div></details><details class="bp-faq-item"><summary><span>What is MSPDI?</span><span class="bp-faq-marker" aria-hidden="true"></span></summary><div class="bp-faq-answer"><p>MSPDI is Microsoft Project&#39;s XML Data Interchange schema, published by Microsoft as mspdi_pj12.xsd for Project 2007 and documented on Microsoft Learn. It is a real published schema, unlike the binary .mpp format, which is why tools that exchange schedule data with Microsoft Project generally use it.</p></div></details><details class="bp-faq-item"><summary><span>Can software read a binary .mpp file directly?</span><span class="bp-faq-marker" aria-hidden="true"></span></summary><div class="bp-faq-answer"><p>Reading is possible; writing reliably is not. MPXJ, the most established open-source library in this space, supports read-only access to MPP and states that its knowledge of the binary structure remains incomplete after many years of reverse engineering. The same library reads and writes MSPDI, XER and PMXML, which is a good indication of which formats are genuinely open.</p></div></details></section>
            <section class="bp-sources" aria-labelledby="sources-heading"><h2 id="sources-heading" class="bp-sources-title">Sources</h2><ol class="bp-source-list"><li id="source-1"><span class="bp-source-n">1</span><span class="bp-source-body"><a class="bp-link" href="https://docs.oracle.com/cd/F74773_01/English/Mapping_and_Schema/xer_import_export_data_map_project/xer_import_export_data_map_project.pdf" target="_blank" rel="noopener nofollow">Primavera P6 EPPM XER Import/Export Data Map Guide (Project), Version 23</a><span class="bp-source-meta">Oracle · 2023</span></span></li><li id="source-2"><span class="bp-source-n">2</span><span class="bp-source-body"><a class="bp-link" href="https://docs.oracle.com/cd/E90748_01/English/admin/p6_pro_importing_exporting/p6_pro_importing_exporting.pdf" target="_blank" rel="noopener nofollow">P6 Professional Importing and Exporting Guide</a><span class="bp-source-meta">Oracle · 2018 edition</span><span class="bp-source-note">Source of every quoted export and import limitation in this post.</span></span></li><li id="source-3"><span class="bp-source-n">3</span><span class="bp-source-body"><a class="bp-link" href="https://docs.oracle.com/cd/F25600_01/client_help/en_US/general_tab_-_schedule_options_dialog_box.htm" target="_blank" rel="noopener nofollow">General tab — Schedule Options dialog box (P6 Professional Help)</a><span class="bp-source-meta">Oracle · 2020</span></span></li><li id="source-4"><span class="bp-source-n">4</span><span class="bp-source-body"><a class="bp-link" href="https://learn.microsoft.com/en-us/office-project/xml-data-interchange/introduction-to-project-xml-data?view=project-client-2016" target="_blank" rel="noopener nofollow">Introduction to Project XML Data</a><span class="bp-source-meta">Microsoft · Project 2007 schema</span></span></li><li id="source-5"><span class="bp-source-n">5</span><span class="bp-source-body"><a class="bp-link" href="https://learn.microsoft.com/en-us/office-project/xml-data-interchange/project-xml-data-interchange-schema-reference?view=project-client-2016" target="_blank" rel="noopener nofollow">Project XML Data Interchange Schema Reference</a><span class="bp-source-meta">Microsoft · Project 2007 schema</span></span></li><li id="source-6"><span class="bp-source-n">6</span><span class="bp-source-body"><a class="bp-link" href="https://www.mpxj.org/faq/" target="_blank" rel="noopener nofollow">MPXJ FAQ</a><span class="bp-source-meta">MPXJ (open source, maintained by Jon Iles) · current</span></span></li><li id="source-7"><span class="bp-source-n">7</span><span class="bp-source-body"><a class="bp-link" href="https://www.mpxj.org/supported-formats/" target="_blank" rel="noopener nofollow">File Formats — MPXJ</a><span class="bp-source-meta">MPXJ (open source, maintained by Jon Iles) · current</span></span></li><li id="source-8"><span class="bp-source-n">8</span><span class="bp-source-body"><a class="bp-link" href="https://mosaicprojects.com.au/PDF-Gen/DCMA-PAM-200-1.pdf" target="_blank" rel="noopener nofollow">DCMA-EA PAM 200.1 — EVMS Program Analysis Pamphlet, §4.0 (14-Point Schedule Metrics)</a><span class="bp-source-meta">Defense Contract Management Agency, U.S. DoD · October 2012</span><span class="bp-source-note">Retrieved from a public mirror; the DCMA host blocks automated fetches.</span></span></li></ol></section>]]></content:encoded>
    </item>
  </channel>
</rss>
