# Redirect short URL

Redirect visitors via short URL — one feature of the frozen shlink map, read out of the product's own
source at commit 4a8fee47d48b and named by a model. Nothing below was typed by a person: every
figure, path, line and quote on this page is from the exported bundle the map is drawn from.

- Page: https://featkpr.com/map/shlink/redirect-short-url
- The whole map: https://featkpr.com/map/shlink (markdown: https://featkpr.com/map/shlink.md)
- Module: Core — 2 features in that band
- Status: code-only, awaiting a source
- HTTP operations: GET /{shortCode}/track, GET /{shortCode}
- Evidence: 2 citations across 1 file, all at commit 4a8fee47d48bcb949d6a5729ef32994f1f41464e

## What it is called, and who called it

The name is a model's answer, recorded as advice with the confidence it gave — not a fact
read out of the code. The citations below are the facts.

- Label (what the map draws): Redirect short URL
- Name (what it does): Redirect visitors via short URL
- Model: anthropic/claude-sonnet-5
- Mode: decide
- Confidence: 0.5
- Named at: 2026-09-24T00:15:47Z
- Naming record: 35b2191fec3aa8ea34f7ef4f6646e79d502ea2701c2f915b59de77ec4a106876
- Judge record: caa7579b7665d6750e7e67f356822c7e2df6e065200d51bbd6f8b8473ea111a3

## Which module it sits in, and how that was decided

- Drawn in: Core
- The module the judge gave it: Settings
- How the module was decided: the founding candidate's component (candidate.extracted.component, invariant 26's module). The judge's module_overlay is 'Settings' for every feature in this store: the naming run was given the BookStack target config (its spend.recorded is titled 'auto-e2e init_naming bookstack'), so it answered in BookStack's module vocabulary. The API's own /spine still returns that one Settings band; this bundle does not.

## The evidence

2 citations in 1 file. Each is quoted exactly
as it was read, and every one is pinned at commit 4a8fee47d48bcb949d6a5729ef32994f1f41464e.

### 1. GET /{shortCode}/track

- Kind: screen
- Rung: route
- Found by: mezzio.config_routes
- Extractor key: `route|GET|Shlinkio\Shlink\Core\Action\PixelAction|shortCode`
- Commit: 4a8fee47d48bcb949d6a5729ef32994f1f41464e
- Anchored at: `config/autoload/routes.config.php` line 88, bytes 4074-4463
- Blob: d5924d93f29ab5ad7d69b59512a6eb45a7d674e48585cd2cded545268f771c4b

Quoted from the source, exactly:

```
[
                'name' => CoreAction\PixelAction::class,
                'path' => '/{shortCode}/track',
                'middleware' => [
                    IpAddress::class,
                    IpGeolocationMiddleware::class,
                    CoreAction\PixelAction::class,
                ],
                'allowed_methods' => [RequestMethodInterface::METHOD_GET],
            ]
```

### 2. GET /{shortCode}

- Kind: screen
- Rung: route
- Found by: mezzio.config_routes
- Extractor key: `route|GET|Shlinkio\Shlink\Core\Action\RedirectAction|shortCode`
- Commit: 4a8fee47d48bcb949d6a5729ef32994f1f41464e
- Anchored at: `config/autoload/routes.config.php` line 98, bytes 4477-4955
- Blob: d5924d93f29ab5ad7d69b59512a6eb45a7d674e48585cd2cded545268f771c4b

Quoted from the source, exactly:

```
[
                'name' => CoreAction\RedirectAction::class,
                'path' => sprintf('/{shortCode}%s', $shortUrlRouteSuffix),
                'middleware' => [
                    IpAddress::class,
                    IpGeolocationMiddleware::class,
                    TrimTrailingSlashMiddleware::class,
                    CoreAction\RedirectAction::class,
                ],
                'allowed_methods' => [RequestMethodInterface::METHOD_GET],
            ]
```

## What is empty here

These are zero. They are printed with their values rather than left out, because a
section quietly missing reads as a section that is full.

- Scenarios under it (`tree.total`): 0
- Scenarios covered (`coverage`): 0 of 0, by 0 tests
- Tests (`tests`): 0
- Screens (`screens`): 0
- Flows it belongs to (`flows`): 0
- Merge requests that touched it (`touched_by + recent_requests`): 0
- Open questions (`open_questions`): 0

This feature has been READ, not crawled and not run: its status is `code-only, awaiting a source`.

Across the whole map: 0 scenarios, 0 tests, 0 screens, 0 flows, 0 merge requests and 0 open questions, over 20 features.

## Where these came from

- Product: shlink
- Bundle: frozen, as of store sequence 78, 2026-09-24T00:15:47Z
- Commit every citation is pinned at: 4a8fee47d48bcb949d6a5729ef32994f1f41464e
- Events hash: 94dd0b7f8b14cfcc343621afa488b4c894c89e44920e5cd245e8617c2ea2e1c7
- View hash: 2100871e52c9ef1eb925163f933ccf397c663b2ef7af46b66cdf42579202d6b3
- `events_hash` hashes the event rows this bundle was built from; `view_hash` hashes the rendered view and is what `ae view hash` prints for the same store. Two digests of one store, never equal to each other.
- Repository: https://github.com/shlinkio/shlink — the --repo flag, a declared input. The store holds only a commit: no candidate or blob payload carries a repository or a URL. Never present this as a store fact.
- The event census behind the map, the 2 refused batches and what the naming cost: https://featkpr.com/map/shlink.md

## The rest of this module

- [Robots.txt](https://featkpr.com/map/shlink/robots-txt) — GET /robots.txt

## Also here

- This page as HTML: https://featkpr.com/map/shlink/redirect-short-url
- The whole map: https://featkpr.com/map/shlink
- The whole map as markdown: https://featkpr.com/map/shlink.md
