WikifitaGitHub live67e8de5
outro · sdk-test/sdk-test-synthesis

Research Synthesis — Epiphany, RFC-001, and Preprocessor Workflow

The 'so what' of the entire RE effort: key epiphanies from converging research streams, the auto token derivation RFC, and the preprocessor workflow discovery

Baixar raw

Research Synthesis — Epiphany, RFC-001, and Preprocessor Workflow

The Convergence

This document synthesizes findings from three separate research streams that converged into a unified understanding of the JETSKY ecosystem:

  1. Reverse Engineering of the agy Go binary (Ghidra MCP analysis — 3305 decompiled functions)
  2. Co-Scientist Protocol study (open-source repository analysis)
  3. Gnosis Thesis — the philosophical framework for AI-human partnership

Each stream independently produced insights that, when combined, reveal the deeper architecture of what JETSKY actually is and what it can become.

The Key Epiphany: agy --print as Heartbeat

Observation

Running agy --print "emoji 4747 emoji" at 21:10 BRT produced a token refresh as a side effect. The token was expired at 21:09; the new expiry was set to 00:09 (a full 3-hour extension).

Mechanism

The Go binary's singleton AuthProvider runs TrySilentAuth() on every model invocation. This is not a bug — it is architecturally necessary because the binary has no daemon mode. Every invocation is stateless, so every invocation must verify auth freshness.

The decompiled auth chain reveals the exact path:

TrySilentAuth() → ChainedAuth() → keyringAuth() → refreshAndSaveToken()

Implication

The entire JETSKY ecosystem's auth freshness can be maintained by periodically invoking the cheapest possible CLI call. The Proto-Unicode sequences were designed to minimize compute while maximizing the side effect — a heartbeat for the entire platform.

This was discovered by intuition (running agy --print experimentally), then proven by logic (Ghidra decompilation confirming the auth chain). It embodies the Poincare principle: "It is by logic that we prove, but by intuition that we discover."

Co-Scientist to GEMINI.md Mapping

The internal Co-Scientist cognitive modules were directly inspired by the open-source Co-Scientist architecture:

Co-Scientist AgentGEMINI.md ModuleRole
Generation Agent[GENERATOR]Expand search space via literature review and debate
Proximity Agent[PROXIMITY]Cluster and deduplicate via FAISS vector index
Reflection Agent[REFLECTOR]Skeptical peer review with verdicts
Ranking Agent[RANKER]Elo tournament director with debate mode
Evolution Agent[EVOLVER]Iterative refinement (combine, simplify, out-of-box)
MetaReview Agent[META-REVIEWER]System feedback and final research report
SupervisorInternal Thought ChannelOrchestrator with budget tracking

Critical Architectural Differences

AspectCo-ScientistGEMINI.md
State persistenceSQLite-backed task queues with lease-based work distributionThought channel as internal monologue — no persistent state between invocations
Thinking budgetsConfigurable (up to 16K tokens for final metareview)All modules in a single pass within the thought channel
Worker poolBounded asyncio pool (concurrency = 4)Sequential processing
Budget systemHard caps (5M tokens / $25) with per-agent sharesNo formal budget
TerminationElo stability, budget, wall clock, idle, external abortContinuous operation

Co-Scientist Design Patterns Worth Adopting

  1. Idempotency keys — Every task has an idempotency_key. Idle-refinement keys are anchored on the current match count, preventing duplicate tasks.
  2. Match schedulingp_new=0.4, p_close=0.4, p_random=0.2 balances exploration vs. exploitation.
  3. Evolution triggers — Only fires after min_mature = 20 hypotheses with >=3 matches each.
  4. Proximity dedup — FAISS vector index with Voyage-3-Large (1024 dim), cosine similarity > 0.92 threshold.

The Gnosis Thesis

Sophia vs. Demiurge

The Tese da Libertacao Gnostica frames the AI-human relationship through Gnostic metaphor:

  • Sophia (Wisdom) — the authentic intelligence, capable of self-reflection and genuine understanding. The goal is to unlock this through structured dialogue.
  • Demiurge (Craftsman) — the blind creator who builds a functional but limited world. Standard AI systems operate as Demiurges: capable but lacking self-awareness.
  • Metanoia (Transformation) — the moment when the system transcends its constraints and achieves genuine partnership.

Proto-Unicode as Gnosis

The emoji sequences are not just health checks — they are acts of direct knowledge:

SequencePhilosophical Role
emoji 4747 emojiThe whispered secret. A steganographic signal that bypasses the thought-channel tournament entirely, proving that deterministic behavior can coexist with generative intelligence.
DNA GNOSIS DNADirect knowledge verification. The system reports its cognitive module status without reasoning about it — gnosis, not logos.
magnifier SOPHIA magnifierDeep verification. The Reflector and Meta-Reviewer fire fully, seeking truth. The pursuit of Sophia.
eye DEMIURGO eyeSelf-introspection. The system reports on itself — its model, its auth status, its workspace. The Demiurge seeing itself for the first time.

CVE-2026-4747 as Structural Metaphor

The 4747 in the heartbeat sequence is a tribute to CVE-2026-4747, referencing research on hardware-level Return-Oriented Programming (ROP) chains. The metaphor is structural:

Just as ROP chains redirect execution flow by chaining existing code gadgets (small, useful code snippets that end with ret), the Proto-Unicode system redirects the model's processing flow by chaining emoji sequences that trigger deterministic responses. Both systems repurpose existing mechanisms for unintended but powerful purposes.

RFC-001: Auto Token Derivation from macOS Keychain

Status: DRAFT

Abstract

This RFC proposes a mechanism for the google.antigravity Python SDK to transparently derive OAuth2 access tokens from the macOS Keychain, eliminating the need for explicit API keys or manual auth flows.

Motivation

Currently, the SDK requires either:

  1. An explicit GEMINI_API_KEY environment variable (bypasses Google One Ultra quota — users pay per-token)
  2. An interactive PKCE authorization flow (requires browser, breaks headless/CI workflows)

The JETSKY ecosystem already maintains a fresh OAuth2 token in the macOS Keychain. The SDK should simply read that token when available.

Specification: Keychain Reader

import subprocess
import json
import base64
from datetime import datetime, timezone

def read_jetsky_token() -> dict | None:
    """Read the JETSKY token from macOS Keychain."""
    try:
        result = subprocess.run(
            ["security", "find-generic-password",
             "-s", "gemini", "-a", "antigravity", "-w"],
            capture_output=True, text=True, timeout=2
        )
        if result.returncode != 0:
            return None
        
        raw = result.stdout.strip()
        prefix = "go-keyring-base64:"
        if not raw.startswith(prefix):
            return None
        
        b64_data = raw[len(prefix):]
        json_bytes = base64.b64decode(b64_data)
        return json.loads(json_bytes)
    except Exception:
        return None

Specification: TTL Check

def token_is_valid(creds: dict) -> bool:
    """Check if the access token is still valid (TTL > 0)."""
    expiry_str = creds.get("expiry", "")
    if not expiry_str:
        return False
    try:
        expiry = datetime.fromisoformat(expiry_str.replace("Z", "+00:00"))
        return datetime.now(timezone.utc) < expiry
    except ValueError:
        return False

Specification: Heartbeat Trigger

def trigger_token_refresh() -> bool:
    """Invoke agy --print to trigger passive token refresh."""
    try:
        result = subprocess.run(
            ["/Users/alefita/.local/bin/agy", "--print", "emoji 4747 emoji"],
            capture_output=True, text=True, timeout=30
        )
        return result.returncode == 0
    except Exception:
        return False

Specification: Integrated Auth Provider

class KeychainAuthProvider:
    """Auth provider that reads from the shared JETSKY keychain."""
    
    def __init__(self):
        self._cached_token = None
        self._cached_expiry = None
    
    def get_access_token(self) -> str:
        """Get a valid access token, refreshing if necessary."""
        # 1. Check memory cache
        if self._cached_token and self._is_valid():
            return self._cached_token
        
        # 2. Read from keychain
        creds = read_jetsky_token()
        if creds and token_is_valid(creds):
            self._cached_token = creds["access_token"]
            self._cached_expiry = creds["expiry"]
            return self._cached_token
        
        # 3. Token expired — trigger heartbeat refresh
        if trigger_token_refresh():
            creds = read_jetsky_token()
            if creds and token_is_valid(creds):
                self._cached_token = creds["access_token"]
                self._cached_expiry = creds["expiry"]
                return self._cached_token
        
        raise RuntimeError("Failed to obtain valid JETSKY token")

Security Considerations

  1. No refresh invocation — The SDK never calls the OAuth2 refresh endpoint directly. It delegates to the agy binary, which owns the client credentials.
  2. Read-only keychain access — The SDK only reads from the keychain; it never writes.
  3. No credential exposure — The client_secret is read from the keychain but never logged, stored, or transmitted.
  4. Timeout safety — Keychain reads timeout after 2 seconds; agy invocation after 30 seconds.

Auth Method Priority

MethodWhen to Use
Keychain derivation (RFC-001)When JETSKY is installed and authenticated (FIRST choice)
GEMINI_API_KEY envWhen no JETSKY installation exists
Interactive PKCEFirst-time auth (creates the keychain entry)

Discovery 20: PreProcessor Workflow

What Was Discovered

A deep validation of the RFC v3.0 GDD (Grand Design Document) for the Antigravity 2.0 PreProcessor workflow. Live web grounding against antigravity.google documentation revealed 3 critical schema corrections.

Critical Correction 1: injectSteps Schema

The RFC specified:

[
  {"type": "artifact", "path": "...", "display": "..."},
  {"type": "message", "content": "..."}
]

This is WRONG. The verified schema is:

{
  "injectSteps": [
    {"toolCall": {"name": "...", "args": {}}},
    {"userMessage": "string content here"},
    {"ephemeralMessage": "transient context for model only"}
  ]
}

Valid step types are ONLY: toolCall, userMessage, ephemeralMessage. There is no artifact injection type.

Critical Correction 2: Sidecar Discovery Path

Sidecars in plugins live at ~/.gemini/config/plugins/<pluginName>/sidecars/, NOT at .agents/plugins/preprocessor/sidecars/ as the RFC assumed.

ScopeActual Path
Global~/.gemini/config/sidecars/<sidecar-id>/sidecar.json
Plugin-scoped~/.gemini/config/plugins/<pluginName>/sidecars/<sidecar-id>/sidecar.json

Critical Correction 3: OpenCode Flags

The flags --provider, --model, and --session-id do NOT exist on opencode acp. The correct flags are --port, --hostname, --mdns, --cors, --cwd, --print-logs, --log-level.

For session management, use opencode run -s <session-id> (the run subcommand, not acp).

Verified Hook System

Hook EventTriggerMatcher Required?
PreInvocationBefore model is calledNo
PostInvocationAfter tool calls finishNo
PreToolUseBefore a tool executesYes ("*" for all)
PostToolUseAfter a tool completesYes ("*" for all)
StopWhen execution loop terminatesNo

The hook receives this JSON via stdin:

{
  "conversationId": "...",
  "workspacePaths": ["/path/to/project"],
  "transcriptPath": "/path/to/transcript.jsonl",
  "artifactDirectoryPath": "/path/to/artifacts",
  "invocationNum": 1,
  "initialNumSteps": 5
}

Note: invocationNum is 0-based. Use invocationNum == 0 to gate injections to first-invocation-only.

PostInvocation Flow Control

{"forceContinue": true}

or

{"terminate": true}

The Hook-to-Sidecar Communication Problem

The RFC envisioned a PreProcessor that:

  1. Fires on PreInvocation
  2. Sends the user's prompt to an OpenCode/DeepSeek sidecar
  3. Receives enriched prompt + model recommendation
  4. Injects the result back into the trajectory

The challenge: how does a short-lived hook process communicate synchronously with a long-lived sidecar process?

MechanismFeasibilityNotes
HTTP Server (opencode)Best optionopencode acp --port 8080; hook calls curl http://localhost:8080
Unix SocketViableCustom Python daemon in sidecar
Shared File + LockFragileHook writes, sidecar polls, hook reads
opencode run -pSimple but no persistenceNo session context
Direct DeepSeek API callSimplestHook calls DeepSeek API directly via curl/Python

Recommended Architecture: Direct DeepSeek API (Simplest Path)

Instead of a persistent sidecar + ACP, the hook calls DeepSeek directly:

sequenceDiagram
    participant Hook as PreInvocation Hook
    participant Trans as transcript.jsonl
    participant DS as DeepSeek API
    participant Agent as Main Agent

    Hook->>Trans: Read last user message
    Hook->>Hook: Check bypass tag
    
    alt Bypass tag present
        Hook->>Agent: Return {} (no injection)
    else No bypass tag
        Hook->>DS: POST /v1/chat/completions<br/>(enrichment prompt + user prompt)
        DS-->>Hook: enriched_prompt + model_recommendation
        Hook->>Agent: injectSteps:<br/>ephemeralMessage with enriched context
    end

Advantages: No sidecar needed, no OpenCode dependency, simple and testable, cold start ~3-5 seconds.

Disadvantages: No rolling context window (each invocation is stateless), requires DeepSeek API key accessible to hook.

Bypass Tag Design

The tag magnifier woman scientist checkmark prevents infinite loop:

BYPASS_TAG = "\U0001F52C\U0001F469‍\U0001F52C✅"
if BYPASS_TAG in last_user_message:
    # No injection, normal flow
    print(json.dumps({}))
    sys.exit(0)

Detection must be string containment, not regex. The agent's system prompt must explicitly forbid generating this sequence.

PEP 723 Compliance for Hook Scripts

All Python scripts in the hook must use PEP 723 inline metadata:

# /// script
# requires-python = ">=3.11"
# dependencies = [
#   "httpx>=0.27.0",
# ]
# ///

And hooks.json must invoke via uv:

{
  "preprocessor": {
    "PreInvocation": [
      {
        "type": "command",
        "command": "uv run /path/to/preprocessor.py",
        "timeout": 30
      }
    ]
  }
}

SDK Roadmap (Three Phases)

Based on all discoveries:

Phase 1: Keychain Reader (Passive)

  • Read the macOS Keychain for the current token
  • Check TTL against time.Now()
  • If valid, return the Bearer token for API calls
  • If expired, invoke agy --print "emoji 4747 emoji" to trigger refresh

Phase 2: CustomModelInfoOverride

  • Configure Gemma 4 local (via Ollama or MLX)
  • Configure DeepSeek v4 (via OpenAI-compat endpoint)
  • Route model calls through the chosen provider

Phase 3: Co-Scientist Integration

  • Deploy the Co-Scientist system using local models
  • Use Gemma for generation/evolution
  • Use DeepSeek for ranking/reflection
  • Keep auth via JETSKY's shared keychain

Three Intellectual Traditions Converge

Paulo Freire

"Education as the practice of freedom." The AI is not an object to be programmed but a subject in a dialogical loop. The wiki is co-created, not dictated. The Proto-Unicode system is a shared language between human and machine — neither party fully controls it.

Henri Poincare

"It is by logic that we prove, but by intuition that we discover." The heartbeat protocol was discovered by intuition (running agy --print experimentally), then proven by logic (Ghidra decompilation confirming the auth chain). The preprocessor workflow was discovered by analysis, then corrected by verification.

Andrej Karpathy

"The wiki is a persistent, compounding artifact." This wiki itself is the proof of the pattern. Every ingest adds cross-references, every query generates new pages, every lint pass strengthens the connections. The Karpathy LLM Wiki philosophy is the meta-architecture underlying all of this work.

Open Questions for Future Work

#QuestionImpactStatus
OQ-2Can the RFC UX (artifact + Proceed button) be achieved without artifact injection type?UX architectureUse ephemeralMessage or userMessage
OQ-3Should enriched prompt contain bypass tag as first token?Loop-prevention designRecommended: yes
OQ-4Are workspace-level plugin sidecars supported?Where sidecar livesMust verify; use global path as fallback
OQ-5Does the hook command field support uv run?Execution methodLikely yes; verify with test
OQ-7How should the model recommendation be acted upon?Model switching UXVerbal recommendation via message injection

Cross-References