Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
707 commits
Select commit Hold shift + click to select a range
c44d09b
fix(boundary): remove nango references from mit code
auscaster May 25, 2026
c69ce70
fix(issue-to-pr): enforce code PR quality gates
auscaster May 25, 2026
248476a
fix(runtime): expose catalog artifact envelopes
auscaster May 25, 2026
192101e
fix(runtime): wrap graph step artifacts
auscaster May 25, 2026
44bb8c7
fix(issue-to-pr): allow tested PRs without scafld counts
auscaster May 25, 2026
7c30804
fix(github): keep closed PR gates closed
auscaster May 25, 2026
03ff65f
fix(runtime): harden receipt proof cutover boundaries
auscaster May 25, 2026
20fe909
chore: align receipt and credential fixtures
auscaster May 26, 2026
4b64b13
feat: harden rust runtime cutover
auscaster May 26, 2026
7777466
feat: clean cutover runtime trust boundaries
auscaster May 26, 2026
3f6aed0
chore: archive skill output attestation spec
auscaster May 26, 2026
5c73651
fix: expose declared graph artifacts
auscaster May 26, 2026
5f584fc
fix(runtime): expose graph step outputs for context
auscaster May 26, 2026
0cff730
feat(runtime): harden rust cutover surfaces
auscaster May 26, 2026
f9fedb6
refactor(policy): clean credential grant naming
auscaster May 26, 2026
29212fa
fix(runtime): resolve enveloped agent outputs
auscaster May 26, 2026
4947c77
fix(runtime): allow transition gates on declared outputs
auscaster May 26, 2026
e68de63
chore(oss): harden rust runtime cutover
auscaster May 26, 2026
2efea08
test(runtime): cover parallel fanout ordering
auscaster May 26, 2026
c769d95
chore(runtime): checkpoint throughput architecture lift
auscaster May 26, 2026
abdfaa8
refactor: lift rust runtime architecture
auscaster May 26, 2026
24b8097
test(core): strengthen authority algebra properties
auscaster May 26, 2026
0a78e1e
refactor(runtime): unify process group signaling
auscaster May 26, 2026
20bb26c
style(rust): remove stale large-file waivers
auscaster May 26, 2026
30934cf
fix(runtime): split process signal boundary
auscaster May 26, 2026
2acc417
chore(scafld): archive rust dev spec
auscaster May 26, 2026
0542f9a
refactor(runtime): complete s-tier cutover cleanup
auscaster May 26, 2026
ff2f62f
feat(runtime): cut over pooled MCP sessions
auscaster May 27, 2026
d25fc92
refactor(runtime): share mcp client runtime
auscaster May 27, 2026
17555fd
refactor(receipts): split receipt tree verifier
auscaster May 27, 2026
b92478b
refactor(parser): split skill parser modules
auscaster May 27, 2026
b957f4c
refactor(parser): isolate skill validation concerns
auscaster May 27, 2026
80b555e
refactor(core): split fanout gate evaluation
auscaster May 27, 2026
7c19b55
refactor(core): split kernel eval bridge
auscaster May 27, 2026
67eaedb
refactor(receipts): split receipt tree tests
auscaster May 27, 2026
8bfd293
refactor(core): split authority proof policy
auscaster May 27, 2026
44e0139
refactor(core): split sequential graph planner
auscaster May 27, 2026
da2a46f
test(runtime): harden mcp and cli boundaries
auscaster May 27, 2026
8714618
fix(runtime): replay dev fixtures with local options
auscaster May 27, 2026
760e62d
test(crates): consolidate integration tests to one binary per crate
auscaster May 27, 2026
538394b
chore(issue-to-pr): commit pending working-tree edits
auscaster May 27, 2026
5a1b1c3
style(crates): rustfmt consolidated cli integration tests
auscaster May 27, 2026
dd01550
chore(scafld): clean stale draft specs
auscaster May 27, 2026
b162fda
ci(oss): cache rust compilation with sccache
auscaster May 27, 2026
95fda7d
feat(runtime): harden rust release readiness
auscaster May 27, 2026
2014bba
fix(ci): ignore stale generated runtime cache in boundary check
auscaster May 27, 2026
22ac2d3
fix(runtime): satisfy linux sandbox clippy gate
auscaster May 27, 2026
2e25550
test(cli): track tool build fixtures
auscaster May 27, 2026
ec21941
fix(runtime): isolate sandbox temp inputs without backend
auscaster May 27, 2026
27e3dfd
refactor: clean runtime and contract boundaries
auscaster May 27, 2026
9056753
docs(contracts): add verified doctests on fingerprint helpers
auscaster May 27, 2026
72d8a2e
fix(runtime): harden sandbox containment paths
auscaster May 27, 2026
6277a7e
perf(runtime): reduce graph execution hot path churn
auscaster May 27, 2026
6d9b24b
docs(sdk,parser): add verified doctests on CommandPlan and yaml scala…
auscaster May 27, 2026
edb5b44
chore(runtime): complete rust readiness gate
auscaster May 27, 2026
f0fcc25
fix(ci): build packages before contract checks
auscaster May 27, 2026
8f39c67
docs(changelog): record test-surface consolidation and doctests
auscaster May 27, 2026
d2fe772
fix(runtime): preserve PATH in signed graph tests
auscaster May 27, 2026
6f6d87f
docs(scafld): archive runtime test gate spec
auscaster May 27, 2026
5a64917
refactor(cli): delegate official-skill install to the native registry
auscaster May 27, 2026
66755fb
refactor(core): remove orphaned marketplaces module
auscaster May 27, 2026
7382352
refactor(core): retire orphaned knowledge projection library
auscaster May 28, 2026
e7f69e4
docs(scafld): record registry hosted cutover spec
auscaster May 28, 2026
b33ddd9
perf(runtime): cut over throughput hot paths
auscaster May 27, 2026
705f3ad
perf(runtime): harden release perf probes
auscaster May 27, 2026
386f54c
feat(contracts): add operational proposal refs
auscaster May 28, 2026
fee8e39
fix(scafld): recover command review state
auscaster May 28, 2026
bde493f
fix(outbox): keep story renderers local
auscaster May 28, 2026
0c69e22
fix(issue-to-pr): require code coverage evidence
auscaster May 28, 2026
9342db0
fix(issue-to-pr): pass source thread to provider push
auscaster May 28, 2026
1e26be2
feat(core): harden operational proposal contracts
auscaster May 28, 2026
e91b8f4
feat(cli): add native runx url-add via /v1/index
auscaster May 28, 2026
7b5be9f
refactor(contracts): open post-merge provider id
auscaster May 28, 2026
0f5cc6e
refactor(contracts): open operational policy source provider and runn…
auscaster May 28, 2026
3f73381
chore(ci): clear pre-existing rust-style, clippy, and cli-parity debt
auscaster May 28, 2026
c944669
refactor(contracts): replace sentry slot with open adapter_policy map
auscaster May 28, 2026
475f26b
refactor(runtime): open managed agent provider id
auscaster May 28, 2026
c95c1af
refactor(core): use canonical provider constants in non-adapter code
auscaster May 28, 2026
970fc2c
refactor(contracts): open receipt subject kind
auscaster May 28, 2026
c553cac
feat(contracts): add canonical SourcePacket and open signal_type
auscaster May 28, 2026
5b2e251
docs(scafld): add runtime-decomp and tool-manifest follow-up specs
auscaster May 28, 2026
fc11c52
feat(contracts): model named_emits, artifact, and output bindings in …
auscaster May 28, 2026
3c75f24
refactor(runtime): extract commands, adapter, projection from target_…
auscaster May 28, 2026
345306b
refactor(runtime): extract pull-request slice from target_runner
auscaster May 28, 2026
7879d03
refactor(runtime): extract dispositions helpers from harness/runner
auscaster May 28, 2026
eba78b9
refactor(runtime): extract step output projection helpers
auscaster May 28, 2026
d80d533
refactor(core): extract payment authority subset comparator
auscaster May 28, 2026
f67aa17
refactor(runtime): extract response redaction from external_adapter
auscaster May 28, 2026
1b01300
docs(scafld): archive completed runtime-decomp + tool-manifest specs
auscaster May 28, 2026
70601d6
release: stamp runx 0.6.0 across crates and npm packages
auscaster May 28, 2026
70fd164
fix(ci): pin shell: bash on cross-platform release packaging steps
auscaster May 28, 2026
a0ab2c9
fix(ci): make npm.cmd spawn work on windows runners
auscaster May 28, 2026
8df8f4a
fix(ci): use 7-zip on windows release archive step
auscaster May 28, 2026
0005ee2
fix(ci): switch darwin-x64 runner to macos-15 (apple silicon + rosetta)
auscaster May 28, 2026
8e1443b
fix(ci): use 7-zip to extract zip on windows smoke step
auscaster May 28, 2026
d8925e1
fix(ci): restore exec bits on native binaries before npm verify
auscaster May 28, 2026
51dae6c
feat(runtime): add act-model cutover groundwork
auscaster May 29, 2026
5071a84
chore(security): add cargo-deny advisories, dependabot, and secret sc…
auscaster May 29, 2026
a6f74df
feat(runtime): run a skill's declared inline harness via runx harness…
auscaster May 29, 2026
76f1470
fix(cli): only treat a directory as a skill package when it holds SKI…
auscaster May 29, 2026
f43a14e
fix(graph): route approval resolution by declared gate_id, not step id
auscaster May 30, 2026
a1017cd
feat(graph): support inline cli-tool harness steps
auscaster May 30, 2026
22591a9
spec(runtime): define effect kernel cutover
auscaster May 30, 2026
9f49ec5
spec(scafld): add issue-to-pr fixture drafts
auscaster May 30, 2026
4ac2593
spec(runtime): activate effect kernel build
auscaster May 30, 2026
326b3fe
test(runtime): add effect kernel phase 0 gates
auscaster May 30, 2026
2f60bce
feat(runtime): add dispatch registries
auscaster May 31, 2026
cdd44ed
feat(runtime): add effect registry
auscaster May 31, 2026
b578f01
docs(runtime): record effect kernel phase 2 bridge debt
auscaster May 31, 2026
fb6cd47
feat(runtime): add generic effect settlement guards
auscaster May 31, 2026
babd3a3
refactor(runtime): route payment effects through generic records
auscaster May 31, 2026
b2e5f35
refactor(payments): move authority admission into payments crate
auscaster May 31, 2026
0944461
refactor(core): move payment authority out of kernel
auscaster May 31, 2026
44ba24b
refactor(runtime): complete effect kernel cutover
auscaster May 31, 2026
19db11b
feat(runtime): add credential delivery seam and generic effect-guard …
auscaster May 31, 2026
924b234
fix(runtime): seal credential delivery refs
auscaster Jun 1, 2026
91c38b5
feat(examples): add governed-spend payment demo with offline receipt …
auscaster Jun 1, 2026
83019e3
wip(runtime): seal blocked receipt on payment authority denial under …
auscaster Jun 1, 2026
c5965ec
feat(payments): add rail settlement finality
auscaster Jun 1, 2026
0ce229c
feat(runtime): ship external-adapter source front in the cli
auscaster Jun 2, 2026
5080167
docs(boundary): correct ts-interop boundary against verified code
auscaster Jun 2, 2026
85e3f5e
feat(runtime): add provider-agnostic managed-agent tool-use loop core
auscaster Jun 2, 2026
55e7d3c
feat(runtime): add anthropic provider modelcaller for the managed-age…
auscaster Jun 2, 2026
44e3a70
feat(runtime): recursive managed-agent tool executor over a shared ca…
auscaster Jun 2, 2026
d672c6e
feat(runtime): add anthropic managed-agent resolver tying loop, calle…
auscaster Jun 2, 2026
bf5600f
feat(runtime): wire the in-process managed-agent loop as an opt-in ag…
auscaster Jun 2, 2026
93c724d
docs(examples): add managed-agent front example (agent-task, host-dri…
auscaster Jun 2, 2026
90fe854
docs(examples): add external-adapter graph front example
auscaster Jun 2, 2026
31e57ca
docs: reconcile ts-interop boundary with the shipped agent loop
auscaster Jun 2, 2026
c88d986
test(runtime): cover agent loop error paths, malformed wire, and tele…
auscaster Jun 2, 2026
5bf9bd1
fix(examples): use $input. graph templating in the external-adapter e…
auscaster Jun 2, 2026
392c53d
docs(examples): add OpenAPI front example (external-adapter consuming…
auscaster Jun 2, 2026
9e63b46
test(runtime): strengthen agent loop tests (executor invocation, feed…
auscaster Jun 2, 2026
732e614
docs(examples): clarify examples run via harness, not the catalog
auscaster Jun 2, 2026
3915a7b
fix(runtime): thread admitted authority into every step type's admiss…
auscaster Jun 2, 2026
661d69e
refactor(runtime): seal the step authority witness in one central pla…
auscaster Jun 2, 2026
384b7c5
feat(examples): execute the OpenAPI front against a real endpoint; sh…
auscaster Jun 2, 2026
20ed40f
test(contracts): validate the example adapters emit contract-conforma…
auscaster Jun 2, 2026
49e4997
docs: document the admit->credentials->sandbox->seal governance invar…
auscaster Jun 2, 2026
bdaac22
docs: tighten governance-invariant stage citations
auscaster Jun 2, 2026
9bb217a
feat(runtime): governed HTTP execution engine on runtime_http (http f…
auscaster Jun 2, 2026
237e0a4
feat(runtime): governed HTTP skill source (SourceKind::Http) wired in…
auscaster Jun 2, 2026
4b755e5
refactor(runtime): group http source config into SkillHttpSource with…
auscaster Jun 2, 2026
f085f05
feat(examples): dogfood the governed HTTP front against a local fixture
auscaster Jun 2, 2026
32a9940
feat(contracts): first-class http tool source (ToolSourceType::Http)
auscaster Jun 2, 2026
292718a
feat(runtime): support PUT and PATCH in the governed http front
auscaster Jun 2, 2026
10934b8
feat(runtime): url path templating in the governed http front
auscaster Jun 2, 2026
775a2e0
feat(examples): dogfood a governed http tool through the catalog
auscaster Jun 2, 2026
b41b654
docs: add code of conduct and security policy
auscaster Jun 2, 2026
e7149a7
fix(runtime): harden http adapter edge cases
auscaster Jun 2, 2026
32b70cc
fix(parser): allow http tool sources
auscaster Jun 2, 2026
447c6c2
style(runtime): concrete error type in http test; annotate large-file…
auscaster Jun 2, 2026
2d59acf
refactor(runtime): source graph-step credential delivery from Runtime…
auscaster Jun 3, 2026
7ba5333
docs: act-model reconciliation (live Act/Decision/Signal/Receipt is t…
auscaster Jun 3, 2026
c5e0d09
feat(runtime): serve the governed MCP server over streamable HTTP
auscaster Jun 3, 2026
f4e603c
refactor(runtime): serve MCP-over-HTTP on http1 only (drop http2/h2)
auscaster Jun 3, 2026
42d8e6e
style(rust): green the rust:style backlog
auscaster Jun 3, 2026
cb1d803
fix(runtime): inject a deterministic run_id for graph harness replays
auscaster Jun 3, 2026
5492e88
test(pay): align x402 negative dogfoods to policy_denied seal semantics
auscaster Jun 3, 2026
5dc55fb
test(pay): scope x402 sealing dogfoods to the default-feature build
auscaster Jun 3, 2026
220c5a8
ci: exercise x402 sealing dogfoods in a default-feature lane
auscaster Jun 3, 2026
62b5b50
chore: finalize oss cutover
auscaster Jun 3, 2026
f205f67
chore: finish effect supervisor naming cutover
auscaster Jun 3, 2026
9b7c40d
chore: promote cutover finalization spec
auscaster Jun 3, 2026
8815cc3
feat(oss): finalize cutover and github mcp hero
auscaster Jun 4, 2026
125f6d8
fix(examples): verify github mcp denial offline
auscaster Jun 4, 2026
f5848c1
fix(parser): handle yaml quote escapes in parity scanner
auscaster Jun 4, 2026
5caf5a0
test(contracts): expand canonical json oracle coverage
auscaster Jun 4, 2026
9c15b9b
chore(fixtures): canonicalize contract fixture keys
auscaster Jun 4, 2026
fe22c58
feat(examples): harden openapi front demo
auscaster Jun 4, 2026
909a0ec
chore(runtime): remove redundant io conversions
auscaster Jun 4, 2026
2408e79
feat(runtime): enforce external adapter sandbox intent
auscaster Jun 4, 2026
38f8d0c
feat(runtime): deliver local credentials to graph http steps
auscaster Jun 4, 2026
31ae535
feat(examples): add byo http credential demo
auscaster Jun 4, 2026
e79a109
docs(specs): clarify byo provider boundary
auscaster Jun 4, 2026
a0f54f2
feat(skills): add byo portfolio seeds
auscaster Jun 4, 2026
5164de8
chore(skills): update official skill lock
auscaster Jun 4, 2026
fb86971
chore(scafld): complete byo portfolio spec
auscaster Jun 4, 2026
d243a8f
chore(scafld): complete github mcp hero spec
auscaster Jun 4, 2026
371907e
chore(scafld): complete canonical json float parity spec
auscaster Jun 4, 2026
2cb21aa
chore(scafld): complete canonical oracle coverage spec
auscaster Jun 4, 2026
fc09738
fix(parser): harden yaml parity subset
auscaster Jun 4, 2026
9df53c9
chore(scafld): record yaml hardening review
auscaster Jun 4, 2026
76f659e
feat(receipts): verify offline receipt ancestry
auscaster Jun 4, 2026
3f4f391
feat(demos): promote offline receipt verifier
auscaster Jun 4, 2026
bc678a4
feat(openapi): graduate external-adapter demo
auscaster Jun 4, 2026
303ad47
chore(scafld): archive non-runnable drafts
auscaster Jun 4, 2026
ba6cb27
docs(scafld): scope thread outbox cutover
auscaster Jun 4, 2026
9feefaa
chore(scafld): complete operational intelligence action layer
auscaster Jun 4, 2026
b98cbca
test(outbox): tighten thread provider parity
auscaster Jun 4, 2026
9166b58
feat(outbox): add thread provider source front
auscaster Jun 4, 2026
563f3db
feat(outbox): cut over thread publishing front
auscaster Jun 5, 2026
995dd53
chore(scafld): archive thread outbox provider spec
auscaster Jun 5, 2026
096ed3e
fix(dogfood): update thread outbox auth diagnostic
auscaster Jun 5, 2026
905290f
docs(scafld): clarify test surface readiness blocker
auscaster Jun 5, 2026
63d9350
fix(ci): guard directory integration tests
auscaster Jun 5, 2026
7ae53be
docs(scafld): record final readiness ci run
auscaster Jun 5, 2026
bda4c74
docs(scafld): clarify final ci evidence wording
auscaster Jun 5, 2026
043d141
fix(ci): accept public integration modules
auscaster Jun 5, 2026
2752815
fix(ci): require integration test target
auscaster Jun 5, 2026
918f6eb
chore(scafld): complete test surface consolidation
auscaster Jun 5, 2026
fa08b21
feat(payments): wire stripe spt demo env path
auscaster Jun 5, 2026
9c0733e
fix(demos): standardize payment receipt verification
auscaster Jun 5, 2026
a5e64e1
fix(payments): align stripe spt token request
auscaster Jun 5, 2026
c241127
feat(payments): add x402 demo wrapper
auscaster Jun 5, 2026
2598da4
docs(payments): document upstream x402 conformance
auscaster Jun 5, 2026
40a3084
docs(payments): codify upstream x402 conformance
auscaster Jun 5, 2026
578e463
feat(payments): add x402-rs interop preflight
auscaster Jun 5, 2026
fab9731
docs(payments): add zero-funded x402 dogfood lane
auscaster Jun 5, 2026
f5c7f81
docs(scafld): add runx readiness work queue
auscaster Jun 5, 2026
9747fb1
chore(runx): harden readiness and live-rail gates
auscaster Jun 5, 2026
e887a9f
feat(runx): add public weather provider demo
auscaster Jun 5, 2026
6722d6a
feat(runx): add skill context injection for agent steps
auscaster Jun 9, 2026
c17068a
feat: finalize governed skill catalog
auscaster Jun 9, 2026
83c7411
docs: mark export skills spec ready for review
auscaster Jun 9, 2026
fda793c
docs: clarify orchestrator directory path
auscaster Jun 9, 2026
c5be490
fix: make exported runx skills runnable
auscaster Jun 9, 2026
80ba433
docs: archive export spec and expand orchestrator listings
auscaster Jun 9, 2026
0dd3a07
fix: resolve official skill refs on export
auscaster Jun 9, 2026
d03ee22
docs: record github action listing status
auscaster Jun 9, 2026
4c96954
docs: record public action and n8n reservation
auscaster Jun 9, 2026
f0202cf
fix: teach exported skills to resume agent tasks
auscaster Jun 9, 2026
4ca779c
feat: improve runx skill operator UX
auscaster Jun 9, 2026
a818cb3
feat(runtime): resolve official skills from local registries
auscaster Jun 10, 2026
68ad351
chore(scafld): mark registry resolver ready for review
auscaster Jun 10, 2026
bbd57d6
fix(harness): replay graph-backed skill fixtures
auscaster Jun 10, 2026
333877e
chore(scafld): archive registry resolver spec
auscaster Jun 10, 2026
81be5d7
fix(runtime): harden capability admission (Tier 0 spine)
auscaster Jun 10, 2026
755090a
fix(pay,runtime): close payment proof and spend-cap fail-open gaps
auscaster Jun 10, 2026
124c2d1
docs(plans): record post-Tier-0 hardening audit results in handoff
auscaster Jun 10, 2026
3fcb65c
feat(pay): durable cross-run period spend ledger
auscaster Jun 10, 2026
63734a8
feat(cli): offline runx verify command for sealed receipt stores
auscaster Jun 10, 2026
6b0c27f
chore(scafld): add runx-s-tier-cutover-v1 spec for execution
auscaster Jun 10, 2026
c29d3c6
chore(scafld): approve runx-verify-machine-surface-v1
auscaster Jun 10, 2026
1a8f882
feat(oss): prove governed authority effects
auscaster Jun 10, 2026
27b08c5
feat(cli): clarify registry operator readiness
auscaster Jun 10, 2026
1c7902b
feat(oss): add machine receipt verification surface
auscaster Jun 10, 2026
7a20778
chore: finalize runx readiness gates
auscaster Jun 10, 2026
0650247
feat(cli): harden runx registry workflows
auscaster Jun 10, 2026
7e22feb
refactor: harden runx registry and utility surfaces
auscaster Jun 11, 2026
74216e1
fix(pay): retain durable spend windows
auscaster Jun 11, 2026
9c362d7
refactor(pay): expose effect state store primitives
auscaster Jun 11, 2026
690ef2c
fix(pay): keep rail recovery logic with store persistence
auscaster Jun 11, 2026
620b416
test(pay): cover effect state store seam
auscaster Jun 11, 2026
a6822ef
fix(cli): clarify registry skill next steps
auscaster Jun 11, 2026
0bc29d4
fix(cli): require trusted keys for receipt verification
auscaster Jun 11, 2026
e692937
feat(cli): publish receipts with signed identity
auscaster Jun 11, 2026
0ba8818
chore(contracts): remove aster packet surface
auscaster Jun 11, 2026
e583d83
feat(skills): add dunning-ladder skill for AR reminder ladder
Jun 23, 2026
f0673f6
fix(dunning-ladder): cap-reached exits 1, harness uses cap-reached-es…
Jun 23, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
23 changes: 23 additions & 0 deletions .ai/runs/runx-claim-via-nango/session.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
{
"schema_version": 3,
"task_id": "runx-claim-via-nango",
"created_at": "2026-04-26T08:57:26Z",
"updated_at": "2026-04-26T08:57:26Z",
"model_profile": "default",
"entries": [
{
"type": "approval",
"recorded_at": "2026-04-26T08:57:26Z",
"gate": "approve",
"actor": "human",
"note": "spec approved"
}
],
"recovery_attempts": {},
"criterion_states": {},
"phases": [],
"attempts": [],
"phase_summaries": [],
"workspace_baseline": null,
"usage": {}
}
295 changes: 295 additions & 0 deletions .ai/specs/active/runx-unified-workspace-topology.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,295 @@
spec_version: "1.1"
task_id: "runx-unified-workspace-topology"
created: "2026-04-24T00:45:00Z"
updated: "2026-04-26T15:40:48Z"
status: "in_progress"

task:
title: "Converge runx onto one real workspace and remove nested-repo hybrid debt"
summary: >
The parent workspace root now exists, but the current parent repo plus
nested oss/cloud git repos is still a hybrid. The ideal shape from here is a
single authoritative workspace rooted at /home/kam/dev/runx, with manifest
dependencies expressed as workspace package edges and no gitlink-style nested
repos. Converge the topology so the package graph, tooling, and versioning
all describe the same reality.
size: "large"
risk_level: "high"
context:
packages:
- ".."
- "../oss/packages/*"
- "../cloud/apps/*"
- "../cloud/packages/*"
files_impacted:
- path: "../package.json"
lines: "all"
reason: "Parent repo is already the workspace root and should become the only authoritative repo root."
- path: "../pnpm-workspace.yaml"
lines: "all"
reason: "Workspace membership is declared at the real root and should stay authoritative."
- path: "../cloud/package.json"
lines: "all"
reason: "Cloud should consume @runxhq/* through workspace refs, not local links."
- path: "../oss/package.json"
lines: "all"
reason: "Top-level oss workspace behavior should move to the root or become a package-local concern."
- path: "../.github/workflows"
lines: "all"
reason: "CI should run from the real workspace root, not through nested-repo assumptions."
- path: "../oss"
lines: "all"
reason: "Nested git-repo packaging assumptions should be removed."
- path: "../cloud"
lines: "all"
reason: "Nested git-repo packaging assumptions should be removed."
invariants:
- "Package edges must be real workspace edges, not hidden source or link hacks."
- "There is exactly one authoritative git/workspace root."
- "Cloud and oss remain separately buildable within the unified workspace."
objectives:
- "Finish promoting /home/kam/dev/runx to the only real workspace root."
- "Keep cloud manifest dependencies on workspace package edges instead of link:../oss references."
- "Remove nested gitlink-style repos and normalize tooling and CI around the root."
scope:
in_scope:
- "Workspace manifests, dependency edges, repo topology, and root-level tooling."
out_of_scope:
- "Physically moving every directory if the unified root can be achieved without it."
- "Publishing external package versions to a remote registry."
dependencies:
- "runx-verification-foundation-and-fast-lanes"
- "runx-cli-kernel-final-split"
- "runx-runner-local-facade-final-split"
- "runx-hosted-api-domain-service-split"
- "runx-contracts-single-authority"
assumptions:
- "The preferred end state is one real monorepo workspace, not separate published package release trains."
touchpoints:
- area: "/home/kam/dev/runx"
description: "Future authoritative git and package-manager root."
- area: "../cloud/package.json"
description: "Current local-link consumer that should use workspace refs."
- area: "../oss and ../cloud git topology"
description: "Current nested-repo debt that should disappear."
risks:
- description: "Repo-topology changes can disrupt daily workflows if done before structural code work settles."
impact: "high"
mitigation: "Execute this after the major code-shape refactors and only with a stable fast verification lane."
- description: "Workspace convergence can accidentally break scripts that assume the old cwd layout."
impact: "medium"
mitigation: "Move tooling and scripts in phases and keep root-level entrypoints explicit."
acceptance:
validation_profile: "strict"
definition_of_done:
- id: "dod1"
description: "The parent repo is the only authoritative workspace root."
- id: "dod2"
description: "Cloud consumes @runxhq/* through workspace refs instead of link:../oss/package paths."
- id: "dod3"
description: "oss and cloud are no longer tracked as nested gitlink-style repos."
- id: "dod4"
description: "Root-level install and verification commands operate over the unified workspace."
validation:
- id: "v1"
type: "integration"
description: "Root workspace install succeeds."
command: "pnpm install"
cwd: ".."
expected: "exit code 0"
- id: "v2"
type: "compile"
description: "Root-driven oss and cloud verification succeeds."
command: "pnpm --dir oss typecheck && pnpm --dir cloud typecheck"
cwd: ".."
expected: "exit code 0"
- id: "v3"
type: "boundary"
description: "No cloud package manifest still uses link:../oss package edges."
command: "! rg -n 'link:\\.\\./oss/packages' cloud -g 'package.json'"
cwd: ".."
expected: "exit code 0"
- id: "v4"
type: "boundary"
description: "oss and cloud are no longer tracked as gitlink-style nested repos."
command: "test -z \"$(git ls-files -s oss cloud | awk '$1 == 160000 { print }')\""
cwd: ".."
expected: "exit code 0"

planning_log:
- timestamp: "2026-04-24T00:45:00Z"
actor: "user"
summary: "Asked for concrete execution specs covering the full path to ideal shape."
- timestamp: "2026-04-24T00:45:00Z"
actor: "agent"
summary: "Chose one real workspace as the target end state instead of keeping the current parent-plus-nested-repo hybrid."
- timestamp: "2026-04-25T14:31:49Z"
actor: "agent"
summary: "Rebased the draft on the current root workspace manifests; remaining topology risk is nested gitlink removal and root-driven verification."
- timestamp: "2026-04-26T12:58:00Z"
actor: "agent"
summary: "Executed root workspace install and fixed the blocking workspace-edge issue by including oss/cloud roots and converting local @runxhq package edges to workspace refs."
- timestamp: "2026-04-26T12:58:00Z"
actor: "agent"
summary: "Adversarial review kept phase3 open because parent git still tracks oss and cloud as 160000 gitlinks; removing nested repo history requires an explicit destructive topology cutover."
- timestamp: "2026-04-26T15:40:48Z"
actor: "agent"
summary: "Added a precise final topology cutover checklist and rollback path; phase3 remains blocked until the user explicitly approves the gitlink removal."

phases:
- id: "phase1"
name: "Normalize the existing parent workspace root"
objective: "Keep /home/kam/dev/runx as the package-manager root with explicit workspace membership and root-level commands."
changes:
- file: "../package.json"
action: "update"
lines: "all"
content_spec: >
Audit and expand the existing root package manifest so it exposes the
authoritative workspace-level scripts and package manager settings.
- file: "../pnpm-workspace.yaml"
action: "update"
lines: "all"
content_spec: >
Keep oss and cloud workspace members declared from the real root.
- file: "../oss/package.json"
action: "update"
lines: "all"
content_spec: >
Remove assumptions that oss itself is the only workspace root when
they should now live at the parent level.
- file: "../cloud/package.json"
action: "update"
lines: "all"
content_spec: >
Align cloud package-manager behavior with the new root workspace.
acceptance_criteria:
- id: "ac1_1"
type: "integration"
description: "Root workspace install succeeds."
command: "pnpm install"
cwd: ".."
expected: "exit code 0"
status: "completed"

- id: "phase2"
name: "Replace link edges with workspace edges"
objective: "Make the package graph honest at the manifest level."
dependencies:
- "phase1"
changes:
- file: "../cloud/package.json"
action: "update"
lines: "all"
content_spec: >
Replace link:../oss package edges with workspace: references to the
unified root workspace packages.
- file: "../cloud/pnpm-lock.yaml"
action: "update"
lines: "all"
content_spec: >
Refresh the lockfile against workspace-based package edges. PNPM may
still render resolved workspace packages as link: entries in the
lockfile; the invariant is that package manifests no longer declare
link:../oss dependencies.
- file: "../cloud/tsconfig.base.json"
action: "update"
lines: "all"
content_spec: >
Keep compile-time path resolution aligned with the workspace package
graph after the manifest change.
acceptance_criteria:
- id: "ac2_1"
type: "boundary"
description: "No cloud package manifest still uses link:../oss package refs."
command: "! rg -n 'link:\\.\\./oss/packages' cloud -g 'package.json'"
cwd: ".."
expected: "exit code 0"
status: "completed"

- id: "phase3"
name: "Remove nested gitlink topology and normalize tooling"
objective: "Finish the topology migration so git, CI, and developer commands all operate from the root."
dependencies:
- "phase2"
changes:
- file: "../.github/workflows"
action: "update"
lines: "all"
content_spec: >
Move workspace verification and release automation to the parent root.
- file: "../oss"
action: "update"
lines: "all"
content_spec: >
Remove nested git-repo assumptions and keep only package-level
concerns inside the directory tree.
- file: "../cloud"
action: "update"
lines: "all"
content_spec: >
Remove nested git-repo assumptions and keep only package-level
concerns inside the directory tree.
acceptance_criteria:
- id: "ac3_1"
type: "boundary"
description: "oss and cloud are no longer tracked as nested gitlinks."
command: "test -z \"$(git ls-files -s oss cloud | awk '$1 == 160000 { print }')\""
cwd: ".."
expected: "exit code 0"
- id: "ac3_2"
type: "compile"
description: "Root-driven oss and cloud verification succeeds."
command: "pnpm --dir oss typecheck && pnpm --dir cloud typecheck"
cwd: ".."
expected: "exit code 0"
status: "pending"
blocked_reason: "Parent git still tracks oss and cloud as 160000 gitlinks. Completing this phase requires removing nested .git directories or otherwise converting both trees into parent-tracked files, which is intentionally not hidden inside this spec execution while both nested repos have active dirt."
cutover_checklist:
- "Freeze nested repo work: `git -C oss status --short --branch` and `git -C cloud status --short --branch` must be clean except intended final commits."
- "Record exact nested SHAs and parent gitlink SHAs before mutation: `git -C oss rev-parse HEAD`, `git -C cloud rev-parse HEAD`, and `git ls-files -s oss cloud`."
- "Create rollback anchors before destructive topology changes: parent branch/tag plus timestamped backups of `oss/.git` and `cloud/.git` outside the workspace."
- "Commit the parent gitlink updates first so the parent repo records the final nested SHAs before the cutover."
- "Choose history strategy explicitly: squash-import current trees into parent, or use subtree/filter import if preserving nested history is required."
- "Remove gitlink index entries only after backups exist: `git rm --cached oss cloud`; remove `.gitmodules` entries if any are present."
- "Move nested `.git` directories out of the tree rather than deleting them: for example `.git-backups/runx-oss-<sha>` and `.git-backups/runx-cloud-<sha>` outside `/home/kam/dev/runx`."
- "Re-add `oss` and `cloud` as ordinary parent-tracked directories, respecting parent `.gitignore` so `node_modules`, caches, and generated build output stay out."
- "Verify no gitlinks remain: `test -z \"$(git ls-files -s oss cloud | awk '$1 == 160000 { print }')\"`."
- "Run root install and verification from `/home/kam/dev/runx`: `pnpm install`, `pnpm --dir oss typecheck`, `pnpm --dir cloud typecheck`, and targeted fast suites."
- "Commit the cutover as one topology commit that contains only gitlink removal, ordinary file tracking, root ignore/tooling updates, and verification notes."
- "Rollback path: restore the pre-cutover parent commit, move backed-up `.git` directories back into `oss/.git` and `cloud/.git`, and reset the parent gitlinks to the recorded SHAs."

rollback:
strategy: "per_phase"
commands:
phase1: "git -C /home/kam/dev/runx checkout HEAD -- package.json pnpm-workspace.yaml && git -C /home/kam/dev/runx/oss checkout HEAD -- package.json && git -C /home/kam/dev/runx/cloud checkout HEAD -- package.json"
phase2: "git -C /home/kam/dev/runx/cloud checkout HEAD -- package.json pnpm-lock.yaml tsconfig.base.json && git -C /home/kam/dev/runx checkout HEAD -- pnpm-lock.yaml"
phase3: "git -C /home/kam/dev/runx checkout HEAD -- .github/workflows oss cloud"

review:
verdict: "blocked"
reviewed_at: "2026-04-26T12:58:00Z"
reviewer: "agent"
finding_counts:
critical: 0
high: 1
medium: 0
low: 0
findings:
- severity: "high"
area: "repo topology"
evidence: "git ls-files -s oss cloud still returns mode 160000 entries for both directories."
impact: "The parent repo is not yet the only authoritative git root, so definition-of-done item dod3 remains unmet."
recommendation: "Schedule a dedicated cutover that commits nested repos, removes gitlinks, removes or migrates nested .git directories, and adds the full oss/cloud trees to the parent repo in one reviewed operation."
notes:
- "Root workspace install now succeeds with 25 workspace projects."
- "Cloud package manifests no longer declare link:../oss package edges."
- "Root-driven oss and cloud typechecks pass."

metadata:
estimated_effort_hours: 12
ai_model: "gpt-5"
tags:
- "workspace"
- "repo-topology"
- "package-boundaries"
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
spec_version: "1.1"
task_id: "icey-cli-upstream-registry-binding"
created: "2026-04-16T01:35:44Z"
updated: "2026-04-16T01:35:44Z"
updated: "2026-04-23T15:27:08Z"
status: "completed"

task:
Expand Down
Loading