{"id":1803,"date":"2026-09-17T09:00:00","date_gmt":"2026-09-17T09:00:00","guid":{"rendered":"https:\/\/service.soletksolar.com\/monthly-solar-heat-report-audit-trail\/"},"modified":"2026-09-17T09:00:00","modified_gmt":"2026-09-17T09:00:00","slug":"monthly-solar-heat-report-audit-trail","status":"publish","type":"post","link":"https:\/\/service.soletksolar.com\/fa\/monthly-solar-heat-report-audit-trail\/","title":{"rendered":"Build a Data Provenance Ledger for Monthly Solar Heat Reports"},"content":{"rendered":"<style>\n.soletks-article{--sx-blue:#0d3d5d;--sx-blue-2:#155f86;--sx-orange:#f28b1b;--sx-ink:#1b2c38;--sx-muted:#5a6a75;--sx-line:#dbe5eb;max-width:1180px;margin:0 auto;padding:clamp(22px,4vw,64px) clamp(18px,4vw,54px);color:var(--sx-ink);font-family:Arial,Helvetica,sans-serif;font-size:17px;line-height:1.72;background:#fff}\n.soletks-article *{box-sizing:border-box}.soletks-article .sx-hero{margin:0 0 clamp(28px,5vw,58px);border-radius:20px;overflow:hidden;background:#edf4f7;box-shadow:0 18px 42px rgba(13,61,93,.14)}\n.soletks-article .sx-hero img{display:block;width:100%;height:clamp(260px,45vw,500px);object-fit:cover}.soletks-article h1{max-width:940px;margin:0 0 24px;color:var(--sx-blue);font-size:clamp(36px,5vw,64px);line-height:1.08;letter-spacing:-.035em}\n.soletks-article h2{margin:58px 0 20px;padding-top:10px;color:var(--sx-blue);font-size:clamp(27px,3.4vw,40px);line-height:1.2;letter-spacing:-.02em;border-top:4px solid var(--sx-orange)}\n.soletks-article h3{margin:34px 0 14px;color:var(--sx-blue-2);font-size:23px;line-height:1.3}.soletks-article p{margin:0 0 20px}.soletks-article a{color:var(--sx-blue-2);font-weight:700;text-decoration-thickness:2px;text-underline-offset:3px}\n.soletks-article strong{color:var(--sx-blue)}.soletks-article ul,.soletks-article ol{margin:0 0 26px;padding-left:1.45em}.soletks-article li{margin:9px 0}.soletks-article blockquote{margin:28px 0;padding:22px 26px;border-left:5px solid var(--sx-orange);background:#f5f9fb;color:var(--sx-blue);font-size:1.08em}\n.soletks-article .table-scroll{margin:28px 0 34px;overflow-x:auto;border:1px solid var(--sx-line);border-radius:14px;box-shadow:0 8px 22px rgba(13,61,93,.07)}.soletks-article table{width:100%;min-width:720px;border-collapse:collapse;background:#fff}.soletks-article th{padding:15px 17px;text-align:left;color:#fff;background:var(--sx-blue);font-size:15px;line-height:1.35}.soletks-article td{padding:14px 17px;vertical-align:top;border-top:1px solid var(--sx-line);font-size:15px;line-height:1.55}.soletks-article tr:nth-child(even) td{background:#f7fafb}\n.soletks-article code{padding:.16em .38em;border-radius:5px;background:#edf3f6;color:var(--sx-blue)}.soletks-article hr{margin:42px 0;border:0;border-top:1px solid var(--sx-line)}\n@media(max-width:700px){.soletks-article{font-size:16px}.soletks-article h2{margin-top:44px}.soletks-article .sx-hero{border-radius:13px}.soletks-article th,.soletks-article td{padding:12px 13px}}\n<\/style>\n<article class=\"soletks-article\">\n<figure class=\"sx-hero\"><img fetchpriority=\"high\" src=\"https:\/\/service.soletksolar.com\/wp-content\/uploads\/2026\/06\/Tianjin-School-TPV-Pro-Heat-Pump-Coupled-Heating-Project-3.png\" alt=\"Solar thermal and heat pump project equipment at a school in Tianjin\" width=\"1254\" height=\"728\" loading=\"eager\" decoding=\"async\"><\/figure>\n<h1>Build a Data Provenance Ledger for Monthly Solar Heat Reports<\/h1>\n<p>A data provenance ledger links each monthly solar heat result to a named measurement boundary, immutable source files, visible assumptions, arithmetic, approval, and any later correction. Its output is a reproducible reporting record rather than a dashboard screenshot.<\/p>\n<p>Published by the SOLETKS Technical Content Team, which prepares solar thermal product and service documentation for the SOLETKS service site. Technical content review: Active AI model. Last updated: September 17, 2026.<\/p>\n<p>This workflow is for facility teams and commissioning engineers. It does not promise a saving, a meter accuracy, or a universal baseline method.<\/p>\n<h2>Open one monthly record before handling the data<\/h2>\n<p>Create one record ID for the reporting period. Use that ID in the source folder, calculation sheet, approval note, correction log, and final report. Assign one owner for data assembly and one approver for release.<\/p>\n<p>The record begins with a boundary statement:<\/p>\n<blockquote>\n<p>The reported heat is the energy crossing from <strong>[upstream point]<\/strong> to <strong>[downstream point]<\/strong> during <strong>[start and end timestamp]<\/strong>.<\/p>\n<\/blockquote>\n<p>A collector-loop total, a storage-input total, and a load-delivery total answer different questions. Record the meter position because it defines which heat crossings are counted in this report. The label used in the monthly report must match the marked hydraulic drawing and the source export. If either boundary point or the period is absent, classify the result as <strong>Unclassified<\/strong> and keep it out of a savings statement.<\/p>\n<h2>Build the source ledger<\/h2>\n<p>Use a ledger that identifies the exact file behind every reported field:<\/p>\n<div class=\"table-scroll\" role=\"region\" aria-label=\"Data table\" tabindex=\"0\">\n<table>\n<thead>\n<tr>\n<th scope=\"col\">Ledger item<\/th>\n<th scope=\"col\">Required source<\/th>\n<th scope=\"col\">Release condition<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Boundary<\/td>\n<td>Marked hydraulic drawing and boundary statement<\/td>\n<td>Upstream and downstream points use the report label<\/td>\n<\/tr>\n<tr>\n<td>Meter total<\/td>\n<td>Native raw export or signed register record<\/td>\n<td>Opening and closing values share one unit and device identity<\/td>\n<\/tr>\n<tr>\n<td>Configuration<\/td>\n<td>Dated device snapshot<\/td>\n<td>Flow, temperature, fluid, clock, and reset settings are recorded<\/td>\n<\/tr>\n<tr>\n<td>Coverage<\/td>\n<td>Gap and reset log<\/td>\n<td>Missing intervals and resets have an explicit treatment<\/td>\n<\/tr>\n<tr>\n<td>Storage<\/td>\n<td>Opening and closing storage state<\/td>\n<td>The storage comparison method is stated<\/td>\n<\/tr>\n<tr>\n<td>Assumptions<\/td>\n<td>Versioned assumptions log<\/td>\n<td>Each modeled input has an owner and source<\/td>\n<\/tr>\n<tr>\n<td>Arithmetic<\/td>\n<td>Locked calculation sheet<\/td>\n<td>Another reviewer can reproduce the displayed result<\/td>\n<\/tr>\n<tr>\n<td>Approval<\/td>\n<td>Signed release note<\/td>\n<td>Result, status, and limitations match the final report<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>Do not overwrite a raw export. Store it as received, calculate from a working copy, and record the file hash or another controlled identifier in the ledger.<\/p>\n<p>Use the site&#8217;s <a href=\"https:\/\/service.soletksolar.com\/commercial-solar-thermal-commissioning-checklist\/\">commercial solar thermal commissioning checklist<\/a> for the initial sensor map and configuration record. Use the <a href=\"https:\/\/service.soletksolar.com\/commercial-solar-thermal-om-plan\/\">solar thermal O&amp;M plan<\/a> for the continuing device and service history.<\/p>\n<h2>Preserve the measurement chain<\/h2>\n<p>SOLETKS commissioning guidance uses flow and temperature rise as a heat-transfer comparison. A reproducible result also needs the fluid setting and the reporting period. <\/p>\n<p>The <a href=\"https:\/\/www.resol.de\/en\/produkt\/57\">RESOL V40 product description<\/a> illustrates a pulse-flow input used with a calorimeter and configured fluid parameters. The <a href=\"https:\/\/www.energy.gov\/cmei\/femp\/measurement-and-verification-options-federal-energy-and-water-saving-projects\">US Department of Energy measurement and verification options<\/a> explain why a measured heat total and an estimated savings result must be labeled according to their different assumptions. These references supply method context, not site-specific accuracy or savings evidence.<\/p>\n<p>Record the installed instrument&#8217;s calculation chain without substituting a generic constant:<\/p>\n<p><strong>Heat total = flow \u00d7 temperature difference \u00d7 configured fluid property \u00d7 elapsed time<\/strong><\/p>\n<p>The meter performs the integration under its stored configuration. The monthly record preserves that configuration, both sensor identities, the export unit, the device clock, the reset history, and the covered period.<\/p>\n<p>If a setting changes during the month, split the record into intervals. Do not join incompatible configurations into one unexplained total.<\/p>\n<h2>Worked calculation: derive the monthly reported result<\/h2>\n<p>The following arithmetic demonstrates the record structure. Every value is assumed for the example and is not a site performance result.<\/p>\n<ol>\n<li>Opening register = <strong>12,500 kWh thermal<\/strong>. Source: assumed worksheet input.<\/li>\n<li>Closing register = <strong>13,220 kWh thermal<\/strong>. Source: assumed worksheet input.<\/li>\n<li>Reported boundary heat = <strong>13,220 \u2212 12,500 = 720 kWh thermal<\/strong>. Source: arithmetic from the two assumed register inputs.<\/li>\n<li>Stipulated displaced-system efficiency = <strong>0.80<\/strong>. Source: assumed worksheet input.<\/li>\n<li>Estimated avoided fuel = <strong>720 \u00f7 0.80 = 900 kWh fuel input<\/strong>. Source: arithmetic from the assumed heat result and efficiency.<\/li>\n<li>Additional electricity = <strong>30 kWh<\/strong>, reported in a separate field. Source: assumed worksheet input.<\/li>\n<\/ol>\n<p>The recommendation is to release <strong>720 kWh thermal<\/strong> as the meter-derived example and label <strong>900 kWh fuel input<\/strong> as a modeled estimate. The latter changes when the stipulated efficiency or displacement assumption changes. Source: this decision uses only the stated assumed inputs.<\/p>\n<h2>Reconcile storage and unmeasured paths<\/h2>\n<p>Storage input and useful delivery describe different quantities when stored energy changes during the period. Keep the opening storage state, closing storage state, auxiliary heat paths, and known unmeasured paths beside the totals.<\/p>\n<p>Use this reconciliation field:<\/p>\n<p><strong>Unreconciled heat = storage input \u2212 useful delivery \u2212 change in stored energy \u2212 identified auxiliary paths<\/strong><\/p>\n<p>Leave the remainder labeled <strong>Unreconciled<\/strong> until the boundary and storage records support another classification. Do not rename it \u201csystem loss\u201d merely to close the table.<\/p>\n<h2>Separate source facts, calculations, and decisions<\/h2>\n<p>The monthly record uses three layers:<\/p>\n<div class=\"table-scroll\" role=\"region\" aria-label=\"Data table\" tabindex=\"0\">\n<table>\n<thead>\n<tr>\n<th scope=\"col\">Layer<\/th>\n<th scope=\"col\">What belongs here<\/th>\n<th scope=\"col\">Example release status<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Source fact<\/td>\n<td>Raw register, configuration, drawing, gap log<\/td>\n<td>Accepted or incomplete<\/td>\n<\/tr>\n<tr>\n<td>Calculation<\/td>\n<td>Difference, reconciliation, or modeled conversion<\/td>\n<td>Reproducible or blocked<\/td>\n<\/tr>\n<tr>\n<td>Decision<\/td>\n<td>Reported heat, modeled fuel estimate, correction, or no result<\/td>\n<td>Released, qualified, or not established<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>This separation keeps a valid measured total from being treated as proof of avoided fuel. It also prevents a changed tariff, efficiency, or baseline assumption from altering the source measurement.<\/p>\n<h2>Correct a month without rewriting history<\/h2>\n<p>When a source or formula changes after release, add a correction entry. Retain the original report and record:<\/p>\n<ul>\n<li>the affected record ID and result;<\/li>\n<li>the reason for the correction;<\/li>\n<li>the source file or assumption that changed;<\/li>\n<li>the recalculated result;<\/li>\n<li>the approver and release timestamp;<\/li>\n<li>the reports or dashboards that need the revised value.<\/li>\n<\/ul>\n<p>The correction log should make both versions traceable. Replacing the old file without a change record breaks the audit trail.<\/p>\n<h2>Release the monthly reporting pack<\/h2>\n<p>The pack is ready when it contains the source ledger, raw files, marked boundary drawing, configuration snapshot, gap and reset log, calculation sheet, reconciliation note, assumptions log, final report, and approval record.<\/p>\n<p>Send the intended boundary, installed meter information, sample export, reporting period, and desired reporting decision through the <a href=\"https:\/\/service.soletksolar.com\/contact\/\">SOLETKS contact page<\/a>. State which entries are measured, stipulated, calculated, or modeled.<\/p>\n<h2>Completion condition<\/h2>\n<p>The task is complete when another reviewer can start from the preserved source files, reproduce the arithmetic, reach the same release status, and see every later correction without replacing the original record.<\/p>\n<\/article>\n","protected":false},"excerpt":{"rendered":"<p>Build a data provenance ledger for monthly solar heat reports with a defined meter boundary, preserved exports, assumptions, calculations, and corrections.<\/p>","protected":false},"author":1,"featured_media":1697,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[],"class_list":["post-1803","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog"],"_links":{"self":[{"href":"https:\/\/service.soletksolar.com\/fa\/wp-json\/wp\/v2\/posts\/1803","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/service.soletksolar.com\/fa\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/service.soletksolar.com\/fa\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/service.soletksolar.com\/fa\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/service.soletksolar.com\/fa\/wp-json\/wp\/v2\/comments?post=1803"}],"version-history":[{"count":0,"href":"https:\/\/service.soletksolar.com\/fa\/wp-json\/wp\/v2\/posts\/1803\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/service.soletksolar.com\/fa\/wp-json\/wp\/v2\/media\/1697"}],"wp:attachment":[{"href":"https:\/\/service.soletksolar.com\/fa\/wp-json\/wp\/v2\/media?parent=1803"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/service.soletksolar.com\/fa\/wp-json\/wp\/v2\/categories?post=1803"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/service.soletksolar.com\/fa\/wp-json\/wp\/v2\/tags?post=1803"}],"curies":[{"name":"\u0648\u06cc\u200c\u067e\u06cc","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}