Files
create/docs/src/architecture/python-source-of-truth.md
forbes 87a0af0b0f phase 1: copy Kindred-only files onto upstream/main (FreeCAD 1.2.0-dev)
Wholesale copy of all Kindred Create additions that don't conflict with
upstream FreeCAD code:

- kindred-icons/ (1444 Catppuccin Mocha SVG icon overrides)
- src/Mod/Create/ (Kindred Create workbench)
- src/Gui/ Kindred source files (FileOrigin, OriginManager,
  OriginSelectorWidget, CommandOrigin, BreadcrumbToolBar, EditingContext)
- src/Gui/Icons/ (Kindred branding and silo icons)
- src/Gui/PreferencePacks/KindredCreate/
- src/Gui/Stylesheets/ (KindredCreate.qss, images_dark-light/)
- package/ (rattler-build recipe)
- docs/ (architecture, guides, specifications)
- .gitea/ (CI workflows, issue templates)
- mods/silo, mods/ztools submodules
- .gitmodules (Kindred submodule URLs)
- resources/ (kindred-create.desktop, kindred-create.xml)
- banner-logo-light.png, CONTRIBUTING.md
2026-02-13 14:03:58 -06:00

1.5 KiB

Python as Source of Truth

In Kindred Create's architecture, FreeCAD documents (.FCStd files) are the authoritative representation of all CAD data. The Silo database and MinIO storage are caches and metadata indexes — they do not define the model.

How it works

An .FCStd file is a ZIP archive containing:

  • XML documents describing the parametric model tree
  • BREP geometry files for each shape
  • Thumbnail images
  • Embedded spreadsheets and metadata

When a user runs Commit, the workbench uploads the entire .FCStd file to MinIO and records metadata (part number, revision, timestamp, commit message) in PostgreSQL. When a user runs Pull, the workbench downloads the .FCStd from MinIO and opens it locally.

Why this design

  • No data loss — the complete model is always in the .FCStd file, never split across systems
  • Offline capability — engineers can work without a server connection
  • FreeCAD compatibility — files are standard FreeCAD documents, openable in stock FreeCAD
  • Simple sync model — the unit of transfer is always a whole file, avoiding merge conflicts in binary geometry

Trade-offs

  • Large files.FCStd files can grow large with complex assemblies; every commit stores the full file
  • No partial sync — you cannot pull a single feature or component; it is all or nothing
  • Conflict resolution — two users editing the same file must resolve conflicts manually (last-commit-wins by default)