~/bend-docscommunity

domain/architecture/ops.bend checks

raw source on the hub · import 0x61eb9b926b7147b74881eab60781316b/domain/architecture/ops.bend as Ops

25 imports
import Base
import ../../general/rose/type.bend as R
import ../../general/rose/ops.bend as RO
import ../../general/compound/type.bend as C
import ../../general/compound/ops.bend as CO
import ../../general/compound/edge/type.bend as E
import ./relationship/type.bend as Rel
import ./system/type.bend as S
import ./system/container/type.bend as Ct
import ./system/container/component/type.bend as Co
import ./system/deployment/type.bend as D
import ./environment/type.bend as En
import ./environment/party/type.bend as P
import ./environment/external/type.bend as X
import ./environment/constraint/type.bend as K
import ./system/release/ops.bend as RlO
import ./category/type.bend as K2
import ./environment/inventory/type.bend as I
import ./environment/inventory/ops.bend as InvO
import ./environment/agreement/type.bend as G
import ./system/deployment/host/type.bend as H
import ./system/deployment/nix_darwin/ops.bend as NDO
import ./system/deployment/nix_darwin/type.bend as ND
import ./system/deployment/nix_darwin/setting/ops.bend as StO
import ./type.bend as A

Definitions

def uses_edges source · line 29 · raw

@+src:String -> @us:List<&2, 0x61eb9b926b7147b74881eab60781316b/domain/architecture/relationship/type.Relationship> -> List<&2, 0x61eb9b926b7147b74881eab60781316b/general/compound/edge/type.Edge>

---- the architecture as a compound graph: the system's tree, the environment's leaves, and every element's relationships as edges from it ----

def language_name source · line 38 · raw

@l:0x61eb9b926b7147b74881eab60781316b/domain/architecture/system/container/component/type.Language -> String

def technology source · line 58 · raw

@+vs:List<&2, String> -> @+fs:List<&2, String> -> @+ls:List<&2, String> -> String

A container's technology, as drawn: its frameworks and languages, else its vendors.

def component_roses source · line 61 · raw

@cs:List<&2, 0x61eb9b926b7147b74881eab60781316b/domain/architecture/system/container/component/type.Component> -> List<&2, 0x61eb9b926b7147b74881eab60781316b/general/rose/type.Rose<0x61eb9b926b7147b74881eab60781316b/domain/architecture/type.Element>>

def component_edges source · line 70 · raw

@cs:List<&2, 0x61eb9b926b7147b74881eab60781316b/domain/architecture/system/container/component/type.Component> -> List<&2, 0x61eb9b926b7147b74881eab60781316b/general/compound/edge/type.Edge>

def container_roses source · line 79 · raw

@cs:List<&2, 0x61eb9b926b7147b74881eab60781316b/domain/architecture/system/container/type.Container> -> List<&2, 0x61eb9b926b7147b74881eab60781316b/general/rose/type.Rose<0x61eb9b926b7147b74881eab60781316b/domain/architecture/type.Element>>

def container_edges source · line 88 · raw

@cs:List<&2, 0x61eb9b926b7147b74881eab60781316b/domain/architecture/system/container/type.Container> -> List<&2, 0x61eb9b926b7147b74881eab60781316b/general/compound/edge/type.Edge>

def party_rose source · line 97 · raw

@p:0x61eb9b926b7147b74881eab60781316b/domain/architecture/environment/party/type.Party -> 0x61eb9b926b7147b74881eab60781316b/general/rose/type.Rose<0x61eb9b926b7147b74881eab60781316b/domain/architecture/type.Element>

def party_edges source · line 106 · raw

@p:0x61eb9b926b7147b74881eab60781316b/domain/architecture/environment/party/type.Party -> List<&2, 0x61eb9b926b7147b74881eab60781316b/general/compound/edge/type.Edge>

def parties_roses source · line 115 · raw

@ps:List<&2, 0x61eb9b926b7147b74881eab60781316b/domain/architecture/environment/party/type.Party> -> List<&2, 0x61eb9b926b7147b74881eab60781316b/general/rose/type.Rose<0x61eb9b926b7147b74881eab60781316b/domain/architecture/type.Element>>

def parties_edges source · line 122 · raw

@ps:List<&2, 0x61eb9b926b7147b74881eab60781316b/domain/architecture/environment/party/type.Party> -> List<&2, 0x61eb9b926b7147b74881eab60781316b/general/compound/edge/type.Edge>

def external_roses source · line 129 · raw

@xs:List<&2, 0x61eb9b926b7147b74881eab60781316b/domain/architecture/environment/external/type.External> -> List<&2, 0x61eb9b926b7147b74881eab60781316b/general/rose/type.Rose<0x61eb9b926b7147b74881eab60781316b/domain/architecture/type.Element>>

def external_edges source · line 138 · raw

@xs:List<&2, 0x61eb9b926b7147b74881eab60781316b/domain/architecture/environment/external/type.External> -> List<&2, 0x61eb9b926b7147b74881eab60781316b/general/compound/edge/type.Edge>

def with_env source · line 147 · raw

@sys:0x61eb9b926b7147b74881eab60781316b/general/rose/type.Rose<0x61eb9b926b7147b74881eab60781316b/domain/architecture/type.Element> -> @+cs:List<&2, 0x61eb9b926b7147b74881eab60781316b/domain/architecture/system/container/type.Container> -> @env:0x61eb9b926b7147b74881eab60781316b/domain/architecture/environment/type.Environment -> 0x61eb9b926b7147b74881eab60781316b/general/compound/type.Compound<0x61eb9b926b7147b74881eab60781316b/domain/architecture/type.Element>

def to_compound source · line 153 · raw

@a:0x61eb9b926b7147b74881eab60781316b/domain/architecture/type.Architecture -> 0x61eb9b926b7147b74881eab60781316b/general/compound/type.Compound<0x61eb9b926b7147b74881eab60781316b/domain/architecture/type.Element>

def system source · line 161 · raw

@a:0x61eb9b926b7147b74881eab60781316b/domain/architecture/type.Architecture -> 0x61eb9b926b7147b74881eab60781316b/domain/architecture/system/type.System

---- looking things up ----

def system_key source · line 166 · raw

@a:0x61eb9b926b7147b74881eab60781316b/domain/architecture/type.Architecture -> String

def containers source · line 173 · raw

@a:0x61eb9b926b7147b74881eab60781316b/domain/architecture/type.Architecture -> List<&2, 0x61eb9b926b7147b74881eab60781316b/domain/architecture/system/container/type.Container>

def deployment source · line 180 · raw

@a:0x61eb9b926b7147b74881eab60781316b/domain/architecture/type.Architecture -> 0x61eb9b926b7147b74881eab60781316b/domain/architecture/system/deployment/type.Deployment

def deployment_nodes source · line 187 · raw

@d:0x61eb9b926b7147b74881eab60781316b/domain/architecture/system/deployment/type.Deployment -> List<&2, 0x61eb9b926b7147b74881eab60781316b/domain/architecture/system/deployment/type.Node>

def nodes source · line 193 · raw

@a:0x61eb9b926b7147b74881eab60781316b/domain/architecture/type.Architecture -> List<&2, 0x61eb9b926b7147b74881eab60781316b/domain/architecture/system/deployment/type.Node>

The machines, nested.

def keys source · line 196 · raw

@a:0x61eb9b926b7147b74881eab60781316b/domain/architecture/type.Architecture -> List<&2, String>

def container_keys source · line 199 · raw

@cs:List<&2, 0x61eb9b926b7147b74881eab60781316b/domain/architecture/system/container/type.Container> -> List<&2, String>

def component_keys source · line 208 · raw

@cs:List<&2, 0x61eb9b926b7147b74881eab60781316b/domain/architecture/system/container/component/type.Component> -> List<&2, String>

def all_component_keys source · line 218 · raw

@cs:List<&2, 0x61eb9b926b7147b74881eab60781316b/domain/architecture/system/container/type.Container> -> List<&2, String>

Every component key in the system.

def components_of source · line 228 · raw

@+k:String -> @cs:List<&2, 0x61eb9b926b7147b74881eab60781316b/domain/architecture/system/container/type.Container> -> List<&2, String>

The components inside one container.

def environment_keys source · line 237 · raw

@a:0x61eb9b926b7147b74881eab60781316b/domain/architecture/type.Architecture -> List<&2, String>

def instances source · line 245 · raw

@ns:List<&2, 0x61eb9b926b7147b74881eab60781316b/domain/architecture/system/deployment/type.Node> -> List<&2, String>

---- well formed: keys are unique, every relationship and every instance names something that exists ----

def all_listed source · line 254 · raw

@xs:List<&2, String> -> @+ks:List<&2, String> -> Bool

def compound_ok source · line 261 · raw

@+c:0x61eb9b926b7147b74881eab60781316b/general/compound/type.Compound<0x61eb9b926b7147b74881eab60781316b/domain/architecture/type.Element> -> Bool

def well_formed source · line 264 · raw

@+a:0x61eb9b926b7147b74881eab60781316b/domain/architecture/type.Architecture -> Bool

def ours source · line 268 · raw

@o:0x61eb9b926b7147b74881eab60781316b/domain/architecture/system/container/type.Ownership -> Bool

---- only our own containers are opened up into components ----

def components_ours source · line 275 · raw

@cs:List<&2, 0x61eb9b926b7147b74881eab60781316b/domain/architecture/system/container/type.Container> -> Bool

def private source · line 285 · raw

@e:0x61eb9b926b7147b74881eab60781316b/domain/architecture/system/container/type.Exposure -> Bool

---- on a server, everything is reachable only from the machine itself or over the tailnet ----

def exposure_private source · line 294 · raw

@+k:String -> @cs:List<&2, 0x61eb9b926b7147b74881eab60781316b/domain/architecture/system/container/type.Container> -> Bool

def all_private source · line 303 · raw

@ins:List<&2, String> -> @+cs:List<&2, 0x61eb9b926b7147b74881eab60781316b/domain/architecture/system/container/type.Container> -> Bool

def is_server source · line 310 · raw

@r:0x61eb9b926b7147b74881eab60781316b/domain/architecture/system/deployment/type.Role -> Bool

def nodes_private source · line 317 · raw

@ns:List<&2, 0x61eb9b926b7147b74881eab60781316b/domain/architecture/system/deployment/type.Node> -> @+cs:List<&2, 0x61eb9b926b7147b74881eab60781316b/domain/architecture/system/container/type.Container> -> Bool

def servers_private source · line 326 · raw

@+a:0x61eb9b926b7147b74881eab60781316b/domain/architecture/type.Architecture -> Bool

def open_source_required source · line 330 · raw

@ks:List<&2, 0x61eb9b926b7147b74881eab60781316b/domain/architecture/environment/constraint/type.Constraint> -> Bool

---- open source: a system its environment requires to be open source publishes from a public repository ----

def open_source source · line 341 · raw

@a:0x61eb9b926b7147b74881eab60781316b/domain/architecture/type.Architecture -> Bool

def is_device source · line 349 · raw

@r:0x61eb9b926b7147b74881eab60781316b/domain/architecture/system/deployment/type.Role -> Bool

---- where each key runs: the containers on server nodes and on device nodes ----

def keep_all source · line 356 · raw

@c:Bool -> @xs:List<&2, String> -> @rest:List<&2, String> -> List<&2, String>

def on_servers source · line 363 · raw

@ns:List<&2, 0x61eb9b926b7147b74881eab60781316b/domain/architecture/system/deployment/type.Node> -> List<&2, String>

def on_devices source · line 372 · raw

@ns:List<&2, 0x61eb9b926b7147b74881eab60781316b/domain/architecture/system/deployment/type.Node> -> List<&2, String>

def home source · line 382 · raw

@+k:String -> @cs:List<&2, 0x61eb9b926b7147b74881eab60781316b/domain/architecture/system/container/type.Container> -> String

The container a key belongs to: itself, or the one its component sits in, else the key itself.

def exposure_of source · line 391 · raw

@+k:String -> @cs:List<&2, 0x61eb9b926b7147b74881eab60781316b/domain/architecture/system/container/type.Container> -> 0x61eb9b926b7147b74881eab60781316b/domain/architecture/system/container/type.Exposure

def is_tailnet source · line 400 · raw

@e:0x61eb9b926b7147b74881eab60781316b/domain/architecture/system/container/type.Exposure -> Bool

def is_local source · line 407 · raw

@e:0x61eb9b926b7147b74881eab60781316b/domain/architecture/system/container/type.Exposure -> Bool

def edges source · line 414 · raw

@a:0x61eb9b926b7147b74881eab60781316b/domain/architecture/type.Architecture -> List<&2, 0x61eb9b926b7147b74881eab60781316b/general/compound/edge/type.Edge>

def via_tailnet source · line 418 · raw

@es:List<&2, 0x61eb9b926b7147b74881eab60781316b/general/compound/edge/type.Edge> -> @+cs:List<&2, 0x61eb9b926b7147b74881eab60781316b/domain/architecture/system/container/type.Container> -> @+servers:List<&2, String> -> @+devices:List<&2, String> -> Bool

---- a device reaches a server only over the tailnet ----

def devices_via_tailnet source · line 428 · raw

@+a:0x61eb9b926b7147b74881eab60781316b/domain/architecture/type.Architecture -> Bool

def reached source · line 432 · raw

@+k:String -> @es:List<&2, 0x61eb9b926b7147b74881eab60781316b/general/compound/edge/type.Edge> -> @+cs:List<&2, 0x61eb9b926b7147b74881eab60781316b/domain/architecture/system/container/type.Container> -> @+devices:List<&2, String> -> Bool

---- on a server, a container is on the tailnet exactly when a device reaches it, else local ----

def follows_reach source · line 441 · raw

@r:Bool -> @e:0x61eb9b926b7147b74881eab60781316b/domain/architecture/system/container/type.Exposure -> Bool

def reach_ok source · line 448 · raw

@ks:List<&2, String> -> @+a:0x61eb9b926b7147b74881eab60781316b/domain/architecture/type.Architecture -> Bool

def exposure_follows_reach source · line 455 · raw

@+a:0x61eb9b926b7147b74881eab60781316b/domain/architecture/type.Architecture -> Bool

def cap_eq source · line 459 · raw

@a:0x61eb9b926b7147b74881eab60781316b/domain/architecture/category/type.Capability -> @b:0x61eb9b926b7147b74881eab60781316b/domain/architecture/category/type.Capability -> Bool

---- capabilities: who provides each, and how many do ----

def has_cap source · line 472 · raw

@+want:0x61eb9b926b7147b74881eab60781316b/domain/architecture/category/type.Capability -> @cs:List<&2, 0x61eb9b926b7147b74881eab60781316b/domain/architecture/category/type.Capability> -> Bool

def one_if source · line 479 · raw

@b:Bool -> Nat

def container_providers source · line 486 · raw

@+want:0x61eb9b926b7147b74881eab60781316b/domain/architecture/category/type.Capability -> @cs:List<&2, 0x61eb9b926b7147b74881eab60781316b/domain/architecture/system/container/type.Container> -> List<&2, String>

def external_providers source · line 495 · raw

@+want:0x61eb9b926b7147b74881eab60781316b/domain/architecture/category/type.Capability -> @xs:List<&2, 0x61eb9b926b7147b74881eab60781316b/domain/architecture/environment/external/type.External> -> List<&2, String>

def externals source · line 504 · raw

@a:0x61eb9b926b7147b74881eab60781316b/domain/architecture/type.Architecture -> List<&2, 0x61eb9b926b7147b74881eab60781316b/domain/architecture/environment/external/type.External>

def providers source · line 512 · raw

@+want:0x61eb9b926b7147b74881eab60781316b/domain/architecture/category/type.Capability -> @+a:0x61eb9b926b7147b74881eab60781316b/domain/architecture/type.Architecture -> List<&2, String>

The containers and outside systems that provide a capability.

def provided source · line 515 · raw

@+want:0x61eb9b926b7147b74881eab60781316b/domain/architecture/category/type.Capability -> @+a:0x61eb9b926b7147b74881eab60781316b/domain/architecture/type.Architecture -> Nat

def private_hosts source · line 519 · raw

@cs:List<&2, 0x61eb9b926b7147b74881eab60781316b/domain/architecture/system/container/type.Container> -> Nat

How many containers host the app privately: Hosting, on the tailnet.

def private_hosting source · line 528 · raw

@+a:0x61eb9b926b7147b74881eab60781316b/domain/architecture/type.Architecture -> Nat

def is_data_api source · line 531 · raw

@c:0x61eb9b926b7147b74881eab60781316b/domain/architecture/category/type.Category -> Bool

def data_apis source · line 539 · raw

@cs:List<&2, 0x61eb9b926b7147b74881eab60781316b/domain/architecture/system/container/type.Container> -> Nat

The system's own data APIs. "Exactly one" means one store.

def own_data_apis source · line 548 · raw

@+a:0x61eb9b926b7147b74881eab60781316b/domain/architecture/type.Architecture -> Nat

def shared_ok source · line 552 · raw

@c:0x61eb9b926b7147b74881eab60781316b/domain/architecture/system/container/type.Container -> Bool

A data API may also host the app only while it is private.

def all_shared_ok source · line 557 · raw

@cs:List<&2, 0x61eb9b926b7147b74881eab60781316b/domain/architecture/system/container/type.Container> -> Bool

def shared_hosting_private source · line 564 · raw

@+a:0x61eb9b926b7147b74881eab60781316b/domain/architecture/type.Architecture -> Bool

def reports source · line 568 · raw

@+k:String -> @es:List<&2, 0x61eb9b926b7147b74881eab60781316b/general/compound/edge/type.Edge> -> @+cs:List<&2, 0x61eb9b926b7147b74881eab60781316b/domain/architecture/system/container/type.Container> -> @+obs:List<&2, String> -> Bool

---- observed: everything we build reports to an observability provider ----

def built_observed source · line 577 · raw

@cs:List<&2, 0x61eb9b926b7147b74881eab60781316b/domain/architecture/system/container/type.Container> -> @+a:0x61eb9b926b7147b74881eab60781316b/domain/architecture/type.Architecture -> Bool

def observed source · line 587 · raw

@+a:0x61eb9b926b7147b74881eab60781316b/domain/architecture/type.Architecture -> Bool

def inventory source · line 591 · raw

@a:0x61eb9b926b7147b74881eab60781316b/domain/architecture/type.Architecture -> 0x61eb9b926b7147b74881eab60781316b/domain/architecture/environment/inventory/type.Inventory

---- the environment's inventory and agreement ----

def agreement source · line 598 · raw

@a:0x61eb9b926b7147b74881eab60781316b/domain/architecture/type.Architecture -> 0x61eb9b926b7147b74881eab60781316b/domain/architecture/environment/agreement/type.Agreement

def host_ok source · line 606 · raw

@h:0x61eb9b926b7147b74881eab60781316b/domain/architecture/system/deployment/host/type.Host -> @+name:String -> @+inv:0x61eb9b926b7147b74881eab60781316b/domain/architecture/environment/inventory/type.Inventory -> Bool

---- every server and device is the owner's, or on its vendor's cloud ----

def nodes_owned source · line 615 · raw

@ns:List<&2, 0x61eb9b926b7147b74881eab60781316b/domain/architecture/system/deployment/type.Node> -> @+inv:0x61eb9b926b7147b74881eab60781316b/domain/architecture/environment/inventory/type.Inventory -> Bool

def owned_nodes source · line 624 · raw

@+a:0x61eb9b926b7147b74881eab60781316b/domain/architecture/type.Architecture -> Bool

def firewall_typed source · line 629 · raw

@nd:0x61eb9b926b7147b74881eab60781316b/domain/architecture/system/deployment/nix_darwin/type.NixDarwin -> Bool

---- every nix-darwin node: its serve ports are distinct, its services and serves run what it hosts, a container on it is on the tailnet exactly when it is served, and its listeners belong to something ----

def node_keys source · line 634 · raw

@ns:List<&2, 0x61eb9b926b7147b74881eab60781316b/domain/architecture/system/deployment/type.Node> -> List<&2, String>

def darwin_ok source · line 643 · raw

@p:0x61eb9b926b7147b74881eab60781316b/domain/architecture/system/deployment/type.Platform -> @+ins:List<&2, String> -> @+a:0x61eb9b926b7147b74881eab60781316b/domain/architecture/type.Architecture -> Bool

def darwin_nodes_ok source · line 651 · raw

@ns:List<&2, 0x61eb9b926b7147b74881eab60781316b/domain/architecture/system/deployment/type.Node> -> @+a:0x61eb9b926b7147b74881eab60781316b/domain/architecture/type.Architecture -> Bool

def nix_darwin_ok source · line 660 · raw

@+a:0x61eb9b926b7147b74881eab60781316b/domain/architecture/type.Architecture -> Bool