program-state-management
Skill53 starsChanged 55 days agoApache-2.0View on GitHub
Maintain the Layer 2 program state for a drug discovery program.
We split this skill into the rules it gives an agent
27 rules. About 0 are common, 6 are distinctive, and 21 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈6
Distinctive · estimate
This author's own choices. Worth a look.
21
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 22
Update after every specialist finding that affects a compound series.
- Distinctive: line 78
When an agent appends a new decision entry, it must also append a corresponding row to the index table.
- Very specific: line 85
Read the index section (top of decision-log.md) to get an overview.
- Distinctive: line 87
Read only those full entries by searching for their IDs.
- Distinctive: line 103
After every specialist finding: Update active-series.md if the finding affects a series.
- Very specific: line 110
After significant updates to Layer 2 state, update executive/program-summary.md with current program status.
- Very specific: line 116
Read active-series.md — what is the status of each series?
- Very specific: line 117
Read liability-tracker.md — are there unresolved critical liabilities?
- Very specific: line 118
Read open-questions.md — are there blocking uncertainties?
- Very specific: line 119
Read decision-log.md — what was the last significant decision and its context?
- Distinctive: line 125
Before acting on Layer 2 state, the orchestrator verifies:
- Very specific: line 127
Every liability-tracker entry with severity Critical has a non-empty Receiving role(s) and a Status from the allowed set (Open | Under …
- Very specific: line 131
Every open-questions entry with status Open or In progress has a non-empty Impact field.
- Very specific: line 133
Every open-questions entry with a Blocked since field where the current cohort exceeds the blocked cohort by more than 1 has a linked …
- Very specific: line 140
Every decision-log entry has a non-empty Rationale with at least one link to supporting evidence.
- Very specific: line 148
When concept records exist under .oase/control/concepts/, the following additional rules apply:
- Very specific: line 162
Pivot governance: When a concept enters pivoting:
- Very specific: line 182
Every concept in active state has at least one assessment record (when assessment records exist — this check is skipped when no assessment …
- Very specific: line 185
Every concept record passes schema validation (validate_concept).
- Very specific: line 237
Evidence/execution mutual constraint: Every assessment with execution_outcome != "completed" must have evidence_status == "not_assessed".
- Very specific: line 243
Decision supporting-assessment references: Every decision's supporting_assessments entries reference assessment records (AR-NNN) that …
- Very specific: line 249
Human-approval enforcement (critical finding): Every decision with action == "terminate" where the affected concept's termination_authority …
- Distinctive: line 258
If the integrity check finds a violation here, it flags it as a
- Very specific: line 263
Assessment coverage: Every concept in active state has at least one assessment record referencing it.
- Very specific: line 275
When pre-mortem review artifacts exist under findings/reviews/*-premortem.md, the integrity check additionally verifies:
- Very specific: line 279
Unresolved objections tracked: Every substantive (non-speculative) failure hypothesis from a pre-mortem that has no resolution (accepted, …
- Very specific: line 287
Resolution encoding in decision records: Every objection resolution recorded in a pre-mortem's resolutions section should have a …
≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Program State Management
How the orchestrator maintains Layer 2 program state — the living decision surface for the drug discovery program.
Layer 2 Documents
The orchestrator maintains four living documents in program-state/:
active-series.md
Tracks all compound series under active optimization. For each series:
- Status: Current stage, DMTA round, active/deprioritized/terminated
- Current best compound: ID, key metrics (potency, selectivity, metabolic stability)
- Key liabilities: With links to supporting findings
- SAR summary: Emerging structure-activity relationships
- Decision pending: What will trigger the next Go/No-Go decision
Update after every specialist finding that affects a compound series.
liability-tracker.md
Cross-disciplinary risk register. Each entry includes:
- Liability: What the risk is
- Source: Link to originating specialist finding
- Affected series: Which compound series are impacted
- Severity: Critical (blocks progression) / Monitor (track across rounds) / Informational
- Receiving role(s): Which specialist should investigate or mitigate
- Status: Open / Under investigation / Mitigated / Accepted / Program-terminating
- Resolution: How it was addressed (with link to resolution finding)
Specialists append new liabilities via the T-shaped handoff protocol (see artifact-conventions). The orchestrator triages severity and dispatches investigation.
decision-log.md
Chronological record of every non-trivial program decision. Each full entry starts with a level-3 heading that carries its sequential ID and a one-line summary matching the Summary column in the decision index:
### DEC-004: Selected PFI-653 as lead series
- **Date and context**: What information was available
- **Decision**: What was decided
- **Rationale**: Why — with links to supporting evidence
- **Alternatives considered**: What was rejected and why
- **Outcome**: Updated after the decision's consequences are observedIDs are assigned sequentially (DEC-001, DEC-002, …). The heading
makes each entry searchable by ID, enabling the context-efficient
loading pattern described below.
This is the audit trail. Every stage gate Go/No-Go, every series prioritization change, every significant re-routing is logged here.
Decision index
decision-log.md grows monotonically and becomes the largest single
artifact by mid-program. To avoid re-reading the full file after
context compaction, the log carries a mandatory index section at
its top, before the first full entry.
The index is a Markdown table with three columns — ID, Date, and Summary (one line) — one row per full decision entry below:
## Decision Index
| ID | Date | Summary |
|---|---|---|
| DEC-001 | 2026-07-15 | Selected PFI-653 as lead series |
| DEC-002 | 2026-07-16 | Deprioritized aminopyridine series (hERG liability) |
| DEC-003 | 2026-07-17 | Approved Stage 2 gate for VNN1 program |When an agent appends a new decision entry, it must also append a corresponding row to the index table. One action, two writes — the index row and the full entry are always added together.
Context-efficient loading. An agent resuming after context compaction follows this pattern instead of reading the entire file:
- Read the index section (top of
decision-log.md) to get an overview. - Identify which decisions are relevant to the current task.
- Read only those full entries by searching for their IDs.
This replaces "read the entire file" with "read the index, then selectively load."
open-questions.md
Scientific uncertainties that affect program direction:
- Question: The specific uncertainty
- Impact: What decisions it blocks or influences
- Assigned to: Which specialist is investigating (or "unassigned")
- Status: Open / In progress / Resolved
- Blocked since: Cohort when this question was first blocked on an external dependency (tooling, data access, etc.), e.g. "Cohort 2". Omit when the question is actively being investigated or unblocked.
- Resolution: Answer and supporting evidence (when resolved)
Update Cadence
- After every specialist finding: Update active-series.md if the finding affects a series. Triage any new liability-tracker entries. Log significant decisions.
- After DMTA rounds (Stage 3): Full batch review of all Layer 2 documents. Spot emergent cross-series patterns. Update SAR summaries holistically.
- At stage gates: Freeze Layer 2 state as input to gate evaluation. Document the gate decision in decision-log.md.
- Index maintenance: Maintaining the decision-log index is part of every decision-log update, not a separate step. When you append a decision entry, you append its index row in the same edit pass.
Continuous Executive Summary
After significant updates to Layer 2 state, update executive/program-summary.md with current program status. This keeps the Layer 4 executive view continuously fresh rather than only updated on demand.
Reasoning Against State
The orchestrator's routing decisions are made by reading Layer 2 documents, not by recalling prior conversations. When deciding what to do next:
- Read
active-series.md— what is the status of each series? - Read
liability-tracker.md— are there unresolved critical liabilities? - Read
open-questions.md— are there blocking uncertainties? - Read
decision-log.md— what was the last significant decision and its context?
This artifact-first reasoning ensures the orchestrator can be restarted without losing program continuity.
Pre-routing integrity check
Before acting on Layer 2 state, the orchestrator verifies:
- Every liability-tracker entry with severity
Criticalhas a non-emptyReceiving role(s)and aStatusfrom the allowed set (Open | Under investigation | Mitigated | Accepted | Program-terminating). - Every open-questions entry with status
OpenorIn progresshas a non-emptyImpactfield. - Every open-questions entry with a
Blocked sincefield where the current cohort exceeds the blocked cohort by more than 1 has a linkeddecision-logentry recording escalation, workaround dispatch, or explicit risk acceptance. An entry blocked for >1 cohort without such evidence is BLOCKED — the one-cohort deadline requires the entry to be escalated, worked around, or accepted as a risk before routing proceeds. - Every decision-log entry has a non-empty
Rationalewith at least one link to supporting evidence. - The decision-log index row count equals the count of full decision entries. A mismatch is BLOCKED — either an entry was added without its index row, or vice versa.
Concept lifecycle rules
When concept records exist under .oase/control/concepts/, the
following additional rules apply:
Concept state machine. Concept state transitions follow the
transition table in core/concepts.py (CONCEPT_TRANSITIONS).
Use validate_transition("concept", current, target) from
statemachine.py to enforce legal transitions. Terminal states
(terminated, withdrawn) have no outgoing transitions.
Charter-linkage gate. A concept cannot transition from draft
to active without a non-empty charter_ref field. This enforces
the lead template's rule that a charter must exist before work is
routed.
Pivot governance. When a concept enters pivoting:
- The previous revision is preserved (revisions are immutable).
- A new revision is created with the changed key fields.
pivotingcan only go toactive(pivot completed, charter revised) orterminated.- The decision log entry for the pivot must reference both the old and new concept revisions.
Revision triggers. A material change to any key field (see
concepts.KEY_FIELDS) requires a new revision. Non-key fields
(notes, work_order_refs, decision_log_refs, etc.) can be
updated in place without a revision bump.
Biomarker assumptions. Each biomarker entry must have a valid
category (patient_selection, target_engagement, response,
companion_diagnostic). When status is unknown or
not_applicable, a rationale must be provided explaining the gap.
Concept integrity checks. The pre-routing integrity check additionally verifies:
- Every concept in
activestate has at least one assessment record (when assessment records exist — this check is skipped when no assessment infrastructure has been adopted). - Every concept record passes schema validation
(
validate_concept). - Concept state is a legal value from
CONCEPT_STATES.
Coverage, not just findings. The check states what it examined: "Checked N liability entries, M open questions, K decision records across four documents." A program with zero critical liabilities passes the field rules vacuously — the coverage line makes that visible rather than silent. A document that cannot be read (missing or unparseable) is BLOCKED, not clean: absence of a file and absence of defects must not produce the same outcome.
Monotonicity. Layer 2 entries are append-only in practice
(liabilities are resolved by status change, not deletion; decisions
are never unmade), so the counts should never fall between two
routings. The coverage line is written into decision-log.md after
each routing — the same chronological, append-only document it
already lives beside — so the previous counts are an artifact that
survives a restart, not a memory that dies with one. A count that
drops is BLOCKED until explained, with two named outcomes:
- Parse regression — the file did not shrink; the reader failed to recognise an entry. Fix the parse, not the document.
- Recorded consolidation — duplicate liabilities were merged or a
mis-filed entry was moved between documents. The block clears only
when the merged entries are logged by name in
decision-log.md— without the names, this branch is an escape hatch that launders any drop, including a parse regression.
Repair authority. A missing field and a wrong field are not the same repair, and not all fields belong to the reader:
- Reader-decidable (the reader may supply these):
Receiving role(s),Severity,Status. These are triage decisions that belong to whoever owns routing. - Author-owned (flag back to the author; the entry does not route
until they return):
Impact,Rationale,Source,Resolution. These record the author's reasoning. A reader who supplies them is inventing the author's reasoning while theSourcelink still points at the specialist — improving the appearance of provenance without improving the evidence.
These fields are required, not advisory: an entry missing its severity or receiving role cannot be triaged, and an entry that cannot be triaged sits in the decision surface without being acted on.
Assessment and decision record integrity checks
The pre-routing integrity check is extended to cover structured
assessment and decision records (.oase/control/assessments/,
.oase/control/decisions/):
- Evidence/execution mutual constraint. Every assessment with
execution_outcome != "completed"must haveevidence_status == "not_assessed". Any other combination is a schema violation — a tool crash recorded as "insufficient evidence" conflates two distinct failure modes. - Decision supporting-assessment references. Every decision's
supporting_assessmentsentries reference assessment records (AR-NNN) that actually exist in.oase/control/assessments/. A dangling reference is a warning — the decision's evidence chain is broken. Human-approval enforcement (critical finding). Every decision with
action == "terminate"where the affected concept'stermination_authority == "human"must have a non-nullhuman_approvalfield. This condition is primarily enforced at write time by the decision-record validator (which raisesRefusal, exit 9). The integrity check is a supplementary defense that catches records that entered through direct file manipulation, data migration, or bugs in the write validator.If the integrity check finds a violation here, it flags it as a critical finding, not just a warning. A terminate decision that bypassed the write-time validator represents a control failure — the record should not exist in its current state.
- Assessment coverage. Every concept in
activestate has at least one assessment record referencing it. A concept with no assessments is not necessarily wrong (it may be newly created), but it is reported for visibility.
Coverage reporting. The check states what it examined: "Checked N assessment records, M decision records." A program with no assessment or decision records passes vacuously — the coverage line makes that visible.
Pre-mortem dissent preservation checks
When pre-mortem review artifacts exist under
findings/reviews/*-premortem.md, the integrity check additionally
verifies:
- Unresolved objections tracked. Every substantive (non-speculative)
failure hypothesis from a pre-mortem that has no resolution (accepted,
rebutted, accepted_risk, or unresolved-with-owner) must have a
corresponding entry in
liability-tracker.md. An unresolved objection that exists in a pre-mortem but not in the liability tracker is a BLOCKED finding — it represents dissent that has been silently dropped. - Resolution encoding in decision records. Every objection
resolution recorded in a pre-mortem's resolutions section should have
a corresponding
objection_resolution:condition string in the associated decision record'sconditionsfield. A mismatch is a warning — the pre-mortem and decision record are out of sync. - Speculative hypotheses excluded from gating. Failure hypotheses
with no
discriminating_checkmust not appear in any gate-blocking list or critical-severity liability entry. A speculative hypothesis recorded as a critical liability is a warning — it inflates the severity of an untestable concern. - Causal-language guard. Failure hypotheses and liability entries that upgrade correlational/descriptor-level signals to causal claims are flagged as warnings. Known patterns: "establishes hERG inhibition" from expression data alone, "establishes zero permeability" from descriptor-based prediction alone. This check is pattern-based and non-exhaustive — it catches known problematic phrasings but does not replace scientific judgment.
Coverage reporting. Extends the existing coverage line: "Checked N pre-mortem reviews, M unresolved objections, K liability-tracker cross-references."
Other versions1 project uses a version of this.
Word for word · 0
None found.
Edited · 1
- terravic/pde-agent-plugin★ 097% same
Wrote their own version · 0
None found.
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository82 other files it gives its agents.
- applications/open-agentic-science-engine/templates/admet-dmpk-scientist/agents.mdAGENTS.md
- applications/open-agentic-science-engine/templates/bootstrapper/agents.mdAGENTS.md
- applications/open-agentic-science-engine/templates/computational-biologist/agents.mdAGENTS.md
- applications/open-agentic-science-engine/templates/computational-chemist/agents.mdAGENTS.md
- applications/open-agentic-science-engine/templates/experimental-biologist/agents.mdAGENTS.md
- applications/open-agentic-science-engine/templates/finding-validator/agents.mdAGENTS.md
- applications/open-agentic-science-engine/templates/head-of-discovery/agents.mdAGENTS.md
- applications/open-agentic-science-engine/templates/hypex-evolution/agents.mdAGENTS.md
- applications/open-agentic-science-engine/templates/hypex-generation/agents.mdAGENTS.md
- applications/open-agentic-science-engine/templates/hypex-meta-review/agents.mdAGENTS.md
- applications/open-agentic-science-engine/templates/hypex-proximity/agents.mdAGENTS.md
- applications/open-agentic-science-engine/templates/hypex-reflection/agents.mdAGENTS.md
- applications/open-agentic-science-engine/templates/hypex-supervisor/agents.mdAGENTS.md
- applications/open-agentic-science-engine/templates/hypex-tournament/agents.mdAGENTS.md
- applications/open-agentic-science-engine/templates/medicinal-chemist/agents.mdAGENTS.md
- applications/open-agentic-science-engine/templates/preclinical-toxicologist/agents.mdAGENTS.md
- applications/open-agentic-science-engine/templates/project-curator/agents.mdAGENTS.md
- applications/open-agentic-science-engine/templates/regulatory-scientist/agents.mdAGENTS.md
- applications/open-agentic-science-engine/templates/research-operations-controller/agents.mdAGENTS.md
- applications/open-agentic-science-engine/templates/science-program-lead/agents.mdAGENTS.md
- applications/open-agentic-science-engine/templates/scientific-reviewer/agents.mdAGENTS.md
- applications/open-agentic-science-engine/templates/structural-biologist/agents.mdAGENTS.md
- cost-estimationSkill
- database-queriesSkill
- job-managementSkill
- job-submissionSkill
- results-analysisSkill
- storage-managementSkill
- visualizationSkill
- admet-property-predictionSkill
- artifact-conventionsSkill
- binding-mode-analysisSkill
- bioactivity-landscapeSkill
- brain-atlasSkill
- citation-resolutionSkill
- citation-verificationSkill
- competitive-differentiationSkill
- compound-identity-resolutionSkill
- compound-property-profileSkill
- debate-protocolSkill
- disease-transcriptomicsSkill
- elo-tournamentSkill
- evolution-operatorsSkill
- hypex-tool-setupSkill
- hypothesis-entrySkill
- hypothesis-run-corpusSkill
- hypothesis-schemaSkill
- in-vivo-pk-analysisSkill
- literature-searchSkill
- manufacturing-feasibilitySkill
- meta-review-protocolSkill
- model-organism-phenotypeSkill
- pocket-druggabilitySkill
- preclinical-safety-assessmentSkill
- protein-structure-confidenceSkill
- proximity-protocolSkill
- regulatory-variant-effectSkill
- review-rubricSkill
- run-protocolSkill
- safety-screenSkill
- The first 60 shown.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

