Skip to content

Finalize forge-cli v1 ledger + cli-output-contract conformance attestation#400

Merged
graysurf merged 2 commits into
mainfrom
feat/forge-cli-v1-ledger-finalize
May 20, 2026
Merged

Finalize forge-cli v1 ledger + cli-output-contract conformance attestation#400
graysurf merged 2 commits into
mainfrom
feat/forge-cli-v1-ledger-finalize

Conversation

@graysurf
Copy link
Copy Markdown
Collaborator

Summary

Docs-only PR that finalizes the forge-cli v1 execution ledger now that Sprint 8 has merged
(PR #399 -> 3d08224) and Task 8.3 has shipped end to end (workspace bumped to 0.11.0,
tags v0.11.0 / nils-cli-v0.11.0 pushed, both release.yml runs green, local Homebrew
formula upgraded). Also folds in a conformance attestation against the parallel
cli-output-contract-unification plan — forge-cli was designed against the shared envelope
from Sprint 1, so no remediation is required.

Changes

  • docs/plans/forge-cli/forge-cli-execution-state.md
    • Flip Status to complete (Sprints 0-8 + Task 8.3 release flow delivered; cli-output-contract-v1 conformance verified).
    • Update Branch/commit to record PR Forge-cli v1 Sprint 8: wrapper + completion sync + README crosslink #399 merge 3d08224, release commit 0e84c98,
      and tags v0.11.0 / nils-cli-v0.11.0.
    • Replace the loose Sprint 5-8 evidence ("branch ...") with the merged PR commit SHAs
      (#395 -> 718b7dd, #397 -> 15fcc73, #398 -> 3474555, #399 -> 3d08224).
    • Mark Task 8.3 completed with the release-flow evidence (0e84c98 + both tags).
    • Bump the Validation table to record the Sprint 8 CI rerun (post-MD013 fix d371b82)
      and the strict cli-output-contract-lint.sh PASS.
    • Append two final session-log entries: Sprint 8 merge (including the MD013 healing
      follow-up) + Task 8.3 release flow + the cli-output-contract conformance attestation.

PR a53f89b (translation of the default-continue authorization line) was already on this
local branch when it was cut and is carried along unchanged.

Test-First Evidence

  • Change classification: docs-only follow-up. No production code or test surface
    touched in this PR.
  • Failing test before fix: not applicable. The prior Validation row
    bash scripts/ci/nils-cli-checks-entrypoint.sh - pending - end-of-Sprint-8 workspace gate was the literal "evidence is missing" placeholder that this PR replaces with the
    Sprint 8 CI rerun's PASS line.
  • Final validation:
    • bash scripts/ci/markdownlint-audit.sh --strict -> PASS (rumdl fmt re-aligned the
      widened Task Ledger table).
    • bash scripts/ci/docs-hygiene-audit.sh --strict -> PASS (warnings=0).
    • bash scripts/ci/cli-output-contract-lint.sh --strict -> PASS (clean, no allowlist
      additions required for forge-cli - it was conformant from Sprint 1).
  • Waiver reason: not applicable.

cli-output-contract conformance check (audit performed against merged forge-cli)

Requirement Status Evidence
schema_version via nils_common::cli_contract::schema_version_for (no inline literals) clean crates/forge-cli/src/ops/*.rs; 42 cli.forge-cli.<op>.v1 assertions across 13 test files
snake_case JSON via shared Envelope<T> clean crates/forge-cli/src/envelope.rs wraps nils_common::cli_contract::Envelope
Shared exit::* constants only - no inline process::exit(1|2) clean 33 exit::* call sites in crates/forge-cli/src/; 0 inline numeric exits in main.rs
--format text|json (no --json bool) clean 0 --json long-flag declarations; crates/forge-cli/src/cli.rs uses shared OutputFormat
emit_parse_error for parse / unknown-subcommand clean crates/forge-cli/src/cli.rs:706
Per-binary exit-code matrix test clean tests/integration/exit_codes.rs (6) + exit_codes_full.rs (12) - 18 tests cover every documented (exit, kind) pair
Workspace lint cli-output-contract-lint.sh --strict clean local run 2026-05-20

No code changes required.

Testing

  • bash scripts/ci/markdownlint-audit.sh --strict - pass
  • bash scripts/ci/docs-hygiene-audit.sh --strict - pass
  • bash scripts/ci/cli-output-contract-lint.sh --strict - pass
  • npx --yes rumdl@0.1.62 fmt - applied (table alignment after widening the ledger table)

Full workspace test run not exercised on this PR because no source files are touched;
CI will run the entire required-checks pipeline anyway.

Risk / Notes

  • Risk: minimal. Docs-only PR; the only writer is the ledger file itself.
  • The cli-output-contract attestation is recorded inline in the ledger rather than as a
    separate spec doc - the existing docs/specs/cli-output-contract-v1.md already governs
    the contract, and forge-cli is a consumer, not a re-publisher.
  • After this merges, the forge-cli plan bundle (plan + source + execution-state) is
    durable end-to-end and tracking issue Track plan: forge-cli v1 — provider-neutral forge operations #391 can be closed via the
    dispatch-plan-delivery close gate (out of scope for this PR).

graysurf added 2 commits May 20, 2026 12:07
…elease

- Mark Task 8.3 completed: `nils-cli-bump-version-tag-release --version
  0.11.0` ran end to end on 2026-05-20 — workspace bumped to 0.11.0
  (`0e84c98`), tags `v0.11.0` + `nils-cli-v0.11.0` pushed, both
  `release.yml` runs green, local brew upgraded 0.10.2 -> 0.11.0.
- Attest cli-output-contract-unification conformance: forge-cli was
  designed against the shared envelope from Sprint 1 — strict
  `cli-output-contract-lint.sh` passes clean, 0 inline exit literals
  in `main.rs`, 0 `--json` bool flags, 42 schema-literal assertions
  pin `cli.forge-cli.<op>.v1` across 13 integration files. No
  remediation needed on this PR.
@github-actions
Copy link
Copy Markdown

Coverage

Total line coverage: 85.43% (75417/88276 lines hit).

@graysurf graysurf marked this pull request as ready for review May 20, 2026 04:20
@graysurf graysurf merged commit 1f787bc into main May 20, 2026
11 checks passed
@graysurf graysurf deleted the feat/forge-cli-v1-ledger-finalize branch May 20, 2026 04:20
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