openai / symphony
File Churn

File change frequency (churn) shows the distribution of file updates (days with at least one commit).

Overview
File Change Frequency Overall
  • There are 30 files with 7,752 lines of code.
    • 0 files changed more than 100 times (0 lines of code)
    • 0 files changed 51-100 times (0 lines of code)
    • 0 files changed 21-50 times (0 lines of code)
    • 2 files changed 6-20 times (1,814 lines of code)
    • 28 files changed 1-5 times (5,938 lines of code)
0% | 0% | 0% | 23% | 76%
Legend:
101+
51-100
21-50
6-20
1-5

explore: grouped by folders | grouped by update frequency | data
Contributors Count Frequency Overall
  • There are 30 files with 7,752 lines of code.
    • 0 files changed by more than 25 contributors (0 lines of code)
    • 0 files changed by 11-25 contributors (0 lines of code)
    • 0 files changed by 6-10 contributors (0 lines of code)
    • 16 files changed by 2-5 contributors (5,509 lines of code)
    • 14 files changed by 1 contributor (2,243 lines of code)
0% | 0% | 0% | 71% | 28%
Legend:
26+
11-25
6-10
2-5
1

explore: grouped by folders | grouped by contributors count | data
File Change Frequency per File Extension
ex, exs, md, txt, yaml, sh, css, gitignore, py, gitattributes, toml
File Change Frequency per Extension
The number of recorded file updates
101+
51-100
21-50
6-20
1-5
ex0% | 0% | 0% | 25% | 74%
css0% | 0% | 0% | 0% | 100%
exs0% | 0% | 0% | 0% | 100%
toml0% | 0% | 0% | 0% | 0%
py0% | 0% | 0% | 0% | 0%
File Change Frequency per Logical Decomposition
primary
primary (file change frequency)
The number of recorded file updates
101+
51-100
21-50
6-20
1-5
elixir0% | 0% | 0% | 23% | 76%
.codex0% | 0% | 0% | 0% | 0%
Most Frequently Changed Files (Top 43)

See data for all files...

File# lines# unitscreatedlast modified# changes
(days)
# contributorsline
churn
first
contributor
latest
contributor
presenter.ex
in elixir/lib/symphony_elixir_web
213 - 2026-03-05 2026-06-05 6 4 +287 / -45 frantic@openai.com sharmila@openai.com
orchestrator.ex
in elixir/lib/symphony_elixir
1601 - 2026-03-10 2026-06-05 6 4 +886 / -392 frantic@openai.com sharmila@openai.com
agent_runner.ex
in elixir/lib/symphony_elixir
171 - 2026-03-10 2026-06-04 5 4 +148 / -87 frantic@openai.com sharmila@openai.com
app_server.ex
in elixir/lib/symphony_elixir/codex
943 - 2026-03-10 2026-06-01 5 4 +666 / -553 frantic@openai.com yansenzhou@openai.com
dashboard_live.ex
in elixir/lib/symphony_elixir_web/live
400 - 2026-03-05 2026-06-05 4 4 +473 / -27 frantic@openai.com sharmila@openai.com
schema.ex
in elixir/lib/symphony_elixir/config
469 - 2026-03-10 2026-06-04 4 3 +590 / -27 frantic@openai.com sharmila@openai.com
static_assets.ex
in elixir/lib/symphony_elixir_web
42 - 2026-03-05 2026-06-09 3 2 +49 / -0 frantic@openai.com sharmila@openai.com
layouts.ex
in elixir/lib/symphony_elixir_web/components
54 - 2026-03-05 2026-06-09 3 2 +63 / -2 frantic@openai.com sharmila@openai.com
mix.exs
in elixir
93 - 2026-03-05 2026-06-01 3 2 +23 / -4 frantic@openai.com yansenzhou@openai.com
config.ex
in elixir/lib/symphony_elixir
125 - 2026-03-10 2026-06-01 3 2 +88 / -872 frantic@openai.com yansenzhou@openai.com
workspace.ex
in elixir/lib/symphony_elixir
384 - 2026-03-10 2026-06-01 3 2 +305 / -104 frantic@openai.com yansenzhou@openai.com
client.ex
in elixir/lib/symphony_elixir/linear
492 - 2026-03-10 2026-06-04 3 3 +131 / -75 frantic@openai.com sharmila@openai.com
static_asset_controller.ex
in elixir/lib/symphony_elixir_web/controllers
29 - 2026-03-05 2026-06-09 2 2 +38 / -0 frantic@openai.com sharmila@openai.com
router.ex
in elixir/lib/symphony_elixir_web
35 - 2026-03-05 2026-06-09 2 2 +42 / -0 frantic@openai.com sharmila@openai.com
issue.ex
in elixir/lib/symphony_elixir/linear
52 - 2026-06-01 2026-06-04 2 2 +17 / -2 yansenzhou@openai.com sharmila@openai.com
http_server.ex
in elixir/lib/symphony_elixir
73 - 2026-03-05 2026-03-10 2 1 +42 / -481 frantic@openai.com frantic@openai.com
dashboard.css
in elixir/priv/static
406 - 2026-03-05 2026-06-05 2 2 +471 / -0 frantic@openai.com sharmila@openai.com
status_dashboard.ex
in elixir/lib/symphony_elixir
1611 - 2026-03-05 2026-03-10 2 1 +15 / -9 frantic@openai.com frantic@openai.com
error_html.ex
in elixir/lib/symphony_elixir_web
7 - 2026-03-05 2026-03-05 1 1 +8 / -0 frantic@openai.com frantic@openai.com
error_json.ex
in elixir/lib/symphony_elixir_web
7 - 2026-03-05 2026-03-05 1 1 +8 / -0 frantic@openai.com frantic@openai.com
config.exs
in elixir/config
14 - 2026-03-05 2026-03-05 1 1 +16 / -0 frantic@openai.com frantic@openai.com
observability_pubsub.ex
in elixir/lib/symphony_elixir_web
21 - 2026-03-05 2026-03-05 1 1 +25 / -0 frantic@openai.com frantic@openai.com
endpoint.ex
in elixir/lib/symphony_elixir_web
26 - 2026-03-05 2026-03-05 1 1 +32 / -0 frantic@openai.com frantic@openai.com
tracker.ex
in elixir/lib/symphony_elixir
38 - 2026-03-10 2026-03-10 1 1 +1 / -1 frantic@openai.com frantic@openai.com
path_safety.ex
in elixir/lib/symphony_elixir
39 - 2026-03-10 2026-03-10 1 1 +50 / -0 frantic@openai.com frantic@openai.com
symphony_elixir.ex
in elixir/lib
40 - 2026-03-05 2026-03-05 1 1 +1 / -0 frantic@openai.com frantic@openai.com
observability_api_controller.ex
in elixir/lib/symphony_elixir_web/controllers
51 - 2026-03-05 2026-03-05 1 1 +63 / -0 frantic@openai.com frantic@openai.com
prompt_builder.ex
in elixir/lib/symphony_elixir
54 - 2026-06-01 2026-06-01 1 1 +65 / -65 yansenzhou@openai.com yansenzhou@openai.com
ssh.ex
in elixir/lib/symphony_elixir
82 - 2026-03-11 2026-03-11 1 1 +100 / -0 frantic@openai.com frantic@openai.com
dynamic_tool.ex
in elixir/lib/symphony_elixir/codex
180 - 2026-03-11 2026-03-11 1 1 +8 / -11 frantic@openai.com frantic@openai.com
mise.toml
in elixir
3 -
5 -
specs.check.ex
in elixir/lib/mix/tasks
43 -
memory.ex
in elixir/lib/symphony_elixir/tracker
58 -
log_file.ex
in elixir/lib/symphony_elixir
68 -
adapter.ex
in elixir/lib/symphony_elixir/linear
79 -
workflow.ex
in elixir/lib/symphony_elixir
99 -
workspace.before_remove.ex
in elixir/lib/mix/tasks
113 -
workflow_store.ex
in elixir/lib/symphony_elixir
124 -
specs_check.ex
in elixir/lib/symphony_elixir
142 -
cli.ex
in elixir/lib/symphony_elixir
161 -
pr_body.check.ex
in elixir/lib/mix/tasks
177 -
land_watch.py
in .codex/skills/land
536 25
Files With Most Churn (Top 43)
Based on the number of lines added and deleted across all commits.

See data for all files...

File# lines# unitscreatedlast modified# changes
(days)
# contributorsline
churn
first
contributor
latest
contributor
orchestrator.ex
in elixir/lib/symphony_elixir
1601 - 2026-03-10 2026-06-05 6 4 +886 / -392 frantic@openai.com sharmila@openai.com
app_server.ex
in elixir/lib/symphony_elixir/codex
943 - 2026-03-10 2026-06-01 5 4 +666 / -553 frantic@openai.com yansenzhou@openai.com
config.ex
in elixir/lib/symphony_elixir
125 - 2026-03-10 2026-06-01 3 2 +88 / -872 frantic@openai.com yansenzhou@openai.com
schema.ex
in elixir/lib/symphony_elixir/config
469 - 2026-03-10 2026-06-04 4 3 +590 / -27 frantic@openai.com sharmila@openai.com
http_server.ex
in elixir/lib/symphony_elixir
73 - 2026-03-05 2026-03-10 2 1 +42 / -481 frantic@openai.com frantic@openai.com
dashboard_live.ex
in elixir/lib/symphony_elixir_web/live
400 - 2026-03-05 2026-06-05 4 4 +473 / -27 frantic@openai.com sharmila@openai.com
dashboard.css
in elixir/priv/static
406 - 2026-03-05 2026-06-05 2 2 +471 / -0 frantic@openai.com sharmila@openai.com
workspace.ex
in elixir/lib/symphony_elixir
384 - 2026-03-10 2026-06-01 3 2 +305 / -104 frantic@openai.com yansenzhou@openai.com
presenter.ex
in elixir/lib/symphony_elixir_web
213 - 2026-03-05 2026-06-05 6 4 +287 / -45 frantic@openai.com sharmila@openai.com
agent_runner.ex
in elixir/lib/symphony_elixir
171 - 2026-03-10 2026-06-04 5 4 +148 / -87 frantic@openai.com sharmila@openai.com
client.ex
in elixir/lib/symphony_elixir/linear
492 - 2026-03-10 2026-06-04 3 3 +131 / -75 frantic@openai.com sharmila@openai.com
prompt_builder.ex
in elixir/lib/symphony_elixir
54 - 2026-06-01 2026-06-01 1 1 +65 / -65 yansenzhou@openai.com yansenzhou@openai.com
ssh.ex
in elixir/lib/symphony_elixir
82 - 2026-03-11 2026-03-11 1 1 +100 / -0 frantic@openai.com frantic@openai.com
layouts.ex
in elixir/lib/symphony_elixir_web/components
54 - 2026-03-05 2026-06-09 3 2 +63 / -2 frantic@openai.com sharmila@openai.com
observability_api_controller.ex
in elixir/lib/symphony_elixir_web/controllers
51 - 2026-03-05 2026-03-05 1 1 +63 / -0 frantic@openai.com frantic@openai.com
path_safety.ex
in elixir/lib/symphony_elixir
39 - 2026-03-10 2026-03-10 1 1 +50 / -0 frantic@openai.com frantic@openai.com
static_assets.ex
in elixir/lib/symphony_elixir_web
42 - 2026-03-05 2026-06-09 3 2 +49 / -0 frantic@openai.com sharmila@openai.com
router.ex
in elixir/lib/symphony_elixir_web
35 - 2026-03-05 2026-06-09 2 2 +42 / -0 frantic@openai.com sharmila@openai.com
static_asset_controller.ex
in elixir/lib/symphony_elixir_web/controllers
29 - 2026-03-05 2026-06-09 2 2 +38 / -0 frantic@openai.com sharmila@openai.com
endpoint.ex
in elixir/lib/symphony_elixir_web
26 - 2026-03-05 2026-03-05 1 1 +32 / -0 frantic@openai.com frantic@openai.com
mix.exs
in elixir
93 - 2026-03-05 2026-06-01 3 2 +23 / -4 frantic@openai.com yansenzhou@openai.com
observability_pubsub.ex
in elixir/lib/symphony_elixir_web
21 - 2026-03-05 2026-03-05 1 1 +25 / -0 frantic@openai.com frantic@openai.com
status_dashboard.ex
in elixir/lib/symphony_elixir
1611 - 2026-03-05 2026-03-10 2 1 +15 / -9 frantic@openai.com frantic@openai.com
issue.ex
in elixir/lib/symphony_elixir/linear
52 - 2026-06-01 2026-06-04 2 2 +17 / -2 yansenzhou@openai.com sharmila@openai.com
dynamic_tool.ex
in elixir/lib/symphony_elixir/codex
180 - 2026-03-11 2026-03-11 1 1 +8 / -11 frantic@openai.com frantic@openai.com
config.exs
in elixir/config
14 - 2026-03-05 2026-03-05 1 1 +16 / -0 frantic@openai.com frantic@openai.com
error_html.ex
in elixir/lib/symphony_elixir_web
7 - 2026-03-05 2026-03-05 1 1 +8 / -0 frantic@openai.com frantic@openai.com
error_json.ex
in elixir/lib/symphony_elixir_web
7 - 2026-03-05 2026-03-05 1 1 +8 / -0 frantic@openai.com frantic@openai.com
tracker.ex
in elixir/lib/symphony_elixir
38 - 2026-03-10 2026-03-10 1 1 +1 / -1 frantic@openai.com frantic@openai.com
symphony_elixir.ex
in elixir/lib
40 - 2026-03-05 2026-03-05 1 1 +1 / -0 frantic@openai.com frantic@openai.com
mise.toml
in elixir
3 -
5 -
specs.check.ex
in elixir/lib/mix/tasks
43 -
memory.ex
in elixir/lib/symphony_elixir/tracker
58 -
log_file.ex
in elixir/lib/symphony_elixir
68 -
adapter.ex
in elixir/lib/symphony_elixir/linear
79 -
workflow.ex
in elixir/lib/symphony_elixir
99 -
workspace.before_remove.ex
in elixir/lib/mix/tasks
113 -
workflow_store.ex
in elixir/lib/symphony_elixir
124 -
specs_check.ex
in elixir/lib/symphony_elixir
142 -
cli.ex
in elixir/lib/symphony_elixir
161 -
pr_body.check.ex
in elixir/lib/mix/tasks
177 -
land_watch.py
in .codex/skills/land
536 25
Files With Most Contributors (Top 43)
Based on the number of unique email addresses found in commits.

See data for all files...

File# lines# unitscreatedlast modified# changes
(days)
# contributorsline
churn
first
contributor
latest
contributor
orchestrator.ex
in elixir/lib/symphony_elixir
1601 - 2026-03-10 2026-06-05 6 4 +886 / -392 frantic@openai.com sharmila@openai.com
presenter.ex
in elixir/lib/symphony_elixir_web
213 - 2026-03-05 2026-06-05 6 4 +287 / -45 frantic@openai.com sharmila@openai.com
agent_runner.ex
in elixir/lib/symphony_elixir
171 - 2026-03-10 2026-06-04 5 4 +148 / -87 frantic@openai.com sharmila@openai.com
app_server.ex
in elixir/lib/symphony_elixir/codex
943 - 2026-03-10 2026-06-01 5 4 +666 / -553 frantic@openai.com yansenzhou@openai.com
dashboard_live.ex
in elixir/lib/symphony_elixir_web/live
400 - 2026-03-05 2026-06-05 4 4 +473 / -27 frantic@openai.com sharmila@openai.com
schema.ex
in elixir/lib/symphony_elixir/config
469 - 2026-03-10 2026-06-04 4 3 +590 / -27 frantic@openai.com sharmila@openai.com
client.ex
in elixir/lib/symphony_elixir/linear
492 - 2026-03-10 2026-06-04 3 3 +131 / -75 frantic@openai.com sharmila@openai.com
mix.exs
in elixir
93 - 2026-03-05 2026-06-01 3 2 +23 / -4 frantic@openai.com yansenzhou@openai.com
config.ex
in elixir/lib/symphony_elixir
125 - 2026-03-10 2026-06-01 3 2 +88 / -872 frantic@openai.com yansenzhou@openai.com
workspace.ex
in elixir/lib/symphony_elixir
384 - 2026-03-10 2026-06-01 3 2 +305 / -104 frantic@openai.com yansenzhou@openai.com
static_assets.ex
in elixir/lib/symphony_elixir_web
42 - 2026-03-05 2026-06-09 3 2 +49 / -0 frantic@openai.com sharmila@openai.com
layouts.ex
in elixir/lib/symphony_elixir_web/components
54 - 2026-03-05 2026-06-09 3 2 +63 / -2 frantic@openai.com sharmila@openai.com
dashboard.css
in elixir/priv/static
406 - 2026-03-05 2026-06-05 2 2 +471 / -0 frantic@openai.com sharmila@openai.com
issue.ex
in elixir/lib/symphony_elixir/linear
52 - 2026-06-01 2026-06-04 2 2 +17 / -2 yansenzhou@openai.com sharmila@openai.com
static_asset_controller.ex
in elixir/lib/symphony_elixir_web/controllers
29 - 2026-03-05 2026-06-09 2 2 +38 / -0 frantic@openai.com sharmila@openai.com
router.ex
in elixir/lib/symphony_elixir_web
35 - 2026-03-05 2026-06-09 2 2 +42 / -0 frantic@openai.com sharmila@openai.com
http_server.ex
in elixir/lib/symphony_elixir
73 - 2026-03-05 2026-03-10 2 1 +42 / -481 frantic@openai.com frantic@openai.com
status_dashboard.ex
in elixir/lib/symphony_elixir
1611 - 2026-03-05 2026-03-10 2 1 +15 / -9 frantic@openai.com frantic@openai.com
config.exs
in elixir/config
14 - 2026-03-05 2026-03-05 1 1 +16 / -0 frantic@openai.com frantic@openai.com
ssh.ex
in elixir/lib/symphony_elixir
82 - 2026-03-11 2026-03-11 1 1 +100 / -0 frantic@openai.com frantic@openai.com
tracker.ex
in elixir/lib/symphony_elixir
38 - 2026-03-10 2026-03-10 1 1 +1 / -1 frantic@openai.com frantic@openai.com
path_safety.ex
in elixir/lib/symphony_elixir
39 - 2026-03-10 2026-03-10 1 1 +50 / -0 frantic@openai.com frantic@openai.com
dynamic_tool.ex
in elixir/lib/symphony_elixir/codex
180 - 2026-03-11 2026-03-11 1 1 +8 / -11 frantic@openai.com frantic@openai.com
prompt_builder.ex
in elixir/lib/symphony_elixir
54 - 2026-06-01 2026-06-01 1 1 +65 / -65 yansenzhou@openai.com yansenzhou@openai.com
symphony_elixir.ex
in elixir/lib
40 - 2026-03-05 2026-03-05 1 1 +1 / -0 frantic@openai.com frantic@openai.com
observability_api_controller.ex
in elixir/lib/symphony_elixir_web/controllers
51 - 2026-03-05 2026-03-05 1 1 +63 / -0 frantic@openai.com frantic@openai.com
observability_pubsub.ex
in elixir/lib/symphony_elixir_web
21 - 2026-03-05 2026-03-05 1 1 +25 / -0 frantic@openai.com frantic@openai.com
endpoint.ex
in elixir/lib/symphony_elixir_web
26 - 2026-03-05 2026-03-05 1 1 +32 / -0 frantic@openai.com frantic@openai.com
error_json.ex
in elixir/lib/symphony_elixir_web
7 - 2026-03-05 2026-03-05 1 1 +8 / -0 frantic@openai.com frantic@openai.com
error_html.ex
in elixir/lib/symphony_elixir_web
7 - 2026-03-05 2026-03-05 1 1 +8 / -0 frantic@openai.com frantic@openai.com
mise.toml
in elixir
3 -
5 -
specs_check.ex
in elixir/lib/symphony_elixir
142 -
adapter.ex
in elixir/lib/symphony_elixir/linear
79 -
memory.ex
in elixir/lib/symphony_elixir/tracker
58 -
workflow.ex
in elixir/lib/symphony_elixir
99 -
cli.ex
in elixir/lib/symphony_elixir
161 -
log_file.ex
in elixir/lib/symphony_elixir
68 -
workflow_store.ex
in elixir/lib/symphony_elixir
124 -
pr_body.check.ex
in elixir/lib/mix/tasks
177 -
specs.check.ex
in elixir/lib/mix/tasks
43 -
workspace.before_remove.ex
in elixir/lib/mix/tasks
113 -
land_watch.py
in .codex/skills/land
536 25
Files With Least Contributors (Top 43)
Based on the number of unique email addresses found in commits.

See data for all files...

File# lines# unitscreatedlast modified# changes
(days)
# contributorsline
churn
first
contributor
latest
contributor
land_watch.py
in .codex/skills/land
536 25
pr_body.check.ex
in elixir/lib/mix/tasks
177 -
cli.ex
in elixir/lib/symphony_elixir
161 -
specs_check.ex
in elixir/lib/symphony_elixir
142 -
workflow_store.ex
in elixir/lib/symphony_elixir
124 -
workspace.before_remove.ex
in elixir/lib/mix/tasks
113 -
workflow.ex
in elixir/lib/symphony_elixir
99 -
adapter.ex
in elixir/lib/symphony_elixir/linear
79 -
log_file.ex
in elixir/lib/symphony_elixir
68 -
memory.ex
in elixir/lib/symphony_elixir/tracker
58 -
specs.check.ex
in elixir/lib/mix/tasks
43 -
5 -
mise.toml
in elixir
3 -
status_dashboard.ex
in elixir/lib/symphony_elixir
1611 - 2026-03-05 2026-03-10 2 1 +15 / -9 frantic@openai.com frantic@openai.com
dynamic_tool.ex
in elixir/lib/symphony_elixir/codex
180 - 2026-03-11 2026-03-11 1 1 +8 / -11 frantic@openai.com frantic@openai.com
ssh.ex
in elixir/lib/symphony_elixir
82 - 2026-03-11 2026-03-11 1 1 +100 / -0 frantic@openai.com frantic@openai.com
http_server.ex
in elixir/lib/symphony_elixir
73 - 2026-03-05 2026-03-10 2 1 +42 / -481 frantic@openai.com frantic@openai.com
prompt_builder.ex
in elixir/lib/symphony_elixir
54 - 2026-06-01 2026-06-01 1 1 +65 / -65 yansenzhou@openai.com yansenzhou@openai.com
observability_api_controller.ex
in elixir/lib/symphony_elixir_web/controllers
51 - 2026-03-05 2026-03-05 1 1 +63 / -0 frantic@openai.com frantic@openai.com
symphony_elixir.ex
in elixir/lib
40 - 2026-03-05 2026-03-05 1 1 +1 / -0 frantic@openai.com frantic@openai.com
path_safety.ex
in elixir/lib/symphony_elixir
39 - 2026-03-10 2026-03-10 1 1 +50 / -0 frantic@openai.com frantic@openai.com
tracker.ex
in elixir/lib/symphony_elixir
38 - 2026-03-10 2026-03-10 1 1 +1 / -1 frantic@openai.com frantic@openai.com
endpoint.ex
in elixir/lib/symphony_elixir_web
26 - 2026-03-05 2026-03-05 1 1 +32 / -0 frantic@openai.com frantic@openai.com
observability_pubsub.ex
in elixir/lib/symphony_elixir_web
21 - 2026-03-05 2026-03-05 1 1 +25 / -0 frantic@openai.com frantic@openai.com
config.exs
in elixir/config
14 - 2026-03-05 2026-03-05 1 1 +16 / -0 frantic@openai.com frantic@openai.com
error_json.ex
in elixir/lib/symphony_elixir_web
7 - 2026-03-05 2026-03-05 1 1 +8 / -0 frantic@openai.com frantic@openai.com
error_html.ex
in elixir/lib/symphony_elixir_web
7 - 2026-03-05 2026-03-05 1 1 +8 / -0 frantic@openai.com frantic@openai.com
dashboard.css
in elixir/priv/static
406 - 2026-03-05 2026-06-05 2 2 +471 / -0 frantic@openai.com sharmila@openai.com
workspace.ex
in elixir/lib/symphony_elixir
384 - 2026-03-10 2026-06-01 3 2 +305 / -104 frantic@openai.com yansenzhou@openai.com
config.ex
in elixir/lib/symphony_elixir
125 - 2026-03-10 2026-06-01 3 2 +88 / -872 frantic@openai.com yansenzhou@openai.com
mix.exs
in elixir
93 - 2026-03-05 2026-06-01 3 2 +23 / -4 frantic@openai.com yansenzhou@openai.com
layouts.ex
in elixir/lib/symphony_elixir_web/components
54 - 2026-03-05 2026-06-09 3 2 +63 / -2 frantic@openai.com sharmila@openai.com
issue.ex
in elixir/lib/symphony_elixir/linear
52 - 2026-06-01 2026-06-04 2 2 +17 / -2 yansenzhou@openai.com sharmila@openai.com
static_assets.ex
in elixir/lib/symphony_elixir_web
42 - 2026-03-05 2026-06-09 3 2 +49 / -0 frantic@openai.com sharmila@openai.com
router.ex
in elixir/lib/symphony_elixir_web
35 - 2026-03-05 2026-06-09 2 2 +42 / -0 frantic@openai.com sharmila@openai.com
static_asset_controller.ex
in elixir/lib/symphony_elixir_web/controllers
29 - 2026-03-05 2026-06-09 2 2 +38 / -0 frantic@openai.com sharmila@openai.com
client.ex
in elixir/lib/symphony_elixir/linear
492 - 2026-03-10 2026-06-04 3 3 +131 / -75 frantic@openai.com sharmila@openai.com
schema.ex
in elixir/lib/symphony_elixir/config
469 - 2026-03-10 2026-06-04 4 3 +590 / -27 frantic@openai.com sharmila@openai.com
orchestrator.ex
in elixir/lib/symphony_elixir
1601 - 2026-03-10 2026-06-05 6 4 +886 / -392 frantic@openai.com sharmila@openai.com
app_server.ex
in elixir/lib/symphony_elixir/codex
943 - 2026-03-10 2026-06-01 5 4 +666 / -553 frantic@openai.com yansenzhou@openai.com
dashboard_live.ex
in elixir/lib/symphony_elixir_web/live
400 - 2026-03-05 2026-06-05 4 4 +473 / -27 frantic@openai.com sharmila@openai.com
presenter.ex
in elixir/lib/symphony_elixir_web
213 - 2026-03-05 2026-06-05 6 4 +287 / -45 frantic@openai.com sharmila@openai.com
agent_runner.ex
in elixir/lib/symphony_elixir
171 - 2026-03-10 2026-06-04 5 4 +148 / -87 frantic@openai.com sharmila@openai.com
Correlations

File Size vs. Number of Changes: 30 points

elixir/lib/symphony_elixir_web/components/layouts.ex x: 54 lines of code y: 3 # changes elixir/lib/symphony_elixir_web/controllers/static_asset_controller.ex x: 29 lines of code y: 2 # changes elixir/lib/symphony_elixir_web/router.ex x: 35 lines of code y: 2 # changes elixir/lib/symphony_elixir_web/static_assets.ex x: 42 lines of code y: 3 # changes elixir/lib/symphony_elixir/orchestrator.ex x: 1601 lines of code y: 6 # changes elixir/lib/symphony_elixir_web/live/dashboard_live.ex x: 400 lines of code y: 4 # changes elixir/lib/symphony_elixir_web/presenter.ex x: 213 lines of code y: 6 # changes elixir/priv/static/dashboard.css x: 406 lines of code y: 2 # changes elixir/lib/symphony_elixir/agent_runner.ex x: 171 lines of code y: 5 # changes elixir/lib/symphony_elixir/config/schema.ex x: 469 lines of code y: 4 # changes elixir/lib/symphony_elixir/linear/client.ex x: 492 lines of code y: 3 # changes elixir/lib/symphony_elixir/linear/issue.ex x: 52 lines of code y: 2 # changes elixir/lib/symphony_elixir/codex/app_server.ex x: 943 lines of code y: 5 # changes elixir/lib/symphony_elixir/config.ex x: 125 lines of code y: 3 # changes elixir/lib/symphony_elixir/prompt_builder.ex x: 54 lines of code y: 1 # changes elixir/lib/symphony_elixir/workspace.ex x: 384 lines of code y: 3 # changes elixir/mix.exs x: 93 lines of code y: 3 # changes elixir/lib/symphony_elixir/codex/dynamic_tool.ex x: 180 lines of code y: 1 # changes elixir/lib/symphony_elixir/ssh.ex x: 82 lines of code y: 1 # changes elixir/lib/symphony_elixir/path_safety.ex x: 39 lines of code y: 1 # changes elixir/lib/symphony_elixir/http_server.ex x: 73 lines of code y: 2 # changes elixir/lib/symphony_elixir/status_dashboard.ex x: 1611 lines of code y: 2 # changes elixir/config/config.exs x: 14 lines of code y: 1 # changes elixir/lib/symphony_elixir_web/controllers/observability_api_controller.ex x: 51 lines of code y: 1 # changes elixir/lib/symphony_elixir_web/endpoint.ex x: 26 lines of code y: 1 # changes elixir/lib/symphony_elixir_web/error_html.ex x: 7 lines of code y: 1 # changes elixir/lib/symphony_elixir_web/observability_pubsub.ex x: 21 lines of code y: 1 # changes
6.0
# changes
  min: 1.0
  average: 2.4
  25th percentile: 1.0
  median: 2.0
  75th percentile: 3.0
  max: 6.0
0 1611.0
lines of code
min: 7.0 | average: 258.4 | 25th percentile: 37.25 | median: 63.5 | 75th percentile: 388.0 | max: 1611.0

Number of Contributors vs. Number of Changes: 30 points

elixir/lib/symphony_elixir_web/components/layouts.ex x: 2 # contributors y: 3 # changes elixir/lib/symphony_elixir_web/controllers/static_asset_controller.ex x: 2 # contributors y: 2 # changes elixir/lib/symphony_elixir/orchestrator.ex x: 4 # contributors y: 6 # changes elixir/lib/symphony_elixir_web/live/dashboard_live.ex x: 4 # contributors y: 4 # changes elixir/lib/symphony_elixir/agent_runner.ex x: 4 # contributors y: 5 # changes elixir/lib/symphony_elixir/config/schema.ex x: 3 # contributors y: 4 # changes elixir/lib/symphony_elixir/linear/client.ex x: 3 # contributors y: 3 # changes elixir/lib/symphony_elixir/prompt_builder.ex x: 1 # contributors y: 1 # changes elixir/lib/symphony_elixir/http_server.ex x: 1 # contributors y: 2 # changes
6.0
# changes
  min: 1.0
  average: 2.4
  25th percentile: 1.0
  median: 2.0
  75th percentile: 3.0
  max: 6.0
0 4.0
# contributors
min: 1.0 | average: 1.93 | 25th percentile: 1.0 | median: 2.0 | 75th percentile: 2.25 | max: 4.0

Number of Contributors vs. File Size: 30 points

elixir/lib/symphony_elixir_web/components/layouts.ex x: 2 # contributors y: 54 lines of code elixir/lib/symphony_elixir_web/controllers/static_asset_controller.ex x: 2 # contributors y: 29 lines of code elixir/lib/symphony_elixir_web/router.ex x: 2 # contributors y: 35 lines of code elixir/lib/symphony_elixir_web/static_assets.ex x: 2 # contributors y: 42 lines of code elixir/lib/symphony_elixir/orchestrator.ex x: 4 # contributors y: 1601 lines of code elixir/lib/symphony_elixir_web/live/dashboard_live.ex x: 4 # contributors y: 400 lines of code elixir/lib/symphony_elixir_web/presenter.ex x: 4 # contributors y: 213 lines of code elixir/priv/static/dashboard.css x: 2 # contributors y: 406 lines of code elixir/lib/symphony_elixir/agent_runner.ex x: 4 # contributors y: 171 lines of code elixir/lib/symphony_elixir/config/schema.ex x: 3 # contributors y: 469 lines of code elixir/lib/symphony_elixir/linear/client.ex x: 3 # contributors y: 492 lines of code elixir/lib/symphony_elixir/codex/app_server.ex x: 4 # contributors y: 943 lines of code elixir/lib/symphony_elixir/config.ex x: 2 # contributors y: 125 lines of code elixir/lib/symphony_elixir/prompt_builder.ex x: 1 # contributors y: 54 lines of code elixir/lib/symphony_elixir/workspace.ex x: 2 # contributors y: 384 lines of code elixir/mix.exs x: 2 # contributors y: 93 lines of code elixir/lib/symphony_elixir/codex/dynamic_tool.ex x: 1 # contributors y: 180 lines of code elixir/lib/symphony_elixir/ssh.ex x: 1 # contributors y: 82 lines of code elixir/lib/symphony_elixir/path_safety.ex x: 1 # contributors y: 39 lines of code elixir/lib/symphony_elixir/http_server.ex x: 1 # contributors y: 73 lines of code elixir/lib/symphony_elixir/status_dashboard.ex x: 1 # contributors y: 1611 lines of code elixir/lib/symphony_elixir/tracker.ex x: 1 # contributors y: 38 lines of code elixir/config/config.exs x: 1 # contributors y: 14 lines of code elixir/lib/symphony_elixir_web/endpoint.ex x: 1 # contributors y: 26 lines of code elixir/lib/symphony_elixir_web/error_html.ex x: 1 # contributors y: 7 lines of code elixir/lib/symphony_elixir_web/observability_pubsub.ex x: 1 # contributors y: 21 lines of code
1611.0
lines of code
  min: 7.0
  average: 258.4
  25th percentile: 37.25
  median: 63.5
  75th percentile: 388.0
  max: 1611.0
0 4.0
# contributors
min: 1.0 | average: 1.93 | 25th percentile: 1.0 | median: 2.0 | 75th percentile: 2.25 | max: 4.0

Number of Changes vs. Line Churn: 57 points

elixir/lib/symphony_elixir_web/components/layouts.ex x: 3 # changes y: 65 line churn elixir/lib/symphony_elixir_web/controllers/static_asset_controller.ex x: 2 # changes y: 38 line churn elixir/lib/symphony_elixir_web/router.ex x: 2 # changes y: 42 line churn elixir/lib/symphony_elixir_web/static_assets.ex x: 3 # changes y: 49 line churn elixir/test/symphony_elixir/extensions_test.exs x: 7 # changes y: 1044 line churn SPEC.md x: 6 # changes y: 759 line churn elixir/README.md x: 8 # changes y: 150 line churn elixir/lib/symphony_elixir/orchestrator.ex x: 6 # changes y: 1278 line churn elixir/lib/symphony_elixir_web/live/dashboard_live.ex x: 4 # changes y: 500 line churn elixir/lib/symphony_elixir_web/presenter.ex x: 6 # changes y: 332 line churn elixir/priv/static/dashboard.css x: 2 # changes y: 471 line churn elixir/WORKFLOW.md x: 3 # changes y: 118 line churn elixir/lib/symphony_elixir/agent_runner.ex x: 5 # changes y: 235 line churn elixir/lib/symphony_elixir/config/schema.ex x: 4 # changes y: 617 line churn elixir/lib/symphony_elixir/linear/client.ex x: 3 # changes y: 206 line churn elixir/lib/symphony_elixir/linear/issue.ex x: 2 # changes y: 19 line churn elixir/test/support/test_support.exs x: 4 # changes y: 68 line churn elixir/test/symphony_elixir/core_test.exs x: 6 # changes y: 685 line churn elixir/test/symphony_elixir/workspace_and_config_test.exs x: 5 # changes y: 792 line churn README.md x: 2 # changes y: 12 line churn elixir/lib/symphony_elixir/codex/app_server.ex x: 5 # changes y: 1219 line churn elixir/lib/symphony_elixir/config.ex x: 3 # changes y: 960 line churn elixir/lib/symphony_elixir/linear/comment.ex x: 1 # changes y: 232 line churn elixir/lib/symphony_elixir/prompt_builder.ex x: 1 # changes y: 130 line churn elixir/lib/symphony_elixir/workspace.ex x: 3 # changes y: 409 line churn elixir/mix.exs x: 3 # changes y: 27 line churn elixir/test/symphony_elixir/app_server_test.exs x: 5 # changes y: 1229 line churn elixir/test/symphony_elixir/linear_comment_test.exs x: 1 # changes y: 64 line churn docs/symphony-smoke-board-review.md x: 1 # changes y: 3 line churn .github/workflows/pr-description-lint.yml x: 2 # changes y: 9 line churn .github/workflows/make-all.yml x: 1 # changes y: 6 line churn elixir/Makefile x: 3 # changes y: 35 line churn elixir/lib/symphony_elixir/codex/dynamic_tool.ex x: 1 # changes y: 19 line churn elixir/lib/symphony_elixir/ssh.ex x: 1 # changes y: 100 line churn elixir/test/support/live_e2e_docker/Dockerfile x: 1 # changes y: 22 line churn elixir/test/support/live_e2e_docker/live_worker_entrypoint.sh x: 1 # changes y: 13 line churn elixir/test/symphony_elixir/dynamic_tool_test.exs x: 1 # changes y: 108 line churn elixir/test/symphony_elixir/live_e2e_test.exs x: 2 # changes y: 980 line churn elixir/test/symphony_elixir/ssh_test.exs x: 1 # changes y: 199 line churn elixir/lib/symphony_elixir/path_safety.ex x: 1 # changes y: 50 line churn elixir/lib/symphony_elixir/http_server.ex x: 2 # changes y: 523 line churn elixir/lib/symphony_elixir/status_dashboard.ex x: 2 # changes y: 24 line churn elixir/lib/symphony_elixir_web/endpoint.ex x: 1 # changes y: 32 line churn elixir/test/symphony_elixir/observability_pubsub_test.exs x: 1 # changes y: 28 line churn
1278.0
line churn
  min: 1.0
  average: 255.74
  25th percentile: 18.0
  median: 63.0
  75th percentile: 440.0
  max: 1278.0
0 8.0
# changes
min: 1.0 | average: 2.53 | 25th percentile: 1.0 | median: 2.0 | 75th percentile: 3.5 | max: 8.0

Number of Contributors vs. Line Churn: 30 points

elixir/lib/symphony_elixir_web/components/layouts.ex x: 2 # contributors y: 65 line churn elixir/lib/symphony_elixir_web/controllers/static_asset_controller.ex x: 2 # contributors y: 38 line churn elixir/lib/symphony_elixir_web/router.ex x: 2 # contributors y: 42 line churn elixir/lib/symphony_elixir_web/static_assets.ex x: 2 # contributors y: 49 line churn elixir/lib/symphony_elixir/orchestrator.ex x: 4 # contributors y: 1278 line churn elixir/lib/symphony_elixir_web/live/dashboard_live.ex x: 4 # contributors y: 500 line churn elixir/lib/symphony_elixir_web/presenter.ex x: 4 # contributors y: 332 line churn elixir/priv/static/dashboard.css x: 2 # contributors y: 471 line churn elixir/lib/symphony_elixir/agent_runner.ex x: 4 # contributors y: 235 line churn elixir/lib/symphony_elixir/config/schema.ex x: 3 # contributors y: 617 line churn elixir/lib/symphony_elixir/linear/client.ex x: 3 # contributors y: 206 line churn elixir/lib/symphony_elixir/linear/issue.ex x: 2 # contributors y: 19 line churn elixir/lib/symphony_elixir/codex/app_server.ex x: 4 # contributors y: 1219 line churn elixir/lib/symphony_elixir/config.ex x: 2 # contributors y: 960 line churn elixir/lib/symphony_elixir/prompt_builder.ex x: 1 # contributors y: 130 line churn elixir/lib/symphony_elixir/workspace.ex x: 2 # contributors y: 409 line churn elixir/mix.exs x: 2 # contributors y: 27 line churn elixir/lib/symphony_elixir/codex/dynamic_tool.ex x: 1 # contributors y: 19 line churn elixir/lib/symphony_elixir/ssh.ex x: 1 # contributors y: 100 line churn elixir/lib/symphony_elixir/path_safety.ex x: 1 # contributors y: 50 line churn elixir/lib/symphony_elixir/http_server.ex x: 1 # contributors y: 523 line churn elixir/lib/symphony_elixir/status_dashboard.ex x: 1 # contributors y: 24 line churn elixir/lib/symphony_elixir/tracker.ex x: 1 # contributors y: 2 line churn elixir/lib/symphony_elixir_web/controllers/observability_api_controller.ex x: 1 # contributors y: 63 line churn elixir/lib/symphony_elixir_web/endpoint.ex x: 1 # contributors y: 32 line churn elixir/lib/symphony_elixir_web/error_html.ex x: 1 # contributors y: 8 line churn
1278.0
line churn
  min: 1.0
  average: 248.93
  25th percentile: 22.75
  median: 56.5
  75th percentile: 424.5
  max: 1278.0
0 4.0
# contributors
min: 1.0 | average: 1.93 | 25th percentile: 1.0 | median: 2.0 | 75th percentile: 2.25 | max: 4.0

File Size vs. Line Churn: 30 points

elixir/lib/symphony_elixir_web/components/layouts.ex x: 54 lines of code y: 65 line churn elixir/lib/symphony_elixir_web/controllers/static_asset_controller.ex x: 29 lines of code y: 38 line churn elixir/lib/symphony_elixir_web/router.ex x: 35 lines of code y: 42 line churn elixir/lib/symphony_elixir_web/static_assets.ex x: 42 lines of code y: 49 line churn elixir/lib/symphony_elixir/orchestrator.ex x: 1601 lines of code y: 1278 line churn elixir/lib/symphony_elixir_web/live/dashboard_live.ex x: 400 lines of code y: 500 line churn elixir/lib/symphony_elixir_web/presenter.ex x: 213 lines of code y: 332 line churn elixir/priv/static/dashboard.css x: 406 lines of code y: 471 line churn elixir/lib/symphony_elixir/agent_runner.ex x: 171 lines of code y: 235 line churn elixir/lib/symphony_elixir/config/schema.ex x: 469 lines of code y: 617 line churn elixir/lib/symphony_elixir/linear/client.ex x: 492 lines of code y: 206 line churn elixir/lib/symphony_elixir/linear/issue.ex x: 52 lines of code y: 19 line churn elixir/lib/symphony_elixir/codex/app_server.ex x: 943 lines of code y: 1219 line churn elixir/lib/symphony_elixir/config.ex x: 125 lines of code y: 960 line churn elixir/lib/symphony_elixir/prompt_builder.ex x: 54 lines of code y: 130 line churn elixir/lib/symphony_elixir/workspace.ex x: 384 lines of code y: 409 line churn elixir/mix.exs x: 93 lines of code y: 27 line churn elixir/lib/symphony_elixir/codex/dynamic_tool.ex x: 180 lines of code y: 19 line churn elixir/lib/symphony_elixir/ssh.ex x: 82 lines of code y: 100 line churn elixir/lib/symphony_elixir/path_safety.ex x: 39 lines of code y: 50 line churn elixir/lib/symphony_elixir/http_server.ex x: 73 lines of code y: 523 line churn elixir/lib/symphony_elixir/status_dashboard.ex x: 1611 lines of code y: 24 line churn elixir/lib/symphony_elixir/tracker.ex x: 38 lines of code y: 2 line churn elixir/config/config.exs x: 14 lines of code y: 16 line churn elixir/lib/symphony_elixir_web/controllers/observability_api_controller.ex x: 51 lines of code y: 63 line churn elixir/lib/symphony_elixir_web/endpoint.ex x: 26 lines of code y: 32 line churn elixir/lib/symphony_elixir_web/error_html.ex x: 7 lines of code y: 8 line churn elixir/lib/symphony_elixir_web/observability_pubsub.ex x: 21 lines of code y: 25 line churn
1278.0
line churn
  min: 1.0
  average: 248.93
  25th percentile: 22.75
  median: 56.5
  75th percentile: 424.5
  max: 1278.0
0 1611.0
lines of code
min: 7.0 | average: 258.4 | 25th percentile: 37.25 | median: 63.5 | 75th percentile: 388.0 | max: 1611.0