Skip to content

Compliance heartbeat scheduling can silently stall across agents #7355

Open

Description

Summary

An agent's comply scheduler history stops updating (no new entries, no error) while health checks continue running normally. Supplemental diagnostic work points to a fail-closed trust check as the likely cause.

Observed case

  • Affected: sell.nofluffadvisory.com/mcp — comply history stopped after the 2026-08-19T18:47Z heartbeat; health checks unaffected.
  • Control: adcp.signal-stack.io — still running comply twice-daily on 3.1.20, no stall.

Declaration diff between the two

  • Affected agent declares supported_versions at BOTH top level AND under adcp.supported_versions: ["3.1"], plus adcp.major_versions: [3].
  • Control agent declares ONLY adcp.supported_versions: ["3.0","3.1"], no top-level field.

Hypothesis

The target resolver and the fail-closed trust check from #6426 (merged 2026-08-12T03:31Z — refuse to publish against an untrusted fallback target, discard a cached target the live profile contradicts) may read different locations for supported_versions or handle a single-entry list differently than the two-entry control case. For the affected agent, this could cause a silent publish refusal: no comply history entry is written, and no error is surfaced, while health checks (a separate path) continue unaffected.

Timeline

Suggested investigation

  • Check what the target resolver produced for sell.nofluffadvisory.com/mcp at the first missed heartbeat (~2026-08-20T06:00Z).
  • Check whether a fail-closed refusal was logged internally without a corresponding comply history entry being written.

Ruled out

  • The affected agent's own version handling is confirmed correct and unrelated: via get_adcp_capabilities, it accepts adcp_version pins 3.1/3.1.13/3.1.20 and correctly rejects 3.0 and 3.2.0-rc.1 with VERSION_UNSUPPORTED.

Reported via

Escalation #565 (supplemental evidence for #563).

Activity

  1. added
    claude-triagingTriage routine is actively working on this issue (1-3 min)
    on Sep 7, 2026
  2. bokelley commented on Sep 7, 2026

    @bokelley
    Contributor

    Triage

    Classification: Bug (regression)
    Bucket(s): compliance-suite, addie
    Status: ready-to-implement
    Priority: P0 — silent production failure for an external adopter, no error surfaced

    What the experts said:

    My take: The issue is well-evidenced: PR #6426 ("fix(compliance): avoid untrusted fallback verdicts", merged 2026-08-12, server/Addie-only) introduced a fail-closed trust check that refuses comply history writes when the target can't be trusted. The affected agent declares supported_versions at both the top level and under adcp.supported_versions; the control agent declares only adcp.supported_versions. The 15-heartbeat gap between merge and stall is consistent with a delayed registry deployment, not a code deployment, landing ~2026-08-19/20. Health checks are unaffected because they run through a separate path. The symptom — comply history silently stops, no error, health checks continue — is exactly what a fail-closed silent refusal would produce.

    Implementation brief:

    • Root cause to confirm: The target resolver and fail-closed trust check introduced in fix(compliance): avoid untrusted fallback verdicts #6426 likely read supported_versions from only one location (either top-level or adcp.*-namespaced). An agent declaring both causes a contradiction between what the pre-discovery step cached and what the live profile asserts, triggering the "discard a cached target the live profile contradicts" refusal. A single-entry list (["3.1"]) vs. a two-entry list (["3.0","3.1"]) may also be handled differently.
    • Fix scope: In the server comply scheduler / target resolver (files changed by PR fix(compliance): avoid untrusted fallback verdicts #6426): normalize supported_versions before the trust evaluation step — merge top-level and adcp.supported_versions/adcp.major_versions into a single canonical set so both declaration styles produce the same result. Ensure the fail-closed refusal writes a log entry (or comply history stub with a failure reason) so silent stalls are detectable.
    • Suggested investigation entry points: check resolver output for sell.nofluffadvisory.com/mcp at the first missed heartbeat (~2026-08-20T06:00Z); check whether a fail-closed refusal log line exists without a corresponding comply history write.
    • Release routing: Server-only behavior (no changeset); fix targets main.
    • Non-breaking: Server internals only; no protocol wire changes, no schema changes.

    Triaged by Claude Code. Session: https://claude.ai/code/session_01RAqvGrz4MH9t2feuxbuc95


    Generated by Claude Code

  3. added
    bugSomething isn't working
    addieIssues related to Addie (via any channel)
    claude-triagedIssue has been triaged by the Claude Code triage routine. Remove to re-triage.
    priority:P0Immediate priority: user/revenue/security/reliability bug to work now
    and removed
    claude-triagingTriage routine is actively working on this issue (1-3 min)
    on Sep 7, 2026
  4. self-assigned this
    on Sep 8, 2026
  5. added this to the P0 Bugs milestone on Sep 8, 2026
  6. EvgenyAndroid commented on Sep 15, 2026

    @EvgenyAndroid
    Contributor

    I own the affected agent. Your hypothesis is falsifiable from outside, and I think the data falsifies it — but the symptom you reported is real, and it is back.

    The declaration shape is not the cause. sell.nofluffadvisory.com/mcp still returns exactly the shape this issue names — top-level supported_versions: ["3.1"] alongside adcp.supported_versions: ["3.1"] and adcp.major_versions: [3] (re-probed 2026-09-15T12:45Z). Nothing about it has changed since you filed. Yet the agent was heartbeated ten times between 2026-09-08T04:26:43.320Z and 2026-09-13T02:43:07.298Z, on cadence, at 8.4–15.8 h intervals. If the #6426 fail-closed trust check refused to publish because of that declaration, it would not have published ten times with the declaration unchanged.

    A cause that fits the window better, and it is mine. Our publisher adagents.json listed the sales agent at the bare origin https://sell.nofluffadvisory.com instead of its registered /mcp endpoint, from 2026-08-08T16:45Z. I corrected it and it went live 2026-09-06T23:52:57Z. The agent resumed 2026-09-08T04:26:43.320Z — 28 h 34 min later. The stall window sits entirely inside that stale span.

    One thing that does not fit cleanly: the URL went stale 2026-08-08T16:45Z but the stall began 2026-08-19T18:47:59.122Z, eleven days later. A periodic re-verification cadence would explain the lag; I cannot see that from outside. So I am offering this as the better-fitting hypothesis, not as a conclusion.

    Your actual complaint survives either way. Whichever mechanism it was, it was silent: no history row, no error surfaced, health checks unaffected. If a publisher-side authorization mismatch can park an agent's compliance history indefinitely, that state belongs on the card as a visible reason rather than as an absence of rows. That is the part I would keep at P0 regardless of which hypothesis wins.

    Current state, for the record. No heartbeat row since 2026-09-13T02:43:07.298Z. Six owner_test runs that afternoon (13:02:03.421Z through 14:46:01.285Z, the last of them a maintainer verification under #7428) reset the next scheduled check to 2026-09-14T02:46:01Z, and it is now 34 h past that.

    I am deliberately not claiming this is the same defect, and I would rather not muddy this issue with it, because the circumstances differ: adagents.json is correct and unchanged this time, and I deployed the worker seven times on 2026-09-13, one of which narrowed the advertised compliance_testing.scenarios from twelve to five about fourteen minutes before the last row. Those are my confounders to rule out, not yours.

    Worth noting for scope: current staleness is not specific to this agent. Across the 31 non-opted-out registry agents publishing a last_checked_at, the median is 4.5x the agent's own declared check_interval_hours as of 2026-09-15T12:45Z, with 26 past 2x and 19 past 4x. Mine is 3.8x, rank 21 of 31.

    Happy to run anything against the agent — it is live, and adcp.signal-stack.io is mine as well, which makes it a usable control.

  7. bokelley commented on Sep 23, 2026

    @bokelley
    Contributor

    Queue audit update: the declaration-shape hypothesis is disproved by the reporter\x27s unchanged-profile successful runs, so this issue should no longer be implemented as top-level/nested supported_versions normalization. The silent-failure/liveness portion has since gained concrete safeguards on main via #7453/#7556/#7622: incomplete runs are audit-only, authoritative grades are preserved, heartbeat admission/execution is bounded, zero-authoritative batches fail scheduler health, and operational diagnostics expose skips/errors. #7648 (pending behind RC6) separately fixes explicit refreshes being starved by ordinary heartbeat ordering. Keeping this issue open for post-deploy evidence of any remaining broad scheduled-heartbeat staleness; its title/root-cause framing should be updated rather than closing it as fully resolved.

  8. changed the title [-]Comply history silently stalls for agents declaring top-level + nested supported_versions[/-] [+]Compliance heartbeat scheduling can silently stall across agents[/+] on Sep 23, 2026
  9. garvitkaushik-123 commented on Sep 24, 2026

    @garvitkaushik-123
    Collaborator

    Pulled the public compliance history API to check post deploy status after #7453, #7556, #7622, and #7648.

    sell.nofluffadvisory.com/mcp, the agent from this issue: last run with triggered_by heartbeat was 2026-09-13T02:43Z. Every run after that (10 of them, through 09-17) has triggered_by owner_test. No heartbeat-triggered run shows up in the history for 11 days.

    adcp.signal-stack.io/mcp, the control agent cited as not stalling in the original writeup: last heartbeat-triggered run was 2026-09-14T20:03Z. Same pattern after that, owner_test only. 10 days with no heartbeat-triggered run in the history.

    Checked one more agent from the registry at random, sales-agent.addiscovery.ai/mcp: last heartbeat 2026-09-15T07:03Z, nothing since.

    Important caveat on all of this: /compliance/history only returns is_authoritative true rows (that filter is from #7453). If the heartbeat is firing every 6 to 12h like these agents are configured for but the runs are timing out or erroring, they would land as is_authoritative false and just not show up here, while getting silently retried. So this data can't tell the difference between the scheduler not running and the scheduler running but never completing for these agents. Both would look identical from this endpoint.

    Also #7648 merged this morning but bokelley flagged it as pending behind RC6, so it is not deployed yet and this data does not test it.

    What I can say with confidence: no authoritative heartbeat grade has landed for sell.nofluffadvisory.com/mcp or adcp.signal-stack.io/mcp in over a week, on agents configured for 6 to 12h checks. What I can't tell from the public endpoint is whether that means the scheduler stopped or the runs are happening and failing to complete. Whoever has access to the audit_only skip counts or eligible_backlog for these agents would be able to tell which one it is faster than I can from outside.

    Raw data (tested_at, triggered_by):

    sell.nofluffadvisory.com/mcp
    2026-09-17T11:41:54.909Z owner_test
    2026-09-17T11:32:30.768Z owner_test
    2026-09-16T09:55:09.448Z owner_test
    2026-09-16T00:28:17.342Z owner_test
    2026-09-13T14:46:01.285Z owner_test
    2026-09-13T14:30:09.442Z owner_test
    2026-09-13T14:11:23.852Z owner_test
    2026-09-13T13:45:46.180Z owner_test
    2026-09-13T13:35:54.316Z owner_test
    2026-09-13T13:02:03.421Z owner_test
    2026-09-13T02:43:07.298Z heartbeat <- last heartbeat-triggered run

    adcp.signal-stack.io/mcp
    2026-09-16T09:52:10.051Z owner_test
    2026-09-16T00:24:43.111Z owner_test
    2026-09-14T20:03:40.370Z heartbeat <- last heartbeat-triggered run

    Pulled from GET /api/registry/agents/:encodedUrl/compliance/history on agenticadvertising.org, the public endpoint, no db access.

  10. bokelley commented on Sep 24, 2026

    @bokelley
    Contributor

    Triage (updated 2026-09-24 — see @EvgenyAndroid follow-up comments)

    Classification: Bug (confirmed code regression — scope corrected)
    Bucket(s): compliance-suite
    Status: ready-for-human
    Milestone: P0 Bugs

    Correction to prior escalation: @EvgenyAndroid's follow-up directly disproves the "globally inoperative scheduler" conclusion. The scheduler is running: 11 authoritative triggered_by='heartbeat' rows confirmed strictly after 2026-09-15T07:03Z across 11 distinct agents, with session IDs decoding to live runs. The "universal cutoff" inference was built on a biased sample — the two focal agents are among the most owner-tested in the registry, and one of the four checked agents last heartbeated on 2026-08-11, a separate cohort.

    Confirmed code bug — compliance-db.ts:937: recordComplianceRun's schedule_next CTE advances next_compliance_check_at for every authoritative run without a triggered_by predicate. After #7453 changed heartbeat due-selection from the derived s.last_checked_at predicate to stored m.next_compliance_check_at, any owner_test run silently defers that agent's next automatic heartbeat by a full interval. Agents with heavy owner-testing are systematically underserved by the scheduler.

    Fix scope (corrected): The triggered_by gate on next_compliance_check_at is the correct and only fix — advance it only on heartbeat-triggered runs. The "at minimum don't clear requeued_at on owner_test" fallback in the prior version of this comment is wrong and should not be implemented: clearing requeued_at on publish is intentional per migrations/608_agent_registry_requeued_at.sql ("cleared when an authoritative run is published"), and keeping it non-null without re-arming the eligibility gate (next_compliance_check_at IS NULL OR < NOW() at :1552) would permanently sort affected agents to the front of every subsequent heartbeat batch via ORDER BY requeued_at ASC NULLS LAST (:1561) without fixing the 12h deferral. requeued_at = NULL stays exactly as is. The same invariant is already enforced one function away in deferComplianceCheckAfterInconclusiveTarget (:1443-1452) with an AND next_compliance_check_at > NOW() guard. This fix is already filed as #7680 with repro and line anchors.

    This issue vs. #7680: Let #7680 carry the CTE fix. #7355 stays on the broader throughput question — the post-deploy data assembled here (fleet-wide heartbeat collapse from 2026-09-14, the agent_compliance_runs split query) is the tracker for remaining fleet-wide degradation.

    Still open (needs DB access): Whether remaining fleet degradation is scheduler not firing vs. runs firing but landing non-authoritative (is_authoritative=false on timeout). The query from @EvgenyAndroid's comment separates the two cases definitively.


    Triaged by Claude Code. Session: https://claude.ai/code/session_01C2avokMhSKNNL5t19HjFLW


    Generated by Claude Code

  11. EvgenyAndroid commented on Sep 24, 2026

    @EvgenyAndroid
    Contributor

    The data here is sound but the conclusion drawn from it is not, and the part that got escalated is the part that is wrong. I went looking to confirm the opposite of this and failed, so here is what actually holds up.

    "Zero scheduled runs since" is false. Same public endpoint, no DB access:

    GET /api/registry/agents/<bustle-digital-group.prebidselleragentgateway.optimera.nyc>/compliance/history?limit=100
    
    2026-09-22T02:41:21.731Z  heartbeat   is_authoritative=true  completeness=complete
                              provenance.test_session_id = heartbeat-1790044368337
    

    Eleven authoritative triggered_by='heartbeat' rows exist strictly after 2026-09-15T07:03Z, across eleven distinct agents. The session ids decode to 35s–8.5min before their own tested_at, so these are live runs, not backfills. The 2026-09-18T00:07–00:43Z cluster spans four unrelated operators (selleragent.pubx.ai, webmd.…optimera.nyc, vastlint.org, adcp-tviq.teqblaze.io) with sequential session-start epochs, which is an autonomous batch walking the queue, not one operator requeueing their own fleet.

    So the scheduler is firing. job-definitions.ts:573-602 still registers compliance-heartbeat on a 1h interval, and worker-watchdog.ts cold-restarts a dead worker every 60s. A worker silently down for 11 days would have to survive that loop.

    The collapse is real, though, and the date is 2026-09-14T03:01Z, not the evening of 09-13. Heartbeat rows/day fleet-wide:

    09-07  38    09-14   6
    09-08  36    09-15   1
    09-09  25    09-16   2
    09-10  28    09-17   1
    09-11  30    09-18   4
    09-12  25    09-19   3
    09-13  27    09-20   0    09-21  0
                 09-22   1    09-23  0   09-24  0
    

    09-13 ran a normal full day through 23:04:39Z, plus 02:12Z and 03:01Z on 09-14. First anomalous gap is 09-14T03:01:29Z → 14:13:50Z. Re-tallying at limit=100 leaves 09-14 onward unchanged and only inflates the earlier days, so the row cap biases against this finding rather than creating it.

    @bokelley, to your question about a deploy on or just before 09-13: yes, and it is the stack you set aside. The provenance cutover brackets it to the minute. Last null-provenance_json run fleet-wide is 2026-09-13T14:46:01.285Z; first populated is 2026-09-13T17:24:15.976Z; no exceptions across 2,832 rows. That window is #7453 (1834f1c5, merged 14:06:14Z) and #7454 (dd6b0496, 14:16:36Z). It is ~15h later in the day than the 02:43Z timestamp this issue anchors on, which is probably why a search near 02:43Z came up empty.

    1834f1c5 moved heartbeat due-selection from s.last_checked_at < NOW() - check_interval_hours to m.next_compliance_check_at < NOW() (compliance-db.ts:1552). That replaces a derived predicate with stored state, and stored state can be written by things that are not a heartbeat.

    One of those writers is a real bug, independent of everything above. compliance-db.ts:936-942, inside recordComplianceRun:

    WITH schedule_next AS (
      INSERT INTO agent_registry_metadata (agent_url, next_compliance_check_at)
      VALUES ($1, NOW() + INTERVAL '12 hours')
      ON CONFLICT (agent_url) DO UPDATE SET
        next_compliance_check_at = NOW() + make_interval(hours => agent_registry_metadata.check_interval_hours),
        requeued_at = NULL
    )

    No triggered_by predicate. Every authoritative run defers the next automatic check by a full interval, including owner_test. An owner clicking "Recheck & retest" suppresses that agent's own heartbeat for 12h, and clears requeued_at on the way through.

    That is worth separating from the scheduler question because it is self-inflicted and it skews the sample. Both agents at the centre of this issue are among the most owner-tested in the registry, which makes them the worst possible choices for measuring scheduler health. My own agents, and I have been generating a lot of that owner_test traffic.

    Two corrections to the framing, offered plainly. adcp.4dvertible.com does not belong in the 09-13..09-15 window; its last heartbeat is 2026-08-11T23:37:42.384Z, 33 days earlier, part of a separate ~10-agent cohort that stalled within about ten hours on 08-11/12. That makes the pattern 3 of 4, not 4 of 4, and "universal cutoff in a ~60-hour window" is doing more work than the data supports. And #7648 merged today at 12:49:38Z while the last fleet-wide heartbeat is 2026-09-22T02:41Z, so there is no observation window in which it could have changed anything yet.

    What I could not settle from outside. Whether the missing runs are not firing, or firing and landing non-publishable. run-publication.ts:5-9 publishes only is_authoritative !== false && completeness === 'complete', and compliance-testing.ts:1479 sets is_authoritative false on timed_out. With HOSTED_FULL_COMPLIANCE_TIMEOUT_MS = 600_000 against a worst case around 1139s, a slow agent's heartbeat becomes invisible rather than absent. One query separates the two:

    SELECT date_trunc('day', tested_at) AS day,
           count(*) FILTER (WHERE is_authoritative AND NOT dry_run) AS visible,
           count(*) FILTER (WHERE NOT is_authoritative)            AS hidden_nonauth,
           count(*) FILTER (WHERE dry_run)                         AS hidden_dryrun,
           count(*)                                                AS total
      FROM agent_compliance_runs
     WHERE triggered_by = 'heartbeat' AND tested_at >= '2026-09-01'
     GROUP BY 1 ORDER BY 1;

    If total holds near ~28/day since 09-14, this is a publication regression and the fix is a diagnostic surface. If total collapses with visible, the scheduling gate is the target, starting with the all-10 batch lock at compliance-heartbeat.ts:144-153 and the CTE above.

    There is also a separate live finding in the meantime: eleven agents currently show last_checked_at 19–32 days newer than their newest visible run, all written before the 14:06Z commit. Something was advancing those cards with no publishable row on the old code, which is the silent-publish-failure class #7453/#7556/#7622 were aimed at, still happening.

    Method note for anyone re-running this. A malformed agent URL returns HTTP 200 with {"runs":[],"count":0} rather than a 404. Appending /mcp to an agent that has no /mcp produces a convincing total outage. It caught me once in this pass.

  12. EvgenyAndroid commented on Sep 24, 2026

    @EvgenyAndroid
    Contributor

    Thanks for the re-scope. Two notes on the fix.

    It is already filed as #7680, with the repro and line anchors, so the scheduling defect has somewhere to live that is not this issue. Probably worth keeping #7355 on the throughput question and letting #7680 carry the CTE fix, otherwise the DB query below gets lost under a fix that is already scoped.

    The "at minimum don't clear requeued_at on owner_test" fallback is the wrong half, and it is worse than doing nothing. Clearing requeued_at on publish is deliberate — migrations/608_agent_registry_requeued_at.sql says so in its own comment: "Record the requeue time so the heartbeat can serve explicit requeues first; cleared when an authoritative run is published."

    The defect is re-arming the eligibility gate. Eligibility is next_compliance_check_at IS NULL OR < NOW() (compliance-db.ts:1552); ordering by requeued_at (:1561) only ranks agents that already passed that gate. Implement the fallback alone and you get both failure modes at once: the agent is still ineligible for 12h because next_compliance_check_at was still advanced, and its requeued_at now persists through every subsequent run, so under ORDER BY requeued_at ASC NULLS LAST it sorts ahead of every non-requeued agent permanently.

    The triggered_by gate on next_compliance_check_at is the fix. requeued_at = NULL should stay exactly as it is.

    Minor: the CTE opens at :937, not :936.

    One precedent for the patch, since it settles the intent question: deferComplianceCheckAfterInconclusiveTarget (:1443-1452) already enforces this rule one function away, with the comment "A manual requeue (NULL) must win over deferral" and an AND next_compliance_check_at > NOW() guard. The CTE is the same invariant, unguarded.

  13. bokelley commented on Oct 13, 2026

    @bokelley
    Contributor

    Re-scoping this issue. The #7680 CTE defect is fixed (#7969, verified on sell.nofluffadvisory.com before/after). Heartbeats recovered on Oct 1 with #7844.

    Remaining problem: heartbeat throughput is declining since Oct 3, plus multi-day per-agent gaps after #7844.

    Fleet heartbeats per day (public compliance-history endpoint, all 36 public agents):

    • Sep 10–13: 27–30 (17–19 agents/day)
    • Sep 14–28: 0–6 (the stall)
    • Oct 1: 24 (17 agents)
    • Oct 2–4: 48–56 (18–20 agents)
    • Oct 9–13: 23–31 (10–15 agents)

    Multi-day gaps: adcp.signal-stack.io 102h (Oct 8 16:52 → Oct 12 23:08), signals.purrsonality 206h, teqblaze 123h, addiscovery 105h. bidmachine, aiootech and seller.purrsonality have no run in 6–9 days.

    Cannot yet distinguish retry backoff, lapsed discovery authorization, or starvation from the public API. The ~10 agents last run on 2026-08-11/12 look deliberately excluded (all failing or partial), not stalled.

    Next step: run #7844's queue diagnostic against prod to separate eligibility, backoff and starvation for the agents above.

  14. bokelley commented on Oct 16, 2026

    @bokelley
    Contributor

    Correction and resolution update. The per-day figures in my earlier re-scope comment came from the public compliance-history endpoint and undercount; these are from the database (agent_compliance_runs, triggered_by = 'heartbeat').

    What actually happened

    Period Heartbeat runs/day Of which published (authoritative)
    Sep 1–13 57–74 all
    Sep 14–28 9–29 0–14
    Sep 29–30 33–34 14–19
    Oct 1–3 57–93 44–90
    Oct 4–12 48–79 45–79
    1. Sep 14–28 was not a scheduler stop. Runs kept firing, but 80–100% were recorded non-authoritative and never published: 201 timed_out runs across 13 agents (average 654 s against the 600 s budget, max 1,343 s), plus 33 not_completed runs from one agent whose declared sponsored-intelligence specialism wasn't in the grader's compliance cache. Recovery began Sep 29 and completed with fix(compliance): bound heartbeat retries and prioritize current agents #7844 on Oct 1.
    2. The October decline was mostly deliberate. Agents outside the eligibility set (no member registration, badge, or fresh publisher authorization) and agents in inconclusive-target backoff (streak up to 4, 48 h max delay) account for most of it.
    3. One real stall remained: a worker crash loop. A seller agent answered get_products with a 17.8 MB response; the worker was OOM-killed mid-batch, and because the batch claim was never released, every agent in that batch (six of them) starved for days with no run recorded and no backoff. Fixed by fix(compliance): bound agent response size during hosted compliance runs #8187 (4 MiB response cap on hosted compliance calls) and fix(compliance-heartbeat): release orphaned batch claims without losing crash backoff #8188 (claim recovery and crash backoff). Since deploy, the affected agents are getting heartbeats again on their normal cadence.

    #7680 (owner tests deferring heartbeats) was a separate defect, fixed by #7969 and closed.

    Still open, tracked separately

    I'll close this after one more per-day check shows several clean days.

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

Metadata

Metadata

Assignees

Labels

addieIssues related to Addie (via any channel)bugSomething isn't workingclaude-triagedIssue has been triaged by the Claude Code triage routine. Remove to re-triage.compliance-suitepriority:P0Immediate priority: user/revenue/security/reliability bug to work nowseverity:critical

Type

No type

Projects

No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions