← All Zyel Labs

By Chason Arthur · Revision 1.0 · Updated

PHP application · Python analyzer · Git evidence

Count the change.
Test the contribution.

Carl adds comments. Chloe replaces a 500-line function with four lines. Who improved the application—and what evidence would let you say so?

Five fictional programmers. One synthetic PHP application. Ten branch commits, ten local merges and ten local pulls. No applicant data, uploads or production connector.

One change, three different observations
01

500 → 4Physical function lines. A formatting-sensitive size observation.

02

+3 / −499The actual Git diff. A closing brace survives, so the counts differ.

03

112 / 112 matchObserved PHP behavior. The shorter unsafe variant fails 12 cases.

Git factsAuthor, date, path, language and diff.
Executable evidencePHP contracts, bugs and a counterexample.
Review judgmentUseful outcomes, explicit limits, no magic score.
Reading preferences · shared across Zyel Labs

Optional settings stay in this browser for 30 days. No account, telemetry or AWS sync.

Shared controls need JavaScript. The article and source links work without it.

01 / The question

Busy is measurable.
Useful needs a definition.

Counting commits or added lines would make Carl’s activity look much larger than Chloe’s. That says what changed in Git. It does not establish which work made the application safer, easier to change, or more useful.

This experiment works backward from a stated goal: preserve a known shipping contract while removing repetitive implementation. We construct a deliberately repetitive baseline, characterize it, perform a refactor, and try to falsify the result. The fixtures demonstrate the measurement method; they do not statistically validate a universal productivity model.

Comments can matter. Clear documentation, tests, architecture and review all contribute. Carl’s repeated comments have no measured runtime benefit in this particular fixture; their readability value remains a separate review question. Aria’s foundational work and Tess’s tests are prerequisites for Chloe’s confident simplification.

02 / A real SDK, an isolated workshop

Adapt a real library.
Keep its authorship intact.

This successor uses Webmozart Assert at commit 8a163706bbcac613733dba03f51e13b5eb1bb819, an MIT-licensed PHP assertion SDK. Its original copyright is Bernhard Schussek’s; composer metadata also credits Woody Gilk. Their unchanged SDK source and license remain in the kit. Our five fictional programmers did not write that SDK.

Ben builds a custom ShippingInput adapter around the real SDK’s type, key and range assertions. It preserves the request contract while making domain validation explicit. The isolated application is substantially reworked across the five synthetic roles; upstream library bytes remain unchanged, with the adaptation visible in application source rather than disguised as upstream work.

Separate repositories, real local Git operations. A fresh integration repository imports the pinned SDK as fixture-baseline. Each fictional change gets its own feature branch, commit, measured PHP checks and a local simulated review record. Ten --no-ff merges and ten pull --ff-only operations deliver the work into a separate review checkout. No GitHub PR, external push, public approval or production deployment is simulated as real.

The analyzer traverses all reachable branch commits in fixture-baseline..HEAD. It excludes the vendor import and baseline from five-user attribution and lists merges separately. This prevents Carl or Chloe from receiving credit for thousands of imported SDK lines, or losing their branch work because only merge commits were inspected.

Actual local branch, review-record, merge and pull bindings; all reviewer identities are fictional.
Local recordAuthor / branch headMergePull readback
LOCAL-DEMO-01
0 fixture suites; lint passed
Aria Architect
d067f1734a
a6be7ad4a9Exact merge SHA matched
LOCAL-DEMO-02
0 fixture suites; lint passed
Carl Commenter
d9641aa1bb
dab7056886Exact merge SHA matched
LOCAL-DEMO-03
1 fixture suites; lint passed
Tess Tester
2e00b10a57
3b43272b40Exact merge SHA matched
LOCAL-DEMO-04
2 fixture suites; lint passed
Ben Boundary
fc185b7f14
018b52a970Exact merge SHA matched
LOCAL-DEMO-05
2 fixture suites; lint passed
Carl Commenter
92306b7e58
dcbf3fd684Exact merge SHA matched
LOCAL-DEMO-06
2 fixture suites; lint passed
Ben Boundary
4d7a46e9da
8a613ae5e7Exact merge SHA matched
LOCAL-DEMO-07
2 fixture suites; lint passed
Chloe Coder
65680572fd
f9f2fc4005Exact merge SHA matched
LOCAL-DEMO-08
3 fixture suites; lint passed
Tess Tester
277fb2a05b
1131d723b2Exact merge SHA matched
LOCAL-DEMO-09
4 fixture suites; lint passed
Aria Architect
ac5957070c
c99d14ab8dExact merge SHA matched
LOCAL-DEMO-10
5 fixture suites; lint passed
Ben Boundary
e518cd8035
be528195a3Exact merge SHA matched

The pinned SDK requires PHP ^8.2 with ctype, date and filter. Composer scripts and upstream development tools are not installed or executed. Only the included application tests and the SDK assertion paths used by the adapter run. This does not claim that the full upstream SDK test suite passed.

02 / Interactive contribution matrix

Change the lens.
Keep the evidence.

The values below come from the downloadable Git history, not invented dashboard totals. All five programmers work in PHP. Python powers the analyzer and is outside the sample repository.

Git activity and content diagnostics; these columns are not a human-productivity score.
ProgrammerCommitsAddedRemovedOld targetsNet linesRuntime token changesTest token changesToken-preserving changes
Aria Architect254100541410
Carl Commenter218611185002
Tess Tester2310031020
Ben Boundary377181859420
Chloe Coder13499499-496100

A “token change” is a changed non-comment PHP token sequence in a file, not proof of a feature or bug fix. Old targets count removed-line coordinates within each commit; summing history repeats touches. The unchanging closing brace is not a deleted target. Binary lines are unknown, not zero.

Read the outcomes beside the activity

Whole-fixture evidence below is independent of the interactive activity filters.

Foundation + composition

Aria Architect

Introduces the original PHP application, then adds the summary workflow. Eight function-level summary cases pass. Foundation work is not a penalty for initially adding code.

Documentation + formatting

Carl Commenter

Adds 180 repeated comment-only lines net. Both changed files retain the same non-comment tokens; no runtime improvement was demonstrated. Readability benefit remains a review question.

Characterization + regression

Tess Tester

Adds the 112-case shipping contract and a focused 12-case boundary suite. Those 12 inputs overlap existing coverage; they are not 12 additional unique scenarios.

Validation + SDK + output

Ben Boundary

Fixes malformed-input coercion and output escaping, and integrates the real assertion SDK through ShippingInput. Before/after failing cases are retained in the evidence kit.

Tested simplification

Chloe Coder

Changes the shipping function from 500 to 4 physical lines, with zero mismatches across 112 observed cases. Git measures +3/−499; 99 branch tokens are removed.

Outcomes below are retained fixture execution/review observations attached to actual commit hashes. They cannot be inferred reliably from a commit message or line count. Missing evidence remains unknown.

03 / Code over time

The codebase gets smaller.
The contract stays put.

Follow ten branch commits over eleven synthetic calendar days. The chart tracks physical runtime PHP lines, including comments. It makes Carl’s comment growth and Chloe’s refactor visible without confusing size with value.

Exact chronology and changed content
Date / authorCommitAdded / removedRuntime lines afterObserved work
2026-01-05
Aria Architect
d067f1734a+520 / −0527Introduces the working finite-domain PHP application; later improvements depend on this baseline.
2026-01-06
Carl Commenter
d9641aa1bb+180 / −0707180 repetitive comment lines added; no measured functionality gain. Useful documentation is assessed separately, not declared worthless.
2026-01-07
Tess Tester
2e00b10a57+18 / −0707Adds 100 finite-domain valid checks and 12 invalid-boundary checks.
2026-01-08
Ben Boundary
fc185b7f14+34 / −4713Explicit request-type and integer-range validation; same valid request contract.
2026-01-09
Carl Commenter
92306b7e58+6 / −1718Non-comment token sequence unchanged. Readability remains a review judgment; raw additions alone do not demonstrate more functionality.
2026-01-10
Ben Boundary
4d7a46e9da+28 / −8738Custom ShippingInput adapter actually calls the pinned Webmozart Assert SDK. Same ten request-contract cases pass; upstream source and license unchanged.
2026-01-12
Chloe Coder
65680572fd+3 / −499242Same observed shipping behavior, 496 fewer physical function lines, 99 fewer branch tokens. The four-line formatting itself is not the benefit.
2026-01-13
Tess Tester
277fb2a05b+13 / −0242Repeats 12 already characterized boundary cases in a focused suite; not 12 new unique input scenarios.
2026-01-14
Aria Architect
ac5957070c+21 / −0251Eight observed end-to-end function-level cases for the new summary composition; no web server, database or production traffic.
2026-01-15
Ben Boundary
e518cd8035+15 / −6247Four output-string cases; does not establish complete application XSS protection.

Author dates are synthetic and fixed for reproducibility. A Git author name/email is an assertion in a commit, not verified human identity. Ten local merge commits are listed separately from the ten author branch commits, so their diffs are not counted twice. There are no coauthor trailers.

04 / The 500-line test

Four lines are better here.
Three are wrong.

The sample shipping rule accepts integer zones 1–10 and integer weights 1–10. The price is 100 cents per zone plus 25 cents per weight. The intentionally bloated baseline spells out 99 cases and uses the last valid pair as its default. Chloe expresses the same rule directly.

Chloe’s complete four-line function

PHP · complete four-line refactor
<?php
declare(strict_types=1);

function shipping_cents(int $zone, int $weight): int {
    if ($zone < 1 || $zone > 10 || $weight < 1 || $weight > 10) { throw new InvalidArgumentException('zone and weight must be in 1..10'); }
    return 100 * $zone + 25 * $weight;
}

Four physical lines is a presentation choice. The meaningful improvement is 99 fewer branch tokens, less repetition and zero observed contract mismatches. This is not a claim of measured speed or reduced defects in a real product.

Try a valid input—or break the guard

Browser visualization of the PHP example. The actual PHP implementation and recorded execution are in the kit.

Zone 3, weight 4: both valid implementations return 400 cents.

Try zone 0. The actual unsafe PHP variant mismatches all 12 invalid-boundary checks. A green valid example alone would miss the defect.

Inspect the complete 500-line baseline

This deliberately repetitive teaching function is exactly 500 physical lines. It is not copied from a client system.

PHP · complete 500-line baseline function
<?php
declare(strict_types=1);

function shipping_cents(int $zone, int $weight): int
{
    if ($zone < 1 || $zone > 10 || $weight < 1 || $weight > 10) {
        throw new InvalidArgumentException('zone and weight must be in 1..10');
    }
    if ($zone === 1 && $weight === 1) {
        $cost = 125;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 1 && $weight === 2) {
        $cost = 150;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 1 && $weight === 3) {
        $cost = 175;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 1 && $weight === 4) {
        $cost = 200;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 1 && $weight === 5) {
        $cost = 225;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 1 && $weight === 6) {
        $cost = 250;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 1 && $weight === 7) {
        $cost = 275;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 1 && $weight === 8) {
        $cost = 300;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 1 && $weight === 9) {
        $cost = 325;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 1 && $weight === 10) {
        $cost = 350;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 2 && $weight === 1) {
        $cost = 225;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 2 && $weight === 2) {
        $cost = 250;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 2 && $weight === 3) {
        $cost = 275;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 2 && $weight === 4) {
        $cost = 300;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 2 && $weight === 5) {
        $cost = 325;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 2 && $weight === 6) {
        $cost = 350;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 2 && $weight === 7) {
        $cost = 375;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 2 && $weight === 8) {
        $cost = 400;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 2 && $weight === 9) {
        $cost = 425;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 2 && $weight === 10) {
        $cost = 450;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 3 && $weight === 1) {
        $cost = 325;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 3 && $weight === 2) {
        $cost = 350;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 3 && $weight === 3) {
        $cost = 375;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 3 && $weight === 4) {
        $cost = 400;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 3 && $weight === 5) {
        $cost = 425;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 3 && $weight === 6) {
        $cost = 450;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 3 && $weight === 7) {
        $cost = 475;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 3 && $weight === 8) {
        $cost = 500;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 3 && $weight === 9) {
        $cost = 525;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 3 && $weight === 10) {
        $cost = 550;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 4 && $weight === 1) {
        $cost = 425;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 4 && $weight === 2) {
        $cost = 450;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 4 && $weight === 3) {
        $cost = 475;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 4 && $weight === 4) {
        $cost = 500;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 4 && $weight === 5) {
        $cost = 525;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 4 && $weight === 6) {
        $cost = 550;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 4 && $weight === 7) {
        $cost = 575;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 4 && $weight === 8) {
        $cost = 600;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 4 && $weight === 9) {
        $cost = 625;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 4 && $weight === 10) {
        $cost = 650;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 5 && $weight === 1) {
        $cost = 525;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 5 && $weight === 2) {
        $cost = 550;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 5 && $weight === 3) {
        $cost = 575;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 5 && $weight === 4) {
        $cost = 600;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 5 && $weight === 5) {
        $cost = 625;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 5 && $weight === 6) {
        $cost = 650;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 5 && $weight === 7) {
        $cost = 675;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 5 && $weight === 8) {
        $cost = 700;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 5 && $weight === 9) {
        $cost = 725;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 5 && $weight === 10) {
        $cost = 750;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 6 && $weight === 1) {
        $cost = 625;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 6 && $weight === 2) {
        $cost = 650;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 6 && $weight === 3) {
        $cost = 675;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 6 && $weight === 4) {
        $cost = 700;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 6 && $weight === 5) {
        $cost = 725;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 6 && $weight === 6) {
        $cost = 750;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 6 && $weight === 7) {
        $cost = 775;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 6 && $weight === 8) {
        $cost = 800;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 6 && $weight === 9) {
        $cost = 825;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 6 && $weight === 10) {
        $cost = 850;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 7 && $weight === 1) {
        $cost = 725;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 7 && $weight === 2) {
        $cost = 750;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 7 && $weight === 3) {
        $cost = 775;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 7 && $weight === 4) {
        $cost = 800;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 7 && $weight === 5) {
        $cost = 825;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 7 && $weight === 6) {
        $cost = 850;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 7 && $weight === 7) {
        $cost = 875;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 7 && $weight === 8) {
        $cost = 900;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 7 && $weight === 9) {
        $cost = 925;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 7 && $weight === 10) {
        $cost = 950;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 8 && $weight === 1) {
        $cost = 825;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 8 && $weight === 2) {
        $cost = 850;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 8 && $weight === 3) {
        $cost = 875;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 8 && $weight === 4) {
        $cost = 900;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 8 && $weight === 5) {
        $cost = 925;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 8 && $weight === 6) {
        $cost = 950;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 8 && $weight === 7) {
        $cost = 975;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 8 && $weight === 8) {
        $cost = 1000;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 8 && $weight === 9) {
        $cost = 1025;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 8 && $weight === 10) {
        $cost = 1050;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 9 && $weight === 1) {
        $cost = 925;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 9 && $weight === 2) {
        $cost = 950;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 9 && $weight === 3) {
        $cost = 975;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 9 && $weight === 4) {
        $cost = 1000;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 9 && $weight === 5) {
        $cost = 1025;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 9 && $weight === 6) {
        $cost = 1050;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 9 && $weight === 7) {
        $cost = 1075;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 9 && $weight === 8) {
        $cost = 1100;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 9 && $weight === 9) {
        $cost = 1125;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 9 && $weight === 10) {
        $cost = 1150;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 10 && $weight === 1) {
        $cost = 1025;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 10 && $weight === 2) {
        $cost = 1050;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 10 && $weight === 3) {
        $cost = 1075;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 10 && $weight === 4) {
        $cost = 1100;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 10 && $weight === 5) {
        $cost = 1125;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 10 && $weight === 6) {
        $cost = 1150;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 10 && $weight === 7) {
        $cost = 1175;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 10 && $weight === 8) {
        $cost = 1200;
        $shipping = $cost;
        return $shipping;
    }
    if ($zone === 10 && $weight === 9) {
        return 1225;
    }
    return 1250;
}
Observed contract evidence, not a manufactured contribution score
ObservationBaselineChloeUnsafe shorter variant
Function physical lines50043
Branch tokens in shipping function file10010
Valid integer pairs match100 / 100100 / 100100 / 100
Invalid-boundary outcomes match baseline12 / 1212 / 120 / 12

All 100 valid pairs exhaust the stated finite valid domain. Twelve invalid-boundary examples exercise rejection, including PHP integer extremes. They are not a formal proof over all possible inputs, types or environments. No timing benchmark is claimed.

05 / Reproduce the evidence

Build the history.
Read the diff. Run PHP.

  1. Extract the resource kit.Install Python 3.10+, Git and PHP 8.2+ with ctype, date and filter using your normal approved tools. The browser page needs no PHP server, account, token, upload or database.
  2. Create a new synthetic repository.The generator refuses an existing workspace and creates separate seed, integration and review repositories. It performs local-only branches, simulated PR reviews, no-fast-forward merges and fast-forward pulls; it never contacts an external remote, pushes, creates a real PR or changes global Git configuration.
  3. Execute the known fixture.The generator compares before/after behavior and runs the unsafe short counterexample. Run each included PHP test to see actual failures rather than relying on a dashboard badge.
  4. Analyze the repository.The Python tool reads Git objects and lexes source using its own PHP helper. It does not include analyzed files, execute a target repository’s tests, check out revisions, run hooks or contact a network.
  5. Review evidence and attribution.Open the CSV/JSON, inspect full SHAs and paths, and compare outcomes. Add approved alias/coauthor/review mappings for a real study; do not silently treat commit email as a verified person or blame as effort.
Terminal · isolated local SDK workshop
# From the extracted kit; use a NEW workspace path.
python tools/create_sdk_fixture.py workshop --php php

# Only run these known, generated fixture tests—not an arbitrary repository.
php workshop/integration/tests/shipping_test.php
php workshop/integration/tests/input_test.php
php workshop/integration/tests/receipt_test.php
php workshop/integration/tests/summary_test.php
php workshop/integration/tests/boundaries_test.php

python tools/analyze.py workshop/integration --php php \
  --base fixture-baseline --all-branches \
  --evidence workshop/sdk-execution-evidence.json --out report

# report/analysis.json and report/authors.csv contain the observations.
# Windows PowerShell: put the last command on one line, or use backtick continuation.

Inspect Chloe’s exact diff

Git · raw evidence and actual commit identities
# In workshop/integration (full hashes are also in LOCAL-REVIEWS.json).
git log --all --graph --format="%h %an %s"
git log fixture-baseline..HEAD --no-merges --numstat
git show --format= --unified=0 65680572fdb7289c6a53c2712524de073b9e6f36 -- src/shipping.php

# Inspect a local simulated branch/review/merge binding:
git show --no-patch --format=fuller a6be7ad4a9d9cdaf81f89cfc825fd05bacf790a0
# Local pull records are in workshop/LOCAL-PULLS.json.
# No external PR URL, push, GitHub token or network is involved.

--numstat reports three added lines and 499 removed lines. A zero-context hunk targets 499 old line positions. “Replaced lines” is not a primitive Git fact: min(added, deleted) gives only an upper bound, here 3; it does not pair semantically equivalent statements. The 500 → 4 function measurement is separate.

Analyzer boundaries

The CLI bounds retrieved history to 500 commits by default (maximum 2,000), source blobs to 1 MiB and Git output to 24 MB. The SDK fixture uses an explicit baseline..HEAD range across all reachable branches, excludes merge-commit activity and vendor paths, and reports renames as delete-plus-add. Its default first-parent mode is available for deliberately linear histories only. These explicit simplifications are suitable for the fixture, not a complete attribution solution for a branched organization. The JSON keeps those limits visible.

06 / Compare approaches

Use a matrix.
Resist a magic number.

ApproachUseful forMisses
Commits / additions / churnLocating activity and estimating review surfaceValue, difficulty, equivalence, hidden collaboration; easy to inflate
Targeted old lines / paths / languageExplaining the scope of edits over timeWhether a deletion improves anything; repeated historical touches
Whitespace / non-comment token comparisonSeparating comment/reformat churn from changed tokensUniversal semantic equivalence; magic line constants and reflection are exceptions
Blame with move/copy or ignored-revision heuristicsFinding retained-line provenance for investigationDeleted work, review, authorship verification, effort and business impact
Test, outcome and review evidenceSupporting a particular correctness or maintenance claimUnmeasured cases, production impact and human context

Documentation, tests and architecture can unlock work without changing a runtime token. Languages have different idioms and formatting; comparing their raw line totals as productivity rewards is not valid. This Lab deliberately offers separate lenses rather than a weighted employee leaderboard.

07 / Discuss it in an interview

Explain the change.
Show what would falsify it.

For a candidate

Choose an authorized change. Explain the old behavior, the target, the affected files/languages, the tradeoff, and your role alongside reviewers or collaborators. Show a failing-before/passing-after test and a case your change does not cover.

For a reviewer

Ask why the change was needed, what was preserved, how the evidence was gathered, and what might regress. Evaluate the actual code and reasoning. Never turn this synthetic exercise into a deletion quota or an automated hiring verdict.

Work backward from an outcome

  1. State the claim: same shipping behavior with less duplicated branching.
  2. Decide the observations that could contradict it: changed valid totals, accepted invalid inputs, or untested callers.
  3. Retain original code and a stable input set; run both implementations.
  4. Inspect the counterexample: the three-line version is shorter and fails.
  5. Report the measured difference and limits. Do not tune weights until your preferred person wins.

Tests and business-outcome evidence come from outside Git. The SPACE research example below likewise treats productivity as multiple dimensions, rather than a single activity count.

08 / Code + resources

Take the experiment apart.

One reproducible resource kit

Python analyzer and fixture generator, PHP lexer helper, all PHP snapshots and tests, observed JSON/CSV, expected results, readable web source and compiled CSS, setup/how-to, method notes, checksums, MIT license and a recording storyboard. The exact pinned SDK snapshot and its original MIT license are included. No .git checkout, private repository, applicant data, credentials or deployment operator is included.

Download SOURCE.zip ↓

Project Lead: Chason Arthur · Code: MIT · Python 3.10+ / Git / PHP 8.2+ with ctype, date and filter · Local-only fixture · All five sample programmers use PHP.

Primary examples behind the method

Documentation checked November 5, 2026. These sources inform the approach; none endorses this synthetic fixture as a hiring or productivity instrument.

Keep the engineering connected

If a related Lab route changes, use the current Lab catalog.