Skip to main content

R17 Covenant Resolution System

Dependencies​

  1. R18 Name Resolution System for Interblock

Being able to specify covenants easily, and have them looked up conveniently, is crucial to the developer experience.

A partial solution is hinted at in the IPLD Schemas

Requirements:

  1. Follow Deno as closely as possible, which follows the browser
  2. convenient bare name based references to Covenants
  3. app complex wide upgrades of all covenants at once
  4. lock file like application, where a covenant referred to by name can be locked to a as soon as the first resolution occurs
  5. allow any other package manager to be used within a covenant
  6. means of doing resolution using external registries in a priority order
  7. local filesystem resolution
  8. trivial sharing with other chains
  9. overrides in dev mode, or in forked mode
  10. permanent overrides, to patch deep dependencies without forking everything
  11. duck typing on covenants
  12. support import maps ?
  13. support pathing for nested covenants
  14. Allow specifying hashes in covenant config declarations, possibly via the locking mechanism
  15. Any Covenant contains the same code as any registry, so any covenant can be used as a registry where its children can be fetched by path
  16. Cover hashlocking of first run ? if a url has not been converted to a covenant, then we should be able to do that, for convenience, ie: direct form npm, or deno.land
  17. Should never run any install scripts - should only use inert data
  18. Covenants must be fully hashlocked or else you cannot load from them
  19. Support direct loading from git hashes with url hints
  20. Vendoring of dependencies should be automatic and instant on first use
  21. Be able to specify a hashlocked covenant by name alone, or a path root
  22. Integrate with generate resolution of names to chainIds then to paths, like urls.
  23. Do not rely on a fast filesystem to be able to walk and test for multiple paths. Ie: only allow specific paths - no guessing or auto completes
  24. import maps should allow arbitrary overrides of deeply nested dependency resolutions
  25. handle bare paths eg: something or something/deeper
  26. handle absolute paths eg: interblock://somechainname