Skip to content

reconcile ignores explicit nested .pddrc test mapping and reports a missing inferred test #2256

Description

@niti-go

Problem

pdd reconcile --module <name> --strict --json can ignore an explicit dev-unit test mapping in a nested project .pddrc and instead infer a different nonexistent test path. The unit is then reported as missing_artifacts: test, preventing prompt/code/test fingerprint reconciliation even though the configured test exists.

Reproduction

  1. In a nested PDD project, configure a dev unit whose aliases include the prompt/code/module name and whose explicit artifacts map:
    • prompt: prompts/src/workers/runtime/failure_classification_Python.prompt
    • code: src/workers/runtime/failure_classification.py
    • test: tests/test_failure_classification.py
    • example: examples/failure_classification_example.py
  2. Confirm the configured test file exists.
  3. Run pdd reconcile --module failure_classification --strict --json from the nested project root.
  4. Observe that the JSON resolves test to tests/pdd_executor/test_failure_classification.py and fails with missing fingerprinted artifacts: test, rather than using tests/test_failure_classification.py from .pddrc.

Expected behavior

Explicit artifact mappings must take precedence over inferred conventional paths for reconcile/sync/baseline. The JSON result should report the configured test and reconcile the same dev unit selected by its aliases.

Actual behavior

Module selection recognizes the configured unit name, but artifact resolution substitutes an inferred test path from the code namespace. This makes the configuration internally inconsistent and blocks strict reconciliation.

Proposed solution

Centralize dev-unit resolution so module alias selection and artifact path selection return one resolved configured unit. Only infer a conventional test when the selected unit has no explicit test artifact. Add a nested-project regression with an explicit non-conventional test path; assert sync, reconcile, and baseline all resolve the identical prompt/code/test/example set and that JSON reports the configured test path.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

Status
Backlog

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions