Skip to content

Release SIA 1.8.1: cockpit fixes and reviewable commitments - #20

Open
AnubisQuantumCipher wants to merge 16 commits into
mainfrom
fix/perception-integrity
Open

AnubisQuantumCipher wants to merge 16 commits into
mainfrom
fix/perception-integrity

Conversation

@AnubisQuantumCipher

@AnubisQuantumCipher AnubisQuantumCipher commented Sep 20, 2026

Copy link
Copy Markdown
Owner

SIA's published main branch lacks the accumulated cockpit, commitment-review, and resident-status fixes. This prepares SIA 1.8.1, consolidating the fixes on fix/perception-integrity into one reviewable maintenance update.

The cockpit paints its graph before presentation, avoids redundant entry animation and idle graph work, preserves the named graph generation during refresh, and no longer flashes the first-install gate during routine revalidation. Commitments show full text and due dates and provide a terminal review that records an outcome before explicit closure. The resident CLI exposes the full commitment and copyable ID. The branch also includes the accumulated live-status cleanup and option-shaped claim/configuration fixes.

Validation: targeted/release suite passed (259 tests); the full sequential run executed 3799 tests and identified two test-maintenance issues, both corrected (old text-length fixture and explicit isolation import). Corrected modules passed (55 tests), followed by final CLI/review/options/pulse/isolation checks (180 tests). The real-gbrain lane passed; the compiled-render lane was explicitly NOT EXERCISED without its independently pinned artifacts. QML syntax, shell syntax, pinned ShellCheck, and whitespace checks passed. GitHub CI is the final branch gate.

Release coordination: the operator explicitly requested that SIA 1.8.1 replace the older marketplace review target. Retire marketplace issue #7719 before merging; the ROADMAP records that deliberate replacement and ends the old pending declaration. Merge only after required checks pass. Establish a final frozen main HEAD, tag/build the release from that exact commit, and submit fresh marketplace verification for it. No old scan or approval carries over. Standard-installation approval remains a separate marketplace decision; this PR does not claim that the Install button is enabled.

The straight-down compositor rule is documented in the manual and remains a scoped desktop preference. Closing a commitment records an operator outcome; it does not verify a prediction or repair the underlying system.

Release preparation: manifest, runtime, MCP, QML, and documentation now agree on 1.8.1. Version/setup/cockpit checks passed (94 tests). Aggregate GitHub traffic archiving is available as a maintainer-only script; it adds no installer telemetry, preserves raw rolling windows, and does not equate clones/downloads with installations. Collector tests and isolation/version checks passed. The final full GitHub CI run must pass before merge. Source archives and checksums will be uploaded to the release after the final main commit is known; the local candidate archive is not a published release.

Summary by CodeRabbit

  • New Features

    • Review commitments directly from the Cockpit, with required outcomes and confirmation before closing.
    • View complete commitment details as JSON from the CLI.
    • Support commitment text up to 300 characters.
    • Add daily GitHub traffic and release-download reporting.
  • Improvements

    • Preserve the validated graph during refreshes while newer publications await validation.
    • Improve graph animation, loading transitions, and status messaging.
    • Make continuity details collapsible and clarify overdue commitments.
  • Documentation

    • Updated release documentation and usage guidance for v1.8.1.

sicarii and others added 13 commits September 19, 2026 20:04
Verify issue omacom/omarchy-plugin-marketplace#7719 targets the current main
HEAD. Nothing may move main until that commit is verified or the issue is
retargeted; this declaration is what the CI freeze gate reads.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QVs5R2j9MoP6nstKodmyk2
After the maintainer machine moved back to the released lane, `sia status`
kept printing the retired lane's last generation ("retained pulse 13620")
from the cockpit's cached view, which retirement had left in place beside
the moved live generation and candidate. The cached view now moves under
the same receipt.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016YDGn1w6rSYf91XfQsEcsx
…its boundaries

On the released lane, with the opt-in off and nothing retained, `sia status`
printed "live refused · live-view-cache-unavailable" followed by seven
boundary lines: an absence described as a failure. It now prints one line
saying the lane is off. A retained lane, a pending live loop, an enabled
opt-in or a cached view still report through the live view, refusals
included, and `sia live` is unchanged.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016YDGn1w6rSYf91XfQsEcsx
… is off

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016YDGn1w6rSYf91XfQsEcsx
A take whose claim is "--help" (registered before `sia take --help` was
refused; two such takes are due on the maintainer machine) made the
engine's CLI print its usage text instead of a result list, admission
refused "grading recall response could not be admitted", and the take
stayed due on every nightly run. Such a claim is not recalled at all: a
completed recall with no admitted evidence is the documented path on
which the judge grades UNRESOLVABLE and closes the take.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016YDGn1w6rSYf91XfQsEcsx
siatakes reads config.json with its own top-level key roster and fails
closed to no judge on any unknown key. The shipped config.example.json
carries a "mind" section (the controller-source opt-in) that the roster
never learned, so on the maintainer machine, and on any machine started
from the example config, `sia grade` reported "judge unavailable" with a
working Claude CLI and a configured judge, and grading never ran. The
roster now admits every key the runtime's own loader admits; a test holds
it to the example config and to sialib's roster.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016YDGn1w6rSYf91XfQsEcsx
…clock, rest when settled

A 40 ms Timer drove both the graph physics and the twelve-second growth
reveal, and the JavaScript canvas it repainted is software-rendered on
many machines: the timer fired late, so the replay stretched well past
twelve seconds and every frame landed off the display's own beat, which
is what "the little thoughts come down slow and choppy" looks like.

The physics now steps on FrameAnimation with every per-tick quantity
scaled by the real elapsed fraction of a tick (trajectory checked against
the 40 ms tick at 8 and 17 ms frames), the reveal advances by elapsed
time so it takes twelve seconds at any frame rate, and once nothing moves
the loop stops; a ten-frame-per-second breath keeps the fresh-memory glow
and the root halo alive. Hover, a new graph, a replay, a resize or a kind
toggle wake it.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016YDGn1w6rSYf91XfQsEcsx
…f running forever

With the cockpit open and the graph sitting still, the shell used about 64%
of a core (2% closed). The physics was tuned per 40 ms tick and scaled by the
elapsed frame time, capped at 2.5 ticks. Fed the 100 ms frames a software
renderer routinely delivers, the explicit integrator overshot its own springs
and never crossed the settle threshold, so the frame loop ran at full rate
forever; it dipped to 4% only when frames happened to be short, and every
pulse's graph reload restarted it. The elapsed time is now spent in sub-ticks
of at most one tuned tick, so a 100 ms frame settles in the same wall time as
a 17 ms one (about six seconds on the maintainer graph at every rate) and the
breath timer takes over. The regression test uses a graph shape on which the
old integrator provably never settles at 100 ms; the label test's literal
follows the frame-clock call shape.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QVs5R2j9MoP6nstKodmyk2
…reathe on a glow layer

Measured on the shell with the cockpit open (per-thread /proc sampling, a
probe timer writing the frame loop's state every two seconds):

- 63% of a core whenever a graph was on screen, 2% during the window a
  pulse rewrites graph.json ahead of status.json, forever. The layout was
  never settling: its first seed ran when the canvas reported width 1040
  and height 0, so every memory sat on one point at the top edge (a ring of
  radius zero), and escaping that took 392 ticks of violent repulsion. Under
  the shell's 220 ms software frames, clamped to one 40 ms tick each, that
  is 86 seconds, and every pulse interrupted it. Model.syncGraph now refuses
  a zero-size canvas; the resize handlers seed once both dimensions exist.
  The first real-size seed settles exactly as a fresh one (139 ticks on the
  live 260-memory graph).

- A tick keyed L.pos by string inside the all-pairs loop: two strings per
  pair, 67,340 per tick on that graph. Keys are built once per node; the
  trajectory is bit-identical (verified on 300 mixed-length frames) and a
  tick costs 13x less in Node.

- A slow frame advances the layout by the time it took, up to 250 ms in
  sub-ticks, instead of one tick, so a 220 ms frame moves 220 ms of wall
  clock. The 100 ms case in the settle test is unchanged.

- The breath (fresh glow, root halo) moved to its own canvas above the
  graph, following every graph paint through onPainted, at 5 Hz. A settled
  graph never repaints its 260-node canvas to breathe: on a software
  renderer at 2x scale that canvas costs about 89 ms a frame (40% of a core
  at the 4.5 fps the surface delivers here, all of it in QRasterPaintEngine
  stroke).

After: a settled open cockpit is 5% main thread + 6% render thread; the
layout settles about 6 s after opening and 2-10 s after a pulse, then rests.
Verified end-to-end by restarting the shell (an edited plugin file is NOT
reloaded by "Local plugin changed, reloading" nor by setPluginEnabled) and
sampling 95 s across two pulses.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QVs5R2j9MoP6nstKodmyk2
… waits

The brainstem republishes graph.json up to five times a pulse (two partial
scans, the complete generation, its post-source rebuild) and names the final
one in status.json about eleven seconds after the first write. The cockpit
withdrew the graph the instant the file changed and, once reread, refused the
newer generation because no status named it yet, so the center card said
"current graph unavailable" for a quarter of every minute and the entries
list flashed a red boundary once a pulse.

The combined-claim contract is unchanged — the displayed graph is always the
one the displayed status names — but the cockpit now remembers that graph
(admittedGraph) and keeps it on screen while a newer publication waits for
the status that will name it, saying so in the snapshot line. A rejected or
vanished resident graph still withdraws it; a status naming neither
generation withdraws it. An unnamed generation never touches the layout, so
hover, neighbourhoods, a locked selection and a running replay survive the
republish. One rename can arrive as a burst of change events (the probe saw
the second event find `graph` already withdrawn), so both pending boundaries
keep the admitted generation.

The remaining beat is the status reread itself: settle waits drop from
150–200 ms to 60 ms, the returning graph and entry stream fade in over 140 ms
(the shell's PopupCard timing), "current graph unavailable" is only said
after 400 ms of absence, the cockpit fades in when summoned, and boundaries
that name a routine revalidation render muted instead of urgent.

Measured on this box with a 4 fps capture of the graph card correlated with
the snapshot files' mtimes: before, 11 s blank per 60 s pulse; after, one
sub-second dip at the status rename.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…uarter

Measured 11.1 s per 60 s pulse (JACKAL exact: 11112/1000/60 = 463/2500).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Sep 20, 2026

Copy link
Copy Markdown

Review Change StackReview Change Stack

Warning

Review limit reached

Next included review available in 25 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: Repository: AnubisQuantumCipher/sia/.coderabbit.yaml

Review profile: CHILL

Plan: Advanced

Run ID: 0bb9340b-63de-44c6-9280-9d37653dd22f

📥 Commits

Reviewing files that changed from the base of the PR and between e54309b and d8cb7a8.

📒 Files selected for processing (1)
  • .coderabbit.yaml

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Advanced

Run ID: 8623a772-edf0-4ce0-a3df-13f8f2cf1ed1

📥 Commits

Reviewing files that changed from the base of the PR and between f9a2b98 and e54309b.

📒 Files selected for processing (29)
  • .github/workflows/ci.yml
  • CHANGELOG.md
  • Cockpit.qml
  • MAINTAINERS.md
  • Model.js
  • README.md
  • ROADMAP.md
  • bin/sia
  • bin/sia-intent-review
  • bin/sia-mcp
  • bin/siacheckpointcycle.py
  • bin/sialib.py
  • bin/siatakes.py
  • docs/CONTINUITY.md
  • docs/MANUAL.md
  • docs/WHITEPAPER.md
  • install.sh
  • manifest.json
  • scripts/collect_github_metrics.py
  • tests/test_checkpoint_bootstrap.py
  • tests/test_cli.py
  • tests/test_cockpit_boundary_horizon.py
  • tests/test_cockpit_integrity_boundaries.py
  • tests/test_github_metrics.py
  • tests/test_graph_layout.py
  • tests/test_intent_review.py
  • tests/test_marketplace_first_light.py
  • tests/test_pulse_sync.py
  • tests/test_siatakes_hardening.py

Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review.


📝 Walkthrough

Walkthrough

Changes

Cockpit commitment review and graph presentation

Layer / File(s) Summary
Commitment review flow
bin/sia, bin/sia-intent-review, Cockpit.qml, install.sh, tests/test_intent_review.py
The CLI exposes full commitment JSON and the Cockpit launches an interactive review. Closing requires an outcome and confirmation.
Graph admission and rendering
Model.js, Cockpit.qml, tests/test_graph_layout.py, tests/test_cockpit_integrity_boundaries.py
Graph layout uses elapsed frame time and settling detection. The Cockpit retains the status-admitted generation while a newer publication awaits validation.
Live-lane status and retirement
bin/sia, bin/siacheckpointcycle.py, tests/test_cli.py, tests/test_checkpoint_bootstrap.py
Status output reports an absent live lane as live off. Retirement moves the cached live view with other retired files.
Take grading admission
bin/siatakes.py, tests/test_siatakes_hardening.py
The grader accepts the mind configuration key and completes option-shaped or blank claims without a recall-engine call.
GitHub metrics collection
scripts/collect_github_metrics.py, MAINTAINERS.md, tests/test_github_metrics.py
A collector validates traffic and release responses and saves atomic restricted snapshots. Maintainer instructions document collection limits and failure behavior.
Release metadata and coordination
README.md, CHANGELOG.md, manifest.json, bin/sialib.py, bin/sia-mcp, Model.js, docs/*, ROADMAP.md
Release references change to 1.8.1. The changelog, manual, roadmap, and release metadata describe the updated runtime behavior and review state.

Priority: ➖ Normal

Estimated code review effort: 4 (Complex) | ~60 minutes

Change: Feature

Sequence Diagram(s)

sequenceDiagram
  participant Cockpit.qml
  participant sia-intent-review
  participant bin/sia
  Cockpit.qml->>sia-intent-review: launch review with full intent id
  sia-intent-review->>bin/sia: request full commitment JSON
  bin/sia-->>sia-intent-review: return id, text, due, holder, created
  sia-intent-review->>bin/sia: submit outcome after confirmation
  bin/sia-->>sia-intent-review: return close result
Loading

Merge Risk: ⚪ Minimal · up to e5430

No concrete merge-blocking risk remains.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 16.07% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 56 functions across 16 files. (13 skipped… Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly identifies the 1.8.1 release and its main changes: cockpit fixes and reviewable commitments.
Full details: Docstring Coverage

Explanation

Docstring coverage is 16.07% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 56 functions across 16 files. (13 skipped: 13 unsupported.)

✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@AnubisQuantumCipher AnubisQuantumCipher changed the title Queue accumulated SIA cockpit and commitment fixes for release Release SIA 1.8.1: cockpit fixes and reviewable commitments Sep 20, 2026
@AnubisQuantumCipher
AnubisQuantumCipher marked this pull request as ready for review September 20, 2026 17:56
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