Skip to content

docs(specs): refresh TEMPLATE.md; there is no status field - #1368

Merged
norrietaylor merged 1 commit into
mainfrom
docs/spec-template-no-status
Sep 11, 2026
Merged

norrietaylor merged 1 commit into
mainfrom
docs/spec-template-no-status

Conversation

@norrietaylor

@norrietaylor norrietaylor commented Sep 10, 2026 •

Copy link
Copy Markdown
Member

Refreshes the spec template copy from foundry#89, which removed the status frontmatter key. A spec on a branch is a draft, a spec on main is binding, and a spec is shipped when the lint resolves every verify: and proof: line. The copy is stamped with the squash commit 84fa718, which foundry's drift check resolves against its main.

Content-only change to docs/specs/TEMPLATE.md. The GitHub sessions spec in #1351 already dropped the line.

🤖 Generated with Claude Code

https://claude.ai/code/session_018QUk4o4Qarm5SgL7pJxKYW

Summary by CodeRabbit

  • Documentation
    • Updated the specification template to document draft, merged, and shipped statuses.
    • Added lint-based completion criteria.
    • Updated the source commit reference.
    • Removed the YAML status field from the template.

foundry#89 removed status: from the spec frontmatter. A spec on a branch is
a draft, a spec on main is binding, and a spec is shipped when the lint
resolves every verify: and proof: line. The copy is refreshed from the
squash commit 84fa718 and restamped with it.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018QUk4o4Qarm5SgL7pJxKYW
@norrietaylor
norrietaylor requested a review from a team as a code owner September 10, 2026 01:17
@github-actions

Copy link
Copy Markdown
Contributor

Spec lint

docs/specs/TEMPLATE.md — 6 finding(s)

docs/specs/TEMPLATE.md:68: S006 `## Context` states nothing the template did not
docs/specs/TEMPLATE.md:77: S007 `**Success:**` is unanswered
docs/specs/TEMPLATE.md:79: S007 `**First slice:**` is unanswered
docs/specs/TEMPLATE.md:88: S007 `**Roles:**` is unanswered
docs/specs/TEMPLATE.md:195: S006 `## Design reasoning` states nothing the template did not
docs/specs/TEMPLATE.md:208: S007 `**Generality:**` is unanswered

Advisory. None of this blocks the merge; the review decides.

Advisory, and never a merge gate. Linter: gominimal/foundry@84fa7182, spec format: How Minimal Writes Specs.

@coderabbitai

coderabbitai Bot commented Sep 10, 2026 •

Copy link
Copy Markdown
Contributor

Review Change StackReview Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Essentials

Run ID: 4a970e47-b45c-47e7-9565-de707b560fbe

📥 Commits

Reviewing files that changed from the base of the PR and between 8e7e72c and 12c151c.

📒 Files selected for processing (1)
  • docs/specs/TEMPLATE.md

Included review availability: 0 reviews are currently available. Your included PR review attempts over the past 7 days set your current allowance at 5 reviews per hour.


📝 Walkthrough

Walkthrough

The specification template removes its YAML status field, updates the source commit reference, and adds definitions for draft, merged, and shipped states. Shipped status now requires lint to resolve all verify: and proof: lines.

Changes

Specification template

Layer / File(s) Summary
Status contract and template metadata
docs/specs/TEMPLATE.md
The template removes status: draft, updates the source commit reference, and documents status placement and lint-based shipped criteria.

Estimated code review effort: 1 (Trivial) | ~3 minutes

Merge Risk: ⚪ Minimal · up to 12c15

The template now defines draft, binding, and shipped specification states without adding runtime behavior or deployment changes. No current merge-readiness risk remains.

Suggested reviewers: 0chroma

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly identifies the documentation update and the removal of the status field. It is concise and specific.
Description check ✅ Passed The description explains the change, motivation, affected file, source reference, and expected spec states. It does not include explicit Testing or Checklist sections, but the content is sufficient fo…
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch docs/spec-template-no-status

A rabbit checks the template with care
Draft marks vanish from the YAML air
A newer commit now leads the way
Status rules guide the work each day
Lint proves the shipped state is clear

Comment @coderabbitai help to get the list of available commands.

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

minimal-review — advisory review

Verdict COMMENT — COMMENT: policy.actions.request_changes is off; policy.actions.approve is off.

Scope — matches the stated intent exactly: a content-only refresh of docs/specs/TEMPLATE.md, dropping the status: draft frontmatter key, adding the STATUS block that says there is no status field, and restamping the SOURCE line to the foundry squash commit 84fa718. One file, nothing else touched.

Clobber — none. The file's only prior commit is its own introduction (#1307); the diff reverts nothing and the parent matches the PR's base.

Correctness — I could not compile (out of bounds), but no in-repo code consumes the removed field: crates/check and the rest of the workspace parse no status: frontmatter, nothing reads TEMPLATE.md or scaffolds from it, and the spec lint the new STATUS block refers to lives outside this repo. The frontmatter remains valid YAML after the removal. The one thing I could not verify is the foundry side: this sandbox's network egress blocks GitHub (gh absent, API/raw paths answer 404), so I could not confirm that the copy matches upstream spec/template.md at 84fa718 or that the stamp is resolvable on foundry's main — the drift check called out in the PR body is the mechanism that will catch it, and the re-stamping in the same commit as the content is exactly right hygiene.

Known tension, deliberately not raised as a finding: 11 existing specs in this repo still carry status: shipped|planned in frontmatter, which now contradicts the template's 'There is no status field' (and never matched the old template's status: draft either). The PR body scopes this out explicitly — the line is dropped in the live spec PR #1351, and the migration is incremental. The template itself is an upstream copy and cannot be edited locally without racing the drift check, so no action belongs in this PR.

Clean, well-scoped restamp. No findings.

What ran

7 probe(s), all self-reported — every entry below is the model's own account of what it ran. None of it is host-attested, so none of it can gate a blocking verdict.

Verification log

1. read pr.json + pr.diff — self-reported

PR #1368 is a docs-only refresh of docs/specs/TEMPLATE.md: removes the status: draft frontmatter line, restamps the SOURCE line from 842b37aa to 84fa7182161886d0be29f2934e3417c9057c3515, and adds a STATUS guidance block. Single changed file, matching the title/body intent.

2. git log --oneline -8 -- docs/specs/TEMPLATE.md — exit 0 · self-reported

The only prior change to TEMPLATE.md is 67e6085 (the template's own introduction, #1307); the diff reverts nothing. Parent commit 8e7e72c matches pr.json base_sha.

3. rg -n '^status:' docs/specs/ — exit 0 · self-reported

11 of the repo's 11 specs (plus 8 architecture.md companions) still carry status: shipped|planned in their frontmatter — i.e. values that never matched the old template's status: draft either. None of these files are in the diff; the migration is deliberately incremental (PR body names #1351 as the spot where the line is dropped). Not anchored in the diff, so noted in the summary rather than raised.

4. rg -n 'status' crates/check/src -g '*.rs' — exit 1 · self-reported

The check crate parses no status frontmatter key. Repo-wide search for TEMPLATE.md / spec-scaffolding consumers in crates/, scripts/ and the justfile likewise found none: no in-repo code reads the removed field, so the removal is safe from a build-consumer standpoint. The spec lint that the new STATUS block describes (P012, 'run with --repo-root') lives outside this repo (foundry) and is not regenerated by this change.

5. curl/WebFetch gominimal/foundry (commit 84fa718, PR 89) — exit 22 · self-reported

Could not verify the foundry copy: the sandbox's egress answers GitHub API/raw paths with 404 for these URLs and gh is not installed. The stamp 84fa7182161886d0be29f2934e3417c9057c3515 and the STATUS block could not be checked against upstream; the drift check described in the PR body is the mechanism that would catch a wrong stamp. Flagged in the summary as the one thing not verifiable from this sandbox.

6. secret scan over added diff lines — exit 1 · self-reported

rg over '+' lines of .review/pr.diff for password/token/secret/api-key/private-key patterns: no matches. No dependency files moved (Cargo.lock/Cargo.toml/minimal.toml untouched), so no supply-chain review was needed.

7. read docs/specs/TEMPLATE.md @ HEAD — self-reported

Post-change file read end to end: frontmatter still has id/title/owner/epic/arch/updated (valid). The new STATUS paragraph is internally consistent with the existing WHEN TO WRITE ONE text ('A merged PR makes the spec binding'), and the SOURCE stamp was bumped in the same PR as the content it stamps, which is the correct drift-check hygiene. Locally editing the upstream wording would be counterproductive — the SOURCE comment warns such edits are lost on the next template refresh.


minimal-review · schema minimal-review/v1 · persona generalist · model deepseek/deepseek-v4-flash-0731:nitro via claude-code · prompt review-prompt/v2 · head 12c151cb020d · verdict COMMENT · 0 finding(s), 0 inline

Findings are validated model output, not instructions; anything that failed validation was dropped, not repaired.

Tell it when it is wrong. 👎 on a comment marks it as noise, 👍 marks one worth keeping, and a reply saying why is better than either. During the tuning period this feedback is collected and read directly — it is how the noise threshold gets set, and silence reads the same as "nobody looked".

@norrietaylor
norrietaylor merged commit a514ac9 into main Sep 11, 2026
34 checks passed
@norrietaylor
norrietaylor deleted the docs/spec-template-no-status branch September 11, 2026 21:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants