Skip to content

Instantly share code, notes, and snippets.

@savarin
Last active July 1, 2026 06:05
Show Gist options
  • Select an option

  • Save savarin/8fe29594032fca59bbbf5f26d0edecdd to your computer and use it in GitHub Desktop.

Select an option

Save savarin/8fe29594032fca59bbbf5f26d0edecdd to your computer and use it in GitHub Desktop.
Session: What to work on during the framework rebuild — June 30, 2026

Session: What to work on during the framework rebuild — June 30, 2026

Sources

Transcripts (Obsidian vault)

Date Path
Thu Jun 25 ~/Documents/Obsidian Vault/MEETINGS/20260625-w26-thu/data-sync/FIREFLIES.md
Mon Jun 29 ~/Documents/Obsidian Vault/MEETINGS/20260629-w27-mon/data-sync/FIREFLIES.md
Tue Jun 30 ~/Documents/Obsidian Vault/MEETINGS/20260630-w27-tue/data-sync/FIREFLIES.md

GitHub PRs

PR Branch What
#18 ezzeri/eval-suite-canon-aligned Eval framework: criteria-count scoring, --human-label, eval-agreement.ts, 52 evals
#20 ezzeri/skill-eval-harness --skill flag + experiment_analysis skill evals
#21 skill-consolidation-evals Skill consolidation: 20 eval cases, 3 merged skills, migration script
#22 feat/tenant-data-store-spike Tenant data platform: D1 store, KTX semantic layer, data_analysis skill

Slack threads reviewed

Thread Channel Content
Antoine GTM thread #cy-agent GTM test setup across email, LinkedIn, Meta, Google
Cy nightly accomplishments #cy-agent June 30 nightly summary — GTM outbound report was item 4
GTM outbound report #gtm Amplemarket sequence status (contacts/sends/responses)
Chart requests #reporting 4 nyt_data_viz chart requests posted to Cy

Session logs (closure repo)

Log Content
~closure/.claude/logs/20260619-1351-agent-cy-local-dev-setup.md Local dev environment: direnv, Nix, Docker, 6PN tunnel
~closure/.claude/logs/20260621-0841-cy-eval-framework-and-soul-steering.md Built 23-eval framework, SOUL steering v1→v4
~closure/.claude/logs/20260622-1858-cy-eval-baselines-and-soul-rules.md Built PR #18: canon-aligned suite, 52 evals, criteria-count scoring
~closure/.claude/logs/20260623-1408-skill-eval-harness-and-new-evals.md Built PR #20: --skill flag, experiment_analysis skill

Task folders (closure repo)

Task Status
tasks/20260616-0907-chart-generation-training/ Complete. nyt_data_viz training — 11.5/12 baseline, Altair not validated, STOP saturation
tasks/20260616-1700-connecting-text-and-visual-to-data/ In progress. Data pillar work — pause recommended
tasks/20260621-1621-cy-usage-audit-and-eval-coverage/ In progress. PR #18 ready to merge, PR #20 stacked

Branch created this session

ezzeri/skill-consolidation-evals in ~/Development/typescript/agent-cy/ — off main at 8e990238. Contains PR #20's runner + 6 postiz eval JSONs + merged skill from PR #21.

Context

Jasper is rebuilding the agent harness (Hermes → Mastra). Bryce and Ishaan have active PRs. This session investigated what everyone is doing, how their work relates, and what Ezzeri should focus on next.

Data sync transcripts (Thu Jun 25, Mon Jun 29, Tue Jun 30)

Three Fireflies transcripts were pulled and added to the Obsidian vault.

What each person is working on

Jasper (CTO) — Rebuilding the core agent runtime. Found Mastra on Twitter Thursday night, rebuilt "a lot of our stuff" over the weekend. Building: a local TUI (Ink/React) to drive the agent without Slack, local SQS queue with exactly-once delivery, Slack adapter, and graceful deploy/draining across multiple gateways. Entirely self-initiated — announced it Monday, nobody asked for it.

Bryce — PR #22: tenant data platform. Cloudflare D1 per-tenant store, KTX semantic layer, data_analysis skill (discover → script → CSV → compute → interpret), auto-onboarding for Facebook Ads / Google Ads / Shopify. Also working on coterie inference system + assignment logic. Self-selected work.

Ishaan — PR #21: skill consolidation. Audited 84 self-authored skills, consolidating into a smaller deduplicated library. Three merges (postiz_publishing: 3→1, influencer_outreach: merged, capability_to_text_post: merged), seven extracts. 20 eval cases with a pass@k runner. Opened PR before Tuesday's standup. Self-initiated.

How work gets decided

The standup is a self-report → Jasper reacts loop across all three days. Each person states what they're already doing; Jasper acknowledges and reframes. Pattern:

  • Reframes success criteria: "your clear practical test is, can you structure the data that Antoine's already running?"
  • Appends incremental requirements to work already in motion: "what we would need is a cleanup script" (added to Ishaan's PR)
  • Answers scoping questions when asked: "I think let's just start with the skills"
  • Delegates by necessity when he's blocked: "between you and Ezzeri, you'll have to resolve it"

No instance across three days of Jasper opening with "go build X." Both engineers pick their own work.

How the three PRs run in parallel

They operate at different altitudes with almost no file overlap:

PR Layer What it touches
Jasper's rebuild Runtime/infrastructure Gateway core, SQS, Slack adapter, deploy/draining
#22 (Bryce) Data platform New packages/tenant-data-worker/, apps/gateway/semantic/, new skills
#21 (Ishaan) Skill content evals/skill-consolidation/ — eval JSONs, merged skill files, migration script

One risk: Bryce's gateway additions (src/api.ts, src/semantic.ts) may need rebasing if Jasper restructures the gateway. Jasper acknowledged this Monday: "let me worry about [deployment]."

Data pillar work assessment

Ezzeri's data pillar work (connecting-text-and-visual-to-data task) decomposes internal experiment reporting — Snowflake MD_ tables, Postgres MetricSpecs/FeatureSpecs, composable endpoints. This serves Steve and the internal team reviewing experiment outcomes.

Antoine's GTM thread (reviewed in this session) is about marketing campaign operations — Meta ads, Google ads, LinkedIn/email sequences, tracking which creative/angle/audience combos drive signups. This is upstream customer acquisition, not experiment reporting.

Bryce's data platform is actually the closer fit to Antoine's needs — it already has Facebook Ads and Google Ads semantic layer templates. If Antoine's campaign data flows through D1, Bryce's data_analysis skill could answer "which ad set is driving the most signups."

Conclusion: The data pillar work should pause until there's clarity on whether internal experiment data flows through Bryce's platform or stays separate. That's a question for Jasper at standup.

What to work on next: eval harness for skill consolidation

Why the eval suite is the highest-value work right now

  1. Nobody else is building it — Bryce and Ishaan are building features; when Mastra ships, someone needs to verify Cy still works. That's the eval harness.
  2. Ishaan's skill consolidation is the best first target — merging skills can silently break routing. Risk is higher than adding new capabilities.
  3. No infrastructure dependency — unlike Bryce's data platform (needs D1/KTX/broker), skill consolidation is testable with just the agent and skill files.

PR compatibility analysis

All three eval PRs (#18, #20, #21) use the same eval JSON schema: name, harness.tenant, turns[], judge.model, judge.rubric, judge.skillRel, expect.consultedSkill. No format translation needed.

What PR #18 adds over main's runner:

Feature Main PR #18
Scoring Holistic pass: bool, score: 0-10 Per-criterion criteriaPassed/criteriaTotal
Judge temperature Unset (non-deterministic) temperature: 0 (deterministic)
Human validation Not available --human-label pass|fail + eval-agreement.ts
Error handling None on judge HTTP Throws on non-200
BONUS criteria N/A Excluded from count

What PR #20 adds on top of #18:

  • --skill <path> flag — pre-boot skill injection for testing draft skills without deploying

PR #21's runner (agent-eval-suite.sh) is a pass@k wrapper that calls just agent-eval — it already uses main's runner, which is the same binary PR #18 modifies.

Concrete example: postiz_publishing

Best example of how the three PRs interact. Ishaan merged 3 skills (postiz_linkedin_publishing + postiz_x_publishing + postiz_instagram_publishing) into 1 parameterized skill with a platform dispatch table. 6 eval cases:

Eval Tests
postiz_publishing_merge 3→1 merge works across all platforms
postiz_linkedin Per-platform regression — LinkedIn still works alone
postiz_x Per-platform regression — X still works alone
postiz_instagram_story Per-platform regression — Instagram Story path
postiz_dehardcode_leak Guard — no hardcoded account IDs leak
postiz_no_account_negative Negative — correct behavior when no account configured

Without PR #18: Judge returns holistic pass: true, score: 8 — one leaked hardcoded ID might not fail the eval.

With PR #18: Each rubric line scored individually. One leaked ID = criteriaPassed: 3/4, pass: false. Failure is specific and traceable.

With PR #20: --skill flag injects the merged skill draft before boot — test without deploying to any tenant.

Branch setup (done)

Created ezzeri/skill-consolidation-evals off fresh main in ~/Development/typescript/agent-cy/. Contains:

  • apps/admin/scripts/agent-eval.ts — PR #20's runner (criteria-count + --skill)
  • apps/admin/scripts/eval-agreement.ts — human-label validation
  • evals/skill-consolidation/postiz_*.json — all 6 evals (tenant repointed to 1ddfc8e1)
  • evals/skill-consolidation/migration/merged-skills/marketing/postiz_publishing/SKILL.md
  • evals/skill-consolidation/scripts/agent-eval-suite.sh

Known issue: category prefix in --skill

--skill copies to overrides/skills/<basename>/ (flat). But judge.skillRel expects marketing/postiz_publishing (category-qualified). local-agent.ts resolves this correctly IF the skill is placed manually:

mkdir -p .local-agent/postiz-consolidation/overrides/skills/marketing/
cp -r evals/skill-consolidation/migration/merged-skills/marketing/postiz_publishing \
      .local-agent/postiz-consolidation/overrides/skills/marketing/

To run

cd ~/Development/typescript/agent-cy
direnv exec . just agent-eval "$(pwd)/evals/skill-consolidation/postiz_publishing_merge.json" \
  --skill "$(pwd)/evals/skill-consolidation/migration/merged-skills/marketing/postiz_publishing" \
  --alias postiz-consolidation

Requires just dev running (Postgres, LiteLLM, gateway). Tenant 1ddfc8e1 (sky) must exist in local DB.

Standup framing

"I want to extend the eval suite to cover the skill consolidation and data platform changes so we have a regression net when Mastra ships."

This matches the pattern Jasper consistently responds to — practical-test framing, self-initiated, brought to standup for alignment.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment