feat(decision-framing): add bounded research priors - #727
Conversation
atomchung
left a comment
There was a problem hiding this comment.
[BLOCK] Independent review found a private-boundary escape: --output-dir is caller-controlled and the runner writes exact raw model outputs under it without rejecting the effective coach-state root. python3 evals/run_generic_parity.py --output-dir ~/.trade-coach/parity would place evaluator output inside coach state, contradicting #715's receipt boundary. Please normalize and reject equal/nested output paths (including symlink resolution), add a regression test, then rerun review. Python 3.11 and 3.12 CI are green, but this remains a merge blocker.
| import anthropic as anthropic_module | ||
| anthropic = anthropic_module | ||
| client = anthropic.Anthropic() | ||
| run_dir = args.output_dir / f"{dt.datetime.now(dt.timezone.utc).strftime('%Y%m%dT%H%M%SZ')}-{uuid.uuid4().hex[:8]}" |
There was a problem hiding this comment.
[BLOCK] args.output_dir is not checked against the effective coach-state root before creating a directory and later writing A*.raw.txt and receipt.json. This permits raw evaluator output inside ~/.trade-coach when supplied by the caller, violating the stated outside-coach-state receipt boundary. Reject equal/nested paths after resolving symlinks (and test it).
Review — blocked; do not merge or mark ready yetReviewed draft head P1 — this creates a second owner for the same #715 product contract#715 explicitly authorized one small draft/reviewable PR for the A01 loop. PR #726 already changes Pick one surviving product PR. My recommendation is to keep the smaller #726 product leaf, rebase it onto P1 — the route order contradicts the accepted A01 outcome
State liquidity/narrow-exposure as a material limitation/branch condition in the answer. Do not ask it before the map. Add a deterministic witness/mutation that fails if any question precedes the strategy-class completion. P1 — the evaluator can report
|
Owner disposition — surviving PR, but narrow to the product/reference sliceThe owner now explicitly wants the next test candidate to have basic research-aware no-book answers. This supersedes the earlier recommendation to keep #726: PR #727 becomes the one surviving implementation owner, provided it is narrowed before re-review. Required changes tonight:
No owner-live or billable/cross-model fast probe tonight. Run focused deterministic tests, full offline suite and standard Python 3.11/3.12 CI. Update #716/#715 with exact head and evidence, then stop at ready-for-independent-review. Do not merge without a separate owner merge authorization. |
8e2ba87 to
c5b79a3
Compare
|
Independent re-review of The previous Generic Parity thread is outdated because its runner and raw-output path were removed from this PR. The current diff contains only the bounded reference slice; it keeps the baseline/map-before-question order, caps the research-aware path at one final question, and has deterministic loading/order mutation coverage. Full offline tests passed locally on Python 3.12; GitHub Actions passed Python 3.11 and 3.12 (run |
Scope
SKILL.md → decision-framing.md → research-priors.mdloading path.Boundaries
Validation
python3.12 tests/test_research_priors.pypython3.12 tests/test_doc_language.pypython3.12 tests/test_output_voice.pypython3.12 tests/run_all.py(full offline suite)Evidence status
This is deterministic implementation evidence only. Owner-live, cross-model Generic Parity, and Antigravity testing are explicitly deferred.