The hardware and bandwidth for this mirror is donated by METANET, the Webhosting and Full Service-Cloud Provider.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]metanet.ch.
MineSDG v0.4.0 turns the site KPI engine into a reporting engine.
Instead of chaining calculate_*() primitives, one call
produces a framework report:
rep <- generate_gri_report(demo_mine_sites, site_id = "CU-ATAC",
years = 2022:2024)
rep
#> == MineSDG GRI Report ==
#> Site: CU-ATAC | Reporting year: 2024
#> Composite: 66.8 / 100 | Grade: C
#> Disclosures: 25 | reported: 19 | narrative pending: 5 | mandatory coverage: 77.3%
#> Render with render_minesdg_report(); export tables with write_report_xlsx().
#> Version: 0.4.0 | crosswalk: gri:2021+g11:2022/map-v1Every report is built from a disclosure bundle – the only interface between the scoring engine and the reporting layer:
Mine KPI Data -> KPI Engine -> Score Engine -> Disclosure Bundle
-> Framework Mapping -> Report Generator
compile_site_disclosures() runs
score_site_sdg() once per year and assembles KPI values,
scores, validated raw inputs, year-on-year deltas and your narrative
text. Report generators never call KPI calculators directly, which
guarantees a single source of truth and zero duplicate calculations.
bundle <- compile_site_disclosures(
demo_mine_sites, site_id = "CU-ATAC", years = 2022:2024,
narratives = list(
nar_water_mgmt = "Site water is managed under a catchment-level
stewardship plan with quarterly community review."),
entity_meta = list(company = "Atacama Copper SpA"))
bundle
#> == MineSDG Disclosure Bundle ==
#> Site: CU-ATAC - Atacama Copper
#> Years: 2022, 2023, 2024 | Reporting year: 2024
#> Composite (2024): 66.8 / 100 | Grade: C
#> KPIs per year: 14 | Raw fields: 21
#> Narrative slots supplied: 1
bundle_kpi(bundle, "ghg_intensity")
#> [1] 47.43
bundle_raw(bundle, "ghg_scope1_t")
#> [1] 640035
bundle_score(bundle, "goal_8")
#> [1] 86.3Each framework ships as a crosswalk dataset with a shared schema.
Adding or amending a disclosure means editing data
(data-raw/make_crosswalks.R), not code:
framework_crosswalk("gri")[1:6, c("disclosure_id", "disclosure_title",
"source_type", "source_id")]
#> disclosure_id disclosure_title source_type
#> <char> <char> <char>
#> 1: 302-1 Energy consumption within the organization raw
#> 2: 302-1b Renewable share of energy consumption raw
#> 3: 302-3 Energy intensity kpi
#> 4: 303-1 Interactions with water as a shared resource narrative
#> 5: 303-3 Water withdrawal raw
#> 6: 303-4 Water discharge raw
#> source_id
#> <char>
#> 1: energy_gj
#> 2: renewable_energy_pct
#> 3: energy_intensity
#> 4: nar_water_mgmt
#> 5: water_withdrawal_m3
#> 6: water_discharge_m3The generic mapper resolves every disclosure to a value and an honest
status – reported, partial,
narrative_provided, narrative_required or
not_in_scope. Reports never fabricate:
generate_gri_report() covers GRI 302, 303, 304, 305,
306, 403 and 413, and produces the content index assurance teams ask
for:
head(gri_content_index(rep), 8)
#> disclosure_id disclosure_title status
#> 1 302-1 Energy consumption within the organization reported
#> 2 302-1b Renewable share of energy consumption reported
#> 3 302-3 Energy intensity reported
#> 4 303-1 Interactions with water as a shared resource narrative_required
#> 5 303-3 Water withdrawal reported
#> 6 303-4 Water discharge reported
#> 7 303-5 Water consumption reported
#> 8 303-R Water recycling rate reported
#> source omission_reason
#> 1 raw:energy_gj
#> 2 raw:renewable_energy_pct
#> 3 kpi:energy_intensity
#> 4 narrative:nar_water_mgmt Narrative disclosure pending
#> 5 raw:water_withdrawal_m3
#> 6 raw:water_discharge_m3
#> 7 kpi:water_intensity
#> 8 kpi:water_recycling_rategenerate_icmm_report() adds a board scorecard, a
traffic-light assessment (a pure reclassification of existing 0-100 KPI
scores) and data-driven recommendations from
icmm_recommendation_rules:
icmm <- generate_icmm_report(demo_mine_sites, site_id = "CU-ATAC",
years = 2023:2024)
icmm$extras$traffic_lights[, c("kpi_id", "value", "score", "light")]
#> kpi_id value score light
#> <char> <num> <num> <char>
#> 1: tailings_ratio 0.9830 4.3 red
#> 2: water_recycling_rate 40.8300 37.9 red
#> 3: female_employment_pct 21.1000 64.4 amber
#> 4: land_rehabilitation_pct 56.5200 66.5 amber
#> 5: community_investment_pct 1.0140 66.5 amber
#> 6: ghg_intensity 47.4300 69.1 amber
#> 7: energy_intensity 0.4722 69.3 amber
#> 8: waste_rock_ratio 2.6780 76.0 green
#> 9: local_employment_pct 66.2000 77.0 green
#> 10: water_intensity 0.8760 77.3 green
#> 11: ltifr 1.0420 82.2 green
#> 12: trifr 2.9760 85.9 green
#> 13: renewable_energy_pct 40.1000 100.0 green
#> 14: fatality_rate 0.0000 100.0 green
icmm$extras$recommendations[, c("principle", "recommendation")]
#> principle
#> <char>
#> 1: Principle 6
#> 2: Principle 6
#> recommendation
#> <char>
#> 1: Invest in water recirculation: thickened-tailings water recovery and process-water reuse to raise recycling rates.
#> 2: Review tailings minimisation options (ore sorting, coarse particle recovery) and confirm GISTM conformance.The SEBI BRSR generators reuse the same bundle. Supply
entity_meta$fx_usd_inr to convert monetary lines to INR
lakh – without it, those lines are flagged
partial/not_in_scope rather than
estimated:
kpis <- generate_brsr_kpis(
demo_mine_sites, site_id = "CO-JHAR", years = 2023:2024,
entity_meta = list(fx_usd_inr = 83.2))
kpis[, c("disclosure_id", "disclosure_title", "value", "status")]
#> disclosure_id disclosure_title value status
#> <char> <char> <num> <char>
#> 1: BRSR-C-P2-E1 Resource efficiency in production 3.265000e-01 reported
#> 2: BRSR-C-P3-E1 Safety incidents (TRIFR) 5.655000e+00 reported
#> 3: BRSR-C-P3-E2 Lost-time injuries (LTIFR) 1.562000e+00 reported
#> 4: BRSR-C-P3-E3 Fatalities 0.000000e+00 reported
#> 5: BRSR-C-P3-L1 Training intensity NA not_in_scope
#> 6: BRSR-C-P5-E1 Workforce diversity 1.960000e+01 reported
#> 7: BRSR-C-P6-E1 Energy consumption 9.339240e+06 reported
#> 8: BRSR-C-P6-E1b Renewable energy share 3.310000e+01 reported
#> 9: BRSR-C-P6-E2 Water withdrawal 1.375359e+07 reported
#> 10: BRSR-C-P6-E2b Water recycling 3.709000e+01 reported
#> 11: BRSR-C-P6-E3 GHG emissions (Scope 1) 1.394212e+06 reported
#> 12: BRSR-C-P6-E3b GHG emissions (Scope 2) 7.507290e+05 reported
#> 13: BRSR-C-P6-E3c GHG intensity 7.499000e+01 reported
#> 14: BRSR-C-P6-E4 Waste generated 1.003739e+05 reported
#> 15: BRSR-C-P6-L1 Land rehabilitation 6.108000e+01 reported
#> 16: BRSR-C-P8-E1 CSR / community spend 1.414000e+00 reported
#> 17: BRSR-C-P8-E2 Local employment 6.530000e+01 reported
#> 18: BRSR-C-P8-L1 Local procurement NA not_in_scopegenerate_brsr_report(),
generate_brsr_sectionA() and
generate_brsr_sectionB() are views over the same single
mapping computation.
Reports are plain R objects; rendering is optional and gated on Suggests packages:
# HTML / PDF / DOCX via the packaged Quarto templates
render_minesdg_report(rep, "gri_2024.html", format = "html")
render_minesdg_report(rep, "gri_2024.pdf", format = "pdf")
# Styled Excel workbook of the disclosure tables
write_report_xlsx(rep, "gri_2024.xlsx")
# One-liner: generate and render together
generate_brsr_report(demo_mine_sites, site_id = "CO-JHAR",
years = 2023:2024, output = "brsr.docx",
format = "docx")score_portfolio_sdg(demo_mine_sites)[year == 2024]
#> site_id site_name commodity country year composite_score grade
#> <char> <char> <char> <char> <int> <num> <char>
#> 1: FE-PILB Pilbara Iron Iron Ore AUS 2024 82.9 B
#> 2: BX-ODIS Odisha Bauxite Bauxite IND 2024 82.7 B
#> 3: CO-JHAR Jharia Coal Coal IND 2024 70.5 B
#> 4: ZN-RAJA Rajasthan Zinc Zinc IND 2024 68.5 C
#> 5: CU-ATAC Atacama Copper Copper CHL 2024 66.8 C
#> 6: AU-KALG Kalgoorlie Gold Gold AUS 2024 62.1 C
plot_sdg_radar(bundle)The dashboard (run_minesdg_dashboard()) exposes the same
functions interactively, including new Benchmark and Radar tabs.
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.