From df4b386a2c371478697230f671449f97c9f1d715 Mon Sep 17 00:00:00 2001 From: Rongsong Shen Date: Thu, 3 Sep 2026 09:46:02 +0000 Subject: [PATCH] docs(specs): reconcile stale phase/checkbox metadata (3 more specs) All three were 100% done but read as "in progress" from a naive checkbox count -- same header-never-flipped drift as 5c82ad0b/b14e53f5/1abab949/8557b869: - scheduler-sim-repl-verbosity: all 9 headers' children done (last: task 10.2 final regression, commit e87c0b3f, then a doc-gap follow-up a51790dc, 2026-09-02T21:55:50Z) - scheduler-sim-reconcile-terminal-guard: both headers' children done (last: task 2.2 REPL-level verification, commit 9dcffce8, 2026-09-03T08:31:37Z) - scheduler-sim-step-verbosity: both headers' children done (last: task 2.2 full regression, commit 56bd3103, 2026-09-03T05:15:45Z) Checked all remaining headers, bumped all three to implementation-complete. Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_01XYdtrEWWZfKRRGED7raEYg --- .../spec.json | 4 ++-- .../tasks.md | 4 ++-- .../scheduler-sim-repl-verbosity/spec.json | 4 ++-- .../scheduler-sim-repl-verbosity/tasks.md | 18 +++++++++--------- .../scheduler-sim-step-verbosity/spec.json | 4 ++-- .../scheduler-sim-step-verbosity/tasks.md | 4 ++-- 6 files changed, 19 insertions(+), 19 deletions(-) diff --git a/.kiro/specs/scheduler-sim-reconcile-terminal-guard/spec.json b/.kiro/specs/scheduler-sim-reconcile-terminal-guard/spec.json index b982d4c7..a1f6cc45 100644 --- a/.kiro/specs/scheduler-sim-reconcile-terminal-guard/spec.json +++ b/.kiro/specs/scheduler-sim-reconcile-terminal-guard/spec.json @@ -1,9 +1,9 @@ { "feature_name": "scheduler-sim-reconcile-terminal-guard", "created_at": "2026-09-03T06:32:45Z", - "updated_at": "2026-09-03T07:05:00Z", + "updated_at": "2026-09-03T08:31:37Z", "language": "en", - "phase": "tasks-generated", + "phase": "implementation-complete", "approvals": { "requirements": { "generated": true, diff --git a/.kiro/specs/scheduler-sim-reconcile-terminal-guard/tasks.md b/.kiro/specs/scheduler-sim-reconcile-terminal-guard/tasks.md index 1332e5ab..d91ecdf7 100644 --- a/.kiro/specs/scheduler-sim-reconcile-terminal-guard/tasks.md +++ b/.kiro/specs/scheduler-sim-reconcile-terminal-guard/tasks.md @@ -1,6 +1,6 @@ # Implementation Plan -- [ ] 1. Core: terminal-state guard on job reconciliation +- [x] 1. Core: terminal-state guard on job reconciliation - [x] 1.1 Write failing tests for the terminal-state guard - Cover: a job driven to JOB_STAT_DONE via xce_core_push_events() (confirming allocs/accounts are nulled by the existing cleanup), then presented with a decoded_session carrying a DISPATCH entry for that job id, must leave allocs/accounts NULL after sim_reconcile_unaccounted_jobs() runs; the same scenario with JOB_STAT_EXIT instead of JOB_STAT_DONE; a PEND job's early-recorded DISPATCH entry is still captured exactly as today (explicit regression guard, not just relying on the pre-existing suite) - Observable: the new test cases for DONE/EXIT fail against today's sim_reconcile_unaccounted_jobs(), which resurrects allocs/accounts on any job with accounts == NULL regardless of state @@ -13,7 +13,7 @@ - _Requirements: 1.1, 1.2, 1.3_ - _Boundary: Terminal-State Guard_ -- [ ] 2. Validation: regression and display-consistency verification +- [x] 2. Validation: regression and display-consistency verification - [x] 2.1 Verify no regression to existing reconciliation behavior across the scheduler test suite - Confirm the full scheduler test suite passes with no new failures beyond any already-documented pre-existing ones, and that the pre-existing eager-capture tests in test_sim_reconcile_unaccounted.c and the JOBS_PUSH resync-merge tests in test_core_events.c continue to pass unmodified - Observable: full test suite result showing no regression, with the pre-existing eager-capture and resync-merge test names explicitly confirmed still passing diff --git a/.kiro/specs/scheduler-sim-repl-verbosity/spec.json b/.kiro/specs/scheduler-sim-repl-verbosity/spec.json index 71d82ac8..b7ccc745 100644 --- a/.kiro/specs/scheduler-sim-repl-verbosity/spec.json +++ b/.kiro/specs/scheduler-sim-repl-verbosity/spec.json @@ -1,9 +1,9 @@ { "feature_name": "scheduler-sim-repl-verbosity", "created_at": "2026-08-21T06:50:37Z", - "updated_at": "2026-09-02T07:15:00Z", + "updated_at": "2026-09-02T21:55:50Z", "language": "en", - "phase": "tasks-generated", + "phase": "implementation-complete", "approvals": { "requirements": { "generated": true, diff --git a/.kiro/specs/scheduler-sim-repl-verbosity/tasks.md b/.kiro/specs/scheduler-sim-repl-verbosity/tasks.md index 1c848ef6..ab8cd6e7 100644 --- a/.kiro/specs/scheduler-sim-repl-verbosity/tasks.md +++ b/.kiro/specs/scheduler-sim-repl-verbosity/tasks.md @@ -1,6 +1,6 @@ # Implementation Plan -- [ ] 1. Foundation: job identifier range compression +- [x] 1. Foundation: job identifier range compression - [x] 1.1 Write failing unit tests for compressing job-array identifier listings into index ranges - Cover a single contiguous range, non-contiguous indices within one array submission, multiple distinct array submissions in one listing, a mix of array and non-array identifiers, and an output buffer too small to hold the full listing - Observable: the new test cases execute and fail against the current codebase, which has no compression behavior yet @@ -12,7 +12,7 @@ - Observable: all tests from 1.1 pass; the helper is ready for the event-echo and round-summary work to adopt - _Requirements: 4.1, 4.2, 4.3, 4.4, 4.5_ -- [ ] 2. Core: per-round decision summary, repetitive-round collapsing, and the shared range-flush capability +- [x] 2. Core: per-round decision summary, repetitive-round collapsing, and the shared range-flush capability - [x] 2.1 Write failing tests for round-level decision summaries, collapsing, and the shared flush capability - Cover: a round with at least one decision produces one summary line naming decision counts and affected job identifiers; a round with zero decisions produces no individual line; two or more consecutive idle rounds collapse into a single range notification; two or more consecutive rounds with an identical decision outcome collapse into a single range notification; a collapsed range notification states its round bounds, round count, and covered time span; a change in outcome ends an active collapsed range; a job's status change between rounds is reflected in the following round's summary even without a dedicated dispatch event to observe; the shared flush capability safely does nothing when no range is active and is safe to call more than once in a row; an active collapsed range open at replay completion is flushed and printed before `xce_repl_on_replay_complete()`'s existing completion banner - Observable: the new test cases fail against today's unconditional per-decision echo, which has no summarizing, collapsing, or flush behavior @@ -28,7 +28,7 @@ - _Requirements: 2.1, 2.2, 2.4, 3.1, 3.2, 3.3, 3.4, 3.6_ - _Boundary: Round Rollup_ -- [ ] 3. (P) Core: mode-aware event echo, including ending an active collapsed range on structural events or breakpoint hits — Depends: 2.2 +- [x] 3. (P) Core: mode-aware event echo, including ending an active collapsed range on structural events or breakpoint hits — Depends: 2.2 - [x] 3.1 (P) Write failing tests for suppressing routine event chatter and for ending an active collapsed range at the right moments - Cover: a routine per-tick event (a job status change, job progress update, job resource-usage update, queue update, or partial/delta resource-value update) produces no line under continuous execution; the same event still produces a line while single-stepping; a structural change (new jobs, workers, or resources arriving, a full resource-value snapshot arriving, or configuration pushed) still produces a line under continuous execution and ends any active collapsed range first; an event matching a breakpoint still interrupts continuous execution regardless of its classification, and ends any active collapsed range before the interruption is shown - Observable: the new test cases fail against today's unconditional per-event echo, which has no classification or range-ending behavior @@ -44,7 +44,7 @@ - _Requirements: 1.1, 1.2, 1.3, 1.4, 3.5, 3.6, 4.5_ - _Boundary: Event Echo Gate_ -- [ ] 4. (P) Integration: retire the redundant per-decision echo during continuous execution — Depends: 2.2 +- [x] 4. (P) Integration: retire the redundant per-decision echo during continuous execution — Depends: 2.2 - [x] 4.1 (P) Write failing tests confirming the old per-decision echo no longer duplicates the new round summary - Cover: during continuous execution, no bare per-decision line appears outside the round summary; while single-stepping, full per-decision detail still prints exactly as before; a non-interactive (headless) replay's decision output is unaffected - Observable: the new test cases fail while the old unconditional per-decision print path still runs alongside the new round summary @@ -58,7 +58,7 @@ - _Requirements: 2.3, 5.1, 5.4_ - _Boundary: sim_print_decision gate_ -- [ ] 6. (P) REPL prompt shows current session and timestamp +- [x] 6. (P) REPL prompt shows current session and timestamp - [x] 6.1 (P) Write failing tests for the dynamic REPL prompt - Cover: the prompt is the plain `(sim) ` before any session has begun; once at least one session has run, the prompt includes the current session count and a human-readable timestamp; this holds in both `step` and `continue` modes; the prompt never alters any command's own output - Observable: the new test cases fail against today's static `XCE_REPL_PROMPT` macro, which never varies @@ -71,7 +71,7 @@ - _Requirements: 5.5_ - _Boundary: REPL Prompt Context_ -- [ ] 7. (P) Resource value classification, human-readable scaling, and the `set units` option +- [x] 7. (P) Resource value classification, human-readable scaling, and the `set units` option - [x] 7.1 (P) Write failing tests for byte/megabyte classification, adaptive scaling, and `set units` parsing - Cover: the bytes-valued classifier returns true only for `mem`/`tmp`/`maxmem`/`maxtmp`/`maxswap` and false for `swp`, unitless resources, and unknown names; the scaling helper adaptively renders across B/KB/MB/GB/TB, including exact unit-boundary values; `swp`'s value is converted MB→bytes before scaling; `set units raw`/`human`/`both` each update the display-mode setting, defaulting to `both`; an unrecognized `set units` value is rejected the same way other unrecognized `set` parameters already are - Observable: the new test cases fail against the current codebase, which has neither the classifier/scaling helpers nor a `units` setting @@ -84,7 +84,7 @@ - _Requirements: 6.1, 6.2, 6.3_ - _Boundary: Resource Value Formatter_ -- [ ] 8. (P) `info worker`/`info resource` grouped table layout and units-mode-aware rendering — Depends: 1.2, 7.2 +- [x] 8. (P) `info worker`/`info resource` grouped table layout and units-mode-aware rendering — Depends: 1.2, 7.2 - [x] 8.1 (P) Write failing tests for the resource-listing table layout and units-mode rendering - Cover: `info worker`'s and `info resource`'s resource listings render as an aligned table grouped by category (consumable/capacity, load metrics, static hardware attributes, where applicable to that listing) instead of one flat list; a whole-number unitless value renders with no trailing `.00`, a fractional one keeps its decimals; each `units_mode` (`raw`/`human`/`both`) selects the corresponding rendering for a byte/megabyte-valued resource; the underlying stored/wire value and replay determinism are unaffected; `info worker`'s assigned-job listing renders using the existing jobid-range-compression helper - Observable: the new test cases fail against today's unconditional flat per-resource `fprintf` loop and un-compressed assigned-job listing @@ -97,7 +97,7 @@ - _Requirements: 6.4, 6.5, 6.6, 4.5_ - _Boundary: Resource Value Formatter, Jobid Range Compressor_ -- [ ] 9. (P) Discoverable `help` listing and `break` event types — Depends: 7.2 +- [x] 9. (P) Discoverable `help` listing and `break` event types — Depends: 7.2 - [x] 9.1 (P) Write failing tests for the reorganized `help` listing and `break`'s event-type discoverability - Cover: `help`'s output groups commands into the four labeled sections (execution control, breakpoints, state inspection, snapshot and parameters), uses one consistent column width throughout, lists `info config` alongside the other `info` subcommands, and lists `set units` alongside `set speed`/`set output`/`set verify` in the snapshot-and-parameters section; `help`'s `break` line and `break`'s unrecognized-event-type error both list the complete, current set of valid event types from the same source; no command's existence, argument parsing, or other output changes - Observable: the new test cases fail against today's unordered, hand-padded `help` listing (with `info config` disconnected from its siblings) and `break`'s error message, which names no valid alternatives @@ -110,7 +110,7 @@ - _Requirements: 7.1, 7.2, 7.3, 7.4, 7.5, 7.6_ - _Boundary: Help & Breakpoint Discoverability_ -- [ ] 10. Validation: regression and real-data verification — Depends: 3.2, 4.2, 6.2, 8.2, 9.2 +- [x] 10. Validation: regression and real-data verification — Depends: 3.2, 4.2, 6.2, 8.2, 9.2 - [x] 10.1 Verify single-stepping and every other existing REPL command remain unchanged outside this feature's explicit exceptions - Confirm single-stepping's per-event/per-decision output, and the inspection/breakpoint/parameter/snapshot commands' behavior and output, match their pre-feature baseline exactly except for the prompt content (Requirement 5.5), `info`'s job-identifier/resource-value listings (Requirements 4.5, 6), and `help`/`break`'s discoverability changes (Requirement 7); confirm no new top-level command was introduced - Observable: the existing REPL test suite's pre-existing assertions all still pass unmodified, and a step-mode transcript comparison shows no textual difference from the pre-feature baseline outside the prompt line itself diff --git a/.kiro/specs/scheduler-sim-step-verbosity/spec.json b/.kiro/specs/scheduler-sim-step-verbosity/spec.json index a42349de..16020344 100644 --- a/.kiro/specs/scheduler-sim-step-verbosity/spec.json +++ b/.kiro/specs/scheduler-sim-step-verbosity/spec.json @@ -1,9 +1,9 @@ { "feature_name": "scheduler-sim-step-verbosity", "created_at": "2026-09-03T03:00:41Z", - "updated_at": "2026-09-03T03:35:00Z", + "updated_at": "2026-09-03T05:15:45Z", "language": "en", - "phase": "tasks-generated", + "phase": "implementation-complete", "approvals": { "requirements": { "generated": true, diff --git a/.kiro/specs/scheduler-sim-step-verbosity/tasks.md b/.kiro/specs/scheduler-sim-step-verbosity/tasks.md index f82349fd..1f6a80a0 100644 --- a/.kiro/specs/scheduler-sim-step-verbosity/tasks.md +++ b/.kiro/specs/scheduler-sim-step-verbosity/tasks.md @@ -1,6 +1,6 @@ # Implementation Plan -- [ ] 1. Core: event echo preamble deduplication +- [x] 1. Core: event echo preamble deduplication - [x] 1.1 Write failing tests for preamble deduplication across consecutive echoed events - Cover: two consecutive echoed events with identical rendered timestamp and session omit the second's preamble; two consecutive events with a different session both print their own preamble; two consecutive events whose raw high-resolution timestamps differ but whose rendered timestamp and session are identical still dedupe; the first echoed event in a fresh REPL session always prints its preamble; a structural event echoed under continue mode after a stretch of suppressed routine events follows the same rule; every event's own content line and ordering remain present and unaffected regardless of the preamble decision - Observable: the new test cases fail against today's REPL, which prints the timestamp/session preamble unconditionally before every echoed event @@ -15,7 +15,7 @@ - _Requirements: 1.1, 1.2, 1.3, 1.4, 2.2_ - _Boundary: Event Echo Preamble Deduplicator_ -- [ ] 2. Validation: regression and real-transcript verification +- [x] 2. Validation: regression and real-transcript verification - [x] 2.1 Verify every other REPL command and mode's existing behavior remain unchanged outside the preamble's own deduplication - Confirm which events are echoed, event ordering, event content, and every other REPL command's behavior and output match their pre-feature baseline exactly except for the preamble line's now-conditional printing; confirm no scheduling decision or simulation state changed as a result of this feature - Observable: the existing REPL test suite's pre-existing assertions all still pass, updated only where a specific assertion pinned the old always-print-preamble shape for two events that legitimately share rendered context (each such update documented with which acceptance criterion justifies it), and a step-mode transcript comparison against the pre-feature baseline shows no textual difference outside the preamble line's presence or absence