Repository navigation
Re-validate loops 3 and 4 on preprod; fix the lessons and examples that teach them - #27
Merged
Merged
Conversation
…mples Ran course.credential and project.credential end to end on preprod (2026-09-23, gateway API 2.5.2) with the create step gone, and brought everything that describes them in line with what the chain did. Observed: - Course: assignment_submit creates the commitment directly in SUBMITTED, then ACCEPTED -> CREDENTIAL_CLAIMED. No AWAITING_SUBMISSION on this path. - Project: project_join creates it in COMMITTED, then ACCEPTED -> REWARDED. - project_join locks ~2.3 ADA, not ~14.5. tasks_manage deposit_value is paid from the manager's wallet into the treasury, not drawn from it. - Enrollment 2.64 ADA, assess 0.27, course claim -1.65, project claim +5.64 on a 5 ADA reward with the 1 ADA minimum commission. tx-loops.yaml: loops 3 and 4 validated with measured fees, statuses and tx hashes; loop 2's deposit_value note corrected; narration rewritten as current state. cost-registry.json: participant costs and loop totals. status-enums.md: observed happy paths noted. Both example scripts were broken against CLI 1.1.1 and the live API (alias lookup, tx sign/submit/status fields, course_id discovery, create-module flag, missing approve/PENDING_TX and assignment import, project_create treasury_deposit, project show). Rewritten and each run end to end on preprod. Lessons 500.4, 500.5, 600.1, 600.3, 600.4, 700.2 and skills cost-estimator, course-ops, project-ops, explore-api follow. project-ops also had wrong bodies for add-funds, managers and blacklist. 700.3 no longer tells the reader "don't tell the user" in a way an agent could take as an instruction. Closes #14. Closes #16.
…rod run - Examples: set-submit-header takes key and value as separate arguments. - 700.2: teacher assess ~0.27, student net ~0.99, tasks_manage ~0.32 plus the reward paid into the treasury; rubric recomputed and the open treasury_fund question noted. - cost-estimator, project-ops: tasks_manage pays the reward into the treasury. - cost-registry: assignments-assess note matches the observed no-refund delta. - 600.4: the treasury is funded in its own transaction.
workshop-maybe
force-pushed
the
fix/revalidate-credential-loops
branch
from
September 24, 2026 10:28
11b99ac to
bc7560d
Compare
workshop-maybe
changed the base branch from
fix/preprod-fee-schedule
to
main
September 24, 2026 10:28
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stacked on #25 (base branch
fix/preprod-fee-schedule). Retarget tomainonce #25 merges.Ran
course.credential(loop 3) andproject.credential(loop 4) end to end on preprod on 2026-09-23 against gateway API 2.5.2, then brought every surface that describes them in line with what the chain did.What the run showed
assignment_submitcreates it directly inSUBMITTED→ACCEPTED→CREDENTIAL_CLAIMED. NoAWAITING_SUBMISSIONon this path.project_joincreates it inCOMMITTED→ACCEPTED→REWARDED.project_joinlocks ~2.3 ADA, not ~14.5.tasks_managedeposit_valuetreasury_fundings), not drawn from the treasury.Every figure in
tx-loops.yamlandcost-registry.jsonnow carries the tx it was read from.Examples were broken — now rewritten and run
Against CLI 1.1.1 and the live API, both scripts failed before their second transaction: alias lookup (
user mehas no top-levelalias),tx signoutput (signed_tx, nottx_hex),tx status(state, notstatus— the poll loop could never seeupdated),course list[-1]discovery,create-modulepositional course id, missing approve →PENDING_TX→ assignment import,project_createtreasury_deposit(not in the schema), andproject show(doesn't exist).Both rewritten and run end to end on preprod: course script 6/6 txs (claim
790b262305d8c1e43824f29c9e5444ddd2879199d6aaee8a7240502f481450be), project script 6/6 (claim515d2bbb0f4563d7889eebca53271242ca162bee1d2900a18ab22c2d9622b3d0).project-lifecycle.shusestx run, becauseproject_joinneedstask_hashin its registration metadata andtx registercan't send metadata. Both take an optionalSUBMIT_URL, and both prerequisite blocks now spell out that the submit URL must be the full/tx/submitroute.Also fixed along the way
project-ops: add-funds, managers and blacklist bodies didn't match the schema;project list-tasksisn't a command.create-moduletakes--course-id; its positional argument is an outline path. Fixed in 500.3, 500.5, 700.4,course-ops.assignment-updaterecords its measured lower bound (0.274 ADA when evidence doesn't grow).Not verified — flagged, not guessed
treasury_fundstill needed for task rewards whentasks_managepays itsdeposit_valuefrom the manager's wallet? The run did both, so this PR documents what happened and leaves loop 2's "REQUIRED" note alone.status-enums.md(REFUSED→SUBMITTED).status-enums.md(derived from the API's healer) listsPENDING_TX_COMMIT → AWAITING_SUBMISSION; the observed path skips that. Noted there rather than rewriting the source-derived table.Merge notes
examples/course-lifecycle.shwill conflict with Sync public API contract to a51ec140 (prereq_slt_hashes → prereq_credential_hashes) #23's one-line field rename — keep this PR's version (it already usesprereq_credential_hashes).Closes #14. Closes #16.