Skip to content

Add PUL-F010 regression anchors for composition+index URL parameter#73

Merged
Brad-Edwards merged 1 commit intodevfrom
19-pul-f010-url-parameter-index
May 4, 2026
Merged

Add PUL-F010 regression anchors for composition+index URL parameter#73
Brad-Edwards merged 1 commit intodevfrom
19-pul-f010-url-parameter-index

Conversation

@Brad-Edwards
Copy link
Copy Markdown
Contributor

Summary

PUL-F010 — when the index URL parameter is present alongside a
composition, the runtime SHALL position playback at the given
zero-based index within the composition.

The runtime path that satisfies PUL-F010 already shipped end-to-end
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, following the regression-anchor precedent set by
the PUL-F009 PR (tests/runtime/scene-loader.test.ts:177).

What changed

  • tests/runtime/scene-loader.test.ts — new describe block
    'composition + index positions playback (PUL-F010)' with two
    regression anchors:
    • ?composition=trailer&index=2 against a 4-entry manifest selects
      manifest[2] as the head and slices forward (proves zero-based
      positional semantics for N > 1; distinguishes from PUL-F009's
      index=1 anchor).
    • Two sequential loader.handle() calls against the same
      composition with index=0 then index=2 resolve to different
      head scenes (proves the index parameter — not the composition
      id — decides where in the composition playback starts).
  • docs/adrs/013-url-navigation-grammar-boundary.md — extends ADR-013
    to name PUL-F010 explicitly: index is not scene identity, an id
    alias, or a persistent bookmark; adds the "PUL-F010 forks from the
    existing composition path" risk + mitigation.
  • docs/adrs/014-url-scene-target-selection.md — records that
    composition + index is PUL-F010's positional navigation
    behavior, that the head scene is manifest[index], and adds the
    "index handling creates a second playback state machine" risk +
    mitigation.
  • CHANGELOG.md — entries for the new anchors and the ADR updates.

No production code changes. The runtime contract PUL-F010 names was
already satisfied by the dispatcher (resolveSceneNavigation
resolveCompositionAndIndex in src/runtime/scene-navigation.ts)
and the loader (createSceneLoader in src/runtime/scene-loader.ts).

Test plan

  • pnpm lint — clean
  • pnpm typecheck — clean
  • pnpm test — 510 tests pass (12 files; scene-loader spec
    grew from 19 → 21 tests with the two new anchors)
  • pre-commit run --all-files — clean
  • gc_codex_review (uncommitted, cycle 1) — 0 findings (core
    reviewer + security reviewer)

Closes #19

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.
@sonarqubecloud
Copy link
Copy Markdown

sonarqubecloud Bot commented May 4, 2026

@Brad-Edwards
Copy link
Copy Markdown
Contributor Author

gc_codex_review cycle 1 of 2 complete for PR #73. Posted by the MCP server to enforce the hard-cap-2 contract (issue #794). Do not edit or delete — used by the next gc_codex_review invocation to count cycles.

@Brad-Edwards Brad-Edwards merged commit 8ded66f into dev May 4, 2026
7 checks passed
@Brad-Edwards Brad-Edwards deleted the 19-pul-f010-url-parameter-index branch May 4, 2026 23:39
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