Skip to content

Add scene URL parameter resolver (PUL-F008)#70

Merged
Brad-Edwards merged 18 commits intodevfrom
17-pul-f008-url-parameter-scene
May 4, 2026
Merged

Add scene URL parameter resolver (PUL-F008)#70
Brad-Edwards merged 18 commits intodevfrom
17-pul-f008-url-parameter-scene

Conversation

@Brad-Edwards
Copy link
Copy Markdown
Contributor

Summary

  • Implements PUL-F008: when the scene URL parameter is present, the
    runtime parses it once at the boundary, validates the identifier
    shape via the shared isKebabIdentifier rule, resolves existence
    via the scene registry, and surfaces malformed/unknown ids as
    navigation errors before any lifecycle hook runs.
  • Adds src/runtime/url-navigation.ts with resolveSceneNavigationTarget
    (pure parser → SceneNavigationTarget | null) and
    loadSceneNavigationTarget (lifecycle bridge that reuses
    resolveComposition so the URL path inherits PUL-F004's preload →
    create → timeline → cleanup ordering and PUL-F006's
    mandatory-cleanup invariant).
  • Records ADR-013 (codex preflight added the file; this PR registers
    it in the ADR index and builds the runtime to its constraints) and
    a 43-test Vitest spec covering every PUL-F008 clause and ADR-013
    guardrail (input shapes, scene-absent → null, repeated-parameter
    rejection, malformed-shape rejection, registry-miss errors,
    lifecycle-untouched-on-failure, orthogonality with mode /
    composition / index / beat, the scene overrides index
    identity rule, and end-to-end loading via the resolver bridge).

Test plan

  • pnpm lint && pnpm typecheck && pnpm test — green (379 tests).
  • pre-commit run --all-files — green.
  • CI green on dev base.
  • SonarCloud quality gate OK and zero open issues / hotspots
    on the PR.
  • Codex review and refactor review surface no findings.
  • Test-quality review surfaces no findings.

Closes #17

@Brad-Edwards Brad-Edwards force-pushed the 17-pul-f008-url-parameter-scene branch from a68cc19 to 9863c72 Compare May 3, 2026 23:15
@sonarqubecloud
Copy link
Copy Markdown

sonarqubecloud Bot commented May 4, 2026

@Brad-Edwards Brad-Edwards merged commit 5e0dc52 into dev May 4, 2026
7 checks passed
@Brad-Edwards Brad-Edwards deleted the 17-pul-f008-url-parameter-scene branch May 4, 2026 00:09
Brad-Edwards added a commit that referenced this pull request May 4, 2026
PUL-F010's runtime path (parser, dispatcher, loader) shipped with
PUL-F008 (PR #70) and was reinforced for PUL-F009 by PR #72; this
PR pins PUL-F010's distinctive contract — the index parameter
positions playback at the zero-based composition entry — at the
loader boundary so a future refactor cannot silently collapse
composition-index to a head-of-manifest load, off-by-one the
index, or single-load manifest[index] and drop trailing entries.

Also extends ADR-013 and ADR-014 to name PUL-F010 explicitly:
ADR-013 records that index is not scene identity / id alias /
persistent bookmark and adds the "PUL-F010 forks from composition
path" risk + mitigation; ADR-014 records that composition+index is
PUL-F010's positional navigation behavior and adds the "index
handling creates a second playback state machine" risk + mitigation.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant