Skip to content

Drift checks

developerpaper mode

The drift report schema. Proposals are previews that require human confirmation.

What a drift check does

buildDriftReport(coil, currentWeightsBps, nowIso) compares the Coil’s target weights against weights you supply (from a paper simulation, or from your own agent’s read-only account snapshot) and flags every position whose drift meets the Coil’s rebalance threshold. When at least one entry breaches, the report attaches a rebalance proposal.

Report schema

DriftReport fields
FieldTypeRequiredDescription
coilIdstringyesThe Coil being checked.
manifestHashstringyesCanonical hash of the allocation manifest at check time.
generatedAtstring (ISO)yesExplicit clock input — deterministic and replayable.
thresholdBpsnumberyesThe Coil policy's driftThresholdBps.
entriesDriftEntry[]yesPer symbol: targetWeightBps, currentWeightBps, driftBps, breachesThreshold.
breachCountnumberyesHow many entries breach the threshold.
proposalRebalanceProposal?noPresent only when breachCount > 0. Always previews; requiresHumanConfirmation is hard-typed true.
disclaimerstringyesThe fixed no-execution disclaimer, embedded in every report.

Proposals are previews

Every intent inside a proposal has status: "preview" — there is no other value in the type. Notional and quantity are deliberately left undefined: sizing happens in the user’s own agent against live buying power, inside the fuses. Each intent carries its fuse checklist and three abort conditions, including “User has not confirmed this specific order.”

example drift report
{
  "coilId": "coil_7f31…",
  "manifestHash": "9b41c8…",
  "generatedAt": "2026-07-07T00:00:00.000Z",
  "thresholdBps": 500,
  "entries": [
    { "symbol": "AMD", "targetWeightBps": 2500, "currentWeightBps": 3200,
      "driftBps": 700, "breachesThreshold": true },
    { "symbol": "MU", "targetWeightBps": 2500, "currentWeightBps": 2400,
      "driftBps": -100, "breachesThreshold": false }
  ],
  "breachCount": 1,
  "proposal": {
    "status": "proposal",
    "requiresHumanConfirmation": true,
    "intents": [
      {
        "status": "preview",
        "symbol": "AMD",
        "side": "sell",
        "orderType": "market",
        "timeInForce": "day",
        "maxPositionWeightBps": 4000,
        "maxDailyTurnoverBps": 2000,
        "reason": "Drift +7.00% vs target 25.00%.",
        "fuseChecks": ["maxPositionWeight", "maxSingleOrderNotional", "…"],
        "abortConditions": [
          "Any fuse breach",
          "Stale or missing account data",
          "User has not confirmed this specific order"
        ]
      }
    ]
  },
  "disclaimer": "Drift computed from supplied weights. Proposals are previews requiring human confirmation — HISS never sends orders. Not investment advice."
}

Where drift checks run

  • POST /api/tools/drift-check — the HTTP surface; see Agent tools API.
  • hiss_drift_check — the MCP tool; see MCP server.
  • Inside every compiled runbook’s session protocol, between the read-only snapshot and the confirmation step.

$HISS is independent research software in paper mode — not investment advice, and not affiliated with Robinhood, Bankr, or Chainlink.