@llblab/pi-kit 0.38.3 → 0.39.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.
- package/CHANGELOG.md +10 -0
- package/README.md +2 -2
- package/node_modules/@llblab/pi-actors/AGENTS.md +108 -20
- package/node_modules/@llblab/pi-actors/BACKLOG.md +207 -4
- package/node_modules/@llblab/pi-actors/CHANGELOG.md +13 -0
- package/node_modules/@llblab/pi-actors/README.md +31 -1
- package/node_modules/@llblab/pi-actors/dist/index.js +1 -1
- package/node_modules/@llblab/pi-actors/dist/lib/async-runs.d.ts +37 -0
- package/node_modules/@llblab/pi-actors/dist/lib/async-runs.js +131 -62
- package/node_modules/@llblab/pi-actors/dist/lib/automatic-review-runtime.d.ts +2 -0
- package/node_modules/@llblab/pi-actors/dist/lib/automatic-review-runtime.js +3 -2
- package/node_modules/@llblab/pi-actors/dist/lib/command-templates.d.ts +37 -0
- package/node_modules/@llblab/pi-actors/dist/lib/command-templates.js +263 -129
- package/node_modules/@llblab/pi-actors/dist/lib/execution-files.d.ts +32 -0
- package/node_modules/@llblab/pi-actors/dist/lib/execution-files.js +128 -0
- package/node_modules/@llblab/pi-actors/dist/lib/execution-output.js +5 -4
- package/node_modules/@llblab/pi-actors/dist/lib/execution-sessions.d.ts +19 -1
- package/node_modules/@llblab/pi-actors/dist/lib/execution-sessions.js +62 -26
- package/node_modules/@llblab/pi-actors/dist/lib/execution.d.ts +4 -1
- package/node_modules/@llblab/pi-actors/dist/lib/execution.js +6 -1
- package/node_modules/@llblab/pi-actors/dist/lib/extension-runtime.d.ts +9 -2
- package/node_modules/@llblab/pi-actors/dist/lib/extension-runtime.js +92 -14
- package/node_modules/@llblab/pi-actors/dist/lib/file-state.js +21 -2
- package/node_modules/@llblab/pi-actors/dist/lib/inspector-command.js +2 -2
- package/node_modules/@llblab/pi-actors/dist/lib/inspector-overlay.d.ts +25 -7
- package/node_modules/@llblab/pi-actors/dist/lib/inspector-overlay.js +562 -262
- package/node_modules/@llblab/pi-actors/dist/lib/inspector.d.ts +20 -10
- package/node_modules/@llblab/pi-actors/dist/lib/inspector.js +80 -91
- package/node_modules/@llblab/pi-actors/dist/lib/limits.d.ts +1 -0
- package/node_modules/@llblab/pi-actors/dist/lib/limits.js +1 -0
- package/node_modules/@llblab/pi-actors/dist/lib/observability.d.ts +15 -1
- package/node_modules/@llblab/pi-actors/dist/lib/observability.js +216 -99
- package/node_modules/@llblab/pi-actors/dist/lib/pi.d.ts +5 -4
- package/node_modules/@llblab/pi-actors/dist/lib/pi.js +64 -10
- package/node_modules/@llblab/pi-actors/dist/lib/recipe-projection.d.ts +18 -0
- package/node_modules/@llblab/pi-actors/dist/lib/recipe-projection.js +220 -0
- package/node_modules/@llblab/pi-actors/dist/lib/recipes-context.d.ts +2 -0
- package/node_modules/@llblab/pi-actors/dist/lib/recipes-context.js +30 -6
- package/node_modules/@llblab/pi-actors/dist/lib/registry.js +270 -36
- package/node_modules/@llblab/pi-actors/dist/lib/run-delivery.d.ts +213 -5
- package/node_modules/@llblab/pi-actors/dist/lib/run-delivery.js +1909 -40
- package/node_modules/@llblab/pi-actors/dist/lib/run-supervision.d.ts +107 -0
- package/node_modules/@llblab/pi-actors/dist/lib/run-supervision.js +412 -0
- package/node_modules/@llblab/pi-actors/dist/lib/run-ui-runtime.d.ts +9 -2
- package/node_modules/@llblab/pi-actors/dist/lib/run-ui-runtime.js +283 -60
- package/node_modules/@llblab/pi-actors/dist/lib/runs-artifacts.d.ts +26 -1
- package/node_modules/@llblab/pi-actors/dist/lib/runs-artifacts.js +68 -2
- package/node_modules/@llblab/pi-actors/dist/lib/runs-context-exports.d.ts +451 -0
- package/node_modules/@llblab/pi-actors/dist/lib/runs-context-exports.js +2315 -0
- package/node_modules/@llblab/pi-actors/dist/lib/runs-context-index.d.ts +97 -0
- package/node_modules/@llblab/pi-actors/dist/lib/runs-context-index.js +368 -0
- package/node_modules/@llblab/pi-actors/dist/lib/runs-control-delivery.js +46 -7
- package/node_modules/@llblab/pi-actors/dist/lib/runs-control.d.ts +78 -2
- package/node_modules/@llblab/pi-actors/dist/lib/runs-control.js +334 -2
- package/node_modules/@llblab/pi-actors/dist/lib/runs-controls.js +4 -1
- package/node_modules/@llblab/pi-actors/dist/lib/runs-descendant-launches.d.ts +80 -0
- package/node_modules/@llblab/pi-actors/dist/lib/runs-descendant-launches.js +287 -0
- package/node_modules/@llblab/pi-actors/dist/lib/runs-execution-evidence.d.ts +110 -0
- package/node_modules/@llblab/pi-actors/dist/lib/runs-execution-evidence.js +282 -0
- package/node_modules/@llblab/pi-actors/dist/lib/runs-index.d.ts +66 -1
- package/node_modules/@llblab/pi-actors/dist/lib/runs-index.js +349 -13
- package/node_modules/@llblab/pi-actors/dist/lib/runs-native-launches.d.ts +73 -0
- package/node_modules/@llblab/pi-actors/dist/lib/runs-native-launches.js +227 -0
- package/node_modules/@llblab/pi-actors/dist/lib/runs-outcomes.d.ts +141 -0
- package/node_modules/@llblab/pi-actors/dist/lib/runs-outcomes.js +292 -0
- package/node_modules/@llblab/pi-actors/dist/lib/runs-ownership.d.ts +10 -1
- package/node_modules/@llblab/pi-actors/dist/lib/runs-ownership.js +36 -4
- package/node_modules/@llblab/pi-actors/dist/lib/runs-process-windows-mi.d.ts +46 -0
- package/node_modules/@llblab/pi-actors/dist/lib/runs-process-windows-mi.js +114 -0
- package/node_modules/@llblab/pi-actors/dist/lib/runs-process.d.ts +34 -1
- package/node_modules/@llblab/pi-actors/dist/lib/runs-process.js +158 -26
- package/node_modules/@llblab/pi-actors/dist/lib/runs-results.d.ts +116 -0
- package/node_modules/@llblab/pi-actors/dist/lib/runs-results.js +518 -0
- package/node_modules/@llblab/pi-actors/dist/lib/runs-retention.d.ts +15 -2
- package/node_modules/@llblab/pi-actors/dist/lib/runs-retention.js +148 -9
- package/node_modules/@llblab/pi-actors/dist/lib/runs-session-exports.d.ts +95 -0
- package/node_modules/@llblab/pi-actors/dist/lib/runs-session-exports.js +470 -0
- package/node_modules/@llblab/pi-actors/dist/lib/runs-snapshot.d.ts +58 -0
- package/node_modules/@llblab/pi-actors/dist/lib/runs-snapshot.js +92 -0
- package/node_modules/@llblab/pi-actors/dist/lib/runs-start.d.ts +2 -0
- package/node_modules/@llblab/pi-actors/dist/lib/runs-start.js +44 -3
- package/node_modules/@llblab/pi-actors/dist/lib/runs-status.d.ts +15 -1
- package/node_modules/@llblab/pi-actors/dist/lib/runs-status.js +337 -13
- package/node_modules/@llblab/pi-actors/dist/lib/runs-supervision.d.ts +105 -0
- package/node_modules/@llblab/pi-actors/dist/lib/runs-supervision.js +501 -0
- package/node_modules/@llblab/pi-actors/dist/lib/runs-trace.d.ts +1 -0
- package/node_modules/@llblab/pi-actors/dist/lib/runs-trace.js +14 -3
- package/node_modules/@llblab/pi-actors/dist/lib/runtime.js +22 -3
- package/node_modules/@llblab/pi-actors/dist/lib/session-evidence.d.ts +37 -0
- package/node_modules/@llblab/pi-actors/dist/lib/session-evidence.js +59 -3
- package/node_modules/@llblab/pi-actors/dist/lib/state-readers.d.ts +4 -1
- package/node_modules/@llblab/pi-actors/dist/lib/state-readers.js +14 -8
- package/node_modules/@llblab/pi-actors/dist/lib/temp.d.ts +2 -4
- package/node_modules/@llblab/pi-actors/dist/lib/temp.js +4 -56
- package/node_modules/@llblab/pi-actors/dist/lib/tools-access.d.ts +3 -0
- package/node_modules/@llblab/pi-actors/dist/lib/tools-access.js +13 -0
- package/node_modules/@llblab/pi-actors/dist/lib/tools-inspect.d.ts +1 -0
- package/node_modules/@llblab/pi-actors/dist/lib/tools-inspect.js +110 -43
- package/node_modules/@llblab/pi-actors/dist/lib/tools-local.d.ts +3 -0
- package/node_modules/@llblab/pi-actors/dist/lib/tools-local.js +18 -6
- package/node_modules/@llblab/pi-actors/dist/lib/tools-message.d.ts +4 -1
- package/node_modules/@llblab/pi-actors/dist/lib/tools-message.js +126 -31
- package/node_modules/@llblab/pi-actors/dist/lib/tools-response.d.ts +31 -3
- package/node_modules/@llblab/pi-actors/dist/lib/tools-response.js +311 -47
- package/node_modules/@llblab/pi-actors/dist/lib/tools-spawn.d.ts +3 -0
- package/node_modules/@llblab/pi-actors/dist/lib/tools-spawn.js +29 -7
- package/node_modules/@llblab/pi-actors/dist/lib/trace-projection.d.ts +20 -0
- package/node_modules/@llblab/pi-actors/dist/lib/trace-projection.js +192 -43
- package/node_modules/@llblab/pi-actors/dist/scripts/async-runner.mjs +272 -194
- package/node_modules/@llblab/pi-actors/dist/scripts/conformance.mjs +14 -2
- package/node_modules/@llblab/pi-actors/dist/skills/actors/SKILL.md +46 -2
- package/node_modules/@llblab/pi-actors/dist/skills/actors/references/diagnostics.md +40 -0
- package/node_modules/@llblab/pi-actors/dist/skills/actors/references/runs.md +55 -1
- package/node_modules/@llblab/pi-actors/docs/README.md +9 -1
- package/node_modules/@llblab/pi-actors/docs/actor-inspector.md +84 -15
- package/node_modules/@llblab/pi-actors/docs/agent-experience.md +216 -0
- package/node_modules/@llblab/pi-actors/docs/async-runs.md +18 -2
- package/node_modules/@llblab/pi-actors/docs/composition-transport.md +103 -0
- package/node_modules/@llblab/pi-actors/docs/coordinator-delivery.md +204 -4
- package/node_modules/@llblab/pi-actors/docs/inspection.md +38 -2
- package/node_modules/@llblab/pi-actors/docs/output-projection-map.md +130 -0
- package/node_modules/@llblab/pi-actors/docs/releasing.md +19 -2
- package/node_modules/@llblab/pi-actors/docs/run-supervision.md +1622 -0
- package/node_modules/@llblab/pi-actors/docs/template-recipes.md +4 -0
- package/node_modules/@llblab/pi-actors/docs/windows-process-observation.md +248 -0
- package/node_modules/@llblab/pi-actors/index.ts +1 -1
- package/node_modules/@llblab/pi-actors/lib/async-runs.ts +164 -73
- package/node_modules/@llblab/pi-actors/lib/automatic-review-runtime.ts +4 -2
- package/node_modules/@llblab/pi-actors/lib/command-templates.ts +287 -138
- package/node_modules/@llblab/pi-actors/lib/execution-files.ts +118 -0
- package/node_modules/@llblab/pi-actors/lib/execution-output.ts +4 -4
- package/node_modules/@llblab/pi-actors/lib/execution-sessions.ts +57 -27
- package/node_modules/@llblab/pi-actors/lib/execution.ts +8 -0
- package/node_modules/@llblab/pi-actors/lib/extension-runtime.ts +102 -12
- package/node_modules/@llblab/pi-actors/lib/file-state.ts +16 -2
- package/node_modules/@llblab/pi-actors/lib/inspector-command.ts +2 -2
- package/node_modules/@llblab/pi-actors/lib/inspector-overlay.ts +524 -261
- package/node_modules/@llblab/pi-actors/lib/inspector.ts +101 -130
- package/node_modules/@llblab/pi-actors/lib/limits.ts +1 -0
- package/node_modules/@llblab/pi-actors/lib/observability.ts +235 -116
- package/node_modules/@llblab/pi-actors/lib/pi.ts +59 -11
- package/node_modules/@llblab/pi-actors/lib/recipe-projection.ts +232 -0
- package/node_modules/@llblab/pi-actors/lib/recipes-context.ts +27 -6
- package/node_modules/@llblab/pi-actors/lib/registry.ts +266 -36
- package/node_modules/@llblab/pi-actors/lib/run-delivery.ts +1737 -49
- package/node_modules/@llblab/pi-actors/lib/run-supervision.ts +411 -0
- package/node_modules/@llblab/pi-actors/lib/run-ui-runtime.ts +237 -73
- package/node_modules/@llblab/pi-actors/lib/runs-artifacts.ts +73 -1
- package/node_modules/@llblab/pi-actors/lib/runs-context-exports.ts +1871 -0
- package/node_modules/@llblab/pi-actors/lib/runs-context-index.ts +372 -0
- package/node_modules/@llblab/pi-actors/lib/runs-control-delivery.ts +36 -18
- package/node_modules/@llblab/pi-actors/lib/runs-control.ts +297 -1
- package/node_modules/@llblab/pi-actors/lib/runs-controls.ts +3 -1
- package/node_modules/@llblab/pi-actors/lib/runs-descendant-launches.ts +338 -0
- package/node_modules/@llblab/pi-actors/lib/runs-execution-evidence.ts +302 -0
- package/node_modules/@llblab/pi-actors/lib/runs-index.ts +345 -17
- package/node_modules/@llblab/pi-actors/lib/runs-native-launches.ts +270 -0
- package/node_modules/@llblab/pi-actors/lib/runs-outcomes.ts +377 -0
- package/node_modules/@llblab/pi-actors/lib/runs-ownership.ts +37 -4
- package/node_modules/@llblab/pi-actors/lib/runs-process-windows-mi.ts +113 -0
- package/node_modules/@llblab/pi-actors/lib/runs-process.ts +210 -34
- package/node_modules/@llblab/pi-actors/lib/runs-results.ts +601 -0
- package/node_modules/@llblab/pi-actors/lib/runs-retention.ts +134 -10
- package/node_modules/@llblab/pi-actors/lib/runs-session-exports.ts +406 -0
- package/node_modules/@llblab/pi-actors/lib/runs-snapshot.ts +143 -0
- package/node_modules/@llblab/pi-actors/lib/runs-start.ts +44 -2
- package/node_modules/@llblab/pi-actors/lib/runs-status.ts +252 -10
- package/node_modules/@llblab/pi-actors/lib/runs-supervision.ts +394 -0
- package/node_modules/@llblab/pi-actors/lib/runs-trace.ts +14 -3
- package/node_modules/@llblab/pi-actors/lib/runtime.ts +22 -3
- package/node_modules/@llblab/pi-actors/lib/session-evidence.ts +76 -4
- package/node_modules/@llblab/pi-actors/lib/state-readers.ts +16 -7
- package/node_modules/@llblab/pi-actors/lib/temp.ts +3 -56
- package/node_modules/@llblab/pi-actors/lib/tools-access.ts +13 -0
- package/node_modules/@llblab/pi-actors/lib/tools-inspect.ts +110 -51
- package/node_modules/@llblab/pi-actors/lib/tools-local.ts +37 -24
- package/node_modules/@llblab/pi-actors/lib/tools-message.ts +120 -37
- package/node_modules/@llblab/pi-actors/lib/tools-response.ts +273 -50
- package/node_modules/@llblab/pi-actors/lib/tools-spawn.ts +31 -10
- package/node_modules/@llblab/pi-actors/lib/trace-projection.ts +165 -42
- package/node_modules/@llblab/pi-actors/package.json +10 -6
- package/node_modules/@llblab/pi-actors/scripts/async-runner.mjs +272 -194
- package/node_modules/@llblab/pi-actors/scripts/conformance.mjs +14 -2
- package/node_modules/@llblab/pi-actors/skills/actors/SKILL.md +46 -2
- package/node_modules/@llblab/pi-actors/skills/actors/references/diagnostics.md +40 -0
- package/node_modules/@llblab/pi-actors/skills/actors/references/runs.md +55 -1
- package/node_modules/@llblab/pi-codex-usage/AGENTS.md +2 -2
- package/node_modules/@llblab/pi-codex-usage/CHANGELOG.md +6 -0
- package/node_modules/@llblab/pi-codex-usage/README.md +9 -5
- package/node_modules/@llblab/pi-codex-usage/lib/query.ts +229 -50
- package/node_modules/@llblab/pi-codex-usage/lib/usage.ts +9 -1
- package/node_modules/@llblab/pi-codex-usage/package.json +1 -1
- package/node_modules/yaml/LICENSE +13 -0
- package/node_modules/yaml/README.md +172 -0
- package/node_modules/yaml/bin.mjs +11 -0
- package/node_modules/yaml/browser/dist/compose/compose-collection.js +88 -0
- package/node_modules/yaml/browser/dist/compose/compose-doc.js +43 -0
- package/node_modules/yaml/browser/dist/compose/compose-node.js +109 -0
- package/node_modules/yaml/browser/dist/compose/compose-scalar.js +86 -0
- package/node_modules/yaml/browser/dist/compose/composer.js +219 -0
- package/node_modules/yaml/browser/dist/compose/resolve-block-map.js +115 -0
- package/node_modules/yaml/browser/dist/compose/resolve-block-scalar.js +198 -0
- package/node_modules/yaml/browser/dist/compose/resolve-block-seq.js +49 -0
- package/node_modules/yaml/browser/dist/compose/resolve-end.js +37 -0
- package/node_modules/yaml/browser/dist/compose/resolve-flow-collection.js +207 -0
- package/node_modules/yaml/browser/dist/compose/resolve-flow-scalar.js +225 -0
- package/node_modules/yaml/browser/dist/compose/resolve-props.js +146 -0
- package/node_modules/yaml/browser/dist/compose/util-contains-newline.js +34 -0
- package/node_modules/yaml/browser/dist/compose/util-empty-scalar-position.js +26 -0
- package/node_modules/yaml/browser/dist/compose/util-flow-indent-check.js +15 -0
- package/node_modules/yaml/browser/dist/compose/util-map-includes.js +13 -0
- package/node_modules/yaml/browser/dist/doc/Document.js +335 -0
- package/node_modules/yaml/browser/dist/doc/anchors.js +71 -0
- package/node_modules/yaml/browser/dist/doc/applyReviver.js +55 -0
- package/node_modules/yaml/browser/dist/doc/createNode.js +88 -0
- package/node_modules/yaml/browser/dist/doc/directives.js +176 -0
- package/node_modules/yaml/browser/dist/errors.js +57 -0
- package/node_modules/yaml/browser/dist/index.js +17 -0
- package/node_modules/yaml/browser/dist/log.js +11 -0
- package/node_modules/yaml/browser/dist/nodes/Alias.js +116 -0
- package/node_modules/yaml/browser/dist/nodes/Collection.js +147 -0
- package/node_modules/yaml/browser/dist/nodes/Node.js +38 -0
- package/node_modules/yaml/browser/dist/nodes/Pair.js +36 -0
- package/node_modules/yaml/browser/dist/nodes/Scalar.js +24 -0
- package/node_modules/yaml/browser/dist/nodes/YAMLMap.js +144 -0
- package/node_modules/yaml/browser/dist/nodes/YAMLSeq.js +113 -0
- package/node_modules/yaml/browser/dist/nodes/addPairToJSMap.js +63 -0
- package/node_modules/yaml/browser/dist/nodes/identity.js +36 -0
- package/node_modules/yaml/browser/dist/nodes/toJS.js +37 -0
- package/node_modules/yaml/browser/dist/parse/cst-scalar.js +214 -0
- package/node_modules/yaml/browser/dist/parse/cst-stringify.js +61 -0
- package/node_modules/yaml/browser/dist/parse/cst-visit.js +97 -0
- package/node_modules/yaml/browser/dist/parse/cst.js +98 -0
- package/node_modules/yaml/browser/dist/parse/lexer.js +721 -0
- package/node_modules/yaml/browser/dist/parse/line-counter.js +39 -0
- package/node_modules/yaml/browser/dist/parse/parser.js +975 -0
- package/node_modules/yaml/browser/dist/public-api.js +102 -0
- package/node_modules/yaml/browser/dist/schema/Schema.js +37 -0
- package/node_modules/yaml/browser/dist/schema/common/map.js +17 -0
- package/node_modules/yaml/browser/dist/schema/common/null.js +15 -0
- package/node_modules/yaml/browser/dist/schema/common/seq.js +17 -0
- package/node_modules/yaml/browser/dist/schema/common/string.js +14 -0
- package/node_modules/yaml/browser/dist/schema/core/bool.js +19 -0
- package/node_modules/yaml/browser/dist/schema/core/float.js +43 -0
- package/node_modules/yaml/browser/dist/schema/core/int.js +38 -0
- package/node_modules/yaml/browser/dist/schema/core/schema.js +23 -0
- package/node_modules/yaml/browser/dist/schema/json/schema.js +62 -0
- package/node_modules/yaml/browser/dist/schema/tags.js +96 -0
- package/node_modules/yaml/browser/dist/schema/yaml-1.1/binary.js +58 -0
- package/node_modules/yaml/browser/dist/schema/yaml-1.1/bool.js +26 -0
- package/node_modules/yaml/browser/dist/schema/yaml-1.1/float.js +46 -0
- package/node_modules/yaml/browser/dist/schema/yaml-1.1/int.js +71 -0
- package/node_modules/yaml/browser/dist/schema/yaml-1.1/merge.js +67 -0
- package/node_modules/yaml/browser/dist/schema/yaml-1.1/omap.js +74 -0
- package/node_modules/yaml/browser/dist/schema/yaml-1.1/pairs.js +78 -0
- package/node_modules/yaml/browser/dist/schema/yaml-1.1/schema.js +39 -0
- package/node_modules/yaml/browser/dist/schema/yaml-1.1/set.js +93 -0
- package/node_modules/yaml/browser/dist/schema/yaml-1.1/timestamp.js +101 -0
- package/node_modules/yaml/browser/dist/stringify/foldFlowLines.js +146 -0
- package/node_modules/yaml/browser/dist/stringify/stringify.js +129 -0
- package/node_modules/yaml/browser/dist/stringify/stringifyCollection.js +153 -0
- package/node_modules/yaml/browser/dist/stringify/stringifyComment.js +20 -0
- package/node_modules/yaml/browser/dist/stringify/stringifyDocument.js +85 -0
- package/node_modules/yaml/browser/dist/stringify/stringifyNumber.js +25 -0
- package/node_modules/yaml/browser/dist/stringify/stringifyPair.js +150 -0
- package/node_modules/yaml/browser/dist/stringify/stringifyString.js +336 -0
- package/node_modules/yaml/browser/dist/util.js +11 -0
- package/node_modules/yaml/browser/dist/visit.js +233 -0
- package/node_modules/yaml/browser/index.js +5 -0
- package/node_modules/yaml/browser/package.json +3 -0
- package/node_modules/yaml/dist/cli.d.ts +8 -0
- package/node_modules/yaml/dist/cli.mjs +201 -0
- package/node_modules/yaml/dist/compose/compose-collection.d.ts +11 -0
- package/node_modules/yaml/dist/compose/compose-collection.js +90 -0
- package/node_modules/yaml/dist/compose/compose-doc.d.ts +7 -0
- package/node_modules/yaml/dist/compose/compose-doc.js +45 -0
- package/node_modules/yaml/dist/compose/compose-node.d.ts +29 -0
- package/node_modules/yaml/dist/compose/compose-node.js +112 -0
- package/node_modules/yaml/dist/compose/compose-scalar.d.ts +5 -0
- package/node_modules/yaml/dist/compose/compose-scalar.js +88 -0
- package/node_modules/yaml/dist/compose/composer.d.ts +63 -0
- package/node_modules/yaml/dist/compose/composer.js +224 -0
- package/node_modules/yaml/dist/compose/resolve-block-map.d.ts +6 -0
- package/node_modules/yaml/dist/compose/resolve-block-map.js +117 -0
- package/node_modules/yaml/dist/compose/resolve-block-scalar.d.ts +11 -0
- package/node_modules/yaml/dist/compose/resolve-block-scalar.js +200 -0
- package/node_modules/yaml/dist/compose/resolve-block-seq.d.ts +6 -0
- package/node_modules/yaml/dist/compose/resolve-block-seq.js +51 -0
- package/node_modules/yaml/dist/compose/resolve-end.d.ts +6 -0
- package/node_modules/yaml/dist/compose/resolve-end.js +39 -0
- package/node_modules/yaml/dist/compose/resolve-flow-collection.d.ts +7 -0
- package/node_modules/yaml/dist/compose/resolve-flow-collection.js +209 -0
- package/node_modules/yaml/dist/compose/resolve-flow-scalar.d.ts +10 -0
- package/node_modules/yaml/dist/compose/resolve-flow-scalar.js +227 -0
- package/node_modules/yaml/dist/compose/resolve-props.d.ts +23 -0
- package/node_modules/yaml/dist/compose/resolve-props.js +148 -0
- package/node_modules/yaml/dist/compose/util-contains-newline.d.ts +2 -0
- package/node_modules/yaml/dist/compose/util-contains-newline.js +36 -0
- package/node_modules/yaml/dist/compose/util-empty-scalar-position.d.ts +2 -0
- package/node_modules/yaml/dist/compose/util-empty-scalar-position.js +28 -0
- package/node_modules/yaml/dist/compose/util-flow-indent-check.d.ts +3 -0
- package/node_modules/yaml/dist/compose/util-flow-indent-check.js +17 -0
- package/node_modules/yaml/dist/compose/util-map-includes.d.ts +4 -0
- package/node_modules/yaml/dist/compose/util-map-includes.js +15 -0
- package/node_modules/yaml/dist/doc/Document.d.ts +141 -0
- package/node_modules/yaml/dist/doc/Document.js +337 -0
- package/node_modules/yaml/dist/doc/anchors.d.ts +24 -0
- package/node_modules/yaml/dist/doc/anchors.js +76 -0
- package/node_modules/yaml/dist/doc/applyReviver.d.ts +9 -0
- package/node_modules/yaml/dist/doc/applyReviver.js +57 -0
- package/node_modules/yaml/dist/doc/createNode.d.ts +17 -0
- package/node_modules/yaml/dist/doc/createNode.js +90 -0
- package/node_modules/yaml/dist/doc/directives.d.ts +49 -0
- package/node_modules/yaml/dist/doc/directives.js +178 -0
- package/node_modules/yaml/dist/errors.d.ts +21 -0
- package/node_modules/yaml/dist/errors.js +62 -0
- package/node_modules/yaml/dist/index.d.ts +25 -0
- package/node_modules/yaml/dist/index.js +50 -0
- package/node_modules/yaml/dist/log.d.ts +3 -0
- package/node_modules/yaml/dist/log.js +19 -0
- package/node_modules/yaml/dist/nodes/Alias.d.ts +29 -0
- package/node_modules/yaml/dist/nodes/Alias.js +118 -0
- package/node_modules/yaml/dist/nodes/Collection.d.ts +73 -0
- package/node_modules/yaml/dist/nodes/Collection.js +151 -0
- package/node_modules/yaml/dist/nodes/Node.d.ts +53 -0
- package/node_modules/yaml/dist/nodes/Node.js +40 -0
- package/node_modules/yaml/dist/nodes/Pair.d.ts +22 -0
- package/node_modules/yaml/dist/nodes/Pair.js +39 -0
- package/node_modules/yaml/dist/nodes/Scalar.d.ts +47 -0
- package/node_modules/yaml/dist/nodes/Scalar.js +27 -0
- package/node_modules/yaml/dist/nodes/YAMLMap.d.ts +53 -0
- package/node_modules/yaml/dist/nodes/YAMLMap.js +147 -0
- package/node_modules/yaml/dist/nodes/YAMLSeq.d.ts +60 -0
- package/node_modules/yaml/dist/nodes/YAMLSeq.js +115 -0
- package/node_modules/yaml/dist/nodes/addPairToJSMap.d.ts +4 -0
- package/node_modules/yaml/dist/nodes/addPairToJSMap.js +65 -0
- package/node_modules/yaml/dist/nodes/identity.d.ts +23 -0
- package/node_modules/yaml/dist/nodes/identity.js +53 -0
- package/node_modules/yaml/dist/nodes/toJS.d.ts +29 -0
- package/node_modules/yaml/dist/nodes/toJS.js +39 -0
- package/node_modules/yaml/dist/options.d.ts +350 -0
- package/node_modules/yaml/dist/parse/cst-scalar.d.ts +64 -0
- package/node_modules/yaml/dist/parse/cst-scalar.js +218 -0
- package/node_modules/yaml/dist/parse/cst-stringify.d.ts +8 -0
- package/node_modules/yaml/dist/parse/cst-stringify.js +63 -0
- package/node_modules/yaml/dist/parse/cst-visit.d.ts +39 -0
- package/node_modules/yaml/dist/parse/cst-visit.js +99 -0
- package/node_modules/yaml/dist/parse/cst.d.ts +109 -0
- package/node_modules/yaml/dist/parse/cst.js +112 -0
- package/node_modules/yaml/dist/parse/lexer.d.ts +87 -0
- package/node_modules/yaml/dist/parse/lexer.js +723 -0
- package/node_modules/yaml/dist/parse/line-counter.d.ts +22 -0
- package/node_modules/yaml/dist/parse/line-counter.js +41 -0
- package/node_modules/yaml/dist/parse/parser.d.ts +84 -0
- package/node_modules/yaml/dist/parse/parser.js +980 -0
- package/node_modules/yaml/dist/public-api.d.ts +44 -0
- package/node_modules/yaml/dist/public-api.js +107 -0
- package/node_modules/yaml/dist/schema/Schema.d.ts +17 -0
- package/node_modules/yaml/dist/schema/Schema.js +39 -0
- package/node_modules/yaml/dist/schema/common/map.d.ts +2 -0
- package/node_modules/yaml/dist/schema/common/map.js +19 -0
- package/node_modules/yaml/dist/schema/common/null.d.ts +4 -0
- package/node_modules/yaml/dist/schema/common/null.js +17 -0
- package/node_modules/yaml/dist/schema/common/seq.d.ts +2 -0
- package/node_modules/yaml/dist/schema/common/seq.js +19 -0
- package/node_modules/yaml/dist/schema/common/string.d.ts +2 -0
- package/node_modules/yaml/dist/schema/common/string.js +16 -0
- package/node_modules/yaml/dist/schema/core/bool.d.ts +4 -0
- package/node_modules/yaml/dist/schema/core/bool.js +21 -0
- package/node_modules/yaml/dist/schema/core/float.d.ts +4 -0
- package/node_modules/yaml/dist/schema/core/float.js +47 -0
- package/node_modules/yaml/dist/schema/core/int.d.ts +4 -0
- package/node_modules/yaml/dist/schema/core/int.js +42 -0
- package/node_modules/yaml/dist/schema/core/schema.d.ts +1 -0
- package/node_modules/yaml/dist/schema/core/schema.js +25 -0
- package/node_modules/yaml/dist/schema/json/schema.d.ts +2 -0
- package/node_modules/yaml/dist/schema/json/schema.js +64 -0
- package/node_modules/yaml/dist/schema/json-schema.d.ts +69 -0
- package/node_modules/yaml/dist/schema/tags.d.ts +48 -0
- package/node_modules/yaml/dist/schema/tags.js +99 -0
- package/node_modules/yaml/dist/schema/types.d.ts +92 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/binary.d.ts +2 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/binary.js +70 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/bool.d.ts +7 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/bool.js +29 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/float.d.ts +4 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/float.js +50 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/int.d.ts +5 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/int.js +76 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/merge.d.ts +9 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/merge.js +71 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/omap.d.ts +22 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/omap.js +77 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/pairs.d.ts +10 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/pairs.js +82 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/schema.d.ts +1 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/schema.js +41 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/set.d.ts +28 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/set.js +96 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/timestamp.d.ts +6 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/timestamp.js +105 -0
- package/node_modules/yaml/dist/stringify/foldFlowLines.d.ts +34 -0
- package/node_modules/yaml/dist/stringify/foldFlowLines.js +151 -0
- package/node_modules/yaml/dist/stringify/stringify.d.ts +21 -0
- package/node_modules/yaml/dist/stringify/stringify.js +132 -0
- package/node_modules/yaml/dist/stringify/stringifyCollection.d.ts +17 -0
- package/node_modules/yaml/dist/stringify/stringifyCollection.js +155 -0
- package/node_modules/yaml/dist/stringify/stringifyComment.d.ts +10 -0
- package/node_modules/yaml/dist/stringify/stringifyComment.js +24 -0
- package/node_modules/yaml/dist/stringify/stringifyDocument.d.ts +4 -0
- package/node_modules/yaml/dist/stringify/stringifyDocument.js +87 -0
- package/node_modules/yaml/dist/stringify/stringifyNumber.d.ts +2 -0
- package/node_modules/yaml/dist/stringify/stringifyNumber.js +27 -0
- package/node_modules/yaml/dist/stringify/stringifyPair.d.ts +3 -0
- package/node_modules/yaml/dist/stringify/stringifyPair.js +152 -0
- package/node_modules/yaml/dist/stringify/stringifyString.d.ts +9 -0
- package/node_modules/yaml/dist/stringify/stringifyString.js +338 -0
- package/node_modules/yaml/dist/test-events.d.ts +4 -0
- package/node_modules/yaml/dist/test-events.js +134 -0
- package/node_modules/yaml/dist/util.d.ts +16 -0
- package/node_modules/yaml/dist/util.js +28 -0
- package/node_modules/yaml/dist/visit.d.ts +102 -0
- package/node_modules/yaml/dist/visit.js +236 -0
- package/node_modules/yaml/package.json +97 -0
- package/node_modules/yaml/util.js +2 -0
- package/package.json +3 -3
- package/node_modules/@llblab/pi-actors/banner.jpg +0 -0
- package/node_modules/@llblab/pi-actors/dist/lib/inspector-actions.d.ts +0 -16
- package/node_modules/@llblab/pi-actors/dist/lib/inspector-actions.js +0 -57
- package/node_modules/@llblab/pi-actors/lib/inspector-actions.ts +0 -79
|
@@ -56,6 +56,44 @@ A Skill Recipe is a maintained component addressed by `<skill>/<recipe>`. `spawn
|
|
|
56
56
|
|
|
57
57
|
`actors` owns generic Recipe/tool/Run mechanics. The owning capability Skill owns capability-specific selection and constraints. `swarm` owns multi-actor decomposition and integration methodology.
|
|
58
58
|
|
|
59
|
+
## Presentation Direction and Current Output
|
|
60
|
+
|
|
61
|
+
The operator-adopted target is JSON structured inputs and block-YAML runtime-output metadata, with the Actor's selected text preserved in its original format, often Markdown, outside the header. It applies to spawn/tool receipts, status, Control, inspect, errors, notifications and completions. Metadata-only replies are bare YAML, without `---` or a code fence. When a separate selected text/Markdown body follows, delimit the YAML header with `---` above and below. Choose framing by body presence, not tool synchrony or workload lifetime; a launch receipt is not the eventual Actor result. The host/runtime must separate the invocation header/arguments from every response, including errors, by one visual blank line. This boundary spacing is not an Actor-body edit, another YAML delimiter or permission to echo inputs. Tool arguments/Recipe inputs keep their supported machine contracts; no input-schema or existing Markdown-Recipe source migration follows. Runtime-owned structured fields must not become JSON strings inside YAML or Markdown-list pseudo-objects. Literal source content, private machine details/journals and native helper protocols keep their own formats.
|
|
62
|
+
|
|
63
|
+
Rollout is partial: compact launch/attachment receipts use block YAML; other operating descriptions below still include implemented list records, JSON fields and service framing. Full spawn-verbose metadata uses clone-only YAML after legacy JSON selection in current source, without a new fixed byte/depth cap; existing compiled installations may still emit JSON until separately integrated. Unsupported full projection is wholly unavailable, not partial full facts or a launch-failure/retry receipt, and structured details stay unchanged. Ordinary source captures now use the minimal YAML core and source attention uses typed YAML plus opaque body text; source/unit proof does not establish compiled-package, actual-default-entrypoint or already-loaded-host acceptance. Do not assume every current response parses as the target YAML. An Actor should return the requested report/content, not rewrite it as YAML or manufacture runtime headers, indices or service markers. The runtime owns its metadata and approved source/privacy/clipping projection. Body-authored YAML/JSON/HTML/next labels stay content, not authority. Keep historical packet bytes and required compiler framing intact; do not strip comments or reinterpret saved output to simulate rollout. This changes neither current callability/lifecycle mechanics nor source/native/acceptance authority.
|
|
64
|
+
|
|
65
|
+
Compact launches use bare block-YAML mappings for the Run/state/launch facts and nested observed locations, explicitly identify actual existing-Run reuse, and preserve multiline scalar contents. One leading response-separator LF supplies invocation spacing; it is outside the pure metadata emitter and is not a `---` wrapper. Model/thinking provenance groups are labeled model and thinking, without a redundant _policy suffix; structured data and saved text stay unchanged. A complete direct file-location row needs no repeated session-map hint; absent/unavailable/omitted rows retain one optional next node naming inspect, target=runtime, view=runs and verbose=true. It never executes automatically. Exact locations, verbose details and saved completion formats stay unchanged.
|
|
66
|
+
|
|
67
|
+
Fresh automatic completions have one AX capture path with no format selector: YAML frontmatter begins index, run, state, then kind:primary for admitted primary/final Actor response or kind:diagnostic for explicit diagnostics. Markdown follows unindented outside the closed metadata block, without #N heading, result:/preview: wrapper or whole-body literal fence. One record uses the same shape as many. Display index is not member_index or generation; default indices are packet-local. Whole-result/reference omissions and non-done omitted states stay explicit. Known display loss appears at the actual cut as [N characters omitted], counting Unicode scalar characters of admitted retained text/field, never raw/private loss; no extra clipping ellipsis or body clipping flags/counts in YAML. Unknown upstream completeness/privacy remains separately visible at the body boundary, not a fabricated count or a known positive loss. Untracked fallback has no kind and cannot become primary. Full text fitting its share has no display-cut marker; upstream uncertainty still prevents a completeness claim. New packets share48KiB UTF-8 including references/framing across at most64candidate rows, with frozen equal shares and no unused-share redistribution or fixed16KiB result/2KiB preview cap. Captured members remain bounded at256. Text is admitted work output/final response or explicit error/failure diagnostics, never launch commands. Successful composition/retry/Pi text-print can retain text_basis:actor_response; scope and exact references remain technical, while original coverage facts remain structured retained data. The model receives one complete content with whole source/generation/location references or truthful omission/inventory, not a standing full-map instruction. The TUI renders compiler headers/markers as Text and each body as independent native Markdown; only whole validated header reference/location rows and framing disappear in compact view. Body-authored YAML, next/tool/batch and omission lookalikes remain content. Content-bound hashes/ranges/blocks are display consistency, not authentication, source/read/action or acceptance authority. Invalid/missing hints and expansion reveal full original text, without Run-source IO. Old saved codecs, budgets, labels, excerpts, counts and hints replay exactly with no refresh, repair, ACK/resend or restyling—including earlier #N packets and the first frontmatter encoding. Fresh unavailable indices use quoted YAML "?"; an old saved unquoted value is not silently corrected. Routine successful delivery adds no separate completions/delivery-accepted toast; actual failures and handled-generation fences remain. These source/package rules do not prove that an already loaded session was reloaded. Fresh explicit agent Trace previews append boundary … and [omitted: N chars] from normalized retained turn, with a separate upstream [omitted: unknown]. N counts only display loss after existing session privacy, not discarded original/source text. Short well-formed summaries stay unchanged, including authored older-looking markers; malformed retained text yields Agent turn [omitted: unknown] (malformed retained text), never a guessed count or repaired scalar. This is read-time display only, not a rewrite/version of saved packets or sources. Other legacy clipping is not yet uniformly covered. Follow retained references selectively without inventing completeness or permission. Agent Trace ids reference recorded entry provenance, not aggregate traversal order or chronological event numbers. Native entry keys survive sibling growth; bounded legacy/ambiguous/private-metadata fallbacks are not permanent identities, source immutability or new read/work permission.
|
|
68
|
+
|
|
69
|
+
Current completion index fields are packet-local, not persistent historical indices; earlier saved #N headings keep their original meaning. Session completion streams are adopted work in progress, not an available action; do not invent a start-stream command, initialize a missing counter or reinterpret old headings. A kernel-only path commits numbered snapshots/counters/activation atomically. Its internal runtime bridge requires trusted fresh-session opt-in plus current manager/generation binding; the default entrypoint does not opt in and no public tool/command exposes it. Unknown state does not fall back to local numbering on that path. Startup/reload/resume, including ambiguous imports, cannot resume a stream automatically; stored numbers remain data, not a new session grant. A pending target or projected scope is not an active stream. Missing state never authorizes bootstrap, and unknown/conflicting delivery never authorizes bypass or reallocation. Saved numbers stay exact; an admitted unavailable counter or unfitting whole range freezes an unknown index (quoted "?" in fresh YAML, #? in older layouts) rather than resetting or partially numbering a packet.
|
|
70
|
+
|
|
71
|
+
Fresh compact Run/tool/Recipe inspect text uses flat AX records. Run views still show only their run/view header; choose verbose for the existing structured evidence, not a newly available snapshot. Tool status preserves callability/activation/source/usage facts and lists required/optional arguments; schema stays JSON. Recipe registry/focused doctor preserve counts, partiality, portable source and rejection. At most one known read-only Recipe inspect hint becomes typed next; other advice is opaque instruction content, not a parsed/executable command or permission to spawn/update a tool. All next_actions remain in details. These are read-time projections; saved history and machine payloads are not restyled. Runtime status/runs/triage now also uses flat runtime/view records for exactly the existing package/review facts, full owned inventory count and existing pressure/attention counts. It adds no snapshot, duration, default status integration or new read; verbose navigation stays independently bounded. Successful automatic completion delivery is silent outside the result records: no separate completions/delivery-accepted receipt or UI toast. Durable acceptance and handled-generation fencing remain; real callback, delivery, recovery and teardown failures stay reportable in the same field style without changing effects or closure authority. Fresh watcher diagnostics now use watcher/scope/path/diagnostic/recovery fields with whole literal paths; rearm restores watch acceleration, not new terminal/native authority. Automatic retirement notices distinguish a returned stop request, reported cancellation, skipped or failed stop path, always with closure unconfirmed. The stop path includes notification callbacks, so a fallback may follow effects already performed; do not infer an effect-free graceful-stop failure or replay work. Existing attempted/result/error behavior remains, and no discarded lower cause is reconstructed. Inspector layouts remain separate.
|
|
72
|
+
|
|
73
|
+
Locally authored inspect refusals now use AX records with target_kind/target/tool, result and actual supported-value lists. target_kind names a selector family, not ownership. Only missing registered-tool/schema errors retain one known read-only inspection next; missing tools still forbid substituting spawn for tool invocation. Whole variable fields and next actions fit the shared16KiB text allowance or show explicit field/action omission counts, never shortened targets or inferred character loss. Body-authored labels stay content. Dependency/authorization/session failures keep their owning behavior, without a blanket wrapper or new private-cause disclosure. Discovery/status hooks may already have run before a local refusal; it is not a no-effects receipt or authority to replay.
|
|
74
|
+
|
|
75
|
+
Runtime validation guidance is limited to pre-dispatch failures. An executor/launcher failure can retain partial effects; matching argument-like wording is not a reason to repeat the invocation. Preserve the original cause and diagnose it instead; this adds no retry or closure guarantee.
|
|
76
|
+
|
|
77
|
+
Four locally authored Control guard errors use caller target/action/result records and real supported_actions/available_actions sequences. Those lists are diagnostic data, not automatic instructions or readiness/actuation permission. Targets and whole selected lists fit16KiB or show explicit field/entry omissions; malformed selected text is unavailable, not repaired. Omission counts are not private/upstream character counts. Normalizer/session/dependency and actual dispatch failures keep their owning behavior; a guard is no global no-effects receipt or permission to retry.
|
|
78
|
+
|
|
79
|
+
Local spawn guards identify unsupported state_dir or invalid as with field/result and the selected caller value, not an admitted Run. Whole values fit16KiB or show field omission; malformed text is unavailable, not repaired. The host may reject unsupported state_dir by its own schema before the facade, so not every SDK validation error has AX text. This adds no launch, no-effects receipt, retry permission, generated identity or change to Recipe/session/post-launch failures.
|
|
80
|
+
|
|
81
|
+
Successful normal register_tool receipts now use flat tool/result/source/callable_now fields and actual argument/warning sequences. A non-template source stays one exact literal; complete warnings take priority under16KiB, and whole-field/list omissions count only selected metadata, not hidden chars. Call advice remains opaque instruction, not automatic invocation; an unverified registration keeps its existing read-only tool-status next. Persistence is not callability: rely on the existing activation evidence, never substitute spawn or infer fresh host readiness from this layout. Transaction/errors/list/delete/draft and saved messages are not restyled by this slice.
|
|
82
|
+
|
|
83
|
+
Registry name listings now show the same selected sorted names as one list with coverage; an overlarge whole group is omitted rather than mislabeled empty, and malformed text is unavailable without repair. Counts describe selected names, not active/callable or the complete loaded-host registry. Deletion returns tool/result and preserves the manual reload note as opaque instruction: neither a current-map miss nor returned deletion proves full host removal or authorizes automatic reload/retry. Existing partial-effect exceptions and machine details remain unchanged.
|
|
84
|
+
|
|
85
|
+
Draft-promotion success uses the same field grammar only for its original selected name/new-update/source=draft/callable display and one prior hint. It adds no default/body/argument/path or activation facts and does not become an ordinary registration transaction. A zero, opaque legacy display or unavailable field is not permission to infer readiness or repair callability. Whole scalar/action omissions stay explicit; invocation advice is content and only the existing read-only status hint may be typed. Promotion callbacks/display can still fail after writes with original errors; no automatic rollback/retry/reload follows.
|
|
86
|
+
|
|
87
|
+
Local register_tool source-mode refusals now identify field/result and actual replacement/reference/source-mode/inherited-field choices. Existing correction advice is instruction content, not automatic retry/update or a no-effects receipt. Supplied values are not echoed. The host owns clone/coercion/schema behavior before the facade, so use the actual outcome rather than assuming every wrong-typed request reaches a local AX guard. Other registry errors and all existing activation/transaction contracts remain unchanged.
|
|
88
|
+
|
|
89
|
+
Ordinary invalid/reserved-name and new-registration missing-source errors now use AX fields. Reserved-name display is only the old selected value, not ownership or tool-invocation permission; an unfit/malformed value is wholly omitted/unavailable, not repaired. Missing-source choices and prior correction advice do not impose a new source rule on listing or existing-tool updates. Dependency/normalizer/blocker errors keep their own behavior; no retry, overwrite or no-effects authority follows from these records. Ordinary/draft already-registered refusals likewise identify only the original selected name and preserve Use update=true to overwrite as opaque instruction. This layout neither merges their admission policies nor authorizes overwriting, automatic retry or invocation; unfit/malformed name display stays explicitly omitted/unavailable under16KiB. Local template-shape errors now identify nested Recipe-shaped template, empty sequence or unsupported type, with actual string/object/sequence choices and old repair advice as opaque instruction. Supplied values are not echoed; this adds no source mode, global null/undefined rule, retry permission or change to host validation/coercion and dependency errors. Four later authored-Recipe validation errors now likewise identify defaults, description or template with fixed field/result. Their original stages remain: front null can delete, existing source can be inherited, and host schema/earlier source checks may reject or route a request before these local errors. No new value echo, automatic correction, activation or no-effects authority follows. A delegated-source runtime-owned-default refusal now names only its existing first selected key under defaults/key/result with prior advice as opaque instruction. It neither displays supplied values/all reserved keys nor authorizes retry or changes command-template/default admission behavior; original copy faults can still precede the refusal. Draft-path refusals now identify the allowed-root or resolved-path reference as a whole literal, or explicit omission/unavailability when unfit/malformed. Old summary-inspection advice remains opaque instruction, not automatic action or a new guarantee that a summary lists every draft. Existing root/exists checks and unowned faults keep their semantics; this is not filesystem absence, no-effects or native proof. Public from-normalization failures now show the prior displayed source, reason, legacy active-skill summary and doctor advice as AX. Source stays a whole literal or explicit field omission/unavailability; reason/summary/body labels are opaque, and advice remains instruction rather than an automatic call. The legacy summary is not a complete Skill inventory, display is not freshly normalized ownership, and a failure does not grant retry, broader source/cause access or host readiness. Normal candidate-admission refusals now likewise report selected joined diagnostics and, only on the existing source branch, prior displayed source/legacy summary/doctor advice. Diagnostics/summary are opaque values, not complete lists or raw causes; upstream diagnostic clipping remains legacy/unproven. Full fields fit16KiB or have explicit omission/unavailability without repair. This does not alter admission, make failures effect-free/transactional, or authorize automatic correction, retry or invocation. Draft invalid-Recipe refusals now similarly show only the previously selected optional reason or joined diagnostics with draft/result. They add no path/body, source permission, raw cause or rollback guarantee; read/diagnose/admission behavior and legacy upstream limits remain. Whole values fit16KiB or show omission/unavailability without repair, and absent reason is not synthesized. Outer registration transaction failure now also separates old stage, resolution_generation, legacy summary and surfaced error as AX after the original cleanup path. That generation identifies resolution context, not fresh Run identity/epoch. Inner rollback/advice wording remains opaque error content, not proof of complete host rollback/removal or permission to repeat. Original cleanup/formatting faults and partial effects remain; no new cause/source access or transaction guarantee. Registry activation/promotion/deletion UI notices now use report/tool fields with only old selected display. A report is not callable or complete-host-removal proof; original hasUI/callback/post-effect failures remain. Whole well-formed notifier values are not subject to the model16KiB cap, malformed selected name is unavailable without repair, and RPC forwarding is not client handling/visibility proof. Recipe registry watcher warning/refresh reports use AX fields too; their old default-root wording is not a freshly verified actual path, and restart/register_tool advice is only opaque instruction, never automatic action. Startup registry warnings use category sequences with whole opaque selected diagnostics; authored next/tool labels are content, malformed selected text unavailable and old doctor advice only opaque instruction. The reports do not establish callability, full upstream diagnostics or new source permission.
|
|
90
|
+
|
|
91
|
+
Compact Control receipts now use flat Markdown-list key/value records: run names have no duplicated namespace, action/result/delivery/handling remain distinct, and an optional next node names the inspect tool and its target/view. Multiline values retain their internal Markdown under an outer indentation; they are not extra status fields. This is a presentation of existing facts, not a raw dump or proof of completion. Delivery is not handling; a legacy kill attempt is not full termination. Changed-owner/generation refusals withhold replacement status even in verbose/detail output. Kernel delivery exceptions retain original/later causes and genuinely admitted correlation, but raw cause chains are not a new public message schema or proof that handling failed. Actor-local dispatch exceptions stay errors and report delivery/handling/effects uncertainty with a fresh-owned-inventory hint; they intentionally withhold saved correlation, including verbose, because an admission-era context does not prove current reply scope. Do not interpret this as a handling receipt or no-effect refusal. Do not repeat destructive actions to obtain verbose detail or follow a changed owner/generation blindly. See the Runs reference for this boundary.
|
|
92
|
+
|
|
93
|
+
The awaited Control facade also preserves its surfaced request failure if lifecycle release subsequently throws, keeping ordered private original/release causes without coercion or flattening. A single request or release-only rejection stays exact; existing handled/delivered facts are not rolled back. This does not unlock transport early, prove release/native closure, expose saved correlation or authorize automatic retry. Generic mutation/replacement paths likewise retain original/later faults without making failed operations effect-free, transactional or safe to repeat. Existing bounded platform write retries do not rerun preparation callbacks.
|
|
94
|
+
|
|
95
|
+
Manual archive/prune exceptions can follow moved/copied/removed data. A single surfaced rejection stays exact; multiple original, diagnostic-recording and release faults retain ordered private causes without rollback or automatic replay. A queued record alone does not prove retirement ran, and a later failure does not undo an admitted filesystem effect. Cause chains are not a new public receipt or native closure proof; do not assume a pruned Run-local Trace remains readable.
|
|
96
|
+
|
|
59
97
|
## Persistent capability workflow
|
|
60
98
|
|
|
61
99
|
To make `music-player/playback` callable as `music_player` with a default source:
|
|
@@ -95,7 +133,7 @@ Use the `actors/*` helpers only for their narrow requested result or intentional
|
|
|
95
133
|
|
|
96
134
|
The current Pi instance owns user authority and the final result; pi-actors creates explicit local Runs, while companion transports provide presence rather than hidden instance creation. Keep short single-boundary work inline when delegation adds no value. For several participants, reasoning allocation, quorum, or integration methodology, read `swarm`.
|
|
97
135
|
|
|
98
|
-
Treat `attention: "steer"` as an actor-authored urgent semantic checkpoint at Pi's next safe boundary, never as a status-derived completion signal; the later root terminal still arrives through its ordinary completion batch.
|
|
136
|
+
Treat `attention: "steer"` as an actor-authored urgent semantic checkpoint at Pi's next safe boundary, never as a status-derived completion signal; the later root terminal still arrives through its ordinary completion batch. Fresh source steers use block-YAML run/checkpoint metadata and typed artifacts/run_files groups with shown/omitted/total path sequences. Metadata-only output is bare; an actual selected body follows a closed YAML header without added outer indentation or compiler fences. Body-authored next/tool labels remain content, not actions. The complete serialized message, whole references and later-group omission coverage fit the unchanged16KiB cap; unknown legacy body loss uses [omitted: unknown], never inferred private-tail lengths. Saved envelopes keep their exact earlier text, not a refreshed/reformatted checkpoint. Unfit essential text is retryable pre-admission unavailability, not partial delivery. Fresh source notify/followup uses the same selected metadata/raw-body and first-eight-slot reference coverage, without a new shared16KiB/48KiB cap. Raw malformed/oversize urgent essentials still refuse before reference reads; YAML escaping does not grant admission. Notify remains visible status only; followup alone adds non-displayed checkpoint context, with unchanged event details/order/seen-id/wake policy. New legacy body clips use [omitted: unknown]; compatibility formatter text keeps its older spelling. Fresh urgent diagnostics are AX event/attention/stage records: retryable admission is not a no-effect receipt, failed send leaves delivery/presentation unconfirmed, and unknown/conflicting recovery evidence leaves the envelope queued. Diagnostic values preserve their inner Markdown under240UTF-16 source units; clipped/malformed text has [omitted: unknown], not a private-tail count. Saved diagnostic evidence/envelope content and original Error/cause are not rewritten. Neither inferred private-tail counts nor new body/privacy permission follows. See Runs for limits.
|
|
99
137
|
|
|
100
138
|
## Run workflow
|
|
101
139
|
|
|
@@ -111,7 +149,13 @@ Run = Recipe + Trace + Control
|
|
|
111
149
|
3. Inspect `view=trace` when retained observations or attention matter.
|
|
112
150
|
4. Inspect `view=control` before diagnosing service readiness, stale work, or saturation.
|
|
113
151
|
5. Send `message` only for an action declared and consumed by that controlled Recipe.
|
|
114
|
-
6. Use terminal state, result, declared artifacts, and execution evidence to prove completion.
|
|
152
|
+
6. Use terminal state, result, declared artifacts, and execution evidence to prove completion. When an outcome includes a retained primary-source, declaration-inventory or diagnostic-metadata reference, use that exact reference for further reading, not guessed captures or sibling files. Literal previews may be clipped; their field/range/counts describe what was shown. Diagnostic sources contain recorded command/error/failure-reason metadata only, not complete primary output; other recorded fields may be referenced without being shown. Artifact inventories list declarations only: they do not assert that target files exist or were produced, or grant body-read permission. Explicit unavailability has no guessed legacy body/path fallback.
|
|
153
|
+
|
|
154
|
+
Compact launch receipts include `run_files` as nested block YAML containing the exact selected observed location values, labeled observed locations/mutable for the exact launched Run generation when the current session and physical identity agree; otherwise they report unavailability or whole-row omission. Machine `file_navigation` details stay JSON-compatible; saved terminal messages retain their own original encodings. Selectively ordinary-read those starting locations when needed; layout/size hints are not body, privacy, terminal or native proof. No evidence bodies or session-wide catalog map are read to build this row. New terminal packets also freeze bounded location rows for captured completion members at fresh current-session admission. Each shown result keeps its whole Run-file row or explicit per-record omission; wholly omitted results stay covered by result omission/inventory. This describes Run-row coverage, not a complete file/tree inventory. Older captured formats retain their original shown/omitted/total counters; unavailability remains explicit. Ordinary-read selected paths only when needed. Packet reload/render never refreshes sources, and old absent/request-only formats keep their text. Source/npm SDK verifies an explicitly requested ordinary read from a delivered terminal result path; this is research, never routine completion polling or new primary/privacy/clock/native authority. Use the request only for file investigation, not routine completion/status polling. Copied locations/hints remain data, never transferred scope; older batches keep their original text.
|
|
155
|
+
|
|
156
|
+
For selective investigation of already cataloged files, use `inspect target=runtime view=runs verbose=true`, then ordinary file tools on its current-session root-first navigation. Ordinary maps keep latest-registration order between roots and prioritize known failed subtrees within each root. For a failed investigation add status=failed: inventory is filtered, while the full owned map prioritizes observed failed subtrees across roots, always ancestors first. Priority uses only exact-generation matched inventory observations, not complete terminal truth. Launches and compatible singleton attachments populate the catalog; reads do not backfill missing locations. A `catalog: unavailable` launch warning is not workload failure: do not spawn again merely to repair navigation. The starting map's format hints do not certify syntax, encoding or complete output. See [Runs](./references/runs.md) for selective recorded-capture research and resume boundaries.
|
|
157
|
+
|
|
158
|
+
Trusted parent-session shutdown keeps the existing Kill attempts for quit/reload/new/resume/fork; a Run is not promised to survive session replacement. This is logical-session ownership, not independent PID-bound ownership for parallel hosts with the same ID. A teardown report is not scope closure or crash/hung-host cleanup, and bare AgentSession.dispose alone emits no shutdown. See the Runs reference for the boundary.
|
|
115
159
|
|
|
116
160
|
A Run exposes only `recipe`, `trace`, and `control` views. Control is bounded actor-local input, not peer messaging or chat. See [Runs](./references/runs.md).
|
|
117
161
|
|
|
@@ -9,8 +9,28 @@ inspect target=recipes view=status
|
|
|
9
9
|
inspect target=recipes view=doctor identity=<skill>/<recipe>
|
|
10
10
|
```
|
|
11
11
|
|
|
12
|
+
Compact Recipe/Run/tool replies use flat AX fields without changing their existing evidence or authorization. Required/optional tool arguments are sequences, with none distinct from unknown. Focused source_location remains one exact literal value. Run compact replies still identify only run/view: request verbose for structured evidence, and tool schema remains structured even without verbose. Compact text selects at most one existing hint; only exact read-only recipes doctor/imports/summary inspection literals become typed next nodes. Other advice stays instruction content with its original Markdown, never executable metadata or authority to rerun work/register a tool. The full original next_actions array remains in details; do not infer callability from an advisory string.
|
|
13
|
+
|
|
12
14
|
Use the focused doctor form for one intended identity. It reports active-Skill ownership, exact resolvability, partial-catalog state, component status, portable source location, resolution generation, any rejection, and bounded next actions. Use the unfiltered doctor only for catalog-wide diagnosis. A partial catalog does not imply every exact component is unavailable. If the owning Skill is inactive, report that blocker rather than locating and running its helper manually.
|
|
13
15
|
|
|
16
|
+
## Inspection request refusals
|
|
17
|
+
|
|
18
|
+
Locally authored target/view/identity/source/tool/schema refusals now show AX fields and actual supported-value lists. target_kind identifies only the selector family; no ownership, no-effects or native claim follows. A missing tool retains the no-spawn-substitution safety note and a read-only Recipe doctor next. Unavailable callable schema preserves selected callability/activation facts and one read-only tool-status next. Generic syntax/view guards add no routine action. An oversized selected scalar/action is omitted whole with shown/omitted/total counts under the shared16KiB text bound; those counts cover fields/actions, not hidden text length. A next_action omission record is not an executable next node. Opaque multiline labels are not parsed into commands.
|
|
19
|
+
|
|
20
|
+
This applies only to errors authored by inspect itself. Session/scope/source/dependency errors retain their owning contract and original propagated values/causes; existing fail-soft catches are unchanged. Discovery/status callbacks may already have run before a refusal. Diagnose through the original owning surface rather than treating an error as proof of no effects or retry permission.
|
|
21
|
+
|
|
22
|
+
## Control request guards
|
|
23
|
+
|
|
24
|
+
Locally authored unsupported runtime action, unavailable runtime port, unavailable Run generation and undeclared actor-local action errors now identify caller target/action/result and actual supported_actions/available_actions lists. A singleton remains a list; none differs from an explicitly omitted group. These are diagnostic options, not a command, readiness proof, native receipt or automatic replay instruction. Whole target/list groups fit16KiB including public spacing or have explicit selected-field/entry omission coverage; malformed selected text is unavailable without source repair or hidden character counts.
|
|
25
|
+
|
|
26
|
+
This does not restyle normalizer/session/scope/dependency failures, expose status/input/owner/generation/correlation or change the existing actor-local awaited-send error boundary. Status/getter/legacy join observations can fail before a local diagnostic; runtime callbacks can throw after effects. Preserve those original exceptions and diagnose the existing owner rather than broadening a catch or assuming no effects.
|
|
27
|
+
|
|
28
|
+
## Spawn request guards
|
|
29
|
+
|
|
30
|
+
The facade's own unsupported state_dir and invalid as errors use field/result records; as is selected caller input, not an admitted Run or generation. Namespace/id refusals show accepted_format and, for invalid ids, the existing ASCII character rule. Whole values fit16KiB including spacing or are explicitly omitted; malformed selected text is unavailable without repair or hidden character counts. Opaque multiline value labels are not actions, and no routine next/retry/no-effects receipt follows.
|
|
31
|
+
|
|
32
|
+
The actual host clones/validates public arguments first. Its unchanged schema rejects unsupported state_dir before the facade and keeps the SDK's own validation text; do not bypass that boundary to obtain AX. Direct facade getter/method/coercion failures, Recipe/session/launch/draft errors and post-launch effects keep their original owners and behavior.
|
|
33
|
+
|
|
14
34
|
## Persistent tool failure
|
|
15
35
|
|
|
16
36
|
```text
|
|
@@ -18,6 +38,18 @@ inspect target=tool:<name> view=status
|
|
|
18
38
|
inspect target=tool:<name> view=schema
|
|
19
39
|
```
|
|
20
40
|
|
|
41
|
+
Successful normal register/update-or-persisted text now separates tool/result/source/callable_now, lists required/optional args and warnings, and keeps one prior hint. Non-template source references are whole literals; safety warnings take budget priority. Whole selected fields/groups/actions fit16KiB or carry omission counts; malformed selections are unavailable without repair or hidden character counts. Invocation advice is opaque instruction rather than an automatic call. The unverified branch retains one typed read-only tool-status next; all existing next_actions/details remain. Post-persistence callbacks/formatting can still fail with their original values, so text does not add rollback, fresh activation or retry guarantees. List/delete/draft/transaction errors and notices remain separate.
|
|
42
|
+
|
|
43
|
+
Listing returns the original current Map's sorted names with selected-name coverage. The entire selected group is shown or explicitly omitted/unavailable within16KiB; none means the selected list is actually empty. This is not active-tool/callability, complete-host or lifetime inventory evidence. Delete returns tool/result with the original manual reload note as opaque instruction. A missing current-map entry does not delete an orphan recipe file or prove no effects; a returned deletion is not complete loaded-registry removal. Do not reload or repeat automatically to change that presentation. Errors after unlink/map/active-set/notify effects keep their original values, without a new wrapper/rollback.
|
|
44
|
+
|
|
45
|
+
Draft-promotion success now uses selected tool/result/source=draft/callable display and the first prior hint, without adding undisplayed args/defaults/path/body or activation-boundary facts. Existing zero/opaque display and later getter disagreement are not repaired into a new Boolean/readiness claim. Scalar/action fields are whole within16KiB or explicitly omitted/unavailable. Only the producer's exact canonical tool-status hint is typed read-only; invocation advice stays instruction. Original display conversion may still fail after persistence/map/activation/notify effects, including Symbol or unprintable values; preserve that failure rather than replaying or importing normal-registration rollback behavior.
|
|
46
|
+
|
|
47
|
+
Four local source-mode refusals now show field/result plus replacement fields, accepted reference forms, mutually exclusive source modes or inherited args/async fields. Previous repair advice remains opaque instruction; it is not a typed mutating retry/update or no-effects proof. These fixed diagnostics neither echo source values nor restyle normalization/resolution/admission/transaction failures. Outer name locks may already have observations before a local error.
|
|
48
|
+
|
|
49
|
+
The host first clones/coerces/validates args. It rejects unsupported values/object-valued from before execute, but numeric from can normalize to a string; an unnamed valid request can still return the existing name list. Direct getter/descriptor/trim probes are not SDK-cloned DTOs. Do not override schema or force a public error solely to obtain AX text, and do not infer the caller's original type from post-validation data.
|
|
50
|
+
|
|
51
|
+
Ordinary invalid-name, reserved-name and new-registration missing-source errors now use field/value/result or a real source-mode sequence with prior opaque repair advice. No raw caller name/source/body is newly exposed. Reserved selected display fits whole16KiB including spacing or has scalar omission/unavailability; this is not hidden character loss or ownership/invocation proof. Empty-name listing and existing-tool update reusing source remain unchanged. Normalizer/reserved-set/resolution/authoritative/blocker exceptions retain original behavior; a dependency blocker is not reformatted as an owned refusal. SDK numeric name coercion may reach a different local guard than the direct request, while object-type schema rejection stays outside execute. Both ordinary and draft already-registered errors now use field/value/result with exact Use update=true to overwrite instruction content. Distinct Map/authoritative-file/exists/blocker/update checks remain; the selected display does not disclose source/recipe bytes or certify no effects, rollback, fresh host membership or overwrite permission. Whole scalar omission/unavailability and raw observation/coercion failures remain explicit and unchanged, respectively. Nested Recipe-shaped template, empty sequence and unsupported template type now have fixed template/result AX errors and real supported-type choices, retaining prior correction as opaque instruction without supplied body/source echo. External expansion/getter failures stay raw. Front null/empty deletion, undefined/inherited source and later authoring errors are not reclassified; a numeric SDK template may be coerced to a command string rather than reaching the direct unsupported-type refusal. Later non-object defaults, missing command description, authoring-stage null and missing final template now use fixed field/result without supplied values. Preserve the error's actual stage rather than treating null globally invalid or every missing source as a late template failure: host defaults schema rejection, front deletion and earlier missing-source refusal still precede or bypass these guards. Schema argument/description/default/retained-template observation faults keep their original owner and values. The delegated-source runtime-owned-default-key refusal now names the old first selected key only with fixed defaults/result and opaque remove-default/retry advice. Key order and complete prior default copy remain; do not infer a complete key listing, supplied values, early effect-free rejection, global command-template ban or permission to repeat. Host SDK preserves selected-key error normalization without granting readiness or overwrite authority. Draft outside-root/current-not-found diagnostics now identify field draft and only the original allowed-root/resolved-path literal; root refusal does not add the refused caller path. Whole references fit16KiB or are explicitly omitted/unavailable without repair/private counts. Old summary hint stays instruction content, not an automatic call/listing guarantee. Getter/resolve/relative/dot-prefix/exists behavior and raw faults remain; not-found text is not stronger absence/native/host proof. Public from-normalization wrapper now reports only original displayed source/reason/legacy active_skills_summary and opaque doctor instruction, with whole-field omissions/unavailability under16KiB. Inner normalizer errors, Error.message.trim/String and old display/summary/doctor observation order remain. Do not parse comma summary/body Next labels, infer discarded counts/private causes, fix undefined/source-hint disagreement or automatically execute advice; other validation/transaction errors stay separate. Normal candidate-admission refusal now uses field recipe/result and opaque diagnostics_summary, plus old displayed source/legacy summary/instruction only when the old requestedSource branch is truthy. Preserve pre-Error diagnostic join/String ordering and original bounded upstream diagnostic text, including explicit unavailability for malformed selected clipping; do not reconstruct a full list/body/cause or infer no effects, rollback, current readiness or retry permission. Draft invalid-Recipe raw/candidate refusals now likewise use fixed draft/result plus old optional reason or joined diagnostics only, not new paths/bodies/causes. Separate raw read/diagnose calls, reason truthiness, original draft Error-before-join timing and upstream4096UTF16 candidate cap stay unchanged; malformed selected text is unavailable without repair. This neither merges normal/draft policy nor proves no effects/rollback or authorizes retry. Outer registration transaction-failure text now identifies old stage/resolution_generation/legacy summary/error only after existing cleanup. That generation is resolution-context display, not Run scope/current host epoch. Error.message/String behavior and all restoration/unlink/Map/reactivation/setActive faults remain exact; a formatting error can follow cleanup, and legacy inner rollback/advice text is not authoritative rollback/readiness or retry permission. Whole selected fields fit16KiB or show omission/unavailability without repairing private data. Inner activation/persisted-admission errors and receipts stay separate. Registry activation/promotion/deletion notifier text now uses old report identity/tool display only, not new readiness/removal evidence. Original info type/positions/hasUI gate/callback exceptions remain; ordinary UI has no borrowed model16KiB limit. Multiline text stays literal/native-wrapped, malformed selected name is explicitly unavailable, and RPC message forwarding does not certify display or handling. Loaded terminal/phone remains separately gated. Recipe registry watcher warning/refresh notices now use AX report plus original opaque repair instruction, without changing direct ctx.ui.notify, pending/dedup/load/callback failures. The old ~/.pi/agent/recipes report is not freshly verified root metadata; it does not authorize restart, register_tool replay or reload. Startup registry warnings now expose category sequences including singletons, preserving original selected diagnostics and existing shadow/bash suppression. Authored labels stay inside values; malformed selected text is unavailable, no borrowed model cap or recovered private tail. Doctor advice stays opaque instruction, not automatic inspection. Formatting still precedes runtime.notify/hasUI; a report/fault does not undo prior scan/registry effects.
|
|
52
|
+
|
|
21
53
|
Distinguish persistence, registry admission, host registration, active-tool membership, and `callable_now`. Confirm the source identity, effective caller schema, separate tool/spawn usage, and last launch kind when exposed.
|
|
22
54
|
|
|
23
55
|
If persistence succeeded but callability is false, do not use `spawn` and claim the tool worked. Follow the reported activation boundary or stop.
|
|
@@ -33,6 +65,14 @@ inspect target=runtime view=status
|
|
|
33
65
|
|
|
34
66
|
Use Recipe view for captured identity/launch evidence, Trace for bounded observations, Control for readiness/capacity/stale work, and runtime status for kernel-level health. Treat retained-history completeness honestly.
|
|
35
67
|
|
|
68
|
+
Compact runtime replies now use flat runtime/status, runtime/runs or runtime/triage records from the same existing facts. runs counts the full current-owner inventory, not a display page; verbose file navigation has its own independent bounds. Triage scalar counts need not equal its40displayed detail rows. This is not a new Run status/snapshot, duration, body source or routine polling route. Core callback errors keep their diagnostic content and original error forwarding. Completion recovery reports the original pending/evidence/reason without forcing resend; an idle batch shows delivery accepted only after durable acceptance, not as proof of model handling. Teardown killed/failed/skipped/discovery counts and a whole literal summary path are a teardown report, not whole-scope closure. Stored packet/history text is not regenerated.
|
|
69
|
+
|
|
70
|
+
## Watcher and automatic retirement notices
|
|
71
|
+
|
|
72
|
+
Watcher diagnostics use watcher/scope/path/diagnostic/recovery records. Exact paths are literal values, not commands or body permission. Degradation preserves the existing reconciliation/rearm guidance; rearmed reports restored acceleration only. IDs/timestamps/code/scope and bounded history are unchanged, not complete lifetime evidence. Diagnostic bodies are opaque, including apparent next/tool labels.
|
|
73
|
+
|
|
74
|
+
Automatic retirement reports stop request returned, cancellation reported, skip or failure, with closure unconfirmed. Neither a returned callback nor a truthy cancellation report proves owned-scope termination. stop path failed includes notification failure after earlier stop/cancel effects; do not blindly replay work or infer no actuation. Candidate/attempt/callback/result/error behavior and lower-layer information loss remain unchanged. This is separate from manual archive/prune, native closure and actual lifecycle receipts.
|
|
75
|
+
|
|
36
76
|
## Safe failure protocol
|
|
37
77
|
|
|
38
78
|
1. Keep the exact intended Recipe/tool/Run identity.
|
|
@@ -10,7 +10,9 @@ spawn recipe=<skill>/<recipe> values={...} as=run:<id>
|
|
|
10
10
|
|
|
11
11
|
Use the owning capability Skill to choose the Recipe and capability-specific values. Retain the returned Run id. A spawn result reports `launch_kind: "spawn"`; it is never evidence of registered-tool invocation.
|
|
12
12
|
|
|
13
|
-
A rare Skill Recipe may declare `singleton: true`. Do not pass `as`: the runtime derives `run:<skill>` plus the canonical `<skill>/<recipe>` identity, allows at most one singleton Recipe per Skill, and returns the same compatible healthy active Run instead of launching a duplicate. Contradictory Recipe identity, startup values, Control, or ownership fails closed. Delegation inherits both singleton identities instead of retargeting them. A
|
|
13
|
+
A rare Skill Recipe may declare `singleton: true`. Do not pass `as`: the runtime derives `run:<skill>` plus the canonical `<skill>/<recipe>` identity, allows at most one singleton Recipe per Skill, and returns the same compatible healthy active Run instead of launching a duplicate. Contradictory Recipe identity, startup values, Control, or ownership fails closed. Delegation inherits both singleton identities instead of retargeting them. Runtime tool failures after executor entry or async launcher handoff retain their original error/cause/details instead of guessed argument-repair guidance. A later missing-value failure can follow partial work; inspect the existing evidence rather than blindly replaying the invocation. Pre-dispatch argument guidance is not proof that no preparation effect occurred, and dispatch is not actuation or closure. Configured retry policies remain unchanged.
|
|
14
|
+
|
|
15
|
+
Compact spawn/async-tool receipts use flat Markdown-list fields: run, state, launch_kind and admitted optional facts; model/thinking policy source-value relationships may nest. The displayed Run key has no duplicated namespace. Multiline values preserve their Markdown content, and structured/verbose data remains unchanged. A compact attachment receipt explicitly says existing Run reused; that reports the backend's reuse fact, not another generation, readiness promise or scope proof. A terminal result is never reused; after its runner exits, restart keeps the logical Run id but creates a new fenced generation. Continuity still depends on actor-owned validated state, not the Run id alone.
|
|
14
16
|
|
|
15
17
|
## Observe
|
|
16
18
|
|
|
@@ -22,8 +24,50 @@ inspect target=run:<id> view=trace
|
|
|
22
24
|
inspect target=run:<id> view=control
|
|
23
25
|
```
|
|
24
26
|
|
|
27
|
+
Fresh root completions use index-first YAML frontmatter (index, run, state, admitted kind), followed by raw left-edge Markdown. No external #N heading, result:/preview: wrapper, list nesting, whole-body fence, Batch caption, members wrapper or routine outer counter is added. Primary/final Actor response uses kind:primary; explicit error/failure diagnostic text uses kind:diagnostic, never a launch command. Untracked fallback has no kind and keeps unknown original completeness/privacy explicit outside YAML. Known cut loss is [N characters omitted] at the cut, with no extra ellipsis or body clipping counters/flags in metadata. Unknown upstream loss remains separately unknown and does not assert a known positive omission. Exact source/generation/parent/location references remain in complete model content, with whole references or explicit omission, captured inventory recovery and non-done omitted states. The compact TUI independently renders literal headers/markers and native Markdown bodies from validated content-bound blocks; only whole header reference/location rows and framing are hidden. Expansion and invalid/missing hints reveal original text. Hashes/layout/markers establish consistency/correlation only, never authentication, read/action permission, acceptance or native truth. Authored YAML/next/tool/batch/omission lookalikes stay body content. Fresh packets share48KiB UTF-8 including service data, equally between up to64candidate rows, with256captured members and no redistribution of unused shares or fixed16KiB/2KiB text cap. Full admitted text fitting its share without upstream uncertainty has no cut marker; otherwise use the scalar/CRLF-safe prefix and exact retained-source loss. Allocation/text is frozen at admission; rendering/recovery does not reread sources or reallocate. Unsupported Pi event/control output is withheld. Source basis stays in reference metadata; retained structured coverage facts are not exposed as YAML clipping fields. Pending/queued/presented older formats—including #N records and the first frontmatter draft—keep exact bytes, hints and budgets. Encoding names are storage replay data, not public product choices, source permissions or work authority. No standing full-map instruction or automatic research/read follows; use selective same-session investigation when needed.
|
|
28
|
+
|
|
29
|
+
Current completion index values restart within each packet; they are not session-wide historical references. Completion streams are adopted but not enabled, and no start-stream command is available yet. Do not infer an active stream or reset a counter from missing metadata or a pending target, and never relabel older saved packets. The kernel-only allocator now commits fixed scope/order/indices, the counter and first-packet target activation together, and an internal fresh-session bridge can use it after current manager/generation admission. The default runtime does not opt in; no public action exposes it. Event reason or a matching ID alone is insufficient. Old callbacks/wrappers cannot act after replacement; fresh wrappers must belong to the current original manager. Startup/reload/resume and ambiguous imports remain closed to stream capture/ACK, without changing saved packets or inferring a counter from history. Its whole-range exhaustion or admitted counter unavailability yields a frozen unknown index (quoted "?" in fresh YAML; #? in older saved layouts), never partial indices or an automatic fresh stream. Old packets retain their original scope while a pending switch waits; uncertainty does not permit reallocation. Stream state outlives packet cleanup/receipt rotation. Malformed/missing state remains refused, not a zero counter or proof of non-connection.
|
|
30
|
+
|
|
31
|
+
Fresh explicit agent Trace summary clips use prefix… [omitted: N chars] from normalized retained turn; upstream [omitted: unknown]. The prefix is at most160UTF-16 source units, shortened by one only to keep an original surrogate pair intact. N counts Unicode code points removed from the normalized already-redacted retained turn, not its earlier4000-unit/session loss or a complete Actor answer. Malformed retained text has only [omitted: unknown], not a repaired prefix or invented gap. This read-time projection leaves original detail/source/history and short valid summaries unchanged; authored marker-looking text does not become metadata or refreshed saved content.
|
|
32
|
+
|
|
33
|
+
Agent Trace ids are opaque recorded-entry references within the current Run's command/file/session namespace, not chronological numbers. Native keys retain the same entry across sibling-session growth and manifest reorder; changed admitted entry/session identifiers change the key, without certifying arbitrary file edits. Ambiguous/private/degraded metadata has only bounded record/read-local fallback, and missing-id or oversized source behavior is unchanged. Do not parse an id as a path, treat it as original privacy/immutability or use it to recreate live authority.
|
|
34
|
+
|
|
25
35
|
Trace is bounded retained observation, so read its completeness summary. Prove final outcomes with terminal status, result, declared artifacts, and execution evidence rather than assuming retained Trace is exhaustive.
|
|
26
36
|
|
|
37
|
+
## Attention Reference Bounds
|
|
38
|
+
|
|
39
|
+
Fresh source notify/followup and explicit steers use block-YAML metadata with opaque selected body text. Metadata-only output is bare; an actual body follows opening/closing `---` with no added outer indentation or compiler fence. Artifacts precede Run files as typed shown/omitted/total mappings with whole path sequences. Counts describe unshown declared unique paths, not characters, missing files, production or body permission. Consider only the first eight unique nonempty declarations per group before filtering malformed Unicode; do not repair a path or fill its slot from a later declaration. No target existence/body is inspected. Steers alone share16KiB UTF-8 across the complete serialized metadata, delimiters, body and minimum later-group coverage; raw malformed/oversize essentials refuse before reference reads; unfit essential text/coverage remains retryable pre-admission unavailability, never a partial checkpoint. Ordinary notify/followup keeps its existing independent field/slot limits without a new shared16KiB/48KiB cap or path shortening. Source/unit proof is not compiled/actual-default-entrypoint or loaded-host acceptance.
|
|
40
|
+
|
|
41
|
+
A legacy body keeps at most500UTF-16 source units with surrogate alignment and no whitespace/Markdown normalization. A clipped value ends with U+2026 outside its source literal when literal rendering is used and has [omitted: unknown]; malformed visible text is unavailable rather than repaired. A separate body-basis/upstream note means original completeness/privacy is unproven, not necessarily positive loss. Canonical Trace still has no body payload. Saved envelopes retain their exact content through pending/queued/presented recovery; an admitted event is reused before any new formatting, even if its current source would now be malformed. Neither restyle nor blindly replay work.
|
|
42
|
+
|
|
43
|
+
Ordinary notify/followup selects this AX layout only for new sink delivery. Notify stays visible status without waking a model; followup alone adds ordinary non-displayed pi-actors-run-trace context with the same content and original event details. Physical order, seen-id handling, startup priming, sink failure/effect semantics and wake policy are unchanged. Committed strings are never regenerated. There is no format-selection option or alternate new-message layout; saved envelope content remains exact without passing through these formatters. Fresh urgent diagnostics use AX event/attention/stage records. Admission reports remains retryable, not no effects or a new workload retry instruction. A failed send is request failed with delivery/presentation unconfirmed; it does not prove the model received nothing. Unknown/conflicting recovery retains phase queued with the observed evidence status/reason and does not force resend. Diagnostic values preserve raw inner Markdown/CRLF under240UTF-16 units, aligning an original pair; clipping uses boundary … and [omitted: unknown], while malformed visible text is unavailable without an invented gap/count. This is current UI presentation only. The journal last_error keeps its earlier whitespace normalization/trim and4096-unit message-only retention, not a full original Error/cause or authoritative count. This creates no new source, native authority or retry service.
|
|
44
|
+
|
|
45
|
+
## Investigate Known Files
|
|
46
|
+
|
|
47
|
+
Compact spawn/async-tool receipts now carry `file_navigation`: observed canonical starting locations for that exact generation, admitted against the current session before and after observation. It needs no catalog/body read or original producer key; missing/stale/foreign locations stay unavailable, and oversize rows are omitted whole within the compact card budget. Locations are mutable research data, not body/privacy/terminal/native proof. The compact run_files value keeps the whole selected observed location data in nested block YAML or reports a whole Run-row omission with shown/omitted/total counts, within the shared16KiB bound including response spacing. JSON-compatible details and saved terminal-packet encodings are unchanged. The optional current-session full-map command remains available but is not repeated when a complete direct location row is actually shown; absent/unavailable/omitted rows retain one next node naming tool=inspect, target=runtime, view=runs, verbose=true rather than disguising a command as observed data. It never executes automatically. New completion packets also capture bounded member location rows once, in root-first order with observed failed subtrees before peer children. They use only the remaining shared model budget after outcomes, with separate honest Run-row counts. Reload/render never reads sources or refreshes that data. Old absent/request-only packet formats keep their earlier text; source/npm SDK verifies an explicitly requested result read from a terminal row, without routine polling or original producer keys. Inherited locations/hints never transfer ownership.
|
|
48
|
+
|
|
49
|
+
For an explicit file investigation, request the existing management route:
|
|
50
|
+
|
|
51
|
+
```text
|
|
52
|
+
inspect target=runtime view=runs verbose=true
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
Its `navigation` selects only the actual current logical session's already cataloged, generation-checked directories. Start at the root's context index/result, then follow selected locations with ordinary file tools; no original producer key is needed. Resuming the same saved session after restart retains this research scope; a new/forked/cloned session does not inherit it through copied history or paths.
|
|
56
|
+
|
|
57
|
+
The ordinary map keeps independent roots latest-registration-first and puts known failed child subtrees before other siblings without moving a descendant ahead of its ancestors. For an explicit failed investigation use inspect target=runtime view=runs status=failed verbose=true. This filters inventory, not navigation: the full owned map then puts observed failed root subtrees first, with recency as the stable peer tie-break. Its priority.root_order is latest_registration or failed_subtrees_first and priority.basis=observed_failed_rows; missing/unmatched observations remain unranked, not proof of success. Ordering grants no ownership/terminal/native authority and does not read extra evidence or rewrite the catalog.
|
|
58
|
+
|
|
59
|
+
This bounded map marks file_inventory_scope=canonical_starting_locations and reports file locations, observed sizes and format_hint (json/jsonl/text). Hints describe the expected layout, not validated syntax/UTF-8 or complete output; it is not a full file inventory, body, original privacy, terminal/clock/native truth or authority to change state. Missing/nonregular/stale locations stay unavailable, whole-row omission counts are explicit, and corrupt/missing catalogs report `catalog_unavailable` without repair or turning healthy Runs into failures. New launches and explicit compatible singleton attachments register their exact existing generation; reads never scan/backfill missing entries. A `catalog: unavailable` launch warning means that separate registration attempt did not complete, not that the work failed. Do not relaunch merely to repair the map; even failed publication can leave committed catalog bytes. Current ordering covers directly owned rows and their exact same-session parent links, not a complete cross-session descendant tree. Compact/default inspection still does not build a map. Launch text offers that request as a fallback when no complete direct row is shown; existing new-outcome formats retain their optional request. Neither embeds a session-wide map or file bodies.
|
|
60
|
+
|
|
61
|
+
The published_sessions link, when physically present, locates the fixed session catalog under the owned Run root. No semantic index or original producer is required for this location or ordinary read. Presence is not certified catalog content/privacy/publication, and it does not enumerate raw session directories or automatically read nested previews. Missing/nonregular/symlinked locations have no usable path; never guess another location from that refusal.
|
|
62
|
+
|
|
63
|
+
For explicit recorded-capture research, read the mapped execution manifest, select the recorded command/attempt/stream reference and use ordinary file tools selectively. Keep the canonical capture layout under the mapped owned Run root; recorded strings are not permission to follow arbitrary declarations or leave that root. Distinguish reported saved/observed bytes and incomplete persistence from the current file size; reading a file does not certify complete primary output or original curated privacy. This is an explicit research choice, not an automatic fallback when an outcome's retained primary source is unavailable.
|
|
64
|
+
|
|
65
|
+
## Parent Shutdown
|
|
66
|
+
|
|
67
|
+
Existing parent-session teardown applies at trusted SDK quit/reload/new/resume/fork, including session replacement rather than only process exit. The current lifetime accepts fresh matching SDK context wrappers once; stale/replaced callbacks cannot act merely because a logical ID matches again. This uses existing exact-session-owner and Run-generation Kill guards, not delivery ancestry or a global PID scan. UI callback failure does not itself kill Runs or remove their parent shutdown binding.
|
|
68
|
+
|
|
69
|
+
Do not infer successful native closure from a teardown count, signal attempt or status. Abrupt Pi death, hung shutdown and bare AgentSession.dispose without the trusted event remain outside this repair. Logical-session ownership also does not isolate parallel Pi hosts reopening the same ID; no host-instance ownership or new native supervisor is introduced. Do not repeat destructive work from a missing report or assume stream/timing authority from shutdown binding.
|
|
70
|
+
|
|
27
71
|
## Control
|
|
28
72
|
|
|
29
73
|
Send an actor-local action only when the root Recipe declares and implements it:
|
|
@@ -34,8 +78,18 @@ message target=run:<id> action=<declared-action> input={...}
|
|
|
34
78
|
|
|
35
79
|
Inspect Control when readiness, capacity, stale work, or saturation matters. Put large data in an artifact and send only a bounded reference or instruction. Use runtime-owned termination for a stuck Run rather than inventing undeclared service actions.
|
|
36
80
|
|
|
81
|
+
Read a compact Control receipt as a flat Markdown-list record, not a raw state dump: run/action identify the request; result, delivery and handling keep their stage meanings. Queued/delivered leaves handling unconfirmed rather than guessing the current journal state. The displayed run name omits its redundant run: prefix; actual next-action targets retain canonical run:<id> syntax. Multiline Markdown values are indented without injecting record nodes into their content. At most one next node describes an inspect tool/target/view; an unrecognized advisory is kept as instruction text, not guessed tool arguments or automatic execution. A kill attempt leaves full termination unconfirmed, regardless of legacy stopped/killed flags; Trace can record the attempt but cannot prove full-scope closure. Use the one contextual next action only when deeper evidence is needed; changed ownership/generation requires fresh owned inventory, never a blind retry. Request verbose JSON on the original action when full detail is needed, not by repeating a destructive action. An error after actuation can retain partial effects. Even delivery_failed can coexist with a recorded handled Control; use its existing admitted correlation and owned Control inspection when available, not automatic replay. Kernel exceptions retain the original transport value and later failed-status-recording errors, including separate FIFO write/close faults, without erasing partial effects. Their cause/errors chains are private diagnostic evidence, not a newly exposed tool schema or handling/closure receipt. Public actor-local dispatch exceptions remain failures, with a compact conservative message: delivery and handling unconfirmed, effects may already exist, do not repeat automatically. Use its fresh-owned-inventory hint only when investigation is needed, then select currently owned evidence; it is not routine polling. Saved ids/generation and raw causes are withheld even in verbose because admission-time scope does not prove reply-time scope. A long request target is wholly omitted with a separate run_omission reason/shown/omitted/total record under 16 KiB, never cut into a misleading reference. Public errors remain failures and use the same flat AX record with a multiline warning and an owned-inventory next action; saved ids/generation/raw causes are still not exposed. Missing admission correlation is never guessed. The awaited sendRunControl facade now retains its surfaced admission/delivery rejection plus a later lifecycle-release fault as ordered private AggregateError errors/cause, without flattening or coercing the original. A sole request/release error remains exact, including undefined, and handled/delivered facts are not rolled back. The existing await/lock interval is unchanged: no kill-independence, exhaustive release/native closure, current reply-scope or lower-layer already-masked cause is recovered. A missing Trace or correlation does not prove no action occurred, and archive/prune failure can follow a move/removal. Verbosity never grants ownership of replacement/foreign state: changed-owner/generation refusals omit that replacement status in public details/JSON as well as compact text, retaining the refusal and its safe inventory follow-up.
|
|
82
|
+
|
|
83
|
+
Manual archive/prune keeps its existing terminal/owner/generation/scope checks. Errors can follow an archive move, preserved artifact copy or completed directory removal. Kernel preserves a single surfaced rejection exactly, including primitive/undefined/original AggregateError; if later failure-text formatting, failed-record persistence or lock release also fails, ordered private cause/errors retain the original plus those later failures. Journal append/release has its own nested boundary; original aggregates are not flattened. A committed queued row may fail release before operation admission, while handled bytes/effects may exist before a later recording/release error. These are separate facts, not rollback, an atomic receipt or permission to repeat retirement. Inspect only available owned evidence selectively; no Run-local Trace after prune, missing correlation or exhaustive cleanup/native closure is promised. Automatic age cleanup remains its existing best-effort policy, not a new public error archive. Underlying synchronous locked mutations also retain exact callback/release failures in a private ordered aggregate without coercion/flattening or re-execution; callback-written bytes may already exist. A normal return, sole callback failure or sole release failure stays unchanged. This is neither asynchronous lock semantics nor successful-release/native proof, a new public receipt or recovery of an already-masked lower error. Atomic JSON/text replacement also keeps its exact surfaced rejection; a later retry-code accessor fault is retained privately after the original rather than replacing it. Existing bounded platform replacement retries remain unchanged and rerun neither preparation callbacks nor the containing operation. Replacement errors may follow committed bytes; no rollback, exhaustive cleanup or power-loss guarantee follows.
|
|
84
|
+
|
|
37
85
|
Control is not actor chat, peer routing, or a task inbox. A Recipe import does not create a peer actor. Several actors/subagents require the `swarm` methodology in addition to these Run mechanics.
|
|
38
86
|
|
|
87
|
+
## Tracked Completion Excerpts
|
|
88
|
+
|
|
89
|
+
Fresh completion bodies place [N characters omitted] directly at a known display cut, outside YAML and without an extra ellipsis. N counts Unicode code points of already-admitted postprivacy text: the exported primary source, retained Actor response or named diagnostic field, not complete native stderr or discarded private output. Original source totals/ranges remain in structured retained bindings; they are not metadata flags claiming full output. Upstream/legacy completeness/privacy may remain explicitly unknown even when the retained text fits. Source references stay exact; whole unfit references are explicitly omitted, never clipped. Saved packets preserve their original text/count grammar, including old direct omitted:N chars fields. Do not infer missing original lengths, widen source retention or treat an ellipsis as completeness; capture/layout identifiers are not tool arguments or read/work authority.
|
|
90
|
+
|
|
91
|
+
For an explicitly requested agent Trace view, clipped summaries show `[N characters omitted from retained turn; upstream count unknown]`. N counts only local display loss from the existing privacy-projected, whitespace-normalized retained turn; it is not a complete answer/session length. The source preview remains at most 160 UTF-16 units, aligned to full Unicode scalars. Malformed retained text reports `[omitted count unknown: malformed retained text]` instead; details/sources are not repaired. Short valid summaries and all previously saved completion/steer messages remain unchanged. This adds no automatic polling, retained body source or original-private-projection guarantee.
|
|
92
|
+
|
|
39
93
|
## Safety
|
|
40
94
|
|
|
41
95
|
Operate only on owned Runs and their active generation. Never edit Run state to force an outcome, bypass process identity checks, or signal processes directly from UI/instruction code. Restart creates new generation-local evidence; inspect the exact generation before destructive lifecycle action.
|
|
@@ -4,16 +4,24 @@ Living index of all documentation in the `/docs` directory.
|
|
|
4
4
|
|
|
5
5
|
## Documents
|
|
6
6
|
|
|
7
|
+
- [agent-experience.md](./agent-experience.md) — Adopted project-wide AX standard: JSON structured inputs, block-YAML runtime-output metadata and unchanged authored text/Markdown; tool receipts and outcomes share the direction, while history/service framing and pending rollout remain explicit
|
|
8
|
+
- [output-projection-map.md](./output-projection-map.md) — Audited current output functions/egress, metadata versus opaque content/machine data/UI chrome, and owned tests/coupled migration gates; not a completed YAML rollout
|
|
7
9
|
- [command-templates.md](./command-templates.md) — Portable synchronous command execution standard
|
|
8
10
|
- [template-recipes.md](./template-recipes.md) — Saved JSON/Markdown recipe standard, imports, and reusable command-template graph composition
|
|
9
11
|
- [async-runs.md](./async-runs.md) — Run lifecycle, state, Control, Trace, cancellation, and terminal reconciliation
|
|
10
|
-
- [coordinator-delivery.md](./coordinator-delivery.md) — Active model-step completion overlays, idle batching, durable acceptance,
|
|
12
|
+
- [coordinator-delivery.md](./coordinator-delivery.md) — Active model-step completion overlays, idle batching, durable acceptance, explicit urgent Pi steering, and the adopted completion-stream contract under implementation (not enabled)
|
|
11
13
|
- [actor-inspector.md](./actor-inspector.md) — Owner-filtered actor-instance navigation through Recipe, Trace, and Control
|
|
12
14
|
- [inspection.md](./inspection.md) — Complete `inspect` target/view matrix, authorization boundaries, and diagnostic routes
|
|
13
15
|
- [tool-registry.md](./tool-registry.md) — Local `pi-actors` registry storage and `register_tool` adaptation
|
|
14
16
|
- [recipe-library.md](./recipe-library.md) — Packaged standard recipe library such as async subagents, coordinator pipelines, utilities, and music playback
|
|
15
17
|
- [releasing.md](./releasing.md) — Guarded tag validation, npm Trusted Publisher setup, registry verification, and GitHub Release convergence
|
|
16
18
|
|
|
19
|
+
## Planned Contracts
|
|
20
|
+
|
|
21
|
+
- [windows-process-observation.md](./windows-process-observation.md) — User-approved recovery preparation: passing inert Windows x64 MI child experiment, reviewed unadmitted raw codec and artifact preparation contract; broader profile evidence, unsigned asset distribution and default activation remain separate gates
|
|
22
|
+
- [run-supervision.md](./run-supervision.md) — Accepted future supervision contract and implemented AX/evidence slices, with same-logical-session file research and candidate-bound acceptance; the next selective AX/runtime release does not enable deadlines, independent owner-loss supervision or public completion streams
|
|
23
|
+
- [composition-transport.md](./composition-transport.md) — Recorded design intake: portable JSONL Recipe bundles and optional host CodeMode orchestration, with launch/outcome separation; bundle grammar and asset scope remain unadopted and outside the current UX/AX release
|
|
24
|
+
|
|
17
25
|
## Project Surfaces
|
|
18
26
|
|
|
19
27
|
- [Human product entrypoint](../README.md)
|
|
@@ -8,6 +8,20 @@ Open the live owner-filtered Run browser with:
|
|
|
8
8
|
|
|
9
9
|
The Inspector follows the kernel directly. It shows Runs owned by the current Pi session and offers exactly three tabs.
|
|
10
10
|
|
|
11
|
+
Presentation follows the project-wide [Agent Experience (AX) standard](./agent-experience.md): Recipe, Control, all Trace-detail metadata and captured Kill fields use real block YAML. Agent-turn detail keeps selected text/Markdown outside metadata without added outer indentation; feedback messages remain literal selected text. Readable tables still serve comparison and navigation. Preserve chronological ranks, ids, source order, focus, selection, keyboard navigation and privacy; machine Trace JSON is unchanged, and source/headless checks are not authorized live terminal/phone acceptance.
|
|
12
|
+
|
|
13
|
+
## Document and detail layout
|
|
14
|
+
|
|
15
|
+
Every metadata document shares the same YAML 1.2/core encoder. Mappings use `key: value`, nested collections use two-space indentation, and `-` introduces only real sequence members; no synthetic `item` key is inserted. Scalar types, singleton sequences and empty `[]`/`{}` retain their shapes. Unknown or ambiguous keys/strings are safely quoted. Process stdout/stderr tails and other non-agent selected strings are YAML scalar data, using literal or quoted forms that preserve decoded CRLF, blanks, trailing spaces, headings, lists, apparent headers and code fences exactly. Their contents never become extra fields, Markdown bodies or actions.
|
|
16
|
+
|
|
17
|
+
Long YAML lines and paths wrap by native terminal-column/grapheme rules without cosmetic clipping. Preferred separator breaks keep original spaces/slashes/commas; soft continuation creates no omission marker. The existing two-space terminal tab policy remains display-only. Narrow soft-wrapped frames are not claimed to be independently parseable YAML; strict shape/value round-trips apply before terminal wrapping. Root fields serialize separately to preserve their stripe ownership across nested and wrapped lines. Source values/journals, scroll/focus/selection/IDs/ranks/source/privacy/body budgets and public JSON stay unchanged. Complete overlay scenarios and literal/Unicode/stripe properties belong to the source and installed compiled owners; loaded colored-terminal/phone acceptance remains separate.
|
|
18
|
+
|
|
19
|
+
### Agent turns and tool steps
|
|
20
|
+
|
|
21
|
+
Opened `agent.turn` detail separates literal YAML metadata from independent native Markdown bodies for selected assistant/user/thinking text and tool-result text blocks. Each body begins at the left content edge, with no added horizontal/vertical component padding, code-block gutter, nested `assistantText`/`result` scalar or whole-body fence. Authored list/code/YAML indentation remains in the exact renderer input; Markdown interprets its own visual syntax. One unfinished fence cannot consume a later body or metadata header. Source-authored JSON, YAML, comments and apparent action/header labels remain content, never parsed into metadata or actions.
|
|
22
|
+
|
|
23
|
+
Root metadata and non-text result parts remain YAML block mappings/sequences. Each tool-call mapping leads with `name`, then `arguments`; retained service fields such as `id` and `resultError` follow, and retained `result` metadata comes last. Selected result text still follows as its independent native Markdown body, not a YAML scalar. Missing fields are not invented, and this display order never rewrites the retained call or reorders calls. Metadata-only fragments are bare; a separate body's field-path header has opening/closing `---`. Field paths identify selected display slots; numeric components are array positions, not event identities or chronological ranks. Present selected undefined values remain visible as UI-only `value_state: undefined` records, distinct from null, literal text and absent optional fields. These records do not alter saved data or certify source availability. Existing source selection/redaction, budgets, unknown fields, usage, arguments, error facts, stripes, paging, selection and action fences remain unchanged. The shared metadata encoder also serves other Inspector documents; this does not update an already loaded extension. Compiled/installed parity and permitted live/phone acceptance remain separate boundaries.
|
|
24
|
+
|
|
11
25
|
## Recipe
|
|
12
26
|
|
|
13
27
|
Shows captured execution provenance:
|
|
@@ -19,31 +33,84 @@ Shows captured execution provenance:
|
|
|
19
33
|
- declared artifacts and actor-local actions;
|
|
20
34
|
- model/thinking policy and launch source.
|
|
21
35
|
|
|
22
|
-
Captured Recipe evidence belongs to the Run generation and does not change when an active Recipe file later changes. Skill components display logical identities such as `artifacts/report`; private physical `source_file`, `skill_dir`, and `recipe_dir` stay out of Inspector and model-facing views.
|
|
36
|
+
Captured Recipe evidence belongs to the Run generation and does not change when an active Recipe file later changes. Skill components display logical identities such as `artifacts/report`; private physical `source_file`, `skill_dir`, and `recipe_dir` stay out of Inspector and model-facing views. Document fields render as YAML mappings, nesting only for actual objects/sequences. A singleton action remains a sequence; a complex sequence element is its original mapping, not an `item` wrapper or a synthetic #0 identity. Empty []/{} distinguish empty containers; null and selected undefined display states remain distinct. Existing provenance selection and privacy are unchanged.
|
|
23
37
|
|
|
24
38
|
## Trace
|
|
25
39
|
|
|
26
40
|
Shows the unified bounded Trace projection. Sources include lifecycle/runtime observations, Controls, owned Pi turns, command-log tails, results, artifacts, and diagnostics. The source selector displays only `all` plus sources present in the current projection from `lifecycle`, `control`, `process`, `agent`, `artifact`, and `runtime`. Select a row to open structured detail.
|
|
27
41
|
|
|
28
|
-
Trace ordering stays deterministic and newest-first: timestamp descending, same-source physical ordinal descending, fixed internal source rank, then stable id.
|
|
42
|
+
Trace ordering stays deterministic and newest-first: timestamp descending, same-source physical ordinal descending, fixed internal source rank, then stable id. The list now uses shared chronological ranks `#N`, `#N−1`, … from recorded-observation metadata before source/display clipping, not current-view positions. Filtering selects from that same basis and may leave gaps; scrolling never restarts it. Another later retained event advances the newest rank beyond the 100-row source/display tail. The numbers describe recorded chronology, not a lifetime count or persistent event identity; this context is available in row detail rather than a standing first-row explanation. Known missing history, unavailable/private/missing-time metadata, unsupported coverage, duplicate keys, index overflow or inconsistent legacy equal-time ordering gives `#?`, with its reason in detail rather than a guessed offset. Detail retains id/provenance and original `projection_sequence` (including zero) and adds UI-only `chronology`; public Trace JSON/canonical event schemas stay unchanged. Source sequences may repeat and prove no cross-source causality. Terminal/result/execution/artifact evidence retains its separate authority; path/redaction/body limits and id-based selection remain unchanged.
|
|
43
|
+
|
|
44
|
+
Trace rows are one-physical-line previews: native terminal-column clipping and retained newlines show a visible … at the actual display gap, while opening the row retains the same full already-projected item/detail. Short rows gain no synthetic gap and authored ellipses remain literal. This does not disclose raw/private tail lengths, change source omission counters or promise unretained source text. A real incomplete-history warning stays visible (Trace incomplete… at narrow width). Routine numbering/explanation banners are absent; #? still marks unavailable numbering, with the reason in existing detail. The selected Trace triangle starts at the left content edge without an added gutter; unselected ranks stay aligned. Error rows no longer add a redundant ! after the rank: the existing source/kind, error coloring, summary and detail remain. Non-attention rows reserve no empty marker column; the existing non-error attention A stays visible where applicable. Authored exclamation marks are content, not removed. This removes display noise without guessing history or hiding actual loss. This is limited to Trace table layout; aligned Run selector, source/rank/order/filter/selection/cache/scroll/stripes and public JSON are unchanged.
|
|
45
|
+
|
|
46
|
+
Trace items and the lazily read journal warning summary share the current per-Run/generation overlay cache. Arrow/page/filter/detail/resize navigation reuses that snapshot instead of reopening/reparsing trace.jsonl on each render. Explicit invalidation, Run/generation changes and the existing one-second refresh invalidate the cache; a new incomplete-history warning appears after the next refresh. This is read-local caching, not immutability, fresh native proof or a promise of measured live frame latency.
|
|
47
|
+
|
|
48
|
+
Agent Trace ids now bind recorded entry provenance rather than aggregate traversal position. Native keys include the recorded session header, entry/role and command/file namespace after the existing manual projection's metadata privacy checks; their public spelling is opaque. Growth in a sibling session or manifest reorder no longer changes an unchanged native entry's key, so existing id-based selection remains on that entry. A changed admitted session-header identifier changes the key. Empty/duplicate/missing-header or degraded/private entry metadata falls back to an admitted parsed-record position, not a promise of permanent identity; a privacy-changed namespace has only read-local legacy identity. Hidden raw values and bodies are not digest inputs. Missing-id records and oversized files retain their existing refusal behavior. This does not certify source immutability, original producer privacy, active session/work authority or absolute chronological numbering.
|
|
49
|
+
|
|
50
|
+
### Chronological numbering: requested replacement
|
|
51
|
+
|
|
52
|
+
The requested replacement is one mixed-source chronology whose newer events have higher numbers: newest-first `#100`, `#99`, …, `#1`; another later event advances to `#101`. Filtering selects that same numbered chronology, so gaps may be visible, and scrolling does not restart numbering. The bounded recorded-observation implementation now replaces the superseded positional `#1…N` list. It deliberately does not claim complete original lifetime numbering when history is missing or source provenance is unproven.
|
|
53
|
+
|
|
54
|
+
The existing projection is not a complete append-only event stream:
|
|
55
|
+
|
|
56
|
+
- The per-source collection cap is 100 before the overall display cap. A canonical journal with 102 retained events still yields 100 projected canonical rows even with `limit: 200`; its latest source sequence advances while array length does not. Reversing that array cannot provide a lifetime ordinal.
|
|
57
|
+
- Process stdout/stderr rows are mutable observations with fixed ids and timestamps derived from current file metadata. Updating one stream can move that same id across other events without appending a canonical event. Artifact observations have the same snapshot-versus-event distinction.
|
|
58
|
+
- A newly retained event may have an older timestamp. Existing append/source order then differs from chronological display order. A recomputed chronological rank can change for an already known id; it must not be mistaken for an immutable event identifier.
|
|
59
|
+
- Canonical compaction/read-loss evidence, bounded session turns and missing legacy history do not provide one complete mixed-source chronological prefix. A source-local counter or a snapshot DTO cannot recover missing global positions.
|
|
60
|
+
|
|
61
|
+
The implemented common basis collects bounded scalar metadata before source/body/display clipping, with explicit coverage/unavailability. Canonical and Control keys/times come from their already bounded reads; Control input/error projection is not expanded, and previously observed process/artifact snapshots are reused without extra target probes. Eligible pre-tail session entries use the identical opaque agent identity helper as body rows. The metadata key array is bounded by the existing4MiB Trace limit, independently of the unchanged body/display caps. Validation confirms canonical101→102 with100 visible rows, mixed metadata205 with200 displayed rows, source-filter gaps, old source-sequence detail, late/mutable rank changes, UTF8 metadata overflow and equal-time ambiguity. Some legacy same-source/cross-source tie relationships are not a total order: if the metadata rank cannot preserve all existing all/source-specific presentation orders, numbering is unavailable rather than changing that ordering. Keep existing body permissions and budgets; do not publish additional bodies, synthesize events during a read or add a persistent numbering service by implication. Use the existing timestamp/tie ordering as presentation, not proof of cross-runtime causality. Lifetime numbering across unavailable history remains unproven; do not silently label a retained-window count as an exact absolute event number. Stable producer identity and recomputable chronological display rank remain separate responsibilities. The owned projection/overlay properties and actual npm compiled replay now exercise the bounded implementation and those rejection boundaries. Live colored-terminal/phone acceptance and an operator-authorized extension reload remain separate; headless render checks are not that acceptance.
|
|
62
|
+
|
|
63
|
+
#### Pre-tail session metadata: internal prerequisite
|
|
64
|
+
|
|
65
|
+
The session reader now retains a frozen non-JSON metadata frame before its 100-turn body tail. Execution-session collection carries that data through the existing source-reference admission fence, including per-file and aggregate source ordinals and admitted command/file namespace. A 101-turn source can therefore supply 101 metadata entries while still returning only its original 100 body turns; two sources with 101 + 1 turns provide 102 metadata entries and 101 body turns. No second body reader or persistent index is added.
|
|
66
|
+
|
|
67
|
+
The frames contain only eligible entry provenance and existing canonical stored timestamps, not body/thinking/tool/usage text or newly sampled time. Each frame and the aggregate have a separate UTF-8 encoded metadata budget no greater than the existing 4MiB session-source bound; this is not a larger body/file/model allowance or a work quota. Private/ambiguous identities or namespace, unavailable/missing time, malformed source/schema, known source loss/change and overflow produce an unavailable frame without a partial index. Existing body refusal, redaction, return shape, diagnostics and limits stay unchanged. Source aliases and replacement refuse metadata under the same existing fences as bodies. Available describes the selected recorded metadata only, not original producer privacy, authentic issuer, immutable bytes, a complete lifetime prefix or an active epoch.
|
|
68
|
+
|
|
69
|
+
These frames remain inputs, not independent ranking/permission certificates. The shared Trace owner now joins them with canonical/Control/current-snapshot metadata before clipping; the Inspector consumes the resulting read-local rank or explicit unavailability. Duplicate keys, late/equal timestamps and missing-history coverage are checked separately. No persistent numbering service, immutable event-number promise, new source-body allowance or live rendered acceptance follows from this implementation.
|
|
29
70
|
|
|
30
71
|
## Control
|
|
31
72
|
|
|
32
|
-
|
|
73
|
+
Control is a read-only view of what the selected Actor declares and what happened to recorded requests, not a chat, a universal pause/resume interface or a new command sender.
|
|
74
|
+
|
|
75
|
+
The overview starts with the whole selected Run identity and explains:
|
|
76
|
+
|
|
77
|
+
- Actor-control readiness: no declared actions, declared but no matching recorded endpoint, recorded endpoint ready, full pending capacity, or unavailable/partial data.
|
|
78
|
+
- The declared actor actions and existing runtime API capabilities. Only the existing Run-focus Kill remains interactive; archive/prune are informational here.
|
|
79
|
+
- Queue counts, journal size/diagnostics and bounded history coverage. Unavailable data never becomes a healthy empty queue. A nonregular journal source is unavailable even at reported size0; only actual absence or an empty regular file permits a healthy empty history.
|
|
33
80
|
|
|
34
|
-
|
|
35
|
-
- runtime-owned lifecycle actions;
|
|
36
|
-
- generation-fenced endpoint readiness;
|
|
37
|
-
- pending capacity, saturation, journal bytes, stale count, and diagnostics;
|
|
38
|
-
- recent durable Control records and outcomes.
|
|
81
|
+
Readiness uses existing metadata/journal owners and requires the selected Run, owner and generation to match. A matching `control-endpoint.json` is recorded readiness only, not a successful connection, fresh process-identity or actuation proof. Malformed/unreadable data, refused records, foreign generations and duplicate IDs are diagnosed conservatively. Known safe rows may remain visible with partial coverage; replacement actions/history are withheld when the metadata binding is unavailable.
|
|
39
82
|
|
|
40
|
-
|
|
83
|
+
Enter on the Control tab opens recent requests; Down enters the scrollable YAML overview, whose Enter opens the same request list. Requests use Up/Down or PgUp/PgDn selection; Enter/Right opens full projected YAML and Left/Esc returns. Rows put the actual status first so a long action cannot hide it, then action, age since its recorded status timestamp and a clipped first-line error or stale reason. Detail retains only recorded timestamps and redacted input/error. No missing delivery/claim/handling stage is invented: delivered does not mean handled, and handled does not mean the Run completed.
|
|
84
|
+
|
|
85
|
+
The list is the newest suffix of at most20parsed journal records, reversed for browsing—not a complete lifetime or timestamp-sorted history. Malformed JSON lines are omitted by the existing reader, diagnosed separately and make coverage partial; this is not a20-physical-line window. Shown/retained parsed counts and partial coverage remain explicit. Selection uses the exact Run/generation/raw request ID; refresh preserves that identity, while disappearance or generation replacement makes detail unavailable instead of silently rebinding it. Overview/list/detail share a read-local observation under the existing one-second invalidation; keyboard/resize navigation does not repeatedly read the journal, and Control navigation does not read Trace.
|
|
86
|
+
|
|
87
|
+
Capacity reaches zero at64pending Controls. Admitted requests never expire automatically: a five-minute stale-age marker is an observation, not a failed transition, native/work duration or permission to retry. The durable `controls.jsonl` stays raw and local; rendering neither mutates it nor exposes a second unredacted copy. Source/headless, compiled and independent-review evidence remain separate from an authorized reload and actual terminal/phone acceptance.
|
|
41
88
|
|
|
42
89
|
## Focus and Selectors
|
|
43
90
|
|
|
44
91
|
`selectedBg` marks the current focus or selection; `customMessageBg` remains reserved for alternating content stripes. Opening the Run or Trace-source selector preserves `selectedBg` on its parent control, so focus reads as parent → child menu → selected option. Menus are composited over only their bounded rectangle; base content before, beside, and below that rectangle remains rendered.
|
|
45
92
|
|
|
46
|
-
The Run
|
|
93
|
+
The Run dropdown starts five content columns from the left edge (one column farther right than its original placement). It retains the compact leading marker and now reserves one explicit internal padding cell on the right, including after clipped text or an ellipsis. Its own alternating backgrounds follow absolute option indices, not the underlying document rows or the scrolled viewport. Both borders reset the background; native clipping resets are repainted inside selected/striped rows, including ellipses. The Trace-source menu keeps its earlier geometry and styling. These are terminal cells, not pixel offsets.
|
|
94
|
+
|
|
95
|
+
The Run selector uses aligned zero-based list rank, Run name, and semantic status columns. Its #N is a position in the current cached Run list, not a stable Run identity or authenticated lifetime chronology. The Trace selector uses `Trace: <source>`; when a non-`all` source is active, the tab projects the same colon grammar and value color.
|
|
96
|
+
|
|
97
|
+
Run header and Run option previews now apply producer-specific native column budgets and a visible ellipsis only at a real display gap, before unchanged generic fitting/composition. A cropped label/#rank is not a complete identity. The whole already-selected logical name appears as selected_run_id at the start of the existing read-only Recipe and Control documents; use ordinary Enter/scroll/PgUp/PgDn there, never Kill confirmation for identity research. The compiler-selected context field is projected separately from authored content, so a matching authored key cannot replace it. No new key, reader, source permission or action is added. Selection/cancel/resize/cache/order/status colors and exact original action targets/generations remain unchanged. The [initial counterexample](run-supervision.md#run-control-and-selector-convergence-assessment) is retained as historical evidence; the [correction](run-supervision.md#run-control-gaps-and-read-only-selected-identity) is source/npm/headless validated, not loaded colored-terminal/phone acceptance.
|
|
98
|
+
|
|
99
|
+
## Feedback popups
|
|
100
|
+
|
|
101
|
+
Routine feedback appears as the complete already-selected text in a compact Notice popup above the Inspector and any open selector. There is no synthetic i: prefix, i command, feedback field wrapper or secondary reader. Authored paragraphs, blank lines, indentation, colon labels, lists and backticks remain literal content through native-column wrapping. No source tail or discarded cause is reconstructed.
|
|
102
|
+
|
|
103
|
+
Esc is the notification's only dismissal action. Action, confirmation, tab and source keys cannot reach underlying work while the popup is open. If the complete text physically exceeds the available rectangle, Up/Down and PgUp/PgDn scroll it inside that same popup with a visible line range; there is no separate details mode. Small messages show all text immediately and only the Esc hint. Ctrl-C retains global close behavior. Esc clears the transient feedback rather than retaining an i history.
|
|
104
|
+
|
|
105
|
+
Both notification and Kill dialogs have a two-terminal-column left inset for content and one blank row above and below it. Their borders use borderAccent; keys use accent, descriptions use borderAccent and hint groups are separated by borderAccent frame segments, through the same formatter as the main Inspector. On the lowest available height, decorative blank rows yield to readable text, pinned safety and choices. Narrow confirmations may stack the two choices and wrap the pinned warning rather than clipping either. Both dialogs use the terminal's default background, not a pale theme fill or hard-coded black. Borders and foreground status colors remain; selected confirmation buttons retain their focus background. Popup composition masks only its own rectangle and never inserts a data row or shifts the document, stripes, selection or scroll. The last normal Inspector frame is frozen underneath the modal; resizing reuses those captured cells without new evidence reads. Closing resumes normal rendering/invalidation, not a renewed ownership/native guarantee.
|
|
106
|
+
|
|
107
|
+
Only feedback from the existing Kill callback path pins closure: unconfirmed and No automatic retry outside the popup's scrollable text. This records entry into an action-port path, not native actuation or proven no effects. Local guards do not gain those action uncertainty labels. Routine cancellation is silent: Esc/n or Enter on Cancel closes the confirmation and immediately returns to the same Inspector, without a Notice or an extra dismissal. The popup exposes only the existing selected message, not raw Error/cause or lost180/160-unit tails. Fresh Kill producers now wrap selected values in AX action/result/state-or-diagnostic/closure records. Domain180-unit normalization/trim and overlay160-unit normalization/slice remain the source stages; their already discarded Markdown/tails/causes are not recovered. A pair crossing the prefix end retracts one code unit; a malformed selected preview is unavailable with unknown loss rather than repaired text. Dynamic legacy previews state unproven upstream completeness/privacy, never an exact private-tail count. Compiler refusals add no invented legacy omission. Message/result shape and actuation stay unchanged; saved journals are not rewritten. Source/installed tests cover full opaque access, narrow columns/low rows, scroll/return/selector behavior, no action replay, original Error.message observation and unchanged selected caught-error bytes. Actual operator-loaded colored-terminal/phone acceptance remains separate.
|
|
108
|
+
|
|
109
|
+
## Kill confirmation
|
|
110
|
+
|
|
111
|
+
Kill confirmation is a compact popup, at most72terminal columns including borders, composited and centered over the Inspector rather than replacing its screen. Its height follows the wrapped captured content, with parent chrome left visible instead of filler rows. At narrow widths it uses the available width. It presents captured run/state/action as block YAML using the shared metadata document renderer. The selected Run name is displayed without a redundant namespace; the original captured run/generation still goes unchanged to the existing generation-fenced action port. At narrow widths or low terminal heights, PgUp/PgDn pages only those descriptive fields and a visible range explains the available pages. The full captured identity remains accessible, not silently shortened. It is captured evidence, not a fresh status read or new permission.
|
|
112
|
+
|
|
113
|
+
Both Cancel/Kill choices and closure: unconfirmed stay pinned outside that field viewport. One blank row separates the closure note from the choices, including narrow layouts with stacked buttons. Cancel remains the default. Arrow/Tab selects a choice, Enter applies that choice, y invokes the original Kill action directly, and Esc/n cancels. Paging or resizing never invokes the action or changes the selected choice. Narrow footer hints are compact; a paging hint appears only when fields overflow. Whole-source/installed tests cover widths24/52/90/140 and terminal10/12/30rows, complete captured-name reconstruction, pinned safety/buttons, default cancel, choice/reset/resize, exact original generation and once-only callback. An additional compactness/centering property covers terminal10/12/30/80rows across those widths without actuation; long captured-field paging remains covered separately. This is headless source/npm evidence, not live colored-terminal/phone acceptance or native scope-closure proof. Fresh Kill feedback now uses AX around the original loss-bounded selected preview; this is not fuller error retention or native closure proof.
|
|
47
114
|
|
|
48
115
|
## Keys
|
|
49
116
|
|
|
@@ -52,14 +119,16 @@ The footer is authoritative for the current focus. The stable navigation contrac
|
|
|
52
119
|
| Focus | Keys |
|
|
53
120
|
| --- | --- |
|
|
54
121
|
| Run control | `←`/`→` change Run, `↓` enters tabs, `Enter` opens the Run selector, `k` requests kill when available |
|
|
55
|
-
| Tabs | `←`/`→` or `Tab` changes tab, `↑` returns to Run, `↓` enters content
|
|
122
|
+
| Tabs | `←`/`→` or `Tab` changes tab, `↑` returns to Run, `↓` enters content; `Enter` opens Recipe content, the Trace-source selector or Control requests |
|
|
56
123
|
| Trace tab | `f` cycles present sources without opening the selector |
|
|
57
|
-
| List/document/detail | `↑`/`↓` and `PgUp`/`PgDn` navigate; `→`/`Enter` opens a Trace row; `←` or `Esc` moves back |
|
|
124
|
+
| List/document/detail | `↑`/`↓` and `PgUp`/`PgDn` navigate; `→`/`Enter` opens a Trace/request row; `←` or `Esc` moves back |
|
|
125
|
+
| Control overview | `↑↓`/`PgUp`/`PgDn` scroll; `Enter` opens requests; `←`/`Esc` returns to tabs |
|
|
58
126
|
| Selector | `↑`/`↓` chooses, `Enter`/`→` applies, `←`/`Esc` cancels |
|
|
59
|
-
| Kill confirmation |
|
|
60
|
-
|
|
|
127
|
+
| Kill confirmation | `←`/`→`/`Tab` choose; `Enter` pick, `y` Kill; `Esc`/`n` cancel; `PgUp`/`PgDn` fields |
|
|
128
|
+
| Notice popup | `Esc` dismisses; only physical overflow uses `↑↓`/`PgUp`/`PgDn` within the same popup; other action keys are ignored |
|
|
129
|
+
| Overlay | `Esc` closes from the top level when no modal is open; `Ctrl-C` closes immediately |
|
|
61
130
|
|
|
62
|
-
Run kill revalidates owner and generation through the canonical lifecycle path. After success, the Run status header is the sole confirmation;
|
|
131
|
+
Run kill revalidates owner and generation through the canonical lifecycle path. After success, the selected Run status header is the sole UI confirmation; no success Notice or duplicate content is added. Cancel likewise only closes the dialog, without invoking Kill or opening another popup. Refusals, errors and uncertain action results remain visible; this local suppression does not remove notifications on other surfaces where the result is not directly visible, or turn status into whole-scope closure proof. The Inspector never edits state directly and never derives authority from displayed data.
|
|
63
132
|
|
|
64
133
|
## Scope
|
|
65
134
|
|