pi-daddy 0.41.0 → 0.43.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 (138) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/contracts/ledger-record/v1/fixtures/capability-decision.json +3 -1
  3. package/contracts/ledger-record/v1/fixtures/child-lifecycle.json +25 -0
  4. package/contracts/ledger-record/v1/fixtures/episode-cost-gate.json +14 -0
  5. package/contracts/ledger-record/v1/fixtures/episode-outcome.json +12 -0
  6. package/contracts/ledger-record/v1/fixtures/ledger-record.jsonl +6 -3
  7. package/contracts/ledger-record/v1/fixtures/session-config.json +14 -0
  8. package/contracts/ledger-record/v1/governance-event.schema.json +356 -0
  9. package/dist/advisors/advisor.d.ts +24 -1
  10. package/dist/advisors/advisor.d.ts.map +1 -1
  11. package/dist/advisors/advisor.js +19 -1
  12. package/dist/advisors/advisor.js.map +1 -1
  13. package/dist/advisors/decider.d.ts +11 -0
  14. package/dist/advisors/decider.d.ts.map +1 -1
  15. package/dist/advisors/decider.js.map +1 -1
  16. package/dist/advisors/jev.d.ts.map +1 -1
  17. package/dist/advisors/jev.js +32 -1
  18. package/dist/advisors/jev.js.map +1 -1
  19. package/dist/cli.d.ts +7 -1
  20. package/dist/cli.d.ts.map +1 -1
  21. package/dist/cli.js +87 -1
  22. package/dist/cli.js.map +1 -1
  23. package/dist/executors/activity-session.d.ts +13 -0
  24. package/dist/executors/activity-session.d.ts.map +1 -1
  25. package/dist/executors/activity-session.js +44 -2
  26. package/dist/executors/activity-session.js.map +1 -1
  27. package/dist/governance/episode-cost-gate.d.ts +31 -0
  28. package/dist/governance/episode-cost-gate.d.ts.map +1 -0
  29. package/dist/governance/episode-cost-gate.js +112 -0
  30. package/dist/governance/episode-cost-gate.js.map +1 -0
  31. package/dist/governance/ledger-events.d.ts +108 -1
  32. package/dist/governance/ledger-events.d.ts.map +1 -1
  33. package/dist/governance/ledger-events.js +64 -0
  34. package/dist/governance/ledger-events.js.map +1 -1
  35. package/dist/governance/ledger-v3-validation.d.ts.map +1 -1
  36. package/dist/governance/ledger-v3-validation.js +124 -0
  37. package/dist/governance/ledger-v3-validation.js.map +1 -1
  38. package/dist/governance/ledger.d.ts +8 -2
  39. package/dist/governance/ledger.d.ts.map +1 -1
  40. package/dist/governance/ledger.js +18 -2
  41. package/dist/governance/ledger.js.map +1 -1
  42. package/dist/kernel/context-handoff.d.ts.map +1 -1
  43. package/dist/kernel/context-handoff.js +4 -1
  44. package/dist/kernel/context-handoff.js.map +1 -1
  45. package/dist/kernel/definitions.d.ts +5 -0
  46. package/dist/kernel/definitions.d.ts.map +1 -1
  47. package/dist/kernel/definitions.js +30 -1
  48. package/dist/kernel/definitions.js.map +1 -1
  49. package/dist/kernel/delegate-types.d.ts +4 -0
  50. package/dist/kernel/delegate-types.d.ts.map +1 -1
  51. package/dist/kernel/delegate-types.js.map +1 -1
  52. package/dist/kernel/delegate.d.ts.map +1 -1
  53. package/dist/kernel/delegate.js +20 -5
  54. package/dist/kernel/delegate.js.map +1 -1
  55. package/dist/kernel/env-names.d.ts +5 -0
  56. package/dist/kernel/env-names.d.ts.map +1 -1
  57. package/dist/kernel/env-names.js +9 -0
  58. package/dist/kernel/env-names.js.map +1 -1
  59. package/dist/kernel/grant-env.d.ts +2 -0
  60. package/dist/kernel/grant-env.d.ts.map +1 -1
  61. package/dist/kernel/grant-env.js +1 -0
  62. package/dist/kernel/grant-env.js.map +1 -1
  63. package/dist/kernel/propagation.d.ts +2 -2
  64. package/dist/kernel/propagation.d.ts.map +1 -1
  65. package/dist/kernel/propagation.js +7 -2
  66. package/dist/kernel/propagation.js.map +1 -1
  67. package/dist/products/dashboard-cli.d.ts +4 -0
  68. package/dist/products/dashboard-cli.d.ts.map +1 -1
  69. package/dist/products/dashboard-cli.js +32 -4
  70. package/dist/products/dashboard-cli.js.map +1 -1
  71. package/dist/products/dashboard-handshake.d.ts +8 -0
  72. package/dist/products/dashboard-handshake.d.ts.map +1 -1
  73. package/dist/products/dashboard-handshake.js +3 -0
  74. package/dist/products/dashboard-handshake.js.map +1 -1
  75. package/dist/products/dashboard-herdr.d.ts +4 -0
  76. package/dist/products/dashboard-herdr.d.ts.map +1 -1
  77. package/dist/products/dashboard-herdr.js +10 -2
  78. package/dist/products/dashboard-herdr.js.map +1 -1
  79. package/dist/products/dashboard-projection.d.ts.map +1 -1
  80. package/dist/products/dashboard-projection.js +13 -6
  81. package/dist/products/dashboard-projection.js.map +1 -1
  82. package/dist/products/dashboard-render.d.ts +10 -0
  83. package/dist/products/dashboard-render.d.ts.map +1 -1
  84. package/dist/products/dashboard-render.js +9 -0
  85. package/dist/products/dashboard-render.js.map +1 -1
  86. package/dist/products/dashboard-session-client.d.ts +17 -0
  87. package/dist/products/dashboard-session-client.d.ts.map +1 -0
  88. package/dist/products/dashboard-session-client.js +28 -0
  89. package/dist/products/dashboard-session-client.js.map +1 -0
  90. package/dist/products/episode-outcomes.d.ts +32 -0
  91. package/dist/products/episode-outcomes.d.ts.map +1 -0
  92. package/dist/products/episode-outcomes.js +280 -0
  93. package/dist/products/episode-outcomes.js.map +1 -0
  94. package/dist/products/episode-report.d.ts +59 -0
  95. package/dist/products/episode-report.d.ts.map +1 -0
  96. package/dist/products/episode-report.js +311 -0
  97. package/dist/products/episode-report.js.map +1 -0
  98. package/extensions/chain-ledger.ts +2 -0
  99. package/extensions/chain-plan.ts +4 -2
  100. package/extensions/context-shape.ts +19 -4
  101. package/extensions/dashboard-session-server.ts +86 -0
  102. package/extensions/definition-runtime.ts +93 -0
  103. package/extensions/delegate-chain.ts +31 -2
  104. package/extensions/delegation-ledger.ts +2 -0
  105. package/extensions/delegation.ts +24 -0
  106. package/extensions/effort-advice.ts +12 -0
  107. package/extensions/execute-child.ts +148 -9
  108. package/extensions/grants-command.ts +32 -2
  109. package/extensions/grants.ts +23 -1
  110. package/extensions/pruning-advice.ts +3 -1
  111. package/extensions/run-delegation.ts +54 -6
  112. package/extensions/session-model-prompt.ts +179 -0
  113. package/extensions/session.ts +104 -3
  114. package/package.json +1 -1
  115. package/src/advisors/advisor.ts +45 -2
  116. package/src/advisors/decider.ts +8 -0
  117. package/src/advisors/jev.ts +34 -1
  118. package/src/cli.ts +90 -2
  119. package/src/executors/activity-session.ts +56 -2
  120. package/src/governance/episode-cost-gate.ts +128 -0
  121. package/src/governance/ledger-events.ts +173 -1
  122. package/src/governance/ledger-v3-validation.ts +146 -0
  123. package/src/governance/ledger.ts +29 -1
  124. package/src/kernel/context-handoff.ts +5 -1
  125. package/src/kernel/definitions.ts +32 -1
  126. package/src/kernel/delegate-types.ts +4 -0
  127. package/src/kernel/delegate.ts +22 -5
  128. package/src/kernel/env-names.ts +10 -0
  129. package/src/kernel/grant-env.ts +3 -0
  130. package/src/kernel/propagation.ts +7 -0
  131. package/src/products/dashboard-cli.ts +32 -4
  132. package/src/products/dashboard-handshake.ts +5 -0
  133. package/src/products/dashboard-herdr.ts +15 -1
  134. package/src/products/dashboard-projection.ts +13 -6
  135. package/src/products/dashboard-render.ts +11 -0
  136. package/src/products/dashboard-session-client.ts +35 -0
  137. package/src/products/episode-outcomes.ts +317 -0
  138. package/src/products/episode-report.ts +372 -0
package/CHANGELOG.md CHANGED
@@ -12,6 +12,43 @@ the record of how the package got here and are worth keeping; they are not worth
12
12
  > the record of how the package arrived at what it does, and because the reasoning behind each one is
13
13
  > usually the clearest statement of why the current behaviour is what it is.
14
14
 
15
+ ## 0.43.0 — episode outcome labeling (2026-09-29)
16
+
17
+ - PR #85 adds `pi-daddy outcomes`, which reads Git history for `Pi-Episode` trailers and appends `episode_outcome`
18
+ ledger records covering survival on the default branch, reverts by name or inverse diff, CI state via `gh`,
19
+ amendments, and operator corrections.
20
+ - `pi-daddy report` now fills its outcome column from those records.
21
+ - Ledger readers now validate every known record kind before skipping kinds they do not render, and skip unknown
22
+ future kinds instead of throwing. No default changed.
23
+
24
+ ## 0.42.0 — model-attributed usage records (2026-09-29)
25
+
26
+ - The first delegation now prompts once to keep or change child model and thinking defaults for the session;
27
+ `sessionModelPrompt: never` skips the prompt.
28
+ - The dashboard now shows the `/grants models` table and read-only episode cost/ceiling; model and thinking edits use
29
+ the owning session's in-memory override path and produce the same `session_config` ledger event.
30
+ - Definitions and global defaults in `.pi/pi-daddy/settings.json` may select child model and thinking, with explicit,
31
+ session, definition, global, and pi fallback provenance recorded and shown by `/grants` and `pi-daddy report`.
32
+ - Episodes now warn at half of their provider-reported USD cost ceiling and gate at the ceiling (default `$5`,
33
+ configurable as `episodeCostCeiling`); direct children pause for one operator decision, while Herdr stops.
34
+ - `pi-daddy report` now joins the project grant and activity ledgers into episode-level Markdown or JSON, with
35
+ date/definition/model filters, grouped usage, range totals, and `Pi-Episode` commit attribution.
36
+ - Capability and lifecycle records now stamp the complete definition `SKILL.md` hash and, when exposed by an
37
+ installed package, its version, so measurements identify the definition version they ran under.
38
+ - Governed children now receive `PI_DADDY_EPISODE`, `PI_DADDY_DEFINITION`, and `PI_DADDY_EXECUTION`; lifecycle
39
+ records name the exported variables so work produced outside pi-daddy can be joined back to its execution.
40
+ - Child lifecycle records now include the resolved provider/model, effective thinking level and its source, nullable
41
+ provider-reported token dimensions, and the current turn's compaction count when the session file is readable.
42
+ - Advice records now include the resolved advisor provider/model and nullable token dimensions reported by the
43
+ Decisions endpoint. The endpoint does not expose an effective thinking level, so that field is recorded as null.
44
+ - The ledger-record v1 governance schema accepts the new lifecycle fields additively; retained records remain valid.
45
+
46
+ ## 0.41.1 — context handoff bounds in delegate schemas
47
+
48
+ - The `delegate`, `delegate_all`, and `delegate_chain` schemas now tell models that context handoffs accept at most
49
+ 16 file paths and 1–50 turns, with the current 20-turn default. For agents that can inspect the same workspace,
50
+ the schema recommends omitting embedded file context; an oversized request now gives the same recovery explicitly.
51
+
15
52
  ## 0.41.0 — episode identity, child usage, and explicit advisor task egress
16
53
 
17
54
  - Enabling and keying an advisor now sends only a structural task digest by default. Raw task text additionally
@@ -94,5 +94,7 @@
94
94
  "name": "build",
95
95
  "source": "/operator/skills/build/SKILL.md",
96
96
  "sha256": "8888888888888888888888888888888888888888888888888888888888888888"
97
- }
97
+ },
98
+ "definitionHash": "7777777777777777777777777777777777777777777777777777777777777777",
99
+ "definitionPackageVersion": "2.3.1"
98
100
  }
@@ -14,6 +14,23 @@
14
14
  "signal": null,
15
15
  "aborted": true,
16
16
  "reason": "child did not start",
17
+ "resolvedModel": {
18
+ "provider": "openai-codex",
19
+ "modelId": "gpt-5.3-codex"
20
+ },
21
+ "modelSource": "definition",
22
+ "thinkingLevel": {
23
+ "level": "high",
24
+ "source": "advisor"
25
+ },
26
+ "thinkingSource": "advisor",
27
+ "tokenDetail": {
28
+ "inputTokens": 120,
29
+ "outputTokens": 30,
30
+ "cacheReadTokens": 20,
31
+ "cacheWriteTokens": 10,
32
+ "reasoningTokens": 5
33
+ },
17
34
  "usage": {
18
35
  "input": 120,
19
36
  "output": 30,
@@ -29,6 +46,14 @@
29
46
  "total": 0.2
30
47
  }
31
48
  },
49
+ "compactionCount": 1,
50
+ "exportedEnvironment": [
51
+ "PI_DADDY_EPISODE",
52
+ "PI_DADDY_DEFINITION",
53
+ "PI_DADDY_EXECUTION"
54
+ ],
55
+ "definitionHash": "7777777777777777777777777777777777777777777777777777777777777777",
56
+ "definitionPackageVersion": "2.3.1",
32
57
  "correlation": {
33
58
  "schema_version": "1.0",
34
59
  "run_id": "run-contract-001",
@@ -0,0 +1,14 @@
1
+ {
2
+ "ledgerVersion": 3,
3
+ "event": "cost_gate",
4
+ "ts": "2026-08-20T12:00:02.500Z",
5
+ "episodeId": "episode:00000000-0000-4000-8000-000000000099",
6
+ "executionId": "exec:00000000-0000-4000-8000-000000000001",
7
+ "parentExecutionId": null,
8
+ "childId": "d0.1",
9
+ "gate": "episode_cost",
10
+ "cost": 5.2,
11
+ "ceiling": 5,
12
+ "outcome": "continued",
13
+ "newCeiling": 10
14
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "ledgerVersion": 3,
3
+ "event": "episode_outcome",
4
+ "ts": "2026-08-20T12:00:02.750Z",
5
+ "episodeId": "episode:00000000-0000-4000-8000-000000000099",
6
+ "commit": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
7
+ "survived": true,
8
+ "ci": "green",
9
+ "amended": false,
10
+ "corrected": false,
11
+ "label": "positive"
12
+ }
@@ -1,3 +1,6 @@
1
- {"v":1,"seq":1,"prev":null,"at":"2026-09-21T00:00:00.000Z","kind":"capability","id":"fixture-capability-decision","body":{"ledgerVersion":3,"event":"capability_decision","executionId":"exec:00000000-0000-4000-8000-000000000001","parentExecutionId":null,"ts":"2026-08-20T12:00:01.000Z","episodeId":"episode:00000000-0000-4000-8000-000000000099","parentId":"d0","childId":"d0.1","depth":1,"agentType":"build","executor":"process","taskFrom":"d0.0","taskFromExecutionId":"exec:00000000-0000-4000-8000-000000000000","taskDigest":"9999999999999999999999999999999999999999999999999999999999999999","correlation":{"schema_version":"1.0","run_id":"run-contract-001","task_id":"task-contract-001","workspace_id":"workspace-contract","context_id":"context-contract","phase":"verify","assurance":"critical","assurance_effective":"critical","policy_label":"policy-contract","assurance_source":"policy","assurance_scope":{"type":"selectors","selectors":["src/**"]},"activated_at":"2026-08-20T12:00:00.000Z","plan_digest":"1111111111111111111111111111111111111111111111111111111111111111","definition_digest":"2222222222222222222222222222222222222222222222222222222222222222","task_digest":"3333333333333333333333333333333333333333333333333333333333333333","base_sha":"4444444444444444444444444444444444444444","head_sha":"5555555555555555555555555555555555555555","tree_sha":"6666666666666666666666666666666666666666","event_seq":21,"last_change_seq":18,"last_authority_seq":20,"check_receipt_id":"7777777777777777777777777777777777777777777777777777777777777777"},"refusal":{"code":"WORKSPACE_WRITE_CONFLICT","message":"workspace-contract already has a governed writer","details":{"workspace_id":"workspace-contract","retryable":true,"holder_depth":1}},"requested":["tool:bash","tool:read"],"parentGrant":["agent:build","tool:bash","tool:read"],"effective":["tool:bash","tool:read"],"denied":[],"clipped":[],"gatedBlocked":[],"blocked":true,"reason":"workspace-contract already has a governed writer","approved":["tool:bash","tool:read"],"approvalSources":{"tool:bash":"persisted","tool:read":"prompt"},"approvalScopes":{"tool:bash":"always","tool:read":"once"},"approvalExpiresAt":{"tool:bash":"2026-09-19T12:00:00.000Z"},"approvalUses":{"tool:read":{"max":1,"remaining":0}},"definitionDigest":{"name":"build","source":"/operator/skills/build/SKILL.md","sha256":"8888888888888888888888888888888888888888888888888888888888888888"}},"digest":"969b6d0deed5685eb1c7c8841ac11340345ef5cac842b08b9b9529c42f7ea9fe"}
2
- {"v":1,"seq":2,"prev":"85a7be60d4eacf737d7b6df196f3940c0e273dacecd69a653f521c9da4de2d7a","at":"2026-09-21T00:00:00.000Z","kind":"lease","id":"fixture-workspace-lease","body":{"ledgerVersion":3,"event":"workspace_lease","ts":"2026-08-20T12:00:02.000Z","episodeId":"episode:00000000-0000-4000-8000-000000000099","executionId":"exec:00000000-0000-4000-8000-000000000001","parentExecutionId":null,"childId":"d0.1","workspaceId":"workspace-contract","root":"/worktrees/contract","access":"write","outcome":"acquired","recovered":"unknown","correlation":{"schema_version":"1.0","run_id":"run-contract-001","task_id":"task-contract-001","workspace_id":"workspace-contract","context_id":"context-contract","phase":"verify","assurance":"critical","assurance_effective":"critical","policy_label":"policy-contract","assurance_source":"policy","assurance_scope":{"type":"selectors","selectors":["src/**"]},"activated_at":"2026-08-20T12:00:00.000Z","plan_digest":"1111111111111111111111111111111111111111111111111111111111111111","definition_digest":"2222222222222222222222222222222222222222222222222222222222222222","task_digest":"3333333333333333333333333333333333333333333333333333333333333333","base_sha":"4444444444444444444444444444444444444444","head_sha":"5555555555555555555555555555555555555555","tree_sha":"6666666666666666666666666666666666666666","event_seq":21,"last_change_seq":18,"last_authority_seq":20,"check_receipt_id":"7777777777777777777777777777777777777777777777777777777777777777"}},"digest":"d1c9f4a6c66858513564d00a77cff75d684f71624da63637ba2b53ba414fc476"}
3
- {"v":1,"seq":3,"prev":"998a929cc0d910e5b6246802deccf990d7fd7db50a4094428b46e64997554ebf","at":"2026-09-21T00:00:00.000Z","kind":"lifecycle","id":"fixture-child-lifecycle","body":{"ledgerVersion":3,"event":"child_lifecycle","ts":"2026-08-20T12:00:03.000Z","episodeId":"episode:00000000-0000-4000-8000-000000000099","executionId":"exec:00000000-0000-4000-8000-000000000001","parentExecutionId":null,"childId":"d0.1","state":"failed","executor":"process","deadlineAt":"2026-08-20T12:10:00.000Z","idleTimeoutMs":900000,"exitCode":null,"signal":null,"aborted":true,"reason":"child did not start","usage":{"input":120,"output":30,"cacheRead":20,"cacheWrite":10,"reasoning":5,"totalTokens":185,"cost":{"input":0.12,"output":0.06,"cacheRead":0.01,"cacheWrite":0.01,"total":0.2}},"correlation":{"schema_version":"1.0","run_id":"run-contract-001","task_id":"task-contract-001","workspace_id":"workspace-contract","context_id":"context-contract","phase":"verify","assurance":"critical","assurance_effective":"critical","policy_label":"policy-contract","assurance_source":"policy","assurance_scope":{"type":"selectors","selectors":["src/**"]},"activated_at":"2026-08-20T12:00:00.000Z","plan_digest":"1111111111111111111111111111111111111111111111111111111111111111","definition_digest":"2222222222222222222222222222222222222222222222222222222222222222","task_digest":"3333333333333333333333333333333333333333333333333333333333333333","base_sha":"4444444444444444444444444444444444444444","head_sha":"5555555555555555555555555555555555555555","tree_sha":"6666666666666666666666666666666666666666","event_seq":21,"last_change_seq":18,"last_authority_seq":20,"check_receipt_id":"7777777777777777777777777777777777777777777777777777777777777777"}},"digest":"05817b67c4549fefaa753a03a80b67e55ebbc276e5cc9985216d8aa42552c579"}
1
+ {"v":1,"seq":1,"prev":null,"at":"2026-09-21T00:00:00.000Z","kind":"capability","id":"fixture-capability-decision","body":{"ledgerVersion":3,"event":"capability_decision","executionId":"exec:00000000-0000-4000-8000-000000000001","parentExecutionId":null,"ts":"2026-08-20T12:00:01.000Z","episodeId":"episode:00000000-0000-4000-8000-000000000099","parentId":"d0","childId":"d0.1","depth":1,"agentType":"build","executor":"process","taskFrom":"d0.0","taskFromExecutionId":"exec:00000000-0000-4000-8000-000000000000","taskDigest":"9999999999999999999999999999999999999999999999999999999999999999","correlation":{"schema_version":"1.0","run_id":"run-contract-001","task_id":"task-contract-001","workspace_id":"workspace-contract","context_id":"context-contract","phase":"verify","assurance":"critical","assurance_effective":"critical","policy_label":"policy-contract","assurance_source":"policy","assurance_scope":{"type":"selectors","selectors":["src/**"]},"activated_at":"2026-08-20T12:00:00.000Z","plan_digest":"1111111111111111111111111111111111111111111111111111111111111111","definition_digest":"2222222222222222222222222222222222222222222222222222222222222222","task_digest":"3333333333333333333333333333333333333333333333333333333333333333","base_sha":"4444444444444444444444444444444444444444","head_sha":"5555555555555555555555555555555555555555","tree_sha":"6666666666666666666666666666666666666666","event_seq":21,"last_change_seq":18,"last_authority_seq":20,"check_receipt_id":"7777777777777777777777777777777777777777777777777777777777777777"},"refusal":{"code":"WORKSPACE_WRITE_CONFLICT","message":"workspace-contract already has a governed writer","details":{"workspace_id":"workspace-contract","retryable":true,"holder_depth":1}},"requested":["tool:bash","tool:read"],"parentGrant":["agent:build","tool:bash","tool:read"],"effective":["tool:bash","tool:read"],"denied":[],"clipped":[],"gatedBlocked":[],"blocked":true,"reason":"workspace-contract already has a governed writer","approved":["tool:bash","tool:read"],"approvalSources":{"tool:bash":"persisted","tool:read":"prompt"},"approvalScopes":{"tool:bash":"always","tool:read":"once"},"approvalExpiresAt":{"tool:bash":"2026-09-19T12:00:00.000Z"},"approvalUses":{"tool:read":{"max":1,"remaining":0}},"definitionDigest":{"name":"build","source":"/operator/skills/build/SKILL.md","sha256":"8888888888888888888888888888888888888888888888888888888888888888"},"definitionHash":"7777777777777777777777777777777777777777777777777777777777777777","definitionPackageVersion":"2.3.1"},"digest":"4a36018bd75320d5f278ac3f31ebd676a0a24e40a779821ac1fcd67b520f8d9c"}
2
+ {"v":1,"seq":2,"prev":"02bdcfc121a09e09df55d592196009d85c4857cdafc6d10ffae52df9ef790cf9","at":"2026-09-21T00:00:00.000Z","kind":"lease","id":"fixture-workspace-lease","body":{"ledgerVersion":3,"event":"workspace_lease","ts":"2026-08-20T12:00:02.000Z","episodeId":"episode:00000000-0000-4000-8000-000000000099","executionId":"exec:00000000-0000-4000-8000-000000000001","parentExecutionId":null,"childId":"d0.1","workspaceId":"workspace-contract","root":"/worktrees/contract","access":"write","outcome":"acquired","recovered":"unknown","correlation":{"schema_version":"1.0","run_id":"run-contract-001","task_id":"task-contract-001","workspace_id":"workspace-contract","context_id":"context-contract","phase":"verify","assurance":"critical","assurance_effective":"critical","policy_label":"policy-contract","assurance_source":"policy","assurance_scope":{"type":"selectors","selectors":["src/**"]},"activated_at":"2026-08-20T12:00:00.000Z","plan_digest":"1111111111111111111111111111111111111111111111111111111111111111","definition_digest":"2222222222222222222222222222222222222222222222222222222222222222","task_digest":"3333333333333333333333333333333333333333333333333333333333333333","base_sha":"4444444444444444444444444444444444444444","head_sha":"5555555555555555555555555555555555555555","tree_sha":"6666666666666666666666666666666666666666","event_seq":21,"last_change_seq":18,"last_authority_seq":20,"check_receipt_id":"7777777777777777777777777777777777777777777777777777777777777777"}},"digest":"846254fb313861742c04f576f6afca484f1e9954461bd55a28d2e46c10c3143a"}
3
+ {"v":1,"seq":3,"prev":"5171a9ea3de47b21d07d72606d69f1529d9b26ded8d0a9e66f249ba0782a6bf4","at":"2026-09-21T00:00:00.000Z","kind":"fact","id":"fixture-episode-cost-gate","body":{"ledgerVersion":3,"event":"cost_gate","ts":"2026-08-20T12:00:02.500Z","episodeId":"episode:00000000-0000-4000-8000-000000000099","executionId":"exec:00000000-0000-4000-8000-000000000001","parentExecutionId":null,"childId":"d0.1","gate":"episode_cost","cost":5.2,"ceiling":5,"outcome":"continued","newCeiling":10},"digest":"144512eeb39ca539e5f27a7113afa5139b1ce507028d81c9fbae45b092149e13"}
4
+ {"v":1,"seq":4,"prev":"b2968d627c54e65c0e98a297c521ad6229367c75df4c68db2a18586eb4729a24","at":"2026-09-21T00:00:00.000Z","kind":"fact","id":"fixture-session-config","body":{"ledgerVersion":3,"event":"session_config","ts":"2026-08-20T12:00:02.750Z","episodeId":"episode:00000000-0000-4000-8000-000000000099","outcome":"changed","trigger":"first-delegation","overrides":{"review":{"model":"anthropic/claude-opus-4-6","thinking":"high"}}},"digest":"a363414f30242ae9a74db705691f5f8768070169e2676d1d7a3143adc6e46800"}
5
+ {"v":1,"seq":5,"prev":"0e3fd664c2dca1fc47d2009379607904458aa3a93dfe6e13a3ea485489398a4d","at":"2026-09-21T00:00:00.000Z","kind":"fact","id":"fixture-episode-outcome","body":{"ledgerVersion":3,"event":"episode_outcome","ts":"2026-08-20T12:00:02.750Z","episodeId":"episode:00000000-0000-4000-8000-000000000099","commit":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","survived":true,"ci":"green","amended":false,"corrected":false,"label":"positive"},"digest":"7617dfb4e545c6a0d54c2daf0d7598a2e191e333d67bb79189c618ea30752772"}
6
+ {"v":1,"seq":6,"prev":"e537315b2ab8675356be15e9b77ce51caceac65e7abc965d2ff3253e1e90bf0e","at":"2026-09-21T00:00:00.000Z","kind":"lifecycle","id":"fixture-child-lifecycle","body":{"ledgerVersion":3,"event":"child_lifecycle","ts":"2026-08-20T12:00:03.000Z","episodeId":"episode:00000000-0000-4000-8000-000000000099","executionId":"exec:00000000-0000-4000-8000-000000000001","parentExecutionId":null,"childId":"d0.1","state":"failed","executor":"process","deadlineAt":"2026-08-20T12:10:00.000Z","idleTimeoutMs":900000,"exitCode":null,"signal":null,"aborted":true,"reason":"child did not start","resolvedModel":{"provider":"openai-codex","modelId":"gpt-5.3-codex"},"modelSource":"definition","thinkingLevel":{"level":"high","source":"advisor"},"thinkingSource":"advisor","tokenDetail":{"inputTokens":120,"outputTokens":30,"cacheReadTokens":20,"cacheWriteTokens":10,"reasoningTokens":5},"usage":{"input":120,"output":30,"cacheRead":20,"cacheWrite":10,"reasoning":5,"totalTokens":185,"cost":{"input":0.12,"output":0.06,"cacheRead":0.01,"cacheWrite":0.01,"total":0.2}},"compactionCount":1,"exportedEnvironment":["PI_DADDY_EPISODE","PI_DADDY_DEFINITION","PI_DADDY_EXECUTION"],"definitionHash":"7777777777777777777777777777777777777777777777777777777777777777","definitionPackageVersion":"2.3.1","correlation":{"schema_version":"1.0","run_id":"run-contract-001","task_id":"task-contract-001","workspace_id":"workspace-contract","context_id":"context-contract","phase":"verify","assurance":"critical","assurance_effective":"critical","policy_label":"policy-contract","assurance_source":"policy","assurance_scope":{"type":"selectors","selectors":["src/**"]},"activated_at":"2026-08-20T12:00:00.000Z","plan_digest":"1111111111111111111111111111111111111111111111111111111111111111","definition_digest":"2222222222222222222222222222222222222222222222222222222222222222","task_digest":"3333333333333333333333333333333333333333333333333333333333333333","base_sha":"4444444444444444444444444444444444444444","head_sha":"5555555555555555555555555555555555555555","tree_sha":"6666666666666666666666666666666666666666","event_seq":21,"last_change_seq":18,"last_authority_seq":20,"check_receipt_id":"7777777777777777777777777777777777777777777777777777777777777777"}},"digest":"c13fc25e8a93c853be54ecebcaf4e9a2d6137bd1c37cc5655d33c71da3877cad"}
@@ -0,0 +1,14 @@
1
+ {
2
+ "ledgerVersion": 3,
3
+ "event": "session_config",
4
+ "ts": "2026-08-20T12:00:02.750Z",
5
+ "episodeId": "episode:00000000-0000-4000-8000-000000000099",
6
+ "outcome": "changed",
7
+ "trigger": "first-delegation",
8
+ "overrides": {
9
+ "review": {
10
+ "model": "anthropic/claude-opus-4-6",
11
+ "thinking": "high"
12
+ }
13
+ }
14
+ }
@@ -12,6 +12,15 @@
12
12
  },
13
13
  {
14
14
  "$ref": "#/$defs/childLifecycle"
15
+ },
16
+ {
17
+ "$ref": "#/$defs/costGate"
18
+ },
19
+ {
20
+ "$ref": "#/$defs/sessionConfig"
21
+ },
22
+ {
23
+ "$ref": "#/$defs/episodeOutcome"
15
24
  }
16
25
  ],
17
26
  "$defs": {
@@ -409,6 +418,14 @@
409
418
  "definitionDigest": {
410
419
  "$ref": "#/$defs/definitionDigest"
411
420
  },
421
+ "definitionHash": {
422
+ "type": "string",
423
+ "pattern": "^[a-f0-9]{64}$"
424
+ },
425
+ "definitionPackageVersion": {
426
+ "type": "string",
427
+ "pattern": "^[0-9A-Za-z][0-9A-Za-z.+_-]{0,127}$"
428
+ },
412
429
  "handoff": {
413
430
  "type": "object",
414
431
  "description": "the context handoff this child received (ADR-0078); absent means nothing crossed",
@@ -729,9 +746,42 @@
729
746
  "minimum": 1,
730
747
  "description": "the inactivity bound in milliseconds that governed this child beside the deadlineAt ceiling"
731
748
  },
749
+ "resolvedModel": {
750
+ "oneOf": [
751
+ {
752
+ "$ref": "#/$defs/resolvedModel"
753
+ },
754
+ {
755
+ "type": "null"
756
+ }
757
+ ]
758
+ },
759
+ "modelSource": {
760
+ "$ref": "#/$defs/modelSource"
761
+ },
762
+ "thinkingLevel": {
763
+ "oneOf": [
764
+ {
765
+ "$ref": "#/$defs/thinkingLevel"
766
+ },
767
+ {
768
+ "type": "null"
769
+ }
770
+ ]
771
+ },
772
+ "thinkingSource": {
773
+ "$ref": "#/$defs/thinkingSource"
774
+ },
775
+ "tokenDetail": {
776
+ "$ref": "#/$defs/tokenDetail"
777
+ },
732
778
  "usage": {
733
779
  "$ref": "#/$defs/childUsage"
734
780
  },
781
+ "compactionCount": {
782
+ "type": "integer",
783
+ "minimum": 0
784
+ },
735
785
  "usageUnavailable": {
736
786
  "enum": [
737
787
  "session-missing",
@@ -739,6 +789,27 @@
739
789
  "usage-missing"
740
790
  ]
741
791
  },
792
+ "exportedEnvironment": {
793
+ "type": "array",
794
+ "minItems": 3,
795
+ "maxItems": 3,
796
+ "uniqueItems": true,
797
+ "items": {
798
+ "enum": [
799
+ "PI_DADDY_EPISODE",
800
+ "PI_DADDY_DEFINITION",
801
+ "PI_DADDY_EXECUTION"
802
+ ]
803
+ }
804
+ },
805
+ "definitionHash": {
806
+ "type": "string",
807
+ "pattern": "^[a-f0-9]{64}$"
808
+ },
809
+ "definitionPackageVersion": {
810
+ "type": "string",
811
+ "pattern": "^[0-9A-Za-z][0-9A-Za-z.+_-]{0,127}$"
812
+ },
742
813
  "herdrPaneId": {
743
814
  "$ref": "#/$defs/ledgerDisplayIdentifier"
744
815
  },
@@ -813,6 +884,106 @@
813
884
  }
814
885
  ]
815
886
  },
887
+ "resolvedModel": {
888
+ "type": "object",
889
+ "additionalProperties": false,
890
+ "required": [
891
+ "provider",
892
+ "modelId"
893
+ ],
894
+ "properties": {
895
+ "provider": {
896
+ "type": "string",
897
+ "minLength": 1
898
+ },
899
+ "modelId": {
900
+ "type": "string",
901
+ "minLength": 1
902
+ }
903
+ }
904
+ },
905
+ "thinkingLevel": {
906
+ "type": "object",
907
+ "additionalProperties": false,
908
+ "required": [
909
+ "level",
910
+ "source"
911
+ ],
912
+ "properties": {
913
+ "level": {
914
+ "type": "string",
915
+ "minLength": 1
916
+ },
917
+ "source": {
918
+ "enum": [
919
+ "explicit",
920
+ "session",
921
+ "advisor",
922
+ "definition",
923
+ "global",
924
+ "pi"
925
+ ]
926
+ }
927
+ }
928
+ },
929
+ "modelSource": {
930
+ "enum": [
931
+ "explicit",
932
+ "session",
933
+ "definition",
934
+ "global",
935
+ "pi"
936
+ ]
937
+ },
938
+ "thinkingSource": {
939
+ "enum": [
940
+ "explicit",
941
+ "session",
942
+ "advisor",
943
+ "definition",
944
+ "global",
945
+ "pi"
946
+ ]
947
+ },
948
+ "tokenDetail": {
949
+ "type": "object",
950
+ "additionalProperties": false,
951
+ "required": [
952
+ "inputTokens",
953
+ "outputTokens",
954
+ "cacheReadTokens",
955
+ "cacheWriteTokens",
956
+ "reasoningTokens"
957
+ ],
958
+ "properties": {
959
+ "inputTokens": {
960
+ "$ref": "#/$defs/reportedTokenCount"
961
+ },
962
+ "outputTokens": {
963
+ "$ref": "#/$defs/reportedTokenCount"
964
+ },
965
+ "cacheReadTokens": {
966
+ "$ref": "#/$defs/reportedTokenCount"
967
+ },
968
+ "cacheWriteTokens": {
969
+ "$ref": "#/$defs/reportedTokenCount"
970
+ },
971
+ "reasoningTokens": {
972
+ "$ref": "#/$defs/reportedTokenCount"
973
+ }
974
+ }
975
+ },
976
+ "reportedTokenCount": {
977
+ "oneOf": [
978
+ {
979
+ "type": "number",
980
+ "exclusiveMinimum": 0
981
+ },
982
+ {
983
+ "type": "null"
984
+ }
985
+ ]
986
+ },
816
987
  "childUsage": {
817
988
  "type": "object",
818
989
  "additionalProperties": false,
@@ -887,6 +1058,191 @@
887
1058
  "executionId": {
888
1059
  "type": "string",
889
1060
  "pattern": "^exec:[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[89aAbB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$"
1061
+ },
1062
+ "costGate": {
1063
+ "type": "object",
1064
+ "properties": {
1065
+ "ledgerVersion": {
1066
+ "const": 3
1067
+ },
1068
+ "event": {
1069
+ "const": "cost_gate"
1070
+ },
1071
+ "ts": {
1072
+ "$ref": "#/$defs/timestamp"
1073
+ },
1074
+ "episodeId": {
1075
+ "$ref": "#/$defs/episodeId"
1076
+ },
1077
+ "executionId": {
1078
+ "$ref": "#/$defs/executionId"
1079
+ },
1080
+ "parentExecutionId": {
1081
+ "oneOf": [
1082
+ {
1083
+ "$ref": "#/$defs/executionId"
1084
+ },
1085
+ {
1086
+ "type": "null"
1087
+ }
1088
+ ]
1089
+ },
1090
+ "childId": {
1091
+ "$ref": "#/$defs/ledgerDisplayIdentifier"
1092
+ },
1093
+ "gate": {
1094
+ "const": "episode_cost"
1095
+ },
1096
+ "cost": {
1097
+ "type": "number",
1098
+ "minimum": 0
1099
+ },
1100
+ "ceiling": {
1101
+ "type": "number",
1102
+ "exclusiveMinimum": 0
1103
+ },
1104
+ "outcome": {
1105
+ "enum": [
1106
+ "continued",
1107
+ "stopped"
1108
+ ]
1109
+ },
1110
+ "newCeiling": {
1111
+ "type": "number",
1112
+ "exclusiveMinimum": 0
1113
+ }
1114
+ },
1115
+ "required": [
1116
+ "ledgerVersion",
1117
+ "event",
1118
+ "ts",
1119
+ "episodeId",
1120
+ "executionId",
1121
+ "parentExecutionId",
1122
+ "childId",
1123
+ "gate",
1124
+ "cost",
1125
+ "ceiling",
1126
+ "outcome"
1127
+ ],
1128
+ "additionalProperties": false
1129
+ },
1130
+ "sessionConfig": {
1131
+ "type": "object",
1132
+ "properties": {
1133
+ "ledgerVersion": {
1134
+ "const": 3
1135
+ },
1136
+ "event": {
1137
+ "const": "session_config"
1138
+ },
1139
+ "ts": {
1140
+ "$ref": "#/$defs/timestamp"
1141
+ },
1142
+ "episodeId": {
1143
+ "$ref": "#/$defs/episodeId"
1144
+ },
1145
+ "outcome": {
1146
+ "enum": [
1147
+ "kept",
1148
+ "changed"
1149
+ ]
1150
+ },
1151
+ "trigger": {
1152
+ "enum": [
1153
+ "first-delegation",
1154
+ "grants-models"
1155
+ ]
1156
+ },
1157
+ "overrides": {
1158
+ "type": "object",
1159
+ "additionalProperties": {
1160
+ "type": "object",
1161
+ "properties": {
1162
+ "model": {
1163
+ "type": "string",
1164
+ "minLength": 1
1165
+ },
1166
+ "thinking": {
1167
+ "type": "string",
1168
+ "minLength": 1
1169
+ }
1170
+ },
1171
+ "required": [
1172
+ "model",
1173
+ "thinking"
1174
+ ],
1175
+ "additionalProperties": false
1176
+ }
1177
+ }
1178
+ },
1179
+ "required": [
1180
+ "ledgerVersion",
1181
+ "event",
1182
+ "ts",
1183
+ "episodeId",
1184
+ "outcome",
1185
+ "trigger",
1186
+ "overrides"
1187
+ ],
1188
+ "additionalProperties": false
1189
+ },
1190
+ "episodeOutcome": {
1191
+ "type": "object",
1192
+ "properties": {
1193
+ "ledgerVersion": {
1194
+ "const": 3
1195
+ },
1196
+ "event": {
1197
+ "const": "episode_outcome"
1198
+ },
1199
+ "ts": {
1200
+ "$ref": "#/$defs/timestamp"
1201
+ },
1202
+ "episodeId": {
1203
+ "$ref": "#/$defs/episodeId"
1204
+ },
1205
+ "commit": {
1206
+ "type": "string",
1207
+ "pattern": "^[0-9a-f]{40}$"
1208
+ },
1209
+ "survived": {
1210
+ "type": "boolean"
1211
+ },
1212
+ "ci": {
1213
+ "enum": [
1214
+ "green",
1215
+ "red",
1216
+ "none"
1217
+ ]
1218
+ },
1219
+ "amended": {
1220
+ "type": "boolean"
1221
+ },
1222
+ "corrected": {
1223
+ "type": "boolean"
1224
+ },
1225
+ "label": {
1226
+ "enum": [
1227
+ "positive",
1228
+ "negative",
1229
+ "unknown"
1230
+ ]
1231
+ }
1232
+ },
1233
+ "required": [
1234
+ "ledgerVersion",
1235
+ "event",
1236
+ "ts",
1237
+ "episodeId",
1238
+ "commit",
1239
+ "survived",
1240
+ "ci",
1241
+ "amended",
1242
+ "corrected",
1243
+ "label"
1244
+ ],
1245
+ "additionalProperties": false
890
1246
  }
891
1247
  }
892
1248
  }
@@ -43,6 +43,20 @@ export interface AdviceRecord {
43
43
  confidence?: number;
44
44
  }>>;
45
45
  model?: string;
46
+ resolvedModel: {
47
+ provider: string;
48
+ modelId: string;
49
+ } | null;
50
+ modelSource: "explicit" | "session" | "definition" | "global" | "pi";
51
+ thinkingLevel: string | null;
52
+ thinkingSource: "explicit" | "session" | "advisor" | "definition" | "global" | "pi";
53
+ tokenDetail: {
54
+ inputTokens: number | null;
55
+ outputTokens: number | null;
56
+ cacheReadTokens: number | null;
57
+ cacheWriteTokens: number | null;
58
+ reasoningTokens: number | null;
59
+ };
46
60
  /**
47
61
  * Why there is no advice. `declined` means the advisor answered with nothing; `error` means it could not be
48
62
  * reached or its response was unrecognised; `cancelled` means the CALLER went away, which is not the advisor's
@@ -50,9 +64,18 @@ export interface AdviceRecord {
50
64
  */
51
65
  outcome: "answered" | "disabled" | "timeout" | "error" | "declined" | "cancelled";
52
66
  }
67
+ export interface AdviceAttribution {
68
+ resolvedModel: {
69
+ provider: string;
70
+ modelId: string;
71
+ } | null;
72
+ modelSource: AdviceRecord["modelSource"];
73
+ thinkingLevel: string | null;
74
+ thinkingSource: AdviceRecord["thinkingSource"];
75
+ }
53
76
  export interface Advisor {
54
77
  task(task: string): string | TaskDigest;
55
- ask(purpose: string, request: AdviceRequest, signal?: AbortSignal, executionId?: string): Promise<Advice | null>;
78
+ ask(purpose: string, request: AdviceRequest, signal?: AbortSignal, executionId?: string, attribution?: AdviceAttribution | ((advice: Advice | null) => AdviceAttribution)): Promise<Advice | null>;
56
79
  }
57
80
  export declare function createAdvisor(input: {
58
81
  decider: Decider;
@@ -1 +1 @@
1
- {"version":3,"file":"advisor.d.ts","sourceRoot":"","sources":["../../src/advisors/advisor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEnE,mHAAmH;AACnH,eAAO,MAAM,yBAAyB,OAAO,CAAC;AAE9C,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,KAAK,CAAC;AAE9C,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;CAC1D;AAED,MAAM,WAAW,YAAY;IAC3B,sFAAsF;IACtF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uGAAuG;IACvG,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qGAAqG;IACrG,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B,6EAA6E;IAC7E,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,8EAA8E;IAC9E,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,0CAA0C;IAC1C,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAC;IAC9F,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,OAAO,EAAE,UAAU,GAAG,UAAU,GAAG,SAAS,GAAG,OAAO,GAAG,UAAU,GAAG,WAAW,CAAC;CACnF;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;IACxC,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CAClH;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,mGAAmG;IACnG,MAAM,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8EAA8E;IAC9E,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,cAAc,CAAC;CAC7B,GAAG,OAAO,CA8EV"}
1
+ {"version":3,"file":"advisor.d.ts","sourceRoot":"","sources":["../../src/advisors/advisor.ts"],"names":[],"mappings":"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"}