Repository navigation
docs(specs): refresh TEMPLATE.md; there is no status field - #1368
Conversation
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
Spec lint
Advisory. None of this blocks the merge; the review decides. Advisory, and never a merge gate. Linter: |
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Essentials Run ID: 📒 Files selected for processing (1)
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. 📝 WalkthroughWalkthroughThe 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 ChangesSpecification template
Estimated code review effort: 1 (Trivial) | ~3 minutes Merge Risk: ⚪ Minimal · up to 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: 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
A rabbit checks the template with care Comment |
There was a problem hiding this comment.
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: draftfrontmatter 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|plannedin their frontmatter — i.e. values that never matched the old template'sstatus: drafteither. 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
statusfrontmatter 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
ghis 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.difffor 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".
Refreshes the spec template copy from foundry#89, which removed the
statusfrontmatter key. A spec on a branch is a draft, a spec onmainis binding, and a spec is shipped when the lint resolves everyverify:andproof:line. The copy is stamped with the squash commit84fa718, which foundry's drift check resolves against itsmain.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
statusfield from the template.