From ad89d13583d2d6f430b5d8a8770396f7d92c91cc Mon Sep 17 00:00:00 2001 From: jdawang Date: Sat, 28 Mar 2026 00:49:44 +0000 Subject: [PATCH 1/5] save work --- blog/2026/property-values/index.qmd | 92 +++++++++++++++++++++++------ 1 file changed, 73 insertions(+), 19 deletions(-) diff --git a/blog/2026/property-values/index.qmd b/blog/2026/property-values/index.qmd index bc63446..d60fbb4 100644 --- a/blog/2026/property-values/index.qmd +++ b/blog/2026/property-values/index.qmd @@ -6,20 +6,22 @@ categories: [housing, edmonton, zoning, property value] description: "Using a first-difference event study design, I find no evidence that nearby multi-unit infill construction reduces property appreciation rates in Edmonton's mature neighbourhoods — and some evidence it slightly accelerates them." link-external-newwindow: true link-external-icon: false -draft: true +draft: false +execute: + cache: refresh --- In a [previous post](../../2025/property-value-preliminary/), I showed some descriptive evidence that properties near new multi-unit buildings don't appreciate less than properties farther away. That analysis was intentionally preliminary: comparing group medians year-by-year doesn't account for the fact that infill tends to cluster in specific neighbourhoods, on specific lot types, and near properties that may already be on different value trajectories. This post applies more rigorous methods to the same question. Using a first-difference event study design, I control for all time-invariant differences across properties (location, lot size, age, neighbourhood character) and for city-wide appreciation trends. -The answer is the same as the preliminary post: **there is no evidence that multi-unit infill construction reduces nearby property values**, across every specification. +The answer is the same as the preliminary post: **there is no evidence that multi-unit infill construction reduces nearby property values** — and across every specification, the estimates point in the opposite direction. ## Data All data are from Edmonton's open data portal. -- **Historical property assessment data**, 2015–2024. I filter for residential properties (`mill_class_1 == "RESIDENTIAL"`) with positive assessed values. +- **Historical property assessment data**, 2015–2026. I filter for residential properties (`mill_class_1 == "RESIDENTIAL"`) with positive assessed values. Data for 2015–2024 come from a combined historical RDS; 2025 is a separate GeoJSON; 2026 requires joining a property-information shapefile (geometries) with a separate assessment CSV. - **General building permit data**, 2009–2025. Filtered using the same criteria as the preliminary post: permits adding ≥1 unit, excluding excavation-only permits. - **Mature neighbourhood boundaries** (2024 vintage). @@ -48,12 +50,66 @@ library(here) data_dir <- here("../../../data") historical <- read_rds(here(data_dir, "assessment_historical.rds")) %>% - filter(mill_class_1 == "RESIDENTIAL", assessed_value > 0) + filter(mill_class_1 == "RESIDENTIAL", assessed_value > 0) %>% + mutate( + account_number = as.character(as.integer(account_number)), + assessment_year = as.integer(assessment_year) + ) crs <- lambert_conformal_conic_at(historical) historical <- st_transform(historical, crs) +# 2025: same schema as historical, but GeoJSON stores all values as character +assessment_2025 <- read_sf(here(data_dir, "assessment_2025.geojson")) %>% + mutate( + account_number = as.character(as.integer(as.numeric(account_number))), + assessment_year = as.integer(assessment_year), + assessed_value = as.numeric(assessed_value) + ) %>% + filter(mill_class_1 == "RESIDENTIAL", assessed_value > 0) %>% + st_transform(crs) + +# 2026: join geometry shapefile with assessment CSV +property_info_2026 <- read_sf( + here(data_dir, "Property Information (Current Calendar Year)_20260113") +) %>% + st_transform(crs) %>% + rename(account_number = account_nu, neighbourhood_name = neighbou_2) + +assessment_values_2026 <- read_csv( + here( + data_dir, + "Property_Assessment_Data_(Current_Calendar_Year)_20260308.csv" + ), + show_col_types = FALSE +) %>% + rename( + account_number = `Account Number`, + assessed_value = `Assessed Value`, + mill_class_1 = `Assessment Class 1` + ) %>% + mutate(account_number = as.character(as.integer(account_number))) %>% + filter(mill_class_1 == "RESIDENTIAL", assessed_value > 0) + +assessment_2026 <- property_info_2026 %>% + inner_join( + assessment_values_2026 %>% select(account_number, assessed_value, mill_class_1), + by = "account_number" + ) %>% + mutate(assessment_year = 2026L) + +# Combine all years — keep only columns needed for the analysis +analysis_cols <- c( + "account_number", "assessment_year", "assessed_value", + "mill_class_1", "neighbourhood_name" +) +historical <- bind_rows( + historical %>% select(all_of(analysis_cols)), + assessment_2025 %>% select(all_of(analysis_cols)), + assessment_2026 %>% select(all_of(analysis_cols)) +) + mature_neighbourhood <- read_sf(here( data_dir, "Mature Neighbourhoods_20241222.geojson" @@ -168,7 +224,7 @@ bp_multi_2plus <- bp %>% #| label: mature-and-redeveloped # Properties in mature neighbourhoods (identified from 2024 geometries) mature_accounts <- historical %>% - filter(assessment_year == 2024) %>% + filter(assessment_year == 2026) %>% st_filter(st_union(mature_neighbourhood)) %>% pull(account_number) @@ -177,14 +233,14 @@ mature_accounts <- historical %>% # Use all permits from 2014 onward (study period + 1 year prior) bp_multi_study <- bp_multi %>% filter(year >= 2014) -assessment_2024 <- historical %>% filter(assessment_year == 2024) +assessment_2026_sf <- historical %>% filter(assessment_year == 2026) redeveloped_flags <- st_is_within_distance( - assessment_2024, + assessment_2026_sf, bp_multi_study, dist = units::as_units("10 m"), sparse = TRUE ) -redeveloped_accounts <- assessment_2024$account_number[ +redeveloped_accounts <- assessment_2026_sf$account_number[ lengths(redeveloped_flags) > 0 ] ``` @@ -192,10 +248,10 @@ redeveloped_accounts <- assessment_2024$account_number[ ```{r} #| label: merge-data #| cache: true -years_included <- 2015:2024 +years_included <- 2015:2026 merged_fn <- here( "data", - glue::glue("merged_v2_{min(years_included)}_{max(years_included)}.rds") + glue::glue("merged_v3_{min(years_included)}_{max(years_included)}.rds") ) dir.create(here("data"), showWarnings = FALSE) @@ -295,13 +351,12 @@ A first-difference (FD) approach addresses this by using each property's *year-o The event study estimates separate effects at each point in time relative to the first nearby permit: $t = -4, -3, -2, -1$ (pre-treatment), and $t = 0, +1, +2, +3, +4$ (post-treatment). If the parallel trends assumption holds — i.e., treated and control properties in the same neighbourhood would have followed similar appreciation rate trajectories absent treatment — the pre-treatment coefficients should be near zero. Flat pre-trends are not proof of causality, but they are necessary evidence for it. -I use the Sun-Abraham (2021) estimator (`sunab()` in the `fixest` package), which is robust to heterogeneous treatment effects across cohorts — important here because properties receive their first nearby permit in different years throughout 2015–2024. +I use the Sun-Abraham (2021) estimator (`sunab()` in the `fixest` package), which is robust to heterogeneous treatment effects across cohorts — important here because properties receive their first nearby permit in different years throughout 2015–2025. ## Results Each analysis below is shown for two samples side by side. The **all residential** sample covers all residential properties in mature neighbourhoods. The **always-SFH** sample excludes any property that ever had a ≥6-unit permit issued within 10m of itself during the study period — removing properties approaching redevelopment, which tend to be assessed near land value and cluster near new infill. The always-SFH sample most directly answers the policy question: *does building apartments next door hurt my house's value?* - ```{r} #| label: tbl-fd #| tbl-cap: "First-difference estimates: effect of nearby multi-unit permit on year-over-year log assessed value change. All models use neighbourhood × year fixed effects." @@ -355,9 +410,9 @@ modelsummary( ) ``` -The always-SFH estimates (both thresholds) are near zero — consistent with no effect on stable single-family homes. The all-residential estimates are near zero or slightly positive: properties near new multi-unit permits appreciate at similar or slightly faster rates on average, not slower. The ≥2-unit columns show that the null result holds for smaller infill types (including duplex-to-fourplex), not just large apartment buildings. +The always-SFH estimate for the main specification (≥6 units) is +0.005 (95% CI \[0.003, 0.008\]) — stable single-family homes near new apartment buildings appreciate *faster* than comparable properties in the same neighbourhood in the same year, not slower. The all-residential estimate is also positive (+0.012, 95% CI \[0.008, 0.015\]). The ≥2-unit estimates are much larger (+0.034–0.035). These likely reflect property-level selection: duplexes and fourplexes tend to be built on the most desirable streets *within* a neighbourhood, so properties within 50m of ≥2-unit permits are positively selected on within-neighbourhood appreciation. The neighbourhood × year FE removes between-neighbourhood sorting but not this finer-grained street-level selection. The ≥6-unit specification is less subject to this concern and remains the primary estimate. -The first-difference event studies (@fig-es-fd-main and @fig-es-fd-sfh) test whether appreciation *rates* were diverging before treatment. The always-SFH pre-trends are flat, and post-treatment estimates are near zero throughout — a clean null result. The all-residential event study tells a more revealing story: there is a large positive spike at $t = 0$, which then reverts to near zero. This spike is almost certainly driven by properties approaching redevelopment in the all-residential sample: when a multi-unit permit appears nearby, properties that are themselves candidates for demolition see an immediate reassessment of their land value. The always-SFH exclusion removes this effect entirely, confirming that stable single-family homes see no change in appreciation rates. See @tbl-es-fd-sample for treated-observation counts by cohort and relative year. +The first-difference event studies (@fig-es-fd-main and @fig-es-fd-sfh) test whether appreciation *rates* were diverging before treatment. The always-SFH pre-trends are flat and post-treatment estimates are near zero or mildly positive throughout — consistent with no negative effect on stable single-family homes. The all-residential event study tells a more revealing story: there is a large positive spike at $t = 0$, which then reverts toward the aggregate estimate. This spike is almost certainly driven by properties approaching redevelopment in the all-residential sample: when a multi-unit permit appears nearby, properties that are themselves candidates for demolition see an immediate reassessment of their land value. See @tbl-es-fd-sample for treated-observation counts by cohort and relative year. ```{r} #| label: fig-es-fd-main @@ -442,7 +497,7 @@ bind_rows( tab_options(table.font.size = "small") ``` -@fig-es-fd-sfh-robust repeats the always-SFH FD event study restricted to cohorts 2017 and later — the earliest cohort with at least one pre-treatment FD observation. The result is unchanged: all estimates are statistically indistinguishable from zero throughout the full time horizon, with no systematic trend. +@fig-es-fd-sfh-robust repeats the always-SFH FD event study restricted to cohorts 2017 and later — the earliest cohort with at least one pre-treatment FD observation. The result is unchanged: pre-treatment estimates are flat, and there is no post-treatment decline at any point in the time horizon. ```{r} #| label: fig-es-fd-sfh-robust @@ -464,21 +519,20 @@ iplot( abline(v = -0.5, lty = 2, col = "grey50") ``` - ## Caveats **Parallel trends is untestable.** Flat pre-trends are necessary but not sufficient evidence for a causal interpretation. A time-varying confounder that begins exactly when the permit is issued — say, a developer specifically targeting blocks that are about to appreciate for unrelated reasons — could still bias the estimates. The flat pre-trends make this story less plausible, but it cannot be ruled out. -**Developer selection likely biases toward finding a positive effect.** If developers preferentially site multi-unit builds near properties that are already appreciating (e.g., near amenities, on major streets), the "treated" group would be expected to appreciate faster even without the infill. This would work against finding a null result, making the null finding more conservative, not less. +**Developer selection likely biases toward finding a positive effect.** If developers preferentially site multi-unit builds near properties that are already appreciating (e.g., near amenities, on major streets), the "treated" group would be expected to appreciate faster even without the infill. The neighbourhood × year FE controls for neighbourhood-level appreciation trends, but within-neighbourhood street-level selection may remain — particularly for the ≥2-unit threshold. The positive estimates for the ≥6-unit specification should therefore be interpreted as an upper bound on the causal effect: the true effect is at most mildly positive, and could be zero. **Assessed value is not sale price.** Edmonton's assessment data reflects the city's model of market value, not observed transactions. City-wide assessment methodology changes are absorbed by year fixed effects, but property-specific reassessment events are not. Using only properties where the same assessment method applies across all years would be a useful robustness check. -**One-year lag.** The treatment indicator uses permits issued in year $t-1$ to predict assessments in year $t$. Construction timelines vary — larger buildings may take two or more years to complete — so some effects may be lagged further than the specification captures. The event study, which shows no effect even 4+ years post-permit, addresses this concern. +**One-year lag.** The treatment indicator uses permits issued in year $t-1$ to predict assessments in year $t$. Construction timelines vary — larger buildings may take two or more years to complete — so some effects may be lagged further than the specification captures. The event study, which shows no negative effect even 4+ years post-permit, addresses this concern. **The always-SFH sample conditions on an endogenous outcome.** The always-SFH sample excludes properties that were themselves eventually redeveloped within 10m of a ≥6-unit permit during the study period. If infill pressure causes adjacent properties to sell and redevelop, this exclusion removes potentially affected properties. The always-SFH estimates should therefore be interpreted as the effect on properties that did not experience redevelopment pressure — a well-defined and policy-relevant group, but not a random subset. The bias direction is ambiguous but likely toward a more null result. ## Conclusion -Using year-over-year appreciation as the outcome, there is no evidence that multi-unit infill construction reduces neighbouring property values in Edmonton's mature neighbourhoods. The always-SFH estimates are near zero across both the ≥6-unit and ≥2-unit thresholds, and the all-residential estimates are near zero or slightly positive. The event study shows flat pre-trends and no post-treatment decline for stable single-family homes across the full post-treatment window. The all-residential sample does show a large positive spike at $t = 0$, almost certainly driven by properties approaching redevelopment being reassessed at land value — but this is a selection artefact that disappears in the always-SFH sample, confirming that stable homes are unaffected. All specifications use neighbourhood × year fixed effects, comparing treated and control properties within the same neighbourhood and year. +Using year-over-year appreciation as the outcome, there is no evidence that multi-unit infill construction reduces neighbouring property values in Edmonton's mature neighbourhoods — and consistent evidence that it does not. The always-SFH estimate for the primary specification (≥6 units, neighbourhood × year FE) is +0.005 \[0.003, 0.008\]: stable single-family homes near new apartment buildings appreciate slightly *faster* than comparable properties in the same neighbourhood in the same year. The all-residential estimate is also positive (+0.012). The event study shows flat pre-trends and no post-treatment decline for stable single-family homes. The all-residential sample does show a large positive spike at $t = 0$, almost certainly driven by properties approaching redevelopment being reassessed at land value — but this is a selection artefact, not a causal effect on stable homes. This is consistent with the [preliminary post](../../2025/property-value-preliminary/) and with a growing literature finding that upzoning and infill construction do not harm existing homeowners. The fear that new apartments will hurt house prices is not supported by Edmonton's own data. It should not be a reason to restrict where housing can be built. \ No newline at end of file From 816c75b4e7db35279df6959689eb806468f6d66d Mon Sep 17 00:00:00 2001 From: jdawang Date: Tue, 14 Apr 2026 22:12:08 +0000 Subject: [PATCH 2/5] save work --- CLAUDE.md | 85 +- Containerfile | 8 +- .../index/execute-results/html.json | 15 + .../figure-html/fig-affordable-units-1.png | Bin 0 -> 62248 bytes .../index/figure-html/fig-mli-all-1.png | Bin 0 -> 57364 bytes .../index/figure-html/fig-mli-ratio-1.png | Bin 0 -> 68496 bytes .../index/figure-html/fig-mli-small-1.png | Bin 0 -> 64617 bytes blog/2026/mli-select-edmonton/.Rprofile | 1 + blog/2026/mli-select-edmonton/index.qmd | 415 +++ blog/2026/mli-select-edmonton/references.bib | 17 + blog/2026/mli-select-edmonton/renv.lock | 2303 +++++++++++++++++ blog/2026/mli-select-edmonton/renv/.gitignore | 7 + blog/2026/mli-select-edmonton/renv/activate.R | 1305 ++++++++++ .../mli-select-edmonton/renv/settings.json | 19 + blog/_metadata.yml | 5 - 15 files changed, 4160 insertions(+), 20 deletions(-) create mode 100644 _freeze/blog/2026/mli-select-edmonton/index/execute-results/html.json create mode 100644 _freeze/blog/2026/mli-select-edmonton/index/figure-html/fig-affordable-units-1.png create mode 100644 _freeze/blog/2026/mli-select-edmonton/index/figure-html/fig-mli-all-1.png create mode 100644 _freeze/blog/2026/mli-select-edmonton/index/figure-html/fig-mli-ratio-1.png create mode 100644 _freeze/blog/2026/mli-select-edmonton/index/figure-html/fig-mli-small-1.png create mode 100644 blog/2026/mli-select-edmonton/.Rprofile create mode 100644 blog/2026/mli-select-edmonton/index.qmd create mode 100644 blog/2026/mli-select-edmonton/references.bib create mode 100644 blog/2026/mli-select-edmonton/renv.lock create mode 100644 blog/2026/mli-select-edmonton/renv/.gitignore create mode 100644 blog/2026/mli-select-edmonton/renv/activate.R create mode 100644 blog/2026/mli-select-edmonton/renv/settings.json diff --git a/CLAUDE.md b/CLAUDE.md index 1916ebf..b931cee 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -27,10 +27,10 @@ Deployment is automatic via GitHub Actions on push to `main`: renders with Quart ## Architecture -- **`_quarto.yml`**: Site-level config (theme, navbar, footer, extensions). `freeze: true` means computed R outputs are cached in `_freeze/` and not re-executed unless the source changes. +- **`_quarto.yml`**: Site-level config (theme, navbar, footer, extensions). `execute: freeze: true` is set globally in `_quarto.yml`. During a full project render (`quarto render`), code is never re-executed — stored outputs in `_freeze/` are reused. Single-document renders always re-execute regardless of freeze. - **`blog/_metadata.yml`**: Defaults for all blog posts (freeze, echo/message/warning suppression, giscus comments, title-block-banner). - **`_freeze/`**: Cached execution results (JSON + figures). Committed to the repo so CI doesn't need R packages installed. -- **`_site/`**: Build output, committed to repo. +- **`_site/`**: Build output. Gitignored — not committed. - **`_extensions/`**: Quarto extensions (fontawesome, iconify, social-embeds). - **`custom_styles.scss` / `custom_styles_dark.scss`**: Theme overrides for light/dark modes on top of the cosmo Bootstrap theme. - **`data/`**: Shared datasets (geojson, csv, zip) referenced across blog posts. @@ -51,7 +51,72 @@ link-external-icon: false --- ``` -Posts use R code chunks with knitr. Common libraries: `tidyverse`, `sf`, `gt`, `ggplot2`, `cancensus`, `mountainmathHelpers`. Data paths typically reference `../../../data` relative to the post via `here()`. +Posts use R code chunks with knitr. Common libraries: `tidyverse`, `sf`, `gt`, `ggplot2`, `cancensus`, `mountainmathHelpers`, `jdawangHelpers`. Data paths typically reference `../../../data` relative to the post via `here()`. + +## Creating a new post + +1. Create the directory `blog/YYYY/post-slug/` and `index.qmd` with the frontmatter pattern above. +2. From within the post directory, initialize renv. Use `restart = FALSE` to avoid renv attempting to restart the R session (which exits a subprocess): + ```bash + cd blog/YYYY/post-slug + Rscript -e "renv::init(restart = FALSE)" + ``` +3. Install required packages: + ```bash + Rscript -e "renv::install(c('tidyverse', 'sf', ...))" + Rscript -e "renv::install_github('jdawang/jdawangHelpers')" + ``` +4. Write the post, then render from within the post directory: + ```bash + cd blog/YYYY/post-slug + quarto render index.qmd + ``` +5. Snapshot the environment: + ```bash + Rscript -e "renv::snapshot()" + ``` +6. Commit these files: + - `index.qmd` + - `renv.lock` + - `.Rprofile` + - `.gitignore` + - `renv/activate.R`, `renv/settings.json`, `renv/.gitignore` + - `_freeze/blog/YYYY/post-slug/` (generated by render) + - Any static assets (e.g. `.png` files checked in manually) + +For a complete example of post structure, see `blog/2026/zbr-two-year-review/`. + +**Inline R expressions and cache**: When `execute: cache: true` is active, chunks containing `library()` calls can be cached, which prevents packages from loading and breaks inline R expressions (`` `r expr` ``). Any post using inline R must set `execute: cache: false` in its frontmatter. Note: `freeze` (Quarto-level, caches entire document outputs in `_freeze/`, only during project renders) and `cache` (knitr-level, caches individual chunk outputs in `*_cache/`, during all renders) are distinct mechanisms. + +## jdawangHelpers package + +`jdawangHelpers` is a companion R package providing shared utilities for blog posts. Source is at GitHub: `jdawang/jdawangHelpers`. It covers: + +- **Edmonton building permit processing** — `clean_edmonton_bp_columns()`, `filter_edmonton_residential()`, `add_edmonton_project_type()`, `add_edmonton_suite_info()`, `add_edmonton_neighbourhood_type()` +- **Transit distance calculations** — `add_transit_distance()`, `add_ecdf_by_distance()` +- **ggplot2 themes** — `theme_jd()` (dark base theme, magma palette), `theme_map()`, `theme_map_dark()`. `theme_jd()` bakes in the viridis magma palette as the default discrete fill/colour scale — to use it, map a variable to `fill` or `colour` in `aes()`. Do not use `scale_fill_manual` with hardcoded colours unless intentionally overriding the palette. +- **Map layers** — `layers_map_base()` (requires `mountainmathHelpers`), `layers_transit_ecdf()` +- **GT table helpers** + +Typical pipeline in posts: + +```r +bp |> + clean_edmonton_bp_columns(crs = 4326) |> + filter_edmonton_residential() |> + add_edmonton_project_type() |> + add_edmonton_suite_info() |> + add_edmonton_neighbourhood_type() |> + add_transit_distance(transit_stops) +``` + +**Always use jdawangHelpers functions** for building permit processing, transit calculations, themes, and map layers. Do not copy code patterns from posts that predate jdawangHelpers — those implement manually what the package now handles. When in doubt, check the package source before writing new data processing code. Use `blog/2026/mli-select-edmonton/` as the canonical reference for jdawangHelpers usage. Use `blog/2026/zbr-two-year-review/` as the reference for writing style and tone. + +Install from GitHub before using in a post: + +```r +renv::install_github("jdawang/jdawangHelpers") +``` In the first R chunk, along with imports, always load the following options like the following. These set important API keys and cache paths for the cancensus and jdawangHelpers packages: @@ -114,22 +179,18 @@ cd blog/2026/nodes-corridors Rscript -e "renv::restore()" ``` -When creating a new post, always: - -- Initialize renv in its directory using `renv::init()`. -- Install required packages before trying to execute code. +See "Creating a new post" above for the full workflow including renv setup, rendering, and what to commit. If you come across an error like "[package name or function name] not found", that is most likely due to not installing the package. Install it and try again. -Before committing changes to a blog post, always run `renv::snapshot()` from within its directory to ensure the environment is saved. - ## Freeze behaviour -Because `freeze: true` is set globally, rendered outputs are stored in `_freeze/` and reused. To force re-execution of a post's R code, change into the post's directory and rerender it with the `--no-freeze` option. +With `execute: freeze: true` set globally, full project renders reuse outputs from `_freeze/` without re-executing code. Single-document renders always re-execute. To force re-execution during a project render, delete the post's freeze directory first: ```bash -cd blog/2026/nodes-corridors/ -quarto render blog/2026/nodes-corridors/index.qmd --no-freeze +rm -rf _freeze/blog/2026/nodes-corridors +cd blog/2026/nodes-corridors +quarto render index.qmd ``` The `blog/2022/election-maps-2022/index.qmd` is explicitly excluded from rendering in `_quarto.yml`. diff --git a/Containerfile b/Containerfile index 8890092..6cb3e70 100644 --- a/Containerfile +++ b/Containerfile @@ -1,6 +1,8 @@ -FROM ghcr.io/rocker-org/geospatial:4.5.2 +FROM ghcr.io/rocker-org/geospatial:4.5.3 -RUN sudo curl -sLO https://cdn.posit.co/positron/releases/deb/x86_64/Positron-2026.03.0-212-x64.deb \ +RUN sudo apt-get update \ + && sudo apt install -y curl \ + && sudo curl -sLO https://cdn.posit.co/positron/releases/deb/x86_64/Positron-2026.03.0-212-x64.deb \ && sudo curl -L https://rig.r-pkg.org/deb/rig.gpg -o /etc/apt/trusted.gpg.d/rig.gpg \ && sudo sh -c 'echo "deb http://rig.r-pkg.org/deb rig main" > /etc/apt/sources.list.d/rig.list' \ && sudo apt-get update \ @@ -14,4 +16,4 @@ RUN sudo curl -sLO https://cdn.posit.co/positron/releases/deb/x86_64/Positron-2 rustc \ && sudo curl -sS https://starship.rs/install.sh | sh -s -- -y \ && chsh -s $(which zsh) \ - && rig add 4.5.2 + && rig add 4.5.3 diff --git a/_freeze/blog/2026/mli-select-edmonton/index/execute-results/html.json b/_freeze/blog/2026/mli-select-edmonton/index/execute-results/html.json new file mode 100644 index 0000000..4321bed --- /dev/null +++ b/_freeze/blog/2026/mli-select-edmonton/index/execute-results/html.json @@ -0,0 +1,15 @@ +{ + "hash": "d6ac467dde476244a43cbb82fb913858", + "result": { + "engine": "knitr", + "markdown": "---\ntitle: \"Edmonton's zoning reform created hundreds of affordable homes\"\ndate: \"2026-04-06\"\nauthor: \"Jacob Dawang\"\ncategories: [housing, edmonton, affordability]\ndescription: \"Edmonton's 2024 Zoning Bylaw Renewal unlocked federal affordable housing financing. An analysis of CMHC MLI Select data shows Edmonton's rezoning has already generated hundreds of mandated-affordable units.\"\nlink-external-newwindow: true\nlink-external-icon: false\nbibliography: references.bib\ndraft: false\nexecute: \n cache: false\n---\n\nIn [a recent Substack post](https://marklocki.substack.com/p/the-affordable-housing-cost-of-repealing), Mark Locki showed that Calgary's August 2024 blanket rezoning was enabling small infill projects to access CMHC's MLI Select program, a federal mortgage insurance program that, in exchange for favourable financing, requires a portion of units to be rented at affordable rates. His analysis found that 39% of all 4–8 unit building permits in Calgary's established communities were backed by MLI Select financing.\n\nEdmonton's Zoning Bylaw Renewal (ZBR), which came into force in January 2024, works through the same mechanism. And thanks to data I obtained through an Access to Information and Privacy (ATIP) request, we can now quantify its impact.\n\ntl;dr: Edmonton's ZBR has already generated an estimated 480 mandated-affordable units through MLI Select financing, units that would not exist without rezoning.\n\n## What is MLI Select?\n\nCMHC's MLI Select program provides favourable mortgage insurance to rental housing developers in exchange for commitments to affordability, energy efficiency, and accessibility. Crucially for small infill projects, it allows developers to borrow up to 95% of project costs, dramatically reducing the equity required upfront.\n\nThe affordability requirements are tiered:\n\n| MLI Select level | Units required at ≤30% of median renter income | Max loan-to-cost | Max amortization | Insurance discount |\n|---------------|---------------|---------------|---------------|---------------|\n| Level 1 (50 pts) | 10% | 85% | 40 years | 10% |\n| Level 2 (70 pts) | 15% | 95% | 45 years | 20% |\n| Level 3 (100 pts) | 25% | 95% | 50 years | 30% + limited recourse |\n\nThe financing incentives are significant: a developer at Level 3 can borrow 95% of costs over 50 years, compared to 85% over 40 years at Level 1. This is why the vast majority of projects in the Edmonton data choose Level 3, committing to 25% affordable units in exchange for the program's best terms.\n\nThe affordability threshold — 30% of median renter household income — was approximately \\$1,500 per month for Edmonton's CMA in 2021, based on a median renter household income of around \\$60,000 [@statcan2021census_profile].[^1]\n\n[^1]: The exact current threshold would be set using CMHC's Area Median Household Income figures.\n\nI believe, but could be wrong that MLI Select approval generally come *before* building permits. Developers secure financing commitments first, then pull permits. This means the MLI data we have today is a leading indicator of what's being built.\n\n## Edmonton's housing need\n\n\n\n\n\n\n\nEdmonton had 46,155 households in core housing need as of the 2021 Census, a figure that has only grown as rents have risen since then [@statcan2021core_housing].[^2] The city has been building more housing than almost anywhere else in Canada, but affordability remains a serious challenge: more homes help, but below-market rental units matter too.\n\n[^2]: Core housing need reflects households spending 30%+ of income on shelter or living in inadequate/unsuitable housing and unable to afford alternative shelter.\n\nMLI Select is one of the few tools that generates both at once. By tying favourable mortgage insurance to affordability commitments, it turns market-rate development into a vehicle for mandated-affordable housing and Edmonton's rezoning has made it accessible to a new class of projects.\n\n## MLI Select in Edmonton: the overall picture\n\nBetween 2022 and 2025, CMHC approved 977 MLI Select loans in the Edmonton CMA, covering 33,388 units. The majority were for new construction.\n\n\n::: {.cell}\n::: {.cell-output-display}\n![MLI Select approvals in Edmonton CMA, 2022–2025](index_files/figure-html/fig-mli-all-1.png){#fig-mli-all width=672}\n:::\n:::\n\n\nAs shown in @fig-mli-all, new construction approvals peaked at 233 loans in 2024, before easing in 2025. This does not mean activity is declining. MLI approval precedes building permits, so 2025 permits largely reflect 2024 MLI approvals.\n\n## The ZBR connection: small infill projects\n\nThe real story is in small projects, the 5 to 8 unit rowhomes that ZBR specifically enabled in Edmonton's mature neighbourhoods.\n\n\n::: {.cell}\n::: {.cell-output-display}\n![Small (5–8 unit) New Construction MLI Select approvals in Edmonton CMA, 2022–2025](index_files/figure-html/fig-mli-small-1.png){#fig-mli-small width=672}\n:::\n:::\n\n\n@fig-mli-small shows the numbers are striking:\n\n- **Pre-ZBR (2022–2023):** 110 small new construction MLI Select loans in total\n- **Post-ZBR (2024–2025):** 283 loans, 2.6 times more in just two years\n\nIn 2024 alone, developers secured 179 small infill MLI loans. This was the year ZBR came into force, opening up RS-zoned lots in mature neighbourhoods to 5–8 unit development. Developers, now confident their projects were permitted as-of-right, lined up federal financing.\n\nThose 2024 MLI approvals fed directly into Edmonton's 2025 building permit year — [the first year more homes were permitted in 5–8 unit rowhomes than single family homes](../zbr-two-year-review/index.qmd) in the city's history.\n\n## How many of Edmonton's new rowhomes use MLI Select?\n\n\n\nWe can cross-reference the MLI Select approvals with Edmonton building permit data to estimate the share of small rowhome projects using MLI financing.\n\nBecause MLI approval comes before building permits, we compare 2024 MLI approvals (179 loans) against 2025 building permits for the same project type. In 2025, Edmonton issued building permits for approximately 529 new 5–8 unit projects. This implies roughly 34% of new small rowhome projects were backed by MLI Select financing — comparable to Mark Locki's finding of 39% for Calgary, as shown in @fig-mli-ratio.\n\n\n::: {.cell}\n::: {.cell-output-display}\n![Estimated share of 5–8 unit new construction permits backed by MLI Select, Edmonton (lag-adjusted)](index_files/figure-html/fig-mli-ratio-1.png){#fig-mli-ratio width=672}\n:::\n:::\n\n\nThis is necessarily an approximation: the MLI data covers the Edmonton CMA (including surrounding municipalities) while building permits cover Edmonton city only, and the lag between MLI approval and permit issuance varies by project.\n\n## Estimating affordable units created\n\nThe most important implication of MLI Select's dominance among small infill projects is the mandated affordable units it generates. Using the program's affordability requirements:\n\n\n::: {.cell}\n\n:::\n\n\n\n::: {.cell}\n::: {.cell-output-display}\n![Estimated mandated-affordable units from small infill MLI Select projects, Edmonton CMA](index_files/figure-html/fig-affordable-units-1.png){#fig-affordable-units width=672}\n:::\n:::\n\n\n\n::: {#tbl-affordable .cell tbl-cap='Estimated affordable units from small infill MLI Select'}\n::: {.cell-output-display}\n\n```{=html}\n
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n \n\n\n\n\n \n\n\n\n\n \n\n\n\n\n \n\n\n\n\n \n \n \n \n \n \n
Estimated affordable units from small infill MLI Select, by year
YearMLI Select loansTotal unitsEst. affordable unitsAffordable share
2022171222924%
20239364015725%
20241791,23030124%
202510472317925%
Total3932,715666
Jacob Dawang, CMHC, City of Edmonton Open Data
\n
\n```\n\n:::\n:::\n\n\n\n\nAcross all four years, small infill MLI Select projects generated an estimated 666 mandated-affordable units in the Edmonton CMA, with approximately 480 coming in the ZBR era (2024–2025), a period that also saw 2.6 times as many projects as the two years prior (see @fig-affordable-units and @tbl-affordable).\n\nThese are units where rents are contractually capped at roughly \\$1,500 per month or below.\n\n## Conclusion\n\nSmall infill is only one part of Edmonton's MLI Select story, but it is uniquely enabled by zoning. Large apartment towers were already permissible before ZBR. The 5–8 unit rowhomes could not exist in mature neighbourhoods until January 2024. Every one of the 283 small new construction MLI Select loans approved since ZBR represents a project that would have been illegal two years earlier.\n\nEdmonton's Zoning Bylaw Renewal is delivering on housing affordability in a way that rarely gets discussed. By legalizing small infill development in mature neighbourhoods, the ZBR didn't just add housing supply, it unlocked CMHC's MLI Select program for a class of projects that previously couldn't exist. Those projects come with mandated affordable rents attached.\n\nThe pipeline continues to grow. The 104 small infill MLI approvals from 2025 represent projects currently under construction or about to break ground — adding to the stock of affordable units in Edmonton's established neighbourhoods.\n\nThis is what good housing policy looks like: a municipal zoning reform enabling federal affordable housing finance, delivering affordable homes in mature neighbourhoods with established street grids, amenities, and transit connections where demand is high. The question now is whether we can keep the momentum going.", + "supporting": [], + "filters": [ + "rmarkdown/pagebreak.lua" + ], + "includes": {}, + "engineDependencies": {}, + "preserve": {}, + "postProcess": true + } +} \ No newline at end of file diff --git a/_freeze/blog/2026/mli-select-edmonton/index/figure-html/fig-affordable-units-1.png b/_freeze/blog/2026/mli-select-edmonton/index/figure-html/fig-affordable-units-1.png new file mode 100644 index 0000000000000000000000000000000000000000..d2f5873250838a7136cd91fbda0dcdea72fa8c26 GIT binary patch literal 62248 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 literal 0 HcmV?d00001 diff --git a/_freeze/blog/2026/mli-select-edmonton/index/figure-html/fig-mli-all-1.png b/_freeze/blog/2026/mli-select-edmonton/index/figure-html/fig-mli-all-1.png new file mode 100644 index 0000000000000000000000000000000000000000..7db4f6d260fbbf4b04c0bd20256fb8aec44e782c GIT binary patch literal 57364 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 literal 0 HcmV?d00001 diff --git a/_freeze/blog/2026/mli-select-edmonton/index/figure-html/fig-mli-small-1.png b/_freeze/blog/2026/mli-select-edmonton/index/figure-html/fig-mli-small-1.png new file mode 100644 index 0000000000000000000000000000000000000000..65bc30660c0b8e43a3ebe51f17d67366deaaab45 GIT binary patch literal 64617 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 z + rename( + year = `First Approval Year`, + product_type = `Product Type`, + loan_purpose = `Loan Purpose Group`, + total_units = `Total Units & Beds`, + affordability_level = `Affordability Level`, + cma = CMA + ) |> + mutate( + year = as.integer(year), + total_units = as.integer(total_units) + ) +``` + +```{r} +#| label: load-bp +#| include: false + +bp <- read_sf( + "../../../data/General Building Permits_20260113/geo_export_204e1c7a-3fac-403d-abe1-be2272f9ce62.shp" +) |> + filter(year < 2026) |> + clean_edmonton_bp_columns() |> + filter_edmonton_residential() |> + add_edmonton_project_type() +``` + +Edmonton had `r format(46155, big.mark=",")` households in core housing need as of the 2021 Census, a figure that has only grown as rents have risen since then [@statcan2021core_housing].[^2] The city has been building more housing than almost anywhere else in Canada, but affordability remains a serious challenge: more homes help, but below-market rental units matter too. + +[^2]: Core housing need reflects households spending 30%+ of income on shelter or living in inadequate/unsuitable housing and unable to afford alternative shelter. + +MLI Select is one of the few tools that generates both at once. By tying favourable mortgage insurance to affordability commitments, it turns market-rate development into a vehicle for mandated-affordable housing and Edmonton's rezoning has made it accessible to a new class of projects. + +## MLI Select in Edmonton: the overall picture + +Between 2022 and 2025, CMHC approved 977 MLI Select loans in the Edmonton CMA, covering 33,388 units. The majority were for new construction. + +```{r} +#| label: fig-mli-all +#| fig-cap: "MLI Select approvals in Edmonton CMA, 2022–2025" + +mli_summary <- mli_raw |> + group_by(year, loan_purpose) |> + summarize(n_loans = n(), total_units = sum(total_units), .groups = "drop") + +ggplot(mli_summary, aes(x = year, y = n_loans, fill = loan_purpose)) + + geom_col(position = "stack") + + scale_x_continuous(breaks = 2022:2025) + + scale_y_continuous(labels = comma) + + labs( + title = "MLI Select loan approvals in Edmonton CMA", + subtitle = "New construction has driven growth since 2023", + x = NULL, + y = "Number of loans", + caption = "Jacob Dawang, CMHC data", + fill = "Loan purpose" + ) + + theme_jd(mode = "light") + + theme(legend.position = "bottom") +``` + +As shown in @fig-mli-all, new construction approvals peaked at 233 loans in 2024, before easing in 2025. This does not mean activity is declining. MLI approval precedes building permits, so 2025 permits largely reflect 2024 MLI approvals. + +## The ZBR connection: small infill projects + +The real story is in small projects, the 5 to 8 unit rowhomes that ZBR specifically enabled in Edmonton's mature neighbourhoods. + +```{r} +#| label: fig-mli-small +#| fig-cap: "Small (5–8 unit) New Construction MLI Select approvals in Edmonton CMA, 2022–2025" + +mli_small <- mli_raw |> + filter( + loan_purpose == "New Construction", + between(total_units, 5, 8) + ) |> + group_by(year, affordability_level) |> + summarize(n_loans = n(), total_units = sum(total_units), .groups = "drop") |> + mutate(affordability_level = fct_rev(affordability_level)) + +mli_small_total <- mli_small |> + group_by(year) |> + summarize(n_loans = sum(n_loans), total_units = sum(total_units)) + +n_mli_2024 <- mli_small_total$n_loans[mli_small_total$year == 2024] + +ggplot(mli_small, aes(x = year, y = n_loans, fill = affordability_level)) + + geom_col(position = "stack") + + geom_vline( + xintercept = 2023.5, + linetype = "dashed", + colour = "grey40", + linewidth = 0.6 + ) + + annotate( + "text", + x = 2023.55, + y = Inf, + label = "ZBR in force (Jan 2024)", + hjust = 0, + vjust = 1.5, + size = 3, + colour = "grey40" + ) + + scale_x_continuous(breaks = 2022:2025) + + scale_y_continuous(labels = comma) + + labs( + title = "Small infill (5–8 unit) MLI Select approvals", + subtitle = "New construction only, Edmonton CMA", + x = NULL, + y = "Number of loans", + caption = "Jacob Dawang, CMHC data", + fill = "Affordability level" + ) + + theme_jd(mode = "light") + + theme(legend.position = "bottom") +``` + +@fig-mli-small shows the numbers are striking: + +- **Pre-ZBR (2022–2023):** 110 small new construction MLI Select loans in total +- **Post-ZBR (2024–2025):** 283 loans, 2.6 times more in just two years + +In 2024 alone, developers secured `r n_mli_2024` small infill MLI loans. This was the year ZBR came into force, opening up RS-zoned lots in mature neighbourhoods to 5–8 unit development. Developers, now confident their projects were permitted as-of-right, lined up federal financing. + +Those 2024 MLI approvals fed directly into Edmonton's 2025 building permit year — [the first year more homes were permitted in 5–8 unit rowhomes than single family homes](../zbr-two-year-review/index.qmd) in the city's history. + +## How many of Edmonton's new rowhomes use MLI Select? + +```{r} +#| label: bp-ratio +#| include: false + +bp_small_by_year <- bp |> + st_drop_geometry() |> + filter(project_type == "Fiveplex to Eightplex") |> + group_by(year) |> + summarize(n_permits = n(), total_units = sum(units_added)) |> + filter(year %in% 2022:2025) + +mli_small_by_year <- mli_raw |> + filter( + loan_purpose == "New Construction", + between(total_units, 5, 8) + ) |> + group_by(year) |> + summarize(n_mli = n(), mli_units = sum(total_units)) + +ratio_tbl <- bp_small_by_year |> + left_join(mli_small_by_year, by = "year") |> + mutate( + # Lag-adjusted: compare MLI approvals from prior year to current permits + # since MLI approval precedes permits + mli_lagged = lag(n_mli), + ratio_lagged = mli_lagged / n_permits + ) + +n_permits_2025 <- bp_small_by_year$n_permits[bp_small_by_year$year == 2025] +mli_ratio_pct <- scales::percent(n_mli_2024 / n_permits_2025, accuracy = 1) +``` + +We can cross-reference the MLI Select approvals with Edmonton building permit data to estimate the share of small rowhome projects using MLI financing. + +Because MLI approval comes before building permits, we compare 2024 MLI approvals (`r n_mli_2024` loans) against 2025 building permits for the same project type. In 2025, Edmonton issued building permits for approximately `r n_permits_2025` new 5–8 unit projects. This implies roughly `r mli_ratio_pct` of new small rowhome projects were backed by MLI Select financing — comparable to Mark Locki's finding of 39% for Calgary, as shown in @fig-mli-ratio. + +```{r} +#| label: fig-mli-ratio +#| fig-cap: "Estimated share of 5–8 unit new construction permits backed by MLI Select, Edmonton (lag-adjusted)" + +ratio_tbl |> + filter(!is.na(ratio_lagged)) |> + ggplot(aes(x = year, y = ratio_lagged)) + + geom_line(colour = viridis::magma(1, begin = 0.7)) + + geom_point(colour = viridis::magma(1, begin = 0.7), size = 3) + + geom_vline( + xintercept = 2023.5, + linetype = "dashed", + colour = "grey40", + linewidth = 0.6 + ) + + annotate( + "text", + x = 2023.55, + y = Inf, + label = "ZBR in force", + hjust = 0, + vjust = 1.5, + size = 3, + colour = "grey40" + ) + + scale_x_continuous(breaks = 2022:2025) + + scale_y_continuous(labels = percent, limits = c(0, NA)) + + labs( + title = "MLI Select share of small rowhome permits", + subtitle = "Prior-year MLI approvals as a share of 5–8 unit building permits", + x = NULL, + y = "MLI Select share", + caption = CAPTION_COE + ) + + theme_jd(mode = "light") +``` + +This is necessarily an approximation: the MLI data covers the Edmonton CMA (including surrounding municipalities) while building permits cover Edmonton city only, and the lag between MLI approval and permit issuance varies by project. + +## Estimating affordable units created + +The most important implication of MLI Select's dominance among small infill projects is the mandated affordable units it generates. Using the program's affordability requirements: + +```{r} +#| label: affordable-units-calc + +affordability_rates <- tibble( + affordability_level = c("Level 1", "Level 2", "Level 3"), + affordable_fraction = c(0.10, 0.15, 0.25) +) + +mli_small_affordable <- mli_raw |> + filter( + loan_purpose == "New Construction", + between(total_units, 5, 8) + ) |> + left_join(affordability_rates, by = "affordability_level") |> + mutate(affordable_units = total_units * affordable_fraction) |> + group_by(year) |> + summarize( + n_loans = n(), + total_units = sum(total_units), + affordable_units = sum(affordable_units), + .groups = "drop" + ) |> + mutate( + era = if_else(year < 2024, "Pre-ZBR (2022–23)", "ZBR era (2024–25)") + ) + +total_affordable <- sum(mli_small_affordable$affordable_units) +zbr_affordable <- mli_small_affordable |> + filter(era == "ZBR era (2024–25)") |> + pull(affordable_units) |> + sum() +``` + +```{r} +#| label: fig-affordable-units +#| fig-cap: "Estimated mandated-affordable units from small infill MLI Select projects, Edmonton CMA" + +mli_small_affordable |> + select(year, total_units, affordable_units) |> + pivot_longer( + c(total_units, affordable_units), + names_to = "type", + values_to = "units" + ) |> + mutate( + type = factor( + type, + levels = c("total_units", "affordable_units"), + labels = c("Total units", "Mandated-affordable units") + ) + ) |> + ggplot(aes(x = year, y = units, fill = type)) + + geom_col(position = "identity") + + geom_vline( + xintercept = 2023.5, + linetype = "dashed", + colour = "grey40", + linewidth = 0.6 + ) + + annotate( + "text", + x = 2023.55, + y = Inf, + label = "ZBR in force", + hjust = 0, + vjust = 1.5, + size = 3, + colour = "grey40" + ) + + scale_x_continuous(breaks = 2022:2025) + + scale_y_continuous(labels = comma) + + labs( + title = "Units from small infill MLI Select projects", + subtitle = "Mandated-affordable units must be rented at ≤30% of median renter income", + x = NULL, + y = "Units", + fill = NULL, + caption = "Jacob Dawang, CMHC, City of Edmonton Open Data" + ) + + theme_jd(mode = "light") + + theme(legend.position = "bottom") +``` + +```{r} +#| label: tbl-affordable +#| tbl-cap: "Estimated affordable units from small infill MLI Select" + +mli_small_affordable |> + select(year, n_loans, total_units, affordable_units) |> + mutate( + affordable_units = round(affordable_units), + affordable_pct = affordable_units / total_units + ) |> + gt(rowname_col = "year") |> + tab_stubhead("Year") |> + cols_label( + n_loans = "MLI Select loans", + total_units = "Total units", + affordable_units = "Est. affordable units", + affordable_pct = "Affordable share" + ) |> + fmt_percent(affordable_pct, decimals = 0) |> + fmt_integer(c(total_units, affordable_units)) |> + grand_summary_rows( + columns = c(n_loans, total_units, affordable_units), + fns = list(Total ~ sum(.)), + fmt = ~ fmt_integer(.) + ) |> + tab_style( + style = cell_fill(color = "#FFF3E0"), + locations = cells_body(rows = year >= 2024) + ) |> + tab_header( + "Estimated affordable units from small infill MLI Select, by year" + ) |> + finalize_gt(source = "Jacob Dawang, CMHC, City of Edmonton Open Data") +``` + +```{r} +#| label: totals +#| include: false + +total_affordable_all <- mli_raw |> + left_join(affordability_rates, by = "affordability_level") |> + mutate(a = total_units * affordable_fraction) |> + filter(loan_purpose == "New Construction") |> + summarize(total = sum(a)) |> + _$total |> + round() +``` + +Across all four years, small infill MLI Select projects generated an estimated `r round(total_affordable)` mandated-affordable units in the Edmonton CMA, with approximately `r round(zbr_affordable)` coming in the ZBR era (2024–2025), a period that also saw 2.6 times as many projects as the two years prior (see @fig-affordable-units and @tbl-affordable). + +These are units where rents are contractually capped at roughly \$1,500 per month or below. + +## Conclusion + +Small infill is only one part of Edmonton's MLI Select story, but it is uniquely enabled by zoning. Large apartment towers were already permissible before ZBR. The 5–8 unit rowhomes could not exist in mature neighbourhoods until January 2024. Every one of the 283 small new construction MLI Select loans approved since ZBR represents a project that would have been illegal two years earlier. + +Edmonton's Zoning Bylaw Renewal is delivering on housing affordability in a way that rarely gets discussed. By legalizing small infill development in mature neighbourhoods, the ZBR didn't just add housing supply, it unlocked CMHC's MLI Select program for a class of projects that previously couldn't exist. Those projects come with mandated affordable rents attached. + +The pipeline continues to grow. The 104 small infill MLI approvals from 2025 represent projects currently under construction or about to break ground — adding to the stock of affordable units in Edmonton's established neighbourhoods. + +This is what good housing policy looks like: a municipal zoning reform enabling federal affordable housing finance, delivering affordable homes in mature neighbourhoods with established street grids, amenities, and transit connections where demand is high. The question now is whether we can keep the momentum going. \ No newline at end of file diff --git a/blog/2026/mli-select-edmonton/references.bib b/blog/2026/mli-select-edmonton/references.bib new file mode 100644 index 0000000..002e96d --- /dev/null +++ b/blog/2026/mli-select-edmonton/references.bib @@ -0,0 +1,17 @@ +@misc{statcan2021census_profile, + author = {{Statistics Canada}}, + title = {Census Profile, 2021 Census of Population}, + year = {2022}, + publisher = {Statistics Canada}, + address = {Ottawa}, + note = {Statistics Canada Catalogue no. 98-316-X2021001} +} + +@misc{statcan2021core_housing, + author = {{Statistics Canada}}, + title = {Core housing need, 2021 Census of Population}, + year = {2022}, + publisher = {Statistics Canada}, + address = {Ottawa}, + note = {Statistics Canada Catalogue no. 98-510-X2021001} +} diff --git a/blog/2026/mli-select-edmonton/renv.lock b/blog/2026/mli-select-edmonton/renv.lock new file mode 100644 index 0000000..2c25a4b --- /dev/null +++ b/blog/2026/mli-select-edmonton/renv.lock @@ -0,0 +1,2303 @@ +{ + "R": { + "Version": "4.5.3", + "Repositories": [ + { + "Name": "P3M", + "URL": "https://packagemanager.posit.co/cran/latest" + }, + { + "Name": "CRAN", + "URL": "https://cloud.r-project.org" + } + ] + }, + "Packages": { + "DBI": { + "Package": "DBI", + "Version": "1.2.3", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R", + "methods" + ], + "Hash": "065ae649b05f1ff66bb0c793107508f5" + }, + "ISOcodes": { + "Package": "ISOcodes", + "Version": "2025.05.18", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R" + ], + "Hash": "e15a512e4234d113186fb7c952641707" + }, + "KernSmooth": { + "Package": "KernSmooth", + "Version": "2.23-26", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "stats" + ], + "Hash": "2fb39782c07b5ad422b0448ae83f64c4" + }, + "MASS": { + "Package": "MASS", + "Version": "7.3-65", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "grDevices", + "graphics", + "methods", + "stats", + "utils" + ], + "Hash": "a41d0fc833ea756a1136b60a437efe26" + }, + "R.methodsS3": { + "Package": "R.methodsS3", + "Version": "1.8.2", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R", + "utils" + ], + "Hash": "278c286fd6e9e75d0c2e8f731ea445c8" + }, + "R.oo": { + "Package": "R.oo", + "Version": "1.27.1", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R", + "R.methodsS3", + "methods", + "utils" + ], + "Hash": "a94afc14a90a68dd5043ceb9c089853b" + }, + "R.utils": { + "Package": "R.utils", + "Version": "2.13.0", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R", + "R.methodsS3", + "R.oo", + "methods", + "tools", + "utils" + ], + "Hash": "d32373d88da809f8974d5307481862b0" + }, + "R6": { + "Package": "R6", + "Version": "2.6.1", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R" + ], + "Hash": "d4335fe7207f1c01ab8c41762f5840d4" + }, + "RColorBrewer": { + "Package": "RColorBrewer", + "Version": "1.1-3", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R" + ], + "Hash": "45f0398006e83a5b10b72a90663d8d8c" + }, + "Rcpp": { + "Package": "Rcpp", + "Version": "1.1.1", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R", + "methods", + "utils" + ], + "Hash": "60df6f11cbeffbf9d50ad0852867f6b6" + }, + "S7": { + "Package": "S7", + "Version": "0.2.1", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R", + "utils" + ], + "Hash": "9da85950949574264f92f91f0e23de26" + }, + "V8": { + "Package": "V8", + "Version": "8.0.1", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "Rcpp", + "curl", + "jsonlite", + "utils" + ], + "Hash": "f0301ca7b867eeb5c9b586a9e400729a" + }, + "askpass": { + "Package": "askpass", + "Version": "1.2.1", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "sys" + ], + "Hash": "c39f4155b3ceb1a9a2799d700fbd4b6a" + }, + "assertthat": { + "Package": "assertthat", + "Version": "0.2.1", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "tools" + ], + "Hash": "50c838a310445e954bc13f26f26a6ecf" + }, + "aws.s3": { + "Package": "aws.s3", + "Version": "0.3.22", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "aws.signature", + "base64enc", + "curl", + "digest", + "httr", + "tools", + "utils", + "xml2" + ], + "Hash": "cbb6690391d3ac39dfdfb4bff7250b4e" + }, + "aws.signature": { + "Package": "aws.signature", + "Version": "0.6.0", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "base64enc", + "digest" + ], + "Hash": "0006bcef272aad12f78dd5a85fc7f4fc" + }, + "backports": { + "Package": "backports", + "Version": "1.5.0", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R" + ], + "Hash": "e1e1b9d75c37401117b636b7ae50827a" + }, + "base64enc": { + "Package": "base64enc", + "Version": "0.1-3", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R" + ], + "Hash": "543776ae6848fde2f48ff3816d0628bc" + }, + "bigD": { + "Package": "bigD", + "Version": "0.3.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R" + ], + "Hash": "ad123ab90aa2fc795512f61ff6939c4a" + }, + "bit": { + "Package": "bit", + "Version": "4.6.0", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R" + ], + "Hash": "ebe86ffd194564abdc895d87742d5a29" + }, + "bit64": { + "Package": "bit64", + "Version": "4.6.0-1", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R", + "bit", + "graphics", + "methods", + "stats", + "utils" + ], + "Hash": "4f572fbc586294afff277db583b9060f" + }, + "bitops": { + "Package": "bitops", + "Version": "1.0-9", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d972ef991d58c19e6efa71b21f5e144b" + }, + "blob": { + "Package": "blob", + "Version": "1.3.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "methods", + "rlang", + "vctrs" + ], + "Hash": "1e0ae40898be928695fd90a80e816253" + }, + "broom": { + "Package": "broom", + "Version": "1.0.12", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "backports", + "cli", + "dplyr", + "generics", + "glue", + "lifecycle", + "purrr", + "rlang", + "stringr", + "tibble", + "tidyr" + ], + "Hash": "6cf2f6757591ea712c57c5d7bedc3c27" + }, + "bslib": { + "Package": "bslib", + "Version": "0.10.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "base64enc", + "cachem", + "fastmap", + "grDevices", + "htmltools", + "jquerylib", + "jsonlite", + "lifecycle", + "memoise", + "mime", + "rlang", + "sass" + ], + "Hash": "d6072fb96c4868d8cb40d4071cdc472b" + }, + "cachem": { + "Package": "cachem", + "Version": "1.1.0", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "fastmap", + "rlang" + ], + "Hash": "cd9a672193789068eb5a2aad65a0dedf" + }, + "callr": { + "Package": "callr", + "Version": "3.7.6", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R", + "R6", + "processx", + "utils" + ], + "Hash": "d7e13f49c19103ece9e58ad2d83a7354" + }, + "cellranger": { + "Package": "cellranger", + "Version": "1.1.0", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R", + "rematch", + "tibble" + ], + "Hash": "f61dbaec772ccd2e17705c1e872e9e7c" + }, + "class": { + "Package": "class", + "Version": "7.3-23", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "MASS", + "R", + "stats", + "utils" + ], + "Hash": "d0cb9cc838c3b43560bd958fc4317fdc" + }, + "classInt": { + "Package": "classInt", + "Version": "0.4-11", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "KernSmooth", + "R", + "class", + "e1071", + "grDevices", + "graphics", + "stats" + ], + "Hash": "f2af70314a63d7f025ae668f08bd933a" + }, + "cli": { + "Package": "cli", + "Version": "3.6.5", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R", + "utils" + ], + "Hash": "16850760556401a2eeb27d39bd11c9cb" + }, + "clipr": { + "Package": "clipr", + "Version": "0.8.0", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "utils" + ], + "Hash": "3f038e5ac7f41d4ac41ce658c85e3042" + }, + "commonmark": { + "Package": "commonmark", + "Version": "2.0.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "8cba62334c1088d21689d353a7e87663" + }, + "conflicted": { + "Package": "conflicted", + "Version": "1.2.0", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R", + "cli", + "memoise", + "rlang" + ], + "Hash": "bb097fccb22d156624fd07cd2894ddb6" + }, + "cpp11": { + "Package": "cpp11", + "Version": "0.5.3", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R" + ], + "Hash": "af5958631ca49510aff96d0f5c0bbb76" + }, + "crayon": { + "Package": "crayon", + "Version": "1.5.3", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "grDevices", + "methods", + "utils" + ], + "Hash": "859d96e65ef198fd43e82b9628d593ef" + }, + "crosstalk": { + "Package": "crosstalk", + "Version": "1.2.2", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R6", + "htmltools", + "jsonlite", + "lazyeval" + ], + "Hash": "8b008bc619e0bbebb5646b3d37efdad1" + }, + "crul": { + "Package": "crul", + "Version": "1.6.0", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R6", + "curl", + "httpcode", + "jsonlite", + "lifecycle", + "mime", + "rlang", + "urltools" + ], + "Hash": "3aeb4061f5f9c25b3621a14c8e024a48" + }, + "curl": { + "Package": "curl", + "Version": "7.0.0", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R" + ], + "Hash": "aa27e963d3deccf4bade44d06b976977" + }, + "data.table": { + "Package": "data.table", + "Version": "1.18.2.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "methods" + ], + "Hash": "df99cd4333ce592df5173d6ad39b5c14" + }, + "dbplyr": { + "Package": "dbplyr", + "Version": "2.5.1", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "DBI", + "R", + "R6", + "blob", + "cli", + "dplyr", + "glue", + "lifecycle", + "magrittr", + "methods", + "pillar", + "purrr", + "rlang", + "tibble", + "tidyr", + "tidyselect", + "utils", + "vctrs", + "withr" + ], + "Hash": "e38d7151c767b00b919091be4686e274" + }, + "digest": { + "Package": "digest", + "Version": "0.6.39", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R", + "utils" + ], + "Hash": "d18028e978a88b2b16ef8d400cb49adf" + }, + "dplyr": { + "Package": "dplyr", + "Version": "1.1.4", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R", + "R6", + "cli", + "generics", + "glue", + "lifecycle", + "magrittr", + "methods", + "pillar", + "rlang", + "tibble", + "tidyselect", + "utils", + "vctrs" + ], + "Hash": "fedd9d00c2944ff00a0e2696ccf048ec" + }, + "dtplyr": { + "Package": "dtplyr", + "Version": "1.3.2", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R", + "cli", + "data.table", + "dplyr", + "glue", + "lifecycle", + "rlang", + "tibble", + "tidyselect", + "vctrs" + ], + "Hash": "50bbedd3d5b6a4ddc3c3c1602456aa35" + }, + "e1071": { + "Package": "e1071", + "Version": "1.7-17", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "class", + "grDevices", + "graphics", + "methods", + "proxy", + "stats", + "utils" + ], + "Hash": "9d516dde384526d4784166f888cd2c6c" + }, + "evaluate": { + "Package": "evaluate", + "Version": "1.0.5", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R" + ], + "Hash": "94cf2c54237f6841cee68e3ba4ab5a14" + }, + "farver": { + "Package": "farver", + "Version": "2.1.2", + "Source": "Repository", + "Repository": "P3M", + "Hash": "680887028577f3fa2a81e410ed0d6e42" + }, + "fastmap": { + "Package": "fastmap", + "Version": "1.2.0", + "Source": "Repository", + "Repository": "P3M", + "Hash": "aa5e1cd11c2d15497494c5292d7ffcc8" + }, + "fontawesome": { + "Package": "fontawesome", + "Version": "0.5.3", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R", + "htmltools", + "rlang" + ], + "Hash": "bd1297f9b5b1fc1372d19e2c4cd82215" + }, + "forcats": { + "Package": "forcats", + "Version": "1.0.1", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R", + "cli", + "glue", + "lifecycle", + "magrittr", + "rlang", + "tibble" + ], + "Hash": "f884a14605c6a9eb01db676eee793ba7" + }, + "fs": { + "Package": "fs", + "Version": "1.6.6", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R", + "methods" + ], + "Hash": "7eb1e342eee7e0a7449c49cdaa526d39" + }, + "gargle": { + "Package": "gargle", + "Version": "1.6.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "cli", + "fs", + "glue", + "httr", + "jsonlite", + "lifecycle", + "openssl", + "rappdirs", + "rlang", + "stats", + "utils", + "withr" + ], + "Hash": "99e4f3f00be5075372bb650a3e237a71" + }, + "generics": { + "Package": "generics", + "Version": "0.1.4", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R", + "methods" + ], + "Hash": "4b29bf698d0c7bdb9f1e4976e7ade41d" + }, + "geodist": { + "Package": "geodist", + "Version": "0.1.1", + "Source": "Repository", + "Repository": "P3M", + "Hash": "061a2a4bfa62f488c9d73a35b9fd2939" + }, + "geojson": { + "Package": "geojson", + "Version": "0.3.5", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "jqr", + "jsonlite", + "lazyeval", + "magrittr", + "methods", + "protolite", + "sp" + ], + "Hash": "efc8d020709d1e1f9628a8d5362d193b" + }, + "geojsonio": { + "Package": "geojsonio", + "Version": "0.11.3", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R", + "V8", + "crul", + "geojson", + "geojsonsf", + "jqr", + "jsonlite", + "magrittr", + "methods", + "readr", + "sf", + "sp" + ], + "Hash": "f0424e67a22ce09aaf89d6bc2b7f9431" + }, + "geojsonsf": { + "Package": "geojsonsf", + "Version": "2.0.5", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R", + "Rcpp", + "geometries", + "jsonify", + "rapidjsonr", + "sfheaders" + ], + "Hash": "3096b36cc9ab822560d3217c068e4641" + }, + "geometries": { + "Package": "geometries", + "Version": "0.2.5", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "Rcpp" + ], + "Hash": "cb7b9ad43bcf8d06d5c652f510ff5509" + }, + "ggplot2": { + "Package": "ggplot2", + "Version": "4.0.1", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R", + "S7", + "cli", + "grDevices", + "grid", + "gtable", + "isoband", + "lifecycle", + "rlang", + "scales", + "stats", + "vctrs", + "withr" + ], + "Hash": "1bfa14b2a1668b3569dafb0478b2636b" + }, + "glue": { + "Package": "glue", + "Version": "1.8.0", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R", + "methods" + ], + "Hash": "5899f1eaa825580172bb56c08266f37c" + }, + "googledrive": { + "Package": "googledrive", + "Version": "2.1.2", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R", + "cli", + "gargle", + "glue", + "httr", + "jsonlite", + "lifecycle", + "magrittr", + "pillar", + "purrr", + "rlang", + "tibble", + "utils", + "uuid", + "vctrs", + "withr" + ], + "Hash": "292be194aa519482c4b83f488a818ba3" + }, + "googlesheets4": { + "Package": "googlesheets4", + "Version": "1.1.2", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R", + "cellranger", + "cli", + "curl", + "gargle", + "glue", + "googledrive", + "httr", + "ids", + "lifecycle", + "magrittr", + "methods", + "purrr", + "rematch2", + "rlang", + "tibble", + "utils", + "vctrs", + "withr" + ], + "Hash": "376adbf359b416dbb30a76a2d2051ed5" + }, + "gridExtra": { + "Package": "gridExtra", + "Version": "2.3", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "grDevices", + "graphics", + "grid", + "gtable", + "utils" + ], + "Hash": "7d7f283939f563670a697165b2cf5560" + }, + "gt": { + "Package": "gt", + "Version": "1.3.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "base64enc", + "bigD", + "bitops", + "cli", + "commonmark", + "dplyr", + "fs", + "glue", + "htmltools", + "htmlwidgets", + "juicyjuice", + "magrittr", + "markdown", + "reactable", + "rlang", + "sass", + "scales", + "tidyselect", + "vctrs", + "xml2" + ], + "Hash": "7153ac3985ed54f1a318590b73950329" + }, + "gtable": { + "Package": "gtable", + "Version": "0.3.6", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R", + "cli", + "glue", + "grid", + "lifecycle", + "rlang", + "stats" + ], + "Hash": "de949855009e2d4d0e52a844e30617ae" + }, + "gtfsio": { + "Package": "gtfsio", + "Version": "1.2.0", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R", + "data.table", + "fs", + "jsonlite", + "utils", + "zip" + ], + "Hash": "c88ef74fb18827ab67963a8a4d52304c" + }, + "haven": { + "Package": "haven", + "Version": "2.5.5", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R", + "cli", + "cpp11", + "forcats", + "hms", + "lifecycle", + "methods", + "readr", + "rlang", + "tibble", + "tidyselect", + "vctrs" + ], + "Hash": "437bc7804f8ffdfcfed38d0aead6a9d7" + }, + "highr": { + "Package": "highr", + "Version": "0.11", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R", + "xfun" + ], + "Hash": "d65ba49117ca223614f71b60d85b8ab7" + }, + "hms": { + "Package": "hms", + "Version": "1.1.4", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "cli", + "lifecycle", + "methods", + "pkgconfig", + "rlang", + "vctrs" + ], + "Hash": "2799ac720626cec589478b191e48b88b" + }, + "htmltools": { + "Package": "htmltools", + "Version": "0.5.9", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R", + "base64enc", + "digest", + "fastmap", + "grDevices", + "rlang", + "utils" + ], + "Hash": "102298e238c14eb830cc4b5edd23c3e8" + }, + "htmlwidgets": { + "Package": "htmlwidgets", + "Version": "1.6.4", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "grDevices", + "htmltools", + "jsonlite", + "knitr", + "rmarkdown", + "yaml" + ], + "Hash": "04291cc45198225444a397606810ac37" + }, + "httpcode": { + "Package": "httpcode", + "Version": "0.3.0", + "Source": "Repository", + "Repository": "P3M", + "Hash": "13641a1c6d2cc98801b76764078e17ea" + }, + "httr": { + "Package": "httr", + "Version": "1.4.7", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R", + "R6", + "curl", + "jsonlite", + "mime", + "openssl" + ], + "Hash": "ac107251d9d9fd72f0ca8049988f1d7f" + }, + "ids": { + "Package": "ids", + "Version": "1.0.1", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "openssl", + "uuid" + ], + "Hash": "99df65cfef20e525ed38c3d2577f7190" + }, + "isoband": { + "Package": "isoband", + "Version": "0.3.0", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "cli", + "cpp11", + "grid", + "rlang", + "utils" + ], + "Hash": "0f9a864bbd7ce0232ad05cb76249cc1a" + }, + "jdawangHelpers": { + "Package": "jdawangHelpers", + "Version": "0.0.0.9000", + "Source": "GitHub", + "RemoteType": "github", + "RemoteHost": "api.github.com", + "RemoteUsername": "jdawang", + "RemoteRepo": "jdawangHelpers", + "RemoteRef": "main", + "RemoteSha": "b3d1f626bdba01cd2be91293d4ecb619537fb84c", + "Requirements": [ + "R", + "dplyr", + "forcats", + "ggplot2", + "gt", + "purrr", + "scales", + "sf", + "stringr", + "tidyr", + "tidytransit", + "units", + "viridis" + ], + "Hash": "b1f77dc2912f72c4c9c6d43597612e05" + }, + "jpeg": { + "Package": "jpeg", + "Version": "0.1-11", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R" + ], + "Hash": "c23ab23c370d1ce3a7a80d8c0bdfa105" + }, + "jqr": { + "Package": "jqr", + "Version": "1.4.0", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R", + "lazyeval", + "magrittr" + ], + "Hash": "25aad95d788314e4b307ead16059288d" + }, + "jquerylib": { + "Package": "jquerylib", + "Version": "0.1.4", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "htmltools" + ], + "Hash": "5aab57a3bd297eee1c1d862735972182" + }, + "jsonify": { + "Package": "jsonify", + "Version": "1.2.3", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R", + "Rcpp", + "rapidjsonr" + ], + "Hash": "5edb07a22dcc39e90c2b4a761f9b39db" + }, + "jsonlite": { + "Package": "jsonlite", + "Version": "2.0.0", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "methods" + ], + "Hash": "b0776f526d36d8bd4a3344a88fe165c4" + }, + "juicyjuice": { + "Package": "juicyjuice", + "Version": "0.1.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "V8" + ], + "Hash": "3bcd11943da509341838da9399e18bce" + }, + "knitr": { + "Package": "knitr", + "Version": "1.51", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R", + "evaluate", + "highr", + "methods", + "tools", + "xfun", + "yaml" + ], + "Hash": "27682babb50f03b6eb7939ea69ec79ca" + }, + "labeling": { + "Package": "labeling", + "Version": "0.4.3", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "graphics", + "stats" + ], + "Hash": "b64ec208ac5bc1852b285f665d6368b3" + }, + "lattice": { + "Package": "lattice", + "Version": "0.22-7", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "grDevices", + "graphics", + "grid", + "stats", + "utils" + ], + "Hash": "934f30aea6442867f57a610034ab06d3" + }, + "lazyeval": { + "Package": "lazyeval", + "Version": "0.2.2", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R" + ], + "Hash": "d908914ae53b04d4c0c0fd72ecc35370" + }, + "leaflet": { + "Package": "leaflet", + "Version": "2.2.3", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R", + "RColorBrewer", + "crosstalk", + "htmltools", + "htmlwidgets", + "jquerylib", + "leaflet.providers", + "magrittr", + "methods", + "png", + "raster", + "rlang", + "scales", + "sf", + "stats", + "viridisLite", + "xfun" + ], + "Hash": "da8aa03b2885c2b934923e6a53fe592a" + }, + "leaflet.providers": { + "Package": "leaflet.providers", + "Version": "2.0.0", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R", + "htmltools" + ], + "Hash": "c0b81ad9d5d932772f7a457ac398cf36" + }, + "lifecycle": { + "Package": "lifecycle", + "Version": "1.0.5", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R", + "cli", + "rlang" + ], + "Hash": "36dbfe4fba6c064db50a671a90297c85" + }, + "litedown": { + "Package": "litedown", + "Version": "0.9", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "commonmark", + "utils", + "xfun" + ], + "Hash": "6b9435273e6506fbafa5909adf4abb88" + }, + "lubridate": { + "Package": "lubridate", + "Version": "1.9.4", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R", + "generics", + "methods", + "timechange" + ], + "Hash": "be38bc740fc51783a78edb5a157e4104" + }, + "magick": { + "Package": "magick", + "Version": "2.9.0", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R", + "Rcpp", + "curl", + "magrittr" + ], + "Hash": "8b43f0e49eb9585e9e7faf12145ee79e" + }, + "magrittr": { + "Package": "magrittr", + "Version": "2.0.4", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R" + ], + "Hash": "8b3b213aa0c54a0dec254288ccb545d1" + }, + "mapboxapi": { + "Package": "mapboxapi", + "Version": "0.6.2", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R", + "aws.s3", + "curl", + "dplyr", + "geojsonsf", + "htmltools", + "httr", + "jpeg", + "jsonlite", + "leaflet", + "magick", + "png", + "protolite", + "purrr", + "raster", + "rlang", + "sf", + "slippymath", + "stringi", + "tidyr", + "units" + ], + "Hash": "8a8f8bcb89ca75e45b22e7ee88e211de" + }, + "markdown": { + "Package": "markdown", + "Version": "2.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "litedown", + "utils", + "xfun" + ], + "Hash": "b4349847250b103bbbb8bc6819c4fbca" + }, + "memoise": { + "Package": "memoise", + "Version": "2.0.1", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "cachem", + "rlang" + ], + "Hash": "e2817ccf4a065c5d9d7f2cfbe7c1d78c" + }, + "mime": { + "Package": "mime", + "Version": "0.13", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "tools" + ], + "Hash": "0ec19f34c72fab674d8f2b4b1c6410e1" + }, + "modelr": { + "Package": "modelr", + "Version": "0.1.11", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R", + "broom", + "magrittr", + "purrr", + "rlang", + "tibble", + "tidyr", + "tidyselect", + "vctrs" + ], + "Hash": "4f50122dc256b1b6996a4703fecea821" + }, + "mountainmathHelpers": { + "Package": "mountainmathHelpers", + "Version": "0.1.4", + "Source": "GitHub", + "RemoteType": "github", + "RemoteHost": "api.github.com", + "RemoteUsername": "mountainMath", + "RemoteRepo": "mountainmathHelpers", + "RemoteRef": "master", + "RemoteSha": "6af7c868601c9c7434f01169bfbe7c4b3636fd9c", + "Requirements": [ + "R.utils", + "aws.s3", + "digest", + "dplyr", + "geojsonsf", + "ggplot2", + "httr", + "jsonlite", + "mapboxapi", + "readr", + "rlang", + "rmapzen", + "sf", + "slippymath" + ], + "Hash": "e1f66d091f392c503d331a80670c769a" + }, + "openssl": { + "Package": "openssl", + "Version": "2.3.4", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "askpass" + ], + "Hash": "d5811dade9cd3a34a9038a45f1a59bae" + }, + "pillar": { + "Package": "pillar", + "Version": "1.11.1", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "cli", + "glue", + "lifecycle", + "rlang", + "utf8", + "utils", + "vctrs" + ], + "Hash": "1395e64f2689ffd503657778e810cee2" + }, + "pkgconfig": { + "Package": "pkgconfig", + "Version": "2.0.3", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "utils" + ], + "Hash": "01f28d4278f15c76cddbea05899c5d6f" + }, + "png": { + "Package": "png", + "Version": "0.1-8", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R" + ], + "Hash": "bd54ba8a0a5faded999a7aab6e46b374" + }, + "prettyunits": { + "Package": "prettyunits", + "Version": "1.2.0", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R" + ], + "Hash": "6b01fc98b1e86c4f705ce9dcfd2f57c7" + }, + "processx": { + "Package": "processx", + "Version": "3.8.6", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R", + "R6", + "ps", + "utils" + ], + "Hash": "720161b280b0a35f4d1490ead2fe81d0" + }, + "progress": { + "Package": "progress", + "Version": "1.2.3", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R", + "R6", + "crayon", + "hms", + "prettyunits" + ], + "Hash": "f4625e061cb2865f111b47ff163a5ca6" + }, + "protolite": { + "Package": "protolite", + "Version": "2.3.1", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "Rcpp", + "jsonlite" + ], + "Hash": "ea2364e73971f7e570bffc59868e3912" + }, + "proxy": { + "Package": "proxy", + "Version": "0.4-29", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R", + "stats", + "utils" + ], + "Hash": "b6c826e897b46b163c51a3b990113a21" + }, + "ps": { + "Package": "ps", + "Version": "1.9.1", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R", + "utils" + ], + "Hash": "093688087b0bacce6ba2f661f36328e2" + }, + "purrr": { + "Package": "purrr", + "Version": "1.2.1", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R", + "cli", + "lifecycle", + "magrittr", + "rlang", + "vctrs" + ], + "Hash": "0154ac5b9ef4df1a7be3a54602e781cf" + }, + "ragg": { + "Package": "ragg", + "Version": "1.5.0", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "systemfonts", + "textshaping" + ], + "Hash": "cdb40b21711a8870f305b24226698f9f" + }, + "rapidjsonr": { + "Package": "rapidjsonr", + "Version": "1.2.1", + "Source": "Repository", + "Repository": "P3M", + "Hash": "b6a97237ee07c7fcfe836f1b6ba882b0" + }, + "rappdirs": { + "Package": "rappdirs", + "Version": "0.3.4", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R" + ], + "Hash": "f146a5bfc94db048309712535d4d0aee" + }, + "raster": { + "Package": "raster", + "Version": "3.6-32", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R", + "Rcpp", + "methods", + "sp", + "terra" + ], + "Hash": "1e193fc2c727a6f83cf95d9e16024423" + }, + "reactR": { + "Package": "reactR", + "Version": "0.6.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "htmltools" + ], + "Hash": "b8e3d93f508045812f47136c7c44c251" + }, + "reactable": { + "Package": "reactable", + "Version": "0.4.5", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "digest", + "htmltools", + "htmlwidgets", + "jsonlite", + "reactR" + ], + "Hash": "abfd6fa3794ff78116123d95845e0c32" + }, + "readr": { + "Package": "readr", + "Version": "2.1.6", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R", + "R6", + "cli", + "clipr", + "cpp11", + "crayon", + "hms", + "lifecycle", + "methods", + "rlang", + "tibble", + "tzdb", + "utils", + "vroom" + ], + "Hash": "141ebcec1bf55707751c7956a34d93db" + }, + "readxl": { + "Package": "readxl", + "Version": "1.4.5", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R", + "cellranger", + "cpp11", + "progress", + "tibble", + "utils" + ], + "Hash": "18948de59f05d38a44d3e5065a76b4b6" + }, + "rematch": { + "Package": "rematch", + "Version": "2.0.0", + "Source": "Repository", + "Repository": "P3M", + "Hash": "cbff1b666c6fa6d21202f07e2318d4f1" + }, + "rematch2": { + "Package": "rematch2", + "Version": "2.1.2", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "tibble" + ], + "Hash": "76c9e04c712a05848ae7a23d2f170a40" + }, + "renv": { + "Package": "renv", + "Version": "1.0.11", + "Source": "Repository", + "Repository": "RSPM", + "Requirements": [ + "utils" + ], + "Hash": "47623f66b4e80b3b0587bc5d7b309888" + }, + "reprex": { + "Package": "reprex", + "Version": "2.1.1", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R", + "callr", + "cli", + "clipr", + "fs", + "glue", + "knitr", + "lifecycle", + "rlang", + "rmarkdown", + "rstudioapi", + "utils", + "withr" + ], + "Hash": "97b1d5361a24d9fb588db7afe3e5bcbf" + }, + "rlang": { + "Package": "rlang", + "Version": "1.1.7", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R", + "utils" + ], + "Hash": "34c0d101f4613098abc538b82e0d86c5" + }, + "rmapzen": { + "Package": "rmapzen", + "Version": "0.5.1", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "ISOcodes", + "R", + "assertthat", + "digest", + "dplyr", + "geojsonio", + "httr", + "jsonlite", + "purrr", + "sf", + "tibble", + "tidyr", + "utils" + ], + "Hash": "5f2da6eb8d2ea66342ea0799b37fb802" + }, + "rmarkdown": { + "Package": "rmarkdown", + "Version": "2.30", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R", + "bslib", + "evaluate", + "fontawesome", + "htmltools", + "jquerylib", + "jsonlite", + "knitr", + "methods", + "tinytex", + "tools", + "utils", + "xfun", + "yaml" + ], + "Hash": "efe19db0fde0fff13cea7eec6f695021" + }, + "rstudioapi": { + "Package": "rstudioapi", + "Version": "0.18.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d6e1ecf8e39b6d53c8acde372b2f92d1" + }, + "rvest": { + "Package": "rvest", + "Version": "1.0.5", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R", + "cli", + "glue", + "httr", + "lifecycle", + "magrittr", + "rlang", + "selectr", + "tibble", + "xml2" + ], + "Hash": "2804ddcd7737082306c559d919886546" + }, + "s2": { + "Package": "s2", + "Version": "1.1.9", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R", + "Rcpp", + "wk" + ], + "Hash": "4e664a5d610d58f27ec196e96cdb7f6f" + }, + "sass": { + "Package": "sass", + "Version": "0.4.10", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R6", + "fs", + "htmltools", + "rappdirs", + "rlang" + ], + "Hash": "3fb78d066fb92299b1d13f6a7c9a90a8" + }, + "scales": { + "Package": "scales", + "Version": "1.4.0", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R", + "R6", + "RColorBrewer", + "cli", + "farver", + "glue", + "labeling", + "lifecycle", + "rlang", + "viridisLite" + ], + "Hash": "c5bba8f0d1df8c4b9538a40570798d9b" + }, + "selectr": { + "Package": "selectr", + "Version": "0.5-1", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R", + "R6", + "methods", + "stringr" + ], + "Hash": "fb6f4aacfcc16539458c66b698339e69" + }, + "sf": { + "Package": "sf", + "Version": "1.1-0", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "DBI", + "R", + "Rcpp", + "classInt", + "grDevices", + "graphics", + "grid", + "magrittr", + "methods", + "s2", + "stats", + "tools", + "units", + "utils" + ], + "Hash": "3e61ec188b75e39ce061f6b2dee44179" + }, + "sfheaders": { + "Package": "sfheaders", + "Version": "0.4.5", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R", + "Rcpp", + "geometries" + ], + "Hash": "c655cae84ce671c8aa1067cbf2ff0fe4" + }, + "slippymath": { + "Package": "slippymath", + "Version": "0.3.1", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R", + "png", + "purrr", + "raster", + "stats" + ], + "Hash": "abdaf883004a4791545655d79ca3aae0" + }, + "sp": { + "Package": "sp", + "Version": "2.2-0", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R", + "grDevices", + "graphics", + "grid", + "lattice", + "methods", + "stats", + "utils" + ], + "Hash": "d9ff3b753db98bc50650314c8782abe6" + }, + "stringi": { + "Package": "stringi", + "Version": "1.8.7", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R", + "stats", + "tools", + "utils" + ], + "Hash": "2b56088e23bdd58f89aebf43a0913457" + }, + "stringr": { + "Package": "stringr", + "Version": "1.6.0", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R", + "cli", + "glue", + "lifecycle", + "magrittr", + "rlang", + "stringi", + "vctrs" + ], + "Hash": "d47392652eedc68bf916657347ff2526" + }, + "sys": { + "Package": "sys", + "Version": "3.4.3", + "Source": "Repository", + "Repository": "P3M", + "Hash": "de342ebfebdbf40477d0758d05426646" + }, + "systemfonts": { + "Package": "systemfonts", + "Version": "1.3.1", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R", + "base64enc", + "cpp11", + "grid", + "jsonlite", + "lifecycle", + "tools", + "utils" + ], + "Hash": "4fae513a3bb1a155943d1e9d1ae467ec" + }, + "terra": { + "Package": "terra", + "Version": "1.8-93", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R", + "Rcpp", + "methods" + ], + "Hash": "bb3e2b0e01eeeed8c3e828faaf6c68b5" + }, + "textshaping": { + "Package": "textshaping", + "Version": "1.0.4", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R", + "cpp11", + "lifecycle", + "stats", + "stringi", + "systemfonts", + "utils" + ], + "Hash": "477d70e23914730aa7f5c5fd351f4721" + }, + "tibble": { + "Package": "tibble", + "Version": "3.3.1", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R", + "cli", + "lifecycle", + "magrittr", + "methods", + "pillar", + "pkgconfig", + "rlang", + "utils", + "vctrs" + ], + "Hash": "c55df870972551cac674b50cadb2d51f" + }, + "tidyr": { + "Package": "tidyr", + "Version": "1.3.2", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R", + "cli", + "cpp11", + "dplyr", + "glue", + "lifecycle", + "magrittr", + "purrr", + "rlang", + "stringr", + "tibble", + "tidyselect", + "utils", + "vctrs" + ], + "Hash": "a4fa2f5876396f04814cb9d8d9ab89e9" + }, + "tidyselect": { + "Package": "tidyselect", + "Version": "1.2.1", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R", + "cli", + "glue", + "lifecycle", + "rlang", + "vctrs", + "withr" + ], + "Hash": "829f27b9c4919c16b593794a6344d6c0" + }, + "tidytransit": { + "Package": "tidytransit", + "Version": "1.8.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "data.table", + "digest", + "dplyr", + "geodist", + "gtfsio", + "hms", + "jsonlite", + "sf" + ], + "Hash": "e9781c32fd604605bb307e4638e0ed00" + }, + "tidyverse": { + "Package": "tidyverse", + "Version": "2.0.0", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R", + "broom", + "cli", + "conflicted", + "dbplyr", + "dplyr", + "dtplyr", + "forcats", + "ggplot2", + "googledrive", + "googlesheets4", + "haven", + "hms", + "httr", + "jsonlite", + "lubridate", + "magrittr", + "modelr", + "pillar", + "purrr", + "ragg", + "readr", + "readxl", + "reprex", + "rlang", + "rstudioapi", + "rvest", + "stringr", + "tibble", + "tidyr", + "xml2" + ], + "Hash": "c328568cd14ea89a83bd4ca7f54ae07e" + }, + "timechange": { + "Package": "timechange", + "Version": "0.4.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "cpp11" + ], + "Hash": "39c40cb1ad47a4cc384a34a22a29463f" + }, + "tinytex": { + "Package": "tinytex", + "Version": "0.58", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "xfun" + ], + "Hash": "03af3ad04817f3019de8ee5c73dab807" + }, + "triebeard": { + "Package": "triebeard", + "Version": "0.4.1", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "Rcpp" + ], + "Hash": "642507a148b0dd9b5620177e0a044413" + }, + "tzdb": { + "Package": "tzdb", + "Version": "0.5.0", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R", + "cpp11" + ], + "Hash": "09e3961e87b7bafa4a9340bbb34aeda8" + }, + "units": { + "Package": "units", + "Version": "1.0-0", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R", + "Rcpp" + ], + "Hash": "3797c73fd3bde8b1601a4e1bf53557ac" + }, + "urltools": { + "Package": "urltools", + "Version": "1.7.3.1", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R", + "Rcpp", + "methods", + "triebeard" + ], + "Hash": "0951eeef49e3df040dfc67ce75a052ac" + }, + "utf8": { + "Package": "utf8", + "Version": "1.2.6", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R" + ], + "Hash": "d526d558be176e9ceb68c3d1e83479b7" + }, + "uuid": { + "Package": "uuid", + "Version": "1.2-2", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R" + ], + "Hash": "528fc9e90d70a6a115e21164f37b2c64" + }, + "vctrs": { + "Package": "vctrs", + "Version": "0.7.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "cli", + "glue", + "lifecycle", + "rlang" + ], + "Hash": "c64e64d93489bb62bb8747bbb9e06c09" + }, + "viridis": { + "Package": "viridis", + "Version": "0.6.5", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R", + "ggplot2", + "gridExtra", + "viridisLite" + ], + "Hash": "acd96d9fa70adeea4a5a1150609b9745" + }, + "viridisLite": { + "Package": "viridisLite", + "Version": "0.4.2", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R" + ], + "Hash": "c826c7c4241b6fc89ff55aaea3fa7491" + }, + "vroom": { + "Package": "vroom", + "Version": "1.7.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "bit64", + "cli", + "cpp11", + "crayon", + "glue", + "hms", + "lifecycle", + "methods", + "progress", + "rlang", + "stats", + "tibble", + "tidyselect", + "tzdb", + "vctrs", + "withr" + ], + "Hash": "255cb6f090718455ff89cbc28cb5eea7" + }, + "withr": { + "Package": "withr", + "Version": "3.0.2", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R", + "grDevices", + "graphics" + ], + "Hash": "cc2d62c76458d425210d1eb1478b30b4" + }, + "wk": { + "Package": "wk", + "Version": "0.9.5", + "Source": "Repository", + "Repository": "P3M", + "Requirements": [ + "R" + ], + "Hash": "10fb21ed42dbd4ed9162aaab818146e3" + }, + "xfun": { + "Package": "xfun", + "Version": "0.56", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "grDevices", + "stats", + "tools" + ], + "Hash": "f1f18d352a39c6252932da4faa029cdd" + }, + "xml2": { + "Package": "xml2", + "Version": "1.5.2", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "cli", + "methods", + "rlang" + ], + "Hash": "d8e98d08a4a4d03f5052acc6e6204b99" + }, + "yaml": { + "Package": "yaml", + "Version": "2.3.12", + "Source": "Repository", + "Repository": "P3M", + "Hash": "7cd77cb32abd9220d744307e9fc94ffb" + }, + "zip": { + "Package": "zip", + "Version": "2.3.3", + "Source": "Repository", + "Repository": "P3M", + "Hash": "6ebe4b1dc74c3e50e74e316323629583" + } + } +} diff --git a/blog/2026/mli-select-edmonton/renv/.gitignore b/blog/2026/mli-select-edmonton/renv/.gitignore new file mode 100644 index 0000000..0ec0cbb --- /dev/null +++ b/blog/2026/mli-select-edmonton/renv/.gitignore @@ -0,0 +1,7 @@ +library/ +local/ +cellar/ +lock/ +python/ +sandbox/ +staging/ diff --git a/blog/2026/mli-select-edmonton/renv/activate.R b/blog/2026/mli-select-edmonton/renv/activate.R new file mode 100644 index 0000000..0eb5108 --- /dev/null +++ b/blog/2026/mli-select-edmonton/renv/activate.R @@ -0,0 +1,1305 @@ + +local({ + + # the requested version of renv + version <- "1.0.11" + attr(version, "sha") <- NULL + + # the project directory + project <- Sys.getenv("RENV_PROJECT") + if (!nzchar(project)) + project <- getwd() + + # use start-up diagnostics if enabled + diagnostics <- Sys.getenv("RENV_STARTUP_DIAGNOSTICS", unset = "FALSE") + if (diagnostics) { + start <- Sys.time() + profile <- tempfile("renv-startup-", fileext = ".Rprof") + utils::Rprof(profile) + on.exit({ + utils::Rprof(NULL) + elapsed <- signif(difftime(Sys.time(), start, units = "auto"), digits = 2L) + writeLines(sprintf("- renv took %s to run the autoloader.", format(elapsed))) + writeLines(sprintf("- Profile: %s", profile)) + print(utils::summaryRprof(profile)) + }, add = TRUE) + } + + # figure out whether the autoloader is enabled + enabled <- local({ + + # first, check config option + override <- getOption("renv.config.autoloader.enabled") + if (!is.null(override)) + return(override) + + # if we're being run in a context where R_LIBS is already set, + # don't load -- presumably we're being run as a sub-process and + # the parent process has already set up library paths for us + rcmd <- Sys.getenv("R_CMD", unset = NA) + rlibs <- Sys.getenv("R_LIBS", unset = NA) + if (!is.na(rlibs) && !is.na(rcmd)) + return(FALSE) + + # next, check environment variables + # TODO: prefer using the configuration one in the future + envvars <- c( + "RENV_CONFIG_AUTOLOADER_ENABLED", + "RENV_AUTOLOADER_ENABLED", + "RENV_ACTIVATE_PROJECT" + ) + + for (envvar in envvars) { + envval <- Sys.getenv(envvar, unset = NA) + if (!is.na(envval)) + return(tolower(envval) %in% c("true", "t", "1")) + } + + # enable by default + TRUE + + }) + + # bail if we're not enabled + if (!enabled) { + + # if we're not enabled, we might still need to manually load + # the user profile here + profile <- Sys.getenv("R_PROFILE_USER", unset = "~/.Rprofile") + if (file.exists(profile)) { + cfg <- Sys.getenv("RENV_CONFIG_USER_PROFILE", unset = "TRUE") + if (tolower(cfg) %in% c("true", "t", "1")) + sys.source(profile, envir = globalenv()) + } + + return(FALSE) + + } + + # avoid recursion + if (identical(getOption("renv.autoloader.running"), TRUE)) { + warning("ignoring recursive attempt to run renv autoloader") + return(invisible(TRUE)) + } + + # signal that we're loading renv during R startup + options(renv.autoloader.running = TRUE) + on.exit(options(renv.autoloader.running = NULL), add = TRUE) + + # signal that we've consented to use renv + options(renv.consent = TRUE) + + # load the 'utils' package eagerly -- this ensures that renv shims, which + # mask 'utils' packages, will come first on the search path + library(utils, lib.loc = .Library) + + # unload renv if it's already been loaded + if ("renv" %in% loadedNamespaces()) + unloadNamespace("renv") + + # load bootstrap tools + ansify <- function(text) { + if (renv_ansify_enabled()) + renv_ansify_enhanced(text) + else + renv_ansify_default(text) + } + + renv_ansify_enabled <- function() { + + override <- Sys.getenv("RENV_ANSIFY_ENABLED", unset = NA) + if (!is.na(override)) + return(as.logical(override)) + + pane <- Sys.getenv("RSTUDIO_CHILD_PROCESS_PANE", unset = NA) + if (identical(pane, "build")) + return(FALSE) + + testthat <- Sys.getenv("TESTTHAT", unset = "false") + if (tolower(testthat) %in% "true") + return(FALSE) + + iderun <- Sys.getenv("R_CLI_HAS_HYPERLINK_IDE_RUN", unset = "false") + if (tolower(iderun) %in% "false") + return(FALSE) + + TRUE + + } + + renv_ansify_default <- function(text) { + text + } + + renv_ansify_enhanced <- function(text) { + + # R help links + pattern <- "`\\?(renv::(?:[^`])+)`" + replacement <- "`\033]8;;ide:help:\\1\a?\\1\033]8;;\a`" + text <- gsub(pattern, replacement, text, perl = TRUE) + + # runnable code + pattern <- "`(renv::(?:[^`])+)`" + replacement <- "`\033]8;;ide:run:\\1\a\\1\033]8;;\a`" + text <- gsub(pattern, replacement, text, perl = TRUE) + + # return ansified text + text + + } + + renv_ansify_init <- function() { + + envir <- renv_envir_self() + if (renv_ansify_enabled()) + assign("ansify", renv_ansify_enhanced, envir = envir) + else + assign("ansify", renv_ansify_default, envir = envir) + + } + + `%||%` <- function(x, y) { + if (is.null(x)) y else x + } + + catf <- function(fmt, ..., appendLF = TRUE) { + + quiet <- getOption("renv.bootstrap.quiet", default = FALSE) + if (quiet) + return(invisible()) + + msg <- sprintf(fmt, ...) + cat(msg, file = stdout(), sep = if (appendLF) "\n" else "") + + invisible(msg) + + } + + header <- function(label, + ..., + prefix = "#", + suffix = "-", + n = min(getOption("width"), 78)) + { + label <- sprintf(label, ...) + n <- max(n - nchar(label) - nchar(prefix) - 2L, 8L) + if (n <= 0) + return(paste(prefix, label)) + + tail <- paste(rep.int(suffix, n), collapse = "") + paste0(prefix, " ", label, " ", tail) + + } + + heredoc <- function(text, leave = 0) { + + # remove leading, trailing whitespace + trimmed <- gsub("^\\s*\\n|\\n\\s*$", "", text) + + # split into lines + lines <- strsplit(trimmed, "\n", fixed = TRUE)[[1L]] + + # compute common indent + indent <- regexpr("[^[:space:]]", lines) + common <- min(setdiff(indent, -1L)) - leave + text <- paste(substring(lines, common), collapse = "\n") + + # substitute in ANSI links for executable renv code + ansify(text) + + } + + startswith <- function(string, prefix) { + substring(string, 1, nchar(prefix)) == prefix + } + + bootstrap <- function(version, library) { + + friendly <- renv_bootstrap_version_friendly(version) + section <- header(sprintf("Bootstrapping renv %s", friendly)) + catf(section) + + # attempt to download renv + catf("- Downloading renv ... ", appendLF = FALSE) + withCallingHandlers( + tarball <- renv_bootstrap_download(version), + error = function(err) { + catf("FAILED") + stop("failed to download:\n", conditionMessage(err)) + } + ) + catf("OK") + on.exit(unlink(tarball), add = TRUE) + + # now attempt to install + catf("- Installing renv ... ", appendLF = FALSE) + withCallingHandlers( + status <- renv_bootstrap_install(version, tarball, library), + error = function(err) { + catf("FAILED") + stop("failed to install:\n", conditionMessage(err)) + } + ) + catf("OK") + + # add empty line to break up bootstrapping from normal output + catf("") + + return(invisible()) + } + + renv_bootstrap_tests_running <- function() { + getOption("renv.tests.running", default = FALSE) + } + + renv_bootstrap_repos <- function() { + + # get CRAN repository + cran <- getOption("renv.repos.cran", "https://cloud.r-project.org") + + # check for repos override + repos <- Sys.getenv("RENV_CONFIG_REPOS_OVERRIDE", unset = NA) + if (!is.na(repos)) { + + # check for RSPM; if set, use a fallback repository for renv + rspm <- Sys.getenv("RSPM", unset = NA) + if (identical(rspm, repos)) + repos <- c(RSPM = rspm, CRAN = cran) + + return(repos) + + } + + # check for lockfile repositories + repos <- tryCatch(renv_bootstrap_repos_lockfile(), error = identity) + if (!inherits(repos, "error") && length(repos)) + return(repos) + + # retrieve current repos + repos <- getOption("repos") + + # ensure @CRAN@ entries are resolved + repos[repos == "@CRAN@"] <- cran + + # add in renv.bootstrap.repos if set + default <- c(FALLBACK = "https://cloud.r-project.org") + extra <- getOption("renv.bootstrap.repos", default = default) + repos <- c(repos, extra) + + # remove duplicates that might've snuck in + dupes <- duplicated(repos) | duplicated(names(repos)) + repos[!dupes] + + } + + renv_bootstrap_repos_lockfile <- function() { + + lockpath <- Sys.getenv("RENV_PATHS_LOCKFILE", unset = "renv.lock") + if (!file.exists(lockpath)) + return(NULL) + + lockfile <- tryCatch(renv_json_read(lockpath), error = identity) + if (inherits(lockfile, "error")) { + warning(lockfile) + return(NULL) + } + + repos <- lockfile$R$Repositories + if (length(repos) == 0) + return(NULL) + + keys <- vapply(repos, `[[`, "Name", FUN.VALUE = character(1)) + vals <- vapply(repos, `[[`, "URL", FUN.VALUE = character(1)) + names(vals) <- keys + + return(vals) + + } + + renv_bootstrap_download <- function(version) { + + sha <- attr(version, "sha", exact = TRUE) + + methods <- if (!is.null(sha)) { + + # attempting to bootstrap a development version of renv + c( + function() renv_bootstrap_download_tarball(sha), + function() renv_bootstrap_download_github(sha) + ) + + } else { + + # attempting to bootstrap a release version of renv + c( + function() renv_bootstrap_download_tarball(version), + function() renv_bootstrap_download_cran_latest(version), + function() renv_bootstrap_download_cran_archive(version) + ) + + } + + for (method in methods) { + path <- tryCatch(method(), error = identity) + if (is.character(path) && file.exists(path)) + return(path) + } + + stop("All download methods failed") + + } + + renv_bootstrap_download_impl <- function(url, destfile) { + + mode <- "wb" + + # https://bugs.r-project.org/bugzilla/show_bug.cgi?id=17715 + fixup <- + Sys.info()[["sysname"]] == "Windows" && + substring(url, 1L, 5L) == "file:" + + if (fixup) + mode <- "w+b" + + args <- list( + url = url, + destfile = destfile, + mode = mode, + quiet = TRUE + ) + + if ("headers" %in% names(formals(utils::download.file))) { + headers <- renv_bootstrap_download_custom_headers(url) + if (length(headers) && is.character(headers)) + args$headers <- headers + } + + do.call(utils::download.file, args) + + } + + renv_bootstrap_download_custom_headers <- function(url) { + + headers <- getOption("renv.download.headers") + if (is.null(headers)) + return(character()) + + if (!is.function(headers)) + stopf("'renv.download.headers' is not a function") + + headers <- headers(url) + if (length(headers) == 0L) + return(character()) + + if (is.list(headers)) + headers <- unlist(headers, recursive = FALSE, use.names = TRUE) + + ok <- + is.character(headers) && + is.character(names(headers)) && + all(nzchar(names(headers))) + + if (!ok) + stop("invocation of 'renv.download.headers' did not return a named character vector") + + headers + + } + + renv_bootstrap_download_cran_latest <- function(version) { + + spec <- renv_bootstrap_download_cran_latest_find(version) + type <- spec$type + repos <- spec$repos + + baseurl <- utils::contrib.url(repos = repos, type = type) + ext <- if (identical(type, "source")) + ".tar.gz" + else if (Sys.info()[["sysname"]] == "Windows") + ".zip" + else + ".tgz" + name <- sprintf("renv_%s%s", version, ext) + url <- paste(baseurl, name, sep = "/") + + destfile <- file.path(tempdir(), name) + status <- tryCatch( + renv_bootstrap_download_impl(url, destfile), + condition = identity + ) + + if (inherits(status, "condition")) + return(FALSE) + + # report success and return + destfile + + } + + renv_bootstrap_download_cran_latest_find <- function(version) { + + # check whether binaries are supported on this system + binary <- + getOption("renv.bootstrap.binary", default = TRUE) && + !identical(.Platform$pkgType, "source") && + !identical(getOption("pkgType"), "source") && + Sys.info()[["sysname"]] %in% c("Darwin", "Windows") + + types <- c(if (binary) "binary", "source") + + # iterate over types + repositories + for (type in types) { + for (repos in renv_bootstrap_repos()) { + + # build arguments for utils::available.packages() call + args <- list(type = type, repos = repos) + + # add custom headers if available -- note that + # utils::available.packages() will pass this to download.file() + if ("headers" %in% names(formals(utils::download.file))) { + headers <- renv_bootstrap_download_custom_headers(repos) + if (length(headers) && is.character(headers)) + args$headers <- headers + } + + # retrieve package database + db <- tryCatch( + as.data.frame( + do.call(utils::available.packages, args), + stringsAsFactors = FALSE + ), + error = identity + ) + + if (inherits(db, "error")) + next + + # check for compatible entry + entry <- db[db$Package %in% "renv" & db$Version %in% version, ] + if (nrow(entry) == 0) + next + + # found it; return spec to caller + spec <- list(entry = entry, type = type, repos = repos) + return(spec) + + } + } + + # if we got here, we failed to find renv + fmt <- "renv %s is not available from your declared package repositories" + stop(sprintf(fmt, version)) + + } + + renv_bootstrap_download_cran_archive <- function(version) { + + name <- sprintf("renv_%s.tar.gz", version) + repos <- renv_bootstrap_repos() + urls <- file.path(repos, "src/contrib/Archive/renv", name) + destfile <- file.path(tempdir(), name) + + for (url in urls) { + + status <- tryCatch( + renv_bootstrap_download_impl(url, destfile), + condition = identity + ) + + if (identical(status, 0L)) + return(destfile) + + } + + return(FALSE) + + } + + renv_bootstrap_download_tarball <- function(version) { + + # if the user has provided the path to a tarball via + # an environment variable, then use it + tarball <- Sys.getenv("RENV_BOOTSTRAP_TARBALL", unset = NA) + if (is.na(tarball)) + return() + + # allow directories + if (dir.exists(tarball)) { + name <- sprintf("renv_%s.tar.gz", version) + tarball <- file.path(tarball, name) + } + + # bail if it doesn't exist + if (!file.exists(tarball)) { + + # let the user know we weren't able to honour their request + fmt <- "- RENV_BOOTSTRAP_TARBALL is set (%s) but does not exist." + msg <- sprintf(fmt, tarball) + warning(msg) + + # bail + return() + + } + + catf("- Using local tarball '%s'.", tarball) + tarball + + } + + renv_bootstrap_github_token <- function() { + for (envvar in c("GITHUB_TOKEN", "GITHUB_PAT", "GH_TOKEN")) { + envval <- Sys.getenv(envvar, unset = NA) + if (!is.na(envval)) + return(envval) + } + } + + renv_bootstrap_download_github <- function(version) { + + enabled <- Sys.getenv("RENV_BOOTSTRAP_FROM_GITHUB", unset = "TRUE") + if (!identical(enabled, "TRUE")) + return(FALSE) + + # prepare download options + token <- renv_bootstrap_github_token() + if (nzchar(Sys.which("curl")) && nzchar(token)) { + fmt <- "--location --fail --header \"Authorization: token %s\"" + extra <- sprintf(fmt, token) + saved <- options("download.file.method", "download.file.extra") + options(download.file.method = "curl", download.file.extra = extra) + on.exit(do.call(base::options, saved), add = TRUE) + } else if (nzchar(Sys.which("wget")) && nzchar(token)) { + fmt <- "--header=\"Authorization: token %s\"" + extra <- sprintf(fmt, token) + saved <- options("download.file.method", "download.file.extra") + options(download.file.method = "wget", download.file.extra = extra) + on.exit(do.call(base::options, saved), add = TRUE) + } + + url <- file.path("https://api.github.com/repos/rstudio/renv/tarball", version) + name <- sprintf("renv_%s.tar.gz", version) + destfile <- file.path(tempdir(), name) + + status <- tryCatch( + renv_bootstrap_download_impl(url, destfile), + condition = identity + ) + + if (!identical(status, 0L)) + return(FALSE) + + renv_bootstrap_download_augment(destfile) + + return(destfile) + + } + + # Add Sha to DESCRIPTION. This is stop gap until #890, after which we + # can use renv::install() to fully capture metadata. + renv_bootstrap_download_augment <- function(destfile) { + sha <- renv_bootstrap_git_extract_sha1_tar(destfile) + if (is.null(sha)) { + return() + } + + # Untar + tempdir <- tempfile("renv-github-") + on.exit(unlink(tempdir, recursive = TRUE), add = TRUE) + untar(destfile, exdir = tempdir) + pkgdir <- dir(tempdir, full.names = TRUE)[[1]] + + # Modify description + desc_path <- file.path(pkgdir, "DESCRIPTION") + desc_lines <- readLines(desc_path) + remotes_fields <- c( + "RemoteType: github", + "RemoteHost: api.github.com", + "RemoteRepo: renv", + "RemoteUsername: rstudio", + "RemotePkgRef: rstudio/renv", + paste("RemoteRef: ", sha), + paste("RemoteSha: ", sha) + ) + writeLines(c(desc_lines[desc_lines != ""], remotes_fields), con = desc_path) + + # Re-tar + local({ + old <- setwd(tempdir) + on.exit(setwd(old), add = TRUE) + + tar(destfile, compression = "gzip") + }) + invisible() + } + + # Extract the commit hash from a git archive. Git archives include the SHA1 + # hash as the comment field of the tarball pax extended header + # (see https://www.kernel.org/pub/software/scm/git/docs/git-archive.html) + # For GitHub archives this should be the first header after the default one + # (512 byte) header. + renv_bootstrap_git_extract_sha1_tar <- function(bundle) { + + # open the bundle for reading + # We use gzcon for everything because (from ?gzcon) + # > Reading from a connection which does not supply a 'gzip' magic + # > header is equivalent to reading from the original connection + conn <- gzcon(file(bundle, open = "rb", raw = TRUE)) + on.exit(close(conn)) + + # The default pax header is 512 bytes long and the first pax extended header + # with the comment should be 51 bytes long + # `52 comment=` (11 chars) + 40 byte SHA1 hash + len <- 0x200 + 0x33 + res <- rawToChar(readBin(conn, "raw", n = len)[0x201:len]) + + if (grepl("^52 comment=", res)) { + sub("52 comment=", "", res) + } else { + NULL + } + } + + renv_bootstrap_install <- function(version, tarball, library) { + + # attempt to install it into project library + dir.create(library, showWarnings = FALSE, recursive = TRUE) + output <- renv_bootstrap_install_impl(library, tarball) + + # check for successful install + status <- attr(output, "status") + if (is.null(status) || identical(status, 0L)) + return(status) + + # an error occurred; report it + header <- "installation of renv failed" + lines <- paste(rep.int("=", nchar(header)), collapse = "") + text <- paste(c(header, lines, output), collapse = "\n") + stop(text) + + } + + renv_bootstrap_install_impl <- function(library, tarball) { + + # invoke using system2 so we can capture and report output + bin <- R.home("bin") + exe <- if (Sys.info()[["sysname"]] == "Windows") "R.exe" else "R" + R <- file.path(bin, exe) + + args <- c( + "--vanilla", "CMD", "INSTALL", "--no-multiarch", + "-l", shQuote(path.expand(library)), + shQuote(path.expand(tarball)) + ) + + system2(R, args, stdout = TRUE, stderr = TRUE) + + } + + renv_bootstrap_platform_prefix <- function() { + + # construct version prefix + version <- paste(R.version$major, R.version$minor, sep = ".") + prefix <- paste("R", numeric_version(version)[1, 1:2], sep = "-") + + # include SVN revision for development versions of R + # (to avoid sharing platform-specific artefacts with released versions of R) + devel <- + identical(R.version[["status"]], "Under development (unstable)") || + identical(R.version[["nickname"]], "Unsuffered Consequences") + + if (devel) + prefix <- paste(prefix, R.version[["svn rev"]], sep = "-r") + + # build list of path components + components <- c(prefix, R.version$platform) + + # include prefix if provided by user + prefix <- renv_bootstrap_platform_prefix_impl() + if (!is.na(prefix) && nzchar(prefix)) + components <- c(prefix, components) + + # build prefix + paste(components, collapse = "/") + + } + + renv_bootstrap_platform_prefix_impl <- function() { + + # if an explicit prefix has been supplied, use it + prefix <- Sys.getenv("RENV_PATHS_PREFIX", unset = NA) + if (!is.na(prefix)) + return(prefix) + + # if the user has requested an automatic prefix, generate it + auto <- Sys.getenv("RENV_PATHS_PREFIX_AUTO", unset = NA) + if (is.na(auto) && getRversion() >= "4.4.0") + auto <- "TRUE" + + if (auto %in% c("TRUE", "True", "true", "1")) + return(renv_bootstrap_platform_prefix_auto()) + + # empty string on failure + "" + + } + + renv_bootstrap_platform_prefix_auto <- function() { + + prefix <- tryCatch(renv_bootstrap_platform_os(), error = identity) + if (inherits(prefix, "error") || prefix %in% "unknown") { + + msg <- paste( + "failed to infer current operating system", + "please file a bug report at https://github.com/rstudio/renv/issues", + sep = "; " + ) + + warning(msg) + + } + + prefix + + } + + renv_bootstrap_platform_os <- function() { + + sysinfo <- Sys.info() + sysname <- sysinfo[["sysname"]] + + # handle Windows + macOS up front + if (sysname == "Windows") + return("windows") + else if (sysname == "Darwin") + return("macos") + + # check for os-release files + for (file in c("/etc/os-release", "/usr/lib/os-release")) + if (file.exists(file)) + return(renv_bootstrap_platform_os_via_os_release(file, sysinfo)) + + # check for redhat-release files + if (file.exists("/etc/redhat-release")) + return(renv_bootstrap_platform_os_via_redhat_release()) + + "unknown" + + } + + renv_bootstrap_platform_os_via_os_release <- function(file, sysinfo) { + + # read /etc/os-release + release <- utils::read.table( + file = file, + sep = "=", + quote = c("\"", "'"), + col.names = c("Key", "Value"), + comment.char = "#", + stringsAsFactors = FALSE + ) + + vars <- as.list(release$Value) + names(vars) <- release$Key + + # get os name + os <- tolower(sysinfo[["sysname"]]) + + # read id + id <- "unknown" + for (field in c("ID", "ID_LIKE")) { + if (field %in% names(vars) && nzchar(vars[[field]])) { + id <- vars[[field]] + break + } + } + + # read version + version <- "unknown" + for (field in c("UBUNTU_CODENAME", "VERSION_CODENAME", "VERSION_ID", "BUILD_ID")) { + if (field %in% names(vars) && nzchar(vars[[field]])) { + version <- vars[[field]] + break + } + } + + # join together + paste(c(os, id, version), collapse = "-") + + } + + renv_bootstrap_platform_os_via_redhat_release <- function() { + + # read /etc/redhat-release + contents <- readLines("/etc/redhat-release", warn = FALSE) + + # infer id + id <- if (grepl("centos", contents, ignore.case = TRUE)) + "centos" + else if (grepl("redhat", contents, ignore.case = TRUE)) + "redhat" + else + "unknown" + + # try to find a version component (very hacky) + version <- "unknown" + + parts <- strsplit(contents, "[[:space:]]")[[1L]] + for (part in parts) { + + nv <- tryCatch(numeric_version(part), error = identity) + if (inherits(nv, "error")) + next + + version <- nv[1, 1] + break + + } + + paste(c("linux", id, version), collapse = "-") + + } + + renv_bootstrap_library_root_name <- function(project) { + + # use project name as-is if requested + asis <- Sys.getenv("RENV_PATHS_LIBRARY_ROOT_ASIS", unset = "FALSE") + if (asis) + return(basename(project)) + + # otherwise, disambiguate based on project's path + id <- substring(renv_bootstrap_hash_text(project), 1L, 8L) + paste(basename(project), id, sep = "-") + + } + + renv_bootstrap_library_root <- function(project) { + + prefix <- renv_bootstrap_profile_prefix() + + path <- Sys.getenv("RENV_PATHS_LIBRARY", unset = NA) + if (!is.na(path)) + return(paste(c(path, prefix), collapse = "/")) + + path <- renv_bootstrap_library_root_impl(project) + if (!is.null(path)) { + name <- renv_bootstrap_library_root_name(project) + return(paste(c(path, prefix, name), collapse = "/")) + } + + renv_bootstrap_paths_renv("library", project = project) + + } + + renv_bootstrap_library_root_impl <- function(project) { + + root <- Sys.getenv("RENV_PATHS_LIBRARY_ROOT", unset = NA) + if (!is.na(root)) + return(root) + + type <- renv_bootstrap_project_type(project) + if (identical(type, "package")) { + userdir <- renv_bootstrap_user_dir() + return(file.path(userdir, "library")) + } + + } + + renv_bootstrap_validate_version <- function(version, description = NULL) { + + # resolve description file + # + # avoid passing lib.loc to `packageDescription()` below, since R will + # use the loaded version of the package by default anyhow. note that + # this function should only be called after 'renv' is loaded + # https://github.com/rstudio/renv/issues/1625 + description <- description %||% packageDescription("renv") + + # check whether requested version 'version' matches loaded version of renv + sha <- attr(version, "sha", exact = TRUE) + valid <- if (!is.null(sha)) + renv_bootstrap_validate_version_dev(sha, description) + else + renv_bootstrap_validate_version_release(version, description) + + if (valid) + return(TRUE) + + # the loaded version of renv doesn't match the requested version; + # give the user instructions on how to proceed + dev <- identical(description[["RemoteType"]], "github") + remote <- if (dev) + paste("rstudio/renv", description[["RemoteSha"]], sep = "@") + else + paste("renv", description[["Version"]], sep = "@") + + # display both loaded version + sha if available + friendly <- renv_bootstrap_version_friendly( + version = description[["Version"]], + sha = if (dev) description[["RemoteSha"]] + ) + + fmt <- heredoc(" + renv %1$s was loaded from project library, but this project is configured to use renv %2$s. + - Use `renv::record(\"%3$s\")` to record renv %1$s in the lockfile. + - Use `renv::restore(packages = \"renv\")` to install renv %2$s into the project library. + ") + catf(fmt, friendly, renv_bootstrap_version_friendly(version), remote) + + FALSE + + } + + renv_bootstrap_validate_version_dev <- function(version, description) { + expected <- description[["RemoteSha"]] + is.character(expected) && startswith(expected, version) + } + + renv_bootstrap_validate_version_release <- function(version, description) { + expected <- description[["Version"]] + is.character(expected) && identical(expected, version) + } + + renv_bootstrap_hash_text <- function(text) { + + hashfile <- tempfile("renv-hash-") + on.exit(unlink(hashfile), add = TRUE) + + writeLines(text, con = hashfile) + tools::md5sum(hashfile) + + } + + renv_bootstrap_load <- function(project, libpath, version) { + + # try to load renv from the project library + if (!requireNamespace("renv", lib.loc = libpath, quietly = TRUE)) + return(FALSE) + + # warn if the version of renv loaded does not match + renv_bootstrap_validate_version(version) + + # execute renv load hooks, if any + hooks <- getHook("renv::autoload") + for (hook in hooks) + if (is.function(hook)) + tryCatch(hook(), error = warnify) + + # load the project + renv::load(project) + + TRUE + + } + + renv_bootstrap_profile_load <- function(project) { + + # if RENV_PROFILE is already set, just use that + profile <- Sys.getenv("RENV_PROFILE", unset = NA) + if (!is.na(profile) && nzchar(profile)) + return(profile) + + # check for a profile file (nothing to do if it doesn't exist) + path <- renv_bootstrap_paths_renv("profile", profile = FALSE, project = project) + if (!file.exists(path)) + return(NULL) + + # read the profile, and set it if it exists + contents <- readLines(path, warn = FALSE) + if (length(contents) == 0L) + return(NULL) + + # set RENV_PROFILE + profile <- contents[[1L]] + if (!profile %in% c("", "default")) + Sys.setenv(RENV_PROFILE = profile) + + profile + + } + + renv_bootstrap_profile_prefix <- function() { + profile <- renv_bootstrap_profile_get() + if (!is.null(profile)) + return(file.path("profiles", profile, "renv")) + } + + renv_bootstrap_profile_get <- function() { + profile <- Sys.getenv("RENV_PROFILE", unset = "") + renv_bootstrap_profile_normalize(profile) + } + + renv_bootstrap_profile_set <- function(profile) { + profile <- renv_bootstrap_profile_normalize(profile) + if (is.null(profile)) + Sys.unsetenv("RENV_PROFILE") + else + Sys.setenv(RENV_PROFILE = profile) + } + + renv_bootstrap_profile_normalize <- function(profile) { + + if (is.null(profile) || profile %in% c("", "default")) + return(NULL) + + profile + + } + + renv_bootstrap_path_absolute <- function(path) { + + substr(path, 1L, 1L) %in% c("~", "/", "\\") || ( + substr(path, 1L, 1L) %in% c(letters, LETTERS) && + substr(path, 2L, 3L) %in% c(":/", ":\\") + ) + + } + + renv_bootstrap_paths_renv <- function(..., profile = TRUE, project = NULL) { + renv <- Sys.getenv("RENV_PATHS_RENV", unset = "renv") + root <- if (renv_bootstrap_path_absolute(renv)) NULL else project + prefix <- if (profile) renv_bootstrap_profile_prefix() + components <- c(root, renv, prefix, ...) + paste(components, collapse = "/") + } + + renv_bootstrap_project_type <- function(path) { + + descpath <- file.path(path, "DESCRIPTION") + if (!file.exists(descpath)) + return("unknown") + + desc <- tryCatch( + read.dcf(descpath, all = TRUE), + error = identity + ) + + if (inherits(desc, "error")) + return("unknown") + + type <- desc$Type + if (!is.null(type)) + return(tolower(type)) + + package <- desc$Package + if (!is.null(package)) + return("package") + + "unknown" + + } + + renv_bootstrap_user_dir <- function() { + dir <- renv_bootstrap_user_dir_impl() + path.expand(chartr("\\", "/", dir)) + } + + renv_bootstrap_user_dir_impl <- function() { + + # use local override if set + override <- getOption("renv.userdir.override") + if (!is.null(override)) + return(override) + + # use R_user_dir if available + tools <- asNamespace("tools") + if (is.function(tools$R_user_dir)) + return(tools$R_user_dir("renv", "cache")) + + # try using our own backfill for older versions of R + envvars <- c("R_USER_CACHE_DIR", "XDG_CACHE_HOME") + for (envvar in envvars) { + root <- Sys.getenv(envvar, unset = NA) + if (!is.na(root)) + return(file.path(root, "R/renv")) + } + + # use platform-specific default fallbacks + if (Sys.info()[["sysname"]] == "Windows") + file.path(Sys.getenv("LOCALAPPDATA"), "R/cache/R/renv") + else if (Sys.info()[["sysname"]] == "Darwin") + "~/Library/Caches/org.R-project.R/R/renv" + else + "~/.cache/R/renv" + + } + + renv_bootstrap_version_friendly <- function(version, shafmt = NULL, sha = NULL) { + sha <- sha %||% attr(version, "sha", exact = TRUE) + parts <- c(version, sprintf(shafmt %||% " [sha: %s]", substring(sha, 1L, 7L))) + paste(parts, collapse = "") + } + + renv_bootstrap_exec <- function(project, libpath, version) { + if (!renv_bootstrap_load(project, libpath, version)) + renv_bootstrap_run(version, libpath) + } + + renv_bootstrap_run <- function(version, libpath) { + + # perform bootstrap + bootstrap(version, libpath) + + # exit early if we're just testing bootstrap + if (!is.na(Sys.getenv("RENV_BOOTSTRAP_INSTALL_ONLY", unset = NA))) + return(TRUE) + + # try again to load + if (requireNamespace("renv", lib.loc = libpath, quietly = TRUE)) { + return(renv::load(project = getwd())) + } + + # failed to download or load renv; warn the user + msg <- c( + "Failed to find an renv installation: the project will not be loaded.", + "Use `renv::activate()` to re-initialize the project." + ) + + warning(paste(msg, collapse = "\n"), call. = FALSE) + + } + + renv_json_read <- function(file = NULL, text = NULL) { + + jlerr <- NULL + + # if jsonlite is loaded, use that instead + if ("jsonlite" %in% loadedNamespaces()) { + + json <- tryCatch(renv_json_read_jsonlite(file, text), error = identity) + if (!inherits(json, "error")) + return(json) + + jlerr <- json + + } + + # otherwise, fall back to the default JSON reader + json <- tryCatch(renv_json_read_default(file, text), error = identity) + if (!inherits(json, "error")) + return(json) + + # report an error + if (!is.null(jlerr)) + stop(jlerr) + else + stop(json) + + } + + renv_json_read_jsonlite <- function(file = NULL, text = NULL) { + text <- paste(text %||% readLines(file, warn = FALSE), collapse = "\n") + jsonlite::fromJSON(txt = text, simplifyVector = FALSE) + } + + renv_json_read_default <- function(file = NULL, text = NULL) { + + # find strings in the JSON + text <- paste(text %||% readLines(file, warn = FALSE), collapse = "\n") + pattern <- '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + locs <- gregexpr(pattern, text, perl = TRUE)[[1]] + + # if any are found, replace them with placeholders + replaced <- text + strings <- character() + replacements <- character() + + if (!identical(c(locs), -1L)) { + + # get the string values + starts <- locs + ends <- locs + attr(locs, "match.length") - 1L + strings <- substring(text, starts, ends) + + # only keep those requiring escaping + strings <- grep("[[\\]{}:]", strings, perl = TRUE, value = TRUE) + + # compute replacements + replacements <- sprintf('"\032%i\032"', seq_along(strings)) + + # replace the strings + mapply(function(string, replacement) { + replaced <<- sub(string, replacement, replaced, fixed = TRUE) + }, strings, replacements) + + } + + # transform the JSON into something the R parser understands + transformed <- replaced + transformed <- gsub("{}", "`names<-`(list(), character())", transformed, fixed = TRUE) + transformed <- gsub("[[{]", "list(", transformed, perl = TRUE) + transformed <- gsub("[]}]", ")", transformed, perl = TRUE) + transformed <- gsub(":", "=", transformed, fixed = TRUE) + text <- paste(transformed, collapse = "\n") + + # parse it + json <- parse(text = text, keep.source = FALSE, srcfile = NULL)[[1L]] + + # construct map between source strings, replaced strings + map <- as.character(parse(text = strings)) + names(map) <- as.character(parse(text = replacements)) + + # convert to list + map <- as.list(map) + + # remap strings in object + remapped <- renv_json_read_remap(json, map) + + # evaluate + eval(remapped, envir = baseenv()) + + } + + renv_json_read_remap <- function(json, map) { + + # fix names + if (!is.null(names(json))) { + lhs <- match(names(json), names(map), nomatch = 0L) + rhs <- match(names(map), names(json), nomatch = 0L) + names(json)[rhs] <- map[lhs] + } + + # fix values + if (is.character(json)) + return(map[[json]] %||% json) + + # handle true, false, null + if (is.name(json)) { + text <- as.character(json) + if (text == "true") + return(TRUE) + else if (text == "false") + return(FALSE) + else if (text == "null") + return(NULL) + } + + # recurse + if (is.recursive(json)) { + for (i in seq_along(json)) { + json[i] <- list(renv_json_read_remap(json[[i]], map)) + } + } + + json + + } + + # load the renv profile, if any + renv_bootstrap_profile_load(project) + + # construct path to library root + root <- renv_bootstrap_library_root(project) + + # construct library prefix for platform + prefix <- renv_bootstrap_platform_prefix() + + # construct full libpath + libpath <- file.path(root, prefix) + + # run bootstrap code + renv_bootstrap_exec(project, libpath, version) + + invisible() + +}) diff --git a/blog/2026/mli-select-edmonton/renv/settings.json b/blog/2026/mli-select-edmonton/renv/settings.json new file mode 100644 index 0000000..ffdbb32 --- /dev/null +++ b/blog/2026/mli-select-edmonton/renv/settings.json @@ -0,0 +1,19 @@ +{ + "bioconductor.version": null, + "external.libraries": [], + "ignored.packages": [], + "package.dependency.fields": [ + "Imports", + "Depends", + "LinkingTo" + ], + "ppm.enabled": null, + "ppm.ignored.urls": [], + "r.version": null, + "snapshot.type": "implicit", + "use.cache": true, + "vcs.ignore.cellar": true, + "vcs.ignore.library": true, + "vcs.ignore.local": true, + "vcs.manage.ignores": true +} diff --git a/blog/_metadata.yml b/blog/_metadata.yml index f95b359..96a435d 100644 --- a/blog/_metadata.yml +++ b/blog/_metadata.yml @@ -1,7 +1,3 @@ -# Freeze computed outputs -freeze: auto - - # Enable banner style title blocks title-block-banner: true @@ -18,7 +14,6 @@ execute: message: false warning: false cache: true - freeze: true author: - name: Jacob Dawang From d7973bbde1c7a290fb45e92e14bab93ac9d9724c Mon Sep 17 00:00:00 2001 From: jdawang Date: Tue, 21 Apr 2026 00:21:33 +0000 Subject: [PATCH 3/5] save work --- .../mli-select-edmonton/index/execute-results/html.json | 4 ++-- blog/2026/mli-select-edmonton/index.qmd | 9 +++------ blog/2026/mli-select-edmonton/renv.lock | 4 ++-- 3 files changed, 7 insertions(+), 10 deletions(-) diff --git a/_freeze/blog/2026/mli-select-edmonton/index/execute-results/html.json b/_freeze/blog/2026/mli-select-edmonton/index/execute-results/html.json index 4321bed..c838032 100644 --- a/_freeze/blog/2026/mli-select-edmonton/index/execute-results/html.json +++ b/_freeze/blog/2026/mli-select-edmonton/index/execute-results/html.json @@ -1,8 +1,8 @@ { - "hash": "d6ac467dde476244a43cbb82fb913858", + "hash": "d4316f1c2d5eaa75d0b6e67e6845ce84", "result": { "engine": "knitr", - "markdown": "---\ntitle: \"Edmonton's zoning reform created hundreds of affordable homes\"\ndate: \"2026-04-06\"\nauthor: \"Jacob Dawang\"\ncategories: [housing, edmonton, affordability]\ndescription: \"Edmonton's 2024 Zoning Bylaw Renewal unlocked federal affordable housing financing. An analysis of CMHC MLI Select data shows Edmonton's rezoning has already generated hundreds of mandated-affordable units.\"\nlink-external-newwindow: true\nlink-external-icon: false\nbibliography: references.bib\ndraft: false\nexecute: \n cache: false\n---\n\nIn [a recent Substack post](https://marklocki.substack.com/p/the-affordable-housing-cost-of-repealing), Mark Locki showed that Calgary's August 2024 blanket rezoning was enabling small infill projects to access CMHC's MLI Select program, a federal mortgage insurance program that, in exchange for favourable financing, requires a portion of units to be rented at affordable rates. His analysis found that 39% of all 4–8 unit building permits in Calgary's established communities were backed by MLI Select financing.\n\nEdmonton's Zoning Bylaw Renewal (ZBR), which came into force in January 2024, works through the same mechanism. And thanks to data I obtained through an Access to Information and Privacy (ATIP) request, we can now quantify its impact.\n\ntl;dr: Edmonton's ZBR has already generated an estimated 480 mandated-affordable units through MLI Select financing, units that would not exist without rezoning.\n\n## What is MLI Select?\n\nCMHC's MLI Select program provides favourable mortgage insurance to rental housing developers in exchange for commitments to affordability, energy efficiency, and accessibility. Crucially for small infill projects, it allows developers to borrow up to 95% of project costs, dramatically reducing the equity required upfront.\n\nThe affordability requirements are tiered:\n\n| MLI Select level | Units required at ≤30% of median renter income | Max loan-to-cost | Max amortization | Insurance discount |\n|---------------|---------------|---------------|---------------|---------------|\n| Level 1 (50 pts) | 10% | 85% | 40 years | 10% |\n| Level 2 (70 pts) | 15% | 95% | 45 years | 20% |\n| Level 3 (100 pts) | 25% | 95% | 50 years | 30% + limited recourse |\n\nThe financing incentives are significant: a developer at Level 3 can borrow 95% of costs over 50 years, compared to 85% over 40 years at Level 1. This is why the vast majority of projects in the Edmonton data choose Level 3, committing to 25% affordable units in exchange for the program's best terms.\n\nThe affordability threshold — 30% of median renter household income — was approximately \\$1,500 per month for Edmonton's CMA in 2021, based on a median renter household income of around \\$60,000 [@statcan2021census_profile].[^1]\n\n[^1]: The exact current threshold would be set using CMHC's Area Median Household Income figures.\n\nI believe, but could be wrong that MLI Select approval generally come *before* building permits. Developers secure financing commitments first, then pull permits. This means the MLI data we have today is a leading indicator of what's being built.\n\n## Edmonton's housing need\n\n\n\n\n\n\n\nEdmonton had 46,155 households in core housing need as of the 2021 Census, a figure that has only grown as rents have risen since then [@statcan2021core_housing].[^2] The city has been building more housing than almost anywhere else in Canada, but affordability remains a serious challenge: more homes help, but below-market rental units matter too.\n\n[^2]: Core housing need reflects households spending 30%+ of income on shelter or living in inadequate/unsuitable housing and unable to afford alternative shelter.\n\nMLI Select is one of the few tools that generates both at once. By tying favourable mortgage insurance to affordability commitments, it turns market-rate development into a vehicle for mandated-affordable housing and Edmonton's rezoning has made it accessible to a new class of projects.\n\n## MLI Select in Edmonton: the overall picture\n\nBetween 2022 and 2025, CMHC approved 977 MLI Select loans in the Edmonton CMA, covering 33,388 units. The majority were for new construction.\n\n\n::: {.cell}\n::: {.cell-output-display}\n![MLI Select approvals in Edmonton CMA, 2022–2025](index_files/figure-html/fig-mli-all-1.png){#fig-mli-all width=672}\n:::\n:::\n\n\nAs shown in @fig-mli-all, new construction approvals peaked at 233 loans in 2024, before easing in 2025. This does not mean activity is declining. MLI approval precedes building permits, so 2025 permits largely reflect 2024 MLI approvals.\n\n## The ZBR connection: small infill projects\n\nThe real story is in small projects, the 5 to 8 unit rowhomes that ZBR specifically enabled in Edmonton's mature neighbourhoods.\n\n\n::: {.cell}\n::: {.cell-output-display}\n![Small (5–8 unit) New Construction MLI Select approvals in Edmonton CMA, 2022–2025](index_files/figure-html/fig-mli-small-1.png){#fig-mli-small width=672}\n:::\n:::\n\n\n@fig-mli-small shows the numbers are striking:\n\n- **Pre-ZBR (2022–2023):** 110 small new construction MLI Select loans in total\n- **Post-ZBR (2024–2025):** 283 loans, 2.6 times more in just two years\n\nIn 2024 alone, developers secured 179 small infill MLI loans. This was the year ZBR came into force, opening up RS-zoned lots in mature neighbourhoods to 5–8 unit development. Developers, now confident their projects were permitted as-of-right, lined up federal financing.\n\nThose 2024 MLI approvals fed directly into Edmonton's 2025 building permit year — [the first year more homes were permitted in 5–8 unit rowhomes than single family homes](../zbr-two-year-review/index.qmd) in the city's history.\n\n## How many of Edmonton's new rowhomes use MLI Select?\n\n\n\nWe can cross-reference the MLI Select approvals with Edmonton building permit data to estimate the share of small rowhome projects using MLI financing.\n\nBecause MLI approval comes before building permits, we compare 2024 MLI approvals (179 loans) against 2025 building permits for the same project type. In 2025, Edmonton issued building permits for approximately 529 new 5–8 unit projects. This implies roughly 34% of new small rowhome projects were backed by MLI Select financing — comparable to Mark Locki's finding of 39% for Calgary, as shown in @fig-mli-ratio.\n\n\n::: {.cell}\n::: {.cell-output-display}\n![Estimated share of 5–8 unit new construction permits backed by MLI Select, Edmonton (lag-adjusted)](index_files/figure-html/fig-mli-ratio-1.png){#fig-mli-ratio width=672}\n:::\n:::\n\n\nThis is necessarily an approximation: the MLI data covers the Edmonton CMA (including surrounding municipalities) while building permits cover Edmonton city only, and the lag between MLI approval and permit issuance varies by project.\n\n## Estimating affordable units created\n\nThe most important implication of MLI Select's dominance among small infill projects is the mandated affordable units it generates. Using the program's affordability requirements:\n\n\n::: {.cell}\n\n:::\n\n\n\n::: {.cell}\n::: {.cell-output-display}\n![Estimated mandated-affordable units from small infill MLI Select projects, Edmonton CMA](index_files/figure-html/fig-affordable-units-1.png){#fig-affordable-units width=672}\n:::\n:::\n\n\n\n::: {#tbl-affordable .cell tbl-cap='Estimated affordable units from small infill MLI Select'}\n::: {.cell-output-display}\n\n```{=html}\n
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n \n\n\n\n\n \n\n\n\n\n \n\n\n\n\n \n\n\n\n\n \n \n \n \n \n \n
Estimated affordable units from small infill MLI Select, by year
YearMLI Select loansTotal unitsEst. affordable unitsAffordable share
2022171222924%
20239364015725%
20241791,23030124%
202510472317925%
Total3932,715666
Jacob Dawang, CMHC, City of Edmonton Open Data
\n
\n```\n\n:::\n:::\n\n\n\n\nAcross all four years, small infill MLI Select projects generated an estimated 666 mandated-affordable units in the Edmonton CMA, with approximately 480 coming in the ZBR era (2024–2025), a period that also saw 2.6 times as many projects as the two years prior (see @fig-affordable-units and @tbl-affordable).\n\nThese are units where rents are contractually capped at roughly \\$1,500 per month or below.\n\n## Conclusion\n\nSmall infill is only one part of Edmonton's MLI Select story, but it is uniquely enabled by zoning. Large apartment towers were already permissible before ZBR. The 5–8 unit rowhomes could not exist in mature neighbourhoods until January 2024. Every one of the 283 small new construction MLI Select loans approved since ZBR represents a project that would have been illegal two years earlier.\n\nEdmonton's Zoning Bylaw Renewal is delivering on housing affordability in a way that rarely gets discussed. By legalizing small infill development in mature neighbourhoods, the ZBR didn't just add housing supply, it unlocked CMHC's MLI Select program for a class of projects that previously couldn't exist. Those projects come with mandated affordable rents attached.\n\nThe pipeline continues to grow. The 104 small infill MLI approvals from 2025 represent projects currently under construction or about to break ground — adding to the stock of affordable units in Edmonton's established neighbourhoods.\n\nThis is what good housing policy looks like: a municipal zoning reform enabling federal affordable housing finance, delivering affordable homes in mature neighbourhoods with established street grids, amenities, and transit connections where demand is high. The question now is whether we can keep the momentum going.", + "markdown": "---\ntitle: \"Edmonton's zoning reform created hundreds of affordable homes\"\ndate: \"2026-04-20\"\nauthor: \"Jacob Dawang\"\ncategories: [housing, edmonton, cmhc]\ndescription: \"Edmonton's 2024 Zoning Bylaw Renewal unlocked federal affordable housing financing. An analysis of CMHC MLI Select data shows Edmonton's rezoning has already generated hundreds of mandated-affordable units.\"\nlink-external-newwindow: true\nlink-external-icon: false\nbibliography: references.bib\ndraft: false\nexecute: \n cache: false\n---\n\nIn [a recent Substack post](https://marklocki.substack.com/p/the-affordable-housing-cost-of-repealing), Mark Locki showed that Calgary's August 2024 blanket rezoning was enabling small infill projects to access CMHC's MLI Select program, a federal mortgage insurance program that, in exchange for favourable financing, requires a portion of units to be rented at affordable rates. His analysis found that 39% of all 4–8 unit building permits in Calgary's established communities were backed by MLI Select financing.\n\nEdmonton's Zoning Bylaw Renewal (ZBR), which came into force in January 2024, works through the same mechanism. And thanks to data I obtained through an Access to Information and Privacy (ATIP) request, we can now quantify its impact.\n\ntl;dr: Edmonton's ZBR has already generated an estimated 480 mandated-affordable units through MLI Select financing, units that would not exist without rezoning.\n\n## What is MLI Select?\n\nCMHC's MLI Select program provides favourable mortgage insurance to rental housing developers in exchange for commitments to affordability, energy efficiency, and accessibility. Crucially for small infill projects, it allows developers to borrow up to 95% of project costs, dramatically reducing the equity required upfront.\n\nThe affordability requirements are tiered:\n\n| MLI Select level | Units required at ≤30% of median renter income | Max loan-to-cost | Max amortization | Insurance discount |\n|---------------|---------------|---------------|---------------|---------------|\n| Level 1 (50 pts) | 10% | 85% | 40 years | 10% |\n| Level 2 (70 pts) | 15% | 95% | 45 years | 20% |\n| Level 3 (100 pts) | 25% | 95% | 50 years | 30% + limited recourse |\n\nThe financing incentives are significant: a developer at Level 3 can borrow 95% of costs over 50 years, compared to 85% over 40 years at Level 1. This is why the vast majority of projects in the Edmonton data choose Level 3, committing to 25% affordable units in exchange for the program's best terms.\n\nThe affordability threshold — 30% of median renter household income — was approximately \\$1,500 per month for Edmonton's CMA in 2021, based on a median renter household income of around \\$60,000 [@statcan2021census_profile].[^1]\n\n[^1]: The exact current threshold would be set using CMHC's Area Median Household Income figures.\n\nI believe, but could be wrong that MLI Select approval generally come *before* building permits. Developers secure financing commitments first, then pull permits. This means the MLI data we have today is a leading indicator of what's being built.\n\n## Edmonton's housing need\n\n\n\n\n\n\n\nEdmonton had 46,155 households in core housing need as of the 2021 Census, a figure that has only grown as rents have risen since then [@statcan2021core_housing].[^2] The city has been building more housing than almost anywhere else in Canada, but affordability remains a serious challenge: more homes help, but below-market rental units matter too.\n\n[^2]: Core housing need reflects households spending 30%+ of income on shelter or living in inadequate/unsuitable housing and unable to afford alternative shelter.\n\nMLI Select is one of the few tools that generates both at once. By tying favourable mortgage insurance to affordability commitments, it turns market-rate development into a vehicle for mandated-affordable housing and Edmonton's rezoning has made it accessible to a new class of projects.\n\n## MLI Select in Edmonton: the overall picture\n\nBetween 2022 and 2025, CMHC approved 977 MLI Select loans in the Edmonton CMA, covering 33,388 units. The majority were for new construction.\n\n\n::: {.cell}\n::: {.cell-output-display}\n![MLI Select approvals in Edmonton CMA, 2022–2025](index_files/figure-html/fig-mli-all-1.png){#fig-mli-all width=672}\n:::\n:::\n\n\nAs shown in @fig-mli-all, new construction approvals peaked at 233 loans in 2024, before easing in 2025. This does not mean activity is declining. MLI approval precedes building permits, so 2025 permits largely reflect 2024 MLI approvals.\n\n## The ZBR connection: small infill projects\n\nThe real story is in small projects, the 5 to 8 unit rowhomes that ZBR specifically enabled in Edmonton's mature neighbourhoods.\n\n\n::: {.cell}\n::: {.cell-output-display}\n![Small (5–8 unit) New Construction MLI Select approvals in Edmonton CMA, 2022–2025](index_files/figure-html/fig-mli-small-1.png){#fig-mli-small width=672}\n:::\n:::\n\n\n@fig-mli-small shows the numbers are striking:\n\n- **Pre-ZBR (2022–2023):** 110 small new construction MLI Select loans in total\n- **Post-ZBR (2024–2025):** 283 loans, 2.6 times more in just two years\n\nIn 2024 alone, developers secured 179 small infill MLI loans. This was the year ZBR came into force, opening up RS-zoned lots in mature neighbourhoods to 5–8 unit development. Developers, now confident their projects were permitted as-of-right, lined up federal financing.\n\nThose 2024 MLI approvals fed directly into Edmonton's 2025 building permit year — [the first year more homes were permitted in 5–8 unit rowhomes than single family homes](../zbr-two-year-review/index.qmd) in the city's history.\n\n## How many of Edmonton's new rowhomes use MLI Select?\n\n\n\nWe can cross-reference the MLI Select approvals with Edmonton building permit data to estimate the share of small rowhome projects using MLI financing.\n\nBecause MLI approval comes before building permits, we compare 2024 MLI approvals (179 loans) against 2025 building permits for the same project type. In 2025, Edmonton issued building permits for approximately 529 new 5–8 unit projects. This implies roughly 34% of new small rowhome projects were backed by MLI Select financing — comparable to Mark Locki's finding of 39% for Calgary, as shown in @fig-mli-ratio.\n\n\n::: {.cell}\n::: {.cell-output-display}\n![Estimated share of 5–8 unit new construction permits backed by MLI Select, Edmonton (lag-adjusted)](index_files/figure-html/fig-mli-ratio-1.png){#fig-mli-ratio width=672}\n:::\n:::\n\n\nThis is necessarily an approximation: the MLI data covers the Edmonton CMA (including surrounding municipalities) while building permits cover Edmonton city only, and the lag between MLI approval and permit issuance varies by project.\n\n## Estimating affordable units created\n\nThe most important implication of MLI Select's dominance among small infill projects is the mandated affordable units it generates. Using the program's affordability requirements:\n\n\n::: {.cell}\n\n:::\n\n\n\n::: {.cell}\n::: {.cell-output-display}\n![Estimated mandated-affordable units from small infill MLI Select projects, Edmonton CMA](index_files/figure-html/fig-affordable-units-1.png){#fig-affordable-units width=672}\n:::\n:::\n\n\n\n::: {#tbl-affordable .cell tbl-cap='Estimated affordable units from small infill MLI Select'}\n::: {.cell-output-display}\n\n```{=html}\n
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n \n\n\n\n\n \n\n\n\n\n \n\n\n\n\n \n\n\n\n\n \n \n \n \n \n \n
Estimated affordable units from small infill MLI Select, by year
YearMLI Select loansTotal unitsEst. affordable unitsAffordable share
2022171222924%
20239364015725%
20241791,23030124%
202510472317925%
Total3932,715666
Jacob Dawang, CMHC, City of Edmonton Open Data
\n
\n```\n\n:::\n:::\n\n\n\n\nAcross all four years, small infill MLI Select projects generated an estimated 666 mandated-affordable units in the Edmonton CMA, with approximately 480 coming in the ZBR era (2024–2025), a period that also saw 2.6 times as many projects as the two years prior (see @fig-affordable-units and @tbl-affordable).\n\nThese are units where rents are contractually capped at roughly \\$1,500 per month or below.\n\n## Conclusion\n\nSmall infill is only one part of Edmonton's MLI Select story, but it is uniquely enabled by zoning. Large apartment towers were already permissible before ZBR. The 5–8 unit rowhomes could not exist in mature neighbourhoods until January 2024. Every one of the 283 small new construction MLI Select loans approved since ZBR represents a project that would have been illegal two years earlier.\n\nEdmonton's Zoning Bylaw Renewal is delivering on housing affordability in a way that rarely gets discussed. By legalizing small infill development in mature neighbourhoods, the ZBR didn't just add housing supply, it unlocked CMHC's MLI Select program for a class of projects that previously couldn't exist. Those projects come with mandated affordable rents attached.\n\nThe pipeline continues to grow. The 104 small infill MLI approvals from 2025 represent projects currently under construction or about to break ground — adding to the stock of affordable units in Edmonton's established neighbourhoods.\n\nThis is what good housing policy looks like: a municipal zoning reform enabling federal affordable housing finance, delivering affordable homes in mature neighbourhoods with established street grids, amenities, and transit connections where demand is high. The question now is whether we can keep the momentum going.", "supporting": [], "filters": [ "rmarkdown/pagebreak.lua" diff --git a/blog/2026/mli-select-edmonton/index.qmd b/blog/2026/mli-select-edmonton/index.qmd index af8c31f..f05a098 100644 --- a/blog/2026/mli-select-edmonton/index.qmd +++ b/blog/2026/mli-select-edmonton/index.qmd @@ -1,8 +1,8 @@ --- title: "Edmonton's zoning reform created hundreds of affordable homes" -date: "2026-04-06" +date: "2026-04-20" author: "Jacob Dawang" -categories: [housing, edmonton, affordability] +categories: [housing, edmonton, cmhc, zoning] description: "Edmonton's 2024 Zoning Bylaw Renewal unlocked federal affordable housing financing. An analysis of CMHC MLI Select data shows Edmonton's rezoning has already generated hundreds of mandated-affordable units." link-external-newwindow: true link-external-icon: false @@ -377,13 +377,10 @@ mli_small_affordable |> fns = list(Total ~ sum(.)), fmt = ~ fmt_integer(.) ) |> - tab_style( - style = cell_fill(color = "#FFF3E0"), - locations = cells_body(rows = year >= 2024) - ) |> tab_header( "Estimated affordable units from small infill MLI Select, by year" ) |> + opt_stylize_jd(mode = "light") |> finalize_gt(source = "Jacob Dawang, CMHC, City of Edmonton Open Data") ``` diff --git a/blog/2026/mli-select-edmonton/renv.lock b/blog/2026/mli-select-edmonton/renv.lock index 2c25a4b..f8f6236 100644 --- a/blog/2026/mli-select-edmonton/renv.lock +++ b/blog/2026/mli-select-edmonton/renv.lock @@ -1056,7 +1056,7 @@ "RemoteUsername": "jdawang", "RemoteRepo": "jdawangHelpers", "RemoteRef": "main", - "RemoteSha": "b3d1f626bdba01cd2be91293d4ecb619537fb84c", + "RemoteSha": "82f1c8d23af93058a270381625b601475e5116f9", "Requirements": [ "R", "dplyr", @@ -1072,7 +1072,7 @@ "units", "viridis" ], - "Hash": "b1f77dc2912f72c4c9c6d43597612e05" + "Hash": "a04dd9565b629da60d0c0fed9c97e5d8" }, "jpeg": { "Package": "jpeg", From e571250d188d425d4c8000659090c36e7218a5fa Mon Sep 17 00:00:00 2001 From: jdawang Date: Fri, 24 Apr 2026 02:13:48 +0000 Subject: [PATCH 4/5] final edits --- .../index/execute-results/html.json | 4 +- blog/2026/mli-select-edmonton/index.qmd | 152 ++++++------------ 2 files changed, 51 insertions(+), 105 deletions(-) diff --git a/_freeze/blog/2026/mli-select-edmonton/index/execute-results/html.json b/_freeze/blog/2026/mli-select-edmonton/index/execute-results/html.json index c838032..adea6ae 100644 --- a/_freeze/blog/2026/mli-select-edmonton/index/execute-results/html.json +++ b/_freeze/blog/2026/mli-select-edmonton/index/execute-results/html.json @@ -1,8 +1,8 @@ { - "hash": "d4316f1c2d5eaa75d0b6e67e6845ce84", + "hash": "d3dba1e772ec477bdc818a94fbd02a02", "result": { "engine": "knitr", - "markdown": "---\ntitle: \"Edmonton's zoning reform created hundreds of affordable homes\"\ndate: \"2026-04-20\"\nauthor: \"Jacob Dawang\"\ncategories: [housing, edmonton, cmhc]\ndescription: \"Edmonton's 2024 Zoning Bylaw Renewal unlocked federal affordable housing financing. An analysis of CMHC MLI Select data shows Edmonton's rezoning has already generated hundreds of mandated-affordable units.\"\nlink-external-newwindow: true\nlink-external-icon: false\nbibliography: references.bib\ndraft: false\nexecute: \n cache: false\n---\n\nIn [a recent Substack post](https://marklocki.substack.com/p/the-affordable-housing-cost-of-repealing), Mark Locki showed that Calgary's August 2024 blanket rezoning was enabling small infill projects to access CMHC's MLI Select program, a federal mortgage insurance program that, in exchange for favourable financing, requires a portion of units to be rented at affordable rates. His analysis found that 39% of all 4–8 unit building permits in Calgary's established communities were backed by MLI Select financing.\n\nEdmonton's Zoning Bylaw Renewal (ZBR), which came into force in January 2024, works through the same mechanism. And thanks to data I obtained through an Access to Information and Privacy (ATIP) request, we can now quantify its impact.\n\ntl;dr: Edmonton's ZBR has already generated an estimated 480 mandated-affordable units through MLI Select financing, units that would not exist without rezoning.\n\n## What is MLI Select?\n\nCMHC's MLI Select program provides favourable mortgage insurance to rental housing developers in exchange for commitments to affordability, energy efficiency, and accessibility. Crucially for small infill projects, it allows developers to borrow up to 95% of project costs, dramatically reducing the equity required upfront.\n\nThe affordability requirements are tiered:\n\n| MLI Select level | Units required at ≤30% of median renter income | Max loan-to-cost | Max amortization | Insurance discount |\n|---------------|---------------|---------------|---------------|---------------|\n| Level 1 (50 pts) | 10% | 85% | 40 years | 10% |\n| Level 2 (70 pts) | 15% | 95% | 45 years | 20% |\n| Level 3 (100 pts) | 25% | 95% | 50 years | 30% + limited recourse |\n\nThe financing incentives are significant: a developer at Level 3 can borrow 95% of costs over 50 years, compared to 85% over 40 years at Level 1. This is why the vast majority of projects in the Edmonton data choose Level 3, committing to 25% affordable units in exchange for the program's best terms.\n\nThe affordability threshold — 30% of median renter household income — was approximately \\$1,500 per month for Edmonton's CMA in 2021, based on a median renter household income of around \\$60,000 [@statcan2021census_profile].[^1]\n\n[^1]: The exact current threshold would be set using CMHC's Area Median Household Income figures.\n\nI believe, but could be wrong that MLI Select approval generally come *before* building permits. Developers secure financing commitments first, then pull permits. This means the MLI data we have today is a leading indicator of what's being built.\n\n## Edmonton's housing need\n\n\n\n\n\n\n\nEdmonton had 46,155 households in core housing need as of the 2021 Census, a figure that has only grown as rents have risen since then [@statcan2021core_housing].[^2] The city has been building more housing than almost anywhere else in Canada, but affordability remains a serious challenge: more homes help, but below-market rental units matter too.\n\n[^2]: Core housing need reflects households spending 30%+ of income on shelter or living in inadequate/unsuitable housing and unable to afford alternative shelter.\n\nMLI Select is one of the few tools that generates both at once. By tying favourable mortgage insurance to affordability commitments, it turns market-rate development into a vehicle for mandated-affordable housing and Edmonton's rezoning has made it accessible to a new class of projects.\n\n## MLI Select in Edmonton: the overall picture\n\nBetween 2022 and 2025, CMHC approved 977 MLI Select loans in the Edmonton CMA, covering 33,388 units. The majority were for new construction.\n\n\n::: {.cell}\n::: {.cell-output-display}\n![MLI Select approvals in Edmonton CMA, 2022–2025](index_files/figure-html/fig-mli-all-1.png){#fig-mli-all width=672}\n:::\n:::\n\n\nAs shown in @fig-mli-all, new construction approvals peaked at 233 loans in 2024, before easing in 2025. This does not mean activity is declining. MLI approval precedes building permits, so 2025 permits largely reflect 2024 MLI approvals.\n\n## The ZBR connection: small infill projects\n\nThe real story is in small projects, the 5 to 8 unit rowhomes that ZBR specifically enabled in Edmonton's mature neighbourhoods.\n\n\n::: {.cell}\n::: {.cell-output-display}\n![Small (5–8 unit) New Construction MLI Select approvals in Edmonton CMA, 2022–2025](index_files/figure-html/fig-mli-small-1.png){#fig-mli-small width=672}\n:::\n:::\n\n\n@fig-mli-small shows the numbers are striking:\n\n- **Pre-ZBR (2022–2023):** 110 small new construction MLI Select loans in total\n- **Post-ZBR (2024–2025):** 283 loans, 2.6 times more in just two years\n\nIn 2024 alone, developers secured 179 small infill MLI loans. This was the year ZBR came into force, opening up RS-zoned lots in mature neighbourhoods to 5–8 unit development. Developers, now confident their projects were permitted as-of-right, lined up federal financing.\n\nThose 2024 MLI approvals fed directly into Edmonton's 2025 building permit year — [the first year more homes were permitted in 5–8 unit rowhomes than single family homes](../zbr-two-year-review/index.qmd) in the city's history.\n\n## How many of Edmonton's new rowhomes use MLI Select?\n\n\n\nWe can cross-reference the MLI Select approvals with Edmonton building permit data to estimate the share of small rowhome projects using MLI financing.\n\nBecause MLI approval comes before building permits, we compare 2024 MLI approvals (179 loans) against 2025 building permits for the same project type. In 2025, Edmonton issued building permits for approximately 529 new 5–8 unit projects. This implies roughly 34% of new small rowhome projects were backed by MLI Select financing — comparable to Mark Locki's finding of 39% for Calgary, as shown in @fig-mli-ratio.\n\n\n::: {.cell}\n::: {.cell-output-display}\n![Estimated share of 5–8 unit new construction permits backed by MLI Select, Edmonton (lag-adjusted)](index_files/figure-html/fig-mli-ratio-1.png){#fig-mli-ratio width=672}\n:::\n:::\n\n\nThis is necessarily an approximation: the MLI data covers the Edmonton CMA (including surrounding municipalities) while building permits cover Edmonton city only, and the lag between MLI approval and permit issuance varies by project.\n\n## Estimating affordable units created\n\nThe most important implication of MLI Select's dominance among small infill projects is the mandated affordable units it generates. Using the program's affordability requirements:\n\n\n::: {.cell}\n\n:::\n\n\n\n::: {.cell}\n::: {.cell-output-display}\n![Estimated mandated-affordable units from small infill MLI Select projects, Edmonton CMA](index_files/figure-html/fig-affordable-units-1.png){#fig-affordable-units width=672}\n:::\n:::\n\n\n\n::: {#tbl-affordable .cell tbl-cap='Estimated affordable units from small infill MLI Select'}\n::: {.cell-output-display}\n\n```{=html}\n
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n \n\n\n\n\n \n\n\n\n\n \n\n\n\n\n \n\n\n\n\n \n \n \n \n \n \n
Estimated affordable units from small infill MLI Select, by year
YearMLI Select loansTotal unitsEst. affordable unitsAffordable share
2022171222924%
20239364015725%
20241791,23030124%
202510472317925%
Total3932,715666
Jacob Dawang, CMHC, City of Edmonton Open Data
\n
\n```\n\n:::\n:::\n\n\n\n\nAcross all four years, small infill MLI Select projects generated an estimated 666 mandated-affordable units in the Edmonton CMA, with approximately 480 coming in the ZBR era (2024–2025), a period that also saw 2.6 times as many projects as the two years prior (see @fig-affordable-units and @tbl-affordable).\n\nThese are units where rents are contractually capped at roughly \\$1,500 per month or below.\n\n## Conclusion\n\nSmall infill is only one part of Edmonton's MLI Select story, but it is uniquely enabled by zoning. Large apartment towers were already permissible before ZBR. The 5–8 unit rowhomes could not exist in mature neighbourhoods until January 2024. Every one of the 283 small new construction MLI Select loans approved since ZBR represents a project that would have been illegal two years earlier.\n\nEdmonton's Zoning Bylaw Renewal is delivering on housing affordability in a way that rarely gets discussed. By legalizing small infill development in mature neighbourhoods, the ZBR didn't just add housing supply, it unlocked CMHC's MLI Select program for a class of projects that previously couldn't exist. Those projects come with mandated affordable rents attached.\n\nThe pipeline continues to grow. The 104 small infill MLI approvals from 2025 represent projects currently under construction or about to break ground — adding to the stock of affordable units in Edmonton's established neighbourhoods.\n\nThis is what good housing policy looks like: a municipal zoning reform enabling federal affordable housing finance, delivering affordable homes in mature neighbourhoods with established street grids, amenities, and transit connections where demand is high. The question now is whether we can keep the momentum going.", + "markdown": "---\ntitle: \"MLI Select and ZBR sitting in a tree, b-u-i-l-d-i-n-g\"\ndate: \"2026-04-23\"\nauthor: \"Jacob Dawang\"\ncategories: [housing, edmonton, cmhc, zoning]\ndescription: \"Edmonton's 2024 Zoning Bylaw Renewal unlocked federal affordable housing financing. An analysis of CMHC MLI Select data shows Edmonton's rezoning has already generated hundreds of mandated-affordable units.\"\nlink-external-newwindow: true\nlink-external-icon: false\nbibliography: references.bib\ndraft: false\nexecute: \n cache: false\n---\n\nIn [a recent Substack post](https://marklocki.substack.com/p/the-affordable-housing-cost-of-repealing), Mark Locki showed that Calgary's August 2024 blanket rezoning was enabling small infill projects to access CMHC's MLI Select program, a federal mortgage insurance program that, in exchange for favourable financing, requires a portion of units to be rented at affordable rates. His analysis found that 39% of all 4-8 unit building permits in Calgary's established communities were backed by MLI Select financing.\n\nEdmonton's Zoning Bylaw Renewal (ZBR), which came into force in January 2024, works through the same mechanism. And thanks to data I obtained through an Access to Information and Privacy (ATIP) request, we can now take a good guess at quantifying the interaction between ZBR and MLI Select.\n\ntl;dr: Edmonton's ZBR has already generated an estimated 480 mandated-affordable units through MLI Select financing, units that would not exist without rezoning.\n\n::: {.callout-note}\n\nI am going off my own understanding of MLI Select, but I am not super familiar with the program. Please let me know if I got anything wrong that needs correcting.\n:::\n\n## What is MLI Select?\n\nCMHC's MLI Select program provides favourable mortgage insurance to rental housing developers in exchange for commitments to affordability, energy efficiency, and accessibility. Crucially for small infill projects, it allows developers to borrow up to 95% of project costs, dramatically reducing the equity required upfront.\n\nThe financing incentives are significant: a developer at Level 3 can borrow 95% of costs over 50 years, compared to 85% over 40 years at Level 1. This is why the vast majority of projects in the Edmonton data choose Level 3, committing to 25% affordable units in exchange for the program's best terms.\n\nThe affordability threshold is 30% of median renter household income was approximately \\$1,500 per month for Edmonton's CMA in 2021, based on a median renter household income of around \\$60,000 [@statcan2021census_profile].[^1]\n\n[^1]: The exact current threshold would be set using CMHC's Area Median Household Income figures.\n\nI've been told by someone in the know that MLI Select's approval generally comes just before or just after you get a permit.\n\n## Edmonton's housing need\n\n\n\n\n\n\n\nEdmonton had 46,155 households in core housing need as of the 2021 Census, a figure that has only grown as rents have risen since then [@statcan2021core_housing].[^2] The city has been building more housing than almost anywhere else in Canada, but affordability remains a serious challenge: more homes help, but below-market rental units matter too.\n\n[^2]: Core housing need reflects households spending 30%+ of income on shelter or living in inadequate/unsuitable housing and unable to afford alternative shelter.\n\nMLI Select is one of the few tools that generates both at once. By tying favourable mortgage insurance to affordability commitments, it turns market-rate development into a vehicle for mandated-affordable housing and Edmonton's rezoning has made it accessible to a new class of projects.\n\n## MLI Select in Edmonton: the overall picture\n\nBetween 2022 and 2025, CMHC approved 977 MLI Select loans in the Edmonton CMA, covering 33,388 units. The majority were for new construction.\n\n\n::: {.cell}\n::: {.cell-output-display}\n![MLI Select approvals in Edmonton CMA, 2022–2025](index_files/figure-html/fig-mli-all-1.png){#fig-mli-all width=672}\n:::\n:::\n\n\nAs shown in @fig-mli-all, new construction approvals peaked at 233 loans in 2024, before easing in 2025. This does not mean activity is declining. MLI approval precedes building permits, so 2025 permits largely reflect 2024 MLI approvals.\n\n## The ZBR connection: small infill projects\n\nThe real story is in small projects, the 5 to 8 unit rowhomes that ZBR specifically enabled in Edmonton's mature neighbourhoods.\n\n\n::: {.cell}\n::: {.cell-output-display}\n![Small (5–8 unit) New Construction MLI Select approvals in Edmonton CMA, 2022–2025](index_files/figure-html/fig-mli-small-1.png){#fig-mli-small width=672}\n:::\n:::\n\n\n@fig-mli-small shows the numbers are striking:\n\n- **Pre-ZBR (2022–2023):** 110 small new construction MLI Select loans in total\n- **Post-ZBR (2024–2025):** 283 loans, 2.6 times more in just two years\n\nIn 2024 alone, developers secured 179 small infill MLI loans. This was the year ZBR came into force, opening up RS-zoned lots in mature neighbourhoods to 5-8 unit development. Developers, now confident their projects were permitted as-of-right, lined up federal financing.\n\nThose 2024 MLI approvals fed directly into Edmonton's 2025 building permit year, [the first year more homes were permitted in 5–8 unit rowhomes than single family homes](../zbr-two-year-review/index.qmd) in the city's history.\n\n## How many of Edmonton's new rowhomes use MLI Select?\n\n\n\nWe can cross-reference the MLI Select approvals with Edmonton building permit data to estimate the share of small rowhome projects using MLI financing.\n\nAcross 2024 and 2025, Edmonton issued building permits for approximately 789 new 5–8 unit projects. Over the same period, roughly 36% of new small rowhome projects were backed by MLI Select financing, comparable to Mark Locki's finding of 39% for Calgary.\n\nThis is necessarily an approximation: the MLI data covers the Edmonton CMA (including surrounding municipalities) while building permits cover Edmonton city only, and the lag between MLI approval and permit issuance varies by project.\n\n## Estimating affordable units created\n\n\n::: {.cell}\n\n:::\n\n\nThe most important implication of MLI Select's prevalence among small infill projects is the mandated affordable units it generates. Across all four years, small infill MLI Select projects generated an estimated 666 mandated-affordable units in the Edmonton CMA, with approximately 480 coming in the ZBR era (2024–2025), a period that also saw 2.6 times as many projects as the two years prior (see @fig-affordable-units and @tbl-affordable).\n\nThese are units where rents are contractually capped at roughly \\$1,500 per month or below.\n\n\n::: {.cell}\n::: {.cell-output-display}\n![Estimated mandated-affordable units from small infill MLI Select projects, Edmonton CMA](index_files/figure-html/fig-affordable-units-1.png){#fig-affordable-units width=672}\n:::\n:::\n\n\n\n::: {#tbl-affordable .cell tbl-cap='Estimated affordable units from small infill MLI Select'}\n::: {.cell-output-display}\n\n```{=html}\n
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n \n\n\n\n\n \n\n\n\n\n \n\n\n\n\n \n\n\n\n\n \n \n \n \n \n \n
Estimated affordable units from small infill MLI Select, by year
YearMLI Select loansTotal unitsEst. affordable unitsAffordable share
2022171222924%
20239364015725%
20241791,23030124%
202510472317925%
Total3932,71566625%
Jacob Dawang, CMHC, City of Edmonton Open Data
\n
\n```\n\n:::\n:::\n\n\n## Conclusion\n\nSmall infill is only one part of Edmonton's MLI Select story, but it is uniquely enabled by zoning. Large apartment towers were already generally permitted in the areas that they are today before ZBR. The 5-8 unit rowhomes could not exist in mature neighbourhoods until January 2024. A lot of the 283 small new construction MLI Select loans approved since ZBR represents a project that would have been illegal two years earlier.\n\nEdmonton's Zoning Bylaw Renewal is delivering on housing affordability in multiple ways. By legalizing small infill development in mature neighbourhoods, the ZBR didn't just add housing supply, it unlocked CMHC's MLI Select program for a class of projects that previously couldn't exist. Those projects come with mandated affordable rents attached.\n\nThis is what good housing policy looks like: a municipal zoning reform enabling federal affordable housing finance, delivering affordable homes in mature neighbourhoods with established street grids, amenities, and transit connections where demand is high.", "supporting": [], "filters": [ "rmarkdown/pagebreak.lua" diff --git a/blog/2026/mli-select-edmonton/index.qmd b/blog/2026/mli-select-edmonton/index.qmd index f05a098..f8450e1 100644 --- a/blog/2026/mli-select-edmonton/index.qmd +++ b/blog/2026/mli-select-edmonton/index.qmd @@ -1,6 +1,6 @@ --- -title: "Edmonton's zoning reform created hundreds of affordable homes" -date: "2026-04-20" +title: "MLI Select and ZBR sitting in a tree, b-u-i-l-d-i-n-g" +date: "2026-04-23" author: "Jacob Dawang" categories: [housing, edmonton, cmhc, zoning] description: "Edmonton's 2024 Zoning Bylaw Renewal unlocked federal affordable housing financing. An analysis of CMHC MLI Select data shows Edmonton's rezoning has already generated hundreds of mandated-affordable units." @@ -12,38 +12,34 @@ execute: cache: false --- -In [a recent Substack post](https://marklocki.substack.com/p/the-affordable-housing-cost-of-repealing), Mark Locki showed that Calgary's August 2024 blanket rezoning was enabling small infill projects to access CMHC's MLI Select program, a federal mortgage insurance program that, in exchange for favourable financing, requires a portion of units to be rented at affordable rates. His analysis found that 39% of all 4–8 unit building permits in Calgary's established communities were backed by MLI Select financing. +In [a recent Substack post](https://marklocki.substack.com/p/the-affordable-housing-cost-of-repealing), Mark Locki showed that Calgary's August 2024 blanket rezoning was enabling small infill projects to access CMHC's MLI Select program, a federal mortgage insurance program that, in exchange for favourable financing, requires a portion of units to be rented at affordable rates. His analysis found that 39% of all 4-8 unit building permits in Calgary's established communities were backed by MLI Select financing. -Edmonton's Zoning Bylaw Renewal (ZBR), which came into force in January 2024, works through the same mechanism. And thanks to data I obtained through an Access to Information and Privacy (ATIP) request, we can now quantify its impact. +Edmonton's Zoning Bylaw Renewal (ZBR), which came into force in January 2024, works through the same mechanism. And thanks to data I obtained through an Access to Information and Privacy (ATIP) request, we can now take a good guess at quantifying the interaction between ZBR and MLI Select. tl;dr: Edmonton's ZBR has already generated an estimated 480 mandated-affordable units through MLI Select financing, units that would not exist without rezoning. -## What is MLI Select? +::: {.callout-note} -CMHC's MLI Select program provides favourable mortgage insurance to rental housing developers in exchange for commitments to affordability, energy efficiency, and accessibility. Crucially for small infill projects, it allows developers to borrow up to 95% of project costs, dramatically reducing the equity required upfront. +I am going off my own understanding of MLI Select, but I am not super familiar with the program. Please let me know if I got anything wrong that needs correcting. +::: -The affordability requirements are tiered: +## What is MLI Select? -| MLI Select level | Units required at ≤30% of median renter income | Max loan-to-cost | Max amortization | Insurance discount | -|---------------|---------------|---------------|---------------|---------------| -| Level 1 (50 pts) | 10% | 85% | 40 years | 10% | -| Level 2 (70 pts) | 15% | 95% | 45 years | 20% | -| Level 3 (100 pts) | 25% | 95% | 50 years | 30% + limited recourse | +CMHC's MLI Select program provides favourable mortgage insurance to rental housing developers in exchange for commitments to affordability, energy efficiency, and accessibility. Crucially for small infill projects, it allows developers to borrow up to 95% of project costs, dramatically reducing the equity required upfront. The financing incentives are significant: a developer at Level 3 can borrow 95% of costs over 50 years, compared to 85% over 40 years at Level 1. This is why the vast majority of projects in the Edmonton data choose Level 3, committing to 25% affordable units in exchange for the program's best terms. -The affordability threshold — 30% of median renter household income — was approximately \$1,500 per month for Edmonton's CMA in 2021, based on a median renter household income of around \$60,000 [@statcan2021census_profile].[^1] +The affordability threshold is 30% of median renter household income was approximately \$1,500 per month for Edmonton's CMA in 2021, based on a median renter household income of around \$60,000 [@statcan2021census_profile].[^1] [^1]: The exact current threshold would be set using CMHC's Area Median Household Income figures. -I believe, but could be wrong that MLI Select approval generally come *before* building permits. Developers secure financing commitments first, then pull permits. This means the MLI data we have today is a leading indicator of what's being built. +I've been told by someone in the know that MLI Select's approval generally comes just before or just after you get a permit. ## Edmonton's housing need ```{r} #| label: setup #| include: false - library(tidyverse) library(readxl) library(sf) @@ -56,7 +52,6 @@ library(scales) ```{r} #| label: load-mli #| include: false - mli_raw <- read_excel( "../../../data/AF-2025-00069 Release Package.xlsx", sheet = 1 @@ -78,7 +73,6 @@ mli_raw <- read_excel( ```{r} #| label: load-bp #| include: false - bp <- read_sf( "../../../data/General Building Permits_20260113/geo_export_204e1c7a-3fac-403d-abe1-be2272f9ce62.shp" ) |> @@ -101,7 +95,6 @@ Between 2022 and 2025, CMHC approved 977 MLI Select loans in the Edmonton CMA, c ```{r} #| label: fig-mli-all #| fig-cap: "MLI Select approvals in Edmonton CMA, 2022–2025" - mli_summary <- mli_raw |> group_by(year, loan_purpose) |> summarize(n_loans = n(), total_units = sum(total_units), .groups = "drop") @@ -131,7 +124,6 @@ The real story is in small projects, the 5 to 8 unit rowhomes that ZBR specifica ```{r} #| label: fig-mli-small #| fig-cap: "Small (5–8 unit) New Construction MLI Select approvals in Edmonton CMA, 2022–2025" - mli_small <- mli_raw |> filter( loan_purpose == "New Construction", @@ -184,94 +176,55 @@ ggplot(mli_small, aes(x = year, y = n_loans, fill = affordability_level)) + - **Pre-ZBR (2022–2023):** 110 small new construction MLI Select loans in total - **Post-ZBR (2024–2025):** 283 loans, 2.6 times more in just two years -In 2024 alone, developers secured `r n_mli_2024` small infill MLI loans. This was the year ZBR came into force, opening up RS-zoned lots in mature neighbourhoods to 5–8 unit development. Developers, now confident their projects were permitted as-of-right, lined up federal financing. +In 2024 alone, developers secured `r n_mli_2024` small infill MLI loans. This was the year ZBR came into force, opening up RS-zoned lots in mature neighbourhoods to 5-8 unit development. Developers, now confident their projects were permitted as-of-right, lined up federal financing. -Those 2024 MLI approvals fed directly into Edmonton's 2025 building permit year — [the first year more homes were permitted in 5–8 unit rowhomes than single family homes](../zbr-two-year-review/index.qmd) in the city's history. +Those 2024 MLI approvals fed directly into Edmonton's 2025 building permit year, [the first year more homes were permitted in 5–8 unit rowhomes than single family homes](../zbr-two-year-review/index.qmd) in the city's history. ## How many of Edmonton's new rowhomes use MLI Select? ```{r} #| label: bp-ratio #| include: false - bp_small_by_year <- bp |> st_drop_geometry() |> filter(project_type == "Fiveplex to Eightplex") |> group_by(year) |> summarize(n_permits = n(), total_units = sum(units_added)) |> - filter(year %in% 2022:2025) + filter(year %in% c(2024, 2025)) mli_small_by_year <- mli_raw |> filter( loan_purpose == "New Construction", - between(total_units, 5, 8) + between(total_units, 5, 8), + year %in% c(2024, 2025) ) |> group_by(year) |> summarize(n_mli = n(), mli_units = sum(total_units)) -ratio_tbl <- bp_small_by_year |> +agg <- bp_small_by_year |> left_join(mli_small_by_year, by = "year") |> - mutate( - # Lag-adjusted: compare MLI approvals from prior year to current permits - # since MLI approval precedes permits - mli_lagged = lag(n_mli), - ratio_lagged = mli_lagged / n_permits + summarize( + total_mli = sum(n_mli, na.rm = TRUE), + total_permits = sum(n_permits) ) -n_permits_2025 <- bp_small_by_year$n_permits[bp_small_by_year$year == 2025] -mli_ratio_pct <- scales::percent(n_mli_2024 / n_permits_2025, accuracy = 1) +n_permits_agg <- agg$total_permits +mli_ratio_pct <- scales::percent( + agg$total_mli / agg$total_permits, + accuracy = 1 +) ``` We can cross-reference the MLI Select approvals with Edmonton building permit data to estimate the share of small rowhome projects using MLI financing. -Because MLI approval comes before building permits, we compare 2024 MLI approvals (`r n_mli_2024` loans) against 2025 building permits for the same project type. In 2025, Edmonton issued building permits for approximately `r n_permits_2025` new 5–8 unit projects. This implies roughly `r mli_ratio_pct` of new small rowhome projects were backed by MLI Select financing — comparable to Mark Locki's finding of 39% for Calgary, as shown in @fig-mli-ratio. - -```{r} -#| label: fig-mli-ratio -#| fig-cap: "Estimated share of 5–8 unit new construction permits backed by MLI Select, Edmonton (lag-adjusted)" - -ratio_tbl |> - filter(!is.na(ratio_lagged)) |> - ggplot(aes(x = year, y = ratio_lagged)) + - geom_line(colour = viridis::magma(1, begin = 0.7)) + - geom_point(colour = viridis::magma(1, begin = 0.7), size = 3) + - geom_vline( - xintercept = 2023.5, - linetype = "dashed", - colour = "grey40", - linewidth = 0.6 - ) + - annotate( - "text", - x = 2023.55, - y = Inf, - label = "ZBR in force", - hjust = 0, - vjust = 1.5, - size = 3, - colour = "grey40" - ) + - scale_x_continuous(breaks = 2022:2025) + - scale_y_continuous(labels = percent, limits = c(0, NA)) + - labs( - title = "MLI Select share of small rowhome permits", - subtitle = "Prior-year MLI approvals as a share of 5–8 unit building permits", - x = NULL, - y = "MLI Select share", - caption = CAPTION_COE - ) + - theme_jd(mode = "light") -``` +Across 2024 and 2025, Edmonton issued building permits for approximately `r n_permits_agg` new 5–8 unit projects. Over the same period, roughly `r mli_ratio_pct` of new small rowhome projects were backed by MLI Select financing, comparable to Mark Locki's finding of 39% for Calgary. This is necessarily an approximation: the MLI data covers the Edmonton CMA (including surrounding municipalities) while building permits cover Edmonton city only, and the lag between MLI approval and permit issuance varies by project. ## Estimating affordable units created -The most important implication of MLI Select's dominance among small infill projects is the mandated affordable units it generates. Using the program's affordability requirements: - ```{r} #| label: affordable-units-calc - affordability_rates <- tibble( affordability_level = c("Level 1", "Level 2", "Level 3"), affordable_fraction = c(0.10, 0.15, 0.25) @@ -302,10 +255,13 @@ zbr_affordable <- mli_small_affordable |> sum() ``` +The most important implication of MLI Select's prevalence among small infill projects is the mandated affordable units it generates. Across all four years, small infill MLI Select projects generated an estimated `r round(total_affordable)` mandated-affordable units in the Edmonton CMA, with approximately `r round(zbr_affordable)` coming in the ZBR era (2024–2025), a period that also saw 2.6 times as many projects as the two years prior (see @fig-affordable-units and @tbl-affordable). + +These are units where rents are contractually capped at roughly \$1,500 per month or below. + ```{r} #| label: fig-affordable-units #| fig-cap: "Estimated mandated-affordable units from small infill MLI Select projects, Edmonton CMA" - mli_small_affordable |> select(year, total_units, affordable_units) |> pivot_longer( @@ -355,12 +311,26 @@ mli_small_affordable |> ```{r} #| label: tbl-affordable #| tbl-cap: "Estimated affordable units from small infill MLI Select" +# Calculate totals for summary row +affordable_total <- sum(mli_small_affordable$affordable_units) +total_units_total <- sum(mli_small_affordable$total_units) +n_loans_total <- sum(mli_small_affordable$n_loans) mli_small_affordable |> select(year, n_loans, total_units, affordable_units) |> mutate( affordable_units = round(affordable_units), - affordable_pct = affordable_units / total_units + affordable_pct = affordable_units / total_units, + year = as.character(year) + ) |> + bind_rows( + tibble( + year = "Total", + n_loans = n_loans_total, + total_units = total_units_total, + affordable_units = round(affordable_total), + affordable_pct = affordable_total / total_units_total + ) ) |> gt(rowname_col = "year") |> tab_stubhead("Year") |> @@ -371,12 +341,7 @@ mli_small_affordable |> affordable_pct = "Affordable share" ) |> fmt_percent(affordable_pct, decimals = 0) |> - fmt_integer(c(total_units, affordable_units)) |> - grand_summary_rows( - columns = c(n_loans, total_units, affordable_units), - fns = list(Total ~ sum(.)), - fmt = ~ fmt_integer(.) - ) |> + fmt_integer(c(n_loans, total_units, affordable_units)) |> tab_header( "Estimated affordable units from small infill MLI Select, by year" ) |> @@ -384,29 +349,10 @@ mli_small_affordable |> finalize_gt(source = "Jacob Dawang, CMHC, City of Edmonton Open Data") ``` -```{r} -#| label: totals -#| include: false - -total_affordable_all <- mli_raw |> - left_join(affordability_rates, by = "affordability_level") |> - mutate(a = total_units * affordable_fraction) |> - filter(loan_purpose == "New Construction") |> - summarize(total = sum(a)) |> - _$total |> - round() -``` - -Across all four years, small infill MLI Select projects generated an estimated `r round(total_affordable)` mandated-affordable units in the Edmonton CMA, with approximately `r round(zbr_affordable)` coming in the ZBR era (2024–2025), a period that also saw 2.6 times as many projects as the two years prior (see @fig-affordable-units and @tbl-affordable). - -These are units where rents are contractually capped at roughly \$1,500 per month or below. - ## Conclusion -Small infill is only one part of Edmonton's MLI Select story, but it is uniquely enabled by zoning. Large apartment towers were already permissible before ZBR. The 5–8 unit rowhomes could not exist in mature neighbourhoods until January 2024. Every one of the 283 small new construction MLI Select loans approved since ZBR represents a project that would have been illegal two years earlier. - -Edmonton's Zoning Bylaw Renewal is delivering on housing affordability in a way that rarely gets discussed. By legalizing small infill development in mature neighbourhoods, the ZBR didn't just add housing supply, it unlocked CMHC's MLI Select program for a class of projects that previously couldn't exist. Those projects come with mandated affordable rents attached. +Small infill is only one part of Edmonton's MLI Select story, but it is uniquely enabled by zoning. Large apartment towers were already generally permitted in the areas that they are today before ZBR. The 5-8 unit rowhomes could not exist in mature neighbourhoods until January 2024. A lot of the 283 small new construction MLI Select loans approved since ZBR represents a project that would have been illegal two years earlier. -The pipeline continues to grow. The 104 small infill MLI approvals from 2025 represent projects currently under construction or about to break ground — adding to the stock of affordable units in Edmonton's established neighbourhoods. +Edmonton's Zoning Bylaw Renewal is delivering on housing affordability in multiple ways. By legalizing small infill development in mature neighbourhoods, the ZBR didn't just add housing supply, it unlocked CMHC's MLI Select program for a class of projects that previously couldn't exist. Those projects come with mandated affordable rents attached. -This is what good housing policy looks like: a municipal zoning reform enabling federal affordable housing finance, delivering affordable homes in mature neighbourhoods with established street grids, amenities, and transit connections where demand is high. The question now is whether we can keep the momentum going. \ No newline at end of file +This is what good housing policy looks like: a municipal zoning reform enabling federal affordable housing finance, delivering affordable homes in mature neighbourhoods with established street grids, amenities, and transit connections where demand is high. \ No newline at end of file From 34bdbe552cca0a31bf4f47f4ceedd0d0d8df0a0b Mon Sep 17 00:00:00 2001 From: jdawang Date: Fri, 24 Apr 2026 02:25:01 +0000 Subject: [PATCH 5/5] update --- .../index/execute-results/html.json | 8 +++++--- .../index/figure-html/fig-mli-ratio-1.png | Bin 68496 -> 0 bytes blog/2026/mli-select-edmonton/index.qmd | 2 +- 3 files changed, 6 insertions(+), 4 deletions(-) delete mode 100644 _freeze/blog/2026/mli-select-edmonton/index/figure-html/fig-mli-ratio-1.png diff --git a/_freeze/blog/2026/mli-select-edmonton/index/execute-results/html.json b/_freeze/blog/2026/mli-select-edmonton/index/execute-results/html.json index adea6ae..b75dea4 100644 --- a/_freeze/blog/2026/mli-select-edmonton/index/execute-results/html.json +++ b/_freeze/blog/2026/mli-select-edmonton/index/execute-results/html.json @@ -1,9 +1,11 @@ { - "hash": "d3dba1e772ec477bdc818a94fbd02a02", + "hash": "8326c93fa3cc18320247cadbb0b7f69c", "result": { "engine": "knitr", - "markdown": "---\ntitle: \"MLI Select and ZBR sitting in a tree, b-u-i-l-d-i-n-g\"\ndate: \"2026-04-23\"\nauthor: \"Jacob Dawang\"\ncategories: [housing, edmonton, cmhc, zoning]\ndescription: \"Edmonton's 2024 Zoning Bylaw Renewal unlocked federal affordable housing financing. An analysis of CMHC MLI Select data shows Edmonton's rezoning has already generated hundreds of mandated-affordable units.\"\nlink-external-newwindow: true\nlink-external-icon: false\nbibliography: references.bib\ndraft: false\nexecute: \n cache: false\n---\n\nIn [a recent Substack post](https://marklocki.substack.com/p/the-affordable-housing-cost-of-repealing), Mark Locki showed that Calgary's August 2024 blanket rezoning was enabling small infill projects to access CMHC's MLI Select program, a federal mortgage insurance program that, in exchange for favourable financing, requires a portion of units to be rented at affordable rates. His analysis found that 39% of all 4-8 unit building permits in Calgary's established communities were backed by MLI Select financing.\n\nEdmonton's Zoning Bylaw Renewal (ZBR), which came into force in January 2024, works through the same mechanism. And thanks to data I obtained through an Access to Information and Privacy (ATIP) request, we can now take a good guess at quantifying the interaction between ZBR and MLI Select.\n\ntl;dr: Edmonton's ZBR has already generated an estimated 480 mandated-affordable units through MLI Select financing, units that would not exist without rezoning.\n\n::: {.callout-note}\n\nI am going off my own understanding of MLI Select, but I am not super familiar with the program. Please let me know if I got anything wrong that needs correcting.\n:::\n\n## What is MLI Select?\n\nCMHC's MLI Select program provides favourable mortgage insurance to rental housing developers in exchange for commitments to affordability, energy efficiency, and accessibility. Crucially for small infill projects, it allows developers to borrow up to 95% of project costs, dramatically reducing the equity required upfront.\n\nThe financing incentives are significant: a developer at Level 3 can borrow 95% of costs over 50 years, compared to 85% over 40 years at Level 1. This is why the vast majority of projects in the Edmonton data choose Level 3, committing to 25% affordable units in exchange for the program's best terms.\n\nThe affordability threshold is 30% of median renter household income was approximately \\$1,500 per month for Edmonton's CMA in 2021, based on a median renter household income of around \\$60,000 [@statcan2021census_profile].[^1]\n\n[^1]: The exact current threshold would be set using CMHC's Area Median Household Income figures.\n\nI've been told by someone in the know that MLI Select's approval generally comes just before or just after you get a permit.\n\n## Edmonton's housing need\n\n\n\n\n\n\n\nEdmonton had 46,155 households in core housing need as of the 2021 Census, a figure that has only grown as rents have risen since then [@statcan2021core_housing].[^2] The city has been building more housing than almost anywhere else in Canada, but affordability remains a serious challenge: more homes help, but below-market rental units matter too.\n\n[^2]: Core housing need reflects households spending 30%+ of income on shelter or living in inadequate/unsuitable housing and unable to afford alternative shelter.\n\nMLI Select is one of the few tools that generates both at once. By tying favourable mortgage insurance to affordability commitments, it turns market-rate development into a vehicle for mandated-affordable housing and Edmonton's rezoning has made it accessible to a new class of projects.\n\n## MLI Select in Edmonton: the overall picture\n\nBetween 2022 and 2025, CMHC approved 977 MLI Select loans in the Edmonton CMA, covering 33,388 units. The majority were for new construction.\n\n\n::: {.cell}\n::: {.cell-output-display}\n![MLI Select approvals in Edmonton CMA, 2022–2025](index_files/figure-html/fig-mli-all-1.png){#fig-mli-all width=672}\n:::\n:::\n\n\nAs shown in @fig-mli-all, new construction approvals peaked at 233 loans in 2024, before easing in 2025. This does not mean activity is declining. MLI approval precedes building permits, so 2025 permits largely reflect 2024 MLI approvals.\n\n## The ZBR connection: small infill projects\n\nThe real story is in small projects, the 5 to 8 unit rowhomes that ZBR specifically enabled in Edmonton's mature neighbourhoods.\n\n\n::: {.cell}\n::: {.cell-output-display}\n![Small (5–8 unit) New Construction MLI Select approvals in Edmonton CMA, 2022–2025](index_files/figure-html/fig-mli-small-1.png){#fig-mli-small width=672}\n:::\n:::\n\n\n@fig-mli-small shows the numbers are striking:\n\n- **Pre-ZBR (2022–2023):** 110 small new construction MLI Select loans in total\n- **Post-ZBR (2024–2025):** 283 loans, 2.6 times more in just two years\n\nIn 2024 alone, developers secured 179 small infill MLI loans. This was the year ZBR came into force, opening up RS-zoned lots in mature neighbourhoods to 5-8 unit development. Developers, now confident their projects were permitted as-of-right, lined up federal financing.\n\nThose 2024 MLI approvals fed directly into Edmonton's 2025 building permit year, [the first year more homes were permitted in 5–8 unit rowhomes than single family homes](../zbr-two-year-review/index.qmd) in the city's history.\n\n## How many of Edmonton's new rowhomes use MLI Select?\n\n\n\nWe can cross-reference the MLI Select approvals with Edmonton building permit data to estimate the share of small rowhome projects using MLI financing.\n\nAcross 2024 and 2025, Edmonton issued building permits for approximately 789 new 5–8 unit projects. Over the same period, roughly 36% of new small rowhome projects were backed by MLI Select financing, comparable to Mark Locki's finding of 39% for Calgary.\n\nThis is necessarily an approximation: the MLI data covers the Edmonton CMA (including surrounding municipalities) while building permits cover Edmonton city only, and the lag between MLI approval and permit issuance varies by project.\n\n## Estimating affordable units created\n\n\n::: {.cell}\n\n:::\n\n\nThe most important implication of MLI Select's prevalence among small infill projects is the mandated affordable units it generates. Across all four years, small infill MLI Select projects generated an estimated 666 mandated-affordable units in the Edmonton CMA, with approximately 480 coming in the ZBR era (2024–2025), a period that also saw 2.6 times as many projects as the two years prior (see @fig-affordable-units and @tbl-affordable).\n\nThese are units where rents are contractually capped at roughly \\$1,500 per month or below.\n\n\n::: {.cell}\n::: {.cell-output-display}\n![Estimated mandated-affordable units from small infill MLI Select projects, Edmonton CMA](index_files/figure-html/fig-affordable-units-1.png){#fig-affordable-units width=672}\n:::\n:::\n\n\n\n::: {#tbl-affordable .cell tbl-cap='Estimated affordable units from small infill MLI Select'}\n::: {.cell-output-display}\n\n```{=html}\n
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n \n\n\n\n\n \n\n\n\n\n \n\n\n\n\n \n\n\n\n\n \n \n \n \n \n \n
Estimated affordable units from small infill MLI Select, by year
YearMLI Select loansTotal unitsEst. affordable unitsAffordable share
2022171222924%
20239364015725%
20241791,23030124%
202510472317925%
Total3932,71566625%
Jacob Dawang, CMHC, City of Edmonton Open Data
\n
\n```\n\n:::\n:::\n\n\n## Conclusion\n\nSmall infill is only one part of Edmonton's MLI Select story, but it is uniquely enabled by zoning. Large apartment towers were already generally permitted in the areas that they are today before ZBR. The 5-8 unit rowhomes could not exist in mature neighbourhoods until January 2024. A lot of the 283 small new construction MLI Select loans approved since ZBR represents a project that would have been illegal two years earlier.\n\nEdmonton's Zoning Bylaw Renewal is delivering on housing affordability in multiple ways. By legalizing small infill development in mature neighbourhoods, the ZBR didn't just add housing supply, it unlocked CMHC's MLI Select program for a class of projects that previously couldn't exist. Those projects come with mandated affordable rents attached.\n\nThis is what good housing policy looks like: a municipal zoning reform enabling federal affordable housing finance, delivering affordable homes in mature neighbourhoods with established street grids, amenities, and transit connections where demand is high.", - "supporting": [], + "markdown": "---\ntitle: \"MLI Select and ZBR sitting in a tree, b-u-i-l-d-i-n-g\"\ndate: \"2026-04-24\"\nauthor: \"Jacob Dawang\"\ncategories: [housing, edmonton, cmhc, zoning]\ndescription: \"Edmonton's 2024 Zoning Bylaw Renewal unlocked federal affordable housing financing. An analysis of CMHC MLI Select data shows Edmonton's rezoning has already generated hundreds of mandated-affordable units.\"\nlink-external-newwindow: true\nlink-external-icon: false\nbibliography: references.bib\ndraft: false\nexecute: \n cache: false\n---\n\nIn [a recent Substack post](https://marklocki.substack.com/p/the-affordable-housing-cost-of-repealing), Mark Locki showed that Calgary's August 2024 blanket rezoning was enabling small infill projects to access CMHC's MLI Select program, a federal mortgage insurance program that, in exchange for favourable financing, requires a portion of units to be rented at affordable rates. His analysis found that 39% of all 4-8 unit building permits in Calgary's established communities were backed by MLI Select financing.\n\nEdmonton's Zoning Bylaw Renewal (ZBR), which came into force in January 2024, works through the same mechanism. And thanks to data I obtained through an Access to Information and Privacy (ATIP) request, we can now take a good guess at quantifying the interaction between ZBR and MLI Select.\n\ntl;dr: Edmonton's ZBR has already generated an estimated 480 mandated-affordable units through MLI Select financing, units that would not exist without rezoning.\n\n::: {.callout-note}\n\nI am going off my own understanding of MLI Select, but I am not super familiar with the program. Please let me know if I got anything wrong that needs correcting.\n:::\n\n## What is MLI Select?\n\nCMHC's MLI Select program provides favourable mortgage insurance to rental housing developers in exchange for commitments to affordability, energy efficiency, and accessibility. Crucially for small infill projects, it allows developers to borrow up to 95% of project costs, dramatically reducing the equity required upfront.\n\nThe financing incentives are significant: a developer at Level 3 can borrow 95% of costs over 50 years, compared to 85% over 40 years at Level 1. This is why the vast majority of projects in the Edmonton data choose Level 3, committing to 25% affordable units in exchange for the program's best terms.\n\nThe affordability threshold is 30% of median renter household income was approximately \\$1,500 per month for Edmonton's CMA in 2021, based on a median renter household income of around \\$60,000 [@statcan2021census_profile].[^1]\n\n[^1]: The exact current threshold would be set using CMHC's Area Median Household Income figures.\n\nI've been told by someone in the know that MLI Select's approval generally comes just before or just after you get a permit.\n\n## Edmonton's housing need\n\n\n\n\n\n\n\nEdmonton had 46,155 households in core housing need as of the 2021 Census, a figure that has only grown as rents have risen since then [@statcan2021core_housing].[^2] The city has been building more housing than almost anywhere else in Canada, but affordability remains a serious challenge: more homes help, but below-market rental units matter too.\n\n[^2]: Core housing need reflects households spending 30%+ of income on shelter or living in inadequate/unsuitable housing and unable to afford alternative shelter.\n\nMLI Select is one of the few tools that generates both at once. By tying favourable mortgage insurance to affordability commitments, it turns market-rate development into a vehicle for mandated-affordable housing and Edmonton's rezoning has made it accessible to a new class of projects.\n\n## MLI Select in Edmonton: the overall picture\n\nBetween 2022 and 2025, CMHC approved 977 MLI Select loans in the Edmonton CMA, covering 33,388 units. The majority were for new construction.\n\n\n::: {.cell}\n::: {.cell-output-display}\n![MLI Select approvals in Edmonton CMA, 2022–2025](index_files/figure-html/fig-mli-all-1.png){#fig-mli-all width=672}\n:::\n:::\n\n\nAs shown in @fig-mli-all, new construction approvals peaked at 233 loans in 2024, before easing in 2025. This does not mean activity is declining. MLI approval precedes building permits, so 2025 permits largely reflect 2024 MLI approvals.\n\n## The ZBR connection: small infill projects\n\nThe real story is in small projects, the 5 to 8 unit rowhomes that ZBR specifically enabled in Edmonton's mature neighbourhoods.\n\n\n::: {.cell}\n::: {.cell-output-display}\n![Small (5–8 unit) New Construction MLI Select approvals in Edmonton CMA, 2022–2025](index_files/figure-html/fig-mli-small-1.png){#fig-mli-small width=672}\n:::\n:::\n\n\n@fig-mli-small shows the numbers are striking:\n\n- **Pre-ZBR (2022–2023):** 110 small new construction MLI Select loans in total\n- **Post-ZBR (2024–2025):** 283 loans, 2.6 times more in just two years\n\nIn 2024 alone, developers secured 179 small infill MLI loans. This was the year ZBR came into force, opening up RS-zoned lots in mature neighbourhoods to 5-8 unit development. Developers, now confident their projects were permitted as-of-right, lined up federal financing.\n\nThose 2024 MLI approvals fed directly into Edmonton's 2025 building permit year, [the first year more homes were permitted in 5–8 unit rowhomes than single family homes](../zbr-two-year-review/index.qmd) in the city's history.\n\n## How many of Edmonton's new rowhomes use MLI Select?\n\n\n\nWe can cross-reference the MLI Select approvals with Edmonton building permit data to estimate the share of small rowhome projects using MLI financing.\n\nAcross 2024 and 2025, Edmonton issued building permits for approximately 789 new 5–8 unit projects. Over the same period, roughly 36% of new small rowhome projects were backed by MLI Select financing, comparable to Mark Locki's finding of 39% for Calgary.\n\nThis is necessarily an approximation: the MLI data covers the Edmonton CMA (including surrounding municipalities) while building permits cover Edmonton city only, and the lag between MLI approval and permit issuance varies by project.\n\n## Estimating affordable units created\n\n\n::: {.cell}\n\n:::\n\n\nThe most important implication of MLI Select's prevalence among small infill projects is the mandated affordable units it generates. Across all four years, small infill MLI Select projects generated an estimated 666 mandated-affordable units in the Edmonton CMA, with approximately 480 coming in the ZBR era (2024–2025), a period that also saw 2.6 times as many projects as the two years prior (see @fig-affordable-units and @tbl-affordable).\n\nThese are units where rents are contractually capped at roughly \\$1,500 per month or below.\n\n\n::: {.cell}\n::: {.cell-output-display}\n![Estimated mandated-affordable units from small infill MLI Select projects, Edmonton CMA](index_files/figure-html/fig-affordable-units-1.png){#fig-affordable-units width=672}\n:::\n:::\n\n\n\n::: {#tbl-affordable .cell tbl-cap='Estimated affordable units from small infill MLI Select'}\n::: {.cell-output-display}\n\n```{=html}\n
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n \n\n\n\n\n \n\n\n\n\n \n\n\n\n\n \n\n\n\n\n \n \n \n \n \n \n
Estimated affordable units from small infill MLI Select, by year
YearMLI Select loansTotal unitsEst. affordable unitsAffordable share
2022171222924%
20239364015725%
20241791,23030124%
202510472317925%
Total3932,71566625%
Jacob Dawang, CMHC, City of Edmonton Open Data
\n
\n```\n\n:::\n:::\n\n\n## Conclusion\n\nSmall infill is only one part of Edmonton's MLI Select story, but it is uniquely enabled by zoning. Large apartment towers were already generally permitted in the areas that they are today before ZBR. The 5-8 unit rowhomes could not exist in mature neighbourhoods until January 2024. A lot of the 283 small new construction MLI Select loans approved since ZBR represents a project that would have been illegal two years earlier.\n\nEdmonton's Zoning Bylaw Renewal is delivering on housing affordability in multiple ways. By legalizing small infill development in mature neighbourhoods, the ZBR didn't just add housing supply, it unlocked CMHC's MLI Select program for a class of projects that previously couldn't exist. Those projects come with mandated affordable rents attached.\n\nThis is what good housing policy looks like: a municipal zoning reform enabling federal affordable housing finance, delivering affordable homes in mature neighbourhoods with established street grids, amenities, and transit connections where demand is high.", + "supporting": [ + "index_files" + ], "filters": [ "rmarkdown/pagebreak.lua" ], diff --git a/_freeze/blog/2026/mli-select-edmonton/index/figure-html/fig-mli-ratio-1.png b/_freeze/blog/2026/mli-select-edmonton/index/figure-html/fig-mli-ratio-1.png deleted file mode 100644 index c732cbbec1fb66a8063723517668ef4e91209f77..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 68496 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 diff --git a/blog/2026/mli-select-edmonton/index.qmd b/blog/2026/mli-select-edmonton/index.qmd index f8450e1..4744108 100644 --- a/blog/2026/mli-select-edmonton/index.qmd +++ b/blog/2026/mli-select-edmonton/index.qmd @@ -1,6 +1,6 @@ --- title: "MLI Select and ZBR sitting in a tree, b-u-i-l-d-i-n-g" -date: "2026-04-23" +date: "2026-04-24" author: "Jacob Dawang" categories: [housing, edmonton, cmhc, zoning] description: "Edmonton's 2024 Zoning Bylaw Renewal unlocked federal affordable housing financing. An analysis of CMHC MLI Select data shows Edmonton's rezoning has already generated hundreds of mandated-affordable units."