feat(v06): golden-path proof — contract, evidence, deterministic check#176
Conversation
Adds tools/automation-registry.yml cross-PR collision note (PR-C/D/E), Stage 7 implementation-log DoD line, and Stage 7 reference in workflow refs. Refs #91
- Replace CLAR-V06-003 blocking section with resolved note - Update Goal to specify plugin-first install as demo entry path - Add Tutorial layer note for plugin-first walkthrough - T-V06-003 step 1: demo starts from Layer 1+2 install, not clone - T-V06-004 step 2: install plugin + run lifecycle from empty project - DoD: remove CLAR gate; add plugin-first install checkbox Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- docs/golden-path-contract.md: demo contract (subject, install path, artifact shape, EVIDENCE schema, validation scope, success criteria) - examples/glossary-term/: complete lifecycle artifacts (idea → retro) for the Tracer Bullet glossary-entry demo - examples/glossary-term/EVIDENCE.md: desk-validated evidence note per CLAR-V06-003 scope-cut verdict - docs/glossary/tracer-bullet.md: delivered glossary artifact - docs/tutorials/first-feature.md: removed "No live run yet" caveat; added link to examples/glossary-term/EVIDENCE.md - examples/cli-todo/EVIDENCE.md: added to satisfy new EVIDENCE check - scripts/lib/spec-state.ts: add examplesEvidenceDiagnostics() - scripts/check-spec-state.ts: enforce EVIDENCE.md per example dir Satisfies SPEC-V06-002, REQ-V06-002, NFR-V06-005. Closes #176 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…g conflict Chronological ordering: v0.6.2 release entry (2026-05-09) before T-V06-003/004 entries (2026-05-12). Both sections preserved in full. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
examplesEvidenceDiagnostics.md was out of date post-merge. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: c2c6ef483c
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Addresses Codex review finding on PR #176: check-spec-state only verified EVIDENCE.md existence. An empty or malformed file would pass CI while being unauditable. Adds evidenceFrontmatterDiagnostics (pure, regex key-presence) to spec-state.ts and wires it in check-spec-state.ts. Validates required keys: date, commit, commands, caveats per golden-path-contract.md. Regex approach handles YAML block scalars the simple parser cannot fully reconstruct. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: d1469946b2
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
…heck evidenceFrontmatterDiagnostics now validates field formats after key presence, per Codex review threads on PR #176: - date must use YYYY-MM-DD - commit must be a 40-char hex SHA or "pending" - commands and caveats must not be empty (handles block scalars) Adds evidenceFieldHasContent helper that correctly scopes block-scalar content to the current key (stops at next top-level YAML key) to avoid false positives when a sibling key has indented content. 8 new tests cover all new format checks and their passing counterparts. Closes #176 (Codex review threads: scripts/lib/spec-state.ts:104, scripts/check-spec-state.ts:76)
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 4f75de0a13
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Extend evidenceFieldHasContent regex from [|>] to [|>][-+]? so that valid block-scalar forms |- |+ >- >+ are detected and empty required fields (commands/caveats) are correctly rejected. Add four tests covering empty blocks with each chomping variant and one confirming non-empty |- blocks still pass. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 2ccf0cf3d7
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Extend YAML block-scalar header regex to match indentation indicators
(|2, >1-, |-2, etc.) — previously only chomping indicators (|-/|+) were
handled, so an empty `commands: |2` block would pass validation.
Reject empty YAML quoted strings ("" / '') as inline values for commands
and caveats — `\S` matched the opening quote, allowing semantically empty
required fields to satisfy check-spec-state.
Adds six targeted tests covering both fixes.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 991b1221f8
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Emit format error when date:/commit: key is present but has no value —
previously the capture regex required whitespace+token so bare keys
silently skipped format validation.
Strip YAML inline comments (space+#) before comparing inline values to
empty-quote literals ("" / '') so `commands: "" # no commands` is
correctly rejected alongside `commands: ""`.
Adds four targeted tests.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 4fb3ed4a77
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Block-scalar regex required the line to end after optional whitespace, so `commands: | # note` fell through to the inline branch and `|` was treated as non-empty content. Extend the pattern to allow an optional trailing `# comment` on the header line. Adds three tests (two reject-empty, one accept-non-empty). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: e20ab48643
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: e20ab48643
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Both golden-path (T-V06-003/004) and cross-tool-adapters (T-V06-005/006/007) added entries to the same log section. Kept all entries in task order. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
@codex review |
`commands: # comment` is a YAML null, not content. The prior regex only stripped trailing comments (whitespace + #) but not a leading # that makes the entire value a comment. Add `.replace(/^#.*/, "")` and `value !== ""` to cover this case. Added corresponding test. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
Codex Review: Didn't find any major issues. Keep it up! ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
|
@codex review |
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 03ca29bec2
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 116c5d2f2e
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
…HasContent When commands/caveats use an explicit indentation indicator (e.g. |2), require content lines to be indented by at least that many spaces. Adds a test for the |2-with-1-space under-indentation rejection case.
|
@codex review |
|
Codex Review: Didn't find any major issues. Nice work! ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
* chore(backlog): sync issues and pull requests * chore(backlog): sync issues and pull requests * chore(backlog): sync issues and pull requests * chore(backlog): sync issues and pull requests * fix(backlog): preserve nonzero comments_count during sync * fix(backlog): restore correct comments_count and events_count values in affected mirror files * fix(backlog): allow real zero comment counts; only preserve when count is null/undefined * fix(backlog): fix TypeScript type compatibility in null-sentinel check Set events_count to 0 in backlog file 486; the previous sync wrote null which fails validateBacklogFrontmatter (expects number), causing check-backlog.ts to exit 1 and breaking the test:scripts verify step. https://claude.ai/code/session_011TPNgd7jBv3ySSyvaTifA1 * fix(backlog): allow null events_count in GhItem so sentinel preserves archived values * fix(backlog): use null sentinel for events_count in toGhItem to preserve archived data * chore(backlog): retrigger CI (trailing newline) * fix(tests): use nullish coalesce for events_count in buildBaseFrontmatter GhItem.events_count is number | null but BacklogFrontmatter.events_count is number. Apply `?? 0` to satisfy TypeScript strict null checks. Fixes verify.yml CI failure on PR #500. * fix(backlog-sync): emit null for unfetched events_count and comments_count The REST list endpoints do not return reliable event totals, and comment counts for PRs may be absent. Previously toGhItem defaulted both to 0, causing buildNextFrontmatter to overwrite previously-archived non-zero values with zeroes on every sync run. Changes: - GhItem.comments_count widened to `number | null` (null = not fetched) - toGhItem: comments_count now emits null instead of 0 when the field is absent from the REST response (mirrors existing events_count: null) - buildNextFrontmatter already had the null-preservation guard for both fields; no logic change needed there - Test fixture: ghIssue.events_count and comments_count set to null to reflect the "not fetched" sentinel; buildBaseFrontmatter updated to resolve null → 0 for the expected frontmatter output * fix(backlog): preserve archived events_count; keep type numeric * fix(backlog): fix TypeScript errors from events_count type change GhItem.events_count is now `number` (0 = not-fetched sentinel), not `number | null`. Update the test fixture to use 0 instead of null so `typecheck:scripts` passes. Also tighten buildBaseFrontmatter: drop the now-unnecessary `?? 0` fallback for events_count and update the stale comment that claimed both fields use null as their sentinel. * chore(backlog): retrigger CI — verify confirmed passing locally * chore(backlog): sync issues and pull requests * docs(scripts): regenerate GhItem API docs for comments_count type change Updates docs/scripts/backlog-sync-core/interfaces/GhItem.md to reflect the comments_count field type change from number to number | null. https://claude.ai/code/session_011TPNgd7jBv3ySSyvaTifA1 * fix(backlog-sync): preserve null comments_count from REST API Change `?? 0` to `?? null` in fetchAllIssues and fetchAllPrs so that missing API comments fields don't mask archived comment counts with a spurious zero. Updates RawGhListItem.comments type accordingly. Resolves reviewer thread on PR #500. * fix(backlog): remove dead Array.isArray branch in toGhItem comments_count raw.comments is typed as number | null | undefined, never an array, so the Array.isArray guard was unreachable dead code. Simplified to a direct null check. https://claude.ai/code/session_011TPNgd7jBv3ySSyvaTifA1 * fix(backlog): mark merged PR #176 as shipped --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: CI Fix <ci-fix@example.com>
Status — IN REVIEW
specs/version-0-6-plan/pr-plan-b-golden-path.mdScope
Replace desk-only tutorial caveat with verified golden-path demo (contract + executed evidence). Demo entry path = plugin-first (Layer 1 CLI + Layer 2 plugin), not
git clone.Tasks
Implementation outline (pickup order)
docs/golden-path-contract.md). Define demo subject, plugin-first install path (Layer 1 CLIspecorator init+ Layer 2 plugin), required artifacts shape, evidence-note schema (date / commit / commands / caveats), validation scope, success criteria.examples/<demo-slug>/). Full lifecycle (idea → retrospective) produced by following the contract from an empty project.scripts/check-*.ts) — validates the example: state, traceability, frontmatter, links. Register intools/automation-registry.yml.examples/<demo-slug>/EVIDENCE.md) — exact date, commit SHA, commands run, caveats.specs/version-0-6-plan/implementation-log.md.Files of interest
docs/golden-path-contract.mdexamples/<demo-slug>/(lifecycle artifacts +EVIDENCE.md)scripts/check-*.tsdeterministic checktools/automation-registry.yml— register new checkSpec references
Test scenario
Definition of Done
EVIDENCE.mdlandedimplementation-log.mdnpm run verifygreenfeat(v06): ...(Conventional Commits PR-title CI)Coordination
Workflow refs