<?xml version="1.0" encoding="UTF-8"?>
<!--
  Pellucis for Excel — PRODUCTION manifest. GENERATED FILE; DO NOT EDIT.

  Source:    office/manifest.excel.xml
  Generator: scripts/build-manifests.mjs   (pnpm manifests:build)
  Served at: https://www.pellucis.com/office/manifest.excel.xml

  Edit the source manifest and re-run the generator. An edit made here is overwritten without
  warning and, worse, is invisible: the dev and production add-ins would then differ in a way no
  test compares.

  This manifest carries a DIFFERENT <Id> from the source, so a developer running the shared-folder
  dev catalogue and a user running the installed production add-in do not collide.
-->
<OfficeApp
  xmlns="http://schemas.microsoft.com/office/appforoffice/1.1"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:bt="http://schemas.microsoft.com/office/officeappbasictypes/1.0"
  xmlns:ov="http://schemas.microsoft.com/office/taskpaneappversionoverrides"
  xsi:type="TaskPaneApp">

  <!--
    A DIFFERENT Id from the Word add-in, deliberately. Office keys an add-in's identity, its trust and
    its settings on this GUID; reusing Word's would make Excel treat this as the same add-in under a
    different name. Stable for the life of the add-in.
  -->
  <Id>d540f3d0-609b-49d3-b297-a7ab92a722c7</Id>
  <Version>1.0.0.0</Version>
  <ProviderName>Pellucis</ProviderName>
  <DefaultLocale>en-CA</DefaultLocale>
  <DisplayName DefaultValue="Pellucis for Excel" />
  <Description DefaultValue="Read the comparables chart from this workbook and reconcile it against the report. Fill this chart shows its plan, then writes cited comparables into the chart's input cells when you press Write. Pellucis never writes a formula or the conclusion." />
  <IconUrl DefaultValue="https://www.pellucis.com/brand/icon-32.png" />
  <HighResolutionIconUrl DefaultValue="https://www.pellucis.com/brand/icon-64.png" />
  <SupportUrl DefaultValue="https://www.pellucis.com/security" />

  <!-- The pane may only navigate within these. Nothing else is reachable from inside Office. -->
  <AppDomains>
    <AppDomain>https://www.pellucis.com</AppDomain>
  </AppDomains>

  <Hosts>
    <Host Name="Workbook" />
  </Hosts>

  <!--
    ExcelApi 1.1 — the floor, and every member this pane calls is in it (Microsoft Learn, Excel
    JavaScript API requirement set 1.1, accessed 2026-09-17): worksheets.items/name,
    getActiveWorksheet, getItem, worksheet.getRange, worksheet.getUsedRange, range.address/values/
    formulas/text, and range.select. 1.1 is the only Excel-specific set Excel 2016 supports, so
    flooring here is what lets an older firm build load the pane at all — and the pane checks
    isSetSupported anyway rather than trusting the floor (components/harvey/excel/useExcelHost.ts).
  -->
  <Requirements>
    <Sets DefaultMinVersion="1.1">
      <Set Name="ExcelApi" MinVersion="1.1" />
    </Sets>
  </Requirements>

  <DefaultSettings>
    <SourceLocation DefaultValue="https://www.pellucis.com/excel" />
  </DefaultSettings>

  <!--
    ReadWriteDocument, and it is the MINIMUM Microsoft permits for what this pane does — not a
    convenience and not a placeholder.

    Microsoft Learn, "Requesting permissions for API use in add-ins" (accessed 2026-09-17), verbatim:
    "If your add-in uses the application-specific APIs, declare the read/write document permission in
    the manifest. This requirement applies even when your code only reads data." Excel.run IS the
    application-specific API model, so ReadDocument would produce a pane that loads and then fails to
    read anything — the silent failure this codebase exists not to ship.

    So the manifest cannot carry the promise, and the CODE carries it instead. Since decision D17
    (CEO, 2026-10-05) the pane writes, and only on a click: values into the chart's input cells, through
    lib/office/excel-write.ts alone, which never writes a formula or the conclusion and sets no format of its own
    choosing (when its check undoes a fill, it puts back the number format Excel changed on a cell it wrote), proves
    every derived cell against code after the write and undoes the fill when the proof fails. A source
    scan in lib/office/excel-write.test.ts holds that no other file in the Excel surface sets a value.
    The reader (lib/office/excel-read.ts, components/harvey/excel/useExcelHost.ts) still writes nothing,
    and lib/office/excel-read.test.ts drives its batches through a context that throws on any member
    that is not a read. Any change here needs trust-security-officer review and CEO approval.
  -->
  <Permissions>ReadWriteDocument</Permissions>

  <VersionOverrides xmlns="http://schemas.microsoft.com/office/taskpaneappversionoverrides" xsi:type="VersionOverridesV1_0">
    <Hosts>
      <Host xsi:type="Workbook">
        <DesktopFormFactor>
          <GetStarted>
            <Title resid="GetStarted.Title" />
            <Description resid="GetStarted.Description" />
            <LearnMoreUrl resid="Pellucis.Url" />
          </GetStarted>

          <ExtensionPoint xsi:type="PrimaryCommandSurface">
            <OfficeTab id="TabHome">
              <Group id="Pellucis.Group">
                <Label resid="Pellucis.GroupLabel" />
                <Icon>
                  <bt:Image size="16" resid="Pellucis.Icon16" />
                  <bt:Image size="32" resid="Pellucis.Icon32" />
                  <bt:Image size="80" resid="Pellucis.Icon80" />
                </Icon>
                <Control xsi:type="Button" id="Pellucis.TaskpaneButton">
                  <Label resid="Pellucis.ButtonLabel" />
                  <Supertip>
                    <Title resid="Pellucis.ButtonLabel" />
                    <Description resid="Pellucis.ButtonTooltip" />
                  </Supertip>
                  <Icon>
                    <bt:Image size="16" resid="Pellucis.Icon16" />
                    <bt:Image size="32" resid="Pellucis.Icon32" />
                    <bt:Image size="80" resid="Pellucis.Icon80" />
                  </Icon>
                  <Action xsi:type="ShowTaskpane">
                    <TaskpaneId>Pellucis.Taskpane</TaskpaneId>
                    <SourceLocation resid="Pellucis.Url" />
                  </Action>
                </Control>
              </Group>
            </OfficeTab>
          </ExtensionPoint>
        </DesktopFormFactor>
      </Host>
    </Hosts>

    <Resources>
      <bt:Images>
        <bt:Image id="Pellucis.Icon16" DefaultValue="https://www.pellucis.com/brand/icon-16.png" />
        <bt:Image id="Pellucis.Icon32" DefaultValue="https://www.pellucis.com/brand/icon-32.png" />
        <bt:Image id="Pellucis.Icon80" DefaultValue="https://www.pellucis.com/brand/icon-80.png" />
      </bt:Images>
      <bt:Urls>
        <bt:Url id="Pellucis.Url" DefaultValue="https://www.pellucis.com/excel" />
      </bt:Urls>
      <bt:ShortStrings>
        <bt:String id="Pellucis.GroupLabel" DefaultValue="Pellucis" />
        <bt:String id="Pellucis.ButtonLabel" DefaultValue="Open Pellucis" />
        <bt:String id="GetStarted.Title" DefaultValue="Check the report against this chart." />
      </bt:ShortStrings>
      <bt:LongStrings>
        <bt:String id="Pellucis.ButtonTooltip" DefaultValue="Read the comparables chart from this workbook and compare it with the report. Every figure shows the cell it came from. The workbook changes only when you press Write or Undo." />
        <bt:String id="GetStarted.Description" DefaultValue="Open the pane from the Home tab. Pellucis reads the workbook you already have open, so nothing needs uploading." />
      </bt:LongStrings>
    </Resources>
  </VersionOverrides>
</OfficeApp>
