chore(specs): mark four finished specs implemented

scheduler-sim-diagnostics, scheduler-sim-live-allocation, xce-test-cli-ux
and eliminate-frontend-makefile had every sub-task checked but their
parent boxes and spec.json phase still read tasks-generated.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Rongsong Shen 2026-09-29 13:00:11 +00:00
parent 7b001cb0f7
commit c2b3bf6473
Signed by untrusted user: rshen
GPG key ID: 80533536B0EB651C
7 changed files with 19 additions and 19 deletions

View file

@ -1,9 +1,9 @@
{
"feature_name": "eliminate-frontend-makefile",
"created_at": "2026-08-27T00:00:00Z",
"updated_at": "2026-09-03T13:01:25Z",
"updated_at": "2026-09-29T12:59:52Z",
"language": "en",
"phase": "tasks-generated",
"phase": "implemented",
"description": "Remove src/frontend/Makefile entirely, consolidating Go builds (apiserver, xcecli) and their tests onto Meson's tools/go_build wrapper. Closes a real, already-realized duplicate version-fingerprint-computation risk (roadmap.md backlog item, recorded 2026-08-21). Path C single-scope investigation via /kiro-discovery, 2026-08-27.",
"approvals": {
"requirements": {

View file

@ -1,9 +1,9 @@
{
"feature_name": "scheduler-sim-diagnostics",
"created_at": "2026-08-16T11:02:06Z",
"updated_at": "2026-09-20T03:30:00Z",
"updated_at": "2026-09-29T12:59:52Z",
"language": "en",
"phase": "tasks-generated",
"phase": "implemented",
"description": "Open-ended simulation-mode REPL diagnostics spec. First capability: limit inspection (info limit <name|all>) showing configured setting (scope, value/percent) and live accounted usage per instance. Requirement 6 (added 2026-09-19): human-readable unit scaling for byte-valued limit amounts, designed via a fmt_limit_units() sibling entry point plus a promoted shared-lib byte-formatter (utils.c), tasks 7-10. Future capability (seed capability 2, not yet in requirements.md): decision-reasoning trace for pend/dispatch outcomes.",
"approvals": {
"requirements": {

View file

@ -75,7 +75,7 @@
- _Requirements: 6.1, 6.3, 6.5, 5.3_
- _Boundary: Shared Units Formatter, REPL Limit Info Command (the retyped composer and its thin-wrapper callers live in `repl_info.c`/`repl_fmt.c`)_
- [ ] 8. Core: Human-readable configured-setting display
- [x] 8. Core: Human-readable configured-setting display
- [x] 8.1 Add a display-mode-aware way to render a limit's configured setting
- New entry point produces the same configured-setting output the existing formatter already produces, except a byte-valued, non-percentage resource's amount renders in human-readable form according to a supplied display mode
- The existing formatter's own output is provably unchanged for every input it can be given — proven by its complete pre-existing test coverage continuing to pass with zero modification
@ -99,7 +99,7 @@
- _Depends: 7_ — task 7 retypes the exact shared formatting call chain this task's fix flows through (the limit usage display's classification feeds into that same composer); sequencing after 7 avoids two tasks editing overlapping logic in an uncoordinated order, not a data dependency on any new symbol this task itself needs
- _Boundary: REPL Limit Info Command_
- [ ] 10. Validation: Confirm correctness, consistency, and no regression
- [x] 10. Validation: Confirm correctness, consistency, and no regression
- [x] 10.1 Re-verify existing test coverage against the corrected usage display
- Task 9 found that fixing the resource-classification defect did NOT break any pre-existing assertion outright — instead, several existing assertions on the live usage display's amounts turned out to be loose substring checks against whole-number fixture values, which happen to still match the corrected, human-augmented output by coincidence of formatting (the old expected text is a literal prefix of the new one) rather than by genuinely exercising the fix
- Identify every such loose, coincidentally-still-passing assertion, and strengthen each one to assert the actual corrected output precisely enough that it would fail if the resource-classification fix were reverted

View file

@ -1,9 +1,9 @@
{
"feature_name": "scheduler-sim-live-allocation",
"created_at": "2026-09-18T06:48:27Z",
"updated_at": "2026-09-18T09:45:00Z",
"updated_at": "2026-09-29T12:59:52Z",
"language": "en",
"phase": "tasks-generated",
"phase": "implemented",
"approvals": {
"requirements": {
"generated": true,

View file

@ -1,6 +1,6 @@
# Implementation Plan: scheduler-sim-live-allocation
- [ ] 1. Foundation: independent core-safe seams and leaf migrations
- [x] 1. Foundation: independent core-safe seams and leaf migrations
- [x] 1.1 (P) Give the allocation dispatch chokepoint an optional, normal-mode-only performance cache seam
- Add two NULL-by-default callback fields to the shared core state for consulting and populating the unsatisfiable-resreq cache, mirroring the existing session-reset callback's proven shape (a bare function pointer taking the core state directly, no wrapper struct, no opaque handle)
- Implement the two adapter functions against the real cache, in the same file the existing session-reset adapter already lives in, registered only during normal-mode startup
@ -24,7 +24,7 @@
- _Requirements: 1.3, 3.1, 3.2_
- _Boundary: Core-Safe Allocation Chain_
- [ ] 2. Core: driver-agnostic allocation search and dispatch
- [x] 2. Core: driver-agnostic allocation search and dispatch
- [x] 2.1 Thread shared core state through the per-job allocation context and the per-host allocation attempt
- Change the per-job allocation context's driver-reference field to carry shared core state instead of a normal-mode-only pointer, updating its handful of existing cast sites
- Re-type the per-host allocation-attempt function (which calls the three capacity checks from 1.3 and the prepare-allocation hook from 1.2) to take shared core state directly
@ -55,7 +55,7 @@
- _Requirements: 2.1, 2.2, 2.3, 2.4_
- _Boundary: Limit Plugin Core-Safe Matching_
- [ ] 3. Core: unify job election and allocation into one implementation
- [x] 3. Core: unify job election and allocation into one implementation
- [x] 3.1 Extract the job-picking and allocation loop into a single implementation shared by both drivers
- Move the job-picking thread body and the allocation thread body out of the normal-mode-only file they live in today, into their own file, re-typed to operate on shared core state directly
- Confirm every call this pair makes is already driver-agnostic after tasks 1.2/2.1/2.2 — no remaining reference to anything normal-mode-only
@ -66,7 +66,7 @@
- _Requirements: 1.1, 1.2, 5.1_
- _Boundary: Unified Picker/Allocator Threads_
- [ ] 4. Integration: wire simulation mode onto the shared implementation
- [x] 4. Integration: wire simulation mode onto the shared implementation
- [x] 4.1 Replace simulation mode's placeholder picker with the shared picker/allocator pair
- Replace simulation mode's own always-pend placeholder thread with the shared job-picking and allocation thread pair from 3.1, spawned against simulation mode's own core state
- Confirm the existing one-job-at-a-time hand-off guarantee between picking and allocating still holds now that simulation mode genuinely uses it for the first time
@ -94,7 +94,7 @@
- _Requirements: 2.2_
- _Boundary: Unified Picker/Allocator Threads, Limit Plugin Core-Safe Matching_
- [ ] 5. Validation: prove equivalence and the concrete acceptance test
- [x] 5. Validation: prove equivalence and the concrete acceptance test
- [x] 5.1 Prove identical decisions and accounting state under resource contention across both drivers
- Build a resource-contention fixture (multiple jobs, capacity insufficient for all of them, including capacity constrained by a matching limit) and drive it through both drivers
- Observable: both drivers produce the same admission/pend outcome and the same final resource-accounting state for the identical input

View file

@ -1,9 +1,9 @@
{
"feature_name": "xce-test-cli-ux",
"created_at": "2026-08-26T08:38:15Z",
"updated_at": "2026-09-08T22:15:00Z",
"updated_at": "2026-09-29T12:59:52Z",
"language": "en",
"phase": "tasks-generated",
"phase": "implemented",
"approvals": {
"requirements": {
"generated": true,

View file

@ -1,6 +1,6 @@
# Implementation Plan
- [ ] 1. Foundation: shared libraries, process-level fixes, and test harness
- [x] 1. Foundation: shared libraries, process-level fixes, and test harness
- [x] 1.1 Build the flag-descriptor table format and getopt_long-based parsing/rejection core
- Define the flag-descriptor structure (short form, long form, concept name, required flag, default description) and a builder that produces a getopt_long-compatible option table from it
- Implement the shared rejection path: an unrecognized or malformed flag prints the offending flag plus the command's usage summary to stderr and returns a nonzero result
@ -51,7 +51,7 @@
- Observable completion: a smoke test using the new harness launches the client, sends a trivial command, and confirms the expected output arrives on the correct stream with the expected exit code
- _Boundary: Testing Infrastructure_
- [ ] 2. Core: independent new capabilities and standalone fixes
- [x] 2. Core: independent new capabilities and standalone fixes
- [x] 2.1 (P) Build the destructive-command confirmation gate and its session-scoped toggle
- Implement a confirmation check that prompts the operator on stderr before proceeding, returns a distinct "not run" outcome on decline, and treats an interrupt during the prompt the same as a decline
- Add a bypass flag usable per invocation and a session-scoped toggle (mirroring the existing continue-on-error toggle's style) that both default to requiring confirmation and both reset at process start
@ -97,7 +97,7 @@
- _Requirements: 12.1_
- _Boundary: Bug-1557 Fix_
- [ ] 3. Integration: migrate existing commands onto the new foundations
- [x] 3. Integration: migrate existing commands onto the new foundations
- [x] 3.1 Migrate every flag-accepting command's parsing to the shared validation library
- Convert every command currently parsing flags via the older mechanisms (including the one command using a fully hand-rolled long-flag parser) to the shared descriptor-table-driven parsing built in 1.1/1.2, so every one uniformly rejects an unrecognized or malformed flag and gains a long-form equivalent for each concept
- While migrating the queue-control command, initialize its action selection to an explicit unset sentinel and reject the invocation if none of its mutually-exclusive action flags was given, matching its sibling host-control command's existing pattern
@ -148,7 +148,7 @@
- _Boundary: Command Dispatcher_
- _Depends: 3.1, 3.2, 3.3, 3.4, 3.5_
- [ ] 4. Validation: end-to-end verification
- [x] 4. Validation: end-to-end verification
- [x] 4.1 Verify Ctrl-C cancellation end-to-end
- Confirm interrupting a command blocked on a real request abandons the wait well before its own timeout, reports the command as failed, and leaves the session's context and connection usable
- Confirm that issuing a second command on the same connection immediately after an interrupt does not race the abandoned request, and that a command on a different connection is unaffected