Pre-alphaFoundry is in development. Tools, APIs, and sample content may change.

Browse documentation
Corecom.zoa.foundry · v1.0.0

ZOA Foundry

Declare the Foundry package set through a UPM umbrella package.

The Foundry package is an umbrella manifest that declares dependencies on a selected set of ZOA packages. It contains the package metadata used to bring those dependencies into a Unity project.

The 1.0.0 version in this checkout is package metadata; the product remains pre-alpha. Installation still requires access to the package sources and compatible dependencies. A manifest entry alone does not provide that access.

Tooling

Editor tools

Lint Package Dependencies

Tools > ZOA > Advanced > Validate > Foundry > Lint Package Dependencies

Builds the assembly dependency graph, reports every cycle as a full path and every forbidden edge as a source and target pair, logs the detail to the console, and summarises in a dialog.

Validate Assembly Boundaries

Tools > ZOA > Advanced > Validate > Foundry > Validate Assembly Boundaries

Scans every assembly definition under Packages and reports any runtime assembly that references an editor-only one, with counts of runtime and editor assemblies in the summary.

Cleanup Tool

Tools > ZOA > Advanced > Maintain > Foundry > Cleanup Tool

A UI Toolkit window listing removable categories with per-category counts: generated content, imported samples and content packs, feature-set installer output, test output, demo content, local save state, third-party assets, and miscellaneous. Third-party is selected by default.

Export Readiness Report

Tools > ZOA > Advanced > Maintain > Foundry > Export Readiness Report

Writes a markdown readiness report to Logs/FoundryExportReadiness and reports whether any blocking findings stand between the project and a clean export.

Export Package

Tools > ZOA > Advanced > Maintain > Foundry > Export Package

The profile-driven export window. Choose a profile, rescan, open the Cleanup Tool, write the readiness report, and generate deterministic package mirror and import-plan artifacts, with an optional unitypackage.

Help menu

Tools > ZOA > Advanced > Help

Open Documentation resolves the project's Docs/index.html and falls back to revealing the Docs folder. Open Plan Docs reveals Docs/Refactor. Open GitHub Repository and About ZOA Foundry round it out, with About reading the live version and description from the installed package manifest.

Referenced by ZOA manifests (0)

No direct references from the reviewed ZOA manifests.

How it works

Concepts

The manifest and version stamp

The umbrella declares twelve direct ZOA dependencies. Their manifests resolve further dependencies, while other repository packages remain outside that declared selection. FoundryVersion provides constants for build stamps and diagnostics.

Use the checkout revision and resolved manifests to identify a working package set. The umbrella’s 1.0.0 metadata does not establish a public production release.

Assembly validation

AsmdefBoundaryValidator checks for runtime assemblies referencing editor-only assemblies. AsmdefDependencyLinter inspects assembly cycles and configured forbidden edges.

These checks describe specific architectural rules. Review their findings alongside the target project’s compilation and runtime behavior when changing the package set.

Plan a package export

FoundryPackageInventory discovers local packages and their dependencies. Export profiles select seed packages, exclusions, asset roots, and whether to include samples, tests, or generated output.

FoundryExportPipeline.BuildPlan combines that inventory with the profile and reports blocking findings. Generate a readiness report before creating export artifacts, and inspect external dependencies separately.

Review generated and external assets

FoundryCleanupTool groups assets for review before distribution. FoundryAssetInventory identifies generated content, dependencies, project settings, and assets whose role needs inspection.

Review each proposed removal against the project you intend to distribute. An asset category is an aid to that review; it does not determine ownership or redistribution rights.

Setup

Workflow

  1. 01

    Open the development checkout

    Use the editor version recorded in ProjectVersion.txt and let Unity resolve dependencies. For another project, follow the access and import instructions supplied with its Foundry distribution.

  2. 02

    Review Start Here

    Open Tools → ZOA → Start Here and inspect the configuration and content workflow. Generate the content required for the scene you want to examine.

  3. 03

    Configure integrations

    Review NetworkSettings and SaveBackendSettings. FishNet is the supported network path; optional database providers need their external dependencies.

  4. 04

    Validate the selected package set

    Run the relevant assembly and setup checks, resolve reported issues, and exercise the intended interaction in Play mode.

  5. 05

    Prepare an export when needed

    Select an export profile, review the readiness report and cleanup candidates, and resolve blocking findings before producing artifacts.

Reference

Key types

FoundryVersion

class

The umbrella's only runtime type. Three constants describing the release, intended for build stamps and support diagnostics rather than for gameplay code to branch on.

  • const string Version = "1.0.0"
  • const string MinUnityVersion = "6000.4.0f1"
  • const int PackageCount = 9

AsmdefBoundaryValidator

class

Editor validator that scans every assembly definition under Packages and reports runtime assemblies referencing editor-only ones. The check that catches a player-build break before the player build.

  • static BoundaryResult RunFullValidation()
  • BoundaryResult.Violations : List<(string RuntimeAssembly, string EditorAssembly)>
  • BoundaryResult.IsValid
  • BoundaryResult.Summary

AsmdefDependencyLinter

class

Editor linter that builds the assembly dependency graph, finds cycles by depth-first search with node colouring, and reports edges that violate the architecture's separation rules.

  • static LintResult RunFullLint()
  • LintResult.Cycles : List<List<string>>
  • LintResult.ForbiddenEdges : List<(string Source, string Target)>
  • LintResult.IsClean

FoundryPackageInventory

class

Discovers every package under a packages root and resolves a seed set into its transitive closure. The data layer both the export tool and the readiness report sit on.

  • static FoundryPackageInventoryResult Discover(string packagesRoot = "Packages")
  • static FoundryDependencyClosureResult ComputeClosure(FoundryPackageInventoryResult inventory, IEnumerable<string> seedPackageIds, IEnumerable<string> excludedPackageIds = null)
  • static string ToMarkdown(FoundryPackageInventoryResult inventory)
  • static string ToJson(FoundryPackageInventoryResult inventory)

FoundryPackageRecord

class

One package as the inventory sees it: id, display name, version, path, dependencies split into local and external, assembly definitions, role tags, and flags for samples, tests, runtime, and editor content.

  • string packageId
  • string version
  • List<FoundryNameValue> localDependencies
  • List<FoundryNameValue> externalDependencies
  • List<string> asmdefs
  • bool hasSamples
  • bool hasTests

FoundryExportProfile

class

A declarative slice of the stack: seed packages, exclusions, asset roots and roles to include, third-party dependencies, and whether samples, tests, and generated demo output travel with it.

  • List<string> seedPackages
  • List<string> excludedPackages
  • List<FoundryAssetRole> includedAssetRoles
  • List<FoundryThirdPartyDependency> thirdPartyDependencies
  • bool includeAllFoundryPackages
  • bool includeSamples
  • bool includeTests

FoundryExportProfileCatalog

class

The four shipped profiles, by id: swarms-host-client, swarms-authoring, steam-demo-reference, and full-foundry. Get throws on an unknown id rather than falling back to a default.

  • const string SwarmsHostClient = "swarms-host-client"
  • const string SwarmsAuthoring = "swarms-authoring"
  • const string SteamDemoReference = "steam-demo-reference"
  • const string FullFoundry = "full-foundry"
  • static IReadOnlyList<FoundryExportProfile> All { get; }
  • static FoundryExportProfile Get(string profileId)

FoundryExportPipeline

class

Turns a profile id into a plan, a readiness report, and export artifacts. Has CI entry points so the same gate runs in the editor and in a build pipeline.

  • static FoundryExportPlan BuildPlan(string profileId)
  • static int GenerateReadinessReport(string profileId = FoundryExportProfileCatalog.FullFoundry, string outputDirectory = DefaultReadinessReportDirectory)
  • static int GenerateExportArtifacts(string profileId, string outputDirectory, bool exportUnityPackage = false, string unityPackagePath = null)
  • static void ExportReadinessCi()
  • static void ExportProfileCi()

FoundryExportPlan

class

The resolved answer for one profile: the package inventory, the dependency closure, the asset inventory, the assets to export, third-party dependencies, and the findings. HasBlockingFindings is the go or no-go.

  • string profileId
  • FoundryDependencyClosureResult packageClosure
  • List<FoundryAssetRootRecord> exportAssets
  • List<FoundryFinding> findings
  • bool HasBlockingFindings

FoundryAssetInventory

class

Scans an assets root and classifies each root record by role, which is how the cleanup tool decides what is safe to delete and what needs a human to look at it.

  • static FoundryAssetInventoryResult Scan(string assetsRoot = "Assets")
  • static bool IsDeleteCandidate(FoundryAssetRootRecord record)
  • static string ToMarkdown(FoundryAssetInventoryResult inventory)

FoundryAssetRole

enum

FirstPartyRuntime, FirstPartyDocs, GeneratedOutput, GeneratedDemoOutput, TestOutput, ThirdPartyDependency, ProjectSettingConfiguration, ReviewRequired, Unknown. The last two are the classifier declining to guess.

FoundryCleanupTool

class

The pre-export editor window. Scans for generated content, imported samples, feature-set installer output, test output, demo content, local save state, and third-party assets, and removes the categories you select. Third-party is pre-selected.

FoundryExportTool

class

The editor window over the export pipeline. Pick a profile, rescan, write a readiness report, and produce the mirror and import-plan artifacts, with the unitypackage export available as a compatibility path.

Integration

Behavior to account for

See also