AI agents, TaxGraph, and the TaxComputer

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.

The question on the desk

Tax professional
Is Daman Opco a CCPC right now?
Firm agent
Do you need a snapshot as of today, or CCPC status throughout the current taxation year on the engagement? The FY ends 31 Oct 2026—we’re partway through that year as of this run.
Tax professional
Throughout the taxation year—the whole FY, not just today. I need that for planning and the small business rate work on this file.
Firm agent
In the EMS, I only see a Schedule A with two shareholders—Holdco Ltd (60%) and D. Resident (40%). The audited financial statement note on share capital describes no outstanding options or warrants. Can you confirm this is the complete shareholder register for CCPC control—no other holders, nominees, or equity rights we should load?
Tax professional
Confirmed. That’s the full cap table—no options, warrants, or other classes. Same as our prior-year T2 position.
Firm agent
Thanks. I’ll run CCPC under 125(7) and 248(1) on the confirmed register to date, with listing and 89(11) context on the engagement and the documented 256(5.1) position. I’ll flag that throughout-the-year CCPC can’t be closed while the FY is still open. Saving the workpaper trail to EMS.
CCPC: Yes · Qualified · ita:125(7), ita:248(1) · limitation: throughout taxation year not closable (FY in progress).

Three layers — who does what

AI agent (firm)

  • Intake: period, listing, options/rights, elections, 125(7)(d) relevance
  • Search the Knowledge stack (procedures, memos, bundled CCPC Skills); retrieve task-relevant context
  • Pull engagement file and source documents via the firm engagement management system (EMS) and Knowledge
  • Map engagement facts to inputs required for the statutory computation
  • Call TaxGraph for research; call TaxComputer for Act-consistent conclusions
  • Reconcile research and computation; draft memo; route Qualified items for tax professional review

TaxGraph

  • Corpus: ITA, ITR, CRA guidance, court decisions (Tax Court, FCA, SCC)
  • Definition maps: terms, scoped instances, incorporations, component definitions
  • Graph links: cross-references, prescribed-regulation hooks, modifiers and deeming provisions
  • Structural references: provisions that use or affect a term; usage examples for discovery
  • Exports: research bundles (e.g. definition map, statutory source notes) saved with the engagement
  • Advisory research and citations—not the computed statutory conclusion

TaxComputer

  • Deterministic ITA/ITR conclusions for scoped facts
  • Statutory computation with workpaper steps tied to cited ITA/ITR provisions
  • CCPC under 125(7) / 248(1) after 89(1) Canadian / private / public components — exclusions (a)–(d); ita:251(5) computed; ita:256(5.1) judgment on file where the control phrase applies
  • Unqualified = clean determination; Qualified = limitations on the determination (scope, gaps, assumptions on file)
TaskTaxGraphTaxComputer
“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

Knowledge stack — bundled CCPC Skills

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 fileHelps 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.

Agent workflow — CCPC status

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
StepWhoWhat 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.

Who computes control—and who documents control in fact

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.

Computed TaxComputer — votes, shares, 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
        

Worked nodes on Daman Opco — same control phrase, different treatment

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).

Computed
control.controller_controls_corporation_at_time
Votes + ita:251(5) deeming on confirmed register
Judgment input
control.control_in_fact_or_any_manner_beyond_voting
ita:256(5.1) / ita:256(5.11) on file
Professional confirmation
pc-cap-table-complete-2026
Complete 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)
Judgment input attachment — 256(5.1) control in fact (Daman Opco)

Prepared with agent + TaxGraph cross-corpus research; signed judgment on file. TaxComputer consumes the documented input — it does not infer control in fact from the LLM.

  • Factors weighed (professional): day-to-day operations directed by Holdco Ltd; no veto / casting control over board votes on file; no side agreement altering economic risk
  • Provisions (TaxGraph-linked): ita:256(5.1), ita:256(5.11), ita:125(7) control phrase — with modifier and usage context from the definition map
  • CRA (TaxGraph + on file — verify current folio): IT-64R4; S3-F4-C1 — agent attached folio excerpts to the engagement research bundle
  • Cases (TaxGraph-linked): Federal Court control-in-fact principles (e.g. Silicon Graphics Ltd. v. Canada) — pin cite on engagement memo after agent synthesis
  • Engagement facts: Management services agreement excerpt; board minutes — voting outcomes

What the agent returns

Agent response · run run-daman-opco-ccpc-2026-06-12T14-22Z · engagement daman-opco-ccpc

Summary

CCPC: Yes · Qualified · ita:125(7), ita:248(1) · Daman Opco · TY 1 Nov 2025 – 31 Oct 2026 · run 12 Jun 2026

Reliability. 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.

LayerComputed conclusionResultReliability
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
Confirmations on file: Complete shareholder register confirmed (Holdco Ltd 60%, D. Resident 40%; no options or warrants per audited FS note). Qualified limitation: professional asked for CCPC throughout the taxation year; year-end is in the future—throughout-year conclusion not closable on this run. 256(5.1) on file as Judgment.
  • Provisions cited: 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:7100
  • Law in force for the taxation year: current ITA/ITR snapshot used by the TaxComputer (current_effective · current_effective_2026_06_02)

Attachments

FileContents
determination-request.jsonCCPC inquiry, corp, year
input-bundle-daman-opco-ty-fy-oct.jsonScoped facts + derived inputs
taxgraph-research-ccpc-125-7.jsonAdvisory research export
determination-ccpc-primary.jsonCCPC result + provision trail
dependency-traces/One JSON per reliability-table row (dep-* refs)
judgment-256-5-1-cif-daman.json256(5.1) factors, provisions, CRA, cases
cap-table-completeness-confirmation-2026.jsonTax professional confirmation — complete register
ems-note-89-11-no-election-intent.jsonClient note — no 89(11) election intended
prior-ye-filing-memo-125-7-d.pdfPrior year-end memo — 125(7)(d) context
ccpc-statutory-composition-index.jsonCCPC statutory composition index
agent-run-log.jsonlRun log
audit-package.nestedtextProvision-cited audit trace (nestedtext)
Engineering review · audit-package.nestedtext
auditPackageVersion: 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

Firm operating model

Service lineAgent + 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.

Governance

ControlPractice
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.

Supplements

1 — CCPC status inside TaxComputer

Statutory scope — CCPC

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.

AreaKey ITA / ITR provisionsRole 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)

How engagement facts become a CCPC conclusion

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.

LayerRole on the CCPC path
Law & requestLaw in force for the taxation year; determination id; scheduled upstream conclusions; permitted inputs and provision references
Facts on the engagementCap table, votes, options/rights, listing and exchange metadata, residence/incorporation, 125(7)(a)–(d) relevance, election filings, completeness on file
Statutory primitivesShare-class positions, owns-shares, year-level Canadian / public / private under 89(1)
Statutory predicatesAt-time residence and public status, controller-level control, CCPC category roll-ups (NR, public non-PVCC), ITR 6700/7100 filters
Computed deemingita:251(5) · ita:256(1.2)256(1.4) · ita:89(11)/89(12) when (d) is in issue
Judgment on control phraseita:256(5.1) / ita:256(5.11) — documented application on file, not engine-inferred
Definition map metadatadefinition.canadian_controlled_private_corporation.map — 125(7) / 248(1) scope, component terms, modifier list
Statutory assembly125(7) combine: private + Canadian + exclusions (a)–(d) from predicates, modifiers, and derived inputs
Determination resultcorporation.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

        

2 — ITA/ITR determination catalogue (compute vs delegate)

Determination familyTaxComputer computes end-to-endProfessional 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

3 — EMS gaps, agent prompts, clean determinations

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.