← Files MSCI ConnectorARCHIVED FILE
skills/dashboard-changes/assets/disclaimer-footer.html
5.57 KB · Oct 5, 2026 · 18:09 UTC
<!--
DISCLAIMER FOOTER — required on every dashboard. Stacked blocks, in this order:
1. Sample disclaimer (always)
2. Compact compliance line + "Notice and Disclaimer" expander holding the FULL notice (always)
3. Datapoint-mandated disclaimers (ONLY when a datapoint's own constraints.notes requires one —
e.g. the Index Inclusion Module block used by §5 Index Methodology Analyst; passed verbatim via
assemble()'s extra_disclaimers list — never merged with the approximation block below)
4. Approximation disclaimer (ONLY when an off-spec / ad hoc metric is shown)
PLACEMENT: this footer is the SINGLE disclaimer for the dashboard. Insert it as the LAST child
INSIDE the page's centered container (the max-width `.wrap`/main div), so it lines up with the
header and panels — NOT after the container/at the end of <body>, which makes it run full-bleed
to the screen edge and misalign with everything above it.
NO DUPLICATES: this footer is the ONE place the "Sample / provided as-is" line appears. Do not
also keep a separate sample line in an in-panel Source/notes block. If the dashboard body has its
own short Source/Refresh notes, those may stay, but the sample-disclaimer sentence lives ONLY here.
DETERMINISTIC RULE: the full notice must be injected VERBATIM from assets/disclaimer-notice.txt.
Do NOT retype, paraphrase, summarize, translate, reformat, or regenerate it from memory.
Build it programmatically with the helper below so the bytes match the bundled file exactly.
-->
<style>
.msci-disc{font:400 11px var(--msci-font,Inter,sans-serif);color:var(--msci-charcoal,#4D4D4D);
border-top:1px solid var(--msci-silver,#E6E6E6);margin-top:20px;padding-top:14px;line-height:1.55;}
.msci-disc .sample{font-weight:600;color:var(--msci-daintree,#011B2B);margin-bottom:8px;}
.msci-disc .ai-note{color:var(--msci-charcoal,#4D4D4D);margin-bottom:8px;font-style:italic;}
.msci-disc .compact{margin-bottom:6px;}
.msci-disc details{margin-top:4px;}
.msci-disc summary{cursor:pointer;color:var(--msci-primary-blue,#1A3FD6);font-weight:600;}
.msci-disc .full{margin-top:10px;max-height:280px;overflow:auto;padding:12px 14px;
background:var(--msci-dove,#F5F5F5);border:1px solid var(--msci-silver,#E6E6E6);
border-radius:8px;font-size:10.5px;color:var(--msci-charcoal,#4D4D4D);}
.msci-disc .full p{margin:0 0 9px;}
.msci-disc .approx{margin-top:10px;padding:8px 12px;background:#FFF4E5;border:1px solid #FFD9A0;
border-radius:8px;color:#8A5300;font-style:italic;}
.msci-disc .extra{margin-top:10px;padding:8px 12px;background:var(--msci-dove,#F5F5F5);
border:1px solid var(--msci-silver,#E6E6E6);border-radius:8px;color:var(--msci-charcoal,#4D4D4D);white-space:pre-wrap;}
</style>
<div class="msci-disc">
<!-- 1. Sample disclaimer (always) -->
<div class="sample">Sample / provided as-is. This dashboard is a sample recipe showing what is possible with the IndexAI Insights MCP. It is not an MSCI product and is not maintained as a deliverable.</div>
<!-- 1a. AI-generated notice (always) -->
<div class="ai-note">AI-generated. This dashboard was assembled by an AI assistant from MSCI data via the MSCI connector. It may contain errors; verify figures against an official MSCI source before relying on them.</div>
<!-- 2. Compact compliance line + full notice (always) -->
<div class="compact">For informational purposes only. The Information is the proprietary property of MSCI and must not be relied upon as investment advice or a recommendation. It is not a prediction or guarantee of future performance; past performance is not indicative of future results. It is not possible to invest in an index, and index returns do not represent the results of actual trading. GICS is the exclusive property of MSCI and S&P Dow Jones Indices.</div>
<details>
<summary>Notice and Disclaimer</summary>
<!-- __FULL_NOTICE__ : replaced at build time with verbatim, HTML-escaped paragraphs from assets/disclaimer-notice.txt -->
<div class="full">__FULL_NOTICE__</div>
</details>
<!-- 3. Datapoint-mandated disclaimers — include ONLY when a used datapoint requires one; render each verbatim -->
<!--
<div class="extra">…exact constraints.notes disclaimer text, verbatim…</div>
-->
<!-- 4. Approximation disclaimer — include ONLY if an off-spec metric is rendered; otherwise omit this block -->
<!--
<div class="approx">Note: This calculation is an approximation generated outside of MSCI's official index methodology framework. MSCI-methodology-aligned risk and performance analytics will be available through the MSCI connector in a future release. This output should not be interpreted as an MSCI-endorsed metric</div>
-->
</div>
<!--
BUILD HELPER (Python) — produces the footer with the notice injected verbatim from the bundled file.
Use this exact pattern; never hand-type the notice.
import html, pathlib
notice = pathlib.Path("assets/disclaimer-notice.txt").read_text(encoding="utf-8")
paras = [html.escape(p.strip()) for p in notice.split("\n\n") if p.strip()]
full_html = "".join(f"<p>{p}</p>" for p in paras)
footer = open("assets/disclaimer-footer.html").read().split("<style>",1)[1] # the markup block
footer_markup = "<style>" + footer
footer_markup = footer_markup.replace("__FULL_NOTICE__", full_html)
# If an off-spec metric is shown, also uncomment/emit the .approx block above.
# Then embed footer_markup just before </body> in the dashboard.
Verify after build: the concatenated text inside .full equals assets/disclaimer-notice.txt
(paragraph for paragraph) so the embed is provably verbatim.
-->
SHA-256: d0e040566eee07563f1cdcbdf2f556fccb4cec8a25cfdd3bd0ad97b8c7189aed