Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
51 changes: 51 additions & 0 deletions .agent/archive/post-migration-visual-corrections-history.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
<!--
SPDX-FileCopyrightText: 2026 Amalgam Solucoes em TI Ltda.
SPDX-License-Identifier: MIT
-->

# Post-migration visual corrections history

## M0 — Narrow regression baseline

Completed 2026-08-10 without implementation changes. The source head contract,
favicon/icon binaries, footer, legacy social component, license header model, and one
existing generated artifact were inspected directly. The regression is bounded to a
malformed tiny favicon plus incomplete head metadata, six footer text placeholders,
missing external-link protections, and source SPDX comments emitted into 19 generated
HTML documents. Large-image delivery remains assigned to the follow-up ExecPlan.

## M1 — Favicon and social/external icon parity

Completed 2026-08-10. Broken 16/32px favicon derivatives were regenerated from the
existing 512px TotalCross emblem, and a matching 180px Apple-touch icon was added.
The shared head now links ICO, PNG, touch, and manifest metadata; the cleaned manifest
describes all eight existing icon sizes under the root application scope.

The footer keeps all legacy destinations but replaces initials with the corresponding
Font Awesome Free Brands paths rendered by a small Astro component. Links have labels,
titles, new-tab behavior, and noopener/noreferrer protection; the generated site ships
no icon JavaScript. Build, route, content, icon-contract, and desktop/mobile visual
checks passed without a design or navigation change.

## M2 — Source-only SPDX metadata

Completed 2026-08-10. License policy now distinguishes rendered formats from ordinary
documentation. Astro headers are JavaScript blocks inside component frontmatter;
blog Markdown/MDX headers are YAML comments inside content frontmatter. Exact known
legacy HTML forms migrate idempotently, including the repository's no-blank-line
variant, while conflicts and partial metadata remain refusals.

The deliberate fixer migrated every project-authored renderable source. The mapped
Tecdet page and article retained their customer-material holder and license during a
manual placement-only move. Site validation now rejects recognized SPDX authoring
comments in generated HTML. The final M2 build contained zero such comments across
20 HTML documents while all existing routes, links, archives, feeds, sitemaps, drafts,
and translations continued to validate.

## M3 — Final correction validation and handoff

Completed 2026-08-10. The Unreleased changelog and factual editorial report describe
the visible correction without introducing a standalone version bump. The final
Level 3 matrix passed every unit, licensing, release, workflow, Astro, route, link,
content, feed, sitemap, draft, translation, and rendered-header assertion. This plan
is closed; the combined v1.0.1 release remains owned by the asset-performance plan.
38 changes: 38 additions & 0 deletions .agent/archive/site-asset-performance-optimization-history.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
<!--
SPDX-FileCopyrightText: 2026 Amalgam Solucoes em TI Ltda.
SPDX-License-Identifier: MIT
-->

# Site asset performance optimization history

## M0 — Deterministic asset baseline

Completed 2026-08-10 without changing image delivery. A dependency-light reporter
uses explicit Sharp metadata plus repository/output traversal to rank source and
generated media. A tested fallback-resource graph provides representative page
payload proxies without claiming browser/network fidelity. The first fresh build
proved every 30.09 MiB source media byte was copied into generated output, with home
and get-started proxies at 16.34 MiB and 9.07 MiB respectively.

## M1 — Responsive static raster delivery

Completed 2026-08-10. Astro now generates responsive AVIF/WebP pictures, an optimized
eager LCP image, and optimized CSS backgrounds while preserving intrinsic dimensions
and below-fold lazy loading. Static generated media excluding the deferred GIF fell
81.0%, the home proxy fell 87.7% to 2.01 MiB, and automated desktop/mobile screenshots
covered every changed page class.

## M2 — Efficient animated media delivery

Completed 2026-08-10. Deterministic ffmpeg commands converted the sole 8.3 MB GIF to
VP9/WebM, H.264/MP4, and a WebP poster totaling 461 KB (94.5% smaller). Semantic video
markup preserves autoplay/muted/loop/playsinline behavior and adds native controls,
metadata preload, intrinsic sizing, and fallback content. Automated playback reached
2.5 seconds unpaused with the preferred WebM source.

## M3 — Enforced asset policy

Completed 2026-08-10. A tested canonical budget module protects generated raster,
GIF, total-media, home, and get-started output while source masters remain report-only.
PR CI and Pages enforce budgets in build order. A validated repository skill routes
future media work through Astro optimization, provenance review, and the same checks.
61 changes: 61 additions & 0 deletions .agent/evidence/post-migration-visual-corrections.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
<!--
SPDX-FileCopyrightText: 2026 Amalgam Solucoes em TI Ltda.
SPDX-License-Identifier: MIT
-->

# Post-migration visual corrections evidence

- 2026-08-10, M0 branch baseline: focused branch and remote `main` both resolve to
`5a1abc26f751f3680ac4cbff47d98d3169454d6f`; the two supplied ExecPlans were the
only untracked paths.
- 2026-08-10, M0 favicon/head: `BaseLayout.astro` links only `/favicon.ico` with
`sizes="any"` and omits the 32px PNG, Apple touch icon, and web manifest. The ICO is
a 16×16 two-color Windows resource. The 32×32 PNG visibly contains only a small red
mark, while `public/icons/icon-192x192.png` is a complete TotalCross emblem; all
eight manifest PNGs have the dimensions declared by their filenames.
- 2026-08-10, M0 social parity: the current footer emits two-character placeholders
for GitHub, X, Telegram, YouTube, Instagram, and LinkedIn with neither `target` nor
`rel`. Legacy `site` used the corresponding Font Awesome brand glyphs. Destinations
survived the migration unchanged.
- 2026-08-10, M0 SPDX emission: the existing generated `dist/` contains recognized
project SPDX header comments in 19 HTML documents; `dist/index.html` begins with
both authoring tags. Policy classifies Astro/HTML/Markdown/MDX as HTML-comment
style, and the fixer inserts that header immediately after frontmatter, where Astro
renders it into output.
- 2026-08-10, M1 implementation: regenerated 32px PNG/ICO and 180px Apple-touch
derivatives from the existing 512px TotalCross brand emblem. The head now declares
ICO, PNG, Apple touch, manifest, and theme color metadata; the manifest declares
stable root scope plus eight verified PNG sizes. Font Awesome Free Brands 7.3.1 is
build-time-only, with CC BY 4.0/MIT provenance recorded in `NOTICE.md`.
- 2026-08-10, M1 social output: GitHub, legacy Twitter bird labeled X (Twitter),
Telegram, YouTube, Instagram, and LinkedIn render as static SVG paths inside labeled
links with `target="_blank"` and `rel="noopener noreferrer"`. Generated home HTML
contains all six and no client `<script>`.
- 2026-08-10, M1 validation: targeted licensing passed 8/8 changed policy paths;
Astro check reported 49 files and zero diagnostics; the build produced 18 pages;
site/content validation reported `routes=14 html=20 broken=0`, complete archives,
RSS/sitemaps, draft exclusion, and translation pairing. The focused checker found
four head relationships, six social icons, eight manifest icons, and zero scripts.
- 2026-08-10, M1 visual evidence: local production full-page captures at 1440×900 and
390×844 preserve layout and show six recognizable footer glyphs. SHA-256 values are
`5d0ecd282e9dce9f11ef411e9a93e88bb0f99f4065bc411649f3b6a06a9b642f` and
`1bcfac838791ec8ca3ab80c41e029bcddcbb4090f64e61e45103b6e9ef35d544`.
- 2026-08-10, M2 header model: `.astro` uses the canonical JavaScript block inside
Astro frontmatter; renderable `src/content/blog` Markdown/MDX uses YAML comments
inside content frontmatter; other Markdown retains non-rendered documentation
headers. The fixer creates minimal Astro frontmatter when absent, migrates only
verified legacy values, normalizes duplicates, and refuses conflicts.
- 2026-08-10, M2 migration: the deliberate all-files fixer accepted 151/151 and moved
29 known authored headers, then four approved no-blank-line variants after their
focused regression test. Tecdet page/article headers were moved manually with the
existing third-party holder and `LicenseRef-ThirdParty-Material` unchanged.
- 2026-08-10, M2 validation: 11 license tests passed; all-files validation accepted
151/151 with 62 mapped and 20 ignored paths. Astro check reported 49 files and zero
diagnostics; 18 pages built; generated validation reported
`routes=14 html=20 broken=0 rendered-spdx=0`, with complete content/feed/sitemap
assertions. An independent recognized-comment scan also found `html=20 leaked=0`.
- 2026-08-10, M3 closure: the exact Level 3 matrix passed 17 total unit tests,
151/151 all-files licensing, release identity at 1.0.0/tag v1.0.0, workflow policy,
zero Astro diagnostics, 18 native pages, `routes=14 html=20 broken=0
rendered-spdx=0`, and all article/archive/feed/sitemap/draft/translation checks.
Production publication is intentionally deferred to the combined v1.0.1 boundary.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
69 changes: 69 additions & 0 deletions .agent/evidence/site-asset-performance-optimization.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
<!--
SPDX-FileCopyrightText: 2026 Amalgam Solucoes em TI Ltda.
SPDX-License-Identifier: MIT
-->

# Site asset performance optimization evidence

- 2026-08-10, M0 reporter: `scripts/asset-validation.mjs` inventories tracked source
and generated media with deterministic path/extension/bytes/dimensions and reports
the 12 largest entries. Its fallback-only payload proxy includes HTML, local `src`/
poster resources, linked styles/icons/manifest, and recursive CSS URLs while
explicitly excluding `srcset` candidate selection. Two focused tests pass.
- 2026-08-10, M0 baseline build: Node 24 built 18 pages. Source and generated media
both contain 50 files totaling 31,553,407 bytes (30.09 MiB), proving raw source
delivery. Largest outputs are Tecdet 10,846,651; GIF 8,325,288; coffee 2,952,258;
Tecdet article 1,720,676; sample banner 1,177,657; hero 1,108,142; and printer
1,092,660 bytes.
- 2026-08-10, M0 payload proxies: `/` includes 72 unique fallback resources totaling
17,129,268 bytes (16.34 MiB). `/get-started/` includes 60 totaling 9,511,556 bytes
(9.07 MiB). These are deterministic static regression proxies, not browser transfer
measurements or `srcset` selection simulations.
- 2026-08-10, M1 responsive raster result: the generated artifact is 12,746,822 bytes
including the unchanged 8,325,288-byte GIF; static media excluding that GIF fell
from 23,228,119 to 4,421,534 bytes (81.0%). The home proxy fell to 2,111,330 bytes
(2.01 MiB, 87.7% below M0). Delivered `home_tecdet` and `home_coffee` fallbacks fell
94.4% and 97.3%; no static raster exceeds 1 MiB. Warnings identify Tecdet WebP
fallbacks at 727,056 and 605,226 bytes for M3 policy.
- 2026-08-10, M1 checks: reporter tests passed 2/2; Astro checked 52 files with zero
diagnostics; Node 24 built 18 pages and 79 optimized images; route/link/SPDX and
content validation passed. Six automated production-output screenshots cover home,
samples, and the Tecdet article at 1440x900 and 390x844. Their SHA-256 prefixes are
`86328f96`, `66f299d4`, `3155da4c`, `a6d1c8e7`, `40090155`, and `e7cc0fd7`.
- 2026-08-10, M2 source: `led-totalcross.gif` was 8,325,288 bytes, 270x480,
185 frames, and 13.07 seconds; SHA-256 `8107547f...55e2b2`. Its only page reference
was get-started. Reproducible conversions (wrapped here for readability) were:

```text
ffmpeg -hide_banner -loglevel error -i src/assets/led-totalcross.gif -map_metadata -1 -an -vf "scale=270:-2:flags=lanczos,format=yuv420p" -c:v libvpx-vp9 -crf 34 -b:v 0 -deadline good -cpu-used 2 -row-mt 1 -fps_mode vfr -y src/assets/led-totalcross.webm
ffmpeg -hide_banner -loglevel error -i src/assets/led-totalcross.gif -map_metadata -1 -an -vf "scale=270:-2:flags=lanczos,format=yuv420p" -c:v libx264 -preset slow -crf 24 -movflags +faststart -fps_mode vfr -y src/assets/led-totalcross.mp4
ffmpeg -hide_banner -loglevel error -i src/assets/led-totalcross.gif -map_metadata -1 -frames:v 1 -vf "scale=270:-2:flags=lanczos" -c:v libwebp -quality 80 -y src/assets/led-totalcross-poster.webp
```
- 2026-08-10, M2 result: WebM 191,142 bytes, MP4 260,976, and poster 8,928 total
461,046 bytes (94.5% below the GIF). Their SHA-256 prefixes are `31ed375a`,
`273c9b5b`, and `2fbdbc16`. Generated media is 4,882,580 bytes and get-started's
proxy fell from 9.07 to 1.57 MiB. No built or source page references a GIF.
- 2026-08-10, M2 playback: headless Chromium selected the VP9/WebM source, reported
`paused=false`, `currentTime=2.5`, `duration=13.07`, `readyState=4`, and 270x480.
Focused plus desktop/mobile screenshots have SHA-256 prefixes `837c8ddf`,
`53d31210`, and `42b5eb74`. Astro check/build and route/link/SPDX/content validation
passed with 18 pages and zero diagnostics.
- 2026-08-10, M3 policy: generated media ≤6 MiB; each generated raster ≤1 MiB with
warnings above 500 KiB; generated GIF ≤256 KiB; home proxy ≤3 MiB; get-started
proxy ≤2 MiB. Source masters are report-only. PR CI and Pages both run
`assets:check` after build and before site validation; workflow policy enforces order.
- 2026-08-10, M3 Level 3: repository skill validation passed; asset tests passed 4/4;
license coverage passed 170/170; workflow policy passed; Astro checked 54 files with
zero diagnostics; Node 24 built 18 pages; route/link/SPDX/content checks passed.
Asset check reports zero failures and two warnings, with generated media at
4,882,580/6,291,456 bytes, home at 2,111,330/3,145,728, and get-started at
1,647,783/2,097,152.
- 2026-08-10, M4 Level 3 candidate: package/lock/changelog identify v1.0.1. Eleven
license tests and six cross-post tests passed; license policy accepted 174/174;
release and workflow policy passed; Astro checked 54 files with zero diagnostics;
Node 24 built 18 pages; asset budgets passed with zero failures/two warnings; route,
link, rendered-SPDX, RSS/sitemap, draft, and translation validation passed.
- 2026-08-10, production-check contract: HTTP validation now requires responsive
picture AVIF/WebP markup, autoplay/muted/loop/playsinline WebM+MP4 delivery, no GIF
reference, five fetchable optimized assets each below 1 MiB, and combined video plus
poster below 2 MiB. It remains deferred until the candidate is deployed.
Loading
Loading