Skip to main content

reel-driven-development

Reel Driven Development (RDD) - turn recorded user walks (reels) into domain stories and outcome objects

PyPi PyPI Status License pypi format downloads
GitHub Github Actions Build Release Contributors Last Commit GitHub issues GitHub closed issues
Code style-black imports-isort
Docs API Docs formatter-docformatter style-google

Demo

See a reel for yourself: the GenWiki demo reel (7 hops) on rdd.bitplan.com - true inspection mode, your verdicts stay on your device. Reviewers get a link by mail - no account, no password.

Installation

pip install reel-driven-development

or isolated with pipx:

pipx install reel-driven-development

Both put the rdd command and the tool entry points on the PATH.

Documentation

Wiki

Authors

Reel Driven Development

A reel is a recorded user walk - e.g. a screen-share demo where a domain expert walks through a system while talking. RDD treats the reel as a graph walk:

  • every context switch (page, browser tab, application) and every relevant interaction (submenu, filter, zoom, sort) is a hop
  • the narrative drives the sampling, never the clock
  • every hop gets an evidence frame (screenshot) or a proven-absent note
  • findings become outcome objects: a frustration spoken during a walk becomes a bug report, which is an acceptance criterion, which is an example

HopDetection was the first step - issue #1; the requirements epic is issue #7.

rdd - the one command name

rdd dispatches to the tools of the pipeline, so a user has to know one name - the name of what we do:

subcommand tool purpose
rdd detect hopdetect find the hops of a reel and capture the evidence frames
rdd doc reeldoc generate the reel document from a Recording
rdd review reelreview serve one reel folder for review
rdd site reelsite serve the reel site; --init initializes it, --mint mints a review token

rdd without a subcommand lists them; the tool names stay available as entry points of their own.

rdd detect flags

flag meaning default change it when
--detector the detector to find the hops with, by name Content comparing detectors, or one detector misses hops on this material
--start segment start (seconds or MM:SS) 0 processing a part of the reel
--end segment end (seconds or MM:SS) video duration processing a part of the reel
--out output directory for the evidence frames, hops.yaml and config.yaml hops keeping several hop sets apart
--progress show the progress bar of the running detection off a run over a long reel must not be silent (issue #6)

rdd detect --help lists these together with the standard options of pybasemkit.

Detectors

Hop candidates come from the detectors of PySceneDetect, which benchmarks them.

Each detector is on offer at its library default and at half and double its threshold. ThresholdDetector is not on offer: it detects fades to a near-black level.

Cuts found on examples/recordings/genwiki-walk - 1501 frames, 60 s, about 1.4 s per run:

detector half default double
Adaptive 32 15 11
Content 17 9 0
Hash 32 12 0
Histogram 13 10 7

Output

A run writes to --out:

  • hop-<hh>h<mm>m<ss>s[<ms>ms].jpg - the evidence frame of each hop, the full frame as recorded, named by its time offset so curation never renames a surviving frame (issue #21)
  • hops.yaml - the hop records, whose field names are the property names of Concept:HopContent; node, url and summary stay empty because they come from the transcript and are never guessed from the picture
  • config.yaml - the values that decided this hop set, so a run can be repeated from its own output (issue #4)

Example: GenWiki walk

rdd detect examples/recordings/genwiki-walk/genwiki-walk.mp4 --detector Content --out hops
genwiki-walk.mp4: 9 hops from Content over 1501 frames -> hops

Raw results of an earlier run in examples/recordings/genwiki-walk.

Known gaps

  • content outside the walk - participant tiles, a clock, a playing video - can still decide hop boundaries (issue #5)
  • there is no machine-readable progress stream for an agent driving a run (issue #36)
  • transcript-anchored capture of a named moment is not implemented

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

reel_driven_development-0.0.2.tar.gz (2.8 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

reel_driven_development-0.0.2-py3-none-any.whl (69.1 kB view details)

Uploaded Python 3

File details

Details for the file reel_driven_development-0.0.2.tar.gz.

File metadata

  • Download URL: reel_driven_development-0.0.2.tar.gz
  • Upload date:
  • Size: 2.8 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for reel_driven_development-0.0.2.tar.gz
Algorithm Hash digest
SHA256 5bfd6fca4fe00cbf268d182fff5b69e06270019b46c3ff12976a3e03fda6c56f
MD5 d7d022bf4b4d84da87cd26bcde585455
BLAKE2b-256 df941bf17dfa20c0048a7e10a24a9745ca9e54cb01b610aac1c5b363c8e8d36e

See more details on using hashes here.

Provenance

The following attestation bundles were made for reel_driven_development-0.0.2.tar.gz:

Publisher: upload-to-pypi.yml on WolfgangFahl/reel-driven-development

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file reel_driven_development-0.0.2-py3-none-any.whl.

File metadata

File hashes

Hashes for reel_driven_development-0.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 640e74854617c27c7cff0d7f44d9b065e52f03fc3157572bc66e8b739d0f4b71
MD5 1420c5071a28c67c0f08c1685b39a696
BLAKE2b-256 d193d33cd98ecffc3634ee98757e23047879eab1ad9f2d1dd144c90cb315e558

See more details on using hashes here.

Provenance

The following attestation bundles were made for reel_driven_development-0.0.2-py3-none-any.whl:

Publisher: upload-to-pypi.yml on WolfgangFahl/reel-driven-development

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page