Council Rank
Council Rank is what a character has become: the rank itself, the level in each activity, the research unlocked, and the perks in effect. It all hangs off the character, and all of it is readable.
Reading the rank and the levels
Section titled “Reading the rank and the levels”XP lives on the character, but a level is a judgement — it depends on the game’s thresholds, not on the raw number alone. The progression read does the join for you:
import { getCharacterProgressionForProfile } from '@aephia/atlas-kit/identity';
const progression = await getCharacterProgressionForProfile( ctx, profileAddress,);
progression.xp.councilRank.level; // the account-wide rankprogression.xp.pilot.level; // one activity categoryEvery category — councilRank, pilot, mining, crafting, building,
combat, dataRunner, dailyXp — carries earned, spent, and level,
and progression.xpDefinitions holds the thresholds the levels were judged
against, so you can also render “how far to the next one”.
The research tree
Section titled “The research tree”The catalog is game data — the same for everyone, independent of any character:
import { getResearchCatalog } from '@aephia/atlas-kit/identity';
const catalog = await getResearchCatalog(ctx);const node = catalog.nodes[0];Each node lists what it costs (XP from specific categories at minimum levels,
ATLAS, sometimes resources) and — the part that matters — node.modifier:
the perk it grants when unlocked.
What a character has unlocked
Section titled “What a character has unlocked”The character’s side of research is on the character itself:
const unlocked = character.modifiers.unlockedNodes;const levels = character.modifiers.nodeLevels;And the sum of everything in effect — every unlocked perk applied — is one bundle of values:
const inEffect = character.modifiers.values;
inEffect.fleetSize; // how many fleets this character may fieldinEffect.warpSpeedModifier;inEffect.craftingEfficiencyModifier;This is the answer to “can this player add another fleet”: compare
character.modifiers.values.fleetSize against character.counts.fleets. The
same counts object tracks claim stakes and crafting habs.
Gotchas
Section titled “Gotchas”Levels are derived, not stored. The raw XP is on the character; the level comes from judging it against the game’s thresholds. Use the progression read rather than inventing your own cutoffs.
Earned and spent are different numbers. Research costs XP, so a category shows both what was ever earned and what has been spent from it. A level is about earning; affordability is about what is left.
The catalog carries no character state. getResearchCatalog is
deliberately character-free. Whether a node is unlocked lives on the
character’s modifiers, not on the catalog.
Reference
Section titled “Reference”identity— every export in this entry- You — the chain that leads to the character
- Crafting habs and claim stakes — two of the things ranks unlock