Files
imbad0202__academic-researc…/tests
Edward Cheng-I Wu 9ccf4a9c9f fix: academic-pipeline data_access_level verified_only → raw (#756) (#772)
* fix: academic-pipeline data_access_level verified_only -> raw (#756)

The orchestrator legitimately consumes raw input — Stage 1 accepts raw
user requests, mid-entry accepts raw existing papers — and the
governing dirtiest-input rule (ground_truth_isolation_pattern.md)
requires the annotation to reflect that. The integrity gates run
INSIDE the pipeline, downstream of its intake, so verified_only was
internally inconsistent on the suite's most prominent consumer
(option (a) of the issue: honest minimal relabel; no trust-domain
split).

Surfaces aligned in the same commit:
- academic-pipeline/SKILL.md frontmatter (its #528 content-lock sha256
  recomputed in check_pipeline_boundary_semantics.py, same commit per
  the lock discipline).
- docs/ARCHITECTURE.md §4: pipeline node moves to the raw class, the
  User -> pipeline intake edge is drawn, and the rules block states the
  dirtiest-input rationale with a pointer to the pins.
- check_data_access_level.py grows an EXPECTED_LEVELS per-skill pin
  layer (acceptance criterion 2): a silent flip back to verified_only,
  an unregistered new skill, or a stale pin now fails CI; vocabulary
  check unchanged. 7 mutation tests + manifest entry (152).

Not touched: CHANGELOG history (records what v3.x declared at the
time); shared/agents/compliance_agent.md (agent-level declaration,
runs at the gates); academic-paper-reviewer verified_only (possible
same-class question for standalone /ars-reviewer raw-paper input —
out of #756 scope, reported separately).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EosnA4RdUYgbF2KmZ1DTmc

* fix: restore the pre-existing CLI-level test layer I overwrote (#756)

The previous commit replaced scripts/test_check_data_access_level.py
wholesale, dropping six original unittest cases (CLI subprocess via
--path, including the three malformed-frontmatter stdout-reporting
contracts) and breaking the run_skill_linter --path interface by
removing argparse from the lint. Both restored: main takes --path
again, the original unittest class is back (its valid-root case now
builds the four registered skills, since the pin layer correctly
rejects an unregistered synthetic skill), and the #756 pin-layer
mutation tests ride alongside. 11 tests green; manifest entry verified
through the CI runner.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EosnA4RdUYgbF2KmZ1DTmc

* refactor: apply /simplify + codex R1 — single-pass lint, honest pins, aligned surfaces (#756)

Review round (3 cleanup agents + codex gpt-5.6-sol xhigh R1), findings
deduped and applied:

- check_data_access_level.py rewritten as a SINGLE pass: one violation
  per problem (the vocabulary layer had zero unique failure coverage
  and double-reported every failure, including a twice-printed YAML
  traceback); non-mapping metadata (e.g. "metadata: active") is now a
  reported violation instead of an AttributeError crash (codex P2);
  LEGAL_VALUES survives as a pin-vocabulary assertion; main() stays
  local (run_lint no longer fits once check_metadata_field drops out)
  and run_lint's stale "both check scripts" docstring is corrected.
- Pin provenance honesty: the docstring now says only the
  academic-pipeline pin is #756-derived; the other three freeze
  pre-existing declarations against silent drift. Follow-up derivation
  for reviewer/paper opened as #773.
- ARCHITECTURE §4: rule restatement dropped (the pattern doc owns the
  rule), the two competing one-line lint descriptions merged into one,
  and the §2 legend disambiguates §3's per-stage "Data level" column
  from the skill-level declaration (the four VERIFIED_ONLY stage cells
  are a different, per-stage claim — left as-is).
- CHANGELOG [Unreleased] gains the #756 Fixed entry (the pre-tag
  covers-merges gate is fail-closed).
- handoff_schemas.md data_access_level block now names the pin layer.
- write_skill fixture helper migrated to tests/test_helpers.py
  (migrate-at-next-edit convention); both skill-lint test files import
  it; CLI scenarios updated to registered skill names (the pin layer
  correctly pre-empts unregistered synthetic skills); new
  one-violation-per-problem and non-mapping-metadata regression tests
  (18 green across both files).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EosnA4RdUYgbF2KmZ1DTmc

* fix: restore the #753 CHANGELOG bullet heading (codex R2) (#756)

The #756 entry insertion had consumed the #753 bullet opening and
absorbed its body into the new bullet; the #753 heading is restored as
its own bullet.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EosnA4RdUYgbF2KmZ1DTmc

* fix: legend example had the gate boundary reversed (codex R3) (#756)

Gates consume unverified drafts and PRODUCE verified artifacts; the
Data-level column is documented as a postcondition on stage outputs,
not material the gate "operates on".

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EosnA4RdUYgbF2KmZ1DTmc

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-18 09:02:58 +08:00
..