#72 AI-791: Group completed tasks by date (@ashwanth1109, Shipyard)
#1321 feat(retention): add OneRoster identity and column provenance (@ashwanth1109, Aerie)
#1829 fix(repo): Retry Redshift deadlock aborts in ontology refresh CALL (@heimdall-keval-factory[bot], Surtr)
#1828 fix(ramp): make cost research recovery resilient (@ashwanth1109, Surtr)
#1826 fix(school-performance): use full monthly QuickBooks budgets (@ashwanth1109, Surtr)
#71 AI-792: Improve task context side panel (@ashwanth1109, Shipyard)
#1264 feat(retention): add Financials retention dashboard and raw data (@ashwanth1109, Aerie)
#1825 fix(repo): Restore aliases in foundation verification query (@heimdall-keval-factory[bot], Surtr)
#1823 fix(aerie): remove retention rules version contract (@ashwanth1109, Surtr)
#70 AI-790: Prevent command titles from wrapping vertically in expanded command groups (@ashwanth1109, Shipyard)
#59 AI-779: Add steering for queued conversation messages (@ashwanth1109, Shipyard)
#69 AI-789: Prepare Shipyard 0.4.1 recovery release (@ashwanth1109, Shipyard)
#68 AI-788: Speed up local Shipyard publish-update workflow (@ashwanth1109, Shipyard)
#67 AI-787: Prepare Shipyard 0.4.0 release (@ashwanth1109, Shipyard)
#66 AI-786: Make update checks recover quickly and release 0.3.1 (@ashwanth1109, Shipyard)
#65 AI-785: Add simple release versions and an Updates detail view (@ashwanth1109, Shipyard)
#64 AI-784: Require local main for Shipyard publish skill (@ashwanth1109, Shipyard)
#63 AI-783: Allow per-conversation model overrides with Luna Max default (@ashwanth1109, Shipyard)
#62 AI-782: Redesign Codex model and reasoning controls (@ashwanth1109, Shipyard)
#3763 fix(spacex-valuation): reconcile September 10 trade (@sanketghia, Klair)
#60 AI-780: Add in-app updates and public release pipeline (@ashwanth1109, Shipyard)
#61 AI-781: Fix Codex reconnect state race (@ashwanth1109, Shipyard)
#58 AI-778: Make Codex transcript activity easier to scan (@ashwanth1109, Shipyard)
#1319 Improve mobile Admissions Forecast comparisons (@YibinLongTrilogy, Aerie)
#1318 Add current Pipeline link to legacy report (@YibinLongTrilogy, Aerie)
#57 AI-777: Remove Codex chat information rail (@ashwanth1109, Shipyard)
#55 AI-775: Enhance task detail queue cards (@ashwanth1109, Shipyard)
#56 AI-776: Harden quiet Codex turn recovery (@ashwanth1109, Shipyard)
#54 AI-766: Improve thread HTML preview sizing and focus mode (@ashwanth1109, Shipyard)
#53 AI-765: Render all Codex message types in Shipyard chat (@ashwanth1109, Shipyard)
#52 AI-764: Restore Research artifact template sections (@ashwanth1109, Shipyard)
#51 AI-763: Make Research artifact approval resilient (@ashwanth1109, Shipyard)
#47 AI-760: Better icon for projects in top bar (@ashwanth1109, Shipyard)
#50 AI-762: Default Codex conversations to Full access (@ashwanth1109, Shipyard)
#48 AI-756: Add semantic colors for task states (@ashwanth1109, Shipyard)
#44 AI-757: Separate completed tasks in queue (@ashwanth1109, Shipyard)
#49 AI-761: Add Shipyard production release agent skill (@ashwanth1109, Shipyard)
#43 AI-755: Auto-start Implement after ticket readiness (@ashwanth1109, Shipyard)
#42 AI-754: Queue Codex follow-up messages (@ashwanth1109, Shipyard)
#46 AI-759: Make attached images reusable by the Codex agent (@ashwanth1109, Shipyard)
#45 AI-758: Prevent duplicate Codex replies during conversation restore (@ashwanth1109, Shipyard)
#1315 feat(reconciliation): add version-pinned protected reads (AERIE-1924) (@caina-barbosa, Aerie)
#41 AI-752: Open conversation links in default browser (@ashwanth1109, Shipyard)
#3761 feat(spacex-valuation): add fair value reconciliation tables (@sanketghia, Klair)
#40 AI-753: Automatically advance Implement into Smoke Test (@ashwanth1109, Shipyard)
#39 AI-751: Prevent duplicate Codex messages (@ashwanth1109, Shipyard)
#3759 fix(brainlift): route summaries to dedicated Sonnet model (@marcusdAIy, Klair)
#37 AI-749: Support concurrent Shipyard instances with shared workflow data (@ashwanth1109, Shipyard)
#38 AI-750: Show detailed Codex errors in diagnostics (@ashwanth1109, Shipyard)
#31 AI-714: Enable pasted images in chat composer (@ashwanth1109, Shipyard)
#35 AI-746: Add environment indicator and branch-aware dev title (@ashwanth1109, Shipyard)
#36 AI-748: Route Shipyard Codex tasks through TrueFoundry (@ashwanth1109, Shipyard)
#34 AI-747: Fix Linear project picker loading state (@ashwanth1109, Shipyard)
#33 AI-745: Support shared Shipyard database instances (@ashwanth1109, Shipyard)
#1308 Revise SIS new-vs-returning enrollment classification (#1307) (@vvp-trilogy, Aerie)
#1793 Release all pain points for accounts above $1M ARR (@mwrshah, Surtr)
#1795 080-2grainne-writeback (@mwrshah, Surtr)
#1794 079-grainne-evidence-payload (@mwrshah, Surtr)
#1821 feat(timeback): roll out incremental OneRoster sync (@caina-barbosa, Surtr)
#3758 feat(klair): Make BoardDoc refresh-stream tests environment-independent (@sanketghia, Klair)
#3756 fix(spacex-valuation): align fair value with waterfall (@sanketghia, Klair)
#1813 feat(education): build a warehouse-owned Person directory (@benji-bizzell, Surtr)
#1309 feat(enrollments): export SIS enrollment summary to CSV (@vvp-trilogy, Aerie)
#1303 feat(enrollments): add SIS enrollment list and basic detail pane (@vvp-trilogy, Aerie)
#1820 chore(timeback): preserve restored production schedule (@caina-barbosa, Surtr)
#1306 feat(education): add managed document relink API (@benji-bizzell, Aerie)
#1816 fix(timeback): treat source key collation as opaque (@caina-barbosa, Surtr)
#3754 KLAIR-3532: Complete Drive context attachment acceptance (@marcusdAIy, Klair)
#1305 Compact Admissions mobile KPI summaries (@YibinLongTrilogy, Aerie)
#3752 KLAIR-3527: Attach Drive files as Coach Claire context (@marcusdAIy, Klair)
#1814 feat(timeback): add incremental assessment sync behind rollout hold (@caina-barbosa, Surtr)
#1304 Add mobile portfolio site breadcrumbs (@YibinLongTrilogy, Aerie)
#1299 feat(enrollments): add parallel aggregate-only SIS enrollment report (@vvp-trilogy, Aerie)
#3753 KLAIR-3529: Require usable text from Anthropic responses (@marcusdAIy, Klair)
#3751 KLAIR-3528: Preserve Brainlift summarization failures (@marcusdAIy, Klair)
#1297 Fix mobile Forecast school list scrolling (@YibinLongTrilogy, Aerie)
#1809 fix(repo): Skip ADHOC lists reactively in list_memberships fetch (@heimdall-keval-factory[bot], Surtr)
#3750 KLAIR-3526: Fail closed on incomplete Anthropic output (@marcusdAIy, Klair)
#1803 chore(surtr): remove the Heimdall dashboard page and its tRPC read layer (1/2) (@kevalshahtrilogy, Surtr)
#3748 fix(board-doc): register AI Renewals central function (@marcusdAIy, Klair)
#286 chore(mercy): pin the harness ref, so @v1 actually pins mercy (@kevalshahtrilogy, trilogy-drones)
#1807 fix(timeback): reduce activity facts window to one month (@caina-barbosa, Surtr)
#1806 chore(hc-forecast): Record the live Core procedure definition (@caina-barbosa, Surtr)
#1805 fix(repo): Split OpenAI BU fetch across two scheduled Lambda runs (@heimdall-keval-factory[bot], Surtr)
#1292 feat(enrollment): drop HubSpot identities + overlay, publish SIS identity and deposit signal (#1290) (@vvp-trilogy, Aerie)
#182 chore(mercy): pin the harness ref, so @v1 actually pins mercy (@kevalshahtrilogy, Sindri)
#1291 chore(mercy): pin the harness ref, so @v1 actually pins mercy (@kevalshahtrilogy, Aerie)
#126 feat(review): rebuild the second-opinion prompt around how the reviewer actually fails (@kevalshahtrilogy, mercy)
#9 feat(console): make revamp operator-ready (@sanketghia, codex-software-factory)
#124 fix(review): actually invoke the second opinion — it shipped inert (@kevalshahtrilogy, mercy)
#123 feat(review): a second opinion on whether a finding must block the merge (@kevalshahtrilogy, mercy)
#8 Add App Server protocol fault-injection coverage (@sanketghia, codex-software-factory)
#7 Persist Codex App Server protocol evidence and failure state (@sanketghia, codex-software-factory)
#1285 AERIE-1283: dbt CI — models only in production, models then tests in dev (@vvp-trilogy, Aerie)
#1288 feat(portfolio): align school and site data contracts (@benji-bizzell, Aerie)
#6 Improve validation repair diagnostics and convergence (@sanketghia, codex-software-factory)
#5 Harden App Server reliability and operator recovery (@sanketghia, codex-software-factory)
#4 test: broaden local resilience coverage (@sanketghia, codex-software-factory)
#3 Gate 2: local durability and operations hardening (@sanketghia, codex-software-factory)
#1801 fix(repo): Accept core_submitting in HC pinned-run guard (@heimdall-keval-factory[bot], Surtr)
#1800 fix(SURTR-648): use supported CAPEX batch request (@marcusdAIy, Surtr)
#1797 [SURTR-1123] Rename workforce warehouse identifiers only (@caina-barbosa, Surtr)
#3744 feat(board-doc): upgrade shared model to Fable 5.1 (@marcusdAIy, Klair)
#1286 AERIE-1284: Shared HubSpot display-name dimension for enrollment + pipeline reports (@vvp-trilogy, Aerie)
#1260 Remove getPortfolioHealth MCP surface (@YibinLongTrilogy, Aerie)
#1281 AERIE-1279: Key the offering-kind axis on program_type so per-campus Main Program campuses reach the enrollment report (@vvp-trilogy, Aerie)
#1259 Remove presentReplanOptions and generatePlan (@YibinLongTrilogy, Aerie)
#1276 AERIE-1857: Add unpublished durable uploader and automatic wake (@caina-barbosa, Aerie)
#1250 feat(dashboards): add Real Estate tab to Data Health page (@kevalshahtrilogy, Aerie)
#3742 fix(spacex-valuation): reconcile September distribution (@sanketghia, Klair)
#2 Establish Gate 0 local maturity baseline (@sanketghia, codex-software-factory)
#1 feat: add research-to-Linear intake workflow (@sanketghia, codex-software-factory)
#1277 fix(portfolio): retire legacy opening date from MCP reads (@benji-bizzell, Aerie)
#1253 feat(dashboards): add hidden REBL3 Surtr-comparison experimental view (@kevalshahtrilogy, Aerie)
#1271 fix(operations): accept nullable Surtr schedule expressions (@benji-bizzell, Aerie)
#1273 fix(portfolio): use Milestone 9 as the canonical opening date (@benji-bizzell, Aerie)
#1272 AERIE-1266: Complete the arrival cohorts — normalize the enrolled date and stop gating entry timing on current attendance (@vvp-trilogy, Aerie)
#1270 AERIE-1268: Scope the enrollment campus axis to physical, active campuses across the four brands (@vvp-trilogy, Aerie)
#1269 feat(reconciliation): add dormant Aerie foundations (@caina-barbosa, Aerie)
#1267 fix(api): complete enrollment pagination and handle cleared dates (@benji-bizzell, Aerie)
#1239 fix(dev-local): start Next in dev-local:workers on Windows and macOS (@vvp-trilogy, Aerie)
#1265 feat(add-aerie-skill): add dormant adapter runtime and artifact lifecycle (@caina-barbosa, Aerie)
#1783 feat(education): document temporary Alpha Summer Camp staging load (@ashwanth1109, Surtr)
#122 feat(review): relax the blocking bar on late rounds, not on every review (@kevalshahtrilogy, mercy)
#1788 [SURTR-1175] Build and live validate Aerie retention refresh (@ashwanth1109, Surtr)
#116 feat(mercy): summon heimdall to fix conflicts alongside the findings (@kevalshahtrilogy, mercy)
#1263 test(feedback): stabilize intake rate-limit window coverage (@benji-bizzell, Aerie)
#1789 fix(education): prevent billing estate refresh throttling (@benji-bizzell, Surtr)
#1784 fix(qtd): match school names for guide headcount (SURTR-1161) (@ashwanth1109, Surtr)
#1787 fix(timeback): contain timeback-raw-sync overruns and finalize timed-out runs (SURTR-1162) (@caina-barbosa, Surtr)
#1769 [SURTR-1135] Fix QTD unit economics revenue proration (@ashwanth1109, Surtr)
#1249 feat(chat): add REBL3 pipeline data-health endpoint (@kevalshahtrilogy, Aerie)
#32 AI-725: Persist workflow operations and add reusable smoke testing (@ashwanth1109, Shipyard)
#1261 fix(enrollment): drop SIS tenant test records from the enrollment spine (@vvp-trilogy, Aerie)
#120 fix(heimdall): the described-edit check was inert — the harness made the workspace look dirty (@kevalshahtrilogy, mercy)
#119 feat(heimdall): repair red before publishing, and never open a second PR for a ticket (@kevalshahtrilogy, mercy)
#118 feat(heimdall): stop losing finished work — described fixes, merge closure, evidence reach, and self-decided calls (@kevalshahtrilogy, mercy)
#1257 fix(finance): support NetSuite-only CAPEX entities (@marcusdAIy, Aerie)
#1782 fix(repo): Surface ECS StopCode/StoppedReason before truncation (@heimdall-keval-factory[bot], Surtr)
#1781 fix(capex): apply warehouse DDL in one transaction (@marcusdAIy, Surtr)
#1780 fix(capex): preserve missing DDR budgets as null (@marcusdAIy, Surtr)
#1256 fix(enrollment): SIS mid-year Transfer Out excludes FinalSite opening-day stamps (#1254) (@vvp-trilogy, Aerie)
#1778 fix(capex): fail closed in the live verifier (@marcusdAIy, Surtr)
#1777 chore(heimdall): sweep the Linear queue every 5 minutes (@kevalshahtrilogy, Surtr)
#1252 1239-2aerie-publishing-modalities (@mwrshah, Aerie)
#1776 chore(heimdall): 60-minute soak and a 3-hour release cooldown (@kevalshahtrilogy, Surtr)
#117 feat(heimdall): a release cooldown, so an hourly releaser doesn't ship hourly forever (@kevalshahtrilogy, mercy)
#1775 chore(heimdall): format the agent's output before it commits (@kevalshahtrilogy, Surtr)
#114 feat(heimdall): format the agent's output before committing it (@kevalshahtrilogy, mercy)
#1121 fix(sales-educrm-mart-sync): raise Redshift statement poll ceiling to f… (@heimdall-keval-factory[bot], Surtr)
#1595 fix(openai-usage-pipeline): give token bucket headroom below OpenAI rat… (@heimdall-keval-factory[bot], Surtr)
#1559 fix(mart-school-performance-table-3-refresh): retry mart refresh CALL o… (@heimdall-keval-factory[bot], Surtr)
#115 fix(heimdall): stop a finished answer reading as a question (@kevalshahtrilogy, mercy)
#1774 fix(repo): Tolerate small Model breakdown excess like Credit Source (@heimdall-keval-factory[bot], Surtr)
#1748 fix(perplexity-usage-pipeline): enforce the skip ceiling per org-day too (@kevalshahtrilogy, Surtr)
#113 feat(mercy): trust heimdall-driven PRs, and stop summoning the agent after approval (@kevalshahtrilogy, mercy)
#112 feat(heimdall): label every pipeline-filed ticket `surtr-pipeline` (@kevalshahtrilogy, mercy)
#1773 fix(repo): Add voyage to TFY known-skipped providers (@heimdall-keval-factory[bot], Surtr)
#1770 fix(education): retain billing allocations without contact links (@benji-bizzell, Surtr)
#1768 fix(education): leave Finalsite reader access under DBA control (@benji-bizzell, Surtr)
#1765 fix(education): restore SIS dataset-triggered refreshes (@benji-bizzell, Surtr)
#1763 feat(education): capture Finalsite findings without blocking ingestion (@benji-bizzell, Surtr)
#1764 fix(repo): forward trigger context for dataset publication runs (@heimdall-keval-factory[bot], Surtr)
#1735 fix(ramp): retry transient API timeouts (@ashwanth1109, Surtr)
#1244 AERIE-1855: Add unpublished verified materialization and installer commands (@caina-barbosa, Aerie)
#1762 fix(education): preserve Finalsite billing balance precision (@benji-bizzell, Surtr)
#1761 fix(education): preserve lossless Limitless transcripts (@benji-bizzell, Surtr)
#1245 feat(platform-errors): make automatic triage runs inspectable (@benji-bizzell, Aerie)
#111 feat(review): make blocking findings name the defect class to fix (@kevalshahtrilogy, mercy)
#1758 feat(education): isolate SIS publications and resume detail collection (@benji-bizzell, Surtr)
#1757 077-finops-incremental-regression (@mwrshah, Surtr)
#174 196-port-live-skill-hydration (@mwrshah, Sindri)
#1756 fix(education): preserve FinalSite contacts outside workflow listings (@benji-bizzell, Surtr)
#1755 fix(education): accept new GuidePlatform source fields (@benji-bizzell, Surtr)
#1687 feat(education): ingest Finalsite billing snapshots (@benji-bizzell, Surtr)
#3737 fix(overspend-alerts): exclude dummy bank charge vendor (@sanketghia, Klair)
#3736 chore(repo): reverse instruction symlink direction (@sanketghia, Klair)
#1753 fix(netsuite-auto-renewal): publish daily snapshots (@ashwanth1109, Surtr)
#1754 fix(repo): Include exception message in run_result failure payload (@heimdall-keval-factory[bot], Surtr)
#1727 feat(heimdall): the factory board's data model (SURTR-1040) [2/2] (@kevalshahtrilogy, Surtr)