You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Restore one truthful, deterministic adoption ledger for the adopted Course Management Platform before any future CMP source synchronization. The ledger must describe the exact reviewed target tree and its intentional target-owned overlays, while keeping the current CMP pin unchanged. A no-op sync against that pin must be an accepted, repeatable proof rather than a blocked or silently regenerated report.
This is a source/adoption-evidence repair. It does not adopt the current CMP main, copy its campaign changes, or authorize any runtime, provider, migration, or deployment behavior.
Evidence boundary
Website authority for this audit: origin/mainface8e4808d65afbf0374d1ced7a88079950d663, tree c8496fb2a37529eb7c63e1eeb9e35e29a2aadada.
The active shared current-main-derived worktree is redesign-iterationsff30774e9cde310a24abf61229c22cbd5a811186, tree 62e1656881aa7f9de8ab703c14f5a29049c2097d. Its three additional local design edits are identified below; they must not be silently promoted to website main by this issue.
Website source pin remains CMP 98a235283904b4ef9ad29e196298540756cf1bcc (source-pin.json SHA-256 71145a6b28ed0ea89e984b9c6bda5151549d3597d37c75d4c6b369ef4fbaf1b3). The copied-files ledger SHA-256 is 31a0ef0439b68477b905d9d084bfe9c0998dd8a7168ee3c99bc98d72542ea6e2; the integration-patched-files ledger SHA-256 is db285bab70aef0035235b68e17e63be55e4c133cfe514e0bd9026e2b76ac6c95.
CMP main was independently audited at 6d3cc0e0e0b9a1d28be1a8d53209555269e1d3fe, tree 45f1f8e2548b25e3ef89d44b2370efbb647ff088, parent e49c575ce3f567cc14a8f66a89d3ccaca3bfe2f4. This issue does not move the website pin to it.
The current sync dry-run fails closed on the first stale overlay row (accounts/templates/accounts/login.html); it must not be made green by ignoring the ledger or by running --apply.
Exact 15-row mismatch inventory
The current-main-derived audit compared each target overlay byte/size with the recorded integration-patched-files.tsv row. The observed set is exactly these 15 rows. Thirteen rows are already divergent on the authoritative face8e4 tree; the three rows marked redesign-only exist only in the unmerged local ff30774 worktree. The engineer must freeze the final accepted target identity before editing any ledger and preserve that distinction.
Freeze one exact website base/tree accepted by the orchestrator; do not infer that the local redesign worktree is main.
Reconcile only the listed adoption/overlay rows, with a row-level reason and source/target ownership for each.
Keep the CMP source pin at 98a235283904b4ef9ad29e196298540756cf1bcc and preserve the existing #145 mapping, deletion, migration, and overlay guards.
Refresh only the necessary versioned adoption evidence and the deterministic report/manifest values required by the chosen target identity.
Record the exact final target commit/tree, source pin, copied-files digest, patched-files digest, row inventory, and no-op report digest in the engineer/tester handoffs.
Explicit non-goals
No source-pin update to CMP 6d3cc0e or any other moving ref.
No sync_course_platform.py --apply, source copy, migration rewrite/squash, runtime behavior, template behavior, API/Studio change, Datamailer/Relay operation, provider/network call, protected-data access, CI rerun, commit, push, merge, or deployment in this issue.
Do not absorb the three unmerged redesign-only rows into origin/main or overwrite user work.
PM records and freezes one exact target commit/tree; the 15-row inventory is reclassified against that identity, with every row accounted for exactly once and no local-only edit silently promoted.
The adoption manifests record the actual target-owned overlay bytes for every intentional row, retain the pinned CMP source bytes/provenance, and contain no unreviewed path, duplicate, omission, or migration replacement.
uv run --frozen python scripts/verify_course_platform_adoption.py passes against a clean checkout at CMP 98a235283904b4ef9ad29e196298540756cf1bcc.
A fresh no-op uv run --frozen python scripts/sync_course_platform.py --source-ref 98a235283904b4ef9ad29e196298540756cf1bcc --source-checkout <clean-checkout> --report <redacted-report> --dry-run returns status=no_change, records the exact pinned/requested SHA, and reports zero changed, copy, conflict, and fatal paths without mutating tracked files.
make migrations-check, adoption-focused tests, format/lint/type checks, and the verification plan selected for the changed evidence pass; the report classifies every component exactly once and documents screenshots as not applicable only if the graph proves no render inputs changed.
Independent tester recomputes the plan from the frozen target identity, verifies the manifest/no-op report and every acceptance criterion, and posts a tester-final report before PM acceptance.
PM posts ACCEPT only after the independent tester pass; the eventual focused commit uses Refs #297 and the orchestrator performs the normal local no-ff merge/push lifecycle.
Browser/test scenarios
This is non-rendering evidence work, so product screenshots are not applicable when the recomputed plan proves render inputs unchanged. The tester still runs the graph-selected repository-local tier and checks that the no-op sync/verifier cannot alter a rendered route. No provider, external CMP operation, or production browser session is permitted.
Run the no-op sync twice against a clean checkout of the pinned CMP commit; both reports and all tracked target bytes are identical.
Introduce a synthetic stale row, missing row, duplicate, wrong hash/size, source-pin drift, or dirty source checkout in an isolated fixture; the verifier fails closed with a bounded reason and no target mutation.
Confirm the final adopted course and account route manifests remain navigable/read-only under the existing target identity; no campaign or Relay behavior is exercised.
Required lifecycle
The candidate remains uncommitted after engineering. The independent tester must capture exact base/head/tree and report/artifact digests, then PM accepts or returns it. No source sync, deployment, or upstream CMP adoption is implied by a green no-op.
Parent/reference: #145 (closed controlled CMP synchronization)
Consumer/related: #290 (static Datamailer source inventory), #50 (Datamailer retirement and Relay purpose wiring)
Product outcome
Restore one truthful, deterministic adoption ledger for the adopted Course Management Platform before any future CMP source synchronization. The ledger must describe the exact reviewed target tree and its intentional target-owned overlays, while keeping the current CMP pin unchanged. A no-op sync against that pin must be an accepted, repeatable proof rather than a blocked or silently regenerated report.
This is a source/adoption-evidence repair. It does not adopt the current CMP
main, copy its campaign changes, or authorize any runtime, provider, migration, or deployment behavior.Evidence boundary
origin/mainface8e4808d65afbf0374d1ced7a88079950d663, treec8496fb2a37529eb7c63e1eeb9e35e29a2aadada.redesign-iterationsff30774e9cde310a24abf61229c22cbd5a811186, tree62e1656881aa7f9de8ab703c14f5a29049c2097d. Its three additional local design edits are identified below; they must not be silently promoted to websitemainby this issue.98a235283904b4ef9ad29e196298540756cf1bcc(source-pin.jsonSHA-25671145a6b28ed0ea89e984b9c6bda5151549d3597d37c75d4c6b369ef4fbaf1b3). The copied-files ledger SHA-256 is31a0ef0439b68477b905d9d084bfe9c0998dd8a7168ee3c99bc98d72542ea6e2; the integration-patched-files ledger SHA-256 isdb285bab70aef0035235b68e17e63be55e4c133cfe514e0bd9026e2b76ac6c95.mainwas independently audited at6d3cc0e0e0b9a1d28be1a8d53209555269e1d3fe, tree45f1f8e2548b25e3ef89d44b2370efbb647ff088, parente49c575ce3f567cc14a8f66a89d3ccaca3bfe2f4. This issue does not move the website pin to it.accounts/templates/accounts/login.html); it must not be made green by ignoring the ledger or by running--apply.Exact 15-row mismatch inventory
The current-main-derived audit compared each target overlay byte/size with the recorded
integration-patched-files.tsvrow. The observed set is exactly these 15 rows. Thirteen rows are already divergent on the authoritativeface8e4tree; the three rows markedredesign-onlyexist only in the unmerged localff30774worktree. The engineer must freeze the final accepted target identity before editing any ledger and preserve that distinction.accounts/templates/accounts/login.html5adbd00244ed6229086681516829697165b1373679a6de95136561e956c81b04531514cb41b8323f743af88201d9ea6b67cbaceb180e2bdce730f9ba9ebe8e07accounts/views/login.py55dfc487be5e9fe00692b1c5b0c081b5d13e577f02b9f9dcce4c6f7ffd162c6223254ef15aefdc971e88379521bebecc932c10ead95080f45b5729ed43a08fbacourses/registration.py4728a96c0106ef54b1644f16766ea8f4a3b4e9a52057a3ea3e3e000d2b00520460cd215bd6aa67e0cb441cf1a98e074c29ebc1779002d3857965e78bfe8c7517courses/templates/courses/course_list.html5d08f07d4ab9064aeb906cb9435f0b287cae248b9f5affda7e9eae82fe126854c406b4ca288a398f45030fb4032acaed43bbc3f46c03953f7b0673970b69dd72courses/templates/courses/dashboard.html86fbb37b894ed50043d1e57dafeea0ea1a0833c100ea1b323faf8ae31e3001222bf2e39f0387bbba530421174a77ab718bd93c188c52e0d600f58b677c4d3f70courses/templates/courses/enrollment.htmld0c11d76e714d789b9aca8921bde550ba7ee3685eb1683090bee17db5d5aa97ba63afcf108030c3e0018ffb8a93b824382c1c365991bebd14944352b03084669courses/templates/courses/leaderboard_score_breakdown.htmlf95e13c740a224cb6d793eb2b97e0ab82bdd2cf1d5f03d33da3ad200f636cb6df1b4101fdd1a37a0bcce462453fd2dad220c63f30aec49416f78f98a0b20cd16courses/templates/courses/register.html11e7b6438e3ad00f3dd236ec77ba318869e6e31b1ea9473f078326b66cdf2d5c53f08c7fcb0885aea4bd1e7495ddc06873b6f45a41d6a962cc13c81bf8d7ddcfcourses/templates/projects/eval.html82b2b541c17aea908d5c329d40de1d3b6be7acb554444f237e18d165cbeb174726c799672e9b6fe9a81b204514cc051c3be2ce1adcb8697a5c12697278f6af96courses/templates/projects/list.html2ce06f1fcdfa4049d18edd2faf092948bb888c8dac8ec40ed99cc51bc6fbcc25de31659cc7b34ffca680e9210d75b6fda3c6eca684fecbd5c4a9a3cfe270b59ccourses/templates/projects/list_all.html77dc3a8c320a57da2e93a3f82bace8d9700ae031a06053621ae569ccde0d5ac2f85cbb0c1afc0ab3c72edd1ecf8406e13d0d15018b5b6dc2054b7a1235222328courses/templates/projects/results.html9335a10a0988b7bd9b21d73439f412aea5afa43ba486d5cd0e8c059bf5b25cc6b1203097d353e61f4c24ac28c94164b1623fd42b83e746308a3ebda2ca575f5bcourses/templates/projects/submissions.htmlae283afbf471711dcec6332464d99b214f45fe97032ac8854682010b9a69dfb902d1cc0d2553efdb64fb1fd737d0ca39500fd7ff6b52ea7e3d28a3ff521d762bcourses/tests/test_dashboard.py563c875b43314b8e6862e7c0f578950e265c91ef014efa52c0135fe8148b91da2785f875ddae8f77172e2deaaf412381bfbdd32d4f7a96e150e96d8737dc6314courses/tests/test_dashboard_integration.py8a1a98a29bc1192cab48a176363f0b3f80e9319d7b3b03271e989362e094d5e54f8c907ecacf175a8fe33a5e06180ebb1930799f41443a0cef014bdff1b1c6a4Scope
main.98a235283904b4ef9ad29e196298540756cf1bccand preserve the existing#145mapping, deletion, migration, and overlay guards.Explicit non-goals
6d3cc0eor any other moving ref.sync_course_platform.py --apply, source copy, migration rewrite/squash, runtime behavior, template behavior, API/Studio change, Datamailer/Relay operation, provider/network call, protected-data access, CI rerun, commit, push, merge, or deployment in this issue.origin/mainor overwrite user work.Dependencies and ownership
face8e4evidence until this reconciliation is complete.Acceptance criteria
uv run --frozen python scripts/verify_course_platform_adoption.pypasses against a clean checkout at CMP98a235283904b4ef9ad29e196298540756cf1bcc.uv run --frozen python scripts/sync_course_platform.py --source-ref 98a235283904b4ef9ad29e196298540756cf1bcc --source-checkout <clean-checkout> --report <redacted-report> --dry-runreturnsstatus=no_change, records the exact pinned/requested SHA, and reports zero changed, copy, conflict, and fatal paths without mutating tracked files.make migrations-check, adoption-focused tests, format/lint/type checks, and the verification plan selected for the changed evidence pass; the report classifies every component exactly once and documents screenshots as not applicable only if the graph proves no render inputs changed.ACCEPTonly after the independent tester pass; the eventual focused commit usesRefs #297and the orchestrator performs the normal local no-ff merge/push lifecycle.Browser/test scenarios
This is non-rendering evidence work, so product screenshots are not applicable when the recomputed plan proves render inputs unchanged. The tester still runs the graph-selected repository-local tier and checks that the no-op sync/verifier cannot alter a rendered route. No provider, external CMP operation, or production browser session is permitted.
Required lifecycle
The candidate remains uncommitted after engineering. The independent tester must capture exact base/head/tree and report/artifact digests, then PM accepts or returns it. No source sync, deployment, or upstream CMP adoption is implied by a green no-op.