Skip to content

Reconcile feature/free-tier-fleet with main (v3) - #1763

Merged
jeonghun-jj-lee merged 63 commits into
feature/free-tier-fleetfrom
reconcile/free-tier-fleet-main-v3
Oct 11, 2026
Merged

jeonghun-jj-lee merged 63 commits into
feature/free-tier-fleetfrom
reconcile/free-tier-fleet-main-v3

Conversation

@jeonghun-jj-lee

Copy link
Copy Markdown
Contributor

Reconciles feature/free-tier-fleet with origin/main (brings in main's 60 commits: amico-run bin deletion + five-verb vocabulary, claims schema, brain-health flywheel, MadNLP-default solve surface, pasqal-connector fixes, arJev onboarding skill, pinned CLI installer, distill job, public-tier promotion).

The merge

  • One textual conflict: packages/schema/src/index.ts — both sides added export blocks after the fleet_projection re-exports: feature's fleet_roster/version_skew/fleet_config/lifecycle_authority exports and main's claim-object exports. Union-resolved: both blocks kept.
  • All other 12 overlapping files (ci.yml, verbs.ts, extension.ts, opencode_config.ts, fleet_panel.ts, fleet_topology.ts, amicode_tools.ts, amicode_tools_core.ts, stack_state.ts, server_auth.ts, server_manager.ts, opencode_config.test.ts) auto-merged cleanly.

Semantic fix: amico-run retirement compliance (#1667/#1668)

Main deleted the amico-run bin and added two lint tests. Four feature-added lines referenced the deleted bin:

  • opencode_config.ts:1072 — taught command string: amico-run <script> → amico run <script>
  • sidebar_view.ts:424, 584 — comments: amico-run enroll producer → @amicode/amico-run enroll producer (package-spec form)
  • docs/fleet/relocation-audit-1270.md:113 — amico-run resolve → amico run resolve

Manifest regenerated

refresh_manifest.mjs run post-merge (913 overlay files, drift gate PASS).

No regressions — verified locally

Gate Result
Extension fast suite 317 files / 5228 pass / 0 fail
Engine typecheck clean (only #1229 base-drift allowlisted)
Boot smoke PASS
Drift gate PASS (manifest ↔ overlay in sync)

aarontrowbridge and others added 30 commits October 1, 2026 10:08
…ub home (#1558) (#1559)

A linux hub home embedded literally into the remote census command is
unreachable-by-construction on every macOS client (ssh relays sqlite3's
exit 1, the client reads as unreachable, the watch silently never
censuses the one machine with a real fork history). Re-express the
remote db path as "$HOME/<suffix>" when it lives under the hub home —
the remote shell expands its own home; exotic layouts keep the quoted
literal.
…ection refresh (#1560) (#1561)

The Fleet (live) block's two artifacts had no cadence on the canonical
server: fleet-status.json was last collected by hand and the projection
cache was a one-shot. Versioned systemd pair (5-min, launchd parity)
runs fleet-status.sh then 'amico fleet status --projection' — exit 75
(the honest unenrolled-host bootstrap exception) is SuccessExitStatus,
never a failed cadence. PATH rides in the unit (#1558's lesson: systemd's
default PATH resolves /usr/bin/node v12 on erlich, which SyntaxErrors
the dist). README + install.sh rows.
…1528)

* feat(session): thin Jev client — confirmed wire contract, key posture, decision-record receipts (#1311)

* feat(session): jev curation call sites — residual choice + calibrated admission gate + thread-noul map (#1311)

* feat(session): jev calibration battery — recorded sweep numbers gradable + live on-demand harness (#1311)

* feat(session): jev classifier residual in autoarchive — p≥0.95 + fixed 48h admission, fail-open, hermetic harness (#1311)

* feat(session): onset thread-noul — jev-ranked promotion in the digest + the derived-map pass verb (#1311)

* fix(session): carry choice probabilities through residual verdicts so the battery Briers live reads (#1311)
…nds (#1526)

The D6 transition's consumer half (spec-20260905-103000): a pure,
deterministic renderer of the composition — the portfolio folds from
campaign session-ledgers ONLY (one line per campaign: objective,
state, last loop boundary, blockers), render order = the direction
tiers joined through the campaign→direction map, unmapped after;
health stamps inline from the merge receipt (SHA + merged date + age;
anomalies; coverage) — staleness is IN the render. Degradation renders
NAMED UNKNOWNS, never a silent drop. The render date is an explicit
input (--as-of), never a hidden clock. One renderer, two paths: the
weekly synthesis calls it; the rewritten amico-strategy skill is the
on-demand loader — and it now exposes NO intent-write verb (the dead
P-list doctrine is gone from its body).

The amico-strategy SKILL.md rewrite kills the single most misleading
surviving consumer of the old model ('P1 is always top priority',
'planning agents update this file').

The amico-run strategy-brief verb rides the existing trySubcommand
dispatch. Full package suite green (97 files, 1637 tests) after the
bundle build; the renderer's 7 tests pin determinism, the tier join,
anomaly naming, health stamps, receipt degradation, and the honest
empty portfolio.

Part of amicode #1310 (plan-20260920-general-research-engine step 6).
… the calendar (#1655)

The fixture seeds ses_a1 with updatedDaysAgo: 2 — relative to now — but
the assertion compared the index's month section against the CURRENT
month. In the first days of each month the two disagree (Oct 1: the
seed landed in September) and the test reddened clean main. The
expectation now derives from the same 2-days-ago timestamp the seed
uses — month-boundary-safe by construction.
…lidated gate-unitary leg

Closes #1656 — the Pasqal-campaign's filed connector findings:

- S-20/S-19: pulse_contract warns (never rejects) when the pulse does not
  return to idle (Ω=Δ=0) at its endpoints — the missing return-to-idle
  check; H17 measured the clamp costs nothing and pays on both legs.
- S-14: translate_and_simulate's verdict vocabulary distinguishes 'not a
  single-atom π pulse' from 'bad pulse' — a validated entangler now prints
  PASS with an out-of-scope note (exit 0) instead of FAIL; the one real FAIL
  is emulator-vs-solve disagreement (an integration problem).
- S-5/S-10/S-13: the gate-unitary verification leg ports from the campaign's
  validated emulate_gate_unitary.py — order=0 ZOH-faithful integration
  (qutip 5's cubic-spline default trap), the trailing-zero restore, free-phase
  scoring in the emulator's r-first basis, and the modulated physics leg with
  ops-failure discipline. Reproduces the campaign's cz_b numbers bit-exact
  (F_emu_free 0.9990173718245104, theta* 1.348266847165619).
- S-4: pin the emulation leg deps (pulser 1.8.0, pulser-simulation 1.8.0,
  qutip 5.3.1) and record the durable venv's freeze.
- S-2 demo half: solve_x_gate.jl emits :constant-rollout fidelity, pins
  endpoints to idle, and stamps provenance keys.

Tests: 72 pass (was 55) — new idle-endpoint, verdict-vocabulary, and
campaign-regression suites.
…y the idle-endpoint doctrine

Regression finding from the #108 end-to-end chain re-run: zeroing the seed's
edges (a feasible-x₀ nicety) landed the X-gate solve in a slower Ipopt basin
(F=0.9995 @ 300 iters vs the recorded 0.99999999 chain). The Jul-8 demo
already pinned idle endpoints through ZeroOrderPulse's default zero
boundaries — the S-19 bug (pinning to the seed's nonzero edges) lived in the
campaign scripts, not here. Keep the explicit zeros(2) pins for doctrine
visibility, keep the seed: the chain reproduces the recorded quality
(re-sim 0.999998, agreement 7.15e-5 within the suite's 1e-4 physics
tolerance; the emitted :constant fidelity 0.99993 is the honest staircase
number the old smooth emitter overstated — the S-2 fix working as intended).
…am's documented contract (#1654)

The notturno weekly-synthesis engine invokes 'bun …/src/amico.ts
strategy-brief …' — the renderer was wired only into launch's subcommand
table (trySubcommand), so the top-level head fell to the router's
default and the seam died as 'amico: unknown verb "strategy-brief"'
(dry-run 36836288143). Mirrors the resolve/sandbox/estimate pattern:
case 'strategy-brief' → launch(['strategy-brief', …rest]).
…— 0.23.0's deps conflict with pulser 1.8.0 (ResolutionImpossible, caught by the provisioning gate)
…nnector

fix(pasqal-connector): idle-endpoint warn, verdict vocabulary, the validated gate-unitary leg (#1656)
…Integrator is open-core (S-18 tag-vs-git-tree split stated); re-ground the tier value on performance flags + specializations (#1663)
…l-fix

fix(piccolissimo skill): correct the stale no-spline-backend claim (#1663)
…md source (#1665)

The staged server AGENTS.md (the hand-maintained hub prompt served to every
session on erlich, a Linux host) shipped with four mac-rendered
/Users/aaron paths — scrubbed and captured byte-identical at
ops/server/hub-AGENTS.md by #856. But the #856 guard scan walks only
extension-package surfaces, so the ops/ capture itself was unguarded and
could regress to mac-rendered paths undetected (the exact #850 audit lens
0b finding).

Pin the invariant hermetically — the fixture is the file itself: the hub
staging is Linux-targeted, so a /Users/ path (or a machine-absolute
/home/<user>/ or platform-suffixed vendor dir) in the source fails the
check. Bites verified by planting both regressions (RED), then green on
the restored capture.
…the PATH-shim-to-moving-checkout hazard (#1666)

All five bin launchers (amico, amico-run, gh, amico-pasqal, amico-git-credential)
now resolve a PINNED dist root (${AMICO_CLI_PIN_ROOT:-~/.amico/server/cli}/<bin>.js)
first; AMICO_CLI_FROM_CHECKOUT=1 is the explicit dev override back to the
checkout dist, which stays the pre-pin fallback. Observed hazard (2026-09-25):
the live shim served a stale side-checkout on an old branch for weeks.

Hermetic resolution-order table (pin present/absent × override on/off, default
root, five-shim sweep, incomplete-pin degradation) via a stub node on PATH.
…undle convention (#1666)

ops/install-cli-pin.sh copies the built dist bundles to the pinned root
(~/.amico/server/cli, AMICO_CLI_PIN_ROOT-honoring) and writes a
shasum-format sha256 sidecar per bundle — the papers-digest convention
applied to the CLI itself; wired into ops/install.sh's deploy list and
documented in ops/README.md's pinned-CLI-root section.

amico doctor gains the pinned_cli record (same checks-table pattern):
root + bundle count + amico.js sha + sidecar freshness — a mismatched or
missing sidecar is an integrity error, an absent pin the pre-pin warning.
Pure core (probes injected); hermetic installer + record suites.
…umers (#1667)

The launcher dir now holds exactly {amico, amico-pasqal, amico-git-credential,
gh} (asserted by a new launcher-set test); the cli.ts shim entry and its
esbuild + bin-map entries are gone. Every test that spawned dist/amico-run.js
spawns the amico router instead (amico run / amico resolve / amico estimate —
the documented byte-for-byte delegation), and the CI producer lane
(packages/schema/scripts/producer_roundtrip.sh) launches through
`amico run`. No test deleted or weakened; assertions unchanged, spawn
targets re-pointed.
…1667)

The launcher-dir probe (opencode_paths / terminal) keys on the amico verb
router — a leftover amico-run shim no longer satisfies resolution (asserted).
The boot availability warning names the amico CLI. The agent-facing strings
(solve instructions, routing/HP guidance, tool descriptions, the run stub's
launched_via) teach `amico run` / `amico estimate` — the documented
equivalence. healthcheck + the packaged-CLI gate probe the amico bin; the
gate's orphan amico-run probe entry is removed (fail-closed now keyed on the
bin map's four remaining bins). A retirement test pins the grep rule: every
amico-run occurrence in extension src/ + opencode-plugin/ must name the
package (@amicode/amico-run or a packages/amico-run path), never the bin.
No test deleted or weakened — assertions migrated with the surface.
…cabulary (#1668)

The bin is deleted (#1667); the core doc/test set still taught it as a
command. Sweep ~30 files — repo AGENTS.md/CONTRIBUTING/README,
docs/ledger-bridge-contract, ops/README, the staged hub-AGENTS.md
(active-command level only — the structural re-cut is #1670), the
extension package docs, scores templates + SCORE.md, the shipped
templates/exemplars/packs/skills — replacing active amico-run teaching
with the five-verb surface (AUTHOR·EXECUTE·VERIFY·REMEMBER·METER) +
`amico run`. Package specs, folder paths, ADRs, and session-receipt
fixtures stay (the sanctioned/historical forms).

Pins it with packages/extension/test/amico_run_doc_residue.test.ts: any
new doc reference to amico-run as an ACTIVE command fails the check
(package-spec / folder-path / historical framing exempt). The vetted
template header change rides the pack corrector's sha256 manifest;
golden compiled scores regenerated.
feat: the amico-run sunset begins — the A1′ campaign's first frontier (#852)
…, the deny-list gate (#1669) (#1675)

The #852 step-6 A1′ leg: the scheduled-agentic-work vocabulary — register ·
warrant · run-a-pass · record — as public amico CLI surface, parity over
rewrite. `amico notturno registry-check` parses the SAME notturno.toml the
Python engine reads (smol-toml) and emits byte-equivalent coverage verdicts
and parse errors; `list` renders the slate as typed rows (warrant tiers
report/stage/gated as typed values with the Python enums' coverage);
`pass` appends the exact scheduled-passes.md section bytes the Python bot
writes (round-trip parity fixtures pin both directions).

The instance deny-list (amicissimo #490's boundary artifact) is the
load-bearing input: discovered beside the registry or passed via
--deny-list, a deny row naming the registry fails LOUDLY (exit 64) with the
named reason, pointing at the private instance's runner — before the org
config even parses. The planted-violation test proves it bites; directory
rows claim subtrees per the manifest's own rule.

Fixtures: pinned snapshots of the live registry (12 jobs / 6 excludes),
the committed manifest, and a Python-rendered scheduled-passes.md — ground
truth captured by running the Python engine (amicissimo 12e1141) against
them. Coexistence is the design: no Python deletion, no workflow edits.
43 new tests; suite 1829 pass / 2 skip; typecheck clean.
…ry (#1680)

The nightly notturno job that distills the classified-substantive session
backlog into candidate claim-notes with resolvable provenance:

- `amico distill`: worklist = #1304's classifySession over the autoarchive
  feature fold (never a second classifier); junk is classified then never
  read for distillation (content pulls filter to eligible ids only)
- ONE confidence-gated Jev Choice per eligible session types the candidate
  over the parent claim contract's closed set (insight|hypothesis|best-
  practice|hazard|method|none — jev_curation's third call site); statements
  + evidence are deterministic projections of the substrate rows
- candidate claim-notes land in a dedicated candidate area with provenance
  frontmatter (session id, timestamps, source DB, evidence pointers);
  evidence is SALIENT (the fold's first/last-user + last-assistant rows) and
  resolves into the chat DB by construction; machinery never edits prose
- state stamp (ops-dir distill-state.json, atomic write, fail-safe read)
  makes re-runs no-ops for already-distilled sessions
- dry-run by default (report-only), --apply writes; the pass receipt files
  through the notturno_passes writer (job name, counts, duration), deny-
  list-gated + membership-checked + record-mode-respecting
- the chat DB is opened READ-ONLY throughout — one substrate, no second
  capture path; jev disabled/unavailable is a named zero-delta no-op

Tests: 23 hermetic (seeded fixture DBs, in-process jev injection, tiny
fixture registries) + 1 live smoke (real DB, real Jev key, temp outputs),
mirroring the #1311/notturno disciplines.
feat(amico-run): distill job on the chat DB — the brain flywheel artery (#1680)
The claim contract (brain flywheel slice 2, #1679): a JSON Schema fixture
of record + the field-precise validateClaim seam + the closed vocabularies
mirrored in TS + bucketConfidence (the ONE bridge from distill's numeric
candidate confidence, defined here so slice 5 inherits it, never invents a
parallel convention). Exactly the 10 contract keys, additionalProperties
false — the frontmatter IS the claim object; provenance rides evidence
pointers + append-only history, never extra keys. The spec sketch's
'hypthesis' is the parent issue's known typo, corrected deliberately
(slice 1 did the same in jev_curation CLAIM_TYPES).
aarontrowbridge and others added 27 commits October 2, 2026 21:14
…n-keyed idempotent stamps (#1683)

Brain flywheel slice 4 (#1679): the feedback loop closes — knowledge USED
reaches the claim. An accepted recommend-outcome or a solve-run citation
increments the cited claim's applied counter + last_applied and appends ONE
applied history entry (the pinned vocabulary, no new event class); statement
and status are never touched (adoption is a counter + a date, never a
judgment — lifecycle stays slice 5's).

- stamp: the callable verb — dry-run default, --apply writes; the citation
  must resolve into the substrate first (the event exists in the problem's
  events.jsonl AND is accepted; the run dir exists); re-stamping the same
  citation is a stamped:false no-op (the citation is the idempotency key,
  carried in the applied note's fixed convention).
- sweep: the nightly backfill — walks every problem workspace's events.jsonl
  (the ONE machine-readable adoption record that exists today: the
  recommendation events amicode_recommend appends), pairs accepted outcomes
  with their propose's provenance refs, resolves refs mechanically against
  the registry (trailing segment; projection names claims after their
  cards), stamps; overridden outcomes are named, never stamped; unmatched
  refs are named skips. Idempotent: re-sweep changes nothing (byte-tested).
- pure core in claims.ts (stampAdoption / isStamped / appliedNote /
  renderStampedNote / resolveClaimRef / planAdoptionSweep); prose below the
  frontmatter survives a stamp verbatim (renderStampedNote).
- fixtures: stamp-registry (2 claims) + sweep-problems (2 event streams, a
  no-events workspace); solve-run citations have no machine-readable stream
  yet and ride the stamp verb — the honest seam, documented in the verb.
…te/refute, decay queue (#1684)

The brain-flywheel slice 5: a pure lifecycle core (src/lifecycle.ts) + the
 verb. The same-claim detector merges near-duplicates
onto the OLDER claim (similarity = 0.8·statement + 0.2·tags Jaccard, ≥ 0.75,
same type + scope): evidence, tags, and adoption accumulate, the duplicate's
history trail rides the survivor with a merged stamp (append-only, pinned
vocabulary), the duplicate note is archived — never deleted outright. Status
transitions run through the history: corroborated at 3 distinct evidence
pointers, refuted on a contradicted-by-run signal from --signals (zero-evidence
refutes refused — the #1681 lint invariant can never be violated by machinery).
Decay is a PROPOSAL: claims unapplied beyond the 90-day window (aged from
last_applied, else newest history activity) land in the review queue next to
the registry — the pass never deletes and never changes a status on decay.
Dry-run by default; --apply rewrites survivor frontmatter only (prose
untouched). Findings (unactable signals, unageable claims) exit 1 — never
silent. Hermetic fixtures: true-dup, near-miss, distinct, per-transition.
feat(amico-run): adoption stamping — the feedback loop closes (#1683)
feat(amico-run): dedupe + lifecycle — merge, corroborate, refute, decay (#1684)
…rain flywheel slice 7, #1686)

The two dormant intakes, wired into the claim layer:

- amico extract-meetings: given a pending-tag meeting note, propose its
  three tag tiers (the meeting vault's OWN registry is the canon — closed
  tier-1 vocabularies, tier-2 entities minted only from the note's own
  attendee canonicals + partnership phrases, tier-3 themes free-form),
  a context-links section with resolvable links (transcript sibling,
  series sessions, this pass's hopper proposals), and next-steps →
  hopper proposals carrying resolvable meeting-note provenance. Where the
  closed vocabulary has no fit the proposal names the gap — never invented.
- amico triage-papers: a relevance-high paper yields a claim-shaped
  hypothesis-seed proposal (frontmatter EXACTLY the claim object, a
  paper/ evidence pointer) against the problem cards whose platform
  identity matches the paper's systems — exact, no fuzzy bridging; no
  match → no seed, named honestly.
- both: dry-run by default, idempotent on re-run (deterministic naming +
  bytes), the notturno pass receipt on the distill chassis gates
  (deny-list, job membership, record-mode self-filter), and the meeting
  vault / papers intake are read-only substrates — proposals land in a
  --out the caller names.
- claims lint: the paper/ + meeting-note/ evidence-pointer kinds resolve
  (POINTER_KINDS + the lint's substrates extend the #1681 vocabulary).

TDD: fixture notes per intake + idempotency assertions + live smoke green
against one real pending-tag meeting note and one real high-relevance
paper; claims/distill/lifecycle suites unchanged-green.
…tion motions as notturno jobs (#1685)

Brain flywheel slice 6: the three weekly curation jobs on the claim layer,
retiring the manual /dream invocations (docs/brain-flywheel-jobs.md).

- promote: scope-team live claims → ONE PR-body bundle per vault (PR-BODY.md
  + verbatim claim copies with provenance footers), 10-cap with overflow
  carry, promote-state stamp for idempotence. PROPOSES ONLY — no git, no gh,
  no network; the double gate (author scope tag + human PR merge) is the
  trust boundary, and an existing bundle is never clobbered.
- prune: the claims lint reused verbatim as the schema-check — its findings
  are DRIFT a human owns (exit 1); only unambiguous frontmatter fixes apply
  (duplicate evidence pointers, padded/duplicate tags), prose byte-verbatim.
- synthesize: cross-claim tag clusters (3+ data points, high at 5+, live
  claims only) → hopper proposals (the hopper schema, deterministic slugs,
  idempotent skips). Proposes to the hopper only — no code path touches
  strategy.

Each job files pass receipts on the distill chassis: --jobs <registry> +
--dashboards, instance-deny-list gate before any body work, membership
check (unknown job id = 2), record-mode self-filter, honest no-receipt skip.

Pure core curation.ts (injectable clock, deterministic renderers); verb
bodies in curation_verb.ts routed from claims_verb; HOT_STATUSES exported
from claims.ts (one live-set source of truth). Hermetic fixtures under
test/fixtures/claims/curation-registry; 53 new tests.
feat(amico-run): promote, prune, and synthesize on cadence — the dream cycle, employed (#1685)
feat(amico-run): meeting + paper triage — the two dormant intakes (#1686)
…ea, idempotent per period, receipt on the notturno chassis (#1687)
feat(amico-run): brain-health report — the brain measures itself (#1687)
…urface (#1676)

DirectTrajOpt 0.11 flipped the no-kwarg solve! default to MadNLP
(QualityFunctionUpdate barrier; the #155 restoration audit — 0.99999996
@ 60 iters on the previously-failing seed class), Piccolo 2.2 inherits
it. The solve surface follows:

- pulse-designer solve.jl: SOLVER = :default (MadNLP) first — solver-
  agnostic construction, no options struct; the 60-iter budget stays
  (audit-safe); AMICODE_ITER rides a raw MadNLP.AbstractUserCallback via
  intermediate_callback, UserCallbackRegular-filtered (restore/robust
  fire without advancing the counter); explicit RelaxBound (a raw user
  callback manages its own fixed-variable treatment); :ipopt arm kept
  verbatim (IpoptOptions + the raw callback channel — Ipopt-only kwarg);
  version probe bumped to Piccolo 2.2 / DTO 0.11 (the MadNLP default).
- pasqal-mis solve.jl: same dual-channel MadNLP construction + the
  DirectTrajOpt.Callbacks fix (Piccolo.Callbacks was the pre-0.10 re-
  home — dead since 2.1) + the version probe.
- Q74 amended in the contract docs: the AMICODE_ITER channel is
  backend-native (MadNLP raw user callback / Ipopt raw callback), the
  Inspector is solver-agnostic; mode-filter note everywhere the ipopt-
  only fact lived (hub-AGENTS.md, ledger-bridge, solve_template*.jl).
- gate solver expectations: backend enum += madnlp (both vendored
  problemspec schemas, matching the Piccolo 2.2 reflection); omitted-
  backend hashing + ledger defaults flip ipopt→madnlp (parse.jl parity —
  the cross-language problem_hash diverged on exactly those specs);
  MadNLP joins the import-scan support set (authoring DEFAULT_SUPPORT +
  registry.toml) + the pack corrector integrity refresh.
…8f209a (v2.2.0) — the byte-verbatim source supersedes the hand-set enum; sidecar pinned to the v2.2.0 commit
…istry-418 @1c6514a (the 2.2.0 emission) + update the oss-variant guard to the 2.2.0 public-kind contract — the demotion made the native integrator tier public (Piccolo's drift.jl in lockstep), PRIVATE_ONLY gains adjoint_robustness, the offered-kind equality assertions replace the dead private-integrator-kinds concept
…face

feat(extension): the vetted templates ride the MadNLP-default solve surface (#1676)
…tly (#1703)

The three failing tests gave the verb a named paper with no --papers flag
and {} env, silently leaning on the dev machine's real personal mount
(~/.amico/vaults) for the intake fallback. CI has no vault, so the verb
exited 64 there ('no papers intake resolved') while staying green on any
machine that happens to have a vault — the tests were born red in CI
(their introducing run 37110536362 failed). Pass --papers explicitly in
the named-paper dry-run, below-relevance, and apply cases, with the
hermeticity rule inline: ambient vault state is never a test fixture.

The curl 404/429 lines in the CI log are hermetic fake-curl stderr from
the sota transport tests, not live network — the suite's one live call
is already env-gated (AMICO_SOTA_LIVE=1).
test(amico-run): triage-papers named-paper runs pass --papers explicitly — restore main's fast CI (#1703)
…e gate, the generated index (brain flywheel slice 9, #1688)
…wn credentials

arJev ships a first-class onboarding surface (init checklist-file, ingest
seeds, key-based ranking) and a full agent runbook in its repo docs — but
nothing in the skill library routes to it. This card is the dispatch target
for 'set up arJev for me': install, vault adoption/init, the feeds
interview, seeding (the Google Scholar My Library → BibTeX export flow
spelled out, plus Zotero/PDFs/Slack), credentials that are always the
user's own (their console.typesafe.ai key, their Slack app — human steps,
mode-600 files, env only), the daily timer, and a verification gate on
every stage. Post-onboarding it offers backfill and the v0.4 content arms
as opt-in, never auto-flipped.

Closes #1737
feat(amico-run): the public tier — promote --tier public, the two-note gate, the generated index (#1688)
feat(skills): arjev-onboarding — guided arJev setup with the user's own credentials
…leet-main-v3

# Conflicts:
#	packages/schema/src/index.ts
…orded

Three code comments and one doc line added by the feature branch still
referenced the deleted amico-run bin. Reworded to the package-spec form
(@amicode/amico-run) or the five-verb surface (amico run) so the #1667
retirement test and #1668 doc-residue lint pass post-merge.
@coderabbitai

coderabbitai Bot commented Oct 11, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration
  • Configuration used: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 5ccdbeaa-09af-409c-8a28-94a703959243

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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.

@jeonghun-jj-lee
jeonghun-jj-lee merged commit 38cad16 into feature/free-tier-fleet Oct 11, 2026
12 checks passed
@jeonghun-jj-lee
jeonghun-jj-lee deleted the reconcile/free-tier-fleet-main-v3 branch October 11, 2026 23:50
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.

2 participants