Files
iptvnator/docs/maintenance/agent-context-map.md
T
4grayandClaude Fable 5.1 e29f36426b perf(tooling): compositing probe, report command and route-wide clip-mask guard (#1858)
* perf(tooling): compositing probe, report command and route-wide clip-mask guard

Make the instrument that found the dashboard's clip masks part of the
repository: `src/performance/compositing-probe.ts` reads the layer tree
over CDP (bounds in device pixels, compositing reasons and owner nodes,
waiting for Blink's layer debug info), classifies synthesized clip masks
(no owner node and no compositing reason) and reads the renderer's
`cc/tile_memory` from a memory-infra dump. `pnpm run perf:compositing`
seeds one profile against the Xtream mock on a dedicated port, serves the
artwork from memory, fixes the window at 1600x1000 and records tile and
image memory, layer counts, the largest layers, masks and tile warnings
for Live TV, the movie and series details, the dashboard (idle,
crossfade, scrolled) and settings into
dist/performance/compositing/<timestamp>/summary.json and a console
table. Both helpers have node:test coverage in the performance harness.

The dashboard-only compositing E2E becomes `compositing.e2e.ts` and
guards Live TV, a movie detail, a series detail and the dashboard in one
launch, with the backdrop-filtered controls confirmed as composited
layers on the dashboard and the movie detail.

The rule now lives where it triggers: a Rendering Cost section in the
theme/style skill, a validation line in the UI design skill, a context
map row, and a Compositing budget section in the performance journeys
contract (budget, mask mechanism, instruments, why megabytes are
evidence rather than a ratchet). Validation map and README mention the
command.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

* perf(tooling): sample the dashboard idle reading with rotation paused

The hero advances after 8 s, so a 9 s wait sampled the next slide one
second into its zoom (backdrop scale 1.116 instead of 1.1, the previous
slide's tiles still pooled): 224 MB read as idle, 122 MB with rotation
paused and the zoom and tile pool settled. The warning delta and its
checkpoint are now taken at one boundary after the sampling, so a
"tile memory limits exceeded" line logged while the layers or the dump
are read counts for that route instead of for none. The report's test
artifacts go under dist/test-results like the other configs'.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

* perf(tooling): retry a memory dump that carries no renderer tile memory

One reading of seven came back without `cc/tile_memory`: the dump's
trace events reach the buffer shortly after the request resolves, and
a process can skip a dump it is busy for. The capture now waits briefly
before ending the trace and retries up to three times before a reading
stays null.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

* perf(tooling): run the compositing report with motion enabled

With the OS set to reduced motion the hero neither rotates nor renders
its pause button, so the report's click timed out before the summary was
written. The report now emulates `prefers-reduced-motion: no-preference`,
which also keeps the idle and crossfade readings on the same animation
set on every machine.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

* perf(tooling): sample the crossfade frozen, count split stderr lines, drop stale layer samples

Review findings on the pushed head, plus the CI failure:

- A layer that vanished between the LayerTree snapshot and its reasons
  query was kept with empty reasons; without an owner node it would pass
  for a synthesized mask. Such a snapshot is now discarded and retaken.
- The crossfade reading sampled layers, owners and memory across the
  700 ms fade, so the row depended on how long the sampling took. The
  page's animations are frozen 300 ms into the fade while the reading is
  taken, resumed afterwards, and the incoming slide's zoom is allowed to
  finish before the scrolled reading.
- A stderr chunk can end mid-line; the warning counter now keeps the
  unfinished line for the next chunk.
- The mock server's launch spec lists the new Playwright config.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

---------

Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-09 21:34:57 +02:00

8.7 KiB

Agent context map

Read the row for your task before editing. For a cross-domain change, read each affected contract. This is navigation, not a request to load every linked file. Common constraints remain in AGENTS.md; Claude imports it. Repository skill frontmatter defines triggers. If your client does not discover a listed skill automatically, read its SKILL.md directly. Optional global tools are not prerequisites for reading repository contracts.

Development and maintenance

Area / code ownership Canonical documents Repository skill
Bootstrap, project placement, dependencies, aliases and lint configuration; root Nx config and project-local project.json files Nx boundaries, security overrides Nx architecture
Angular conventions; docs and skills maintenance; local review before a pull request Agent workflow Use the area's skill below
Unit, E2E, lint and coverage; tools/coverage, tools/typecheck Validation map Use the area's validation section
Performance journeys, counters, benchmark probes and the CI ratchet; apps/electron-backend-e2e/src/journeys, apps/electron-backend-e2e/src/performance, tools/performance Performance journeys Read the contract directly
Zoneless change detection, ChangeDetectionStrategy.Eager components, NgZone usage Zoneless migration Read the checklist directly
Electron entry/events/preload and CDP; apps/electron-backend Debugging and trace flags, Electron security Use the available global electron skill for automation
Releases, notes, screenshots, native assets, Linux manager metadata; tools/release Release pipeline, note format Release notes, release cut

Data, sources and networking

Area / code ownership Required contracts Repository skill
SQLite schema/startup; libs/shared/database; Electron DB events/workers/operations DB worker, migration ownership and tests SQLite worker
M3U import/state/player, XMLTV, source lifecycle, startup readiness and OS file opening; libs/m3u-state, libs/playlist, libs/epg M3U module, adding sources across layers Read both contracts when adding a source
Xtream API/store/data sources and routed views; libs/portal/xtream Xtream compatibility, category management, detail navigation Xtream
Stalker/Ministra protocol, identity, sessions and routed views; libs/portal/stalker Stalker portal, Stalker EPG for EPG work, store API baseline for store API changes Stalker
Browser runtime, HTTP proxies, redirects and backend networking; apps/web-backend, libs/shared/host-health PWA/self-hosting, connectivity guard, Electron security for desktop boundary changes Read the affected runtime contract
Source health and selective cleanup; portal shared data access Desktop source health, subscription expiry Read the affected provider skill
Backup and restore; playlist persistence Backup/restore, database migrations Read the affected persistence skill

Playback, navigation and UI

Area / code ownership Required contracts Repository skill
Web engines, controls, tracks, PiP, radio and display sleep; libs/ui/playback Player controls, inline playback/diagnostics/recovery Read the contract directly
Embedded MPV, platform engines, addon, pinned runtime and packaging; Electron native services, tools/embedded-mpv Native MPV, runtime build and licensing Read the contract directly
Live panels, keyboard focus, grid/layout conventions; shared UI and portal views UI guidelines, detail navigation UI design, theme/style
Rendering cost of UI: backdrop-filter, filter, will-change, isolation, transform/opacity animations, rounded or path-clipped scrollers; tile memory Compositing budget, workspace shell Theme/style
Workspace routes, title bar, switcher, collections and dashboard; libs/workspace Workspace shell, dashboard, collection/detail navigation UI/theme skills for visible changes
Remote control, playback queue, channel return and shortcuts; libs/ui/remote-control, apps/remote-control-web Remote control Provider skill when queue ownership changes
Parental lock: PIN, per-category locks, worker-side filtering; libs/services/src/lib/parental-lock, category/group dialogs, apps/electron-backend/src/app/database/parental-lock-state.ts Parental lock, affected provider contract Read the affected provider skill
Downloads, offline details, catch-up and file availability; libs/portal/downloads Download manager, provider contract for URL resolution Read the affected provider skill
VOD source discovery, factual metadata and failover; libs/portal/shared/data-access VOD multi-source Xtream
TMDB enrichment, artwork, actors and recommendations; libs/services/src/lib/tmdb TMDB contracts, dashboard UI skill for rendering changes
Timezones, catch-up formatting and EPG display offsets Date handling, Xtream compatibility, M3U EPG Affected provider skill
Website, blog and download pages; apps/website Website README Use an available website skill
Mock servers and fictional release fixtures; apps/stalker-mock-server, apps/xtream-mock-server Stalker mock, Xtream mock, release screenshot contract Release-cut for release captures

Maintenance rules

Keep unique behavior contracts in the authoritative document, procedures in a skill or development guide, and universal constraints in AGENTS.md. Update this map when ownership or a canonical destination changes. Preserve release skill mirrors; do not create extra copies of other contracts for individual agents. Use normal Markdown links for document destinations so pnpm run agents:validate can check them. Do not add root imports for the linked documents.

The migration ledger explains how the original root instructions were accounted for. It is historical audit evidence, not another source of current runtime policy or required task context.