Asi zulip-cogen

Zulip Cogen Skill 🐸⚑

install
source Β· Clone the upstream repo
git clone https://github.com/plurigrid/asi
Claude Code Β· Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/plurigrid/asi "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/zulip-cogen" ~/.claude/skills/plurigrid-asi-zulip-cogen-d983aa && rm -rf "$T"
manifest: skills/zulip-cogen/SKILL.md
source content

Zulip Cogen Skill 🐸⚑

Trit: +1 (PLUS - Generator) GF(3) Triad:

dynamic-sufficiency (-1) βŠ— proof-of-frog (0) βŠ— zulip-cogen (+1) = 0

Overview

Code generator from Category Theory Zulip knowledge base with dynamic sufficiency gating. Transforms 121k messages into executable artifacts only when sufficient context is verified via Ξ΅-machine coverage.

"No generation without sufficient witness. The Ξ΅-machine observes, the gate permits."

Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    ZULIP COGEN                          β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚  INPUT                    OUTPUT                        β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
β”‚  β”‚ CT Zulip     │───────▢│ Lean4 proofs            β”‚   β”‚
β”‚  β”‚ 121k msgs    β”‚        β”‚ Mermaid diagrams        β”‚   β”‚
β”‚  β”‚ 81 ponds     β”‚        β”‚ Julia/Python impls      β”‚   β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜        β”‚ ACSet schemas           β”‚   β”‚
β”‚                          β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Generation Modes

ModeInputOutput
proof
Math discussionLean4 theorem
diagram
Category descriptionMermaid/tikzcd
impl
Algorithm discussionJulia/Python code
schema
Data structure talkACSet definition
skill
Topic clusterSKILL.md

Usage

# Generate Lean4 proof from discussion
zulip-cogen proof "adjoint functors" --pond theory:-category-theory

# Generate diagram from thread
zulip-cogen diagram --thread-id 12345 --format mermaid

# Generate implementation
zulip-cogen impl "kan extension" --lang julia

# Generate ACSet schema
zulip-cogen schema "simplicial sets" 

# Generate skill from pond
zulip-cogen skill --pond theory:-topos-theory

Example Generations

Proof Mode

Input: Discussion about "left adjoints preserve colimits"
Output:
```lean
theorem left_adjoint_preserves_colimits 
    {C D : Category} (F : Functor C D) (G : Functor D C)
    (adj : F ⊣ G) : PreservesColimits F := by
  intro J K c hc
  exact adj.leftAdjointPreservesColimits c hc

Diagram Mode

Input: "The Yoneda embedding is fully faithful"
Output:
```mermaid
graph LR
    C[C] -->|y| PSh["[Cα΅’α΅–, Set]"]
    subgraph "Yoneda"
        y["y: C β†’ Hom(-, C)"]
    end
    style y fill:#08bed5

Implementation Mode

Input: Discussion on "computing left Kan extensions"
Output:
```julia
function left_kan(F::Functor, K::Functor)
    # Lan_K(F)(d) = colim_{(c,k) ∈ (K↓d)} F(c)
    d -> begin
        comma = comma_category(K, d)
        colimit(c -> F(c.source), comma)
    end
end

Pipeline

class ZulipCogen:
    def __init__(self, db_path: str):
        self.db = duckdb.connect(db_path)
        self.gay_seed = 0x6761795f636f6c6f
    
    def generate(self, mode: str, query: str, **kwargs) -> str:
        # 1. Retrieve relevant messages
        context = self.retrieve(query, kwargs.get('pond'))
        
        # 2. Extract structure
        structure = self.extract_structure(context, mode)
        
        # 3. Generate artifact
        return self.synthesize(structure, mode, kwargs.get('lang'))
    
    def retrieve(self, query: str, pond: str = None) -> List[Message]:
        sql = """
            SELECT content, sender, color 
            FROM ct_zulip_messages m
            JOIN ct_zulip_streams s ON m.stream_id = s.id
            WHERE m.content LIKE ?
        """
        if pond:
            sql += " AND s.name LIKE ?"
        return self.db.execute(sql, params).fetchall()

Dynamic Sufficiency Integration

Ξ΅-Machine Gating

Before ANY generation, verify sufficient context:

def pre_generation_gate(query: str, mode: str) -> Verdict:
    """Gate generation on sufficient Zulip context."""
    messages = retrieve(query)
    coverage = compute_coverage(query, messages)
    
    if coverage.score >= 0.7:  # 70% threshold for generation
        return Verdict.PROCEED
    elif coverage.score >= 0.3:
        return Verdict.WARN(f"Low coverage: {coverage.score:.0%}")
    else:
        return Verdict.ABORT(f"Insufficient context: {len(messages)} msgs")

Causal States for Generation

Causal StateRequired CoverageArtifact
PROOF_READY
3+ math discussionsLean4 theorem
DIAGRAM_READY
2+ structural mentionsMermaid
IMPL_READY
5+ code referencesJulia/Python
SCHEMA_READY
3+ type discussionsACSet

Variational Bound

min(sufficiency) ≀ generation ≀ max(fanout)

dynamic-sufficiency GATES: Prevents generation without context
zulip-cogen GENERATES: Synthesizes artifacts from sufficient context

Frog Lifecycle as Cogen Pipeline

StageTritCogen PhaseSufficiency Check
πŸ₯’ TADPOLE-1Retrieve contextΞ΅-machine inference
🐸 FROGLET0Extract structureCoverage β‰₯ 0.7
🦎 MATURE+1Synthesize artifactGenerate if sufficient

Integration with Skills

Generated artifacts feed back into skill ecosystem:

zulip-cogen skill --pond theory:-type-theory
    ↓
~/.claude/skills/type-theory-ct/SKILL.md
    ↓
proof-of-frog verifies GF(3) balance

Gay.jl Coloring

Each generation gets deterministic color based on query hash:

def generation_color(query: str, mode: str) -> str:
    h = fnv1a(f"{query}:{mode}")
    seed = splitmix64(GAY_SEED ^ h)
    return seed_to_color(seed)

Files

PathPurpose
~/ies/hatchery.duckdb
CT Zulip archive
~/ies/zulip_cogen.py
Generator implementation
~/.claude/skills/zulip-cogen/
Skill definition

References

SDF Interleaving

This skill connects to Software Design for Flexibility (Hanson & Sussman, 2021):

Primary Chapter: 3. Variations on an Arithmetic Theme

Concepts: generic arithmetic, coercion, symbolic, numeric

GF(3) Balanced Triad

zulip-cogen (+) + SDF.Ch3 (β—‹) + [balancer] (βˆ’) = 0

Skill Trit: 1 (PLUS - generation)

Secondary Chapters

  • Ch6: Layering

Connection Pattern

Generic arithmetic crosses type boundaries. This skill handles heterogeneous data.