NASDAQ:DLO DLocal Limited

ISIN: KYG290181018
Information TechnologyCross-Border PaymentsEmerging MarketsHigh-GrowthDonatien Pick — Stopped
NASDAQ · Montevideo, Uruguay · Cross-border payments infrastructure · Reports in US dollars under IFRS Analysis Status: Stopped
Stamp: this report is dated and priced to the SAME settled session — the close of Wednesday 30 September 2026 at US$13.76, confirmed on 1,415,414 shares against a 20-session mean of 1,700,026. Every price is in US dollars.
US$13.76
-7.99% since 11 Sep
30 September 2026 · Signal v6

Changes Since Last Report vs. the report dated 11 September 2026

The two BUYs are withdrawn. Signals go HOLD/BUY/BUY → HOLD/HOLD/HOLD, and because a Donatien Pick with no BUY on any horizon auto-Stops, the name is Stopped — visibly, with the operator's pick flag intact, and it reactivates automatically on any future BUY. Price -7.99% to US$13.76.

Nothing in the business broke. Three things moved, and only one of them is about the company. Timing −13 to 49 on a tape that has gone from a bullish multi-timeframe confluence to a bearish one, with the MACD histogram negative for 16 consecutive sessions and relative strength reversed against both benchmarks. The ten-year rose 4.95% → 5.26%, which mechanically cuts the warranted multiple from 19.63 to 18.8002. And Quality −2 to 60 on a cash-conversion finding this report makes for the first time.

DISCLAIMER: This is a quantitative framework for educational purposes only. It is not financial advice. Always do your own research and consult a licensed financial advisor before making investment decisions.

DLocal Limited

dLocal builds the payment plumbing that lets global companies take money from, and send money to, consumers in emerging markets. A merchant like a streaming service or a ride-hailing app integrates once — one API, one contract, one platform, which the company calls “One dLocal” — and through it reaches local payment methods across more than 60 countries [1] in Latin America, Africa, Asia and the Middle East, from Brazilian instant transfers to Kenyan mobile money. The business takes a small percentage of the payment volume it processes. Its distinctive asset is not software but regulatory: the payment and e-money licences, local bank relationships and settlement rails it has assembled across 60-plus countries, which a global processor optimised for developed markets cannot simply buy and a single-market local acquirer cannot match for breadth. It is headquartered in Montevideo, Uruguay, listed on Nasdaq, and reports in US dollars while collecting largely in local currency.

HorizonSignalComposite ScoreConfidenceKey Driver
Short-term (1–3 mo)HOLD5867Base matrix HOLD: Medium quality, Attractive valuation, NEUTRAL timing. Neither entry-confirmation path is open.
Medium-term (6–12 mo)HOLD6367The anchor is deep Attractive; the peer lens and the cash-conversion finding do not corroborate it, and the driver no longer amplifies.
Long-term (3–5 yr)HOLD6467Quality 60 is Medium, and at Medium quality the matrix needs timing to corroborate a cheap price. It does not.
Next update: 2026-10-14 — +14d standing ceiling (2026-09-30 + 14 = Wed 14 Oct 2026, a trading day). No company-specific dated event falls inside the window — Q3 2026 results are 11 Nov 2026, 42 days out. September CPI on 14 Oct and the FOMC on 27-28 Oct are recurring macro releases and are NOT scheduling triggers for a Medium macro-sensitivity sector, so the ceiling governs.
Table of Contents
1Five-Pillar Scorecard2Hard Gates & Do-Not-Buy Status3Pillar Detail: Business Quality4Pillar Detail: Valuation Attractiveness5Pillar Detail: Underlying Drivers6Pillar Detail: Economic Alignment7Pillar Detail: Entry/Exit Timing8Economic Event Risk9Multi-Timeframe Technical Analysis10Price Chart (6-Month Daily)11Scenario Summary12Entry / Exit Rules13Position Sizing Context14Calibration Snapshot15Data Sources & Methodology
1

Five-Pillar Scorecard

Five independent scores — each 0–100 with its own confidence. The three fundamental pillars (Quality / Valuation / Timing) set the base BUY/HOLD/SELL via the Decision Matrix; the two context pillars (Underlying Drivers, Economic Alignment) then amplify a BUY to STRONG BUY or a SELL to STRONG SELL when both corroborate.

Business Quality

60
Medium
68

Valuation Attractiveness

78
Attractive — at the band floor
68

Entry/Exit Timing

49
Neutral
67

Underlying Drivers

56
Neutral — not amplification-eligible
60

Economic Alignment

50
Neutral
60
2

Hard Gates & Do-Not-Buy Status

Binary safety checks — any TRIGGERED gate is a hard cap regardless of the scores above; CAUTION gates are sizing notes.
✅
1 · Financial distress
Corporate net cash $302m — corrected DOWN this run from the prior report's roughly US$339m, because the release discloses corporate cash as $369m rather than the estimated US$406m. Net debt to EBITDA -1.15×, negative. Interest coverage 17.71x, current ratio 1.2472 — above 0.8, so the current-ratio arm is not engaged and no resolution is owed. No going-concern language. Clear on every arm, and clear on the smaller corrected figure.
✅
2 · Earnings event risk
Q3 2026 results are 11 Nov 2026, 42 days beyond the stamp and far outside the 14-day window [27]. Worth noting for the reader even though the gate is clear: the last two prints MISSED consensus EPS, by 1.01% and 3.77%.
✅
3 · Valuation ceiling
All four arms clear, and not narrowly. The anchor ratio is 0.6699 against a 1.40 line; the actual 12.59× against a 32.43× tightened Information Technology guardrail; the trailing multiple sits in the bottom decile region of its own five-year range rather than the top 5% [3] — a distribution this report computed on itself, so it is provenance for the arithmetic rather than independent corroboration; and price is below every target on the conservative analyst panel, low included [15]. EV to revenue is 2.70× against the 20× arm.
⚠️
4 · Dilution / accounting
Not triggered on any arm, but carrying a caution. Stock-based compensation is 1.9% of revenue against a 25% trigger, and flat in absolute terms while revenue grew 55% [25]. The share count is FALLING — about 6.9m Class A shares retired for US$86.1m [1] — so the >5%-a-year arm is not merely unmet but pointing the other way. Non-operating income is 5.3% of net income, under the 15% earnings-quality line, and the whole of it is interest and FX rather than equity markups. THE CAUTION is the presentation gap on the cash-flow side: the company's own Adjusted Free Cash Flow is $186m trailing against an unadjusted $388m, and a reader taking the provider's field at face value would overstate cash generation by 2.09×. dLocal discloses the reconciliation in full, which is why this is a caution and not a gate.
⚠️
5 · Regulatory / binary event
No pending regulatory ruling, antitrust action or takeover. The caution is the standing emerging-market exposure, and it is not hypothetical: the FY2025 release records a US$13.1m hit in Q3 2025 from the structuring used to expatriate flows from Argentina after regulatory changes [7] — and Argentina is one of the two markets the Q2 release names as driving the quarter, and which the earnings deck labels a record [5], so the exposure and the growth sit in the same place. Nothing dated is pending, so the gate does not fire.
⚠️
6 · Take-rate compression
Net take rate 0.72% against 1.07% a year ago and 0.84% in Q1 — all three QUOTED from the release, which states them outright [1]; an earlier draft of this report claimed it had derived them and boasted about it. Management attributes it to one very large merchant crossing into lower volume tiers and says that excluding it the rate was roughly flat sequentially [11]. Mix rather than discounting — which is better for the business and worse for the concentration caution below.
⚠️
7 · Merchant concentration
Audited, and escalating. The FY2025 20-F states that the top 10 customers were 61% of revenue in 2025, 62% in 2024 and 60% in 2023 — and, the harder fact, that two customers each accounted for more than 10% of total revenue in 2025, against one in 2024 and none in 2023 [2]. A single merchant's migration into lower volume-pricing tiers moved the consolidated net take rate by about 0.12 percentage points sequentially - that figure being the release's own 0.84% to 0.72% arithmetic [1], with the single-merchant attribution management's own on the Q2 call [11] - and excluding that merchant Q2 volume growth falls from above 90% to “the high 60s” on management's own account [10]. An earlier draft of this report asserted that no primary source for the concentration figure existed. That was false — the 20-F discloses it three times, and the licence for the claim was a tool failure rather than a search.
⚠️
8 · Distributions vs free cash flow
First-half buybacks $86m plus dividends $57m = $143m against $83m of Adjusted Free Cash Flow — 1.72× cover — funded from the corporate cash balance, which fell US$82.7m in the quarter. A $150m senior unsecured facility at Term SOFR + 2.00% was entered on 12 Aug 2026 for general corporate purposes, repayable in 11 equal quarterly instalments of US$13.6m — about US$54m a year — “commencing six months following the borrowing date”. The release describes the agreement as “providing for” the facility and keys repayment to a future borrowing date, so it is treated as committed-but-undrawn: neither netted nor linked to the distributions [1]. It cuts BOTH ways — undrawn it is liquidity; drawn it is about US$54m a year of amortisation against $186m of adjusted free cash flow.
✅
9 · Severe driver collapse
Driver 56/100, against a floor of 15. Nowhere near.

Nothing triggered. Five of the nine gate rows carry a caution (Gates 4 to 8; the relative-strength caution recorded in the calibration is a timing observation, not a gate row, and cash-conversion is folded inside Gate 4 — an earlier draft counted six against a nine-row denominator). No gate caps this signal and no Do-Not-Buy trigger fires — all five were adjudicated and the reasoning is recorded field by field in the §14 calibration under dnb_adjudication, because an empty array is the strongest claim a calibration makes. The HOLD on every horizon comes from the base Decision Matrix, not from a gate. That distinction matters: a gate-capped HOLD would say the risk is structural, and this one says the price is attractive while the tape and the business quality are not corroborating it.

Trigger 3 deserves its own line because it was the one arm this run could not dispose of by inference. Falling earnings revisions needs three consecutive months of downward revisions, and reading two estimate LEVELS a month apart cannot establish that. Pulled the vintage series: FY2027 reads 1.10424 at ninety days, 1.12830 at sixty, 1.13080 at thirty and 1.14373 now — UP in every vintage. FY2026 is flat to marginally down and non-monotonic. Not met, on the series rather than on a guess [16].

3

Pillar Detail: Business Quality

A deep dive into the Quality score: business economics, moat, ROIC and the industry benchmark.
Business Quality — Pillar Score
Medium — growth exceptional, margins and cash conversion deteriorating
60
conf 68%

Lifecycle and sector. High-growth, profitable, and scored on the Emerging-Market Payments metric profile — total payment volume growth, take-rate stability, free-cash conversion and geographic concentration — not on software multiples. GICS sector Information Technology, carried from this name's own history and from the frozen 9 September finder state; the capital-light-financials analogue is noted in §4 where it changes a guardrail and nothing else.

The growth is real and it is still accelerating. Q2 total payment volume was US$17,694m, up 92% year on year, on revenue of US$399.7m, up 55.8% [1]. Gross profit reached a record US$127.2m [5]. Guidance was raised twice over — total payment volume to 60–70% and gross profit to 25–30% [1]. Return on equity is 41.3% [17]. None of that is in dispute and none of it is what moved this pillar.

Industry benchmark — EM Payments: TPV growth + take-rate stability  ·  score 60

One leg exceptional, one deteriorating, so the benchmark sits in the middle band by construction. TPV +92% is comfortably past the 40% “strong” line. The net take rate — gross profit over TPV — is QUOTED outright in the release: 0.72%, “decreasing from 1.07% in the second quarter of 2025 and from 0.84% in the first quarter of 2026” [1]. An earlier draft of this report said it had DERIVED these and was superseded on that point; the values were right, the boast was not. On the revenue-over-TPV basis the same quarters read 2.78% to 2.26%, a milder-looking fall; the basis matters, so both are shown and the gross-profit basis is the one scored, because it is the one the prior report used and the comparison has to be like for like.

What is new, and it cuts both ways. Management attributes the fall to one very large ride-hailing merchant crossing into lower volume-pricing tiers, and says that excluding it the take rate was “relatively flat sequentially” [11]. Volume-tier migration on a contract is a different animal from competitive discounting, and it is accretive to total gross profit — which is why this leg is 60 and not the 58 the prior report carried. But the same sentence is the concentration risk, and the size of it has to be stated precisely: that merchant moved the consolidated net take rate 0.12 percentage points sequentially (0.84% to 0.72%), which is what “flat sequentially” supports. An earlier draft of this report attributed the whole 0.35pp year-on-year fall to that one customer; neither cited source says that. Excluding it, Q2 volume growth falls from above 90% to “the high 60s” [10], and the 20-F records the top 10 customers at 61% of revenue with TWO above 10% each in 2025 against one in 2024 and none in 2023 [2]. Management guides the second half to “somewhat flat-ish” take rates and says it is “closer and closer to that floor” [10]. A floor that has not arrived is a forecast.

Margin trajectory — 44, unchanged, and the half-year is the reason. Gross margin was 32% against 39% a year ago. The operating-profit-to-gross-profit ratio was 50%, six points better sequentially but six worse year on year [1]. The clearest statement of the problem is the half-year: revenue +55%, gross profit +34%, operating profit +15%, net income +8% [1]. And gross-profit guidance was raised while operating-profit guidance was maintained at 27.5–32.5% — the incremental gross profit is being spent.

Balance sheet and cash conversion — 58, down from 70, and this is the finding of the run

The balance sheet itself is strong. Corporate net cash $302m — the release’s disclosed $369m of corporate cash less $67m of financial and lease liabilities [1] [25] — no meaningful debt, interest coverage 17.71x, current ratio 1.2472, equity $540m [17] [25]. Two corrections to the prior report land here, both of them small and both in the same direction. Its estimate of roughly US$406m of corporate cash is CORRECTED here, and superseded: it was reached by applying a 46.4% corporate share to $795m plus $79m of financial assets at fair value. The release states the answer outright: total cash $795m, “which includes $369m of Corporate cash and cash equivalents” [1] — and the 46.4% ratio was taken from those very figures [24], then applied to a larger aggregate of which only 46.4% is corporate — and which is itself US$794.9m of cash plus US$79.2m of financial assets at fair value, so 91% of it IS cash; the defect was the CORPORATE/MERCHANT split, not the asset class. Corporate net cash is $302m; the prior report's roughly US$339m is superseded and withdrawn.

The cash CONVERSION is the real news, and it is one layer down from where the prior report looked. That report caught the merchant-float trap on the balance sheet — most of the cash is money held for merchants, not dLocal's to spend. It did not apply the same idea to the cash-flow statement, and the company itself does. dLocal publishes an Adjusted Free Cash Flow defined as operating cash flow less changes in working capital (merchant) less capital expenditure [1]. On that basis:

Q3 2025Q4 2025Q1 2026Q2 2026Trailing twelve months
Adjusted Free Cash Flow (US$m)37.664.914.768.5185.7
Unadjusted free cash flow (US$m) [25]85.888.983.0130.6388.4

The unadjusted row's one-decimal components sum to 388.3; the trailing cell publishes 388.4 because it is computed from the unrounded quarterly figures. Disclosed rather than smoothed, in a report that makes rounding order explicit elsewhere.

The unadjusted figure is 2.09× the company's own. And on a half-year basis the company's measure went backwards: $83m against $88m a year earlier, -5.6%, while volume rose 83% and revenue rose 55% [1]. The headline “+41% year on year” in the release is a Q2-only comparison against a weak Q2 2025.

The counter-argument is in the same release, and this report is obliged to put it beside its own finding. The half-year fall is produced almost entirely by Q1’s US$14.7m, and the release says what depressed it: Q2’s recovery “reflects the normalization of the temporary working-capital effects (including timing in tax-credit netting and receivables from advancement operations) that had weighed on the first quarter of 2026” [1]. So what weighed on Q1 were those temporary effects themselves, and the normalisation is what lifted Q2. An earlier draft of this report had that the wrong way round, attributing Q1 to the normalisation — which is self-refuting, since a normalisation of effects that weighed on Q1 cannot explain Q1. If the release is right, the half-year comparison is distorted by a timing item, the Q2 run rate is the better guide, and the sub-score below is too harsh. Why it is not simply accepted: the line item in question is precisely what the Adjusted measure exists to strip out, the explanation is management’s own and unaudited, and one clean quarter does not re-establish a trend. Both readings are on the record and the score takes the conservative one.

Nor is the float a one-way street. dLocal’s own merchant working capital — trade payables PLUS other tax liabilities less ALL trade receivables, on the line items the release’s Adjusted-Free-Cash-Flow definition names — has run US$203.4m, US$241.3m, US$329.0m, US$389.2m and US$400.1m across the last five quarter-ends [25]. Trade payables less trade receivables alone, which is NOT the measure, gives 405.5 at the latest date; the US$5.4m difference is other receivables less other tax liabilities — a NET of two lines, not either one. The tax liabilities taken on their own move it the OPPOSITE way, by US$19.4m to 380.8, which is precisely the figure an earlier round of this report wrongly adopted after reading the wrong label [25]. And in FY2024 the measure reversed: operating cash flow was minus US$32.8m for the year [25], on a merchant working-capital change of US$146.0m [25]. (An earlier draft put a US$167.2m outflow here; that is the provider’s TOTAL change in working capital, a different and wider base than the merchant measure this paragraph is about.) A metric that can print negative for a full year is not a funding source.

Management and capital allocation — 58, down from 60. Two good facts and one uncomfortable one

For. The US$300m programme authorised in March has bought about 6.9m Class A shares for US$86,062k at a stated average of $12.49 a share [4] — below today's $13.76 and below the $14.96 the prior report assessed, and below the US$13.60 at which General Atlantic sold 9,842,559 Class A shares on 17 August 2026 [8]. It did NOT exit — the same filing’s cover page shows General Atlantic DO B.V. still holding 30,218,380 shares and the group 36,814,136 at 21.4% [8]. On the denominator the filing itself declares — 172,183,455 Class A shares outstanding at 30 June 2026 — that block is 17.6% of Class A, not the 16.6% its own cover row prints: 30,218,380 ÷ 172,183,455 = 17.55%, and the filing gives 17.6 for the identical 30,218,380 holding two rows down, under General Atlantic Cooperatief. 21.4% reconciles (36,814,136 ÷ 172,183,455 = 21.38%) and 16.6% reconciles with nothing, so the source disagrees with itself and the figure that reconciles is the one scored. An earlier draft of this report called it a departing sponsor, which the filing it cites contradicts. Buying your own stock cheaper than a selling-down sponsor did is still the right way round, and the retained stake is the more important fact: the seller still holds 21.4% of Class A, so the overhang is reduced rather than removed. Stock-based compensation is 1.90% of revenue and flat in absolute terms while revenue grew 55% [25], and the share count is falling rather than rising. Disclosure is genuinely good: the corporate-cash split and the merchant-float adjustment are both volunteered, not extracted.

And the cover ratio is NOT new, which weakens this report’s own point. H1 2025 paid US$149.98m of dividends against the US$88.2m of Adjusted Free Cash Flow quoted above — 1.70×, the same ratio on a larger absolute number [1]. So distributions running ahead of the adjusted measure is this company’s pattern rather than a fresh deterioration, and an earlier draft of this report presented it as new this run without the comparison. What IS different is the composition: one large dividend then, a standing buyback programme now — the more repeatable of the two.

Against. First-half distributions were $86m of buybacks plus $57m of dividends, $143m against $83m of Adjusted Free Cash Flow — 1.72× cover [1]. Corporate cash fell US$82.7m in the quarter as a direct result [1]. In the same month the company entered a $150m senior unsecured facility at Term SOFR + 2.00% maturing 14 Aug 2029 [1]. The release says general corporate purposes and does not say whether it has been drawn, so no link between the two is asserted here and the facility is not netted anywhere in this report. The adjacency is worth a reader's attention on its own. Also on the record: two consecutive quarters of missing the consensus EPS, by 1.01% and 3.77% [27], and a dual-class structure: 172,183,455 Class A shares against 116,233,376 Class B at 30 June 2026 [4] — the interim financial statements’ own share-capital note, which is where those figures live and which an earlier draft of this report cited to the 20-F, a 31 December 2025 document stating DIFFERENT counts. Each Class B share carries five votes and is convertible to Class A at the holder's option, and Class B was 43.76% of outstanding shares at 31 Dec 2025 [2] [8]. An earlier draft of this report published ‘the ~178m Class A shares’ — the provider's figure, which §15 itself rejects — and called Class B founder-held with nothing behind it. Sebastián Kanovich, a director, holds 11,526,321 Class B after converting and selling 1,103,153 shares in four tranches between 1 July and 5 August, every one of them under a Rule 10b5-1 plan adopted on 26 November 2025; director William Rodney Pruett BOUGHT 20,000 on 29 May at US$11.85 [6].

Competitive moat — 56/100, derived from the competitive environment below, not asserted

Pricing power
35
Net take rate 1.07% → 0.72% year on year. Management calls the mechanism volume-tier migration rather than price concession, and says it is “closer and closer to that floor” — but a floor that has not arrived is not pricing power.
Network effects
58
Two-sided: merchants reach local payment methods across “more than 60 countries” through what the company calls “One dLocal — one direct API, one platform, and one contract” [1]. The country count is verbatim; the One-dLocal clause is the release's own words with the punctuation reconstructed, which an earlier draft called verbatim too. An earlier draft said “hundreds of” those methods; that count is in no declared source and is withdrawn. Each new method makes the platform marginally more useful to the next merchant. Real, not compounding fast.
Switching costs
60
The average merchant now runs dLocal in about 12 markets, up from 8 — integration depth is genuinely rising. Offset: a merchant that reaches scale in one corridor can and does insource that corridor.
Cost advantage
55
Local rails and settlement in markets where a global processor has to buy access. Replicable with capital and time, and Adyen and Stripe are both spending it.
Intangible assets
70
The payment and e-money licences across 60+ countries are the durable asset. They take years and local counsel to assemble and they are what a new entrant cannot simply buy.

Average of the five: 35 + 58 + 60 + 55 + 70 = 278, over five = 55.6, rounding to 56. Down two from the prior report, and the two points come entirely from pricing power.

Competitive Environment — who is attacking, and which way share is moving

The moat scores above are derived from this read. dLocal's position is a bridge: one API, one contract and one platform — the company's own ‘One dLocal’ framing — into “more than 60 countries” [1], sold to global merchants who do not want to build 40 local integrations. The attack comes from three directions at once, and only one of them is a merchant rival.

CompetitorThreat typeShare trajectoryMoat-erosion vector
EBANX (private, Brazil)Direct regional rival, cross-borderStable — both growing into a growing marketClosest like-for-like in Latin America, with ~100 direct local connections across 20+ countries against dLocal's wider footprint. Competes corridor by corridor on price.
Adyen (AMS:ADYEN)Global processor moving down-market into EMLosing on breadth, gaining on depthOptimised for developed markets and building EM local capability with real capital. Trades at 17.6x forward on +18.9% revenue growth [23], so it can afford to.
Stripe (private)Global platform expanding local presenceLosing on frontier marketsStrongest where the market is already banked. Its EM expansion is real but does not yet carry the alternative-payment-method depth that is dLocal's actual product.
The merchants themselvesVertical insourcing — the real oneLosing, structurallyOnce a corridor reaches scale a large merchant can build its own local rails and keep the take rate. This is the mechanism behind the tier migration and it is why pricing power scores 35.
PayU, Kushki, local acquirersLocal specialistsStableStrongest inside single markets. They bound dLocal's pricing in each corridor without threatening the multi-market proposition.

Net effect on the moat. Switching costs are raised to 60 on a specific and checkable fact — the average merchant now runs dLocal in about 12 markets, up from 8 [10] — because integration breadth per customer is the switching cost. Cost advantage holds at 55: the licence estate is real, and replicable with capital. Pricing power is 35, the lowest of the five, because the observable series says the take rate fell 33% year on year whatever the mechanism. Overall competitive threat: ELEVATED — and it propagates: the Bear scenario in §11 carries a share-and-margin trigger, and §12's thesis-invalidation rule carries a competitive condition naming the insourcing case.

ROIC and capital efficiency

Return on equity 41.3% and return on assets 8.6% [17], on equity [25] of only $540m against $3,969m of market value — a capital-light business whose balance sheet is mostly other people's money in transit. Capital expenditure is about US$40.49m [17] against $429m of operating cash flow [25], so the reinvestment burden is genuinely light. The FMP snapshot scores return on equity and return on assets 5 of 5 while scoring price-to-book 1 of 5 [18] — the same fact stated twice: very high returns on a small equity base priced at $3,969m. An earlier draft claimed return on invested capital screens in the top decile of the peer set. Nothing in this report holds peer ROIC — the peer screen is forward multiples and revenue growth — so the claim is withdrawn rather than left standing on nothing.

The build, and what moves it. EM Payments benchmark (TPV growth + take-rate stability) 60 (20%) · growth and scale 82 (20%) · margin trajectory 44 (20%) · balance sheet and cash conversion 58 (15%) · moat 56 (15%) · management and capital allocation 58 (10%) = 12.00 + 16.40 + 8.80 + 8.70 + 8.40 + 5.80 = 60.10, rounding to 60. FOUR sub-scores moved — an earlier draft of this sentence said two and then named four in its next clause. The balance-sheet-and-cash-conversion leg falls 70 to 58 on the Adjusted-Free-Cash-Flow finding; the benchmark rises 58 to 60 on the tier-migration evidence; moat goes 58 to 56; and management 60 to 58. All four are needed to reproduce the total: +2×0.20 −12×0.15 −2×0.15 −2×0.10 = −1.90, and 62 − 1.90 = 60.10, which is the published build to the hundredth. Net −2.

Weighting sensitivity — because Quality is one of this report's two boundary-deciding pillars

At Quality 65 the Decision Matrix row changes from Medium to High quality, and on an Attractive valuation that row would return BUY on every horizon rather than the HOLD this report publishes. It would also drop the risk add-on inside the discount rate from 1.0% to zero, lifting the warranted multiple. So the 65 line decides this report, and it has to be shown rather than asserted.

Reaching it needs +4.90 weighted points, and only ONE of the three obvious routes actually clears it: the benchmark from 60 to 85 is +5.00. Margin trajectory from 44 to 68 and the balance sheet from 58 to 90 are each +4.80, landing on 64.90 — still Medium. An earlier draft of this sensitivity offered all three as though each sufficed. None of them survives half-year net income up 8% on revenue up 55%, Adjusted Free Cash Flow down 5.6% on the half, and a net take rate down 33% year on year. Equal-weighting all six sub-scores instead of using the inherited weights gives 59.67, the same answer to the nearest point. And the weights themselves are inherited from the prior report, not chosen this run, which is the point of saying so.

4

Pillar Detail: Valuation Attractiveness

Sector-appropriate multiples, FCF yield, reverse-DCF implied growth, embedded optionality, and the analyst-consensus cross-check.
Valuation Attractiveness — Pillar Score
Attractive on the anchor at 12.59× against 18.8002× warranted, ratio 0.6699 — but sitting on the band floor because the relative lenses disagree
78
conf 68%

THE ANCHOR — a warranted multiple, derived, with both sides FORWARD

Discount rate r = 5.26% ten-year [19] + 4.50% equity risk premium + 1.00% risk add-on (Quality 60 is below the 65 line) = 10.76%. Near growth is capped at the Information Technology secular bucket's 15% and the cap binds: the haircut consensus is 21% on the FMP panel and 26% on yfinance, both above it [16]. Terminal growth 3%.

Two-stage: WarrantedPEtrailing = 21.6202, and dividing by (1 + gnear) restates it per unit of next year's earnings to give WarrantedPEforward = 18.8002. Both sides of the ratio are forward; mixing them is the error, not the choice of basis.

Forward EPS panelFY2027 EPSn (EPS estimates)Actual forward multipleRatio to warrantedBand
FMP consensus — SCOREDUS$1.09259412.5939×0.6699Attractive
yfinance panelUS$1.14373412.0308×0.6399Attractive

A live panel disagreement, declared rather than resolved quietly. The two panels are 4.7% apart on the denominator of the anchor and are the SAME DEPTH — 4 and 4 EPS estimates; an earlier draft of this table printed 10 for the yfinance row, which is that provider’s RECOMMENDATION count and a different field, and reading it as estimate depth made the unscored panel look the better-covered one. Both give an Attractive band, so the disagreement does not decide the signal — but it moves the anchor's fair value by about a dollar, and the conservative panel is the one scored. The prior report used the yfinance basis, so this is a change of basis and it is stated as one. Note also that the cross-panel gap (4.7%) is smaller than the FMP panel's own internal dispersion, which runs US$1.03245 to US$1.15273 [16].

Guardrails do not bind, on either reading of the sector. The Information Technology line of 33× tightens 1.73% for a 5.26% ten-year to 32.43×; the capital-light-financials analogue — arguably the better fit for a payment processor — tightens to 29.48×. The actual 12.59× is less than half of either, so the choice is immaterial and is recorded only so it cannot be raised later as a hidden lever.

Anchor fair value $20.54 (18.8002 × US$1.09259). That is the level the anchor alone implies — not a twelve-month target; §11's base case is deliberately lower.

THE BAND IS NOT ROBUST — and the disclosure is machine-derived, not written by hand

Ratio 0.6699, ATTRACTIVE band. NOT ROBUST. It is 51.2 NAV units from the 0.80x edge and n/a from none — already in the outermost band on this side. Largest single sensitivity: near-term growth in the warranted multiple (earnings-equivalent) (g-near), worth 0.205 on the ratio and closing 88% of the nearer gap (to 0.80x), stopping short of crossing it alone. the ten-year Treasury inside r (earnings-equivalent): 0.114, covering 56% of that same gap. the FY2027 consensus earnings base: 0.074, covering 34% of that same gap. Evaluated with every declared input at its adverse end AT ONCE — not by summing the single-input moves, which the anchor's nonlinearity makes a different number — the inputs together close 184% of the gap to 0.80x and 0% of the gap to none — already in the outermost band on this side.

Sensitivity of the band to each declared input — generated from the same model the fragility sentence above reads, so the table and the model cannot drift apart. “Turns Fair at” asks how much of the distance to the 0.80× Attractive/Fair edge each input closes on its own.

Uncertain inputRange testedRatio across the rangeTurns Fair atSwing on the ratio
near-term growth in the warranted multiple (earnings-equivalent)US$0.9363 – US$1.2695 of forward EPS equivalent0.5765 – 0.781788% of the way0.205
the ten-year Treasury inside r (earnings-equivalent)US$0.9922 – US$1.1738 of forward EPS equivalent0.6235 – 0.737756% of the way0.114
the FY2027 consensus earnings baseUS$1.0325 – US$1.1527 of forward EPS equivalent0.6349 – 0.708934% of the way0.074

All three together, at the low end of every declared range: the edge is REACHED — the combined move is 184% of the distance to 0.80×. That is the sentence the fragility block above renders, and it is why the band is called NOT ROBUST even though no single input crosses the edge alone. The combined case is stated here rather than as a table row so the table carries exactly one row per declared input.

Each range and its basis are declared in the calibration under valuation_model.inputs; two of the three are warranted-side inputs expressed as their earnings equivalent, because on this anchor scaling the earnings base and scaling the warranted multiple are algebraically the same move. The conversion is stated in each basis.

READ THE UNITS BEFORE THE PERCENTAGES. derive_fragility.py computes coverage in the space of the quantity it perturbs — here the FORWARD EARNINGS BASE — and the ratio is proportional to its reciprocal, so the two are not interchangeable. The generated sentence above therefore reports NAV-space fractions under ratio-space wording, including the phrase “NAV units” on a report whose own valuation model says in terms it is “an EARNINGS anchor, not a NAV one”. Translated into ratio space the per-input coverages are 86%, 52% and 30% against the 88%, 56% and 34% printed, and the combined figure needs a different treatment entirely, because 178% is the SUM of three earnings-space fractions and corresponds to no ratio quantity at all.

And the combined case cannot be obtained by adding, which an earlier round of this report did anyway. That round published 210% — a figure reached by summing the three single-input moves and converting the total into ratio space, which is the very convention the paragraph above exists to warn against. The generator works by perturbing NAV with the warranted multiple held FIXED, and two of the three declared inputs are things the warranted multiple itself depends on, so the anchor is nonlinear in them and no sum of separate moves equals the joint one. Re-evaluating the actual two-stage model with all three at their adverse ends at once — near growth 10%, a 6.00% ten-year taking r to 11.50%, FY2027 EPS US$1.03245, and the forward divisor at 1.10, because it is (1 + near growth) and therefore MOVES with the input being stressed — gives a warranted multiple of 14.6600 against an actual of 13.3275, a ratio of 0.9091 and a coverage of 183.9% of the gap to 0.80×. The additive route overstated it by 26 points. The direction of the error is not fixed either: summing in ratio space overstates while summing in NAV space understates, which is a sharper version of the warning than the one originally written. The first recomputation done in checking this held the divisor at 1.15 and returned 215.6% — the mixed-basis trap the framework already names, caught here on the fix itself, which is why the divisor is published rather than described.

Every conclusion survives and none of the errors flatters: the individual rows overstate, the additive combination overstates, the band is NOT ROBUST on every reading, no single input crosses the 0.80× edge alone, and the three together still reach it — 183.9% is comfortably above 100%. The mislabelling is recorded as a generator defect rather than quietly re-typed, and the generator has since been changed: it now refuses to present an additive sum in simultaneous language, and accepts a declared simultaneous ratio with a reproducible basis instead.

What that means and what it does not. No single declared input crosses the 0.80× Attractive/Fair edge on its own — the growth input gets 88% of the way there — but evaluated simultaneously they reach 184% of it, so a slower growth path alongside a 6% ten-year would take the band to the edge. It would not change the signal. Crossing 0.80× moves the band label and drops the pillar to roughly 70, which is still Attractive for Decision-Matrix purposes (the line is 65), so the base signal stays HOLD either way. The fragility is also one-sided by construction: there is no better band to reach, because 0.6699 already sits below the lowest edge the framework defines.

The relative lenses do NOT corroborate the anchor, and that is this pillar's real story. The blend is the warranted-multiple anchor 82 (40%) · sector / peer median 58 (20%) · own-history decile 82 (15%) · growth-adjusted (PEG) 85 (10%) · analyst consensus 83 (15%) = 32.80 + 11.60 + 12.30 + 8.50 + 12.45 = 77.65 — which is below the Attractive band's floor of 78, and the floor is what holds the published 78. The anchor carries 40% of the pillar and is doing so largely on its own.

LensWeightScoreWhat it says
Warranted-multiple anchor40%8212.59× against 18.80× warranted, ratio 0.6699 — deep in the Attractive band. Scored by a linear map of the ratio into the band: 78 + (0.80 − 0.6699) / 0.80 × 22 = 81.58.
Sector / peer median20%58Twelve listed payment and EM-fintech names give a median forward multiple of 8.7× [23]. DLO at 12.59× is dearer than the peer median [23]. An earlier draft of this report said it was cheaper than every peer growing at a comparable rate bar Nu Holdings and Global Payments. That is withdrawn and was false: on the same twelve names, Shift4 at 5.8× on +34.1% growth, Corpay at 12.4× on +21.5% and EVERTEC at 6.2× on +19.7% are all cheaper than 12.59× [23]. The honest statement is narrower: DLO is cheaper than the two global processors in the set (Adyen 17.6×, Payoneer 15.5×) and dearer than the Latin American acquirers, which are growing at roughly nothing. Either way the growth adjustment is already paid for by the PEG lens below and by gnear inside the anchor, so crediting it a third time here would be double-counting. Hence 58, not 75.
Own-history decile15%82COMPUTED, not asserted: a rolling trailing-twelve-month diluted EPS stepped at each quarter's filing date across 21 quarters, against 1,338 raw daily closes. The distribution is min 15.5, p10 20.2, p25 22.8, median 33.8, p75 65.5, p90 158.1, max 368.6 [3]. Today's 20.24× sits at the 10.2% percentile — decile 2. Caveat, stated: the upper tail is the 2021-22 post-IPO bubble, which flatters the percentile. The fairer framing is that 20.2× is 40% below the five-year median and 31% above the all-time low. Hence 82, not the 85 a raw decile-2 reading would give.
Growth-adjusted (PEG)10%8512.59× over 28.2% consensus earnings growth = 0.45. Well under 1, and under 0.5. The provider's own diluted PEG reads 0.486 [17].
Analyst consensus15%83Targets, 10 of the 15 points: the conservative panel puts consensus and median at $18.50, high $20.00, low $17.00 — 34.4% above $13.76, so more than 20% below consensus, which scores 88. Spread is 1.18× low-to-high, narrow enough to need no confidence cut. Grades, 5 points: the conservative panel reads 0 strong buy / 9 buy / 3 hold / 1 sell = 69.2% bullish, which is a Buy consensus with meaningful hesitation and scores 72. The other panel reads 90% bullish and would have scored a band higher [15].

FCF yield — the universal anchor, and it is the LESS flattering number here

5.1%, on the company's own trailing Adjusted Free Cash Flow of $186m over an enterprise value struck on corporate net cash ($3,969m market value less $302m). The framework puts 5-8% in the Attractive band and 3-5% in Fair, so 5.07% is just inside Attractive — and only just, which is the point; it is not the “very attractive” band, and an earlier draft of this report called it Fair on the boundary, understating it by one band. No score consumes the band label: the Valuation blend runs off the anchor, the peer set, the decile, PEG and the analyst panel.

The arithmetic in full, because the rounding ORDER changes the second decimal and a reader should not have to guess it: 288,416,831 shares × $13.76 = US$3,968.6156m, less US$301.729m of corporate net cash = US$3,666.8866m of enterprise value. Adjusted Free Cash Flow is 37.6 + 64.9 + 14.7 + 68.548 = US$185.748m, the Q2 figure being the release's exact 68,548. 185.748 / 3,666.8866 = 5.0656%, which rounds to 5.07%. Rounding the cash flow to 185.7 first would give 5.06%; the unrounded inputs are what is used.

Two flattering versions of this number exist and neither is used. On the unadjusted trailing cash flow of $388m the yield is 10.6%. On the provider's own price-to-free-cash-flow field it is higher still [17], because that field implies about US$10.8m of annual capital expenditure against the US$40.49m the quarterly cash-flow statements record [17] — 9.910 + 9.738 + 11.490 + 9.349, which the ratios entry carries and the balance entry does not (an earlier draft of this report said US$40.7m, superseded, and then cited the corrected figure to the balance entry, which has no capex line — the very defect this clause describes). The honest figure is the company's own, and it is roughly half the provider's.

Implied growth — what the price is actually asking for

At $13.76 against a warranted multiple of 18.8002, the market is paying 12.59× forward for a business consensus expects to grow earnings 28.2% next year. Solving the same two-stage model backwards, 12.59× is warranted at 2.3% near-term growth (an earlier draft of this report published 7.5%, which does not solve — 7.5% warrants 14.890×) against the 15% cap the framework allows and the 21-26% the haircut consensus supports. The price embeds materially less growth than the fundamentals support. That is the bull case in one sentence, and it is why this is not a valuation call.

Embedded optionality — what you get for nothing, and why it is only a tilt

Value-added services. BNPL, dMoRe (merchant-of-record), enhanced FX and physical point-of-sale are under 1-2% of the business today and management says they could be material inside one to two years [10]. Unquantified but real, and nothing in the FY2027 consensus asks for them.

Penetration. About 3% of the addressable market and 10% of merchant wallet share [10], against an average merchant now live in 12 markets rather than 8 — the cheapest growth available is selling more corridors to merchants already integrated.

The buyback. $86m of a US$300m authorisation has been spent at a stated average of $12.49 a share on 6,887,815 shares for US$86,062k [4] — an earlier draft of this report published US$12.48, which is 86.1 divided by 6.9, when the exact average is in the filing — leaving about US$214m, roughly 5% of the market value, available at a 12.59× forward multiple [1].

And why it is a tilt of nothing here. The framework allows +3 to +8 points for credible under-priced upside. It is not taken, because the FCF-yield finding above cuts the other way by at least as much: a 5.1% yield on the company's own cash measure is a worse starting point than the headline suggests. Netting the two to zero is stated plainly rather than applied silently in one direction.

Cross-references

Analyst targets. Conservative panel $17.00 / $18.50 / $20.00; the other panel US$15.00 / US$18.80 / US$21.00 across ten analysts [15]. Price sits below every published target on the conservative panel, which is what clears Gate 3's analyst-target arm outright.

Grade actions. UBS upgraded Neutral to Buy on 1 Jul 2026; Truist maintained Buy on 27 Aug; nothing at all in the last thirty days [15]. Zero upgrades and zero downgrades in the window, so the sentiment leg reads maintained.

FMP health rating A- (4 of 5) — return on equity 5, return on assets 5, discounted cash flow 4, debt-to-equity 3, price-to-earnings 2, price-to-book 1 [18]. The split is not a contradiction: high returns on a small equity base priced at $3,969m is a high price-to-book. It corroborates both halves of this pillar's disagreement rather than resolving it.

Trailing, for completeness. Reported trailing diluted P/E 20.24× on $0.68 of earnings. Normalising to operating earnings after the 17.44% trailing effective tax rate gives a clean trailing EPS of $0.65 and a clean trailing multiple of 21.15× — slightly worse than reported, because non-operating income is positive. It is only 5.3% of net income, under the 15% line, so no normalisation is required and the anchor's clean_pe stays on the forward basis the framework's own linter treats it as — it is recorded at 12.59×, equal to the actual forward multiple by construction, because with non-operating income under the 15% line there is nothing to normalise away.

5

Pillar Detail: Underlying Drivers

The dominant external force the stock is tethered to, scored 0–100. A context pillar: it does not change the base signal — it feeds amplification (tailwind ≥65 can lift BUY→STRONG BUY; headwind ≤35 can push SELL→STRONG SELL).
Primary Driver
EM rate-and-consumer environment (secondary: the US dollar)
56
Neutral — NOT eligible to amplify

The primary driver is the emerging-market rate-and-consumer environment — the cost of capital applied to a long-duration growth multiple, and the health of cross-border discretionary spend in Latin America, Africa and Asia. The secondary driver is the dollar: dLocal collects in local currency and reports in US dollars, so a strengthening dollar is a translation headwind on top of everything else. This is not a commodity-leveraged name, so the framework's commodity price-TREND overlay has nothing to read; that is recorded explicitly in the calibration rather than left as a bare null.

HorizonWeightScoreEvidence
Historical — last 12-24 months25%75Cross-border e-commerce into emerging markets has been the tailwind the whole period, and dLocal's own volumes are the proof: TPV +92% in the quarter on record gross profit of US$127.2m, with record gross profit in Brazil of US$40m (+64% year on year) and Argentina of US$20m (+40%) — both named as records on slide 13 of the earnings deck [5], against Mexico's US$12m, where the release says ‘partially offset by (iii) Mexico, with large Tier 0 merchants hitting higher volume pricing tier along with cost pressure’. The quoted clause carries its own predicate, so an earlier draft that appended ‘partially offset the quarter’ doubled it [1]. That is the company naming the tier-migration mechanism and the market it hit.
Current state50%52Deteriorated. The Fed has HIKED 25bp to 3.75-4.00% on a unanimous vote with 16 of 18 participants expecting at least one more, and the ten-year is at 5.26% [20] [19] — which mechanically lowers the warranted multiple for exactly this kind of long-duration name. EM Equities are marked UNDERWEIGHT on all three horizons and the USD OVERWEIGHT on all three [20], both against the name. On oil the LEVEL has to be this run's, not the macro state's: that state carries Brent US$103.87 and WTI US$100.30 as of 18 September, and checked directly on the stamp date Brent front month is US$103.53 and WTI US$90.43 intraday against a 90.42 settle — Brent essentially FLAT over the fortnight (−0.3%) and WTI down 9.8%. The Brent–WTI spread has blown out to US$13.11 from US$3.57, which is the Hormuz signature (struck on the 90.42 settle; on the 90.43 intraday read it is 13.10). Brent is the waterborne benchmark the strait gates, WTI is landlocked. An earlier draft of this report published US$98.17 as the Brent front month and a 5.5% fortnight fall; 98.17 is the DECEMBER contract and the comparison set it against a front-month baseline. The December strip does sit near 97–98, and that band is 97.1–98.2 on a re-read returning 97.57 — a DECEMBER read, since BZ=F’s own 30 September range was 102.16–103.96 and 97.57 is not reachable on the front month; an earlier draft of this report called it a front-month print. The WTI figure beside it, 89.84, IS a front-month re-read (CL=F ranged 88.58–91.96). The LEVEL this report scores is the front month at US$103.53; the December band is the forward strip, not the level [21]. An earlier draft of this report asserted the 18 September levels in the present tense and ran no live commodity check at all. The Hormuz closure IS still live — one transit on 27 September against a baseline near 85 a day — so the shock is intact, and the WTI leg alone has come off its spike while Brent has not (an earlier draft of this report said the price had come off, full stop, and treated that as cutting in the name's favour). The direction of that error was NOT conservative, which round 8 established. An earlier draft claimed cheaper oil was a smaller tax on the emerging-market consumer and that this leg was therefore harsher than the facts warranted. On a consistent front-month basis Brent did NOT get cheaper — 103.53 against 103.87 — so the energy headwind is fully INTACT and the harsh macro leg is correctly harsh rather than over-harsh. The report had granted itself a mitigation on the strength of a fall that did not happen; withdrawing it removes a FLATTERING adjustment and supports the published score rather than challenging it. NO PILLAR MOVES, and the reason is this leg’s own score: the Driver current-state leg stands at 52 and stood at 52 before the correction, because the mitigation only ever lived in this prose and was never scored - the build string is 18.75 + 26.00 + 11.25 = 56 in both the pre-correction and the published artifact. (An earlier draft of this sentence justified it instead by the macro overlay’s four legs taking no oil input, which is true but is a TIMING-pillar fact offered for a DRIVER-pillar claim — the wrong machinery.) Against all that: dLocal's own volumes are still accelerating and guidance was raised.
Forward outlook25%45The macro report's own path is hawkish, and EM equities are Underweight even at the long horizon [20]. The one crack is on the stamp date itself: core PCE for August printed 3.0% against a 3.3% forecast and 0.2% monthly against 0.3%, while consumer confidence fell to 81.9 from an 89.2 forecast and job openings came in light [22]. Per the standing rule, a single print moves probabilities and does not flip a regime — so this is scored as a reason the forward leg is 45 rather than lower, not as a reason to call the Fed done.

Score 56/100 — historical (last 12-24 months) 75 (25%) · current state 52 (50%) · forward outlook 45 (25%) = 18.75 + 26.00 + 11.25 = 56. That is NEUTRAL (50-64), so the driver is NOT eligible to amplify in either direction: amplification needs 65 or above for a BUY and 35 or below for a SELL. The prior report scored 68 — a Tailwind, and eligible. Nothing about the company caused that fall; the rate path and the EM marks did.

Thesis-invalidation floor. The driver breaks the case if the EM consumer rolls over hard enough to stall volume growth while the take rate is still falling — the two together would turn a gross-profit compounder into a flat one. The observable early warning is sequential TPV: growth decelerating below about 40% year on year while the net take rate is still under 0.72%. Neither has happened; guidance says the opposite. Driver confidence 60, taking a ten-point penalty because the relationship between this macro and this company's volumes has so far been weak enough to be contested — dLocal grew 92% through a tightening cycle.

6

Pillar Detail: Economic Alignment

How the current economic climate sits relative to this stock, read from the latest Macro-Economic report. Classifies the macro pressure (Tailwind / Neutral / Headwind) — the second amplification input — and frames a long entry as Trend-Following or Contrarian with a 0–100 conviction.
Stance · Pressure
Neutral · Neutral
50
conviction

Source and why. DLO is not in the 20 September macro report's Economic Watchlist, so its GICS sector is mapped to the Driver-Sector Impact Matrix. Information Technology → Technology (XLK) is marked Neutral on all three horizons [20]. Pressure is therefore Neutral, the stance is Neutral, and conviction is 50 — macro is not a material factor for this name on the framework's own reading.

The tension, declared rather than buried. That Neutral label sits on sector scores that are still mildly NEGATIVE (−0.224 short, −0.241 medium, −0.107 long), and the two asset classes closest to dLocal's actual economics are both marked against it: EM Equities Underweight on all three horizons and the USD Overweight on all three [20] — a strengthening dollar against a company that collects in local currency and reports in dollars. The framework's rule is the sector map, and the sector map says Neutral, so Neutral is what is scored. The cross-read is recorded so a reader can see what the rule is abstracting away.

What changed and what it did not. The prior report read Contrarian / Headwind / 58 off the 9 September macro, where Technology was Underweight on all three horizons. This is a softening, and it is worth being explicit that it moves no signal: Neutral pressure enables no amplification in either direction, which on a HOLD base is exactly the same practical outcome as a Headwind. The amplification stage did nothing this run, and it would have done nothing under the old reading either.

The armed systemic tail is NOT inherited. The macro report carries the S&P 500 concentration / AI earnings-quality unwind as armed [20]. DLO is outside that cohort — not a top-weight index constituent at US$3.97bn, non-operating income only 5.32% of net income and all of it interest and FX rather than equity markups, and 12.59× forward is not a multiple levered to the AI capex trade. Restated this run rather than silently dropped.

Source: sector-map · Macro report 2026-09-20

7

Pillar Detail: Entry/Exit Timing

The risk-reward framework, relative strength vs SPY and the sector ETF, the macro overlay, news-derived sentiment, and the catalyst cluster.
Entry/Exit Timing — Pillar Score
Neutral — a bearish confluence, a 16-session negative MACD run and relative strength reversed on both benchmarks
49
conf 67%

The tape has turned, and it is the reason this report withdraws two BUYs. Timing is the pillar that moved most: down thirteen to 49, which is Neutral (40-54) rather than Improving. Every leg is shown, because at 55 the Decision Matrix would return BUY instead of HOLD.

LegWeightScoreWhat it reads
Multi-timeframe trend30%40.3Confluence BEARISH against bullish on 11 September [14]. Build below.
Risk / reward20%43.2Build below.
Macro overlay15%51Fed direction unfavourable (hiking, 25 of 100) · VIX 14.81 favourable (80) · curve normal and steepening, 2-year 4.67% against a 5.26% ten-year, favourable (70) · sector and EM regime mixed (45). NOTE the two legs of that curve reading are not same-day: the 2-year is the macro state's 18 September figure and the ten-year is FRED's 29 September observation, so the 59bp spread is struck SEVEN sessions apart (21, 22, 23, 24, 25, 28 and 29 September) and is indicative rather than a measured spread. Weighted 30/20/20/30 toward the Fed and EM legs, which are the two that actually reach this name: 7.50 + 16.00 + 14.00 + 13.50 = 51.00 [20].
Sentiment18%61Grade actions 50 — nothing at all inside thirty days, so “maintained” [15]. Estimate revisions 70 — FY2027 up in every vintage, three upward revisions against one down [16]. News tone 62 — constructive and thin, one new operational item (the Oscilar AML partnership, 15 Sep), no negative company headline in 45 days [26]. Average 60.67, rounding to 61. Options skew unavailable and therefore omitted rather than guessed.
Catalysts17%55No company-specific catalyst inside thirty days — earnings are 11 Nov, 42 days out [27]. Two macro events in the window: September CPI on 14 Oct and the FOMC on 27-28 Oct [22]. A focused, uncrowded calendar for a name whose multiple is rate-sensitive.

multi-timeframe trend 40.3 (30%) · risk / reward 43.2 (20%) · macro overlay 51.0 (15%) · sentiment 61.0 (18%) · catalysts 55.0 (17%) = 12.10 + 8.64 + 7.65 + 10.98 + 9.35 = 48.73, rounding to 49. Rounding note, as on the free-cash-flow row: the five addends are each shown to two places and sum as displayed to 48.72, while the total is computed unrounded at 48.726. The 0.01 gap is display rounding, not a different number, and both round to 49.

Multi-timeframe build, and its sensitivity

Monthly 30 (30%) · Weekly 66 (25%) · Daily 36 (25%) · Hourly 10 (12%) · 15-minute 58 (8%) = 40.34. Monthly is scored 30 — the top of the downtrend band, not the bottom, because price sits 9.6% above the monthly SMA20 and only 0.4% below the monthly SMA50, and the monthly MACD histogram is positive and rising. Weekly is 66 — the low end of uptrend, because price is above the 50-week average but has slipped below the 20-week and the weekly histogram has just turned negative. Daily I score 36, on the payload's flagged support breakdown [14] — the 36 is this report's weighting of that read, not a figure the tool returns.

Sensitivity. Two of the five TIMEFRAMES in the multi-timeframe table above carry volume ratios of 0.03 and 0.00 because they are after-hours bars, so they are weakly evidenced. Dropping them entirely and using the framework's own no-intraday fallback of 35/30/35 gives 30×0.35 + 66×0.30 + 36×0.35 = 42.90, and Timing 49.49 — the same 49. Note also that relative strength lives inside the risk/reward leg and is deliberately not counted again here.

Risk / reward build, and its sensitivity

the six indicator sub-signals 38.3 (40%) · position risk (stop distance in ATR) 78.0 (30%) · relative strength vs SPY and XLK 15.0 (30%) = 43.22.

Sub-signalReadingScore
RSI(14)38.20 on Wilder smoothing — in the 30-40 neutral band, not oversold. The Cutler variant reads 21.29 and the two must not be conflated [13].45
MACD-0.2624 against a signal of -0.1641, histogram -0.0983 and negative for 16 consecutive sessions since 9 September — counted from the series, not eyeballed. Flattening over the last five bars, which is the only constructive thing in this row.30
Price vs the moving averages$13.76 is -5.94% below the 50-day at 14.6294 and 1.78% above the 200-day at 13.5190 — between the two, which is Neutral by definition. And the 50-day has been FALLING since it peaked at 14.7984 on 11 September, −0.95% over the last ten sessions [13].45
Bollinger(20,2)Close $13.76 against a lower band of 13.3200, a midline of 14.5142 and an upper of 15.7085 — below the midline, above the lower, and falling.30
VolumeThe 30 September session traded 1,415,414 shares, 0.83× the 20-session mean of 1,700,026 (or 0.62× the quote's three-month average of 2,284,871 — the window is named because the two differ by a third). The heaviest down day of the decline was 22 Sep, on 2,871,000 shares and 1.59× its own trailing 20-session mean; 28 Sep is next at 1.53×. An earlier draft named 28 Sep as the heaviest at 1.54× — wrong on both the day and the ratio. Distribution, not capitulation, and the sub-signal is 40 on any of them.40
ATR / volatilityATR(14) 0.3459 on a SIMPLE 14-period mean of true range (Wilder's smoothing gives 0.4117, which is what the data tool returns; the stop is 13.21 on that variant rather than 13.30, and neither is live at the stamp price), 2.51% of price, expanding slightly against a long position.40

Average of the six: 38.3. Position risk 78 — the logical stop below the $13.58 swing low sits at $13.30, which is 3.34% away and 1.33× ATR, inside the 1.5-ATR favourable line. No proximity bonus: the nearest weekly support is 12.60 and the monthly 10.64, so price is not within 3% of a higher-timeframe level. No resistance penalty either — the nearest is 15.30, 11% above. Relative strength 15 — the bottom band, and a complete reversal: DLO is −7.22% on one month and −6.20% on three [13] against SPY −0.33% and +2.52% and XLK +5.08% and +5.58% [12], so it underperforms both benchmarks on both windows. The prior report recorded +15.9 and +17.0 [24].

Sensitivity on my own weighting. The 40/30/30 split across indicators, position risk and relative strength is a choice, so here is what the alternatives give: 40/40/20 → 49.5 and Timing 50; equal thirds → 43.8 and Timing 49. Combined with the MTF variant above, Timing is 49-50 on every reading and never reaches the 55 Improving line. Downward, even at MTF 30 and risk/reward 30 it is 43 — still Neutral rather than Weak. And the base signal is stable across both: the newly-decided Neutral row and the pre-existing Weak row both return HOLD, so the verdict does not turn on which side of 40 Timing lands.

Position-risk and the stop, stated mechanically

Hard stop $13.30, which is 3.34% below $13.76 and 1.33× ATR. It sits just under the $13.58 daily swing low and essentially on the 13.3200 lower Bollinger band. The trigger is two consecutive closes below $13.58, which is the mechanical rule in §12 — the level and the trigger are deliberately different things. Be clear about the cost: a stop this tight in an active downtrend will be hit on noise more often than on thesis. That is the trade-off of entering near support rather than after a bounce, and it is one of the reasons the conviction ladder reads Half-Size rather than anything larger.

8

Economic Event Risk

High-impact macro releases in the window below that could swing this stock, plus the last 7 days of surprises.

Upcoming events

DateEventImpactForecastPreviousRelevant?Why
14 Oct 2026US CPI (September), 08:30 ETHigh—core +0.3% m/m in Aug⚠ MediumNot a direct driver, but it moves the ten-year, and the ten-year is inside the warranted multiple. This is also the report's own next-update date.
27-28 Oct 2026FOMC rate decision, 14:00 ET on the 28thHigh—Hiked 25bp to 3.75-4.00% [20] at the 15-16 Sep meeting [22]⚠ Medium16 of 18 participants expect at least one more hike [20]. A further hike lowers the warranted multiple directly; a pause lifts it.
11 Nov 2026dLocal Q3 2026 results, 15:00 ETHighEPS US$0.22 / rev ~US$407.8mQ2: EPS US$0.18, rev US$399.7m✓ YesThe only company-specific dated event, 42 days out. The number that matters is the net take rate, not the volume.

Recent surprises (last 7 days)

DateEventActualForecastSurpriseImpact
30 Sep 2026Core PCE price index (Aug), y/y3.0%3.3%−9.1% BELOWHigh
30 Sep 2026Core PCE price index (Aug), m/m0.2%0.3%−33% BELOWHigh
30 Sep 2026GDP growth rate (Q2, q/q)2.2%1.5%+46.7% ABOVEHigh
30 Sep 2026Personal spending (Aug, m/m)+0.9%+0.8%+12.5% ABOVEHigh
30 Sep 2026ADP employment change (Sep)+90k+70k+28.6% ABOVEHigh
30 Sep 2026Chicago PMI (Sep)58.851.2+14.8% ABOVEMedium
29 Sep 2026CB consumer confidence (Sep)81.989.2−8.2% BELOWMedium
29 Sep 2026JOLTs job openings (Aug)7.079m7.230m−2.1% BELOWHigh

The stamp session itself was informative and genuinely two-sided. Core PCE came in BELOW forecast on both the annual and monthly readings — the first soft inflation print in this sequence — while GDP, personal spending, ADP payrolls and the Chicago PMI all came in ABOVE. Set against consumer confidence falling to 81.9 from an 89.2 forecast and job openings coming in light the day before, and Atlanta Fed GDPNow for Q3 cut to 3.7% from 5.0% [22].

Per the standing rule, one print does not flip a regime. The 20 September macro report's framing — the Fed tightening into an energy shock, with 16 of 18 participants expecting at least one more hike — is the basis this report uses, and a single soft core-PCE reading moves probabilities on that path without deciding it. Note the direction of the bias it creates here: the anchor's risk-free rate is FRED's 29 September observation of 5.26%, which pre-dates the print, so if anything the 18.8002× warranted multiple is too LOW and the valuation too conservative [19].

Sector sensitivity. Fintech is a MEDIUM macro-sensitivity sector, so the macro leg carries 15% of the Timing pillar and neither CPI nor the FOMC counts as a next-update scheduling trigger. Neither is inside 7 days of the stamp, so no timing-confidence penalty applies on that ground.

9

Multi-Timeframe Technical Analysis

Trend, RSI and breakout status across monthly / weekly / daily / hourly / 15-minute, with a confluence verdict.
TimeframeTrendDirectionRSIMACDKey S/RBreakoutVol
MonthlyDowntrend ↓Bearish43.8−0.104, hist +0.474 risingS: 10.64   R: 16.78None0.9×
WeeklyUptrend ↑Neutral48.8+0.363, hist −0.069 turningS: 12.60   R: 15.55None0.5×
DailyWeakening →Bearish38.2-0.262, hist -0.098 — negative 16 sessionsS: 13.58   R: 15.30Support breakdown0.8×
HourlyStrong downtrend ↓Bearish51.7−0.022, hist +0.018S: 13.59   R: 14.18None (after-hours)0.03×
15-minuteRecovering →Neutral53.3+0.028, hist +0.006S: 13.59   R: 13.89None (after-hours)0.00×
Confluence: Bearish · MTF Score 40.3

Read it as one picture. The long trend is still a multi-year downtrend — the stock is down about 75% over five years [26] — and price sits marginally below its monthly 50-period average while holding well above the monthly 20. The weekly structure is the constructive part: price is above the 50-week average, which is why the weekly row is scored an uptrend at all. The daily chart is where the damage is: a flagged support breakdown, 5.94% below the 50-day, and a MACD histogram negative for 16 consecutive sessions. The intraday rows are near-worthless on volume ratios of 0.03 and 0.00 and are shown rather than hidden.

The textbook pattern here is the unhelpful one. A higher-timeframe uptrend with a lower-timeframe pullback is the high-probability buy setup — but the pullback has to hold a level, and this one has broken the nearest daily support rather than bouncing off it, with lows of 13.730 on 24 September and 13.590 on 29 September. Price is at 50.8% of its 52-week range, so there is no oversold cushion either: RSI is 38.20, not below 30, so the mean-reversion bonus the framework allows does not apply [13].

One correction to an earlier draft, and it is the only constructive fact on the chart. That draft described “lower lows on 24, 29 and 30 September”. The raw lows are 13.730, 13.590 and 13.655 — the stamp session made a HIGHER low, on a higher close. The sequence into 29 September was indeed lower lows; the 30th broke it. That does not open the Technical group (the bounce would have to be off weekly 12.60 or monthly 10.64 support), but it is why §12 rates the pullback branch assessable within two to three weeks rather than dead.

Two levels to watch, both mechanical. Above: a close over 14.6294 on more than 1.5× the twenty-session volume re-opens the Technical entry group and, with it, the path back to a short-term BUY. The last time that happened was 21 August at $15.17 on 1.74×, and it has not happened since [13]. Below: two consecutive closes under $13.58 is the stop trigger in §12.

10

Price Chart (6-Month Daily)

A 6-month daily close line with SMA50 and key support/resistance — the visual companion to the MTF table.

Six months of daily closes to 30 September 2026 (126 sessions from 2026-04-01) with the 50-day average overlaid, both on RAW unadjusted prices. The July breakout to 15.78 on 3 September has fully retraced; price is now 5.94% below the 50-day and 1.78% above the 200-day, with the 13.58 swing low immediately underneath.

11

Scenario Summary

Bull / Base / Bear 12-month price paths with triggers and probability weights.

Bull — $22.00 (12m, 25%)

20.1× the FY2027 consensus EPS of US$1.09259 — a full re-rating past the 18.8002 warranted multiple, which needs the market to pay for growth the price currently does not embed. What has to happen: the take rate actually finds the floor management describes, so gross profit growth re-couples with the 60-70% volume guidance; operating leverage arrives in the second half as guided, lifting the operating-profit-to-gross-profit ratio back toward 56%; the value-added services move from under 2% of the business toward material [10]; and the ten-year falls back toward 4.5%, which on its own lifts the warranted multiple. +59.9% from $13.76. Trimmed from the prior report's US$23.00 on the higher discount rate.

Base — $17.50 (12m, 50%)

16.0× FY2027 consensus — a partial re-rating toward the 18.8002 warranted level but not all the way, because the de-rating force is live rather than hypothetical: the ten-year is at 5.26% and the Fed is still tightening [20] [19]. Volume growth lands inside the raised 60-70% guidance, gross profit inside 25-30%, and the take rate flattens without recovering. +27.2%. This sits below the $20.54 the anchor implies, deliberately — a full re-rating inside twelve months is not the modal case — and below the conservative analyst consensus of $18.50. Trimmed from the prior report's US$18.50.

Bear — $10.75 (12m, 25%)

About 9.8× FY2027 consensus, or equivalently ~13× a stalled FY2027 of about US$0.83. Derived from the fundamentals; the 52-week intraday low of $10.64 sits just below it and corroborates the level rather than setting it. What breaks: the competitive trigger — the largest merchant insources a major corridor or renegotiates, which is the mechanism behind the tier migration already visible, and roughly a quarter of the headline growth goes with it [10]; the take rate keeps falling past the floor management describes, so gross profit growth decelerates below 25%; Adjusted Free Cash Flow stays below its prior-year level (it is already -5.6% on the half) while distributions run at 1.72× cover, forcing the buyback to slow or the $150m facility to be drawn; and oil STAYING above US$100, which it already is — Brent front month is US$103.53 on the stamp date against US$103.87 a fortnight earlier, essentially unchanged [21]. An earlier draft of this report wrote this condition as oil coming BACK above US$100 and read it as not-met at US$98.17, which is the December contract rather than the front month; on the basis the report uses the condition is ALREADY SATISFIED, so this leg of the bear case is live today rather than contingent on a future move. Sustained triple-digit crude compresses the EM consumer [20]. −21.9%.

Not inherited: the macro report's armed AI-concentration tail is NOT carried into this bear case. DLO is not in that cohort — it is not a top-weight index constituent, its earnings carry no AI-related non-operating gains, and 12.59× forward is not a multiple levered to the AI capex trade. Restated rather than silently dropped [20].

Probability-weighted twelve-month value $16.94 = 0.25 × $22.00 + 0.50 × $17.50 + 0.25 × $10.75, which is 23.1% above $13.76. Weights sum to 100 with the base case the most probable. A 25/50/25 split is a deliberate choice rather than a default: the bear case has a specific, named, already-visible mechanism behind it, which is why it is weighted equally with a bull case that needs four separate things to go right.

12

Entry / Exit Rules

Three independent entry paths (Fundamental · Technical · Catalyst) and three exit triggers (Stop-Loss · Thesis · Profit-Target). Any one entry path is a valid entry — the more that agree, the larger the position the conviction ladder suggests. Exits are graded by severity, not count.

How to read this — the Conviction Ladder

The three entry groups are alternative paths to a buy, not a checklist. A group counts only when all its sub-conditions hold. How many groups are satisfied sets the suggested size — it does not gate whether you may enter: 1 group = Half-Size (a valid starter/scale-in), 2 = Full-Size, 3 = Over-Size (highest conviction); 0 = Wait (no path open yet). A strong overall signal can still read Wait here when the stock is well above its entry zones — that flags "good business, no entry edge right now," not a contradiction. Exits are graded by severity of what is live, not by a count: a hard stop is an Exit on its own.
Entry conviction: Half-Size1 of 3 groups met — one path open — starter / scale-in

Fundamental — it's cheap / supported — MET

MET. The only path open, and it is the reason the ladder reads Half-Size rather than Wait.
✅ Price $13.76 below the anchor fair value of $20.54 (18.8002 warranted × the FY2027 consensus EPS)
✅ No earnings inside 7 calendar days — Q3 2026 is 11 Nov, 42 days out
✅ Underlying-Driver score at or above 50 — it is 56, Neutral

Technical — the trend turned OR it is at support — not MET

UNMET, and it is the same group that was unmet on 11 September. Nothing has re-opened.
⛔ A close above the 50-day at 14.6294 on more than 1.5× the 20-session volume — the last one was 21 Aug at $15.17 on 1.74×, and the last close above the 50-day at all was 14 Sep at $14.84, twelve sessions ago
⛔ OR a tested bounce off weekly/monthly support with a HIGHER low — the lows ran 13.730 on 24 Sep to 13.590 on 29 Sep, and the stamp session made a HIGHER low at 13.655 on a higher close. So the lower-low sequence broke on the stamp session itself. The group is still unmet, but on the other limb: the bounce has to be off weekly (12.60) or monthly (10.64) support, and 13.59 is neither
✅ RSI between 35 and 65 — 38.20 on Wilder, so this one condition IS satisfied
⛔ MACD histogram positive for 2+ consecutive days, or turning up off support — it is negative on 16 consecutive sessions, flattening but not turning

Catalyst — an event confirms it — not MET

UNMET, and not assessable: there is no event inside the window to confirm anything.
⛔ A post-earnings move above +5% within 24h — the last print (13 Aug) beat on revenue and MISSED on EPS by 3.77%
✅ Guidance raised or maintained — TPV raised to 60-70% and gross profit to 25-30%, operating profit maintained. This condition IS satisfied
⛔ Volume above 2× the 20-day average — the stamp session is 0.83×

Forecast:

ENTRY — Technical group, the volume-backed close above the 50-day at 14.6294
→ FORECAST: Unlikely inside 4-6 weeks without a catalyst.
→ BASIS: price is 5.94% below the 50-day. Correcting an earlier draft: the 50-day is NOT still rising. It peaked at 14.7984 on 11 September, thirteen sessions before the stamp, and has fallen every session since — −0.952% over the last ten, or about −0.014 a session. The +1.08% over twenty sessions that earlier draft quoted, now superseded, straddles the turn and reads the trend backwards. So the two are converging from the average's side: at a flat price the 50-day reaches $13.76 in roughly 62 sessions unaided, which is about twelve weeks — an earlier draft of this forecast glossed 62 sessions as “six-odd weeks”, which is wrong by a factor of two (six weeks is the ~30 sessions the MACD projection below needs). The forecast is unchanged and in fact further outside the four-to-six-week window than that gloss suggested, and a volume condition cannot be time-projected at all — but the reason is the opposite of the one given. The MACD histogram is negative on 16 sessions; at its current flattening rate of about +0.003 a session it would cross zero in roughly 30 sessions unaided. The volume condition cannot be time-projected at all — it is event-driven.
→ CONFIDENCE: Low. Requires a reversal, not a continuation.
→ WHAT WOULD CHANGE IT: the 14 October CPI print or the 28 October FOMC decision resolving dovishly — both are volume events for a rate-sensitive multiple — or the 11 November earnings beating on gross profit rather than only on volume.

ENTRY — Technical group, the pullback branch (a higher low off support)
→ FORECAST: Assessable within 2-3 weeks, and the level is already in play.
→ BASIS: this is the reachable branch. Price is 1.33% above the $13.58 daily swing low. A hold of that shelf followed by a higher low would satisfy it; a second consecutive close below it is the stop trigger instead. The 200-day at 13.5190 sits just underneath and is rising, which is the one genuine support confluence on the chart.
→ CONFIDENCE: Moderate — binary and near, which is precisely why the entry is half-size and scaled rather than full.

ENTRY — Catalyst group
→ FORECAST: Not assessable before 11 November 2026.
→ BASIS: catalyst-dependent by definition, and the next company event is 42 days out [27]. Consensus is US$0.22 on about US$407.8m of revenue. Execution record is the honest input here and it has deteriorated: beats of 23.19% and 21.77% in Q3 and Q4 2025 gave way to MISSES of 1.01% and 3.77% in Q1 and Q2 2026. Two consecutive misses is not a base rate that supports a confident forecast.
→ CONFIDENCE: Low on the +5% move condition specifically.

EXIT — Stop-Loss: two consecutive closes below $13.58
→ FORECAST: A live risk inside 1-2 weeks, not a distant one.
→ BASIS: 1.31% below the close, 0.52 ATR, after a sequence of lower lows into 29 September. The 200-day at 13.5190 sits immediately below and is the last support before the 13.3200 band.
→ CONFIDENCE: Moderate. State the trade-off plainly: this stop is close enough to be taken out by noise, which is the cost of the level being where the entry is.

EXIT — Thesis invalidation (2-of-4)
→ FORECAST: Unlikely before the 11 November print; assessable on that date.
→ BASIS: none of the four is live. Guidance was RAISED, not cut. Revenue growth of 55.8% is higher than every name in the twelve-name peer screen bar one, and that one (Global Payments, +68.6%) is acquisition-distorted [23]. The driver is Neutral at 56, not a headwind. No hard gate is triggered. The competitive condition — the named-rival/insourcing clause — is the one with a real mechanism behind it, and its observable is the Q3 net take rate.
→ CONFIDENCE: High that it stays clear for the next six weeks.

EXIT — Profit target $18.50 with RSI above 70
→ FORECAST: Unlikely inside 12 weeks.
→ BASIS: 34.4% above the close, and RSI is 38.20 in a downtrend. Both conditions would have to flip.
→ CONFIDENCE: High that it does not trigger.

Exit action: Holdno exit trigger is live — hold the position

Stop-Loss — not LIVE

⛔ Two consecutive closes below the $13.58 daily swing low — the last three closes are US$13.82, US$13.69 and $13.76, none of them below it
⛔ Hard stop level $13.30 (1.33× ATR below the close)

Thesis Invalidation — not LIVE

⛔ Full-year guidance cut — it was RAISED: TPV to 60-70%, gross profit to 25-30%
⛔ Revenue growth decelerating below the sector median — it is 55.8% year on year
⛔ The primary driver turning to a headwind — it is Neutral at 56, which is a fall from a Tailwind but not a headwind
⛔ COMPETITIVE: the largest merchant insources or renegotiates a major corridor, or the net take rate falls below 0.60% — the propagation of the §3 competitive read into the exit logic
⛔ CATASTROPHIC, fires alone: any hard gate triggering — none is

Profit-Target — not LIVE

⛔ Price reaching the $18.50 consensus target — it is 34.4% away
⛔ RSI above 70 — it is 38.20
· Quality not having improved to justify a higher multiple — Quality FELL to 60 this run
Imagine you act at the current price of US$13.76 · as of 30 September 2026

What if you bought now?

You are risking 3.3% to the hard stop, and a 21.9% drawdown in the bear case, to gain 27.2% in the base case and 59.9% in the bull.

What you are risking. The hard stop at $13.30 is 3.34% below here — 1.33× ATR, close enough to be taken out by noise rather than by thesis. The bear path to $10.75 is 21.9% and carries a 25% weight. Two of the three entry paths are shut: you would be buying into a bearish multi-timeframe confluence, 5.94% below a 50-day that is itself falling, with the MACD histogram negative on 16 consecutive sessions and a flagged support breakdown underneath. Path risk over the next six weeks is a CPI print on 14 October and an FOMC decision on 28 October, both of which move a rate-sensitive multiple directly, and then earnings on 11 November after two consecutive EPS misses.

What you are gaining. You start capturing the base case's 27.2% immediately, and you own the gap to the anchor's $20.54 fair value — the price embeds only 2.3% of near-term growth against a consensus of 28.2%. While you wait you collect a 5.1% free-cash yield on the company's own adjusted measure and a 1.4% dividend on a 28.5% payout, and you own the value-added-services option for nothing plus about US$214m of unspent buyback authorisation — roughly 5% of the shares — at 12.59× forward.

Two risk-reward readings, and the flattering one is the less honest one. Measured against the STOP, the ratio is 8.13 to 1 against the base case and 17.91 to 1 against the bull — and those numbers are large only because the stop is 1.33× ATR away. A stop that tight in an active downtrend is likely to be hit and re-entered, so the arithmetic overstates what a holder would actually experience. Measured against the BEAR CASE, which is the loss you are genuinely exposed to if you hold through, it is +27.2% against −21.9% — about 1.24 to 1. Both are stated because quoting only the first would be the flattering choice.

The read. The reward geometry is genuinely good and the timing is genuinely bad, which is what a HOLD on an Attractive valuation means. Waiting for the technical group to re-open — a volume-backed close above 14.6294, or a higher low off $13.58 — costs you some upside and removes the single largest identified risk, which is buying into a breakdown 5.9% under a 50-day that has itself been falling since 11 September. Not a buy verdict; an assessment of what acting now buys and what it costs.

What if you sold now?

You would be giving up 27.2% of base-case upside and a 5.1% cash yield, to protect against a 21.9% bear path that has a named, already-visible mechanism.

What you would be giving up. 27.2% to the base case, 59.9% to the bull, and the whole 34.4% gap to a conservative analyst consensus that sits above every one of its own published targets' low end. You would be selling at 12.59× forward against a warranted 18.8002 — that is, selling roughly 33% below the anchor's fair value — and at the 10th percentile of the stock's own five-year multiple range. You would also give up the dividend and the buyback accretion.

What you would be protecting. Honestly: no exit rule is triggered right now. The stop is not hit, guidance was raised rather than cut, no hard gate has fired and the profit target is 34.4% away. What you would protect is the 21.9% bear path — and that path is not abstract: the take rate has fallen 33% year on year, the company's own Adjusted Free Cash Flow is -5.6% on the half while distributions run at 1.72× cover, and roughly a quarter of the headline volume growth comes from a single merchant that could insource.

The read. None of this report’s own entry or exit rules is triggered at the stamp price — the Technical and Catalyst entry groups are both unmet, the stop at $13.30 is not live, and the profit target is 34.4% away — so there is no mechanical reason to act. That is a statement about the rules above, not an absence claim about any source. This is a hold — and because a Donatien Pick with no BUY on any horizon auto-Stops, the name moves to Stopped on the watchlist: visible, with the operator's pick flag intact, and reactivating automatically on any future BUY. Stopped is a lifecycle state, not a sell instruction.

13

Position Sizing Context

Illustrative portfolio math (not advice) translating conviction into an allocation given risk-per-share and volatility.

Position sizing is not computed. No allocation percentage or portfolio role was specified for this name, and the framework's rule is to omit sizing rather than invent a default. What can be said without one:

14

Calibration Snapshot

Machine-readable snapshot of every score, level and signal, saved alongside the HTML so the next run can compute deltas.
{
  "ticker": "DLO",
  "brand": "dLocal",
  "company": "DLocal Limited",
  "currency": "USD",
  "exchange": "NASDAQ",
  "api_ticker": "DLO",
  "donatien_pick": true,
  "donatien_pick_evidence": "this name's own calibration history carried analysis_status 'donatien-pick'",
  "gics_sector": "Information Technology",
  "date": "2026-09-30",
  "price_asof": "2026-09-30",
  "version": "v6",
  "exchange_ticker": "NASDAQ:DLO",
  "isin": "KYG290181018",
  "analysis_status": "stopped",
  "lifecycle_stage": "high_growth",
  "sector": "Information Technology \u2014 cross-border payments infrastructure for emerging markets",
  "price_at_rating": 13.76,
  "signal_short": "HOLD",
  "signal_medium": "HOLD",
  "signal_long": "HOLD",
  "primary_signal": "HOLD",
  "base_signal_short": "HOLD",
  "base_signal_medium": "HOLD",
  "base_signal_long": "HOLD",
  "short_hold_reason": "full_hold",
  "short_entry_confirmed": false,
  "quality_score": 60,
  "valuation_score": 78,
  "timing_score": 49,
  "driver_score": 56,
  "quality_confidence": 68,
  "valuation_confidence": 68,
  "timing_confidence": 67,
  "overall_confidence": 67,
  "composite_short": 58,
  "composite_medium": 63,
  "composite_long": 64,
  "economic_alignment_stance": "Neutral",
  "economic_alignment_conviction": 50,
  "economic_alignment_pressure": "Neutral",
  "economic_alignment_source": "sector-map",
  "macro_report_date": "2026-09-20",
  "val_band": "attractive",
  "warranted_multiple": 18.8002,
  "actual_multiple": 12.5939,
  "warranted_ratio": 0.67,
  "val_multiple_basis": "clean FORWARD P/E \u2014 price divided by the FY2027 consensus diluted EPS of US$1.09259 (FMP get_analyst_estimates, n=4). BOTH SIDES FORWARD: the warranted multiple is the forward form (21.6202 trailing divided by 1+g_near), never the trailing one. A LIVE PANEL DISAGREEMENT is declared rather than resolved silently \u2014 yfinance reads US$1.14373 on FOUR EPS estimates, the same depth as FMP (an earlier draft of this field said n=10, which is the RECOMMENDATION count, a different field), which would give 12.0308 and a ratio of 0.6399. Both are Attractive; the FMP panel is the conservative one and is what is scored. The prior report used the yfinance basis.",
  "eps_forward": 1.09259,
  "eps_trailing": 0.68,
  "trailing_pe": 20.2353,
  "discount_rate_r": 10.76,
  "risk_free_10y": 5.26,
  "g_near": 15.0,
  "g_term": 3.0,
  "nonop_pct_of_net_income": 5.32,
  "clean_pe": 12.5939,
  "clean_peg": 0.4465,
  "net_debt_ebitda": -1.146,
  "current_ratio": 1.2472,
  "fair_value_est": 20.54,
  "target_price": 17.5,
  "stop_loss": 13.3,
  "scenario_base_target": 17.5,
  "scenario_bull_target": 22.0,
  "scenario_bear_target": 10.75,
  "scenario_probabilities": {
    "bull": 25,
    "base": 50,
    "bear": 25
  },
  "probability_weighted_target": 16.94,
  "entry_groups_met": 1,
  "entry_conviction": "Half-Size",
  "exit_groups_live": 0,
  "exit_action": "Hold",
  "hard_gate_state": "caution",
  "gates_triggered": [],
  "moat_score": 56,
  "competitive_share_trajectory": "gaining volume, conceding price \u2014 but the concession is now traceable to ONE merchant's tier migration rather than to broad discounting",
  "competitive_threat_level": "elevated",
  "industry_benchmark_name": "EM Payments: TPV growth + net-take-rate stability (gross profit / TPV basis)",
  "industry_benchmark_score": 60,
  "analyst_consensus_target": 18.5,
  "analyst_target_high": 20.0,
  "analyst_target_low": 17.0,
  "analyst_target_upside_pct": 34.45,
  "analyst_coverage_count": 13,
  "analyst_grades_consensus": "buy",
  "analyst_bullish_pct": 69.2,
  "recent_upgrades_30d": 0,
  "recent_downgrades_30d": 0,
  "relative_strength_vs_spy": -6.89,
  "relative_strength_vs_sector": -12.3,
  "next_update_date": "2026-10-14",
  "next_update_basis": "+14d standing ceiling (2026-09-30 + 14 = Wed 14 Oct 2026, a trading day). No company-specific dated event falls inside the window \u2014 Q3 2026 results are 11 Nov 2026, 42 days out. September CPI on 14 Oct and the FOMC on 27-28 Oct are recurring macro releases and are NOT scheduling triggers for a Medium macro-sensitivity sector, so the ceiling governs.",
  "prior_report": "calibration-DLO-20260911-1900.json",
  "prior_primary": "BUY",
  "corporate_cash_usd_m": 369.1,
  "corporate_net_cash_usd_m": 301.7,
  "adjusted_fcf_ttm_usd_m": 185.7,
  "systemic_tail_inherited": false,
  "industry_benchmark_value": "TPV US$17.7bn, +92% year on year; net take rate (gross profit / TPV) 1.07% → 0.72%, about 33% lower year on year and down from 0.84% sequentially. One leg exceptional, one deteriorating.",
  "gates_caution": [
    "Take-rate compression (Gate 6 adjacent, not triggered \u2014 an earlier draft said Gate 4, which is the dilution and accounting gate; the numeral crossed the run boundary unchanged from the 11 September calibration) \u2014 the net take rate is QUOTED in the release, not derived as an earlier draft of this report claimed (superseded): 0.72%, \u2018decreasing from 1.07% in the second quarter of 2025 and from 0.84% in the first quarter of 2026\u2019. NEW THIS RUN, and it cuts both ways: management attributes the fall to one very large ride-hailing merchant crossing into lower volume-pricing tiers, and says that ex-that merchant the take rate was roughly flat sequentially. The mechanism is mix, not broad discounting \u2014 but the same fact makes the concentration caution below worse, not better.",
    "Gate 7 \u2014 merchant concentration, and it is AUDITED. The FY2025 20-F puts the top 10 customers at 61% of revenue (62% in 2024, 60% in 2023) and records TWO customers each above 10% of total revenue in 2025, against one in 2024 and none in 2023. One merchant's migration into lower volume-pricing tiers moved the consolidated net take rate 0.12pp SEQUENTIALLY (0.84% to 0.72%, both quoted from the release, with the attribution to that merchant management's own on the Q2 call); the 0.35pp year-on-year fall is NOT attributable to that merchant alone, and an earlier draft of this report said it was. Ex-that merchant Q2 TPV growth falls from above 90% to the high 60s on management's own account (Goldman Sachs conference, 10 Sep 2026).",
    "Cash-conversion quality \u2014 the company's OWN Adjusted Free Cash Flow (operating cash flow less merchant working capital less capex) is US$185.7m over the trailing twelve months against an unadjusted US$388.4m, so the provider figure is 2.09x the company's own. And on a half-year basis it went BACKWARDS: US$83.2m against US$88.2m, -5.6%, while TPV rose 83% and revenue rose 55%.",
    "Distributions ran ahead of free cash flow in the first half \u2014 US$86.1m of buybacks plus US$57.2m of dividends is US$143.3m against US$83.2m of Adjusted FCF, 1.72x. Corporate cash fell US$82.7m in the quarter as a result. A US$150m senior unsecured facility at Term SOFR + 2.00% was entered on 12 Aug 2026, repayable in 11 equal quarterly instalments of US$13.6m plus interest \u2014 about US$54m a year \u2014 \u2018commencing six months following the BORROWING DATE\u2019. The release describes the agreement as \u2018providing for\u2019 the facility and keys repayment to a future borrowing date, so it is treated as committed-but-undrawn: not netted, and not linked to the distributions. And the cover ratio is not new \u2014 H1 2025 paid US$149.98m of dividends against US$88.2m of Adjusted FCF, 1.70x.",
    "Gate 5 (regulatory / binary event) \u2014 emerging-market regulatory and FX-expatriation risk, carried from the prior report and NOT retired. Not hypothetical: the Q4 2025 release records a US$13.1m hit in Q3 2025 from the structuring used to expatriate flows from Argentina after regulatory changes. Argentina is one of the two markets the Q2 release names as driving its record gross profit, so the exposure and the growth sit in the same place.",
    "Relative strength has reversed outright. On a total-return basis DLO is -7.22% over one month and -6.20% over three (Yahoo daily closes), against SPY -0.33%/+2.52% and XLK +5.08%/+5.58% on a total-return basis (dividends included; DLO paid none in either window, which is what makes the comparison like-for-like) \u2014 underperforming BOTH benchmarks on BOTH windows. The prior report recorded +15.9 and +17.0."
  ],
  "do_not_buy_triggers": [],
  "dnb_adjudication": {
    "trigger_1_leverage": "Trigger 1 \u2014 NOT MET. Net debt to EBITDA is -1.15x \u2014 negative, because corporate cash of US$369.1m exceeds US$67.4m of financial and lease liabilities. The arm needs above 4.0x. Computed on CORPORATE cash, not the total cash balance, because most of that balance is merchant float.",
    "trigger_2_valuation_extreme": "Trigger 2 \u2014 NOT MET on either arm. Relative arm: the trailing multiple sits at the 10.2nd percentile of its own five-year range, the BOTTOM decile region, not the top. Absolute arm (a): the ratio is 0.6699 against a 2.0 line, and the actual 12.59x is far below 1.5x the 32.43x guardrail. Arm (b) has no leg to stand on \u2014 the name is not in the Expensive band, so the armed AI-concentration tail cannot combine with it.",
    "trigger_3_negative_revisions": "Trigger 3 \u2014 NOT MET, and verified on the VINTAGE SERIES rather than inferred from two points. yfinance eps_trend for FY2027 reads 1.10424 at 90 days, 1.12830 at 60, 1.13080 at 30 and 1.14373 now \u2014 UP in every vintage, +3.58% over the quarter. FY2026 is 0.86084 / 0.85580 / 0.86000 / 0.85222, down 1.00% overall and non-monotonic, so there is no three-consecutive-month downward sequence on either year. eps_revisions records three upward and one downward revision to FY2027 over 30 days. The arm needs three consecutive months of downward revisions.",
    "trigger_4_insider_selling": "Trigger 4 \u2014 NOT MET, and RE-ADJUDICATED this round against the actual Form 4 record rather than a filing count. TWO STATEMENTS ARE WITHDRAWN. The 11 September report said dLocal is \u2018a foreign private issuer exempt from Section 16 reporting, so routine insider filings do not exist to check\u2019 \u2014 FALSE, and falsified by the 20-F this run declares as a source: \u2018directors and officers of FPIs will be subject to Section 16(a) reporting requirements beginning March 18, 2026\u2019. And an earlier draft of THIS report said EDGAR showed a single Form 4; it shows SEVEN plus a Form 3/A since May 2026. Read directly from the filings: Sebasti\u00e1n KANOVICH, a DIRECTOR and not an officer, converted Class B to Class A and sold in FOUR tranches: 1,000,000 shares at US$14.63 on 1 Jul, 25,700 at US$15.50 on 7 Jul, 4,700 at US$15.50 on 4 Aug and 72,753 at US$15.5369 on 5 Aug \u2014 1,103,153 in total, reconciling EXACTLY to his Class B holding falling from 12,629,474 to 11,526,321, a reduction of 8.73% of his own holding against the trigger\u2019s 25% arm. Every one of the four was executed under a Rule 10b5-1 trading plan adopted on 26 Nov 2025, which the trigger\u2019s own wording excludes, so that leg fails twice over. William Rodney PRUETT, also a director, BOUGHT 20,000 shares at US$11.85 on 29 May (code P, acquired) and holds 108,043 \u2014 omitting an open-market purchase would have flattered the bear case. Hyman K Bielsky\u2019s 27 May filing is a code-G transfer, not a market sale, and the two officers who filed only ACQUIRED, on RSU vesting at a price of zero. So the sellers are DIRECTORS rather than C-suite, the largest cut his holding about 8.7% rather than over 25%, every sale was inside a pre-adopted 10b5-1 plan, and one director was BUYING: four of the trigger\u2019s legs fail, not one. General Atlantic remains the material seller \u2014 9,842,559 Class A on 17 Aug 2026 at an average US$13.60, leaving 36,814,136 at 21.4% of Class A \u2014 and Kanovich\u2019s 1,103,153 is real supply on top of it. Source: the Forms 3, 4 and 144 themselves, read from the ownership XML on EDGAR this run - see the form4s entry in the Data Sources audit. (A citation MARKER cannot be used here: the section-14 embed renders calibration fields verbatim, so [[src:id]] would print as literal text rather than resolving.)",
    "trigger_5_structural_threat": "Trigger 5 \u2014 NOT MET, recorded as an Analyst Note rather than dismissed. Take-rate compression plus the ability of a large merchant to insource a corridor once it reaches scale is a real erosion vector and it is why the moat's pricing-power leg scores 35. It is not existential: the licence estate across 60+ countries is the barrier, gross profit still grew 29% in the quarter, and management guides the take rate to a floor rather than to further decline."
  },
  "gate_adjudication": {
    "gate_4_sbc": "TTM stock-based compensation US$25.77m is 1.90% of TTM revenue against a 25% trigger, and the share count is FALLING on the buyback rather than growing. Annual SBC was US$24.14m in FY2025 against US$23.78m in FY2024 \u2014 flat in absolute terms while revenue grew 55%."
  },
  "absence_searches": [
    {
      "claim": "the 11 September 2026 report does not adjust operating cash flow for merchant-float movements anywhere in its cash-conversion analysis",
      "artifact": "DLO_Signal_v6_20260911_1900.html",
      "search": "working.{0,3}capital|float.?adjusted|ex-float|float accretion|float growth",
      "expect": "none"
    },
    {
      "claim": "the 11 September 2026 report never mentions the US$150m senior unsecured credit facility",
      "artifact": "DLO_Signal_v6_20260911_1900.html",
      "search": "credit facility|senior unsecured|SOFR",
      "expect": "none"
    },
    {
      "claim": "the 11 September 2026 report never mentions the share-repurchase programme",
      "artifact": "DLO_Signal_v6_20260911_1900.html",
      "search": "buyback|repurchase",
      "expect": "none"
    }
  ],
  "superseded_values": [
    {
      "value": "US$406m",
      "withdrawn_at_round": 1
    },
    {
      "value": "roughly US$339m",
      "withdrawn_at_round": 1
    },
    {
      "value": "339.0",
      "withdrawn_at_round": 1
    },
    {
      "value": "18 Nov 2026",
      "withdrawn_at_round": 1
    },
    {
      "value": "filed 17 Aug 2026",
      "withdrawn_at_round": 1
    },
    {
      "value": "0.35 percentage points",
      "withdrawn_at_round": 1
    },
    {
      "value": "foreign private issuer exempt from Section 16 reporting",
      "withdrawn_at_round": 2
    },
    {
      "value": "routine insider filings do not exist to check",
      "withdrawn_at_round": 2
    },
    {
      "value": "a single Form 4",
      "withdrawn_at_round": 2
    },
    {
      "value": "0.13 percentage points",
      "withdrawn_at_round": 2
    },
    {
      "value": "roughly 7.5%",
      "withdrawn_at_round": 2
    },
    {
      "value": "7.5% near-term growth",
      "withdrawn_at_round": 2
    },
    {
      "value": "still RISING",
      "withdrawn_at_round": 2
    },
    {
      "value": "1.08% over twenty sessions",
      "withdrawn_at_round": 2
    },
    {
      "value": "lower lows on 24, 29 and 30 September",
      "withdrawn_at_round": 2
    },
    {
      "value": "no stale-count problem",
      "withdrawn_at_round": 2
    },
    {
      "value": "288,000,000",
      "withdrawn_at_round": 2
    },
    {
      "value": "~178m Class A",
      "withdrawn_at_round": 2
    },
    {
      "value": "founder-held",
      "withdrawn_at_round": 2
    },
    {
      "value": "top decile of the peer set",
      "withdrawn_at_round": 2
    },
    {
      "value": "1.54×",
      "withdrawn_at_round": 2
    },
    {
      "value": "US$40.7m",
      "withdrawn_at_round": 2
    },
    {
      "value": "only 8 of the 12",
      "withdrawn_at_round": 2
    },
    {
      "value": "4.96%",
      "withdrawn_at_round": 2
    },
    {
      "value": "2.76×",
      "withdrawn_at_round": 2
    },
    {
      "value": "10.4%",
      "withdrawn_at_round": 2
    },
    {
      "value": "derived from the release rather than quoted",
      "withdrawn_at_round": 2
    },
    {
      "value": "cheaper than every peer growing at a comparable rate",
      "withdrawn_at_round": 3
    },
    {
      "value": "US$12.48",
      "withdrawn_at_round": 5
    },
    {
      "value": "payables less all receivables",
      "withdrawn_at_round": 5
    },
    {
      "value": "189.1",
      "withdrawn_at_round": 5
    },
    {
      "value": "380.8",
      "withdrawn_at_round": 5
    },
    {
      "value": "hundreds of alternative local payment methods",
      "withdrawn_at_round": 5
    },
    {
      "value": "Brent settled",
      "withdrawn_at_round": 5
    },
    {
      "value": "the figure used because it reproduces",
      "withdrawn_at_round": 5
    },
    {
      "value": "attributes that quarter",
      "withdrawn_at_round": 5
    },
    {
      "value": "General Atlantic exited",
      "withdrawn_at_round": 6
    },
    {
      "value": "departing sponsor",
      "withdrawn_at_round": 6
    },
    {
      "value": "US$167.2m working-capital outflow",
      "withdrawn_at_round": 6
    },
    {
      "value": "167.2",
      "withdrawn_at_round": 6
    },
    {
      "value": "not cash at all",
      "withdrawn_at_round": 6
    },
    {
      "value": "twelve sessions apart",
      "withdrawn_at_round": 6
    },
    {
      "value": "Fair, on the boundary of Attractive",
      "withdrawn_at_round": 6
    },
    {
      "value": "measured as measured",
      "withdrawn_at_round": 6
    },
    {
      "value": "differ in LAYOUT only",
      "withdrawn_at_round": 6
    },
    {
      "value": "97.6-98.3",
      "withdrawn_at_round": 6
    },
    {
      "value": "210%",
      "withdrawn_at_round": 6
    },
    {
      "value": "because it is reproducible",
      "withdrawn_at_round": 6
    },
    {
      "value": "the settlement itself",
      "withdrawn_at_round": 6
    },
    {
      "value": "has ever sat on that cell",
      "withdrawn_at_round": 6
    },
    {
      "value": "about 5 mb/d",
      "withdrawn_at_round": 6
    },
    {
      "value": "2.9 mb/d",
      "withdrawn_at_round": 6
    },
    {
      "value": "700,000 bpd",
      "withdrawn_at_round": 6
    },
    {
      "value": "partially offset the quarter",
      "withdrawn_at_round": 6
    },
    {
      "value": "Gate 4 adjacent",
      "withdrawn_at_round": 6
    },
    {
      "value": "EX-99.3 / EX-99.4",
      "withdrawn_at_round": 6
    },
    {
      "value": "16.6% of Class A",
      "withdrawn_at_round": 7
    },
    {
      "value": "the largest outside holder",
      "withdrawn_at_round": 7
    },
    {
      "value": "Timing 49.48",
      "withdrawn_at_round": 7
    },
    {
      "value": "two to three times the S&P 500's daily range",
      "withdrawn_at_round": 7
    },
    {
      "value": "auto_adjust=False convention as the DLO bars",
      "withdrawn_at_round": 7
    },
    {
      "value": "the PRIMARY document of 6-K accession",
      "withdrawn_at_round": 7
    },
    {
      "value": "see the balance entry",
      "withdrawn_at_round": 7
    },
    {
      "value": "about 2.9 mb/d over six days",
      "withdrawn_at_round": 7
    },
    {
      "value": "roughly 700,000 bpd in August",
      "withdrawn_at_round": 7
    },
    {
      "value": "cited at all three sites",
      "withdrawn_at_round": 7
    },
    {
      "value": "US$98.17",
      "withdrawn_at_round": 8
    },
    {
      "value": "98.17 computed here from the BZ=F front month",
      "withdrawn_at_round": 8
    },
    {
      "value": "down 5.5% and 9.8%",
      "withdrawn_at_round": 8
    },
    {
      "value": "down roughly 5.5% and 9.8%",
      "withdrawn_at_round": 8
    },
    {
      "value": "oil back above US$100",
      "withdrawn_at_round": 8
    },
    {
      "value": "97.6-98.3",
      "withdrawn_at_round": 8
    },
    {
      "value": "the direction of that error was CONSERVATIVE",
      "withdrawn_at_round": 8
    },
    {
      "value": "both verbatim from the release",
      "withdrawn_at_round": 8
    },
    {
      "value": "an unrelated Form 144",
      "withdrawn_at_round": 8
    },
    {
      "value": "The verified sequence is now in the report",
      "withdrawn_at_round": 8
    },
    {
      "value": "measured measured",
      "withdrawn_at_round": 8
    },
    {
      "value": "of Class A holder",
      "withdrawn_at_round": 8
    },
    {
      "value": "2,284,871 is a three-month average",
      "withdrawn_at_round": 8
    },
    {
      "value": "MATERIALLY BELOW the macro state's 103.87/100.30",
      "withdrawn_at_round": 9
    },
    {
      "value": "the price has come off its spike",
      "withdrawn_at_round": 9
    },
    {
      "value": "on ten",
      "withdrawn_at_round": 9
    },
    {
      "value": "n=10",
      "withdrawn_at_round": 9
    },
    {
      "value": "(n=10)",
      "withdrawn_at_round": 9
    },
    {
      "value": "three separate times, identically. Risk factors",
      "withdrawn_at_round": 9
    },
    {
      "value": "IFRS segment note repeat the 61/62/60 series and",
      "withdrawn_at_round": 10
    },
    {
      "value": "the section-9 table",
      "withdrawn_at_round": 10
    },
    {
      "value": "separately the date of an unrelated",
      "withdrawn_at_round": 11
    },
    {
      "value": "carries neither 12.4977 nor 12.4978 anywhere",
      "withdrawn_at_round": 11
    },
    {
      "value": "Wrong by a factor of three, and the calibration",
      "withdrawn_at_round": 11
    },
    {
      "value": "materially below the macro state's 103.87",
      "withdrawn_at_round": 12
    },
    {
      "value": "EX-99.3/99.4",
      "withdrawn_at_round": 12
    },
    {
      "value": "the first round since round 4 to do so",
      "withdrawn_at_round": 12
    },
    {
      "value": "which has no capex line, so as cited",
      "withdrawn_at_round": 13
    },
    {
      "value": "under the definition the release itself gives",
      "withdrawn_at_round": 13
    },
    {
      "value": "What IS verbatim is 'more than 60 countries' and the 'One dLocal' framing",
      "withdrawn_at_round": 13
    },
    {
      "value": "slide13a sits in 99.4",
      "withdrawn_at_round": 13
    },
    {
      "value": "The .superseded_detail path is exempt from the sweep by design",
      "withdrawn_at_round": 13
    },
    {
      "value": "Round 13 is the first blocker-free pass",
      "withdrawn_at_round": 14
    },
    {
      "value": "the first blocker-free pass of the run",
      "withdrawn_at_round": 14
    },
    {
      "value": "correct; only the exhibit is",
      "withdrawn_at_round": 14
    },
    {
      "value": "1 NOT-SUPPORTED (General Atlantic 'exited')",
      "withdrawn_at_round": 14
    },
    {
      "value": "Rounds 10, 11 and 12 were Layer-2 audits",
      "withdrawn_at_round": 15
    }
  ],
  "superseded_exempt": {
    "Gate 4 adjacent": "Quoted inside the GENERATED delta_vs_prior narrative, in a clause that records the 11 September caution being REMOVED - 'removed Take-rate compression (Gate 4 adjacent, not triggered)'. The numeral is withdrawn in the live caution (it is Gate 6; Gate 4 is dilution and accounting) and in superseded_detail. delta_vs_prior is regenerated by close_audit_round.py against the PRIOR calibration every round, so the prior run's own wording necessarily reappears there and cannot be hand-edited out; quoting what was removed is the field doing its job.",
    "foreign private issuer exempt from Section 16 reporting": "Quoted inside the GENERATED delta_vs_prior narrative, where it records what the 11 September report's gate caution said and that it has come off. The claim is withdrawn in dnb_adjudication.trigger_4 and in superseded_detail with the 20-F text that falsifies it; the delta field cannot be hand-edited because close_audit_round regenerates it every round.",
    "routine insider filings do not exist to check": "As above - the second half of the same withdrawn sentence, quoted by the generated delta narrative to record its removal from the prior report's caution array.",
    "288,000,000": "Quoted inside post_audit_fixes_round4, where the round-4 finding IS the explanation of why this figure was wrong: the US$576 on the share-capital line is the SUM of the per-class roundings 344 + 232, so dividing it by the US$0.002 par returns 288,000,000 rather than the filed 288,416,831. The fix log cannot state that finding without naming the number, and it is withdrawn everywhere a reader meets it - section 15 frames it as superseded and the filed count is cited to q2-interim."
  },
  "superseded_detail": [
    {
      "what": "corporate cash and cash equivalents at 30 June 2026",
      "was": "roughly US$406m, estimated by applying a 46.4% corporate share to US$874.2m",
      "now": "US$369.1m, DISCLOSED in the Q2 2026 release",
      "why": "The 11 September report took the 46.4% ratio FROM the figures 369.1 of 794.9 \u2014 which are the actual disclosed answer \u2014 and then applied that ratio to 874.2, a larger aggregate that adds US$79.2m of financial assets at fair value through profit or loss and is not 'cash and cash equivalents' at all. The release states the answer in one sentence."
    },
    {
      "what": "corporate NET cash",
      "was": "roughly US$339m",
      "now": "US$301.7m",
      "why": "Falls out of the corrected corporate cash less the same US$67.4m of financial and lease liabilities, which reconciles exactly to the provider's total-debt figure."
    },
    {
      "what": "the date of the next earnings report",
      "was": "18 Nov 2026",
      "now": "11 Nov 2026",
      "why": "The prior run recorded 18 November from a secondary source while get_earnings_calendar was returning HTTP 401. Both the yfinance calendar and its earnings_dates table give 11 November 2026 at 15:00 ET, which is also what the 16 August report carried."
    },
    {
      "what": "the filing date of General Atlantic's Schedule 13D/A",
      "was": "filed 17 Aug 2026",
      "now": "transacted 17 Aug 2026, FILED 19 Aug 2026",
      "why": "17 August is the dateOfEvent on the filing \u2014 and also the date of General Atlantic DO B.V.'s OWN Form 144 (0000950142-26-002365) noticing the identical 9,842,559 Class A shares, so the same transaction rather than the 'unrelated Form 144' an earlier draft of this entry called it. The 13D/A itself, accession 0000950142-26-002390, was filed on 19 August. The US$13.60 average execution price is unchanged and confirmed from the filing text."
    },
    {
      "what": "the merchant's effect on the consolidated net take rate",
      "was": "0.35 percentage points, then 0.13 percentage points",
      "now": "0.12 percentage points sequentially, on the release's own quoted rates",
      "why": "0.35pp is the YEAR-ON-YEAR fall, assigned in whole to one customer, which neither cited source supports. The correction then published 0.13pp against its own stated arithmetic of 0.84% to 0.72%, because it recomputed Q1's rate from the line items instead of quoting the release, which states all three rates outright. One quantity had three values across the prose, the gate array and the frozen decision lock."
    },
    {
      "what": "the near-term growth the price implies",
      "was": "roughly 7.5%",
      "now": "2.29%",
      "why": "The withdrawn 7.5% does not solve, and is wrong by a factor of three. Bisecting this report's own two-stage forward model at r and g_term for an actual multiple of 12.5939 returns 2.29%, where the withdrawn 7.5% would instead warrant 14.890x. The calibration's machine field separately carried 28.2 \u2014 a duplicate of the consensus."
    },
    {
      "what": "the direction of the 50-day moving average",
      "was": "still RISING, 1.08% over twenty sessions",
      "now": "falling since it peaked at 14.7984 on 11 September, -0.95% over the last ten sessions",
      "why": "The twenty-session measurement straddles the peak, so it reads the trend backwards. The claim survived in four places while the Rule Forecast corrected it in a fifth."
    },
    {
      "what": "the recent low sequence",
      "was": "lower lows on 24, 29 and 30 September",
      "now": "lows of 13.730 on 24 September and 13.590 on 29 September, with the stamp session making a HIGHER low at 13.655",
      "why": "The 30th broke the sequence. It is the only constructive fact on the chart and the earlier wording inverted it."
    },
    {
      "what": "the total share count and the Class A count",
      "was": "288,000,000, and ~178m Class A",
      "now": "288,416,831 \u2014 Class A 172,183,455 plus Class B 116,233,376",
      "why": "288,000,000 came from dividing Share Capital of US$576 THOUSAND by the US$0.002 par; the exact count is printed on the same line of the share-capital note. It closes to the share: 294,931,956 at 1 January less 6,887,815 cancelled plus 372,690 issued. The ~178m was the provider's Class A field, which \u00a715 itself rejects."
    },
    {
      "what": "whether dLocal's insiders file with the SEC",
      "was": "a foreign private issuer exempt from Section 16 reporting, so routine insider filings do not exist to check \u2014 and, in this report's own first draft, a single Form 4",
      "now": "seven Form 4s and a Form 3/A since May 2026, read directly",
      "why": "The 20-F states that directors and officers of foreign private issuers became subject to Section 16(a) reporting on 18 March 2026. The claim was false when the prior report made it and it licensed a skipped check on a Do-Not-Buy trigger \u2014 the same manufactured-absence failure as round 1's blocker, carried forward by the generated delta narrative."
    },
    {
      "what": "the per-country gross-profit figures",
      "was": "withdrawn as not present in any primary source",
      "now": "restored and cited to the earnings deck: Brazil US$40m, Argentina US$20m",
      "why": "They are in EXHIBIT 99.4 of the same 6-K accession - the earnings presentation, slide 13 - both labelled records. An earlier draft of this slot wrote 'EX-99.3/99.4', which the round-7 correction to the source name had already withdrawn: the 6-K cover lists 99.3 as the Quarterly Report and 99.4 as the presentation, and slide 13 sits in 99.4. The withdrawal was itself a false absence \u2014 the failure mode the round it belonged to was meant to close."
    },
    {
      "what": "capex actually spent over the trailing year",
      "was": "roughly US$40.7m",
      "now": "US$40.49m",
      "why": "The quarterly cash-flow statements give 9.910 + 9.738 + 11.490 + 9.349. The figure also sat in the ratios source note, which AT THAT TIME carried no capex components, so as cited it could not be checked. Tensed at round 13: the ratios entry now carries 9.910 + 9.738 + 11.490 + 9.349 and the balance entry is the one with no capex line, which is how section 4 and section 15 both read."
    },
    {
      "what": "the enterprise-value-derived figures",
      "was": "a 4.96% adjusted yield, a 10.4% unadjusted yield and EV/revenue of 2.76x",
      "now": "5.07%, 10.6% and 2.70x",
      "why": "All three were struck on the pre-correction enterprise value of US$3,747m and were not re-derived when the share count moved. They are now computed once from EV_CORP."
    },
    {
      "what": "the heaviest down day of the decline",
      "was": "28 Sep at 1.54x",
      "now": "22 Sep on 2,871,000 shares at 1.59x",
      "why": "Wrong on the day and on the ratio; 28 Sep is 1.53x. \u00a715 had it right while \u00a77 did not."
    },
    {
      "what": "peer revenue-growth coverage",
      "was": "only 8 of the 12 carry a revenue-growth figure",
      "now": "all twelve do; only Fiserv failed, and it is a thirteenth name",
      "why": "A false statement introduced into a SOURCE NOTE during the round-1 repair, which made a true claim (Global Payments +68.6%) read as unsourced against the report's own note. A wrong figure added to a note launders itself into looking sourced."
    },
    {
      "what": "the take rates' provenance",
      "was": "derived from the release rather than quoted",
      "now": "quoted from the release, which states all three outright",
      "why": "The release says \u2018Gross profit over TPV was at 0.72%, decreasing from 1.07% \u2026 and from 0.84%\u2019. The values were right; the methodological boast was unearned."
    },
    {
      "what": "the peer-relative return on invested capital",
      "was": "screens in the top decile of the peer set",
      "now": "withdrawn",
      "why": "No declared source holds peer ROIC \u2014 the peer screen is forward multiples and revenue growth, and the FMP snapshot scores DLO alone."
    },
    {
      "what": "the merchant-float label, and a 'correction' that made a right number wrong",
      "was": "payables less all receivables, and then a 189.1-to-380.8 series computed on that label",
      "now": "the original 203.4-to-400.1 series, labelled as dLocal's own merchant working capital",
      "why": "The series was ALWAYS right: it reproduces to the thousand on the line items the release's Adjusted-Free-Cash-Flow definition NAMES - which is not quite the same as a definition the release gives, since the release defines the CHANGES and this LEVEL series is the report's own construction on those lines rather than a disclosure. An earlier draft of this slot said 'under the definition the release itself gives', which section 15 withdrew at round 7 - trade payables PLUS other tax liabilities less ALL trade receivables. 1,554,943 + 19,351 - 1,149,456 - 24,737 = 400,101, and 691,081 + 14,330 - 487,320 - 14,698 = 203,393. Only the LABEL was wrong, and a later round read the label, found it did not reproduce, and restated the series to what the wrong label computes. A self-correction that introduced an error."
    },
    {
      "what": "the average repurchase price",
      "was": "about US$12.48",
      "now": "US$12.49, as stated in the filing",
      "why": "The interim statements say it outright - 6,887,815 Class A shares at an average of US$12.49 for a total consideration of US$86,062k - and 86,062,000/6,887,815 = 12.4948. The 12.48 was 86.1 divided by 6.9: a rounded numerator over a rounded denominator when the exact figure was in the document."
    },
    {
      "what": "what the release attributes the working-capital normalisation to",
      "was": "Q1 2026's US$14.7m of Adjusted Free Cash Flow",
      "now": "Q2's improvement OVER Q1 - the temporary effects are what weighed on Q1",
      "why": "The release reads 'The improvement reflects the normalization of the temporary working-capital effects ... that had weighed on the first quarter of 2026.' Attributing Q1 to the normalisation inverts the subject and is self-refuting. The error was in the prose AND in the source note, and it was listed for fixing in round 3 and never applied."
    },
    {
      "what": "the count of local payment methods",
      "was": "hundreds of alternative local payment methods",
      "now": "withdrawn",
      "why": "The word 'hundreds' appears nowhere in the release and the count is in no declared source. What IS verbatim is 'more than 60 countries'; the One-dLocal clause is the release's own words with the punctuation reconstructed, NOT verbatim, and an earlier draft of this slot called both verbatim. Those are what the report now says."
    },
    {
      "what": "the oil levels' status",
      "was": "Brent settled US$98.17 and WTI US$90.43, used because the figure reproduces - and the 98.17 was the DECEMBER contract published as the BZ=F front month, which round 8 found",
      "now": "the BRENT FRONT MONTH at 103.53, with the December contract stated separately in a 97.1-98.2 band - and note that the 97.6-98.3 an earlier round put in this slot was itself superseded at round 6, so this field published a withdrawn value in its `now` slot for two rounds. The .superseded_detail path WAS wholly exempt from the sweep by design, to stop every declared value self-matching; that exemption is right for the `was` slot and is exactly what hid a withdrawn value sitting in the `now` slot. Recorded as a tool gap, not just an instance.",
      "why": "They were read intraday on the stamp date, so the session had not settled, and re-reading returns 97.57 and 89.84 on volumes two orders of magnitude below normal. The reproducibility claim is withdrawn. An earlier draft of this slot then added that the level is used only to establish that oil is materially below the macro state's 103.87 - WITHDRAWN at round 12, and it should have gone at round 9 with its siblings: the scored level is the FRONT MONTH at 103.53 against 103.87, essentially flat, so the report does not establish that oil is below the macro state and does not rely on it."
    }
  ],
  "auditor_disagreement_round5": "THE TWO ROUND-5 AUDITORS CONTRADICTED EACH OTHER on the oil cause attribution, and the disagreement is recorded rather than quietly resolved. The source auditor called 'Saudi Aramco shifting crude exports to the Persian Gulf and easing supply fears' geographically incoherent, on the reasoning that the Persian Gulf is what Hormuz gates. The Layer-2 auditor tested the hypothesis and reported the opposite: Saudi did pivot exports TO the Gulf and flows rose. Checked independently and the Layer-2 reading is correct, because the premise the objection rests on is wrong: Hormuz is EFFECTIVELY closed, not absolutely. Drone strikes from Iraq hit the East-West pipeline on 10-11 September and Saudi shut it, removing the Red Sea bypass that had been carrying a large share of Saudi exports while Hormuz was shut - the line's CAPACITY is about 7 mb/d and the restored flow about 3.5, roughly half; the pre-strike throughput itself is not firmly sourced and an earlier draft put it at about 5 mb/d, which is an estimate rather than a figure - so loadings pivoted back to Ras Tanura. The round-6 source auditor could NOT settle the two figures an earlier draft attributed to JP Morgan (about 2.9 mb/d through Hormuz over six days against roughly 700,000 bpd in August); no source was found carrying that pair, and they are withdrawn. What IS on the record runs the same way on a different metric: Saudi exports of about 2.45 mb/d in August rising to roughly 5.3 mb/d in September. An earlier draft said JP Morgan put Saudi volumes through Hormuz at about 2.9 mb/d over six days against roughly 700,000 bpd in August. Riyadh then restored pipeline flows to about 3.5 mb/d and Red Sea port exports recovered on 29 September. The attribution stands and is now stated with that sequence instead of the bare clause. The auditor that TESTED its hypothesis beat the one that reasoned from a premise.",
  "carried_verbatim": [
    "api_ticker",
    "brand",
    "company",
    "currency",
    "donatien_pick",
    "donatien_pick_evidence",
    "exchange",
    "gics_sector",
    "ticker"
  ],
  "carried_verbatim_note": "Generated by scripts/carry_forward.py from calibration-DLO-20260911-1900.json. Every field listed here crossed the run boundary through the manifest, with its disposition and its reason recorded in carry_provenance \u2014 not by being re-typed into a builder.",
  "carry_provenance": {
    "ticker": {
      "disposition": "CARRY",
      "reason": "identity"
    },
    "brand": {
      "disposition": "CARRY",
      "reason": "identity"
    },
    "company": {
      "disposition": "CARRY",
      "reason": "identity -- the legal name"
    },
    "currency": {
      "disposition": "CARRY",
      "reason": "the listing currency; a change is a re-listing, not a refresh"
    },
    "exchange": {
      "disposition": "CARRY",
      "reason": "identity"
    },
    "api_ticker": {
      "disposition": "CARRY",
      "reason": "identity -- the data-source symbol"
    },
    "donatien_pick": {
      "disposition": "CARRY",
      "reason": "an OPERATOR decision, not an analytical one \u2014 it persists until the operator changes it, and it is a separate field from analysis_status precisely so a lifecycle change cannot erase it. The auto-Stop scrubbed it from ten names before this field existed."
    },
    "donatien_pick_evidence": {
      "disposition": "CARRY",
      "reason": "where the pick fact came from; carried with the fact"
    },
    "gics_sector": {
      "disposition": "CARRY",
      "reason": "the GICS sector, not the descriptive `sector` line"
    }
  },
  "carry_source": "calibration-DLO-20260911-1900.json",
  "systemic_tail_note": "Restated this run, not carried. The 20 September macro carries the S&P 500 concentration / AI earnings-quality unwind as an ARMED tail. DLO is not in its cohort: it is not a top-weight index constituent at a US$3.97bn market capitalisation, its earnings carry no AI-related non-operating gains (5.32% of net income, and the whole of it is interest and FX rather than equity markups), and 12.59x forward is not a multiple levered to the AI capex trade. Cohort membership requires more than being classified Information Technology.",
  "driver_commodity_trend": null,
  "driver_commodity_trend_na_reason": "Not a commodity-leveraged name. DLO's primary driver is the emerging-market rate and consumer environment, not a commodity price, so SKILL Step 2b's price-TREND overlay has nothing to read. Recorded explicitly rather than left a bare null.",
  "eps_pe_na_reason": null,
  "quality_build": [
    {
      "term": "EM Payments benchmark (TPV growth + take-rate stability)",
      "score": 60,
      "weight": 0.2
    },
    {
      "term": "growth and scale",
      "score": 82,
      "weight": 0.2
    },
    {
      "term": "margin trajectory",
      "score": 44,
      "weight": 0.2
    },
    {
      "term": "balance sheet and cash conversion",
      "score": 58,
      "weight": 0.15
    },
    {
      "term": "moat",
      "score": 56,
      "weight": 0.15
    },
    {
      "term": "management and capital allocation",
      "score": 58,
      "weight": 0.1
    }
  ],
  "valuation_build": [
    {
      "term": "the warranted-multiple anchor",
      "score": 82,
      "weight": 0.4
    },
    {
      "term": "sector / peer median",
      "score": 58,
      "weight": 0.2
    },
    {
      "term": "own-history decile",
      "score": 82,
      "weight": 0.15
    },
    {
      "term": "growth-adjusted (PEG)",
      "score": 85,
      "weight": 0.1
    },
    {
      "term": "analyst consensus",
      "score": 83,
      "weight": 0.15
    }
  ],
  "timing_build": [
    {
      "term": "multi-timeframe trend",
      "score": 40.34,
      "weight": 0.3
    },
    {
      "term": "risk / reward",
      "score": 43.22,
      "weight": 0.2
    },
    {
      "term": "macro overlay",
      "score": 51,
      "weight": 0.15
    },
    {
      "term": "sentiment",
      "score": 61,
      "weight": 0.18
    },
    {
      "term": "catalysts",
      "score": 55,
      "weight": 0.17
    }
  ],
  "quality_detail": {
    "industry_benchmark_name": "EM Payments: TPV growth + net-take-rate stability (gross profit / TPV basis)",
    "industry_benchmark_value": "TPV US$17.7bn, +92% year on year; net take rate (gross profit / TPV) 1.07% → 0.72%, about 33% lower year on year and down from 0.84% sequentially. One leg exceptional, one deteriorating.",
    "industry_benchmark_score": 60,
    "moat_score": 56,
    "roic_percentile_vs_peers": null,
    "roic_percentile_vs_peers_na_reason": "WITHDRAWN round 3. No declared source in this report holds peer return on invested capital - the peer screen is forward multiples and revenue growth, and the FMP snapshot scores DLO alone - so any percentile against a peer set is unsupported. The absolute return measures that ARE sourced (ROE 41.3%, ROA 8.6%, and FMP's 5-of-5 scores for both) are published in section 3 instead.",
    "capital_allocation": 58,
    "management_skin_in_game": 58,
    "sbc_pct_of_revenue": 1.9,
    "adjusted_fcf_ttm_usd_m": 185.7,
    "adjusted_fcf_h1_yoy_pct": -5.6
  },
  "valuation_detail": {
    "fcf_yield": 5.07,
    "fcf_yield_basis": "the company's own TTM Adjusted Free Cash Flow over an enterprise value struck on CORPORATE net cash, not total cash and not the unadjusted cash flow",
    "implied_growth_rate": 2.29,
    "consensus_growth_rate": 28.2,
    "historical_valuation_decile": 2,
    "historical_valuation_percentile": 10.2,
    "peer_forward_pe_median": 8.7,
    "peer_n": 12
  },
  "timing_detail": {
    "mtf_confluence": 40.3,
    "risk_reward_score": 43.2,
    "relative_strength_vs_spy": -6.89,
    "relative_strength_vs_sector": -12.3,
    "catalyst_clustering_score": 60,
    "dynamic_macro_weight": 0.15,
    "macd_negative_run_sessions": 16,
    "rsi_14_wilder": 38.2
  },
  "changes_note": "Signals move HOLD/BUY/BUY → HOLD/HOLD/HOLD; price -7.99% to US$13.76 since 11 September. The two BUYs are WITHDRAWN and, because a Donatien Pick with no BUY on any horizon auto-Stops, `analysis_status` moves from donatien-pick to stopped \u2014 visibly, with the operator's pick flag intact, and it reactivates automatically on any future BUY. Nothing in the business broke. Three things moved: Timing down thirteen to 49 on a tape that has gone from a bullish multi-timeframe confluence to a bearish one, with the MACD histogram negative for sixteen consecutive sessions and relative strength reversed against both benchmarks; the ten-year rose from 4.95% to 5.26%, which cuts the warranted multiple; and Quality down two to 60 on a cash-conversion finding this report makes for the first time. The valuation anchor is still deep in the Attractive band at 0.6699 \u2014 that is the point: this is a timing and business-quality call, not a price one.",
  "valuation_score_note": "Valuation \u22122 to 78, and the number is sitting on the floor of its band rather than resting comfortably inside it. The raw weighted blend is 77.65, which is BELOW the Attractive band's floor of 78, and the floor is what holds it. That is worth saying plainly because it means the anchor and the relative lenses DISAGREE: the anchor reads 0.6699, deep Attractive, and carries 40% of the pillar on its own, while the peer lens has DLO at 12.59x forward against a median of 8.7x across twelve listed payment names. An earlier draft of this note said DLO was cheaper than every peer growing at a comparable rate except Nu Holdings; that is WITHDRAWN as false \u2014 Shift4 at 5.8x on +34.1% growth, Corpay at 12.4x on +21.5% and EVERTEC at 6.2x on +19.7% are all cheaper. It is cheaper than the two global processors (Adyen 17.6x, Payoneer 15.5x) and dearer than the Latin American acquirers, which are barely growing. Either way that growth adjustment is already paid for by the PEG lens and by g_near inside the anchor, so crediting it a third time here would be double-counting.",
  "layer1_self_audit": "Data pulls: income statement 28 quarters, financial ratios, yahoo quote, multi-timeframe, 335 raw daily bars with auto_adjust=False, quarterly balance sheet and cash flow, analyst estimates / targets / grades / ratings snapshot, eps_trend and eps_revisions vintages, news 45 days, economic calendar, FRED DGS10, EDGAR submissions index, the Q2-26 and Q4-25 6-K earnings releases and the General Atlantic 13D/A primary document. FAILED: get_earnings_calendar returned empty and get_risk_factors returned none \u2014 both recorded in the data-source audit and substituted. Data-basis traps checked: earnings-quality decomposition run (non-operating 5.32% of net income, under the 15% line); share count taken from the COMPANY, not the provider, and this is a correction to what two earlier drafts of this self-audit claimed: they said the count was 'reconciled BOTH ways' because market capitalisation divided by price returned the provider's impliedSharesOutstanding, which is CIRCULAR - that quotient can only ever return the provider's own count. The share-capital note gives Class A 172,183,455 plus Class B 116,233,376 = 288,416,831 at 30 Jun 2026, and the evolution closes to the share (294,931,956 at 1 January less 6,887,815 repurchased and cancelled plus 372,690 issued). Both provider counts are rejected. MERCHANT FLOAT checked on the CASH-FLOW statement this run, not only on the balance sheet, which is where the finding came from; corporate-action existence check run against the EDGAR filing index and confirmed absent since 19 Aug 2026; RSI basis checked (38.20 is Wilder, not Cutler, which reads 21.29); the MACD negative run COUNTED from the series at sixteen sessions rather than eyeballed; the volume window named (2,284,871 was the three-month average in the quote payload READ ON THE STAMP DATE - a point-in-time field that has since drifted, since a re-read returns 2,131,985 against a 63-bar computed mean of 2,120,870, so it is not reproducible after the fact and is used only as the denominator of the stamp-date ratio; it is a three-month average, not a twenty-day one). Three fetchable absences declared in absence_searches and re-run by verify_absence.py. Panel disagreements on forward EPS, price targets and grades all declared, with the conservative source scored in each case.",
  "nav_total": 315.121,
  "nav_divisor_shares": 288416831,
  "valuation_model": {
    "note": "An EARNINGS anchor, not a NAV one. nav_total is the FY2027 consensus earnings base (US$1.09259 x 288,416,831 shares = US$315.1m), so nav_total/nav_divisor_shares returns the forward EPS and the derived ratio is the published warranted ratio. Two of the three inputs are warranted-side and are declared as earnings equivalents; the conversion is stated in each basis.",
    "per_share_cash_add": 0.0,
    "inputs": [
      {
        "id": "eps-panel",
        "label": "the FY2027 consensus earnings base",
        "basis": "The FMP panel's own published dispersion for FY2027: epsLow US$1.03245, epsAvg US$1.09259, epsHigh US$1.15273 across four estimates. Separately, the yfinance panel (also n=4 on EPS estimates, not the 10 an earlier draft of this note claimed - 10 is the recommendation count) puts the average at US$1.14373, inside this range and near its top \u2014 the cross-panel disagreement is 4.7% and is smaller than the within-panel dispersion. The scored value is the conservative FMP average.",
        "nav_low": 297.776,
        "nav_high": 332.467
      },
      {
        "id": "g-near",
        "label": "near-term growth in the warranted multiple (earnings-equivalent)",
        "basis": "g_near is capped at the 15% Information Technology secular line and the cap BINDS: the haircut consensus is 21-26% on either panel. The range tests 10% \u2014 a two-thirds haircut to the cap, roughly the pace implied if the take-rate floor arrives late \u2014 to 20%, the ceiling the framework allows a proven durable grower. Warranted moves 16.1109 to 21.8444 against 18.8002, and the earnings equivalent scales by the same factor.",
        "nav_low": 270.045,
        "nav_high": 366.147
      },
      {
        "id": "risk-free",
        "label": "the ten-year Treasury inside r (earnings-equivalent)",
        "basis": "FRED DGS10 has printed between 4.94% and 5.26% over the twelve sessions to 29 Sep 2026, and the 30 Sep core-PCE downside surprise had not yet reached the series. The range tests 4.75% to 6.00%, which spans a Fed that stops here and one that delivers the further hike 16 of 18 participants expect. r moves with it one-for-one and the warranted multiple with r; the earnings equivalent scales by the same factor.",
        "nav_low": 286.168,
        "nav_high": 338.544
      }
    ],
    "simultaneous": {
      "ratio_worsening": 0.909109,
      "basis": "Every declared input set to its adverse end AT ONCE and the two-stage model re-evaluated: near growth 10%, a 6.00% ten-year taking r to 11.50%, FY2027 EPS US$1.03245, and the forward divisor at 1.10 because it is (1 + near growth) and moves with the input being stressed. Warranted 14.6600 against an actual 13.3275."
    }
  },
  "threshold_fragility": "Ratio 0.6699, ATTRACTIVE band. NOT ROBUST. It is 51.2 NAV units from the 0.80x edge and n/a from none \u2014 already in the outermost band on this side. Largest single sensitivity: near-term growth in the warranted multiple (earnings-equivalent) (g-near), worth 0.205 on the ratio and closing 88% of the nearer gap (to 0.80x), stopping short of crossing it alone. the ten-year Treasury inside r (earnings-equivalent): 0.114, covering 56% of that same gap. the FY2027 consensus earnings base: 0.074, covering 34% of that same gap. Evaluated with every declared input at its adverse end AT ONCE \u2014 not by summing the single-input moves, which the anchor's nonlinearity makes a different number \u2014 the inputs together close 184% of the gap to 0.80x and 0% of the gap to none \u2014 already in the outermost band on this side. ",
  "threshold_fragility_derived": {
    "base_ratio": 0.6699,
    "base_band": "attractive",
    "nearest_worse": 0.8,
    "nearest_better": null,
    "nav_to_worse": 51.25,
    "nav_to_better": null,
    "combined_covers_worsening": 1.839,
    "combined_covers_improving": 0.0,
    "fragile": true,
    "one_sided": null,
    "top_sensitivity_id": "g-near",
    "top_covers_worsening": 0.879
  },
  "rounding_note": "warranted_ratio and probability_weighted_target are stored at the BUILDER's own two-decimal convention (0.67 and 16.94) rather than at full precision, and that is a deliberate reversal of the position the prior report took in its round-4 pwt_rounding_note. The reason is mechanical: build_stock_report.py DERIVES both to two decimals and separately re-verifies the decision lock, so a four-decimal warranted_ratio made the builder 'correct' a FROZEN field and abort the render. Nothing is lost \u2014 actual_multiple 12.5939 and warranted_multiple 18.8002 are both stored at four decimals, so the ratio is exactly recoverable from its own inputs, and the full-precision figures appear in the \u00a74 prose. Separately, composite_short is 58 from a raw 58.45, with no exact-half rounding involved anywhere in the three composites.",
  "figures_detail": {
    "price": 13.76,
    "prev_close": 13.69,
    "prior_price": 14.955,
    "sma20": 14.5142,
    "sma50": 14.6294,
    "sma200": 13.519,
    "bb_lo": 13.32,
    "bb_mid": 14.5142,
    "bb_hi": 15.7085,
    "atr": 0.34593,
    "rsi_wilder": 38.2,
    "rsi_cutler": 21.29,
    "macd": -0.26239,
    "macd_sig": -0.1641,
    "macd_hist": -0.09829,
    "wk52_hi": 16.78,
    "wk52_lo": 10.64,
    "swing_low": 13.58,
    "last_above_50dma": 14.84,
    "breakout_21aug": 15.17,
    "eps_fwd": 1.09259,
    "eps_fwd_yf": 1.14373,
    "eps_trailing": 0.68,
    "warranted": 18.8002,
    "warranted_trailing": 21.6202,
    "actual_multiple": 12.5939,
    "actual_multiple_yf": 12.0308,
    "ratio": 0.6699,
    "ratio_yf": 0.6399,
    "anchor_fv": 20.54,
    "trailing_pe": 20.2353,
    "clean_trailing_pe": 21.148,
    "clean_eps": 0.6507,
    "guard_it": 32.428,
    "guard_clf": 29.48,
    "peg": 0.4465,
    "eps_growth": 28.2,
    "fcf_yield": 5.07,
    "adj_fcf_ttm": 185.7,
    "fcf_unadj_ttm": 388.4,
    "fcf_overstate": 2.09,
    "adj_fcf_h1_26": 83.2,
    "adj_fcf_h1_25": 88.176,
    "adj_fcf_h1_yoy": -5.6,
    "ocf_ttm": 428.9,
    "cash_total": 794.943,
    "cash_corp": 369.1,
    "cash_corp_net": 301.7,
    "cash_corp_q1": 451.8,
    "cash_corp_py": 253.8,
    "fvtpl": 79.214,
    "debt": 67.371,
    "buyback_h1": 86.062,
    "dividend_h1": 57.211,
    "distrib_h1": 143.3,
    "distrib_cover": 1.72,
    "buyback_avg": 12.49,
    "facility": 150.0,
    "equity": 540.248,
    "take_net": 0.72,
    "take_net_prior": 1.07,
    "take_gross": 2.2588,
    "take_gross_prior": 2.784,
    "sbc_ttm": 25.77,
    "sbc_pct": 1.9,
    "rev_ttm": 1355.896,
    "opinc_ttm": 236.406,
    "ni_ttm": 203.974,
    "ebitda_ttm": 263.217,
    "nonop_pct": 5.32,
    "tax_rate": 17.44,
    "stop": 13.3,
    "stop_atr": 1.33,
    "bull": 22.0,
    "base": 17.5,
    "bear": 10.75,
    "pwt": 16.9375,
    "target_cons": 18.5,
    "target_hi": 20.0,
    "target_lo": 17.0,
    "upside_cons": 34.4,
    "pwt_up": 23.1,
    "peer_median": 8.7,
    "decile_pct": 10.2,
    "mkt_cap": 3968.6,
    "shares_total": 288416831,
    "shares_class_a": 172183455,
    "shares_class_b": 116233376,
    "shares_provider": 294269133
  },
  "audit_passes": 3,
  "audit_rounds_total": 15,
  "audit_pass_basis": "audit_passes counts CONSECUTIVE BLOCKER-FREE passes, not rounds. Round 15 was blocker-free, so the count advances to 3 of the 3 a major needs before it may be published as an open finding. Total rounds run: 15.",
  "audit_route_note": "Round 1: a FRESH general-purpose agent (never a fork) \u2014 Round 1 was a REBUILD (stamp 1700 to 1900), so report-audit.md L51 routes to a fresh auditor.. Verdict FAIL (1 blocker, 7 majors, 5 minors). Round 2: a FRESH general-purpose agent (never a fork) \u2014 Round 2 was again a REBUILD (stamp 1900 to 2100); the fix round rewrote two gate cautions, five source notes, the share count, the take-rate basis and eleven prose passages, so report-audit.md L51 routes to a FRESH auditor.. Verdict FAIL (5 blockers, 7 majors, 2 minors). Round 3: a FRESH general-purpose agent (never a fork) \u2014 Round 3's artifact changed mid-audit because I committed fixes while it was running, so the document the auditor reported on no longer exists and L51 routes to a FRESH auditor rather than a continuation. Round 4 is dispatched with the artifact frozen from the moment of dispatch.. Verdict FAIL (4 blockers, 6 majors, 5 minors). Round 4: a FRESH general-purpose agent (never a fork) \u2014 Round 4 PASSED with zero blockers - the first blocker-free pass, banking audit_passes 1 of the 3 that open majors require. The artifact was frozen for the whole round, unlike round 3. The four majors and seven minors are now fixed, so pass 2 needs a fresh auditor on the corrected artifact; that is a next-session task because the four-round non-convergence limit is reached.. Verdict PASS (0 blockers, 4 majors, 7 minors). Round 5: a FRESH general-purpose agent (never a fork) \u2014 Round 5 found ONE blocker and it was a REGRESSION, not a new defect: round-4 minor m7 (the merchant-float label) was listed as applied in post_audit_fixes_round4 and never reached the artifact, so the trail asserted a fix that did not exist. That is the single most important finding of the whole DLO run and it is the third instance of the same class in this report (three round-1 fixes were lost the same way when a non-atomic patch script aborted). Route round 6 to a FRESH auditor with the artifact frozen, and have it verify the sha256 at both ends of its read.. Verdict FAIL (1 blocker, 0 majors, 2 minors). Round 6: a FRESH general-purpose agent (never a fork) \u2014 Round 6 found 2 blockers and 5 majors and EVERY blocker was a partially-landed round-5 fix, not a new analysis defect: the auditor independently reproduced every load-bearing number, all five pillar builds, every composite weight, all three absence claims and the full Hormuz sequence, and found framework compliance clean. The three mechanisms that hid the survivals were CASE, PARAPHRASE and a stale FRAGMENT inside a rewritten field - none visible to a grep window, two now fixed in the sweep itself. Route round 7 to a FRESH auditor with the artifact frozen and the sha verified at both ends of its read.. Verdict FAIL (2 blockers, 5 majors, 6 minors). Round 7: a FRESH general-purpose agent (never a fork) \u2014 Round 7's single blocker was AGAIN a partially-landed fix - round 6's oil withdrawal reached the narrative and not the sibling source note - and the ROOT CAUSE was finally found: superseded_sweep counted the narrative verb 'had been' as withdrawal framing, which is why five consecutive rounds of sweeps printed a clean pass over live survivals. Four tool fixes landed this round (framing vocabulary, abbreviated forms, CLI spec coverage, and the builder's literal-count boundary). Route round 8 to a FRESH auditor with the artifact frozen and the sha verified at both ends.. Verdict FAIL (1 blocker, 3 majors, 3 minors). Round 8: a FRESH general-purpose agent (never a fork) \u2014 Round 8 produced the FIRST real analysis defect since round 4 - the published Brent level was the December contract labelled as the front month, which inverted a bear-case break condition and let the report grant itself a flattering mitigation. It was found by an auditor pulling the primary price series, and I verified it independently before acting. The other blocker and all three majors are routing and trail defects of the established class. Round 9 goes to a FRESH auditor with the artifact frozen, and its brief must carry round 8's own instruction verbatim: marker-level citation routing has to be audited in the RENDERED artifact, not in the census, because cite_ids is a per-sentence set and hides which marker sits where.. Verdict FAIL (2 blockers, 3 majors, 4 minors). Round 9: a FRESH general-purpose agent (never a fork) \u2014 Round 9's blocker was round 8's Brent correction not reaching the oil NOTE, and inside it a substantive finding: the conservatism argument for scoring December INVERTS once the front month is admitted, because 103.53 is above both December reads and a higher energy price is the harsher reading for this name. The routing audit came back CLEAN on the instruction round 8 passed forward - 130 markers, zero census-versus-rendered disagreements. Round 10 is the final verification round: it goes to a FRESH auditor with the artifact frozen, and the question it has to answer is narrow - is anything the trail claims absent from the artifact, and is any published number wrong.. Verdict FAIL (1 blocker, 4 majors, 3 minors). Round 10: a FRESH general-purpose agent (never a fork) \u2014 Round 10 ran on a narrow brief - is anything the trail claims absent from the artifact, and is any published number wrong - and found one of each. The blocker is a withdrawn value surviving as a BARE INTEGER in a table cell, which no string check can see; it is fixed structurally by typing the quantity once as a constant rather than by another sweep. Round 11 gets the same narrow brief and should also be told that a table cell is a SURFACE: prose and tables have been fixed separately and missed separately throughout this run.. Verdict FAIL (1 blocker, 1 major, 2 minors). Round 11: a FRESH general-purpose agent (never a fork) \u2014 Round 11 found zero majors and one blocker, on the SIXTH surface this run has identified: the paths superseded_sweep is exempt from by design. The exemption is now narrowed rather than noted, since it had reached an auditor twice. Round 12 gets the same narrow brief - is anything the trail claims absent from the artifact, and is any published number wrong - and should be told that the exempt-path surface is now swept on its asserting slots, so a survival there would be a NEW defect rather than the same one.. Verdict FAIL (1 blocker, 0 majors, 2 minors). Round 12: a FRESH general-purpose agent (never a fork) \u2014 Round 12's blocker was the THIRD shipment from the sweep's exempt family, and the auditor proved the sweep could not verify the fix either way - sentence-level framing let one withdrawal clear a different claim beside it. Framing in the asserting slots is now CLAUSE-local, which is a structural remedy rather than another instance fix. Round 13 gets the same narrow brief and should be told that the exempt family has now shipped three times, so that surface deserves a manual read of every now/why slot rather than trust in the sweep.. Verdict FAIL (1 blocker, 2 majors, 3 minors). Round 13: a FRESH general-purpose agent (never a fork) \u2014 Round 13 PASSED with zero blockers - the SECOND blocker-free pass of the run and the first of the current streak (round 4 was also blocker-free; round 5's blocker reset it) - and its four majors were all round-N trail prose gone stale in asserting slots, none touching a number, a score or the decision. They are FIXED rather than disclosed, so open_findings stays absent. Round 14 is a confirmation round on a narrow question: did those seven fixes land, at every surface. It should also re-read every superseded_detail now/why slot manually, because three of round 13's four majors were invisible to any string-exact sweep.. Verdict PASS (0 blockers, 4 majors, 3 minors). Round 14: a FRESH general-purpose agent (never a fork) \u2014 Round 14 PASSED with zero blockers, confirming all seven of round 13's fixes landed. Its two majors and one minor are the same audit-trail bookkeeping class and are FIXED, not disclosed, so open_findings stays absent. Round 15 is the final confirmation: did these four land, and is the trail now internally consistent. It should read every asserting slot manually, because the sweep provably cannot reach a value whose own words contain framing vocabulary.. Verdict PASS (0 blockers, 2 majors, 1 minor). Round 15: SendMessage to the SAME auditor \u2014 Round 15 passed clean with zero blockers and ZERO MAJORS - the third consecutive blocker-free pass and the first round of the run to find no majors. The report PUBLISHES on this pass: no blocker is open, no major is open, and open_findings is correctly absent. No further round is routed.. Verdict PASS (0 blockers, 0 majors, 1 minor).",
  "delta_vs_prior": "vs calibration-DLO-20260911-1900.json. signal_medium BUY -> HOLD. signal_long BUY -> HOLD. quality 62 -> 60. valuation 80 -> 78. timing 62 -> 49. driver 68 -> 56. economic alignment 58 -> 50. price 14.955 -> 13.76. analysis_status donatien-pick -> stopped. next_update 2026-09-25 -> 2026-10-14. base target 18.5 -> 17.5. bull target 23 -> 22. bear target 11.5 -> 10.75. relative strength vs SPY 15.9 -> -6.89. relative strength vs sector 17 -> -12.3. clean P/E 13.08 -> 12.5939. non-operating % of net income 5.3 -> 5.32. catalyst clustering set to 60 (absent in the prior report). moat 58 -> 56. industry benchmark score 58 -> 60. competitive share trajectory gaining volume, conceding price -> gaining volume, conceding price \u2014 but the concession is now traceable to ONE merchant's tier migration rather than to broad discounting. overall confidence 60 -> 67. probability-weighted target 17.875 -> 16.94. gates_caution 4 -> 6 (added Take-rate compression (Gate 6 adjacent, not triggered \u2014 an earlier draft said Gate 4, which is the dilution and accounting gate; the numeral crossed the run boundary unchanged from the 11 September calibration) \u2014 the net take rate is QUOTED in the release, not derived as an earlier draft of this report claimed (superseded): 0.72%, \u2018decreasing from 1.07% in the second quarter of 2025 and from 0.84% in the first quarter of 2026\u2019. NEW THIS RUN, and it cuts both ways: management attributes the fall to one very large ride-hailing merchant crossing into lower volume-pricing tiers, and says that ex-that merchant the take rate was roughly flat sequentially. The mechanism is mix, not broad discounting \u2014 but the same fact makes the concentration caution below worse, not better.; Gate 7 \u2014 merchant concentration, and it is AUDITED. The FY2025 20-F puts the top 10 customers at 61% of revenue (62% in 2024, 60% in 2023) and records TWO customers each above 10% of total revenue in 2025, against one in 2024 and none in 2023. One merchant's migration into lower volume-pricing tiers moved the consolidated net take rate 0.12pp SEQUENTIALLY (0.84% to 0.72%, both quoted from the release, with the attribution to that merchant management's own on the Q2 call); the 0.35pp year-on-year fall is NOT attributable to that merchant alone, and an earlier draft of this report said it was. Ex-that merchant Q2 TPV growth falls from above 90% to the high 60s on management's own account (Goldman Sachs conference, 10 Sep 2026).; Cash-conversion quality \u2014 the company's OWN Adjusted Free Cash Flow (operating cash flow less merchant working capital less capex) is US$185.7m over the trailing twelve months against an unadjusted US$388.4m, so the provider figure is 2.09x the company's own. And on a half-year basis it went BACKWARDS: US$83.2m against US$88.2m, -5.6%, while TPV rose 83% and revenue rose 55%.; Distributions ran ahead of free cash flow in the first half \u2014 US$86.1m of buybacks plus US$57.2m of dividends is US$143.3m against US$83.2m of Adjusted FCF, 1.72x. Corporate cash fell US$82.7m in the quarter as a result. A US$150m senior unsecured facility at Term SOFR + 2.00% was entered on 12 Aug 2026, repayable in 11 equal quarterly instalments of US$13.6m plus interest \u2014 about US$54m a year \u2014 \u2018commencing six months following the BORROWING DATE\u2019. The release describes the agreement as \u2018providing for\u2019 the facility and keys repayment to a future borrowing date, so it is treated as committed-but-undrawn: not netted, and not linked to the distributions. And the cover ratio is not new \u2014 H1 2025 paid US$149.98m of dividends against US$88.2m of Adjusted FCF, 1.70x.; Gate 5 (regulatory / binary event) \u2014 emerging-market regulatory and FX-expatriation risk, carried from the prior report and NOT retired. Not hypothetical: the Q4 2025 release records a US$13.1m hit in Q3 2025 from the structuring used to expatriate flows from Argentina after regulatory changes. Argentina is one of the two markets the Q2 release names as driving its record gross profit, so the exposure and the growth sit in the same place.; Relative strength has reversed outright. On a total-return basis DLO is -7.22% over one month and -6.20% over three (Yahoo daily closes), against SPY -0.33%/+2.52% and XLK +5.08%/+5.58% on a total-return basis (dividends included; DLO paid none in either window, which is what makes the comparison like-for-like) \u2014 underperforming BOTH benchmarks on BOTH windows. The prior report recorded +15.9 and +17.0.; removed Take-rate compression (Gate 4 adjacent, not triggered) \u2014 measured on the GROSS PROFIT basis the prior report used, so the series is comparable: FY24 1.15% / FY25 0.99% / Q2 2025 1.07% / Q1 2026 0.84% / Q2 2026 0.72%. Declining in every period shown, and about a third lower year on year. (On a revenue-over-TPV basis the same quarters read 2.78% to 2.26%, a milder-looking -19%; the basis is named because switching between them quietly is the reframing this report criticises elsewhere.) Q2 EPS MISSED by US$0.01 while revenue BEAT by 9.6%: the compression reaches the bottom line. Operating margin 16.05% against 22.30% a year ago, on the 64.161M operating income the data tool returns.; Sponsor supply overhang \u2014 General Atlantic sold 9,842,559 shares at an average execution price of US$13.60 on 17 Aug 2026, a 21.1% cut leaving 36,814,136. Do-Not-Buy Trigger 4 requires three or more C-suite insiders disposing of over a quarter of their holdings within 60 days outside a 10b5-1 plan; a private-equity sponsor's 13D/A satisfies none of those legs, and dLocal is a foreign private issuer exempt from Section 16 reporting, so routine insider filings do not exist to check. It is still real supply.; Regulatory / Binary (Gate 5) \u2014 CAUTION, not triggered. No dated decision pending, but dLocal carries chronic elevated regulatory and FX-convertibility risk across its LatAm, Nigeria and Egypt corridors.; Concentration and competition \u2014 merchant concentration plus credible price competition is what the take-rate line is measuring; competitive_threat_level remains elevated.). Carried without change: signal_short, warranted_ratio, val_band, entry_conviction, entry_groups_met, short_entry_confirmed, exit_action, hard_gate_state, economic alignment SOURCE, exit_groups_live, scenario weights. NOTE: Blockers across the run: 1, 5, 4, 0, 1, 2, 1, 2, 1, 1, 1, 1, 0, 0, 0. THREE consecutive blocker-free passes, zero open majors. A git sweep of all seven calibration commits from round 8 to HEAD shows zero changes to any of the 24 decision-bearing fields, so the signal, the anchor, the pillars and the gates have been stable through seven rounds of audit while the remaining findings were confined to audit-trail bookkeeping.",
  "post_audit_fixes_round1": "BLOCKER: the report asserted that no primary source existed for the top-10 merchant concentration figure. False - the FY2025 20-F discloses it three times (top 10 = 61% of revenue in 2025, 62% in 2024, 60% in 2023, with TWO customers each above 10% of revenue in 2025 against one in 2024 and none in 2023). The licence for the claim was get_risk_factors returning nothing, which is the manufactured-absence rule broken in its textbook form, and the absence was never recorded as a search so verify_absence was blind to it. The 20-F is now a declared source, the audited series is published in sections 2 and 3, and all four false-absence assertions are deleted. M0: the share count was the provider's 294,269,133; the company's own Share Capital of US$576k at a US$0.002 par gives 288,000,000, with Treasury Shares NIL so the buyback was cancelled - cross-checked against the 20-F, the 13D/A's Class A count and Q2 basic EPS. Market cap 4,049.1 to 3,962.9, EV 3,747 to 3,661, FCF yield 4.96 to 5.07 percent. The test used to bless the provider figure (market cap over price) was circular. No band, gate or signal moved. M1: the 0.35pp merchant attribution was the year-on-year fall assigned whole to one customer; the evidence supports 0.12pp SEQUENTIALLY. M2: the implied-growth read of 7.5 percent does not solve - the answer is 2.29 percent, and implied_growth_rate had been set to 28.2, a duplicate of consensus_growth_rate. M3: lows on 24/29/30 Sep are 13.730/13.590/13.655, so the stamp session made a HIGHER low, not a lower one. M4: the 50-DMA peaked 13 sessions before the stamp and has fallen since; the +1.08 percent over twenty sessions straddled the turn and read the trend backwards. M5: five of nine gate rows carry a caution, not six. M6: added the release's own attribution of the weak Q1 to temporary working-capital effects, and the H1-2025 comparison showing the same 1.70x distribution cover, both of which cut against this report's own headline finding. M7: added the facility's 11 x US$13.6m quarterly amortisation. Layer 0.5: withdrew per-country gross-profit figures not in any primary source and replaced them with the release's own wording naming Mexico's Tier 0 tier migration; withdrew an unsourced peer-ROIC claim; declared the own-history P/E distribution as a source; took the Class A count from the filing rather than the provider; repaired seven source notes; fixed four mis-attributed citations; restated the merchant-float series on one consistent pair of line items. Minors m1-m5 all applied.",
  "post_audit_fixes_round2": "THE STRUCTURAL FIX FIRST, because it explains every other blocker in rounds 1 and 2. M7: superseded_values carried ONLY prior-report corrections, so superseded_sweep had nothing to hunt for the values the FIX ROUNDS withdrew, and it cleared a report in which five of them survived \u2014 a clean sweep meant \"no prior-run residue\", never \"the fix landed\". The register now carries 27 values including every withdrawal made by this report's own drafts, with 13 new superseded_detail entries. On the next render the sweep immediately named five survivors nobody had found by hand: the 1.08% figure inside its own correction paragraph (on unaccepted framing), 288,000,000 still called the company's count in the section-15 note, US$40.7m of capex in TWO untouched prose sites, and \"derived from the release rather than quoted\" in the section-3 benchmark AND gates_caution[0]. All five fixed.\nBLOCKERS. B1: the 50-day was published as \"still RISING, 1.08% over twenty sessions\" in four sites while section 12 corrected it in a fifth \u2014 it PEAKED at 14.7984 on 11 Sep and has fallen every session since, -0.95% over ten. B2: implied growth published as \"roughly 7.5%\" in two sites against a calibration field of 2.29 \u2014 7.5% warrants 14.890x, and 2.29% is what solves for 12.5939x on this report's own model. B3: \"lower lows on 24, 29 and 30 September\" still standing one paragraph above the correction that quotes and withdraws it; the 30th made a HIGHER low at 13.655. B4: the section-15 source note asserted the provider count was the report's own and declared \"no stale-count problem\" \u2014 the opposite of this run's principal correction \u2014 and the test behind it, market cap over price, is circular because it can only return the provider's own count. B5: the claim that dLocal \"is a foreign private issuer exempt from Section 16 reporting, so routine insider filings do not exist to check\" is FALSE and is falsified by the 20-F this run declares as a source: \"directors and officers of FPIs will be subject to Section 16(a) reporting requirements beginning March 18, 2026.\" EDGAR carries SEVEN Form 4s and a Form 3/A since May 2026, not the single one an earlier draft claimed. Trigger 4 re-adjudicated from the filings themselves: Sebastian Kanovich (a DIRECTOR, not an officer) converted and sold about 1.08m shares between 1 Jul and 5 Aug, cutting his Class B holding 12,629,474 to 11,526,321 \u2014 about 8.7% against the trigger's 25% arm; William Rodney Pruett (director) BOUGHT 20,000 shares at US$11.85 on 29 May; Hyman K Bielsky's 27 May filing is a code-G transfer, not a market sale; the two officers who filed only ACQUIRED, on RSU vesting at zero. Three of the trigger's legs fail rather than one, and the director's PURCHASE is disclosed because omitting it would have flattered the bear case.\nMAJORS. M1: the share count is 288,416,831, printed in the share-capital note beside the ROUNDED US$576 thousand an earlier draft divided by the par value to get 288,000,000 \u2014 Class A 172,183,455 plus Class B 116,233,376, and the evolution closes to the share (294,931,956 less 6,887,815 cancelled plus 372,690 issued). Market cap US$3,968.6m. M2: the \"~178m Class A / founder-held Class B\" sentence is WITHDRAWN and superseded - a round-1 fix that never landed. M3: one quantity with three values \u2014 0.35pp in the frozen gate array, 0.13pp in section 3 and 0.12pp in section 2 \u2014 settled at 0.12pp on the release's own quoted rates. M4: three EV-derived figures still struck on the pre-correction enterprise value of US$3,747m; EV, both yields and EV/revenue are now derived once and referenced. M5: the per-country gross-profit figures were withdrawn as \"not in any primary source\" when they are on slide 13 of the earnings deck, EX-99.3/99.4 of the same 6-K accession \u2014 a false absence inside the round meant to close one. The deck is now a declared source, the figures are restored and the withdrawal claim is deleted. M6: the heaviest down day of the decline is 22 Sep at 1.59x, not 28 Sep at 1.54x.\nMINORS. m1: the take rates are QUOTED in the release (\"Gross profit over TPV was at 0.72%, decreasing from 1.07% ... and from 0.84%\"), so the \"derived rather than quoted\" boast is withdrawn \u2014 the values were right, the claim about method was not. m2: the buyback remainder was normalised two ways, as a share of market value and as a share of the shares.\nLAYER 0.5 ROUND 2. The peers source note falsely claimed only 8 of 12 names carried a revenue-growth figure; all twelve do, and only Fiserv failed with a 404 as a thirteenth name \u2014 which made a TRUE claim (Global Payments +68.6%) read as unsourced against the report's own note. That is the named round-2 risk realised: a wrong figure added to a NOTE launders itself into looking sourced. Capex corrected from US$40.7m to US$40.49m and moved to the cash-flow source that can actually evidence it. The peer-ROIC top-decile claim withdrawn for want of any peer ROIC data anywhere in the corpus. pe-history, declared in round 1 and cited by nothing, is now cited by the decile claim it was declared for. || CORRECTED BY ROUND 13, the remedy round 12 applied to rounds 3 and 5 and did not apply here: the exhibit label 'EX-99.3/99.4' above is WITHDRAWN. The 6-K cover lists 99.3 as the Quarterly Report and 99.4 as the earnings presentation, and slide 13 sits in EXHIBIT 99.4 alone - as the section-15 q2-deck note and superseded_detail[10] both now say. The per-country figures and the 'record' labels above are correct; it is only the EXHIBIT NUMBER that was wrong. (An earlier draft of this clause ended mid-predicate at 'only the exhibit is', which parses as the inverse of the withdrawal it had just made.)",
  "post_audit_fixes_round3": "PROCEDURAL, AND IT IS MINE: I COMMITTED FIXES WHILE THE ROUND-3 AUDITOR WAS READING THE FILE. Commit 13f7ac6 landed mid-audit under the same stamp. It closed two of that auditor's findings before it could report them (wasted effort) and it CREATED two of the four blockers below while nobody was auditing. The rule - freeze the artifact for the duration of a round - is one I already hold and I broke it. Round 4 is dispatched with the artifact untouched from the moment of dispatch.\nB4, and it is the worst: that same commit DESTROYED the audit trail. Re-running the builder regenerates the calibration, and SKILL 20a-2a prescribes snapshot-then-preserve around it. I did that twice and then forgot it, deleting audit_passes, audit_rounds_total, audit_pass_basis, audit_route_note, delta_vs_prior and BOTH fix logs from a published calibration - while the lint receipt still read exit 0, and with assertions silently falling 77 to 75. STRUCTURAL FIX: the builder now re-reads the trail from a sidecar on every run, so remembering a two-command dance is no longer load-bearing. Trail recovered from git (commit 9ecc810) and restored; assertions back to 77.\nB1: quality_detail.roic_percentile_vs_peers carried 88 - the withdrawn peer-ROIC claim RE-ENCODED AS A NUMBER. Section 3 says \"Nothing in this report holds peer ROIC ... so the claim is withdrawn\", and an 88th-percentile figure is that claim restated. superseded_values carries the STRING \"top decile of the peer set\", so a string sweep structurally cannot see a claim surviving as an integer. Set to None with a recorded reason rather than silently dropped, and the absolute measures that ARE sourced (ROE 41.3%, ROA 8.6%, FMP 5-of-5 on both) carry that ground instead.\nB2: layer1_self_audit still asserted the circular share-count test round 2 struck down - \"reconciled BOTH ways ... market cap divided by price returns the latter\" - BYTE-IDENTICAL across the 1700, 1900 and 2100 drafts. It survived both fix rounds because nothing looked at it, inside the self-audit block whose whole function is to disarm a reader's scepticism. Rewritten to record the par-value and share-capital-note reconciliation and to state plainly that both provider counts are rejected.\nB3: my own round-3 commit corrected section 3 and section 15 to four Kanovich tranches and 1,103,153 shares, and left dnb_adjudication.trigger_4 at three tranches and \"~1.08m\" - so the field the framework calls the strongest claim in the calibration published a total that did not reconcile to the holding change it also published. Fixed at all three sites, and the Rule 10b5-1 plan adopted 26 Nov 2025 is now recorded: every one of the four sales was inside it, which is an explicit exclusion in the trigger's own wording, so that leg fails twice over and four legs fail rather than three.\nM1: the section-3 build callout said \"Two sub-scores moved\" and then named four. All four are needed to reproduce the published total: +2x0.20 -12x0.15 -2x0.15 -2x0.10 = -1.90, and 62 - 1.90 = 60.10 to the hundredth. Corrected, in the pillar this report itself calls boundary-deciding.\nM2: the oil level was a fortnight stale and NO live commodity check was run this run - a standing rule of my own. Section 5's current-state row and the bear case asserted Brent US$103.87 and WTI US$100.30 in the present tense, which are the 20 September macro state's figures as of 18 September. Checked directly on the stamp date: Brent US$98.17, WTI US$90.43, down 5.5% and 9.8%. The Hormuz closure IS still live (one transit on 27 September against a baseline near 85 a day), so the shock is intact and the price has come off its spike. A new declared source, oil, carries both. The direction of the error was CONSERVATIVE - cheaper oil is a smaller tax on the emerging-market consumer - so the current-state leg was harsher than the facts warranted, and Driver 56 is far from the 65 amplification line either way.\nM4: the changes box said cautions went \"four to six, with cash-conversion quality and distributions added\". The movement is +3 and -1: three added, and the prior report's sponsor-supply-overhang caution came off because General Atlantic's holding and the director sales are now adjudicated inside Trigger 4. The net +2 was a coincidence and is now stated as what it is.\nM5: the changes box said \"four corrections to the 11 September report, all small\". There are FIVE, and the fifth is not small - the false foreign-private-issuer / Section 16 claim that licensed a skipped Do-Not-Buy check.\nM6: the Rule Forecast glossed its own 62 sessions as \"six-odd weeks\". 62 sessions is about twelve weeks; six weeks is the ~30 sessions the MACD projection needs. The conclusion survives and is in fact further outside the window than the gloss suggested.\nMINORS. m1 the release's own H1-2025 Adjusted-FCF components give 88,178 against its stated 88,176 - a US$2k gap inside dLocal's table, now disclosed rather than smoothed. m2 the anchor ratio rendered 0.6700 in two places from the two-decimal stored field; the five four-decimal renders now interpolate the exact 0.669881 -> 0.6699. m3 superseded_values contained a FRAGMENT OF THE ROUND-2 FIX-LOG NARRATIVE rather than a value, which made the register self-satisfying - removed, and SRC-UNCITED in the builder now polices what it was gesturing at. m4 the 10b5-1 plan, which STRENGTHENS the NOT-MET verdict, added rather than fixed. m5 a two-predicate garble in the section-15 facility sentence, and a [[src:form4s]] marker inside a calibration field where the section-14 embed renders verbatim and the resolver never reaches it.\nDISAGREEMENT, recorded so it cannot be re-raised: M3 said fcf_yield 5.07 should be 5.06. It is a rounding-ORDER artefact, not a defect. On the unrounded inputs - Adjusted FCF 37.6 + 64.9 + 14.7 + 68.548 = 185.748, the Q2 figure being the release's exact 68,548, over EV_CORP of 3,666.8866 - the yield is 5.065551%, which rounds to 5.07. Rounding the cash flow to 185.7 first gives 5.06. The full arithmetic is now published in section 4 so the order is visible and the point cannot recur.\nALSO VERIFIED BY THE ROUND-3 AUDITOR AND WORTH RECORDING: all 18 \"an earlier draft of this report\" self-corrections were checked against the real 1700 and 1900 drafts recovered from git, and every one is TRUE - no false self-correction. Every pillar blend, the moat average, MTF 40.34, risk/reward 43.22, the scenarios, the probability-weighted target, the stop at 1.33 ATR and all three session counts reconcile. The warranted multiple reproduces from scratch at 21.6202 trailing and 18.8002 forward, and bisecting for 12.5939x returns g = 2.294%. || CORRECTED BY ROUND 12, the same remedy round 8 applied to this field for the JP Morgan pair: every oil position stated above is WITHDRAWN and none of it describes the published artifact. 'Brent US$98.17' is the DECEMBER contract, not the front month (round 8); 'down 5.5%' set December against a front-month baseline when the like-for-like move is -0.3% (round 8); 'the price has come off its spike' and 'the direction of the error was CONSERVATIVE ... harsher than the facts warranted' are the FLATTERING mitigation the body withdrew (round 8) and the note withdrew (round 9); 'labelled front-month prints in a 97.6-98.3 range' became 97.1-98.2 at round 6 and then the front month at 103.53 at round 9; and 'materially below the macro state's 103.87' is withdrawn (rounds 9 and 12). The round-N carve-out lets a round-N field NAME a later-withdrawn figure; it does not license a present-tense claim about the current artifact.",
  "post_audit_fixes_round4": "ROUND 4 PASSED WITH ZERO BLOCKERS. This is the first blocker-free pass, so audit_passes goes 0 to 1. Two more are needed before any open MAJOR may ship disclosed, which is beyond the four-round non-convergence limit - so this name PARKS rather than publishes, with the pass banked.\nTHE GENERALISED LESSON, and it is the auditor's framing: all four majors were A CORRECT NUMBER IN A WRONG WRAPPER. The right value inside literal braces; the right NAV arithmetic under a ratio-space label; the right oil level with no cause attribution; the right share count against a citation to a document stating a different one. Three rounds of string sweeps could not see any of them by construction, because every sweep asks whether the withdrawn value is gone and the new value present - and all four pass that test. SWEEP THE WRAPPER, NOT JUST THE VALUE. This generalises round 3's withdrawn-claim-surviving-as-an-integer into its class.\nM1: the share counts were cited to the FY2025 20-F, a 31 December 2025 document that states DIFFERENT counts (165,877,764 and 129,054,192), and section 15 credited Exhibit 99.1 with \"the share-count reconciliation\" when that exhibit contains NONE of the three figures - only the rounded US$576k and Treasury NIL, which is the basis of the withdrawn 288,000,000. The figures live in dlo-20260630.htm, the interim financial statements filed as the PRIMARY document of the same 6-K accession, which was declared nowhere. This is the identical class to round-2 M5 (slide 13, one exhibit over) and the remedy then - declare the document - was not applied here. Now declared as q2-interim with the note verbatim, and the section 3 and section 15 references re-pointed. The US$576 is the SUM of the per-class roundings 344 plus 232, which is exactly why dividing it by par gave 288,000,000.\nM2: section 4's fragility percentages are computed by derive_fragility.py in the space of the quantity it perturbs - here the forward EARNINGS base - and the ratio is proportional to its reciprocal, so the two are not interchangeable. The generated sentence reported NAV-space fractions under ratio-space wording, including the phrase \"NAV units\" on a report whose own valuation model says in terms that it is an earnings anchor and not a NAV one. Translated: per-input coverage is 86, 52 and 30 per cent against the 88, 56 and 34 printed, and the combined figure is 210 per cent rather than 178 - because 178 is the SUM of three earnings-space fractions, which corresponds to no ratio quantity. Every conclusion survives and NONE of the errors flatters: the rows overstate, the combined understates, the band is NOT ROBUST either way, no single input crosses the edge alone and the three together reach it. Published as a units warning rather than quietly re-typed, and filed as a generator defect.\nM3: no cause attribution for a sharp commodity move, which the Live-Verify List explicitly requires. WTI fell 9.8 per cent over the fortnight and Brent 4.2 per cent on the stamp session alone, after printing 106.60 on 24 September - ABOVE the macro state's level - so the move is not one-way. The attributed drivers are now recorded: OPEC and the IEA both cutting 2026 demand forecasts because of the Hormuz closure, Saudi Aramco shifting crude exports to the Persian Gulf, and de-escalation headlines around Iran and the Saudi-Yemen conflict. Recorded as attributed rather than asserted, and the provider disagreement is declared too - Trading Economics has Brent at 97.09 against the 98.17 computed here from the BZ=F front month, which is the figure used because it reproduces.\nM4: the literal token {0.6699} rendered with curly braces in section 2's Gate 3 row and in section 4. The digits were right and matched the other thirteen renders; only the rendering was wrong. I CAUSED IT in round 3's own minor fix, with a blanket replace of a token string that is a SUBSTRING of the doubled brace run an f-string needs - the identical error I had already made with the pct2 format. Blanket string replacement inside f-strings is now banned in this process: change the token's format or interpolate the Python value, never splice a literal into a brace run.\nMINORS. m1 a Form 144 listed as 7 Aug where EDGAR shows 7 Jul, the out-of-order listing being the tell. m2 the Quality sensitivity offered three reversal routes as though each cleared the 65 line; margin trajectory 44 to 68 and the balance sheet 58 to 90 are each +4.80, landing on 64.90 and still Medium - only the benchmark route at +5.00 clears. m3 the unadjusted free-cash-flow row's one-decimal components sum to 388.3 against a published 388.4, now disclosed as a components-rounding artefact in a report that makes rounding order explicit elsewhere. m4 relative strength 15.9 and 17.0 were labelled SUPERSEDED AND CORRECTED when they are a changed market observation, not a corrected error - rightly excluded from the five-corrections count and now described as the delta it is. m5 the yield-curve reading struck a 59bp spread from a 2-year dated 18 September and a ten-year dated 29 September, twelve sessions apart, now disclosed as indicative. m6 the round-3 fix log said the builder re-reads the trail from a sidecar; it syncs from the calibration beside the output and the sidecar is populated by hand, which is the mechanism that actually works - flagged so a later round does not rely on an unpopulated file. m7 section 15 printed IFRS receivable and payable lines beside a merchant-float series computed on the yfinance normalised basis without noting the bases differ.\nALSO FIXED THIS ROUND, from the Layer 0.5 pass: two NOT-SUPPORTED rows where \"more than 60 countries\" and \"hundreds of payment methods\" were cited to two sources carrying no part of the claim.\nAND A P0 ON THE GATE ITSELF, built and closed: claim_census audited 76 of the report's 106 citation sites, and the 30 it dropped were systematically the highest-risk - all four cites to the 20-F, the only one to the insider record, both to the sponsor's 13D/A and the only one to the EDGAR index. So the audited concentration series, the Trigger 4 disposition, the sponsor unwind and the dated nil-result had never reached Layer 0.5 in four rounds, and they are precisely the four classes rounds 1 to 3 found broken. A resolved cite id now makes a row by construction and the sentence is stored whole; coverage 76 to 102 of 106; self-test 15 of 15.\nDISAGREEMENT recorded: the auditor would have graded the withdrawn peer-cheapness claim \"loose\" rather than \"false\", since the peers it names grow 19.7 to 34.1 per cent against DLO's 55.8. The published replacement is narrower and correct either way, so nothing turns on it.",
  "post_audit_fixes_round5": "BLOCKER b1 (= round-4 m7, = source-auditor r079): the merchant-float series was labelled 'trade payables less all trade receivables', which does not reproduce - and an earlier round read that wrong label, found the mismatch, and 'corrected' the SERIES from 203.4-to-400.1 to 189.1-to-380.8. The original series was always right. It reconciles to the thousand under the definition dLocal's own release gives: trade payables PLUS other tax liabilities less ALL trade receivables. 1,554,943 + 19,351 - 1,149,456 - 24,737 = 400,101 and 691,081 + 14,330 - 487,320 - 14,698 = 203,393. Relabelled to dLocal's own 'merchant working capital', both reconciliations published inline, and the self-inflicted error recorded in superseded_detail: a correction that took a right number and made it wrong. || Layer-0.5 r020 (NOT-SUPPORTED): the report attributed the working-capital normalisation to Q1's US$14.7m of Adjusted FCF when the release says the temporary effects WEIGHED ON Q1 and normalised in Q2 - the subject was inverted. Fixed in the prose AND in the q2-6k note (it had been listed for fixing in round 3 and never applied - the same regression class as b1). || r080: the average repurchase price is STATED in the interim statements as US$12.49 on 6,887,815 shares for US$86,062k; the report had 12.48, which is 86.1 over 6.9 - a rounded numerator over a rounded denominator when the exact figure was in the document. || MINOR: the rounding note misquoted unadjusted TTM FCF; now 388.4. || MINOR: the oil levels were read intraday on the stamp date and presented as settles with a reproducibility claim; re-reading returns 97.57 and 89.84 on volumes two orders of magnitude below normal, so they are now labelled front-month prints in a 97.6-98.3 range and the reproducibility claim is withdrawn - the level only has to establish that oil sits materially below the macro state's 103.87, which holds across the whole range. || The TWO round-5 auditors CONTRADICTED each other on the oil cause attribution and the disagreement is published rather than quietly resolved: the source auditor called the Saudi-to-Persian-Gulf pivot geographically incoherent; the Layer-2 auditor tested it and found the opposite. Checked independently - the Layer-2 reading is right, because the objection's premise is wrong. Drone strikes hit the East-West pipeline 10-11 September and Saudi shut it, removing the ~5 mb/d Red Sea bypass, so loadings pivoted BACK to Ras Tanura (JP Morgan: ~2.9 mb/d through Hormuz over six days vs ~700k bpd in August) before flows were restored and Red Sea exports recovered on 29 September. The sequence as stated here is round 5's record. CORRECTED BY ROUND 8: the word 'verified' and the claim that it 'is now in the report' are both WITHDRAWN. Rounds 6 and 7 found that no source carries the JP Morgan pair (about 2.9 mb/d over six days against roughly 700,000 bpd in August) and that the ~5 mb/d pre-strike throughput is an estimate rather than a sourced figure; all three are withdrawn and the published note now carries the on-record pair instead (Saudi exports about 2.45 mb/d in August rising to roughly 5.3 mb/d in September). A reader of this field was being told the pair was verified and present while the data-sources note said it could not be sourced and was out. The auditor that TESTED its hypothesis beat the one that reasoned from a premise. || Citation routing and note hygiene (r008 and six siblings): 'hundreds of alternative local payment methods' appears in no document and no declared note - withdrawn at all three sites, replaced by the verbatim 'more than 60 countries'; the Tier-0 clause, the 'record' attribution and the 0.12pp take-rate line re-pointed to the sources that actually carry them; the FOMC date attribution corrected; the layout caveat added to the peers note; and the balance note's 'total equity' corrected to equity attributable to owners. || All 8 round-5 withdrawals are now in superseded_values with withdrawn_at_round 5, which is what will catch a survival next round instead of hoping against one. || RECORD CORRECTION, found by the round-6 auditor: three figures in this field were published as 'US.7m', 'US.49' and 'US,062k' - US$14.7m, US$12.49 and US$86,062k with the dollar sign and the leading digits eaten by shell expansion of $14, $12 and $86 as unset positional parameters, because the fix log was passed through a double-quoted shell string. The audit record of this round's own blocker was the thing rendered unreadable. close_audit_round.py now refuses a fix log carrying that signature (TRAIL-SHELL-EATEN). || CORRECTED BY ROUND 12, the same remedy round 8 applied to this field for the JP Morgan pair: every oil position stated above is WITHDRAWN and none of it describes the published artifact. 'Brent US$98.17' is the DECEMBER contract, not the front month (round 8); 'down 5.5%' set December against a front-month baseline when the like-for-like move is -0.3% (round 8); 'the price has come off its spike' and 'the direction of the error was CONSERVATIVE ... harsher than the facts warranted' are the FLATTERING mitigation the body withdrew (round 8) and the note withdrew (round 9); 'labelled front-month prints in a 97.6-98.3 range' became 97.1-98.2 at round 6 and then the front month at 103.53 at round 9; and 'materially below the macro state's 103.87' is withdrawn (rounds 9 and 12). The round-N carve-out lets a round-N field NAME a later-withdrawn figure; it does not license a present-tense claim about the current artifact.",
  "post_audit_fixes_round6": "BLOCKER 1 (r011) - round-5's merchant-working-capital relabel landed in the appositive clause and NOT in the sentence subject, so the withdrawn label 'payables less all receivables' was still the grammatical SUBJECT of the float series in section 3, and the same sentence then said that definition gives a different number. superseded_sweep had reported 0 survivals over 33 declared values because it was CASE-SENSITIVE and the survival was sentence-initial, therefore capitalised. One capital letter cleared five consecutive rounds of sweeps. Sweep fixed (case-insensitive for prose values, numerics keep their boundaries) BEFORE the prose, and it then caught the live blocker; it also immediately caught the same fix missing from its sibling source note, which is the dominant failure class of this whole run. || BLOCKER 2 (r047/r068) - the section-15 oil note withdrew the reproducibility justification and then re-asserted it 250 words later in the same paragraph, in the one note whose job is to record that it was withdrawn. Re-justified on CONSERVATISM, which is the ground that actually holds: 98.17 is the HIGHER of the two declared sources and a higher energy price is the harsher reading for a name selling to emerging-market consumers. The session has since settled and the settles land inside the stated band - Brent December 98.03 and WTI November 90.42, the latter matching the 90.43 read intraday to a cent. || MAJOR 1 (M1) - the combined fragility coverage was published as 210%, a figure obtained by SUMMING the three single-input NAV moves and converting the total into ratio space, which is the exact convention the paragraph it sits in exists to warn against. The generator perturbs NAV with the warranted multiple held fixed, and two of the three declared inputs are things the warranted multiple depends on, so the anchor is nonlinear in them and no sum of separate moves equals the joint one. Re-evaluated the two-stage model with all three at their adverse ends at once - near growth 10 percent, a 6.00 percent ten-year taking r to 11.50 percent, FY2027 EPS 1.03245, and the forward divisor at 1.10 BECAUSE IT IS (1 + near growth) AND MOVES WITH THE INPUT BEING STRESSED - giving warranted 14.6600, actual 13.3275, ratio 0.9091 and coverage 183.9 percent. The additive route overstated by 26 points. Rewritten rather than digit-swapped, because swapping 210 for 184 would have left a paragraph whose method contradicted its own thesis. The divisor is published: the first recomputation done in checking this held it at 1.15 and returned 215.6 percent, which is the mixed-basis trap the framework already names, caught on the fix itself. derive_fragility.py now accepts a declared valuation_model.simultaneous with a reproducible basis and refuses to present an additive sum in simultaneous language. || MAJOR 2 (r010) - trade payables less trade receivables is 405,487, so 405.5 and not the 405.4 published; the difference from 400,101 is 5,386, so 5.4m and not 5.3m; and its cause is other receivables LESS other tax liabilities, a NET of two lines. The note said the difference WAS the other tax liabilities, which is false on its own four figures: those alone move the measure the OTHER way, by 19.4m to 380,750 - which is precisely the 380.8 a later round wrongly adopted after reading the wrong label. Fixed at BOTH sites. || MAJOR 3 (M3) - an earlier draft said 'the 59bp spread is struck twelve sessions apart'; WITHDRAWN, it is seven (21, 22, 23, 24, 25, 28 and 29 September); twelve is the FRED look-back WINDOW, a different quantity. Introduced by round-4's own fix m5. || MAJOR 4 (M4) - no Layer-0.5 cite receipt existed on the calibration, so 'did the source auditor read THIS artifact?' was unanswerable. Stamped, and RECONCILED rather than just stamped: post_audit_fixes_round4 claims coverage went 76 to 102 of 106, which was true of the ROUND-4 artifact, while the current figures are 104 cite_ids carried by 89 cited census rows against 109 href anchors in the report. The round-4 numbers stay in that field as the record of round 4 and are superseded in the receipt, because the trail must not assert a count the artifact contradicts. The receipt also records what the auditor could NOT do: 31 of 93 rows rest solely on point-in-time provider payloads and were checked for internal consistency only, which is a limitation and is recorded as one. || MAJOR 5 (M5) - three figures in post_audit_fixes_round5 were published as 'US.7m', 'US.49' and 'US,062k' in the section-14 embed: US dollar 14.7m, 12.49 and 86,062k with the dollar sign and leading digits eaten by shell expansion of unset positional parameters, because the fix log was passed through a double-quoted shell string. The audit record of round 5's own blocker was the thing rendered unreadable. Repaired through the sidecar (close_audit_round refuses out-of-sequence closes, so round 5 could not be re-closed) and close_audit_round now refuses a fix log carrying that signature, while still allowing a correction to NAME the eaten values it withdraws. || NOT-SUPPORTED (r080) - 'the US$13.60 at which General Atlantic exited' and 'your departing sponsor'. The 13D/A records the sale of 9,842,559 Class A shares at an average of 13.60 on 17 August 2026, and its cover page shows General Atlantic DO B.V. STILL HOLDING 30,218,380 shares, 16.6 percent of Class A, with the group at 36,814,136 and 21.4 percent. It fails on every referent, and the report's own section 14 had it right twice. Rewritten to 'sold', with the retained stake published, because the retained stake is the more important fact: the overhang is reduced, not removed. || MIS-ROUTED - the 0.12pp take-rate line was cited to the Goldman conference, which carries the high-60s and the floor language but no 0.12 and no 12 basis points; the figure is the release's own 0.84-to-0.72 arithmetic and the single-merchant attribution is management's own on the Q2 call, which is how the report routes it in section 3 and in the gate array, so the citation contradicted the report's own routing. The 15-16 September FOMC date is nowhere in the macro state file that was cited for it and belongs to the Fed's own 2026 calendar. The 52-week intraday range and the five-year decline were both cited to the ratios payload and belong to the price series and the news note. || UNCITED - the SPY and XLK relative-strength block had no citation at all AND no declared source covered the benchmarks: the word SPY appeared in none of the 27 source notes, on a block carrying 30 percent of the risk-reward build. A benchmarks source is now declared. NOTE, corrected in round 7: this log claimed it was 'cited at all three sites' and that was FALSE - the resolved marker reached exactly ONE reader-visible site (the section-7 relative-strength row). The section-1 exec-summary figures carried no citation, and the two machine-field sites carried the DLO price-series marker beside SPY and XLK figures the prices note does not contain. Round 7 cited the exec summary to benchmarks and rewrote the machine-field sites; the literal [[src:prices]] marker that rendered unresolved in the section-14 embed is gone with it. The 1.72x distribution-cover block stated every component uncited while the very next sentence carried the citation. || PARTIAL - the published ATR(14) 0.3459 is a SIMPLE 14-period mean of true range; Wilder's smoothing gives 0.4117, which is what the project's own indicator tool returns, and the stop is 13.21 on that variant rather than 13.30. Neither is live at the stamp price, but the note was scrupulous about the Wilder-versus-Cutler RSI distinction and silent on the ATR one, so the variant is now named. The FY2024 reversal mixed bases: an earlier draft's minus 167.2m is WITHDRAWN - it is the provider's TOTAL change in working capital, not the merchant measure the series is built on, whose FY2024 change is 146.0m per the release. 'The definition the release gives' overstates: the release defines the CHANGES, not a balance-sheet level, so the level series is this report's own faithful construction on the three line items it names. The peers note said its two lists 'differ in LAYOUT only', which is false on the note's own text - the first omits a growth figure for GPN, FOUR, EVTC and MQ. The q2-interim note is cited for the buyback average and total and quoted neither; it now carries the sentence. The q2-deck source carried an earlier draft's label 'EX-99.3 / EX-99.4', WITHDRAWN because the 6-K cover lists 99.4 as the presentation and slide 13 sits in 99.4. an earlier draft said 'an aggregate that is not cash at all', WITHDRAWN because it overstates: 91 percent of it is cash and the defect was the corporate-versus-merchant split, not the asset class. || COULD-NOT-SETTLE, disclosed - the auditor found no source carrying the JP Morgan pair (about 2.9 mb/d through Hormuz over six days against roughly 700,000 bpd in August); both figures are WITHDRAWN and replaced with what is on the record on a different metric, Saudi exports of about 2.45 mb/d in August rising to roughly 5.3 mb/d in September. The East-West line's pre-strike throughput of 'about 5 mb/d' is an estimate, not a sourced figure; capacity is about 7 and the restored flow about 3.5, and the note now says so. 'OPEC and the IEA both cutting their 2026 demand forecasts' flattened a real split - the IEA sees demand FALLING 2.5 mb/d while OPEC still sees GROWTH trimmed to 580 kb/d - and both revisions landed around 11-12 September, BEFORE the fortnight they are offered to explain; the note now states the split and the timing. || MINORS - the FCF yield of 5.07 percent is inside the framework's Attractive band of 5 to 8 percent, and an earlier draft's 'Fair, on the boundary of Attractive' is WITHDRAWN, having understated it by one band; no score consumes the label. gates_caution[0] said '(Gate 4 adjacent)' where section 2 renders take-rate compression as Gate 6 and assigns Gate 4 to dilution and accounting, and the parenthetical was BYTE-IDENTICAL to the 11 September calibration, having crossed the run boundary with no carry record inside a field otherwise rewritten twice this run - stale_text compares whole fields, so a stale fragment inside a rewritten one is invisible to it. Three prose garbles fixed ('measured as measured', a doubled predicate where the quoted clause already carried one, and an orphan fragment opening mid-sentence after a full stop). an earlier draft said 'exactly one other name has ever sat on that cell', now WITHDRAWN as true only for the latest report per ticker; the archive holds six more and THREE published BUY or better on the longer horizons (LUNR three times, MNO.TO and SOFI on 31 July), which is contrary precedent running against the branch chosen here, so they are named rather than hidden behind 'currently'. The stated oil band excluded the note's own second declared source at 97.09 and is now 97.1-98.2 at all three sites. || PROCESS - a second sweep mechanism was fixed mid-round: _FRAMED matched framing phrases with LITERAL spaces, so 'Correcting an earlier\\ndraft' wrapped across a line break read as an assertion of the thing it corrects. Every multi-word framing phrase wrapped in hand-authored prose was invisible, which is a false-POSITIVE generator on exactly the fields most likely to be wrapped. All whitespace in the pattern is now \\s+, with cases proving the wrapped form clears, the one-line form still clears, and a bare assertion still fires. Sweep self-test 32/32.",
  "post_audit_fixes_round7": "BLOCKER (Layer-2 B1, source NS-1) - the section-15 `oil` NOTE went on asserting all three figures the BODY had withdrawn in round 6: the East-West pipeline's pre-strike throughput of 'about 5 mb/d' and the JP Morgan pair of 'about 2.9 mb/d' over six days against 'roughly 700,000 bpd' in August. Round 6's log asserted 'both figures are WITHDRAWN and replaced with what is on the record' and 'the note now says so'. The note did not say so: the replacements appeared only in the calibration narrative and the fix log, and ZERO times in the note itself. The note now carries the on-record pair (Saudi exports about 2.45 mb/d in August rising to roughly 5.3 mb/d in September), states the line's sourced capacity of about 7 mb/d against the restored flow of about 3.5, and records all three withdrawals explicitly. || ROOT CAUSE, and it is the reason five consecutive rounds of sweeps cleared this report while survivals sat in it: superseded_sweep's `_FRAMED` pattern listed ORDINARY NARRATIVE VERBS as withdrawal language. The note read 'the Red Sea bypass that HAD BEEN carrying about 5 mb/d' - a live assertion - and `had been` matched as framing, so the sweep printed '0 survival(s) over 52 superseded value(s), every occurrence sits inside an explicit correction'. A cleared check is not evidence a check ran. `had been`, `used to`, bare `replaced`, bare `stale`, `moves` and `revised` are gone; the supersession senses survive as `this replaces` and `supersed\\w*`. Removing them exposed four legitimate corrections written in this project's own idiom, so `an earlier round`, `a prior/previous round`, `wrongly`, `garble\\w*`, `was/were published as` and `that round published` were added - the distinction being that those phrases describe the ACT of reporting a withdrawn value, which narration does not. The fixed sweep then found the blocker immediately. || SECOND SWEEP GAP, same round: the sweep is string-exact, so a withdrawn figure surviving in ABBREVIATED form was invisible - 'about 5 mb/d' against a note reading '~5 mb/d'. Case was round 6's mechanism and paraphrase was the other; abbreviation is a THIRD, and unlike paraphrase it is a closed class. A value carrying a digit is now also searched for its unhedged remainder (about/approximately/roughly/around/circa/~) and its thousands abbreviation (700,000 -> 700k), with a left digit boundary so '5 mb/d' does not match inside '2.5 mb/d' - which it did, flagging the IEA's demand figure as a survival of the withdrawn Saudi one - and with span de-duplication so one occurrence is never reported twice. Self-test 46/46. || THIRD GAP: the CLI's --from-calibration mode never received a spec, so it silently skipped `spec.sections.data_sources[].note` - exactly where this round's blocker lived - while still printing a clean pass. It now auto-locates the sibling spec and warns loudly when it cannot. A sweep reporting a clean pass over a surface it never scanned is worse than no sweep. || MAJOR 1 - '30,218,380 shares, 16.6% of Class A' reconciles with nothing. On the denominator the 13D/A itself declares (172,183,455 Class A outstanding at 30 June 2026) that block is 17.551 percent, and the filing prints 17.6 for the identical 30,218,380 holding two rows down under General Atlantic Cooperatief, while 36,814,136 over the same denominator gives 21.38 percent and rounds to the published 21.4. The report had quoted the one cover row inconsistent with both its own filing's denominator and its two siblings, and declared no disagreement - on the figure round 6 itself called 'the more important fact'. Now publishes 17.6 percent, shows the arithmetic, and declares that the source disagrees with itself. || MAJOR 2 - the five-year 75 percent decline was left UNCITED at both sites after round 6 re-pointed only the 52-week half of the same compound finding; and `prices` is declared as 335 raw bars to 30 Sep, structurally incapable of carrying a five-year claim. Cited to `news`, which carries it, and labelled a third-party reading rather than a computed one. || MAJOR 3 - `cite_receipt.coverage_reconciliation` called a round-6 PRE-FIX snapshot 'the current figures' in the field written expressly so the trail would not assert a count the artifact contradicts. The artifact contradicted it by 10 anchors, one source, five census rows, five cited rows and 11 cite_ids. Every count is now labelled with the round that measured it, and the five census rows created AFTER the round-6 auditor's read are disclosed, with the round-7 finding that the four uncited ones are self-referential framework statements needing no source. || NS-2 - round 6's log claimed the new benchmarks source was 'cited at all three sites'. It reached exactly ONE reader-visible site: the section-1 exec-summary figures carried no citation at all and the two machine-field sites carried the DLO price-series marker beside SPY and XLK figures the prices note does not contain. The exec summary is cited, the machine-field sites rewritten, and the overclaim corrected in the round-6 log itself. || NS-3 - round 6's log claimed 'the variant is now named'. The BODY named it; the `prices` NOTE did not, two clauses before disambiguating Wilder-versus-Cutler RSI. The note now carries the simple-mean basis, Wilder's 0.4117, the 13.21 alternative stop and the 6.80:1 / 14.98:1 ratios that variant implies. || MIS-ROUTED - US dollar 146.0m merchant working-capital change cited to `q4-6k`, which has no such figure, re-pointed to `balance`; the capex pair cited to `balance`, which carries no capex line, re-pointed to `ratios`, and the `ratios` note's own false cross-reference to the balance entry removed; equity cited to `ratios`, which carries market cap not equity, now also cites `balance`. || UNCITED - the General Atlantic retention clause carried no marker; the 'record' in 'record gross profit' belongs to the deck, not the release, and is now cited there; 'the seller is still the largest outside holder' is an unsourced superlative that nothing in the 28 sources could establish, softened to the 21.4 percent it can; and the 'two to three times the S&P 500's daily range' comparison is now stated as indicative and explicitly uncited, because no declared source carries the index's range. || PARTIAL - the `benchmarks` note asserted two mutually exclusive bases, 'total-return windows' AND 'auto_adjust=False'. The figures are TOTAL returns: on price only the benchmarks read SPY -0.58/+2.26 and XLK +4.96/+5.46, the gaps being the 19 Sep quarterly distributions of about 1.89 on SPY and 0.23 on XLK. The comparison IS like-for-like, but for a different reason than the one given - DLO paid no dividend in either window, so its price return is its total return. On a project carrying a standing auto_adjust trap the label had to be right. || PARTIAL - the `q2-interim` source NAME called dlo-20260630.htm the accession's PRIMARY document while the note conceded parenthetically that the cover lists it as Exhibit 99.2; both that name and `q2-6k`'s matching claim now say EXHIBIT 99.2. || MINOR - round 6 spliced its buyback sentence into the middle of 'a 31 Dec 2025 document stating DIFFERENT [...] counts)', breaking the host sentence while the same log reported 'three prose garbles fixed'; moved to its own sentence. The section-7 MTF sensitivity published 'Timing 49.48' where the report's own legs give 42.90x0.30 + 43.22x0.20 + 51x0.15 + 61x0.18 + 55x0.17 = 49.494. gates_caution[5] carried a literal double-bracket src marker, which renders UNRESOLVED in the section-14 embed because the resolver never reaches calibration fields - the construct round-3 minor m5 withdrew, surviving in a sibling field. r092's correction left its quoted clause stranded with an unbalanced quote. || FOURTH TOOL FIX, found by the fix itself: the builder's TOKEN-RETYPED check counted literals with a plain substring match, so publishing '17.551%' for the General Atlantic percentage tipped `target_price` (17.5) over the retype limit and failed the build on a figure that is neither the target price nor anywhere near it. Numeric boundaries added - the same missing-boundary class as the sweep's, in a second tool, in the same round. Proven still to fire on three bare occurrences and to stay silent on prefix collisions.",
  "post_audit_fixes_round8": "THE FIRST REAL ANALYSIS DEFECT SINCE ROUND 4, and it is a load-bearing number. The published Brent level of 98.17 is the DECEMBER contract, not the BZ=F front month the report called it. Verified from the price series rather than argued: BZ=F closed 103.53 on 30 September, and its 18 September close is 103.87 - byte-identical to the macro state's Brent, so the macro report and this report read the SAME ticker and this was a contract-basis error rather than a provider disagreement. BZ=F then opens 97.96 on 1 October, the November-to-December roll gap that produces the ~98 figure. THREE CONSEQUENCES, the third being the serious one. (1) The label: the oil source NAME and its note both said front-month. Changed. (2) The comparison: 'down roughly 5.5% over the fortnight' set a December level against a front-month baseline. Like-for-like front month, Brent went 103.87 to 103.53 - essentially FLAT at -0.3% - against WTI 100.30 to 90.42 at -9.8%, and the WTI leg being correct and like-for-like is exactly what makes the Brent leg a basis error rather than a bad pull. Changed, with the December band kept and labelled as December. (3) A published bear-case break condition was INVERTED: 'oil back above US$100 - it is US$98.17 Brent on the stamp date' read as NOT MET, when on the front-month basis the report uses Brent was already 103.53, so the condition is ALREADY SATISFIED and that leg of the bear case is live today rather than contingent on a future move. Rewritten. AND THE DIRECTION OF THE ERROR WAS FLATTERING, which is the class the results-page audit says to hunt: the report had granted itself a mitigation - 'cheaper oil is a smaller tax on the emerging-market consumer, so this leg was harsher than the facts warranted' - on the strength of a fall that did not happen. Withdrawn. The energy headwind is fully intact and the harsh macro leg is correctly harsh. NO PILLAR MOVES, and this is stated in the report: the macro overlay's four legs are the Fed path, the VIX, the curve and the sector/EM regime, none of which takes an oil level as an input, so withdrawing a flattering adjustment SUPPORTS the published score rather than challenging it. The honest replacement narrative is published: the Brent-WTI spread blew out to US$13.11 from US$3.57 a fortnight earlier, which is the Hormuz signature, since Brent is the waterborne global benchmark the strait gates while WTI is landlocked US crude - evidence the chokepoint is BITING, not evidence the shock is easing. || BLOCKER - the capex figure of US$40.49m was cited to `balance`, in a sentence whose own parenthetical says that citing capex to a source with no capex line WAS the superseded defect, and the `ratios` note in the same artifact says the components are 'stated here rather than in the balance entry ... which carries no capex line at all'. A second site published the same figure with no citation at all. Both now carry `ratios`. Round 7's log asserted this re-pointing had happened; it had reached the note and neither body site. || MAJOR - `cite_receipt` carried round-6 values in UNLABELLED scalar fields under a round-7 stamp (27 sources against the artifact's 28, 93 census rows against 103, 89 cited against 99, 104 cite_ids against 121, 109 anchors against 126), and its prose then presented round-7 measurements as 'the published artifact' when round 7's own fixes post-dated them. Same defect, one generation apart, in the field written expressly so the trail would not assert a count the artifact contradicts. The recurrence is STRUCTURAL: this receipt lives in the calibration, the calibration renders the report, and the counts are measured ON the report, so any count stamped here changes the thing it counts and there is no stable value to write. Fixed by putting the round in the KEY NAME - a consumer reading `census_rows_at_round6` cannot mistake it for a current figure - plus a `counts_at_round8` block and the full historical series. || MAJOR - `post_audit_fixes_round5` called the withdrawn JP Morgan pair 'the verified sequence' and said it 'is now in the report', while the data-sources note said no source carries it and it is out. The round-N-before-N carve-out permits NAMING those figures in a round-5 field; it does not permit a present-tense claim about the current artifact. The word 'verified' and the 'now in the report' claim are withdrawn by an appended clause, which is the remedy this field already has precedent for. || MAJOR - `superseded_detail`'s `now` slot published the oil band 97.6-98.3, which was itself withdrawn at round 6, so one quantity had two published values and the one presented as CURRENT was the superseded one. The `.superseded_detail` path WAS wholly exempt from the sweep by design (narrowed at round 11 to `value`/`what`/`was`, with `now` and `why` swept, and made clause-local at round 12), to stop every declared value self-matching; that exemption is right for the `was` slot and is exactly what hid a withdrawn value in the `now` slot. Recorded as a tool gap, not only an instance. || MIS-ROUTED and UNCITED, from the source audit - the hike magnitude was cited to `econ-cal`, whose own note now disclaims it ('the HIKE itself is the macro state's, not this calendar's'), so the clause carries both markers; 'more than 60 countries' was uncited at the section-3 business-description site; the `ga-13da` note did not carry the 30,218,380 retained stake or the 16.6-versus-17.6 contradiction routed to it, and called the 17 August Form 144 'unrelated' when it is General Atlantic DO B.V.'s OWN notice for the identical 9,842,559 shares. || PARTIAL - 'both verbatim from the release' overstated: the country count is verbatim, the One-dLocal clause is the release's words with reconstructed punctuation. 'VOLUME-BACKED' had no stated threshold, so a bare above-average reading admits 2 Sep at 1.08x; the 1.5x the entry rule itself uses is now stated and the alternative disclosed. The three-month average volume of 2,284,871 is a point-in-time quote field that no longer reproduces - a re-read returns 2,131,985 against a 63-bar computed mean of 2,120,870 - and is now labelled as read on the stamp date and used only as the denominator of the stamp-date ratio. || RESIDUE from round 7's own fix round, four sites: a stranded 'years.' left by a citation insertion; 'the seller still holds 21.4% of Class A holder' left by the superlative softening; the Mexico quote's duplicate fragment surviving inside the sentence announcing the doubling was fixed; and 'measured measured' left when round 6 withdrew 'measured as measured'. All four are the same class - the replacement text read against its immediate NEIGHBOURS rather than only at the target site. || Also cleared a CITE-ABSENCE warning by saying what 'no mechanical reason to act' is a conclusion FROM - this report's own entry and exit rules, none triggered at the stamp price - rather than leaving it readable as a negative existence claim about sources. || NOTE ON THIS LOG, adopted at round 8: it records WHAT CHANGED and does not assert where anything landed. Rounds 6 and 7 each produced a blocker that was this log claiming completeness - 'the note now says so', 'cited at all three sites', 'the variant is now named' - and the claim, not the fix, is what the next auditor graded. The artifact is the evidence; the auditor's job is to check it, and this field's job is to say what to check.",
  "post_audit_fixes_round9": "BLOCKER - both round-9 auditors independently found the same thing: round 8's Brent correction landed in the body, the calibration and the section-14 embed, and NOT in the section-15 oil NOTE, which went on asserting three positions the body had withdrawn. (1) 'The level is used to establish that oil is MATERIALLY BELOW the macro state's 103.87/100.30' - true only on the December basis, which is the error round 8 removed. (2) 'the price has come off its spike, which cuts in the name's FAVOUR - a smaller energy tax on the emerging-market consumer' - the mitigation itself, verbatim in substance, in a note whose body counterpart withdraws it. (3) 'December is the figure this report scores, and the reason is CONSERVATISM ... it is the HIGHER of the two.' All three are now withdrawn in the note. And (3) carried something sharper than a stale clause: the conservatism argument INVERTS once the front month is admitted. 103.53 sits US$5.4 above both December reads, and for a name whose customers are emerging-market consumers a HIGHER energy price is the harsher reading - so scoring December would have been the LESS harsh choice, not the more. The note now states that the FRONT MONTH at 103.53 is the scored level and the December band is the forward strip, not the level. Note on why the deterministic sweep cleared this: the mitigation carries no figure, so every value-shaped check is blind to it by construction, and the withdrawal was never registered in superseded_values. Registered now. || MAJOR - the oil source was flagged fully-available while four strictly less-qualified sources in the same block carried the fallback mark. It withdraws its own reproducibility claim, withdraws three figures for want of any source, and declares an unresolved source disagreement folded into a band. Re-flagged partial. || MAJOR - section 5 described a 97.57 re-read as a 'front-month print'. BZ=F's own 30 September range was 102.16-103.96, so 97.57 is not reachable on the front month; it is a December read, while the 89.84 beside it IS a front-month WTI re-read (CL=F ranged 88.58-91.96). In the one paragraph correcting a front-month/December mix-up. The sentence now names the contract for each figure and states that the scored LEVEL is the front month at 103.53. || MAJOR - cite_receipt carried round-6 sha scalars and a round-6 'auditor' description under a round-8 stamp, while its own prose asserted that every count carries the round that measured it. The counts did; the two sha values and the auditor prose did not, and they were byte-identical across the round-6, -7 and -8 calibrations while `round` was bumped 6 to 7 to 8. || MAJOR - 'No pillar moves: the macro overlay's four legs ... take no oil input' gave a TIMING-pillar reason for a DRIVER-pillar claim. The oil evidence sits in the Driver current-state leg - 52, carrying 50% of a 56 pillar - which is the leg containing that very sentence. The conclusion was right and the machinery cited was the wrong machinery; the citable reason is that the leg scored 52 before the correction and scores 52 after, because the mitigation only ever lived in prose and was never scored. The auditor verified this the right way, by diffing the build string across the pre-correction and published artifacts. || SOURCE AUDIT, routing - CLEAN, and this is the result worth recording. Round 8's auditor had instructed that marker-level routing be audited in the RENDERED artifact rather than the census, because cite_ids is a per-sentence set and hides which marker sits where. Audited that way: 130 markers, each carrying exactly one href, across 27 distinct ids; all 106 census rows located in the rendered text; zero census-versus-rendered disagreements. The seam that hid two of round 8's findings is closed. || MIS-ROUTED - the operating-cash-flow figure of US$429m was cited to `ratios` by round 8's own capex fix, and the ratios note explicitly disclaims its cash-flow fields as 'not used anywhere in this report'. The figure comes from the quarterly cash-flow statements in the balance entry (140.522 + 92.782 + 195.54 = 428.84). Re-pointed. || PARTIAL - 'yfinance puts it at US$1.14373 on ten' and the EPS panel table's bare '10'. CORRECTED BY ROUND 10: this entry said 'the section-9 table', and the table is in SECTION 4 - section 9 is the multi-timeframe technical block and carries no n column at all. Round 10 names that misdirection as the likely mechanism of its own blocker: a fixer sweeping section 9 finds nothing and concludes the job is done. The table cell still read 10 after four prose sites and val_multiple_basis were corrected, because the withdrawn value survives there as a BARE INTEGER with no 'n=' prefix, which no string sweep can see - round 3's class exactly, when a withdrawn peer-ROIC percentile survived as the integer 88. The EPS-estimate depth is FOUR on both panels; 10 is numberOfAnalystOpinions, the RECOMMENDATION count the panel entry correctly uses for targets and grades. Corrected at four prose sites AND in val_multiple_basis, where the deterministic sweep caught it after the prose sites were done - the machine field is what the publisher reads and what the next run diffs against. || PARTIAL - the 20-F note said the concentration appeared 'three separate times, identically'. The 61/62/60 series does appear three times; the two/one/none progression appears twice, the business-section occurrence stopping at the series. || UNCITED - the unadjusted free-cash-flow row in section 5 rests on quarterly operating cash flow, which only the balance entry states. || MINORS - the body published WTI at 90.43 and the spread at 13.11, which do not subtract (103.53 - 90.43 = 13.10); the spread is struck off the 90.42 settle and now says so. The stamp-session volume of 1,415,414 is a point-in-time tape read - the final tape returns 1,431,700, which would make the ratio 0.84x, and the 20-session mean moves by exactly 16,286/20 = 814.3 with it, so the pair is internally consistent at read time and not reproducible after it; the note now carries that caveat on the stamp volume as well as on the three-month average. || NOTE - this log records what changed and does not assert where anything landed; the artifact is the evidence.",
  "post_audit_fixes_round10": "BLOCKER - the section-4 EPS panel table published the yfinance depth as a bare '10' in its n column, after round 9 had corrected four prose sites AND val_multiple_basis to FOUR. superseded_values registered 'on ten', 'n=10' and '(n=10)' as withdrawn at round 9, and none of those strings occurs in a cell reading just 10. The deterministic stack was right about what it checked: superseded_sweep reported 0 survivals over 81 values and lint_report 79 assertions with 0 skips. This is the second shipping of the class - CCI.CN carried a withdrawn peer-ROIC percentile as the integer 88 - and a sweep for small integers in table cells fires on every table, so there is no cheap check. The remedy taken is structural and is the one the operator already mandated for spine figures: the depths are now typed ONCE as N_EST_FMP and N_EST_YF and rendered into both cells and the prose, with the recommendation count held separately as N_RECS_YF because conflating those two fields WAS the defect. The column header now names its unit - 'n (EPS estimates)' rather than 'n' - since the ambiguity is what let a recommendation count sit in an estimate-depth column, and the paragraph beneath states the depth parity so the table is not the only place a reader can check it. The auditor tested the direction rather than assuming it: a live provider read returns 10 recommendations as 3 strongBuy + 6 buy + 1 hold, confirming 10 is the recommendation count and four the estimate depth. Nothing signal-affecting - both panel rows are Attractive and the ratio, band and valuation_score are untouched - but a reader comparing the panels read the UNSCORED one as the better-covered, which is the inference the correction existed to kill. || MAJOR - round 9's qualifier to the 20-F note landed and its NEIGHBOUR two sentences later still read 'The business section and IFRS segment note repeat the 61/62/60 series and the two/one/none progression', which would make the progression appear three times and falsified the count stated two sentences above it. The note now says the business section and the segment note each repeat the series while the progression is repeated by the segment note only - which is why the series appears three times and the progression twice. Same class as four of round 8's minors: the replacement read against its immediate neighbours rather than only at the target site. || MINOR - round 9's own log located the table in 'section 9'. It is in section 4; section 9 is the multi-timeframe technical block and has no n column at all. Round 10 named that misdirection as the plausible mechanism of its own blocker, since a fixer sweeping section 9 finds nothing and concludes the job is done. Corrected in the round-9 entry, with the bare-integer mechanism recorded there too. || MINOR - the stamp-session low of 13.655 carried no point-in-time caveat while the volume pair beside it did; the settled tape returns 13.65. The higher-low read against 29 September's 13.590 holds either way, and the 13.655 is the figure the published ATR reproduces from, so both are now labelled as read-time values. || NOT A FINDING, recorded because the auditor raised and then dropped it, and because its arithmetic was wrong in a way worth not propagating: the buyback average. 86,062,000 / 6,887,815 = 12.494819, which rounds to the filing's stated 12.49. The auditor's working gave 12.4978, which would imply a total consideration of 86,082,534 rather than 86,062,000; the conclusion it drew - no finding - was right regardless. This report publishes 12.49 and records 12.4948 in superseded_detail, and publishes neither of the auditors' ~12.498 values as a figure of its own - they appear nowhere outside this sentence, which names them in order to withdraw them. (Round 11 caught the earlier wording, 'carries neither 12.4977 nor 12.4978 anywhere', falsifying itself by containing both.) || NOTE - this log records what changed and does not assert where anything landed.",
  "post_audit_fixes_round11": "BLOCKER - superseded_detail[3].why asserted 'separately the date of an unrelated Form 144', a value registered as withdrawn at round 8, in service of a DIFFERENT correction (the 13D/A's filing date). The 17 August Form 144 is accession 0000950142-26-002365, General Atlantic DO B.V.'s OWN notice for the identical 9,842,559 Class A shares - the same transaction - exactly as the section-15 source note already said and as post_audit_fixes_round8 recorded. So the trail asserted a correction the artifact falsified, about a named SEC filing. || THE SURFACE, and it is the SIXTH one this run has found: the paths the sweep is EXEMPT FROM BY DESIGN. `.superseded_detail` was wholly exempt, because a block that publishes the what/was/now/why of each withdrawal necessarily names every withdrawn value and would otherwise fire against itself on every run. Round 8 found `97.6-98.3` live in a `now` slot and recorded the exemption as 'a tool gap, not only an instance'; round 11 found this one live in a `why`. Reaching an auditor twice is this project's own P0 bar, so the exemption is NARROWED rather than noted again: `value`, `what` and `was` NAME the withdrawn figure by construction and stay exempt; `now` and `why` describe the CURRENT state and the REASON, where a withdrawn value is asserted rather than quoted, and are now SWEPT. The framing test still clears the legitimate case where a `why` explains its own entry's withdrawal - which the round-11 auditor had independently established is four of the five cross-hits in the exempt family. Self-test 60/60. Running the narrowed sweep on the artifact immediately produced the blocker plus one more site the auditor's manual scan had classified as self-framing: superseded_detail[5].why names the withdrawn 7.5% twice, and the second occurrence sat outside the framing window, so it now names it as withdrawn where it appears. || MINOR - the section-7 Timing build displayed five addends summing to 48.72 against a printed total of 48.73, correctly computed unrounded at 48.726. The total was right and each addend correctly rounded; what was missing was the disclosure, which the free-cash-flow row already carries for the identical class. Now disclosed, with the displayed sum derived rather than typed. || MINOR - post_audit_fixes_round10 contained the self-falsifying clause 'carries neither 12.4977 nor 12.4978 anywhere', in a sentence containing both. Reworded to say they appear nowhere outside the sentence that names them in order to withdraw them. The substance was and is correct: 86,062,000 / 6,887,815 = 12.4948187, which rounds to the filing's stated 12.49, and the round-11 auditor confirmed that independently. || VERIFIED BY THE AUDITOR AND WORTH RECORDING: no re-freeze was needed, because superseded_detail is not among the decision lock's frozen fields - unlike gates_caution, whose prose has forced five re-freezes in this run. And 380,750 was independently re-derived to close a suspected off-by-0.1 that turned out not to exist. || NOTE - this log records what changed and does not assert where anything landed.",
  "post_audit_fixes_round12": "BLOCKER - superseded_detail[21].why asserted 'the level is used only to establish that oil is materially below the macro state's 103.87, which holds across the whole range' - a position withdrawn at round 9, and FLATTERING in direction, since the report's scored level is the front month at 103.53 against the macro state's 103.87, essentially flat. It should have gone at round 9 with its two siblings. Withdrawn now, with the scored level stated. || THE STRUCTURAL FIX, and the reason this is the third shipment from the exempt family. The auditor proved the sweep could not verify the fix EITHER WAY: handed the exact surviving string, it answered '0 survival(s) - every occurrence sits inside an explicit correction', because the clause BEFORE it withdraws the REPRODUCIBILITY claim and sentence-level framing cleared the lot. A check that cannot fail on a defect cannot confirm its repair. So framing in superseded_detail's ASSERTING slots is now CLAUSE-local: commas, semicolons, dashes and sentence marks all close the window, applied only to those slots because ordinary prose legitimately frames across a comma and tightening it everywhere would resurrect the false positives rounds 7 and 9 removed. Running it immediately exposed two bugs in my own first attempt, both found by running it on the artifact it was written for rather than by imagining cases: a bare '.' split DECIMAL POINTS, so '97.1-98.2' became '2 band - and note that the 97' and no framing could possibly sit in the clause; and a value registered at two different rounds (97.6-98.3 was withdrawn at round 6 and again at round 8 after a later draft reintroduced it) reported every survival twice. Both fixed, 64/64. || Also registered the SHORTER surviving form: the round-9 register held 'MATERIALLY BELOW the macro state's 103.87/100.30' and the survival dropped the '/100.30', so no string-exact check could reach it. || MAJOR - post_audit_fixes_round3 and post_audit_fixes_round5 asserted withdrawn oil positions in the PRESENT TENSE about the current artifact: Brent at 98.17, 'down 5.5%', 'the price has come off its spike', 'the direction of the error was CONSERVATIVE ... harsher than the facts warranted', 'labelled front-month prints in a 97.6-98.3 range' and 'materially below the macro state's 103.87'. Round 8 ruled precisely this impermissible and applied the remedy - an appended CORRECTED BY clause - to post_audit_fixes_round5 for the JP Morgan pair; it was simply never applied to these clauses. Applied now to both fields. The round-N carve-out lets a round-N field NAME a later-withdrawn figure; it does not license a present-tense claim about the published artifact. || MAJOR - delta_vs_prior said round 11 returning zero majors was 'the first round since round 4 to do so'. audit_route_note, in the same calibration and the same rendered section, records round 5 at zero majors and round 4 at FOUR. The correct statement is 'the first since round 5', and the error ran in the flattering direction by lengthening the drought. It had already propagated into round 12's dispatch brief, which is exactly the compounding this field is warned about - the next run diffs against it. || MINOR - cite_receipt.round read 9 on a round-11 artifact. Every count correctly carried its measuring round, so nothing was false, but 'did Layer 0.5 see the round-10 to round-12 changes?' was unanswerable from it. The receipt now records that the last full source pass was round 9, that rounds 10-12 were Layer-2 audits which re-derived numbers and checked routing without a census-by-census source pass, and that those rounds introduced no new external claim - which is why round 9's routing audit remains the governing one. || MINOR - the moat build printed '278, over five = 56' where 278/5 is 55.6. The published moat_score of 56 is the correct rounding and the report discloses exactly this on three other builds (60.10 to 60, 60.67 to 61, 48.73 to 49); it was missing on the one pillar the framework calls boundary-deciding. Now derived and disclosed. || NOTED, not changed - the auditor flagged that delta_vs_prior's caution diff lists 6 added / 4 removed while the changes box says three added and one off. Both are correct in their own frame (literal string diff versus semantic carry: 4 - 1 + 3 = 6, which the auditor verified by mapping each prior caution to its successor) and the field is generator-written, so no number is wrong and nothing is edited. || NOTE - this log records what changed and does not assert where anything landed.",
  "post_audit_fixes_round13": "ROUND 13 PASSED: zero blockers, the SECOND blocker-free pass of the run and the first of the current streak (round 4 was also blocker-free; round 5's blocker reset it). The auditor independently re-derived every published figure from the declared sources and confirmed all of it - the warranted multiple both for this run and, as a check that the model was not fitted to its answer, for the PRIOR run's 19.63; the implied-g solve; the fragility simultaneous case both ways; the full share/EV/FCF chain; both merchant-working-capital reconciliations; the buyback average at 12.4948; all five pillar builds; all three composites against HORIZON_W; and every session count. It also scanned all 316 table cells (114 short numeric) and confirmed no withdrawn value survives as a bare number anywhere - the round-10 class. Framework compliance clean in order, decision lock matching on all 24 frozen fields, all four source disagreements declared with the conservative side scored. FOUR MAJORS AND THREE MINORS, all one class, all FIXED rather than disclosed - open_findings stays absent, because majors may ship disclosed only after three consecutive blocker-free passes and this is the first. || THE CLASS, stated once because all seven are instances of it: round-N prose in an ASSERTING slot going stale, in the present tense, about an artifact that has since moved. Three of the four majors are invisible to any string-exact sweep - two carry no registered value at all and one drifted form completely - which is why the remedy recorded here is a per-round MANUAL READ of every superseded_detail now/why slot and every present-tense clause in post_audit_fixes_*, not a further sweep refinement. || MAJOR - superseded_detail[11].why said the capex figure 'also sat in the ratios source note, which has no capex line'. The auditor tested the historical reading against the 1700 draft in git and found it TRUE of that draft, which is the right call: the slot names the correct entry and the defect is purely the tense, because the published ratios entry now carries 9.910 + 9.738 + 11.490 + 9.349 and the BALANCE entry is the one without a capex line. Tensed. || MAJOR - superseded_detail[17].why re-asserted that the merchant-float series reproduces 'under the definition the release itself gives'. Section 15 withdrew exactly that framing at round 7: the release defines the CHANGES, not a balance-sheet level, so the LEVEL series is this report's own construction on the three line items the definition NAMES. The distinction matters because this finding moved Quality from 70 to 58 and withdrew two BUYs - a company disclosure and the report's own construction are not the same evidential weight. Corrected, with the withdrawn phrasing quoted. || MAJOR - superseded_detail[20].why said 'What IS verbatim is more than 60 countries and the One dLocal framing'. Round 8 withdrew 'both verbatim from the release' precisely because the country count IS verbatim while the One-dLocal clause is the release's words with the punctuation reconstructed, and section 3 carries that separation three clauses from where it quotes the clause. This slot conflated them again. It is string-form drift of the purest kind: the registered value and the survival share no substring, so no string-exact check could ever reach it. || MAJOR - post_audit_fixes_round2 asserted, present tense, that the per-country figures 'are on slide 13 of the earnings deck, EX-99.3/99.4'. Round 12 fixed superseded_detail[10] and registered that string but did not apply its own CORRECTED BY remedy to the round-2 field. Applied. The 6-K cover lists 99.3 as the Quarterly Report and 99.4 as the presentation; slide 13 is in Exhibit 99.4 alone. || MINOR - superseded_detail[21].now asserted that '.superseded_detail is exempt from the sweep by design', unqualified, when round 11 narrowed that exemption to value/what/was and round 12 made now/why clause-locally swept. Tensed. || MINOR - superseded_detail[10].why carried 'slide13a sits in 99.4', a garbled token left by round 12's own edit; every other one of the seven sites reads 'slide 13'. || MINOR - the section-15 peers note had an unbalanced quote that round 7's log reads as having closed. Closed. || All five withdrawn forms are now registered, including the two that carry no figure, so round 14 has something that can fire on each. || NOTE - this log records what changed and does not assert where anything landed.",
  "post_audit_fixes_round14": "ROUND 14 PASSED: zero blockers, the second consecutive blocker-free pass. It confirmed ALL SEVEN of round 13's fixes landed in the rendered artifact, 7 of 7, each verified against the surface it was supposed to reach rather than against the log that claimed it - including reading the whole 3,197-character balance note to establish that it contains no capex line, which is what makes round 13's tense-fix correct. Spot-checks clean: the anchor, the three composites, the decision lock on all 27 fields plus all 3 bands, and a dozen figures re-checked in passing. It also tested and CLEARED two candidates rather than reporting them, which is the discipline this run has rewarded: the fragility swing of 0.205 against an 88% coverage looked inconsistent until it resolved as the full adverse-to-favourable SPAN against a one-sided NAV-space coverage, and the 'five of nine gate rows' count reconciled against section 2's own published explanation. TWO MAJORS AND ONE MINOR, all the same bookkeeping class, all FIXED rather than disclosed. || MAJOR - three sites asserted that round 13 was 'the first blocker-free pass', and delta_vs_prior falsified itself inside one sentence pair by printing the blocker sequence 1, 5, 4, 0, ... immediately above it: there is a ZERO at position four. ROUND 4 also returned zero blockers, as post_audit_fixes_round4 and audit_route_note both record. Round 13 is the SECOND blocker-free pass of the run and the first of the current streak; round 5's blocker reset round 4's banked pass, which is why audit_passes goes 0 to 1 here rather than 1 to 2. Corrected at all three sites, with the reset made explicit so the count reconciles. The auditor settled the severity against this run's own precedent: round 12 graded the identical defect in the identical field - a wrong quantifier about which round was first, contradicted by audit_route_note one field away - a MAJOR. || MAJOR - round 13's own fix to post_audit_fixes_round2 ended mid-predicate: 'The per-country figures and the record labels above are correct; only the exhibit is.' Eliding the predicate makes that parse as 'only the exhibit is CORRECT', the inverse of the withdrawal made two clauses earlier. The fix landed; its closing sentence did not. Completed. || MINOR - post_audit_fixes_round8 still asserted, present tense, that the .superseded_detail path 'is exempt from the sweep by design', which rounds 11 and 12 narrowed to value/what/was with now/why swept clause-locally. Tensed. || THE STRUCTURAL FIX, and the auditor's point rather than mine: the register could not reach that site because the survival wore BACKTICKS while the registered value was bare. That is the FOURTH escape tracing to the registered string and the survival being different strings - hedge words ('about 5 mb/d' versus '~5 mb/d'), a dropped suffix ('/100.30'), spacing ('EX-99.3 / EX-99.4' versus 'EX-99.3/99.4'), and now decorative punctuation. Hand-registering every form is the approach that has failed four times, so matching is now PUNCTUATION-NORMALISED on both sides - backticks, straight and curly quotes stripped, whitespace collapsed - with the hit mapped back by a punctuation-tolerant pattern, since the decoration sits inside the phrase and no bare substring of the value appears in the raw text. Applied to every value, not only numeric ones, because this class is mostly prose. Running it on the artifact immediately found a sibling no round had seen: cite_receipt.findings_round6 read '1 NOT-SUPPORTED (General Atlantic 'exited')', where the quote marks had hidden the withdrawn claim. Fixed. 69/69. || AND A REAL LIMIT, found by the self-test I wrote for the fix and recorded rather than patched: a value whose OWN WORDS include framing vocabulary self-frames, so no sweep can ever flag it. The round-14 minor was exactly that shape, because the phrase contains the word 'superseded'. Tightening the framing test to compensate would reintroduce the false positives rounds 7 and 9 removed. This is a property of framing-by-vocabulary, not a bug - and it is the strongest argument for the per-round MANUAL READ of every asserting slot that round 13 recorded. || NOTE - this log records what changed and does not assert where anything landed.",
  "post_audit_fixes_round15": "ROUND 15 PASSED CLEAN: zero blockers, ZERO MAJORS, one minor. The third consecutive blocker-free pass, and the first round of the entire run to return no majors at all. The auditor read the whole trail manually rather than trusting the sweep - all fourteen round logs, the route note, the delta narrative, the pass basis, all 24 cite_receipt slots and all 22 superseded_detail now/why slots - and confirmed all four of round 14's fixes landed in the RENDERED HTML, not merely in the calibration. || THE STRONGEST SINGLE PIECE OF EVIDENCE in fifteen rounds, and it is the auditor's: a git sweep of all seven calibration commits from round 8 to HEAD shows ZERO changes to any of the 24 decision-bearing fields - all five pillars, all three composites, all three signals, the anchor pair, the warranted ratio, the valuation band, the gate state, all three scenario targets, the probability-weighted target, fair value, the stop, the moat score and the stamp price. The claim that nothing since round 8 has touched a score, a gate or the decision is therefore mechanically true rather than asserted. || It also reconciled two cross-field discrepancies rather than reporting them, which is the discipline this run came to depend on. The claim that gates_caution prose had forced 'five re-freezes' looked wrong against the 2100 lock's four-entry history; git shows the run spans THREE locks - the 1700 lock carried two, the 1900 none, the 2100 four, of which five were gates_caution-forced. And rounds 13 and 14 disagreed on whether the decision lock has 24 or 27 frozen fields: the lock has 27, three of them arrays, so 24 is exactly the scalar count and the two auditors decomposed the same object differently. Neither was false. || MINOR, and the only finding: cite_receipt.round read 12 on a round-14 artifact, and its enumeration named rounds 10-12 only - round 14 had edited findings_round6 inside that same dict and updated neither. Nothing was false, since every count carries its measuring round in the key name and the substantive conclusion held, but 'did Layer 0.5 see the round-13 and round-14 changes?' was unanswerable from it. Restamped to round 15 with the enumeration brought current, and the governing fact stated explicitly: rounds 10 through 15 introduced NO NEW EXTERNAL CLAIM - every change withdrew a claim, retensed one, or re-pointed a citation to a source already declared - which is why round 9's routing audit still governs. || THE RECORD AT CLOSE: fifteen rounds, blockers 1, 5, 4, 0, 1, 2, 1, 2, 1, 1, 1, 1, 0, 0, 0. Three consecutive blocker-free passes, zero open majors, open_findings absent and correctly so. No published number has been found wrong since round 8's Brent contract basis, and rounds 9 through 15 each re-derived the figures independently and confirmed them. The six surfaces this run identified - body prose, source notes, machine fields, the section-14 embed, table cells, and the sweep's own exempt paths - are all swept or manually read, and the four string-form escapes that defeated the register are closed by punctuation-normalised matching. The one limit that cannot be closed is recorded rather than papered over: a value whose own words contain framing vocabulary self-frames, so no sweep can reach it, which is why the per-round manual read of every asserting slot is now the standing remedy. || NOTE - this log records what changed and does not assert where anything landed.",
  "cite_receipt": {
    "round": 15,
    "auditor": "Every round from 5 onward used an INDEPENDENT fresh general-purpose agent, never a fork, on a FROZEN artifact whose sha256 the auditor verified at both ends of its read. The artifact hash DIFFERS per round by construction, because each round's fixes change it: round 6 read report 330b5288b7e1ecae, round 7 read 54e31e68daeeb0c0, round 8 read 1976a9edc15c8f9e, round 9 read 18d193bbf4392d20. An earlier draft of this field named only the round-6 hash while the `round` key had been bumped to 8, which round 9 graded a MAJOR - the hash scalars carried no round in their names while the counts did.",
    "provider_snapshot_caveat": "31 of the 93 rows AS AT ROUND 6 rest solely on point-in-time provider payloads (peers, panel, ratings, ratios, estimates, earnings-date, pe-history, mtf, news). They were checked for internal consistency and agreement with the declared note ONLY, because they cannot be reproduced after the stamp. That is a limitation, not a pass. Round 7 settled 82 of its 94 cited rows, 11 of them against the primary document, and could not settle 12 - ten resting on the two transcripts it did not obtain, plus the oil replacement pair and the IEA/OPEC revision magnitudes.",
    "coverage_reconciliation": "EVERY COUNT IN THIS RECEIPT CARRIES THE ROUND THAT MEASURED IT, IN THE KEY NAME. Round 8 found that the previous version put round-6 values in unlabelled scalar fields under a round-7 stamp, and that its prose then presented round-7 measurements as 'the published artifact' when round 7's own fixes post-dated them. Both are the same defect one generation apart, in the field written expressly so the trail would not assert a count the artifact contradicts - and the reason it recurs is structural: this receipt lives in the calibration, the calibration renders the report, and the counts are measured ON the report, so any count stamped here changes the thing it counts. There is no stable value to write. Naming the round in the key is the fix: a consumer reading `census_rows_at_round6` cannot mistake it for a current figure. The historical series, for the record: round 4 reported 102 of 106 sites; round 6 measured 104 cite_ids over 89 cited rows, 93 rows total, 109 anchors, 27 sources; round 7 measured 115 cite_ids, 94 cited, 98 rows, 119 anchors, 28 sources; round 8 measured 121 cite_ids, 99 cited, 103 rows, 126 anchors, 28 sources. The direction is monotonic because every round has ADDED citations.",
    "findings_round6": "1 NOT-SUPPORTED (the WITHDRAWN claim that General Atlantic had exited; it sold 9,842,559 shares and retained 30,218,380), 3 MIS-ROUTED, 3 uncited-figure classes, 9 PARTIAL, 4 could-not-settle. All fixed in round 6 except the four could-not-settle items, which are now disclosed as unsettled in the notes themselves and the two unsourced figures withdrawn.",
    "why_no_current_census_sha": "Deliberate. This receipt lives in the calibration, the calibration renders the report, and the census hashes the report - so stamping the POST-FIX census sha here changes the report and therefore changes the sha being stamped. It is a fixed point with no stable value. What is recorded instead is what the round-6 auditors actually read and verified at both ends of their reads: census 3044668e6e673d79 against report 330b5288b7e1ecae. The post-fix census is regenerated by claim_census.py on every render and round 7's receipt records the sha ITS auditor read. A receipt's job is to make 'did Layer 0.5 run, and on what?' answerable after the fact, and naming the artifact the auditor held does that; naming an unstable self-referential hash would not.",
    "rows_created_after_round6_read": "Round 7 found 5 census rows created by the round-6 fixes, 4 of them uncited, which the round-6 source auditor therefore never saw. Round 7's auditor checked those four (r036, r071, r074, r075) and found them self-referential framework statements - band geometry, exit-rule status - needing no external source, so there is no fabrication exposure. Recorded because 'the auditor covered the census' would otherwise imply coverage it did not have.",
    "sources_declared_at_round6": 27,
    "census_rows_at_round6": 93,
    "cited_rows_at_round6": 89,
    "absence_rows_at_round6": 4,
    "cite_ids_carried_at_round6": 104,
    "report_src_anchors_at_round6": 109,
    "rows_examined_at_round6": 93,
    "rows_reverified_against_primary_at_round6": 58,
    "rows_provider_snapshot_only_at_round6": 31,
    "counts_at_round8": {
      "census_rows": 103,
      "cited_rows": 99,
      "cite_ids_carried": 121,
      "report_src_anchors": 126,
      "sources_declared": 28,
      "rows_settled_by_source_auditor": 77,
      "rows_unsettled": 22
    },
    "rows_unsettled_at_round8": "22 of 99 cited rows could not be settled independently at round 8 and that is recorded as a limitation rather than a pass: 10 rest wholly or partly on the two transcripts (the Goldman conference and the Q2 call), which are not public filings and were not retrieved; 5 on the twelve-name peer screen that exists only inside its own note; 4 on the earnings-date surprise history the report already declares PARTIAL; 2 on the after-hours MTF payload and 2 on an in-run P/E-history computation. Do not read the strength of the filing-backed population as coverage of the payload population.",
    "report_sha256_read_by_round6_auditor": "330b5288b7e1ecae",
    "census_sha256_read_by_round6_auditor": "3044668e6e673d79",
    "counts_at_round9": {
      "census_rows": 106,
      "cited_rows": 102,
      "rendered_markers": 130,
      "distinct_ids_cited": 27,
      "sources_declared": 28,
      "routing_disagreements": 0,
      "rows_settled_externally": 49,
      "rows_mixed": 10,
      "rows_payload_only": 43
    },
    "routing_audit_at_round9": "CLEAN. Round 8's auditor instructed that marker-level routing be audited in the RENDERED artifact rather than the census, because cite_ids is a per-sentence set and hides which marker sits where - which had hidden two round-8 findings. Audited that way at round 9: 130 markers, each carrying exactly one href, across 27 distinct ids; all 106 census rows located in the rendered text; ZERO census-versus-rendered disagreements. The 28th source (risk-factors, state=fail) is cited by nothing, correctly declared not used.",
    "rows_unsettled_at_round9": "43 of 102 cited rows rest solely on sources that cannot be settled externally after the stamp - provider payloads (ratios, panel, ratings, peers, pe-history, earnings-date, mtf, macro, econ-cal, prior-cal) and the two transcripts. NAMED PLAINLY because it is the one real gap: gs-conf (8 rows) and q2-call (3 rows) were never opened by any round's auditor. No transcript was obtainable, so the >32-markets count, the 'high 60s' ex-merchant growth, 'closer and closer to that floor', 'somewhat flat-ish', the 3%-of-TAM and 10%-wallet-share figures and the take-rate quotes are unverified against any document and were checked only for internal consistency. The filing-backed population is exceptionally strong; that strength does not extend here, and must not be read as though it does.",
    "rounds_since_last_layer05_read": "The last narrow SOURCE audit ran at ROUND 9 and remains the governing routing pass: 130 markers, each resolving to one href across 27 distinct ids, all 106 census rows located in the rendered text, zero census-versus-rendered disagreements. Rounds 10 through 15 were Layer-2 audits that each re-derived the published figures and checked routing, without re-running a census-by-census source pass. What those rounds changed: the EPS panel depth, the 20-F repetition count, the oil contract basis and its band, the General Atlantic percentage, several superseded_detail slots, a Timing rounding disclosure, and a series of round-log corrections. NO NEW EXTERNAL CLAIM was introduced in any of them - every change either withdrew a claim, retensed one, or re-pointed a citation to a source already declared - which is why round 9's routing audit still governs. An earlier draft of this field stamped round 12 and enumerated only rounds 10-12."
  }
}

In one paragraph. Quality 60 (Medium), Valuation 78 (Attractive, at the band floor), Timing 49 (Neutral), Driver 56 (Neutral, not amplification-eligible), Economic Alignment Neutral at 50. The base Decision Matrix returns HOLD on the Medium-quality / Attractive-valuation / Neutral-timing row; amplification does nothing, the short-horizon quality-starter override cannot fire because it requires Quality of 65 or more, no gate caps anything and no Do-Not-Buy trigger fires. So HOLD / HOLD / HOLD, and the Donatien-Pick auto-Stop follows mechanically from having no BUY on any horizon. Overall confidence 67%, the minimum of 68/68/67.

A framework note the reader is owed. That Medium/Attractive/Neutral row did not exist in the framework's base table until this report. The table defined the Improving row (BUY, value play) and the Weak row (HOLD, value trap risk) and nothing between them, so the deterministic checker returned “cell undefined” and told the author to raise it as a gap. It has been decided as HOLD, on the table's own only precedent for a Neutral timing on a tiebreaker row (High/Fair/Neutral or Weak is HOLD, grouping Neutral with Weak) and on the quality-starter override being scoped to Quality of 65 or more, which would be arbitrary if this cell were already BUY. Of 107 live Donatien calibrations exactly one other name CURRENTLY sits on that cell — ZIM, which published HOLD on all three horizons too. Scoped deliberately to the latest report per ticker: the ARCHIVE holds six more on this triple, and three of them published BUY or better on the longer horizons — LUNR three times in July and August 2026, MNO.TO and SOFI both on 31 July. Those predate the row, when the cell was a hole and the checker returned nothing, so they were ad-hoc author calls rather than matrix outputs — but they are contrary precedent and they run AGAINST the branch chosen here, so they are named rather than left to the word “currently”. It is verdict-determining and the alternative branch was the flattering one: reading Neutral as BUY would have returned BUY on all three horizons and kept the Pick active. The branch chosen withdraws a BUY.

15

Data Sources & Methodology

Audit trail of every data source: fully available (✓), fallback (⚠), or failed (✗), plus provenance-based confidence haircuts.
Data Source Status
✓
dLocal Q2 2026 results — 6-K Exhibit 99.1, accession 0001846832-26-000031, filed 13 Aug 2026 (read from EDGAR this run), cross-checked against get_income_statement (28 quarters) The PRIMARY source for almost everything new in this report. TPV US$17,694m +92% (US$9,212m); revenue US$399.7m +55.8%; gross profit US$127.2m +29% at a 32% margin against 39%; operating profit US$64.2m +15% with operating-profit-to-gross-profit at 50%, six points better sequentially and six worse year on year; net income US$54.8m +28%, diluted EPS US$0.18. H1: TPV US$31,749m +83%, revenue US$735.5m +55%, gross profit US$245.8m +34%, operating profit US$116.9m +15%, net income US$96.7m +8%. The net take rate is QUOTED outright: “Gross profit over TPV was at 0.72%, decreasing from 1.07% in the second quarter of 2025 and from 0.84% in the first quarter of 2026”. Guidance RAISED — TPV to 60-70% and gross profit to 25-30% — with operating profit MAINTAINED at 27.5-32.5%. Adjusted Free Cash Flow US$68.5m in the quarter against US$14.7m in Q1 and US$48.4m a year ago, reconciled as operating cash flow US$140.5m less merchant working capital US$62.1m less capex US$9.9m. Total cash US$794.9m of which US$369.1m is CORPORATE cash — disclosed, not estimated. On 12 Aug 2026 the company entered a credit agreement the release describes as “provid[ing] for” a US$150m senior unsecured facility at Term SOFR + 2.00%, maturing 14 Aug 2029 and repayable in 11 equal quarterly instalments of US$13.6m plus interest commencing six months after the BORROWING date. US$300m buyback authorised March 2026, ~6.9m Class A shares repurchased for US$86.1m through the quarter end. Also, because claims lean on them: CORPORATE cash was US$451.8m at 31 Mar 2026 and US$253.8m at 30 Jun 2025, so the quarter-on-quarter fall is US$82.7m, “explained by the dividends payment and execution of the share repurchase program”; the Adjusted-FCF reconciliation carries SIX-MONTH columns, giving H1-2026 US$83,200k (233,304 − 130,455 − 19,649) against H1-2025 US$88,176k — the figure the release STATES, though its own components (219,872 − 115,748 − 15,946) give 88,178, a US$2k gap inside dLocal's table; H1-2025 paid US$149,982k of dividends against H1-2026’s US$57,211k; Q2’s improvement over Q1’s US$14.7m “reflects the normalization of the temporary working-capital effects (including timing in tax-credit netting and receivables from advancement operations) that had weighed on the first quarter of 2026” — so those effects are what depressed Q1, and an earlier draft of this note had the subject inverted; the About paragraph reads “more than 60 countries” and “Through the ‘One dLocal’ concept (one direct API, one platform, and one contract)”, and the Mexico clause reads “partially offset by (iii) Mexico, with large Tier 0 merchants hitting higher volume pricing tier along with cost pressure”; gross-profit growth was 23% IN CONSTANT CURRENCY against 29% reported; “underlying volume and revenue growth (64% YoY) remain solid”; and Share Capital is US$576k at the US$0.002 par value with Treasury Shares NIL — but NOT the share counts themselves, which are in the interim financial statements filed as EXHIBIT 99.2 of this accession - NOT its primary document, which is the 6-K cover itself; an earlier draft of this note and of the q2-interim entry both said primary. See the q2-interim entry. An earlier draft of this note credited Exhibit 99.1 with ‘the share-count reconciliation’, and it contains none of the three counts.
✓
dLocal FY2025 annual report on Form 20-F — accession 0002070979-26-000113 (dlo-20251231.htm), filed 18 Mar 2026; read from EDGAR this run THE SOURCE AN EARLIER DRAFT OF THIS REPORT WRONGLY SAID DID NOT EXIST. It quantifies the merchant concentration three separate times, identically - though the two/one/none progression beside it appears TWICE, in the risk factor and the segment note, since the business-section occurrence stops at the 61/62/60 series; an earlier draft of this note said all of it appeared three times. Risk factors: “Our top 10 customers in terms of revenues represented 61% of our revenues in the year ended December 31, 2025, 62% … 2024, and 60% … 2023. In the year ended December 31, 2025, there were two customers that individually accounted for more than 10% of our total revenues, compared to one customer and no customers in the years ended December 31, 2024 and 2023.” The business section and the IFRS segment note each repeat the 61/62/60 series; the two/one/none progression is repeated by the SEGMENT NOTE ONLY, which is why the series appears three times and the progression twice (an earlier draft of this sentence had the business section repeating the progression too, which contradicted the count stated two sentences above it). Also the definitive share-count reconciliation: “294,931,956 Class A and Class B common shares, as of December 31, 2025”, being 165,877,764 Class A and 129,054,192 Class B, against Share Capital of US$589,864 at a US$0.002 par value. Class B carries FIVE votes per share, is convertible to Class A at the holder’s option, and was 43.76% of outstanding shares at 31 Dec 2025.
✓
Own-history trailing-P/E distribution for DLO — computed this run from get_income_statement (21 quarters, rolling TTM diluted EPS stepped at each acceptedDate) against 1,338 raw daily closes The five-year multiple range the own-history decile lens scores against, which an earlier draft published as a decile with no source behind it. Distribution: min 15.5, p10 20.2, p25 22.8, median 33.8, p75 65.5, p90 158.1, max 368.6. Today’s trailing 20.24 sits at the 10.2nd percentile — decile 2. The upper tail is the 2021-22 post-IPO period and flatters the percentile, which is why the lens scores 82 rather than the 85 a raw decile-2 reading would give.
✓
dLocal unaudited condensed consolidated interim financial statements to 30 June 2026 — dlo-20260630.htm, EXHIBIT 99.2 of 6-K accession 0001846832-26-000031 — not its primary document, which is the 6-K cover itself; an earlier draft of this entry said primary; share-capital note read this run THE DOCUMENT THAT ACTUALLY CARRIES THE SHARE COUNTS, and it was undeclared through every prior audit round while the figures were cited to the 20-F (a 31 Dec 2025 document stating DIFFERENT counts) and to Exhibit 99.1 (which contains none of them — only the rounded US$576k and Treasury NIL, which is the basis of the WITHDRAWN 288,000,000). Verbatim: “Issued and fully paid-up shares of US$0.002 each — Class A common shares 172,183,455 / 344; Class B common shares 116,233,376 / 232; 288,416,831 / 576”, against 164,649,324 / 129,054,192 / 293,703,516 a year earlier. And the evolution: share capital at 1 January 294,931,956; issue of common shares 372,690; shares cancellation (6,887,815), being Class A repurchased AND CANCELLED under the programme; 288,416,831 at 30 June. ALSO CITED for the buyback average and total, which this document states outright: “the Company repurchased 6,887,815 Class A common shares at an average price of US$12.49 per share, amounting to a total consideration of US$86,062”. (Round 6 spliced this sentence into the middle of the paragraph above, breaking its host sentence; round 7 moved it here.) The US$576 is the SUM of the per-class roundings 344 + 232, which is why dividing it by par gives the SUPERSEDED 288,000,000 rather than the exact count. Class A and Class B vote together as a single class except where law requires otherwise.
✓
dLocal Q2 2026 earnings presentation — EX-99.4 of 6-K accession 0001846832-26-000031, filed 13 Aug 2026 (the cover page lists 99.3 as the Quarterly Report and 99.4 as the earnings presentation; slide 13 sits in 99.4) The GROSS-PROFIT-BY-MARKET disclosure, which Exhibit 99.1 does not carry and which an earlier draft of this report WITHDREW as ‘not in any primary source’. It is in a primary source — the same 6-K accession, one exhibit over. Slide 13, headed ‘Record gross profit driven by strong performance in Brazil and Argentina’: Brazil US$40m (+44% quarter on quarter, +64% year on year, ‘Record TPV and gross profit’), Argentina US$20m (+27% QoQ, +40% YoY, also a record), Other LatAm US$31m, Mexico US$12m, Africa and Asia US$25m. The figures the report publishes are correct; what was wrong was the citation pointing at Exhibit 99.1 and, worse, the audit block claiming no primary source existed.
✓
Insider Forms 3, 4 and 144 for DLO — EDGAR CIK 0001846832, filings from 2026-05-01, ownership XML read directly this run SEVEN Form 4s and a Form 3/A since May 2026, against an earlier draft of this report which said there was one. Sebastián Kanovich (DIRECTOR, not an officer): 1 Jul 2026, converted 1,000,000 Class B to Class A and sold them at US$14.63; 7 Jul, 25,700 at US$15.50; 4 Aug, 4,700 at US$15.50; 5 Aug, 72,753 at US$15.5369. The four tranches total 1,103,153 and reconcile EXACTLY to the Class B holding falling 12,629,474 to 11,526,321 — a reduction of 8.73% of his own holding, against a trigger arm of 25%. William Rodney Pruett (director): 29 May 2026, code P, ACQUIRED 20,000 at US$11.85, holding 108,043 after — an open-market PURCHASE. Hyman K Bielsky: 27 May, code G, a transfer of 884,249 shares, not a market sale. The two officers who filed only acquired — they are the Chief Legal Officer and the Chief Technology Officer, 40,329 shares each on 1 Apr 2026 at a price of zero. EVERY Kanovich sale was executed under a Rule 10b5-1 trading plan adopted on 26 Nov 2025, stated on the Form 4s themselves, which is an explicit exclusion in Do-Not-Buy Trigger 4's own wording. Form 144s on 1 May, 1 Jul, 7 Jul, 4 Aug, 5 Aug and 17 Aug. Note the 20-F’s own risk factor: ‘directors and officers of FPIs will be subject to Section 16(a) reporting requirements beginning March 18, 2026’ — so the 11 September report’s claim that such filings do not exist to check was false on the date it was written.
✓
dLocal FY2025 results — 6-K Exhibit 99.1, accession 0002070979-26-000110, filed 18 Mar 2026 Supplies the two Adjusted Free Cash Flow quarters the trailing-twelve-month figure needs: US$37.6m in Q3 2025 and US$64.9m in Q4 2025. Also the Argentina precedent — a US$13.1m short-term hit in Q3 2025 from the structuring used to expatriate flows after regulatory changes — and the corporate-cash series: US$317.8m at 31 Dec 2024, US$333.1m at 30 Sep 2025, US$424.5m at 31 Dec 2025.
✓
General Atlantic Schedule 13D/A — accession 0000950142-26-002390, filed 19 Aug 2026 (primary document and cover-page XML read this run) Item 5(c): “On August 17, 2026, GA DO sold an aggregate of 9,842,559 Class A common shares in open market transactions at an average price of $13.60 per share.” The cover pages give 36,814,136 shares remaining at 21.4% of Class A, against 172,183,455 Class A shares outstanding at 30 Jun 2026. A private-equity sponsor unwinding a pre-IPO position, not a C-suite disposal. CORRECTION: the prior report dated this filing 17 August, which is its dateOfEvent and also the date of General Atlantic DO B.V.'s OWN Form 144 (0000950142-26-002365) noticing the identical 9,842,559 Class A shares - the same transaction, not the unrelated filing an earlier draft of this note called it; the 13D/A was filed on the 19th. RETAINED STAKE, which this note is cited for and did not carry: 30,218,380 shares. The filing prints TWO different percentages for that identical holding - its General Atlantic DO B.V. cover row says 16.6%, which this report WITHDREW at round 7, and its two General Atlantic Cooperatief rows say 17.6%. On the denominator the filing itself declares - 172,183,455 Class A outstanding at 30 June 2026 - it is 17.55%, so 17.6% is the figure that reconciles and 16.6% reconciles against no denominator the filing states. The group's 36,814,136 at 21.4% reconciles (21.38%).
✓
EDGAR filing index for CIK 0001846832 (browse-edgar and data.sec.gov/submissions), checked 30 Sep 2026 The corporate-action existence check. The most recent filing of ANY type is the 13D/A of 19 Aug 2026 — no 6-K, no placement, no financing and no insider form since. CONFIRMED ABSENT rather than not-looked-for.
✓
dLocal at the Goldman Sachs conference, 10 Sep 2026 (transcript) Management's own framing of the take rate and the concentration: take rates across the industry are “coming down” but “we think we are getting closer and closer to that floor”, with the second half guided to “somewhat flat-ish”. Excluding the largest merchant, Q2 TPV growth was “in the high 60s” against above 90% reported. The largest merchant operates in more than 32 markets; the average merchant in about 12, up from 8. Value-added services — named as BNPL, dMoRe (merchant-of-record), enhanced FX and physical point-of-sale — are under 1-2% of the business today and could be material in one to two years. About 3% of the addressable market and 10% of merchant wallet share.
✓
dLocal Q2 2026 earnings call, 13 Aug 2026 (transcript) Pedro Arnt on the take rate: “If you back out that one very large ride-hailing merchant's mixed gains at a lower take rate, take rate would have been relatively flat sequentially”, and “when merchants have these significant spikes in volume, they do rapidly hit new pricing tiers”. On the second half: “our expectation is not of accelerating take rate decline into the end of the year”. NOTE on a figure this report does NOT take from here: the widely-quoted “top 10 merchants = US$251m, 63% of revenue” is in neither this transcript nor the earnings release. The audited concentration series is in the 20-F instead, and that is what the report publishes — see the 20f entry.
✓
Yahoo Finance SPY and XLK — one- and three-month TOTAL returns (dividends included) to 30 Sep 2026 The relative-strength leg carries 30% of the risk/reward build, and until round 6 NO declared source covered the benchmarks at all - the figures were published uncited and the word SPY appeared in none of the source notes. SPY -0.33% over one month and +2.52% over three; XLK +5.08% and +5.58%; DLO -7.22% and -6.20%. Windows 31 Aug to 30 Sep and 1 Jul to 30 Sep. BASIS, corrected in round 7: these are TOTAL returns with dividends included, NOT the auto_adjust=False price returns an earlier draft of this note claimed - the two are mutually exclusive and the note asserted both. On price only the benchmarks read SPY -0.58%/+2.26% and XLK +4.96%/+5.46%, the gaps being the ~19 Sep quarterly distributions (about $1.89 on SPY, about $0.23 on XLK). The comparison is still genuinely like-for-like, but for a different reason than the one given: DLO paid NO dividend in either window, so its price return IS its total return. On a project carrying a standing auto_adjust trap, the label had to be right.
✓
Yahoo Finance daily OHLCV for DLO — 335 raw bars to 30 Sep 2026, auto_adjust=False RAW unadjusted closes for every moving-average claim. Close US$13.76 on 1,415,414 shares; 29 Sep US$13.69. SMA20 14.5142, SMA50 14.6294 — which PEAKED at 14.7984 on 11 September and has fallen every session since, −0.95% over the last ten; the +1.08% over twenty sessions an earlier draft quoted straddles that peak and reads the trend backwards — SMA200 13.5190. Bollinger(20,2) 13.3200 / 14.5142 / 15.7085. ATR(14) 0.3459 on a SIMPLE 14-period mean of true range - Wilder's smoothing gives 0.4117, which is what this project's own indicator tool returns, and on that variant the hard stop is 13.21 rather than 13.30 and the stop-based reward ratios fall from 8.13:1 and 17.91:1 to 6.80:1 and 14.98:1. Neither stop is live at the stamp price and the 1.33-ATR position-risk sub-score is unchanged by construction, but this note named the Wilder-versus-Cutler RSI distinction two clauses later and was silent on the ATR one, which round 7 caught. RSI(14) 38.20 on WILDER smoothing — the Cutler variant reads 21.29 and the two must not be conflated. MACD -0.26239, signal -0.16410, histogram -0.09829, and the histogram has been NEGATIVE for 16 consecutive sessions since 9 Sep — counted from the series, not eyeballed. 52-week intraday range 10.64-16.78, price at 50.8% of it. Volume windows named explicitly: the 20-session mean is 1,700,026, so 30 Sep is 0.83x it - and that 1,415,414 is itself a POINT-IN-TIME tape read, as is the 13.655 low used for the higher-low read and the ATR (the settled tape returns 13.65; the higher low against 29 September's 13.590 holds either way): the final tape now returns 1,431,700, which would make the ratio 0.84x, and the 20-session mean moves by exactly 16,286/20 = 814.3 with it, so the pair is internally consistent at read time and is not reproducible after it. The quote's three-month average of 2,284,871 - also a POINT-IN-TIME field read on the stamp date, not reproducible after it, since a re-read returns 2,131,985 against a 63-bar computed mean of 2,120,870 - makes the same session 0.62x. Last close above the 50-DMA was 14 Sep at US$14.84; the last VOLUME-BACKED one — taking that to mean at least 1.5x the twenty-session average, the threshold the entry rule itself uses, since an earlier draft left the word undefined — was 21 Aug at US$15.17 on 1.74x. On a bare above-average test, 2 Sep at 15.57 on 1.08x would also qualify. The closes and lows the exit rules quote: 24 Sep 13.88 (low 13.730), 28 Sep 13.82, 29 Sep 13.69 (low 13.590) and 30 Sep 13.76 (low 13.655) — so the stamp session made a HIGHER low. The 13.58 daily swing low is the get_multi_timeframe_analysis support level. Heaviest down day of the decline: 22 Sep on 2,871,000 shares, 1.59x its own trailing 20-session mean.
⚠
get_multi_timeframe_analysis for DLO, 30 Sep 2026 Confluence BEARISH, against bullish on 11 September. Monthly downtrend, weekly uptrend, daily WEAKENING with a flagged support_breakdown, hourly strong_downtrend, 15-minute recovering. PARTIAL and declared as such for two reasons: the daily row is stamped 2026-09-29, one session behind this report, so the moving averages quoted in the report body are the ones computed from the raw series above rather than the payload's; and the hourly and 15-minute rows carry volume ratios of 0.03 and 0.00 because they are after-hours bars, which is why timing confidence takes an eight-point haircut. The SUPPORT and RESISTANCE levels the rules quote come from this payload: daily S 13.58 / R 15.30, weekly S 12.60 / R 15.55, monthly S 10.64 / R 16.78, hourly S 13.59 / R 14.18.
✓
Analyst panel for DLO, 30 Sep 2026 — get_price_target_consensus, get_yahoo_analyst_targets, get_grades_consensus, get_stock_grades TWO PANELS THAT DISAGREE, both reported, the conservative one scored. Targets: FMP consensus and median US$18.50, high US$20.00, low US$17.00; yfinance mean US$18.80, median US$19.00, high US$21.00, low US$15.00 across ten analysts. Grades: FMP 0 strong buy / 9 buy / 3 hold / 1 sell = 69.2% bullish across thirteen; yfinance 3 / 6 / 1 = 90.0% bullish across ten, recommendation mean 1.5. The FMP readings are scored in both cases. Grade ACTIONS: UBS upgraded Neutral to Buy on 1 Jul 2026 and Truist maintained Buy on 27 Aug; nothing at all inside the last thirty days, so the sentiment leg reads as maintained rather than as momentum in either direction.
✓
get_analyst_estimates (FY2027-FY2030) and the yfinance eps_trend / eps_revisions vintages, 30 Sep 2026 FY2027 consensus diluted EPS US$1.09259 on four estimates, with a published dispersion of US$1.03245 to US$1.15273; yfinance puts it at US$1.14373 on FOUR EPS estimates, the same depth as FMP - an earlier draft of this note said ten, which is the RECOMMENDATION count, a different field. FY2028 US$1.33325. THE VINTAGES, which is what Do-Not-Buy Trigger 3 actually requires: FY2027 reads 1.10424 at ninety days, 1.12830 at sixty, 1.13080 at thirty and 1.14373 now — up in every vintage. FY2026 reads 0.86084 / 0.85580 / 0.86000 / 0.85222, down 1.00% overall and NOT monotonic. eps_revisions records three upward and one downward revision to FY2027 over thirty days.
✓
get_financial_ratios, get_yahoo_quote and get_company_profile for DLO, 30 Sep 2026 Market capitalisation US$3.969bn. The share-count reconciliation matters here: BOTH PROVIDER COUNTS ARE WRONG and neither is used: impliedSharesOutstanding reads 294,269,133 and sharesOutstanding 178,035,757, while the company's own share-capital note gives Class A 172,183,455 plus Class B 116,233,376 = 288,416,831 at 30 Jun 2026. An earlier draft of this report reconciled the provider figure by dividing market cap by price and concluded there was ‘no stale-count problem’ — a CIRCULAR test, since market cap over price can only ever return the provider's own count. Trailing diluted P/E 20.2353 (the provider's own priceToEarningsDiluted reconciles at 20.2353). ROE 41.3%, operating margin 16.05%, net margin 15.04%, interest coverage 17.71x, current ratio 1.2472, debt to equity 12.5%. Beta 0.871. Return on ASSETS 8.6%. The provider’s diluted price/earnings-to-growth reads 0.486 and its forward PEG 0.883. Dividend US$0.19 a share on a 28.5% payout. Two provider fields are recorded here and deliberately NOT used. First, the cash-flow fields: the provider's own free-cash-flow and price-to-free-cash-flow fields are built on an unadjusted cash flow and imply a capex figure of about US$10.8m against the US$40.49m the quarterly cash-flow statements actually record (9.910 + 9.738 + 11.490 + 9.349, stated here rather than in the balance entry, which an earlier draft of this note wrongly cross-referenced for them and which carries no capex line at all), so they are not used anywhere in this report. Second, the share count: impliedSharesOutstanding of 294,269,133 is 2.03% above the 288,416,831 the company’s own share-capital note gives, and sharesOutstanding of 178,035,757 is above the 172,183,455 Class A that note and the 13D/A both cite — so the provider’s market capitalisation of US$4,049.1m is NOT used; this report derives US$3,968.6m from the filed count. Two earlier drafts got this wrong and are superseded: the first used the provider count, the second used 288,000,000, from dividing the ROUNDED US$576 thousand of share capital by the US$0.002 par — when the exact count sits on the same line of that note.
✓
get_ratings_snapshot for DLO, 30 Sep 2026 A- overall, 4 of 5. ROE 5, ROA 5, discounted cash flow 4, debt-to-equity 3, price-to-earnings 2, price-to-book 1. The split is informative rather than contradictory: the returns and the balance sheet score at the top of the scale and the asset-based multiples at the bottom, which is what a capital-light business with US$540m of equity and US$4.0bn of market value looks like.
⚠
FRED DGS10 — 10-year Treasury constant maturity, observation of 2026-09-29 5.26%. A DOCUMENTED DEVIATION from the framework's stated source, declared here rather than passed over: SKILL Pillar-2 says read the ten-year from the macro report the Economic-Alignment step consumes, and MacroDriver-state-20260920 carries no market_snapshot or UST10Y field at all. FRED is the substitute and it is the primary series, but it publishes one business day in arrears, so the 29 Sep observation is the latest available as of a 30 Sep stamp. The series ran 4.94% to 5.26% over the preceding twelve sessions. The 30 Sep core-PCE downside surprise post-dates it, which biases the risk-free lower and the warranted multiple HIGHER — so this input is conservative for the valuation. The prior report used Trading Economics at 4.95%, so both the value and the source have changed.
✓
Donatien Macro-Economic report — MacroDriver-state-20260920.json (run 20 Sep 2026, prices as of 18 Sep) Regime: energy-shock inflation meeting RESILIENT demand, with the Fed tightening into the shock. Brent US$103.87 and WTI US$100.30 with Hormuz effectively closed; the Fed hiked 25bp to 3.75-4.00% on a unanimous 12-0 with 16 of 18 participants expecting at least one more; the 2-year at 4.67% sits 79bp above effective funds; VIX 14.81. Technology (XLK) NEUTRAL on all three horizons, on sector scores of -0.224 / -0.241 / -0.107. US Tech (QQQ) Neutral, S&P 500 Underweight, EM Equities UNDERWEIGHT on all three, USD OVERWEIGHT on all three. The S&P 500 concentration / AI earnings-quality tail is ARMED. DLO is not in the macro watchlist, so the sector map is the source.
⚠
Brent (BZ=F, and the DECEMBER contract stated separately) and WTI (CL=F front month) with the Hormuz transit status, read on the stamp date Checked THIS RUN because the macro state's levels are as of 18 September and the report asserts them in the present tense. CONTRACT BASIS, corrected in round 8 and the most important thing in this note: BRENT FRONT MONTH (BZ=F) CLOSED 103.53 on 30 September, and the 98.17 earlier drafts published as 'the BZ=F front month' is the DECEMBER contract. The fact that settles it: BZ=F's 18 September close is 103.87, byte-identical to the macro state's Brent, so the macro report and this report read the SAME ticker and this was a contract-basis error rather than a provider disagreement; BZ=F then opens 97.96 on 1 October, the November-to-December roll gap that produces ~98. So the like-for-like fortnight is Brent 103.87 to 103.53, essentially FLAT at -0.3%, against WTI 100.30 to 90.42, -9.8% - and the WTI leg being correct and like-for-like is exactly what makes the Brent leg a basis error. WTI US$90.43 read intraday on 30 September against a 90.42 settle — described as LEVELS, not settlements: these are front-month prints read on the stamp date itself, so the session had not settled when they were taken, and an earlier draft of this note called them ‘settled’ and justified them as ‘the figure used because it reproduces’. Re-reading the same series intraday returns 97.57 and 89.84 on volumes of about 1,700 and 10,700 against normal daily volumes two orders of magnitude higher, so the print MOVES and the reproducibility claim is withdrawn. An earlier draft of this note said the level was used to establish that oil is MATERIALLY BELOW the macro state's 103.87/100.30 - WITHDRAWN at round 9, because that is true only on the December basis and is therefore the very error round 8 removed from the body. On the front-month basis the report uses, only WTI fell materially. AGAINST US$103.87 and US$100.30 on 18 September the like-for-like front-month moves are Brent -0.3% and WTI -9.8%; an earlier draft of this note published -5.5% for Brent, which set the December contract against a front-month baseline. What the two legs together actually show is the Brent-WTI spread blowing out to US$13.11 from US$3.57 a fortnight earlier — and that is the Hormuz signature, since Brent is the waterborne global benchmark the strait gates while WTI is landlocked US crude. The divergence is evidence the chokepoint is BITING, not evidence the shock is easing. The Strait of Hormuz closure remains live: IMF PortWatch records a single transit on 27 September against a baseline of roughly 85 a day. So the chokepoint is still shut - and only the WTI leg has come off its spike, Brent being flat. An earlier draft of this note said the price had come off and that this cut in the name's FAVOUR, a smaller energy tax on the emerging-market consumer than the stale level implied; that is WITHDRAWN at round 9, for the same reason the body withdrew it at round 8 - on the front-month basis Brent did not fall, so there is no mitigation to claim and the energy headwind is fully intact. CAUSE ATTRIBUTION, which the Live-Verify List requires for a sharp move and which an earlier draft of this report did NOT run: the energy press attributes the fortnight's WTI fall to demand-forecast cuts at BOTH the IEA and OPEC - though an earlier draft of this note flattened a real split, since the IEA sees 2026 demand FALLING by 2.5 mb/d while OPEC still sees GROWTH, trimmed for a fourth month to 580 kb/d, and both revisions landed around 11-12 September, BEFORE the fortnight they are offered to explain - cutting their 2026 demand forecasts BECAUSE of the Hormuz closure, and to Saudi export capacity recovering by BOTH routes. That second leg is worth stating precisely, because one of this run's two auditors read it as geographically incoherent and the other tested it and found it correct: drone strikes from Iraq hit the East-West pipeline on 10-11 September and Saudi shut it, removing the Red Sea bypass — so loadings pivoted BACK to Ras Tanura. WHAT IS ON THE RECORD for the size of that pivot: Saudi exports of about 2.45 mb/d in August rising to roughly 5.3 mb/d in September. Two figures an earlier draft of THIS NOTE carried are WITHDRAWN because no source was found carrying them — a JP Morgan pair of about 2.9 mb/d through Hormuz over six days against roughly 700,000 bpd in August — and a third, the pipeline's pre-strike throughput of about 5 mb/d, is WITHDRAWN as an estimate rather than a sourced figure: what IS sourced is the line's capacity of about 7 mb/d and the restored flow of about 3.5, roughly half. The body of this report withdrew all three in round 6 and this note went on asserting them, which round 7 caught; the deterministic sweep had cleared it because the framing test counted the narrative verb ‘had been’ as withdrawal language. Riyadh then restored pipeline flows to about 3.5 mb/d, and on 29 September prices fell as Red Sea port exports recovered. Hormuz being EFFECTIVELY rather than absolutely closed is what makes the Gulf pivot possible, and that is the resolution of the disagreement. Recorded as the ATTRIBUTED drivers rather than asserted as the cause, for two reasons: the move is not one-way (Brent printed 106.60 on 24 September, ABOVE the macro state's level, before falling), and the sources disagree on the LEVEL itself - Trading Economics has Brent at 97.09 on 30 September against the 98.17 this report computed - both of them DECEMBER reads, which is the point round 8 established and which an earlier draft of this clause got wrong by calling 98.17 the BZ=F front month; the front month closed 103.53. WHAT THIS REPORT SCORES, restated at round 9: the FRONT MONTH at 103.53. An earlier draft of this clause said December was the scored figure and defended that as the CONSERVATIVE choice because 98.17 is the higher of the two December reads - an argument that INVERTS the moment the front month is admitted, since 103.53 is US$5.4 above both of them and a higher energy price is the harsher reading for a name whose customers are emerging-market consumers. Scoring December would therefore have been the LESS harsh choice, not the more. The December band is retained below as context for the forward strip, not as the level. Folding that disagreement into the band, treat the level as 97.1-98.2 rather than a point. The session has SINCE settled, and the settles land inside it - Brent December 98.03 and WTI November 90.42, the latter matching the 90.43 read intraday here to a cent. An earlier draft justified 98.17 as 'the figure used because it reproduces' and then, 250 words after withdrawing that claim, asserted it again in the same note.
✓
get_economic_calendar (US) plus the BLS release schedule and the Federal Reserve 2026 FOMC calendar, 30 Sep 2026 Printed on the stamp date: core PCE for August at 3.0% year on year against a 3.3% forecast and 0.2% monthly against 0.3% — BELOW on both; Q2 GDP 2.2% against 1.5%; personal spending +0.9% against +0.8%; ADP +90k against +70k; Chicago PMI 58.8 against 51.2. On 29 Sep, Conference Board consumer confidence 81.9 against 89.2 and JOLTs openings 7.079m against 7.230m, both well below. Atlanta Fed GDPNow for Q3 cut to 3.7% from 5.0%. Forward: the 2026 FOMC calendar including the 15-16 Sep meeting this report cites it for (and 27-28 Oct next; the HIKE itself - 25bp to 3.75-4.00% - is the macro state's, not this calendar's), September CPI on 14 Oct at 08:30 ET and the FOMC on 27-28 Oct with the decision at 14:00 ET on the 28th.
⚠
Peer forward P/E screen — yfinance, twelve listed payment and EM-fintech names, 30 Sep 2026 Multiples first, then growth for ALL twelve below. The two lists carry the SAME twelve names, but NOT the same fields - the first omits a growth figure for GPN, FOUR, EVTC and MQ, and the second carries growth for all twelve. There is no rendered peer table anywhere in the report: these twelve exist only inside this note, which is why the composition is stated here. An earlier draft of this note said the lists 'differ in LAYOUT only', and an earlier round read the shorter first list as evidence that four names carried no growth figure at all. STNE 4.1x (revenue +1.6%), PAGS 4.9x (-0.2%), WU 3.9x (-1.3%), GPN 5.1x, FOUR 5.8x, EVTC 6.2x, NU 11.2x (+52.1%), CPAY 12.4x (+21.5%), RELY 13.2x (+20.2%), PAYO 15.5x (+5.2%), ADYEY 17.6x (+18.9%), MQ 34.0x. Median 8.7x, mean 11.2x. PARTIAL because the set is genuinely heterogeneous — Brazilian acquirers, global processors, a digital bank and a remittance business are not one peer group. Revenue growth accompanies EVERY one of the twelve: STNE +1.6%, PAGS -0.2%, WU -1.3%, GPN +68.6% (acquisition-distorted), FOUR +34.1%, EVTC +19.7%, MQ +17.0%, NU +52.1%, CPAY +21.5%, RELY +20.2%, PAYO +5.2%, ADYEY +18.9%. Only Fiserv failed, with a 404, and it is a thirteenth name rather than one of the twelve — an earlier draft of this source note claimed only 8 of 12 carried a growth figure, which was false and made a true claim read as unsourced. PARTIAL for the heterogeneity, which is what the valuation confidence’s ten-point haircut is for.
✓
Donatien prior calibration — calibration-DLO-20260911-1900.json (11 Sep 2026), and the rendered report of the same date Price US$14.96, HOLD/BUY/BUY, Q62 V80 T62 D68, attractive, warranted 19.63 with actual 13.08 for a ratio of 0.67, fair value US$18.50, Half-Size. Also, because claims in this report lean on them. The first pair are a CHANGED MARKET OBSERVATION rather than a corrected error — the tape moved, which is what the delta reports — and the three after them are SUPERSEDED and CORRECTED by this report, listed here only so the claims that withdraw them can be checked: relative_strength_vs_spy 15.9 and relative_strength_vs_sector 17.0; corporate cash estimated at ‘roughly US$406m’ and net cash at ‘roughly US$339m’; the next earnings date it recorded, since CORRECTED, of 18 Nov 2026; and, on the merchant float, its own words — “Most of that balance is merchant float — money dLocal is holding on its customers’ behalf against trade payables, not money it can spend”, which is the BALANCE-SHEET half of the trap it caught. Its rendered HTML was searched directly for the three absence claims this report makes, and the searches are recorded in absence_searches so verify_absence.py re-runs them.
✓
Quarterly balance sheet and cash-flow statements for DLO (yfinance, seven quarters), cross-checked against the 6-K 30 Jun 2026: cash and equivalents US$794.9m, financial assets at fair value US$79.2m, trade and other receivables US$1,149.5m, trade and other payables US$1,554.9m, equity attributable to owners US$540.2m (TOTAL equity US$540.517m, the difference being US$0.269m of non-controlling interest). Financial liabilities US$64.632m plus lease liabilities US$1.113m current and US$1.626m non-current gives US$67.371m, which reconciles EXACTLY to the provider's total-debt field. Merchant float, measured on dLocal's own MERCHANT WORKING CAPITAL — built on the line items the release’s Adjusted-Free-Cash-Flow definition NAMES, which is not quite the same as a definition the release gives: it defines the CHANGES (‘changes in the period in the balance of trade receivables net, plus trade payables, plus other tax liabilities’), and the LEVEL series below is this report’s own faithful construction on those three lines rather than a disclosure. Trade payables PLUS other tax liabilities, less ALL trade receivables, has gone US$203.4m at 30 Jun 2025 to US$241.3m, US$329.0m, US$389.2m and US$400.1m at 30 Jun 2026, a twelve-month build of US$196.7m. IT RECONCILES, and the arithmetic is published because a reader subtracting the two IFRS lines quoted above will NOT get it: 1,554,943 + 19,351 − 1,149,456 − 24,737 = 400,101 at 30 Jun 2026, and 691,081 + 14,330 − 487,320 − 14,698 = 203,393 a year earlier. Trade payables less TRADE receivables alone gives 405.5, not the 405.4 an earlier draft of this note published; and the US$5.4m difference from 400,101 is other receivables LESS other tax liabilities — 24,737 − 19,351 = 5,386, a NET of two lines. The note previously said the difference WAS the other tax liabilities, which is false on its own four figures: those alone move the measure the other way, by US$19.4m to 380,750 — which is exactly the 380.8 a later round wrongly adopted. The non-current leg is what ‘ALL trade receivables’ carries: Note 17 ‘Advances and other receivables’, US$24,737k. An earlier draft of this report labelled the series ‘payables less all receivables’, and a later round then ‘corrected’ the SERIES to 189.1-to-380.8 on that wrong label — taking a right number and making it wrong. The LABEL was the defect; the series was always right. In FY2024 it ran the other way: operating cash flow was MINUS US$32.8m for the year, on a MERCHANT working-capital change of US$146.0m. An earlier draft of this note put a US$167.2m outflow here — that is the provider’s TOTAL change in working capital, a wider base than the merchant measure this series is built on, so the two were mixed. It is a two-way balance, not a funding source. Trailing stock-based compensation US$25.77m, 1.90% of revenue — and annually US$24.14m in FY2025 against US$23.78m in FY2024, US$11.92m in FY2023 and US$8.68m in FY2022, which is what ‘flat in absolute terms while revenue grew 55%’ rests on. Quarterly: 6.84, 6.37, 6.07 and 6.49 for Q3-25 to Q2-26.
✓
get_stock_news for DLO — 45 days to 30 Sep 2026 One genuinely new operational item since the prior report: on 15 Sep dLocal announced a partnership with the risk platform Oscilar to put AI-driven anti-money-laundering checks across more than 60 markets, configured to local rules. Otherwise the coverage is constructive and thin — growth pieces from Insider Monkey and Motley Fool, a Simply Wall St note that the stock is down 75% over five years, and a MarketBeat piece on a breakout level that has since failed. No negative company-specific headline in the window.
⚠
Next earnings date — yfinance calendar and earnings_dates, 30 Sep 2026 11 Nov 2026 at 15:00 ET, consensus EPS US$0.22 on revenue of about US$407.8m. PARTIAL because get_earnings_calendar returned an empty payload, so this rests on the two yfinance surfaces, which agree with each other and with the 16 August report. CORRECTION: the prior report recorded 18 November from a secondary source while that tool was returning HTTP 401. Surprise history: Q2 2026 missed by 3.77% and Q1 2026 by 1.01%, after beats of 21.77% and 23.19% — TWO CONSECUTIVE MISSES, which is what the Rule Forecast's execution leg reads.
✗
get_risk_factors for DLO Returned “No risk factors found” (the endpoint is in beta). NOT used. The merchant-concentration and regulatory exposures in this report are sourced to the earnings release, the FY2025 release, the Goldman Sachs transcript and — for the audited concentration series — the FY2025 20-F. AN EARLIER DRAFT OF THIS REPORT TREATED THIS TOOL FAILURE AS EVIDENCE THAT NO PRIMARY SOURCE EXISTED. It does: the 20-F discloses the top-10 revenue share three times. A tool returning nothing says nothing about whether a filing says it, which is the framework’s own manufactured-absence rule, and this draft broke it.
Impact on scores:

Two failures, both recorded and neither load-bearing. get_earnings_calendar returned an empty payload, so the 11 November earnings date rests on two agreeing yfinance surfaces — flagged PARTIAL, and it is what let the prior report's 18 November slip through when the same tool was returning HTTP 401. get_risk_factors returned nothing — and an earlier draft of this report treated that as evidence that no primary source for the merchant-concentration figure existed. That was false and it is corrected here: the FY2025 20-F discloses the top-10 revenue share three separate times, and the audited series (61% / 62% / 60%, with two customers each above 10% of revenue in 2025 against one in 2024 and none in 2023) is now published in §2 and §3 [2]. The failure is the framework’s own manufactured-absence rule broken in its textbook form: a tool returning nothing was read as a filing saying nothing, and the absence was never recorded as a search, so verify_absence.py was blind to it by construction. The 20-F was in the same filer batch as the FY2025 6-K this report already cited.

Confidence haircuts, itemised. Quality 68 — base 80 less 12 for a moat and competitive read that rests on conference commentary and third-party market descriptions rather than filings. Valuation 68 — base 80, plus 5 for hard analyst targets, plus 5 for the grades distribution, plus 3 for the ratings cross-reference, less 10 for a genuinely heterogeneous peer set, less 10 for the forward-EPS panel disagreement, less 5 because the own-history decile's upper tail is a post-IPO bubble. Timing 67 — base 75 less 8, because the multi-timeframe daily row is stamped one session behind this report and two of its five rows are after-hours bars on effectively zero volume. Overall 67 = min(68, 68, 67).

Three panel disagreements, all declared, the conservative source scored in each case: forward EPS (FMP US$1.09259 on four estimates against yfinance US$1.14373 on four — 4.7% apart, both Attractive, FMP scored); price targets (FMP US$18.50 consensus against yfinance US$18.80 mean — FMP scored); analyst grades (FMP 69.2% bullish across thirteen against yfinance 90.0% across ten — FMP scored, and the other reading would have scored a band higher).

One documented deviation from the framework's stated source. The risk-free rate is supposed to come from the macro report the Economic-Alignment step consumes; MacroDriver-state-20260920 carries no such field, so FRED DGS10 is substituted at 5.26% (29 September, the latest published observation as of a 30 September stamp). The prior report used Trading Economics at 4.95%, so both the value and the source moved [19].

The corporate-action existence check. The EDGAR filing index for CIK 0001846832 was read directly this run, and the most recent filing of ANY type is the Schedule 13D/A of 19 August 2026 — no 6-K, no placement, no financing and no insider form since [9]. That is a confirmed absence against a named, dated index rather than a search that happened not to surface anything, which is the distinction the framework draws between an open-world claim and a fetchable one.

Three absence claims, searched rather than assumed. Each is recorded in the calibration's absence_searches with the regular expression actually run against the prior report's rendered HTML, and verify_absence.py re-runs them at build time: that the 11 September report nowhere adjusts operating cash flow for merchant-float movements, that it never mentions the US$150m credit facility, and that it never mentions the share-repurchase programme. All three are load-bearing for findings this report makes, which is exactly why they were searched.

DISCLAIMER: This is a quantitative framework for educational purposes only. It is not financial advice. Always do your own research and consult a licensed financial advisor before making investment decisions.