{"schema_version":1,"experiment_id":"eoa_inverse_innovation_exp09_archetype_breadth150_20260804","cell_id":"controlled_reentry__computer_science","arm":"BREADTH_PROBE_ONE_SHOT","candidate_id":"controlled_reentry__computer_science__P1","proposal_index":1,"version":0,"title":"Memory-headroom-gated reentry for repository indexing after an out-of-memory shutdown","problem":"An IDE repository indexer has been suspended after its process exceeded a memory guard while parsing a large or recently changed workspace. When the indexer restarts, immediately admitting the entire pending file frontier can reconstruct many abstract syntax trees and symbol tables concurrently, recreate memory pressure, and trigger another protective shutdown before a usable index is restored.","actors":["Developer using the affected workspace","IDE indexing coordinator","Parser and symbol-index workers","Process memory monitor"],"observable_state":"The indexer is in a protected suspended state; a nonempty file frontier awaits indexing; committed index segments remain readable; resident memory has fallen below the shutdown threshold; and memory headroom, allocation rate, garbage-collection pause time, completed-file count, and parse failures can be observed for each admitted batch.","consequence":"Repeated restart-and-exhaustion cycles delay code navigation and diagnostics, consume CPU and I/O without completing the index, and can leave the developer with an old or explicitly partial index.","affected_objective":"Restore a complete, internally consistent repository index while preserving enough memory headroom to avoid recurrence of the shutdown condition.","intervention":"Replace full-frontier restart with a recovery-only indexing state machine. Admit one bounded, auditable file batch as a recovery probe, keep its uncommitted parse state disposable, and observe memory growth, reclamation, parse completion, and failure signals for a fixed window. Admit progressively larger batches only after two consecutive stable windows and while a protected memory reserve remains. If a rollback threshold is crossed, stop new admissions, cancel the current batch, discard its uncommitted parse state, retain the last committed index segments, and return to a smaller stage after a cooldown. Mark the index as partial until all stages complete.","structural_mapping":[{"archetype_element":"Previously protected or interrupted system","domain_realization":"The repository indexer was suspended by an out-of-memory guard, while its last committed index remained available."},{"archetype_element":"Reintroduced flow or load","domain_realization":"Files admitted from the pending indexing frontier and the associated parser, syntax-tree, and symbol-table allocations."},{"archetype_element":"Controllable reentry boundary","domain_realization":"The indexing coordinator controls which file batches may enter parser and symbol-index workers."},{"archetype_element":"Small recovery probe","domain_realization":"A bounded initial batch containing a declared mix of file sizes and languages is indexed before the remaining frontier is admitted."},{"archetype_element":"Observable recovery signals","domain_realization":"Resident-memory level and slope, allocation and reclamation behavior, garbage-collection pauses, completed files, and parse failures are recorded per stage."},{"archetype_element":"Threshold and hysteresis","domain_realization":"Expansion requires two stable observation windows below the advance boundary, while rollback uses a separate higher-risk boundary to prevent rapid stage oscillation."},{"archetype_element":"Preserved recovery headroom","domain_realization":"Every stage must leave a configured memory reserve for transient parser allocations and unrelated IDE functions."},{"archetype_element":"Rollback path","domain_realization":"The coordinator can cancel the uncommitted batch and discard its ephemeral parse state without removing previously committed index segments."}],"mechanism_mapping":[{"mechanism_slug":"recovery_probe","role":"Tests whether the restarted indexer can process a small but declared portion of the pending frontier without consuming its protected memory reserve.","counterfactual_removal":"Without the probe, the first post-shutdown action would expose the recovering process to the full frontier, so capacity would not be tested before restoration."},{"mechanism_slug":"admission_control","role":"Bounds the number and composition of files allowed into indexing workers at each recovery stage.","counterfactual_removal":"Without admission control, stage definitions could not constrain concurrent allocation pressure, reducing the intervention to monitoring an uncontrolled restart."},{"mechanism_slug":"hysteresis","role":"Requires sustained stability before expansion and uses a distinct retreat boundary, limiting advance-retreat oscillation around one memory reading.","counterfactual_removal":"Without hysteresis, transient reclamation or measurement noise could repeatedly advance and reverse the indexer."},{"mechanism_slug":"rollback_policy","role":"Cancels the active batch, discards only its uncommitted state, and returns admission to the prior safe stage when instability appears.","counterfactual_removal":"Without rollback, each probe would become an irreversible commitment and a failed stage could continue toward another shutdown."}],"causal_chain":["A prior indexing attempt crosses the memory guard, causing suspension and leaving a large pending file frontier.","Memory falls during suspension, but this quiet state does not establish that the full frontier is safe.","The coordinator admits a bounded recovery-probe batch rather than all pending files.","Per-stage signals reveal whether allocations are reclaimed and whether the protected reserve survives representative parsing work.","Sustained stability licenses a bounded increase in admitted files; an adverse signal instead pauses admission and rolls back uncommitted work.","Repeated feedback-governed stages expand indexed coverage while retaining a retreat path and memory reserve.","The index is declared complete only after the frontier is exhausted and the final observation window passes."],"baseline":"After memory drops below a restart threshold or a fixed cooldown expires, restart the indexer and resubmit the entire pending frontier at its normal concurrency. If it exceeds the guard again, suspend it again and repeat.","nearest_rivals":["A static worker-concurrency or memory limit applied during all indexing: this governs ordinary ongoing admission, whereas the candidate introduces a distinct post-shutdown recovery state with staged expansion, stability windows, and rollback.","Checkpoint-and-resume indexing: this preserves completed position, but resuming from a checkpoint alone does not test current capacity or govern the amount reintroduced after protection.","A fixed cooldown followed by restart: elapsed time permits another attempt but supplies no bounded probe, feedback-based expansion, or retreat rule.","A permanently incremental single-file indexer: this changes the normal indexing architecture; the candidate specifically governs restoration after a memory-triggered suspension and can relinquish its recovery controls after completion."],"remaining_contrastive_claim":"The candidate's irreducible claim is that post-memory-guard restoration should be a separate, feedback-governed state transition: indexed scope expands through bounded probes whose uncommitted allocations remain reversible. Removing the recovery-specific staging or signal-triggered rollback collapses it into ordinary throttling, checkpointing, or delayed restart.","authority_safety":{"decision_authority":"A local IDE indexing coordinator may control only indexing-task admission, cancellation, stage transitions, and commitment of index segments for the affected workspace.","authorized_first_step":"In an isolated copy of one previously failing workspace, execute only the initial probe stage with a predeclared batch, reserve threshold, observation window, and automatic cancellation rule.","excluded_actions":["Modifying source files","Deleting the last committed index","Killing unrelated developer processes","Changing operating-system memory limits","Advancing a stage manually after a rollback signal","Presenting partial-index results as complete"],"halt_rollback":"Halt the trial if resident memory crosses the rollback threshold, the protected reserve is lost, cancellation fails to release the probe's ephemeral state, the IDE becomes unresponsive, or committed-index consistency checks fail. Cancel the probe, discard its uncommitted segment, retain the prior committed index, and leave indexing suspended for inspection."},"negative_tests":{"strongest_counterevidence":"The first admitted file constructs an unavoidable repository-global symbol graph whose memory cost is essentially independent of batch size; if that global allocation causes the guard crossing, file-frontier staging does not bound the relevant load.","problem_falsifier":"Replay or instrumentation shows that full-frontier admission is not associated with the shutdown and that memory exhaustion instead results from a fixed leak, corrupt parser input, or another process whose demand does not vary with admitted indexing scope.","intervention_falsifier":"Across bounded probes, memory continues rising without reclamation in proportion to elapsed time rather than admitted scope, or cancelling a probe cannot restore the declared reserve; under either result, smaller staged admissions do not supply a viable recovery path.","risks":["An unrepresentative initial batch may create false confidence before memory-intensive files enter.","Observation windows may be shorter than delayed symbol-resolution or garbage-collection effects.","Repeated rollback may leave the index indefinitely partial.","Stage thresholds may become stale after workspace or plugin changes.","Cancelling and reparsing batches may add CPU and I/O cost.","File-selection order may postpone indexing of the developer's active code.","Partial results may mislead navigation or diagnostics unless visibly labeled.","A faulty cancellation path may retain allocations and eliminate the assumed rollback benefit."]},"next_evidence_step":"Run one bounded, non-production replay in an isolated workspace copy: use a captured file manifest from a single memory-guard incident, admit a declared probe of at most 25 files spanning observed size and language classes, and record resident-memory level and slope, allocation and reclamation, garbage-collection pauses, completion, cancellation behavior, and committed-index consistency for one observation window. Stop after evaluating the initial probe; do not expand to later stages in this evidence step.","prior_art_status":"UNSEARCHED","diversity_from_prior_proposals":"The candidate is instantiated in local developer-tool recovery through file-frontier admission, disposable parser state, and index-segment commitment; no other proposals were inspected or used for comparison.","revision_record":{"parent_version":null,"progress_targets_addressed":[],"conceptual_changes":[],"operational_changes":[],"evidence_changes":[],"claim_changes":[]}}