factcircuit
FactCircuit: an auditable claim-and-evidence verification loop with immutable provenance, staged checks, bounded retrieval, and reproducible evaluation.
Fluid Forge is for data engineers who want to write a data product contract once and deploy it anywhere. Build and test locally with DuckDB, then push the same contract to BigQu...
DataPython · ShellGitHub @AgenticstigerOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Zero-dependency SDK for building FLUID data product providers
Translation pending
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
Build a data-product-forge plugin in 30 seconds. Get 15+ conformance tests for free.
Zero-dependency Python SDK for building plugins that extend the data-product-forge (a.k.a. FLUID) CLI. Write a plugin once, plug it in via Python entry-points. Four built-in roles, one mental model.
Dual naming, on purpose. PyPI distribution: data-product-forge-sdk. Import path: fluid_sdk. Same pattern as pyyaml ↔ yaml, scikit-learn ↔ sklearn. The PyPI name reflects the product brand; the import path stays short.
Zero dependencies beyond the Python standard library.Read the full README ↗Build a data-product-forge plugin in 30 seconds. Get 15+ conformance tests for free.
Zero-dependency Python SDK for building plugins that extend the data-product-forge (a.k.a. FLUID) CLI. Write a plugin once, plug it in via Python entry-points. Four built-in roles, one mental model.
pip install data-product-forge-sdk
from fluid_sdk import CustomScaffold, Validator, ContractHelper
Dual naming, on purpose. PyPI distribution:
data-product-forge-sdk. Import path:fluid_sdk. Same pattern aspyyaml↔yaml,scikit-learn↔sklearn. The PyPI name reflects the product brand; the import path stays short.
Zero dependencies beyond the Python standard library.
| Role | What it does | When you'd build one |
|---|---|---|
InfraProvider | Provisions cloud resources (datasets, tables, IAM) | You're adding support for a new cloud platform |
CustomScaffold | Generates files from a contract (CI configs, app code, IaC) | Your org has a standard project layout you want every team to use |
Validator | Inspects a contract and emits findings | You have governance / compliance / cost rules to enforce |
CatalogAdapter | Syncs product metadata to a catalog (DataHub, Atlan) | You want fluid contracts to flow into your existing catalog |
# scaffold.py
from fluid_sdk import ContractHelper, CustomScaffold, write_file_action
class HelloScaffold(CustomScaffold):
name = "hello"
def plan(self, contract):
c = ContractHelper(contract)
return [
write_file_action(
path="README.md",
content=f"# {c.name}\n\n{c.description}\n".encode("utf-8"),
).to_dict(),
]
# tests/test_scaffold.py
from fluid_sdk.testing import CustomScaffoldTestHarness, LOCAL_CONTRACT
from scaffold import HelloScaffold
class TestHelloScaffold(CustomScaffoldTestHarness):
plugin_class = HelloScaffold
sample_contracts = [LOCAL_CONTRACT]
pytest runs 15+ conformance tests automatically. Determinism, idempotency, path-traversal safety, role declaration — all verified.
→ Full step-by-step in docs/getting-started/.
Plugin authors register via pyproject.toml:
[project.entry-points."fluid_build.custom_scaffolds"]
hello = "my_pkg.scaffold:HelloScaffold"
End users then:
pip install data-product-forge # the CLI
pip install data-product-forge-custom-scaffold # the engine
pip install your-plugin # what you wrote
And in any contract:
extensions:
customScaffold:
libraries:
- id: ci
source: { kind: pypi, package: your-plugin, version: ">=0.1" }
patterns:
- use: ci:hello
fluid generate custom-scaffold
# Your plugin's files appear in the workspace.
Start here:
Working examples (every one runs pytest + python demo.py standalone):
examples/hello-scaffold/ — the smallest possible plugin (~30 LOC)examples/gitlab-ci-scaffold/ — full CI generator (~150 LOC, 27 tests)examples/steward-validator/ — custom governance rule (~80 LOC, 22 tests)Reference:
docs/reference/architecture.md — the four-layer modeldocs/reference/role-taxonomy.md — pick the right roledocs/reference/contract-parsing.md — ContractHelper APIdocs/reference/conformance-testing.md — test harnessesfrom fluid_sdk import (
CustomScaffold, # subclass for file-emitting plugins
InfraProvider, # subclass for cloud-infra plugins
Validator, # subclass for contract-inspection plugins
CatalogAdapter, # subclass for catalog-sync plugins
ContractHelper, # wrap any contract dict — typed read access
write_file_action, # builds a canonical write_file PluginAction
Finding, # validator authors emit these
)
# Everything else is in the role docs.
The full data-product-forge CLI pulls ~40 transitive dependencies. As a plugin author, you don't need any of that — you only need:
BasePlugin + the four role subclassesContractHelper for parsing fluid contracts…all in pure Python stdlib. The end user installs the full CLI; you only need data-product-forge-sdk. Faster pip install, no version-resolution headaches, your plugin works against multiple data-product-forge CLI versions.
Apache-2.0. See LICENSE.