Skip to main content

self.improvement/1

One improvement turn on takt: a finding that names a machine-checkable predicate on a scenario or on a repository at a seed is reproduced on the promoted baseline, a candidate fix is delivered and merged under the authority its surface needs, the finding is verified gone on the candidate by another run than the one that delivered it, the scorecard shows no regression against the baseline, and the candidate's binary is promoted. Accepted once promoted; declined when the candidate still reproduces the finding; unreproducible when the baseline never did. Claims about the baseline and about the candidate are about separate artifacts, so a commit to the candidate leaves the baseline's claims standing.

Dependency graph​

Which actions may produce which evidence, which claims that evidence establishes, and which outcomes and obligations rest on those claims. Hover or focus a node to trace what it rests on.

Protocol · revision 1

self.improvement/1

One improvement turn on takt: a finding that names a machine-checkable predicate on a scenario or on a repository at a seed is reproduced on the promoted baseline, a candidate fix is delivered and merged under the authority its surface needs, the finding is verified gone on the candidate by another run than the one that delivered it, the scorecard shows no regression against the baseline, and the candidate's binary is promoted. Accepted once promoted; declined when the candidate still reproduces the finding; unreproducible when the baseline never did. Claims about the baseline and about the candidate are about separate artifacts, so a commit to the candidate leaves the baseline's claims standing.

  • Actions7
  • Evidence kinds5
  • Claims6
  • Outcomes4
  • Obligations3
  • Precondition, traced on hover
  • Needs authority
ACTION · WRITEbinary.promoteACTION · WRITEcandidate.mergeACTION · WRITEcandidate.merge_judge_s…ACTION · WRITEfinding.fileACTION · READscenario.reproduceACTION · READscenario.verifyACTION · READscorecard.compareEVIDENCE KINDfinding_recordEVIDENCE KINDmerge_observationEVIDENCE KINDpromotion_recordEVIDENCE KINDscenario_resultEVIDENCE KINDscorecard_resultCLAIMfinding.citedCLAIMfix.mergedCLAIMpromotedCLAIMscenario.passes_afterCLAIMscenario.reproduced_beforeCLAIMscorecard.no_regressionOUTCOMEabandonedOUTCOMEacceptedOUTCOMEdeclinedOUTCOMEunreproducibleOBLIGATIONregression.requiredOBLIGATIONreproduction.requiredOBLIGATIONverification.required

Hover or focus a node to trace what it rests on and what rests on it. Press Enter to pin it, Escape to clear.

Case inputs

surface
judgenon_judgewhether the candidate's change, base to head, touches a judge surface: every path outside the allow-list held at the baseline revision is one
Protocol as text
Actions
NameDescriptionRuleLeads to
binary.promotebuild the merged candidate, embed its revision, install it for runsall of claim fix.merged claim scorecard.no_regression needs takt.promote effect writeproduces promotion_record
candidate.mergemerge a candidate that touches no judge surface; the planner's grant sufficesall of claim scenario.passes_after input surface in non_judge needs repository.merge effect writeproduces merge_observation
candidate.merge_judge_surfacemerge a candidate that touches a judge surface; the owner holds this capability, or a role the owner delegated it to by a revocable record, and a revoked delegation grants nothing (story:judge-guard enforces it)all of claim scenario.passes_after input surface in judge needs repository.merge.judge_surface effect writeproduces merge_observation
finding.filefile the finding in the planning store with its predicate and its sourceeffect writeproduces finding_record
scenario.reproducerun the finding's predicate on its scenario or repository with a takt built from the baselineclaim finding.cited effect readproduces scenario_result
scenario.verifyrun the finding's predicate on its scenario or repository with a takt built from the candidateclaim scenario.reproduced_before effect readproduces scenario_result
scorecard.comparerun the scenario corpus at the merged candidate and compare it with the baselineclaim fix.merged effect readproduces scorecard_result
Evidence kinds
NameDescriptionRuleLeads to
finding_recordthe finding as filed: it carries an expected_before predicate that parses and a source path that exists; its result is filed or malformed—establishes finding.cited (filed about finding)
merge_observationthe candidate revision merged into the mainline; its result is merged—establishes fix.merged (merged about candidate)
promotion_recordthe installed binary's embedded revision compared with the merged candidate revision; its result is promoted or mismatch—establishes promoted (promoted about promotion)
scenario_resultthe finding's predicate run on its scenario, or on its repository at its seed, with a takt built from a revision; its result is reproduced or not_reproduced, or error when the command ended with a status the predicate names neither as the defect's nor as the healthy one, or with the defect's exit but without its output, which makes no claim true—establishes scenario.passes_after (not_reproduced about candidate, independent on different_agent_run); establishes scenario.reproduced_before (reproduced about baseline)
scorecard_resultevery scenario of the corpus run at the candidate revision and compared with the baseline's record for the same scenario, tokens read from the runs' events only; its result is no_regression or regression—establishes scorecard.no_regression (no_regression about candidate)
Claims
NameDescriptionRuleLeads to
finding.citedthe finding is filed with a predicate that parses and a source that existsevidence = filed: finding_recordgates scenario.reproduce
fix.mergedthe current candidate revision is merged into the mainlineevidence = merged: merge_observationgates binary.promote; gates scorecard.compare
promotedthe installed takt binary was built from the merged candidate revisionevidence = promoted: promotion_recordrequires accepted
scenario.passes_afterthe finding's predicate fails on the current candidate revision, observed by another agent run than the one that delivered the candidateevidence = not_reproduced: scenario_resultrequires accepted; requires verification.required; gates candidate.merge; gates candidate.merge_judge_surface
scenario.reproduced_beforethe finding's predicate holds on the baseline revisionevidence = reproduced: scenario_resultrequires reproduction.required; gates scenario.verify
scorecard.no_regressionno scenario of the corpus is worse at the current candidate revision than at the baselineevidence = no_regression: scorecard_resultrequires accepted; requires regression.required; gates binary.promote
Outcomes
NameDescriptionRuleLeads to
abandonedthe turn closed because it was explicitly abandoned——
acceptedthe turn closed with the finding verified gone, no regression and the candidate promotedall of claim promoted claim scenario.passes_after claim scorecard.no_regression—
declinedthe turn closed because the candidate did not move the finding's predicateevidence = reproduced: scenario_result—
unreproduciblethe turn closed because the finding's predicate does not hold on the baselineevidence = not_reproduced: scenario_result—
Obligations
NameDescriptionRuleLeads to
regression.requiredthe scorecard shows no regression at the candidateclaim scorecard.no_regression—
reproduction.requiredthe finding is reproduced on the baseline before a candidate countsclaim scenario.reproduced_before—
verification.requiredthe finding is verified gone on the candidate by another runclaim scenario.passes_after—

Source: protocols/self-improvement/1.yaml

Actions​

What can be done in a case: what it needs first, which authority it requires, the class of effect it has and the evidence it may produce.

ActionDescriptionPreconditionRequires capabilityEffectMay produce
binary.promotebuild the merged candidate, embed its revision, install it for runsall of (fix.merged is TRUE; scorecard.no_regression is TRUE)takt.promotewritepromotion_record
candidate.mergemerge a candidate that touches no judge surface; the planner's grant sufficesall of (scenario.passes_after is TRUE; input surface is one of non_judge)repository.mergewritemerge_observation
candidate.merge_judge_surfacemerge a candidate that touches a judge surface; the owner holds this capability, or a role the owner delegated it to by a revocable record, and a revoked delegation grants nothing (story:judge-guard enforces it)all of (scenario.passes_after is TRUE; input surface is one of judge)repository.merge.judge_surfacewritemerge_observation
finding.filefile the finding in the planning store with its predicate and its sourcenoneno authoritywritefinding_record
scenario.reproducerun the finding's predicate on its scenario or repository with a takt built from the baselinefinding.cited is TRUEno authorityreadscenario_result
scenario.verifyrun the finding's predicate on its scenario or repository with a takt built from the candidatescenario.reproduced_before is TRUEno authorityreadscenario_result
scorecard.comparerun the scenario corpus at the merged candidate and compare it with the baselinefix.merged is TRUEno authorityreadscorecard_result

Evidence kinds​

The kinds of evidence this protocol admits.

Evidence kindDescriptionProduced byUsed by claims
finding_recordthe finding as filed: it carries an expected_before predicate that parses and a source path that exists; its result is filed or malformedfinding.filefinding.cited
merge_observationthe candidate revision merged into the mainline; its result is mergedcandidate.merge, candidate.merge_judge_surfacefix.merged
promotion_recordthe installed binary's embedded revision compared with the merged candidate revision; its result is promoted or mismatchbinary.promotepromoted
scenario_resultthe finding's predicate run on its scenario, or on its repository at its seed, with a takt built from a revision; its result is reproduced or not_reproduced, or error when the command ended with a status the predicate names neither as the defect's nor as the healthy one, or with the defect's exit but without its output, which makes no claim truescenario.reproduce, scenario.verifyscenario.passes_after, scenario.reproduced_before
scorecard_resultevery scenario of the corpus run at the candidate revision and compared with the baseline's record for the same scenario, tokens read from the runs' events only; its result is no_regression or regressionscorecard.comparescorecard.no_regression

Claims​

Each claim is TRUE, FALSE or UNKNOWN, established from evidence by its predicate. Missing or stale evidence leaves a claim UNKNOWN, never FALSE.

ClaimDescriptionTrue when
finding.citedthe finding is filed with a predicate that parses and a source that existsevidence finding_record with result filed about finding
fix.mergedthe current candidate revision is merged into the mainlineevidence merge_observation with result merged about candidate
promotedthe installed takt binary was built from the merged candidate revisionevidence promotion_record with result promoted about promotion
scenario.passes_afterthe finding's predicate fails on the current candidate revision, observed by another agent run than the one that delivered the candidateevidence scenario_result with result not_reproduced about candidate, from a producer independent on different_agent_run
scenario.reproduced_beforethe finding's predicate holds on the baseline revisionevidence scenario_result with result reproduced about baseline
scorecard.no_regressionno scenario of the corpus is worse at the current candidate revision than at the baselineevidence scorecard_result with result no_regression about candidate

Obligations​

What must be done before a case can be complete, and what discharges it. An obligation stays open until its predicate is TRUE; its predicate being UNKNOWN does not discharge it.

ObligationDescriptionDischarged when
regression.requiredthe scorecard shows no regression at the candidatescorecard.no_regression is TRUE
reproduction.requiredthe finding is reproduced on the baseline before a candidate countsscenario.reproduced_before is TRUE
verification.requiredthe finding is verified gone on the candidate by another runscenario.passes_after is TRUE

Outcomes​

The legitimate terminal interpretations of a case, and what each requires.

OutcomeDescriptionRequires
abandonedthe turn closed because it was explicitly abandoneddecision explicitly_abandoned
acceptedthe turn closed with the finding verified gone, no regression and the candidate promotedall of (promoted is TRUE; scenario.passes_after is TRUE; scorecard.no_regression is TRUE)
declinedthe turn closed because the candidate did not move the finding's predicateevidence scenario_result with result reproduced about candidate
unreproduciblethe turn closed because the finding's predicate does not hold on the baselineevidence scenario_result with result not_reproduced about baseline

Artifacts​

The things whose revisions evidence is bound to.

ArtifactDescription
baselinethe promoted takt revision the finding was observed on
candidatea takt revision that is meant to make the finding's predicate fail
findinga finding filed in the planning store with its expected_before predicate (a command, a named scenario, the expected exit status or output) and the path of the record that produced it
promotionthe takt binary installed for runs, built from a named revision

Case inputs​

What a case fixes when it opens: each input takes one of the values listed, and is never UNKNOWN.

InputDescriptionValues
surfacewhether the candidate's change, base to head, touches a judge surface: every path outside the allow-list held at the baseline revision is onejudge, non_judge

Independence dimensions​

What an evidence match may demand of a record's producer (independent_on). The case lists, for each producer, the dimensions on which it is independent of the case's work; a match that demands a dimension reads only records whose producer the case lists on it. A record that fails the demand neither establishes nor contradicts the match, so a match only such records would decide is UNKNOWN.

DimensionDescription
different_agent_runthe producer is another agent run than the one that delivered the candidate