diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c70ddbf..0743817 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -50,7 +50,7 @@ jobs: uses: r-lib/actions/setup-r-dependencies@d3c5be51b12e724e68f33216ca3c148b66d5f0b6 # v2 with: packages: > - shiny, bslib, bsicons, dplyr, tidyr, stringr, tibble, plotly@4.12.0, + shiny, bslib@0.11.0, bsicons, dplyr, tidyr, stringr, tibble, plotly@4.12.0, leaflet, DT, shinyjs, shinycssloaders, RColorBrewer, htmltools, jsonlite, rsconnect, cpp11, url::https://cran.r-project.org/src/contrib/Archive/terra/terra_1.8-50.tar.gz, @@ -63,7 +63,7 @@ jobs: url::https://packagemanager.posit.co/cran/2026-07-15/src/contrib/sp_2.2-1.tar.gz pak-version: stable dependencies: '"hard"' - cache-version: mosquito-geo-closure-v1 + cache-version: mosquito-geo-closure-v2 install-pandoc: "false" install-quarto: "false" - name: Verify deterministic numeric runtime diff --git a/.github/workflows/refresh-data.yml b/.github/workflows/refresh-data.yml index cf7044e..8e98b3a 100644 --- a/.github/workflows/refresh-data.yml +++ b/.github/workflows/refresh-data.yml @@ -124,7 +124,7 @@ jobs: uses: r-lib/actions/setup-r-dependencies@d3c5be51b12e724e68f33216ca3c148b66d5f0b6 # v2 with: packages: > - shiny, bslib, bsicons, dplyr, tidyr, stringr, tibble, + shiny, bslib@0.11.0, bsicons, dplyr, tidyr, stringr, tibble, plotly@4.12.0, leaflet, DT, shinyjs, shinycssloaders, RColorBrewer, htmltools, jsonlite, rsconnect, cpp11, url::https://cran.r-project.org/src/contrib/Archive/terra/terra_1.8-50.tar.gz, @@ -137,7 +137,7 @@ jobs: url::https://packagemanager.posit.co/cran/2026-07-15/src/contrib/sp_2.2-1.tar.gz pak-version: stable dependencies: '"hard"' - cache-version: mosquito-validator-geo-v1 + cache-version: mosquito-validator-geo-v2 install-pandoc: "false" install-quarto: "false" - name: Verify deterministic numeric runtime diff --git a/docs/BUILD-TEST-HANDOFF.md b/docs/BUILD-TEST-HANDOFF.md index b6a2b8a..3867e0d 100644 --- a/docs/BUILD-TEST-HANDOFF.md +++ b/docs/BUILD-TEST-HANDOFF.md @@ -246,3 +246,79 @@ The first production browser pass found `heroStats` and `siteInsights` in generi - Next concrete action: publish this repair through exact-head review CI, merge it, then open and validate the already-produced refresh candidate with a reviewer-authenticated PR before any production promotion. + +## 2026-08-04 EDT · [Codex] suite-synthesis governance clarification + +### Scope and decision + +- Documentation-only clarification on branch + `agent/suite-synthesis-mosquito-governance`, based on clean current default head + `c86d775b8870995018818a48199899ca5670fc53`. +- The Driver knowledge package now records two independent axes. **ADOPT** applies + to the opportunity/outcome-state reconciliation and restricted, + reviewer-authenticated publisher contracts. The ecological signal remains + **CONTEXT / HOLD DRIVER INGESTION / NO DRIVER BYTE CHANGE**. +- No runtime, source, data, bundle, estimator, manifest, Pages asset, or workflow + file changed in this clarification. + +### Exact authority and synthesis evidence + +- Science/data/runtime authority remains `935420e1e1aa79dcc3cf54d03ef150f6f0332b8d`; + documentation/receipt authority remains + `91b4c713ebbdc717128de584273b995ec49dd622`. +- Compact Pages authority remains + `ec0f2ba4df71040d1760c23338da39233b92db96`; cover receipt remains + `6450f0197ac3ee535c0059b80a5e041b5dfe0b9a`. +- Current default/workflow head + `c86d775b8870995018818a48199899ca5670fc53` is platform-only. Current-head + validation `30819020636`, Pages `30819018628`, production smoke `30819021005`, + and full refresh workflow `30863101351` are green. +- Measured Driver synthesis diagnostic: 203 app-supported site-years; 200 direct + Driver-calendar matches across 46 sites; 7 sites with at least 6 matched + supported years. PUUM is outside the Driver site roster. This support is a + compatibility diagnostic, not an eligible adapter, registered model, or vote. + +### Commands and outcomes + +- `git status --short --branch`; `git branch --show-current`; `git rev-parse HEAD`: + PASS — clean starting tree on the expected branch and exact default head. +- Complete reads of `AGENTS.md`, `docs/BUILD-TEST-HANDOFF.md`, + `docs/SCIENCE-CONTRACT.md`, `docs/DRIVER-KNOWLEDGE-PACKAGE.md`, and the Driver's + `docs/NEON-SUITE-LEARNING-LOOP.md`, `docs/NEON-SUITE-REVAMP-PLAN.md`, and + `docs/neonize-playbook.md`: PASS — local and central decision vocabulary agree. +- `git log --oneline --decorate -12`; `git show --stat --oneline --summary` for + `c86d775`, `935420e`, `91b4c71`, `ec0f2ba`, and `6450f01`: PASS — the authority + domains and platform-only current head are locally present and distinct. +- `git diff --check`; required-decision/revision text scan; changed-path allowlist: + PASS — documentation is internally explicit and only the knowledge package plus + this append-only handoff changed. + +### Residual risk and next action + +- No Driver adapter or registered mosquito mechanism exists. The measured calendar + overlap cannot be promoted from support to inference without those independent + gates; PUUM's climate placement also remains held. +- Next action: pin this clarified package in the central Driver synthesis ledger; + keep mosquito ecological ingestion held until an independent adapter, registered + model, and old/new parity review clear the Driver gate. + +## 2026-08-04 EDT · [Codex] exact-manifest CI dependency repair + +- PR #10 validation run `30940598982` passed the scientific helper contracts, + exact release/bundle checks, offline source check, and real SRER server render. + Its final byte gate correctly failed because the validation environment resolved + bare `bslib` to current CRAN `0.12.0`, while the committed exact manifest records + `bslib` `0.11.0` from the dated release environment. +- Pinned `bslib@0.11.0` in both manifest-producing dependency lists: + `.github/workflows/ci.yml` and the validator job in + `.github/workflows/refresh-data.yml`. Rolled only those two dependency-cache keys + so an older resolved library cannot mask the corrected pin. +- YAML parsing, the two-workflow pin/cache static audit, local parsing of + `scripts/write_manifest.R`, changed-path review, and `git diff --check`: PASS. +- This is a CI/release-platform repair. No source product, bundle, estimator, + application, Pages asset, committed manifest, or Driver artifact changed; the + suite-contract ADOPT versus ecological CONTEXT/HOLD split remains unchanged. +- Residual risk: exact Linux R 4.5.2 installation and byte-identical manifest + reproduction require the amended GitHub run. +- Next action: push the amended exact PR head, require the contracts check to pass, + then merge by that reviewed head and record the merged/default-branch receipts. diff --git a/docs/DRIVER-KNOWLEDGE-PACKAGE.md b/docs/DRIVER-KNOWLEDGE-PACKAGE.md index 416c480..5e78cd6 100644 --- a/docs/DRIVER-KNOWLEDGE-PACKAGE.md +++ b/docs/DRIVER-KNOWLEDGE-PACKAGE.md @@ -1,8 +1,19 @@ # Driver knowledge package · Mosquito Pulse -## Decision +## Decision — two explicit axes -**ADOPT** — The suite should adopt outcome-state reconciliation for every opportunity-complete sampling product: positive, supported zero, unavailable/unknown, held, and ineligible are distinct states before aggregation. +**Scientific-contract and suite-platform axis: ADOPT.** The suite should adopt +outcome-state reconciliation for every opportunity-complete sampling product: +positive, supported zero, unavailable/unknown, held, and ineligible are distinct +states before aggregation. It should also adopt the independently validated +producer/validator plus restricted, reviewer-authenticated publisher contract. + +**Ecological Driver axis: CONTEXT / HOLD DRIVER INGESTION / NO DRIVER BYTE +CHANGE.** Whole-trap-scaled target catch per 24 trap-hours remains a within-site +activity index. The released support and calendar overlap do not by themselves +define an eligible Driver adapter, registered seasonal/thermal model, or ecological +vote. Do not infer mosquito population, biting rate, pathogen presence, infection, +transmission, exposure, disease risk, or a causal climate response. ## Evidence @@ -19,6 +30,18 @@ The leftmost effort table owns identity, validity, and duration. Downstream catch rows cannot create opportunities. +### Driver synthesis diagnostic · 2026-08-04 + +- The reviewed release contributes 203 app-supported mosquito site-years. +- Exactly 200 of those site-years match the Driver calendar, across 46 Driver + sites; 7 sites have at least 6 matched supported years. +- PUUM is the one released mosquito site outside the Driver site roster. Its + mosquito bundle remains eligible in the app, while its climate-gradient overlay + remains held. +- These are measured compatibility diagnostics, not an ingestion decision. + Calendar support alone is not an eligible adapter or a registered model, so no + ecological vote or Driver byte follows from the match count. + ## Engineering learning - Separate producer, validator, and restricted publisher jobs. Only the publisher writes, and it opens/updates a review PR. @@ -48,6 +71,25 @@ Audit other sampling apps for a binary catch/absence model that lacks pending/he - Final exact merge CI `30213225754`, Pages `30213225369`, and production smoke `30213225753`: passed. - Fresh production browser session at 390 px: zero Shiny output errors before and after loading SRER, no overflow, and all 19 audited in-app interaction targets at least 44 × 44 CSS px. +## Authority separation and current platform head · 2026-08-04 + +- Science/data/runtime authority remains + `935420e1e1aa79dcc3cf54d03ef150f6f0332b8d`; its documentation/receipt authority + remains `91b4c713ebbdc717128de584273b995ec49dd622`. +- Compact Pages authority remains + `ec0f2ba4df71040d1760c23338da39233b92db96`; its cover receipt remains + `6450f0197ac3ee535c0059b80a5e041b5dfe0b9a`. +- Current default/workflow head + `c86d775b8870995018818a48199899ca5670fc53` is platform-only. It repairs the + restricted refresh handoff and exact-review-byte checks; it changes no source, + scientific helper, bundle, estimator, manifest, runtime, Pages presentation, or + ecological disposition. +- Current-head validation `30819020636`, Pages `30819018628`, and production + smoke `30819021005` passed. Full refresh workflow `30863101351` also passed. +- Therefore the top-level split remains deliberate: **ADOPT** the reusable + opportunity/outcome-state and restricted-publisher contracts; keep the mosquito + ecological signal **CONTEXT / HOLD DRIVER INGESTION / NO DRIVER BYTE CHANGE**. + ## Living Poster flow correction · 2026-07-26 **NONE / NO DRIVER BYTE CHANGE** — Trimming the Pages cover to the approved Suite