Skip to content

feat(parity): migrate fork manifest to lifecycle schema v2 - #435

Closed
Kyzcreig wants to merge 2 commits into
mainfrom
daedalus/t_12df7dc2-schema-v2
Closed

Kyzcreig wants to merge 2 commits into
mainfrom
daedalus/t_12df7dc2-schema-v2

Conversation

@Kyzcreig

Copy link
Copy Markdown
Collaborator

Worker t_12df7dc2's schema-v2 migration for docs/sync/fork-features.json: per-entry lifecycle classifications + lint contract in scripts/hermes_parity/lint_manifest.py.

Verified fresh: 33/33 parity tests green in an isolated worktree. Landing this FIRST unblocks the absorption-sweep commit (t_d82545b8) stacked on it — the sweep flips entries to absorbed/in-flight based on today's 19-PR upstreaming wave.

Reviewed per the worker-handback gate; kanban cards close on merge.

Classify all existing fork features, retain legacy v1 loading as fork-permanent, and reject invalid lifecycle values or absorbed entries without upstream provenance.\n\nVerified: 33 tests in tests/scripts/test_hermes_parity.py pass; lint-manifest exits 0.
@Kyzcreig

Copy link
Copy Markdown
Collaborator Author

FleetReview

Confidence: 3/5

Findings

  • P1 scripts/hermes_parity/lint_manifest.py:59 — Schema Bypass
  • P1 scripts/hermes_parity/forkdelta.py:54 — Type Erasure
  • P1 scripts/hermes_parity/forkdelta.py:53 — Missing lifecycle fields bypass the documented rollout warning

FleetReview provenance · models: B=gpt-5.6-sol, C=claude-code-opus-4-8, F=gpt-5.6-sol, G=grok-4.5 · cost: $4.48 · duration: 12m 51s · rounds: 1 · files examined: 4

@Kyzcreig

Kyzcreig commented Aug 7, 2026

Copy link
Copy Markdown
Collaborator Author

Closing as superseded — the schema-v2 migration is already on main, landed via the stacked sweep PR #436 (0b7cc2b6c).

Ground-truth verification (2026-08-06):

Manifest structure is identical — fork/main's docs/sync/fork-features.json and this branch's version carry the same key set:
['absorbed_date','feature','lifecycle','paths','tests','upstream_ref','why']

Entry counts: main 12 vs this branch 11, and main has more classified entries (absorbed: 2 vs 1). Main is strictly ahead.

Code half also present on main:

  • scripts/hermes_parity/forkdelta.py:15 — LIFECYCLES = frozenset({"upstream-intended", "fork-permanent", "absorbed"})
  • scripts/hermes_parity/lint_manifest.py:56 — def lint_schema(...)
  • lint_manifest.py:68 — the absorbed feature requires upstream_ref guard
  • tests/scripts/test_hermes_parity.py — 8 lifecycle/lint_schema references

Why it read as DIRTY/CONFLICTING: the branch is 2 commits ahead but 35 behind main. Test-merging onto current fork/main conflicts solely in docs/sync/fork-features.json (6 conflict markers) — this branch would re-apply an old-schema→v2 migration to a file that is already v2 and has since gained entries. Rebasing would mean resolving a migration against its own completed output.

No work is lost: the PR body's stated purpose ("landing this FIRST unblocks the absorption-sweep commit stacked on it") was satisfied when the sweep itself landed and carried the schema with it. Classic stacked-PR closeout — a squash merge of the tip does not auto-close contained siblings.

@Kyzcreig Kyzcreig closed this Aug 7, 2026
auto-merge was automatically disabled August 7, 2026 00:03

Pull request was closed

@Kyzcreig
Kyzcreig deleted the daedalus/t_12df7dc2-schema-v2 branch August 7, 2026 00:03
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.

1 participant