Skip to content

feat(plans): adopt awaits: field; declare storage-foundation awaits gitsheets v1.0#10

Merged
themightychris merged 3 commits into
mainfrom
feat/awaits-field-protocol
May 16, 2026
Merged

feat(plans): adopt awaits: field; declare storage-foundation awaits gitsheets v1.0#10
themightychris merged 3 commits into
mainfrom
feat/awaits-field-protocol

Conversation

@themightychris
Copy link
Copy Markdown
Member

Summary

Adopts the new awaits: frontmatter field — introduced upstream in JarvusInnovations/agent-skills#9 — for capturing external blockers (upstream library releases, vendor deliveries, partner decisions). Mirrors the convention in this repo's .claude/CLAUDE.md + plans/README.md, then applies the field to plans/storage-foundation.md where the long-standing "Assumes gitsheets v1.0 has shipped" prose has lived in Scope.

Two commits:

  1. docs(plans): adopt awaits: field for external blockers — mirror the convention. .claude/CLAUDE.md frontmatter example gains the awaits: block plus an explanatory paragraph (semantics, lifecycle orthogonality with status:, resolution rule, script behavior). plans/README.md gains a single bullet pointing at the upstream protocol's "External blockers" section.

  2. chore(plans): declare storage-foundation awaits gitsheets v1.0 — adds the concrete entry:

    awaits:
      - "JarvusInnovations/gitsheets@v1.0 — consumed via Repository / Sheet / openStore TypeScript API (https://github.com/JarvusInnovations/gitsheets/milestone/1)"

    The "Assumes gitsheets v1.0 has shipped" Scope prose stays — the YAML is structural; the prose has more context.

Why this matters

Before this PR, plans-next listed storage-foundation under "Blocked by unfinished deps" with a test-harness [planned] callout — which is technically true (test-harness is in the DAG before storage-foundation) but misleading: the load-bearing blocker is gitsheets v1.0, an external upstream release. After this PR:

Awaiting external
=================
  - storage-foundation (unblocks 14)
      ⌛ JarvusInnovations/gitsheets@v1.0 — consumed via Repository / Sheet / openStore TypeScript API (https://github.com/JarvusInnovations/gitsheets/milestone/1)
      ↳ test-harness [planned]

Both blockers visible. A reader instantly knows what to track. And git grep awaits.*gitsheets plans/ answers "what's everything we're waiting on gitsheets for?" in a single command.

Dependency on upstream PR

The plans-next and plans-dag behavior described above requires agent-skills#9 — the script update that parses awaits: and adds the "Awaiting external" section. Until that lands, awaits: here is a no-op for the scripts (still useful as greppable structural metadata; the cost is zero).

Recommended merge order: agent-skills#9 first, then this. Not strictly required — this PR doesn't break anything if it lands first.

Test plan

  • <agent-skills>/skills/specops/scripts/plans-next plans/ (with agent-skills#9 branch checked out locally) correctly surfaces storage-foundation under "Awaiting external" with both the ⌛ gitsheets@v1.0 entry and the ↳ test-harness [planned] dep callout.
  • <agent-skills>/skills/specops/scripts/plans-dag plans/ emits class storage_foundation awaits overlaid on class storage_foundation planned.
  • No other plans change.

🤖 Generated with Claude Code

themightychris and others added 3 commits May 16, 2026 12:19
Mirrors the awaits: field convention introduced upstream in
JarvusInnovations/agent-skills#9. The canonical protocol lives in
that skill's references/plans-protocol.md; this file just
summarizes for in-repo readers and points at it.

.claude/CLAUDE.md:
  * Frontmatter example gains the awaits: block alongside
    upstream-specs:.
  * Adds a paragraph explaining the field's semantics, lifecycle
    relationship to status (orthogonal), and resolution
    (deletion). Notes that plans-next surfaces non-empty awaits
    in its own "Awaiting external" section.

plans/README.md:
  * Adds a bullet to the discovery list explaining where awaits
    shows up in plans-next output.

storage-foundation.md picks up its concrete awaits: entry in the
following commit.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The plan's Scope already says "Assumes gitsheets v1.0 has shipped"
in prose, but until now that block lived only in the body — invisible
to plans-next, ungreppable, and at risk of being lost when the plan
freezes. Adopting the awaits: field (introduced in the preceding
commit and upstream in agent-skills#9) captures the structural fact:

  awaits:
    - "JarvusInnovations/gitsheets@v1.0 — consumed via Repository
       / Sheet / openStore TypeScript API
       (https://github.com/JarvusInnovations/gitsheets/milestone/1)"

The Scope prose stays — it has more context than the YAML line.

`plans-next plans/` now surfaces storage-foundation under
"Awaiting external" with the entry visible, alongside the
test-harness [planned] dep callout. plans-dag will overlay a
dashed border on the storage-foundation node once both this PR
and the upstream agent-skills#9 are merged.

Resolution: delete the awaits: entry from this file once gitsheets
v1.0 ships and the consumer-side code in this plan can actually
start.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The PR's original prose framed awaits: as for "external blockers that
aren't represented by an in-repo plan or an upstream spec" — the same
mutually-exclusive misreading caught and fixed by review on the
upstream agent-skills PR (JarvusInnovations/agent-skills#9, merged).

Our storage-foundation.md is literally the canonical counterexample:
gitsheets shows up in BOTH upstream-specs: (the specs we'll implement
against) AND awaits: (the v1.0 release we're waiting for). Different
axes of the same upstream — not exclusive categories.

Rewrite the paragraph to:

  * Call out orthogonality of depends / upstream-specs / awaits
    explicitly
  * Use the storage-foundation frontmatter example shown immediately
    above (gitsheets in both fields) as the worked illustration
  * Add the "trailing em-dash clause for the why" guidance that
    matches the upstream protocol's recommendation
  * Note the new smell warning (plans-next/dag warn when status:
    blocked has neither awaits: nor unfinished depends:) so readers
    know the smell isn't just rhetorical

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@themightychris
Copy link
Copy Markdown
Member Author

Update following the merge of JarvusInnovations/agent-skills#9:

One drift item caught and fixed (8481260). The prose paragraph I wrote in .claude/CLAUDE.md framed awaits: as for "external blockers that aren't represented by an in-repo plan or an upstream spec" — the same mutually-exclusive misreading caught by the upstream review (medium #2). Our storage-foundation.md is literally the canonical counterexample: it carries gitsheets in BOTH upstream-specs: AND awaits:. Rewrote the paragraph to call out orthogonality explicitly, use the inline frontmatter example as the worked illustration, and add the "trailing em-dash clause for the why" guidance that landed in the upstream protocol's recommendation. Also added a sentence about the new smell warning (status: blocked with neither awaits: nor unfinished depends:) so readers know the smell is mechanically caught.

Nothing else needs syncing. Audited:

  • No stale --include-blocked references anywhere in cfp-rewrite (grep clean) — the flag was removed in the upstream PR's Minor Create project form #2 fix and we never mentioned it
  • The plans-next "Awaiting external" section behavior is unchanged from what we documented; my paragraph already covered it
  • The storage-foundation.md awaits: entry works correctly against the merged upstream scripts — verified by running plans-next plans/ and seeing the expected "Awaiting external" placement with the callout + ↳ test-harness [planned] dep callout
  • The dash-pattern collision fix (Minor feat: migrate to nuxt-ui #1) is purely visual in plans-dag; no doc consequences
  • PR body's "Recommended merge order" note is now historical — upstream landed first, so this PR is safe to merge whenever

@themightychris themightychris merged commit 0b13fe0 into main May 16, 2026
1 check passed
@themightychris themightychris deleted the feat/awaits-field-protocol branch May 16, 2026 16:49
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.

1 participant