@sleepy-hollow/framework 0.3.4 → 0.3.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,26 @@
2
2
 
3
3
  All notable changes to Sleepy Hollow are documented in this file.
4
4
 
5
+ ## 0.3.6 - 2026-08-21
6
+
7
+ ### Changed: skill verification guidance and release surfaces
8
+
9
+ The Sleepy Hollow skill now documents the framework 0.3.6 evidence workflow,
10
+ discovery-safe governed tests, explicit approval criterion IDs, application
11
+ criterion mappings, post-green smoke testing, and the current red-state
12
+ characterization limitation. CLI, generator, scaffold, and package metadata
13
+ all report 0.3.6.
14
+
15
+ ## 0.3.5 - 2026-08-21
16
+
17
+ ### Fixed: governed test evidence loading
18
+
19
+ `hollow test` now discovers `criterionTest(...)` registrations and persists
20
+ the manifest and results consumed by `hollow check`. Verification also includes
21
+ the configured application requirement, derives endpoint ownership, and honors
22
+ the latest append-only approval record. Native Vitest evidence uses the
23
+ TAP-flat reporter.
24
+
5
25
  ## 0.3.4 - 2026-08-21
6
26
 
7
27
  ### Fixed: development server lifecycle
@@ -4038,6 +4038,15 @@ var envProxy = new Proxy({}, { get(_, p) {
4038
4038
  var import_expect_type = __toESM(require_dist(), 1);
4039
4039
 
4040
4040
  // core/testing/criterion.ts
4041
+ var CRITERION_TEST_DISCOVERY = /* @__PURE__ */ Symbol.for(
4042
+ "sleepy-hollow.criterion-test-discovery"
4043
+ );
4044
+ function discoveryHook() {
4045
+ const value = globalThis[CRITERION_TEST_DISCOVERY];
4046
+ if (!value || typeof value !== "object") return void 0;
4047
+ const onRegistered = value.onRegistered;
4048
+ return typeof onRegistered === "function" ? value : void 0;
4049
+ }
4041
4050
  var stableId = /^[A-Za-z0-9][A-Za-z0-9._-]*$/;
4042
4051
  var criterionId = /^AC-[A-Z0-9]+(?:-[A-Z0-9]+)*$/;
4043
4052
  function validateRequirements(requirements) {
@@ -4057,7 +4066,10 @@ function validateRequirements(requirements) {
4057
4066
  }
4058
4067
  function createRegistry(options) {
4059
4068
  const requirements = validateRequirements(options.requirements);
4060
- const register = options.register ?? ((definition) => test2(definition.name, { skip: definition.skip }, definition.fn));
4069
+ const register = options.register ?? ((definition) => {
4070
+ if (discoveryHook()) return;
4071
+ test2(definition.name, { skip: definition.skip }, definition.fn);
4072
+ });
4061
4073
  const descriptors = /* @__PURE__ */ new Map();
4062
4074
  return Object.freeze({
4063
4075
  criterionTest(spec) {
@@ -4160,6 +4172,7 @@ function createRegistry(options) {
4160
4172
  skip: spec.ignore
4161
4173
  });
4162
4174
  descriptors.set(spec.id, descriptor);
4175
+ discoveryHook()?.onRegistered(descriptor);
4163
4176
  return descriptor;
4164
4177
  },
4165
4178
  descriptors() {
@@ -4551,6 +4564,7 @@ function selectAffectedTests(options) {
4551
4564
 
4552
4565
  export {
4553
4566
  TestingError,
4567
+ CRITERION_TEST_DISCOVERY,
4554
4568
  createCriterionRegistry,
4555
4569
  criterionTest,
4556
4570
  createTestManifest,
@@ -4582,4 +4596,4 @@ export {
4582
4596
  * LICENSE file in the root directory of this source tree.
4583
4597
  *)
4584
4598
  */
4585
- //# sourceMappingURL=chunk-RYKRRAPD.js.map
4599
+ //# sourceMappingURL=chunk-YBEJCNGD.js.map