Skip to content

The Sandbox ​

A release of Tidemark carries the data its visuals were drawn from and the site its build deployed, so a reader can take one release, rebuild its site from its own code and data, and compare the two file by file. This page holds every visual on the site that reads data, beside each file it reads, the commit the site's build read, and the release whose data feeds each file. Only a replay's own rebuild of this page adds what the replay found for each.

The Cabinet ​

Each part of the site keeps its visuals in a drawer of its own, and lifting a visual onto the glass draws it live, as it draws on its own page. The site's build reads each visual's data from the modules that draw it, meaning the files docs:render writes from a table the package ships. A visual a change adds joins its drawer on its own, a newly rendered file needing its Document to name the command and the tables behind it, and the visual's card holding only its frame until DRAWN registers a drawing. A visual reading none of those files, such as the palette or the analysis graph, stays out of the cabinet.

Each visual on the glass has an address of its own beneath this page's, which opens the cabinet with that visual lifted, so lifting a visual puts its address in the bar. A link to that address unfurls in a chat as the visual's own card, its drawing in the night beside the Earth at dawn over the Gulf of Maine, under its name and the stamp the site sets beneath it, drawn when the site is built from the same data the visual reads. The land beyond the gulf on each card comes from Natural Earth⁠1⁠, and the depths the Two Filters card engraves from NOAA's ETOPO1⁠2⁠.

The coastline this page reads is a derivative database under the Open Database License, and tidemark fetch coast makes a free copy of the cut.

01 of 18The Front PageOn its page

The Network

Commit47945ea

Dataschedule.jsonstations.json

Unreleased1.2.0

ReplayNot replayedNo replay ran beside this build, so nothing has rebuilt schedule.json or compared the files it feeds yet, which mise run site:replay -- <tag> does for a release.

Anchor
Target
Ring per pass
In the gap of every pass
Pass reaching a gauge
Every gauge on the coast31 places · 24 under a swath

One cycle of 21 daysEvery 21 days

Passes9
4 north, 5 south

Most16 of 16 · anchors 3 of 3

Port Clyde, Lindsey Brook, Apprenticeshop, and Rockland Public LandingMost covered · 4 rings

First pass  7 · north · day  1

This cycle58 / 58 rings

Every gauge on the Maine coast, ringed once for each pass whose swath covers it

Day 1Day 8Day 15Day 21735214242270285313520548

Beneath Each Visual ​

Every visual on the site that reads data carries a benchmark disk on the line beneath it, beside the short commit its build read, whereas a visual reading none, such as the palette or the analysis graph, stands without one. Resting the pointer on the disk, pressing it, or reaching it with the keyboard turns it over and opens the commit, the data file the visual reads at that commit, and the release whose tars carry the parts or the service responses that file is rebuilt from, each linking to GitHub, where it opens for a login that reads the private repository. parts.json names that release at each rebuild as the version the package carries then. While the commit still records that version, the stamp names the release as unreleased and links the issues of the milestone it ships from, as the site a release's site.tar holds and a replay's rebuild both do. Once gha:roll publishes the release, it deploys the site again, and each stamp naming the release links its tag page. A rebuild declines to name a release already published, since its tars carry no part read after it, and names instead the release the next open milestone ships, beside the mise run bump moving the package to it. The check each release runs before it publishes fails where the release parts.json names has published with other parts than the ones it records. A visual reading files from two releases names each release, each under the word its own state takes, and one where they match.

Replaying a Release ​

mise run site:replay -- <tag> runs from a checkout of main or of any tag from 1.2.0 on, since tags 1.0.0 and 1.1.0 hold no such task and their own fetch reads the newest release carrying its tar. It replays the release a tag names in a clone of that tag, from the release's own tars and the code they were packed beside:

  1. Seeds the clone through the code running the replay, which moves in every tar the tag's release carries as that release packed it, fetches nothing from any source, and stops where gh cannot read the release or a tar. A tag holding no src/tidemark/swot/parts.json then keeps only the Level 2 parts its schedule saw, and 1.0.0 writes its samples table through its own code
  2. Runs the tag's own tidemark schedule --check and tidemark excerpt --check, which rebuild the shipped tables, from exactly the parts src/tidemark/swot/parts.json records wherever the tag holds that file, then docs:render --check and the drawings' snapshots
  3. Builds the tag's site and compares it with the release's site.tar file by file, naming each file that differs and each visual it feeds
  4. Writes what it found to replay.json beside the rebuild, which this page reads, and serves the release's site and the rebuild side by side

A tag holding no parts.json, as 1.0.0 and 1.1.0 do, records no list of the parts its tables read, and the tars of its release hold later passes than those tables saw. The replay therefore drops from its own clone each Level 2 part of a pass beginning after the last pass the tag's schedule saw, so tidemark schedule --check rebuilds the tables from the store they were built from. The excerpt of 1.0.0 reads a samples table its fetch alone writes, so the replay writes that table through the tag's own code once the tars move in. A release carrying no site.tar, as 1.0.0 and 1.1.0 do, leaves no site to compare, so the replay still seeds, checks, and builds, and serves the rebuild alone.

With no tag, mise run site:replay replays the working tree's changes in a clone over the local store instead, comparing the rebuild with the newest release that carries a site and serving the rebuild alone where none does, while the tables and rendered files the working tree tracks stay as they stand. A step whose outputs are current is skipped on a second run, and the deployed site carries no replay.json, so its cabinet names no replay.


  1. 1Natural Earth 2022. "Natural Earth 1:10m Physical Vectors: Land, Minor Islands, and Lakes." Version 5.1.1. https://www.naturalearthdata.com/downloads/10m-physical-vectors/.↩︎

  2. 2NOAA National Geophysical Data Center 2009. "ETOPO1 1 Arc-Minute Global Relief Model." NOAA National Centers for Environmental Information. https://doi.org/10.7289/V5C8276M.↩︎