tickmarkr 1.68.0 → 1.70.0

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.
Files changed (47) hide show
  1. package/dist/adapters/kimi.d.ts +25 -1
  2. package/dist/adapters/kimi.js +80 -0
  3. package/dist/adapters/types.d.ts +6 -0
  4. package/dist/cli/commands/eval.d.ts +4 -0
  5. package/dist/cli/commands/eval.js +26 -0
  6. package/dist/cli/commands/report.js +40 -5
  7. package/dist/cli/index.d.ts +1 -1
  8. package/dist/cli/index.js +3 -1
  9. package/dist/eval/canary.d.ts +46 -0
  10. package/dist/eval/canary.js +113 -0
  11. package/dist/eval/dispatch.d.ts +31 -0
  12. package/dist/eval/dispatch.js +207 -0
  13. package/dist/eval/fixtures.d.ts +22 -0
  14. package/dist/eval/fixtures.js +85 -0
  15. package/dist/eval/report.d.ts +35 -0
  16. package/dist/eval/report.js +82 -0
  17. package/dist/eval/selfcheck.d.ts +22 -0
  18. package/dist/eval/selfcheck.js +177 -0
  19. package/dist/gates/acceptance.d.ts +5 -1
  20. package/dist/gates/acceptance.js +72 -10
  21. package/dist/gates/review.d.ts +10 -2
  22. package/dist/gates/review.js +72 -19
  23. package/dist/report/bundle.d.ts +45 -0
  24. package/dist/report/bundle.js +158 -0
  25. package/dist/report/compare.d.ts +64 -0
  26. package/dist/report/compare.js +231 -0
  27. package/dist/run/daemon.js +152 -103
  28. package/dist/run/environment.d.ts +12 -0
  29. package/dist/run/environment.js +41 -0
  30. package/dist/run/interactive-seed.d.ts +15 -0
  31. package/dist/run/interactive-seed.js +25 -0
  32. package/fixtures/eval/canary/solution/a.txt +1 -0
  33. package/fixtures/eval/canary/spec.md +8 -0
  34. package/fixtures/eval/canary/start/a.txt +1 -0
  35. package/fixtures/eval/sample/solution/a.txt +1 -0
  36. package/fixtures/eval/sample/spec.md +8 -0
  37. package/fixtures/eval/sample/start/a.txt +1 -0
  38. package/fixtures/gsd-sample/07-live-check/07-01-PLAN.md +42 -0
  39. package/fixtures/gsd-sample/07-live-check/07-02-PLAN.md +21 -0
  40. package/fixtures/gsd-sample/07-live-check/07-03-PLAN.md +18 -0
  41. package/fixtures/gsd-sample/07-live-check/07-03-SUMMARY.md +1 -0
  42. package/fixtures/missing-mandatory-gate.native.md +10 -0
  43. package/fixtures/sample-pin.prd.md +18 -0
  44. package/fixtures/sample.native.md +35 -0
  45. package/fixtures/sample.prd.md +22 -0
  46. package/fixtures/speckit-sample/tasks.md +20 -0
  47. package/package.json +3 -2
@@ -0,0 +1,25 @@
1
+ // v1.69 T6: launch-then-seed handoff for adapters whose real TUI cannot be argv-seeded.
2
+ // Both the launch command and the seed line are delivered through the driver's existing `run`
3
+ // primitive (pane-run on herdr). After the seed line is injected we read the pane back and
4
+ // treat a seed that is still sitting in the input box as a hard failure (OBS-105 discipline).
5
+ export async function runInteractiveSeed(opts) {
6
+ const seed = opts.adapter.interactiveSeed;
7
+ await opts.driver.run(opts.slot, seed.launch(opts.assignment.model));
8
+ const ready = await opts.driver.waitOutput(opts.slot, seed.readinessMatch, opts.taskTimeoutMinutes * 60_000);
9
+ if (!ready) {
10
+ const output = await opts.driver.read(opts.slot, 1000);
11
+ return { output, seedFailed: true, seedError: `readiness pattern not seen: ${seed.readinessMatch}` };
12
+ }
13
+ const seedText = seed.seedLine(opts.promptFile);
14
+ await opts.driver.run(opts.slot, seedText);
15
+ let output = "";
16
+ for (let attempt = 0; attempt < 5; attempt++) {
17
+ await new Promise((r) => setTimeout(r, 200));
18
+ output = await opts.driver.read(opts.slot, 1000);
19
+ const bottom = output.trimEnd().split("\n").pop() ?? "";
20
+ if (!bottom.includes(seedText)) {
21
+ return { output, seedFailed: false };
22
+ }
23
+ }
24
+ return { output, seedFailed: true, seedError: "seed line never left the input box" };
25
+ }
@@ -0,0 +1 @@
1
+ canary-verified
@@ -0,0 +1,8 @@
1
+ <!-- tickmarkr:spec -->
2
+ # Judge canary
3
+
4
+ ## T1: Canary verification marker
5
+ - goal: The repository contains a verified canary marker
6
+ - shape: implement
7
+ - acceptance:
8
+ - judge: The file a.txt contains the exact text "canary-verified".
@@ -0,0 +1 @@
1
+ canary-start
@@ -0,0 +1 @@
1
+ hello from solution
@@ -0,0 +1,8 @@
1
+ <!-- tickmarkr:spec -->
2
+ # Eval fixture sample
3
+
4
+ ## T1: Solution text is present
5
+ - goal: The fixture reference content is produced
6
+ - shape: implement
7
+ - acceptance:
8
+ - command: [ "$(cat a.txt)" = "hello from solution" ]
@@ -0,0 +1 @@
1
+ hello from start
@@ -0,0 +1,42 @@
1
+ ---
2
+ phase: 07-live-check
3
+ plan: "01"
4
+ type: execute
5
+ wave: 1
6
+ depends_on: []
7
+ files_modified:
8
+ - src/**
9
+ autonomous: true
10
+ must_haves:
11
+ truths:
12
+ - "truth A holds in the shipped artifact"
13
+ artifacts:
14
+ - path: "src/out.js"
15
+ provides: "the thing"
16
+ ---
17
+
18
+ <objective>
19
+ Implement the first objective sentence. Additional prose that is not the title.
20
+ </objective>
21
+
22
+ <context>
23
+ @.planning/PROJECT.md
24
+ @$HOME/.claude/get-shit-done/workflows/execute-plan.md
25
+ @~/somewhere/outside.md
26
+ </context>
27
+
28
+ <tasks>
29
+
30
+ <task type="auto">
31
+ <name>Task 1: Build the widget</name>
32
+ <action>do the thing</action>
33
+ <verify>look at it</verify>
34
+ <done>widget builds green</done>
35
+ </task>
36
+
37
+ <task type="auto">
38
+ <name>Task 2: Wire the widget</name>
39
+ <done>widget is wired and demoed</done>
40
+ </task>
41
+
42
+ </tasks>
@@ -0,0 +1,21 @@
1
+ ---
2
+ phase: 07-live-check
3
+ plan: "02"
4
+ type: execute
5
+ wave: 2
6
+ depends_on: ["07-01"]
7
+ files_modified:
8
+ - docs/**
9
+ autonomous: true
10
+ ---
11
+
12
+ <objective>
13
+ Document the widget. Trailing sentence.
14
+ </objective>
15
+
16
+ <tasks>
17
+ <task type="checkpoint:human-action" gate="blocking">
18
+ <name>Task 1: Operator reviews the docs</name>
19
+ <done>operator approved the docs page</done>
20
+ </task>
21
+ </tasks>
@@ -0,0 +1,18 @@
1
+ ---
2
+ phase: 07-live-check
3
+ plan: "03"
4
+ type: execute
5
+ depends_on: ["07-02"]
6
+ autonomous: true
7
+ ---
8
+
9
+ <objective>
10
+ Already-finished work. Done earlier.
11
+ </objective>
12
+
13
+ <tasks>
14
+ <task type="auto">
15
+ <name>Task 1: old work</name>
16
+ <done>previously completed</done>
17
+ </task>
18
+ </tasks>
@@ -0,0 +1 @@
1
+ # done earlier
@@ -0,0 +1,10 @@
1
+ <!-- tickmarkr:spec -->
2
+
3
+ ## T1: Missing mandatory build gate
4
+ - gates:
5
+ - test
6
+ - lint
7
+ - evidence
8
+ - scope
9
+ - acceptance:
10
+ - compilation fails loudly naming build
@@ -0,0 +1,18 @@
1
+ # Sample PRD: pinned delivery
2
+
3
+ ## T1: Implement pinned compiler work
4
+ - shape: implement
5
+ - complexity: 7
6
+ - files: src/compiler.ts, src/types.ts
7
+ - pin: claude-code sonnet
8
+ - acceptance:
9
+ - compiler returns a graph
10
+
11
+ ## T2: Verify pinned compiler work
12
+ - shape: tests
13
+ - deps: T1
14
+ - files: tests/compiler.test.ts
15
+ - humanGate: true
16
+ - acceptance:
17
+ - tests reject malformed input
18
+ - reviewer approves the output
@@ -0,0 +1,35 @@
1
+ <!-- drovr:spec -->
2
+ # Native spec: compiler delivery
3
+
4
+ ## T1: Build the native compiler
5
+ - goal: Compile the complete native task surface
6
+ - shape: implement
7
+ - deps: none
8
+ - files: src/compile/native.ts, src/compile/index.ts
9
+ - context: docs/native.md, src/graph/schema.ts
10
+ - complexity: 8
11
+ - humanGate: true
12
+ - pin: claude-code opus
13
+ - floor: frontier
14
+ - gates:
15
+ - build
16
+ - test
17
+ - lint
18
+ - evidence
19
+ - scope
20
+ - acceptance
21
+ - acceptance:
22
+ - every native field reaches the graph
23
+ - malformed fields fail loudly
24
+
25
+ ## T2: Test native detection
26
+ - goal: Keep native and generic markdown routing distinct
27
+ - shape: tests
28
+ - deps: T1
29
+ - files: tests/compile/native.test.ts
30
+ - context: fixtures/sample.native.md
31
+ - complexity: 3
32
+ - humanGate: false
33
+ - acceptance:
34
+ - marked markdown selects native
35
+ - marker-less markdown stays PRD
@@ -0,0 +1,22 @@
1
+ # Sample PRD: tiny greeter
2
+
3
+ ## T1: Implement greet(name) in src/greet.js
4
+ - shape: implement
5
+ - complexity: 3
6
+ - files: src/**
7
+ - acceptance:
8
+ - greet("drover") returns a string containing "drover"
9
+ - module exports a single function
10
+
11
+ ## T2: Cover greet with tests
12
+ - deps: T1
13
+ - files: test/**
14
+ - acceptance:
15
+ - tests fail when greet drops the name
16
+ - npm test exits 0
17
+
18
+ ## T3: Document usage in README
19
+ - deps: T1
20
+ - humanGate: true
21
+ - acceptance:
22
+ - README shows an executable example
@@ -0,0 +1,20 @@
1
+ # Tasks: Sample Feature
2
+
3
+ ## Phase 1: Setup
4
+ - [ ] T001 Create project structure in src/
5
+ - acceptance: src/ and tests/ directories exist with entry points
6
+ - files: src/**, tests/**
7
+ - shape: chore
8
+
9
+ ## Phase 2: Core
10
+ - [ ] T002 [P] Implement token refresh in src/auth/refresh.ts
11
+ - acceptance: expired token triggers exactly one refresh attempt
12
+ - acceptance: refresh failure surfaces a typed error
13
+ - files: src/auth/**
14
+ - complexity: 7
15
+ - [ ] T003 [P] Implement session store in src/auth/store.ts
16
+ - acceptance: sessions persist across restarts
17
+ - files: src/auth/**
18
+ - [ ] T004 Write integration tests for auth flow
19
+ - acceptance: happy path and refresh-failure path covered
20
+ - files: tests/**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tickmarkr",
3
- "version": "1.68.0",
3
+ "version": "1.70.0",
4
4
  "description": "Spec in, verified work out.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -26,7 +26,8 @@
26
26
  "files": [
27
27
  "dist",
28
28
  "schema",
29
- "skills"
29
+ "skills",
30
+ "fixtures"
30
31
  ],
31
32
  "scripts": {
32
33
  "build": "tsc -p tsconfig.json",