Reconstruction of hoy.upr.edu, originally published in September 2009 to memorialize the presidential transition of the University of Puerto Rico.

About this reproduction · not the original site

How this site was reconstructed

Sources, fixity verification, a complete register of modifications, and gaps.

Versión en español   ← Back to the site

La Universidad Hoy was the public site of the University of Puerto Rico's presidential transition. It was published in September 2009, at hoy.upr.edu, to set down what had been done and what remained to be done as one presidency closed and another began. The project was guided by José Luis Cruz Rivera, then Vice President of Student Affairs and coordinator of the university's strategic plan, Diez para la Década, who led the transition team until the end of Antonio García Padilla's presidency on September 30, 2009.

None of it is online any more. The domain hoy.upr.edu stopped resolving years ago, and classic Google Sites, the platform the site was built on, was retired in 2021. What you are looking at was reconstructed in 2026 from the captures preserved by the Internet Archive's Wayback Machine.

Two things are worth telling apart. One is the 2009 site, which is what gets reproduced. The other is this reconstruction, which is from 2026 and did not exist back then. Everything explained on this page belongs to the second: the strip that runs across the top of each page, this page itself, the screenshots that open when you click an outbound link. The original site had none of that. What does come from the original site are its pages and its documents, and this page sets out exactly where each of them came from.

97.5%
of what the site offered
82/83
pages in the site's own map
483
documents recovered
16
documents lost
484 MB
of recovered material

Where the archive's published fingerprint describes the file itself rather than a redirect, it was recomputed and compared: 911 files matched. Section 4 explains why that check is not available for the rest, and what was done instead.

Why downloading from the Internet Archive was not enough

If the archive kept captures of the site, what was there to reconstruct? A capture is not a site. The Internet Archive stores individual pages exactly as its crawler found them at a given moment. Browsing them there works until you click something: documents do not open, images are missing, the stylesheet does not load, and there is no way to tell what is absent or why. Reconstructing the site meant working all of that out.

What had to be discovered

The site lived at two addresses at once, archived very differently. There was hoy.upr.edu, the custom domain, captured from 2009 onward; and there was the native Google Sites address, swept en masse in November 2020, shortly before the platform closed. Neither is sufficient alone: the first preserves the original structure, the second went far deeper. Recognizing they were the same site, and folding both into a single address space, was the first step.

Classic Google Sites never served a document directly. Every link to a PDF was in fact an HTTP 302 redirect into a signed, expiring address on another Google host. That has an awkward consequence: the checksum the archive publishes for such a record describes the redirect, not the document. Anyone downloading those addresses without following the chain ends up with 484 HTML redirect files where 484 documents should be, and if they also trust the published checksum, they will believe those files are verified.

The site carried a list of its own contents. Google drew its sitemap with JavaScript, and that code embeds the full hierarchy as JSON. The script died with the platform, so the page renders permanently collapsed, but the data is still there. Recovering it is what makes it possible to say how many pages are missing rather than infer it from whichever links happened to be visible, and it is the difference between an inventory and an estimate.

Some documents were never on the site at all. Fifteen budget memorials were served from a Dropbox public folder. Dropbox retired that kind of link in 2017 and the archive never captured the files, because they were direct downloads behind a redirect. They are invisible to any measurement taken over the site's own resources, and yet a reader clicking the link loses a document just the same.

And some content was not a file. The "Mensaje del Presidente" was an embedded component playing a video hosted on YouTube. No file-based crawl could recover it, because there was no file to recover. The video has since been deleted from YouTube and was never archived there either.

The technical problems that had to be solved

The effort

The reconstruction was done in a single continuous eleven-hour session, between José Luis Cruz Rivera and Claude, Anthropic's coding assistant. It produced twenty-two programs and roughly 4,300 lines of code, and along the way indexed 3,160 capture records, downloaded 1,422 files, and rendered 61 screenshots of linked sites. All 484 document links were checked one by one against the live host, and every internal reference in the site is re-checked in full on each rebuild. A later review, in a separate session, consolidated those programs and added tests: there are now 43 programs and roughly 6,600 lines, plus more than 180 automated checks that verify every figure on this page against the ledger. No figure in the tables on this page changed as a result. A later peer review did find drift in the files beside it — a version string, four rows whose capture date disagreed with the address next to it, and a count no longer reproducible from the audit — each corrected, and each described here.

Without a tool of this kind, the obstacle would not have been writing the code. It would have been discovery: nobody documents that Google Sites served its attachments behind a signed redirect, or that the sitemap carries the hierarchy inside a dead script. Those things are found by asking for a PDF, receiving HTML, and chasing why.

The larger problem, though, is not slowness. It is that almost every failure in work of this kind is silent. One deployment reported success while serving 404s on nearly every page. A bug of our own deleted the stylesheet from fifteen pages and left them unformatted. A caption claimed to preserve images that had in fact never been archived. A recovery figure excluded sixteen lost documents on a technicality about where they had been hosted. None of those announce themselves; each looks correct until somebody checks. Verification, repeated after every change, is the only thing that finds them.

The method

The whole process is automated in programs that can be re-run, governed by a single ledger: nothing counts as recovered until its bytes are on disk and verified. The unmodified originals are kept separately from the reconstruction, so it can be rebuilt from scratch without consulting the archive again, and every figure on this page is computed from the ledger at build time and can be recomputed from the files below; the dated statements about the work itself are a record of what was done, not values that recompute. The rest of this page is that record.

A note for English readers. This disclosure exists in English; the reconstruction itself does not. The 2009 site was written in Spanish, and translating it would make it something other than a reproduction, so the pages behind “Back to the site” are Spanish throughout. The English support ends here, deliberately.

1. Reference

Original sitehoy.upr.edu, La Universidad Hoy, published September 2009
Native addresssites.google.com/a/upr.edu/launiversidadhoy
InstitutionUniversity of Puerto Rico
Source of this reproductionWayback Machine, Internet Archive (web.archive.org)
Capture range2009-09-29, 2024-08-05
Date of reconstruction2026-07-28 / 29

The capture range runs to 2024, but that does not mean the site was alive all that time. It measures how long the archive kept revisiting a site that had stopped changing. The content is from 2009. Four out of five capture records come from a single sweep in November 2020, made before Google Sites shut down; only about 14% fall in 2009-2012, and what comes after 2020 is a handful of stray visits.

2. Authorship and working method

The reconstruction was carried out in a single working session between José Luis Cruz Rivera and Claude, Anthropic's coding assistant, using Claude Code. It was reviewed and extended over the following two days in separate sessions, in the same arrangement; the figures below describe the original session.

Planning and method designClaude Fable 5
Implementation and executionClaude Opus 5
Direction, decisions and validationJosé Luis Cruz Rivera
Date2026-07-28 / 29
Session28 July, 21:15 – 29 July, 06:45, MST (UTC-7), Flagstaff, Arizona
Exchanges in the conversation24

The method was designed and agreed before any code was written. The entire process, harvesting, verification, assembly and reporting, is automated in programs that can be re-run; no file was edited by hand.

3. Sources

The site was reachable at two equivalent addresses. Captures were indexed from every address it ever used:

SourceArchived periodRecords
hoy.upr.edu (custom domain)2009-09-29 → 2014517
sites.google.com/a/upr.edu/launiversidadhoymostly the November 2020 sweep before Google Sites closed2643
*-sites.googlegroups.com (attachment hosts)reached by following archived redirectsn/a

The earliest capture of any kind is September 29, 2009, which is the day before the last day of Antonio García Padilla's presidency. The archive reached the site almost exactly at the moment it was made for. That capture establishes that the site was published no later than that day, without depending on anyone's recollection.

4. Fixity verification

The Internet Archive's CDX index publishes its own SHA-1 checksum for each capture. Where that checksum describes the captured file itself, it was recomputed on the downloaded bytes and compared against the published one.

Successful downloads1422
SHA-1 recomputed and matching the Internet Archive's own911
HTML pages downloaded684
HTML pages checksum-verified682 (99.7%)

PDF documents do not admit this check, for a technical reason: classic Google Sites never served an attachment directly. Every document link was an HTTP 302 redirect into a signed, expiring address on a googlegroups.com host. The checksum the index publishes for such a record describes the redirect, not the document. Those files were validated structurally instead, by content type, length and binary signature. 480 of them carry the %PDF magic number. The other 3 are ZIP archives, which the site published alongside its PDFs; those were checked for being a substantial payload rather than an HTML error page.

Two late HTML captures (2022 and 2023) did not match their published checksum. Neither is used here: those two pages are drawn from earlier captures that did verify. Every page shown in this reproduction comes from a checksum-verified capture.

5. Capture selection

The original site was published once, to coincide with the last day of Antonio García Padilla's presidency, and was not revised afterwards. That account was tested rather than assumed. Raw HTML always differs across years, because Google rewrote its own page chrome, so the comparison was made on extracted text and not on markup.

Of 65 pages captured more than once, two content pages differ, and the difference runs in the direction of loss. The September 29, 2009 capture carries navigation entries that later captures no longer have: Blog, Diez para la Década, Avanza, and La Universidad: Inversión Estratégica de Puerto Rico. The other four differing pages are ones Google generated dynamically (recent changes, search, sitemap), and are not part of the site's content.

Decision: the earliest verified capture of each page is used, being demonstrably the fullest and the closest to publication.

The versions/ set preserves every distinct capture of every page, unmodified, so this choice can be reviewed or reversed without going back to the archive.

Because the early crawler did not reach every page, this reproduction does not come uniformly from 2009. By capture year: 2009 (6 pages), 2010 (36), 2011 (10), 2012 (8), 2019 (1), 2020 (35). Since those pages' text does not differ across captures, this affects the recency of the capture, not the content.

6. Register of modifications

This is the complete list of differences between the original files and what is shown here.

Structural, required for the site to work offline

  1. Link rewriting. Absolute addresses pointing at hoy.upr.edu or the native address were converted to relative paths. Link text, order and destination are unchanged.
  2. Character-set declaration. The archive served charset=utf-8 in the HTTP header only; the pages carry no <meta charset>. A static file server does not reproduce that header, so accents rendered as corrupted text (Estratégico). A single <meta charset="utf-8"> tag was inserted into each page. This is a tag that was not in the original bytes; it affects encoding interpretation only, and alters no character of the text.
  3. Theme resources. Stylesheets, scripts and theme images were served from www.gstatic.com. They were downloaded from the Internet Archive (not from Google today) and are served locally.
  4. Links with nothing behind them are shown in gray. This is a single convention across the whole site: where what a link pointed at cannot be shown, the link is grayed and opens a page saying what was there and why it is not. It applies equally to documents no crawl captured, to pages the archive does not hold, and to links that opened queries against databases that no longer exist. Link text and order are unchanged; the color and the destination are what differ. They are kept rather than removed because a link that existed documents what the site offered, and deleting it would delete that evidence.
  5. The site search was rebuilt. The "Search this site" box appears on every page and still submits, but the original Google Sites search queried an index on Google's own servers, and both the index and the service are gone. The box led to an archived results page that could never answer, so a search returning nothing could be read as "that document never existed". It was replaced by an index built when the site is compiled and queried in the browser. It covers the text of the reproduced pages and of the documents: of the 566 documents indexed, 378 carry a text layer and are searchable by their contents; the other 188 are image-only scans, with no text, and are found by title alone. That total exceeds the 483 in section 7 because it also covers the 85 cartas circulares recovered from the UPR portal's own captures, which section 7 keeps out of the headline because they came from a different host. No optical character recognition was applied, and no document was altered. The results page states this distinction itself, because "no results" and "not searchable" are different answers.

Content, declared divergences

  1. One video restored from a personal copy. The "Mensaje del Presidente" panel was a Google Sites gadget embedding a YouTube video (id VDtJX5AQ9Iw). It was never a file on the site, so no crawl could recover it; the video has since been deleted from YouTube and was never archived there either. José Luis Cruz Rivera supplied the original MP4 from a personal backup. It is shown in its place, marked in the markup as data-provenance="personal-backup" and recorded separately: it is not counted as material recovered from the archive. It is the only file in this reproduction that did not come from the Internet Archive.
  2. One broken link deactivated. The home page linked UPRINVERSIONESTRATEGICA.pdf ("La Universidad: Inversión Estratégica de Puerto Rico"). That document exists in no archive under any address form. Its anchor was converted to plain text: the text remains visible on the page; only the unusable hyperlink was removed. The original markup is preserved unmodified, and the document remains listed in the gap report.
  3. Two links repointed. junta-de-subastas and junta-de-apelaciones-1 appeared in the site's navigation from 2009, but no crawler ever captured either address. When one was first attempted, July 2011 in one case, November 2020 in the other, it already returned HTTP 404. Neither appears in the sitemap captures from October 2009 onward. Whether either page existed earlier and was later removed cannot be determined from the archive: the gap between the link appearing and the first crawl attempt is two years in one case and eleven in the other. They open a page stating exactly this. An earlier version of this reconstruction pointed them at each body's present-day page on upr.edu; that was withdrawn, because offering a 2025 page in place of a lost one papers over the loss even when labeled.
  4. The 2008-2009 annual report, re-linked. This document was not available when the site was published. José Luis Cruz Rivera submitted it for publication later, once it had become available and he had left his position, which is why the link appears in captures from January 2010 onward and not on the September 2009 home page this reconstruction is built from. The document itself was recovered, so leaving it unlinked would have made it present but unreachable from the navigation. It was added to the "Informes Anuales UPR" list, carrying data-added="1" and a tooltip giving the reason. This is a link the September 2009 page did not have. No other later material was carried back.
  5. Outbound links open period captures. The site linked to eight UPR properties in its sidebar and, throughout its pages, to campuses, accreditors and services. Those hosts still exist but show 2026 content. Each outbound link now opens a local page showing that site as captured closest to September 29, 2009, with the capture date stated in the caption, plus links to the live site and to the Internet Archive. Only captures from the era are shown (2012 or earlier): a later capture does not document what the site linked to, so where the archive holds nothing from the period the page says so rather than showing a 2013 or 2025 version. Every screenshot also carries a note that an archived capture shows only what the crawler managed to save.
  6. Reconstruction notice and this page. A banner was added at the top of every page, deliberately outside the site's own visual language, identifying the document as a reproduction and linking here. Neither the banner nor this page was part of the original site.
  7. Dead controls inherited from the Google Sites theme. “Sign in”, “Terms”, “Report Abuse”, “Print page” and the “Powered by Google Sites” mark were served by the platform on every page and are reproduced as they were. They led to Google, not to this site, and they lead nowhere now. They are not reconstruction faults and they are not repaired: removing them would edit the page the archive captured.

What was not done

No text was edited, rewritten, corrected or reordered. No document was altered: every PDF is byte-identical to what the archive served. No dates, authorship or metadata were changed. No new content page was written. The only things added to what the site itself offered are the restored video (modification 6) and the 2008-2009 link (modification 9); everything else this page describes — the banner, this page, the destination pages behind outbound links — belongs to the reconstruction and is marked as such. Nothing was removed from the record: the text of the single deactivated link remains visible, and every gap is enumerated in the accompanying report.

7. What is missing

711 of 729 resources (97.5%) of everything the site offered were recovered: 483 of 484 documents the site hosted itself, and 82 of the 83 pages listed in its own sitemap (the remaining one is a blank Google Sites template).

Measured only over what the site hosted, the figure would be 710/713 (99.6%). That is not used as the headline because it leaves out the 16 documents the site published from a Dropbox public folder, 15 of which are equally gone: to a reader clicking the link, the document fails to appear either way.

Not recovered:

  1. 15 documents hosted outside the site, mostly the Memorial del Presidente de la UPR, Presupuesto series (2002-2003 through 2009-2010). They sat in a Dropbox public folder; Dropbox retired those links in 2017 and the Wayback Machine never captured the files, because they were direct downloads behind a redirect.
  2. UPRINVERSIONESTRATEGICA.pdf, never captured by any crawler. It was linked once, from the home page, only in the September 29, 2009 capture.
  3. Two navigation targets never captured by any crawl, already returning an error by the time a crawler first tried them (modification 8).
  4. The embedded video, recovered from a personal copy rather than an archive (modification 6).

Anything published and withdrawn before September 29, 2009 is unrecoverable, since no capture predates it, but since the site went up that same month, this window is days wide, not months.

Reconciling the headline with the inventory. inventory.csv lists 710 files, not 711: it records what was recovered from the archive, and the video came from a personal backup (modification 6), so it is counted in what the site offered but not in what the archive returned. The page rows in that file likewise number two more than the 82 of 83 reported here — the extras are the site root and the Google Sites system directory, which are platform machinery rather than pages the sitemap lists.

8. How to verify

Check any document. The downloadable inventory lists every recovered file; the project ledger records, for each, the exact Internet Archive address and capture date it came from. That address can be fetched today and compared byte for byte.

Check the page list. The site's own sitemap is archived, and its embedded code enumerates every page it contained. That, not an inference from links, is the denominator the completeness figures are measured against:

https://web.archive.org/web/20091003125041/http://hoy.upr.edu/system/app/pages/sitemap/hierarchy

Check that a document is missing rather than omitted. The Internet Archive's CDX index can be queried directly; it returns nothing for the absent document under any address form:

curl "http://web.archive.org/cdx/search/cdx?url=upr.edu&matchType=domain&filter=urlkey:.*inversionestrategica.*"

9. Downloadable evidence

The data behind every figure in this document:

launiversidadhoy-evidence-bag.zipComplete package as a BagIt bag (RFC 8493), validatable with bagit.py · 67 KBinventory.csvComplete inventory of recovered files · 92 KBgaps.csvItems not recovered, with classification · 5 KBlink_audit.csvAudit of every link in this reproduction · 188 KBsnapshots.csvPeriod snapshots of outbound links · 13 KBCHANGE_CHECK.mdText comparison across captures · <1 KBGAPS.mdGap report · 17 KBPROVENANCE.mdThis document in plain text · 26 KBSEARCH_RECORD.mdWhat was done to try to recover the missing documents · 9 KBMISSING_DOCUMENTS.mdList of documents not recovered · 4 KBVIDEO_TRANSCRIPT.mdAutomatic transcript of the video, for checking it against the press of the day · 5 KBprovenance.jsonldMachine-readable provenance (W3C PROV-O) · 4 KBmanifest-sha256.txtChecksum manifest for this bundle (BagIt, RFC 8493) · <1 KB

The first file in the list is the complete package as a bag conforming to BagIt (RFC 8493): it contains bagit.txt, bag-info.txt, the payload manifest and the tag manifest, with the payload under data/. It can be downloaded and validated directly, for instance with bagit.py --validate, without reassembling anything. The loose files that follow are the same content, for anyone who simply wants to read one. provenance.jsonld states the same account in machine-readable form, as W3C PROV-O. The sections of this page are ordered on the preservation-description categories of the OAIS reference model (ISO 14721) — reference, context, provenance, fixity, access — because that is a shape an archivist can read quickly, not because anything here was certified against it.

How to cite this deposit. The programs, the provenance record and the evidence package are deposited under a permanent identifier:

Cruz Rivera, J. L. (2026). Reconstruction of hoy.upr.edu (La Universidad Hoy): pipeline, provenance record and evidence package (2.0) [Computer software]. Zenodo. https://doi.org/10.5281/zenodo.21696168

The deposit covers the programs, the reports and the documentation. It does not cover the recovered material: the pages and documents of La Universidad Hoy are institutional records of the University of Puerto Rico and retain whatever rights attach to them. They are published here, not in the deposit.

10. Known limitations

These are the points where this reconstruction is weakest.

The video is the only file that did not come from an archive

The original was a YouTube embed. It has been deleted from YouTube, and the Internet Archive never captured it. This copy was supplied by José Luis Cruz Rivera from a personal backup — the one place in this reconstruction where a file's provenance rests on someone's word.

Its content, though, is corroborated from outside this project. The recording is Antonio García Padilla's resignation message, and El Nuevo Día published that message as text at the time, under the headline «Mensaje de Antonio García Padilla — El Presidente de la UPR habla de su renuncia». The newspaper's page survives in the Internet Archive, as does its report of the resignation itself, timestamped August 19, 2009 at 6:40 a.m. The audio of this file was transcribed and compared against that published text: 84% of the spoken words fall inside runs of eight or more consecutive words that also appear in the newspaper, across 21 such runs, the longest of them 43 words. The file's own container records a creation time of August 18, 2009 at 21:41:42 — the evening before the Junta de Síndicos meeting that ran into the early hours and ended with the resignation.

That establishes what the recording is. It does not establish that this file is the exact one the site embedded: a re-encoding leaves no trace, and a container timestamp can be set to any value. What it removes is the possibility that the message is something other than what it is presented as.

Both articles are cited by their archived copies rather than by their addresses on the newspaper's site, which no longer resolve. The transcript is published with the rest of the evidence, so the comparison can be repeated:

https://web.archive.org/web/20090823012142/http://www.elnuevodia.com/mensajedeantoniogarciapadilla-605434.html
https://web.archive.org/web/20090821024526/http://www.elnuevodia.com/dimiteantoniogarciapadilla-604992.html

What can be guaranteed is that the file does not change from here on. Its fixity values are recorded:

FileUPR-Mensaje-Presidente-18-ago.mp4
Size27,722,817 bytes
FormatISO Media, MP4 version 2 (ISO/IEC 14496-14), brand mp42
Duration4:49 as reported by the player; the container records 290 s
SHA-25679de0fe605248c01eca3c662b77d8ce34f4fa0b315fe13aedf9590ec4535adca
SHA-19e45bab2a782d4cb9dd387a41f2d6f316b91edfc

No original content passed through a language model

This is worth stating precisely, because saying that no file was edited by hand does not cover it. The models wrote the programs, this page, and the text of the interstitial pages behind outbound links. No byte of the original site's content passed through a language model. The programs copy bytes from the archive to disk and verify them; content is never read into a model, summarized, regenerated or corrected. All text on this site written by a model belongs to the reconstruction and is marked as such.

There is one exception, disclosed here because the sentence above would otherwise not be true. The video's audio was transcribed automatically, once, in order to compare it against the text El Nuevo Día published — the check described above. Nothing recovered from the archive was involved, no published byte changed as a result, and the transcript is not part of the record.

Reviewed afterwards, but not independently

The reconstruction was made in a single continuous eleven-hour session on 28–29 July 2026. That session is not the whole of the work. Over the following two days a separate review went through it line by line, with the same assistance and under the same direction: the programs were consolidated behind shared modules, a test suite was written, four further stages were added, and errors were found — most of them in the claims this page makes rather than in the code. A capture from the year 2000 was described as far more recent than the 2009 page linking to it. The machine-readable provenance carried a date no validator would accept. An evidence file listed 572 links where the audit now publishes 896 distinct targets across 4,196 references. Each is corrected, and each correction is in the public record of the deposit.

That is the author rereading his own work with better instruments. It is not peer review, and it is not independent: no one outside this project has examined any of it. The documentation is meant to make such examination possible — the process is reproducible end to end and every claim can be checked against the source material — but that is an invitation, not a substitute. The review is expressly invited.

The denominator rests largely on one source

The list of pages that ought to exist comes from the site's own map, cross-checked against the link graph extracted from every capture. The two agree, but the map is the authority and survives in a single capture. If an independent inventory ever surfaced (Google Sites administrative records, analytics from the period) it would be worth reconciling against ours.

The reconstruction can be lost too

A project that exists because a site disappeared needs its own continuity plan. The programs, the provenance record and the evidence package now carry a permanent identifier (10.5281/zenodo.21696168), the deposit is archived in Software Heritage (swh:1:dir:d45297581ed513823d817a8c2d1d3e67c72762bc), and this reconstruction is archived in the Internet Archive (2026-07-29). What still rests on personal infrastructure is the site itself — the domain and the hosting. The recovered documents do not: they remain in the Internet Archive, which is where they came from.