Reference objects
Every astra text and each of its parts is a Famulus reference object (famulus-ref/2, namespace astra; vocabulary 2.4.0).
| address | object |
|---|---|
fr:astra |
the namespace: the texts on this node, by kind |
fr:astra/solar-eccentric |
a model |
fr:astra/solar-eccentric/kappa_bar · /e · /S · /c · /p1 |
its kinematic variable, a parameter symbol, a constructed object, an observable, a stated proposition |
fr:astra/solar-eccentric.ptolemy · /e |
a parametrisation; a value with its source |
fr:astra/solar-eccentric-epicyclic · /Ecc.S |
a superposition; an object of one of its members |
fr:astra/solar-equivalence-equal-radii · /h1 · /d6 · /conclusion |
a derivation; a given, a step, the conclusion |
fr:astra/solar-equation-of-centre/c_max |
a computed quantity with the reported value and the verdict |
fr:astra/solar-fig-1-2 · ~svg · ~animation |
a figure and its views |
fr:astra/<id>~sheet · ~source · ~check |
the YAML sheet, the astra text, the check of any text |
Former names resolve: fr:astra/solar-equivalence, solar-proportional, solar-eccentric-epicyclic-proportional and solar-complete answer with the object they now are and say alias_of.
Resolution
famulus-astra fr fr:astra/solar-equivalence-equal-radii/d6answers from the workspace andbuild/<id>/(building first if the text is newer than its build).- The famulus-reference resolver on
:5135(/api/describe?ref=fr:astra/…, MCPfr_describe) delegatesastraaddresses tofamulus_astronomica.fr.describewhen the package is installed on the node, and otherwise answers with an explicit gap.
$ curl "$FAMULUS_REFERENCE/api/describe?ref=fr:astra/solar-equivalence-equal-radii/d6" # the reference service of the node
{"ref":"fr:astra/solar-equivalence-equal-radii/d6","kind":"astra_step","found":true,
"proposition":"parallel(line(O, Ecc.E), line(Epi.C, Ecc.S))","from":["d2","d5"],"by":"Elements I.33",
"status":"justified","binding":{"A":"O","B":"Epi.C","C":"Ecc.E","D":"Ecc.S"},
"degenerate_at":["kappa_bar = 0°","kappa_bar = 180°"], …}
Writing about a model
Because every part has an address, prose can say exactly what it speaks of: “by fr:astra/solar-equivalence-equal-radii/d6, OE is parallel to CS; the step is an instance of Elements I.33 and fails to apply at the apsides”. The sheet is the table such a passage refers to; the figure shows the step.
What changed in famulus-reference (10 Nov 2026)
spec/kinds.yaml 2.4.0: fr:astra/<text>[/<object>]; the grammar-level kind of a text is astra_text, the resolver names the kind (astra_model, astra_parametrisation, astra_superposition, astra_figure, astra_derivation) and of an object (astra_parameter, astra_variable, astra_object, astra_observable, astra_proposition, astra_value, astra_given, astra_step, astra_computation). Object names may be dotted (Ecc.S, arcs.e). ids.py and the TypeScript twin fr.ts follow; three test vectors were added; both suites pass. Backups: ~/Library/Application Support/claude-backups/2026-11-10-famulus-astronomica-refactor/famulus-reference/.