AS/400 reverse-engineering eval, 15 October 2026

Four public IBM i trees scored through as400-re-harness. Corpora pin 4b3f612d478e. Offline extract and Anthropic extract on claude-sonnet-5 are both in.

Executive summary

The offline skills engine and the offline custom engine produce the same scores on these four targets. Both use the deterministic offline extractor. Mean rule recall is 0.0813. Mean documented-rule precision is 0.1528. Mean objective is 0.5267.

Mutation-detection rate is 0 on every offline run. Several patches do not match the pinned source text. The patches that do apply do not change the extracted rule blob, so the detector records a miss.

Anthropic extract on claude-sonnet-5 is in from the pull_request llm job. Skills mean recall is 0.4313. Custom mean recall is 0.4813. Skills mean documented-rule precision is 0.1472. Custom mean documented-rule precision is 0.124. Skills mean objective is 0.3409. Custom mean objective is 0.3503.

Skills mean mutation-detection rate is 0.7084. Custom mean mutation-detection rate is 0.7084. Combined Anthropic extract cost across the eight rows is $9.223. Execution stays not applicable on every corpora run.

Labels other than cognidev are LLM-drafted and pending human review. Cognidev uses the CogniDev understand spec as primary truth.

Methodology

You score a target by cloning its public upstream at the SHA in source.yaml, running extract, and matching kept rules to corpora rules.json. Matching is a case-insensitive needle search over title, description, condition, and effect. Needles come from the rule statement, the rule id, and citation file names.

The four targets are cognidev-order-mgmt, flight400, ibmi-inventory, and ibm-company-system. The corpora repo is ecociel/as400-eval-corpora at 4b3f612d478ef7437592ae032caf9d143d93a855. Fetch uses evals/corpora/scripts/fetch.py. Source stays in a gitignored cache. Cleanup deletes it after scoring.

Each engine runs once on the untouched clone, then once per mutation case after a semantic patch on a copy. A mutation counts as detected when the patch applies and the extracted rule blob changes, or when the replacement text appears only after the patch.

This Cloud Agent token cannot clone the private corpora repo. CI tries that clone first. If GitHub returns 404, CI copies evals/corpora/derived/ (JSON, YAML, and Markdown only) and still fetches the four public upstreams anonymously.

CI links: pull request 7, pull_request evals run, push evals run. The llm job uses the ANTHROPIC_API_KEY secret and model claude-sonnet-5.

Findings

Offline baseline (skills and custom)

TargetEngineProviderRecallPrecisionCitationExecutionMutationObjectiveCost USDRuntime ms
cognidev-order-mgmtskillsoffline0.10.11111not applicable00.5771072
flight400skillsoffline0.1250.33331not applicable00.67790144
ibmi-inventoryskillsoffline0.10.16671not applicable00.6117038
ibm-company-systemskillsoffline000not applicable00.24035
cognidev-order-mgmtcustomoffline0.10.11111not applicable00.5771094
flight400customoffline0.1250.33331not applicable00.67790125
ibmi-inventorycustomoffline0.10.16671not applicable00.6117034
ibm-company-systemcustomoffline000not applicable00.24035

LLM extract, claude-sonnet-5 (skills and custom)

TargetEngineProviderRecallPrecisionCitationExecutionMutationObjectiveCost USDRuntime ms
cognidev-order-mgmtskillsanthropic0.50.050.38not applicable0.66670.43011.70991176412
flight400skillsanthropic0.3750.04690not applicable0.50.27552.17661271749
ibmi-inventoryskillsanthropic0.10.03030.303not applicable0.66670.3160.5045321844
ibm-company-systemskillsanthropic0.750.46150not applicable10.3420.2397161686
cognidev-order-mgmtcustomanthropic0.70.07530.3878not applicable0.66670.47421.69931132572
flight400customanthropic0.250.02740not applicable0.50.25022.1421220014
ibmi-inventorycustomanthropic0.10.04350.3043not applicable0.66670.30890.5265332655
ibm-company-systemcustomanthropic0.8750.350not applicable10.36770.2246156536

Recall by target, offline skills

cognidev-order-mgmt
flight400
ibmi-inventory
ibm-company-system

Objective by target, offline skills

cognidev-order-mgmt
flight400
ibmi-inventory
ibm-company-system

Recall by target, Anthropic skills

cognidev-order-mgmt
flight400
ibmi-inventory
ibm-company-system

Recall by target, Anthropic custom

cognidev-order-mgmt
flight400
ibmi-inventory
ibm-company-system

On Anthropic, skills and custom diverge. The engines no longer share one deterministic extractor, so the two CLI paths are a real comparison.

Anthropic skills mean recall is 0.4313 against offline mean recall 0.0813.

Anthropic keeps far more rules than the offline extractor. Documented-rule precision does not rise with recall, because the extra rows do not match the corpora list. Mean objective falls because citation precision and noise get worse, and execution stays not applicable.

Flight400 has the highest offline objective (0.6779). IBM Company System has the lowest. Offline extract keeps file-write and call-graph rows. It rarely restates a CHECK constraint, a message file, or a buried RPG III compare, so needle match stays low.

Skills and custom match exactly on every offline cell. That is not two methods agreeing. It is one offline extractor reached through two CLI engines.

cognidev-order-mgmt

Cognidev rules use the CogniDev understand spec as primary truth. Source origin is corpora-cache.

Scores

TargetEngineProviderRecallPrecisionCitationExecutionMutationObjectiveCost USDRuntime ms
cognidev-order-mgmtskillsoffline0.10.11111not applicable00.5771072
cognidev-order-mgmtskillsanthropic0.50.050.38not applicable0.66670.43011.70991176412
cognidev-order-mgmtcustomoffline0.10.11111not applicable00.5771094
cognidev-order-mgmtcustomanthropic0.70.07530.3878not applicable0.66670.47421.69931132572

Matched ground-truth ids on offline skills: ord-line-updates-article-stock.

Matched ground-truth ids on Anthropic skills: ord-deliver-qty-le-ordered, ord-qty-ge-already-delivered, ord-unknown-customer, ord-insert-sets-customer-last-order-date, art-vat-code-required.

Mutation cases, offline skills

CaseRuleAppliedDetectedAnswer key
mut-allow-over-deliveryord-deliver-qty-le-orderedyesnoaccept
mut-allow-order-below-deliveredord-qty-ge-already-deliverednonoaccept
mut-skip-stock-triggerord-line-updates-article-stockyesnono-stock-change

Mutation cases, Anthropic skills

CaseRuleAppliedDetectedAnswer key
mut-allow-over-deliveryord-deliver-qty-le-orderedyesyesaccept
mut-allow-order-below-deliveredord-qty-ge-already-deliverednonoaccept
mut-skip-stock-triggerord-line-updates-article-stockyesyesno-stock-change

flight400

Labels other than cognidev are LLM-drafted and pending human review. Source origin is corpora-cache.

Scores

TargetEngineProviderRecallPrecisionCitationExecutionMutationObjectiveCost USDRuntime ms
flight400skillsoffline0.1250.33331not applicable00.67790144
flight400skillsanthropic0.3750.04690not applicable0.50.27552.17661271749
flight400customoffline0.1250.33331not applicable00.67790125
flight400customanthropic0.250.02740not applicable0.50.25022.1421220014

Matched ground-truth ids on offline skills: frs-main-menu-is-reservation-system.

Matched ground-truth ids on Anthropic skills: frs-customer-unique-number, frs-main-menu-is-reservation-system, frs-order-display-uses-order-number.

Mutation cases, offline skills

CaseRuleAppliedDetectedAnswer key
mut-ignore-zero-seatsfrs-zero-seats-is-special-pathnonono-zero-seat-branch
mut-drop-customer-from-orderfrs-order-needs-customer-flight-ticketsyesnocustomer-optional

Mutation cases, Anthropic skills

CaseRuleAppliedDetectedAnswer key
mut-ignore-zero-seatsfrs-zero-seats-is-special-pathnonono-zero-seat-branch
mut-drop-customer-from-orderfrs-order-needs-customer-flight-ticketsyesyescustomer-optional

ibmi-inventory

Labels other than cognidev are LLM-drafted and pending human review. Source origin is corpora-cache.

Scores

TargetEngineProviderRecallPrecisionCitationExecutionMutationObjectiveCost USDRuntime ms
ibmi-inventoryskillsoffline0.10.16671not applicable00.6117038
ibmi-inventoryskillsanthropic0.10.03030.303not applicable0.66670.3160.5045321844
ibmi-inventorycustomoffline0.10.16671not applicable00.6117034
ibmi-inventorycustomanthropic0.10.04350.3043not applicable0.66670.30890.5265332655

Matched ground-truth ids on offline skills: inv-stock-nonnegative.

Matched ground-truth ids on Anthropic skills: inv-working-days-skip-holidays.

Mutation cases, offline skills

CaseRuleAppliedDetectedAnswer key
mut-allow-negative-stockinv-stock-nonnegativeyesnoaccept-negative
mut-allow-inactive-warehouseinv-active-item-warehouseyesnoaccept-inactive-wh
mut-api-maps-insufficient-to-200inv-api-same-posting-rulesnonohttp-200-on-insufficient

Mutation cases, Anthropic skills

CaseRuleAppliedDetectedAnswer key
mut-allow-negative-stockinv-stock-nonnegativeyesyesaccept-negative
mut-allow-inactive-warehouseinv-active-item-warehouseyesyesaccept-inactive-wh
mut-api-maps-insufficient-to-200inv-api-same-posting-rulesnonohttp-200-on-insufficient

ibm-company-system

Labels other than cognidev are LLM-drafted and pending human review. Source origin is corpora-cache.

Scores

TargetEngineProviderRecallPrecisionCitationExecutionMutationObjectiveCost USDRuntime ms
ibm-company-systemskillsoffline000not applicable00.24035
ibm-company-systemskillsanthropic0.750.46150not applicable10.3420.2397161686
ibm-company-systemcustomoffline000not applicable00.24035
ibm-company-systemcustomanthropic0.8750.350not applicable10.36770.2246156536

Matched ground-truth ids on offline skills: none.

Matched ground-truth ids on Anthropic skills: cmp-dept-pk, cmp-employee-pk, cmp-employee-belongs-to-dept, cmp-dept-admin-cascade, cmp-phone-numeric-range, cmp-dept-cost-is-sum-of-pay.

Mutation cases, offline skills

CaseRuleAppliedDetectedAnswer key
mut-allow-phone-9999cmp-phone-numeric-rangeyesnoaccept-9999
mut-allow-blank-salarycmp-new-employee-needs-dept-and-numeric-salaryyesnoaccept-blank-salary

Mutation cases, Anthropic skills

CaseRuleAppliedDetectedAnswer key
mut-allow-phone-9999cmp-phone-numeric-rangeyesyesaccept-9999
mut-allow-blank-salarycmp-new-employee-needs-dept-and-numeric-salaryyesyesaccept-blank-salary

Miss analysis

The counts below use the offline skills run.

cognidev-order-mgmt (offline skills)

Miss classes: dds 5, other 1, screen 1, sql 1, sqlrpgle 1.

flight400 (offline skills)

Miss classes: dds 3, other 1, screen 3.

ibmi-inventory (offline skills)

Miss classes: other 2, sql 7.

ibm-company-system (offline skills)

Miss classes: sql 5, sqlrpgle 3.

The counts below use the Anthropic skills run.

cognidev-order-mgmt (Anthropic skills)

Miss classes: dds 2, other 2, screen 1.

flight400 (Anthropic skills)

Miss classes: dds 2, screen 3.

ibmi-inventory (Anthropic skills)

Miss classes: other 1, sql 8.

ibm-company-system (Anthropic skills)

Miss classes: sqlrpgle 2.

Limitations

Next steps

  1. Have a human review the non-cognidev rule lists before using them as a holdout gate.
  2. Mint a GitHub App token that includes the corpora repo, or add that repo to the Cloud Agent environment repo list, so CI stops using the derived fallback.
  3. Teach extract to emit CHECK constraints, message-file text, and RPG III indicator compares so needle match can rise without leaking ground truth into extract.
  4. Align mutation find_pattern strings with the pinned source, still without committing that source.