Repository navigation
feat: DAG-based post-processing + taxonomy readout post-processor - #1053
Open
Cedric Vidal (cedricvidal) wants to merge 1 commit into
Open
Cedric Vidal (cedricvidal) wants to merge 1 commit into
Cedric Vidal (cedricvidal) wants to merge 1 commit into
Conversation
Collaborator
Author
|
Original author: @github-actions[bot] Test Results (Node.js 22)test: Run #1858
🎉 All tests passed! |
Restore the taxonomy-specific layer after fast-forwarding to PR #1147, reconcile current migrations and OpenAPI artifacts, and adapt the worker to the current Copilot SDK permission contract. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: addea2af-c951-4473-90bc-0a7356c29862
Cedric Vidal (cedricvidal)
requested a review
from Wassim Chegham (manekinekko)
as a code owner
October 12, 2026 16:16
Cedric Vidal (cedricvidal)
changed the base branch from
main
to
cedricvidal-microsoft/pp-dag-orchestration
October 12, 2026 16:16
Test Results (Node.js 22)test: Run #239
🎉 All tests passed! |
This was referenced Oct 13, 2026
Collaborator
Author
|
Historical recovery reference: the readout implementation carried forward from this branch is superseded by the canonical attempt-scoped Experiment readout in #1513 and its successor layers in native stack #1518. This PR remains open and unchanged for recovery/history. |
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.
Original author: Cedric Vidal (@cedricvidal)
Summary
Introduces a DAG-based post-processing pipeline and a new taxonomy ("readout") post-processor that, after every run finishes, uses the GitHub Copilot SDK to generate a structured, schema-validated readout taxonomy JSON (evaluation dimensions, behavioural patterns, cross-profile insights, and ownership-routed action items) and attaches it to the run. It also reworks how post-processing handlers are registered and how report generation is triggered, so the system scales cleanly to N independent post-processors per run.
What's included
Taxonomy post-processor (
apps/workers/taxonomy/)generateTaxonomy()reused by the worker, a new developer CLI (pnpm taxonomy), and ad-hoc A/B harnesses. The CLI can target any local or integration run and write the validated taxonomy to a file for troubleshooting — keeping CLI ↔ worker parity.apps/api/src/routes/requests/taxonomy.tsserves the stored taxonomy at request- and run-scoped endpoints;apps/portalgains a Taxonomy tab on the run detail view.taxonomyschema + tests added topackages/shared.DAG-based handler orchestration (
apps/scheduler/,apps/workers/post-processor/)pp-atif→pp-taxonomy). The scheduler'sHandlerDispatcherwalks the graph, enqueues each handler when its dependencies are satisfied, and tracks per-handler status.templateId), N-per-run, and trigger-gated, so they don't fit an idempotent per-run DAG node. Instead, the scheduler detects when the handler DAG has fully drained (every registered handler reached a terminal state:done/failed/blocked) and calls the existingPOST /api/v1/reports/triggerendpoint, which evaluates each template's trigger and enqueues{ reportId }in the shape the report-generator already expects. Exactly-once is guaranteed by an atomicrun.reportsTriggeredAtguard with rollback so the poll safety-net can retry.handler.yamlregistered through a scheduler endpoint at worker-registration time, replacing migration-baked registration. Migrations018–020migrate existing services to the handler-DAG model, add a handler-status index, and backfill status.Default model:
gpt-4.1→gpt-5.4A/B testing nine Copilot SDK models on a multi-iteration run containing a real defect (the agent lost prior context in iteration 2) showed verdicts ranging 72–100. Weaker models — including the previous default
gpt-4.1— missed the critical failure entirely or rubber-stamped a buggy run with a perfect score, whilegpt-5.4caught the defect at the lowest token cost of the models tested.ENV_VARIABLES.mdrecords the rationale.TAXONOMY_MODELremains overridable via env.Validation
docker:dev:copilotend-to-end run: coder → judge → ATIF → taxonomy (gpt-5.4) → schema-valid JSON → uploaded →taxonomyUrlattached → served by the API (200). Output was rich (4 dimensions, 4 patterns, 3 cross-insights, 4 action items) and passedtaxonomySchema.safeParse.Notes
docs/architecture/post-processing.md,overview.md,db-migrations.md,ENV_VARIABLES.md.pp-reportis deregistered (nohandler.yaml); nothing is deployed yet so no services-collection migration is needed. The scheduler becomes the first automated caller of/reports/trigger.