This commit is contained in:
457
benchmarks/results/manifest-v4-preregistration.yaml
Normal file
457
benchmarks/results/manifest-v4-preregistration.yaml
Normal file
@@ -0,0 +1,457 @@
|
||||
# Manifest v4 — Task 2.5 Stage 3 N=400 Pre-Registration (machine-readable twin)
|
||||
# Canonical markdown surface: manifest-v4-preregistration.md
|
||||
# Any change to this file requires new PM-ratified decision doc + manifest v5.
|
||||
# SHA-256 of this YAML's bytes is recorded in the anchor commit message.
|
||||
|
||||
manifest_version: v4.0.0-preregistration
|
||||
manifest_type: stage_3_n400_preregistration
|
||||
locked_date: 2026-04-24
|
||||
authority: PM (Marko Markovic) — Option 1 (N=400 direct) ratified 2026-04-24 on Stage 2-Retry Gate C PARTIAL PASS exit
|
||||
sprint: 12
|
||||
task: 2.5
|
||||
stage: 3
|
||||
branch: feature/c3-v3-wrapper
|
||||
code_freeze_head: 373516c2784807da8536dbc0c194c54f4e4cd4be
|
||||
code_freeze_head_short: 373516c
|
||||
supersedes: stage_2_retry_n20_gate_c
|
||||
inherits_from: bench_spec_lock_v1_2026_04_22
|
||||
|
||||
# ── Field 7 slots (preregistration.ts PreregistrationManifestPayload) ───────
|
||||
|
||||
manifest_path: benchmarks/results/manifest-v4-preregistration.yaml
|
||||
manifest_locked_at: 2026-04-24T00:00:00Z
|
||||
|
||||
dataset:
|
||||
name: locomo
|
||||
source_url: https://raw.githubusercontent.com/snap-research/locomo/main/data/locomo10.json
|
||||
raw_archive_path: benchmarks/data/locomo10.json
|
||||
raw_archive_sha256: 79fa87e90f04081343b8c8debecb80a9a6842b76a7aa537dc9fdf651ea698ff4
|
||||
raw_archive_bytes: 2805274
|
||||
canonical_path: benchmarks/data/locomo/locomo-1540.jsonl
|
||||
canonical_sha256: 39e415e2f3a0fa1bd3cb1804a58d0b440b50d3070b2100698437e4ec402a5b24
|
||||
canonical_instance_count: 1531
|
||||
paper_total_claim: 1540
|
||||
paper_reference: "Maharana et al., ACL-2024 — Evaluating Very Long-Term Conversational Memory of LLM Agents"
|
||||
category_distribution:
|
||||
single_hop: 841
|
||||
multi_hop: 281
|
||||
temporal: 320
|
||||
open_ended: 89
|
||||
|
||||
# ── Primary hypothesis (directional, confirmatory) ──────────────────────────
|
||||
|
||||
primary_hypothesis:
|
||||
name: memory_lift_retrieval_vs_no_context
|
||||
direction: one_sided_positive
|
||||
statement: "retrieval_judge_accuracy − no-context_judge_accuracy ≥ 5pp"
|
||||
test: fisher_exact_one_sided
|
||||
alpha_threshold: 0.10
|
||||
effect_size_threshold_pp: 5
|
||||
justification_ex_ante:
|
||||
- gate_b_dry_run_conv_scope_20_of_20_vs_whole_corpus_8_of_20_leak_2026_04_24
|
||||
- gate_c_monotonicity_no_context_0_10_lt_retrieval_0_35_lt_agentic_0_40_lt_oracle_0_55
|
||||
|
||||
# ── Secondary endpoints (ex-ante, non-blocking, descriptive) ────────────────
|
||||
|
||||
secondary_endpoints:
|
||||
S1_monotonicity_no_context_leq_retrieval:
|
||||
direction: one_sided_positive
|
||||
threshold_pp: 0
|
||||
test: fisher_exact_one_sided
|
||||
alpha: 0.20
|
||||
S2_monotonicity_retrieval_leq_agentic:
|
||||
direction: one_sided_positive
|
||||
threshold_pp: 0
|
||||
test: fisher_exact_one_sided
|
||||
alpha: 0.20
|
||||
S3_monotonicity_agentic_leq_oracle_context:
|
||||
direction: one_sided_positive
|
||||
threshold_pp: 0
|
||||
test: fisher_exact_one_sided
|
||||
alpha: 0.20
|
||||
S4_agentic_lift_over_retrieval:
|
||||
direction: descriptive
|
||||
threshold_pp: 0
|
||||
report: [point_estimate, wilson_95_ci]
|
||||
S5_abstain_penalty_oracle_minus_full_context:
|
||||
direction: descriptive_expected_positive
|
||||
report: [point_estimate]
|
||||
rationale: "SYSTEM_EVOLVED strict-abstain prompt is expected to reduce full-context accuracy below oracle-context on instances where the oracle answer is ambiguous; diagnostic only, no gating"
|
||||
|
||||
# ── Sample design ───────────────────────────────────────────────────────────
|
||||
|
||||
sample:
|
||||
cells:
|
||||
- no-context
|
||||
- oracle-context
|
||||
- full-context
|
||||
- retrieval
|
||||
- agentic
|
||||
n_per_cell: 400
|
||||
total_evaluations: 2000
|
||||
instance_selection_seed: 42
|
||||
instance_selection_method: "shuffle-then-take-first-N, deterministic given seed"
|
||||
matched_pairs: true
|
||||
concurrency: 2
|
||||
|
||||
# ── Cells semantics (frozen at HEAD 373516c) ────────────────────────────────
|
||||
|
||||
cells_semantics:
|
||||
no_context:
|
||||
system_prompt: SYSTEM_BASELINE
|
||||
user_prompt: "Question: {question}"
|
||||
memory_injection: none
|
||||
added_at: stage_2_retry_1_1_2026_04_24
|
||||
oracle_context:
|
||||
system_prompt: SYSTEM_BASELINE
|
||||
user_prompt: "Context: {instance.context}\\n\\nQuestion: {instance.question}"
|
||||
memory_injection: oracle_fed_by_locomo
|
||||
harness_alias: raw
|
||||
note: "PM-facing alias for harness `raw` (oracle-fed on LoCoMo; not actually zero-memory)"
|
||||
full_context:
|
||||
system_prompt: SYSTEM_EVOLVED
|
||||
user_prompt: "# Recalled Memories\\n- [memory:synth] {instance.context}\\n\\nQuestion: {instance.question}"
|
||||
memory_injection: oracle_fed_plus_evolved_abstain
|
||||
retrieval:
|
||||
system_prompt: SYSTEM_BASELINE
|
||||
substrate: waggle_core_hybrid_search
|
||||
scope: conversation_scoped_via_gopId
|
||||
top_k_default: 20
|
||||
top_k_upper_clamp: 50
|
||||
agentic:
|
||||
system_prompt: SYSTEM_AGENTIC_softened_stage2_retry
|
||||
system_prompt_sha256: 6facae6decc44a6404290514accb4f7cb364081b32d02847a20f8e871633e328
|
||||
system_prompt_bytes: 1467
|
||||
tool_allowlist:
|
||||
- search_memory
|
||||
tool_binding: "search_memory is bound to instance.conversation_id via makeSearchMemoryTool(substrate, 20, boundToGopId); non-overridable by agent"
|
||||
max_turns: 3
|
||||
timeout_ms: 180000
|
||||
forced_answer_fallback:
|
||||
enabled: true
|
||||
system_prompt: SYSTEM_AGENTIC_FORCED_FALLBACK
|
||||
trigger: "resp.content.trim() === '' && capturedToolResults.length > 0 on runAgentLoop exit"
|
||||
gate_c_firing_rate: 0
|
||||
|
||||
# ── Model stack ─────────────────────────────────────────────────────────────
|
||||
|
||||
subject_model: qwen3.6-35b-a3b-via-dashscope-direct
|
||||
subject_fallback_1: qwen3.6-35b-a3b-via-openrouter
|
||||
subject_fallback_2: NOT_AVAILABLE
|
||||
|
||||
subject_route_table:
|
||||
primary:
|
||||
alias: qwen3.6-35b-a3b-via-dashscope-direct
|
||||
litellm_model: qwen3.6-35b-a3b-via-dashscope-direct
|
||||
upstream_route: "LiteLLM local alias -> openai/qwen3.6-35b-a3b @ https://dashscope-intl.aliyuncs.com/compatible-mode/v1"
|
||||
provider: alibaba
|
||||
thinking: on
|
||||
max_tokens: 16000
|
||||
reasoning_shape: dashscope-native
|
||||
price_per_million_input_usd: 0.20
|
||||
price_per_million_output_usd: 0.80
|
||||
context_window: 262144
|
||||
pinning_surface: floating_alias
|
||||
pinning_surface_carve_out_reason: "DashScope-intl does not expose immutable model snapshots; floating alias mandated by B3 addendum § 5"
|
||||
note: "TRUE Qwen 3.6-35B-A3B (not the 3.5 regress of the OpenRouter bridge)"
|
||||
fallback_1:
|
||||
alias: qwen3.6-35b-a3b-via-openrouter
|
||||
litellm_model: qwen3.6-35b-a3b-via-openrouter
|
||||
upstream_route: "LiteLLM -> OpenRouter bridge (openrouter/qwen/qwen3.5-35b-a3b)"
|
||||
provider: alibaba_via_openrouter
|
||||
thinking: on
|
||||
max_tokens: 64000
|
||||
reasoning_shape: openrouter-unified
|
||||
pinning_surface: floating_alias
|
||||
note: "Known 3.5 regress via OpenRouter bridge; only used on primary network failure"
|
||||
trigger_condition: fetch_error_on_primary
|
||||
fallback_2:
|
||||
alias: NOT_AVAILABLE
|
||||
note: "No third fallback; halt if fallback_1 also fails"
|
||||
|
||||
judge_ensemble:
|
||||
primary:
|
||||
- judge_role: primary
|
||||
slot: primary_judge_1
|
||||
model_id: claude-opus-4-7
|
||||
provider: anthropic
|
||||
litellm_model: claude-opus-4-7
|
||||
pinning_surface: anthropic_immutable
|
||||
pinning_surface_carve_out_reason: null
|
||||
price_per_million_input_usd: 15.00
|
||||
price_per_million_output_usd: 75.00
|
||||
- judge_role: primary
|
||||
slot: primary_judge_2
|
||||
model_id: gpt-5.4
|
||||
provider: openai_via_openrouter
|
||||
litellm_model: gpt-5.4
|
||||
pinning_surface: floating_alias
|
||||
pinning_surface_carve_out_reason: "Direct OpenAI Chat Completions via LiteLLM local alias `gpt-5.4` -> `openai/gpt-5.4`; OpenAI does not expose immutable model snapshots for gpt-5.x; B3 addendum § 5"
|
||||
price_per_million_input_usd: 10.00
|
||||
price_per_million_output_usd: 30.00
|
||||
- judge_role: primary
|
||||
slot: primary_judge_3
|
||||
model_id: gemini-3.1-pro
|
||||
provider: google_via_openrouter
|
||||
litellm_model: gemini-3.1-pro
|
||||
pinning_surface: floating_alias
|
||||
pinning_surface_carve_out_reason: "Direct Google AI Studio via LiteLLM local alias `gemini-3.1-pro` -> `gemini/gemini-3.1-pro-preview`; no stable alias (preview-only); B3 addendum § 5"
|
||||
price_per_million_input_usd: 3.50
|
||||
price_per_million_output_usd: 10.50
|
||||
tiebreak:
|
||||
judge_role: reserve
|
||||
model_id: grok-4.20
|
||||
provider: xai_via_openrouter
|
||||
litellm_model: openrouter/x-ai/grok-4.20
|
||||
pinning_surface: floating_alias
|
||||
pinning_surface_carve_out_reason: "xAI does not expose immutable model snapshots through OpenRouter routing layer; floating alias mandated by B3 addendum § 5"
|
||||
price_per_million_input_usd: 5.00
|
||||
price_per_million_output_usd: 15.00
|
||||
trigger: three_way_split_1_1_1
|
||||
path_enum: quadri-vendor
|
||||
defensive_2_2_path: pm-escalation
|
||||
consistency_constraint: same_physical_judge_models_as_stage_1_stage_1_5_stage_2_stage_2_retry
|
||||
vote_policy: majority_with_grok_reserve_on_1_1_1_split
|
||||
snapshot_drift_policy: halt_and_manifest_flag
|
||||
|
||||
# Convenience flat list for preregistration.ts emitter compatibility
|
||||
judge_primary:
|
||||
id: claude-opus-4-7
|
||||
judge_secondary:
|
||||
id: gpt-5.4
|
||||
judge_tie_breaker:
|
||||
id: gemini-3.1-pro
|
||||
|
||||
# ── Substrate ───────────────────────────────────────────────────────────────
|
||||
|
||||
substrate:
|
||||
implementation: "@waggle/core::HybridSearch (RRF-fused FTS5 + vec0)"
|
||||
ingest_keying: "gop_id = conversation_id"
|
||||
scope_filter:
|
||||
parameter: gopId
|
||||
source_location: packages/core/src/mind/search.ts:14
|
||||
field_name: SearchOptions.gopId
|
||||
non_overridable: true
|
||||
benchmark_binding: instance.conversation_id
|
||||
top_k_default: 20
|
||||
top_k_upper_clamp: 50
|
||||
embedder:
|
||||
factory: createOllamaEmbedder
|
||||
base_url: http://localhost:11434
|
||||
model: nomic-embed-text
|
||||
dims: 1024
|
||||
cost: zero_local_inference
|
||||
ingest_batch_size: 200
|
||||
code_reference: benchmarks/harness/src/substrate.ts
|
||||
|
||||
# ── κ monitoring (inherited from Bench-Spec LOCK v1) ────────────────────────
|
||||
|
||||
kappa_monitoring:
|
||||
baseline_reference: sprint_10_task_2_2_kappa_0_7458
|
||||
compute: fleiss_kappa_on_pre_tiebreak_vote_matrix
|
||||
thresholds:
|
||||
pass_no_flag_kappa_min: 0.65
|
||||
pass_with_flag_kappa_range: [0.60, 0.65]
|
||||
halt_kappa_max: 0.60
|
||||
halt_drop_from_baseline_max_pp: 10
|
||||
halt_protocol: preserve_partial_jsonl_write_halted_session_ping_notify_pm
|
||||
|
||||
# ── Confidence intervals (inherited from Bench-Spec LOCK v1) ────────────────
|
||||
|
||||
confidence_intervals:
|
||||
primary:
|
||||
method: wilson_score_95
|
||||
description: "Frequentist binomial CI on instance-level binary verdicts."
|
||||
secondary:
|
||||
method: cluster_bootstrap_95
|
||||
iterations: 10000
|
||||
seed: 42
|
||||
cluster_unit: conversation_id
|
||||
resample_mode: cluster_level_with_replacement
|
||||
quantiles: [2.5, 97.5]
|
||||
|
||||
# ── Failure taxonomy (inherited from Bench-Spec LOCK v1) ────────────────────
|
||||
|
||||
failure_taxonomy:
|
||||
version: v1
|
||||
categories:
|
||||
- {code: F1, name: contradicts_ground_truth}
|
||||
- {code: F2, name: partial_answer}
|
||||
- {code: F3, name: off_topic}
|
||||
- {code: F4, name: refusal}
|
||||
- {code: F5, name: tool_use_error, scope: tool_permitted_cells_only}
|
||||
- {code: F6, name: format_violation}
|
||||
special:
|
||||
null_correct:
|
||||
description: judge_majority_verdict_correct_no_f_code
|
||||
f_other:
|
||||
description: failure_outside_f1_f6_taxonomy
|
||||
mandatory_rationale_min_words: 10
|
||||
rate_threshold_for_taxonomy_review_pct: 10
|
||||
|
||||
# ── Stopping rules (ex-ante, no interim looks) ──────────────────────────────
|
||||
|
||||
stopping_rules:
|
||||
budget_hard_halt_usd: 28.00
|
||||
budget_cap_usd: 30.00
|
||||
streak_halt: "3 consecutive fetch failures on same model -> halt (streak-tracker.ts)"
|
||||
pre_cell_health_check: "GET /health/liveliness + POST /v1/chat/completions ping per model -> halt before cell on any 5xx/fetch-error (health-check.ts)"
|
||||
runner_lock: "concurrent_runners: FORBIDDEN (runner-lock.ts); contention -> halt"
|
||||
deviation_from_preregistration: "any change to manifest v4 §1-§9 during run -> immediate halt + PM raise"
|
||||
no_interim_looks: true
|
||||
mid_run_amendment_policy: halt_restart_required
|
||||
|
||||
# ── Post-hoc exclusion policy: NONE ─────────────────────────────────────────
|
||||
|
||||
post_hoc_exclusion:
|
||||
policy: none
|
||||
evaluator_loss_handling:
|
||||
included_in_denominator: true
|
||||
reported_separately: true
|
||||
denominator_formula: "correct + incorrect + evaluator_loss"
|
||||
subject_failures_classified_as: failure_mode_per_f1_f6_taxonomy
|
||||
instance_whitelist: none
|
||||
instance_blacklist: none
|
||||
|
||||
# ── Budget ──────────────────────────────────────────────────────────────────
|
||||
|
||||
budget:
|
||||
cap_usd: 30.00
|
||||
hard_halt_usd: 28.00
|
||||
expected_burn_usd: 23.00
|
||||
variance_ceiling_usd: 28.00
|
||||
breakdown_expected:
|
||||
subject_qwen_dashscope_direct_usd: 2.50
|
||||
judge_triple_opus_gpt5_gemini_usd: 20.00
|
||||
embedding_ollama_local_usd: 0.00
|
||||
tie_break_grok_reserve_usd: 0.50
|
||||
scale_from_stage_2_retry_gate_c: "Gate C $1.1637 / 100 evals × 20 = $23.27"
|
||||
|
||||
# ── Target sample + CLI invocation ──────────────────────────────────────────
|
||||
|
||||
target_N: 400
|
||||
target_cells:
|
||||
- no-context
|
||||
- oracle-context
|
||||
- full-context
|
||||
- retrieval
|
||||
- agentic
|
||||
target_total_evaluations: 2000
|
||||
target_concurrency: 2
|
||||
|
||||
cli_invocation_template: >
|
||||
npx tsx scripts/run-mini-locomo.ts
|
||||
--manifest benchmarks/results/manifest-v4-preregistration.yaml
|
||||
--subject qwen3.6-35b-a3b-via-dashscope-direct
|
||||
--subject-fallback-1 qwen3.6-35b-a3b-via-openrouter
|
||||
--judge-ensemble claude-opus-4-7,gpt-5.4,gemini-3.1-pro
|
||||
--v3-cells --N 400 --parallel-concurrency 2 --seed 42
|
||||
|
||||
# ── Code freeze assertions ──────────────────────────────────────────────────
|
||||
|
||||
code_freeze:
|
||||
head: 373516c2784807da8536dbc0c194c54f4e4cd4be
|
||||
branch: feature/c3-v3-wrapper
|
||||
frozen_paths:
|
||||
- benchmarks/harness/src/cells.ts
|
||||
- benchmarks/harness/src/substrate.ts
|
||||
- benchmarks/harness/src/judge-client.ts
|
||||
- benchmarks/harness/src/judge-runner.ts
|
||||
- benchmarks/harness/src/health-check.ts
|
||||
- benchmarks/harness/src/streak-tracker.ts
|
||||
- benchmarks/harness/src/runner-lock.ts
|
||||
- benchmarks/harness/src/runner.ts
|
||||
- benchmarks/harness/config/models.json
|
||||
- packages/agent/src/agent-loop.ts
|
||||
- packages/agent/src/tools.ts
|
||||
- packages/core/src/mind/search.ts
|
||||
- packages/core/src/mind/frames.ts
|
||||
- packages/core/src/mind/sessions.ts
|
||||
- packages/core/src/mind/db.ts
|
||||
- litellm-config.yaml
|
||||
permitted_delta_during_run:
|
||||
- "new JSONL files emitted to benchmarks/results/ by the N=400 run"
|
||||
- "no other file modifications"
|
||||
|
||||
# ── Deviation policy ────────────────────────────────────────────────────────
|
||||
|
||||
deviation_policy:
|
||||
on_detection:
|
||||
- immediate_halt
|
||||
- pm_raise
|
||||
- re_preregister_new_manifest_v5_if_accepted
|
||||
consistency_with_bench_spec_lock_v1: preregistration.mid_run_amendment_policy == halt_restart_required
|
||||
|
||||
# ── PM gates ────────────────────────────────────────────────────────────────
|
||||
|
||||
pm_gates:
|
||||
gate_p_pre_run:
|
||||
trigger: "anchor commit of manifest v4 md + yaml on feature/c3-v3-wrapper"
|
||||
action: "CC-1 halts; awaits PM GO on pre-registration content before N=400 kick"
|
||||
pm_checks:
|
||||
- "pre-registration content matches Stage 2-Retry Gate C ratifications"
|
||||
- "§1-§10 locked unambiguously for Gate D adjudication"
|
||||
outcomes:
|
||||
- GO: "§1.2 N=400 kickoff authorized"
|
||||
- REVISE: "Gate P loop"
|
||||
gate_d_post_run:
|
||||
trigger: "N=400 run exit (clean completion or halted per stopping_rules)"
|
||||
action: "CC-1 writes Gate D exit report at PM-Waggle-OS/sessions/2026-04-24-task25-stage3-n400-complete.md; halts"
|
||||
pm_checks:
|
||||
- "primary endpoint pass/fail (Fisher one-sided p < 0.10 on retrieval - no-context ≥ 5pp)"
|
||||
- "secondary endpoint summary (monotonicity chain, agentic lift, abstain penalty)"
|
||||
- "deviation count (expected: 0)"
|
||||
- "budget usage vs $28 hard halt / $30 cap"
|
||||
- "evaluator-loss count"
|
||||
outcomes:
|
||||
- compose_sota_claim_authority_pm
|
||||
- publish_gate
|
||||
- further_scope_matched_mem0_or_multi_model
|
||||
cc1_self_advance: forbidden_at_both_gates
|
||||
|
||||
# ── Scope boundaries ────────────────────────────────────────────────────────
|
||||
|
||||
scope_boundaries:
|
||||
claimable_at_gate_d:
|
||||
- memory_lift_magnitude_and_significance_conv_scope_qwen_harness_head_373516c
|
||||
- per_cell_judge_accuracy_wilson_95
|
||||
- monotonicity_chain_observation_5_cell
|
||||
- conv_scope_fair_comparison_methodology
|
||||
- agentic_discipline_search_rate_turns_unknown_fallback
|
||||
not_claimable_at_gate_d:
|
||||
- direct_comparability_to_mem0_91_6_different_scope_and_memory_layer
|
||||
- multi_model_generalization_stage_3_is_qwen_only
|
||||
- production_waggle_orchestrator_performance
|
||||
reserved_for_pm_at_gate_d:
|
||||
- public_claim_phrasing_venue
|
||||
- matched_scope_mem0_co_run_stage_4
|
||||
- publication_timing
|
||||
cc1_does_not_compose_public_sota_claim: true
|
||||
|
||||
# ── Related artefacts ───────────────────────────────────────────────────────
|
||||
|
||||
related:
|
||||
bench_spec_lock_v1_parent: PM-Waggle-OS/decisions/2026-04-22-bench-spec-locked.manifest.yaml
|
||||
stage_2_retry_gate_c_exit: PM-Waggle-OS/sessions/2026-04-24-task25-stage2-retry-complete.md
|
||||
stage_3_brief: PM-Waggle-OS/briefs/2026-04-24-cc-task25-stage3-n400-kickoff.md
|
||||
stage_2_retry_commit: 373516c
|
||||
rollback_tag: checkpoint/pre-self-evolution-2026-04-14
|
||||
canonical_md_surface: benchmarks/results/manifest-v4-preregistration.md
|
||||
|
||||
# ── Validation gates inherited from Bench-Spec LOCK v1 ──────────────────────
|
||||
|
||||
validation_gates:
|
||||
before_n400_kickoff:
|
||||
- anchor_commit_sha_recorded
|
||||
- manifest_yaml_sha256_recorded_in_commit_message
|
||||
- pm_gate_p_ratification_received
|
||||
- health_check_green_on_subject_plus_3_judges
|
||||
- no_concurrent_runner
|
||||
at_gate_d_exit:
|
||||
- all_2000_evals_accounted_in_denominators
|
||||
- evaluator_loss_reported_separately
|
||||
- primary_fisher_one_sided_computed
|
||||
- secondary_endpoints_reported
|
||||
- budget_reconciled
|
||||
- deviation_count_reported
|
||||
- code_freeze_reverified_head_373516c
|
||||
Reference in New Issue
Block a user