Skip to content

Feat/146 implement file system arrays - #582

Merged
moebiusband73 merged 6 commits into
mainfrom
feat/146-implement-file-system-arrays
Oct 1, 2026
Merged

moebiusband73 merged 6 commits into
mainfrom
feat/146-implement-file-system-arrays

Conversation

@moebiusband73

Copy link
Copy Markdown
Member

No description provided.

moebiusband73 and others added 6 commits October 1, 2026 09:12
Adds a Claude Code skill whose driver builds cc-backend and runs it
isolated in a scratch directory with the internal metric store, never
touching the repo's ./var. Subcommands cover setup, start/stop,
line-protocol ingestion, job start, GraphQL queries and metric store
dumps; `smoke` checks per-mount filesystem series and their node sum
for a running job end to end.

.gitignore now re-includes only .claude/skills/run-cc-backend/.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Adopt cc-lib v2.15.0, which adds the filesystem and network device
scopes, declares their instances in the subcluster topology and removes
the metric-group API.

- One IsDevice() branch in the shared scope-query builder handles
  accelerator, filesystem and network for both the internal metric store
  and the external cc-metric-store client: one query per declared
  instance at the device scope, one aggregated query per host at node
  scope, no data for any other requested scope.
- Instances come from topology.filesystems/networks of each node's
  subcluster, and from the job's allocated accelerators. A subcluster
  that declares none gets no data and no error.
- The archiver also stores the filesystem and network scopes whenever
  the subcluster declares them, independent of the node count.
- Remove the metric-group plumbing from the archive decoders, the
  Parquet converter and the job-data deep copy.
- Collectors must tag device data type=<device>,type-id=<id>, as for
  accelerators; stype/stype-id under type=node lands in the host buffer.
- Regenerate Swagger and document device scopes in CLAUDE.md. Includes
  the OpenSpec change device-metric-scopes.

BREAKING CHANGE: a device scope requested for a CPU-native metric now
returns no data instead of falling back to the native scope. Newly
archived GPU jobs with more than 8 nodes no longer contain hwthread
series, and the node list and single-node GPU job rows show CPU metrics
at core instead of hwthread scope. Job data with a top-level array such
as the former "filesystems" no longer decodes.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The job-archive and line-protocol links pointed at cc-specifications,
which is no longer maintained in step with the code. README.md and
CLAUDE.md now point at the JSON schemas embedded in cc-lib, which are
canonical. The /write/ endpoint documents its line format inline,
including the type/type-id tags of device metrics, and the description
now reaches the generated Swagger (a blank line had cut it off).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Move the completed OpenSpec change to the archive and add its nine
requirements as the new device-metric-scopes main spec.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
An aggregated series was labelled with the id of its first source: a
filesystem or GPU metric at node scope carried the first mount point or
GPU, a hardware-thread metric at core scope the first hardware thread of
each core. It now carries the id of the scope instance it represents:
none at node scope, the core id at core scope, the socket id at socket
scope. Unaggregated series keep their source id.

- BuildScopeQueries returns the target id with every aggregated result,
  and the builders of both stores return QueryTarget{Scope, ID} in place
  of the parallel assignedScope slice.
- The result loops of LoadData, LoadScopedStats and LoadNodeListData, in
  the internal store and the cc-metric-store client, take the target id
  for aggregated queries.
- Core metrics at socket scope are now built from core ids. The branch
  passed hardware-thread ids as core ids, so on SMT nodes it aggregated
  the wrong cores and picked sockets the job does not use.
- The run-cc-backend smoke test asserts that the node series has no id.
  Includes the OpenSpec change aggregated-series-ids.

BREAKING CHANGE: GraphQL Series.id / ScopedStats.id, REST job data and
newly archived jobs report different ids for aggregated series. Jobs
already archived keep their stored ids.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Move the completed OpenSpec change to the archive and add its five
requirements as the new scope-aggregation main spec.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@moebiusband73
moebiusband73 merged commit 9a114a8 into main Oct 1, 2026
2 checks passed
@moebiusband73
moebiusband73 deleted the feat/146-implement-file-system-arrays branch October 1, 2026 13:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant