Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
90 commits
Select commit Hold shift + click to select a range
0f617be
feat(analysis): add canonical MIR contract and adapter
Apr 18, 2026
beadca3
chore(repo): bootstrap bundle-0 skeleton
Apr 13, 2026
8262edc
chore(repo): bootstrap bundle-0 skeleton
Apr 13, 2026
e257dd7
chore(repo): bootstrap bundle-0 skeleton
Apr 13, 2026
0280abc
feat(data): add bundle-2 repository and sqlite foundation
Apr 14, 2026
6a627c8
fix(jobs): isolate in-memory queue state across tests
Apr 14, 2026
1b3a281
fix(composer): replace python-3.10 union syntax in harmonic rules
Apr 14, 2026
43c0021
feat(export): add bundle-6 m3u and audit export layer
Apr 14, 2026
209b8db
feat(intelligence): add bundle-7 external signal fusion layer
Apr 14, 2026
5edc38b
feat(intelligence): add bundle-8 embeddings and vibe similarity found…
Apr 14, 2026
e3c69f8
feat(structure): add bundle-9 structure and explainability foundation
Apr 14, 2026
fa2175f
fix(api): restore clean app bootstrap and remove duplicate job tests
Apr 14, 2026
fa43704
fix(tests): remove duplicate test copies from bundle-10 branch
Apr 14, 2026
36ca28b
feat(api): add clean bundle-10 pipeline orchestration endpoint
Apr 15, 2026
2ba54d1
chore(git): block duplicate and icloud files permanently
Apr 15, 2026
c9dc050
chore(git): ignore icloud and duplicate suffix files
Apr 15, 2026
2a11bf5
chore(bundle-10): cleanup, icloud purge, git stabilization
Apr 17, 2026
a5bd25b
fix(bundle-10): cleanup, remove icloud artifacts, stabilize working tree
Apr 17, 2026
53a8e85
fix(bundle-11): restore route wiring and preserve security hardening
Apr 17, 2026
a4858ee
feat(bundle-12): add observability, request ids, and route wiring guard
Apr 17, 2026
6d8c191
feat(bundle-13): add api key auth gate with isolated test config
Apr 17, 2026
11b56f4
feat(bundle-13): add api key auth gate with isolated test config
Apr 17, 2026
3252d7c
feat(bundle-13): add api key auth gate with isolated test config
Apr 17, 2026
a20aaf8
feat(bundle-14): polish observability and request lifecycle consistency
Apr 17, 2026
b029a29
feat(bundle-15): add PR automation standard and helper scripts
Apr 17, 2026
8f47316
feat(bundle-16): add CI PR guard and workflow enforcement
Apr 17, 2026
77c64be
feat(bundle-17): introduce track intelligence layer v1
Apr 17, 2026
1424145
feat(bundle-18): integrate intelligence into composer scoring
Apr 17, 2026
29df865
feat(bundle-19): integrate intelligence into composer scoring flow
Apr 17, 2026
71afbb1
feat(bundle-20): add adaptive scoring config layer
Apr 17, 2026
4897d14
feat(bundle-21): add context-aware scoring profiles
Apr 17, 2026
74de6ec
feat(bundle-22): add dynamic context switching for scoring
Apr 18, 2026
9153f76
feat(bundle-23): add energy-driven context selection
Apr 18, 2026
8d034f9
feat(analysis): add provider layer and MIR benchmark harness
Apr 18, 2026
84d8ec7
fix(bundle-26): stabilize floating point benchmark deltas
Apr 18, 2026
3594f25
chore: stabilize APPLAYLIST audio extraction stack
Jun 11, 2026
2c11140
docs: add APPLAYLIST phase 1 baseline
Jun 11, 2026
d6acff9
chore: remove macOS duplicate CORS middleware file
Jun 11, 2026
3e800e2
test: enforce provider import safety
Jun 11, 2026
cca2f79
docs: add APPLAYLIST provider hardening baseline
Jun 11, 2026
0a889e6
docs: add APPLAYLIST provider hardening baseline
Jun 11, 2026
f1595fe
feat: add provider error contract and selection models
Jun 11, 2026
602610c
test: expand provider hardening verification
Jun 11, 2026
1418ce8
feat: add provider registry selection bridge
Jun 11, 2026
b6cb9b8
test: include registry bridge in provider verification
Jun 11, 2026
4703711
feat: add baseline analysis provider adapter
Jun 11, 2026
f55127d
feat: add baseline analysis provider adapter
Jun 11, 2026
ee5cdce
fix: make baseline provider import runtime safe
Jun 11, 2026
6bfeaf7
fix: repair provider registry availability metadata
Jun 11, 2026
89b8231
feat: add provider orchestration service path
Jun 11, 2026
ecf08b9
test: include routed analysis service in provider verification
Jun 11, 2026
714a6fb
chore: guard pytest against iCloud duplicate files
Jun 14, 2026
8be6b76
feat: add feature-flagged analysis router
Jun 14, 2026
bf8c2e6
docs: add provider analysis rollout readiness
Jun 14, 2026
1ece0f9
docs(governance): adopt product decision execution constitution v2.1
Jul 26, 2026
bde0d2c
chore(analysis): normalize provider registry EOF
Jul 26, 2026
609ccbf
docs(transition): correct architecture truth status
Jul 26, 2026
4d1c908
feat(transition): add lint-clean transition foundation
Jul 26, 2026
78e1683
fix(pipeline): initialize analysis schema on fresh database
Jul 27, 2026
3b9a7df
test(api): verify routes through OpenAPI contract
Jul 27, 2026
e922c63
feat(transition): integrate verified WB-000G pilots A B C0 C1
Jul 27, 2026
778743e
feat(transition): add assessment and explainability services
Jul 28, 2026
d259d32
feat(bundle-26): add WB006C shadow beat-grid reconciliation
Jul 30, 2026
91d963a
fix(bundle-26): harden WB006C evidence provenance
Jul 30, 2026
f98346a
Merge pull request #85 from nulleimy/feature/bundle-26-canonical-r3-w…
Jul 30, 2026
d5275ac
docs(foundation): close WB001 documentation truth
Jul 30, 2026
21fc007
chore(dev): close WB002 reproducible local baseline
Jul 30, 2026
d4246ed
fix(analysis): establish canonical contract authority
Jul 30, 2026
6112068
refactor(analysis): type provider output canonically
Jul 30, 2026
4ed9eeb
refactor(analysis): centralize legacy canonical projection
Jul 30, 2026
c2b27ff
chore(db): add sqlite migration safety controls
Jul 30, 2026
e20ff56
feat(db): add canonical analyses v1 schema migration
Aug 1, 2026
3f0f3f4
feat(db): add inactive canonical analysis repository
Aug 2, 2026
ca3df4a
Merge pull request #86 from nulleimy/chore/wb003c4-canonical-schema-v1
Aug 2, 2026
9d894ea
Merge pull request #87 from nulleimy/feat/wb003c5-canonical-persisten…
Aug 2, 2026
ca8592b
feat(analysis): add default-off canonical shadow writer
Aug 2, 2026
36724d4
Merge pull request #88 from nulleimy/feat/wb004a-canonical-writer-sha…
Aug 2, 2026
097c9aa
feat(analysis): add bounded non-live writer receipts
Aug 3, 2026
1493ddf
docs(status): reconcile canonical rollout evidence
Aug 3, 2026
af31f0e
Merge pull request #89 from nulleimy/feat/wb004c-bounded-nonlive-writ…
Aug 3, 2026
5da9428
feat(analysis): add canonical legacy comparison receipts
Aug 3, 2026
996d38f
Merge pull request #90 from nulleimy/feat/wb004d-canonical-legacy-com…
Aug 6, 2026
282ef53
docs(status): reconcile WB004D merge evidence
Aug 6, 2026
9412ecb
Merge pull request #92 from nulleimy/docs/wb004d-postmerge-reconcilia…
Aug 6, 2026
df42b7a
feat(analysis): add default-off canonical shadow reader core
Aug 6, 2026
fa77675
Merge pull request #93 from nulleimy/feat/wb004e-canonical-shadow-rea…
Aug 7, 2026
92a206a
docs(status): reconcile WB004E merge evidence
Aug 7, 2026
4551c1f
Merge pull request #94 from nulleimy/docs/wb004e-postmerge-reconcilia…
Aug 8, 2026
90f120c
docs(status): record WB004F no-cutover closure
Aug 8, 2026
bc4c6f5
Merge pull request #95 from nulleimy/docs/wb004fg-no-cutover-reconcil…
Aug 8, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -17,3 +17,13 @@ REDIS_URL=redis://redis:6379/0
API_TOKEN=change-me
JWT_SECRET=change-me
JWT_ALGORITHM=HS256

# Canonical writer remains OFF by default. Enable only in a bounded non-live
# environment together with an explicit JSONL receipt path.
APPLAYLIST_CANONICAL_WRITER_ENABLED=0
APPLAYLIST_CANONICAL_WRITER_RECEIPTS_PATH=

# Optional comparison evidence. This remains OFF unless the bounded non-live
# canonical writer profile is enabled and both values below are explicit.
APPLAYLIST_CANONICAL_COMPARISON_ENABLED=0
APPLAYLIST_CANONICAL_COMPARISON_RECEIPTS_PATH=
13 changes: 13 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
## Summary
-

## Verification
-

## Notes
-

## Bundle Context
- Bundle:
- Base branch:
- Related issue:
24 changes: 24 additions & 0 deletions .github/workflows/pr-guard.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
name: PR Guard

on:
pull_request:
types: [opened, edited, synchronize]

jobs:
validate-pr:
runs-on: ubuntu-latest

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Validate branch name
run: |
bash scripts/check_branch_name.sh "${{ github.head_ref }}"

- name: Validate PR structure
run: |
PR_TITLE="${{ github.event.pull_request.title }}"
PR_BODY="${{ github.event.pull_request.body }}"
export PR_TITLE PR_BODY
bash scripts/check_pr_standard.sh
109 changes: 109 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -36,3 +36,112 @@ exports/
# Frontend
frontend/node_modules/
frontend/dist/

# STOP DUPLICATES + ICLOUD
*.icloud
* 2.*
* 3.*
* 4.*

# macOS / iCloud junk
*.icloud
* 2.*
* 3.*
* 4.*

# macOS / iCloud garbage
*.icloud
.DS_Store

# runtime
data/cache/
data/config/path_profiles.json

# backups
.backup_*

# --- VOODOO CLEAN RULES ---
*.icloud
.DS_Store
*.log
*.tmp
*.bak
__pycache__/
*.pyc
.backup_*
data/cache/
data/tmp/
node_modules/
.env
# --- APPLAYLIST HARDENING ---
*.icloud
.DS_Store
*.log
*.tmp
*.bak
*.swp
*.swo
__pycache__/
*.pyc
.pytest_cache/
.ruff_cache/
.mypy_cache/
.backup_*/
data/tmp/
.env
.env.*

api/main.py.bak.*

api/main.py.bak.*

api/main.py.bak.*

api/main.py.bak.*

api/main.py.bak.*

api/main.py.bak.*

api/main.py.bak.*

api/main.py.bak.*

api/main.py.bak.*

# --- VOODOO LOCAL / RUNTIME / SENSITIVE ---
.env
.env.*
!.env.example

.venv/
venv/
ENV/

__pycache__/
*.py[cod]
.pytest_cache/
.mypy_cache/
.ruff_cache/
.coverage
htmlcov/

.DS_Store
__MACOSX/

*.db
*.sqlite
*.sqlite3

*.egg-info/
dist/
build/

.local_backups/
artifacts/
exports/
logs/
tmp/

# --- APPLAYLIST ICLOUD DUPLICATE GUARD ---
* 2.py
1 change: 1 addition & 0 deletions .python-version
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
3.11
88 changes: 88 additions & 0 deletions ARCHITECTURE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
---
id: FOUNDATION-ARCHITECTURE
title: APPLAYLIST Architecture
status: ACCEPTED
owner: APPLAYLIST Engineering
created: 2026-07-30
updated: 2026-07-30
supersedes:
- docs/architecture/APPLAYLIST_PHASE1_ARCHITECTURE.md
related:
- PRODUCT.md
- STATUS.md
- docs/architecture/APPLAYLIST_PROVIDER_ANALYSIS_ROLLOUT.md
- docs/architecture/APPLAYLIST_RHYTHMIC_STRUCTURE_EVIDENCE_V1.md
---

# APPLAYLIST Architecture

## Source-of-truth rule

For current behavior, use this order:

1. current repository content,
2. Git state,
3. executed local verification,
4. runtime configuration/evidence,
5. CI evidence,
6. architecture and operations documentation,
7. README statements.

Historical bundle documents are evidence of their work block, not automatic authority for the
current runtime.

## Current component boundaries

```text
API
-> application services
-> domain/core logic
-> repositories / SQLite
-> jobs / workers
-> analysis providers
-> composer / transition / explainability
```

Primary directories:

- `api/` — HTTP boundary, routes, middleware and API security;
- `core/` — domain logic, analysis/provider contracts, transition logic and configuration;
- `services/` — application orchestration;
- `data/` — models, repositories and persistence;
- `workers/` — background processing scaffolds;
- `tests/` — regression and contract evidence;
- `docs/` — architecture, operations, governance and work-block evidence;
- `scripts/` — local verification and maintenance tooling.

## Analysis boundary

Heavy audio backends must remain behind explicit provider boundaries and must not become mandatory
API-startup imports.

The current repository still contains analysis-contract drift: `core/analysis/normalize.py`
contains a compatibility fallback for richer analysis types that are not defined by the current
`core/analysis/contracts.py`. This is explicit deferred **EPIC-003** debt and is not resolved by
WB001.

## Transition boundary

Transition assessment, recommendation, explanation, and user decision are separate concerns.
Transition Intelligence runtime activation remains off.

WB006C adds source-bound beat-grid shadow evidence and reconciliation only. It does not provide
accepted downbeat, phrase, structure-segment, vocal, bass, or overlap runtime authority.

## Runtime and data safety

- optional-provider failure must not break mandatory startup;
- missing measurements must not be fabricated;
- source identity and provenance must be preserved where a work block requires them;
- local and production configuration must remain separate;
- public API/schema changes require an explicit isolated work block;
- database migrations require backup and rollback evidence.

## Evolution rule

Documentation/governance structure may be improved independently. Runtime module moves,
contract migrations, provider activation, and desktop integration must remain separate,
testable work blocks.
39 changes: 33 additions & 6 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,13 +1,40 @@
.PHONY: dev test lint tree
PYTHON ?= .venv/bin/python
PYTHON_BOOTSTRAP ?= python3.12
BUNDLE_DIR ?= artifacts

dev:
uvicorn api.main:app --reload --host 0.0.0.0 --port 8000
.PHONY: bootstrap doctor lint type test security verify bundle dev tree

test:
pytest -q
bootstrap:
./scripts/bootstrap_local.sh "$(PYTHON_BOOTSTRAP)" ".venv"

doctor:
APPLAYLIST_PYTHON="$(PYTHON)" ./scripts/doctor.sh

lint:
ruff check .
APPLAYLIST_PYTHON="$(PYTHON)" ./scripts/lint_gate.sh

type:
APPLAYLIST_PYTHON="$(PYTHON)" ./scripts/type_gate.sh

test:
PYTHONDONTWRITEBYTECODE=1 "$(PYTHON)" -m pytest -q

security:
APPLAYLIST_PYTHON="$(PYTHON)" ./scripts/security_gate.sh

verify:
$(MAKE) doctor PYTHON="$(PYTHON)"
$(MAKE) lint PYTHON="$(PYTHON)"
$(MAKE) type PYTHON="$(PYTHON)"
$(MAKE) test PYTHON="$(PYTHON)"
$(MAKE) security PYTHON="$(PYTHON)"
APPLAYLIST_PYTHON="$(PYTHON)" ./scripts/restore_smoke.sh

bundle:
./scripts/bundle_local.sh "$(BUNDLE_DIR)"

dev:
"$(PYTHON)" -m uvicorn api.main:app --reload --host 127.0.0.1 --port 8000

tree:
find . -maxdepth 3 -type f | sort
Loading