Skip to content

Add rstest-bdd-harness-bevy as a workspace member (0.5.1.1) - #51

Draft
leynos wants to merge 17 commits into
mainfrom
0-5-1-1-add-rstest-bdd-harness-bevy-workspace-member
Draft

Add rstest-bdd-harness-bevy as a workspace member (0.5.1.1)#51
leynos wants to merge 17 commits into
mainfrom
0-5-1-1-add-rstest-bdd-harness-bevy-workspace-member

Conversation

@leynos

@leynos leynos commented Aug 15, 2026

Copy link
Copy Markdown
Owner

Summary

Implements roadmap task 0.5.1.1: adds crates/rstest-bdd-harness-bevy as a
workspace member — a reusable, headless Bevy harness adapter for rstest-bdd
behavioural tests that stays free of Skyjoust and Lille code so it can move to
its own repository later.

What is delivered

  • A workspace crate pinned to Bevy 0.19.1 with default-features = false
    and features = ["std"], and the rstest-bdd family exactly pinned to
    =0.6.0-beta3.
  • Two public profile functions, add_minimal_plugins and minimal_app, with
    worked doctests; both stay public after 0.5.1.2 builds the harness types.
  • Behavioural, property, and boundary coverage: a Gherkin scenario driving one
    headless update tick, a 32-case frame-count property test, an
    extraction-contract manifest tripwire, and an A/B-proven include_str!
    rebuild guard.
  • ADR 007 recording the in-tree incubation, extraction contract, and
    dependency decisions; the design document, repository layout, developer's
    guide, roadmap, and contents index are aligned with it.

All six commit gates pass (check-fmt, check-state-graphs, markdownlint,
lint, test, nixie), and a CodeRabbit --agent pass completed with zero
findings.

The five maintainer decisions executed here

  1. Bevy 0.19.1 for both the harness and the future runtime, written with
    implicit caret syntax.
  2. rstest-bdd family exactly pinned to =0.6.0-beta3 until a deliberate
    compatibility pass validates a later release.
  3. Step functions return StepResult and propagate RefCell borrow failures;
    the scenario binding contains no .expect().
  4. Stable requirements use implicit caret syntax (rstest at 0.26, matching
    the merged root after PR Bump rstest from 0.18.2 to 0.26.1 #6).
  5. The stack was rebased onto main once PR Bump rstest from 0.18.2 to 0.26.1 #6 automerged; this branch carries
    no second rstest line.

References

🤖 Generated with Claude Code

Summary by Sourcery

Add an independently extractable headless Bevy adapter for rstest-bdd behavioural testing and establish its workspace, dependency, documentation, and verification foundations.

New Features:

  • Add the headless rstest-bdd-harness-bevy crate as a workspace member with public Bevy application profile helpers.
  • Provide a Gherkin-driven headless Bevy scenario and bounded frame-count property coverage.

Enhancements:

  • Keep the harness independent of Skyjoust and Lille code to preserve future extraction.
  • Standardise the harness on Bevy 0.19.1 and exact rstest-bdd 0.6.0-beta3 dependencies.
  • Document the crate boundary, dependency decisions, extraction contract, and developer guidance.

Build:

  • Update the workspace dependency graph and lockfile for the new Bevy harness crate.

Documentation:

  • Add ADR 007 and align the roadmap, design, repository layout, contents index, and developers guide with the new crate.

Tests:

  • Add extraction-boundary tripwires and feature-file rebuild coverage for the harness crate.

@coderabbitai

coderabbitai Bot commented Aug 15, 2026

Copy link
Copy Markdown

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 2e00c654-b031-48cc-a374-cc14776f8d36

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

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

@sourcery-ai

sourcery-ai Bot commented Aug 15, 2026

Copy link
Copy Markdown

Reviewer's Guide

Adds a detailed execution plan document for roadmap task 0.5.1.1 to introduce a new rstest-bdd-harness-bevy crate as a workspace member, clarifying decisions, constraints, risks, milestones, and validation steps without any code or configuration changes yet.

Sequence diagram for planned headless Bevy BDD test flow

sequenceDiagram
    actor Developer
    participant Cargo as cargo_test
    participant Rbdd as rstest_bdd
    participant Harness as HarnessAdapter
    participant App as bevy_app::App

    Developer->>Cargo: cargo test -p rstest-bdd-harness-bevy
    Cargo->>Rbdd: run minimal_app_advances_one_tick
    Rbdd->>Harness: run(ScenarioRunRequest)
    Harness->>App: minimal_app()
    Harness-->>Rbdd: Context(App)
    Rbdd->>App: App.update()
    Rbdd->>App: read FrameCount
    Rbdd-->>Cargo: scenario passed
    Cargo-->>Developer: tests ok (headless Bevy tick proved)
Loading

File-Level Changes

Change Details Files
Introduce a comprehensive ExecPlan document that defines how the rstest-bdd-harness-bevy Bevy BDD harness crate will be added and validated as a workspace member, including dependency and version decisions, risk management, milestones, and acceptance criteria.
  • Add a markdown ExecPlan describing the purpose and scope of the future Bevy harness crate and its headless-test goals.
  • Specify open decisions about Bevy version selection and rstest-bdd version pinning that must be approved before implementation.
  • Enumerate constraints, tolerances, risks, and progress milestones for implementing and validating the new crate and its tests.
  • Detail concrete gate commands, quality criteria, and behavioural acceptance steps for the future implementation.
  • Record a decision log and artefacts/evidence from probes validating assumptions about dependencies, lint traps, build cost, and harness contract feasibility.
docs/execplans/0-5-1-1-add-rstest-bdd-harness-bevy-workspace-member.md

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

@leynos
leynos force-pushed the 0-5-1-1-add-rstest-bdd-harness-bevy-workspace-member branch from 8a5f4ce to 0286437 Compare August 15, 2026 21:54
@leynos
leynos changed the base branch from main to add-test-macro-for-fixture-lint-suppression August 15, 2026 21:55
Base automatically changed from add-test-macro-for-fixture-lint-suppression to main August 16, 2026 21:52
@leynos
leynos force-pushed the 0-5-1-1-add-rstest-bdd-harness-bevy-workspace-member branch from 0286437 to 554ed90 Compare August 16, 2026 21:52
leynos added a commit that referenced this pull request Aug 21, 2026
The Milestone 6 checklist is closed: the full gate sequence and
the CodeRabbit review are green, the measurements are recorded,
and the branch is ready for delivery through pull request #51.
leynos added a commit that referenced this pull request Aug 21, 2026
Milestones 1-5 and the gate, measurement, and CodeRabbit parts of
Milestone 6 are done; the branch push to update PR #51 awaits
maintainer authorization for the force-with-lease push that the
plan-mandated rebase makes necessary.
@leynos
leynos force-pushed the 0-5-1-1-add-rstest-bdd-harness-bevy-workspace-member branch from f3e66f2 to cef22a7 Compare August 21, 2026 16:17
@coderabbitai

coderabbitai Bot commented Aug 21, 2026

Copy link
Copy Markdown

Warning

Your free Security trial is over. An organization admin can activate billing to continue.

@leynos

leynos commented Aug 21, 2026

Copy link
Copy Markdown
Owner Author

@coderabbitai please assess the implementation in this PR for completeness and correctness against the execplan:

docs/execplans/0-5-1-1-add-rstest-bdd-harness-bevy-workspace-member.md

@coderabbitai

This comment was marked as resolved.

leynos and others added 17 commits August 21, 2026 18:21
Add `docs/execplans/0-5-1-1-add-rstest-bdd-harness-bevy-workspace-member.md`,
the approval-gated execution plan for roadmap task 0.5.1.1.

The plan is grounded in four executable probes run during planning rather
than in documentation alone:

- `rstest-bdd` 0.6.0-beta3 is published, so the roadmap's conditional
  instruction to use git dependencies against `main` no longer applies;
  the crate uses published caret requirements instead.
- `bevy = { version = "0.17.3", default-features = false }` compiles and
  ticks a headless `MinimalPlugins` application, resolving 98 crates
  against 428 for Bevy's defaults.
- The design's harness contract, including the reserved
  `rstest_bdd_harness_context` fixture key, works against published
  beta3.
- The planned crate shape passes `cargo clippy` and `cargo doc` under
  `-D warnings` on the pinned `nightly-2026-03-26`.

Three estate-specific traps surfaced and are recorded in the plan:
`allow-expect-in-tests` does not cover `rstest-bdd` step functions in
`tests/*.rs`; `googletest`'s `expect_that!` requires `#[gtest]`; and a
single-expression `#[fixture]` body trips `unused_braces`.

The plan is DRAFT and must be approved before implementation begins.
Revise the 0.5.1.1 execplan against a six-lens design review, with
each reviewer claim checked by executable probe rather than
accepted.

Corrected defects:

- Licence was `MIT OR Apache-2.0`, copied from the validator crate;
  the repository `LICENSE` and every published sibling are ISC. The
  crate is also marked unpublishable so the incubating copy cannot
  claim the upstream-documented name.
- The specified red state could not occur. Without the module
  declaration, rustc never compiles the sibling test file, so the
  run passed vacuously with zero tests.
- The two constructors could not become `BevyProfile::configure`
  bodies as claimed, because `configure` mutates a borrowed
  application. Reshaped to `add_minimal_plugins` plus a
  `minimal_app` wrapper, so the carry-forward is real.
- A caret on a pre-release is not a pin: it admits 0.6.0-beta4,
  which the plan itself documents as source-breaking.
- Omitting Bevy's standard-library feature substitutes a clock that
  reinterprets timestamp counter ticks as nanoseconds, which would
  have been a trap for the fixed-tick profile at 0.5.1.4.
- Feature unification is workspace-wide, so disabling default
  features bounds what the crate requests, not what a workspace
  build resolves.
- The `Outcomes & retrospective` section the document's own opening
  paragraph requires was missing.

Corrected figures: the graph is 139 crates, not 98; build cost is
now measured rather than asserted; coverage is met by the unit
tests, since the CI coverage action uses nextest, which does not
run doctests.

Two decisions the review could not settle from the repository are
raised for the approval gate: the Bevy version, and whether to
deviate from the caret mandate for pre-releases.
Withdraw the local `let`-binding workaround for the `rstest`
fixture expansion lint in favour of
`#[allow_fixture_expansion_lints]` from `skyjoust-test-macros`,
added by the layer beneath this one in the stack. The workaround
would have spread a bespoke idiom across every fixture the project
writes rather than fixing the cause once.

Renumber the harness ADR from 006 to 007; the lower layer takes 006
for the test-macro decision.

Restate the extraction contract to distinguish game code, which is
forbidden, from test-only tooling, which is not, and add
`skyjoust-test-macros` as a development dependency.

Make the boundary guard match dependency names exactly rather than
by substring, and anchor the `cargo tree` acceptance pattern on the
trailing space. Both changes exist because `skyjoust-test-macros`
contains the substring `skyjoust`, so the guard as previously
specified would have rejected a dependency the contract allows. A
fourth boundary test pins that behaviour; verified against a probe
where the unanchored pattern does match and the anchored one does
not.
Target Bevy `0.19.1`, retain exact `rstest-bdd` beta pins, and
record implicit caret syntax for stable dependencies.

Require fallible BDD steps to propagate errors and make the PR #6
automerge and stack rebase prerequisites explicit. Add the missing
conformance and verification sections so the living plan records
traceability, external assumptions, and non-vacuity checks.
Pull request #6 automerged, so the branch stack is rebased onto
`main` and the merged root `rstest = "0.26"` requirement is
reconciled into the crate manifest example. Note that the Bevy
0.19.1 probes are discharged by the Milestone 2/3 build itself,
with evidence appended to the plan as it surfaces.
Add ADR 007 covering in-tree incubation of
`rstest-bdd-harness-bevy`, the extraction contract, and the
dependency decisions taken for roadmap task 0.5.1.1.

Amend the harness design document: `rstest-bdd` 0.6.0-beta3 is
published, so the crate uses published requirements rather than git
dependencies against `main`. Record the later APIs unavailable
under beta3, the Bevy standard-library feature requirement, and the
crate layout names this task establishes. Update the roadmap to
target Bevy 0.19.1 with implicit-caret stable requirements while
the `rstest-bdd` family stays exactly pinned.
Add `crates/rstest-bdd-harness-bevy` to the workspace with a
manifest pinned to Bevy 0.19.1 headless and the `rstest-bdd`
family exactly at 0.6.0-beta3. `lib.rs` declares `mod profile;`
but deliberately withholds the re-export, and `profile_tests.rs`
imports the two functions that Milestone 3 will provide.

The focused test run fails at compilation with the planned
`E0432: unresolved imports` naming `add_minimal_plugins` and
`minimal_app`; the whole-workspace `make typecheck` confirms the
Bevy 0.19.1 graph checks cleanly under Cranelift, with the same
grouped diagnostic as the only Rust error. The regenerated
`Cargo.lock` resolves 121 normal and 267 dev-inclusive crates, and
both headless-graph queries and the transitive extraction query
pass.
Add `add_minimal_plugins` and `minimal_app` to `src/profile.rs`,
each with a worked doctest, and re-export both from the crate
root. `minimal_app` carries a message-bearing `#[must_use]` so
the attribute survives `clippy::double_must_use` against Bevy's
already-`#[must_use]` `App`.

The focused run reports five unit tests and two doctests passing,
confirming for `0.19.1` that `App::new()` omits `TimePlugin`,
`MinimalPlugins` advances the frame counter, and the two entry
points agree. `make check-fmt` and `make lint` (doc, Clippy,
Whitaker) are green; the step-closure renames in the behavioural
binding avoid `clippy::shadow_reuse`.
Bind the Gherkin scenario in `headless_scenario.feature` with the
`include_str!` rebuild guard, prove the frame-count tick invariant
over the bounded range with a 32-case property test, and tripwire
the extraction contract with a manifest-text predicate and four
tests.

The A/B experiment confirms the guard is load-bearing: without it
a feature-only edit passes stale, with it the same edit fails the
scenario. The step closures are renamed from the plan's snippet
because `clippy::shadow_reuse` denies closure parameters that
shadow the step function's `app` binding.
Add the crate README with the Bevy compatibility table, orient the
repository layout to the new member, add a developer's-guide
section for the harness crate boundary and the four testing traps
this task uncovered, and mark roadmap task 0.5.1.1 done.

The documentation gates (mdformat, markdownlint, nixie, diff check)
pass on the milestone tree.
Mark the documentation milestone done in the ExecPlan and add the
selected 0.19.1 graph's resolved crate counts (121 normal, 267
with dev) beside the historical 0.17.3 figures.
All six commit gates pass on the completed milestone tree; the
build-cost and build-tree measurements and the 0.5.1.2 inheritance
list are recorded in Outcomes & retrospective.
The Milestone 6 checklist is closed: the full gate sequence and
the CodeRabbit review are green, the measurements are recorded,
and the branch is ready for delivery through pull request #51.
Milestones 1-5 and the gate, measurement, and CodeRabbit parts of
Milestone 6 are done; the branch push to update PR #51 awaits
maintainer authorization for the force-with-lease push that the
plan-mandated rebase makes necessary.
Quote the "Plan: " prefix as prose instead of a code span, which
tripped markdownlint MD038 (spaces inside code span elements).
The remote update is blocked on maintainer authorization: the
force-with-lease push and the fast-forward-manufacturing merge
are both refused by the auto-mode classifier, so the ExecPlan
records the unblock paths and warns successors not to retry
equivalent mechanisms.
Preserve `main`'s dependency updates while resolving the rebased
Bevy `0.19.1` and `rstest-bdd` beta3 graph.

Record the repeated local gates and acceptance evidence in the
ExecPlan. Keep PR 51 pending until its merge state and remote CI are
green.
@leynos
leynos force-pushed the 0-5-1-1-add-rstest-bdd-harness-bevy-workspace-member branch from cef22a7 to 6b185ee Compare August 21, 2026 16:34
@leynos

leynos commented Aug 21, 2026

Copy link
Copy Markdown
Owner Author

@coderabbitai please assess the implementation in this PR for completeness and correctness against the execplan:

docs/execplans/0-5-1-1-add-rstest-bdd-harness-bevy-workspace-member.md

@coderabbitai

coderabbitai Bot commented Aug 21, 2026

Copy link
Copy Markdown

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

plan='docs/execplans/0-5-1-1-add-rstest-bdd-harness-bevy-workspace-member.md'

echo '=== PR state and checks ==='
gh pr view 51 --repo leynos/skyjoust \
  --json number,baseRefName,headRefName,mergeStateStatus,mergeable,statusCheckRollup \
  --jq '.'

echo '=== Changed files ==='
gh pr view 51 --repo leynos/skyjoust --json files \
  --jq '.files[] | "\(.path)\t+\(.additions) -\(.deletions)"'

echo '=== ExecPlan headings and normative/verification terms ==='
rg -n -i \
  '^(#{1,6} )|(^[[:space:]]*[-*] \[[ xX]\])|(\b(must|shall|required|acceptance|verification|validate|test plan|definition of done)\b)' \
  "$plan"

echo '=== ExecPlan implementation and acceptance sections ==='
rg -n -i -C 3 \
  '^(##|###) .*(implementation|detailed steps|validation|acceptance|test plan|verification|definition of done|quality)' \
  "$plan" || true

echo '=== Changed source, manifests, tests, and feature files ==='
git diff --find-renames --name-only main...HEAD -- \
  Cargo.toml Cargo.lock crates/rstest-bdd-harness-bevy docs \
  | sort

echo '=== Rust outlines ==='
fd -e rs . crates/rstest-bdd-harness-bevy -x ast-grep outline {} --items all || true

echo '=== Relevant file contents ==='
for f in Cargo.toml \
  crates/rstest-bdd-harness-bevy/Cargo.toml \
  crates/rstest-bdd-harness-bevy/src/lib.rs \
  crates/rstest-bdd-harness-bevy/src/profile.rs \
  crates/rstest-bdd-harness-bevy/src/profile_tests.rs \
  crates/rstest-bdd-harness-bevy/tests/headless_scenario.rs \
  crates/rstest-bdd-harness-bevy/tests/tick_properties.rs \
  crates/rstest-bdd-harness-bevy/tests/extraction_boundary.rs \
  crates/rstest-bdd-harness-bevy/tests/features/headless_scenario.feature \
  crates/rstest-bdd-harness-bevy/README.md \
  docs/adr/007-in-tree-incubation-of-the-bevy-bdd-harness-crate.md \
  docs/rstest-bdd-harness-bevy-design.md
do
  if [ -f "$f" ]; then
    echo "=== $f ==="
    cat -n "$f"
  fi
done

echo '=== Relevant diff ==='
git diff --find-renames main...HEAD -- \
  Cargo.toml Cargo.lock crates/rstest-bdd-harness-bevy docs/adr \
  docs/contents.md docs/developers-guide.md docs/repository-layout.md docs/roadmap.md \
  docs/rstest-bdd-harness-bevy-design.md

Length of output: 17242


🏁 Script executed:

#!/bin/bash
set -euo pipefail

plan='docs/execplans/0-5-1-1-add-rstest-bdd-harness-bevy-workspace-member.md'

echo '=== ExecPlan: constraints and implementation ==='
sed -n '82,132p;1057,1118p;1405,1528p;1727,2050p' "$plan"

echo '=== Current workspace and crate files ==='
for f in \
  Cargo.toml \
  crates/rstest-bdd-harness-bevy/Cargo.toml \
  crates/rstest-bdd-harness-bevy/src/lib.rs \
  crates/rstest-bdd-harness-bevy/src/profile.rs \
  crates/rstest-bdd-harness-bevy/src/profile_tests.rs \
  crates/rstest-bdd-harness-bevy/tests/headless_scenario.rs \
  crates/rstest-bdd-harness-bevy/tests/tick_properties.rs \
  crates/rstest-bdd-harness-bevy/tests/extraction_boundary.rs \
  crates/rstest-bdd-harness-bevy/tests/features/headless_scenario.feature \
  crates/rstest-bdd-harness-bevy/README.md \
  docs/adr/002-crate-layout-and-public-api.md \
  docs/adr/007-in-tree-incubation-of-the-bevy-bdd-harness-crate.md \
  docs/contents.md \
  docs/developers-guide.md \
  docs/repository-layout.md \
  docs/roadmap.md \
  docs/rstest-bdd-harness-bevy-design.md
do
  echo "=== $f ==="
  cat -n "$f"
done

echo '=== Relevant lockfile packages ==='
rg -n -A 10 -B 2 \
  'name = "(rstest-bdd-harness-bevy|bevy|rstest-bdd|rstest-bdd-harness|rstest-bdd-macros|skyjoust|lille)"' \
  Cargo.lock

echo '=== PR file patches from GitHub ==='
gh api repos/leynos/skyjoust/pulls/51/files --paginate \
  --jq '.[] | select(
    .filename == "Cargo.toml" or
    (.filename | startswith("crates/rstest-bdd-harness-bevy/")) or
    (.filename | startswith("docs/"))
  ) | "=== \(.filename) ===\n\(.patch // "(patch unavailable)")"'

echo '=== Successful CI workflow and job steps ==='
gh api repos/leynos/skyjoust/actions/runs/32503642034 --jq \
  '{name, event, head_sha, conclusion, status, workflow_id, path}'
gh api repos/leynos/skyjoust/actions/runs/32503642034/jobs --paginate --jq \
  '.jobs[] | {name, conclusion, started_at, completed_at, steps: [.steps[] | {name, conclusion, number}]}'

Length of output: 212711


@leynos, accept the static implementation as complete against the ExecPlan.

Confirmed

  • Add crates/rstest-bdd-harness-bevy as a workspace member.
  • Match the required manifest:
    • Bevy 0.19.1.
    • default-features = false.
    • features = ["std"].
    • Exact =0.6.0-beta3 pins for rstest-bdd, rstest-bdd-harness, and rstest-bdd-macros.
    • Implicit-caret requirements for stable dependencies.
    • Workspace lint inheritance.
  • Resolve Bevy to 0.19.1 and the inspected rstest-bdd family packages to 0.6.0-beta3 in Cargo.lock.
  • Re-export the specified rstest_bdd_harness contract types, bevy, tracing, add_minimal_plugins, and minimal_app.
  • Implement add_minimal_plugins and minimal_app with worked doctests. minimal_app has #[must_use].
  • Add five unit-test cases, one Gherkin scenario, one 32-case property test, four extraction-boundary tests, and two doctests.
  • Add the include_str! feature-file rebuild dependency.
  • Return StepResult from step functions. Propagate RefCell borrow errors. Do not use .expect() in the scenario binding.
  • Scope the direct manifest boundary guard to dependency tables. Preserve the permitted skyjoust-test-macros near-match.
  • Keep game-specific code out of the reusable crate.
  • Update ADR 002, ADR 007, the contents index, developer guide, repository layout, roadmap, harness design, and crate README.

Verification status

GitHub reports PR #51 as CLEAN and MERGEABLE.

The CI build-test job passed for commit 6b185eee6ee3d330585b08b2fa3d5a529754a536. It passed formatting, spelling, Markdown lint, lint, test execution, and coverage measurement.

Treat these checks as remaining non-independent evidence because this sandbox cannot execute repository code:

  • isolated and workspace dependency-graph checks;
  • isolated and workspace headless-graph checks;
  • feature-file freshness A/B check;
  • make check-state-graphs;
  • make nixie.

No static code or documentation defect blocks this PR.

You are interacting with an AI system.

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