Conversation
Contributor
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: trueComment |
Contributor
Reviewer's GuideThis PR adds a DRAFT-only ExecPlan for creating a commit-pinned inventory of model constructors, mutators, consumers, and compatibility obligations needed by roadmap phases 26 and 27. It specifies the inventory document, a compiler-assisted discovery methodology with targeted blind-spot sweeps, an rstest-based integrity contract, traceability and acceptance evidence, and an explicit decision over the RFC/ADR entry gate; it does not change production behavior. Sequence diagram for planned inventory site discoverysequenceDiagram
participant Implementer
participant Git
participant Scratch as Disposable export
participant Rustc
participant Sweep as Text sweep
participant Inventory
Implementer->>Git: git archive <pin>
Git-->>Scratch: Export pinned tree
Implementer->>Scratch: Add #[deprecated] markers
Scratch->>Rustc: cargo check --workspace --all-targets --all-features
Rustc-->>Implementer: Deprecated-use diagnostics
Implementer->>Sweep: Scan uncompiled and blind-spot code
Sweep-->>Implementer: Trait, cfg, derive, and doctest sites
Implementer->>Inventory: Classify and record register sites
Implementer->>Scratch: Remove disposable export
Flow diagram for inventory acceptance and entry gateflowchart TD
Start["ExecPlan approved"] --> Gate{"D-6 entry option chosen"}
Gate -->|"Option A: ADR-035 accepted"| Pin["Declare implementation pin"]
Gate -->|"Option B: characterize first"| Pin
Gate -->|"No decision"| Blocked["Set plan BLOCKED and stop"]
Pin --> ContractRed["Contract test fails without inventory"]
ContractRed --> Skeleton["Add skeleton inventory"]
Skeleton --> Register["Build register and run oracle/sweeps"]
Register --> Evidence["Record findings, obligations, and trace matrix"]
Evidence --> Gates["Run repository gates"]
Gates -->|"Pass"| Complete["Integrate docs and roadmap update"]
Gates -->|"Fail"| Repair["Repair or escalate"]
Repair --> Gates
File-Level Changes
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
Add revision 1 of the ExecPlan for roadmap item 26.1.1, which records a revision-pinned inventory of the model types, their production constructors and mutators, and their consumers before phases 26 and 27 of the hexagonal hardening roadmap change them. The draft is built from reconnaissance at `ebcedaef` across authored types, lowering, graph storage, backend consumers, CLI orchestration, diagnostics, and existing seams. It records that RFC 0026 and ADR-035 are still Proposed, and that a rule whose recipe names another rule reaches the Ninja backend. It is a planning document only; nothing is implemented. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
An expert design review of revision 1 returned "revise". Revision 2: - makes the compiler the primary site oracle, because the text sweeps missed generic trait impls, `Self::Variant` and tuple constructors, `&mut` free-function mutation in `src/manifest/render.rs`, and `retain` in the help query, and the seeded plants could not fail; - adds a document-integrity contract test that reads only `docs/`, with trace extraction limited to the matrix and the expected set drawn from the roadmap's dependency closure of 26.1.1; - replaces the RFC-status entry gate with an explicit choice for the approver (D-6), since no RFC here has ever left Proposed; - widens the inventoried item set and corrects the compatibility obligations (no JSON graph export, `preserve_order` hashing, exit codes, and the CHANGELOG practice for a crate published as `netsuke-build`). Plan only; nothing is implemented. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
A closing review of revision 2 found gaps that could still hide sites. Revision 3: - records that `#[deprecated]` cannot sit on trait implementations and that derive expansions and trait-dispatched calls never warn, and adds a dedicated sweep for trait-dispatched construction; - deprecates the `EdgeId` tuple struct itself, because a deprecated field does not flag `EdgeId(..)` calls; - sweeps every file, so Kani-only modules enabled from a parent's `#[cfg(kani)] mod` line are covered, and refuses an empty file list instead of silently searching the live tree; - adds seeded plants P10 to P12, an empty-pin negative fixture, and site-level register identifiers; - restricts task extraction to phase 26-29 identifiers and corrects the dependency-closure list; - records the load-bound local timeout of the packaging smoke test seen while gating, with CI as the authoritative check. Plan only; nothing is implemented. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
After rebasing onto `b0e8547f`, record the pertinent change from #804: the developers' guide now has an "Unstable Rust API for embedders" section. It states that every Rust API is private in intent and unstable, that the Netsukefile format and graph export are the only committed surfaces, and it documents, with tested `devguide-*` snippets, embedder entry points that phases 26 and 27 will change. Decision D-10 cites the section in obligations CO-4 and CO-13 (a change to a documented embedder API must update the section and its snippets), adds `manifest::from_str_with_env` and `manifest::process_env_reader` to the A1 register list, signposts it, and updates the crate version to `0.1.0-beta4`. Plan only; nothing is implemented. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
leynos
force-pushed
the
26-1-1-record-model-and-consumer-inventory
branch
from
September 26, 2026 23:37
28ec05c to
88b4511
Compare
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR adds the ExecPlan for roadmap item 26.1.1, "Record a revision-pinned
model and consumer inventory", from the
hexagonal hardening roadmap.
ExecPlan:
docs/execplans/26-1-1-record-model-and-consumer-inventory.mdIt is a plan only (
Status: DRAFT). Nothing in it is implemented, and itneeds approval before implementation starts.
What the plan delivers once implemented
docs/hexagonal-hardening-inventory.md: a reference document pinned to onecommit. It lists every production constructor, mutator and consumer of the
types that phases 26 and 27 will change, across seven areas: authored types,
lowering, graph storage, backend consumers, CLI orchestration, diagnostics,
and existing seams. It also records landed work (the
#652edge arena isrecorded as done, not scheduled again), the remaining parts of H1 to H4,
numbered observations, compatibility obligations, and a trace matrix
covering the roadmap's dependency closure of 26.1.1.
target/thatis never committed, each inventoried item is marked
#[deprecated], sorustcreports every resolved use. Text sweeps cover what the oracle cannotsee: trait-dispatched and derive-generated construction,
cfg(kani)andother-platform code, and doctests. Twelve seeded faults, applied blind, show
that the method can fail.
tests/hexagonal_inventory_contract_tests.rs: anrstestdocument-integritytest that reads only
docs/. It checks that the inventory has one pin,that register identifiers are unique, and that the trace matrix covers every
task depending on 26.1.1, so a
mapsplicerenumbering cannot silentlybreak the trace.
docs/contents.md, RFC 0026,docs/netsuke-design.md,and the developers' guide's test suite map, and the roadmap checkbox.
No production Rust source, manifest behaviour, CLI behaviour or generated
output changes.
How the plan was built
ebcedaef.alternatives and cost; failure modes and viability), with the verdict
"revise". Revision 2 replaced the regex-only sweep, which missed generic
trait impls,
Self::Variantconstructors and&mutfree-function mutation,with the compiler oracle. It also added the integrity test, replaced the
entry gate, widened the inventoried type set, and corrected several
compatibility obligations.
spots, sweeps Kani-only modules, guards against an empty sweep list,
prevents a vacuous empty-pin pass, and adds site-level identifiers.
Decision needed from the approver (D-6)
Roadmap 26.1.1 depends on "acceptance of RFC 0026". RFC 0026 and ADR-035 are
both still Proposed, and no RFC in
docs/rfcs/has ever left Proposed; ADRsare the documents this project accepts. Please choose one:
characterization RFC 0026 asks for, and tick the roadmap box only once
ADR-035 is Accepted.
Findings worth knowing now
These come from code reading at
ebcedaef. The plan records each one for itsowning task and fixes none of them.
rule: otherpasses lowering and validation. TheNinja backend then panics in debug builds and returns a misleading
UnsafeNinjaValuein release builds (26.1.2 and 26.2.2).netsuke graphandnetsuke help targetslower with the host-default recipeshell rather than the resolved one (26.3.1).
serde_jsonis built withpreserve_order, so field order is part of action identity (26.2.3).Validation
Each plan commit was gated with
make check-fmt,make typecheck,make lint,make test,make markdownlintandmake nixie.and
packaging_smoke_tests::packaged_manifest_retains_build_script_sourcestimed out at its 300 s cap while the host load average was 11 to 21 on six
cores. That test cold-builds
cargo publish --dry-runand fails locallyunder load, independent of the change; it passed on the same Rust tree in
the first run, and CI is the authoritative check for it.
make doctestand passed.mainhas since gained #804 (version0.1.0-beta4) and #728, neither ofwhich touches
src/or the inventoried types. The plan pins and rebases atEP-M0, so the branch was not rebased now.
References
https://lody.ai/leynos/sessions/87392da2-6f4c-47f5-8990-bf106b4279fe
🤖 Generated with Claude Code
Summary by Sourcery
Add a draft execution plan for producing and validating a revision-pinned model and consumer inventory before the hexagonal hardening changes are implemented.
New Features:
Enhancements:
Documentation:
Tests: