Sign in to create and edit playbooks. Sign In Register

Present Findings with Streamlit

Analytics Communication Streamlit, ECS Fargate, ALB

Delivery Constraint & Opportunity Analysis · Updated 1 month, 2 weeks ago

Content

Skill: Present Findings with Streamlit

Capability Domain: Analytics Communication
Technology Stack: Streamlit, ECS Fargate, ALB

When to use

Insights Communicator picked the existing mart as the story surface.

Templates (starter + live lake)

Do not scaffold empty pages. Customize:
- streamlit/pages/0_Delivery_Cycle.py — effort / wall-clock / impact
- streamlit/pages/1_Opportunity_Quadrant.py
- streamlit/pages/2_Deficiency_Register.py — dE/dK/dI
- streamlit/pages/3_Stage_Detail.py — promoted_eda.yaml only
- Tabs 4_Commits.py … 10_Sprints.py (skip-when in tab_pages.py)
- YAML in streamlit/data/
- Dockerfile must COPY data data/
Look-until-trusted: 11_Feature_Cycle_Time.py, 12_Lake_Explorer.py — never first.

Recipe

  1. Pages on the ECS+ALB mart (never App Runner): reconstructed-cycle swimlane first (three metrics), then the opportunity quadrant, then the deficiency register (Action Register table: finding + decision + dE/dK/dI + receiver), then stage detail.
  2. Numbers, tags, and routes come from streamlit/data/*.yaml, not a fresh EDA and not a new classification. Receivers are named only: AI SDLC (dE automate/delegate), process/tooling (other dE), Team Upskill Engine (dK candidates), staffing (dI). Do not author modules on the mart.
  3. After the story pages, instantiate the Starter mart tabs below. A tab is a drill-down, not the opening visual. Skip via tab_is_skipped against contract views.
  4. Stage-detail and tab charts use skill Metric Render Catalog pairings. Label units. Issue lead/cycle (business days) and MR cycle (hours) stay on separate charts.
  5. Contributor charts: name the role (author / integrator / reviewer). Show n. Do not treat assignment counts as approvals.
  6. Exec duration KPIs: median + n. Do not caption a mean of daily averages as "the" cycle time.
  7. Browser-verify the story path end to end (cycle → quadrant → register → a stage), then each tab that was instantiated. A loading-skeleton screenshot is not verification.

Starter mart tabs

A portable inventory. Skip a tab when every required Scope Contract view for that tab is absent. Do not invent joins across sources without an explicit key (issue key, change number, commit SHA). Do not hard-code a tenant, board, repo, project key, or status list — read those from the contract.

Skip-when vs query. Skip-when is for missing views. If the view exists, run Athena (shared streamlit/tab_athena.py), pin QueryExecutionId, empty cohort names the window. Do not leave print("Instantiate: …") as the tab body.

Live GitHub-only lake (opsdl). Instantiate Commits, Work items (volume only — omit lead/cycle without jira_status_segments), Changes (MR hours, not issue days), Pipelines (top failing = workflow name; job-level extract is not in the lake), Load (risk signal). Skip Defects and Sprints unless those views exist.

Shared rules (all tabs)
- Windows: 7 / 14 / 30 calendar days (sprint tab may use closed-sprint count instead).
- Period-over-period: fetch 2 × window and split, or use an explicit prior offset. Inverse color when lower is better.
- Zero-fill missing calendar days on daily series. Empty state: say what cohort is empty (“no resolved work items in window”). Do not draw a zero duration as if work finished.
- Duration KPIs: per-item median + n (optionally min/max). A mean of daily averages is unweighted by volume.
- Definitions for issue clocks: skill Jira Flow Extract. Render pairings: skill Metric Render Catalog.

Tab: Commits

Required views. Commit / author facts from the VCS extract.
Skip when. No commit view is scoped.

Metric Compute
Commits / day Count commit rows with committed_at (or equivalent) in the day. Zero-fill the window.
Active authors Distinct author identities in the window (use the contract identity key, not display name alone).
Author share Author commit count / window commit count. Donut or ranked bar.
Type mix If messages follow a conventional-commit convention, bucket by type prefix; otherwise omit.

Do not treat commit volume as delivery of a change. Bots: apply the contract filter; do not guess.

Tab: Work items

Required views. Issue facts plus changelog-derived status segments (skill Jira Flow Extract).
Skip when. No issue view is scoped. If segments are missing, show volume KPIs only — omit lead, cycle, and time-in-status.

Metric Compute
Closed / day Count items with resolutiondate on that calendar day.
Touched / day Count items with updated on that calendar day (not a substitute for closed).
Lead time Cohort = resolved in window. Business days created → resolutiondate. Show count, avg, median, min, max.
Cycle time Same cohort, exclude never-started. Business days first Started segment → resolutiondate. Started set is parameterized (contract / workflow), not a hardcoded name.
Time-in-status Calendar hours per status; the open segment ends at now. Journey strip in configured workflow order — not a Pulse KPI.

Do not use board sprint reports as this clock. Do not plot lead/cycle on the same unlabeled axis as MR hours.

Tab: Changes

Required views. Merge-request or pull-request facts (opened, merged, timestamps, actors).
Skip when. No MR/PR view is scoped.

Metric Compute
Opened / day Count changes with created_at on that day.
Merged / day Count changes with merged_at on that day.
MR / PR cycle Cohort = merged in window. Wall-clock hours created_at → merged_at. Median, mean, min, max, n.
Source → trunk band Optional. When the contract names a trunk / default-branch convention, group cycle by source-branch pattern; show avg + min/max. Omit if no convention is recorded.
Integrators Distinct merge-clicker (or merge-commit author) counts. Label the role integrator.
Reviewers Assigned-reviewer counts. Assignments, not approvals. Empty series usually means the extract never stored assignees.

Author of the change ≠ integrator ≠ assigned reviewer. Do not combine those counts into one “contributor” bar.

Tab: Pipelines

Required views. Workflow / pipeline / job runs.
Skip when. No CI view is scoped.

Metric Compute
Failure rate Failed runs / all terminal runs in the window (exclude cancelled if the contract says to). Inverse KPI color.
Status-by-day Stacked counts of terminal status per calendar day. Zero-fill days.
Duration trend Per-run duration (start → terminal). Line of daily median or p50; optional min–max. Label the unit.
Top failing jobs or reasons Rank by failure count in the window. Horizontal bar. On a GitHub-only lake, top failing = workflow name; job-level extract is not in the lake.

Do not treat a red pipeline as a work-item cycle-time input.

Tab: Load

Required views. Commit timestamps (same commit view as Commits is enough).
Skip when. No commit timestamps are scoped.

Metric Compute
Long-day share Sessions (or commit clusters) whose local span exceeds the contract long-day threshold; share of authors or of sessions.
Weekend share Commits (or sessions) on the contract weekend definition.
Names under load Rank identities by long-day / weekend volume. Risk signal only.

Caption as a risk signal, not a performance score. Do not open the mart on this tab.

Tab: Defects

Required views. Work items typed as bug/defect or an equivalent defect view in the contract.
Skip when. The scoped issue types / views do not distinguish defects.

Metric Compute
Opened vs closed Created vs resolved counts in the window (daily or totals).
Time-to-target-status Business days or hours from created (or first Seen) to the contract target status (e.g. Done). Parameterize the target; do not hard-code it here.
Open-age buckets Still-open items: now − created (or now − first Seen), bucketed. Inverse color on aging KPIs.

Same clock rules as Work items when using issue timestamps. Do not mix with MR hours.

Tab: Sprints

Required views. Agile sprint snapshots (committed vs completed points, dates).
Skip when. No sprint snapshot was extracted. A board name in Jira is not enough — you need snapshot rows.

Metric Compute
Completed points Sum of completed (or delivered) points on closed sprints in the lookback.
Committed vs delivered Side-by-side per closed sprint.
Rolling average Mean completed points over the last N closed sprints (N from the window control).
Unestimated share Items without points / items in the sprint snapshot.

Separate from issue lead/cycle. Do not use sprint reports as the flow clock.

Story vs tabs

The reconstructed delivery cycle (all stages, effort / wall-clock / impact) is the opening story page. Next: opportunity quadrant, then the deficiency register, then stage detail. The register is not a starter tab. Tabs are look-until-trusted and stakeholder drill-down. Do not reorder the mart so Commits or Changes loads first.

Pitfalls

  • Mart tabs must query Athena when contract views exist. Skip-when is for missing views. If the view exists, run Athena (shared streamlit/tab_athena.py), pin QueryExecutionId, empty cohort names the window. Do not leave print("Instantiate: …") as the tab body.
  • streamlit/data/promoted_eda.yaml rows: [] is still correct until activity 398 promotes Look-until-Trusted survivors. TSY floor is still cycle + quadrant + deficiency register. Do not dump Metric Render Catalog. Do not treat empty promoted-eda as a bug in activity 254.
  • Leading with Feature Cycle Time detail instead of the reconstructed cycle.
  • Implementing new agent products on the dashboard.
  • A contributor leaderboard as the first screen.
  • Mixing clocks or omitting sample size.
  • Instantiating a tab whose contract views do not exist.
  • Hard-coding one tenant's repos, boards, issue types, or status names into the mart.
  • Re-tagging dE/dK/dI or turning dK rows into lesson outlines.
Details
Capability Domain:
Analytics Communication
Technology Stack:
Streamlit, ECS Fargate, ALB
Created:
1 month, 3 weeks ago
Updated:
1 month, 2 weeks ago
Playbook
Delivery Constraint & Opportunity Analysis

v25.1

View Playbook
Activities Using This Skill 1