How a firm answers “Is this corporation a CCPC for the taxation year?” using agents, TaxGraph, and TaxComputer—with conclusions and workpapers on the engagement file.
ita:125(7), ita:248(1) · limitation: throughout taxation year not closable (FY in progress).
ita:251(5) computed; ita:256(5.1) judgment on file where the control phrase applies| Task | TaxGraph | TaxComputer |
|---|---|---|
| “Which provisions govern CCPC?” | Primary — provision and definition discovery | Computational verification of the research position (provisions cited and steps on the workpaper trail) |
| “Is Daman Opco a CCPC for FY ending 2026-10-31?” | Supporting (definitions, edge cases) | Primary — CCPC yes/no under 125(7) + provision-cited workpaper (exclusions (a)–(d)) |
| “Does our T2 position match the Act?” | Hypothesis and gap finding | Compare asserted file positions to the computed statutory conclusion |
The firm Knowledge stack holds procedures, memos, and versioned agent Skills—playbooks that bundle TaxGraph research steps, TaxComputer determination patterns, and firm checklists. The agent loads them from Knowledge on every CCPC run (not ad hoc prompting). They serve two roles at once:
| Bundled Skill (example) | Helps the tax professional clean up the file | Helps the agent handle messy inputs |
|---|---|---|
| CCPC engagement readiness | Walks through what the TaxComputer needs for 125(7) control—complete shareholder universe vs Schedule A only, option register, listing/(c), 256(5.1) judgment attachment—and what to request from the client or minute book. | Maps EMS facts to scoped inputs; surfaces Qualified limitations and explicit on-file assumptions instead of inventing missing holders. |
| Incomplete cap table pattern | Explains in plain terms why 125(7)(b) aggregation was not run and what would move NR/public roll-ups from “Schedule A only” to full (a) testing when the register is still open. | When EMS shows a thin Schedule A, prompts the confirmation question; if the professional declines or qualifies the answer, applies Qualified / override treatment instead of assuming completeness. |
| CCPC research + verify | TaxGraph-led memo scaffold: definition map, 251(5) / 256(5.1) provisions cited, CRA and case pointers for judgment inputs. | Aligns the TaxGraph export with the TaxComputer request so provisions cited on the trail match the research bundle saved to EMS. |
When completeness standards change, the Knowledge stack updates the Skill bundles—both the professional-facing checklists and the agent’s messy-input patterns stay aligned.
The firm AI agent orchestrates the flow below. Step numbers in the table match the numbered messages in the sequence chart.
sequenceDiagram autonumber actor TaxProf as Tax professional participant Agent as Firm AI agent participant Knowledge as Knowledge stack participant TG as TaxGraph participant TC as TaxComputer participant EMS as EMS TaxProf->>Agent: Is Daman Opco a CCPC? Agent->>TaxProf: Snapshot or throughout the taxation year? TaxProf->>Agent: Throughout the year — planning and SBD rate Agent->>Knowledge: Search base and CCPC Skill playbooks Knowledge-->>Agent: Procedures Skills memos entity context Agent->>EMS: Retrieve engagement file EMS-->>Agent: Corp taxation year cap table documents Agent->>TaxProf: Confirm complete shareholder register? TaxProf->>Agent: Confirmed — full cap table Agent->>TG: Statutory research TG-->>Agent: ITA ITR CRA docs court cases definition map Agent->>TC: Run CCPC inquiry throughout taxation year TC-->>Agent: Statutory conclusion with workpaper trail Agent->>Agent: Analyze and reason over results Agent->>EMS: Save summary and attachments to engagement EMS-->>Agent: Saved to engagement workpapers Agent-->>TaxProf: Answer reliability label engagement link
| Step | Who | What happens |
|---|---|---|
| 1 | Tax professional | Asks the firm agent: is Daman Opco a CCPC? |
| 2 | Firm AI agent | Asks: snapshot as of today, or CCPC throughout the current taxation year on the engagement? |
| 3 | Tax professional | Throughout the year — planning and SBD rate work on this file. |
| 4 | Firm AI agent | Searches the Knowledge stack — base procedures and bundled CCPC Skill playbooks. |
| 5 | Knowledge stack | Returns procedures, Skills, memos, and entity context for the run. |
| 6 | Firm AI agent | Retrieves the engagement file from EMS. |
| 7 | EMS | Returns corporation, taxation year, cap table, and source documents on file. |
| 8 | Firm AI agent | Prompts the tax professional to confirm a complete shareholder register (when EMS is thin — e.g. Schedule A only). |
| 9 | Tax professional | Confirmed — full cap table; no options, warrants, or other classes (Daman path). |
| 10 | Firm AI agent | Runs statutory research via TaxGraph. |
| 11 | TaxGraph | Returns ITA, ITR, CRA guidance, court cases, and definition-map material (research only — not the computed conclusion). |
| 12 | Firm AI agent | Submits the scoped CCPC inquiry — throughout the taxation year — to the TaxComputer. |
| 13 | TaxComputer | Returns statutory conclusion, reliability, and provision-cited workpaper trail (125(7) assembly, ita:251(5), documented ita:256(5.1) judgment on file). |
| 14 | Firm AI agent | Analyzes and reasons over Knowledge context, EMS facts, research, and the computation; drafts the engagement conclusion. |
| 15 | Firm AI agent | Saves summary and attachments to the engagement in EMS (not a CRA submission). |
| 16 | EMS | Confirms saved to engagement workpapers. |
| 17 | Firm AI agent → Tax professional | Delivers answer, reliability label, and engagement link; tax professional reviews attachments and Qualified sign-off per firm policy. |
CCPC exclusions (a) and (b) turn on the statutory control phrase. Shareholder votes, options, and 251(5) deeming run in the TaxComputer on scoped engagement facts. 256(5.1) control in fact stays a tax professional judgment under the Act—but the professional does not work in a vacuum: the firm agent and TaxGraph assemble cross-corpus research (ITA/ITR provisions, CRA guidance, court decisions, definition maps, and how they link) so the professional can weigh factors, document the call on EMS, and wire that judgment input into the same CCPC assembly.
ita:251(5) deeming
Judgment input Tax professional decides — documented on EMS
Agent + TaxGraph Cross-corpus research and briefs — inform judgment; professional still decides
Override Tax professional replaces a computable input
flowchart TB
subgraph TC["TaxComputer — computed"]
VOTE["Legal voting control — director-election votes"]
P251["ita:251(5) rights options LOIs related groups"]
ROLL["125(7)(a) roll-up — legal control plus deeming"]
VOTE --> P251 --> ROLL
end
subgraph COLLAB["Tax professional + agent + TaxGraph — inform judgment"]
TG["TaxGraph: ITA ITR CRA cases cross-corpus links"]
AG["Firm agent: synthesis factors provisions on file"]
TP["Tax professional: weighs and decides CIF"]
DOC["Judgment record saved to EMS"]
TG --> AG --> TP --> DOC
end
subgraph LAW["Statutory judgment surface"]
CIF["ita:256(5.1) control in fact"]
CIF5["ita:256(5.11) factors and carve-outs"]
CIF --> CIF5
end
ROLL ==>|computed boundary| CIF
CIF5 -.->|Act delegates| TP
DOC -.->|documented application| ROLL
Three surfaces on one engagement: at-time legal control (computed), control in fact (professional judgment informed by agent + TaxGraph), and cap-table completeness (confirmation before compute).
Computedcontrol.controller_controls_corporation_at_timeVotes + ita:251(5) deeming on confirmed register |
Judgment inputcontrol.control_in_fact_or_any_manner_beyond_votingita:256(5.1) / ita:256(5.11) on file |
Professional confirmationpc-cap-table-complete-2026Complete shareholder register |
|
|---|---|---|---|
| Outcome on Daman Opco file | No controller at testing time after director-election votes and 251(5) deeming on the confirmed cap table | Holdco operational dependence — no control in fact on disclosed facts | Tax professional confirmed complete register after agent EMS prompt |
| Reliability | Unqualified | Judgment — documented application | Enables Unqualified computed limbs (not an Override) |
| Agent + TaxGraph role | Not used for this limb — computed from engagement facts | Agent + TaxGraph surfaces linked ITA/ITR text, CRA folios, and case principles; agent drafts a research brief against EMS facts for professional review | Agent prompts from EMS; TaxGraph optional for completeness standards on other files |
| Who decides | TaxComputer | Tax professional (Act delegates) — after agent + TaxGraph research | Tax professional (confirms facts on file) |
run-daman-opco-ccpc-2026-06-12T14-22Z · engagement daman-opco-ccpc
ita:125(7), ita:248(1) · Daman Opco · TY 1 Nov 2025 – 31 Oct 2026 · run 12 Jun 2026Reliability. The professional asked for CCPC throughout the taxation year (ita:125(1) planning context). FY ending 31 Oct 2026 is still open on run 12 Jun 2026—that throughout-year requirement cannot be closed without analyzing control and status in the future part of the year. Hence CCPC: Yes · Qualified on the terminal row (not because the cap table stayed incomplete after confirmation). Particular-time / to-date component limbs on confirmed facts are Unqualified. Judgment / Override are input kinds; Qualified / Unqualified are grades. Law snapshot current_effective_2026_06_02.
| Layer | Computed conclusion | Result | Reliability |
|---|---|---|---|
| Determination result | corporation.canadian_controlled_private_corporation |
CCPC: Yes on 125(7) assembly to date — terminal grade Qualified only because inquiry is throughout the taxation year and that test is not closable while the FY is open (see row below) | Qualified |
| Throughout year | corporation.ccpc_status_throughout_taxation_year |
Not closable — FY ends 31 Oct 2026; run 12 Jun 2026; balance of year requires future control and status facts | Qualified |
| 89(1) componentsat relevant times · to date | corporation.resident_in_canada_at_time |
Resident — consistent with prior-year T2 and minute book on EMS | Unqualified |
corporation.canadian_corporation |
Canadian corporation — incorporated in Canada per EMS / minute book | Unqualified | |
corporation.public_corporation |
Not public — unlisted verified; no 89(1) election or designation (prior year-end memo and EMS, same basis as 125(7)(d)) | Unqualified | |
corporation.ita_89_1_private_corporation_control_exclusion_applies_at_time |
89(1) public/Crown control exclusion not triggered at testing time on confirmed register | Unqualified | |
corporation.private_corporation |
Private yes on assembly | Unqualified | |
| Control phrase125(7)(a) · 89(1) | control.controller_controls_corporation_at_time |
No controller on confirmed register after votes and 251(5) deeming | Unqualified |
control.control_in_fact_or_any_manner_beyond_voting |
No control in fact on disclosed facts — judgment attachment on file | Judgment | |
| 125(7) assemblyexclusions (a)–(d) | corporation.ccpc_125_7_a_cross_group_combination_control |
No cross-group combination control on confirmed register | Unqualified |
corporation.ccpc_125_7_b_particular_person_aggregation |
Aggregation tested — not triggered on confirmed cap table | Unqualified | |
corporation.ccpc_category_control_non_resident_taxation_year |
Not NR-controlled on confirmed shareholder register | Unqualified | |
corporation.ccpc_category_control_public_taxation_year |
Not public-controlled (non-PVCC) on confirmed register | Unqualified | |
corporation.ccpc_125_7_c_listed_share_class_exclusion |
No class listed on a designated exchange — verified (EMS corporate profile, share classes, exchange listing check) | Unqualified | |
corporation.ccpc_125_7_d_election_context |
Exclusion (d) does not apply — verified against prior year-end filing memo and EMS client note (no intention to file 89(11) election) | Unqualified |
ita:125(7), ita:125(1), ita:248(1), ita:89(1), ita:89(11), ita:250(4),
ita:251(5), ita:256(5.1), ita:256(5.11), itr:6700, itr:7100current_effective · current_effective_2026_06_02)| File | Contents |
|---|---|
determination-request.json | CCPC inquiry, corp, year |
input-bundle-daman-opco-ty-fy-oct.json | Scoped facts + derived inputs |
taxgraph-research-ccpc-125-7.json | Advisory research export |
determination-ccpc-primary.json | CCPC result + provision trail |
dependency-traces/ | One JSON per reliability-table row (dep-* refs) |
judgment-256-5-1-cif-daman.json | 256(5.1) factors, provisions, CRA, cases |
cap-table-completeness-confirmation-2026.json | Tax professional confirmation — complete register |
ems-note-89-11-no-election-intent.json | Client note — no 89(11) election intended |
prior-ye-filing-memo-125-7-d.pdf | Prior year-end memo — 125(7)(d) context |
ccpc-statutory-composition-index.json | CCPC statutory composition index |
agent-run-log.jsonl | Run log |
audit-package.nestedtext | Provision-cited audit trace (nestedtext) |
audit-package.nestedtextauditPackageVersion: firm-agent.v1
engagementId: daman-opco-ccpc
agentRunId: run-daman-opco-ccpc-2026-06-12T14-22Z
summary:
headline: CCPC: Yes
reliabilityStatus: conditional
reliabilityLabel: Qualified
inquiryScope: ccpc_throughout_taxation_year
reliabilityGlossary:
qualified: determination has limitations
unqualified: determination is clean
exportNote: reliabilityStatus conditional maps to Qualified; pass maps to Unqualified
reliabilitySummary: Terminal CCPC Qualified — throughout-year inquiry not closable while FY in progress; component limbs Unqualified to date
cleanDeterminations:
- corporation.resident_in_canada_at_time
- corporation.canadian_corporation
- corporation.public_corporation
- corporation.private_corporation
- corporation.ita_89_1_private_corporation_control_exclusion_applies_at_time
- control.controller_controls_corporation_at_time
- corporation.ccpc_125_7_a_cross_group_combination_control
- corporation.ccpc_125_7_b_particular_person_aggregation
- corporation.ccpc_category_control_non_resident_taxation_year
- corporation.ccpc_category_control_public_taxation_year
- corporation.ccpc_125_7_c_listed_share_class_exclusion
- corporation.ccpc_125_7_d_election_context
qualifiedLimitations:
- corporation.canadian_controlled_private_corporation
- corporation.ccpc_status_throughout_taxation_year
judgmentDeterminations:
- control.control_in_fact_or_any_manner_beyond_voting
professionalConfirmations:
- id: pc-cap-table-complete-2026
summary: Complete shareholder register confirmed in agent thread
holdersOnFile:
- Holdco Ltd 60%
- D. Resident individual 40%
noOptionsOrWarrants: true
source: audited_fs_note_and_tax_professional
taxationYearRef: ty_daman_opco_fy_ending_2026-10-31
period:
kind: interval
start: 2025-11-01
end: 2026-10-31
determinationRequest:
id: detreq-daman-opco-fy-oct
determination: corporation.canadian_controlled_private_corporation
inquiryScope: ccpc_throughout_taxation_year
params:
corporation: daman_opco
taxation_year: ty_daman_opco_fy_ending_2026-10-31
runAsOf: 2026-06-12
lawVersion:
id: current_effective
sourceSnapshot: current_effective_2026_06_02
coverage: current_effective_statutes_only
temporalScope:
kind: interval
start: 2025-11-01
end: 2026-10-31
inputBundleRefs:
- daman-opco-ty-fy-oct
inputBundles:
- id: daman-opco-ty-fy-oct
scope:
kind: source_year
refs:
corporation: daman_opco
taxation_year: ty_daman_opco_fy_ending_2026-10-31
period:
kind: interval
start: 2025-11-01
end: 2026-10-31
directInputs:
- id: di-ccpc-a
predicate: corporation.ccpc_125_7_a_cross_group_combination_control_relevant
subject: daman_opco
value: false
- id: di-ccpc-b
predicate: corporation.ccpc_125_7_b_particular_person_share_aggregation_relevant
subject: daman_opco
value: false
- id: di-ccpc-c
predicate: corporation.ccpc_125_7_c_listed_share_class_exclusion_relevant
subject: daman_opco
value: false
- id: di-ccpc-d
predicate: corporation.ccpc_125_7_d_election_context_relevant
subject: daman_opco
value: false
relevanceInputsNote: false = exclusion not triggered after cap-table confirmation and verification runs
judgmentInputs:
- id: ji-cif-daman-2026
predicate: control.control_in_fact_or_any_manner_beyond_voting
subject: daman_opco
value: false
reliabilityKind: judgment
traceRef: dep-judgment-cif-2026
authorityAttachment:
factors:
- day-to-day operations directed by Holdco Ltd
- no veto or casting control over board votes on file
provisions:
- ita:256(5.1)
- ita:256(5.11)
cra:
- IT-64R4
- S3-F4-C1
cases:
- Silicon Graphics Ltd. v. Canada principles
professionalConfirmationsUsed:
- id: pc-cap-table-complete-2026
traceRef: cap-table-completeness-confirmation-2026.json
taxGraphResearch:
exportedAt: 2026-06-12T14:21:04Z
advisoryOnly: true
sources:
- ITA provisions and definitions
- ITR prescribed materials
- CRA administrative guidance
- Tax Court FCA SCC decisions
statutorySourceNotes:
- ita:125(7)
- ita:248(1)
- ita:89(1)
- ita:250(4)
- ita:251(5)
- ita:256(5.1)
- itr:6700
- itr:7100
definitionUids:
- ca.ita:def:canadian-controlled-private-corporation:src:125(7):scope:section-125:act:1-125:paths:_:time:open
results:
primary:
resultId: res-ccpc-primary
determination: corporation.canadian_controlled_private_corporation
outcome: computed
value: true
reliabilityStatus: conditional
lawVersionId: current_effective
determinationRecordHash: sha256:a1b2…f901
computation:
scope: corporation.canadian_controlled_private_corporation
inputHash: sha256:compute_in_full_scope_01
outputHash: sha256:compute_out_full_scope_01
traceHash: sha256:compute_trace_full_scope_01
derivedInputsUsed:
- determination: corporation.private_corporation
reliabilityStatus: pass
traceRef: dep-private-2026
- determination: corporation.canadian_corporation
reliabilityStatus: pass
traceRef: dep-canadian-2026
- determination: corporation.ccpc_category_control_non_resident_taxation_year
reliabilityStatus: pass
traceRef: dep-nr-2026
- determination: corporation.ccpc_category_control_public_taxation_year
reliabilityStatus: pass
traceRef: dep-pub-2026
judgmentInputsUsed:
- id: ji-cif-daman-2026
traceRef: dep-judgment-cif-2026
professionalConfirmationsUsed:
- id: pc-cap-table-complete-2026
resultReasons:
- professional_confirmation_on_file
conditionTags:
- other
unsupportedIfApplicable: (none)
missingInputs: (none)
errors: (none)
proofNodes:
- id: pn-law-version
kind: rule_evaluation_status
source: resolver
label: Law version bound to interval 2025-11-01..2026-10-31
authorityRefs:
- ita:249(1)
- id: pn-def-map
kind: definition_map_metadata
source: resolver
label: CCPC definition map 125(7) / 248(1)
authorityRefs:
- ita:125(7)
- ita:248(1)
dependsOn:
- pn-law-version
- id: pn-dep-canadian
kind: derived_input
source: resolver
label: Canadian corporation = true
authorityRefs:
- ita:89(1)
dependsOn:
- pn-def-map
traceRef: dep-canadian-2026
- id: pn-dep-private
kind: derived_input
source: resolver
label: Private corporation = true
authorityRefs:
- ita:89(1)
- itr:7100
dependsOn:
- pn-def-map
traceRef: dep-private-2026
- id: pn-dep-control-nr
kind: derived_input
source: resolver
label: Not NR-controlled for CCPC path
authorityRefs:
- ita:125(7)
- ita:251(5)
dependsOn:
- pn-dep-canadian
- pn-dep-private
- pn-judgment-cif
- id: pn-dep-control-public
kind: derived_input
source: resolver
label: Not public-controlled (non-PVCC)
authorityRefs:
- ita:125(7)
- ita:251(5)
- itr:6700
dependsOn:
- pn-dep-canadian
- pn-dep-private
- pn-judgment-cif
- id: pn-judgment-cif
kind: judgment_input
source: engagement_file
label: 256(5.1) control in fact — no CIF on disclosed facts
traceRef: dep-judgment-cif-2026
authorityRefs:
- ita:256(5.1)
- ita:256(5.11)
dependsOn:
- pn-def-map
- id: pn-1257-flags
kind: direct_input
source: resolver
label: 125(7)(a)-(d) relevance flags
authorityRefs:
- ita:125(7)
dependsOn:
- pn-law-version
- id: pn-statutory-assembly
kind: statutory_computation
source: tax_computer
label: 125(7) CCPC assembly
authorityRefs:
- ita:125(7)
dependsOn:
- pn-dep-control-nr
- pn-dep-control-public
- pn-1257-flags
traceHash: sha256:compute_trace_full_scope_01
- id: pn-throughout-year
kind: temporal_limitation
source: resolver
label: Throughout taxation year not closable — FY ends 2026-10-31; run 2026-06-12
authorityRefs:
- ita:125(1)
- ita:125(7)
dependsOn:
- pn-law-version
- id: pn-reliability
kind: reliability_aggregation
source: resolver
label: Qualified — throughout taxation year not closable; FY in progress
dependsOn:
- pn-statutory-assembly
- pn-dep-control-nr
- pn-throughout-year
resultReason: throughout_taxation_year_open
dependencies:
- resultId: dep-throughout-year-2026
determination: corporation.ccpc_status_throughout_taxation_year
outcome: not_closable
reliabilityStatus: conditional
proofNodes:
- id: dty-open
kind: temporal_limitation
label: Taxation year in progress — throughout-year CCPC requires future period analysis
authorityRefs:
- ita:125(1)
- ita:125(7)
runAsOf: 2026-06-12
taxationYearEnd: 2026-10-31
- resultId: dep-251-5-rights-2026
determination: control.controller_controls_corporation_at_time
outcome: computed
value: false
reliabilityStatus: pass
proofNodes:
- id: d2515-none
kind: statutory_computation
label: No controller at testing time after votes and 251(5) deeming
authorityRefs:
- ita:251(5)
- resultId: dep-resident-2026
determination: corporation.resident_in_canada_at_time
outcome: computed
value: true
reliabilityStatus: pass
proofNodes:
- id: dr-assert
kind: direct_input
label: Resident — prior T2 and minute book on EMS
authorityRefs:
- ita:250(4)
- ita:89(1)
- resultId: dep-canadian-2026
determination: corporation.canadian_corporation
outcome: computed
value: true
reliabilityStatus: pass
proofNodes:
- id: dc-incorp
kind: direct_input
label: Incorporated in Canada — EMS and minute book
authorityRefs:
- ita:89(1)
- id: dc-resident-link
kind: derived_input
label: Residence limb
traceRef: dep-resident-2026
authorityRefs:
- ita:89(1)
- resultId: dep-public-corp-2026
determination: corporation.public_corporation
outcome: computed
value: false
reliabilityStatus: pass
proofNodes:
- id: dpub-unlisted
kind: statutory_computation
label: Not listed — same listing verification as 125(7)(c)
traceRef: dep-125-7-c-2026
authorityRefs:
- ita:89(1)
- id: dpub-no-election
kind: direct_input
label: No 89(1) election or designation — memo and EMS
traceRef: dep-125-7-d-2026
authorityRefs:
- ita:89(1)
- resultId: dep-private-limb-2026
determination: corporation.ita_89_1_private_corporation_control_exclusion_applies_at_time
outcome: computed
value: false
reliabilityStatus: pass
proofNodes:
- id: dpl-confirmed
kind: statutory_computation
label: Not public or Crown controlled on confirmed register
authorityRefs:
- ita:89(1)
- itr:7100
- id: dpl-confirm
kind: professional_confirmation
label: Cap table completeness confirmed
attachmentRef: cap-table-completeness-confirmation-2026.json
- resultId: dep-private-2026
determination: corporation.private_corporation
outcome: computed
value: true
reliabilityStatus: pass
proofNodes:
- id: pp-public-false
kind: derived_input
label: Public corporation = false
traceRef: dep-public-corp-2026
authorityRefs:
- ita:89(1)
- id: pp-private-limb
kind: derived_input
label: Private corp public/Crown control limb
traceRef: dep-private-limb-2026
authorityRefs:
- ita:89(1)
- id: pp-crown
kind: rule_evaluation_status
label: Not ITR 7100 Crown-controlled
authorityRefs:
- ita:89(1)
- itr:7100
- id: pp-pvcc
kind: rule_evaluation_status
label: Not public-controlled other than ITR 6700 PVCC
authorityRefs:
- ita:89(1)
- itr:6700
- resultId: dep-judgment-cif-2026
determination: control.control_in_fact_or_any_manner_beyond_voting
outcome: judgment_input
value: false
reliabilityKind: judgment
proofNodes:
- id: jcif-factors
kind: judgment_input
label: No control in fact on disclosed facts
authorityRefs:
- ita:256(5.1)
- ita:256(5.11)
attachmentRef: ji-cif-daman-2026
- id: jcif-cra
kind: advisory_source
label: CRA IT-64R4 S3-F4-C1 on file
- id: jcif-cases
kind: advisory_source
label: Federal Court control-in-fact principles on file
- resultId: dep-nr-2026
determination: corporation.ccpc_category_control_non_resident_taxation_year
outcome: computed
value: false
reliabilityStatus: pass
proofNodes:
- id: pnr-roll
kind: statutory_computation
label: Not NR-controlled on confirmed register
authorityRefs:
- ita:125(7)
- ita:251(5)
- id: pnr-judgment
kind: judgment_input
label: 256(5.1) documented — no CIF
traceRef: dep-judgment-cif-2026
- resultId: dep-pub-2026
determination: corporation.ccpc_category_control_public_taxation_year
outcome: computed
value: false
reliabilityStatus: pass
proofNodes:
- id: ppb-roll
kind: statutory_computation
label: Not public-corporation controlled (non-PVCC) on confirmed register
authorityRefs:
- ita:125(7)
- ita:251(5)
- itr:6700
- id: ppb-judgment
kind: judgment_input
label: 256(5.1) documented — no CIF
traceRef: dep-judgment-cif-2026
- resultId: dep-125-7-a-2026
determination: corporation.ccpc_125_7_a_cross_group_combination_control
outcome: computed
value: false
reliabilityStatus: pass
proofNodes:
- id: d7a-none
kind: statutory_computation
label: No combination control on confirmed register
authorityRefs:
- ita:125(7)
- resultId: dep-125-7-b-2026
determination: corporation.ccpc_125_7_b_particular_person_aggregation
outcome: computed
value: false
reliabilityStatus: pass
proofNodes:
- id: d7b-none
kind: statutory_computation
label: Particular-person aggregation not triggered
authorityRefs:
- ita:125(7)
- resultId: dep-125-7-c-2026
determination: corporation.ccpc_125_7_c_listed_share_class_exclusion
outcome: computed
value: false
reliabilityStatus: pass
proofNodes:
- id: d7c-unlisted
kind: statutory_computation
label: No class on designated exchange — listing check completed
authorityRefs:
- ita:125(7)
- ita:248(1)
- id: d7c-ems
kind: direct_input
label: EMS corporate profile and exchange listing enquiry
sourceOnFile: EMS
- resultId: dep-125-7-d-2026
determination: corporation.ccpc_125_7_d_election_context
outcome: computed
value: false
reliabilityStatus: pass
proofNodes:
- id: d7d-cleared
kind: rule_evaluation_status
label: Exclusion (d) does not apply — no 89(11) election intended
authorityRefs:
- ita:89(11)
- ita:125(7)
- id: d7d-memo
kind: advisory_source
label: Prior year-end filing memo on file
attachmentRef: prior-ye-filing-memo-125-7-d.pdf
- id: d7d-ems
kind: direct_input
label: EMS client note — no intention to file 89(11)
attachmentRef: ems-note-89-11-no-election-intent.json
| Service line | Agent + TaxGraph + TaxComputer |
|---|---|
| Tax law / advisory | Agents draft position memos; TaxGraph accelerates research; TaxComputer supplies auditable CCPC and related statutory conclusions. |
| Tax accounting / compliance | Return prep systems call the same computations; agents reconcile T2 positions to Act-consistent conclusions. |
| Audit & dispute | Law in force for the disputed year on the inquiry; agent replays CRA questions with taxation-year intervals and stored workpaper trails. |
| Control | Practice |
|---|---|
| Human accountability | Tax professional reviews Qualified (limited) conclusions and signs off per firm policy. |
| Statutory outcomes from the TaxComputer | Statutory roll-ups and assembly are computed in TaxComputer; judgment inputs, overrides, and scoped assumptions are documented on EMS with their own reliability—not LLM-drafted conclusions. TaxGraph is research only. |
| Engagement file hygiene | Computation references, taxation year, law-in-force snapshot dated on or before the run, and workpaper trail stored on the engagement—not chat-only. |
| Knowledge stack Skills | CCPC Skill bundles live in firm Knowledge: readiness checklists for professionals, canonical messy-input patterns for the agent (thin cap table, assertion-only residence, missing registers). |
| Transparency | Agents surface unresolved conclusions and file limitations instead of silent assumptions. |
CCPC status turns on ita:125(7) (incorporated Act-wide in ita:248(1)): a
private corporation that is a Canadian corporation, other than the exclusions in paragraphs (a)–(d). Component status is resolved at the
relevant time under ita:89(1); paragraphs (a) and (b) apply the statutory control phrase, with ita:251(5) applying expressly to this
definition and ita:256(5.1) wherever that phrase appears in the Act.
| Area | Key ITA / ITR provisions | Role in CCPC status |
|---|---|---|
| CCPC status (125(7)) | ita:125(7) · ita:248(1) |
Private corporation + Canadian corporation, other than exclusions (a)–(d); 248(1) incorporates 125(7) Act-wide |
| When status matters for SBD | ita:125(1) |
Small business deduction requires CCPC throughout the taxation year—year-long testing sits above particular-time control facts |
| Canadian corporation | ita:89(1) · ita:248(1) |
Resident at the time; incorporated in Canada or post‑1971 continuity; amalgamation / reorg conditions in 89(1) |
| Residence substrate | ita:250(3) · ita:250(4) · ita:250(5) · ita:250(5.1) |
Ordinary residence, incorporation deeming, treaty non-residence, continuance—feeds Canadian / private / public at a time |
| Public corporation | ita:89(1)(a)–(c) · ita:248(6) · ita:262 · ita:248(1) designated stock exchange |
Listed class in Canada, election/designation to be public, cessation rules—if public, not private |
| Private corporation | ita:89(1) · depends on public corporation |
Resident, not public, not controlled by public corps (other than PVCC) or prescribed federal Crown corps—different control filter than 125(7)(a) |
| 125(7)(a) — combination control | ita:125(7)(a) · ita:251(2) · ita:251(5) · ita:256(5.1) · ita:256(5.11) |
NR persons, public corps (non‑PVCC), (c) corporations, or combinations—“controlled, directly or indirectly in any manner whatever” |
| 125(7)(b) — particular person | ita:125(7)(b) · cap-table / rights facts · ita:251(5)(b) |
Separate from (a): if NR / public / (c) shares were owned by one particular person, would that person control? Requires complete universes |
| 125(7)(c) — listed class | ita:125(7)(c) · designated stock exchange |
Any class listed on a designated exchange—excludes CCPC even when 89(1) private corporation tests still pass |
| 125(7)(d) — election context | ita:89(11) · ita:89(12) · ita:89(13) · ita:87(2)(vv)/(ww) · ita:88(1)(e.2) · ita:89(4)–(10) · ita:249(3.1) |
Non-CCPC election / revocation (and repeat-election consent); bites only for purposes listed in (d)—not every Act reference to CCPC |
| 251(5) — CCPC control deeming | ita:251(5) (for ita:251(2) and ita:125(7)) |
Related group in position to control; options / rights / LOIs at any time; same person related to self across corporations |
| Control in fact | ita:256(5.1) · ita:256(5.11) |
Expands statutory control phrase; ordinary commercial agreement carve-out; factual influence beyond legal votes |
| Simultaneous & chain control | ita:256(6.1) · ita:256(6.2) · ita:256(6) |
Upstream / tiered control and safeguarding agreements—relevant to NR–Canadian chains and temporary control deemings |
| Control timing | ita:256(9) · ita:256(7) · ita:256(8) |
256(9): beginning-of-day acquisition deeming does not apply to CCPC-at-a-time; 256(7)/(8) affect control changes and rights anti-avoidance |
| Association ownership block | ita:256(1.2)–256(1.5) · ita:256(1.4) · ita:256(2) |
Primarily associated corporation mechanics (256(1)–(5)); distinct statutory purpose from 251(5) on the 125(7) definition—still informs share look-through facts |
| Status change / year-end | ita:249(3.1) · ita:249(4) |
Becoming or ceasing CCPC (deemed year-end); acquisition-of-control parallel under 249(4) |
| Cooperatives & credit unions | ita:136(1) · ita:137(7) |
Deemed not private corporation in listed contexts—can break the private-corporation limb before CCPC assembly |
| Substantive CCPC (related label) | ita:248(1) substantive CCPC · ita:248(43) |
Not the same as CCPC under 125(7)—private corp other than CCPC with individual-resident control; 248(43) anti-avoidance deeming for Part I.3 |
| ITR prescriptions | itr:6700 (PVCC) · itr:7100 (prescribed federal Crown) |
PVCC carved out of “public” in private corp and 125(7)(a)/(b); Crown corps carved out of private-corp control limb |
| Definition map (curated) | definition.canadian_controlled_private_corporation.map |
Curated definition map: 125(7) / 248(1) instances, component terms, modifiers 251(5), 256(5.1), 89(11), 89(12) |
Same path the TaxComputer uses, in engagement language—scoped facts, determination ids, upstream conclusions, and provision-cited assembly through to corporation.canadian_controlled_private_corporation and throughout-year inquiry scope.
| Layer | Role on the CCPC path |
|---|---|
| Law & request | Law in force for the taxation year; determination id; scheduled upstream conclusions; permitted inputs and provision references |
| Facts on the engagement | Cap table, votes, options/rights, listing and exchange metadata, residence/incorporation, 125(7)(a)–(d) relevance, election filings, completeness on file |
| Statutory primitives | Share-class positions, owns-shares, year-level Canadian / public / private under 89(1) |
| Statutory predicates | At-time residence and public status, controller-level control, CCPC category roll-ups (NR, public non-PVCC), ITR 6700/7100 filters |
| Computed deeming | ita:251(5) · ita:256(1.2)–256(1.4) · ita:89(11)/89(12) when (d) is in issue |
| Judgment on control phrase | ita:256(5.1) / ita:256(5.11) — documented application on file, not engine-inferred |
| Definition map metadata | definition.canadian_controlled_private_corporation.map — 125(7) / 248(1) scope, component terms, modifier list |
| Statutory assembly | 125(7) combine: private + Canadian + exclusions (a)–(d) from predicates, modifiers, and derived inputs |
| Determination result | corporation.canadian_controlled_private_corporation + reliability + provision-cited workpaper trail |
CCPC status path for this engagement. 256(1.2)–(1.5) and 25% nodes supply look-through / cap-table context for control facts. Throughout-the-year inquiry (ita:125(1)) links to the terminal reliability grade when the FY is still open. Associated corporations and SBD use the same agent + TaxComputer pattern—see §2.
flowchart TB
subgraph REG["Law and registry envelope"]
LV["Law in force: ITA and ITR for taxation year interval"]
REQ["Determination request: target, corporation, taxation_year"]
SPINE["Request envelope: dependencies, ITA/ITR refs, permitted inputs"]
end
subgraph SUB["Scoped input substrate"]
S1["Cap table: issued and held shares per class"]
S2["Votes · options · rights · related-party facts"]
S3["Residence · incorporation · listing · exchange"]
S4["125(7)(a)-(d) relevance · 89(11) election · completeness"]
S5["Controllers · testing_time · actor identity"]
end
subgraph PRIM["Statutory primitives under 89(1)"]
P_OHP["ownership.holder_share_class_position"]
P_OWN["ownership.holder_owns_share_class"]
P_CAN["corporation.canadian_corporation"]
P_PUB["corporation.public_corporation"]
P_PRIV["corporation.private_corporation"]
P_PUB --> P_PRIV
end
subgraph LOOK["Share look-through association context"]
M_ASSOC["256(1.2)-256(1.5) association block informs cap table facts"]
end
subgraph MOD["TaxComputer — 251(5) deeming"]
M2512["ita:251(2) related persons"]
M2515["ita:251(5) groups rights options for 125(7)"]
M25621["ita:256(2.1) FMV common share tests"]
M2512 --> M2515
end
subgraph JUDG["Professional judgment — 256(5.1)"]
M25651["ita:256(5.1) control in fact"]
JDOC["Judgment record factors CRA cases"]
M25651 --> JDOC
end
subgraph PRED["Statutory predicates at taxation year"]
R_RES["corporation.resident_in_canada_at_time"]
R_PAT["corporation.public_corporation_at_time"]
R_CTL["control.controller_controls_corporation_at_time"]
R_NR["NR category control roll-up 125(7)(a)"]
R_PUBC["Public non-PVCC category control roll-up 125(7)(a)"]
R_25["256(1) 25 percent class thresholds"]
R_ITR["itr:6700 PVCC · itr:7100 Crown filters"]
end
subgraph EXCL["125(7) exclusion paragraphs"]
EXA["125(7)(a) combination control"]
EXB["125(7)(b) aggregation particular person"]
EXC["125(7)(c) designated exchange listing"]
EXD["125(7)(d) 89(11) 89(12) election context"]
end
subgraph META["Definition map metadata"]
DM["definition.canadian_controlled_private_corporation.map"]
end
subgraph ASM["Statutory assembly"]
A125["125(7) plus 248(1): private and Canadian and not excluded"]
end
subgraph OUT["Determination result"]
TYSCOPE["corporation.ccpc_status_throughout_taxation_year · inquiry scope"]
CCPC["corporation.canadian_controlled_private_corporation"]
REL["CCPC yes or no · Unqualified clean or Qualified limitations · provision-cited trail"]
end
REQ --> SPINE
LV --> SPINE
SPINE --> SUB
S1 --> P_OHP
S1 --> P_OWN
S1 --> M_ASSOC
S2 --> M2515
S3 --> P_CAN
S3 --> P_PUB
S3 --> EXC
S4 --> EXD
S5 --> R_CTL
P_OHP --> P_OWN
P_OWN --> R_25
M_ASSOC -.-> EXB
M_ASSOC -.-> R_25
M2515 --> R_CTL
M25621 --> R_CTL
MOD ==>|computed boundary| JUDG
JDOC -.-> EXA
R_RES --> R_PAT
R_CTL --> R_NR
R_CTL --> R_PUBC
R_PAT --> R_PUBC
R_ITR --> R_PUBC
R_25 --> EXB
R_NR --> EXA
R_PUBC --> EXA
SPINE --> DM
P_CAN --> A125
P_PRIV --> A125
EXA --> A125
EXB --> A125
EXC --> A125
EXD --> A125
DM --> A125
A125 --> CCPC
CCPC --> REL
TYSCOPE -.->|open FY · not closable| REL
| Determination family | TaxComputer computes end-to-end | Professional judgment (Act delegates) |
|---|---|---|
| CCPC & control | On scoped facts: 89(1) components; votes; 251(5) deeming; 256(2.1) FMV tests; 125(7) exclusions where universe complete or explicitly limited; ITR 6700/7100 filters |
256(5.1) / 256(5.11) control in fact; marginal influence; incomplete universes |
| Taxable income & Part I | Division C shell; CCA totals; rate components; credit mechanics where registered | Treaty relief; GAAR / main-purpose; reserve positions; transfer-pricing facts |
| CCA | Multi-class pools; caps; immediate expensing ordering; remaining UCC | Class elections; business-use %; terminal loss policy on file |
| Associated corporations | 256(1.2) look-through; 25% thresholds; specified class under 256(1.1) |
Control in fact at association margins; related-group completeness |
| SBD & business limit | Association arithmetic; active business % inputs when on file | Principal business; personal services business characterizations |
| GRIP / RDTOH / pools | Pool balances; dividend designations from recorded movements | Intent of surplus strip; butterfly / 55(5) purpose |
| Withholding & Part XIII | Rate tables on asserted facts; treaty article mapping | Treaty beneficial ownership; conduit analysis |
| SR&ED / investment tax credits | Expenditure limits; pool ordering; qualified expenditure math | Project eligibility; scientific advancement standard |
Daman Opco: the agent confirms the cap table from EMS, then runs CCPC to date. The professional asked for throughout the taxation year while the FY still runs to 31 Oct 2026—so the headline stays CCPC: Yes · Qualified: the qualification is the throughout-year requirement, which the run cannot close until after year-end (future period). Component rows on confirmed facts are Unqualified. Judgment on 256(5.1) is documented on file as control.control_in_fact_or_any_manner_beyond_voting, informed by agent + TaxGraph research.