You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit f843ed2
Browse filesBrowse the repository at this point in the historyBrowse files
David Noble
committed
Pin #735's acceptance: a slot binds its own generation, both seams agree, a ledger miss names slot and id
Three tests close the gap between #735's acceptance criteria and the tree.
The plan records the mapping, and records that #712's default-value
criterion depends on #857: plan.variable discards its default today, so
there is nothing in a document to envelope.
Refs #712, #735, #857.
Claude-Session: https://claude.ai/code/session_01SqQVFZz7AdiLZkGoAcUqRW
Copy file name to clipboardExpand all lines: docs/plans/fix/712-any-slot-types.md
+13-1Lines changed: 13 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -329,6 +329,18 @@ that describe the positions it applies to link there. All five phases are comple
329
329
documents table, and a plan carries an `## Issue NNN` heading per issue it serves; this plan and its issues were
330
330
brought to that standard before the pull request.
331
331
332
+
**Acceptance pass, 2026-09-07.**#735's six criteria are pinned: a slot binds its own generation after a shadow and a
333
+
run-time key binds the current one (`TestResolveDispatchResource_AResourceBindsItsOwnGenerationAfterShadow`, criteria
334
+
1 and 2); a declared slot and an `any` slot agree on the entry (`TestLoadGraph_ADeclaredSlotAndAnAnySlotAgreeOnTheResource`,
335
+
3); a ledger miss is refused naming the slot and the id at load (`TestLoadGraph_AResourceIDTheLedgerLacksIsRefusedNamingSlotAndID`)
336
+
and at dispatch (`param %s: … not in the run catalog`, 4); load resolves by `Lookup` and never stats, every load test
337
+
above running on entries that exist nowhere (5); no slot path reaches `Discover(uri)`, and the constructors' removal is
338
+
#854 (6). #712's third criterion -- `plan.Variable(default=1.0)` survives save and reload -- cannot be met by this plan:
339
+
`plan.variable` DISCARDS its default (`_ = defaultValue`, a stub the phase-8 plan never finished), so there is no
340
+
default in any document to envelope. Filed 2026-09-07 as #857 (bug) under #856, the plan provider's feature (every
341
+
provider is a feature under #815). Test-plan row 8 is #857's test; when the default reaches the document it is an
342
+
`any` position and rule 3 of the architecture's Value Encoding section already governs it.
343
+
332
344
### State as of 2026-09-01
333
345
334
346
@@ -949,7 +961,7 @@ Two things Phase 1 changed about the plan itself:
949
961
| 5 |`IsTruthy(json.Number("0"))` is false | unit | Removing the `json.Number` case from `scalarTruthy`|
950
962
| 6 | A bare value in an `any` slot is refused | unit | Phase 4 reverted to inference |
951
963
| 7 | A map whose own key is the reserved key round-trips intact | unit | The envelope is applied selectively |
952
-
| 8 |`plan.Variable(default=1.0)` survives save/reload with its type | e2e | Either side reverted |
964
+
| 8 |`plan.Variable(default=1.0)` survives save/reload with its type | e2e | Either side reverted -- **moved to #857**: the default never reaches a document today |
953
965
| 9 | JSON and YAML agree on the same graph, both directions | unit | Enveloping in one codec only |
954
966
| 10 | A receipt's `Result` keeps its type across compensation | scenario | Phase 3 applied to `bindingData` alone |
955
967
| 11 | A `map[string]any` round-trips every element type | unit | The envelope stops at the top level |
0 commit comments