@classytic/ca-tax 0.0.13 → 0.0.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,79 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.0.14] - 2026-09-01
4
+
5
+ ### Added — `footnotes` on `FormDefinition`
6
+
7
+ `FormDefinition` gains an optional `footnotes?: readonly string[]` — asterisked
8
+ rules printed on the form itself (loss-expiry conditions, emission rules, carry
9
+ eligibility gates). Populated for the AT1 jacket and every AT1 schedule this
10
+ package models, transcribed from the matching TRA PDF's own printed instructions.
11
+
12
+ ### Fixed — Schedule 21 carry-forward link fires on the wrong line
13
+
14
+ `continuityFields` emitted the `to: { form: 'AT1SCH12', line: '…' }` link on the
15
+ **closing balance** line (`k === 'closing'`). The form itself prints "Carry
16
+ forward to Schedule 12, line …" directly beside the **applied-against-income**
17
+ line — the closing balance is this schedule's own running total and never carries
18
+ anywhere. The check is now `k === 'appliedAgainstIncome'`.
19
+
20
+ The capital pool gains a `toSchedule12Note` reminding that Schedule 21 tracks
21
+ capital losses at their full amount while Schedule 12 wants the allowable
22
+ (inclusion-rate-scaled) portion — carrying the raw figure over-deducts by roughly
23
+ two.
24
+
25
+ ### Fixed — restricted-farm pool missing its applied-against-income line
26
+
27
+ `restricted-farm` pool in `AT1_SCHEDULE_21_POOLS` had no `appliedAgainstIncome`
28
+ entry. Confirmed on the live form (`AT1SCH21-loss-continuity-TRA11741.pdf` page 2):
29
+ line 099 ("Amount applied against farming income") belongs to the **restricted**
30
+ farm pool, not the farm pool. An earlier field-map draft grouped it under "Farm",
31
+ which read ambiguously; the form settles it.
32
+
33
+ ### Fixed — listed personal property carry-forward is conditional on Schedule 18
34
+
35
+ Listed personal property has no fixed Schedule 12 destination: the form makes it
36
+ conditional on whether Schedule 18 exists. The pool now carries
37
+ `appliedAgainstIncomeNote` instead of a `toSchedule12` — the note instructs the
38
+ preparer to take the amount from Schedule 18 line 060 when that schedule exists,
39
+ or from federal Schedule 6 line 655 when it does not.
40
+
41
+ ### Fixed — `AlbertaLossPool.CONTINUITY_CAPTIONS` type updated
42
+
43
+ `CONTINUITY_CAPTIONS` was typed as a `Record` keyed on `AlbertaLossPool` minus
44
+ the three metadata fields. The two new fields (`toSchedule12Note`,
45
+ `appliedAgainstIncomeNote`) are also metadata — they are now omitted from the
46
+ key type so the record stays exhaustive over the actual row labels.
47
+
48
+ ### Added — Schedule 3 carry link + PDF provenance
49
+
50
+ Schedule 3 line 601 (the CITC credit) gains a `to` link → AT1 line 076, as
51
+ printed on the form ("Enter this amount on AT1 page 2, line 076"). Provenance
52
+ updated from the spec text to the actual PDF (`AT1SCH03-TRA11725.pdf`).
53
+
54
+ ### Added — Schedule 4 total/room/credit lines + PDF provenance
55
+
56
+ Schedule 4 gains a `total` section with three new fields:
57
+
58
+ - **014** — "Total Allowable Credits" (sum of line 012 column H)
59
+ - **018** — Room: AT1 jacket line 068 minus (lines 070 + 071) — distinct from
60
+ Schedule 3's room at 602, which subtracts 070 + 072 instead; both confirmed
61
+ by reading the printed forms directly
62
+ - **020** — Alberta Foreign Investment Income Tax Credit (lesser of 014 and 018),
63
+ carrying to AT1 line 072 via `to` link
64
+
65
+ Provenance updated to the actual PDF (`AT1SCH04-TRA11728.pdf`).
66
+
67
+ ### Added — Schedule 20 carry links
68
+
69
+ Charitable donations and gifts pools gain `toSchedule12` entries, and the
70
+ computed totals carry to Schedule 12 via `to` links, confirmed against
71
+ `AT1SCH20-TRA11740.pdf`.
72
+
73
+ ### Added — Schedule 29 carry link
74
+
75
+ Line 132 gains a `to` link to AT1 page 2, line 129, as printed on the form.
76
+
3
77
  ## [0.0.13] - 2026-08-31
4
78
 
5
79
  ### Added — 10 new AT1 schedule form definitions
package/dist/forms.mjs CHANGED
@@ -716,7 +716,12 @@ const AT1_JACKET = {
716
716
  document: "research/sources/tra-spec/AT1-Chapter3-2025.2-full.txt",
717
717
  retrieved: "2026-08-14",
718
718
  revision: "AT1 Net File specification 2025.2, Chapter 3 cross-reference tables"
719
- }
719
+ },
720
+ footnotes: [
721
+ "The AT1 and applicable schedules must be received by Tax and Revenue Administration (TRA) within 6 months of the corporation's taxation year end. If the corporation is not exempt from filing, it must file electronically using Net File unless it is an insurance corporation, a non-resident corporation, or reports in functional currency.",
722
+ "Taxable income: the calculation for federal purposes can differ from the calculation for Alberta purposes if the corporation chooses different discretionary deduction amounts (e.g. different application of losses, CCA, charitable donations).",
723
+ "If line 060 and/or 061 is \"Yes\", Schedule 12 and supporting schedules must be completed to reconcile federal and Alberta taxable income. If both are \"No\", line 062 must equal federal T2 lines 360-370 (or federal Schedule 4 lines 110+310 for a loss)."
724
+ ]
720
725
  };
721
726
  /** 000080001 — Alberta tax payable, before credits. */
722
727
  const AT1_TAX_PAYABLE_LINE = id$20("080");
@@ -868,7 +873,13 @@ const AT1_SCHEDULE_1 = {
868
873
  document: "research/sources/tra-forms/pdf/AT1SCH01-small-business-deduction-TRA11723.pdf",
869
874
  retrieved: "2026-08-30",
870
875
  revision: "TRA11723 (AT2) Rev. 2023-04 — lines 001-013 and 041/043/045 only, see this module's doc comment"
871
- }
876
+ },
877
+ footnotes: [
878
+ "For corporations which were Canadian-controlled private corporations throughout the taxation year and which had income from active businesses carried on in Canada.",
879
+ "If the corporation has income (loss) from a partnership with a fiscal period ending after March 31, 2001, the income from active businesses must be recalculated for Alberta purposes by increasing the partnership's business limit for the period straddling that date — see the Guide for the full calculation.",
880
+ "Area A: the percentage allocated in column 044 must be the same percentage used to determine the business limit on federal Schedule 23 for all taxation years ending after December 4, 2002. The total of all percentages cannot exceed 100%.",
881
+ "Area A: the amount in column 045 must be rounded to the nearest dollar, rounding up at $.50 and over."
882
+ ]
872
883
  };
873
884
  //#endregion
874
885
  //#region src/t2/at1/forms/schedule2.ts
@@ -947,7 +958,12 @@ const AT1_SCHEDULE_2 = {
947
958
  document: "research/sources/tra-forms/pdf/AT1SCH02-income-allocation-factor-TRA11724.pdf",
948
959
  retrieved: "2026-08-30",
949
960
  revision: "TRA11724 (AT271) Rev. 2023-10 — Area A only, see this module's doc comment"
950
- }
961
+ },
962
+ footnotes: [
963
+ "For corporations with taxable income that is in part allocable to permanent establishments outside Alberta.",
964
+ "Non-resident corporations (ITA Regulation 413): salaries and wages paid in all jurisdictions does not include amounts paid to employees of a permanent establishment outside Canada; gross revenue in all jurisdictions does not include revenue reasonably attributable to a permanent establishment outside Canada.",
965
+ "If either amount B or D is nil, do not multiply by 1/2."
966
+ ]
951
967
  };
952
968
  //#endregion
953
969
  //#region src/t2/at1/forms/schedule10.ts
@@ -1175,7 +1191,13 @@ const AT1_SCHEDULE_10 = {
1175
1191
  document: "research/sources/tra-forms/pdf/AT1SCH10-loss-carryback-TRA11731.pdf",
1176
1192
  retrieved: "2026-08-30",
1177
1193
  revision: "TRA11731 (AT293) Rev. 2025-12 — non-capital, farm, other-loss and capital; see this module's doc comment"
1178
- }
1194
+ },
1195
+ footnotes: [
1196
+ "The application of losses is at the corporation's discretion — the application of losses for federal purposes does not apply for Alberta purposes.",
1197
+ "A Loss Carry-Back Application must be filed even if the corporation is exempt from filing its AT1.",
1198
+ "Inclusion rate for the capital loss column: 3/4 for dispositions before February 28, 2000; 2/3 for dispositions after February 27, 2000 and before October 18, 2000; 1/2 for dispositions after October 17, 2000. Where a taxation year straddles more than one period, use the effective rate computed on federal Schedule 6 or the Schedule 18 supporting documentation.",
1199
+ "The amount of loss claimed for Alberta purposes may differ from the amount claimed for federal purposes. Limitations on deductibility under the federal Act apply for Alberta purposes, except that an amount of non-capital or farm loss used to reduce the federal Part IV tax base does not reduce the loss balance available for Alberta purposes."
1200
+ ]
1179
1201
  };
1180
1202
  //#endregion
1181
1203
  //#region src/t2/at1/forms/schedule12.ts
@@ -1664,7 +1686,8 @@ const AT1_SCHEDULE_13 = {
1664
1686
  document: "research/field-maps/at1-schedule-13-cca.md",
1665
1687
  retrieved: "2026-08-07",
1666
1688
  revision: "captured from the live TRA-certified form"
1667
- }
1689
+ },
1690
+ footnotes: ["This schedule is required if the opening UCC or the CCA claimed for Alberta purposes for any class of assets differs from that for federal purposes.", "All federal notes listed on the T2 Schedule 8 — Capital Cost Allowance — also apply for Alberta purposes."]
1668
1691
  };
1669
1692
  //#endregion
1670
1693
  //#region src/t2/at1/forms/schedule16.ts
@@ -1953,7 +1976,8 @@ const AT1_SCHEDULE_17 = {
1953
1976
  document: "research/field-maps/at1-schedules-16-17.md",
1954
1977
  retrieved: "2026-08-08",
1955
1978
  revision: "verified line by line against the live TRA-certified form"
1956
- }
1979
+ },
1980
+ footnotes: ["This schedule is required if the opening balance or the claim for Alberta purposes differs from that for federal purposes."]
1957
1981
  };
1958
1982
  //#endregion
1959
1983
  //#region src/t2/at1/forms/schedule18.ts
@@ -2302,7 +2326,8 @@ const AT1_SCHEDULE_20_POOLS = [{
2302
2326
  available: "014",
2303
2327
  applied: "016",
2304
2328
  closing: "018"
2305
- }
2329
+ },
2330
+ toSchedule12: "056"
2306
2331
  }, {
2307
2332
  key: "gifts",
2308
2333
  label: "Gifts to Canada or a province, cultural property and ecologically sensitive land",
@@ -2317,7 +2342,8 @@ const AT1_SCHEDULE_20_POOLS = [{
2317
2342
  available: "074",
2318
2343
  applied: "076",
2319
2344
  closing: "078"
2320
- }
2345
+ },
2346
+ toSchedule12: "058"
2321
2347
  }];
2322
2348
  const SECTIONS$32 = [
2323
2349
  {
@@ -2489,7 +2515,11 @@ const AT1_SCHEDULE_20 = {
2489
2515
  kind: "money",
2490
2516
  role: computed ? "computed" : "input",
2491
2517
  section: pool.key,
2492
- ...NOTES$1[key] ? { note: NOTES$1[key] } : {}
2518
+ ...NOTES$1[key] ? { note: NOTES$1[key] } : {},
2519
+ ...key === "applied" ? { to: {
2520
+ form: "AT1SCH12",
2521
+ line: `012${pool.toSchedule12}001`
2522
+ } } : {}
2493
2523
  };
2494
2524
  })), ...MAXIMUM.map(({ field, ...rest }) => ({
2495
2525
  ...rest,
@@ -2499,7 +2529,12 @@ const AT1_SCHEDULE_20 = {
2499
2529
  document: "research/validation/auratax/2026-08-07-cca-classes/README.md",
2500
2530
  retrieved: "2026-08-08",
2501
2531
  revision: "line numbers verified against the live TRA-certified form"
2502
- }
2532
+ },
2533
+ footnotes: [
2534
+ "This schedule is required if the opening balance or the claim for Alberta purposes differs from that for federal purposes.",
2535
+ "If the corporation is reporting nil net income or a loss for the year, donations cannot be claimed.",
2536
+ "If the corporation elects to differ its Alberta claim for the additional deduction for gifts of medicine (federal T2 Schedule 2, line 660), enter the Alberta amount on Schedule 12, line 40, the federal amount on Schedule 12, line 41, and provide the explanation of the difference on Schedule 12, line 48."
2537
+ ]
2503
2538
  };
2504
2539
  /**
2505
2540
  * Donations carry forward five years.
@@ -2543,7 +2578,8 @@ const AT1_SCHEDULE_21_POOLS = [
2543
2578
  otherAdjustments: "065",
2544
2579
  carryBack: "067",
2545
2580
  closing: "069",
2546
- toSchedule12: "066"
2581
+ toSchedule12: "066",
2582
+ toSchedule12Note: "Carry forward this amount × the inclusion rate. Schedule 21 tracks capital losses at their full amount; Schedule 12 wants the allowable portion — carrying the raw figure over-deducts by roughly two."
2547
2583
  },
2548
2584
  {
2549
2585
  key: "farm",
@@ -2568,6 +2604,7 @@ const AT1_SCHEDULE_21_POOLS = [
2568
2604
  opening: "093",
2569
2605
  windUpTransfer: "095",
2570
2606
  currentYearLoss: "097",
2607
+ appliedAgainstIncome: "099",
2571
2608
  section80Adjustment: "101",
2572
2609
  otherAdjustments: "103",
2573
2610
  carryBack: "105",
@@ -2584,7 +2621,8 @@ const AT1_SCHEDULE_21_POOLS = [
2584
2621
  appliedAgainstIncome: "119",
2585
2622
  otherAdjustments: "121",
2586
2623
  carryBack: "123",
2587
- closing: "125"
2624
+ closing: "125",
2625
+ appliedAgainstIncomeNote: "If Schedule 18 exists, carry forward the amount from Schedule 18 line 060. Otherwise, carry forward the amount from federal Schedule 6 line 655."
2588
2626
  }
2589
2627
  ];
2590
2628
  const SECTIONS$31 = [{
@@ -2654,7 +2692,7 @@ const PART_1 = [
2654
2692
  },
2655
2693
  {
2656
2694
  field: "013",
2657
- caption: "Subtotal of lines 003 to 011",
2695
+ caption: "Subtotal of lines 002 to 012",
2658
2696
  kind: "money",
2659
2697
  role: "total",
2660
2698
  section: "current-year"
@@ -2706,17 +2744,19 @@ const CONTINUITY_ORDER = Object.keys(CONTINUITY_CAPTIONS);
2706
2744
  const continuityFields = AT1_SCHEDULE_21_POOLS.flatMap((pool) => CONTINUITY_ORDER.filter((k) => pool[k]).map((k) => {
2707
2745
  const isClosing = k === "closing";
2708
2746
  const isCarryBack = k === "carryBack";
2747
+ const isAppliedLine = k === "appliedAgainstIncome";
2709
2748
  return {
2710
2749
  line: id$10(pool[k]),
2711
2750
  caption: `${pool.label} — ${CONTINUITY_CAPTIONS[k]}`,
2712
2751
  kind: "money",
2713
2752
  role: isClosing ? "computed" : "input",
2714
2753
  section: "continuity",
2715
- ...isClosing && pool.toSchedule12 ? { to: {
2754
+ ...isAppliedLine && pool.toSchedule12 ? { to: {
2716
2755
  form: "AT1SCH12",
2717
2756
  line: `012${pool.toSchedule12}001`,
2718
- note: "The Alberta side of the loss pair"
2757
+ note: pool.toSchedule12Note ?? "Printed on the form directly beside this line."
2719
2758
  } } : {},
2759
+ ...isAppliedLine && pool.appliedAgainstIncomeNote ? { note: pool.appliedAgainstIncomeNote } : {},
2720
2760
  ...isCarryBack ? { note: "A carry-back also requires Schedule 10 to be completed." } : {}
2721
2761
  };
2722
2762
  }));
@@ -2736,7 +2776,14 @@ const AT1_SCHEDULE_21 = {
2736
2776
  document: "research/field-maps/at1-schedules-12-21.md",
2737
2777
  retrieved: "2026-08-08",
2738
2778
  revision: "verified against the live TRA-certified form"
2739
- }
2779
+ },
2780
+ footnotes: [
2781
+ "This schedule is required if the opening balance or the claim for Alberta purposes differs from that for federal purposes.",
2782
+ "The corporation may choose whether or not to deduct an available loss from income in a taxation year. It can deduct losses in any order. However, for each type of loss, ensure that the oldest loss is deducted first.",
2783
+ "A non-capital loss expires after 7 taxation years if it arose in a taxation year ending before March 23, 2004, or after 10 taxation years if it arose in a taxation year ending after March 22, 2004 and before 2006, or after 20 years if it arose in a taxation year after 2005.",
2784
+ "An allowable business investment loss becomes a net capital loss after 7 taxation years if it arose in a taxation year ending before March 23, 2004, or after 10 taxation years if it arose in a taxation year ending after March 22, 2004.",
2785
+ "A farm loss or restricted farm loss expires after 10 tax years if it arose in a tax year ending before 2006, and after 20 tax years if it arose in a tax year ending after 2005."
2786
+ ]
2740
2787
  };
2741
2788
  //#endregion
2742
2789
  //#region src/t2/at1/forms/schedule29.ts
@@ -2958,7 +3005,12 @@ const AT1_SCHEDULE_29 = {
2958
3005
  kind: "money",
2959
3006
  role: "total",
2960
3007
  section: "grant",
2961
- note: "Line 130 minus line 132. Carried to AT1 page 2, line 129."
3008
+ note: "Line 130 minus line 132.",
3009
+ to: {
3010
+ form: "AT1",
3011
+ line: "000129001",
3012
+ note: "Carried to AT1 page 2, line 129."
3013
+ }
2962
3014
  },
2963
3015
  {
2964
3016
  field: "200",
@@ -3152,7 +3204,8 @@ const AT1_SCHEDULE_29 = {
3152
3204
  document: "research/sources/tra-forms/pdf/AT1SCH29-innovation-employment-grant-TRA14637.pdf",
3153
3205
  retrieved: "2026-08-28",
3154
3206
  revision: "TRA14637 (AT29) Rev. 2026-06. Page 1/2 rendered at 250dpi and cross-checked against AuraTax’s live rendering of the same schedule (research/validation/auratax/2026-08-25-at1-schedule1-royalty/); replaced a prior definition that ground the $4M limit by taxable capital instead of applying the reduction factor to the credit — see schedule29-ieg.ts. Page 2’s limit fields (100/102/104/108/114/116/118/125) and page 3 (the Agreement Among Associated Corporations, 200-325) were added 2026-08-28 by re-rendering the live form at 300dpi — this closed two gaps at once: `ui-line-citations` had no form definition to check the new UI’s 245/265 citations against, and a prior version of `schedule29Values` filed the member’s free-text NAME at line 220, which the form defines as the Federal Business Number — a wrong-box filing the citation check could not have caught on its own, since 220 was not cited by any UI label."
3155
- }
3207
+ },
3208
+ footnotes: ["Schedule 29 must be received by Alberta Treasury Board and Finance, Tax and Revenue Administration within 15 months after the day on or before which the corporation is required to file its AT1 for the year."]
3156
3209
  };
3157
3210
  /** Eight per cent, on the full capped eligible expenditures. */
3158
3211
  const AT1_IEG_BASE_RATE = .08;
@@ -8896,17 +8949,23 @@ const AT1_SCHEDULE_3 = {
8896
8949
  kind: "money",
8897
8950
  role: "computed",
8898
8951
  section: "mad",
8899
- note: "Lesser of line 600 and the room at line 602 (AT1 jacket line 068 minus lines 070+071+072+074); floored at nil."
8952
+ note: "Lesser of line 600 and the room at line 602 (AT1 jacket line 068 minus lines 070+071+072+074); floored at nil.",
8953
+ to: {
8954
+ form: "AT1",
8955
+ line: "000076001",
8956
+ note: "Printed on the form: \"Enter this amount on AT1 page 2, line 076.\""
8957
+ }
8900
8958
  }
8901
8959
  ].map(({ field, ...rest }) => ({
8902
8960
  ...rest,
8903
8961
  line: id$8(field)
8904
8962
  })).sort((a, b) => a.line.localeCompare(b.line)),
8905
8963
  provenance: {
8906
- document: "research/sources/tra-spec/AT1-Chapter3-2025.2-full.txt",
8907
- retrieved: "2026-08-29",
8908
- revision: "AT1 Chapter 3, 2025.2 — no fillable PDF exists for this schedule"
8909
- }
8964
+ document: "research/sources/tra-forms/pdf/AT1SCH03-other-tax-deductions-credits-TRA11725.pdf",
8965
+ retrieved: "2026-09-01",
8966
+ revision: "TRA11725 (AT3) Rev. 2024-04"
8967
+ },
8968
+ footnotes: ["In order to be eligible for any deduction on this schedule, the corporation must have Investor Tax Credit Certificates, Capital Investment Tax Credit Certificates, or an Agri-processing Investment Tax Credit Certificate issued by the appropriate ministry.", "Capital Investment Tax Credit: the Investor Tax Credit must be fully utilized, including any carry-forward amounts, before the Capital Investment Tax Credit can be claimed."]
8910
8969
  };
8911
8970
  //#endregion
8912
8971
  //#region src/t2/at1/forms/schedule4.ts
@@ -8923,6 +8982,10 @@ const AT1_SCHEDULE_4 = {
8923
8982
  id: "countries",
8924
8983
  title: "Foreign Investment Credits",
8925
8984
  description: "One occurrence per country the corporation earned foreign non-business income in, sorted in the same order as federal Schedule 21. AB form 004 exists only if federal Schedule 21 exists."
8985
+ }, {
8986
+ id: "total",
8987
+ title: "Total and Alberta Foreign Investment Income Tax Credit",
8988
+ description: "Summed across every country, then capped by the AT1 jacket room."
8926
8989
  }],
8927
8990
  fields: [
8928
8991
  {
@@ -8967,16 +9030,46 @@ const AT1_SCHEDULE_4 = {
8967
9030
  role: "computed",
8968
9031
  section: "countries",
8969
9032
  note: "Lesser of D (income proration) and G (tax paid less federal credit), both allocation-factor-scaled — see module doc."
9033
+ },
9034
+ {
9035
+ field: "014",
9036
+ caption: "Total Allowable Credits",
9037
+ kind: "money",
9038
+ role: "total",
9039
+ section: "total",
9040
+ note: "Sum of line 012 (column H) across every country occurrence — `computeSchedule4`'s own `totalAllowableCredit`."
9041
+ },
9042
+ {
9043
+ field: "018",
9044
+ caption: "Room — AT1 page 2, line 068 minus (lines 070 + 071)",
9045
+ kind: "money",
9046
+ role: "computed",
9047
+ section: "total",
9048
+ note: "Not the same two jacket lines as Schedule 3's room at line 602 (070+072) — confirmed by reading both printed forms directly."
9049
+ },
9050
+ {
9051
+ field: "020",
9052
+ caption: "Alberta Foreign Investment Income Tax Credit",
9053
+ kind: "money",
9054
+ role: "computed",
9055
+ section: "total",
9056
+ note: "Lesser of line 014 and line 018.",
9057
+ to: {
9058
+ form: "AT1",
9059
+ line: "000072001",
9060
+ note: "Printed on the form: \"Enter this amount on AT1 page 2, line 072.\""
9061
+ }
8970
9062
  }
8971
9063
  ].map(({ field, ...rest }) => ({
8972
9064
  ...rest,
8973
9065
  line: id$7(field)
8974
9066
  })),
8975
9067
  provenance: {
8976
- document: "research/sources/tra-spec/AT1-Chapter3-2025.2-full.txt",
8977
- retrieved: "2026-08-31",
8978
- revision: "AT1 Chapter 3, 2025.2 — no fillable PDF exists for this schedule"
8979
- }
9068
+ document: "research/sources/tra-forms/pdf/AT1SCH04-foreign-investment-income-tax-credit-TRA11728.pdf",
9069
+ retrieved: "2026-09-01",
9070
+ revision: "TRA11728 (AT201) Rev. 2026-03"
9071
+ },
9072
+ footnotes: ["If the corporation has permanent establishments in Alberta only, enter \"1\" in column C (the Alberta allocation factor).", "If the corporation's deduction from income under Alberta Corporate Tax Act subsection 8(2.2) differs from the deduction under Income Tax Act subsection 20(12) for any country, Alberta Schedule 12 is required — the total of these amounts for each country is included in the amount at Schedule 12, line 040."]
8980
9073
  };
8981
9074
  //#endregion
8982
9075
  //#region src/t2/at1/forms/schedule5.ts
@@ -10162,10 +10255,15 @@ const FORMS = [
10162
10255
  line: id(field)
10163
10256
  })).sort((a, b) => a.line.localeCompare(b.line)),
10164
10257
  provenance: {
10165
- document: "research/sources/tra-spec/AT1-Chapter3-2025.2-full.txt",
10166
- retrieved: "2026-08-29",
10167
- revision: "AT1 Chapter 3, 2025.2no fillable PDF exists for this schedule; partial (SFEDE/CFRE per-country lines only)"
10168
- }
10258
+ document: "research/sources/tra-forms/pdf/AT1SCH15-resource-related-deductions-TRA11736.pdf",
10259
+ retrieved: "2026-09-01",
10260
+ revision: "TRA11736 (AT237) Rev. 2026-03 — partial, SFEDE/CFRE per-country lines only (Areas G/H); see this module's doc comment"
10261
+ },
10262
+ footnotes: [
10263
+ "This schedule is required if the balance at the end of the preceding taxation year, or the claim for Alberta purposes, differs from that for federal purposes.",
10264
+ "Specified foreign exploration and development expenses (Area G) are those in respect of a specific country and incurred before 2001. If in respect of two or more countries, determine a reasonable allocation to each country and maintain a consistent allocation in following years.",
10265
+ "Foreign resource expenses (Area H) are those in respect of a specific country and incurred in a taxation year beginning in 2001 or after."
10266
+ ]
10169
10267
  },
10170
10268
  AT1_SCHEDULE_16,
10171
10269
  AT1_SCHEDULE_17,
package/dist/index.d.mts CHANGED
@@ -165,6 +165,15 @@ interface FormDefinition {
165
165
  sections: readonly FormSection[];
166
166
  fields: readonly FormField[];
167
167
  provenance: FormProvenance;
168
+ /**
169
+ * The form's own footnote text — asterisked rules printed on the form
170
+ * itself (loss-expiry conditions, emission rules, the traps a preparer
171
+ * would otherwise only learn by filing wrong once). Lift from the matching
172
+ * `research/field-maps/*.md` doc where one exists — those are already
173
+ * verified against the live form and often name the trap, not just the
174
+ * rule — rather than re-transcribing the PDF from scratch.
175
+ */
176
+ footnotes?: readonly string[];
168
177
  }
169
178
  /** Index a definition's fields by line number. */
170
179
  declare function indexByLine(form: FormDefinition): ReadonlyMap<string, FormField>;
@@ -296,6 +305,12 @@ interface DonationPool {
296
305
  key: 'charitable' | 'gifts';
297
306
  label: string;
298
307
  lines: Record<ContinuityRow, string>;
308
+ /**
309
+ * The Schedule 12 line `applied` carries to — printed directly on the form
310
+ * beside that line ("Carry forward the amount at line … to Schedule 12,
311
+ * line …"), confirmed against `AT1SCH20-charitable-donations-TRA11740.pdf`.
312
+ */
313
+ toSchedule12: string;
299
314
  }
300
315
  declare const AT1_SCHEDULE_20_POOLS: readonly DonationPool[];
301
316
  declare const AT1_SCHEDULE_20: FormDefinition;
@@ -326,12 +341,24 @@ interface AlbertaLossPool {
326
341
  otherAdjustments?: string;
327
342
  carryBack: string;
328
343
  closing: string;
329
- /** The Schedule 12 line this pool's claim lands on. */
344
+ /**
345
+ * The Schedule 12 line `appliedAgainstIncome` carries to — printed directly
346
+ * on the AT1 Schedule 21 form beside that line ("Carry forward to Schedule
347
+ * 12, line …"), confirmed against `AT1SCH21-loss-continuity-TRA11741.pdf`
348
+ * pages 1-2. NOT the closing balance — the closing balance is this
349
+ * schedule's own running total, not what Schedule 12 reconciles against.
350
+ * Absent where the destination isn't a single fixed line — see
351
+ * {@link appliedAgainstIncomeNote}.
352
+ */
330
353
  toSchedule12?: string;
354
+ /** Extra context to print alongside the carry-forward instruction — e.g. capital's ×inclusion-rate reminder. */
355
+ toSchedule12Note?: string;
356
+ /** Explanatory text for `appliedAgainstIncome` when its destination isn't a fixed Schedule 12 line — listed personal property's is conditional on whether Schedule 18 exists. */
357
+ appliedAgainstIncomeNote?: string;
331
358
  }
332
359
  declare const AT1_SCHEDULE_21_POOLS: readonly AlbertaLossPool[];
333
360
  /** The row labels for one pool's continuity, in print order — exported so a UI-side paper Form View can build the same per-pool grid without re-typing the captions. */
334
- declare const CONTINUITY_CAPTIONS: Record<keyof Omit<AlbertaLossPool, 'key' | 'label' | 'toSchedule12'>, string>;
361
+ declare const CONTINUITY_CAPTIONS: Record<keyof Omit<AlbertaLossPool, 'key' | 'label' | 'toSchedule12' | 'toSchedule12Note' | 'appliedAgainstIncomeNote'>, string>;
335
362
  declare const CONTINUITY_ORDER: (keyof typeof CONTINUITY_CAPTIONS)[];
336
363
  declare const AT1_SCHEDULE_21: FormDefinition;
337
364
  //#endregion
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@classytic/ca-tax",
3
- "version": "0.0.13",
3
+ "version": "0.0.14",
4
4
  "description": "Canadian corporate tax engine for @classytic/tax-core — federal T2, Alberta AT1 and Québec CO-17 with form definitions traced to the published forms, plus GST/HST/PST/QST with dated provincial regimes.",
5
5
  "type": "module",
6
6
  "license": "MIT",