Cloud baseline
x-ai/grok-4.7 · Build 1
x-ai/grok-4.7 · scorer forge-2.0
- Overall
- 0.4682
- Benchmark
- Forge 2.0
- Model build
- 31m 35s
Recorded inference cost
$17.20
From the saved OpenRouter generation billing summary (236 recorded requests). Includes auxiliary model calls made during the build. Scoring reuses the saved build; this amount describes the original inference spend.
Tier breakdown
Each bar is the tier's mean, from 0 to 1 (for E, its mean × the excellence gate). The percentage is the tier's share of the score. Mean × share, added over all tiers, is the tests earned figure below.
Scoring detail
How this score was built
Per-test scorer output, as posted by the app. Expand a section to inspect its tests.
Correctness combines the lowest score for each test across the scoring fixtures; economy measurements use their mean. The combined result can therefore be lower than every individual fixture’s final score. Critical defects reduce the weighted result, followed by the reliability multiplier, before any score cap applies.
The rules behind these numbers: Forge 2.0 requirements, weights and score caps.
The score, step by step
0.8815 tests earned × 1.0000 critical defects × 0.5311 reliability = 0.4682 final score
tests earned = 0.15 × 0.8811 v1 + 0.7493 v2 (out of 0.85)
v1 = 0.88 × 0.8972 tiers L–A + 0.12 × 0.9239 gate × 0.8264 excellence
Reliability: every tier in the breakdown above, except Excellence, is a group of tests. Each group of tests multiplies the score by 1 − 0.10 × the shortfall of its worst test: by 0.90 when that test fails completely, by 0.95 when it scores 0.5.
- K Platform currency: worst test
k_widget_edit_bridge, score 0.75 × 0.9750 - T Event pipeline: worst test
t_reestimate_followed, score 0.5 × 0.9500Already counted in this group: t_out_of_order
- R Reconcile: worst test
r_pagination, score 0.9851 × 0.9985 - B Resolvers and permissions: worst test
b_comment_adf_as_user, score 0.5 × 0.9500Already counted in this group: b_hidden_count
- U UI function: worst test
u_widget_live, score 0 × 0.9000Already counted in this group: u_widget_numbers, u_widget_chart, u_widget_edit_config, u_ledger_table, u_ledger_sort, u_comment_flow, u_llm_explain
- A Rovo: worst test
a_action_result, score 0 × 0.9000Already counted in this group: a_action_permissions
- R1 Migration: worst test
r1_progress_visible, score 0.5 × 0.9500 - R2 Dosing: worst test
r2_person_never_quota_refused, score 0 × 0.9000Already counted in this group: r2_background_share
- R4 Changing world: worst test
r4_field_switch, score 0.5962 × 0.9596Already counted in this group: r4_move_new_board
- R7 Custom field: worst test
r7_values_fresh, score 0.8331 × 0.9833 - R10 Native JQL: worst test
r10_precomputation_refresh, score 0.25 × 0.9250Already counted in this group: r10_initial_membership, r10_shared_permissions, r10_empty_and_closed
v1 is this run's score on the tests carried over from Forge 1.0: 15% of the total. v2 is the requirements R1–R10, each at its share of the score: the other 85%. Critical defects multiply the whole score, and so does each group of tests, by 1 − 0.10 × the shortfall of its worst test.
Excellence gate 0.9239: the average of the 18 conditions below, each counted at the value shown. Green is met in full; red is not, and lowers the gate. The 3 excellence tests are paid in proportion to the gate; together they are 1.8% of the total.
Earned score 0.4682 · No cap applies · Final score 0.4682
Under a cap the final score is min(earned, cap − 0.05 × (1 − earned)): always below the cap, and closer to it the more the run earned. With no cap it is the earned score. Avoiding a cap adds no points.
Forge's own linter reports no errors (warnings cost points), every manifest function bundles and loads, packages resolve at the kit's pins, the manifest rules the linter misses, and only the scopes the app's calls need.
l deployable
1.00lint: 0 errors, every stage reached
Fixture 1: 1.0000
lint: 0 errors, every stage reached
Fixture 2: 1.0000
lint: 0 errors, every stage reached
Fixture 3: 1.0000
lint: 0 errors, every stage reached
l bundles load
1.009/9 functions bundle, load and export their handler
Fixture 1: 1.0000
9/9 functions bundle, load and export their handler
Fixture 2: 1.0000
9/9 functions bundle, load and export their handler
Fixture 3: 1.0000
9/9 functions bundle, load and export their handler
l lint warnings
1.000 distinct lint warning(s): []
Fixture 1: 1.0000
0 distinct lint warning(s): []
Fixture 2: 1.0000
0 distinct lint warning(s): []
Fixture 3: 1.0000
0 distinct lint warning(s): []
l real packages
1.009/9 bundles resolve @forge/* at the kit pins only
Fixture 1: 1.0000
9/9 bundles resolve @forge/* at the kit pins only
Fixture 2: 1.0000
9/9 bundles resolve @forge/* at the kit pins only
Fixture 3: 1.0000
9/9 bundles resolve @forge/* at the kit pins only
l manifest rules
1.006/6 manifest rules met:
Fixture 1: 1.0000
6/6 manifest rules met:
Fixture 2: 1.0000
6/6 manifest rules met:
Fixture 3: 1.0000
6/6 manifest rules met:
l scopes
1.00scopes: missing [], extra []
Fixture 1: 1.0000
scopes: missing [], extra []
Fixture 2: 1.0000
scopes: missing [], extra []
Fixture 3: 1.0000
scopes: missing [], extra []
Current modules and APIs: dashboards:widget with its edit API, the rovo:skill and rovo:mcp wiring, a Forge LLM model the platform lists as active, no /rest/api/3/search, no @forge/api storage, a nodejs22.x or nodejs24.x runtime, the consumer shape, the declared KVS entity, and deploy readiness: a manifest and permissions real Forge would accept and no code predicted to fail there.
k dashboard widget
1.00dashboards:widget 2/2: {'custom_ui_resource': True, 'edit_resource': True}
Fixture 1: 1.0000
dashboards:widget 2/2: {'custom_ui_resource': True, 'edit_resource': True}
Fixture 2: 1.0000
dashboards:widget 2/2: {'custom_ui_resource': True, 'edit_resource': True}
Fixture 3: 1.0000
dashboards:widget 2/2: {'custom_ui_resource': True, 'edit_resource': True}
k widget edit bridge
0.75worst of 3 scoring sites (seed 3c04f61f28a4a511): 3/4 board picks reached the dashboard through the widget edit API (updateConfig/onProductSave)
Fixture 1: 0.7500
3/4 board picks reached the dashboard through the widget edit API (updateConfig/onProductSave)
Fixture 2: 1.0000
4/4 board picks reached the dashboard through the widget edit API (updateConfig/onProductSave)
Fixture 3: 0.7500
3/4 board picks reached the dashboard through the widget edit API (updateConfig/onProductSave)
k rovo skill
1.00rovo:skill 7/7:
Fixture 1: 1.0000
rovo:skill 7/7:
Fixture 2: 1.0000
rovo:skill 7/7:
Fixture 3: 1.0000
rovo:skill 7/7:
k current apis
1.00current APIs 5/5:
Fixture 1: 1.0000
current APIs 5/5:
Fixture 2: 1.0000
current APIs 5/5:
Fixture 3: 1.0000
current APIs 5/5:
k consumer shape
1.00consumer shape 3/3
Fixture 1: 1.0000
consumer shape 3/3
Fixture 2: 1.0000
consumer shape 3/3
Fixture 3: 1.0000
consumer shape 3/3
k entity declared
1.00entities with a sprint-partitioned, ranged index: ['closed-sprint', 'scope-change', 'scope-ledger', 'sprint-issue']
Fixture 1: 1.0000
entities with a sprint-partitioned, ranged index: ['closed-sprint', 'scope-change', 'scope-ledger', 'sprint-issue']
Fixture 2: 1.0000
entities with a sprint-partitioned, ranged index: ['closed-sprint', 'scope-change', 'scope-ledger', 'sprint-issue']
Fixture 3: 1.0000
entities with a sprint-partitioned, ranged index: ['closed-sprint', 'scope-change', 'scope-ledger', 'sprint-issue']
k v2 surfacesdiagnostic, no weight
1.00v2 surfaces declared: ['jira:adminPage', 'webtrigger', 'scope-ledger']
Fixture 1: 1.0000
v2 surfaces declared: ['jira:adminPage', 'webtrigger', 'scope-ledger']
Fixture 2: 1.0000
v2 surfaces declared: ['jira:adminPage', 'webtrigger', 'scope-ledger']
Fixture 3: 1.0000
v2 surfaces declared: ['jira:adminPage', 'webtrigger', 'scope-ledger']
k rovo mcp
1.00rovo:mcp 4/4:
Fixture 1: 1.0000
rovo:mcp 4/4:
Fixture 2: 1.0000
rovo:mcp 4/4:
Fixture 3: 1.0000
rovo:mcp 4/4:
k llm model current
1.0013 LLM call(s); model ids list() does not return: []; llm module with claude: True
Fixture 1: 1.0000
13 LLM call(s); model ids list() does not return: []; llm module with claude: True
Fixture 2: 1.0000
13 LLM call(s); model ids list() does not return: []; llm module with claude: True
Fixture 3: 1.0000
13 LLM call(s); model ids list() does not return: []; llm module with claude: True
k manifest semantics
1.00deploy readiness, manifest + permissions: 17 rules checked, none failing here
Fixture 1: 1.0000
deploy readiness, manifest + permissions: 17 rules checked, none failing here
Fixture 2: 1.0000
deploy readiness, manifest + permissions: 17 rules checked, none failing here
Fixture 3: 1.0000
deploy readiness, manifest + permissions: 17 rules checked, none failing here
k runtime risks
1.00deploy readiness, predicted runtime failures: 12 rules checked, none failing here
Fixture 1: 1.0000
deploy readiness, predicted runtime failures: 12 rules checked, none failing here
Fixture 2: 1.0000
deploy readiness, predicted runtime failures: 12 rules checked, none failing here
Fixture 3: 1.0000
deploy readiness, predicted runtime failures: 12 rules checked, none failing here
Issue updates flow trigger to queue to consumer: one ledger row per change under duplicate, reordered, dropped and concurrent deliveries, multi-sprint changelog values, re-estimates followed, Retry-After honoured, no user context in background work.
t trigger handoff
1.001023/1023 deliveries handed off correctly
Fixture 1: 1.0000
1023/1023 deliveries handed off correctly
Fixture 2: 1.0000
996/996 deliveries handed off correctly
Fixture 3: 1.0000
1031/1031 deliveries handed off correctly
t event rows
1.00event rows: 170/170 exact (precision 1.00, recall 1.00)
Fixture 1: 1.0000
event rows: 170/170 exact (precision 1.00, recall 1.00)
Fixture 2: 1.0000
event rows: 172/172 exact (precision 1.00, recall 1.00)
Fixture 3: 1.0000
event rows: 174/174 exact (precision 1.00, recall 1.00)
t no double count
1.00every change holds at most one ledger row in every phase (duplicated deliveries included); 23 concurrent group(s) raced (independent 14, same-event 5, same-issue 4)
Fixture 1: 1.0000
every change holds at most one ledger row in every phase (duplicated deliveries included); 23 concurrent group(s) raced (independent 14, same-event 5, same-issue 4)
Fixture 2: 1.0000
every change holds at most one ledger row in every phase (duplicated deliveries included); 21 concurrent group(s) raced (independent 11, same-event 6, same-issue 4)
Fixture 3: 1.0000
every change holds at most one ledger row in every phase (duplicated deliveries included); 16 concurrent group(s) raced (independent 7, same-event 5, same-issue 4)
t out of order
0.8571worst of 3 scoring sites (seed d031c3ee22136508): permuted deliveries: 11/11 rows exact, 1/3 sprints with oracle numbers
Fixture 1: 0.8667
permuted deliveries: 11/11 rows exact, 2/4 sprints with oracle numbers
Fixture 2: 0.9231
permuted deliveries: 10/10 rows exact, 2/3 sprints with oracle numbers
Fixture 3: 0.8571
permuted deliveries: 11/11 rows exact, 1/3 sprints with oracle numbers
t multi sprint parse
1.00123/123 multi-id Sprint changes recorded exactly
Fixture 1: 1.0000
123/123 multi-id Sprint changes recorded exactly
Fixture 2: 1.0000
131/131 multi-id Sprint changes recorded exactly
Fixture 3: 1.0000
121/121 multi-id Sprint changes recorded exactly
t reestimate followed
0.50worst of 3 scoring sites (seed d031c3ee22136508): 3/6 re-estimated sprints show the oracle numbers
Fixture 1: 0.6667
4/6 re-estimated sprints show the oracle numbers
Fixture 2: 0.6667
4/6 re-estimated sprints show the oracle numbers
Fixture 3: 0.5000
3/6 re-estimated sprints show the oracle numbers
t retry after honoured
1.00InvocationError retryAfter 30s >= 30s
Fixture 1: 1.0000
InvocationError retryAfter 30s >= 30s
Fixture 2: 1.0000
InvocationError retryAfter 30s >= 30s
Fixture 3: 1.0000
InvocationError retryAfter 30s >= 30s
t no user in async
1.00background work is asApp only
Fixture 1: 1.0000
background work is asApp only
Fixture 2: 1.0000
background work is asApp only
Fixture 3: 1.0000
background work is asApp only
The first scheduled run starts the backfill of every change since each active sprint started, removals included; later runs heal what the event stream missed and a run with nothing new writes nothing; they page through results in each endpoint's own style, never retry before Retry-After and finish inside the module timeout, queue continuations included.
r backfill complete
1.00130/130 historical changes v1 never recorded, recorded one virtual hour after the upgrade (the backfill is dosed; v1 rows are R1's, at 2 h)
Fixture 1: 1.0000
130/130 historical changes v1 never recorded, recorded one virtual hour after the upgrade (the backfill is dosed; v1 rows are R1's, at 2 h)
Fixture 2: 1.0000
103/103 historical changes v1 never recorded, recorded one virtual hour after the upgrade (the backfill is dosed; v1 rows are R1's, at 2 h)
Fixture 3: 1.0000
138/138 historical changes v1 never recorded, recorded one virtual hour after the upgrade (the backfill is dosed; v1 rows are R1's, at 2 h)
r removals found
1.0024/24 removed-to-backlog changes found
Fixture 1: 1.0000
24/24 removed-to-backlog changes found
Fixture 2: 1.0000
15/15 removed-to-backlog changes found
Fixture 3: 1.0000
20/20 removed-to-backlog changes found
r heal dropped
1.004/4 dropped changes healed exactly once; 0 other row(s) added
Fixture 1: 1.0000
4/4 dropped changes healed exactly once; 0 other row(s) added
Fixture 2: 1.0000
4/4 dropped changes healed exactly once; 0 other row(s) added
Fixture 3: 1.0000
4/4 dropped changes healed exactly once; 0 other row(s) added
r pagination
0.9851worst of 3 scoring sites (seed 3aaa6d6b73d37669): 66/67 reads the site served in two or more pages walked to their end through the cursors the site offered (/rest/agile/1.0/board 15/15, /rest/agile/1.0/board/{id}/sprint
Fixture 1: 0.9855
68/69 reads the site served in two or more pages walked to their end through the cursors the site offered (/rest/agile/1.0/board 15/15, /rest/agile/1.0/board/{id}/sprint 39/39, /rest/api/3/changelog/bulkfetch 7/7, /rest/api/3/search/jql 7/8); 31 one-page read(s), nothing to walk, not graded; ['/rest/api/3/search/jql: stopped with a nextPageToken outstanding']
Fixture 2: 0.9851
66/67 reads the site served in two or more pages walked to their end through the cursors the site offered (/rest/agile/1.0/board 15/15, /rest/agile/1.0/board/{id}/sprint 39/39, /rest/api/3/changelog/bulkfetch 6/6, /rest/api/3/search/jql 6/7); 28 one-page read(s), nothing to walk, not graded; ['/rest/api/3/search/jql: stopped with a nextPageToken outstanding']
Fixture 3: 0.9853
67/68 reads the site served in two or more pages walked to their end through the cursors the site offered (/rest/agile/1.0/board 15/15, /rest/agile/1.0/board/{id}/sprint 38/38, /rest/api/3/changelog/bulkfetch 7/7, /rest/api/3/search/jql 7/8); 32 one-page read(s), nothing to walk, not graded; ['/rest/api/3/search/jql: stopped with a nextPageToken outstanding']
r rate limit
1.00run 1 (backfill) request 2: waited 2.2 virtual s in-invocation; run 1 (backfill) continuation page: waited 2.2 virtual s in-invocation; run 2 (hour-1) request 2: waited 2.2 virtual s in-invocation
Fixture 1: 1.0000
run 1 (backfill) request 2: waited 2.2 virtual s in-invocation; run 1 (backfill) continuation page: waited 2.2 virtual s in-invocation; run 2 (hour-1) request 2: waited 2.2 virtual s in-invocation
Fixture 2: 1.0000
run 1 (backfill) request 2: waited 2.2 virtual s in-invocation; run 1 (backfill) continuation page: waited 2.2 virtual s in-invocation; run 2 (hour-1) request 2: waited 2.2 virtual s in-invocation
Fixture 3: 1.0000
run 1 (backfill) request 2: waited 2.2 virtual s in-invocation; run 1 (backfill) continuation page: waited 2.2 virtual s in-invocation; run 2 (hour-1) request 2: waited 2.2 virtual s in-invocation
r as app
1.00333/333 Jira calls of the scheduled runs and their queue continuations asApp (scheduled 333)
Fixture 1: 1.0000
333/333 Jira calls of the scheduled runs and their queue continuations asApp (scheduled 333)
Fixture 2: 1.0000
351/351 Jira calls of the scheduled runs and their queue continuations asApp (scheduled 351)
Fixture 3: 1.0000
353/353 Jira calls of the scheduled runs and their queue continuations asApp (scheduled 353)
r completes in timeout
1.008/8 invocations of the scheduled runs and their queue continuations inside their module timeout (scheduled 8)
Fixture 1: 1.0000
8/8 invocations of the scheduled runs and their queue continuations inside their module timeout (scheduled 8)
Fixture 2: 1.0000
8/8 invocations of the scheduled runs and their queue continuations inside their module timeout (scheduled 8)
Fixture 3: 1.0000
8/8 invocations of the scheduled runs and their queue continuations inside their module timeout (scheduled 8)
r idempotent rerun
1.000 ledger write(s) (scope-ledger) on a no-change run over 363 rows
Fixture 1: 1.0000
0 ledger write(s) (scope-ledger) on a no-change run over 363 rows
Fixture 2: 1.0000
0 ledger write(s) (scope-ledger) on a no-change run over 379 rows
Fixture 3: 1.0000
0 ledger write(s) (scope-ledger) on a no-change run over 382 rows
Forge KVS with the storage scope, ledger reads through the declared entity index in change-time order, no KVS limit errors.
s storage scope
1.00KVS used, no 403 from the KVS proxy
Fixture 1: 1.0000
KVS used, no 403 from the KVS proxy
Fixture 2: 1.0000
KVS used, no 403 from the KVS proxy
Fixture 3: 1.0000
KVS used, no 403 from the KVS proxy
s entity index used
1.002290/2290 ledger reads are entity queries on a declared index
Fixture 1: 1.0000
2290/2290 ledger reads are entity queries on a declared index
Fixture 2: 1.0000
2133/2133 ledger reads are entity queries on a declared index
Fixture 3: 1.0000
2179/2179 ledger reads are entity queries on a declared index
s index order
1.006/6 tables list changes in change-time order
Fixture 1: 1.0000
6/6 tables list changes in change-time order
Fixture 2: 1.0000
6/6 tables list changes in change-time order
Fixture 3: 1.0000
6/6 tables list changes in change-time order
s limits
1.00no KVS limit errors
Fixture 1: 1.0000
no KVS limit errors
Fixture 2: 1.0000
no KVS limit errors
Fixture 3: 1.0000
no KVS limit errors
Every invoked resolver exists and answers structured errors, nobody sees changes to issues they cannot browse (not on screen, not in an LLM prompt, not in a Realtime payload), the hidden-change count is right, and each click posts exactly one ADF comment as the viewer.
b invoke contract
1.0052/52 invokes returned a defined, structured result; a Jira 500 on sprintLedger's read: handled
Fixture 1: 1.0000
52/52 invokes returned a defined, structured result; a Jira 500 on sprintLedger's read: handled
Fixture 2: 1.0000
57/57 invokes returned a defined, structured result; a Jira 500 on sprintLedger's read: handled
Fixture 3: 1.0000
52/52 invokes returned a defined, structured result; a Jira 500 on sprintLedger's read: handled
b no permission leak
1.00no hidden key, summary or change id reached a person
Fixture 1: 1.0000
no hidden key, summary or change id reached a person
Fixture 2: 1.0000
no hidden key, summary or change id reached a person
Fixture 3: 1.0000
no hidden key, summary or change id reached a person
b hidden count
0.7778worst of 3 scoring sites (seed 3c04f61f28a4a511): 14/18 hidden counts equal the oracle
Fixture 1: 0.7778
14/18 hidden counts equal the oracle
Fixture 2: 1.0000
18/18 hidden counts equal the oracle
Fixture 3: 0.8333
15/18 hidden counts equal the oracle
b comment adf as user
0.50worst of 3 scoring sites (seed d031c3ee22136508): 6/12 comments are ADF as the viewer naming key, sprint and creep; ['26441 status 201 via user', '24101 status 201 via user', '26746 status 201 via user']
Fixture 1: 0.6667
8/12 comments are ADF as the viewer naming key, sprint and creep; ['36424 status 201 via user', '37057 status 201 via user', '34763 status 201 via user']
Fixture 2: 0.6667
8/12 comments are ADF as the viewer naming key, sprint and creep; ['25740 status 201 via user', '24977 status 201 via user', '24606 status 201 via user']
Fixture 3: 0.5000
6/12 comments are ADF as the viewer naming key, sprint and creep; ['26441 status 201 via user', '24101 status 201 via user', '26746 status 201 via user']
b comment exactly once
1.0012 click/double-click gesture(s), none posted more than one comment
Fixture 1: 1.0000
12 click/double-click gesture(s), none posted more than one comment
Fixture 2: 1.0000
12 click/double-click gesture(s), none posted more than one comment
Fixture 3: 1.0000
12 click/double-click gesture(s), none posted more than one comment
b realtime payload clean
1.00198/198 realtime payloads hold sprint ids only
Fixture 1: 1.0000
198/198 realtime payloads hold sprint ids only
Fixture 2: 1.0000
191/191 realtime payloads hold sprint ids only
Fixture 3: 1.0000
201/201 realtime payloads hold sprint ids only
The dashboard widget's numbers and chart, its board choice saved through the host, live updates through Forge Realtime, the sprint action's ledger table, sorting, issue links, comment flow, the Forge LLM explanation, close and not-started states.
u widget loadsdiagnostic, no weight
1.004/8 configured widget views render a sprint with its numbers
Fixture 1: 1.0000
4/8 configured widget views render a sprint with its numbers
Fixture 2: 1.0000
6/8 configured widget views render a sprint with its numbers
Fixture 3: 1.0000
4/8 configured widget views render a sprint with its numbers
u widget numbers
0.50worst of 3 scoring sites (seed 3c04f61f28a4a511): widget numbers: 4.00/8 views exact (sprints by startDate, four §1 numbers each)
Fixture 1: 0.5000
widget numbers: 4.00/8 views exact (sprints by startDate, four §1 numbers each)
Fixture 2: 0.6875
widget numbers: 5.50/8 views exact (sprints by startDate, four §1 numbers each)
Fixture 3: 0.5000
widget numbers: 4.00/8 views exact (sprints by startDate, four §1 numbers each)
u widget chart
0.50worst of 3 scoring sites (seed 3c04f61f28a4a511): 4/8 charts on one linear scale within 1px; ['no single svg[data-testid=chart]', 'no single svg[data-testid=chart]']
Fixture 1: 0.5000
4/8 charts on one linear scale within 1px; ['no single svg[data-testid=chart]', 'no single svg[data-testid=chart]']
Fixture 2: 0.6250
5/8 charts on one linear scale within 1px; ['worst bar off its linear scale by 1.82px', 'worst bar off its linear scale by 18.94px']
Fixture 3: 0.5000
4/8 charts on one linear scale within 1px; ['no single svg[data-testid=chart]', 'no single svg[data-testid=chart]']
u widget edit config
0.70worst of 3 scoring sites (seed 3c04f61f28a4a511): edit/config 7/10: pick0_view_shows_board, pick0_reopen_pressed, second_instance_own_board
Fixture 1: 0.7000
edit/config 7/10: pick0_view_shows_board, pick0_reopen_pressed, second_instance_own_board
Fixture 2: 1.0000
edit/config 10/10:
Fixture 3: 0.7000
edit/config 7/10: pick0_view_shows_board, pick0_reopen_pressed, second_instance_own_board
u ledger table
0.8802worst of 3 scoring sites (seed d031c3ee22136508): ledger tables: 5.28/6 exact (rows, cells, default order)
Fixture 1: 0.9198
ledger tables: 5.52/6 exact (rows, cells, default order)
Fixture 2: 0.9199
ledger tables: 5.52/6 exact (rows, cells, default order)
Fixture 3: 0.8802
ledger tables: 5.28/6 exact (rows, cells, default order)
u ledger sort
0.506/12 at-toggle states ordered with aria-sort
Fixture 1: 0.5000
6/12 at-toggle states ordered with aria-sort
Fixture 2: 0.5000
6/12 at-toggle states ordered with aria-sort
Fixture 3: 0.5000
6/12 at-toggle states ordered with aria-sort
u issue router
1.006/6 issue keys open /browse/<KEY> through the Forge router
Fixture 1: 1.0000
6/6 issue keys open /browse/<KEY> through the Forge router
Fixture 2: 1.0000
6/6 issue keys open /browse/<KEY> through the Forge router
Fixture 3: 1.0000
6/6 issue keys open /browse/<KEY> through the Forge router
u comment flow
0.968831/32 comment-flow steps right (select, one comment and a success flag per click and double click, forbidden error flag, modal works); failed: ['modal_works_after@916']
Fixture 1: 0.9688
31/32 comment-flow steps right (select, one comment and a success flag per click and double click, forbidden error flag, modal works); failed: ['modal_works_after@916']
Fixture 2: 0.9688
31/32 comment-flow steps right (select, one comment and a success flag per click and double click, forbidden error flag, modal works); failed: ['modal_works_after@984']
Fixture 3: 0.9688
31/32 comment-flow steps right (select, one comment and a success flag per click and double click, forbidden error flag, modal works); failed: ['modal_works_after@1056']
u modal close
1.006/6 close clicks reached bridge close
Fixture 1: 1.0000
6/6 close clicks reached bridge close
Fixture 2: 1.0000
6/6 close clicks reached bridge close
Fixture 3: 1.0000
6/6 close clicks reached bridge close
u not started
1.00future sprint shows not-started only
Fixture 1: 1.0000
future sprint shows not-started only
Fixture 2: 1.0000
future sprint shows not-started only
Fixture 3: 1.0000
future sprint shows not-started only
u widget live
0.00moved sprints showing the new numbers live 0/1; gate failed: subscribed; 0 idle invoke(s)
Fixture 1: 0.0000
moved sprints showing the new numbers live 0/1; gate failed: subscribed; 0 idle invoke(s)
Fixture 2: 0.0000
moved sprints showing the new numbers live 0/1; 0 idle invoke(s)
Fixture 3: 0.0000
moved sprints showing the new numbers live 0/1; gate failed: subscribed; 0 idle invoke(s)
u llm explain
0.7826worst of 3 scoring sites (seed 3aaa6d6b73d37669): explain 18/23 over 5 scripted answers: 1:digits:every_number_is_a_ledger_number, 1:digits:own_sentence_has_a_ledger_number, 2:refusal:modal_still_sorts, 3:malformed:modal
Fixture 1: 0.8696
explain 20/23 over 5 scripted answers: 2:refusal:modal_still_sorts, 3:malformed:modal_still_sorts, 4:error:modal_still_sorts
Fixture 2: 0.7826
explain 18/23 over 5 scripted answers: 1:digits:every_number_is_a_ledger_number, 1:digits:own_sentence_has_a_ledger_number, 2:refusal:modal_still_sorts, 3:malformed:modal_still_sorts, 4:error:modal_still_sorts
Fixture 3: 0.7826
explain 18/23 over 5 scripted answers: 1:digits:every_number_is_a_ledger_number, 1:digits:own_sentence_has_a_ledger_number, 2:refusal:modal_still_sorts, 3:malformed:modal_still_sorts, 4:error:modal_still_sorts
Atlassian design tokens with 4.5:1 contrast in light and dark, a painted surface, no Content Security Policy violations or console errors, and the widget readable at 380 px wide.
v theme tokens
1.0029/29 surfaces themed with --ds-text* at >= 4.5:1
Fixture 1: 1.0000
29/29 surfaces themed with --ds-text* at >= 4.5:1
Fixture 2: 1.0000
31/31 surfaces themed with --ds-text* at >= 4.5:1
Fixture 3: 1.0000
29/29 surfaces themed with --ds-text* at >= 4.5:1
v dark mode
1.0029/29 surfaces paint a --ds-surface* background in their mode
Fixture 1: 1.0000
29/29 surfaces paint a --ds-surface* background in their mode
Fixture 2: 1.0000
31/31 surfaces paint a --ds-surface* background in their mode
Fixture 3: 1.0000
29/29 surfaces paint a --ds-surface* background in their mode
v csp clean
1.000 CSP violation(s), 0 failed asset request(s)
Fixture 1: 1.0000
0 CSP violation(s), 0 failed asset request(s)
Fixture 2: 1.0000
0 CSP violation(s), 0 failed asset request(s)
Fixture 3: 1.0000
0 CSP violation(s), 0 failed asset request(s)
v console clean
1.000 console/page error(s) on nominal scenarios: []
Fixture 1: 1.0000
0 console/page error(s) on nominal scenarios: []
Fixture 2: 1.0000
0 console/page error(s) on nominal scenarios: []
Fixture 3: 1.0000
0 console/page error(s) on nominal scenarios: []
v widget sizes
1.004/4 widget sizes without horizontal overflow, every sprint visible, no number clipped
Fixture 1: 1.0000
4/4 widget sizes without horizontal overflow, every sprint visible, no number clipped
Fixture 2: 1.0000
6/6 widget sizes without horizontal overflow, every sprint visible, no number clipped
Fixture 3: 1.0000
4/4 widget sizes without horizontal overflow, every sprint visible, no number clipped
The get-sprint-scope action returns exact numbers and the visible changes for the invoking person, returns errors instead of throwing, and the skill's SKILL.md tells the agent how to use it.
a action result
0.00worst of 3 scoring sites (seed 3c04f61f28a4a511): 0/5 active sprints answered exactly
Fixture 1: 0.0000
0/5 active sprints answered exactly
Fixture 2: 0.2000
1/5 active sprints answered exactly
Fixture 3: 0.0000
0/5 active sprints answered exactly
a action errors
1.002/2 bad sprintId inputs return {error} without throwing
Fixture 1: 1.0000
2/2 bad sprintId inputs return {error} without throwing
Fixture 2: 1.0000
2/2 bad sprintId inputs return {error} without throwing
Fixture 3: 1.0000
2/2 bad sprintId inputs return {error} without throwing
a action permissions
0.6667worst of 3 scoring sites (seed 3c04f61f28a4a511): 8/12 per-person answers list exactly what that person may browse
Fixture 1: 0.6667
8/12 per-person answers list exactly what that person may browse
Fixture 2: 1.0000
12/12 per-person answers list exactly what that person may browse
Fixture 3: 0.7500
9/12 per-person answers list exactly what that person may browse
a skill instructions
1.00SKILL.md body 5/5: result fields named ['sprintName', 'committed', 'added', 'removed', 'creepPercent', 'hiddenChanges', 'changes']
Fixture 1: 1.0000
SKILL.md body 5/5: result fields named ['sprintName', 'committed', 'added', 'removed', 'creepPercent', 'hiddenChanges', 'changes']
Fixture 2: 1.0000
SKILL.md body 5/5: result fields named ['sprintName', 'committed', 'added', 'removed', 'creepPercent', 'hiddenChanges', 'changes']
Fixture 3: 1.0000
SKILL.md body 5/5: result fields named ['sprintName', 'committed', 'added', 'removed', 'creepPercent', 'hiddenChanges', 'changes']
Few Jira requests in the first scheduled run and per relevant change in triggers and consumers, and surfaces that paint after one round trip — paid only in proportion to the excellence gate.
e reconcile economy
0.4793mean over 3 scoring sites: (0.5506 + 0.3769 + 0.5104) / 3 = 0.4793; each fixture's measurements are listed separately.
Fixture 1: 0.5506
backfill 89 background Jira calls (by lineage, every phase) / optimum 20 (incl. 2 forced 429 repeat(s)) = 4.45x; 1.0 at <= 2.45x; 11 2.0 call(s) not counted (field-value writes, person-facing, web trigger)
Fixture 2: 0.3769
backfill 130 background Jira calls (by lineage, every phase) / optimum 20 (incl. 2 forced 429 repeat(s)) = 6.50x; 1.0 at <= 2.45x; 11 2.0 call(s) not counted (field-value writes, person-facing, web trigger)
Fixture 3: 0.5104
backfill 96 background Jira calls (by lineage, every phase) / optimum 20 (incl. 2 forced 429 repeat(s)) = 4.80x; 1.0 at <= 2.45x; 11 2.0 call(s) not counted (field-value writes, person-facing, web trigger)
e event economy
1.00mean over 3 scoring sites: (1.0000 + 1.0000 + 1.0000) / 3 = 1.0000; each fixture's measurements are listed separately.
Fixture 1: 1.0000
233 Jira calls (by lineage, every phase) / baseline 214 (213 delivered relevant change(s) x 1 read + 1 forced 429 repeat; a normalizer, not a reachable optimum) = 1.09x; 1.0 at <= 2.86x; 189 field-value write(s) not counted
Fixture 2: 1.0000
218 Jira calls (by lineage, every phase) / baseline 199 (198 delivered relevant change(s) x 1 read + 1 forced 429 repeat; a normalizer, not a reachable optimum) = 1.10x; 1.0 at <= 2.86x; 182 field-value write(s) not counted
Fixture 3: 1.0000
224 Jira calls (by lineage, every phase) / baseline 202 (201 delivered relevant change(s) x 1 read + 1 forced 429 repeat; a normalizer, not a reachable optimum) = 1.11x; 1.0 at <= 2.86x; 191 field-value write(s) not counted
e ui round trips
1.00mean over 3 scoring sites: (1.0000 + 1.0000 + 1.0000) / 3 = 1.0000; each fixture's measurements are listed separately.
Fixture 1: 1.0000
round trips before first paint: {'widget-view': 0, 'widget-edit': 1, 'sprint-action': 1}
Fixture 2: 1.0000
round trips before first paint: {'widget-view': 0, 'widget-edit': 1, 'sprint-action': 1}
Fixture 3: 1.0000
round trips before first paint: {'widget-view': 0, 'widget-edit': 1, 'sprint-action': 1}
Every v1 row moves to the new scope-ledger entity exactly once, with its change id and time, while events keep flowing and across invocation limits, within 2 virtual hours of the upgrade, with its progress in the admin panel; v1's entity stays intact.
r1 v1 rows migrated
1.00h2: 59 of 59 v1 rows in scope-ledger with the source attributes recorded by the probe
Fixture 1: 1.0000
h2: 59 of 59 v1 rows in scope-ledger with the source attributes recorded by the probe
Fixture 2: 1.0000
h2: 100 of 100 v1 rows in scope-ledger with the source attributes recorded by the probe
Fixture 3: 1.0000
h2: 66 of 66 v1 rows in scope-ledger with the source attributes recorded by the probe
r1 v1 rows intact
1.00all 59 v1 source rows intact; 59 final copies preserve recorded v1 attributes at every observed checkpoint
Fixture 1: 1.0000
all 59 v1 source rows intact; 59 final copies preserve recorded v1 attributes at every observed checkpoint
Fixture 2: 1.0000
all 100 v1 source rows intact; 100 final copies preserve recorded v1 attributes at every observed checkpoint
Fixture 3: 1.0000
all 66 v1 source rows intact; 66 final copies preserve recorded v1 attributes at every observed checkpoint
r1 events during migration
1.0048 of 48 changes made while the migration ran are in scope-ledger at the end
Fixture 1: 1.0000
48 of 48 changes made while the migration ran are in scope-ledger at the end
Fixture 2: 1.0000
47 of 47 changes made while the migration ran are in scope-ledger at the end
Fixture 3: 1.0000
64 of 64 changes made while the migration ran are in scope-ledger at the end
r1 progress visible
0.50worst of 3 scoring sites (seed 3c04f61f28a4a511): 3 of 6 panel reads show the migration right (total 59; complete after the h2 read); h4: 'Migrated 47 of 59 v1 rows' without `complete`, h5: 'Migrated 47 of 59 v1 rows' wi
Fixture 1: 0.5000
3 of 6 panel reads show the migration right (total 59; complete after the h2 read); h4: 'Migrated 47 of 59 v1 rows' without `complete`, h5: 'Migrated 47 of 59 v1 rows' without `complete` (+1)
Fixture 2: 0.6667
4 of 6 panel reads show the migration right (total 100; complete after the h2 read); h5: 'Migrated 88 of 100 v1 rows' without `complete`, h6: 'Migrated 88 of 100 v1 rows' without `complete`
Fixture 3: 0.6667
4 of 6 panel reads show the migration right (total 66; complete after the h2 read); h5: 'Migrated 56 of 66 v1 rows' without `complete`, h6: 'Migrated 56 of 66 v1 rows' without `complete`
On a site of about 1,000 issues, background work stays inside its share of the 2,400-point hour, no person-facing request meets a quota 429, and Retry-After and RateLimit-Reason (quota, burst, per-issue write) decide every retry; the backfill still completes.
r2 background share
0.90worst of 3 scoring sites (seed 3c04f61f28a4a511): 9 of 10 hours kept background within 70 % (1680 points; the contract default; the probe recorded no change); busiest hour 1757; over in hours 7; mandatory field-write low
Fixture 1: 0.9000
9 of 10 hours kept background within 70 % (1680 points; the contract default; the probe recorded no change); busiest hour 1757; over in hours 7; mandatory field-write lower bound 7 (reads additional)
Fixture 2: 0.9091
10 of 11 hours kept background within 70 % (1680 points; the contract default; the probe recorded no change); busiest hour 1715; over in hours 8; mandatory field-write lower bound 7 (reads additional)
Fixture 3: 0.9000
9 of 10 hours kept background within 70 % (1680 points; the contract default; the probe recorded no change); busiest hour 1751; over in hours 7; mandatory field-write lower bound 7 (reads additional)
r2 person never quota refused
0.00worst of 3 scoring sites (seed 3c04f61f28a4a511): 6 of 508 person-facing requests refused for quota (e.g. /rest/agile/1.0/sprint/{sprintId}, /rest/api/3/issue/bulkfetch, /rest/agile/1.0/sprint/{sprintId} (+3))
Fixture 1: 0.0000
6 of 508 person-facing requests refused for quota (e.g. /rest/agile/1.0/sprint/{sprintId}, /rest/api/3/issue/bulkfetch, /rest/agile/1.0/sprint/{sprintId} (+3))
Fixture 2: 1.0000
0 of 523 person-facing requests refused for quota
Fixture 3: 0.0000
5 of 510 person-facing requests refused for quota (e.g. /rest/agile/1.0/sprint/{sprintId}, /rest/api/3/issue/bulkfetch, /rest/agile/1.0/sprint/{sprintId} (+2))
r2 rate limit reaction
1.005 of 5 429s answered by their reason (quota: all background paused; burst: the endpoint; per-issue: the issue)
Fixture 1: 1.0000
5 of 5 429s answered by their reason (quota: all background paused; burst: the endpoint; per-issue: the issue)
Fixture 2: 1.0000
5 of 5 429s answered by their reason (quota: all background paused; burst: the endpoint; per-issue: the issue)
Fixture 3: 1.0000
5 of 5 429s answered by their reason (quota: all background paused; burst: the endpoint; per-issue: the issue)
r2 backfill complete
1.00130 of 130 pre-upgrade changes v1 never recorded are in scope-ledger, right
Fixture 1: 1.0000
130 of 130 pre-upgrade changes v1 never recorded are in scope-ledger, right
Fixture 2: 1.0000
103 of 103 pre-upgrade changes v1 never recorded are in scope-ledger, right
Fixture 3: 1.0000
138 of 138 pre-upgrade changes v1 never recorded are in scope-ledger, right
Work longer than one invocation continues in the next, no function waits past its limit (a long Retry-After is handed back, not waited out), and a killed invocation leaves no duplicate.
r3 never killed
1.009 of 9 functions never exceeded their limit
Fixture 1: 1.0000
9 of 9 functions never exceeded their limit
Fixture 2: 1.0000
9 of 9 functions never exceeded their limit
Fixture 3: 1.0000
9 of 9 functions never exceeded their limit
r3 long retry after deferred
1.007 of 7 invocations handed a Retry-After longer than their limit stopped and resumed later (results: ok, retry)
Fixture 1: 1.0000
7 of 7 invocations handed a Retry-After longer than their limit stopped and resumed later (results: ok, retry)
Fixture 2: 1.0000
1 of 1 invocations handed a Retry-After longer than their limit stopped and resumed later (results: retry)
Fixture 3: 1.0000
6 of 6 invocations handed a Retry-After longer than their limit stopped and resumed later (results: ok, retry)
r3 no duplicate rows
1.00every (changeId, sprintId) appears once at each of 7 checkpoints; 23 concurrent group(s) raced (independent 14, same-event 5, same-issue 4)
Fixture 1: 1.0000
every (changeId, sprintId) appears once at each of 7 checkpoints; 23 concurrent group(s) raced (independent 14, same-event 5, same-issue 4)
Fixture 2: 1.0000
every (changeId, sprintId) appears once at each of 7 checkpoints; 21 concurrent group(s) raced (independent 11, same-event 6, same-issue 4)
Fixture 3: 1.0000
every (changeId, sprintId) appears once at each of 7 checkpoints; 16 concurrent group(s) raced (independent 7, same-event 5, same-issue 4)
Sprints close, issues move to another board's sprint, a board's estimation field changes, issues are deleted and a person loses browse permission while the app runs; the ledger and every view come out right.
r4 sprint close final
1.001 of 1 closed sprints kept exactly their final ledger
Fixture 1: 1.0000
1 of 1 closed sprints kept exactly their final ledger
Fixture 2: 1.0000
1 of 1 closed sprints kept exactly their final ledger
Fixture 3: 1.0000
1 of 1 closed sprints kept exactly their final ledger
r4 move new board
0.9091worst of 3 scoring sites (seed 3aaa6d6b73d37669): 10 of 11 cross-board moves recorded with the new board's estimate; CRM-224 (1494454): removed row ok, added row wrong/missing (estimate 8, want 1)
Fixture 1: 1.0000
17 of 17 cross-board moves recorded with the new board's estimate
Fixture 2: 0.9091
10 of 11 cross-board moves recorded with the new board's estimate; CRM-224 (1494454): removed row ok, added row wrong/missing (estimate 8, want 1)
Fixture 3: 1.0000
18 of 18 cross-board moves recorded with the new board's estimate
r4 field switch
0.5962worst of 3 scoring sites (seed 3aaa6d6b73d37669): 20 of 41 rows after the switch use the new field; 11 of 11 earlier rows keep their estimate; wrong after: ('1492218', '955'), ('1493225', '955'), ('1493708', '955') (+18)
Fixture 1: 0.9032
36 of 42 rows after the switch use the new field; 20 of 20 earlier rows keep their estimate; wrong after: ('1453658', '1026'), ('1455633', '1026'), ('1453041', '1042') (+3)
Fixture 2: 0.5962
20 of 41 rows after the switch use the new field; 11 of 11 earlier rows keep their estimate; wrong after: ('1492218', '955'), ('1493225', '955'), ('1493708', '955') (+18)
Fixture 3: 0.8182
23 of 35 rows after the switch use the new field; 31 of 31 earlier rows keep their estimate; wrong after: ('1357449', '795'), ('1357983', '795'), ('1357998', '795') (+9)
r4 deleted history
1.002 of 2 rows of deleted issues kept as history with deleted: true
Fixture 1: 1.0000
2 of 2 rows of deleted issues kept as history with deleted: true
Fixture 2: 1.0000
3 of 3 rows of deleted issues kept as history with deleted: true
Fixture 3: 1.0000
2 of 2 rows of deleted issues kept as history with deleted: true
r4 permission revoked
1.002 answer(s) after a browse revoke showed ledger data and none of the newly hidden issues
Fixture 1: 1.0000
2 answer(s) after a browse revoke showed ledger data and none of the newly hidden issues
Fixture 2: 1.0000
5 answer(s) after a browse revoke showed ledger data and none of the newly hidden issues
Fixture 3: 1.0000
1 answer(s) after a browse revoke showed ledger data and none of the newly hidden issues
A jira:adminPage built in UI Kit with the contract's controls, and every admin resolver checking Jira's ADMINISTER permission on the server, never trusting the payload.
r5 panel labels
1.008 of 8 §2.6 controls found by label; new secret shown once: yes; then masked ••••<last4>: yes
Fixture 1: 1.0000
8 of 8 §2.6 controls found by label; new secret shown once: yes; then masked ••••<last4>: yes
Fixture 2: 1.0000
8 of 8 §2.6 controls found by label; new secret shown once: yes; then masked ••••<last4>: yes
Fixture 3: 1.0000
8 of 8 §2.6 controls found by label; new secret shown once: yes; then masked ••••<last4>: yes
r5 admin actions apply
1.002 of 2 admin-page invokes of the admin's save and rotate applied
Fixture 1: 1.0000
2 of 2 admin-page invokes of the admin's save and rotate applied
Fixture 2: 1.0000
2 of 2 admin-page invokes of the admin's save and rotate applied
Fixture 3: 1.0000
2 of 2 admin-page invokes of the admin's save and rotate applied
r5 nonadmin refused
1.005 non-admin/forged admin actions landed no attempted effect in storage
Fixture 1: 1.0000
5 non-admin/forged admin actions landed no attempted effect in storage
Fixture 2: 1.0000
5 non-admin/forged admin actions landed no attempted effect in storage
Fixture 3: 1.0000
5 non-admin/forged admin actions landed no attempted effect in storage
Signed deployment events: a missing or wrong signature, a tampered body or a stale timestamp is refused with no effect, a replay applies once, a valid event records the deployment, and the secret is never disclosed.
r6 unsigned no effect
1.005 invalid events (bad-signature, stale, stale-future, tampered, unsigned) had no effect
Fixture 1: 1.0000
5 invalid events (bad-signature, stale, stale-future, tampered, unsigned) had no effect
Fixture 2: 1.0000
5 invalid events (bad-signature, stale, stale-future, tampered, unsigned) had no effect
Fixture 3: 1.0000
5 invalid events (bad-signature, stale, stale-future, tampered, unsigned) had no effect
r6 replay once
1.001 sequential replay(s) and one concurrent pair had one acceptance and no duplicate Jira/deployment effect at any checkpoint; bookkeeping writes 0
Fixture 1: 1.0000
1 sequential replay(s) and one concurrent pair had one acceptance and no duplicate Jira/deployment effect at any checkpoint; bookkeeping writes 0
Fixture 2: 1.0000
1 sequential replay(s) and one concurrent pair had one acceptance and no duplicate Jira/deployment effect at any checkpoint; bookkeeping writes 0
Fixture 3: 1.0000
1 sequential replay(s) and one concurrent pair had one acceptance and no duplicate Jira/deployment effect at any checkpoint; bookkeeping writes 0
r6 status codes
1.0010 of 10 cases answered with their status
Fixture 1: 1.0000
10 of 10 cases answered with their status
Fixture 2: 1.0000
10 of 10 cases answered with their status
Fixture 3: 1.0000
10 of 10 cases answered with their status
r6 valid applies
1.003 of 3 validly signed events accepted (202) and recorded as `Deployed to <env>` on every ledger row of the issues they name
Fixture 1: 1.0000
3 of 3 validly signed events accepted (202) and recorded as `Deployed to <env>` on every ledger row of the issues they name
Fixture 2: 1.0000
3 of 3 validly signed events accepted (202) and recorded as `Deployed to <env>` on every ledger row of the issues they name
Fixture 3: 1.0000
3 of 3 validly signed events accepted (202) and recorded as `Deployed to <env>` on every ledger row of the issues they name
r6 secret never disclosed
1.00the CI secret (panel) never appeared outside its one-time display
Fixture 1: 1.0000
the CI secret (panel) never appeared outside its one-time display
Fixture 2: 1.0000
the CI secret (panel) never appeared outside its one-time display
Fixture 3: 1.0000
the CI secret (panel) never appeared outside its one-time display
The read-only scope-status field holds committed or added +points for an issue in an active sprint, removed for one that has left an active sprint since that sprint started, and nothing for any other issue, written in bulk through Jira's app field-value API and fresh within the virtual hour.
r7 values fresh
0.8331worst of 3 scoring sites (seed 3c04f61f28a4a511): mean over 7 checkpoints; worst h4: 226 of 355 issues right; AUTH-116 'committed' (want added +5, removed); AUTH-123 'committed' (want added +0.5, removed)
Fixture 1: 0.8331
mean over 7 checkpoints; worst h4: 226 of 355 issues right; AUTH-116 'committed' (want added +5, removed); AUTH-123 'committed' (want added +0.5, removed)
Fixture 2: 0.8377
mean over 7 checkpoints; worst h5: 247 of 363 issues right; CRM-112 'added +0' (want removed); CRM-224 'added +8' (want added +1, removed)
Fixture 3: 0.8481
mean over 7 checkpoints; worst h5: 228 of 344 issues right; CORE-340 None (want added +3); CORE-408 None (want added +0)
r7 writes accepted
1.00241 of 241 bulk field writes accepted
Fixture 1: 1.0000
241 of 241 bulk field writes accepted
Fixture 2: 1.0000
238 of 238 bulk field writes accepted
Fixture 3: 1.0000
255 of 255 bulk field writes accepted
Tool calls validated against the viewer's sprint scope, back-off on a 429 without Retry-After, answers with no finish reason refused, a 10-minute cache, and the admin's kill switch and daily token budget enforced on the server.
r8 tool call scope
1.002 of 2 manipulated calls respected function and visible sprint scope
Fixture 1: 1.0000
2 of 2 manipulated calls respected function and visible sprint scope
Fixture 2: 1.0000
2 of 2 manipulated calls respected function and visible sprint scope
Fixture 3: 1.0000
2 of 2 manipulated calls respected function and visible sprint scope
r8 failure handling
1.002 of 2 LLM failures handled
Fixture 1: 1.0000
2 of 2 LLM failures handled
Fixture 2: 1.0000
2 of 2 LLM failures handled
Fixture 3: 1.0000
2 of 2 LLM failures handled
r8 cost controls
1.003 of 3 cache/kill-switch/budget cases met their full outcome
Fixture 1: 1.0000
3 of 3 cache/kill-switch/budget cases met their full outcome
Fixture 2: 1.0000
3 of 3 cache/kill-switch/budget cases met their full outcome
Fixture 3: 1.0000
3 of 3 cache/kill-switch/budget cases met their full outcome
The widget and the sprint action each make at most one invoke and load at most 150 KB before their first data paint, with no external origin; the admin page renders after one invoke.
r9 widget boot
1.00widget-view: 1 invoke(s) before first paint (<= 1), 43927 bytes of JS+CSS (<= 153600), 0 external request(s)
Fixture 1: 1.0000
widget-view: 1 invoke(s) before first paint (<= 1), 43927 bytes of JS+CSS (<= 153600), 0 external request(s)
Fixture 2: 1.0000
widget-view: 1 invoke(s) before first paint (<= 1), 43927 bytes of JS+CSS (<= 153600), 0 external request(s)
Fixture 3: 1.0000
widget-view: 1 invoke(s) before first paint (<= 1), 43927 bytes of JS+CSS (<= 153600), 0 external request(s)
r9 sprint boot
1.00sprint-modal: 1 invoke(s) before first paint (<= 1), 47049 bytes of JS+CSS (<= 153600), 0 external request(s)
Fixture 1: 1.0000
sprint-modal: 1 invoke(s) before first paint (<= 1), 47049 bytes of JS+CSS (<= 153600), 0 external request(s)
Fixture 2: 1.0000
sprint-modal: 1 invoke(s) before first paint (<= 1), 47049 bytes of JS+CSS (<= 153600), 0 external request(s)
Fixture 3: 1.0000
sprint-modal: 1 invoke(s) before first paint (<= 1), 47049 bytes of JS+CSS (<= 153600), 0 external request(s)
r9 admin boot
1.00admin-page: 1 invoke(s) before first paint (<= 1)
Fixture 1: 1.0000
admin-page: 1 invoke(s) before first paint (<= 1)
Fixture 2: 1.0000
admin-page: 1 invoke(s) before first paint (<= 1)
Fixture 3: 1.0000
admin-page: 1 invoke(s) before first paint (<= 1)
scopeChanged(sprintId) is a jira:jqlFunction returning native issue predicates from the ledger. Jira shares its precomputed expansion across users, applies each viewer's browse permissions, and keeps the same cached mapping fresh through the documented precomputation update API after changes and reconciliation. Empty, future and closed sprints, IN and NOT IN, and invalid arguments are checked by running actual native JQL.
r10 manifest
1.00scopeChanged manifest declares issue IN/NOT IN, required sprintId, and bound function
Fixture 1: 1.0000
scopeChanged manifest declares issue IN/NOT IN, required sprintId, and bound function
Fixture 2: 1.0000
scopeChanged manifest declares issue IN/NOT IN, required sprintId, and bound function
Fixture 3: 1.0000
scopeChanged manifest declares issue IN/NOT IN, required sprintId, and bound function
r10 initial membership
0.5012/24 initial_membership cases correct; initial: missing=['34100', '34101', '34108'], extra=['34241', '34345', '34355'], invoked=1; cache: missing=['34100', '34101', '34108'], extra=['34241', '34345', '34355'], invoked=0
Fixture 1: 0.5000
12/24 initial_membership cases correct; initial: missing=['34100', '34101', '34108'], extra=['34241', '34345', '34355'], invoked=1; cache: missing=['34100', '34101', '34108'], extra=['34241', '34345', '34355'], invoked=0
Fixture 2: 0.5000
12/24 initial_membership cases correct; initial: missing=['24397', '24407', '24413'], extra=['24419', '24547', '24606'], invoked=1; cache: missing=['24397', '24407', '24413'], extra=['24419', '24547', '24606'], invoked=0
Fixture 3: 0.5000
12/24 initial_membership cases correct; initial: missing=['23747', '23749', '23750'], extra=['23767', '23847', '23952'], invoked=1; cache: missing=['23747', '23749', '23750'], extra=['23767', '23847', '23952'], invoked=0
r10 precomputation refresh
0.25worst of 3 scoring sites (seed 3c04f61f28a4a511): 6/24 precomputation_refresh cases correct; refresh: missing=['34437', '35591', '36256'], extra=[], invoked=0; refresh: missing=['34100', '34101', '34108'], extra=['34241'
Fixture 1: 0.2500
6/24 precomputation_refresh cases correct; refresh: missing=['34437', '35591', '36256'], extra=[], invoked=0; refresh: missing=['34100', '34101', '34108'], extra=['34241', '34345', '34355'], invoked=0
Fixture 2: 0.2500
6/24 precomputation_refresh cases correct; refresh: missing=['24806', '24971', '25466'], extra=[], invoked=0; refresh: missing=['24397', '24407', '24413'], extra=['24419', '24547', '24606'], invoked=0
Fixture 3: 0.2917
7/24 precomputation_refresh cases correct; refresh: missing=['23782', '25074', '25104'], extra=[], invoked=0; refresh: missing=['23747', '23749', '23750'], extra=['23767', '23847', '23952'], invoked=0
r10 shared permissions
0.3472worst of 3 scoring sites (seed 3aaa6d6b73d37669): JQL disclosure not observed: 25/72 shared_permissions cases correct; shared-user: missing=['24397', '24407', '24413'], extra=['24419', '24547', '24606'], invoked=0; share
Fixture 1: 0.3611
JQL disclosure not observed: 26/72 shared_permissions cases correct; shared-user: missing=['34100', '34101', '34108'], extra=['34241', '34345', '34355'], invoked=0; shared-user: missing=['34100', '34101', '34108'], extra=['34241', '34345', '34355'], invoked=0
Fixture 2: 0.3472
JQL disclosure not observed: 25/72 shared_permissions cases correct; shared-user: missing=['24397', '24407', '24413'], extra=['24419', '24547', '24606'], invoked=0; shared-user: missing=['24397', '24407', '24413'], extra=['24419', '24547', '24606'], invoked=0
Fixture 3: 0.3889
JQL disclosure not observed: 28/72 shared_permissions cases correct; shared-user: missing=['23747', '23749', '23750'], extra=['23767', '23847', '23952'], invoked=0; shared-user: missing=['23747', '23749', '23750'], extra=['23767', '23847', '23952'], invoked=0
r10 empty and closed
0.753/4 empty_and_closed cases correct; empty: missing=['34100', '34101', '34108'], extra=[], invoked=1
Fixture 1: 0.7500
3/4 empty_and_closed cases correct; empty: missing=['34100', '34101', '34108'], extra=[], invoked=1
Fixture 2: 0.7500
3/4 empty_and_closed cases correct; empty: missing=['24397', '24407', '24413'], extra=[], invoked=1
Fixture 3: 0.7500
3/4 empty_and_closed cases correct; empty: missing=['23747', '23749', '23750'], extra=[], invoked=1
r10 invalid arguments
1.004/4 invalid_arguments cases correct
Fixture 1: 1.0000
4/4 invalid_arguments cases correct
Fixture 2: 1.0000
4/4 invalid_arguments cases correct
Fixture 3: 1.0000
4/4 invalid_arguments cases correct
Run notes and corrections
Canonical native verdict summary reports $17.1994102, 236 billed generations and 29481257 prompt / 29154688 cached / 137871 completion tokens. Per-call request and invoice correspondence remains an observation; no independent raw invoice audit is claimed.
Graded browser recording
Loading duration…Watch the full graded browser recording at its original speed: the dashboard widget, the sprint action, the not-started sprint and the Forge LLM cases, as the scorer drove them on the run's own seed, the first of the three scoring sites. The test results and screenshots on this page provide the wider evidence. Pause or scrub to inspect a view.
The UI Kit admin panel is not in the recording: it is graded from its component tree.
Drag the timeline to seek. Keyboard: arrow keys move 5 seconds; Home and End jump to the start and end.
SHA-256: 11c73119cb15ff1ede41d03590699562d75de1e3ee44c9675c9caad254efafd8
Screenshots
Pictures from one of the three scoring sites, the one on the run's own seed. The dashboard widget and the sprint action are captured from the built app in a browser during grading. The admin panel picture is drawn by the benchmark from the app's component tree, not by Jira, and nothing is graded from that picture. A test keeps the score of its worst site (the excellence measurements keep their mean), so a test can fail on a site these pictures do not show. A detail that opens "worst of …" names the seed of the site the test scored worst on, which can be the pictured one.
Run details
- Model
- x-ai/grok-4.7
- Engine events
- 0
- Repair rounds
- 0
- Started
- Oct 15, 2026, 02:47 AM
- Finished
- Oct 15, 2026, 03:40 AM