Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
70 changes: 56 additions & 14 deletions config/portfolio-catalog.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -397,10 +397,16 @@ repos:
category: vanity
Phantom Frequencies:
owner: d
purpose: compact authored supernatural-radio game being finished as an Oddworks release
lifecycle_state: active
review_cadence: monthly
operating_path: maintain
tool_provenance: claude-code
criticality: high
review_cadence: weekly
operating_path: finish
Comment on lines +400 to +404

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Add the PhantomFrequencies catalog alias

These new finish-lane fields are only under the Phantom Frequencies catalog key, but catalog matching uses exact path/full-name/repo-name keys plus explicit aliases; the project is referenced elsewhere as PhantomFrequencies (docs/ci-coverage-initiative.md:46, config/notion-project-map.json:149) and no catalog alias is added here. When the checkout or repo name is the no-space spelling, this activation falls through to defaults, so that Oddworks lane will not surface as finish/commercial.

Useful? React with 👍 / 👎.

category: commercial
tool_provenance: codex
maturity_program: finish
target_maturity: operating
notes: Release-candidate branch and playtest packet exist; human cohort, signing, and publication gates remain open. Oddworks reactivated this lane on 2026-07-12.
RedditSentimentAnalyzer:
owner: d
lifecycle_state: active
Expand All @@ -410,10 +416,16 @@ repos:
tool_provenance: claude-code
SignalDecay:
owner: d
purpose: one-room 8-12 minute tactile signal-tuning game for the Oddworks label
lifecycle_state: active
review_cadence: monthly
operating_path: maintain
tool_provenance: claude-code
criticality: high
review_cadence: weekly
operating_path: finish
category: commercial
tool_provenance: codex
maturity_program: finish
target_maturity: operating
notes: Verified one-room packaged candidate exists; naive-player duration, tuning, retention, signing, and publication gates remain open. Oddworks reactivated this lane on 2026-07-12.
desktop_terrarium:
owner: d
lifecycle_state: maintenance
Expand Down Expand Up @@ -632,10 +644,16 @@ repos:
notes: Archived from active operator attention on 2026-06-13. The corrupt local checkout was preserved at /Users/d/Projects/GhostRoutes.corrupt-20260613T124820Z and /Users/d/Projects/GhostRoutes was restored from a fresh origin clone. Keep this repo archived/deferred unless explicitly reactivated.
Liminal:
owner: d
purpose: focused atmospheric iOS experience being finished as an Oddworks release
lifecycle_state: active
criticality: high
review_cadence: weekly
operating_path: maintain
tool_provenance: claude-code
operating_path: finish
category: commercial
tool_provenance: codex
maturity_program: finish
target_maturity: operating
notes: Verified unsigned device Release bundle and external cohort packet exist; physical-device, human-proof, signing, and publication gates remain open. Oddworks reactivated this lane on 2026-07-12.
Nocturne:
owner: d
lifecycle_state: active
Expand Down Expand Up @@ -777,11 +795,16 @@ repos:
confirm purpose/criticality.'
DeepTank:
owner: d
purpose: authored aquatic simulation game being evaluated and finished for the Oddworks label
lifecycle_state: active
criticality: high
review_cadence: weekly
operating_path: maintain
notes: 'Auto-seeded 2026-06-02 from derived signals (path_confidence: medium);
confirm purpose/criticality.'
operating_path: finish
category: commercial
tool_provenance: codex
maturity_program: finish
target_maturity: operating
notes: Active Oddworks lane, but implementation is lease-protected by a dirty worktree with broad src-tauri deletions; preserve it until the existing owner clears or hands off the lease.
DesktopPEt:
owner: d
lifecycle_state: active
Expand Down Expand Up @@ -1075,10 +1098,29 @@ repos:
category: vanity
BattleGrid:
owner: d
purpose: focused tactical grid game being evaluated and finished for the Oddworks label
lifecycle_state: active
review_cadence: monthly
operating_path: maintain
category: fun
criticality: high
review_cadence: weekly
operating_path: finish
category: commercial
tool_provenance: codex
maturity_program: finish
target_maturity: operating
notes: Active Oddworks lane, but implementation is lease-protected by a dirty feature branch that is behind origin; preserve it until the existing owner clears or hands off the lease.
OddworksCabinet:
owner: d
purpose: evidence-first gallery and release surface for small authored Oddworks experiences
lifecycle_state: active
criticality: high
review_cadence: weekly
operating_path: finish
category: commercial
tool_provenance: codex
maturity_program: finish
target_maturity: operating
automation_eligible: false
notes: Verified private candidate exists with genuine Liminal and SignalDecay media and explicit candidate status; public deployment remains gated until release approval.
LegalDocsReview:
owner: d
lifecycle_state: active
Expand Down
6 changes: 5 additions & 1 deletion src/portfolio_truth_reconcile.py
Original file line number Diff line number Diff line change
Expand Up @@ -1063,7 +1063,11 @@ def _attention_state_for(
if operating_path == "experiment" or lifecycle_state == "experimental":
return "experiment"
if activity_status == "stale":
return "parked"
# A declared finish path is itself an unresolved operator decision. It can
# remain valid while the default branch is stale (for example, when work is
# on a release branch or waiting at a human/publication gate), so do not
# silently collapse it back into the parked pool.
return "decision-needed" if operating_path == "finish" else "parked"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Bump the attention derivation policy version

This changes the published derivation of derived.attention_state for stale finish repos from parked to decision-needed, but the snapshot DERIVATION_POLICY_VERSION remains portfolio_attention.v2. Because validate_truth_snapshot accepts snapshots by matching that constant, a pre-patch portfolio-truth-latest.json can still pass validation while carrying the old parked counts for stale finish lanes, defeating the contract/freshness gate for this semantic change.

Useful? React with 👍 / 👎.

if (
path_override == "investigate"
or not operating_path
Expand Down
24 changes: 24 additions & 0 deletions tests/test_portfolio_truth.py
Original file line number Diff line number Diff line change
Expand Up @@ -573,6 +573,30 @@ def test_attention_state_classifier_separates_activity_from_operator_attention()
)
== "archived"
)
assert (
_attention_state_for(
activity_status="stale",
archived=False,
lifecycle_state="active",
operating_path="finish",
category="commercial",
path_override="",
risk_entry={"security_risk": False},
)
== "decision-needed"
)
assert (
_attention_state_for(
activity_status="stale",
archived=False,
lifecycle_state="active",
operating_path="maintain",
category="commercial",
path_override="",
risk_entry={"security_risk": False},
)
== "parked"
)


@pytest.mark.parametrize(
Expand Down