Skip to content

Conversation

@tomusdrw
Copy link
Contributor

  • Make examples more future proof.
  • Add examples, update to 0.7.2

@netlify
Copy link

netlify bot commented Dec 30, 2025

Deploy Preview for fluffy-codec ready!

Name Link
🔨 Latest commit 4b6b1c6
🔍 Latest deploy log https://app.netlify.com/projects/fluffy-codec/deploys/6953e697e0d5e700083f913e
😎 Deploy Preview https://deploy-preview-68--fluffy-codec.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Dec 30, 2025

Important

Review skipped

Auto incremental reviews are disabled on this repository.

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.

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

📝 Walkthrough

Walkthrough

The PR upgrades the @typeberry/lib dependency and introduces a descriptor-based encoding model with strongly-typed KindName. It replaces plain-string kind parameters with a typed KindDescriptor interface, updates encoding/decoding to use descriptor methods, consolidates test mocks to use actual module imports, and adds extensive example data across primitives, objects, and state types for testing and UI demonstration.

Changes

Cohort / File(s) Summary
Version & Dependency Updates
index.html, package.json
Updated GP_VERSION from 0.7.1 to 0.7.2; bumped @typeberry/lib from ^0.4.0 to ^0.5.1-1dda9d6.
Type System Refactoring
src/components/constants.ts, src/components/CodecInput.tsx, src/components/Controls.tsx, src/components/JamObjectSelect.tsx, src/components/KindFinder.tsx
Introduced new public types KindName and KindDescriptor with encode/decode methods. Changed public prop signatures from (name: string) to (name: KindName) across multiple component props. Updated kind loop iteration to use descriptor-based pattern.
Test Mock Refactoring
src/components/CodecInput.test.tsx, src/components/KindFinder.test.tsx, src/components/SettingsDialog.test.tsx, src/pages/Codec.test.tsx
Replaced static @typeberry/lib mocks with async factories using vi.importActual to return the actual module at runtime.
Example Data - Primitives & Helpers
src/components/examples/objects/helpers.ts, src/components/examples/primitives/data.ts, src/components/examples/primitives/numerics.ts, src/components/examples/types.ts
Added helper functions for test data construction (bytesBlobFrom, filledHash, ed25519Key, serviceGas, etc.), primitive examples (bytes32Example, bitVecExample), and numeric examples (u8, u16, u32, u64).
Example Data - Block Objects
src/components/examples/objects/block.ts, src/components/examples/objects/header.ts, src/components/examples/objects/extrinsic.ts, src/components/examples/objects/epochMarker.ts, src/components/examples/objects/availabilityAssurance.ts, src/components/examples/objects/assurancesExtrinsic.ts
Created example instances for core block-related types (Header, Block, Extrinsic, EpochMarker, AvailabilityAssurance). Added both object and encoded (TEST_BLOCK, TEST_HEADER) exports.
Example Data - Ticket & Guarantee Objects
src/components/examples/objects/ticket.ts, src/components/examples/objects/signedTicket.ts, src/components/examples/objects/ticketExtrinsic.ts, src/components/examples/objects/reportGuarantee.ts, src/components/examples/objects/guaranteesExtrinsic.ts, src/components/examples/objects/credential.ts
Constructed examples for ticket and guarantee-related objects with proper type and validator/service context.
Example Data - Dispute Objects
src/components/examples/objects/culprit.ts, src/components/examples/objects/fault.ts, src/components/examples/objects/judgement.ts, src/components/examples/objects/verdict.ts, src/components/examples/objects/disputesExtrinsic.ts
Built examples for dispute-related types (Culprit, Fault, Judgement, Verdict, DisputesExtrinsic) with deterministic test data.
Example Data - Work & Refine Objects
src/components/examples/objects/workItem.ts, src/components/examples/objects/workPackage.ts, src/components/examples/objects/workResult.ts, src/components/examples/objects/workExecResult.ts, src/components/examples/objects/workReport.ts, src/components/examples/objects/workItemExtrinsicSpec.ts, src/components/examples/objects/workPackageSpec.ts, src/components/examples/objects/refineContext.ts, src/components/examples/objects/importSpec.ts, src/components/examples/objects/preimage.ts, src/components/examples/objects/preimageExtrinsic.ts
Created comprehensive examples for work-related and refine context objects with full field initialization.
Example Data - State
src/components/examples/state/common.ts, src/components/examples/state/authPools.ts, src/components/examples/state/authQueues.ts, src/components/examples/state/recentBlocks.ts, src/components/examples/state/safroleData.ts, src/components/examples/state/entropy.ts, src/components/examples/state/availabilityAssignment.ts, src/components/examples/state/timeslot.ts, src/components/examples/state/disputesRecords.ts, src/components/examples/state/accumulationQueue.ts, src/components/examples/state/accumulationOutputLog.ts, src/components/examples/state/lookupHistoryItem.ts, src/components/examples/state/privilegedServices.ts, src/components/examples/state/recentlyAccumulated.ts, src/components/examples/state/designatedValidators.ts, src/components/examples/state/currentValidators.ts, src/components/examples/state/previousValidators.ts, src/components/examples/state/validatorSets.ts, src/components/examples/state/serviceAccount.ts, src/components/examples/state/statistics.ts
Added state-related examples covering validator sets, auth structures, disputes, safrole data, and service account information with helper factories.
Example Data - STF
src/components/examples/stf/genesis.ts, src/components/examples/stf/transition.ts
Created state transition examples (genesis and vector) for STF testing.
Example Data - Host
src/components/examples/host/infoAccount.ts
Added host call info account example with service account fields.
Removed Examples
src/components/examples/block.ts, src/components/examples/header.ts
Removed exported TEST_BLOCK and TEST_HEADER constants (now in examples/objects/ variants).
Encoding/Decoding Refactor
src/pages/Codec.tsx
Replaced codec.Encoder.encodeObject and codec.Decoder.decodeObject with kindDescriptor.encode and kindDescriptor.decode. Updated type annotations for KindName and KindExampleValue.
UI Control Simplification
src/components/Controls.tsx
Consolidated separate example buttons into single parametric "Example {kind}" button. Replaced TEST_BLOCK/TEST_HEADER dependencies with unified loadExample function using descriptor.encode.
Constants Integration
src/components/constants.ts
Expanded kinds array to KindDescriptor type with encode/decode methods and example values for all kinds. Added new exports for KindName, KindExampleValue, and KindDescriptor.
Test Coverage
src/test/examples.test.ts
New test file iterating over all kinds/specs to verify examples exist, parse correctly, and encode/decode without errors.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Pre-merge checks and finishing touches

❌ Failed checks (1 warning, 1 inconclusive)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
Title check ❓ Inconclusive The title is vague and generic, using non-descriptive language ('Examples & updates') that doesn't clearly convey the main objectives of the changeset. Consider a more specific title that highlights the primary changes, such as 'Add comprehensive examples and update to version 0.7.2' or 'Introduce KindDescriptor-based examples and refactor type safety'.
✅ Passed checks (1 passed)
Check name Status Explanation
Description check ✅ Passed The description is related to the changeset, referencing example creation and version updates, though it lacks specific detail about the scope and magnitude of changes.

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

@tomusdrw tomusdrw marked this pull request as ready for review December 30, 2025 12:42
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 5

🧹 Nitpick comments (6)
src/components/examples/state/currentValidators.ts (1)

3-3: Consider more specific type annotation.

The object type is quite generic. Since createValidatorDataSet returns block.PerValidator<state.ValidatorData> (based on the snippet from validatorSets.ts), using that type would provide better type safety and developer experience.

🔎 Proposed fix
+import type { block, state } from "@typeberry/lib";
 import { createValidatorDataSet } from "./validatorSets";

-export const currentValidatorsExample: object = createValidatorDataSet(20);
+export const currentValidatorsExample: block.PerValidator<state.ValidatorData> = createValidatorDataSet(20);
src/components/examples/state/availabilityAssignment.ts (1)

7-7: Consider removing redundant intermediate variable.

The workReportValue constant is assigned workReportExample but used only once. You can use workReportExample directly on line 12.

🔎 Proposed simplification
-const workReportValue = workReportExample;
-
 export const availabilityAssignmentExample: object = state.tryAsPerCore(
   [
     state.AvailabilityAssignment.create({
-      workReport: workReportValue,
+      workReport: workReportExample,
       timeout: timeSlot(64),
     }),
src/components/examples/objects/workResult.ts (1)

14-21: Consider using the filledHash helper for consistency.

Line 17 uses bytes.Bytes.fill(32, 3) directly for payloadHash, while codeHash on line 16 uses the filledHash(41) helper. Both approaches work, but using the helper consistently improves readability.

🔎 Proposed refactor for consistency
 const workResultExample: ClassInstance<typeof block.workResult.WorkResult> = block.workResult.WorkResult.create({
   serviceId: serviceId(10),
   codeHash: filledHash(41),
-  payloadHash: bytes.Bytes.fill(32, 3),
+  payloadHash: filledHash(3),
   gas: serviceGas(1_000n),
   result: workExecResultExample,
   load: loadExample,
 });
src/components/examples/objects/workReport.ts (1)

8-8: Consider removing the redundant alias.

workPackageSpec is just an alias for workPackageSpecExample without any transformation. Using workPackageSpecExample directly would be clearer.

🔎 Proposed fix
-const workPackageSpec = workPackageSpecExample;
 const segmentInfo = block.refineContext.WorkPackageInfo.create({
-  workPackageHash: workPackageSpec.hash,
-  segmentTreeRoot: workPackageSpec.exportsRoot,
+  workPackageHash: workPackageSpecExample.hash,
+  segmentTreeRoot: workPackageSpecExample.exportsRoot,
 });

 const workReportExample: ClassInstance<typeof block.workReport.WorkReport> = block.workReport.WorkReport.create({
-  workPackageSpec,
+  workPackageSpec: workPackageSpecExample,
   context: refineContextExample,
src/components/examples/objects/extrinsic.ts (1)

10-14: Consider inlining the example references.

These local constants are simple aliases without transformation. Using the imported names directly in Extrinsic.create would reduce indirection.

🔎 Proposed fix
-const tickets = signedTicketExample;
-const preimage = preimageExample;
-const reportGuarantee = reportGuaranteeExample;
-const assurance = availabilityAssuranceExample;
-const disputes = disputesExtrinsicExample;
-
 export const extrinsicExample: ClassInstance<typeof block.Extrinsic> = block.Extrinsic.create({
-  tickets: asKnownSize([tickets]),
-  preimages: [preimage],
-  guarantees: asKnownSize([reportGuarantee]),
-  assurances: asKnownSize([assurance]),
-  disputes,
+  tickets: asKnownSize([signedTicketExample]),
+  preimages: [preimageExample],
+  guarantees: asKnownSize([reportGuaranteeExample]),
+  assurances: asKnownSize([availabilityAssuranceExample]),
+  disputes: disputesExtrinsicExample,
 });
src/components/constants.ts (1)

73-96: Type assertions use never to bypass strict typing - consider documenting.

The as never and as codec.Encode<never> casts are necessary to unify heterogeneous codec types into a single interface. While this works, a brief comment explaining why these casts are safe would help future maintainers understand this design choice.

🔎 Suggested documentation
+// Type-erased wrappers to unify heterogeneous codec types into a single KindDescriptor interface.
+// The casts are safe because encode/decode are only called with values that match their respective kinds.
 const encodeWithContext = codec.Encoder.encodeObject as (
   encode: codec.Encode<never>,
   value: never,
   context?: config.ChainSpec,
 ) => bytes.BytesBlob;
📜 Review details

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 2931693 and 2fded8e.

⛔ Files ignored due to path filters (1)
  • package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (71)
  • index.html
  • package.json
  • src/components/CodecInput.test.tsx
  • src/components/CodecInput.tsx
  • src/components/Controls.tsx
  • src/components/JamObjectSelect.tsx
  • src/components/KindFinder.test.tsx
  • src/components/KindFinder.tsx
  • src/components/SettingsDialog.test.tsx
  • src/components/constants.ts
  • src/components/examples/block.ts
  • src/components/examples/header.ts
  • src/components/examples/host/infoAccount.ts
  • src/components/examples/objects/assurancesExtrinsic.ts
  • src/components/examples/objects/availabilityAssurance.ts
  • src/components/examples/objects/block.ts
  • src/components/examples/objects/credential.ts
  • src/components/examples/objects/culprit.ts
  • src/components/examples/objects/disputesExtrinsic.ts
  • src/components/examples/objects/epochMarker.ts
  • src/components/examples/objects/extrinsic.ts
  • src/components/examples/objects/fault.ts
  • src/components/examples/objects/guaranteesExtrinsic.ts
  • src/components/examples/objects/header.ts
  • src/components/examples/objects/helpers.ts
  • src/components/examples/objects/importSpec.ts
  • src/components/examples/objects/judgement.ts
  • src/components/examples/objects/preimage.ts
  • src/components/examples/objects/preimageExtrinsic.ts
  • src/components/examples/objects/refineContext.ts
  • src/components/examples/objects/reportGuarantee.ts
  • src/components/examples/objects/signedTicket.ts
  • src/components/examples/objects/ticket.ts
  • src/components/examples/objects/ticketExtrinsic.ts
  • src/components/examples/objects/validatorKeys.ts
  • src/components/examples/objects/verdict.ts
  • src/components/examples/objects/workExecResult.ts
  • src/components/examples/objects/workItem.ts
  • src/components/examples/objects/workItemExtrinsicSpec.ts
  • src/components/examples/objects/workPackage.ts
  • src/components/examples/objects/workPackageSpec.ts
  • src/components/examples/objects/workReport.ts
  • src/components/examples/objects/workResult.ts
  • src/components/examples/primitives/data.ts
  • src/components/examples/primitives/numerics.ts
  • src/components/examples/state/accumulationOutputLog.ts
  • src/components/examples/state/accumulationQueue.ts
  • src/components/examples/state/authPools.ts
  • src/components/examples/state/authQueues.ts
  • src/components/examples/state/availabilityAssignment.ts
  • src/components/examples/state/common.ts
  • src/components/examples/state/currentValidators.ts
  • src/components/examples/state/designatedValidators.ts
  • src/components/examples/state/disputesRecords.ts
  • src/components/examples/state/entropy.ts
  • src/components/examples/state/lookupHistoryItem.ts
  • src/components/examples/state/previousValidators.ts
  • src/components/examples/state/privilegedServices.ts
  • src/components/examples/state/recentBlocks.ts
  • src/components/examples/state/recentlyAccumulated.ts
  • src/components/examples/state/safroleData.ts
  • src/components/examples/state/serviceAccount.ts
  • src/components/examples/state/statistics.ts
  • src/components/examples/state/timeslot.ts
  • src/components/examples/state/validatorSets.ts
  • src/components/examples/stf/genesis.ts
  • src/components/examples/stf/transition.ts
  • src/components/examples/types.ts
  • src/pages/Codec.test.tsx
  • src/pages/Codec.tsx
  • src/test/examples.test.ts
💤 Files with no reviewable changes (2)
  • src/components/examples/header.ts
  • src/components/examples/block.ts
🧰 Additional context used
📓 Path-based instructions (6)
src/components/**/*.{ts,tsx}

📄 CodeRabbit inference engine (AGENTS.md)

src/components/**/*.{ts,tsx}: Shared building blocks (components) sit in src/components
Use PascalCase for component names

Files:

  • src/components/examples/objects/validatorKeys.ts
  • src/components/CodecInput.tsx
  • src/components/examples/objects/judgement.ts
  • src/components/examples/objects/reportGuarantee.ts
  • src/components/examples/objects/ticket.ts
  • src/components/examples/objects/guaranteesExtrinsic.ts
  • src/components/examples/objects/workItem.ts
  • src/components/examples/state/previousValidators.ts
  • src/components/examples/objects/preimageExtrinsic.ts
  • src/components/examples/objects/availabilityAssurance.ts
  • src/components/examples/state/currentValidators.ts
  • src/components/examples/objects/workPackage.ts
  • src/components/examples/state/timeslot.ts
  • src/components/examples/state/privilegedServices.ts
  • src/components/examples/state/entropy.ts
  • src/components/examples/objects/assurancesExtrinsic.ts
  • src/components/examples/state/designatedValidators.ts
  • src/components/examples/state/statistics.ts
  • src/components/examples/state/common.ts
  • src/components/examples/objects/workResult.ts
  • src/components/examples/objects/workPackageSpec.ts
  • src/components/examples/state/disputesRecords.ts
  • src/components/examples/objects/disputesExtrinsic.ts
  • src/components/examples/state/recentBlocks.ts
  • src/components/examples/types.ts
  • src/components/examples/objects/workItemExtrinsicSpec.ts
  • src/components/examples/objects/refineContext.ts
  • src/components/examples/stf/genesis.ts
  • src/components/examples/state/validatorSets.ts
  • src/components/examples/objects/header.ts
  • src/components/examples/state/safroleData.ts
  • src/components/examples/objects/verdict.ts
  • src/components/examples/state/lookupHistoryItem.ts
  • src/components/examples/objects/credential.ts
  • src/components/examples/objects/epochMarker.ts
  • src/components/examples/state/recentlyAccumulated.ts
  • src/components/examples/state/accumulationOutputLog.ts
  • src/components/examples/objects/workExecResult.ts
  • src/components/examples/state/authPools.ts
  • src/components/examples/objects/culprit.ts
  • src/components/examples/objects/importSpec.ts
  • src/components/examples/objects/workReport.ts
  • src/components/examples/objects/signedTicket.ts
  • src/components/examples/state/accumulationQueue.ts
  • src/components/examples/primitives/numerics.ts
  • src/components/examples/state/availabilityAssignment.ts
  • src/components/Controls.tsx
  • src/components/examples/objects/block.ts
  • src/components/examples/objects/fault.ts
  • src/components/examples/stf/transition.ts
  • src/components/examples/objects/ticketExtrinsic.ts
  • src/components/examples/primitives/data.ts
  • src/components/examples/objects/extrinsic.ts
  • src/components/examples/state/authQueues.ts
  • src/components/KindFinder.tsx
  • src/components/KindFinder.test.tsx
  • src/components/examples/host/infoAccount.ts
  • src/components/CodecInput.test.tsx
  • src/components/examples/state/serviceAccount.ts
  • src/components/examples/objects/preimage.ts
  • src/components/SettingsDialog.test.tsx
  • src/components/JamObjectSelect.tsx
  • src/components/examples/objects/helpers.ts
  • src/components/constants.ts
**/*.{ts,tsx}

📄 CodeRabbit inference engine (AGENTS.md)

**/*.{ts,tsx}: Maintain 2-space indentation for TypeScript and React code
Run Biome (npm run qa) before submit to ensure formatting, lint, and static checks stay consistent
TypeScript-first with ES modules and React 19 functional components

Files:

  • src/components/examples/objects/validatorKeys.ts
  • src/components/CodecInput.tsx
  • src/components/examples/objects/judgement.ts
  • src/components/examples/objects/reportGuarantee.ts
  • src/components/examples/objects/ticket.ts
  • src/components/examples/objects/guaranteesExtrinsic.ts
  • src/pages/Codec.test.tsx
  • src/components/examples/objects/workItem.ts
  • src/components/examples/state/previousValidators.ts
  • src/components/examples/objects/preimageExtrinsic.ts
  • src/components/examples/objects/availabilityAssurance.ts
  • src/components/examples/state/currentValidators.ts
  • src/components/examples/objects/workPackage.ts
  • src/components/examples/state/timeslot.ts
  • src/components/examples/state/privilegedServices.ts
  • src/components/examples/state/entropy.ts
  • src/components/examples/objects/assurancesExtrinsic.ts
  • src/components/examples/state/designatedValidators.ts
  • src/components/examples/state/statistics.ts
  • src/components/examples/state/common.ts
  • src/components/examples/objects/workResult.ts
  • src/components/examples/objects/workPackageSpec.ts
  • src/components/examples/state/disputesRecords.ts
  • src/components/examples/objects/disputesExtrinsic.ts
  • src/components/examples/state/recentBlocks.ts
  • src/components/examples/types.ts
  • src/components/examples/objects/workItemExtrinsicSpec.ts
  • src/components/examples/objects/refineContext.ts
  • src/components/examples/stf/genesis.ts
  • src/components/examples/state/validatorSets.ts
  • src/components/examples/objects/header.ts
  • src/components/examples/state/safroleData.ts
  • src/components/examples/objects/verdict.ts
  • src/components/examples/state/lookupHistoryItem.ts
  • src/components/examples/objects/credential.ts
  • src/components/examples/objects/epochMarker.ts
  • src/components/examples/state/recentlyAccumulated.ts
  • src/components/examples/state/accumulationOutputLog.ts
  • src/components/examples/objects/workExecResult.ts
  • src/components/examples/state/authPools.ts
  • src/components/examples/objects/culprit.ts
  • src/components/examples/objects/importSpec.ts
  • src/components/examples/objects/workReport.ts
  • src/components/examples/objects/signedTicket.ts
  • src/components/examples/state/accumulationQueue.ts
  • src/components/examples/primitives/numerics.ts
  • src/components/examples/state/availabilityAssignment.ts
  • src/components/Controls.tsx
  • src/components/examples/objects/block.ts
  • src/components/examples/objects/fault.ts
  • src/components/examples/stf/transition.ts
  • src/components/examples/objects/ticketExtrinsic.ts
  • src/components/examples/primitives/data.ts
  • src/pages/Codec.tsx
  • src/components/examples/objects/extrinsic.ts
  • src/components/examples/state/authQueues.ts
  • src/components/KindFinder.tsx
  • src/components/KindFinder.test.tsx
  • src/components/examples/host/infoAccount.ts
  • src/components/CodecInput.test.tsx
  • src/components/examples/state/serviceAccount.ts
  • src/components/examples/objects/preimage.ts
  • src/components/SettingsDialog.test.tsx
  • src/components/JamObjectSelect.tsx
  • src/components/examples/objects/helpers.ts
  • src/test/examples.test.ts
  • src/components/constants.ts
src/{components,pages}/**/*.tsx

📄 CodeRabbit inference engine (AGENTS.md)

src/{components,pages}/**/*.tsx: Keep files JSX/TSX-only when they render UI; avoid mixing TypeScript logic with JSX
Use Tailwind 4 utility classes for styling; avoid ad-hoc CSS unless it belongs in src/index.css

Files:

  • src/components/CodecInput.tsx
  • src/pages/Codec.test.tsx
  • src/components/Controls.tsx
  • src/pages/Codec.tsx
  • src/components/KindFinder.tsx
  • src/components/KindFinder.test.tsx
  • src/components/CodecInput.test.tsx
  • src/components/SettingsDialog.test.tsx
  • src/components/JamObjectSelect.tsx
src/pages/**/*.{ts,tsx}

📄 CodeRabbit inference engine (AGENTS.md)

Routed views belong in src/pages

Files:

  • src/pages/Codec.test.tsx
  • src/pages/Codec.tsx
**/*.test.{ts,tsx}

📄 CodeRabbit inference engine (AGENTS.md)

**/*.test.{ts,tsx}: Co-locate spec files under src/test or beside the implementation as *.test.ts(x) when it improves readability
Write descriptive describe blocks and prefer explicit user-centric assertions (screen.getByRole) in Vitest tests

Files:

  • src/pages/Codec.test.tsx
  • src/components/KindFinder.test.tsx
  • src/components/CodecInput.test.tsx
  • src/components/SettingsDialog.test.tsx
  • src/test/examples.test.ts
src/test/**/*.{ts,tsx}

📄 CodeRabbit inference engine (AGENTS.md)

Integration-style tests live under src/test

Files:

  • src/test/examples.test.ts
🧠 Learnings (5)
📚 Learning: 2025-12-02T12:53:18.021Z
Learnt from: CR
Repo: FluffyLabs/codec PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-02T12:53:18.021Z
Learning: Applies to **/*.test.{ts,tsx} : Write descriptive `describe` blocks and prefer explicit user-centric assertions (`screen.getByRole`) in Vitest tests

Applied to files:

  • src/pages/Codec.test.tsx
  • src/components/SettingsDialog.test.tsx
  • src/test/examples.test.ts
📚 Learning: 2025-12-02T12:53:18.021Z
Learnt from: CR
Repo: FluffyLabs/codec PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-02T12:53:18.021Z
Learning: Applies to **/*.{ts,tsx} : TypeScript-first with ES modules and React 19 functional components

Applied to files:

  • src/components/examples/state/common.ts
  • src/components/examples/stf/genesis.ts
  • src/pages/Codec.tsx
  • src/components/CodecInput.test.tsx
📚 Learning: 2025-12-02T12:53:18.021Z
Learnt from: CR
Repo: FluffyLabs/codec PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-02T12:53:18.021Z
Learning: Applies to src/test/**/*.{ts,tsx} : Integration-style tests live under `src/test`

Applied to files:

  • src/components/CodecInput.test.tsx
  • src/components/SettingsDialog.test.tsx
  • src/test/examples.test.ts
📚 Learning: 2025-12-02T12:53:18.021Z
Learnt from: CR
Repo: FluffyLabs/codec PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-02T12:53:18.021Z
Learning: Applies to src/utils/**/*.{ts,tsx} : Helper functions sit in `src/utils`

Applied to files:

  • src/components/examples/objects/helpers.ts
📚 Learning: 2025-12-02T12:53:18.021Z
Learnt from: CR
Repo: FluffyLabs/codec PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-02T12:53:18.021Z
Learning: Applies to **/*.test.{ts,tsx} : Co-locate spec files under `src/test` or beside the implementation as `*.test.ts(x)` when it improves readability

Applied to files:

  • src/test/examples.test.ts
🧬 Code graph analysis (57)
src/components/examples/objects/validatorKeys.ts (2)
src/components/examples/types.ts (1)
  • ClassInstance (1-1)
src/components/examples/objects/helpers.ts (2)
  • bandersnatchKey (17-17)
  • ed25519Key (14-14)
src/components/CodecInput.tsx (1)
src/components/constants.ts (1)
  • KindName (206-206)
src/components/examples/objects/judgement.ts (2)
src/components/examples/types.ts (1)
  • ClassInstance (1-1)
src/components/examples/objects/helpers.ts (2)
  • validatorIndex (25-25)
  • ed25519Signature (15-15)
src/components/examples/objects/reportGuarantee.ts (4)
src/components/examples/objects/helpers.ts (4)
  • validatorIndex (25-25)
  • ed25519Signature (15-15)
  • timeSlot (26-26)
  • asKnownSize (5-5)
src/components/examples/types.ts (1)
  • ClassInstance (1-1)
src/components/examples/objects/workReport.ts (1)
  • workReportExample (25-25)
src/components/examples/objects/credential.ts (1)
  • credentialExample (5-8)
src/components/examples/objects/ticket.ts (1)
src/components/examples/types.ts (1)
  • ClassInstance (1-1)
src/components/examples/objects/guaranteesExtrinsic.ts (3)
src/components/examples/types.ts (1)
  • ClassInstance (1-1)
src/components/examples/objects/helpers.ts (1)
  • asKnownSize (5-5)
src/components/examples/objects/reportGuarantee.ts (1)
  • reportGuaranteeExample (12-17)
src/components/examples/objects/workItem.ts (4)
src/components/examples/types.ts (1)
  • ClassInstance (1-1)
src/components/examples/objects/helpers.ts (6)
  • serviceId (24-24)
  • filledHash (12-12)
  • bytesBlobFrom (8-8)
  • serviceGas (23-23)
  • asKnownSize (5-5)
  • u16 (31-31)
src/components/examples/objects/importSpec.ts (1)
  • importSpecExample (5-8)
src/components/examples/objects/workItemExtrinsicSpec.ts (1)
  • workItemExtrinsicSpecExample (5-9)
src/components/examples/state/previousValidators.ts (1)
src/components/examples/state/validatorSets.ts (1)
  • createValidatorDataSet (8-19)
src/components/examples/objects/preimageExtrinsic.ts (2)
src/components/examples/types.ts (1)
  • ClassInstance (1-1)
src/components/examples/objects/preimage.ts (1)
  • preimageExample (5-8)
src/components/examples/objects/availabilityAssurance.ts (2)
src/components/examples/types.ts (1)
  • ClassInstance (1-1)
src/components/examples/objects/helpers.ts (5)
  • zeroHash (10-10)
  • bitVecFrom (34-40)
  • exampleChainSpec (3-3)
  • validatorIndex (25-25)
  • ed25519Signature (15-15)
src/components/examples/state/currentValidators.ts (1)
src/components/examples/state/validatorSets.ts (1)
  • createValidatorDataSet (8-19)
src/components/examples/objects/workPackage.ts (4)
src/components/examples/types.ts (1)
  • ClassInstance (1-1)
src/components/examples/objects/helpers.ts (3)
  • bytesBlobFrom (8-8)
  • filledHash (12-12)
  • FixedSizeArray (6-6)
src/components/examples/objects/refineContext.ts (1)
  • refineContextExample (5-13)
src/components/examples/objects/workItem.ts (1)
  • workItemExample (18-18)
src/components/examples/state/timeslot.ts (1)
src/components/examples/objects/helpers.ts (1)
  • timeSlot (26-26)
src/components/examples/state/privilegedServices.ts (2)
src/components/examples/objects/helpers.ts (2)
  • serviceId (24-24)
  • serviceGas (23-23)
src/components/examples/state/common.ts (1)
  • stateExampleSpec (3-3)
src/components/examples/state/entropy.ts (1)
src/components/examples/objects/helpers.ts (1)
  • filledHash (12-12)
src/components/examples/objects/assurancesExtrinsic.ts (2)
src/components/examples/objects/helpers.ts (1)
  • asKnownSize (5-5)
src/components/examples/objects/availabilityAssurance.ts (1)
  • availabilityAssuranceExample (5-11)
src/components/examples/state/designatedValidators.ts (1)
src/components/examples/state/validatorSets.ts (1)
  • createValidatorDataSet (8-19)
src/components/examples/state/statistics.ts (2)
src/components/examples/objects/helpers.ts (4)
  • u32 (30-30)
  • u16 (31-31)
  • serviceGas (23-23)
  • serviceId (24-24)
src/components/examples/state/common.ts (2)
  • validatorsCount (6-6)
  • stateExampleSpec (3-3)
src/components/examples/objects/workResult.ts (3)
src/components/examples/objects/helpers.ts (4)
  • serviceGas (23-23)
  • u32 (30-30)
  • serviceId (24-24)
  • filledHash (12-12)
src/components/examples/types.ts (1)
  • ClassInstance (1-1)
src/components/examples/objects/workExecResult.ts (1)
  • workExecResultExample (5-6)
src/components/examples/objects/workPackageSpec.ts (2)
src/components/examples/types.ts (1)
  • ClassInstance (1-1)
src/components/examples/objects/helpers.ts (3)
  • filledHash (12-12)
  • u32 (30-30)
  • u16 (31-31)
src/components/examples/state/disputesRecords.ts (1)
src/components/examples/objects/helpers.ts (2)
  • filledHash (12-12)
  • ed25519Key (14-14)
src/components/examples/objects/disputesExtrinsic.ts (4)
src/components/examples/types.ts (1)
  • ClassInstance (1-1)
src/components/examples/objects/verdict.ts (1)
  • verdictExample (17-21)
src/components/examples/objects/culprit.ts (1)
  • culpritExample (5-9)
src/components/examples/objects/fault.ts (1)
  • faultExample (5-10)
src/components/examples/objects/workItemExtrinsicSpec.ts (2)
src/components/examples/types.ts (1)
  • ClassInstance (1-1)
src/components/examples/objects/helpers.ts (2)
  • filledHash (12-12)
  • u32 (30-30)
src/components/examples/objects/refineContext.ts (2)
src/components/examples/types.ts (1)
  • ClassInstance (1-1)
src/components/examples/objects/helpers.ts (2)
  • filledHash (12-12)
  • timeSlot (26-26)
src/components/examples/stf/genesis.ts (2)
src/components/examples/objects/helpers.ts (2)
  • filledHash (12-12)
  • bytesBlobFrom (8-8)
src/components/examples/objects/header.ts (1)
  • headerExample (20-20)
src/components/examples/state/validatorSets.ts (2)
src/components/examples/state/common.ts (2)
  • validatorsCount (6-6)
  • stateExampleSpec (3-3)
src/components/examples/objects/helpers.ts (2)
  • bandersnatchKey (17-17)
  • ed25519Key (14-14)
src/components/examples/objects/header.ts (2)
src/components/examples/objects/helpers.ts (3)
  • zeroHash (10-10)
  • bandersnatchSignature (19-20)
  • encodeWithExampleSpec (42-43)
src/components/examples/types.ts (1)
  • ClassInstance (1-1)
src/components/examples/state/safroleData.ts (3)
src/components/examples/objects/helpers.ts (2)
  • bandersnatchKey (17-17)
  • ed25519Key (14-14)
src/components/examples/state/common.ts (3)
  • validatorsCount (6-6)
  • stateExampleSpec (3-3)
  • epochLength (5-5)
src/components/examples/types.ts (1)
  • ClassInstance (1-1)
src/components/examples/objects/verdict.ts (2)
src/components/examples/objects/helpers.ts (5)
  • exampleChainSpec (3-3)
  • asKnownSize (5-5)
  • validatorIndex (25-25)
  • ed25519Signature (15-15)
  • filledHash (12-12)
src/components/examples/types.ts (1)
  • ClassInstance (1-1)
src/components/examples/state/lookupHistoryItem.ts (1)
src/components/examples/objects/helpers.ts (1)
  • u32 (30-30)
src/components/examples/objects/credential.ts (2)
src/components/examples/types.ts (1)
  • ClassInstance (1-1)
src/components/examples/objects/helpers.ts (2)
  • validatorIndex (25-25)
  • ed25519Signature (15-15)
src/components/examples/objects/epochMarker.ts (3)
src/components/examples/objects/helpers.ts (4)
  • asKnownSize (5-5)
  • bandersnatchKey (17-17)
  • ed25519Key (14-14)
  • filledHash (12-12)
src/components/examples/state/common.ts (1)
  • validatorsCount (6-6)
src/components/examples/types.ts (1)
  • ClassInstance (1-1)
src/components/examples/state/recentlyAccumulated.ts (2)
src/components/examples/state/common.ts (2)
  • epochLength (5-5)
  • stateExampleSpec (3-3)
src/components/examples/objects/helpers.ts (1)
  • filledHash (12-12)
src/components/examples/state/accumulationOutputLog.ts (1)
src/components/examples/objects/helpers.ts (2)
  • serviceId (24-24)
  • filledHash (12-12)
src/components/examples/objects/workExecResult.ts (2)
src/components/examples/types.ts (1)
  • ClassInstance (1-1)
src/components/examples/objects/helpers.ts (1)
  • bytesBlobFrom (8-8)
src/components/examples/state/authPools.ts (2)
src/components/examples/objects/helpers.ts (1)
  • filledHash (12-12)
src/components/examples/state/common.ts (1)
  • stateExampleSpec (3-3)
src/components/examples/objects/culprit.ts (2)
src/components/examples/types.ts (1)
  • ClassInstance (1-1)
src/components/examples/objects/helpers.ts (3)
  • filledHash (12-12)
  • ed25519Key (14-14)
  • ed25519Signature (15-15)
src/components/examples/objects/importSpec.ts (2)
src/components/examples/types.ts (1)
  • ClassInstance (1-1)
src/components/examples/objects/helpers.ts (1)
  • filledHash (12-12)
src/components/examples/objects/workReport.ts (5)
src/components/examples/objects/workPackageSpec.ts (1)
  • workPackageSpecExample (5-12)
src/components/examples/types.ts (1)
  • ClassInstance (1-1)
src/components/examples/objects/refineContext.ts (1)
  • refineContextExample (5-13)
src/components/examples/objects/helpers.ts (5)
  • coreIndex (27-27)
  • filledHash (12-12)
  • bytesBlobFrom (8-8)
  • FixedSizeArray (6-6)
  • serviceGas (23-23)
src/components/examples/objects/workResult.ts (1)
  • workResultExample (23-23)
src/components/examples/objects/signedTicket.ts (2)
src/components/examples/types.ts (1)
  • ClassInstance (1-1)
src/components/examples/objects/helpers.ts (1)
  • bandersnatchProof (22-22)
src/components/examples/state/accumulationQueue.ts (3)
src/components/examples/objects/workReport.ts (1)
  • workReportExample (25-25)
src/components/examples/objects/helpers.ts (2)
  • asKnownSize (5-5)
  • filledHash (12-12)
src/components/examples/state/common.ts (2)
  • epochLength (5-5)
  • stateExampleSpec (3-3)
src/components/examples/state/availabilityAssignment.ts (3)
src/components/examples/objects/workReport.ts (1)
  • workReportExample (25-25)
src/components/examples/objects/helpers.ts (1)
  • timeSlot (26-26)
src/components/examples/state/common.ts (1)
  • stateExampleSpec (3-3)
src/components/Controls.tsx (1)
src/components/constants.ts (3)
  • KindName (206-206)
  • kinds (101-204)
  • ALL_CHAIN_SPECS (219-225)
src/components/examples/objects/block.ts (4)
src/components/examples/objects/header.ts (1)
  • headerExample (20-20)
src/components/examples/objects/extrinsic.ts (1)
  • extrinsicExample (16-22)
src/components/examples/objects/helpers.ts (1)
  • encodeWithExampleSpec (42-43)
src/components/examples/types.ts (1)
  • ClassInstance (1-1)
src/components/examples/objects/fault.ts (2)
src/components/examples/types.ts (1)
  • ClassInstance (1-1)
src/components/examples/objects/helpers.ts (3)
  • filledHash (12-12)
  • ed25519Key (14-14)
  • ed25519Signature (15-15)
src/components/examples/stf/transition.ts (2)
src/components/examples/objects/helpers.ts (2)
  • filledHash (12-12)
  • bytesBlobFrom (8-8)
src/components/examples/objects/block.ts (1)
  • blockExample (14-14)
src/components/examples/objects/ticketExtrinsic.ts (2)
src/components/examples/types.ts (1)
  • ClassInstance (1-1)
src/components/examples/objects/signedTicket.ts (1)
  • signedTicketExample (5-8)
src/components/examples/primitives/data.ts (1)
src/components/examples/objects/helpers.ts (1)
  • bitVecFrom (34-40)
src/pages/Codec.tsx (1)
src/components/constants.ts (3)
  • KindName (206-206)
  • headerKind (227-227)
  • KindExampleValue (207-207)
src/components/examples/objects/extrinsic.ts (7)
src/components/examples/objects/signedTicket.ts (1)
  • signedTicketExample (5-8)
src/components/examples/objects/preimage.ts (1)
  • preimageExample (5-8)
src/components/examples/objects/reportGuarantee.ts (1)
  • reportGuaranteeExample (12-17)
src/components/examples/objects/availabilityAssurance.ts (1)
  • availabilityAssuranceExample (5-11)
src/components/examples/objects/disputesExtrinsic.ts (1)
  • disputesExtrinsicExample (7-12)
src/components/examples/types.ts (1)
  • ClassInstance (1-1)
src/components/examples/objects/helpers.ts (1)
  • asKnownSize (5-5)
src/components/examples/state/authQueues.ts (2)
src/components/examples/objects/helpers.ts (1)
  • filledHash (12-12)
src/components/examples/state/common.ts (1)
  • stateExampleSpec (3-3)
src/components/KindFinder.tsx (1)
src/components/constants.ts (2)
  • KindName (206-206)
  • kinds (101-204)
src/components/examples/state/serviceAccount.ts (1)
src/components/examples/objects/helpers.ts (6)
  • filledHash (12-12)
  • u64 (29-29)
  • serviceGas (23-23)
  • u32 (30-30)
  • timeSlot (26-26)
  • serviceId (24-24)
src/components/examples/objects/preimage.ts (2)
src/components/examples/types.ts (1)
  • ClassInstance (1-1)
src/components/examples/objects/helpers.ts (2)
  • serviceId (24-24)
  • bytesBlobFrom (8-8)
src/components/JamObjectSelect.tsx (1)
src/components/constants.ts (2)
  • KindName (206-206)
  • kinds (101-204)
src/test/examples.test.ts (1)
src/components/constants.ts (2)
  • ALL_CHAIN_SPECS (219-225)
  • tinyChainSpec (214-217)
src/components/constants.ts (39)
src/pages/Codec.tsx (1)
  • Codec (38-229)
src/components/examples/objects/header.ts (1)
  • headerExample (20-20)
src/components/examples/objects/block.ts (1)
  • blockExample (14-14)
src/components/examples/objects/extrinsic.ts (1)
  • extrinsicExample (16-22)
src/components/examples/objects/epochMarker.ts (1)
  • epochMarkerExample (15-19)
src/components/examples/objects/assurancesExtrinsic.ts (1)
  • assurancesExtrinsicExample (8-8)
src/components/examples/objects/culprit.ts (1)
  • culpritExample (5-9)
src/components/examples/objects/fault.ts (1)
  • faultExample (5-10)
src/components/examples/objects/judgement.ts (1)
  • judgementExample (5-9)
src/components/examples/objects/verdict.ts (1)
  • verdictExample (17-21)
src/components/examples/objects/disputesExtrinsic.ts (1)
  • disputesExtrinsicExample (7-12)
src/components/examples/objects/credential.ts (1)
  • credentialExample (5-8)
src/components/examples/objects/guaranteesExtrinsic.ts (1)
  • guaranteesExtrinsicExample (6-7)
src/components/examples/objects/preimage.ts (1)
  • preimageExample (5-8)
src/components/examples/objects/preimageExtrinsic.ts (1)
  • preimageExtrinsicExample (5-5)
src/components/examples/objects/signedTicket.ts (1)
  • signedTicketExample (5-8)
src/components/examples/objects/ticket.ts (1)
  • ticketExample (4-7)
src/components/examples/objects/ticketExtrinsic.ts (1)
  • ticketExtrinsicExample (5-7)
src/components/examples/objects/importSpec.ts (1)
  • importSpecExample (5-8)
src/components/examples/objects/workItem.ts (1)
  • workItemExample (18-18)
src/components/examples/objects/workItemExtrinsicSpec.ts (1)
  • workItemExtrinsicSpecExample (5-9)
src/components/examples/objects/workPackage.ts (1)
  • workPackageExample (16-16)
src/components/examples/objects/workReport.ts (1)
  • workReportExample (25-25)
src/components/examples/objects/workResult.ts (1)
  • workResultExample (23-23)
src/components/examples/primitives/numerics.ts (1)
  • numericExamples (18-29)
src/components/examples/primitives/data.ts (3)
  • bytes32Example (4-4)
  • bytesBlobExample (5-5)
  • bitVecExample (6-6)
src/components/examples/state/authPools.ts (1)
  • authPoolsExample (7-7)
src/components/examples/state/authQueues.ts (1)
  • authQueuesExample (10-10)
src/components/examples/state/recentBlocks.ts (1)
  • recentBlocksExample (17-35)
src/components/examples/state/entropy.ts (1)
  • entropyExample (7-7)
src/components/examples/state/designatedValidators.ts (1)
  • designatedValidatorsExample (3-3)
src/components/examples/state/currentValidators.ts (1)
  • currentValidatorsExample (3-3)
src/components/examples/state/previousValidators.ts (1)
  • previousValidatorsExample (3-3)
src/components/examples/state/timeslot.ts (1)
  • timeslotExample (3-3)
src/components/examples/state/accumulationQueue.ts (1)
  • accumulationQueueExample (14-19)
src/components/examples/state/recentlyAccumulated.ts (1)
  • recentlyAccumulatedExample (5-10)
src/components/examples/state/lookupHistoryItem.ts (1)
  • lookupHistoryItemExample (3-3)
src/components/examples/stf/genesis.ts (1)
  • stfGenesisExample (15-18)
src/components/examples/stf/transition.ts (1)
  • stfVectorExample (15-19)

tomusdrw and others added 2 commits December 30, 2025 14:00
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
@tomusdrw tomusdrw merged commit 391fbf3 into main Dec 30, 2025
6 checks passed
@tomusdrw tomusdrw deleted the td-examples branch December 30, 2025 14:55
This was referenced Dec 30, 2025
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.

2 participants