Keep the engineering reason, drop the speaker: 31 Driver references to 0

The rule: never quote or cite the Driver in shipped code. Every one of these
comments had a real engineering reason attached, and the reason is what a future
reader needs — so the reason stays and the attribution goes.

COUNT IS THE CHECK: 31 before, 0 after, across 8 files.

I was pointed at 18 in region-dashboards. That was one file. Sweeping my own area
as instructed found 31 in eight files: region-dashboards 7, RegionCountryMap 13,
regions-list 5, UupgsList 2, plus regions-mfe.vue, regions-mfe.meta.json,
index.js and check-regions-uses-library.mjs with one each. Reporting the wider
number rather than the one I was given.

HOW EACH WAS REWRITTEN, by kind:
  · a REPORTED SYMPTOM keeps the symptom, loses the reporter — "the pins were
    reported too small at rest", "the list page was reported slow, with the
    posters suspected", "instead of flying to the region, which is exactly the
    reported symptom".
  · a REQUIREMENT becomes a requirement — the region key is "a map that shows the
    regions and countries AND lets a reader select one" rather than a quotation;
    the missing fullscreen and zoom controls are "part of the cloned surface"
    rather than someone's complaint about a full clone.
  · an OPEN DECISION becomes provisional. Two of these: the stat-card divergence
    from RegionDetail.vue:176 is now "carried back as a product question", and
    the numeral-grouping parity reads "PROVISIONAL, pending a product decision"
    instead of waiting on a named person's ruling.
  · a CARD ID goes with the name: BUILD-REGIONS-MAP-RESTORE-EDGE-SCROLL-STRIPS
    and the round-2 test numbering are internal handles that mean nothing to a
    reader of a published bundle.
  · a SCOPE RULING is stated as scope: "improve the map's LOOK and add the
    all-regions map, which must be intuitive" — the constraint survives, the
    quotation does not.

Nothing lost that a reader needs: every measurement, pixel value, file:line
citation into DX-life's source and engine-specific caveat is untouched. What went
is a name, four dates and two internal ids.

SAME PROOF AS THE CITATION COMMIT, because a prose sweep across eight files is
exactly where a stray edit hides:
  · the only non-comment changes are an HTML comment in a template and the "note"
    field of regions-mfe.meta.json — and `note` is read by nothing: generate-tree
    never touches it, and the string does not appear in the built manifest.
  · meta.json still parses.
  · rebuilding regions-dashboard and country-map reproduces the committed bytes
    EXACTLY, and a full `bun run tree` leaves public/ clean — so NO bundle needs
    rebuilding for this.
  · gates:pre 66/66.
This commit is contained in:
Doxa Maps 2026-09-29 03:37:48 +00:00
parent 565907adea
commit 51056bac65
8 changed files with 42 additions and 44 deletions

View file

@ -148,8 +148,7 @@ const { map, isMapReady, initializeMap, destroy } = useMapInstance({
// covers the normal one. Both land the same camera on purpose.
bounds: props.bounds || undefined,
fitBoundsOptions: FIT_OPTS,
// THE SHARED EDGE-SCROLL STRIPS, on by Driver decision (2026-09-24, via shepherd card
// BUILD-REGIONS-MAP-RESTORE-EDGE-SCROLL-STRIPS). This was deliberately false, and the reason is
// THE SHARED EDGE-SCROLL STRIPS, on by decision. This was deliberately false, and the reason is
// kept here rather than deleted because it is the thing to re-examine if the result looks wrong:
// the map sits inside a SCROLLING dashboard, so the gray "you can scroll past me" gutters read
// as part of the page rather than as map chrome — unlike the reference maps
@ -160,7 +159,7 @@ const { map, isMapReady, initializeMap, destroy } = useMapInstance({
showEdgeBorders: true,
})
// THE REGION COLOURS, CARRIED ONTO THE LANDMASSES (Driver card, 2026-09-24).
// THE REGION COLOURS, CARRIED ONTO THE LANDMASSES — a sanctioned addition.
// The pins already paint by region via the shared expression (regionColorExpression, below at the
// pin layer). The polygons cannot use that expression directly: it matches on ['get','region'],
// which is a property of OUR geojson, while the boundary tileset's features carry
@ -239,7 +238,7 @@ function pinExpressions() {
// Worth being precise, because "keep the stroke opaque while dimming the fill" was the
// proposed fix and it was already the behaviour — it was the CAUSE, not the cure.
strokeOpacity: lit ? ['case', isLit, 1, 0.3] : 1,
// THE RESTING STATE IS BIGGER THAN THE CLONE'S, and only here. The Driver reported the pins
// THE RESTING STATE IS BIGGER THAN THE CLONE'S, and only here. Reported: the pins
// as hard to see; this is the state that answers that, because it is what the page shows on
// load, before any hover. Two things make a pin harder to read on THIS map than on a cloned
// country page, and neither is taste:
@ -252,7 +251,7 @@ function pinExpressions() {
// goes 0.9 -> 1 for the same reason: at this size, 10% transparency over a basemap is a
// visible loss of contrast and buys nothing when nothing is being de-emphasised yet.
// The HOVER state is deliberately untouched — dimming the rest to 0.25 is the design saying
// "these pins are one group", and that is a Driver taste call, not a legibility defect.
// "these pins are one group", which is a taste call rather than a legibility defect.
radius: lit
? ['case', isLit, ['interpolate', ['linear'], ['zoom'], 2, 4.5, 6, 8], ['interpolate', ['linear'], ['zoom'], 2, 3, 6, 5.5]]
: ['interpolate', ['linear'], ['zoom'], 2, 4, 6, 7.5],
@ -405,7 +404,7 @@ function popupHtml(p) {
const name = esc(p.name || '')
const subtitle = [p.country, p.rop1].filter(Boolean).map(esc).join(' · ')
// ★ NUMBER FORMAT IS HELD, AND THAT MEANS THE GROUPING TOO -- NOT JUST THE DIGITS.
// 'NUMERALS ARE HELD' (COMMON.md; Driver via shepherd 2026-09-26) covers the whole formatted
// 'NUMERALS ARE HELD' (COMMON.md) covers the whole formatted
// number, so per-locale grouping is itself the held decision. I misread it as a digits-only rule
// and shipped `${locale}-u-nu-latn`, which keeps digits Latin but lets the SEPARATORS follow the
// locale (de 1.234.567, ru 1 234 567). That is the held choice being made by one map, which is
@ -418,10 +417,10 @@ function popupHtml(p) {
// the older form, from 29eaf3a6.
//
// THEIRS DIFFERS, deliberately and temporarily: their formatPopulation is
// toLocaleString(languageCode). Exact parity is on hold, not abandoned -- when the Driver rules,
// toLocaleString(languageCode). Exact parity is PROVISIONAL, pending a product decision --
// this line and the two sibling formatters change together.
//
// EVIDENCE FOR THAT RULING, measured here and passed to the Driver's card: a REGIONED tag is what
// EVIDENCE FOR THAT DECISION, measured here and carried back: a REGIONED tag is what
// switches the digit system, not the bare language code --
// ar -> numberingSystem=latn -> 1,234,567
// ar-EG -> numberingSystem=arab -> ١٬٢٣٤٬٥٦٧
@ -582,7 +581,7 @@ function chooserZoom(m) {
// `.name` off it threw a TypeError. That read sat OUTSIDE the try, so the throw escaped
// fitTheirWay, escaped applySubject() — of which it is the last statement — and the camera was
// never framed. Opening a region dashboard under MapLibre therefore left the map wherever it was
// instead of flying to the region, which is exactly what the Driver reported.
// instead of flying to the region, which is exactly the reported symptom.
// ★ BOTH OF THESE NOW COME FROM library/useMapProvider (C2). Mine read the engine from CONFIG
// (isMaplibreProvider), which is weaker than reading it from the INSTANCE: a page configured for one
// engine can hold a map built by the other. The library version instance-tests, which is what
@ -684,9 +683,8 @@ onMounted(async () => {
try {
await initializeMap()
if (!map.value) { mapFailed.value = true; return }
// THEIR MAP CONTROLS, ported verbatim (CountryMap.vue:181-182). The Driver caught that these
// were missing: "you were not to remove the map controls for full screen and for zooming so
// this is not a full clone". Neither this component nor useMapInstance added any control, and
// THEIR MAP CONTROLS, ported verbatim (CountryMap.vue:181-182). These were MISSING, which makes
// it not a full clone: the fullscreen and zoom controls are part of the cloned surface. Neither this component nor useMapInstance added any control, and
// NO diff covered them — every vs-live probe compares computed CSS and text, so two whole
// controls could be absent and still report 79/79 identical. Their exact options and corner:
// new mapboxgl.NavigationControl({ showCompass: false }), 'top-right'
@ -802,7 +800,7 @@ useShadowStyles(
'.map-scroll-edge--left{left:0}' +
'.map-scroll-edge--right{right:0}' +
// ── ★ PRINT: THE LEGEND GOES BESIDE THE MAP, NOT OVER IT (Driver test round 2, #2) ──────────
// ── ★ PRINT: THE LEGEND GOES BESIDE THE MAP, NOT OVER IT ───────────────────────────────────
// This plugin shipped with NO @media print rule at all, which is the single cause behind all
// three of his symptoms: on paper the legend stayed absolutely positioned ON the map, the map
// kept a 780px min-height and a 16/9 ratio that no page can hold, and the interactive chrome
@ -822,7 +820,7 @@ useShadowStyles(
// would print as two empty 40px columns beside the map.
' .map-scroll-edge, .mapboxgl-ctrl-group, .maplibregl-ctrl-group, .mapboxgl-ctrl-attrib-button, .maplibregl-ctrl-attrib-button{ display:none !important; }' +
'}' +
// ★ THE SCROLL STRIPS WERE SWALLOWING THE MAP CONTROLS (Driver, on Mapbox): zoom in, zoom out
// ★ THE SCROLL STRIPS WERE SWALLOWING THE MAP CONTROLS (reported on Mapbox): zoom in, zoom out
// and fullscreen could not be clicked at all. The strips are 40px wide, full height,
// pointer-events:auto and z-index:2 — and BOTH engines place their control groups in the very
// corners the strips cover. Equal z-index means the later element in the DOM wins, and the
@ -879,13 +877,13 @@ useShadowStyles(
// ★ THE CHOOSER IS SQUARE ON MOBILE, AND THIS IS GEOMETRY RATHER THAN TASTE.
// Their .country-map flips to aspect-ratio 1/2 under 768px and the rule above ports that verbatim
// -- correct for the CLONE pages, which frame one region or country in portrait. The chooser is
// the Driver's sanctioned addition and renders under the GLOBE projection, so its subject is a
// a sanctioned addition and renders under the GLOBE projection, so its subject is a
// CIRCLE whose diameter cannot exceed the frame's short side. In a 1:2 frame that circle covers at
// most W/2W = 50% of the height: at 390px wide, 390px of globe in a 780px box and the rest empty.
// A SQUARE is the only frame a circle fills on BOTH axes -- vertical coverage 50% -> 100%, and area
// fill pi/4 = 78.5%, the maximum a circle can reach in any rectangle. Taller wastes height, wider
// wastes width. Driver 2026-09-26: "the only changes are to the map to make it look better, and to
// add the all-regions map ... which needs to be intuitive". So: chooser ONLY, and the cloned pages
// wastes width. The sanctioned scope is: improve the map's LOOK and add the all-regions map,
// which must be intuitive. So: chooser ONLY, and the cloned pages
// above keep their 1/2 untouched.
'@media (max-width:768px){ .rcm--chooser{ aspect-ratio:1/1; } }' +
'.rcm__canvas{ position:absolute; inset:0; }' +

View file

@ -3,7 +3,7 @@
*
* Bundle entry — registers the regions-dashboard web component.
*
* This bundle ships the Driver's 2-tab Regions element as three flat profiles:
* This bundle ships the 2-tab Regions element as three flat profiles:
* regions-list.vue — tab 1, "Regions List"
* region-dashboards.vue — tab 2, "Region Dashboards"
* regions-mfe.vue — the COMPOSITE that carries the SELECT VIEW switcher over both

View file

@ -144,7 +144,7 @@ useDocumentFont('Bebas Neue', BEBAS_NEUE_FACES, fontAssetsBase)
// wider per glyph. Registered the same way and for the same reason as Bebas.
useDocumentFont('Poppins', POPPINS_FACES, fontAssetsBase)
// Figtree stands in for Brandon Grotesque, which is commercial and must not ship in a public
// giveaway (Driver, 2026-09-24). @font-face is DOCUMENT-scoped, so it registers here beside
// giveaway. @font-face is DOCUMENT-scoped, so it registers here beside
// the other two rather than inside the shadow root that uses it.
useDocumentFont('Figtree', FIGTREE_FACES, fontAssetsBase)
// Oswald, for CYRILLIC HEADINGS ONLY. base/_globals.scss:35-44 switches every h1/h2/h3 to
@ -174,8 +174,8 @@ const points = ref([])
const scrollEl = ref(null)
const loading = ref(true)
// ★ PRINT (Driver test round 2, #2 — the half the @media print rules could not do). The complaint
// was "no loading indicator on a click": the reader presses Print, the dialog takes a second to
// ★ PRINT — the half the @media print rules could not do. The reported complaint was
// "no loading indicator on a click": the reader presses Print, the dialog takes a second to
// rise, and nothing on the page says anything is happening. Worse on this page than most, because
// what the dialog is waiting for is a MAP — press it a moment early and the sheet carries a grey
// rectangle where the map should be.
@ -809,7 +809,7 @@ useShadowStyles(
' margin-left:auto; margin-right:auto; }' +
'.rd-status{ padding:var(--spacing-xl); text-align:center; color:var(--dx-muted); font-size:var(--font-size-md); }' +
// ── ★ PRINT: LET THE DOCUMENT FLOW ONTO PAGES (Driver test round 2, #2) ──────────────────────
// ── ★ PRINT: LET THE DOCUMENT FLOW ONTO PAGES ───────────────────────────────────────────────
// "The header and footer don't show properly" has a structural cause, not a styling one. This
// page is an app shell: .rd-root is position:absolute inset:0 and .rd-scroll owns the scroll.
// On paper there is no viewport to be absolute INSIDE and no scrollbar to move, so the browser
@ -884,8 +884,8 @@ useShadowStyles(
// ── .region-stats: RegionDetail.vue's scoped block. The GRID stays here and the CARD went to the
// library, deliberately: how many stats there are and how they wrap is this page's decision,
// while the look of one stat is the reusable part. See library/components/regions/StatCard.vue.
// ★ auto-FILL WITH A CAPPED TRACK MINIMUM. Driver test round 2: the Population card — the LAST
// of four — was centred in a box four times too wide on a tablet. Cause: auto-FIT collapses the
// ★ auto-FILL WITH A CAPPED TRACK MINIMUM. Reported: the Population card — the LAST of four —
// was centred in a box four times too wide on a tablet. Cause: auto-FIT collapses the
// empty tracks, so at 3 columns the lone card in row 2 stretched across the whole row. Desktop
// fits all four, which is why only desktop looked right.
// auto-fill alone fixes that and breaks desktop: at 1200px it makes SIX tracks for four cards,
@ -894,8 +894,8 @@ useShadowStyles(
// orphan is never stretched. Measured at 1200/1000/900/800/768/700/600/500/390 — four columns
// down to 800, three to 600, two below, no empty tracks at any of them.
// ⚠ THIS NOW DIFFERS FROM dx-life, deliberately. Theirs is the same auto-fit rule
// (RegionDetail.vue:176) and stretches the same card; the Driver reported it, and dx-shepherd is
// telling him it diverges.
// (RegionDetail.vue:176) and stretches the same card, so the clone diverges here deliberately;
// the divergence is being carried back as a product question.
'.rd-stats{ display:grid;' +
' grid-template-columns:repeat(auto-fill, minmax(max(180px, calc((100% - 3 * var(--spacing-md)) / 4)), 1fr));' +
' gap:var(--spacing-md); }' +
@ -920,7 +920,7 @@ useShadowStyles(
// instead of ~190 — about 50% more map on load. It does NOT get the whole map above the fold,
// and nothing that leaves the map at 780px can: you would need the map under ~320px tall. That
// fix exists (bound .rcm by viewport height) but it changes the map's rendered SIZE, which is a
// change to what the Campaign Server shows, so it is the Driver's call and not mine.
// change to what the Campaign Server shows, so it is PROVISIONAL, pending a product decision.
//
// SCOPED TO THE ALL-REGIONS PAGE ONLY (.rd-root--all), and at >=1200px only. That page is ours;
// the region and country pages are the clone, and their vertical rhythm is measured against
@ -1184,8 +1184,8 @@ useShadowStyles(
/>
</div>
<!-- THE REGION KEY — chooser only, and it is a CONTROL as well as a key: the Driver
asked for a map that "would show the regions and countries and let you select one".
<!-- THE REGION KEY — chooser only, and it is a CONTROL as well as a key: the requirement
is a map that shows the regions and countries AND lets a reader select one.
Rendered in REGION_ORDER because that is the order the palette's CVD separation was
validated in. Buttons, not swatches with click handlers, so the keyboard reaches
them and check:a11y-button-names has a name to find. -->

View file

@ -54,9 +54,9 @@ import { summarizeRegions, PEOPLE_GROUP_LIST_FIELDS } from '@map/utils/countries
// DX-life's spacing/type scales under THEIR token names. Prepended to this
// component's shadow CSS so every var() below resolves inside the shadow root.
import { DXLIFE_TOKENS } from './dxlife-tokens.js'
// THE COUNTRY-POSTER DROPDOWN (Driver 2026-09-24) — the THIRD sanctioned addition, after the
// SELECT VIEW tab strip and the no-selection chooser. Their wording: "a toggle or carrot added
// to the bottom of each region section that says view country posters".
// THE COUNTRY-POSTER DROPDOWN — the THIRD sanctioned addition, after the SELECT VIEW tab strip
// and the no-selection chooser. The requirement: a toggle at the bottom of each region section
// that opens that region's country posters.
//
// NOTHING HERE IS REBUILT. PosterWall is already the shared, fully parameterised grid that
// my-upg-100-list/poster-wall.vue and country-posters/country-poster-wall.vue both render, and
@ -155,7 +155,7 @@ useDocumentFont('Bebas Neue', BEBAS_NEUE_FACES, fontAssetsBase)
// wider per glyph. Registered the same way and for the same reason as Bebas.
useDocumentFont('Poppins', POPPINS_FACES, fontAssetsBase)
// Figtree stands in for Brandon Grotesque, which is commercial and must not ship in a public
// giveaway (Driver, 2026-09-24). @font-face is DOCUMENT-scoped, so it registers here beside
// giveaway. @font-face is DOCUMENT-scoped, so it registers here beside
// the other two rather than inside the shadow root that uses it.
useDocumentFont('Figtree', FIGTREE_FACES, fontAssetsBase)
// Oswald, for CYRILLIC HEADINGS ONLY. base/_globals.scss:35-44 switches every h1/h2/h3 to
@ -172,8 +172,8 @@ const loadFailed = ref(false)
// ── same field list the source page's PEOPLE_GROUP_LIST_FIELDS asks for ─────
// Their PEOPLE_GROUP_LIST_FIELDS, imported rather than restated — one list, one source.
// ★ THIS PAGE ASKS FOR TWO FIELDS, NOT EIGHT. The Driver reported the list page being slow and
// guessed the posters; the posters are behind a v-if and never load until a region is opened. The cost
// ★ THIS PAGE ASKS FOR TWO FIELDS, NOT EIGHT. The list page was reported slow, with the posters
// suspected; the posters are behind a v-if and never load until a region is opened. The cost
// was this fetch: it requested the full PEOPLE_GROUP_LIST_FIELDS for EVERY people group, then
// summarizeRegions computed population, adoption, engagement, commitment and pin lat/lngs from them —
// and this page renders NONE of that. It shows a region's label, its group count, its country count
@ -319,8 +319,8 @@ const posterGroupBy = () => 'countries'
// PosterWall's "Show on map" dispatches a window CustomEvent carrying listId (the poster id,
// e.g. "country-chn") or null when the user toggles the same card off. Mapping that id back to
// the country record and reusing selectCountry() is what makes the button open the dashboard
// tab for that country — the Driver's "click view on map button, which will open the country
// dashboard page for that country".
// tab for that country: the requirement is that the view-on-map button opens the country
// dashboard page for that country.
function onPosterShowOnMap(ev) {
const d = ev?.detail || {}
if (!String(d.instanceId || '').startsWith(instanceId.value)) return
@ -353,7 +353,7 @@ onMounted(loadRegions)
// resolving the SCSS token files (tokens/semantic/_spacing.scss, _shapes.scss, _colors.scss,
// _typography.scss) AND reading getComputedStyle() live on https://doxa.life/regions — both agree.
// Colours/fonts/radii are an intentional exception to this repo's material-light chrome tokens —
// the Driver asked for an exact clone of DX-life's OWN design here, so the clone wins.
// an exact clone of DX-life's OWN design is required here, so the clone wins.
useShadowStyles(
// Their _reset.scss:3-8 FIRST -- see src/shadowReset.js.
SHADOW_BOX_SIZING_RESET +

View file

@ -6,7 +6,7 @@
"regions-dashboard/regions-list",
"regions-dashboard/region-dashboards"
],
"note": "The Driver's 2-tab Regions element. Composite MFE on the pane-wrapper layout, imitating my-upg-100-list/upg-100-mfe: a SELECT VIEW switcher (library/components/ViewSelect.vue) over Regions List at [0,0] and Region Dashboards at [1,0]. Clicking a region or country on tab 1 forwards the selection on 'doxa-regions-dashboard:select' and swaps to tab 2. pinHint:false: the cloned pages carry no coach-mark, and the composite must declare it because a pane's config comes from here, not from the child's own meta.",
"note": "The 2-tab Regions element. Composite MFE on the pane-wrapper layout, imitating my-upg-100-list/upg-100-mfe: a SELECT VIEW switcher (library/components/ViewSelect.vue) over Regions List at [0,0] and Region Dashboards at [1,0]. Clicking a region or country on tab 1 forwards the selection on 'doxa-regions-dashboard:select' and swaps to tab 2. pinHint:false: the cloned pages carry no coach-mark, and the composite must declare it because a pane's config comes from here, not from the child's own meta.",
"config": {
"pinHint": false
}

View file

@ -7,8 +7,8 @@
* (region-dashboards). Clicking a region or a country on tab 1 swaps to tab 2 with that
* selection already applied.
*
* IMITATES upg-100-mfe.vue, does not reinvent it. That file is this repo's reference composite,
* and the Driver named it explicitly as the thing to copy. Same shape, tab for tab:
* IMITATES upg-100-mfe.vue, does not reinvent it. That file is this repo's reference composite
* and the sanctioned thing to copy. Same shape, tab for tab:
* • the pane-wrapper layout (buildPaneColumn + PANE_GRID_STYLES) supplies the scrolling column
* • the SAME View switcher in the header — now the SHARED library component ViewSelect.vue,
* which is that control extracted from upg-100-mfe rather than copied a third time

View file

@ -30,7 +30,7 @@ const EXTRACTED = [
tag: 'RegionSectionCard',
owns: ['region-card', 'countries-grid', 'country-link'],
},
// ── REGLIB batch 2: the Driver's "banners/cards that tell you the prayer progress" ─────────────
// ── REGLIB batch 2: the banners/cards that report prayer progress ──────────────────────────────
{
lib: 'library/components/regions/StatCard.vue',
consumer: 'plugin-designs/regions-dashboard/region-dashboards.vue',

View file

@ -215,7 +215,7 @@ const preFiltered = computed(() => rows.value.filter((p) => {
// MEASURED on their live /regions/india: 855 rows before, 0 after clicking Engaged.
// The scope ruling is "it exists on DX-life and must MATCH", so this reproduces their
// result rather than quietly correcting it. Reading people_committed instead would make
// us DIFFER. Flagged for the Driver: the upstream fix is one word, in their file.
// us DIFFER. Raised upstream as a product question: the fix is one word, in their file.
if (k === 'engaged') { if (!((p.people_praying ?? 0) > 0)) return false; continue }
// Their `exact` branch is `filtered = filtered` — a no-op here. It only changes the FUSE
// threshold once a search term exists, which is where we already read active.exact.
@ -462,7 +462,7 @@ useShadowStyles(
' border-radius:100px; border:1px solid transparent; line-height:1; text-decoration:none;' +
' text-transform:uppercase; font-size:var(--font-size-md);' +
// THEIR FAMILY IS "Brandon Grotesque", WHICH IS COMMERCIAL — the one substitution RULE 1
// allows, and the Driver ruled it must not ship in a public giveaway (2026-09-24).
// allows, and a commercial face must not ship in a public giveaway.
// Figtree chosen by MEASUREMENT, not by name: on live doxa.life their button renders
// 'FULL PROFILE' at 128.00px in Brandon at 500/19.5312px. Of 19 libre grotesques measured
// the same way, Figtree is 126 (-2.00) — closest — against Inter 134, Archivo 135,