Files
Open_Ultra_SAST/plane/experiments/exp-001-known-callers.yaml
T

35 lines
2.5 KiB
YAML
Raw Normal View History

# Experiment exp-001 (learned-decision-engine design section 6, Requirement 4.4): the known-callers prompt line.
# Registered before it runs; `ousast learn experiment register` records this file's sha256, and a changed file is a new
# experiment. Pre-registered expectation: with about 55 positive units the paired MDE is about 0.15, the observed gap
# 0.10 needs about 115 -- an inconclusive result is the likely and honest outcome; a follow-up needs new units.
id: exp-001-known-callers
hypothesis: >
Removing the known-callers line from the verify prompt changes the rate at which verify flags a true site in any
pass (plane-increment-2 recorded 17 of 20 declared sites flagged with the line vs 19 without, confounded).
kind: plane # arms are plane Run configurations; the plane's experiment-outcome task writes the arm_outcome rows
arms:
A:
label: verify as today (known-callers line on; CALLERS_CAP 8)
task_env: {}
B:
label: verify with the known-callers line off
task_env: {OUSAST_VERIFY_CALLERS: "off"} # everything else identical: model, PER_HUNT, MAX_STEPS, facts, runner image
unit: candidate
pairing: paired # every unit runs in both arms
cluster: repository # the resampling unit of the bootstrap
order: {randomise: per_case, seed: 1}
metric:
primary: "flag_rate[label=1]" # flagged in any pass, over the positive units (the 17-vs-19 metric)
secondary: ["flag_rate[label=0]", "usd_per_candidate"] # false flags on fixed-pin negatives; cost
test: {primary: cluster_bootstrap_paired_diff, secondary: exact_mcnemar, alpha: 0.05, sides: 2, resamples: 10000}
mde: 0.15
stopping: {looks: [0.5, 1.0], boundary: obrien_fleming} # |z| >= 2.797 at half the repositories, 1.977 at the end
budget_usd: {total: 15, per_arm: 7.5} # ~$7.7 expected: 552 hunts x $0.014
families: [injection, access_control, path, untrusted_destination] # the verify families
# The development corpus, not v2 (v2 generated the hypothesis): population v1 (11 cases), pmpro, MediaWiki, WP Statistics,
# and the 27 full-repository pointer pairs of the verify families -- 41 repositories. Candidates are generated model-free
# (fix-changed functions plus the top engine- and quick-alert functions, up to 8 per pin, on both pins) and frozen here;
# only units whose arm-A callers line is non-empty are treated. The file does not exist yet: registration records the
# units as `pending`, and the experiment cannot run until it is frozen, committed and registered again.
units_file: plane/experiments/exp-001-known-callers.units.jsonl