THE CAPITAL BRANCH

Teamcenter → Capital, in One Command

The oldest of the three downstream branches, and the one the other two were modelled on. A live Teamcenter read becomes an importable Capital Systems Architect project — deterministic, dependency-free, no LLM anywhere in the path, and safe to run inside an air-gapped Dispatcher pipeline.

Running it

Three input modes, one output. The mode a Teamcenter Dispatcher module uses is --occ-tree, because the native extract runs server-side where the occurrence and connectivity services actually return ports and wires. On the bench, --live does the whole thing in one process.

$ node bin/forward-translate.mjs --live 041908 \
      --project "Inverted Flight Fuel System" \
      --out out/capital/InvertedFlight.platform.xml

forward-translate ok {"out":"out/capital/InvertedFlight.platform.xml","bytes":524073,
  "components":12,"pathways":11,"pathways_skipped":0,"functions":16,"signals":6,
  "carriers":0,"allocations":0,"normalized":true,
  "project":"Inverted Flight Fuel System"}

Four stages, only the first of which touches a network:

StageFunctionPure?
0fetchOccurrenceTree — live BOM/occurrence read through an injected clientlive I/O
1occurrenceTreeToTcGraph — occurrence tree to a normalized graphpure
2tcGraphToExchange — graph to the neutral exchange bundlepure
3generate — exchange to Capital's importable project XMLpure

Stages 1–3 have no I/O, no clock and no randomness, which is why the whole engine is testable end to end without a tier and why the same input yields byte-identical output.

The result, in Capital

Capital Systems Architect showing the Inverted Flight Fuel System platform design, twelve components joined by green pathways
All 12 components rendered with all 11 pathways wired, matching the Cameo connector topology exactly. FuelSystem correctly shows no pathway line: it is the composite whole, not a connector endpoint.
Capital design tree Pathways node expanded to PWY1 through PWY11
Counted from Capital's own tree: PWY1 through PWY11.
Create the project before importing Importing the XML with no project open fails with "cannot be imported as a project since it only contains a design, to import create an empty project then use import design". Create the empty project first, then Files → Import Project & Generate Diagrams into it.

Behaviour travels too

The first push of this model landed a single function. After the model was reworked — one monolithic SupplyFuelToEngine activity decomposed into four real functions, each with its own swimlanes and parameter pins, orchestrated by a top-level activity — the same pipeline landed 16: eleven leaf call-behaviour targets, four mid-level functions and one orchestrator, all as distinct Teamcenter Functionality objects, all listed by name in Capital's own Functions tree. Signals went from five to six.

That is the useful property of a deterministic transform: the delta in the output is exactly the delta in the model, and nothing else.

The gap in this branch, stated plainly allocations comes back empty. The functions arrive and the components arrive, but the binding between them does not. In this model the binding is expressed as swimlane partitions (ActivityPartition.represents) rather than «Allocate» relations — a deliberate correctness choice in the SysML — and no allocation lands in Teamcenter as a result. This is the single highest-value gap in the whole forward transform, because it is what would let a reliability or safety tool say which part performs which function. See the status board.

What maps to what

Cameo / SysMLTeamcenterCapital
Block, System, SubsystemFnd0LogicalBlockComponent
Proxy / full portFnd0LogicIntrfcePort, folded onto its component
ConnectorFnd0LogicConnPathway — the port-to-port physical route
Item flowSeg0ItemFlowExchangesCarrier — rides a pathway, carries the signal by identity
Interface blockSeg0Interfaceport typing, via Seg0Implements
ActivityFunctionalityFunction
SignalSeg0IntfSpecSignal — one identity, referenced by both layers

The complete contract, including the reverse direction and the field-level decisions behind it, is on the Teamcenter data-model page.

How this relates to the bi-directional plugin

Two different things share this site and are easy to confuse:

The forward transform (this page)The Capital ⇄ Teamcenter plugin
DirectionTeamcenter → Capital, one wayBoth ways, live during design
RunsNode CLI, or a Dispatcher module server-sideInside Capital, as a plugin with menus and panels
Inputwhatever the architect pushed from Cameowhatever the engineer is drawing right now
Purposefan one master model out to three toolskeep one shared logical structure current across seats
Documented onthis pageCapital Integration, Hanging on the Spine, Operations

They meet in Teamcenter, which is the point. The plugin keeps the shared structure alive while people work; the forward transform takes a settled architecture and hands it to whichever discipline needs to draw it next.