Conversation
Empty commit so the Spec can live on a draft PR that references #47. Issue comment and body edit returned 403 from this agent token. Co-authored-by: Tanveer Wahid <sephynox@users.noreply.github.com>
|
19 tasks
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.



Relates to #47.
This draft PR is a Spec vehicle only. It has an empty commit because this agent could not comment on or edit issue #47 (GitHub 403: issues write is not on the integration token). Do not merge. Close this PR after the Spec is copied onto issue #47.
TW Spec (2026-09-21)
Inventory from default branch
mainat65925dc(PR 45). There is nodeveloptrunk. There is nodocs/tree yet.Goal
Shaped in-repo documentation for
KeetaNetwork/node-rsso a new engineer can orient, build, and find cross-file invariants without Notion-only knowledge.Style matches the KeetaNetwork docs bar already used on KeetaNetwork/anchor PR 442 (layout), asset-movement-anchor-sdk PR 253 (inclusion test, page shape, register, STE prose), and testing-suite PR 21 (thin root README, GitHub line-linked examples, Mermaid keyword-safe ids, outside-contributor build notes when a private package gate applies).
The repository is a Cargo workspace of 14 members. The only markdown file is the root
README.md, which is a Makefile command dump and is not a thin pointer into docs.Tree layout (MUST)
README.mddocs/README.mddocs/STANDARD.mddocs/ARCHITECTURE.mddocs/QUICKSTART.mddocs/concepts/*Do not add per-crate
README.mdbarrel maps. Crate identity lives in eachCargo.tomldescriptionplus rustdoc on that cratelib.rs.Inclusion test (MUST)
A page earns cost only if it holds at least one of: cross-file invariant, rejected alternative, consumer/operator contract, or operator procedure under pressure.
MUST NOT be barrel maps, field tables that only echo rustdoc, or ticket/phase diaries.
First-pass concept candidates (pass on current
main)Write these only if the page still holds a non-rustdoc invariant after the Architecture draft. Drop any candidate that collapses to a field list.
docs/concepts/features-and-no-std.mdstd/alloc/der/rasngates.keetanetwork-asn1compile_error!requires at least one ofderorrasn.keetanetwork-clienthttprequires a runtime (stdon native,wasmonwasm32-unknown-unknown).docs/concepts/accounts.mdkeetanetwork-accountidentities (Account,GenericAccount,KeyPairType, identifier accounts) are consumed by block, vote, x509, client, and bindings.docs/concepts/blocks.mdBlock/BlockBuilder/Operation/AccountRefsigning and opening-hash rules spankeetanetwork-blockand the client builder.docs/concepts/votes.mdVoteversusVoteQuoteversusVoteStaple/PossiblyExpiredVoterules live inkeetanetwork-voteand are re-exported by the client.docs/concepts/certificates.mdkeetanetwork-x509plus accountCertSigner/CertVerifierplus vote certificate shape.docs/concepts/client.mdKeetaClient/UserClient/TransactionBuilder. HTTP transport is generated at build time fromkeetanetwork-client/openapi/keetanet-node.yamlvia progenitor and exposed asgenerated.docs/concepts/bindings.mdkeetanetwork-bindingsis the shared projection.keetanetwork-client-wasmis the browser ABI (amounts as decimal strings, errors witherror.code).keetanetwork-client-wasiselects exactly one ofp1orp2per WASI build.Pages that fail the inclusion test (MUST NOT add)
Cargo.tomlandpub use.Account,Block,Vote, or OpenAPI types that rustdoc already carries.keetanetwork-node/src/lib.rsandkeetanetwork-ledger/src/lib.rsare three-line crate docs with no types. Name them as stubs on Architecture.Page shape (MUST for every shaped
docs/**page)Title, Abstract, Purpose, Body, Falsified by — in that order.
One register per page.
docs/concepts/*Root
README.mdis not a shaped docs page. It stays a thin pointer in plain English. It MUST NOT redeclare Requirements Language.docs/STANDARD.mdis a shaped page. It MUST NOT include a page-index TOC.Comments (MUST when touching rustdoc)
///rustdoc that adds signal the signature cannot carry. No narration. No historical asides. No negative happy-path comments. STE sentence rules including no semicolon-joined independent clauses.Crate rustdoc today is uneven.
keetanetwork-vote#![deny(missing_docs)]plus a rustdoc examplekeetanetwork-clientno_stdcontract, rustdoc example forKeetaClientkeetanetwork-blockBlockBuilderkeetanetwork-client-wasmkeetanetwork-client-wasip1/p2feature contractkeetanetwork-asn1derorrasn" sentence is stale against thecompile_error!that requires at least onekeetanetwork-account,keetanetwork-crypto,keetanetwork-x509keetanetwork-node,keetanetwork-ledgerPublic surfaces that already have rustdoc examples MUST keep a short snippet and add GitHub line links into tests where a test is the fuller cookbook.
mainKeetaClient/UserClientkeetanetwork-client/src/lib.rsrustdoc. Tests:keetanetwork-client/tests/e2e.rs,keetanetwork-client/tests/user_signing.rsBlockBuilderkeetanetwork-block/src/lib.rsrustdoc. Tests:keetanetwork-block/tests/e2e.rs,keetanetwork-block/tests/typescript_compat.rsVoteBuilder/VoteStaplekeetanetwork-vote/src/lib.rsrustdoc. Tests:keetanetwork-vote/tests/e2e_node.rs,keetanetwork-vote/tests/typescript_compat.rs,keetanetwork-vote/tests/wire_corruption.rskeetanetwork-account/tests/account_creation.rs,seed_derivation.rs,identifier_accounts.rs,signatures.rskeetanetwork-x509/tests/builders.rs,bundles.rs,validation.rskeetanetwork-client-wasm/src/lib.rsrustdoc. Playwright:keetanetwork-client-wasm/tests/roundtrip.spec.ts,fee.spec.tskeetanetwork-client-wasi/src/lib.rs. Host tests underkeetanetwork-client-wasi/host-tests/tests/There is no
examples/directory. Do not invent one in this pass.Mermaid (MUST if used)
Never use bare node or participant ids that are Mermaid keywords (
graph,end,subgraph, and the rest of the reserved set).Architecture MAY use one crate-boundary diagram. Prefer ids such as
crate_accountandcrate_client. Never use a bare idgraph.Scope IN
keetanet-nodestyle). Verified onmain:.cargo/config.tomlsets awasm32-unknown-unknowngetrandomcfg. It does not set a private Cargo registry.keetanetwork-utils/node-harness/.npmrcsets@keetanetwork:registry=https://npm.pkg.github.com.keetanetwork-utils/node-harness/package.jsondepends on@keetanetwork/keetanet-node0.18.2and@keetanetwork/eslint-config-typescript1.4.7..github/workflows/ci.ymlsetsregistry-url: https://npm.pkg.github.com,scope: '@keetanetwork', andNODE_AUTH_TOKENformake node-harness,make test-all,make test-wasm,make test-wasi, lint, and coverage.make testdepends onnode-harness. A contributor without GitHub Packages read can stillcargo check/cargo buildand run crate tests that do not enable thenode-harnessfeature.make releaseas a release build.Makefileon tip usesmake build release=1for a release build.make releaserunsscripts/release.shand publishes to crates.io. Quickstart MUST state the Makefile truth.rust-toolchain.toml: channel1.94.0, componentsrustfmt,clippy,llvm-tools-preview, targetswasm32-unknown-unknown,wasm32-wasip1,wasm32-wasip2.KeetaClientagainsthttp://localhost:8080/api, citing the existing rustdoc examples.Scope OUT
docs/add_pat_instructionsas the delivery. That branch is 1 commit ahead and 132 behindmain. It only patches rootREADME.mdwith PAT notes and still documentsmake releaseas a release build. Absorb the PAT fact into Quickstart on a fresh docs-only PR from currentmain.LICENSE,Cargo.tomllicense, or publish scriptskeetanetwork-nodeorkeetanetwork-ledgerwith product typesAcceptance criteria
Makefile/rust-toolchain.toml:1.94.0viarust-toolchain.tomlmake developermake buildorcargo buildmake build release=1(notmake release)make checkorcargo checkmake test(cargo test --all-features --workspaceaftermake node-harness)make test-featmake test-allmake build-wasm/make test-wasmmake build-wasi/make test-wasimake do-docs/make do-docs-cimake releaseis a release buildDelivery
Docs-only PR against
main(default branch and working trunk). Technical Writer owns the pass. Engineer commits if git write is gated.PR body MUST include the self-check table used on anchor PR 442:
docs/**page has Title, Abstract, Purpose, Body, Falsified by, in that order. Root README stays a thin pointerdocs/STANDARD.md. No per-page repeat. Root README uses plain Englishdocs/STANDARD.mdwith no TOC. Overview isdocs/README.md. Architecture isdocs/ARCHITECTURE.mdOPEN questions
Repo-specific items discovered on
mainat65925dc. TW or Engineer answers these during the pass. Do not block the tree on them.keetanetwork-nodeandkeetanetwork-ledgeras empty stubs and does not invent node-runtime behavior.main.LICENSEis Keeta Token Network Community License (v1.0). WorkspaceCargo.tomllicenseisMIT.keetanetwork-utils/node-harness/package.jsonlicenseisKeeta Token Network Community License. Overview MUST cite what the files say. It MUST NOT reconcile them in this docs-only pass.[workspace.package] versionis0.3.0. Member crate versions on tip range from0.2.1(error,utils,ledger,node) to0.6.1(keetanetwork-client-wasi). Cite per-crateCargo.tomlversions. Do not cite the unused workspace package version as the repo version.make release/scripts/release.shcrates.io publish as an operator note, or leave publish undocumented until a later ask?docs/add_pat_instructions(commit520f743, 2026-06-19) is stale. Confirm it is not the delivery branch.make developerinvokesscripts/rustup-init.sh -y --default-toolchain stablewhen rustc is missing.rust-toolchain.tomlthen pins1.94.0for this repo. Quickstart MUST tell the reader the pin wins after clone.keetanetwork-votedeniesmissing_docs. How far does this rustdoc pass go onaccount,crypto, andx509public items? Default: only items the shaped pages name.make test-wasm) and WASI host tests (make test-wasi) need the harness plus extra toolchains (wasm-pack, Playwright, JDK 17 / Maven for Java bindings). Are those first-use Quickstart steps or a later Operations note? Default: name the Make targets and the PAT gate. Do not write a Java binding tutorial unless a later ask adds it.