PR #1 review clarified v1 contracts after the first library slice in PR #4. Before runner integration, align the library and add real regressions for: exact full-argv allowlist matching (appended flags fail); registry-selected versioned schemas and current-copy identity; required selected-issue context; canonical leaf paths with checkout case/Unicode identity; base Git entry types, pre-existing symlink lineage, and rejection of new links/regular-file conversions. Keep container and merge enforcement in their planned runner phases. Acceptance: tests reproduce each mismatch before its fix, then pass with typecheck. See docs/plan-format.md and the updated T18 criteria. Coordinate with #2; future typed new-link support is #5.
Also enforce the deterministic JSON/YAML parsing contract and v1 tokenizer fixtures now documented in docs/plan-format.md, including duplicate decoded keys, anchor/alias/tag/merge rejection, strict scalar handling, safe integers, and byte/depth limits. Gitlink paths are review-only in v1; reject plan authoring until #7 is implemented. update_file must target the exact existing path and reject implicit adds/path changes.
Dispatch semantic validation by the registry validator key and retain frozen conformance fixtures for schema/versions/1/semantics.md. Implement server-side request/suggestion binding to stable repository/task/plan identity; reject delayed cross-plan Apply even if revision and item IDs coincide (coordinate persistence with #2).
PR #1 review clarified v1 contracts after the first library slice in PR #4. Before runner integration, align the library and add real regressions for: exact full-argv allowlist matching (appended flags fail); registry-selected versioned schemas and current-copy identity; required selected-issue context; canonical leaf paths with checkout case/Unicode identity; base Git entry types, pre-existing symlink lineage, and rejection of new links/regular-file conversions. Keep container and merge enforcement in their planned runner phases. Acceptance: tests reproduce each mismatch before its fix, then pass with typecheck. See docs/plan-format.md and the updated T18 criteria. Coordinate with #2; future typed new-link support is #5.
Also enforce the deterministic JSON/YAML parsing contract and v1 tokenizer fixtures now documented in docs/plan-format.md, including duplicate decoded keys, anchor/alias/tag/merge rejection, strict scalar handling, safe integers, and byte/depth limits. Gitlink paths are review-only in v1; reject plan authoring until #7 is implemented. update_file must target the exact existing path and reject implicit adds/path changes.
Dispatch semantic validation by the registry validator key and retain frozen conformance fixtures for schema/versions/1/semantics.md. Implement server-side request/suggestion binding to stable repository/task/plan identity; reject delayed cross-plan Apply even if revision and item IDs coincide (coordinate persistence with #2).