typescript-as-data

Compiling TypeScript to configuration.

Try it in ten minutes Add it to your platform The specification

EACH FOLDED FILE IS READ, NEVER RUNexecution boundaryLive estatethe estateyou already haveTyped sourcekeystroke check,no evaluatorFolded valuesa function ofthe sourceRules over valuesAWS · Azure · GCP · K8swritten onceTarget artifactCloudFormation · ARMKubernetes YAMLApplyplan / what-ifstill workimportfoldcheckemitPortable: the same values in an editor, a CI job or a browser tab,with no JavaScript runtime required.read live back · diff against declared source
The loop closes because reality reads back into source. Only the final hop crosses the boundary, and what crosses it is an artifact in the target's own format rather than a program.

A policy in YAML and in TypeScript

governance.yml
orgs:
  my-org:
    repos:
      api:
        hasWiki: false
        allowSquashMerge: true
        topics: [service, api]
        branchProtection:
          - ruleName: main
            requiredApprovals: 1
            enableStatusCheck: true
            statusCheckContexts: [ci]
governance.ts
import type { GovernanceConfig } from "@intentius/forgejo-warden";
import { service } from "./helpers.ts";

export const policy = {
  orgs: {
    "my-org": {
      repos: { api: service("api"), web: service("web") },
    },
  },
} satisfies GovernanceConfig;

The second one has completion and a type error on a misspelt key. It reuses one helper across repositories. The tool reads the same object from either file and never executes the second one to get it. Three things follow, one page each below. New to any of this? Start here.

Pick your platform

What stands behind it

Every figure on this site is read from an artifact in the repository at build time. The evidence page names each artifact and what it does not establish.