name: seldon-research-cycle description: Run a Streeling University automated research cycle — select department, generate question, investigate, produce course material, compound learnings
Seldon Research Cycle — Automated Department Research
Runs a full scientific research cycle for a Streeling University department. Produces beliefs, evidence, and optionally course material.
Usage
/seldon research-cycle [department] — run cycle for a specific department
/seldon research-cycle — auto-select department (least recently researched)
/seldon research-cycle all — run one cycle per department (batch mode)
Research Cycle Pipeline
1. SELECT department
↓
2. LOAD department context (weights, curriculum, gaps)
↓
3. GENERATE research question (via scientific-method.ebnf)
↓
4. INVESTIGATE via /seldon research [question]
↓
5. ASSESS conclusion → tetravalent belief (T/F/U/C)
↓
6. PRODUCE course material (if conclusion = confirm or discover_question)
↓
7. LOG cycle to state/streeling/research-cycles/{cycle_id}.json
↓
8. COMPOUND: update weights, flag gaps, trigger follow-ups
Step 1: SELECT Department
If no department specified, auto-select using priority scoring:
priority = (days_since_last_cycle * 0.4)
+ (curriculum_gap_count * 0.3)
+ (U_belief_ratio * 0.2)
+ (random_exploration * 0.1)
Load from state/streeling/university.json for the department list.
Load state/streeling/departments/{dept}.department.json for context.
Load state/streeling/departments/{dept}.weights.json for grammar weights.
If no research cycles exist yet (state/streeling/research-cycles/ is empty or missing), pick the department with the most curriculum items to maximize first-cycle value.
Step 2: LOAD Department Context
Read the department file to extract:
research_areas— the space of possible questionscurriculum— existing course topics (to avoid duplication)consumer_repos— which repos benefit from findingsrelated_departments— for interdisciplinary questions
Read the weights file to get:
hypothesis_weights— probability distribution over hypothesis strategiestest_weights— probability distribution over test methodsmetadata.cycle_count— how many cycles this department has run
Step 3: GENERATE Research Question
Sample from the scientific-method.ebnf grammar using department weights:
- Pick an
investigationpattern (observe-hypothesize-test-conclude-reflect) - Pick a
hypothesizestrategy weighted byhypothesis_weights - Pick a
testmethod weighted bytest_weights - Generate a concrete research question by:
- Selecting a research area from the department
- Checking existing curriculum to avoid duplication
- Formulating a question that the chosen test method can answer
Question quality criteria:
- Must be answerable within a single research cycle
- Must produce a belief that can be expressed as T/F/U/C
- Must relate to the department's domain
- Should build on existing curriculum (extend, not duplicate)
Step 4: INVESTIGATE
Invoke /seldon research [question] with the generated question. This triggers the existing Seldon research pipeline:
- Classify question (governance/experiential/domain)
- Check NotebookLM for existing knowledge
- Query GA domain skills if music-related
- Cross-validate with ChatGPT
- Assess confidence via tetravalent logic
Capture the full research output including:
- Evidence gathered (sources, citations)
- Cross-model agreement level
- Tetravalent assessment (T/F/U/C with confidence)
Step 5: ASSESS Conclusion
Map research output to conclude grammar production:
| Research Result | Conclusion | Belief | Action |
|---|---|---|---|
| Strong evidence for | confirm |
T | Produce course material |
| Strong evidence against | refute |
F | Log finding, update curriculum |
| Insufficient data | insufficient |
U | Schedule deeper investigation |
| Contradictory evidence | contradictory |
C | Escalate, schedule adversarial test |
| Hypothesis needs revision | revise |
U | Re-enter cycle with revised question |
| New question discovered | discover_question |
U | Spawn new cycle, produce exploratory material |
Apply the reflect production:
- If cycle_count < 5 for this department:
normal_progress(routine) - If conclusion contradicts existing beliefs:
anomaly_detected - If 3+ consecutive U results:
paradigm_tension - If finding invalidates a governance artifact:
paradigm_shift(requires human review)
Step 6: PRODUCE Course Material
Only produce if conclusion = confirm or discover_question.
Course Module Format
---
module_id: {dept-code}-{sequence}-{slug}
department: {department}
course: "{curriculum area}"
level: {beginner|intermediate|advanced}
prerequisites: []
estimated_duration: "{N} minutes"
produced_by: seldon-research-cycle
research_cycle: {cycle_id}
version: "1.0.0"
---
# {Title}
> **{Department Full Name}** | Level: {level} | Duration: {duration}
## Objectives
- [3-5 learning objectives derived from research findings]
---
## 1. {Section 1}
[Content derived from confirmed findings]
### Practice Exercise
[Hands-on exercise if applicable]
---
## Key Takeaways
- [Summary of main points]
## Further Reading
- [Links to related courses, NotebookLM notebooks, external references]
---
*Produced by Seldon Research Cycle {cycle_id} on {date}.*
*Research question: {question}*
*Belief: {value} (confidence: {confidence})*
Save to: state/streeling/courses/{department}/en/{module_id}.md
Multilingual Translation
If the department is listed in the multilingual policy (policies/multilingual-policy.yaml), also produce translations:
- Spanish:
courses/{dept}/es/{module_id}.es.md - Portuguese:
courses/{dept}/pt/{module_id}.pt.md - French:
courses/{dept}/fr/{module_id}.fr.md - Italian:
courses/{dept}/it/{module_id}.it.md - German:
courses/{dept}/de/{module_id}.de.md
Apply cultural adaptation per the multilingual policy (local music examples, regional terminology).
Step 6b: EVOLVE GRAMMAR (if applicable)
Research may reveal that the department's grammar is incomplete — a finding that cannot be expressed using existing productions. When this happens:
Detect grammar gaps:
- The research question required a concept not in any production
- The conclusion maps to a reasoning path not expressible in the grammar
- A new domain concept was discovered that the grammar cannot generate
Propose new productions:
(* Proposed by research cycle {cycle_id} *)
(* Evidence: {brief description of finding} *)
(* Confidence: {belief_confidence} *)
new_production ::= term_a | term_b | term_c
Grammar evolution rules (per grammar-evolution-policy.yaml):
- New productions start with uniform weight (1/N among siblings)
- Gate:
when T(0.7) && C(<0.1)— must have evidence, no contradictions - Log in evolution entry with citation to the research cycle
- tars
grammar_updateMCP tool handles the Bayesian weight update
When to produce grammars vs courses:
- Finding confirms existing knowledge → produce course (teach what we know)
- Finding reveals new structure → evolve grammar (formalize what we learned)
- Finding does both → produce course AND evolve grammar
- Finding contradicts grammar → flag for grammar review (paradigm tension)
Step 7: LOG Cycle
Write cycle log conforming to schemas/research-cycle.schema.json:
{
"cycle_id": "{department}-2026-03-22-001",
"department": "{department}",
"question": "{research question}",
"production_path": ["observe", "hypothesize:inductive", "test:cross_validation", "conclude:confirm", "reflect:normal_progress"],
"hypothesis": "{hypothesis text}",
"test_method": "{test method used}",
"evidence": ["evidence item 1", "evidence item 2"],
"conclusion": "confirm",
"belief_value": "T",
"belief_confidence": 0.85,
"duration_seconds": 120,
"timestamp": "2026-03-22T10:00:00Z"
}
Save to: state/streeling/research-cycles/{cycle_id}.json
Step 8: COMPOUND
Update Weights
Adjust department grammar weights based on cycle outcome:
- If conclusion =
confirm: increase weight of used hypothesis/test methods by 0.05 - If conclusion =
refuteorinsufficient: decrease by 0.03 - If conclusion =
contradictory: boostadversarialtest weight by 0.05 - Normalize weights to sum to 1.0 after adjustment
Update metadata:
- Increment
cycle_count - Increment
total_{T|F|U|C}based on belief_value - Set
last_updatedto today
Flag Curriculum Gaps
Compare confirmed findings against existing curriculum:
- If finding covers a curriculum item → mark as "researched"
- If finding reveals a topic not in curriculum → add as curriculum gap
- If 3+ gaps accumulate → recommend curriculum expansion
Evolve Grammar
Per grammar-evolution-policy.yaml:
- If grammar gap detected in Step 6b → add proposed production to
grammars/{dept-grammar}.ebnf - Update weight file with new production's initial weight
- Log grammar evolution in
state/evolution/with research cycle citation - If tars
grammar_updatetool is available, invoke it for Bayesian weight update - Track
grammar_productions_addedmetric for observability
Check Grammar Health
- If grammar freshness > 30 days → flag as stale
- If production utilization < 0.3 → flag potential grammar bloat
- If distillation_rate < 0.3 → too many manual productions, need more evidence-based evolution
Trigger Follow-Ups
discover_question→ create a new trigger instate/triggers/for the spawned questionparadigm_shift→ create a governance issue via/demerzel promoteanomaly_detected→ log conscience signal instate/conscience/signals/grammar_gap→ propose grammar evolution (Step 6b output)external_grammar_found→ add todocs/external-grammar-references.mdfor future distillation
Report
Print a summary:
Research Cycle Complete: {cycle_id}
Department: {department}
Question: {question}
Conclusion: {conclusion} ({belief_value}, confidence: {confidence})
Course produced: {yes/no — module_id if yes}
Grammar evolved: {yes/no — production added if yes}
Weight updates: {hypothesis_method} +0.05, {test_method} +0.05
Next: {follow-up action if any}
Batch Mode
When invoked with all, iterate departments in priority order (Step 1 scoring). Run one cycle per department. Print a batch summary at the end:
Batch Research Cycle Complete
Departments: 13
Cycles run: 13
Beliefs produced: T:{n} F:{n} U:{n} C:{n}
Courses produced: {n}
Grammars evolved: {n} productions added across {m} grammars
Follow-ups triggered: {n}
Governance
- This skill operates under Article 2 (Transparency) — all reasoning is logged
- Article 9 (Bounded Autonomy) — course production is bounded by department curriculum
- Streeling Policy — knowledge transfer and curriculum design
- Grammar Evolution Policy — grammars are living artifacts, evolved by research and distillation
- Confidence thresholds apply: findings below 0.5 confidence are flagged, not auto-published
- Grammar changes require
when T(0.7) && C(<0.1)gate — evidence required, no contradictions