#1985 [AI-832] Fix cseg1 raw SuiteQL contract (@ashwanth1109, Surtr)
#1983 fix(ramp): use Klair production Anthropic credentials (@ashwanth1109, Surtr)
#1984 docs(ai-spend): spec 11 - personal api key mapping (SURTR-1425) (@kevalshahtrilogy, Surtr)
#11 fix(factory): refresh base before batch worktrees (@sanketghia, codex-software-factory)
#3803 feat(spacex): consume exact-date closing prices in Klair (@sanketghia, Klair)
#1905 [SURTR-1347] Add AR aging ingestion and Core publication path (@sanketghia, Surtr)
#3802 feat(arr-retention): expose period-aware downsell filters (@ashwanth1109, Klair)
#1954 [AI-832] Migrate NetSuite GL transactions from saved-search CSVs to raw pipeline (@ashwanth1109, Surtr)
#203 1326-updated-at-projections (@mwrshah, Sindri)
#1428 1391-updated-at-projections (@mwrshah, Aerie)
#1914 084-surtr-service-user-cutover (@mwrshah, Surtr)
#1975 fix(ai-spend): require one row per seed slug in the spec 10 rollback guard (@kevalshahtrilogy, Surtr)
#1973 fix(aws-bedrock-token-metrics): scope known access denials to reviewed account ids (@kevalshahtrilogy, Surtr)
#1972 fix(tfy-provider-secrets-sync): require live registry coverage for known-unresolved keys (@kevalshahtrilogy, Surtr)
#1974 fix(mart-education-guide-roster-refresh): bump the source-contract migration's idempotency token to v2 (@kevalshahtrilogy, Surtr)
#1970 fix(guide-platform-raw-sync): re-grant writer privileges after the owner change in migration 004 (@kevalshahtrilogy, Surtr)
#3801 feat(ai-budget): add claude.ai per-person spend to the People tab (@kevalshahtrilogy, Klair)
#1967 docs(ai-spend): spec 10 - person identity seeds (SURTR-1403) (@kevalshahtrilogy, Surtr)
#104 Release: Shipyard 0.6.0 (@ashwanth1109, Shipyard)
#103 AI-853: Add an explicit No project option for Linear tickets (@ashwanth1109, Shipyard)
#3800 feat(ai-budget): credit registry-mapped personal API keys to their person (@kevalshahtrilogy, Klair)
#3799 feat(ai-budget): resolve email aliases to one person in the People tab (@kevalshahtrilogy, Klair)
#1966 fix(sales-educrm-mart-sync): retry Athena INVALID_VIEW and record its reason (@kevalshahtrilogy, Surtr)
#1965 fix(aws-bedrock-token-metrics): don't report known access denials as PARTIAL (@kevalshahtrilogy, Surtr)
#1964 fix(tfy-provider-secrets-sync): report Daybreak's manually-covered key as known-unresolved (@kevalshahtrilogy, Surtr)
#1963 fix(sf-transcripts-sync): treat unparseable Salesforce transcript URLs as skipped (@kevalshahtrilogy, Surtr)
#1962 fix(perplexity-usage-pipeline): merge same-day usage buckets split across pages (@kevalshahtrilogy, Surtr)
#102 AI-852: Only start releases on explicit request (@ashwanth1109, Shipyard)
#101 Release: Shipyard 0.5.2 (@ashwanth1109, Shipyard)
#100 AI-847: Add manual PR reviews and publishable node templates (@ashwanth1109, Shipyard)
#140 Land Jev calibration rows and rubric digest (re-land of #139) (@kevalshahtrilogy, mercy)
#1409 feat(real-estate): per-field difference summary, CSV export and copyable summary (stack 3/3) (@kevalshahtrilogy, Aerie)
#138 Make Jev verification independent and scoped to reported findings (@kevalshahtrilogy, mercy)
#1408 feat(real-estate): make the Surtr comparison list navigable: tabs, search, pagination (stack 2/3) (@kevalshahtrilogy, Aerie)
#3797 feat(ai-budget): route 42-ds.com domain to Skyvera in key attribution rules (@kevalshahtrilogy, Klair)
#1407 feat(real-estate): classify Surtr comparison differences as real vs formatting-only (stack 1/3) (@kevalshahtrilogy, Aerie)
#1411 fix(sync): stop a stale Observer verdict reading as healthy on Real Estate health (@kevalshahtrilogy, Aerie)
#1410 fix(real-estate): make the experimental comparison page scrollable and fill the dashboards panel (@kevalshahtrilogy, Aerie)
#1960 docs(ai-spend): spec 9 - gpt-6-astra pricing insert and reprice (@kevalshahtrilogy, Surtr)
#1804 chore(surtr): remove the orphaned Heimdall board module and read layer (2/2) (@kevalshahtrilogy, Surtr)
#1909 feat(mercy): dashboard Feedback section for disputed/override/reacted reviews (@kevalshahtrilogy, Surtr)
#1406 fix(sync): model Surtr observer scopes on Real Estate health (@kevalshahtrilogy, Aerie)
#1907 feat(mercy): ground-truth feedback schema + ingest route (@kevalshahtrilogy, Surtr)
#1855 fix(core-education): restore Q3 capacity view + add Finalsite enrollment leg (@kevalshahtrilogy, Surtr)
#1959 fix(sf-raw-sync): surface Salesforce OAuth error reason on auth failure (@kevalshahtrilogy, Surtr)
#202 1325-2pr152-schema-followons (@mwrshah, Sindri)
#1405 test: cover Forge authoring guide delivery (@mwrshah, Aerie)
#1404 feat(admissions): add Pipeline-backed Forecast V2 drilldowns (@vvp-trilogy, Aerie)
#3784 Q108: fix(mcp): route student financial queries to Finalsite contacts (@mwrshah, Klair)
#137 Add TypeSafe Jev shadow review signals (@marcusdAIy, mercy)
#99 AI-846: Add manually refreshed GitHub reviews to task detail (@ashwanth1109, Shipyard)
#98 AI-844: Harden Codex conversation message reconciliation (@ashwanth1109, Shipyard)
#96 Release: Shipyard 0.5.1 (@ashwanth1109, Shipyard)
#95 AI-841: Stabilize release conversation startup (@ashwanth1109, Shipyard)
#1401 fix(admissions): align forecasts with planned capacity (@benji-bizzell, Aerie)
#1398 feat(admissions): Forecast V2 January eligibility on Pipeline inputs (#1387) (@vvp-trilogy, Aerie)
#94 AI-841: Add Shipyard release review workspace (@ashwanth1109, Shipyard)
#93 Release: Shipyard 0.5.0 (@ashwanth1109, Shipyard)
#92 AI-839: Prevent SQLite lock failures when opening conversations (@ashwanth1109, Shipyard)
#1399 fix(admissions): normalize forecast API dates (@benji-bizzell, Aerie)
#199 1321-aerie-sindri-release-migrations (@mwrshah, Sindri)
#1397 fix(forge): reject malformed bearer credentials (@benji-bizzell, Aerie)
#1395 feat(admissions): align forecast and capacity sources (@benji-bizzell, Aerie)
#1391 feat(admissions): align Forecast V2 right-card inputs with Admissions Pipeline (#1386) (@vvp-trilogy, Aerie)
#197 1320-better-logging (@mwrshah, Sindri)
#196 1319-aerie-sindri-local-link (@mwrshah, Sindri)
#1392 1384-aerie-skill-upload-failure (@mwrshah, Aerie)
#194 1317-sindri-upload-method-contract (@mwrshah, Sindri)
#192 1315-sindri-topic-schema (@mwrshah, Sindri)
#193 1316-sindri-credential-errors (@mwrshah, Sindri)
#191 205-sindri-agent-prompt-preview-fix (@mwrshah, Sindri)
#1390 204-aerie-workflow-schema-validation (@mwrshah, Aerie)
#190 203-sindri-workflow-schema-editor-fix (@mwrshah, Sindri)
#89 AI-835: Prevent duplicate and reordered chat messages after window refocus (@ashwanth1109, Shipyard)
#91 AI-838: Add macOS memory diagnostics and bound Shipyard retention (@ashwanth1109, Shipyard)
#90 AI-837: Consolidate local queue status around the current workflow node (@ashwanth1109, Shipyard)
#1385 Improve mobile admissions pipeline layout (@YibinLongTrilogy, Aerie)
#1382 Clarify Forecast V2 pipeline details (@vvp-trilogy, Aerie)
#1384 feat(admissions): Forecast V2 clickable-cohort detail mart (#1381) (@vvp-trilogy, Aerie)
#88 AI-834: Keep the chat conversation back button consistently visible (@ashwanth1109, Shipyard)
#87 AI-821: Fix active-turn steering (@ashwanth1109, Shipyard)
#86 AI-833: Show "Waiting for input" while Implement awaits clarification (@ashwanth1109, Shipyard)
#1956 Fix Rhombus saturated event-window ingestion (@benji-bizzell, Surtr)
#85 AI-831: formalize repository-managed node templates (@ashwanth1109, Shipyard)
#1380 feat(admissions): make Forecast V2 the default report, link legacy from footer (@vvp-trilogy, Aerie)
#1378 Revert PR #1375: restore Site capacity on Enrollment report (@vvp-trilogy, Aerie)
#1950 fix(education): restore GuidePlatform schema compatibility (@benji-bizzell, Surtr)
#183 1313-aerie-forge-parity-sindri (@mwrshah, Sindri)
#1355 1318-2aerie-forge-parity (@mwrshah, Aerie)
#3796 fix(mcp-ontology): correct CFO audit guidance (@mwrshah, Klair)
#1363 1313-aerie-forge-parity (@mwrshah, Aerie)
#1955 fix(education): verify admissions funnel contact identity set (@marcusdAIy, Surtr)
#1376 feat(dbt): publish Education Core-first operation capacity by SIS campus-year (mart_program_year) (@vvp-trilogy, Aerie)
#1375 feat(admissions): use HubSpot academic-session Operation Capacity on the Enrollment report (@vvp-trilogy, Aerie)
#136 001-preserve-changed-file-inventory (@mwrshah, mercy)
#1952 fix(education): qualify missing plan coverage in Finance view (@sanketghia, Surtr)
#1870 fix(access): preserve EDU reader access to consolidated budgets (@mwrshah, Surtr)
#186 feat(agent-runner): add secure MCP authoring and leased headers (@caina-barbosa, Sindri)
#188 202-fix-mercy-workflow-secret (@mwrshah, Sindri)
#1949 chore: update SpaceX pipeline schedules (@sanketghia, Surtr)
#1948 feat: trigger SpaceX projection for new trades (@sanketghia, Surtr)
#1947 Use HubSpot enrollment for school P&L divisors (@YibinLongTrilogy, Surtr)
#1940 feat(education): add Rhombus raw staging ingestion (@benji-bizzell, Surtr)
#3794 feat(spacex-valuation): make approved page canonical (@sanketghia, Klair)
#1943 feat: consume cumulative SpaceX Trades boundary (@sanketghia, Surtr)
#1944 feat(brokerage): add forwarding recipients (@sanketghia, Surtr)
#1936 feat(education): retain admissions funnel population observations (@marcusdAIy, Surtr)
#1371 fix(admissions): restore staged Forecast V2 rollout (@benji-bizzell, Aerie)
#1941 fix(pipelines): compact additional schedule rule names (@benji-bizzell, Surtr)
#1937 feat(education): propagate Aerie deal canonical IDs (@marcusdAIy, Surtr)
#1369 feat(operations): surface DRI contact details in Portfolio API (@benji-bizzell, Aerie)
#1938 fix(education): retain active guardian associations (@benji-bizzell, Surtr)
#1935 feat(finance): add revenue per campus reconciliation packet (@marcusdAIy, Surtr)
#1934 fix(netsuite): preserve typed GL identities in reconciliation (@marcusdAIy, Surtr)
#1368 Forecast V2: retire legacy January-1 forecast fields (#1365) (@vvp-trilogy, Aerie)
#1926 feat(education): capture Marauder's Map source observations (@benji-bizzell, Surtr)
#1930 fix(alpha): accept standard identity count container (@marcusdAIy, Surtr)
#1367 fix(dbt): correct Houston Finalsite tenant (@vvp-trilogy, Aerie)
#1928 fix(alpha): remove duplicate invoke config (@marcusdAIy, Surtr)
#1366 feat(admissions): Forecast V2 — January forecast and Pipeline Additions (@vvp-trilogy, Aerie)
#1927 fix(alpha): prevent controlled invoke retries (@marcusdAIy, Surtr)
#1917 feat(education): activate migrated SIS consumers (@benji-bizzell, Surtr)
#1923 fix(education): preserve Finalsite entities across full runs (@benji-bizzell, Surtr)
#1922 fix(alpha): accept Redshift tuple recovery rows (@marcusdAIy, Surtr)
#1919 fix(alpha): replace dated provenance split with durable gates (@marcusdAIy, Surtr)
#1918 fix(education): accept active HubSpot association defaults (@benji-bizzell, Surtr)
#1915 fix(alpha): align plan validation with published schema (@marcusdAIy, Surtr)
#1913 fix(alpha): accept omitted retired scenario name (@marcusdAIy, Surtr)
#1906 fix(education): tolerate equivalent SIS occurrences (@benji-bizzell, Surtr)
#1910 fix(alpha): avoid reserved Redshift snapshot alias (@marcusdAIy, Surtr)
#1362 feat(admissions): focus Forecast V2 on current year (@vvp-trilogy, Aerie)
#83 AI-830: Make artifact names clickable to reveal files in Finder (@ashwanth1109, Shipyard)
#84 AI-829: Prevent Research artifacts from being generated without required YAML (@ashwanth1109, Shipyard)
#1908 docs(quickbooks): document company onboarding flow (@ashwanth1109, Surtr)
#1361 fix(dbt): align Community age eligibility (@vvp-trilogy, Aerie)
#1360 feat(dbt): split Session 3 guide and offer counts (@vvp-trilogy, Aerie)
#1849 SURTR-1270: collections-target-forecast-sync-v2 failing — 4 of 7 forecast tab(s) fai (@kevalshahtrilogy, Surtr)
#1357 feat(admissions): Admissions Forecast V2 — publish and build the parallel report (@vvp-trilogy, Aerie)
#1903 fix(aerie-rebl3-raw-sync): migrate to REBL3's v2 sites API for full inventory (@kevalshahtrilogy, Surtr)
#1901 fix(education): accept Aerie account snapshot counts (@benji-bizzell, Surtr)
#1899 fix(education): consolidate Aerie account staging (@benji-bizzell, Surtr)
#3792 feat(master-mapping): register 42DS and SEZP (@sanketghia, Klair)
#1352 fix(assistant): retire stored prompt configuration (@benji-bizzell, Aerie)
#1897 fix(education): validate Person SIS SQL in Redshift (@benji-bizzell, Surtr)
#1356 feat(dbt): Admissions Forecast V2 mart (@vvp-trilogy, Aerie)
#1896 fix(education): correct Guide view ownership migration (@benji-bizzell, Surtr)
#1351 Add mobile Enrollments cards (@YibinLongTrilogy, Aerie)
#1894 fix(education): reconcile GuidePlatform behavioral event links (@benji-bizzell, Surtr)
#1882 feat(alpha): add release verification and activation controls (@marcusdAIy, Surtr)
#1883 feat(education): migrate retention to rolling SIS source (@benji-bizzell, Surtr)
#1879 feat(education): migrate current enrollment to rolling SIS source (@benji-bizzell, Surtr)
#1348 test(platform): protect toast feedback and dismissal (@benji-bizzell, Aerie)
#1875 feat(education): migrate SIS school-year snapshots to rolling source (@benji-bizzell, Surtr)
#1893 feat(education): activate Finalsite billing mart refresh (@benji-bizzell, Surtr)
#1881 feat(education): migrate Aerie organization directory source (@benji-bizzell, Surtr)
#1880 feat(education): migrate Person directory to bulk SIS source (@benji-bizzell, Surtr)
#1347 fix(repository): retire unused UI and obsolete test coverage (@benji-bizzell, Aerie)
#1873 feat(education): expose accepted rolling SIS projection (@benji-bizzell, Surtr)
#1891 fix(education): revert invalid snapshot publication gate (@benji-bizzell, Surtr)
#3790 fix(board-doc): protect document root and repair stale identities (@marcusdAIy, Klair)
#1876 feat(alpha): publish snapshots atomically (@marcusdAIy, Surtr)
#1874 feat(alpha): install trusted physical schema (@marcusdAIy, Surtr)
#132 1321-deleted-file-coverage (@mwrshah, mercy)
#1890 fix(capex): accept scheduled empty params (@marcusdAIy, Surtr)
#1339 1316-aerie-mercy-excludes (@mwrshah, Aerie)
#3788 fix(board-doc): allow trusted Workspace domains (@marcusdAIy, Klair)
#287 ci: forward BRAINTRUST_API_KEY to the reusable mercy workflow (@kevalshahtrilogy, trilogy-drones)
#1342 feat(dbt): migrate SIS sources to Surtr-managed typed raw_* tables (#1341) (@vvp-trilogy, Aerie)
#1346 SIS enrollment table UX: group tint, header info tooltips, single-column sorting (@vvp-trilogy, Aerie)
#82 AI-820: Reset local repositories to origin during sync (@ashwanth1109, Shipyard)
#1888 chore(education): assign plan actual variance pipeline owner (@sanketghia, Surtr)
#1854 feat(education): add governed plan actual variance pipeline (@sanketghia, Surtr)
#1886 fix(observer): gate Braintrust logging behind OBSERVER_BRAINTRUST_ENABLED (@kevalshahtrilogy, Surtr)
#185 ci: forward BRAINTRUST_API_KEY to the reusable mercy workflow (@kevalshahtrilogy, Sindri)
#3781 ci: forward BRAINTRUST_API_KEY to the reusable mercy workflow (@kevalshahtrilogy, Klair)
#1856 ci: forward BRAINTRUST_API_KEY to the reusable mercy workflow (@kevalshahtrilogy, Surtr)
#1884 fix: support current SpaceX workbook layout (@sanketghia, Surtr)
#1843 SURTR-1199: core-education-student-school-year-snapshots failing — Pinned finalsite (@kevalshahtrilogy, Surtr)
#1836 feat: publish SpaceX workbook Core models (@sanketghia, Surtr)
#1872 feat(alpha): isolate lossless API contract (@marcusdAIy, Surtr)
#1329 docs(repository): replace delivery archive with durable knowledge (@benji-bizzell, Aerie)
#1877 Fix brokerage UUID load suffix and failure cleanup (@sanketghia, Surtr)
#1850 SURTR-1272: ramp-superbuilders-report failing — StopCode=EssentialContainerExited; S (@kevalshahtrilogy, Surtr)
#1868 fix(education): keep Finalsite billing schedule enabled (@benji-bizzell, Surtr)
#1867 feat(education): publish Finalsite billing marts (@benji-bizzell, Surtr)
#1866 fix(education): reconcile Finalsite membership and cadence (@benji-bizzell, Surtr)
#1340 feat(admissions): rename forecast model labels to Finance Forecast / Empirical Forecast (@vvp-trilogy, Aerie)
#1865 fix(education): correct Marcus pipeline ownership (@benji-bizzell, Surtr)
#1819 feat(education): stabilize AI Horizons rolling sync (@benji-bizzell, Surtr)
#1864 fix(education): restore complete Finalsite outcomes (@benji-bizzell, Surtr)
#1337 feat(enrollment): canonicalize SIS enrollments to one record per student + offering (#1336) (@vvp-trilogy, Aerie)
#1863 fix(capex): source cohorts from Rhodes milestones (@marcusdAIy, Surtr)
#130 1320-exclude-paths (@mwrshah, mercy)
#131 ruff-format-baseline (@mwrshah, mercy)
#1859 fix(brokerage): use secure Pillow binary wheel (@marcusdAIy, Surtr)
#1335 1315-aerie-mercy-excludes (@mwrshah, Aerie)
#1834 SURTR-1295: use dedicated SaaS Budgeting Redshift runtime user (@caina-barbosa, Surtr)
#1852 SURTR-1282: grainne-push failing — StopCode=EssentialContainerExited; StoppedReason= (@kevalshahtrilogy, Surtr)
#1851 SURTR-1276: hubspot-core-tables failing — StopCode=EssentialContainerExited; Stopped (@kevalshahtrilogy, Surtr)
#1840 SURTR-1151: openai-usage-pipeline flagged by the observer (@kevalshahtrilogy, Surtr)
#81 Release: Shipyard 0.4.5 (@ashwanth1109, Shipyard)
#80 AI-804: Keep same-turn Codex replies in order (@ashwanth1109, Shipyard)
#1331 feat(cd): thread NEXT_PUBLIC_REAL_ESTATE_DATA_HEALTH_ENABLED through the chat build (@kevalshahtrilogy, Aerie)
#78 Release: Shipyard 0.4.4 (@ashwanth1109, Shipyard)
#79 AI-802: Complete releases through the Shipyard release skill (@ashwanth1109, Shipyard)
#129 feat(telemetry): Braintrust review traces + false-positive/negative feedback dataset (@kevalshahtrilogy, mercy)
#77 AI-800: Preserve conversation order during history refreshes (@ashwanth1109, Shipyard)
#76 AI-799: Publish Apple Silicon-only Shipyard releases (@ashwanth1109, Shipyard)
#75 Release: Shipyard 0.4.3 (@ashwanth1109, Shipyard)
#74 AI-796: Make Codex conversation loading ordered, replayable, and resilient (@ashwanth1109, Shipyard)
#10 feat(console): add interaction transcript observability (@sanketghia, codex-software-factory)
#3778 feat(spacex-valuation): add backend-backed V2 comparison page (@sanketghia, Klair)
#73 AI-795: Restore versioned releases and replace the local publishing skill (@ashwanth1109, Shipyard)
#152 176-sindri-wfinstances (@mwrshah, Sindri)
#3777 feat(spacex-valuation): add backend snapshot api (@sanketghia, Klair)
#1327 docs(repository): remove stale source commentary (@benji-bizzell, Aerie)
#1328 test(adapter-runtime): stabilize capacity-boundary timeout (@benji-bizzell, Aerie)
#1324 feat(education): publish native accounts for Person matching (@benji-bizzell, Aerie)
#1316 feat(portfolio): match owner filters across lifecycle roles (@benji-bizzell, Aerie)
#1302 fix(education): accept registry-managed school chains (@benji-bizzell, Aerie)
#3776 fix(board-doc): bound provider cleanup (@marcusdAIy, Klair)
#3775 fix(board-doc): bound Google fetch cleanup (@marcusdAIy, Klair)
#3774 fix(board-doc): surface Google Doc fetch failures (@marcusdAIy, Klair)
#3772 fix(board-doc): summarize complete oversized Brainlifts before save (@marcusdAIy, Klair)
#3771 fix(addon): recover live expanded Financials marker shape (@marcusdAIy, Klair)
#3768 Fix stable Financials heading identity across repeated refreshes (@marcusdAIy, Klair)
#3767 KLAIR-3534: Place Drive attachment beside Send (@marcusdAIy, Klair)
#3765 Fix Budget Bot Financials refresh table targeting (@marcusdAIy, Klair)