near-v-framework Releases (10): 0.7.0.0 0x1fc67b41fabeabde819cdaa647758be1 invalid https://jend.leeeet.dev/files.txt?path=near-v-framework@0.7.0.0 expected a fresh constructor name (duplicate declaration: Text) At https://jend.leeeet.dev/read.txt?path=near-v-framework@0.7.0.0/domain/architecture/system/release/plugin/claude/type.bend&start_line=15, https://jend.leeeet.dev/read.txt?path=near-v-framework@0.7.0.0/general/markup/type.bend&start_line=11. Files that do not load: domain/architecture/LAWS.bend, domain/architecture/PROOF.bend, domain/architecture/ops.bend, domain/architecture/system/deployment/launchd/effects.bend, domain/architecture/system/deployment/launchd/ops.bend and 16 more. 0.6.0.0 0x240dd78ab0879c4e226cf7dacf530ba1 invalid https://jend.leeeet.dev/files.txt?path=near-v-framework@0.6.0.0 expected a fresh constructor name (duplicate declaration: Text) At https://jend.leeeet.dev/read.txt?path=near-v-framework@0.6.0.0/domain/architecture/system/release/plugin/claude/type.bend&start_line=15, https://jend.leeeet.dev/read.txt?path=near-v-framework@0.6.0.0/general/markup/type.bend&start_line=11. Files that do not load: domain/architecture/LAWS.bend, domain/architecture/PROOF.bend, domain/architecture/ops.bend, domain/architecture/system/deployment/launchd/effects.bend, domain/architecture/system/deployment/launchd/ops.bend and 16 more. 0.5.1.0 0x61eb9b926b7147b74881eab60781316b invalid https://jend.leeeet.dev/files.txt?path=near-v-framework@0.5.1.0 expected a fresh constructor name (duplicate declaration: Text) At https://jend.leeeet.dev/read.txt?path=near-v-framework@0.5.1.0/domain/architecture/system/release/plugin/claude/type.bend&start_line=15, https://jend.leeeet.dev/read.txt?path=near-v-framework@0.5.1.0/general/markup/type.bend&start_line=11. Files that do not load: domain/architecture/LAWS.bend, domain/architecture/PROOF.bend, domain/architecture/ops.bend, domain/architecture/system/deployment/launchd/effects.bend, domain/architecture/system/deployment/launchd/ops.bend and 16 more. 0.5.0.0 0x883ca728254a5be013e521d06e7794c7 invalid https://jend.leeeet.dev/files.txt?path=near-v-framework@0.5.0.0 expected a fresh constructor name (duplicate declaration: Text) At https://jend.leeeet.dev/read.txt?path=near-v-framework@0.5.0.0/domain/architecture/system/release/plugin/claude/type.bend&start_line=15, https://jend.leeeet.dev/read.txt?path=near-v-framework@0.5.0.0/general/markup/type.bend&start_line=11. Files that do not load: domain/architecture/LAWS.bend, domain/architecture/PROOF.bend, domain/architecture/ops.bend, domain/architecture/system/deployment/launchd/effects.bend, domain/architecture/system/deployment/launchd/ops.bend and 16 more. 0.4.0.0 0xc4f31b1cf377fad1ed5191443ddd1c20 indexed https://jend.leeeet.dev/files.txt?path=near-v-framework@0.4.0.0 0.3.0.2 0x3ffc69d4b5da64782dbe50fda425aa0c unindexed https://jend.leeeet.dev/files.txt?path=near-v-framework@0.3.0.2 0.3.0.1 0x0826261f6dc5a61da47ff8908a941ce1 unindexed https://jend.leeeet.dev/files.txt?path=near-v-framework@0.3.0.1 0.3.0.0 0x635d6b0e0ec6a1b1f1319bf06aa496d9 unindexed https://jend.leeeet.dev/files.txt?path=near-v-framework@0.3.0.0 0.2.0.0 0xc13c365900e26112e0e544022d18fe0b unindexed https://jend.leeeet.dev/files.txt?path=near-v-framework@0.2.0.0 0.1.0.0 0x0bae9aeb11ebfcadb010bbe6e89fbbff unindexed https://jend.leeeet.dev/files.txt?path=near-v-framework@0.1.0.0 Definitions (722, 1 to 100 shown): LAWS.first_key_is_system (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/LAWS.bend&name=first_key_is_system) # LAW: an architecture's first key is its system's law first_key_is_system: for +a: A.Architecture {RO.first(O.keys(a)) == O.system_key(a) : String} Type.Category (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/category/type.bend&name=Category) # What a container or an outside system is. Client: the app, on a user's device or served to it. # DataApi: answers queries on records and changes them. Harness: an agent harness, the loop around a # model. Proxy: forwards connections, adding what the other side lacks (TLS, authentication). # ModelApi: answers model calls. Cli: a command a person runs. Worker: moves data between data APIs, # with no API of its own. Library: code other programs import. type Category is Data: Client{} DataApi{} Harness{} Proxy{} ModelApi{} … Type.Capability (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/category/type.bend&name=Capability) # What it provides. Hosting: serving the app itself (its HTML and scripts). Observability: receiving # errors, traces and logs. type Capability is Data: Hosting{} Realtime{} BlobStore{} Observability{} Ops.same_identity (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/environment/agreement/ops.bend&name=same_identity) def same_identity(+a: String, +b: String) -> Bool: Ops.in_domain (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/environment/agreement/ops.bend&name=in_domain) def in_domain(+identity: String, +domain: String) -> Bool: Ops.keep_if (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/environment/agreement/ops.bend&name=keep_if) def keep_if(c: Bool, x: String, rest: List<&2, String>) -> List<&2, String>: Ops.outside.go (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/environment/agreement/ops.bend&name=outside.go) # ---- the people: identities in the organization's directory domain ---- def outside.go(xs: List<&2, G.Person>, +domain: String) -> List<&2, String>: Ops.outside_domain (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/environment/agreement/ops.bend&name=outside_domain) # The people's identities that are not in the organization's directory domain. def outside_domain(a: G.Agreement) -> List<&2, String>: Ops.people_in_domain (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/environment/agreement/ops.bend&name=people_in_domain) # Every person's identity is in the organization's directory domain. def people_in_domain(a: G.Agreement) -> Bool: Ops.person_of.go (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/environment/agreement/ops.bend&name=person_of.go) # The key of the person with this identity (case insensitive), or "" when none has it. def person_of.go(xs: List<&2, G.Person>, +identity: String) -> String: Ops.person_of (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/environment/agreement/ops.bend&name=person_of) def person_of(a: G.Agreement, +identity: String) -> String: Ops.unknown.go (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/environment/agreement/ops.bend&name=unknown.go) # ---- the identities in use ---- def unknown.go(ids: List<&2, String>, +xs: List<&2, G.Person>) -> List<&2, String>: Ops.unknown_identities (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/environment/agreement/ops.bend&name=unknown_identities) # The identities in use that are none of the agreement's people. def unknown_identities(ids: List<&2, String>, a: G.Agreement) -> List<&2, String>: Ops.identities_known (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/environment/agreement/ops.bend&name=identities_known) # Every identity actually in use is one of the agreement's people. def identities_known(ids: List<&2, String>, a: G.Agreement) -> Bool: Ops.granted.go (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/environment/agreement/ops.bend&name=granted.go) # ---- grants ---- def granted.go(xs: List<&2, G.Grant>, +person: String, +scope: String) -> List<&2, String>: Ops.granted (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/environment/agreement/ops.bend&name=granted) # What `person` is granted on `scope`; [] when nothing is granted there. def granted(a: G.Agreement, +person: String, +scope: String) -> List<&2, String>: Type.Person (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/environment/agreement/type.bend&name=Person) # One of the organization's people, by their identity in its directory. type Person is Data: Person{key: String, identity: String} Type.Grant (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/environment/agreement/type.bend&name=Grant) # What a person may do in a scope (an Azure resource group): action patterns; none means no access. type Grant is Data: Grant{person: String, scope: String, actions: List<&2, String>} Type.Budget (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/environment/agreement/type.bend&name=Budget) type Budget is Data: Budget{person: String, what: String, amount: Nat, unit: String} Type.Agreement (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/environment/agreement/type.bend&name=Agreement) # The agreement between the organization and its people: its directory domain, who they are, and # what each is granted and budgeted. type Agreement is Data: Agreement{domain: String, people: List<&2, Person>, grants: List<&2, Grant>, budgets: List<&2, Budget>} Type.Constraint (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/environment/constraint/type.bend&name=Constraint) # What the system must satisfy without designing: it is open source; it runs on a provider's cloud. type Constraint is Data: OpenSource{} RunsOn{provider: String} Type.External (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/environment/external/type.bend&name=External) # Another organization's system: what it is and provides, who is behind it, the libraries its callers # use (its SDK), and what it does with the system; never its insides. type External is Data: External{key: String, name: String, description: String, category: K.Category, capabilities: List<&2, K.Capability>, vendors: List<&2, String>, libraries: List<&2, String>, uses: List<&2, Rel.Relationship>} Ops.owns.go (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/environment/inventory/ops.bend&name=owns.go) def owns.go(xs: List<&2, I.Device>, +key: String, +name: String) -> Bool: Ops.owns (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/environment/inventory/ops.bend&name=owns) # Whether the owner has the device with this key, under this name. def owns(inv: I.Inventory, +key: String, +name: String) -> Bool: Ops.cloud_ok (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/environment/inventory/ops.bend&name=cloud_ok) # Whether this provider is the owner's vendor's cloud. def cloud_ok(inv: I.Inventory, +provider: String) -> Bool: Type.Device (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/environment/inventory/type.bend&name=Device) # A physical device the owner has. type Device is Data: Device{key: String, name: String, platform: String} Type.Vendor (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/environment/inventory/type.bend&name=Vendor) # The owner's cloud vendor. type Vendor is Data: Vendor{name: String, cloud: String} Type.Inventory (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/environment/inventory/type.bend&name=Inventory) # What the owner has: its vendor and its devices. type Inventory is Data: Inventory{vendor: Vendor, devices: List<&2, Device>} Type.OrgKind (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/environment/party/type.bend&name=OrgKind) type OrgKind is Data: Business{} Nonprofit{} Community{} Type.Party (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/environment/party/type.bend&name=Party) # Someone who owns or uses a system: a person, an organization, or a team inside one (named by `of`). type Party is Data: Human{key: String, name: String, description: String, uses: List<&2, Rel.Relationship>} Organization{key: String, name: String, description: String, kind: OrgKind, uses: List<&2, Rel.Relationship>} Team{key: String, name: String, description: String, of: String, uses: List<&2, Rel.Relationship>} Type.Environment (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/environment/type.bend&name=Environment) # What a system is designed against: who uses it, the systems around it, its constraints, what its # owner has, and the agreement with the people who work on it. type Environment is Data: Environment{parties: List<&2, P.Party>, externals: List<&2, X.External>, constraints: List<&2, K.Constraint>, inventory: I.Inventory, agreement: G.Agreement} Ops.uses_edges (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/ops.bend&name=uses_edges) # ---- the architecture as a compound graph: the system's tree, the environment's leaves, and every # element's relationships as edges from it ---- def uses_edges(+src: String, us: List<&2, Rel.Relationship>) -> List<&2, E.Edge>: Ops.language_name (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/ops.bend&name=language_name) def language_name(l: Co.Language) -> String: Ops.technology (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/ops.bend&name=technology) # A container's technology, as drawn: its frameworks and languages, else its vendors. def technology(+vs: List<&2, String>, +fs: List<&2, String>, +ls: List<&2, String>) -> String: Ops.component_roses (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/ops.bend&name=component_roses) def component_roses(cs: List<&2, Co.Component>) -> List<&2, R.Rose>: Ops.component_edges (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/ops.bend&name=component_edges) def component_edges(cs: List<&2, Co.Component>) -> List<&2, E.Edge>: Ops.container_roses (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/ops.bend&name=container_roses) def container_roses(cs: List<&2, Ct.Container>) -> List<&2, R.Rose>: Ops.container_edges (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/ops.bend&name=container_edges) def container_edges(cs: List<&2, Ct.Container>) -> List<&2, E.Edge>: Ops.party_rose (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/ops.bend&name=party_rose) def party_rose(p: P.Party) -> R.Rose: Ops.party_edges (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/ops.bend&name=party_edges) def party_edges(p: P.Party) -> List<&2, E.Edge>: Ops.parties_roses (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/ops.bend&name=parties_roses) def parties_roses(ps: List<&2, P.Party>) -> List<&2, R.Rose>: Ops.parties_edges (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/ops.bend&name=parties_edges) def parties_edges(ps: List<&2, P.Party>) -> List<&2, E.Edge>: Ops.external_roses (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/ops.bend&name=external_roses) def external_roses(xs: List<&2, X.External>) -> List<&2, R.Rose>: Ops.external_edges (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/ops.bend&name=external_edges) def external_edges(xs: List<&2, X.External>) -> List<&2, E.Edge>: Ops.with_env (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/ops.bend&name=with_env) def with_env(sys: R.Rose, +cs: List<&2, Ct.Container>, env: En.Environment) -> C.Compound: Ops.to_compound (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/ops.bend&name=to_compound) def to_compound(a: A.Architecture) -> C.Compound: Ops.system (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/ops.bend&name=system) # ---- looking things up ---- def system(a: A.Architecture) -> S.System: Ops.system_key (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/ops.bend&name=system_key) def system_key(a: A.Architecture) -> String: Ops.containers (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/ops.bend&name=containers) def containers(a: A.Architecture) -> List<&2, Ct.Container>: Ops.deployment (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/ops.bend&name=deployment) def deployment(a: A.Architecture) -> D.Deployment: Ops.deployment_nodes (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/ops.bend&name=deployment_nodes) def deployment_nodes(d: D.Deployment) -> List<&2, D.Node>: Ops.nodes (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/ops.bend&name=nodes) # The machines, nested. def nodes(a: A.Architecture) -> List<&2, D.Node>: Ops.keys (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/ops.bend&name=keys) def keys(a: A.Architecture) -> List<&2, String>: Ops.container_keys (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/ops.bend&name=container_keys) def container_keys(cs: List<&2, Ct.Container>) -> List<&2, String>: Ops.component_keys (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/ops.bend&name=component_keys) def component_keys(cs: List<&2, Co.Component>) -> List<&2, String>: Ops.all_component_keys (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/ops.bend&name=all_component_keys) # Every component key in the system. def all_component_keys(cs: List<&2, Ct.Container>) -> List<&2, String>: Ops.components_of (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/ops.bend&name=components_of) # The components inside one container. def components_of(+k: String, cs: List<&2, Ct.Container>) -> List<&2, String>: Ops.environment_keys (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/ops.bend&name=environment_keys) def environment_keys(a: A.Architecture) -> List<&2, String>: Ops.instances (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/ops.bend&name=instances) # ---- well formed: keys are unique, every relationship and every instance names something that exists ---- def instances(ns: List<&2, D.Node>) -> List<&2, String>: Ops.all_listed (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/ops.bend&name=all_listed) def all_listed(xs: List<&2, String>, +ks: List<&2, String>) -> Bool: Ops.compound_ok (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/ops.bend&name=compound_ok) def compound_ok(+c: C.Compound) -> Bool: Ops.well_formed (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/ops.bend&name=well_formed) def well_formed(+a: A.Architecture) -> Bool: Ops.ours (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/ops.bend&name=ours) # ---- only our own containers are opened up into components ---- def ours(o: Ct.Ownership) -> Bool: Ops.components_ours (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/ops.bend&name=components_ours) def components_ours(cs: List<&2, Ct.Container>) -> Bool: Ops.private (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/ops.bend&name=private) # ---- on a server, everything is reachable only from the machine itself or over the tailnet ---- def private(e: Ct.Exposure) -> Bool: Ops.exposure_private (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/ops.bend&name=exposure_private) def exposure_private(+k: String, cs: List<&2, Ct.Container>) -> Bool: Ops.all_private (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/ops.bend&name=all_private) def all_private(ins: List<&2, String>, +cs: List<&2, Ct.Container>) -> Bool: Ops.is_server (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/ops.bend&name=is_server) def is_server(r: D.Role) -> Bool: Ops.nodes_private (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/ops.bend&name=nodes_private) def nodes_private(ns: List<&2, D.Node>, +cs: List<&2, Ct.Container>) -> Bool: Ops.servers_private (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/ops.bend&name=servers_private) def servers_private(+a: A.Architecture) -> Bool: Ops.open_source_required (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/ops.bend&name=open_source_required) # ---- open source: a system its environment requires to be open source publishes from a public repository ---- def open_source_required(ks: List<&2, K.Constraint>) -> Bool: Ops.open_source (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/ops.bend&name=open_source) def open_source(a: A.Architecture) -> Bool: Ops.is_device (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/ops.bend&name=is_device) # ---- where each key runs: the containers on server nodes and on device nodes ---- def is_device(r: D.Role) -> Bool: Ops.keep_all (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/ops.bend&name=keep_all) def keep_all(c: Bool, xs: List<&2, String>, rest: List<&2, String>) -> List<&2, String>: Ops.on_servers (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/ops.bend&name=on_servers) def on_servers(ns: List<&2, D.Node>) -> List<&2, String>: Ops.on_devices (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/ops.bend&name=on_devices) def on_devices(ns: List<&2, D.Node>) -> List<&2, String>: Ops.home (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/ops.bend&name=home) # The container a key belongs to: itself, or the one its component sits in, else the key itself. def home(+k: String, cs: List<&2, Ct.Container>) -> String: Ops.exposure_of (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/ops.bend&name=exposure_of) def exposure_of(+k: String, cs: List<&2, Ct.Container>) -> Ct.Exposure: Ops.is_tailnet (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/ops.bend&name=is_tailnet) def is_tailnet(e: Ct.Exposure) -> Bool: Ops.is_local (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/ops.bend&name=is_local) def is_local(e: Ct.Exposure) -> Bool: Ops.edges (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/ops.bend&name=edges) def edges(a: A.Architecture) -> List<&2, E.Edge>: Ops.via_tailnet (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/ops.bend&name=via_tailnet) # ---- a device reaches a server only over the tailnet ---- def via_tailnet(es: List<&2, E.Edge>, +cs: List<&2, Ct.Container>, +servers: List<&2, String>, +devices: List<&2, String>) -> Bool: Ops.devices_via_tailnet (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/ops.bend&name=devices_via_tailnet) def devices_via_tailnet(+a: A.Architecture) -> Bool: Ops.reached (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/ops.bend&name=reached) # ---- on a server, a container is on the tailnet exactly when a device reaches it, else local ---- def reached(+k: String, es: List<&2, E.Edge>, +cs: List<&2, Ct.Container>, +devices: List<&2, String>) -> Bool: Ops.follows_reach (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/ops.bend&name=follows_reach) def follows_reach(r: Bool, e: Ct.Exposure) -> Bool: Ops.reach_ok (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/ops.bend&name=reach_ok) def reach_ok(ks: List<&2, String>, +a: A.Architecture) -> Bool: Ops.exposure_follows_reach (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/ops.bend&name=exposure_follows_reach) def exposure_follows_reach(+a: A.Architecture) -> Bool: Ops.cap_eq (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/ops.bend&name=cap_eq) # ---- capabilities: who provides each, and how many do ---- def cap_eq(a: K2.Capability, b: K2.Capability) -> Bool: Ops.has_cap (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/ops.bend&name=has_cap) def has_cap(+want: K2.Capability, cs: List<&2, K2.Capability>) -> Bool: Ops.one_if (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/ops.bend&name=one_if) def one_if(b: Bool) -> Nat: Ops.container_providers (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/ops.bend&name=container_providers) def container_providers(+want: K2.Capability, cs: List<&2, Ct.Container>) -> List<&2, String>: Ops.external_providers (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/ops.bend&name=external_providers) def external_providers(+want: K2.Capability, xs: List<&2, X.External>) -> List<&2, String>: Ops.externals (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/ops.bend&name=externals) def externals(a: A.Architecture) -> List<&2, X.External>: Ops.providers (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/ops.bend&name=providers) # The containers and outside systems that provide a capability. def providers(+want: K2.Capability, +a: A.Architecture) -> List<&2, String>: Ops.provided (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/ops.bend&name=provided) def provided(+want: K2.Capability, +a: A.Architecture) -> Nat: Ops.private_hosts (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/ops.bend&name=private_hosts) # How many containers host the app privately: Hosting, on the tailnet. def private_hosts(cs: List<&2, Ct.Container>) -> Nat: Ops.private_hosting (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/ops.bend&name=private_hosting) def private_hosting(+a: A.Architecture) -> Nat: Ops.is_data_api (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/ops.bend&name=is_data_api) def is_data_api(c: K2.Category) -> Bool: Ops.data_apis (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/ops.bend&name=data_apis) # The system's own data APIs. "Exactly one" means one store. def data_apis(cs: List<&2, Ct.Container>) -> Nat: Ops.own_data_apis (https://jend.leeeet.dev/definition.txt?path=near-v-framework@0.4.0.0/domain/architecture/ops.bend&name=own_data_apis) def own_data_apis(+a: A.Architecture) -> Nat: More: https://jend.leeeet.dev/packages/near-v-framework.txt?definitions_offset=100