8000 ROADMAP M1: run data moves to .aladdin/ with a .agentic/ fallback, ALADDIN_* aliases, aloop layout by adeelahmad · Pull Request #21 · adeelahmad/aloop · GitHub
[go: up one dir, main page]

Skip to content

ROADMAP M1: run data moves to .aladdin/ with a .agentic/ fallback, ALADDIN_* aliases, aloop layout - #21

Merged
adeelahmad merged 3 commits into
masterfrom
claude/project-thread-vm6wyr-layout
Oct 18, 2026
Merged

adeelahmad merged 3 commits into
masterfrom
claude/project-thread-vm6wyr-layout

Conversation

@adeelahmad
Copy link
Copy Markdown
Owner

Requested by Adeel · project thread

Stacked on #16 (base is that branch; retargeted to master once it lands).

Before: the plugin kept its run data (transcripts, budgets, the token ledger, logs, state, host records, task worktrees) in .agentic/ and read only AGENTIC_* keys, while the committed config.yaml already lived in .aladdin/; ROADMAP M1 listed the move as deferred.

After: a fresh project keeps all run data in .aladdin/, next to config.yaml, and the plugin writes .aladdin/.gitignore so nothing there but config.yaml can reach a commit. A project that already has .agentic/ keeps using it unchanged until aloop layout migrate moves it (refused while worker worktrees are live). aloop layout show says which dir is live and why; aloop layout check fails unless the run data is git-ignored (run by make test-hosts). Every AGENTIC_<KEY> env var and settings key accepts ALADDIN_<KEY> (AGENTIC_ wins when both are set). The gates, gate-dispatch and budget find the task contract in either state dir, so a supervisor that writes the literal legacy path is still understood. The decision (.aladdin/, not .aloop/) is recorded in ROADMAP M1.

The worktree-local markers (.agentic/task.env, budget-exceeded, scaffold-symbols) keep their name in this PR: hosts and older sprints write them, so they get their own read-old window later.

How: _paths.sh / _paths.py resolve the home once (home_name: any run dir in .aladdin/ wins, else an existing .agentic/, else .aladdin/), normalise ALADDIN_* into AGENTIC_*, and expose contract_path / agentic_contract_path; the few tools with their own path logic (worktree-create, worktree-hygiene, the OpenCode plugin, gate-supervisor-scope, gate-structural-integrity, _gatelib filters, stats, host, budget, _usage) use the resolved dir; bin/layout is new. SKILL.md, OVERVIEW, TRACKING, CHANGELOG and bin/README describe the layout.

Evidence:

  • new scripts/test/layout.test.py, 6 checks, in make test-hosts: fresh project in .aladdin/ with only config.yaml committable; legacy .agentic/ untouched; migrate moves, guards, idempotent; ALADDIN_* read everywhere, AGENTIC_* wins; layout check refuses an unguarded dir; the contract is found from either dir by bash, python and gate-dispatch
  • every existing suite rewritten to the new main-tree paths and green: make test-hosts (all suites + host check + layout check + tracking 39 ok), make conformance 58/58, shellcheck, pyflakes, json, eval-validate, claude plugin validate --strict

Generated by Claude Code

Fresh projects keep transcripts, budgets, the ledger, logs, state, host
records and task worktrees under .aladdin/, next to config.yaml, guarded
by a plugin-written .aladdin/.gitignore. A project that still has
.agentic/ keeps using it until `aloop layout migrate` moves it. Every
AGENTIC_<KEY> env var and settings key accepts ALADDIN_<KEY> (AGENTIC_
wins when both are set). The gates and budget find the task contract in
either state dir, so a supervisor writing the literal legacy path is
still understood. Worktree-local markers keep their name for now.

Tests: scripts/test/layout.test.py (6 checks); every suite runs on the
new layout; conformance 58/58.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014j4wLin3oJTtnvjE9Lq2VV
@adeelahmad adeelahmad self-assigned this Oct 18, 2026
@adeelahmad
adeelahmad changed the base branch from claude/project-thread-vm6wyr-surface to master October 18, 2026 12:05
@adeelahmad
adeelahmad merged commit 2c5bbe9 into master Oct 18, 2026
4 checks passed
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

0