[Goal] Execute scenario 7 against independent pandas snapshots
まだ誰も着手していません。
評価
- 難易度
- 5/5
- 見積もり時間
- 1週間以上
- 初心者へのやさしさ
- 35/100
- issue の種類
- 機能追加
- 明瞭さ
- 明確に書かれている
- 活発さ
- 活発
- 技術スタック
- bun, pandas, python, typescript
- 領域
- data, testing-qa
調査の方向性
Start by inspecting tests/xval/runner.test.ts, especially assertStep and materializeSnapshotStep, then read golden/generate.py:scenario_7. Implement and integrate an independent executor for the ten scenario 7 steps using real tsb APIs, with strict comparisons and negative controls. Run bun test ./tests/xval/, typecheck, lint, the full tests, and pinned snapshot regeneration; done requires unchanged golden data and exact-SHA CI evidence.
索引モデルが issue の本文から書いたものです。
説明
[Goal] Execute scenario 7 against independent pandas snapshots
Goal
Turn the ten recorded steps of scenario_7 into real cross-validation of tsb operations. Today tests/xval/runner.test.ts constructs each "actual" result from that same expected snapshot and compares it back; this checks materialization, not the named operation. Replace that circular path for one complete, bounded scenario without attempting a broader pandas port.
This checkpoint establishes value, missing-value, shape, and ordered-label parity for scenario 7 only: 10 of the 60 recorded steps. It does not establish dtype parity, pandas-compatible in-place mutation, the other six scenarios, full API parity, or performance parity.
Completion Contract
-
Build original inputs from the literals in
golden/generate.py:scenario_7, not from any expected result. Keep execution in a small function/module that has no snapshot argument, snapshot import, file read, expected-data lookup, or hardcoded expected result. Import the real public APIs fromtsb:Snapshot steps Execute 1–2 combineFirstSeries(a, b), thencombineFirstSeries(combined, c)3 dataFrameUpdate(df1, df2)and compare its returned frame4 whereSeries(s, value => typeof value === "number" && value > 20, { other: -1 })5 maskSeries(s, value => typeof value === "number" && value > 30, { other: 0 })6–7 Both results of alignDataFrame(left, right, { join: "outer" })8–9 Both results of alignDataFrame(left, right, { join: "inner" })10 combineFirstDataFrame(alignedLeft, alignedRight)using the actual outputs of steps 6–7 -
Compare those actual results against the unchanged, independently generated
golden/snapshots/scenario_7.json. Assert exactly ten distinct step IDs, correct Series/DataFrame result kind, data values, missing positions, shape, column order, and index order with numeric versus string label types preserved. For example, step 3 retains numeric row labels0,1,2,3,4; do not stringify both sides to make mismatches disappear. The existing1e-10numeric tolerance may remain; null/undefined/NaN may use the documented snapshot missing-value encoding. Do not normalize away nonmissing value or label differences. -
Add at least two negative-control tests that run the same executor and comparison path but substitute deliberately incorrect operations: a no-op
whereSeriesand a no-op or wrong-joinalignDataFrame. Each must cause the relevant snapshot assertion to reject the output. Test-only dependency injection with real APIs as the production defaults is acceptable; no global mock leakage or production-library modification. Returning expected snapshot data would bypass these faults and must make the negative-control tests fail. Include a comparator regression proving numeric label1does not equal string label"1". -
Remove scenario 7's use of
materializeSnapshotStepas its "actual" result. Preserve the other scenarios' existing fixture/materialization checks, but label those checks accurately and report the scope as one executed scenario / ten executed steps; fifty remaining steps are materialization-only. Do not relabel the other scenarios as verified operation parity. -
Keep known semantic limits explicit in test names/comments and the completion report: several tsb outputs infer integer dtype where these pandas snapshots retain float dtype;
dataFrameUpdatereturns a new frame rather than mutating the source in place. Do not claim these differences are verified parity, alter the expected dtype metadata, force result dtype to match, or broaden this checkpoint to fix the library. -
Required tests, strict typecheck, lint, and the existing CI must pass on the exact published candidate commit. Record that SHA, its CI run URL, positive and negative-control test names/counts, and the ten exercised steps. Snapshot regeneration with pinned pandas/numpy must leave the committed golden data unchanged. Pending publication, a green unrelated SHA, fixture self-comparison, or merely constructing Series/DataFrames is not completion.
Evidence / Verification
First reproduce the current circular path by inspecting assertStep and materializeSnapshotStep. Read golden/generate.py:scenario_7 and confirm the executor uses its original inputs and real intermediate results.
Run the focused positive and negative-control tests, then:
bun test ./tests/xval/
bun run typecheck
bun run lint
bun test ./tests/
python -m pip install pandas==2.2.3 numpy==2.1.3
python golden/generate.py
git diff --exit-code -- golden/generate.py golden/snapshots/
Use existing CI for pinned snapshot regeneration if Python is unavailable locally; keep completion pending until the exact-SHA run proves it. Attach a compact table of each scenario 7 step, invoked API, and asserted result. Report the negative-control failures as expected test outcomes, not as production test failures. Do not use or require a benchmark as evidence of correctness.
Scope and Constraints
Allowed changes are limited to tests/xval/**: a scenario executor, typed comparison helpers/fixtures if necessary, the replay integration, and positive/negative-control tests. Keep original input literals independently copied from the Python generator; expected outputs remain exclusively in the existing golden snapshot.
Do not edit src/**, golden/generate.py, golden/snapshots/**, README.md, .autoloop/programs/**, workflows, package scripts/dependencies, agent policy, branch rules, or credentials. No any, new as casts, @ts-ignore, runtime escape hatches, skipped tests, reduced tolerances, snapshot-result-derived inputs, or hand-authored fake tsb implementations. Preserve unrelated existing checks. This is test infrastructure for supported operations, not permission to port missing pandas features.
Iteration Policy
Choose one reviewable checkpoint: add the real scenario 7 executor and integrate its ten outputs, establish positive and negative-control evidence, and publish one canonical draft PR. If needed, separate the strict typed comparator and executor into small commits on the same branch. Record pending publication and verify the actual published SHA and CI on a later run before accepting completion. Report what was executed versus merely materialized; do not start porting scenarios 1–6 as part of this goal.
Blocked Stop Condition
Stop and report the exact failing step, observed versus expected result, command output, and smallest required maintainer decision if an existing tsb operation cannot satisfy this value/label contract without changing production code, if independent golden data appears incorrect, or if publication/verification cannot run. Known dtype and in-place-mutation differences are excluded explicitly above, not silently normalized. Do not change expectations, weaken assertions, substitute a locally reimplemented operation, or mark complete to avoid a blocker.
- 主要言語
- TypeScript
- スター
- 9
- フォーク
- 4
- 平均マージ
- 3日 3時間
- マージ済み PR(30日)
- 15
コントリビューションガイド
このリポジトリのコントリビューションガイドは索引されていません
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
githubnext/tsb のほかの issue
-
automation ci
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
githubnext/tsb#411 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 74/100
githubnext/tsb#208 ·
-
[aw] Autoloop failed オープンagentic-workflows
難易度 4/5 3〜5日 初心者へのやさしさ 25/100
githubnext/tsb#516 ·
-
[aw] Autoloop failed オープンagentic-workflows
難易度 4/5 3〜5日 初心者へのやさしさ 35/100
githubnext/tsb#515 · コメント 3 件 ·
-
agentic-workflows
難易度 4/5 3〜5日 初心者へのやさしさ 35/100
githubnext/tsb#514 ·
似ている issue
-
comp/desktop P3 type/bug
難易度 1/5 1時間未満 初心者へのやさしさ 92/100
NousResearch/hermes-agent#118866 ·
-
Browser Waiting for: Product Owner
難易度 2/5 1〜3時間 初心者へのやさしさ 85/100
getsentry/sentry-javascript#24577 · コメント 1 件 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
agilepathway/label-checker#640 ·
-
Plugin stuck at "loading" on DSH 0.1.6-alpha.2 — turnTail list slot registration missing options.id オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
chrisparsons83/flexspotff#153 ·