Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
69 changes: 68 additions & 1 deletion dag/extdeps/github/pulls.dag
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
module extdeps.github.pulls

import extdeps.github.github { GitHubUser, default_api_base, default_per_page }
import std.types { CommitSha, FilePath, GitRef, NonEmptyStr, Timestamp, HttpMethod, AuthScheme }
import std.types { CommitSha, EpochMs, FilePath, GitRef, NonEmptyStr, Timestamp, HttpMethod, AuthScheme }
import extdeps.github.errors { GitHubErrorShape }
import std.credentials { CredentialSource, EnvVar }
import std.serialization { WireFormat, Text }
Expand Down Expand Up @@ -48,6 +48,73 @@ type PullRequest {
draft: Bool
}

data pull_timing_observation_provenance_note: String = "One-time GitHub REST pull on 2026-08-01 under this module's existing GET-pull authority. Each row is the PullRequest.created_at and PullRequest.merged_at pair returned by github.Pulls.Get, normalized once from the wire Timestamp strings to Unix epoch milliseconds so arithmetic consumers do not pretend Timestamp is subtractable. The source URL remains on every row and fetched_on makes staleness inspectable. PullRequest stays the one wire-response authority; PullTimingObservation is its cited, immutable arithmetic projection, not a second endpoint or response model."

type PullTimingObservation {
pull_number: Int
opened_at: EpochMs
merged_at: EpochMs
source_url: NonEmptyStr
fetched_on: NonEmptyStr
}

fn pull_timing_observation(
pull_number: Int,
opened_at: EpochMs,
merged_at: EpochMs,
source_url: NonEmptyStr,
) -> PullTimingObservation {
PullTimingObservation {
pull_number: pull_number,
opened_at: opened_at,
merged_at: merged_at,
source_url: source_url,
fetched_on: "2026-08-01",
}
}

data gunbc_pr_7393_timing: PullTimingObservation = pull_timing_observation(
pull_number: 7393,
opened_at: 1785284539000,
merged_at: 1785298702000,
source_url: "https://github.com/gunb-ai/gunbc/pull/7393",
)

data gunbc_pr_7405_timing: PullTimingObservation = pull_timing_observation(
pull_number: 7405,
opened_at: 1785294084000,
merged_at: 1785357921000,
source_url: "https://github.com/gunb-ai/gunbc/pull/7405",
)

data gunbc_pr_7429_timing: PullTimingObservation = pull_timing_observation(
pull_number: 7429,
opened_at: 1785356295000,
merged_at: 1785358865000,
source_url: "https://github.com/gunb-ai/gunbc/pull/7429",
)

data gunbc_pr_7431_timing: PullTimingObservation = pull_timing_observation(
pull_number: 7431,
opened_at: 1785358812000,
merged_at: 1785397720000,
source_url: "https://github.com/gunb-ai/gunbc/pull/7431",
)

data gunbc_pr_7441_timing: PullTimingObservation = pull_timing_observation(
pull_number: 7441,
opened_at: 1785362512000,
merged_at: 1785370233000,
source_url: "https://github.com/gunb-ai/gunbc/pull/7441",
)

data gunbc_pr_7542_timing: PullTimingObservation = pull_timing_observation(
pull_number: 7542,
opened_at: 1785552700000,
merged_at: 1785557096000,
source_url: "https://github.com/gunb-ai/gunbc/pull/7542",
)

type IssueComment {
id: Int
html_url: NonEmptyStr
Expand Down
30 changes: 30 additions & 0 deletions dag/extdeps/project_schedule/cpm_pert.dag
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
module extdeps.project_schedule.cpm_pert

import extdeps.external_authority { ExternalAuthority }
import extdeps.uri { Uri, Https }

data extdeps_external_authority_anchor: ExternalAuthority = ExternalAuthority {
uri: Uri {
scheme: Https
locator: "www.gao.gov/products/gao-16-89g"
}
}

data rcpsp_lower_bound_external_authority: ExternalAuthority = ExternalAuthority {
uri: Uri {
scheme: Https
locator: "doi.org/10.1016/S0377-2217(02)00763-4"
}
}

data schedule_method_grounding_note: String = "GAO-16-89G, Schedule Assessment Guide: Best Practices for Project Schedules, is the cited scheduling authority. Best Practice 6 defines the critical path as the longest continuous sequence of activities and the program's earliest completion/minimum duration. Its schedule-risk guidance calls for three-point duration estimates (minimum, most likely, maximum). This module names those two standard method roles only; the roadmap instantiation supplies its own observed distribution and dependency graph."

data resource_capacity_lower_bound_grounding_note: String = "Baptiste and Demassey, On linear lower bounds for the resource constrained project scheduling problem, European Journal of Operational Research 149(2), 2003, DOI 10.1016/S0377-2217(02)00763-4, grounds makespan lower bounds for RCPSP. For one declared renewable slot resource, if each activity continuously occupies one slot for its modeled duration, every feasible schedule is bounded below by ceil(total slot-time / slot capacity). Taking the maximum of that work-volume bound and the precedence critical-path bound remains a lower bound; it is not a resource-leveled schedule."

type CriticalPathMethod {}
type ThreePointEstimateMethod {}
type ResourceCapacityLowerBoundMethod {}

data critical_path_method: CriticalPathMethod = CriticalPathMethod {}
data three_point_estimate_method: ThreePointEstimateMethod = ThreePointEstimateMethod {}
data resource_capacity_lower_bound_method: ResourceCapacityLowerBoundMethod = ResourceCapacityLowerBoundMethod {}
3 changes: 3 additions & 0 deletions dag/gunbc/publication_grant.dag
Original file line number Diff line number Diff line change
Expand Up @@ -65,12 +65,14 @@ data public_file_publish_grants: List<PublicFilePublishGrant> = [
public_file_publish_grant(path: "dag/extdeps/crm/hubspot_lifecycle.dag"),
public_file_publish_grant(path: "dag/extdeps/crm/salesforce_opportunity.dag"),
public_file_publish_grant(path: "dag/extdeps/git/inspect.dag"),
public_file_publish_grant(path: "dag/extdeps/project_schedule/cpm_pert.dag"),
public_file_publish_grant(path: "dag/extdeps/github/workflows.dag"),
public_file_publish_grant(path: "dag/extdeps/vendor/alphabet.dag"),
public_file_publish_grant(path: "dag/extdeps/vendor/hubspot.dag"),
public_file_publish_grant(path: "dag/extdeps/vendor/meta_platforms.dag"),
public_file_publish_grant(path: "dag/extdeps/vendor/salesforce.dag"),
public_file_publish_grant(path: "dag/gunbc/econ/acquisition.dag"),
public_file_publish_grant(path: "dag/gunbc/roadmap_forecast.dag"),
public_file_publish_grant(path: "dag/gunbc/heal_revalidation.dag"),
public_file_publish_grant(path: "dag/gunbc/publication_cutover.dag"),
public_file_publish_grant(path: "dag/gunbc/publication_grant.dag"),
Expand All @@ -79,6 +81,7 @@ data public_file_publish_grants: List<PublicFilePublishGrant> = [
public_file_publish_grant(path: "dag/test/claim/acquisition_mechanism_witness_test.dag"),
public_file_publish_grant(path: "dag/test/claim/advertising_interface_witness_test.dag"),
public_file_publish_grant(path: "dag/test/claim/crm_stage_vocabulary_witness_test.dag"),
public_file_publish_grant(path: "dag/test/claim/roadmap_forecast_witness_test.dag"),
public_file_publish_grant(path: "dag/test/claim/heal_revalidation_integration_witness_test.dag"),
public_file_publish_grant(path: "dag/test/claim/heal_revalidation_witness_test.dag"),
public_file_publish_grant(path: "dag/test/claim/roadmap_presentation_witness_test.dag"),
Expand Down
Loading
Loading