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
Deliver a backwards-compatible Stave 1.1.0 that is easier to compose into real applications and stays responsive under load. This issue is the execution order and release acceptance checklist; the linked issues own implementation.
Baseline and evidence
Audited public root v1.0.0-rc.2 at 64b0d0d96954. The current v1.0.0 milestone remains open. Existing #2 and #3, including published immutable Lopper parity/rollback evidence, remain stable-release prerequisites. Do not present a prerelease comparison as a GA compatibility guarantee.
This is synthetic workflow testing and source analysis, not interviews or validated customer demand. Feature issues are explicit hypotheses; bug issues have isolated reproductions repeated twice. Timings and allocation observations describe this host, not portable release thresholds.
Synthetic personas and existing-surface results
| Persona/job | Existing surface exercised | Result and planning effect |
|---|---|---|
| Asha: integrate one Go app across people and automation | Public session, agent, replay and conformance package tests; composition source | Controls pass; explicit session-agent glue and one complete tutorial remain useful. |
| Noor: consume structured state and typed actions | Agent snapshot tests; semantic patch validation | Controls pass; preserve existing strict schemas while adding separately negotiated subscriptions/detail. |
| Rina: use keyboard/dialogs and multilingual output | Focus RepairFrom control, keymap default-dispatch control, raw wide-cell edge reproduction | Focus/routing controls pass; raw edge write has a reproduced ownership gap. Codec/lifecycle conveniences remain proposals. |
| Jon: operate large tables and trees | Three existing Table window/selection tests; relation-rich tree, surface-write and idle-wait probes | Table support already exists, so that feature was dropped. Measured repeated work produces four bounded refactor issues. |
| Eli: manage asynchronous/remote app lifecycle | Pre-cancelled LineDriver.Open repro, session effect-admission probe, replay tests | Startup defect reproduced; blocked effect admission motivates bounded architecture work. No new transport is promised. |
| Mina: ship a compatible library | Fuzz-discovery failure injection, public-API declaration mutation and documented schema probe | Three checking/docs defects reproduced twice; baseline and post-publication verification fill distinct gaps. |
| Erin: support macOS/Windows consumers | Existing Linux fixture/cross-compilation workflow inspected | Native execution is unverified by that job; proposed bounded hosted-native smoke matrix, not a claimed cross-platform bug. |
Focused controls and their actual results:
Existing-surface persona probes
These are executed controls over the public package surface at 64b0d0d96954a64d51d3c520211f2164fdacab18. They exercise current behavior;
they do not establish customer demand.
Large table window
Command:
go test -v ./primitive -run 'TestTable(ModalAndMasterDetailContracts|RejectsInvalidWindowAndSelectionContracts|ExplicitStates)$' -count=1
Result: all three tests passed. primitive.Table already accepts Offset, Limit, and Total, validates the window and selection state, and emits
stable bounded-table semantics (primitive/collections.go:21-180). This
removes the proposed generic table-window feature from the candidate set.
Modal focus lifecycle
Command:
go test -v ./focus -run 'TestGraphRepairFromChoosesNearestSurvivingNeighbor$' -count=1
Result: passed. focus.Graph supports PushScope, PopScope, and RepairFrom (focus/focus.go:130-207), including repair when the previous
target no longer survives. The remaining candidate is a narrow lifecycle
wrapper, not new focus mechanics.
Semantic patch boundary
Command:
go test -v ./semantic -run 'TestTreeValidationAndPatch$' -count=1
Result: passed. The current patch contract is limited to Added, Removed,
and GenerationChanged (semantic/semantic.go:303-359). Any changed-field
detail must be separately versioned and negotiated so strict existing decoders
retain the current schema.
Keymap mapping serialization
Command:
go test -v ./keymap -run 'TestDispatcherKeepsAllDefaultBindingsMapped$' -count=1
Result: passed. keymap.Mapping has JSON-tagged fields and Map.Inventory()
is deterministic (keymap/keymap.go:59-205), while Map stores its profile
and mappings privately. The candidate is therefore a strict import/export
codec around existing validation, not a new dispatcher.
Execution order
Resolve release prerequisites in v1.0.0 separately. Implement the reproduced fixes and the explicit configuration/effect-admission decisions first.
Preserve compatibility while doing independent measured refactors. Fix raw wide-cell edge semantics before sharing text placement mechanics.
Build the opt-in session-agent bridge from the ownership decision; build subscriptions on publication notification; keep patch-detail negotiation independent.
Deliver other additive features independently, then the shared application tutorial. Run native, parser, API-baseline and anonymous publication checks.
Review all acceptance evidence and publish only after the existing stable-release gates pass. A blocked prerequisite is a blocker, not permission to waive a check.
Every included implementation issue meets its bounded acceptance criteria; any scope removal is explicitly recorded.
Public v1 APIs, schemas, canonical hashes, stable IDs, stale-target safety, confirmation/redaction and resource-limit contracts remain compatible.
Required CI, race/targeted regression, conformance, performance, vulnerability and workflow gates pass on the exact final revision.
Independent code and architecture review confirms the new ownership, admission, wait and protocol extension boundaries.
Stable v1.0.0/Lopper evidence prerequisites are satisfied; real released consumers pass the compatibility matrix.
Immutable tag, release assets and anonymous Go-proxy/checksum-database consumption are verified; documentation commands are executable.
Reproduction appendix
Use a disposable checkout of the baseline above. The following source contains only local fixtures; it makes no network calls and changes no tracked implementation. Save as .omx/planning/architecture/analyze.go, then run go run ./.omx/planning/architecture/analyze.go. Repeat to inspect ranges; do not assert fixed timing ratios as deterministic tests.
For the structural probe, save the following as .omx/planning/architecture/analyze_static.py and run python3 .omx/planning/architecture/analyze_static.py.
No library implementation was changed while planning. Stave remains a library dependency; Homebrew packages Lopper separately. Do not change repository visibility, publish adapter modules, create a new transport, raise the Go floor or add a root dependency as an implied part of this milestone. Breaking proposals require redesign or a future major-version plan.
Outcome
Deliver a backwards-compatible Stave 1.1.0 that is easier to compose into real applications and stays responsive under load. This issue is the execution order and release acceptance checklist; the linked issues own implementation.
Baseline and evidence
Audited public root
v1.0.0-rc.2at 64b0d0d96954. The current v1.0.0 milestone remains open. Existing #2 and #3, including published immutable Lopper parity/rollback evidence, remain stable-release prerequisites. Do not present a prerelease comparison as a GA compatibility guarantee.This is synthetic workflow testing and source analysis, not interviews or validated customer demand. Feature issues are explicit hypotheses; bug issues have isolated reproductions repeated twice. Timings and allocation observations describe this host, not portable release thresholds.
Synthetic personas and existing-surface results
| Persona/job | Existing surface exercised | Result and planning effect |
|---|---|---|
| Asha: integrate one Go app across people and automation | Public session, agent, replay and conformance package tests; composition source | Controls pass; explicit session-agent glue and one complete tutorial remain useful. |
| Noor: consume structured state and typed actions | Agent snapshot tests; semantic patch validation | Controls pass; preserve existing strict schemas while adding separately negotiated subscriptions/detail. |
| Rina: use keyboard/dialogs and multilingual output | Focus RepairFrom control, keymap default-dispatch control, raw wide-cell edge reproduction | Focus/routing controls pass; raw edge write has a reproduced ownership gap. Codec/lifecycle conveniences remain proposals. |
| Jon: operate large tables and trees | Three existing Table window/selection tests; relation-rich tree, surface-write and idle-wait probes | Table support already exists, so that feature was dropped. Measured repeated work produces four bounded refactor issues. |
| Eli: manage asynchronous/remote app lifecycle | Pre-cancelled LineDriver.Open repro, session effect-admission probe, replay tests | Startup defect reproduced; blocked effect admission motivates bounded architecture work. No new transport is promised. |
| Mina: ship a compatible library | Fuzz-discovery failure injection, public-API declaration mutation and documented schema probe | Three checking/docs defects reproduced twice; baseline and post-publication verification fill distinct gaps. |
| Erin: support macOS/Windows consumers | Existing Linux fixture/cross-compilation workflow inspected | Native execution is unverified by that job; proposed bounded hosted-native smoke matrix, not a claimed cross-platform bug. |
Focused controls and their actual results:
Existing-surface persona probes
These are executed controls over the public package surface at
64b0d0d96954a64d51d3c520211f2164fdacab18. They exercise current behavior;they do not establish customer demand.
Large table window
Command:
Result: all three tests passed.
primitive.Tablealready acceptsOffset,Limit, andTotal, validates the window and selection state, and emitsstable bounded-table semantics (
primitive/collections.go:21-180). Thisremoves the proposed generic table-window feature from the candidate set.
Modal focus lifecycle
Command:
Result: passed.
focus.GraphsupportsPushScope,PopScope, andRepairFrom(focus/focus.go:130-207), including repair when the previoustarget no longer survives. The remaining candidate is a narrow lifecycle
wrapper, not new focus mechanics.
Semantic patch boundary
Command:
Result: passed. The current patch contract is limited to
Added,Removed,and
GenerationChanged(semantic/semantic.go:303-359). Any changed-fielddetail must be separately versioned and negotiated so strict existing decoders
retain the current schema.
Keymap mapping serialization
Command:
Result: passed.
keymap.Mappinghas JSON-tagged fields andMap.Inventory()is deterministic (
keymap/keymap.go:59-205), whileMapstores its profileand mappings privately. The candidate is therefore a strict import/export
codec around existing validation, not a new dispatcher.
Execution order
Resolve release prerequisites in v1.0.0 separately. Implement the reproduced fixes and the explicit configuration/effect-admission decisions first.
Preserve compatibility while doing independent measured refactors. Fix raw wide-cell edge semantics before sharing text placement mechanics.
Build the opt-in session-agent bridge from the ownership decision; build subscriptions on publication notification; keep patch-detail negotiation independent.
Deliver other additive features independently, then the shared application tutorial. Run native, parser, API-baseline and anonymous publication checks.
Review all acceptance evidence and publish only after the existing stable-release gates pass. A blocked prerequisite is a blocker, not permission to waive a check.
Milestone issue checklist
Fail fuzz smoke checks when package or target discovery fails #39 — bug; P2; Fail fuzz smoke checks when package or target discovery fails
Include exported variable types and constant values in the API inventory #40 — bug; P2; Include exported variable types and constant values in the API inventory
Verify anonymous module consumption and release assets after publication #41 — quality; P2; Verify anonymous module consumption and release assets after publication
Correct and test the documented semantic snapshot version identifier #42 — bug; P2; Correct and test the documented semantic snapshot version identifier
LineDriver Open succeeds after the caller has already cancelled #43 — bug; P2; LineDriver Open succeeds after the caller has already cancelled
Surface WithCell permits a truncated wide grapheme at the right edge #44 — bug; P2; Surface WithCell permits a truncated wide grapheme at the right edge
Decouple effect-batch admission from the serialized session loop #45 — architecture; P1; Decouple effect-batch admission from the serialized session loop
Define explicit ownership for Program config versus adapter limits #46 — architecture; P1; Define explicit ownership for Program config versus adapter limits
Let render callers select outputs instead of eagerly materializing all products #47 — architecture; P2; Let render callers select outputs instead of eagerly materializing all products
Index semantic relation targets during tree validation #48 — refactor; P1; Index semantic relation targets during tree validation
Add publication-driven session waits while preserving existing Wait semantics #49 — refactor; P2; Add publication-driven session waits while preserving existing Wait semantics
Consolidate canonical JSON clone mechanics at trust boundaries #50 — refactor; P2; Consolidate canonical JSON clone mechanics at trust boundaries
Expose deterministic changed-field detail in semantic patches #51 — feature; P2; Expose deterministic changed-field detail in semantic patches
Provide a bounded semantic-tree query API #52 — feature; P2; Provide a bounded semantic-tree query API
Add modal focus-scope lifecycle helpers #53 — feature; P1; Add modal focus-scope lifecycle helpers
Serialize bounded conformance reports with remediation links #54 — feature; P2; Serialize bounded conformance reports with remediation links
Provide a replay transcript inspector command #55 — feature; P2; Provide a replay transcript inspector command
Add versioned import/export for keymap profiles #56 — feature; P2; Add versioned import/export for keymap profiles
Compare performance reports against a checked-in baseline #57 — feature; P2; Compare performance reports against a checked-in baseline
Check minor-release API compatibility against the last stable tag #58 — quality; P1; Check minor-release API compatibility against the last stable tag
Run native macOS and Windows runtime smoke tests on hosted runners #59 — quality; P2; Run native macOS and Windows runtime smoke tests on hosted runners
Add parser fuzz corpora for configuration and the agent protocol #60 — quality; P2; Add parser fuzz corpora for configuration and the agent protocol
Batch immutable Surface text writes through the Builder path #61 — refactor; P1; Batch immutable Surface text writes through the Builder path
Bind a session to an agent server with safe snapshots and cancellation wiring #62 — feature; P1; Bind a session to an agent server with safe snapshots and cancellation wiring
Add a renderer-neutral confirmation presenter contract #63 — feature; P2; Add a renderer-neutral confirmation presenter contract
Document and compile a complete app shared by human and agent runtimes #64 — documentation; P2; Document and compile a complete app shared by human and agent runtimes
Add negotiated snapshot subscriptions for automation clients #65 — feature; P1; Add negotiated snapshot subscriptions for automation clients
Stabilize Bubble Tea running-effect cancellation assertion #77 — bug; P2; Synchronize Bubble Tea cancellation observation (discovered by Verify anonymous module consumption and release assets after publication #41 CI; land before Verify anonymous module consumption and release assets after publication #41)
Prepare the held Release Please 1.1.0 approval PR #86 — quality; P1; Prepare the held Release Please 1.1.0 approval PR (land last; no publication)
Release acceptance
Every included implementation issue meets its bounded acceptance criteria; any scope removal is explicitly recorded.
Public v1 APIs, schemas, canonical hashes, stable IDs, stale-target safety, confirmation/redaction and resource-limit contracts remain compatible.
Required CI, race/targeted regression, conformance, performance, vulnerability and workflow gates pass on the exact final revision.
Independent code and architecture review confirms the new ownership, admission, wait and protocol extension boundaries.
Stable v1.0.0/Lopper evidence prerequisites are satisfied; real released consumers pass the compatibility matrix.
Immutable tag, release assets and anonymous Go-proxy/checksum-database consumption are verified; documentation commands are executable.
Reproduction appendix
Use a disposable checkout of the baseline above. The following source contains only local fixtures; it makes no network calls and changes no tracked implementation. Save as
.omx/planning/architecture/analyze.go, then rungo run ./.omx/planning/architecture/analyze.go. Repeat to inspect ranges; do not assert fixed timing ratios as deterministic tests.Local architecture/performance probe source
For the structural probe, save the following as
.omx/planning/architecture/analyze_static.pyand runpython3 .omx/planning/architecture/analyze_static.py.Structural source-analysis probe
Scope boundaries
No library implementation was changed while planning. Stave remains a library dependency; Homebrew packages Lopper separately. Do not change repository visibility, publish adapter modules, create a new transport, raise the Go floor or add a root dependency as an implied part of this milestone. Breaking proposals require redesign or a future major-version plan.