A drum full of irregular slugs firing down a barrel into a beam clamped in a vise, one slug lodged in a crack in the beam, the vise ghosted in bone-grey line, and a cyan line running on through three collars to one tiny slug in a ring terminal.
Research

Hardening

Hardens LifeOS tests via property-based testing with fast-check

01
Workflow
00
Tools
00
References
12
Triggers

Key Points

Not for new feature tests (bun test directly), grading agent output (Assay), UI verification (Interceptor), finding security vulnerabilities, or building new functionality

Inside the Skill

The thinking, frameworks, and architecture that distinguish this skill from a generic version of the same task.

Ideal State

  • Every property written states the universal claim behind existing example tests, runs across generated inputs drawn from the function's real input domain, and keeps the examples it sharpens.
  • Every failure ends shrunk to a minimal counterexample with its seed, and ends in either a fixed bug or a corrected property.
  • What hardening lands is recorded where the system reads it: a bun-property row in the ISA's Test Strategy, and a C/R/L Learning entry when a counterexample taught something.
  • Functions that cannot carry a universal claim (impure, or no candidate shape) are left to example tests rather than forced into a property.

Intent Routing

Intent Trigger File
PropertyTest property test, property based testing, PBT, fast-check, universal quantified claim, shrink counterexample — pure functions, parsers, serializers, data transforms, invariants Intents/PropertyTest.md

Integration Points

  • Testing Doctrine Rule #12 — names fast-check as the property-testing primitive (LIFEOS/DOCUMENTATION/Testing/TestingDoctrine.md).
  • ISA format — the bun-property ISC type with property | generator | runs columns (LIFEOS/DOCUMENTATION/ISA/ISAFormat.md § ISC Type Vocabulary). A bun-property row is a first-class assert: it counts toward every-ISC-an-assert coverage (H8) and bunker test runs it like any deterministic row.
  • Algorithm — hardening is elected during verification when a run's criteria warrant property depth; spend is discovered from the work.
  • System prompt — Verification Is the Mechanism section at top (LIFEOS/LIFEOS_SYSTEM_PROMPT.md).

The Bunker CLI is maintainer-private and not in the public release; run code rows with bun test ./<path> and suite rows with bun skills/Assay/Tools/EvalRunner.ts.

Gotchas

No skill-wide gotchas; the fast-check ones live in Intents/PropertyTest.md § Gotchas.

Examples

  • "Property-test the slug parser" → PropertyTest → round-trip and idempotence properties in a .property.test.ts file at 1000 runs, a bun-property row in the ISA, and any failure shrunk with its seed pinned.
  • "What bugs are my example tests missing?" → PropertyTest → the pure functions (parsers, serializers, transforms) that have only example coverage, listed as property-test candidates.

Workflows & Routing · 1

Each workflow is one job the skill runs. The trigger phrases route your request to the right one — this is the skill's routing table.

  1. 01
    PropertyTest Intents/PropertyTest.md

    property test, property based testing, PBT, fast-check, universal quantified claim, shrink counterexample — pure functions, parsers, serializers, data transforms, invariants

How to Invoke

Say any of these to your DA and LifeOS activates the Hardening skill automatically:

  • "harden"
  • "hardening"
  • "property test"
  • "property based testing"
  • "PBT"
  • "fast-check"
  • "strengthen tests"
  • "find bugs example tests miss"
  • "universal quantified claim"
  • "shrink counterexample"
  • "what bugs am I missing"
  • "test the tests"

Or invoke explicitly:

Skill("Hardening")

Want LifeOS to do this for you?

Install LifeOS on your machine — your DA gets the Hardening skill plus 96 others, all hooked into one Life OS.