ident
All repositories: gitoria
2.6 KB
\* hl:data — NEED EVALUATION, the one implementation every realm edge uses.A component's need is a member whose initializer calls a provider class(SPEC.md §9.2); the graph publishes each as { key, provider, method, args,project }. Evaluating one is: resolve the arguments against the caller'scontext — a folded constant, a route group's member, or a `session`field — call the provider method, and take the projected field. hl:web didthis per request and per push; hl:ipc does it per peer push. It lived inhl:web until the second edge existed (2026-09-01), which is when "shared"stopped being a word and became this plugin. *\\* Every need of one component, against the provider instances of the callingedge. One memo per evaluation: two needs fed by the same call cost ONE call. *\runNeeds(Hybrid needs \\ the graph's need list for the component&providers \\ class name → provider instance (the edge module's)¶ms \\ route groups; {} for a peer that matched no route&sdata \\ the session bag; {} for a peer with no session) {let out = {}let memo = {}for (need of needs) {out[need.key] = runNeed(&need, &providers, ¶ms, &sdata, &memo)}return out}\* One need: the value its MEMBER holds. `need.project` is the field taken offthe returned hybrid ("" = the member IS the return value). A provider readanswers for null arguments (the 074 contract), so an anonymous callerevaluates the same needs and simply sees nothing of anyone. *\runNeed(&need, &providers, ¶ms, &sdata, &memo) {let provider = providers[need.provider]if (provider == null) {return null}let args = []for (a of need.args) {if (a.group != null) {args[] = params[a.group]} else if (a.session != null) {if (a.session.length == 0) {args[] = sdata} else {args[] = sdata[a.session]}} else {args[] = a.value}}let ck = need.provider + "." + need.method + "(" + JSON.stringify(args) + ")"// a call that ANSWERED null is simply not memoized — repeating it is correctlet result = memo[ck]if (result == null) {result = callProvider(&provider, need.method, &args)memo[ck] = result}if (need.project.length == 0) {return result}if (result == null) {return null}return result[need.project]}// The provider call itself — the method name is DATA, so the call is computed.callProvider(&provider, method, &args) {if (args.length == 0) {return provider[method]()}if (args.length == 1) {return provider[method](args[0])}if (args.length == 2) {return provider[method](args[0], args[1])}return provider[method](args[0], args[1], args[2])}
Branches
- mainmain branch
Latest commits
- d2e7f91bident mission 009 (2/4): one lib file per topic (login, accounts, identities, apps, invites, selector, notify + helpers, util), function routes as thin wrappers in lib/api.hl, project.hl = the map; same outputmre
- 91017164ident mission 009 (1/4): file moves — the root .hl files into lib/ (api.hl → lib/api-helpers.hl), styles.hl → components/styles.hl; imports adjusted, no other changemre
- f8bdcbc2ident: Hybriel master 06617221 (plugin allocators 3a781359 + 413f60e4, mpackdb 2cb7ae5e, http1 773de63e); all gates greenmre
- ff78726cident: Hybriel master 190aa11d (fc838894 GC correctness, #127, #126 closure scopes); gates all greenmre
- a3a7d21aident: Hybriel master 8efba065 (#126 GC by bytes, #48 lambda params copy); session-writing lambdas take &sessionmre
- 98226b41antcolony#40: mission references point to the moved missionsmre
- ff805b9aantcolony#40: history (LOG.md), worker briefs (missions/) and reports moved here from antcolony, numbered per project; old numbers in antcolony docs/mission-map.mdmre
- 51a7bcdfident: Hybriel master 73267707 (#122); /code uses the new page() signature; pending address passed as parameter; once-checksmre
- 836f644fident#24: installable app (manifest, service worker, data-free offline /start), own iconmre
- 8bebbbf2deploy.sh: back up live storage/.sessions/.env before every deploy (newest 5 kept)mre
- cc063ea2deploy.sh: never send .git or .gitignore to Byrodinmre
- 81b15b7bState of 2026-09-27, before the move to gitoriamre