spec: Assay fleet tier — AssayRollup + AssayStandardRollout (cloud-mesh) - #279
Merged
Conversation
Adds the two fleet-tier contracts that make the Assay the prophet-mesh verdict framework across a fleet, and marks the boundary between the two deployment modes. AssayRollup: fleet/cohort aggregate of ReasoningAssay verdicts over a window — ok/sad/bad distribution, the calibration-drift view (which AssayStandard versions are actually live across the fleet), and the unassayed-reason breakdown. scope.mode 'node' is the single-user local self-view; 'cohort'/'fleet' are cloud-mesh only. AssayStandardRollout: promotes a new AssayStandard version across cohorts — canary first, widen or halt on the observed AssayRollup. Rides the release-bundle + lifecycle machinery; forbids widening past canary without observed evidence (no promotion-by-hope). validate-assay-fleet-examples enforces aggregation/rollout soundness (distribution sums, drift-flag agreement, rolloutPct vs node share, decision/phase consistency, no-promotion-by-hope) — all verified biting. Single-user local gets no fleet dashboards by construction: on-device the cohort/fleet aggregation path is simply not instantiated.
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.
Makes the Assay the fleet verdict framework for prophet-mesh, and marks the boundary between the two deployment modes. Node-tier lives in #198/#278; this is the tier above it.
Contracts
AssayRollup— fleet/cohort aggregate ofReasoningAssayverdicts over a window:distributionstandardAdoption) — whichAssayStandardversions are actually live across the fleet, and whether any is uncalibrated. A fleet can look green while some nodes verify against a stale/uncalibrated standard; this surfaces it.unassayedReasons— why the fleet is amberscope.mode:node= single-user local self-view;cohort/fleet= cloud-mesh onlyAssayStandardRollout— promotes a newAssayStandardversion across cohorts: canary → widen/halt on the observedAssayRollup. Rides the existing release-bundle + lifecycle machinery.Deployment-mode boundary
local/trusted_privateattested_fog/burst_cloud"No fleet dashboards for a single user" is structural: on-device the cohort/fleet aggregation path isn't instantiated, so there's nothing to display or leak.
Enforced invariants (all verified biting)
tools/validate_assay_fleet_examples.py:totalAssays;unassayedReasons≤sad;standardAdoptionnode counts matchscope.nodeCount;driftDetectedagrees with the adoption tablerolloutPctmatches promoted/observing node share;guard.decisionconsistent withphase; no promotion-by-hope (can't widen past canary without an observed rollup)Passes the repo referential-integrity gate (336 schemas, all
$refsresolve). Unique$ids confirmed. New doc:schemas/assay-fleet.README.md.The loop
A new verifier standard isn't switched on fleet-wide at once — that would silently re-project every node's verdicts against an unproven judge. Canary emits a rollup,
guard.decisionreads it, rollout widens or rolls back. Same "measured, not asserted" discipline as the node tier, applied to a fleet-wide change.Next: prophet-mesh implementation (validators + wiring
AssayStandardinto thepkg_gatelocus resolver) + external dashboard in client-vue.