Repository navigation
spike(taxonome): standalone structured taxonomy evaluation with Ax and Copilot SDK - #1529
Draft
Cedric Vidal (cedricvidal) wants to merge 32 commits into
Draft
Cedric Vidal (cedricvidal) wants to merge 32 commits into
Cedric Vidal (cedricvidal) wants to merge 32 commits into
Conversation
Add pure Timeout and Ax/Copilot Skipped Invocation API, standalone CLI, shared ATIF/gold fixtures, guarded transport, schema checks and deterministic readout preview. Live bounded optimization and replay evidence follow in this draft. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4f3fac40-e7d2-469e-adc2-ef1648ba9310
Test Results (Node.js 22)test: Run #329
🎉 All tests passed! |
Archive neutral-identifier baseline and full learned-demos replay, including genuine model failures. Enforce authoritative completeness/applicability, immutable prompt contract, one-call Ax bootstrap execution and lazy SDK initialization. Freeze a fresh disjoint final packet before the revised optimization. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4f3fac40-e7d2-469e-adc2-ef1648ba9310
Collaborator
Author
|
Real Taxonome CLI on the committed synthetic Timeout ATIF fixture: no credentials or Scope services, structured turn/call evidence, and matching repeated-result hashes. This deterministic-path recording makes zero SDK calls; it complements, rather than replaces, the live model evaluation evidence. terminal.mp4 |
Test Results (Node.js 22)test: Run #330
🎉 All tests passed! |
Preserve both actual Ax experiments, full learned artifacts, fresh final comparisons, identifier invariance and the frozen 256/500-call usage ledger. Verify deterministic readout counts, replay provenance and artifact hashes; finish root CLI paths, conservative timing and independent student/teacher cleanup. Document field tradeoffs, no-improvement findings and Phase 1 limits. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4f3fac40-e7d2-469e-adc2-ef1648ba9310
Test Results (Node.js 22)test: Run #331
🎉 All tests passed! |
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: e767814e-3331-4a7e-ae96-15207b53ac9c
Clarify names and logical phases across the contracts, deterministic detector, SDK lifecycle, optimizer, readout, CLI and tests. Document public and non-obvious invariants while preserving prompt text, behavior and frozen experiment evidence. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4f3fac40-e7d2-469e-adc2-ef1648ba9310
Preserve evidence-generating source fingerprints and record the later behavior-preserving readability commit, its current source hashes, zero model calls, and unchanged frozen artifacts/cases/ledger. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4f3fac40-e7d2-469e-adc2-ef1648ba9310
Strengthen repository readability guidance so every non-trivial function and logical block explains what it does. Apply focused comment coverage across the spike runtime, CLI, tests, and standalone prompt adapter without changing prompts, behavior, or frozen evidence. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4f3fac40-e7d2-469e-adc2-ef1648ba9310
Record the strengthened repository rule, exact local comment-coverage commit, all audited source/guidance hashes, zero model calls, and unchanged frozen prompts, fixtures, outputs, and ledger. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4f3fac40-e7d2-469e-adc2-ef1648ba9310
Require and apply concise semantic TSDoc for function parameters, options, interfaces, inferred contract shapes, fields, units, constraints, optionality, and defaults. Add a root CLAUDE.md loader that imports AGENTS.md and forbids separate instructions. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4f3fac40-e7d2-469e-adc2-ef1648ba9310
Record the exact parameter/type/field documentation commit, root CLAUDE loader contract, all 27 audited file hashes, zero model calls, and unchanged frozen prompt/evidence/case/ledger artifacts. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4f3fac40-e7d2-469e-adc2-ef1648ba9310
Test Results (Node.js 22)test: Run #332
🎉 All tests passed! |
6 tasks
Integrate exact prepared 1517 parent 6ae17ce without rewriting history. Preserve Experiment/readout static prompt families alongside the standalone Taxonome SDK family. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4f3fac40-e7d2-469e-adc2-ef1648ba9310
Record the exact history-preserving merge of prepared 1517 parent 6ae17ce, additive static-prompt conflict resolutions, parent-relative diff contract, zero model calls, and current source/config hashes without replacing frozen experiment fingerprints. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4f3fac40-e7d2-469e-adc2-ef1648ba9310
Reuse Node styleText and Commander help styling from the Scope CLI. Keep stdout machine-readable, color only interactive diagnostics/help/progress, honor NO_COLOR/FORCE_COLOR/CI, and make pnpm --silent taxonome the documented demo command. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4f3fac40-e7d2-469e-adc2-ef1648ba9310
Record the dependency-free styleText/Commander color policy, pnpm --silent taxonome invocation, TTY/NO_COLOR/FORCE_COLOR/CI behavior, offline validation, zero model calls, and unchanged frozen evidence. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4f3fac40-e7d2-469e-adc2-ef1648ba9310
Collaborator
Author
|
Comprehensive Taxonome demo: polished CLI, saved real-SDK evidence, Ax artifact replay, deterministic readout, typed API, and frozen call budget. terminal.mp4 |
Test Results (Node.js 22)test: Run #357
❌ Some tests failed!
|
Build the example plugin into a unique test-owned project-local directory, use it for process tests, and clean it afterward without touching pre-existing demo output. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4f3fac40-e7d2-469e-adc2-ef1648ba9310
Use TypeScript transpileModule to emit the trusted process-test plugin into a unique project-local directory, so clean unit jobs need neither example dist nor taxonomy-evaluation declarations. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4f3fac40-e7d2-469e-adc2-ef1648ba9310
Test Results (Node.js 22)test: Run #359
🎉 All tests passed! |
Declare the deterministic handler output schema/type, preserve unattributed retry evidence as indeterminate, and add a disjoint custom prompt corpus with direct Taxonome run/eval/optimize examples. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4f3fac40-e7d2-469e-adc2-ef1648ba9310
Record the real custom prompt run, held-out baseline, bounded Ax artifact, artifact replay, full built-in taxonomy run, deterministic readout, and exact 11-call ledger delta separately from the frozen 256-call snapshot. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4f3fac40-e7d2-469e-adc2-ef1648ba9310
Append the separate 11-call YAML prompt demo accounting and evidence lineage while keeping the original 256-call snapshot and historical artifacts unchanged. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4f3fac40-e7d2-469e-adc2-ef1648ba9310
Test Results (Node.js 22)test: Run #361
🎉 All tests passed! |
Add a separately versioned opaque-identity corpus, verify the exact production prompt projection excludes case metadata and outcome-coded IDs, and mark the first 11-call demo as historical ID-confounded evidence. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4f3fac40-e7d2-469e-adc2-ef1648ba9310
Record the opaque-identity run, held-out baseline, bounded artifact, replay, built-in taxonomy run, deterministic readout, and exact 11-call delta without modifying either earlier evidence packet. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4f3fac40-e7d2-469e-adc2-ef1648ba9310
Append the separately versioned opaque-ID control, cumulative 278/500 accounting, zero instruction-proposal outcome, and explicit correction of the first demo's identity confound. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4f3fac40-e7d2-469e-adc2-ef1648ba9310
Test Results (Node.js 22)test: Run #362
🎉 All tests passed! |
Use subject-and-role paths for current trajectories, expected judgments, original-prompt results, optimized artifacts, and optimized-prompt results; expose an offline handler unit-test command distinct from model-backed eval. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4f3fac40-e7d2-469e-adc2-ef1648ba9310
Explain that eval scores detector output against gold, counts case executions, makes fresh calls only when model execution is reached, and never caches answers through artifact restore. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4f3fac40-e7d2-469e-adc2-ef1648ba9310
Move the built-in Timeout implementation and tests under src/handlers/timeout while preserving scope/timeout-v1 behavior and root package exports. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4f3fac40-e7d2-469e-adc2-ef1648ba9310
Record clearly named original-prompt results, optimized artifact and results, code-handler test summaries, built-in taxonomy output, readout, and the exact 11-call ledger delta without rewriting earlier packets. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4f3fac40-e7d2-469e-adc2-ef1648ba9310
Append the 289/500 cumulative accounting, explicit current filename map, code-handler versus prompt-eval semantics, dedicated Timeout folder, and separate readable-path evidence lineage. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4f3fac40-e7d2-469e-adc2-ef1648ba9310
Identify dec7cc8 as the committed source used for calls 279-289, record the later Timeout folder move as post-capture validation with zero calls, and test the corrected lineage. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4f3fac40-e7d2-469e-adc2-ef1648ba9310
Rename the generic runtime to taxonomy-engine, isolate agent-behavior YAML and Timeout in minimal ax-taxonomy, make CLI/static evaluation compose both explicitly, retire unused hard-coded legacy facades, and add package-local neutral/focused test suites. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4f3fac40-e7d2-469e-adc2-ef1648ba9310
Record the zero-call taxonomy-engine and ax-taxonomy package split, one-way dependency boundary, package-local/cold-build validation, API cleanup, and unchanged wire/evidence contracts. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4f3fac40-e7d2-469e-adc2-ef1648ba9310
Test Results (Node.js 22)test: Run #390
🎉 All tests passed! |
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Complete technical delivery of the approved isolated Taxonome spike: a standalone TypeScript API and polished CLI driven by exact
scope/taxonomy/v1YAML; prompt-based Skipped Invocation through a real Ax typed program and GitHub Copilot SDK; deterministic Timeout; safe plain-ATIF and existing Scope.tar.gzarchive ingestion into oneextra.scopestream; explicit local/package deterministic-handler plugins; bounded optimization/save/restore/replay; and deterministic behavior/source readouts.The frozen model-experiment source/evidence head remains
7d217d727ac0adaa4cc4121767316fab62d09f3c. The current implementation/evidence head is9f4d5cd0f78244bb2d075c98275705edf6c05940, based on the prepared PR #1517 parent6ae17ce30247bb893ab85af170c4c5e290228dd5and published in native stack 1534. Historical prompt contracts, fixtures/gold, model outputs, complete Ax artifacts, and the original byte-identical 256-call snapshot remain preserved. The first current-YAML demo is retained as explicitly ID-confounded historical evidence. A separately versioned opaque-ID control adds 11 further fully accounted calls on the same hard-500 ledger without changing either earlier packet.The Taxonome runtime remains portable without Scope API, Judge, MongoDB, Redis, queues, or Experiment APIs; stack placement does not introduce a runtime dependency. The generic runtime is now
taxonomy-engine; the shipped agent-behavior YAML, fixtures, andscope/timeout-v1handler are isolated in minimalax-taxonomy. The CLI explicitly composes both packages, and the engine has no catalog dependency. Keep draft: human acceptance/Phase 1 exit, production adoption, merge, and later phases remain unauthorized.Finding: retain the simplified occurrence model for review and prefer the revised baseline prompt for this packet. Actual Ax optimization selected unchanged instructions plus three learned traces; it did not improve final accuracy and increased prompt input. Confidence/output-category duplication was removed; explicit completeness/applicability belongs in the runtime, not model guesswork. Earlier genuine model failures are preserved, not relabeled.
Demos
Before
N/A: new isolated experimental CLI; no previous Taxonome command.
After
terminal.mp4
Comprehensive 21-beat walkthrough using the real
taxonomeexecutable. It covers typed deterministic output contracts, plugins, plain/archive provenance, the custom prompt element, an opaque-ID corpus verified against the production prompt projection, a fresh neutral prompt run, held-outeval, one boundedoptimize, artifact replay, the full shipped taxonomy, readout/API, and cumulative accounting. The original 256-call snapshot and the first ID-confounded 11-call demo remain immutable; the neutral control adds 11 successful calls for 278/500 total. Neutral baseline and replay both pass 2/2, Ax selects three learned traces but makes 0 instruction proposals, and no accuracy gain is claimed.Testing
pnpm install --offline --frozen-lockfilepnpm --filter shared buildpnpm --filter taxonomy-engine buildpnpm --filter ax-taxonomy buildpnpm --filter taxonome buildpnpm --filter taxonome-custom-handler-example buildpnpm --filter taxonomy-engine lintpnpm --filter ax-taxonomy lintpnpm --filter taxonome lintcd packages/taxonomy-engine && pnpm testcd packages/ax-taxonomy && pnpm testpnpm exec vitest run packages/taxonomy-engine/src packages/ax-taxonomy/src apps/taxonome/src --reporter=defaultpnpm exec vitest run apps/taxonome/src/cli.test.ts --reporter=defaultwith bothtaxonomy-engineandax-taxonomydist/directories absentpnpm --filter static-prompt-evals testpnpm --filter static-prompt-evals typecheckpnpm --filter static-prompt-evals validate-datapnpm notice:checkpnpm headers:checktaxonome run inputs/built-in.atif.json --taxonomy taxonomies/built-in/taxonomy.yaml --ledger "$DEMO_LEDGER"cd examples/taxonome-custom-handler && taxonome run inputs/run.atif.json --taxonomy taxonomy.yaml --plugin ./dist/handlers/index.js --elements acme-retry-loopcd examples/taxonome-custom-handler && taxonome run inputs/run.tar.gz --taxonomy taxonomy.yaml --plugin ./dist/handlers/index.js --elements acme-retry-looppnpm exec vitest run packages/taxonomy-engine/src/evidence.test.ts --reporter=defaultThe focused suite covers YAML normalization/digests/references and schema limits; explicit local/package plugins, reserved/duplicate IDs, clean-CI fixture isolation, and cwd resolution; archive traversal/link/device/duplicate/root/size/count/depth protection, completeness and cross-iteration call references;
extra.scopegrounding and configuration-versus-availability; immutable deterministic inputs; one-call prompt execution; v2 artifact compatibility; readout distinct-run/occurrence counts; TTY/pipe/NO_COLORbehavior; bounded HTTP retries; ledger concurrency; and frozen evidence hashes. Source/artifact sanitization checks passed. No credentials, host paths, or original requirement snapshots are committed.Historical experiment-head GitHub CI: run 39592980292, successful and pinned to
7d217d727ac0adaa4cc4121767316fab62d09f3c. Current review-head checks, including documentation-only follow-ups, are shown live on this draft PR.Actual SDK evidence (not mocks)
First YAML prompt demo (historical, ID-confounded): the initial 11-call packet is preserved byte-for-byte, but its model-visible session IDs contained descriptive positive/negative hints. Its 2/2 result is not treated as a clean prompt-quality control, and its outputs are not relabeled.
Opaque-ID control (
scope/taxonomy/v1): a deterministic regression serializes every case through the actual productiontaxonomyPromptEvidence()projection. Case/family/origin metadata is absent; all forwarded session/run/scenario/profile identities are opaque; transcript semantics and gold are unchanged.taxonome run inputs/repeated-request.atif.json ...— completed positive using opaque runrun-9f31with grounded turns 1 and 2.taxonome eval ... --cases cases/neutral-prompt-cases.jsonl --gold cases/neutral-prompt-gold.json --split heldout ...— neutral baseline 2/2 using 2 calls oncase-05andcase-06.taxonome optimize ... --max-metric-calls 12 ...— one bounded Ax run using 5 calls (3 teacher, 2 student), selecting three learned traces and two examples across five metric entries. The artifact records 0 instruction proposals andearlyStopped:false; no instruction rewrite or early termination is claimed.Neutral-control accounting: 11 successful calls, 13691 input / 252 output tokens, 11 observed model attempts, no failures, USD cost unknown. Cumulative ledger: 278/500, 222 remaining. The original 256-call snapshot and first 11-call delta remain unchanged; the neutral delta and outputs live under
evidence/yaml-prompt-neutral-control/.Historical v1 experiment (preserved snapshot):
The commands below are the historical v1 command shapes from the frozen experiment head, retained to explain the archived evidence; they are not replay instructions for the current YAML CLI. The current CLI requires
--taxonomy, and oldtaxonome.ax.v1artifacts are explicitly incompatible withscope/taxonome-ax/v2. All historical live commands used the same physical external ledger and explicitCOPILOT_GITHUB_TOKENenvironment authentication (useLoggedInUser:false); the private ledger path is represented below as$LEDGER. No direct-provider substitution or repair-loop fallback was used.pnpm --silent taxonome eval --cases packages/taxonomy-evaluation/fixtures/inputs.jsonl --gold packages/taxonomy-evaluation/fixtures/gold.json --split all --samples 2 --ledger "$LEDGER"— revised baseline 36/36 cases: 30 eligible SDK predictions, 6 authoritative zero-call preflights, plus 8 deterministic Timeout results.pnpm --silent taxonome optimize --cases packages/taxonomy-evaluation/fixtures/inputs.jsonl --gold packages/taxonomy-evaluation/fixtures/gold.json --max-metric-calls 48 --output packages/taxonomy-evaluation/evidence/optimized.v2.ax.json --ledger "$LEDGER"— passed: 49 actual SDK requests, 47 metric entries; real bootstrap plus GEPA. Complete serialization preserves three training-only learned traces, five supervised seed examples, components and statistics.evalcommand with--artifact packages/taxonomy-evaluation/evidence/optimized.v2.ax.json— 36/36 after normal-path restore/apply.pnpm --silent taxonome eval --cases packages/taxonomy-evaluation/fixtures/final-inputs.jsonl --gold packages/taxonomy-evaluation/fixtures/final-gold.json --split heldout --samples 2 --ledger "$LEDGER"— fresh final baseline 12/12 cases; the same command with--artifact packages/taxonomy-evaluation/evidence/optimized.v2.ax.json— 12/12. Each configuration made 10 eligible prompt calls with 2 preflights and 2 additional deterministic Timeout assertions.The final packet was frozen before revised optimization, disjoint by originating run/family, and never supplied to it. The earlier packet is explicitly regression/development evidence. Both comparisons use fixed semantic gold; earlier 33/36 baseline and 35/36 replay failures remain archived. Small synthetic packets do not establish production accuracy.
Historical snapshot: 256/500 requests, 369886 input / 12161 output tokens, no unresolved reservations. It remains byte-for-byte unchanged. The first ID-confounded YAML demo adds 11 calls and is preserved only as historical execution evidence. Current cumulative total: 289/500 after the separate 11-call readable-path control, with 410036 input / 12940 output tokens and 211 slots remaining. Package extraction added zero model calls. Dollar cost remains unknown; SDK cost multipliers and per-call usage are recorded separately.
Documentation and compatibility
Current YAML/archive/plugin implementation:
taxonomy-engineowns runtime mechanisms;ax-taxonomyowns only catalog definitions, fixtures, concrete handlers, and focused tests.Frozen experiment-head evidence (preserved historical links):
New private workspace packages only. No Scope API, persistence, Judge, Portal, existing Scope CLI, migration, or production readout integration. Static prompt inventory/manifest/JSONL target registry and dependency notices are updated.
Current private imports use
taxonomy-enginefor generic APIs andax-taxonomyfor the shipped catalog.createBuiltInHandlerRegistry()and unused hard-coded legacy catalog facades were retired rather than preserved through a cycle or hidden fallback. The wire envelope remainsscope/taxonomy-evaluation/v1. Compatibility is explicit rather than silent:run,eval, andoptimizenow require exactscope/taxonomy/v1YAML; the normal CLI no longer accepts separate--context; historical v1 evidence remains immutable; the deterministic converter is opt-in; and historical optimization artifacts are rejected under the new contract. Plugins must be explicitly selected compiled JavaScript, run with process permissions, and are not sandboxed. Limits remain explicit: ATIF v1.7, bounded file/HTTP/archive acquisition, SDK-managed sampling/low reasoning, prompt/JSON parsing plus schema validation rather than native constrained decoding, no USD cost estimate or throughput claim.Checklist
up()/down()and keep it CosmosDB-compatible. N/A: no database changes.NOTICE/NOTICE-REVIEW.txtwithpnpm noticeas needed. NOTICE-REVIEW.txt unchanged.