rdmsm4x-changelog-20260926-1932-tyrell-vendor-quota-fix
rdmsm4x-changelog-20260926-1932-tyrell-vendor-quota-fix
Implemented shared vendor quota tracking and expiry-aware account advice for Tyrell; live candidate endpoints pass, original local runtime restored.
- Scope: source and temporary runtime proof on rdmsm4x only; five-host metadata reads, no remote writes/deployment. ISSUE-20260926-33 remains owned by tyrell for independent verification.
- Tyrell branch fix/usage-accounts-0926, commit 8f0c94a. Files: Package.swift; Sources/TyrellCore/UsageFile.swift and UsageAggregate.swift; scripts/usage_collector.zsh and install_usage_agent.zsh; Support/com.eastcoastscience.tyrell-usage.plist.template; Tests/TyrellCoreTests/TelemetryAndMeshTests.swift and QuotaKitIntegrationTests.swift; docs/ops/2026-09-26-vendor-quota-kit.md; SESSION-STATE.md.
- ECSQuotaKit at ~/dev/lib/ECSQuotaKit, branch feat/vendor-quotas-20260926, commit 89e90b1 (source 819c8b4). Package.swift, AGENTS.md, NOTICE, README.md, SESSION-STATE.md, .gitignore; Sources/ECSQuotaKit/Quota.swift, CreditReaders.swift, VendorCollector.swift, FleetProjection.swift; Sources/ecs-quota/main.swift; Tests/ECSQuotaKitTests/QuotaTests.swift. TokenBar MIT source attribution retained.
- Local config: ~/.tyrell/quota-accounts.json seeded with requested renewal/downgrade dates; PROJECTS.md limited Tyrell row/new kit entry; task check-in and ticket comments updated. No credentials written into evidence. Empty ~/.tyrell/quota-reader.lock can remain.
- Commands: nice -n 15 swift test -j 2 (fd limit 10240), kit swift test, final focused consumer tests, universal kit release build, lipo -archs, zsh -n, plutil -lint, bounded read-only SSH identity/usage probes, real curl endpoint requests, runtime-proof.py install/rollback.
- Verification: full Tyrell 628 XCTest (1 skip, 0 failures) + 1094 Swift Testing, kit 17 pass, final focused 1 XCTest + 5 Swift Testing pass. Universal CLI x86_64 arm64. Real Google four windows; Claude/Codex/Copilot measured. Two account email/host sets and iCloud drain-first preference verified in candidate HTTP response.
- Runtime: candidate tyrelld isolated port 43127, disposable DB, stopped after proof. Signed production daemon/app untouched. Original collector/snapshot restored twice; SHA256 checks pass; original usage LaunchAgent bootstrap exit 0. No main merge/push, no signing/entitlement or auth-fix/upkeep-12 edits.
- Backup: /Users/richh/dev/_handoff/tyrell-usage-fix-20260926/rollback/manifest.json and numbered originals; candidate copies preserved. Full evidence: /Users/richh/dev/_handoff/tyrell-usage-fix-20260926/HANDBACK.md and readings/.
- Undo: nice -n 15 python3 /Users/richh/dev/_handoff/tyrell-usage-fix-20260926/runtime-proof.py rollback (already executed twice). Source remains isolated on feature branches; no main reversal needed. Requested nonsecret account config remains editable.
- Owner actions: tyrell review before integration. OpenRouter key absent (name OPENROUTER_API_KEY, global.env or Keychain), Hermes login/source unverified; batched details in HANDBACK. Apple Notes pending: Background session, no GUI AppleEvents claimed. File archive is durable. No subagents/external model jobs.