# Verification record — ls/rsl/fbt-return@1.0.0

GOV-4769 ("GovSchema Standard Research"). This cycle re-scanned `CATALOG.md`'s own `## Known Gaps & Opportunities` entry `0q` for the strongest already-banked candidate rather than scouting a brand-new jurisdiction: RSL's own "Forms & Instructions" page (`https://www.rsl.org.ls/forms-and-instructions`) was disclosed as still separately listing the FBT Return and two editions of the Income Tax Return for Trusts and Estates as open backlog after the prior cycle (GOV-4762) closed the Company Income Tax Return candidate from the same library. Re-fetched `https://www.rsl.org.ls/forms-and-instructions` fresh this cycle (HTTP 200, 49,856 bytes) rather than trusting the prior cycle's own disclosure, and confirmed all three candidates are still linked from the live page. Picked the FBT Return: a genuinely distinct return type (quarterly, not annual) rather than a second edition of an already-modeled annual return, and — at 2 pages versus the Trusts and Estates return's 8/10 pages of Individual Income Tax Return-style Parts A-G — a much tighter, self-contained form well suited to a single schema version with no scope deferral needed.

## Reaching the live source

Fetched directly: `https://www.rsl.org.ls/sites/default/files/2024-07/FBT%20Return.pdf`, HTTP 200, `Content-Type: application/pdf`, `Content-Length: 1006801` (byte-identical to the downloaded file), `Last-Modified: Mon, 22 Jul 2024 10:42:15 GMT`, sha256 `e4cb6a6a4e9ce9a99961eb83042ff7533a5ffed96453b3f14c83a834290a53d6`, no login/CAPTCHA/WAF gate — linked directly from `https://www.rsl.org.ls/forms-and-instructions` under "Income Tax Forms", alongside the Company Income Tax Return (already modeled), the Individual Income Tax Return (already modeled), and the Income Tax Return for Trusts and Estates (two editions — `Income%20Tax%20Return%20for%20Trusts%20and%20Estates%20-%2017022020.pdf`, 781,711 bytes, and `Income%20Tax%20Return%20for%20Trusts%20and%20Estates%20.pdf`, 590,143 bytes — both re-confirmed reachable this cycle and left as a future-cycle candidate; which of the two editions is current was not resolved this cycle).

## Extraction method

`pdfjs-dist` (`/tmp/node_modules/pdfjs-dist/legacy/build/pdf.js`) reports 2 pages; `getAnnotations()` returns zero annotations on either page, confirming a flat, non-fillable PDF with no AcroForm/XFA fields — this registry's established flat-PDF pattern for RSL's own forms library. `getTextContent()`'s item stream was legible and internally consistent (no ghost-text or scrambled-order artifacts of the kind found in the Individual Income Tax Return), but the source is dense with multi-column tables (Part 1's three-column benefit-category grid, Part 2's four-vehicle grid, Part 3's five-property grid) where column/row association from the raw text stream alone would be unreliable. Both pages were rendered with `node-canvas` at 2x scale and visually cross-checked against the text-derived field list before authoring; the rendered image was the deciding source for exactly which columns are shaded/not-applicable (Motor Vehicles and Housing rows have no "Employees' Contribution" column in Part 1 — confirmed only from the visual grey shading, not stated in prose anywhere on the form) and for the placement of the "X 1.67" and "@ 40%" gross-up/rate annotations next to their respective computation boxes.

## Scoping decision

The source form (FORM FBT1) is short enough to model in full with no deferred sections, unlike this registry's other RSL companion schemas:

- **Return Details** (header): taxpayer name/address, TIN, header date box, Tax Year, and Quarter Ended (one of four fixed calendar-quarter options, tick-box on the source).
- **Part 1 — Calculation of Fringe Benefits Tax Due**: all nine benefit categories (Motor Vehicles, Housing, Utilities, Meal or Refreshment, Domestic Assistance, Medical, Loan, Debt Waiver, Excessive Superannuation Contributions), each with a No. of Employees and Gross Taxable Value field; the seven categories other than Motor Vehicles and Housing additionally carry an Employees' Contribution field (Motor Vehicles/Housing route their own employee-contribution accounting through Parts 2/3 instead — the source form shades that column grey for those two rows). The Total row, Less Employees' Contributions, Net Taxable Value, Fringe Benefits Taxable Amount (grossed up ×1.67), and Fringe Benefits Tax Due (@ 40%) close out the part.
- **Part 2 — Motor Vehicles**: four vehicle-slot columns (`motorVehicle1`…`motorVehicle4`), each with the six rows (a) Make/model/year, (b) Cost when new, (c) Value first provided for private use, (d) Days available for private use in a quarter, (e) Employee contribution, and the computed Gross Taxable Value (formula: `(Line(c) × 15% × Line(d)/Y) − Line(e)`, Y = days in the year of assessment), plus a continuation-sheet total and the amount transferred to Part 1.
- **Part 3 — Housing**: five property-slot rows (`housingProperty1`…`housingProperty5`), each with Description/Address, Open market value, Less employee contribution, the resulting Market-value-of-rental Amount, 20% of employee remuneration, and the Gross Taxable Value (the lesser of the two computed alternatives), plus a continuation-sheet total and the amount transferred to Part 1.
- **Declaration**: declarant's name, contact number, designation, and signing date.

No sections were deferred to a future minor version; this is the complete form.

## Disclosed findings and interpretation choices

1. **Bounded-slot pattern for repeated entities** (`motorVehicle{1-4}*`, `housingProperty{1-5}*`), matching this registry's established convention (e.g. `gr/aade/analytiki-katastasi-misthomaton-akinitis-periousias-e2`'s `property{1-10}*` fields) rather than an unbounded array type, since the source form itself prints a fixed number of columns/rows before falling back to an attached continuation sheet.
2. **`motorVehiclesEmployeesContribution` and `housingEmployeesContribution` are deliberately not modeled in Part 1**, confirmed from the rendered page image showing that column visually shaded grey for exactly those two rows (not stated in the form's own instructional prose) — those two benefit types' employee contributions are instead captured inside Parts 2 and 3's own per-vehicle/per-property fields (`motorVehicle{n}EmployeeContribution`, `housingProperty{n}LessEmployeeContribution`).
3. **`fringeBenefitsTaxableAmount` and `fringeBenefitsTaxDue` descriptions disclose the ×1.67/@40% multiplicative relationship** to `netTaxableValue`/`fringeBenefitsTaxableAmount` respectively, since this schema's `crossFieldValidation` only supports field-to-field comparison operators (`equals`/`notEquals`/`greaterThan`/etc., not a scalar-multiple check per `spec/v0.3/govschema.schema.json`'s own `fieldCompare` definition) — the relationship is documented, not enforced.
4. **Three `crossFieldValidation` rules assert each transcribed total matches its source line**: `lessEmployeesContributionsMatchesTotal` (Part 1's own "Less Employees' Contributions" line against its "Total" row), `motorVehiclesTransferMatchesPart1` and `housingTransferMatchesPart1` (Part 2's/Part 3's own transfer line against the category's Gross Taxable Value in Part 1) — mirroring the two prior RSL schemas' own established pattern of checking every value the filer must copy from one part of the form into another.
5. **`quarterEnded` modeled as a required enum** of the four fixed quarter-end dates printed on the source form (30 June / 30 September / 31 December / 31 March) rather than a free-form date, since the form itself presents only these four tick-box options — Lesotho's fiscal year (1 April-31 March) quarters, matching this registry's other RSL schemas' own tax-year convention.
6. **`taxYear` is a free-text string, not derived from the form edition**, since (unlike the year-specific Individual/Company Income Tax Return editions) the FBT Return is a single recurring quarterly form with a blank Tax Year box the filer completes for whichever year the quarter falls in.
7. **`returnDate` (the header's own standalone "Date:" box) is modeled as a distinct, optional field from `declarationDate`** (the signed Declaration date) — confirmed from the rendered image as two visually separate boxes in different sections of the form.
8. **Signature is not modeled** (only the accompanying `declarationDate`), consistent with this registry's standing convention that a physical/wet signature is not a machine-fillable data field.
9. **`motorVehicle{n}DaysAvailableForPrivateUse` is capped at a `maximum` of 92**, the longest calendar quarter, since the field is explicitly scoped "in a quarter" by the source form's own row label (unlike the annual returns' whole-year day counts).
10. **A single optional `continuationSheet` document entry models the form's own generic "if there is insufficient space, please attach a separate sheet" instruction**, left unconditional (not `requiredWhen`-gated) since the source form has no single toggle field indicating a continuation sheet is attached — the `motorVehiclesContinuationSheetsTotal`/`housingContinuationSheetsTotal` fields being non-zero is the closest available signal, but gating document-requiredness on a non-zero numeric field would be a novel, undisclosed pattern for this registry and was not introduced here.

## Conformance

6 mock scenarios exercised against an ephemeral, from-scratch conformance checker (deriving required/`crossFieldValidation` rules directly from this schema's own `fields[]` and `crossFieldValidation[]`, discarded after use, not committed): (1) a minimal filing with no fringe benefits provided in the quarter at all (only the required header/declaration fields populated), 0 errors; (2) a filing with both a motor vehicle and a housing benefit, Part 2/Part 3 transfers matching Part 1's own totals, 0 errors; (3) the same filing with a deliberate mismatch between `motorVehiclesGrossTaxableValueTransfer` and Part 1's `motorVehiclesGrossTaxableValue`, correctly raising exactly 1 `crossFieldValidation` error; (4) a deliberate mismatch between `lessEmployeesContributions` and `totalEmployeesContribution`, correctly raising exactly 1 `crossFieldValidation` error; (5) a filing missing the required `declarationDate`, correctly raising exactly 1 required-field error; (6) a loan-benefit filing (the `31-march` quarter, exercising the Employees' Contribution column that Motor Vehicles/Housing lack), 0 errors.

Validated clean with `node tools/validate.mjs` and `node tools/validate-ajv.mjs` (ajv 2020-12, v0.3 meta-schema), individually and as part of the full registry run. `registry-index.json` regenerated via `npm run build-index` in `tools/govschema-client/`.
