Skip to content

docs(research): C++23 feasibility audit — feature_collector + feature_extractor (Research-0757) - #105

Closed
lusoris wants to merge 1 commit into
masterfrom
worktree-agent-a7d552465a7da581b
Closed

lusoris wants to merge 1 commit into
masterfrom
worktree-agent-a7d552465a7da581b

Conversation

@lusoris

@lusoris lusoris commented May 29, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Audits core/src/feature/feature_collector.c and feature_extractor.c for C++23 conversion feasibility, re-evaluating the Wave 7 blockers now that cpp_std=c++23 is global.
  • Root cause confirmed: test_feature_collector.c hard-includes feature_collector.c and calls 6 static functions directly (aggregate_vector_{init,append,destroy}, feature_vector_{init,append,destroy}). This blocks a direct .c→.cpp rename.
  • feature_extractor.c has no test that includes it directly — straightforward rename candidate.
  • C11 atomics in feature_extractor.c are already bridged by the MSVC/gcc guard in feature_extractor.h; no ABI concern on Linux gcc/clang.

Recommended path

  1. feature_extractor.c — direct .c→.cpp rename, add extern "C" guards to feature_extractor.h, mechanical cast fixups. 2–3 h.
  2. feature_collector.c — extract 6 static functions into feature_collector_internal.h, rewrite test_feature_collector.c to include the internal header instead of the .c file, then rename. 2.5–3 h.

Total effort: 5–7 h. Risk: LOW. No golden-data exposure (no score computation in either file).

Deliverables checklist (ADR-0108)

  • Research digest: docs/research/research-0757-feature-collector-extractor-cpp23-feasibility.md
  • Decision matrix: n/a — audit only, no implementation decision
  • AGENTS.md invariant: no rebase-sensitive invariants
  • Reproducer / smoke-test: n/a — audit only
  • Changelog fragment: no user-discoverable surface changed
  • rebase-notes.md: no rebase impact — doc-only PR

Test plan

  • Reviewer reads the digest and confirms the static-fn inventory matches test_feature_collector.c
  • Reviewer confirms no other test file includes feature_extractor.c or feature_collector.c directly

🤖 Generated with Claude Code

…_extractor (Research-0757)

Audits both files for the test-internal static-access issue and C11
atomic bridge that blocked Wave 7 retries. Finds that feature_extractor.c
is a straightforward .c→.cpp rename (no test includes it directly) while
feature_collector.c requires extracting 6 static fns into a
feature_collector_internal.h first. Recommends Option A (internal-header
pattern) as the prerequisite step before the collector rename. Effort
estimate: 5–7 h total, low risk, zero golden-data exposure.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@lusoris
lusoris force-pushed the worktree-agent-a7d552465a7da581b branch from a211616 to bed5b33 Compare May 29, 2026 12:07
@lusoris
lusoris marked this pull request as ready for review May 31, 2026 13:51
@lusoris

lusoris commented May 31, 2026

Copy link
Copy Markdown
Contributor Author

Superseded by master merge marathon 2026-05-31.

@lusoris lusoris closed this May 31, 2026
@lusoris
lusoris deleted the worktree-agent-a7d552465a7da581b branch May 31, 2026 13:53
@lusoris
lusoris restored the worktree-agent-a7d552465a7da581b branch May 31, 2026 18:48
@lusoris lusoris reopened this May 31, 2026
@lusoris
lusoris marked this pull request as draft May 31, 2026 18:50
@lusoris

lusoris commented Jun 3, 2026

Copy link
Copy Markdown
Contributor Author

Closing stale 05-29 vintage branch (contained conflict markers). Recreating from clean rebase onto current master.

@lusoris lusoris closed this Jun 3, 2026
@lusoris
lusoris deleted the worktree-agent-a7d552465a7da581b branch June 4, 2026 08:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant