Skip to content

About

Home of the first-party extensions for Runtime Conditions Profiles

Resources

Stars

2 stars

Watchers

0 watching

Forks

Repository files navigation

Runtime Conditions Extensions

Runtime Conditions is currently seeking adoption by an established parent project. The repositories in this organization are split for hands-on usability, review, demos, and implementation feedback. They are not intended to present Runtime Conditions as a standalone foundation or competing project.

Start here: https://runtimeconditions.github.io/

Purpose

This repository contains Runtime Conditions extension definitions, declaration packages, semantic overlays, and extension-maintenance automation. Extension definitions own vocabulary and validation. Language declaration packages provide no-op source declarations that generators can read.

Extension release identity, immutability, provenance, and SDK compatibility are defined in EXTENSION_RELEASES.md.

Operation-oriented extensions use the authoring contract in SERVICE_OPERATIONS_SEMANTIC_BRIDGES.md. A semantic bridge references an authoritative Smithy, OpenAPI, protobuf, or comparable source when available and uses a separate Service Operations Inventory only as a fallback.

Extensions

Per the spec, first-party extensions are extensions like any other - there's no separate "core vocabulary" tier, and no notion of an extension being owned by this project versus anyone else's. Every extension lives together under catalog/, declared and resolved the same way regardless of who authored it:

Extension Identifier Path
Common Integrations https://runtimeconditions.io/extensions/common-integrations/v1alpha1/runtimeconditions.extension.yaml catalog/rc/common-integrations/
Env Configuration https://runtimeconditions.io/extensions/env-configuration/v1alpha1/runtimeconditions.extension.yaml catalog/rc/env-configuration/
Source Control https://runtimeconditions.io/extensions/source-control/0.1.0/runtimeconditions.extension.yaml catalog/rc/source-control/
Amazon S3 https://runtimeconditions.io/extensions/aws/s3/0.1.0/runtimeconditions.extension.yaml catalog/aws/s3/
Kubernetes API https://runtimeconditions.io/extensions/kubernetes/api/0.1.0/runtimeconditions.extension.yaml catalog/kubernetes/api/
NATS https://runtimeconditions.io/extensions/nats/service/0.1.0/runtimeconditions.extension.yaml catalog/nats/service/
Google Analytics https://runtimeconditions.io/extensions/google/analytics/0.1.0/runtimeconditions.extension.yaml catalog/google/analytics/

Folder layout

  • catalog/ - every extension, first-party or community, lives here as <namespace>/<name>/. First-party extensions that aren't tied to an external vendor or project sit under rc/ (rc/common-integrations/, rc/env-configuration/, rc/source-control/) - it's a namespace like any other, not a special tier. Everything else is namespaced by vendor or project (aws/s3/, google/analytics/, kubernetes/api/, nats/service/). The nesting is consistent for every entry, whether a namespace will only ever have one extension (kubernetes/, nats/) or many (aws/, google/, rc/) - we're not picking a different shape per case.
  • tooling/ - automation shared across extensions, not extensions themselves. Still figuring out the right shape for this one.
    • common/ the shared Python helpers (e.g. serialization.py) every extension's tools/ imports from, so a fix only has to happen in one place.
    • smithy-runtime-conditions/ the external compiler used to prove semantic-bridge generation against AWS's public Smithy models before proposing an internal AWS generator integration.

Go bindings

Generated Go modules are public, use short import paths, and require Go 1.25 or later. Consumers install them without GitHub credentials or private-module configuration. After the first binding release is published:

go get runtimeconditions.io/x/rc/common@v0.1.0
go get runtimeconditions.io/x/rc/env@v0.1.0

The package names match the public paths, so aliases are optional:

import (
    "runtimeconditions.io/x/rc/common"
    "runtimeconditions.io/x/rc/env"
)

func cache() common.Declaration {
    engine := common.KeyValueEngineRedis
    return common.Cache(
        common.KeyValue{Engine: &engine},
        env.KeyValueConfiguration{
            Env: env.KeyValueConfigurationEnv{
                {Name: "REDIS_URL", Property: env.KeyValueConfigurationEnvPropertyUrl},
            },
        },
    )
}

tooling/extension-bindings/packages.yaml defines each public module path, package name, version, and generated source directory. Future bindings use runtimeconditions.io/x/<provider>/<extension>, such as runtimeconditions.io/x/aws/s3 with package name s3.

The existing docs build invokes tooling/common/build_extensions_site.py, which publishes Go discovery pages alongside extension definitions. The Go source remains in bindings/<package-key>/go. Versions are published through Publish Go bindings in GitHub Actions; see the binding publication workflow.

Local validation

From a sibling go-rc-profiler checkout:

cd ../go-rc-profiler
go run . validate-extensions -root ../extensions

Published extension identifiers are immutable semantic releases. A new semantic definition receives a new exact identifier; Runtime Conditions document apiVersion changes are independent.

About

Home of the first-party extensions for Runtime Conditions Profiles

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages