Skip to content

release 0.2.3#54

Merged
matt-beanland merged 14 commits into
mainfrom
dev
May 23, 2026
Merged

release 0.2.3#54
matt-beanland merged 14 commits into
mainfrom
dev

Conversation

@matt-beanland
Copy link
Copy Markdown
Collaborator

No description provided.

0.2.3 — adopt diffo 0.4.1 changes, BaseCharacteristic auto-actions, a…
* AVC inherits CVC via :cvlan (single-hop) and NniGroup via [:cvlan, :svlan] (two-hop) — singular
* CVC inherits NniGroup via :svlan; new :metrics characteristic with avcs_count, avcs_total_bandwidth
* NniGroup new :metrics with cvcs/nnis counts and totals, plus utilization
* NniGroup new :nnis calc — brings up each comprised NNI's typed value via :contains relationship
* New InheritedCharacteristicViaAssignment (renamed) and InheritedCharacteristicViaRelationship sibling calcs
* BandwidthProfile.downstream/1 maps profile atoms to Mbps
* 3 new tests, 52/52 pass
* NTD :unis calc — reverse-inherits each assigned UNI's typed value via :port
* ReverseInheritedCharacteristic extended with thing: filter (source-side principle)
* New test/nbn/show_neo4j_test.exs — sync, non-sandboxed exploration module that builds the NBN graph in real Neo4j for browser inspection. Both prior :show_json tests moved here and re-tagged :show_neo4j
* DataCase reverted to its original shape — sandbox isolates without needing per-module wipes
* 1 new sandboxed test, 53/53 pass
* PRI single-hop avc/uni via :owns relationship; two-hop cvc/ntd via :owns then assignment
* InheritedCharacteristicViaRelationship extended with then_via: for mixed paths
* 1 new sandboxed test, 1 new show_neo4j exploration test, 54/54 pass
Convention refinement across PRs 1-3: aliases on assignments and on PRI's
owns relationships now identify the related resource each consumer is
part of (its domain role), not the slot/thing being received.

* avc sets :cvc, cvc sets :nni_group, uni sets :ntd on their assignments
* pri's owns relationships aliased :circuit (AVC) and :port (UNI)
* inheritance walks updated to follow the new aliases
* pool/metrics aggregations unaffected (still filter by `thing`)
* memories and moduledoc examples revised
Match the NBN convention from #49: alias on the consumer's assignment
names the upstream related resource it's part of, not the slot/thing
being received.

* Card sets :shelf on its slot assignment (was :slot)
* Path sets :card on its port assignment (was :port)
* Card.shelf walks via [:shelf]; Card.slot filters alias :shelf
* Path.card walks via [:card]; Path.shelf via [:card, :shelf]; Path.port filters alias :card
* Shelf.cards filters alias :shelf (was :slot)
* ShelfTotalPorts filters alias :shelf
* Tests updated; 54/54 pass
* removed direct :ash_json_api dep, the AshJsonApi.Domain extension,
  the json_api do ... routes block on Nbn, and json_api blocks /
  AshJsonApi.Resource extensions on all NBN resources
* deleted lib/nbn/api_router.ex
* router now serves /catalog + /mcp only; everything else 404s
* MCP becomes the only externally-callable surface
* 54/54 tests pass
* new Mix.Tasks.Gen.ApiDocs walks each domain's resource_references and
  emits a markdown table per resource — function, action, args, purpose
* filters behaviour-injected :specified_by/:features/:characteristics
* type labels prettified (Ash.Type.Struct → struct, etc.)
* SPDX headers baked into the generated template (REUSE-compliant
  across regenerations)
* generated documentation/domains/_access_api.md (5 resources)
* generated documentation/domains/_nbn_api.md (8 resources)
* documentation/domains/access.md — narrative tour of Access:
  resources, topology, inheritance pattern, scenario, pointer to
  _access_api.md and Provider (the "what's underneath" lift)
* documentation/domains/diffo_example_access.livemd — runnable
  end-to-end scenario through the code-interface (no JSON:API)
* mix.exs — both registered as ExDoc extras under Domains
* documentation/domains/provider.md — short lift-the-lid page that
  names the Provider primitives used by Access (Specification,
  Instance, Characteristic, Pool, Assignment, Relationship, Feature,
  Place, Party, state machine), explains the TMF JSON encoder, and
  points at diffo's own livebooks for the deep dive
* mix.exs — registered as an extra
* documentation/domains/nbn.md — merged technical content into the
  existing flavor page; dropped Perentie framing; kept the RSP
  spirit-animal table; added topology / inheritance / metrics map
  and scenario walk-through; linked to _nbn_api.md
* documentation/domains/diffo_example_nbn.livemd — rewritten against
  the current code-interface and #49 alias convention; removed the
  broken mine_* / :isAssigned legacy and the JSON:API section;
  added inheritance + metrics demonstrations
…tation

51 livebook and improve documentation
@matt-beanland matt-beanland merged commit c617cad into main May 23, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant