One oversized/deep/invalid construct drops the whole file, and four disclosure surfaces disagree about it (all languages) #545
Labels
No labels
code-review
correctness
dos
performance
security
severity/high
severity/low
severity/medium
tech-debt
Kind/Breaking
Kind/Bug
Kind/Documentation
Kind/Enhancement
Kind/Feature
Kind/Security
Kind/Testing
Priority
Critical
Priority
High
Priority
Low
Priority
Medium
Reviewed
Confirmed
Reviewed
Duplicate
Reviewed
Invalid
Reviewed
Won't Fix
Status
Abandoned
Status
Blocked
Status
Need More Info
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
h-dv/code-index#545
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Consolidated scope (triage 2026-11-09)
Priority: High: one bad construct drops a whole file and four disclosure surfaces disagree.
This issue is now the canonical tracker for:
memory_ceiling_exceededrefusal reportsobserved: None; report the requested bytesOriginal report
Summary
Across all languages, one bad construct throws away a whole file's extraction, and the disclosures disagree about it. Reproduced in Python, JavaScript, Rust, C#, PHP and XAML (installed build
2dcfc615):1+1+…, many-arg signature, deep type)fact.string_too_long: the whole file is refused, including innocent symbols (after_type)host.deadline_exceeded (fuel): the whole file is refused. Python'sattributearm re-walks nested chains, roughly O(D²)–O(D³) (inferred)host.memory_ceiling_exceeded: whole file refusedcontent_refused: whole file refusedThe disclosures contradict each other:
project_overview.parse_error_filesnames the refused files.resolution_gaps.partial_source_censusreportstotal: 0: "every project … reported no incomplete extraction".index_coveragesaysextraction_diagnostics: [], which is documented as "the measurement that there were none", even for the depth-truncated PHP file.list_filesreports a refused file assymbols: 0withoutsymbols_unmeasured.The depth guard in each walker returns early without setting a flag.
TRUNCATED_TREEfires only on a tree-decode failure (crates/guest/languages/src/wasm.rs:96).Proposal (generic, in guest-kit and the host)
truncate_at_charalready does this, so move it to guest-kit. Signatures stop at the first line or 512 bytes.depth_limit_reacheddiagnostic whenever any walker hits its guard. The file becomes partial, never silently complete.partial_source_census,extraction_diagnosticsandlist_files.symbols_unmeasured. A registry test asserts that the three surfaces agree on a hostile fixture set.Acceptance
Related: #448 (false-zero disclosures), #41 (scale ceilings).
Filed from the per-language review on 2026-11-09: 8 agents, one per language plus one for Vue/Svelte/XAML/timeline, run against copies of the pinned corpus repos (
tests/corpus/corpus.toml) using installed build2dcfc615, which differs from master only by XAML/CI commits. The top claim of every issue was spot-checked in the main session. Artifacts live under the review session's scratchpadlang-out/<lang>/and are available on request.Released in v0.41.50 (host side).
project_overview(extraction_diagnostics.files,parse_error_files),resolution_gaps.partial_source_census,index_coverage.extraction_diagnostics,list_filesandevidence_gaps. A file the host refused (fact.string_too_long,host.deadline_exceeded,host.memory_ceiling_exceeded,content_refused) is counted by all of them.list_files, markedsymbols_are_floor: truewith its diagnostic codes.content_refusedinstead of being absent.Still open here:
host.memory_ceiling_exceededrefusal are not reported; that needs a worker/supervisor protocol change.