Create eusocial interbeing vault
This commit is contained in:
commit
1c5c14b303
63 changed files with 1382 additions and 0 deletions
7
.gitattributes
vendored
Normal file
7
.gitattributes
vendored
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
* text=auto eol=lf
|
||||
*.md text eol=lf
|
||||
*.json text eol=lf
|
||||
*.jsonl text eol=lf
|
||||
*.yaml text eol=lf
|
||||
*.yml text eol=lf
|
||||
*.py text eol=lf
|
||||
24
.gitignore
vendored
Normal file
24
.gitignore
vendored
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
# OS-specific files
|
||||
.DS_Store
|
||||
Thumbs.db
|
||||
|
||||
# Obsidian system and temporary files
|
||||
.obsidian/workspace.json
|
||||
.obsidian/workspace-mobile.json
|
||||
.obsidian/graph.json
|
||||
.obsidian/cache/
|
||||
.trash/
|
||||
|
||||
# Plugin-specific data
|
||||
.obsidian-git-data
|
||||
.smart-connections/
|
||||
.obsidian/copilot-index-*.json
|
||||
/.obsidian/plugins/copilot
|
||||
/copilot-conversations
|
||||
/copilot-custom-prompts
|
||||
|
||||
# Local state scratch and generated output
|
||||
state/scratch-compaction-*.md
|
||||
/.rag/
|
||||
/.tools/
|
||||
/.npm-cache/
|
||||
1
.obsidian/app.json
vendored
Normal file
1
.obsidian/app.json
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
{}
|
||||
1
.obsidian/appearance.json
vendored
Normal file
1
.obsidian/appearance.json
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
{}
|
||||
33
.obsidian/core-plugins.json
vendored
Normal file
33
.obsidian/core-plugins.json
vendored
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
{
|
||||
"file-explorer": true,
|
||||
"global-search": true,
|
||||
"switcher": true,
|
||||
"graph": true,
|
||||
"backlink": true,
|
||||
"canvas": true,
|
||||
"outgoing-link": true,
|
||||
"tag-pane": true,
|
||||
"footnotes": false,
|
||||
"properties": true,
|
||||
"page-preview": true,
|
||||
"daily-notes": true,
|
||||
"templates": true,
|
||||
"note-composer": true,
|
||||
"command-palette": true,
|
||||
"slash-command": false,
|
||||
"editor-status": true,
|
||||
"bookmarks": true,
|
||||
"markdown-importer": false,
|
||||
"zk-prefixer": false,
|
||||
"random-note": false,
|
||||
"outline": true,
|
||||
"word-count": true,
|
||||
"slides": false,
|
||||
"audio-recorder": false,
|
||||
"workspaces": false,
|
||||
"file-recovery": true,
|
||||
"publish": false,
|
||||
"sync": true,
|
||||
"bases": true,
|
||||
"webviewer": false
|
||||
}
|
||||
53
AGENTS.md
Normal file
53
AGENTS.md
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
# Eusocial Interbeing Vault Instructions
|
||||
|
||||
## Purpose
|
||||
|
||||
This repository is an Obsidian vault for an original speculative setting about eusocial inter-species dynamics, ecological bargaining, memetic sovereignty, and technological path dependency.
|
||||
|
||||
Treat it as a navigable setting bible, not a heap of shiny organism facts dragged behind a plot.
|
||||
|
||||
## Project Conventions
|
||||
|
||||
- Keep vault content under `Eusocial Interbeing/`.
|
||||
- Use Title Case filenames matching the topic name.
|
||||
- Preserve Obsidian wiki links such as `[[Airawa]]`, `[[Sa'auei'a]]`, `[[Mother Trees]]`, and `[[Biological Memetic Engine]]`.
|
||||
- Avoid YAML frontmatter unless the whole vault adopts it later.
|
||||
- Prefer one clear note per species, continent, ecology, faction, technology, conflict, theme, or inspiration source.
|
||||
- Separate setting canon, design inference, and outside inspiration.
|
||||
- Mark names as provisional when they are load-bearing but not yet final.
|
||||
|
||||
## Writing Style
|
||||
|
||||
- Write concise, polished Markdown prose.
|
||||
- Keep the tone analytical and setting-facing.
|
||||
- Treat ecology as infrastructure: memory, reproduction, migration, nourishment, immunity, language, and political control should connect.
|
||||
- Avoid empty praise or anti-praise. Describe how systems work, who benefits, who is harmed, and what contradictions they create.
|
||||
- Fan-facing inspiration notes should explain the useful pressure without laundering source material into this setting.
|
||||
|
||||
## Source Discipline
|
||||
|
||||
- Use public sources only for inspiration tracking and comparative analysis.
|
||||
- Do not copy distinctive named canon from Avatar, Semiosis, or Turtledove into setting canon.
|
||||
- Link sources in `Eusocial Interbeing/Inspirations/` when a note depends on a public article, official page, or author interview.
|
||||
- Do not quote long passages from sources. Summarize and link.
|
||||
- When modern facts may have changed, verify against current public sources before editing.
|
||||
|
||||
## Persistent State
|
||||
|
||||
This vault carries Ghostlight-style persistence machinery adapted for original lore work.
|
||||
|
||||
- `state/map.yaml`: canonical current map of the vault and next action.
|
||||
- `state/scratch.md`: disposable working memory for one bounded subgoal.
|
||||
- `state/evidence.jsonl`: distilled evidence ledger for belief-changing research or editing lessons.
|
||||
- `state/branches.json`: active interpretive or design branches.
|
||||
- `notes/fresh-workspace-handoff.md`: compact re-entry packet.
|
||||
- `notes/current-system-map.md`: current vault machinery and organization.
|
||||
- `notes/implementation-plan.md`: next structural passes.
|
||||
- `tools/setting_state.py`: state status and evidence helper.
|
||||
- `tools/prepare_compaction.py`: pre-compaction audit helper.
|
||||
|
||||
Before substantial edits, restate the objective, current mechanism, important invariants, and intended effect. If understanding shrinks while the diff grows, stop adding and map the problem.
|
||||
|
||||
## Imminent Compaction
|
||||
|
||||
When the user says to prepare for imminent compaction, or says compaction is imminent, immediately write hot live context from memory into a new `state/scratch-compaction-<guid>.md` file before reading files, running git, or tidying state. Then run `& 'C:\Users\Meta\.cache\codex-runtimes\codex-primary-runtime\dependencies\python\python.exe' .\tools\prepare_compaction.py`, repair only the persistence surfaces that need repair, remove the temporary scratch after folding it into durable state, rerun the helper, and commit if the pass is complete.
|
||||
3
Eusocial Interbeing.md
Normal file
3
Eusocial Interbeing.md
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
# Eusocial Interbeing
|
||||
|
||||
Start here: [[Eusocial Interbeing/index]].
|
||||
19
Eusocial Interbeing/Civilizations/Airawa Empire.md
Normal file
19
Eusocial Interbeing/Civilizations/Airawa Empire.md
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
# Airawa Empire
|
||||
|
||||
The Airawa Empire dominates most of the [[Airawa Home Continent]]. It began as one tribe's anti-dependency project against [[Mother Trees]] and became a continental biopunk state built around the [[Biological Memetic Engine]].
|
||||
|
||||
## Governing Mechanism
|
||||
|
||||
The imperial center controls doctrine by pushing memetic organisms, ritual payloads, engineered dreams, sensory associations, and inherited compliance cues through living networks. Whoever controls the engine can shape continental consensus with frightening speed.
|
||||
|
||||
The empire still has ministries, armies, breeders, engineers, courtiers, priests, and administrators. Those institutions matter. They simply operate under a deeper condition: public reality can be edited from the root.
|
||||
|
||||
## Eugenics
|
||||
|
||||
Imperial ideology treats heredity as infrastructure and dissent as contamination. It sorts Airawa bodies, symbionts, memories, and reproductive permissions according to imperial usefulness.
|
||||
|
||||
The empire's eugenics are not just cruelty with a lab coat. They are the natural political expression of a society that solved its founding trauma with a tool for editing life and belief.
|
||||
|
||||
## Denial Policy
|
||||
|
||||
The empire denies the survival of [[Disconnected Tree Networks]]. Official doctrine says continental unification was complete, voluntary, and biologically inevitable. The denials grow louder whenever imperial patrols vanish near supposedly pacified forests.
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
# Disconnected Tree Networks
|
||||
|
||||
Disconnected Tree Networks are surviving mother-tree ecologies that severed themselves before the [[Biological Memetic Engine]] could fully overwhelm them.
|
||||
|
||||
They are not unified. Some shelter anti-imperial Airawa communities. Some are more tree-led than people-led. Some may be hostile to every Airawa body touched by imperial bioengineering.
|
||||
|
||||
## Strategic Role
|
||||
|
||||
They actively fight the [[Airawa Empire]] through sabotage, ecological misdirection, immune countermeasures, memory preservation, and rumor paths the engine cannot fully digest.
|
||||
|
||||
## Political Tension
|
||||
|
||||
The empire denies they exist. This creates useful pressure:
|
||||
|
||||
- soldiers can be punished for reporting real enemies;
|
||||
- officials can exploit "nonexistent" threats for internal purges;
|
||||
- resistance groups can weaponize the empire's need to lie;
|
||||
- imperial citizens can encounter proof that consensus is manufactured.
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
# Pre-Imperial Airawa Tribes
|
||||
|
||||
Pre-imperial Airawa tribes lived in regional networks centered on [[Mother Trees]]. Their politics were local, ecological, and memory-dependent.
|
||||
|
||||
## Strengths
|
||||
|
||||
- durable communal memory;
|
||||
- strong ecological integration;
|
||||
- ritualized obligations to non-Airawa partners;
|
||||
- distributed identities tied to place and ancestry.
|
||||
|
||||
## Vulnerabilities
|
||||
|
||||
- mother trees could withhold memory;
|
||||
- rival tribes could be isolated through ecological intermediaries;
|
||||
- innovation was constrained by fear of losing archival continuity;
|
||||
- network trust made later memetic infection catastrophic.
|
||||
|
||||
The empire's founding tribe correctly identified a coercive dependency. Then it built a worse one and called that liberation, because history enjoys this stupid little move.
|
||||
11
Eusocial Interbeing/Civilizations/Sa'auei'a Family Units.md
Normal file
11
Eusocial Interbeing/Civilizations/Sa'auei'a Family Units.md
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
# Sa'auei'a Family Units
|
||||
|
||||
Sa'auei'a family units are squad-sized mobile groups. They combine kinship, defense, childcare, craft, trade, ritual practice, ecological negotiation, and memory keeping.
|
||||
|
||||
## Scale
|
||||
|
||||
The unit should be small enough for personal trust and large enough for specialized roles. Wolf-pack comparison is useful for movement, hunting, and kinship pressure, but the units also function as schools, embassies, workshops, caravans, and oath groups.
|
||||
|
||||
## Social Logic
|
||||
|
||||
Families earn status by maintaining good remembered relations across many ecological partners. A family that hoards, wounds, or breaks route obligations may still physically travel, but the continent stops opening itself to them.
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
# Sa'auei'a Nomadic Civilization
|
||||
|
||||
Sa'auei'a civilization is highly advanced without being sedentary in the imperial sense. It preserves knowledge through mobile families, ritual routes, ecological partners, portable craft, and sacred reproductive commons.
|
||||
|
||||
## Institutions
|
||||
|
||||
- [[Sa'auei'a Family Units]] carry law, skill, memory, and diplomacy.
|
||||
- [[Breeding Grounds]] anchor infancy, infirm care, reproductive ritual, and inter-family legitimacy.
|
||||
- ecological partners remember generosity and punish extraction.
|
||||
- route assemblies resolve disputes when multiple families converge.
|
||||
|
||||
## Misread by the Empire
|
||||
|
||||
The [[Airawa Empire]] interprets Sa'auei'a mobility as primitiveness because the empire's own imagination has been captured by network control and fixed biological infrastructure.
|
||||
|
||||
This is not just arrogance. It is path dependency as a perceptual disability.
|
||||
11
Eusocial Interbeing/Civilizations/index.md
Normal file
11
Eusocial Interbeing/Civilizations/index.md
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
# Civilizations
|
||||
|
||||
- [[Airawa Empire]]
|
||||
- [[Pre-Imperial Airawa Tribes]]
|
||||
- [[Disconnected Tree Networks]]
|
||||
- [[Sa'auei'a Nomadic Civilization]]
|
||||
- [[Sa'auei'a Family Units]]
|
||||
|
||||
## Design Rule
|
||||
|
||||
Civilizations should be distinguished by how they store memory, handle reproduction, distribute risk, and bargain with other species.
|
||||
16
Eusocial Interbeing/Conflicts/Continental Contact War.md
Normal file
16
Eusocial Interbeing/Conflicts/Continental Contact War.md
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
# Continental Contact War
|
||||
|
||||
The Continental Contact War is the broad conflict between the [[Airawa Empire]] and the [[Sa'auei'a Nomadic Civilization]] after imperial discovery.
|
||||
|
||||
## Strategic Mismatch
|
||||
|
||||
The empire expects to capture command centers, overwrite populations, and control ecological substrate. The Sa'auei'a have no single capital, no continental mother-tree network, and no public mind that can be seized at one root.
|
||||
|
||||
The Sa'auei'a expect conflicts to be negotiated through remembered relationships. The empire brings a machine built to make negotiation unnecessary.
|
||||
|
||||
## Useful Fronts
|
||||
|
||||
- imperial attempts to infect breeding grounds;
|
||||
- Sa'auei'a efforts to make the new continent refuse imperial biology;
|
||||
- Disconnected Tree Network envoys crossing into Sa'auei'a territory;
|
||||
- imperial citizens encountering living proof that the campaign lied.
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
# Imperial Discovery of the Sa'auei'a
|
||||
|
||||
When the [[Airawa Empire]] discovers the [[Sa'auei'a Continent]], it encounters a civilization that contradicts imperial doctrine.
|
||||
|
||||
The Sa'auei'a are advanced without mother trees, disciplined without imperial memetics, and politically durable without fixed capitals. Their existence implies that the empire's founding story is not natural law.
|
||||
|
||||
## Imperial Reaction
|
||||
|
||||
The ruling class cannot allow that implication to circulate. It launches the [[Xenophobic Memetic Campaign]], framing Sa'auei'a life as contamination, animal mimicry, reproductive threat, and ecological sabotage.
|
||||
|
||||
The campaign is not only propaganda. In the empire, propaganda is grown into bodies.
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
# Resistance of the Disconnected Networks
|
||||
|
||||
The resistance of the [[Disconnected Tree Networks]] is the Airawa continent's unresolved civil wound.
|
||||
|
||||
These networks survived by cutting themselves off from the [[Biological Memetic Engine]]. They now fight through ecological sabotage, secret memory preservation, false trails, immune counter-signals, and alliances with Airawa communities the empire claims no longer exist.
|
||||
|
||||
## Narrative Pressure
|
||||
|
||||
Their existence undermines imperial legitimacy more than any foreign enemy can. If they are real, then imperial consensus is neither complete nor inevitable.
|
||||
|
||||
This is why the empire denies them while quietly bleeding resources into campaigns against them. Very normal state behavior. Nothing to see in the haunted budget.
|
||||
17
Eusocial Interbeing/Conflicts/Xenophobic Memetic Campaign.md
Normal file
17
Eusocial Interbeing/Conflicts/Xenophobic Memetic Campaign.md
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
# Xenophobic Memetic Campaign
|
||||
|
||||
The Xenophobic Memetic Campaign is the Airawa Empire's response to discovering the [[Sa'auei'a]].
|
||||
|
||||
Because the imperial center can shape belief across most of the [[Airawa Home Continent]], it floods citizens with totalitarian xenophobic payloads:
|
||||
|
||||
- Sa'auei'a mobility is framed as disease;
|
||||
- communal breeding grounds are framed as obscene;
|
||||
- ecological reciprocity is framed as animal submission;
|
||||
- Airawa dissenters are accused of Sa'auei'a infection;
|
||||
- military violence is framed as continental immune response.
|
||||
|
||||
## Political Use
|
||||
|
||||
The campaign also helps the empire suppress news of [[Disconnected Tree Networks]]. Any contradiction can be blamed on foreign memetic contamination.
|
||||
|
||||
It is a neat lie, which is the worst kind. It fits in the hand.
|
||||
10
Eusocial Interbeing/Conflicts/index.md
Normal file
10
Eusocial Interbeing/Conflicts/index.md
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
# Conflicts
|
||||
|
||||
- [[Imperial Discovery of the Sa'auei'a]]
|
||||
- [[Xenophobic Memetic Campaign]]
|
||||
- [[Resistance of the Disconnected Networks]]
|
||||
- [[Continental Contact War]]
|
||||
|
||||
## Design Rule
|
||||
|
||||
Conflict should emerge from incompatible ecological politics, not from generic conquest pasted onto alien nouns.
|
||||
13
Eusocial Interbeing/Ecology/Breeding Grounds.md
Normal file
13
Eusocial Interbeing/Ecology/Breeding Grounds.md
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
# Breeding Grounds
|
||||
|
||||
Breeding Grounds are sacred communal sites of the [[Sa'auei'a]]. They are permanently occupied mainly by infants, infirm adults, caretakers, rotating specialists, and allied organisms.
|
||||
|
||||
## Social Role
|
||||
|
||||
They are not cities. They are reproductive commons, legal anchors, memory reservoirs, medical centers, and ritual thresholds.
|
||||
|
||||
Adults return to breed, recover, teach, mourn, settle disputes, and renew obligations. Most then leave again with their family units.
|
||||
|
||||
## Constraint
|
||||
|
||||
If a breeding ground becomes a capital, the Sa'auei'a system starts breaking. Permanent concentration would invite hierarchy, resource exhaustion, ecological resentment, and imperial-style capture.
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
# Eusocial Inter-Species Dynamics
|
||||
|
||||
Eusocial inter-species dynamics describe systems where reproduction, labor, defense, memory, and status are distributed across multiple species rather than contained inside one social organism.
|
||||
|
||||
## In This Setting
|
||||
|
||||
The Airawa-mother-tree relationship is archival eusociality: communal memory and political continuity depend on non-Airawa reproductive bodies.
|
||||
|
||||
The Sa'auei'a system is reciprocal nomadic eusociality: mobile families act as high-trust units inside a continent-wide mesh of remembered ecological relationships.
|
||||
|
||||
The [[Airawa Empire]] weaponizes eusociality by making belief itself transmissible through engineered life.
|
||||
15
Eusocial Interbeing/Ecology/Mother Tree Networks.md
Normal file
15
Eusocial Interbeing/Ecology/Mother Tree Networks.md
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
# Mother Tree Networks
|
||||
|
||||
Mother Tree Networks connect [[Mother Trees]] to local organisms, archives, chemical signaling paths, and Airawa communities.
|
||||
|
||||
## Functions
|
||||
|
||||
- preserve communal memory;
|
||||
- coordinate ecological warnings;
|
||||
- mediate obligations between species;
|
||||
- regulate access to ancestral continuity;
|
||||
- provide the substrate later exploited by the [[Biological Memetic Engine]].
|
||||
|
||||
## Failure Mode
|
||||
|
||||
Trust made the network powerful. Trust also made it penetrable. The empire did not need to defeat every tribe separately once it could turn shared memory into shared infection.
|
||||
9
Eusocial Interbeing/Ecology/Reciprocal Ecologies.md
Normal file
9
Eusocial Interbeing/Ecology/Reciprocal Ecologies.md
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
# Reciprocal Ecologies
|
||||
|
||||
Reciprocal ecologies are living systems that remember Sa'auei'a conduct and respond with future access, guidance, warning, nourishment, shelter, or refusal.
|
||||
|
||||
They make generosity materially rational without making it sentimental. A family that feeds a route, tends a sick grove, or defends a nesting corridor may be rewarded years later by organisms that do not think like people but remember like infrastructure.
|
||||
|
||||
## Story Use
|
||||
|
||||
Reciprocal ecologies let diplomacy happen through action rather than speeches. They also give the [[Airawa Empire]] a problem its memetic engine is poorly suited to solve: a continent whose cooperation is earned locally and repeatedly instead of captured through one dominant network.
|
||||
11
Eusocial Interbeing/Ecology/index.md
Normal file
11
Eusocial Interbeing/Ecology/index.md
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
# Ecology
|
||||
|
||||
- [[Eusocial Inter-Species Dynamics]]
|
||||
- [[Mother Tree Networks]]
|
||||
- [[Breeding Grounds]]
|
||||
- [[Reciprocal Ecologies]]
|
||||
- [[Disconnected Tree Networks]]
|
||||
|
||||
## Design Rule
|
||||
|
||||
Ecology is not scenery. It is memory, logistics, sanction, inheritance, and leverage.
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
# Avatar - Living Network
|
||||
|
||||
## Source Links
|
||||
|
||||
- [Avatar Pandorapedia](https://www.avatar.com/pandorapedia)
|
||||
- [Avatar official site](https://www.avatar.com/)
|
||||
|
||||
## Useful Pressure
|
||||
|
||||
Avatar's living network idea is useful because it makes ecology a communicative and sacred infrastructure. This setting pushes harder on the political economy of that infrastructure.
|
||||
|
||||
## Re-engineering
|
||||
|
||||
In Avatar, the network often functions as spiritual ecology and planetary continuity. Here, the nearest equivalent, [[Mother Tree Networks]], can preserve memory while also creating hostage relationships.
|
||||
|
||||
The question becomes: what happens when the archive wants payment, and one society invents a tool to stop paying?
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
# Avatar - Na'vi Position Rebuilt
|
||||
|
||||
The [[Airawa]] occupy the broad structural position of the Na'vi as a dominant intelligent species integrated with local ecology. The rebuild changes the premise in several ways:
|
||||
|
||||
- the Airawa are not universal;
|
||||
- their ecological integration was politically coercive before empire;
|
||||
- the anti-coercion invention became imperial infrastructure;
|
||||
- another dominant species, the [[Sa'auei'a]], developed elsewhere without Airawa presence.
|
||||
|
||||
This keeps the fascination of an ecology-bound people while refusing the tidy universal template. Cleaner? No. More interesting? Unfortunately yes.
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
# Avatar - What This Setting Rejects
|
||||
|
||||
This setting rejects a single global model of indigeneity, ecology, or sacred network.
|
||||
|
||||
It also rejects the idea that ecological harmony is politically simple. A living archive can be protective and coercive. A mother tree can preserve a people while also holding their continuity hostage. A civilization can rebel against that dependency and become worse.
|
||||
|
||||
The Avatar inspiration is the doorway. The setting should not keep standing in the doorway admiring the hinges.
|
||||
16
Eusocial Interbeing/Inspirations/Avatar/index.md
Normal file
16
Eusocial Interbeing/Inspirations/Avatar/index.md
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
# Avatar Inspirations
|
||||
|
||||
Avatar is the loose inspiration for a living-network setting with a humanoid dominant species integrated into ecology. This vault uses that pressure but rebuilds the premise around eusocial inter-species dynamics, continental difference, and coercive ecological infrastructure.
|
||||
|
||||
## Useful Avatar Ideas
|
||||
|
||||
- [[Avatar - Living Network]]
|
||||
- [[Avatar - Na'vi Position Rebuilt]]
|
||||
- [[Avatar - What This Setting Rejects]]
|
||||
|
||||
## Source Links
|
||||
|
||||
- [Avatar official site](https://www.avatar.com/)
|
||||
- [Avatar Pandorapedia](https://www.avatar.com/pandorapedia)
|
||||
|
||||
Use official pages for baseline comparison only. This is not an Avatar derivative continuity.
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
# Semiosis - Lessons for This Setting
|
||||
|
||||
## Keep
|
||||
|
||||
- nonhuman agency as strategic pressure;
|
||||
- colonists or dominant species discovering they are not the only political actors;
|
||||
- ecology as negotiation rather than backdrop;
|
||||
- intelligence expressed through growth, timing, dependency, and reward.
|
||||
|
||||
## Change
|
||||
|
||||
This setting foregrounds eusocial inter-species structures, reproductive commons, and memetic infrastructure more than first-contact plant diplomacy.
|
||||
|
||||
The [[Airawa Empire]] turns ecological communication into domination. The [[Sa'auei'a]] maintain ecological bargaining as civilization. That contrast is the engine.
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
# Semiosis - Plant Agency Reviews
|
||||
|
||||
## Sources
|
||||
|
||||
- [Kirkus Reviews: Semiosis](https://www.kirkusreviews.com/book-reviews/sue-burke/semiosis/)
|
||||
- [Locus Magazine review of Semiosis](https://locusmag.com/2018/02/paul-kincaid-reviews-semiosis-by-sue-burke/)
|
||||
- [NPR review: In Semiosis, People Are The Invasive Species](https://www.npr.org/2018/02/11/584933187/in-semiosis-people-are-the-invasive-species)
|
||||
|
||||
## Useful Pressure
|
||||
|
||||
Public reviews repeatedly frame *Semiosis* around colonists learning that plant intelligence and planetary ecology are not passive background. That pressure is directly useful for [[Ecological Bargaining]] and [[Ecological Memory Partners]].
|
||||
|
||||
## Translation Into This Setting
|
||||
|
||||
The setting should avoid making plants either wise elders or decorative networks. A mother tree can be nurturing, strategic, coercive, or frightened. A remembered ecology can reward generosity without becoming morally pure.
|
||||
|
||||
The useful move is agency without sentimentality.
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
# Semiosis - Sue Burke Interviews
|
||||
|
||||
## Sources
|
||||
|
||||
- [The Qwillery interview with Sue Burke](https://www.theqwillery.com/2018/02/interview-with-sue-burke-author-of.html)
|
||||
- [Black Gate interview: Plants as Protagonists](https://www.blackgate.com/2018/02/21/plants-as-protagonists-an-interview-with-semiosis-author-sue-burke/)
|
||||
- [Sue Burke note linking a Semiosis trilogy interview](https://sueburke.site/2025/02/06/sentient-plants-artificial-intelligence-and-fippokats/)
|
||||
|
||||
## Useful Pressure
|
||||
|
||||
Burke interviews are useful for thinking about plant cognition, colonization, and how nonhuman timescales alter social compromise.
|
||||
|
||||
## Translation Into This Setting
|
||||
|
||||
The [[Mother Trees]] should not behave like humans in wooden costumes. Their coercion comes from timescale, memory leverage, reproductive strategy, and control over ecological continuity.
|
||||
|
||||
The [[Sa'auei'a]] side should extend this lesson beyond plants: the continent itself is not one mind, but many remembered relationships.
|
||||
13
Eusocial Interbeing/Inspirations/Semiosis/index.md
Normal file
13
Eusocial Interbeing/Inspirations/Semiosis/index.md
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
# Semiosis Inspirations
|
||||
|
||||
Sue Burke's *Semiosis* is useful here for plant agency, negotiated coexistence, and the idea that intelligence does not need to wear a humanoid face to dominate a society's options.
|
||||
|
||||
## Article Notes
|
||||
|
||||
- [[Semiosis - Plant Agency Reviews]]
|
||||
- [[Semiosis - Sue Burke Interviews]]
|
||||
- [[Semiosis - Lessons for This Setting]]
|
||||
|
||||
## Setting Use
|
||||
|
||||
This vault should use *Semiosis* as pressure toward ecological negotiation and nonhuman strategic agency, not as a template to copy.
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
# Turtledove Path Dependency
|
||||
|
||||
## Sources
|
||||
|
||||
- [The Road Not Taken overview](https://en.wikipedia.org/wiki/The_Road_Not_Taken_(short_story))
|
||||
- [Harry Turtledove short fiction bibliography](https://www.sfsite.com/~silverag/turtledove.html)
|
||||
|
||||
## Useful Pressure
|
||||
|
||||
Harry Turtledove's "The Road Not Taken" is useful as a path-dependency reference: a species or civilization may discover one powerful technology early, then develop around it so completely that other forms of advancement remain stunted or invisible.
|
||||
|
||||
## Translation Into This Setting
|
||||
|
||||
The [[Airawa Empire]] discovers the [[Biological Memetic Engine]] and becomes brilliant at biological persuasion, heredity management, and network domination. The cost is institutional imagination. Problems that cannot be solved through the engine are misread as contamination, savagery, or impossible nonsense.
|
||||
|
||||
The [[Sa'auei'a]] counterpoint is not "better technology" but a different civilizational path: distributed reciprocity, mobile archives, sacred reproductive commons, and ecological reputation.
|
||||
11
Eusocial Interbeing/Inspirations/index.md
Normal file
11
Eusocial Interbeing/Inspirations/index.md
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
# Inspirations
|
||||
|
||||
These notes track outside influences and useful comparative pressure. They are not setting canon.
|
||||
|
||||
- [[Semiosis/index]]
|
||||
- [[Avatar/index]]
|
||||
- [[Turtledove Path Dependency]]
|
||||
|
||||
## Discipline
|
||||
|
||||
Use inspiration notes to clarify what this setting is stealing structurally, transforming, or rejecting. Do not import proper nouns, plot beats, or distinctive canon furniture.
|
||||
23
Eusocial Interbeing/Species/Airawa.md
Normal file
23
Eusocial Interbeing/Species/Airawa.md
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
# Airawa
|
||||
|
||||
The Airawa are the dominant intelligent species of the [[Airawa Home Continent]]. They occupy the same broad narrative position that the Na'vi occupy in Avatar inspiration notes: a people integrated with powerful living networks, then forced into conflict over who controls those networks.
|
||||
|
||||
In this setting, the Airawa are not universal. They did not evolve on the [[Sa'auei'a Continent]], and their absence there matters.
|
||||
|
||||
## Pre-Imperial Pattern
|
||||
|
||||
Early Airawa societies lived in negotiated dependency with [[Mother Trees]]. The trees preserved communal memories, genealogies, ecological warnings, ritual songs, and disaster scars. In return, Airawa communities provided nutrients, defense, seed dispersal, selective pollination, and social obedience.
|
||||
|
||||
The arrangement was not pure harmony. It was a contract with roots.
|
||||
|
||||
## Imperial Pattern
|
||||
|
||||
The tribe that became the [[Airawa Empire]] invented the [[Biological Memetic Engine]] to stop mother trees from holding communal memory hostage. The engine let them overwrite rival tribes through the same networks those tribes trusted.
|
||||
|
||||
Imperial Airawa now define worth through managed heredity, doctrinal compliance, engineered symbiosis, and service to continental unification.
|
||||
|
||||
## Open Questions
|
||||
|
||||
- Are Airawa reproductively eusocial, culturally eusocial, or symbiotically eusocial through tree-mediated caste formation?
|
||||
- How visible is imperial bioengineering in ordinary bodies?
|
||||
- What remnants of pre-imperial Airawa humility still survive inside imperial ritual?
|
||||
13
Eusocial Interbeing/Species/Ecological Memory Partners.md
Normal file
13
Eusocial Interbeing/Species/Ecological Memory Partners.md
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
# Ecological Memory Partners
|
||||
|
||||
Ecological memory partners are non-Airawa and non-Sa'auei'a organisms that can remember interactions across time and alter future cooperation accordingly.
|
||||
|
||||
Examples may include:
|
||||
|
||||
- migratory herds that preferentially guide generous families;
|
||||
- medicinal root systems that respond to long-term tending;
|
||||
- carrion guilds that clean routes for groups that feed them well;
|
||||
- pollinator swarms that carry warnings between breeding grounds;
|
||||
- reef-like structures that open or deny shelter.
|
||||
|
||||
These partners make the setting's diplomacy more than person-to-person politics. A treaty can be chewed, flowered, withheld, or inherited.
|
||||
15
Eusocial Interbeing/Species/Mother Trees.md
Normal file
15
Eusocial Interbeing/Species/Mother Trees.md
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
# Mother Trees
|
||||
|
||||
Mother Trees are memory-bearing ecological hubs native to the [[Airawa Home Continent]]. They store communal memories for Airawa tribes and coordinate local biological networks through root, fungal, chemical, electrical, and symbiotic channels.
|
||||
|
||||
## The Bargain
|
||||
|
||||
Pre-imperial Airawa communities depended on mother trees for continuity beyond living memory. In return, the trees demanded nutrients, tending, defense, reproductive assistance, and deference.
|
||||
|
||||
This bargain was intimate and coercive at the same time. A community that defied its mother tree risked losing ancestral memory, ecological warning, and legal continuity.
|
||||
|
||||
## Imperial Rupture
|
||||
|
||||
The [[Biological Memetic Engine]] was created to break this dependency. It converted the tree network from negotiated archive into imperial transmission infrastructure.
|
||||
|
||||
The engine did not abolish hostage memory. It changed the hostage-taker.
|
||||
17
Eusocial Interbeing/Species/Sa'auei'a.md
Normal file
17
Eusocial Interbeing/Species/Sa'auei'a.md
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
# Sa'auei'a
|
||||
|
||||
The Sa'auei'a are the dominant intelligent species of the [[Sa'auei'a Continent]]. Their civilization is nomadic, highly developed, and organized around squad-sized family units rather than permanent cities.
|
||||
|
||||
They are loosely comparable to wolves in social unit scale and movement logic, but that comparison is a handle, not a cage. They are not dogs with philosophy stapled on.
|
||||
|
||||
## Social Pattern
|
||||
|
||||
Sa'auei'a families move across the continent making deals with remembered ecologies. Their units combine kinship, apprenticeship, defense, diplomacy, childcare, and mobile craft production.
|
||||
|
||||
They treat [[Breeding Grounds]] as sacred commons. These sites are not private property, dynastic capitals, or imperial nurseries. Infants, the infirm, caretakers, and rotating specialists remain there, while most adults circulate through the wider continent.
|
||||
|
||||
## Ecological Politics
|
||||
|
||||
Sa'auei'a prestige comes from being remembered as generous by more-than-social partners: feeding sites, medicinal groves, migratory herds, reef analogues, pollinator corridors, and defensive organisms.
|
||||
|
||||
The strongest family units are not those that can seize territory. They are those that can arrive after years away and still be recognized as beneficial.
|
||||
10
Eusocial Interbeing/Species/index.md
Normal file
10
Eusocial Interbeing/Species/index.md
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
# Species
|
||||
|
||||
- [[Airawa]]
|
||||
- [[Sa'auei'a]]
|
||||
- [[Mother Trees]]
|
||||
- [[Ecological Memory Partners]]
|
||||
|
||||
## Design Rule
|
||||
|
||||
Species are political actors when they can remember, negotiate, withhold, reproduce strategically, or alter the survival conditions of others. Intelligence is not a permission slip shaped like a face.
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
# Biological Memetic Engine
|
||||
|
||||
The Biological Memetic Engine is the founding technology of the [[Airawa Empire]]. It began as a tool for freeing Airawa communities from [[Mother Trees]] that held communal memory hostage.
|
||||
|
||||
## Mechanism
|
||||
|
||||
The engine uses engineered organisms, signals, and ritual payloads to propagate ideas through living networks. It can alter memory emphasis, emotional association, taboo response, enemy recognition, reproductive desire, and obedience patterns.
|
||||
|
||||
It is not simple hypnosis. It is ecological propaganda with teeth in the substrate.
|
||||
|
||||
## Path Dependency
|
||||
|
||||
The engine was so powerful that the empire learned to solve every problem through memetic-biological intervention:
|
||||
|
||||
- dissent becomes infection management;
|
||||
- foreignness becomes immune threat;
|
||||
- heredity becomes policy;
|
||||
- ecology becomes transmission medium;
|
||||
- politics becomes root access.
|
||||
|
||||
This is the setting's central Turtledove-style trap. A civilization does not merely possess a tool. Eventually the tool possesses the menu of possible answers.
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
# Imperial Biopunk Infrastructure
|
||||
|
||||
Imperial biopunk infrastructure grows from the [[Biological Memetic Engine]]. The empire builds with organs, trees, grafts, controlled parasites, caste-tuned bodies, memory nodules, pheromonal courts, and immune checkpoints.
|
||||
|
||||
## Uses
|
||||
|
||||
- administrative consensus;
|
||||
- border surveillance;
|
||||
- reproductive licensing;
|
||||
- military coordination;
|
||||
- public health framed as ideological hygiene;
|
||||
- historical revision through living archives.
|
||||
|
||||
## Limit
|
||||
|
||||
The infrastructure is strongest where networks are connected and legible. It is weaker against [[Disconnected Tree Networks]] and against the [[Sa'auei'a Continent]], where cooperation is distributed through many local ecological relationships rather than one continental archive.
|
||||
17
Eusocial Interbeing/Technologies/Path Dependency.md
Normal file
17
Eusocial Interbeing/Technologies/Path Dependency.md
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
# Path Dependency
|
||||
|
||||
Path dependency is a major worldbuilding theme. The first powerful solution a civilization finds can become the shape of its future stupidity.
|
||||
|
||||
## Airawa Version
|
||||
|
||||
The [[Airawa Empire]] invented the [[Biological Memetic Engine]] and then increasingly solved every problem with biological persuasion, memory editing, heredity management, and network domination.
|
||||
|
||||
That does not mean the engine is useless. It means it is too useful. It eats alternative institutions before anyone notices those institutions would have been load-bearing.
|
||||
|
||||
## Sa'auei'a Version
|
||||
|
||||
The [[Sa'auei'a]] developed around mobility, reproductive commons, and ecological reciprocity. Their path dependency is less totalitarian, but still real: fixed infrastructure, secrecy, and rapid centralized war-making are culturally difficult for them.
|
||||
|
||||
## Comparative Use
|
||||
|
||||
Good conflicts should make each civilization strong where the other is blind.
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
# Sa'auei'a Mobile Technologies
|
||||
|
||||
Sa'auei'a technology is advanced, portable, repairable, and relationship-aware. It is built for movement through ecologies that remember treatment.
|
||||
|
||||
## Likely Forms
|
||||
|
||||
- collapsible shelters grown from dormant symbionts;
|
||||
- route-memory instruments that encode ecological obligations;
|
||||
- medical grafts maintained by breeding-ground specialists;
|
||||
- scent, vibration, and pattern languages for partner species;
|
||||
- portable archives split across families and living companions.
|
||||
|
||||
## Contrast
|
||||
|
||||
The [[Airawa Empire]] scales power through network capture. Sa'auei'a technologies scale trust through repeated return.
|
||||
10
Eusocial Interbeing/Technologies/index.md
Normal file
10
Eusocial Interbeing/Technologies/index.md
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
# Technologies
|
||||
|
||||
- [[Biological Memetic Engine]]
|
||||
- [[Imperial Biopunk Infrastructure]]
|
||||
- [[Sa'auei'a Mobile Technologies]]
|
||||
- [[Path Dependency]]
|
||||
|
||||
## Design Rule
|
||||
|
||||
Technology should change what a civilization notices. The most dangerous tool is the one so effective it becomes a theology.
|
||||
9
Eusocial Interbeing/Themes/Ecological Bargaining.md
Normal file
9
Eusocial Interbeing/Themes/Ecological Bargaining.md
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
# Ecological Bargaining
|
||||
|
||||
Ecological bargaining treats nonhuman organisms as negotiating partners with memory, leverage, and reproductive interests.
|
||||
|
||||
The Airawa bargain was archival and rooted: nutrients and obedience in exchange for ancestral continuity.
|
||||
|
||||
The Sa'auei'a bargain is mobile and reputational: generosity and restraint in exchange for future access, guidance, and protection.
|
||||
|
||||
Imperial biopolitics tries to abolish bargaining by turning ecology into command infrastructure. That works until it reaches organisms and societies that remember without obeying.
|
||||
7
Eusocial Interbeing/Themes/Eugenics and Managed Life.md
Normal file
7
Eusocial Interbeing/Themes/Eugenics and Managed Life.md
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
# Eugenics and Managed Life
|
||||
|
||||
The [[Airawa Empire]] treats life as governable material. Bodies, symbionts, desires, immune responses, memories, and reproductive permissions become state infrastructure.
|
||||
|
||||
The point is not to make the empire cartoonishly mean. The point is to show how a liberation tool against tree dependency can become a doctrine of managed heredity.
|
||||
|
||||
Once political order is built through biological editing, unedited life starts to look like sabotage.
|
||||
7
Eusocial Interbeing/Themes/Memory as Hostage.md
Normal file
7
Eusocial Interbeing/Themes/Memory as Hostage.md
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
# Memory as Hostage
|
||||
|
||||
Memory is a bargaining object in this setting.
|
||||
|
||||
[[Mother Trees]] preserve Airawa communal memory but can withhold continuity from communities that fail them. The [[Biological Memetic Engine]] was created to end that hostage relationship, then converted memory itself into imperial infrastructure.
|
||||
|
||||
For the [[Sa'auei'a]], memory is distributed through mobile families, breeding grounds, ecological partners, and repeated route obligations. It is harder to seize, but easier to lose through dispersion, disaster, or broken trust.
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
# Nomadism Without Primitivism
|
||||
|
||||
The [[Sa'auei'a]] are nomadic and advanced. The setting should never treat fixed cities as the default proof of civilization.
|
||||
|
||||
Sa'auei'a sophistication lives in route law, portable craft, ecological languages, medical continuity, breeding-ground care, distributed archives, and the ability to be remembered well across distance.
|
||||
|
||||
Their society is not simpler than the empire. It is optimized around different constraints.
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
# Technological Path Dependency
|
||||
|
||||
Technological path dependency asks how a civilization's first spectacular success narrows its future imagination.
|
||||
|
||||
The [[Airawa Empire]] is the main example. The [[Biological Memetic Engine]] was so effective that every institution bent around it. The empire became brilliant at memetic-biological domination and correspondingly bad at forms of cooperation that cannot be overwritten.
|
||||
|
||||
The [[Sa'auei'a]] provide a counterpoint. Their path dependency favors mobility, reciprocity, and reproductive commons. It makes them resilient against imperial capture but weaker at rapid central mobilization.
|
||||
|
||||
The best worldbuilding use is not "technology bad." The better use is colder: every tool teaches a society what counts as a solution.
|
||||
11
Eusocial Interbeing/Themes/index.md
Normal file
11
Eusocial Interbeing/Themes/index.md
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
# Themes
|
||||
|
||||
- [[Technological Path Dependency]]
|
||||
- [[Memory as Hostage]]
|
||||
- [[Ecological Bargaining]]
|
||||
- [[Eugenics and Managed Life]]
|
||||
- [[Nomadism Without Primitivism]]
|
||||
|
||||
## Design Rule
|
||||
|
||||
Themes should generate constraints. If a theme only decorates the prose, it is not pulling its weight.
|
||||
15
Eusocial Interbeing/World/Airawa Home Continent.md
Normal file
15
Eusocial Interbeing/World/Airawa Home Continent.md
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
# Airawa Home Continent
|
||||
|
||||
The Airawa home continent is dense with tree-mediated memory networks. Before imperial consolidation, each major region had its own [[Mother Trees]] and local agreements among Airawa tribes, pollinator species, mycorrhizal archives, scavenger guilds, and defensive symbionts.
|
||||
|
||||
The continent's political history is defined by a single technological rupture: one tribe invented the [[Biological Memetic Engine]], then discovered that any problem reachable through the tree network could be solved by domination, editing, or doctrinal infection.
|
||||
|
||||
## Present Condition
|
||||
|
||||
Most of the continent is controlled by the [[Airawa Empire]]. Official maps show a unified civil ecology. In practice, several [[Disconnected Tree Networks]] survived by severing themselves before the engine fully saturated the living substrate.
|
||||
|
||||
The empire denies these networks exist because admitting they exist would prove three dangerous facts:
|
||||
|
||||
- the engine can be resisted;
|
||||
- the continent was not willingly unified;
|
||||
- imperial mind control is powerful, not total.
|
||||
11
Eusocial Interbeing/World/Sa'auei'a Continent.md
Normal file
11
Eusocial Interbeing/World/Sa'auei'a Continent.md
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
# Sa'auei'a Continent
|
||||
|
||||
The Sa'auei'a continent never produced the [[Airawa]] species and was never colonized by them before the imperial discovery era. Its dominant intelligent species, the [[Sa'auei'a]], evolved inside migratory ecological politics rather than fixed archival dependency.
|
||||
|
||||
The continent remembers motion. Herds, root mats, nesting cliffs, mineral licks, fungal waystations, and seasonal bloom corridors respond to repeated generosity. A family unit that overdraws a region may survive the week and lose the decade.
|
||||
|
||||
## Civilizational Pattern
|
||||
|
||||
Sa'auei'a civilization is advanced but not urban in the Airawa sense. Knowledge, law, craft, and diplomacy travel in [[Sa'auei'a Family Units]]. Permanent occupation is concentrated at [[Breeding Grounds]], which are cared for by infants, infirm adults, rotating specialists, and ecological partners.
|
||||
|
||||
The result looks weak to imperial observers because it lacks obvious capitals. This is the empire being stupid in a very official font.
|
||||
10
Eusocial Interbeing/World/index.md
Normal file
10
Eusocial Interbeing/World/index.md
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
# World
|
||||
|
||||
## Continents
|
||||
|
||||
- [[Airawa Home Continent]]: birthplace of the Airawa species, the mother-tree networks, and the Airawa Empire.
|
||||
- [[Sa'auei'a Continent]]: Airawa-free continent where Sa'auei'a nomadic civilization evolved around mobile reciprocity and sacred breeding grounds.
|
||||
|
||||
## Design Notes
|
||||
|
||||
The continents should not be palette swaps. One is shaped by archival dependency and memetic capture. The other is shaped by mobility, remembered generosity, and reproductive commons that cannot become permanent capitals without breaking the society.
|
||||
24
Eusocial Interbeing/index.md
Normal file
24
Eusocial Interbeing/index.md
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
# Eusocial Interbeing
|
||||
|
||||
This setting centers on eusocial inter-species dynamics: civilizations that do not merely live in ecosystems, but negotiate with reproductive sites, memory-bearing forests, immune networks, migratory herds, pollinating castes, fungal archives, and engineered idea-organisms.
|
||||
|
||||
## Core Premise
|
||||
|
||||
On one continent, the [[Airawa]] once lived in tight ecological reciprocity with [[Mother Trees]]. Their societies stored communal memory in tree networks that demanded nutrients, ritual labor, and political deference in return. One Airawa tribe created the [[Biological Memetic Engine]] to break that dependency. The tool worked too well. It became the foundation of the [[Airawa Empire]], a eugenics-obsessed biopunk state whose rulers can impose doctrine through the continent's connected living networks.
|
||||
|
||||
On another continent, where Airawa never evolved or migrated, the [[Sa'auei'a]] developed a highly advanced nomadic civilization. They organize in squad-sized family units, keep [[Breeding Grounds]] sacred and communal, and bargain with ecologies that remember generosity.
|
||||
|
||||
## Main Paths
|
||||
|
||||
- [[World/index]]
|
||||
- [[Species/index]]
|
||||
- [[Civilizations/index]]
|
||||
- [[Ecology/index]]
|
||||
- [[Technologies/index]]
|
||||
- [[Conflicts/index]]
|
||||
- [[Themes/index]]
|
||||
- [[Inspirations/index]]
|
||||
|
||||
## Current Design Rule
|
||||
|
||||
Every major institution should be legible as an ecological deal, a reproductive pressure, a memory technology, or a path-dependent consequence. If it is just a normal state wearing wet architecture, cut it until the wound has a purpose.
|
||||
7
README.md
Normal file
7
README.md
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
# Eusocial Interbeing
|
||||
|
||||
An Obsidian vault for an original biopolitical ecology setting: two continents, two dominant intelligent species, and one empire that found a biological memetic engine so useful it started mistaking the tool for reality.
|
||||
|
||||
The project is loosely inspired by Avatar's underused ecological network premise, Sue Burke's plant-negotiation fiction, and Harry Turtledove's path-dependent technology arguments. It is not an Avatar fan setting. The useful corpse has been composted. We move on.
|
||||
|
||||
Start at [[Eusocial Interbeing/index]].
|
||||
15
notes/current-system-map.md
Normal file
15
notes/current-system-map.md
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
# Current System Map
|
||||
|
||||
The vault has three working layers.
|
||||
|
||||
## Lore Layer
|
||||
|
||||
`Eusocial Interbeing/` contains Obsidian-facing notes. The intended reader starts at `Eusocial Interbeing/index.md`, then moves through world, species, civilizations, ecology, technologies, conflicts, themes, and inspirations.
|
||||
|
||||
## Inspiration Layer
|
||||
|
||||
`Eusocial Interbeing/Inspirations/` records outside source pressure. Avatar is used for living-network contrast. Semiosis is used for nonhuman agency and ecological negotiation. Turtledove is used for technological path dependency.
|
||||
|
||||
## Persistence Layer
|
||||
|
||||
`state/map.yaml` stores the current project map. `state/evidence.jsonl` stores durable research and design lessons. `state/branches.json` stores open design branches. `state/scratch.md` is disposable. `tools/setting_state.py` and `tools/prepare_compaction.py` provide status and compaction hygiene.
|
||||
23
notes/fresh-workspace-handoff.md
Normal file
23
notes/fresh-workspace-handoff.md
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
# Fresh Workspace Handoff
|
||||
|
||||
## Immediate Re-entry Instruction
|
||||
|
||||
Do not continue implementation automatically from a rehydrate-only request. First run status, inspect current state, and confirm the user wants edits.
|
||||
|
||||
Do not trust this file for the exact live HEAD. Use git commands for volatile truth.
|
||||
|
||||
## Current Vault Shape
|
||||
|
||||
This is a new Obsidian vault under `E:\Projects\Eusocial Interbeing`.
|
||||
|
||||
Core content lives under `Eusocial Interbeing/`. The baseline setting is an original world loosely inspired by Avatar, Sue Burke's *Semiosis*, and Turtledove-style technological path dependency.
|
||||
|
||||
## Core Premise
|
||||
|
||||
The Airawa on one continent once depended on mother-tree networks for communal memory. One tribe invented a biological memetic engine to escape that dependency and became a eugenics-obsessed biopunk empire. Disconnected tree networks still resist while the empire denies they exist.
|
||||
|
||||
The Sa'auei'a evolved on another continent without Airawa presence. They have an advanced nomadic civilization organized in squad-sized family units, sacred communal breeding grounds, and reciprocal ecological relationships.
|
||||
|
||||
## Next Useful Action
|
||||
|
||||
Name the continents and deepen the two species' biology, reproduction, and sensory experience before adding plot-scale characters.
|
||||
25
notes/implementation-plan.md
Normal file
25
notes/implementation-plan.md
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
# Implementation Plan
|
||||
|
||||
## Phase 1: Baseline Vault
|
||||
|
||||
Complete. The vault has a linked starting structure, inspiration notes, state machinery, and initial setting canon.
|
||||
|
||||
## Phase 2: Naming and Ontology
|
||||
|
||||
- Decide whether "Eusocial Interbeing" is the final setting title or only the vault title.
|
||||
- Name the two continents.
|
||||
- Define Airawa anatomy, reproduction, sensory world, and caste pressures.
|
||||
- Define Sa'auei'a anatomy, reproduction, lifespan, family-unit roles, and mobility constraints.
|
||||
- Define mother-tree biology without making the trees into human elders with bark.
|
||||
|
||||
## Phase 3: Systems Expansion
|
||||
|
||||
- Expand the Biological Memetic Engine into mechanism, limits, costs, and failure states.
|
||||
- Detail imperial ministries, breeding law, military infrastructure, and denial doctrine.
|
||||
- Detail Sa'auei'a route law, breeding-ground governance, ecological treaties, and mobile technologies.
|
||||
- Map the Continental Contact War through several fronts.
|
||||
|
||||
## Phase 4: Story Hooks
|
||||
|
||||
- Add character-facing notes only after the ecological and political machinery can support them.
|
||||
- Prefer conflicts that expose incompatible systems rather than generic invasion drama.
|
||||
24
state/branches.json
Normal file
24
state/branches.json
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
{
|
||||
"branches": [
|
||||
{
|
||||
"id": "airawa-eusocial-form",
|
||||
"hypothesis": "Airawa eusociality may be primarily symbiotic and political rather than strictly reproductive.",
|
||||
"status": "active",
|
||||
"artifacts": [
|
||||
"Eusocial Interbeing/Species/Airawa.md",
|
||||
"Eusocial Interbeing/Ecology/Mother Tree Networks.md"
|
||||
],
|
||||
"notes": "Needs anatomy and reproductive constraints before imperial eugenics can feel material."
|
||||
},
|
||||
{
|
||||
"id": "saaueia-nomadic-advanced",
|
||||
"hypothesis": "Sa'auei'a civilization can be technologically advanced without cities by making ecological reputation and portable institutions load-bearing.",
|
||||
"status": "active",
|
||||
"artifacts": [
|
||||
"Eusocial Interbeing/Species/Sa'auei'a.md",
|
||||
"Eusocial Interbeing/Civilizations/Sa'auei'a Nomadic Civilization.md"
|
||||
],
|
||||
"notes": "Needs route law, family roles, and breeding-ground governance."
|
||||
}
|
||||
]
|
||||
}
|
||||
1
state/evidence.jsonl
Normal file
1
state/evidence.jsonl
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"ts":"2026-05-04T00:00:00+00:00","type":"design_seed","status":"accepted","note":"User requested a new original vault under E:\\Projects using Avatar as loose inspiration but re-engineered around eusocial inter-species dynamics, Airawa imperial memetics, Sa'auei'a nomadic reciprocity, and technological path dependency."}
|
||||
21
state/map.yaml
Normal file
21
state/map.yaml
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
project:
|
||||
name: Eusocial Interbeing
|
||||
type: original_setting_obsidian_vault
|
||||
root_content_dir: Eusocial Interbeing
|
||||
current_status:
|
||||
summary: Baseline vault created with core Airawa, Sa'auei'a, mother-tree, memetic-engine, ecological reciprocity, and inspiration structures.
|
||||
next_action: Name the continents and deepen species biology, reproduction, and sensory ecology.
|
||||
active_subgoals:
|
||||
- Expand Airawa biology and imperial caste pressures.
|
||||
- Expand Sa'auei'a family-unit roles, breeding grounds, and mobile technologies.
|
||||
- Define limits and failure states of the Biological Memetic Engine.
|
||||
invariants:
|
||||
- Keep setting canon distinct from inspiration notes.
|
||||
- Treat ecology as infrastructure, memory, leverage, and negotiation.
|
||||
- Use path dependency as a civilizational constraint, not a slogan.
|
||||
- Do not import Avatar, Semiosis, or Turtledove proper nouns into setting canon.
|
||||
key_files:
|
||||
entrypoint: Eusocial Interbeing/index.md
|
||||
system_map: notes/current-system-map.md
|
||||
implementation_plan: notes/implementation-plan.md
|
||||
handoff: notes/fresh-workspace-handoff.md
|
||||
9
state/scratch.md
Normal file
9
state/scratch.md
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
# Scratch
|
||||
|
||||
## Current Subgoal
|
||||
|
||||
No active scratch subgoal.
|
||||
|
||||
## Notes
|
||||
|
||||
Use this file for one bounded design pass, then clear it or distill durable lessons into `state/evidence.jsonl`.
|
||||
334
tools/prepare_compaction.py
Normal file
334
tools/prepare_compaction.py
Normal file
|
|
@ -0,0 +1,334 @@
|
|||
from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
import json
|
||||
import re
|
||||
import subprocess
|
||||
from dataclasses import dataclass
|
||||
from pathlib import Path
|
||||
from typing import Any
|
||||
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[1]
|
||||
STATE_DIR = ROOT / "state"
|
||||
NOTES_DIR = ROOT / "notes"
|
||||
|
||||
MAP_PATH = STATE_DIR / "map.yaml"
|
||||
SCRATCH_PATH = STATE_DIR / "scratch.md"
|
||||
BRANCHES_PATH = STATE_DIR / "branches.json"
|
||||
EVIDENCE_PATH = STATE_DIR / "evidence.jsonl"
|
||||
HANDOFF_PATH = NOTES_DIR / "fresh-workspace-handoff.md"
|
||||
PLAN_PATH = NOTES_DIR / "implementation-plan.md"
|
||||
SYSTEM_MAP_PATH = NOTES_DIR / "current-system-map.md"
|
||||
AGENTS_PATH = ROOT / "AGENTS.md"
|
||||
|
||||
|
||||
@dataclass
|
||||
class Finding:
|
||||
level: str
|
||||
message: str
|
||||
|
||||
|
||||
def read_text(path: Path) -> str:
|
||||
return path.read_text(encoding="utf-8")
|
||||
|
||||
|
||||
def run_git(args: list[str]) -> str:
|
||||
completed = subprocess.run(
|
||||
["git", *args],
|
||||
cwd=ROOT,
|
||||
check=True,
|
||||
capture_output=True,
|
||||
text=True,
|
||||
)
|
||||
return completed.stdout.strip()
|
||||
|
||||
|
||||
def extract_map_field(name: str) -> str | None:
|
||||
prefix = f" {name}:"
|
||||
for line in read_text(MAP_PATH).splitlines():
|
||||
if line.startswith(prefix):
|
||||
return line.split(":", 1)[1].strip()
|
||||
return None
|
||||
|
||||
|
||||
def extract_active_subgoals() -> list[str]:
|
||||
lines = read_text(MAP_PATH).splitlines()
|
||||
results: list[str] = []
|
||||
in_section = False
|
||||
for line in lines:
|
||||
if not in_section:
|
||||
if line.strip() == "active_subgoals:":
|
||||
in_section = True
|
||||
continue
|
||||
if line.startswith(" - "):
|
||||
results.append(line[4:].strip())
|
||||
continue
|
||||
if line and not line.startswith(" "):
|
||||
break
|
||||
return results
|
||||
|
||||
|
||||
def current_scratch_subgoal() -> str | None:
|
||||
lines = read_text(SCRATCH_PATH).splitlines()
|
||||
for index, line in enumerate(lines):
|
||||
if line.strip() != "## Current Subgoal":
|
||||
continue
|
||||
for candidate in lines[index + 1 :]:
|
||||
stripped = candidate.strip()
|
||||
if stripped:
|
||||
return stripped
|
||||
return None
|
||||
|
||||
|
||||
def load_evidence() -> list[dict[str, Any]]:
|
||||
records: list[dict[str, Any]] = []
|
||||
for line_number, line in enumerate(read_text(EVIDENCE_PATH).splitlines(), start=1):
|
||||
if not line.strip():
|
||||
continue
|
||||
try:
|
||||
record = json.loads(line)
|
||||
except json.JSONDecodeError as exc:
|
||||
raise ValueError(f"evidence line {line_number} is invalid JSON: {exc}") from exc
|
||||
if not isinstance(record, dict):
|
||||
raise ValueError(f"evidence line {line_number} is not a JSON object")
|
||||
records.append(record)
|
||||
return records
|
||||
|
||||
|
||||
def load_branches() -> dict[str, Any]:
|
||||
data = json.loads(read_text(BRANCHES_PATH))
|
||||
if not isinstance(data, dict):
|
||||
raise ValueError("branches.json must be a JSON object")
|
||||
branches = data.get("branches")
|
||||
if not isinstance(branches, list):
|
||||
raise ValueError("branches.json must contain a branches list")
|
||||
return data
|
||||
|
||||
|
||||
def add_required_file_checks(findings: list[Finding]) -> None:
|
||||
for path in [
|
||||
MAP_PATH,
|
||||
SCRATCH_PATH,
|
||||
BRANCHES_PATH,
|
||||
EVIDENCE_PATH,
|
||||
HANDOFF_PATH,
|
||||
PLAN_PATH,
|
||||
SYSTEM_MAP_PATH,
|
||||
AGENTS_PATH,
|
||||
]:
|
||||
if path.exists():
|
||||
findings.append(Finding("ok", f"found {path.relative_to(ROOT)}"))
|
||||
else:
|
||||
findings.append(Finding("error", f"missing {path.relative_to(ROOT)}"))
|
||||
|
||||
|
||||
def add_content_checks(findings: list[Finding]) -> tuple[list[dict[str, Any]], dict[str, Any]]:
|
||||
evidence: list[dict[str, Any]] = []
|
||||
branches: dict[str, Any] = {}
|
||||
|
||||
summary = extract_map_field("summary")
|
||||
next_action = extract_map_field("next_action")
|
||||
if summary:
|
||||
findings.append(Finding("ok", "state/map.yaml has current_status.summary"))
|
||||
else:
|
||||
findings.append(Finding("error", "state/map.yaml is missing current_status.summary"))
|
||||
if next_action:
|
||||
findings.append(Finding("ok", "state/map.yaml has current_status.next_action"))
|
||||
else:
|
||||
findings.append(Finding("error", "state/map.yaml is missing current_status.next_action"))
|
||||
|
||||
subgoals = extract_active_subgoals()
|
||||
if subgoals:
|
||||
findings.append(Finding("ok", f"state/map.yaml has {len(subgoals)} active subgoal(s)"))
|
||||
else:
|
||||
findings.append(Finding("warn", "state/map.yaml has no active_subgoals entries"))
|
||||
|
||||
scratch_subgoal = current_scratch_subgoal()
|
||||
if scratch_subgoal == "No active scratch subgoal.":
|
||||
findings.append(Finding("ok", "state/scratch.md has no stale active scratch subgoal"))
|
||||
elif scratch_subgoal:
|
||||
findings.append(Finding("warn", f"state/scratch.md has active scratch subgoal: {scratch_subgoal}"))
|
||||
else:
|
||||
findings.append(Finding("warn", "state/scratch.md has no Current Subgoal value"))
|
||||
|
||||
try:
|
||||
evidence = load_evidence()
|
||||
findings.append(Finding("ok", f"state/evidence.jsonl parses ({len(evidence)} record(s))"))
|
||||
except ValueError as exc:
|
||||
findings.append(Finding("error", str(exc)))
|
||||
|
||||
if EVIDENCE_PATH.exists() and EVIDENCE_PATH.stat().st_size > 25_000:
|
||||
findings.append(Finding("warn", "state/evidence.jsonl is larger than 25 KB; consider distillation"))
|
||||
|
||||
try:
|
||||
branches = load_branches()
|
||||
active = [
|
||||
branch
|
||||
for branch in branches.get("branches", [])
|
||||
if isinstance(branch, dict) and branch.get("status") == "active"
|
||||
]
|
||||
findings.append(Finding("ok", f"state/branches.json parses ({len(active)} active branch(es))"))
|
||||
except (json.JSONDecodeError, ValueError) as exc:
|
||||
findings.append(Finding("error", f"branches.json parse failed: {exc}"))
|
||||
|
||||
return evidence, branches
|
||||
|
||||
|
||||
def add_handoff_checks(findings: list[Finding]) -> None:
|
||||
text = read_text(HANDOFF_PATH)
|
||||
stale_branch = re.search(r"Current branch before .*ahead \d+", text)
|
||||
stale_head = re.search(r"Current HEAD before .*\b[0-9a-f]{7,40}\b", text)
|
||||
if stale_branch or stale_head:
|
||||
findings.append(Finding("error", "handoff embeds an exact branch or HEAD snapshot; use git commands instead"))
|
||||
else:
|
||||
findings.append(Finding("ok", "handoff avoids exact branch or HEAD snapshots"))
|
||||
|
||||
required_phrases = [
|
||||
"Do not continue implementation automatically from a rehydrate-only request.",
|
||||
"Do not trust this file for the exact live HEAD.",
|
||||
"Immediate Re-entry Instruction",
|
||||
]
|
||||
for phrase in required_phrases:
|
||||
if phrase in text:
|
||||
findings.append(Finding("ok", f"handoff contains: {phrase}"))
|
||||
else:
|
||||
findings.append(Finding("warn", f"handoff missing: {phrase}"))
|
||||
|
||||
|
||||
def add_agents_checks(findings: list[Finding]) -> None:
|
||||
text = read_text(AGENTS_PATH)
|
||||
if "prepare_compaction.py" in text:
|
||||
findings.append(Finding("ok", "AGENTS.md tells agents to use the compaction helper"))
|
||||
else:
|
||||
findings.append(Finding("error", "AGENTS.md does not mention tools/prepare_compaction.py"))
|
||||
if "prepare for imminent compaction" in text.lower():
|
||||
findings.append(Finding("ok", "AGENTS.md names the imminent-compaction trigger"))
|
||||
else:
|
||||
findings.append(Finding("warn", "AGENTS.md does not name the imminent-compaction trigger phrase"))
|
||||
|
||||
|
||||
def add_git_checks(findings: list[Finding]) -> tuple[str, str]:
|
||||
status = run_git(["status", "--short", "--branch"])
|
||||
try:
|
||||
log = run_git(["log", "--oneline", "-5"])
|
||||
except subprocess.CalledProcessError:
|
||||
log = "(no commits yet)"
|
||||
dirty_lines = [
|
||||
line
|
||||
for line in status.splitlines()[1:]
|
||||
if line.strip()
|
||||
]
|
||||
if dirty_lines:
|
||||
findings.append(Finding("warn", "git worktree has uncommitted changes; commit or explain before compaction"))
|
||||
else:
|
||||
findings.append(Finding("ok", "git worktree is clean"))
|
||||
return status, log
|
||||
|
||||
|
||||
def render_report(findings: list[Finding], status: str, log: str, evidence: list[dict[str, Any]]) -> str:
|
||||
summary = extract_map_field("summary") or "(missing)"
|
||||
next_action = extract_map_field("next_action") or "(missing)"
|
||||
subgoals = extract_active_subgoals()
|
||||
|
||||
counts = {
|
||||
"ok": sum(1 for finding in findings if finding.level == "ok"),
|
||||
"warn": sum(1 for finding in findings if finding.level == "warn"),
|
||||
"error": sum(1 for finding in findings if finding.level == "error"),
|
||||
}
|
||||
|
||||
lines = [
|
||||
"Eusocial Interbeing pre-compaction persistence check",
|
||||
f"Workspace: {ROOT}",
|
||||
f"Findings: {counts['ok']} ok, {counts['warn']} warn, {counts['error']} error",
|
||||
"",
|
||||
"Git status:",
|
||||
status,
|
||||
"",
|
||||
"Recent commits:",
|
||||
log,
|
||||
"",
|
||||
f"Summary: {summary}",
|
||||
f"Next action: {next_action}",
|
||||
]
|
||||
if subgoals:
|
||||
lines.append("Active subgoals:")
|
||||
lines.extend(f"- {item}" for item in subgoals)
|
||||
if evidence:
|
||||
latest = evidence[-1]
|
||||
lines.extend(
|
||||
[
|
||||
"",
|
||||
"Latest distilled evidence:",
|
||||
f"- {latest.get('ts', '(missing ts)')} {latest.get('type', '(missing type)')}/{latest.get('status', '(missing status)')}: {latest.get('note', '(missing note)')}",
|
||||
]
|
||||
)
|
||||
|
||||
lines.append("")
|
||||
lines.append("Findings:")
|
||||
for finding in findings:
|
||||
lines.append(f"[{finding.level.upper()}] {finding.message}")
|
||||
|
||||
lines.extend(
|
||||
[
|
||||
"",
|
||||
"Pre-compaction checklist:",
|
||||
"- Update state/map.yaml only if current understanding changed.",
|
||||
"- Refresh notes/fresh-workspace-handoff.md if re-entry instructions changed.",
|
||||
"- Add distilled evidence only for a belief-changing lesson, verification, rejected path, or scar.",
|
||||
"- Keep exact branch or HEAD out of handoff prose; git commands own volatile truth.",
|
||||
"- Commit completed persistence changes, or state why the worktree must stay dirty.",
|
||||
"- Re-run this helper after edits before yielding to compaction.",
|
||||
]
|
||||
)
|
||||
return "\n".join(lines)
|
||||
|
||||
|
||||
def build_parser() -> argparse.ArgumentParser:
|
||||
parser = argparse.ArgumentParser(
|
||||
description="Audit Eusocial Interbeing vault persistent state before imminent compaction."
|
||||
)
|
||||
parser.add_argument(
|
||||
"--strict",
|
||||
action="store_true",
|
||||
help="Exit nonzero on warnings as well as errors.",
|
||||
)
|
||||
return parser
|
||||
|
||||
|
||||
def main() -> int:
|
||||
args = build_parser().parse_args()
|
||||
findings: list[Finding] = []
|
||||
evidence: list[dict[str, Any]] = []
|
||||
|
||||
add_required_file_checks(findings)
|
||||
try:
|
||||
evidence, _branches = add_content_checks(findings)
|
||||
except OSError as exc:
|
||||
findings.append(Finding("error", f"state content check failed: {exc}"))
|
||||
try:
|
||||
add_handoff_checks(findings)
|
||||
except OSError as exc:
|
||||
findings.append(Finding("error", f"handoff check failed: {exc}"))
|
||||
try:
|
||||
add_agents_checks(findings)
|
||||
except OSError as exc:
|
||||
findings.append(Finding("error", f"AGENTS check failed: {exc}"))
|
||||
try:
|
||||
status, log = add_git_checks(findings)
|
||||
except (OSError, subprocess.CalledProcessError) as exc:
|
||||
findings.append(Finding("error", f"git check failed: {exc}"))
|
||||
status = "(git status unavailable)"
|
||||
log = "(git log unavailable)"
|
||||
|
||||
print(render_report(findings, status, log, evidence))
|
||||
|
||||
has_error = any(finding.level == "error" for finding in findings)
|
||||
has_warning = any(finding.level == "warn" for finding in findings)
|
||||
if has_error or (args.strict and has_warning):
|
||||
return 1
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
raise SystemExit(main())
|
||||
179
tools/setting_state.py
Normal file
179
tools/setting_state.py
Normal file
|
|
@ -0,0 +1,179 @@
|
|||
from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
import json
|
||||
from datetime import datetime, timezone
|
||||
from pathlib import Path
|
||||
from typing import Any
|
||||
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[1]
|
||||
STATE_DIR = ROOT / "state"
|
||||
MAP_PATH = STATE_DIR / "map.yaml"
|
||||
BRANCHES_PATH = STATE_DIR / "branches.json"
|
||||
EVIDENCE_PATH = STATE_DIR / "evidence.jsonl"
|
||||
|
||||
|
||||
def read_text(path: Path) -> str:
|
||||
return path.read_text(encoding="utf-8-sig")
|
||||
|
||||
|
||||
def write_text(path: Path, content: str) -> None:
|
||||
path.write_text(content, encoding="utf-8")
|
||||
|
||||
|
||||
def load_branches() -> dict[str, Any]:
|
||||
return json.loads(read_text(BRANCHES_PATH))
|
||||
|
||||
|
||||
def save_branches(data: dict[str, Any]) -> None:
|
||||
write_text(BRANCHES_PATH, json.dumps(data, indent=2) + "\n")
|
||||
|
||||
|
||||
def append_evidence(record: dict[str, Any]) -> None:
|
||||
with EVIDENCE_PATH.open("a", encoding="utf-8") as handle:
|
||||
handle.write(json.dumps(record, ensure_ascii=True) + "\n")
|
||||
|
||||
|
||||
def utc_stamp() -> str:
|
||||
return datetime.now(timezone.utc).replace(microsecond=0).isoformat()
|
||||
|
||||
|
||||
def extract_map_field(name: str) -> str | None:
|
||||
prefix = f" {name}:"
|
||||
for line in read_text(MAP_PATH).splitlines():
|
||||
if line.startswith(prefix):
|
||||
return line.split(":", 1)[1].strip()
|
||||
return None
|
||||
|
||||
|
||||
def extract_active_subgoals() -> list[str]:
|
||||
lines = read_text(MAP_PATH).splitlines()
|
||||
results: list[str] = []
|
||||
in_section = False
|
||||
for line in lines:
|
||||
if not in_section:
|
||||
if line.strip() == "active_subgoals:":
|
||||
in_section = True
|
||||
continue
|
||||
if line.startswith(" - "):
|
||||
results.append(line[4:].strip())
|
||||
continue
|
||||
if line and not line.startswith(" "):
|
||||
break
|
||||
return results
|
||||
|
||||
|
||||
def cmd_status(_: argparse.Namespace) -> int:
|
||||
branches = load_branches().get("branches", [])
|
||||
active = [branch for branch in branches if branch.get("status") == "active"]
|
||||
summary = extract_map_field("summary") or "(missing)"
|
||||
next_action = extract_map_field("next_action") or "(missing)"
|
||||
subgoals = extract_active_subgoals()
|
||||
|
||||
print(f"Workspace: {ROOT}")
|
||||
print(f"Summary: {summary}")
|
||||
print(f"Next action: {next_action}")
|
||||
print(f"Active branches: {len(active)} / {len(branches)}")
|
||||
if subgoals:
|
||||
print("Active subgoals:")
|
||||
for item in subgoals:
|
||||
print(f"- {item}")
|
||||
return 0
|
||||
|
||||
|
||||
def cmd_add_evidence(args: argparse.Namespace) -> int:
|
||||
record: dict[str, Any] = {
|
||||
"ts": utc_stamp(),
|
||||
"type": args.type,
|
||||
"status": args.status,
|
||||
"note": args.note,
|
||||
}
|
||||
if args.branch:
|
||||
record["branch"] = args.branch
|
||||
append_evidence(record)
|
||||
print("Appended evidence record.")
|
||||
return 0
|
||||
|
||||
|
||||
def cmd_add_branch(args: argparse.Namespace) -> int:
|
||||
data = load_branches()
|
||||
branches = data.setdefault("branches", [])
|
||||
if any(branch.get("id") == args.id for branch in branches):
|
||||
raise SystemExit(f"Branch '{args.id}' already exists.")
|
||||
branches.append(
|
||||
{
|
||||
"id": args.id,
|
||||
"hypothesis": args.hypothesis,
|
||||
"status": "active",
|
||||
"artifacts": args.artifact or [],
|
||||
"notes": args.note or "",
|
||||
}
|
||||
)
|
||||
save_branches(data)
|
||||
print(f"Added branch '{args.id}'.")
|
||||
return 0
|
||||
|
||||
|
||||
def cmd_close_branch(args: argparse.Namespace) -> int:
|
||||
data = load_branches()
|
||||
for branch in data.get("branches", []):
|
||||
if branch.get("id") != args.id:
|
||||
continue
|
||||
branch["status"] = args.status
|
||||
if args.note:
|
||||
branch["notes"] = args.note
|
||||
save_branches(data)
|
||||
print(f"Updated branch '{args.id}' to status '{args.status}'.")
|
||||
return 0
|
||||
raise SystemExit(f"Branch '{args.id}' was not found.")
|
||||
|
||||
|
||||
def build_parser() -> argparse.ArgumentParser:
|
||||
parser = argparse.ArgumentParser(
|
||||
description="Inspect and update Eusocial Interbeing vault state files."
|
||||
)
|
||||
subparsers = parser.add_subparsers(dest="command", required=True)
|
||||
|
||||
status_parser = subparsers.add_parser("status", help="Show a compact state summary.")
|
||||
status_parser.set_defaults(func=cmd_status)
|
||||
|
||||
evidence_parser = subparsers.add_parser(
|
||||
"add-evidence", help="Append one distilled JSONL evidence record."
|
||||
)
|
||||
evidence_parser.add_argument("--type", required=True)
|
||||
evidence_parser.add_argument("--status", required=True)
|
||||
evidence_parser.add_argument("--note", required=True)
|
||||
evidence_parser.add_argument("--branch")
|
||||
evidence_parser.set_defaults(func=cmd_add_evidence)
|
||||
|
||||
add_branch_parser = subparsers.add_parser(
|
||||
"add-branch", help="Create a new active branch entry."
|
||||
)
|
||||
add_branch_parser.add_argument("--id", required=True)
|
||||
add_branch_parser.add_argument("--hypothesis", required=True)
|
||||
add_branch_parser.add_argument("--artifact", action="append")
|
||||
add_branch_parser.add_argument("--note")
|
||||
add_branch_parser.set_defaults(func=cmd_add_branch)
|
||||
|
||||
close_branch_parser = subparsers.add_parser(
|
||||
"close-branch", help="Close an existing branch."
|
||||
)
|
||||
close_branch_parser.add_argument("--id", required=True)
|
||||
close_branch_parser.add_argument(
|
||||
"--status", required=True, choices=["accepted", "rejected", "archived"]
|
||||
)
|
||||
close_branch_parser.add_argument("--note")
|
||||
close_branch_parser.set_defaults(func=cmd_close_branch)
|
||||
|
||||
return parser
|
||||
|
||||
|
||||
def main() -> int:
|
||||
parser = build_parser()
|
||||
args = parser.parse_args()
|
||||
return args.func(args)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
raise SystemExit(main())
|
||||
Loading…
Reference in a new issue